Name: series-workflow9tpjj Phase: Succeeded StartedAt: 2026-08-20 21:00:06 +0000 UTC FinishedAt: 2026-08-20 22:48:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9tpjj[0] Phase: Succeeded StartedAt: 2026-08-20 21:00:06 +0000 UTC FinishedAt: 2026-08-20 21:05:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9tpjj[0].run-triage Phase: Succeeded StartedAt: 2026-08-20 21:00:06 +0000 UTC FinishedAt: 2026-08-20 21:05:08 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "9f69d05b5a85c417c73fa2d5c7a2d507ac81cf4b", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NFC", "NFC_NCI", "I2C", "NFC_ST_NCI", "NFC_ST_NCI_I2C" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "9f69d05b5a85c417c73fa2d5c7a2d507ac81cf4b", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NFC", "NFC_NCI", "I2C", "NFC_ST_NCI", "NFC_ST_NCI_I2C" ], "series_id": "4170b9c8-1819-4e36-84a7-66096e59b400" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "ndlc_probe", "ndlc_recv", "ndlc_send", "ndlc_close", "st_nci_discover_se" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIwIDIxOjAxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05GQyYjMzQ7LAogICAgJiMzNDtORkNfTkNJJiMzNDssCiAgICAmIzM0O0kyQyYjMzQ7LAogICAgJiMzNDtORkNfU1RfTkNJJiMzNDssCiAgICAmIzM0O05GQ19TVF9OQ0lfSTJDJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bmRsY19wcm9iZSYjMzQ7LAogICAgJiMzNDtuZGxjX3JlY3YmIzM0OywKICAgICYjMzQ7bmRsY19zZW5kJiMzNDssCiAgICAmIzM0O25kbGNfY2xvc2UmIzM0OywKICAgICYjMzQ7c3RfbmNpX2Rpc2NvdmVyX3NlJiMzNDsKICBdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBzdXBwb3J0IGZvciBhIG5ldyBORkMgY2hpcCAoU1QyMU5GQ0QpIHdoaWNoIHVzZXMgcmF3IE5DSSBmcmFtZXMgb3ZlciBJMkMgaW5zdGVhZCBvZiB0aGUgTkRMQyBwcm90b2NvbC4gVGhlIGNoYW5nZXMgcHJpbWFyaWx5IGludm9sdmUgcmVhZGluZyBkYXRhIGZyb20gdGhlIEkyQyBidXMgaW50byBhIGxvY2FsIHN0YWNrIGJ1ZmZlciwgYWxsb2NhdGluZyBhbiBza19idWZmLCBhbmQgY29weWluZyB0aGUgcmVjZWl2ZWQgZGF0YSBpbnRvIGl0LiBUaGUgY29kZSBleHBsaWNpdGx5IGNoZWNrcyB0aGUgcmV0dXJuIHZhbHVlcyBvZiBgaTJjX21hc3Rlcl9yZWN2YCB0byBlbnN1cmUgdGhhdCB0aGUgYnVmZmVyIGlzIGZ1bGx5IGluaXRpYWxpemVkIGJlZm9yZSBhbnkgZGF0YSBpcyByZWFkIGZyb20gaXQgb3IgY29waWVkIHRvIHRoZSBza19idWZmLiBUaGVyZSBhcmUgbm8gY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2l0aCBwYWRkaW5nIGJlaW5nIHNlbnQgdG8gdXNlciBzcGFjZSwgbm9yIGFyZSB0aGVyZSBhbnkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMgdXNlZCBpbiBjb250cm9sIGZsb3cuIEFueSBwb3RlbnRpYWwgbWVtb3J5IGNvcnJ1cHRpb24sIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgaW4gdGhpcyBjb2RlIHdvdWxkIGJlIGVmZmVjdGl2ZWx5IGNhdWdodCBieSBLQVNBTi4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IGp1c3RpZmllZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciB0aGUgU1QyMU5GQ0QgTkZDIGNvbnRyb2xsZXIsIHdoaWNoIHVzZXMgcmF3IE5DSSBvdmVyIEkyQyBpbnN0ZWFkIG9mIHRoZSBORExDIHByb3RvY29sLiBJdCBpbnRyb2R1Y2VzIGEgbmV3IGByYXdfbmNpYCBmbGFnIHRoYXQgbW9kaWZpZXMgdGhlIGJlaGF2aW9yIG9mIHJlYWRpbmcgZnJvbSB0aGUgSTJDIGJ1cywgc2VuZGluZy9yZWNlaXZpbmcgTkNJIGZyYW1lcywgYW5kIGluaXRpYWxpemluZyB0aGUgZGV2aWNlLiBUaGUgSTJDIGRyaXZlciBjYW4gYmUgaW5zdGFudGlhdGVkIGFuZCBmdXp6ZWQgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMCAyMTowMTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDU5ZmIwODI0YmVjNGQxMDI2M2U0ODViNWFjYjc3NTc5NDNiMmIyYmNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEF1ZyAyMCAyMTowMTo1MyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L25mYy9zdCxzdC1uY2kueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbmZjL3N0LHN0LW5jaS55YW1sXG5pbmRleCAxZGNiZGRiYzVhNzRlLi5jODU5Nzk3ZjQyMmJjIDEwMDY0NFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9uZmMvc3Qsc3QtbmNpLnlhbWxcbiYjNDM7JiM0MzsmIzQzOyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbmZjL3N0LHN0LW5jaS55YW1sXG5AQCAtMTUsNiAmIzQzOzE1LDcgQEAgcHJvcGVydGllczpcbiAgICAgICAtIHN0LHN0MjFuZmNiLWkyY1xuICAgICAgIC0gc3Qsc3QyMW5mY2Itc3BpXG4gICAgICAgLSBzdCxzdDIxbmZjYy1pMmNcbiYjNDM7ICAgICAgLSBzdCxzdDIxbmZjZFxuIFxuICAgcmVzZXQtZ3Bpb3M6XG4gICAgIGRlc2NyaXB0aW9uOiBPdXRwdXQgR1BJTyBwaW4gdXNlZCBmb3IgcmVzZXR0aW5nIHRoZSBjb250cm9sbGVyXG5AQCAtMzYsNiAmIzQzOzM3LDE1IEBAIHByb3BlcnRpZXM6XG4gICAgICAgU3BlY2lmaWVzIHRoYXQgdGhlIHVpY2Mgc3dwIHNpZ25hbCBjYW4gYmUgcGh5c2ljYWxseSBjb25uZWN0ZWQgdG8gdGhlXG4gICAgICAgY29udHJvbGxlclxuIFxuJiM0MzsgIGNsb2NrczpcbiYjNDM7ICAgIG1heEl0ZW1zOiAxXG4mIzQzOyAgICBkZXNjcmlwdGlvbjpcbiYjNDM7ICAgICAgRXh0ZXJuYWwgcmVmZXJlbmNlIGNsb2NrIGNvbm5lY3RlZCB0byBTWVNfQ0xLLlxuJiM0MztcbiYjNDM7ICB2ZGQtaW8tc3VwcGx5OlxuJiM0MzsgICAgZGVzY3JpcHRpb246XG4mIzQzOyAgICAgIERpZ2l0YWwgSS9PIHN1cHBseSAoVlBTX0lPKS5cbiYjNDM7XG4gcmVxdWlyZWQ6XG4gICAtIGNvbXBhdGlibGVcbiAgIC0gaW50ZXJydXB0c1xuQEAgLTQ5LDYgJiM0Mzs1OSw3IEBAIGlmOlxuICAgICAgICAgZW51bTpcbiAgICAgICAgICAgLSBzdCxzdDIxbmZjYi1pMmNcbiAgICAgICAgICAgLSBzdCxzdDIxbmZjYy1pMmNcbiYjNDM7ICAgICAgICAgIC0gc3Qsc3QyMW5mY2RcbiB0aGVuOlxuICAgcHJvcGVydGllczpcbiAgICAgc3BpLW1heC1mcmVxdWVuY3k6IGZhbHNlXG5AQCAtODEsNiAmIzQzOzkyLDI2IEBAIGV4YW1wbGVzOlxuICAgICAgICAgfTtcbiAgICAgfTtcbiBcbiYjNDM7ICAtIHxcbiYjNDM7ICAgICNpbmNsdWRlIFx1MDAzY2R0LWJpbmRpbmdzL2dwaW8vZ3Bpby5oXHUwMDNlXG4mIzQzOyAgICAjaW5jbHVkZSBcdTAwM2NkdC1iaW5kaW5ncy9pbnRlcnJ1cHQtY29udHJvbGxlci9pcnEuaFx1MDAzZVxuJiM0MztcbiYjNDM7ICAgIGkyYyB7XG4mIzQzOyAgICAgICAgI2FkZHJlc3MtY2VsbHMgPSBcdTAwM2MxXHUwMDNlO1xuJiM0MzsgICAgICAgICNzaXplLWNlbGxzID0gXHUwMDNjMFx1MDAzZTtcbiYjNDM7XG4mIzQzOyAgICAgICAgbmZjQDgge1xuJiM0MzsgICAgICAgICAgICBjb21wYXRpYmxlID0gXCYjMzQ7c3Qsc3QyMW5mY2RcJiMzNDs7XG4mIzQzOyAgICAgICAgICAgIHJlZyA9IFx1MDAzYzB4MDhcdTAwM2U7XG4mIzQzO1xuJiM0MzsgICAgICAgICAgICBpbnRlcnJ1cHRzLWV4dGVuZGVkID0gXHUwMDNjXHUwMDI2Z3BpbzUgMiBJUlFfVFlQRV9MRVZFTF9ISUdIXHUwMDNlO1xuJiM0MzsgICAgICAgICAgICByZXNldC1ncGlvcyA9IFx1MDAzY1x1MDAyNmdwaW81IDI5IEdQSU9fQUNUSVZFX0hJR0hcdTAwM2U7XG4mIzQzO1xuJiM0MzsgICAgICAgICAgICBjbG9ja3MgPSBcdTAwM2NcdTAwMjZjbGtcdTAwM2U7XG4mIzQzOyAgICAgICAgICAgIHZkZC1pby1zdXBwbHkgPSBcdTAwM2NcdTAwMjZ2ZGRfaW9cdTAwM2U7XG4mIzQzOyAgICAgICAgfTtcbiYjNDM7ICAgIH07XG4mIzQzO1xuICAgLSB8XG4gICAgICNpbmNsdWRlIFx1MDAzY2R0LWJpbmRpbmdzL2dwaW8vZ3Bpby5oXHUwMDNlXG4gICAgICNpbmNsdWRlIFx1MDAzY2R0LWJpbmRpbmdzL2ludGVycnVwdC1jb250cm9sbGVyL2lycS5oXHUwMDNlXG5kaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9ib290L2R0cy9xY29tL3FjbTY0OTAtZmFpcnBob25lLWZwNS5kdHMgYi9hcmNoL2FybTY0L2Jvb3QvZHRzL3Fjb20vcWNtNjQ5MC1mYWlycGhvbmUtZnA1LmR0c1xuaW5kZXggMDRjYjkyMzBkMjlmZC4uZWY2NjA3OWEwMjYzYyAxMDA2NDRcbi0tLSBhL2FyY2gvYXJtNjQvYm9vdC9kdHMvcWNvbS9xY202NDkwLWZhaXJwaG9uZS1mcDUuZHRzXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL2FybTY0L2Jvb3QvZHRzL3Fjb20vcWNtNjQ5MC1mYWlycGhvbmUtZnA1LmR0c1xuQEAgLTkwOCw3ICYjNDM7OTA4LDIzIEBAIHJlZHJpdmVyX3NzX2luOiBlbmRwb2ludCB7XG4gXHUwMDI2aTJjOSB7XG4gXHRzdGF0dXMgPSBcJiMzNDtva2F5XCYjMzQ7O1xuIFxuLVx0LyogU1QyMU5GQyBORkMgQCAyOCAqL1xuJiM0MztcdG5mY0A4IHtcbiYjNDM7XHRcdGNvbXBhdGlibGUgPSBcJiMzNDtzdCxzdDIxbmZjZFwmIzM0OztcbiYjNDM7XHRcdHJlZyA9IFx1MDAzYzB4MDhcdTAwM2U7XG4mIzQzO1xuJiM0MztcdFx0aW50ZXJydXB0cy1leHRlbmRlZCA9IFx1MDAzY1x1MDAyNnRsbW0gNDEgSVJRX1RZUEVfTEVWRUxfSElHSFx1MDAzZTtcbiYjNDM7XHRcdHJlc2V0LWdwaW9zID0gXHUwMDNjXHUwMDI2dGxtbSAzOCBHUElPX0FDVElWRV9ISUdIXHUwMDNlO1xuJiM0MztcbiYjNDM7XHRcdHBpbmN0cmwtMCA9IFx1MDAzY1x1MDAyNm5mY19kZWZhdWx0XHUwMDNlO1xuJiM0MztcdFx0cGluY3RybC1uYW1lcyA9IFwmIzM0O2RlZmF1bHRcJiMzNDs7XG4mIzQzO1xuJiM0MztcdFx0Y2xvY2tzID0gXHUwMDNjXHUwMDI2cnBtaGNjIFJQTUhfTE5fQkJfQ0xLMlx1MDAzZTtcbiYjNDM7XHRcdHZkZC1pby1zdXBwbHkgPSBcdTAwM2NcdTAwMjZ2cmVnX2wxOGJcdTAwM2U7XG4mIzQzO1xuJiM0MztcdFx0ZXNlLXByZXNlbnQ7XG4mIzQzO1x0XHR1aWNjLXByZXNlbnQ7XG4mIzQzO1x0fTtcbiYjNDM7XG4gXHQvKiBWTDUzTDMgVG9GIEAgMjkgKi9cbiB9O1xuIFxuQEAgLTE0MTAsNiAmIzQzOzE0MjYsMjIgQEAgaGFsbF9zZW5zb3JfZGVmYXVsdDogaGFsbC1zZW5zb3ItZGVmYXVsdC1zdGF0ZSB7XG4gXHRcdGRyaXZlLXN0cmVuZ3RoID0gXHUwMDNjMlx1MDAzZTtcbiBcdFx0Ymlhcy1wdWxsLXVwO1xuIFx0fTtcbiYjNDM7XG4mIzQzO1x0bmZjX2RlZmF1bHQ6IG5mYy1kZWZhdWx0LXN0YXRlIHtcbiYjNDM7XHRcdHJlc2V0LXBpbnMge1xuJiM0MztcdFx0XHRwaW5zID0gXCYjMzQ7Z3BpbzM4XCYjMzQ7O1xuJiM0MztcdFx0XHRmdW5jdGlvbiA9IFwmIzM0O2dwaW9cJiMzNDs7XG4mIzQzO1x0XHRcdGRyaXZlLXN0cmVuZ3RoID0gXHUwMDNjMlx1MDAzZTtcbiYjNDM7XHRcdFx0Ymlhcy1kaXNhYmxlO1xuJiM0MztcdFx0fTtcbiYjNDM7XG4mIzQzO1x0XHRpbnQtcGlucyB7XG4mIzQzO1x0XHRcdHBpbnMgPSBcJiMzNDtncGlvNDFcJiMzNDs7XG4mIzQzO1x0XHRcdGZ1bmN0aW9uID0gXCYjMzQ7Z3Bpb1wmIzM0OztcbiYjNDM7XHRcdFx0ZHJpdmUtc3RyZW5ndGggPSBcdTAwM2MyXHUwMDNlO1xuJiM0MztcdFx0XHRiaWFzLWRpc2FibGU7XG4mIzQzO1x0XHR9O1xuJiM0MztcdH07XG4gfTtcbiBcbiBcdTAwMjZ1YXJ0NSB7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZmMvc3QtbmNpL2NvcmUuYyBiL2RyaXZlcnMvbmZjL3N0LW5jaS9jb3JlLmNcbmluZGV4IGEzNjcxMzZkNDMzMGEuLjIzNTZmMTZiODA3MDYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25mYy9zdC1uY2kvY29yZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25mYy9zdC1uY2kvY29yZS5jXG5AQCAtMTgsOCAmIzQzOzE4LDEzIEBAXG4gXG4gc3RhdGljIGludCBzdF9uY2lfaW5pdChzdHJ1Y3QgbmNpX2RldiAqbmRldilcbiB7XG4mIzQzO1x0c3RydWN0IHN0X25jaV9pbmZvICppbmZvID0gbmNpX2dldF9kcnZkYXRhKG5kZXYpO1xuIFx0c3RydWN0IG5jaV9tb2RlX3NldF9jbWQgY21kO1xuIFxuJiM0MztcdC8qIFNUMjFORkNEIGhhcyBubyBORExDIHByb3ByaWV0YXJ5IFNFVF9ORkNfTU9ERSAqL1xuJiM0MztcdGlmIChpbmZvLVx1MDAzZW5kbGMtXHUwMDNlcmF3X25jaSlcbiYjNDM7XHRcdHJldHVybiAwO1xuJiM0MztcbiBcdGNtZC5jbWRfdHlwZSA9IFNUX05DSV9TRVRfTkZDX01PREU7XG4gXHRjbWQubW9kZSA9IDE7XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZmMvc3QtbmNpL2kyYy5jIGIvZHJpdmVycy9uZmMvc3QtbmNpL2kyYy5jXG5pbmRleCAxNTJjMjBiNmJiMDFhLi5jZmRkYjdmZmUwMmE0IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZmMvc3QtbmNpL2kyYy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25mYy9zdC1uY2kvaTJjLmNcbkBAIC0xMCwxMCAmIzQzOzEwLDEzIEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvaTJjLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9ncGlvL2NvbnN1bWVyLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9hY3BpLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvY2xrLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9pbnRlcnJ1cHQuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2RlbGF5LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9uZmMuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L29mLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvcHJvcGVydHkuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9yZWd1bGF0b3IvY29uc3VtZXIuaFx1MDAzZVxuIFxuICNpbmNsdWRlIFwmIzM0O3N0LW5jaS5oXCYjMzQ7XG4gXG5AQCAtMjIsMTAgJiM0MzsyNSwxNyBAQFxuIC8qIG5kbGMgaGVhZGVyICovXG4gI2RlZmluZSBTVF9OQ0lfRlJBTUVfSEVBRFJPT00gMVxuICNkZWZpbmUgU1RfTkNJX0ZSQU1FX1RBSUxST09NIDBcbiYjNDM7I2RlZmluZSBTVF9OQ0lfUkFXX0ZSQU1FX0hFQURST09NIDBcbiBcbiAjZGVmaW5lIFNUX05DSV9JMkNfTUlOX1NJWkUgNCAgIC8qIFBDQigxKSAmIzQzOyBOQ0kgUGFja2V0IGhlYWRlcigzKSAqL1xuJiM0MzsjZGVmaW5lIFNUX05DSV9OQ0lfSERSX1NJWkUgMyAgIC8qIHJhdyBOQ0k6IE1UL1BCRi9HSUQgJiM0MzsgT0lEICYjNDM7IGxlbiAqL1xuICNkZWZpbmUgU1RfTkNJX0kyQ19NQVhfU0laRSAyNTAgLyogcmVxIDQuMi4xICovXG4gXG4mIzQzO2VudW0gc3RfbmNpX2kyY19wcm90byB7XG4mIzQzO1x0U1RfTkNJX0kyQ19QUk9UT19ORExDID0gMCxcbiYjNDM7XHRTVF9OQ0lfSTJDX1BST1RPX1JBV19OQ0ksXG4mIzQzO307XG4mIzQzO1xuICNkZWZpbmUgU1RfTkNJX0RSSVZFUl9OQU1FIFwmIzM0O3N0X25jaVwmIzM0O1xuICNkZWZpbmUgU1RfTkNJX0kyQ19EUklWRVJfTkFNRSBcJiMzNDtzdF9uY2lfaTJjXCYjMzQ7XG4gXG5AQCAtMzQsNiAmIzQzOzQ0LDcgQEAgc3RydWN0IHN0X25jaV9pMmNfcGh5IHtcbiBcdHN0cnVjdCBsbHRfbmRsYyAqbmRsYztcbiBcbiBcdGJvb2wgaXJxX2FjdGl2ZTtcbiYjNDM7XHRib29sIHJhd19uY2k7XG4gXG4gXHRzdHJ1Y3QgZ3Bpb19kZXNjICpncGlvZF9yZXNldDtcbiBcbkBAIC0xMTEsNiAmIzQzOzEyMiw0MiBAQCBzdGF0aWMgaW50IHN0X25jaV9pMmNfcmVhZChzdHJ1Y3Qgc3RfbmNpX2kyY19waHkgKnBoeSxcbiBcdHU4IGJ1ZltTVF9OQ0lfSTJDX01BWF9TSVpFXTtcbiBcdHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQgPSBwaHktXHUwMDNlaTJjX2RldjtcbiBcbiYjNDM7XHRpZiAocGh5LVx1MDAzZXJhd19uY2kpIHtcbiYjNDM7XHRcdHIgPSBpMmNfbWFzdGVyX3JlY3YoY2xpZW50LCBidWYsIFNUX05DSV9OQ0lfSERSX1NJWkUpO1xuJiM0MztcdFx0aWYgKHIgXHUwMDNjIDApIHtcbiYjNDM7XHRcdFx0dXNsZWVwX3JhbmdlKDEwMDAsIDQwMDApO1xuJiM0MztcdFx0XHRyID0gaTJjX21hc3Rlcl9yZWN2KGNsaWVudCwgYnVmLCBTVF9OQ0lfTkNJX0hEUl9TSVpFKTtcbiYjNDM7XHRcdH1cbiYjNDM7XHRcdGlmIChyICE9IFNUX05DSV9OQ0lfSERSX1NJWkUpXG4mIzQzO1x0XHRcdHJldHVybiAtRVJFTU9URUlPO1xuJiM0MztcbiYjNDM7XHRcdGxlbiA9IGJ1ZlsyXTtcbiYjNDM7XHRcdGlmIChsZW4gXHUwMDNlIFNUX05DSV9JMkNfTUFYX1NJWkUpIHtcbiYjNDM7XHRcdFx0bmZjX2VycihcdTAwMjZjbGllbnQtXHUwMDNlZGV2LCBcJiMzNDtpbnZhbGlkIGZyYW1lIGxlblxcblwmIzM0Oyk7XG4mIzQzO1x0XHRcdHJldHVybiAtRUJBRE1TRztcbiYjNDM7XHRcdH1cbiYjNDM7XG4mIzQzO1x0XHQqc2tiID0gYWxsb2Nfc2tiKFNUX05DSV9OQ0lfSERSX1NJWkUgJiM0MzsgbGVuLCBHRlBfS0VSTkVMKTtcbiYjNDM7XHRcdGlmICghKnNrYilcbiYjNDM7XHRcdFx0cmV0dXJuIC1FTk9NRU07XG4mIzQzO1xuJiM0MztcdFx0c2tiX3B1dCgqc2tiLCBTVF9OQ0lfTkNJX0hEUl9TSVpFKTtcbiYjNDM7XHRcdG1lbWNweSgoKnNrYiktXHUwMDNlZGF0YSwgYnVmLCBTVF9OQ0lfTkNJX0hEUl9TSVpFKTtcbiYjNDM7XG4mIzQzO1x0XHRpZiAoIWxlbilcbiYjNDM7XHRcdFx0cmV0dXJuIDA7XG4mIzQzO1xuJiM0MztcdFx0ciA9IGkyY19tYXN0ZXJfcmVjdihjbGllbnQsIGJ1ZiwgbGVuKTtcbiYjNDM7XHRcdGlmIChyICE9IGxlbikge1xuJiM0MztcdFx0XHRrZnJlZV9za2IoKnNrYik7XG4mIzQzO1x0XHRcdHJldHVybiAtRVJFTU9URUlPO1xuJiM0MztcdFx0fVxuJiM0MztcbiYjNDM7XHRcdHNrYl9wdXQoKnNrYiwgbGVuKTtcbiYjNDM7XHRcdG1lbWNweSgoKnNrYiktXHUwMDNlZGF0YSAmIzQzOyBTVF9OQ0lfTkNJX0hEUl9TSVpFLCBidWYsIGxlbik7XG4mIzQzO1x0XHRyZXR1cm4gMDtcbiYjNDM7XHR9XG4mIzQzO1xuIFx0ciA9IGkyY19tYXN0ZXJfcmVjdihjbGllbnQsIGJ1ZiwgU1RfTkNJX0kyQ19NSU5fU0laRSk7XG4gXHRpZiAociBcdTAwM2MgMCkgeyAgLyogUmV0cnksIGNoaXAgd2FzIGluIHN0YW5kYnkgKi9cbiBcdFx0dXNsZWVwX3JhbmdlKDEwMDAsIDQwMDApO1xuQEAgLTIxMSw2ICYjNDM7MjU4LDggQEAgc3RhdGljIGludCBzdF9uY2lfaTJjX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXG4gXHRcdHJldHVybiAtRU5PTUVNO1xuIFxuIFx0cGh5LVx1MDAzZWkyY19kZXYgPSBjbGllbnQ7XG4mIzQzO1x0cGh5LVx1MDAzZXJhd19uY2kgPSAodWludHB0cl90KWRldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpID09XG4mIzQzO1x0XHRcdFNUX05DSV9JMkNfUFJPVE9fUkFXX05DSTtcbiBcbiBcdGkyY19zZXRfY2xpZW50ZGF0YShjbGllbnQsIHBoeSk7XG4gXG5AQCAtMjI1LDE5ICYjNDM7Mjc0LDMxIEBAIHN0YXRpYyBpbnQgc3RfbmNpX2kyY19wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxuIFx0XHRyZXR1cm4gLUVOT0RFVjtcbiBcdH1cbiBcbiYjNDM7XHRyID0gZGV2bV9yZWd1bGF0b3JfZ2V0X2VuYWJsZV9vcHRpb25hbChkZXYsIFwmIzM0O3ZkZC1pb1wmIzM0Oyk7XG4mIzQzO1x0aWYgKHIgXHUwMDI2XHUwMDI2IHIgIT0gLUVOT0RFVilcbiYjNDM7XHRcdHJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgciwgXCYjMzQ7ZmFpbGVkIHRvIGVuYWJsZSB2ZGQtaW9cXG5cJiMzNDspO1xuJiM0MztcbiYjNDM7XHRyID0gUFRSX0VSUl9PUl9aRVJPKGRldm1fY2xrX2dldF9vcHRpb25hbF9lbmFibGVkKGRldiwgTlVMTCkpO1xuJiM0MztcdGlmIChyKVxuJiM0MztcdFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCByLCBcJiMzNDtmYWlsZWQgdG8gZW5hYmxlIGNsb2NrXFxuXCYjMzQ7KTtcbiYjNDM7XG4gXHRwaHktXHUwMDNlc2Vfc3RhdHVzLmlzX2VzZV9wcmVzZW50ID1cbiBcdFx0XHRcdGRldmljZV9wcm9wZXJ0eV9yZWFkX2Jvb2woZGV2LCBcJiMzNDtlc2UtcHJlc2VudFwmIzM0Oyk7XG4gXHRwaHktXHUwMDNlc2Vfc3RhdHVzLmlzX3VpY2NfcHJlc2VudCA9XG4gXHRcdFx0XHRkZXZpY2VfcHJvcGVydHlfcmVhZF9ib29sKGRldiwgXCYjMzQ7dWljYy1wcmVzZW50XCYjMzQ7KTtcbiBcbiBcdHIgPSBuZGxjX3Byb2JlKHBoeSwgXHUwMDI2aTJjX3BoeV9vcHMsIFx1MDAyNmNsaWVudC1cdTAwM2VkZXYsXG4tXHRcdFx0U1RfTkNJX0ZSQU1FX0hFQURST09NLCBTVF9OQ0lfRlJBTUVfVEFJTFJPT00sXG4mIzQzO1x0XHRcdHBoeS1cdTAwM2VyYXdfbmNpID8gU1RfTkNJX1JBV19GUkFNRV9IRUFEUk9PTSA6XG4mIzQzO1x0XHRcdFx0ICAgICAgIFNUX05DSV9GUkFNRV9IRUFEUk9PTSxcbiYjNDM7XHRcdFx0U1RfTkNJX0ZSQU1FX1RBSUxST09NLFxuIFx0XHRcdFx1MDAyNnBoeS1cdTAwM2VuZGxjLCBcdTAwMjZwaHktXHUwMDNlc2Vfc3RhdHVzKTtcbiBcdGlmIChyIFx1MDAzYyAwKSB7XG4gXHRcdG5mY19lcnIoXHUwMDI2Y2xpZW50LVx1MDAzZWRldiwgXCYjMzQ7VW5hYmxlIHRvIHJlZ2lzdGVyIG5kbGMgbGF5ZXJcXG5cJiMzNDspO1xuIFx0XHRyZXR1cm4gcjtcbiBcdH1cbiBcbiYjNDM7XHRwaHktXHUwMDNlbmRsYy1cdTAwM2VyYXdfbmNpID0gcGh5LVx1MDAzZXJhd19uY2k7XG4mIzQzO1xuIFx0cGh5LVx1MDAzZWlycV9hY3RpdmUgPSB0cnVlO1xuIFx0ciA9IGRldm1fcmVxdWVzdF90aHJlYWRlZF9pcnEoXHUwMDI2Y2xpZW50LVx1MDAzZWRldiwgY2xpZW50LVx1MDAzZWlycSwgTlVMTCxcbiBcdFx0XHRcdHN0X25jaV9pcnFfdGhyZWFkX2ZuLFxuQEAgLTI1NywyMyAmIzQzOzMxOCwyNSBAQCBzdGF0aWMgdm9pZCBzdF9uY2lfaTJjX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxuIH1cbiBcbiBzdGF0aWMgY29uc3Qgc3RydWN0IGkyY19kZXZpY2VfaWQgc3RfbmNpX2kyY19pZF90YWJsZVtdID0ge1xuLVx0eyAubmFtZSA9IFNUX05DSV9EUklWRVJfTkFNRSB9LFxuLVx0eyB9XG4mIzQzO1x0eyBTVF9OQ0lfRFJJVkVSX05BTUUgfSxcbiYjNDM7XHR7fVxuIH07XG4gTU9EVUxFX0RFVklDRV9UQUJMRShpMmMsIHN0X25jaV9pMmNfaWRfdGFibGUpO1xuIFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgYWNwaV9kZXZpY2VfaWQgc3RfbmNpX2kyY19hY3BpX21hdGNoW10gPSB7XG4tXHR7IC5pZCA9IFwmIzM0O1NNTzIxMDFcJiMzNDsgfSxcbi1cdHsgLmlkID0gXCYjMzQ7U01PMjEwMlwmIzM0OyB9LFxuLVx0eyB9XG4mIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgYWNwaV9kZXZpY2VfaWQgc3RfbmNpX2kyY19hY3BpX21hdGNoW10gX19tYXliZV91bnVzZWQgPSB7XG4mIzQzO1x0e1wmIzM0O1NNTzIxMDFcJiMzNDt9LFxuJiM0MztcdHtcJiMzNDtTTU8yMTAyXCYjMzQ7fSxcbiYjNDM7XHR7fVxuIH07XG4gTU9EVUxFX0RFVklDRV9UQUJMRShhY3BpLCBzdF9uY2lfaTJjX2FjcGlfbWF0Y2gpO1xuIFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIG9mX3N0X25jaV9pMmNfbWF0Y2hbXSA9IHtcbi1cdHsgLmNvbXBhdGlibGUgPSBcJiMzNDtzdCxzdDIxbmZjYi1pMmNcJiMzNDsgfSxcbi1cdHsgLmNvbXBhdGlibGUgPSBcJiMzNDtzdCxzdDIxbmZjYl9pMmNcJiMzNDsgfSxcbi1cdHsgLmNvbXBhdGlibGUgPSBcJiMzNDtzdCxzdDIxbmZjYy1pMmNcJiMzNDsgfSxcbi1cdHsgfVxuJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBvZl9zdF9uY2lfaTJjX21hdGNoW10gX19tYXliZV91bnVzZWQgPSB7XG4mIzQzO1x0eyAuY29tcGF0aWJsZSA9IFwmIzM0O3N0LHN0MjFuZmNiLWkyY1wmIzM0OywgfSxcbiYjNDM7XHR7IC5jb21wYXRpYmxlID0gXCYjMzQ7c3Qsc3QyMW5mY2JfaTJjXCYjMzQ7LCB9LFxuJiM0MztcdHsgLmNvbXBhdGlibGUgPSBcJiMzNDtzdCxzdDIxbmZjYy1pMmNcJiMzNDssIH0sXG4mIzQzO1x0eyAuY29tcGF0aWJsZSA9IFwmIzM0O3N0LHN0MjFuZmNkXCYjMzQ7LFxuJiM0MztcdCAgLmRhdGEgPSAodm9pZCAqKVNUX05DSV9JMkNfUFJPVE9fUkFXX05DSSB9LFxuJiM0MztcdHt9XG4gfTtcbiBNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBvZl9zdF9uY2lfaTJjX21hdGNoKTtcbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25mYy9zdC1uY2kvbmRsYy5jIGIvZHJpdmVycy9uZmMvc3QtbmNpL25kbGMuY1xuaW5kZXggYmU0ODA4ODU5Y2ZhOS4uYjMxOTI0NjBjOTZlMyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmNcbkBAIC02Miw4ICYjNDM7NjIsOSBAQCB2b2lkIG5kbGNfY2xvc2Uoc3RydWN0IGxsdF9uZGxjICpuZGxjKVxuIFx0LyogdG9nZ2xlIHJlc2V0IHBpbiAqL1xuIFx0bmRsYy1cdTAwM2VvcHMtXHUwMDNlZW5hYmxlKG5kbGMtXHUwMDNlcGh5X2lkKTtcbiBcbi1cdG5jaV9wcm9wX2NtZChuZGxjLVx1MDAzZW5kZXYsIFNUX05DSV9DT1JFX1BST1AsXG4tXHRcdCAgICAgc2l6ZW9mKHN0cnVjdCBuY2lfbW9kZV9zZXRfY21kKSwgKF9fdTggKilcdTAwMjZjbWQpO1xuJiM0MztcdGlmICghbmRsYy1cdTAwM2VyYXdfbmNpKVxuJiM0MztcdFx0bmNpX3Byb3BfY21kKG5kbGMtXHUwMDNlbmRldiwgU1RfTkNJX0NPUkVfUFJPUCxcbiYjNDM7XHRcdFx0ICAgICBzaXplb2Yoc3RydWN0IG5jaV9tb2RlX3NldF9jbWQpLCAoX191OCAqKVx1MDAyNmNtZCk7XG4gXG4gXHRuZGxjLVx1MDAzZXBvd2VyZWQgPSAwO1xuIFx0bmRsYy1cdTAwM2VvcHMtXHUwMDNlZGlzYWJsZShuZGxjLVx1MDAzZXBoeV9pZCk7XG5AQCAtNzIsMTEgJiM0Mzs3MywxMyBAQCBFWFBPUlRfU1lNQk9MKG5kbGNfY2xvc2UpO1xuIFxuIGludCBuZGxjX3NlbmQoc3RydWN0IGxsdF9uZGxjICpuZGxjLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIHtcbi1cdC8qIGFkZCBuZGxjIGhlYWRlciAqL1xuLVx0dTggcGNiID0gUENCX1RZUEVfREFUQUZSQU1FIHwgUENCX0RBVEFGUkFNRV9SRVRSQU5TTUlUX05PIHxcbi1cdFx0UENCX0ZSQU1FX0NSQ19JTkZPX05PVFBSRVNFTlQ7XG4mIzQzO1x0aWYgKCFuZGxjLVx1MDAzZXJhd19uY2kpIHtcbiYjNDM7XHRcdC8qIGFkZCBuZGxjIGhlYWRlciAqL1xuJiM0MztcdFx0dTggcGNiID0gUENCX1RZUEVfREFUQUZSQU1FIHwgUENCX0RBVEFGUkFNRV9SRVRSQU5TTUlUX05PIHxcbiYjNDM7XHRcdFx0UENCX0ZSQU1FX0NSQ19JTkZPX05PVFBSRVNFTlQ7XG4gXG4tXHQqKHU4ICopc2tiX3B1c2goc2tiLCAxKSA9IHBjYjtcbiYjNDM7XHRcdCoodTggKilza2JfcHVzaChza2IsIDEpID0gcGNiO1xuJiM0MztcdH1cbiBcdHNrYl9xdWV1ZV90YWlsKFx1MDAyNm5kbGMtXHUwMDNlc2VuZF9xLCBza2IpO1xuIFxuIFx0c2NoZWR1bGVfd29yayhcdTAwMjZuZGxjLVx1MDAzZXNtX3dvcmspO1xuQEAgLTEwMyw2ICYjNDM7MTA2LDEwIEBAIHN0YXRpYyB2b2lkIGxsdF9uZGxjX3NlbmRfcXVldWUoc3RydWN0IGxsdF9uZGxjICpuZGxjKVxuIFx0XHRcdG5kbGMtXHUwMDNlaGFyZF9mYXVsdCA9IHI7XG4gXHRcdFx0YnJlYWs7XG4gXHRcdH1cbiYjNDM7XHRcdGlmIChuZGxjLVx1MDAzZXJhd19uY2kpIHtcbiYjNDM7XHRcdFx0a2ZyZWVfc2tiKHNrYik7XG4mIzQzO1x0XHRcdGNvbnRpbnVlO1xuJiM0MztcdFx0fVxuIFx0XHR0aW1lX3NlbnQgPSBqaWZmaWVzO1xuIFx0XHQqKHVuc2lnbmVkIGxvbmcgKilza2ItXHUwMDNlY2IgPSB0aW1lX3NlbnQ7XG4gXG5AQCAtMTU0LDYgJiM0MzsxNjEsMTAgQEAgc3RhdGljIHZvaWQgbGx0X25kbGNfcmN2X3F1ZXVlKHN0cnVjdCBsbHRfbmRsYyAqbmRsYylcbiBcdFx0cHJfZGVidWcoXCYjMzQ7cmN2UWxlbj0lZFxcblwmIzM0OywgbmRsYy1cdTAwM2VyY3ZfcS5xbGVuKTtcbiBcbiBcdHdoaWxlICgoc2tiID0gc2tiX2RlcXVldWUoXHUwMDI2bmRsYy1cdTAwM2VyY3ZfcSkpICE9IE5VTEwpIHtcbiYjNDM7XHRcdGlmIChuZGxjLVx1MDAzZXJhd19uY2kpIHtcbiYjNDM7XHRcdFx0bmNpX3JlY3ZfZnJhbWUobmRsYy1cdTAwM2VuZGV2LCBza2IpO1xuJiM0MztcdFx0XHRjb250aW51ZTtcbiYjNDM7XHRcdH1cbiBcdFx0cGNiID0gc2tiLVx1MDAzZWRhdGFbMF07XG4gXHRcdHNrYl9wdWxsKHNrYiwgMSk7XG4gXHRcdGlmICgocGNiIFx1MDAyNiBQQ0JfVFlQRV9NQVNLKSA9PSBQQ0JfVFlQRV9TVVBFUlZJU09SKSB7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZmMvc3QtbmNpL25kbGMuaCBiL2RyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmhcbmluZGV4IGMyNGNlOWIwZGY1MmUuLjVjMWY4YmFmMDQ3MTggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25mYy9zdC1uY2kvbmRsYy5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25mYy9zdC1uY2kvbmRsYy5oXG5AQCAtMzksNiAmIzQzOzM5LDggQEAgc3RydWN0IGxsdF9uZGxjIHtcbiBcdCAqL1xuIFx0aW50IGhhcmRfZmF1bHQ7XG4gXHRpbnQgcG93ZXJlZDtcbiYjNDM7XHQvKiBTVDIxTkZDRDogcmF3IE5DSSBvbiB0aGUgd2lyZSwgbm8gTkRMQyBQQ0IgLyBBQ0sgdGltZXJzICovXG4mIzQzO1x0Ym9vbCByYXdfbmNpO1xuIH07XG4gXG4gaW50IG5kbGNfb3BlbihzdHJ1Y3QgbGx0X25kbGMgKm5kbGMpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmZjL3N0LW5jaS9zZS5jIGIvZHJpdmVycy9uZmMvc3QtbmNpL3NlLmNcbmluZGV4IDYwN2VjNzY4ZWI3YjQuLjQ0Y2MxMDJiY2RlMjEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25mYy9zdC1uY2kvc2UuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZmMvc3QtbmNpL3NlLmNcbkBAIC02MjEsNiAmIzQzOzYyMSw5IEBAIGludCBzdF9uY2lfZGlzY292ZXJfc2Uoc3RydWN0IG5jaV9kZXYgKm5kZXYpXG4gXHRpbnQgc2VfY291bnQgPSAwO1xuIFx0c3RydWN0IHN0X25jaV9pbmZvICppbmZvID0gbmNpX2dldF9kcnZkYXRhKG5kZXYpO1xuIFxuJiM0MztcdGlmIChpbmZvLVx1MDAzZW5kbGMtXHUwMDNlcmF3X25jaSlcbiYjNDM7XHRcdHJldHVybiAwO1xuJiM0MztcbiBcdHIgPSBzdF9uY2lfaGNpX25ldHdvcmtfaW5pdChuZGV2KTtcbiBcdGlmIChyICE9IDApXG4gXHRcdHJldHVybiByO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIwIDIxOjAxPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjJtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORkMmIzM0OywKICAgICYjMzQ7TkZDX05DSSYjMzQ7LAogICAgJiMzNDtJMkMmIzM0OywKICAgICYjMzQ7TkZDX1NUX05DSSYjMzQ7LAogICAgJiMzNDtORkNfU1RfTkNJX0kyQyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O25kbGNfcHJvYmUmIzM0OywKICAgICYjMzQ7bmRsY19yZWN2JiMzNDssCiAgICAmIzM0O25kbGNfc2VuZCYjMzQ7LAogICAgJiMzNDtuZGxjX2Nsb3NlJiMzNDssCiAgICAmIzM0O3N0X25jaV9kaXNjb3Zlcl9zZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHRoZSBTVDIxTkZDRCBORkMgY29udHJvbGxlciwgd2hpY2ggdXNlcyByYXcgTkNJIG92ZXIgSTJDIGluc3RlYWQgb2YgdGhlIE5ETEMgcHJvdG9jb2wuIEl0IGludHJvZHVjZXMgYSBuZXcgYHJhd19uY2lgIGZsYWcgdGhhdCBtb2RpZmllcyB0aGUgYmVoYXZpb3Igb2YgcmVhZGluZyBmcm9tIHRoZSBJMkMgYnVzLCBzZW5kaW5nL3JlY2VpdmluZyBOQ0kgZnJhbWVzLCBhbmQgaW5pdGlhbGl6aW5nIHRoZSBkZXZpY2UuIFRoZSBJMkMgZHJpdmVyIGNhbiBiZSBpbnN0YW50aWF0ZWQgYW5kIGZ1enplZCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNTlmYjA4MjRiZWM0ZDEwMjYzZTQ4NWI1YWNiNzc1Nzk0M2IyYjJiYwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgQXVnIDIwIDIxOjAxOjUzIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9uZmMvc3Qsc3QtbmNpLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L25mYy9zdCxzdC1uY2kueWFtbAppbmRleCAxZGNiZGRiYzVhNzRlLi5jODU5Nzk3ZjQyMmJjIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L25mYy9zdCxzdC1uY2kueWFtbAomIzQzOyYjNDM7JiM0MzsgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L25mYy9zdCxzdC1uY2kueWFtbApAQCAtMTUsNiAmIzQzOzE1LDcgQEAgcHJvcGVydGllczoKICAgICAgIC0gc3Qsc3QyMW5mY2ItaTJjCiAgICAgICAtIHN0LHN0MjFuZmNiLXNwaQogICAgICAgLSBzdCxzdDIxbmZjYy1pMmMKJiM0MzsgICAgICAtIHN0LHN0MjFuZmNkCiAKICAgcmVzZXQtZ3Bpb3M6CiAgICAgZGVzY3JpcHRpb246IE91dHB1dCBHUElPIHBpbiB1c2VkIGZvciByZXNldHRpbmcgdGhlIGNvbnRyb2xsZXIKQEAgLTM2LDYgJiM0MzszNywxNSBAQCBwcm9wZXJ0aWVzOgogICAgICAgU3BlY2lmaWVzIHRoYXQgdGhlIHVpY2Mgc3dwIHNpZ25hbCBjYW4gYmUgcGh5c2ljYWxseSBjb25uZWN0ZWQgdG8gdGhlCiAgICAgICBjb250cm9sbGVyCiAKJiM0MzsgIGNsb2NrczoKJiM0MzsgICAgbWF4SXRlbXM6IDEKJiM0MzsgICAgZGVzY3JpcHRpb246CiYjNDM7ICAgICAgRXh0ZXJuYWwgcmVmZXJlbmNlIGNsb2NrIGNvbm5lY3RlZCB0byBTWVNfQ0xLLgomIzQzOwomIzQzOyAgdmRkLWlvLXN1cHBseToKJiM0MzsgICAgZGVzY3JpcHRpb246CiYjNDM7ICAgICAgRGlnaXRhbCBJL08gc3VwcGx5IChWUFNfSU8pLgomIzQzOwogcmVxdWlyZWQ6CiAgIC0gY29tcGF0aWJsZQogICAtIGludGVycnVwdHMKQEAgLTQ5LDYgJiM0Mzs1OSw3IEBAIGlmOgogICAgICAgICBlbnVtOgogICAgICAgICAgIC0gc3Qsc3QyMW5mY2ItaTJjCiAgICAgICAgICAgLSBzdCxzdDIxbmZjYy1pMmMKJiM0MzsgICAgICAgICAgLSBzdCxzdDIxbmZjZAogdGhlbjoKICAgcHJvcGVydGllczoKICAgICBzcGktbWF4LWZyZXF1ZW5jeTogZmFsc2UKQEAgLTgxLDYgJiM0Mzs5MiwyNiBAQCBleGFtcGxlczoKICAgICAgICAgfTsKICAgICB9OwogCiYjNDM7ICAtIHwKJiM0MzsgICAgI2luY2x1ZGUgJmx0O2R0LWJpbmRpbmdzL2dwaW8vZ3Bpby5oJmd0OwomIzQzOyAgICAjaW5jbHVkZSAmbHQ7ZHQtYmluZGluZ3MvaW50ZXJydXB0LWNvbnRyb2xsZXIvaXJxLmgmZ3Q7CiYjNDM7CiYjNDM7ICAgIGkyYyB7CiYjNDM7ICAgICAgICAjYWRkcmVzcy1jZWxscyA9ICZsdDsxJmd0OzsKJiM0MzsgICAgICAgICNzaXplLWNlbGxzID0gJmx0OzAmZ3Q7OwomIzQzOwomIzQzOyAgICAgICAgbmZjQDggewomIzQzOyAgICAgICAgICAgIGNvbXBhdGlibGUgPSAmIzM0O3N0LHN0MjFuZmNkJiMzNDs7CiYjNDM7ICAgICAgICAgICAgcmVnID0gJmx0OzB4MDgmZ3Q7OwomIzQzOwomIzQzOyAgICAgICAgICAgIGludGVycnVwdHMtZXh0ZW5kZWQgPSAmbHQ7JmFtcDtncGlvNSAyIElSUV9UWVBFX0xFVkVMX0hJR0gmZ3Q7OwomIzQzOyAgICAgICAgICAgIHJlc2V0LWdwaW9zID0gJmx0OyZhbXA7Z3BpbzUgMjkgR1BJT19BQ1RJVkVfSElHSCZndDs7CiYjNDM7CiYjNDM7ICAgICAgICAgICAgY2xvY2tzID0gJmx0OyZhbXA7Y2xrJmd0OzsKJiM0MzsgICAgICAgICAgICB2ZGQtaW8tc3VwcGx5ID0gJmx0OyZhbXA7dmRkX2lvJmd0OzsKJiM0MzsgICAgICAgIH07CiYjNDM7ICAgIH07CiYjNDM7CiAgIC0gfAogICAgICNpbmNsdWRlICZsdDtkdC1iaW5kaW5ncy9ncGlvL2dwaW8uaCZndDsKICAgICAjaW5jbHVkZSAmbHQ7ZHQtYmluZGluZ3MvaW50ZXJydXB0LWNvbnRyb2xsZXIvaXJxLmgmZ3Q7CmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2Jvb3QvZHRzL3Fjb20vcWNtNjQ5MC1mYWlycGhvbmUtZnA1LmR0cyBiL2FyY2gvYXJtNjQvYm9vdC9kdHMvcWNvbS9xY202NDkwLWZhaXJwaG9uZS1mcDUuZHRzCmluZGV4IDA0Y2I5MjMwZDI5ZmQuLmVmNjYwNzlhMDI2M2MgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtNjQvYm9vdC9kdHMvcWNvbS9xY202NDkwLWZhaXJwaG9uZS1mcDUuZHRzCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvYXJtNjQvYm9vdC9kdHMvcWNvbS9xY202NDkwLWZhaXJwaG9uZS1mcDUuZHRzCkBAIC05MDgsNyAmIzQzOzkwOCwyMyBAQCByZWRyaXZlcl9zc19pbjogZW5kcG9pbnQgewogJmFtcDtpMmM5IHsKIAlzdGF0dXMgPSAmIzM0O29rYXkmIzM0OzsKIAotCS8qIFNUMjFORkMgTkZDIEAgMjggKi8KJiM0MzsJbmZjQDggewomIzQzOwkJY29tcGF0aWJsZSA9ICYjMzQ7c3Qsc3QyMW5mY2QmIzM0OzsKJiM0MzsJCXJlZyA9ICZsdDsweDA4Jmd0OzsKJiM0MzsKJiM0MzsJCWludGVycnVwdHMtZXh0ZW5kZWQgPSAmbHQ7JmFtcDt0bG1tIDQxIElSUV9UWVBFX0xFVkVMX0hJR0gmZ3Q7OwomIzQzOwkJcmVzZXQtZ3Bpb3MgPSAmbHQ7JmFtcDt0bG1tIDM4IEdQSU9fQUNUSVZFX0hJR0gmZ3Q7OwomIzQzOwomIzQzOwkJcGluY3RybC0wID0gJmx0OyZhbXA7bmZjX2RlZmF1bHQmZ3Q7OwomIzQzOwkJcGluY3RybC1uYW1lcyA9ICYjMzQ7ZGVmYXVsdCYjMzQ7OwomIzQzOwomIzQzOwkJY2xvY2tzID0gJmx0OyZhbXA7cnBtaGNjIFJQTUhfTE5fQkJfQ0xLMiZndDs7CiYjNDM7CQl2ZGQtaW8tc3VwcGx5ID0gJmx0OyZhbXA7dnJlZ19sMThiJmd0OzsKJiM0MzsKJiM0MzsJCWVzZS1wcmVzZW50OwomIzQzOwkJdWljYy1wcmVzZW50OwomIzQzOwl9OwomIzQzOwogCS8qIFZMNTNMMyBUb0YgQCAyOSAqLwogfTsKIApAQCAtMTQxMCw2ICYjNDM7MTQyNiwyMiBAQCBoYWxsX3NlbnNvcl9kZWZhdWx0OiBoYWxsLXNlbnNvci1kZWZhdWx0LXN0YXRlIHsKIAkJZHJpdmUtc3RyZW5ndGggPSAmbHQ7MiZndDs7CiAJCWJpYXMtcHVsbC11cDsKIAl9OwomIzQzOwomIzQzOwluZmNfZGVmYXVsdDogbmZjLWRlZmF1bHQtc3RhdGUgewomIzQzOwkJcmVzZXQtcGlucyB7CiYjNDM7CQkJcGlucyA9ICYjMzQ7Z3BpbzM4JiMzNDs7CiYjNDM7CQkJZnVuY3Rpb24gPSAmIzM0O2dwaW8mIzM0OzsKJiM0MzsJCQlkcml2ZS1zdHJlbmd0aCA9ICZsdDsyJmd0OzsKJiM0MzsJCQliaWFzLWRpc2FibGU7CiYjNDM7CQl9OwomIzQzOwomIzQzOwkJaW50LXBpbnMgewomIzQzOwkJCXBpbnMgPSAmIzM0O2dwaW80MSYjMzQ7OwomIzQzOwkJCWZ1bmN0aW9uID0gJiMzNDtncGlvJiMzNDs7CiYjNDM7CQkJZHJpdmUtc3RyZW5ndGggPSAmbHQ7MiZndDs7CiYjNDM7CQkJYmlhcy1kaXNhYmxlOwomIzQzOwkJfTsKJiM0MzsJfTsKIH07CiAKICZhbXA7dWFydDUgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZmMvc3QtbmNpL2NvcmUuYyBiL2RyaXZlcnMvbmZjL3N0LW5jaS9jb3JlLmMKaW5kZXggYTM2NzEzNmQ0MzMwYS4uMjM1NmYxNmI4MDcwNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZmMvc3QtbmNpL2NvcmUuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25mYy9zdC1uY2kvY29yZS5jCkBAIC0xOCw4ICYjNDM7MTgsMTMgQEAKIAogc3RhdGljIGludCBzdF9uY2lfaW5pdChzdHJ1Y3QgbmNpX2RldiAqbmRldikKIHsKJiM0MzsJc3RydWN0IHN0X25jaV9pbmZvICppbmZvID0gbmNpX2dldF9kcnZkYXRhKG5kZXYpOwogCXN0cnVjdCBuY2lfbW9kZV9zZXRfY21kIGNtZDsKIAomIzQzOwkvKiBTVDIxTkZDRCBoYXMgbm8gTkRMQyBwcm9wcmlldGFyeSBTRVRfTkZDX01PREUgKi8KJiM0MzsJaWYgKGluZm8tJmd0O25kbGMtJmd0O3Jhd19uY2kpCiYjNDM7CQlyZXR1cm4gMDsKJiM0MzsKIAljbWQuY21kX3R5cGUgPSBTVF9OQ0lfU0VUX05GQ19NT0RFOwogCWNtZC5tb2RlID0gMTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZmMvc3QtbmNpL2kyYy5jIGIvZHJpdmVycy9uZmMvc3QtbmNpL2kyYy5jCmluZGV4IDE1MmMyMGI2YmIwMWEuLmNmZGRiN2ZmZTAyYTQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmZjL3N0LW5jaS9pMmMuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25mYy9zdC1uY2kvaTJjLmMKQEAgLTEwLDEwICYjNDM7MTAsMTMgQEAKICNpbmNsdWRlICZsdDtsaW51eC9pMmMuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9ncGlvL2NvbnN1bWVyLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvYWNwaS5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9jbGsuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9pbnRlcnJ1cHQuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9kZWxheS5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L25mYy5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L29mLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L3Byb3BlcnR5LmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L3JlZ3VsYXRvci9jb25zdW1lci5oJmd0OwogCiAjaW5jbHVkZSAmIzM0O3N0LW5jaS5oJiMzNDsKIApAQCAtMjIsMTAgJiM0MzsyNSwxNyBAQAogLyogbmRsYyBoZWFkZXIgKi8KICNkZWZpbmUgU1RfTkNJX0ZSQU1FX0hFQURST09NIDEKICNkZWZpbmUgU1RfTkNJX0ZSQU1FX1RBSUxST09NIDAKJiM0MzsjZGVmaW5lIFNUX05DSV9SQVdfRlJBTUVfSEVBRFJPT00gMAogCiAjZGVmaW5lIFNUX05DSV9JMkNfTUlOX1NJWkUgNCAgIC8qIFBDQigxKSAmIzQzOyBOQ0kgUGFja2V0IGhlYWRlcigzKSAqLwomIzQzOyNkZWZpbmUgU1RfTkNJX05DSV9IRFJfU0laRSAzICAgLyogcmF3IE5DSTogTVQvUEJGL0dJRCAmIzQzOyBPSUQgJiM0MzsgbGVuICovCiAjZGVmaW5lIFNUX05DSV9JMkNfTUFYX1NJWkUgMjUwIC8qIHJlcSA0LjIuMSAqLwogCiYjNDM7ZW51bSBzdF9uY2lfaTJjX3Byb3RvIHsKJiM0MzsJU1RfTkNJX0kyQ19QUk9UT19ORExDID0gMCwKJiM0MzsJU1RfTkNJX0kyQ19QUk9UT19SQVdfTkNJLAomIzQzO307CiYjNDM7CiAjZGVmaW5lIFNUX05DSV9EUklWRVJfTkFNRSAmIzM0O3N0X25jaSYjMzQ7CiAjZGVmaW5lIFNUX05DSV9JMkNfRFJJVkVSX05BTUUgJiMzNDtzdF9uY2lfaTJjJiMzNDsKIApAQCAtMzQsNiAmIzQzOzQ0LDcgQEAgc3RydWN0IHN0X25jaV9pMmNfcGh5IHsKIAlzdHJ1Y3QgbGx0X25kbGMgKm5kbGM7CiAKIAlib29sIGlycV9hY3RpdmU7CiYjNDM7CWJvb2wgcmF3X25jaTsKIAogCXN0cnVjdCBncGlvX2Rlc2MgKmdwaW9kX3Jlc2V0OwogCkBAIC0xMTEsNiAmIzQzOzEyMiw0MiBAQCBzdGF0aWMgaW50IHN0X25jaV9pMmNfcmVhZChzdHJ1Y3Qgc3RfbmNpX2kyY19waHkgKnBoeSwKIAl1OCBidWZbU1RfTkNJX0kyQ19NQVhfU0laRV07CiAJc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCA9IHBoeS0mZ3Q7aTJjX2RldjsKIAomIzQzOwlpZiAocGh5LSZndDtyYXdfbmNpKSB7CiYjNDM7CQlyID0gaTJjX21hc3Rlcl9yZWN2KGNsaWVudCwgYnVmLCBTVF9OQ0lfTkNJX0hEUl9TSVpFKTsKJiM0MzsJCWlmIChyICZsdDsgMCkgewomIzQzOwkJCXVzbGVlcF9yYW5nZSgxMDAwLCA0MDAwKTsKJiM0MzsJCQlyID0gaTJjX21hc3Rlcl9yZWN2KGNsaWVudCwgYnVmLCBTVF9OQ0lfTkNJX0hEUl9TSVpFKTsKJiM0MzsJCX0KJiM0MzsJCWlmIChyICE9IFNUX05DSV9OQ0lfSERSX1NJWkUpCiYjNDM7CQkJcmV0dXJuIC1FUkVNT1RFSU87CiYjNDM7CiYjNDM7CQlsZW4gPSBidWZbMl07CiYjNDM7CQlpZiAobGVuICZndDsgU1RfTkNJX0kyQ19NQVhfU0laRSkgewomIzQzOwkJCW5mY19lcnIoJmFtcDtjbGllbnQtJmd0O2RldiwgJiMzNDtpbnZhbGlkIGZyYW1lIGxlblxuJiMzNDspOwomIzQzOwkJCXJldHVybiAtRUJBRE1TRzsKJiM0MzsJCX0KJiM0MzsKJiM0MzsJCSpza2IgPSBhbGxvY19za2IoU1RfTkNJX05DSV9IRFJfU0laRSAmIzQzOyBsZW4sIEdGUF9LRVJORUwpOwomIzQzOwkJaWYgKCEqc2tiKQomIzQzOwkJCXJldHVybiAtRU5PTUVNOwomIzQzOwomIzQzOwkJc2tiX3B1dCgqc2tiLCBTVF9OQ0lfTkNJX0hEUl9TSVpFKTsKJiM0MzsJCW1lbWNweSgoKnNrYiktJmd0O2RhdGEsIGJ1ZiwgU1RfTkNJX05DSV9IRFJfU0laRSk7CiYjNDM7CiYjNDM7CQlpZiAoIWxlbikKJiM0MzsJCQlyZXR1cm4gMDsKJiM0MzsKJiM0MzsJCXIgPSBpMmNfbWFzdGVyX3JlY3YoY2xpZW50LCBidWYsIGxlbik7CiYjNDM7CQlpZiAociAhPSBsZW4pIHsKJiM0MzsJCQlrZnJlZV9za2IoKnNrYik7CiYjNDM7CQkJcmV0dXJuIC1FUkVNT1RFSU87CiYjNDM7CQl9CiYjNDM7CiYjNDM7CQlza2JfcHV0KCpza2IsIGxlbik7CiYjNDM7CQltZW1jcHkoKCpza2IpLSZndDtkYXRhICYjNDM7IFNUX05DSV9OQ0lfSERSX1NJWkUsIGJ1ZiwgbGVuKTsKJiM0MzsJCXJldHVybiAwOwomIzQzOwl9CiYjNDM7CiAJciA9IGkyY19tYXN0ZXJfcmVjdihjbGllbnQsIGJ1ZiwgU1RfTkNJX0kyQ19NSU5fU0laRSk7CiAJaWYgKHIgJmx0OyAwKSB7ICAvKiBSZXRyeSwgY2hpcCB3YXMgaW4gc3RhbmRieSAqLwogCQl1c2xlZXBfcmFuZ2UoMTAwMCwgNDAwMCk7CkBAIC0yMTEsNiAmIzQzOzI1OCw4IEBAIHN0YXRpYyBpbnQgc3RfbmNpX2kyY19wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQogCQlyZXR1cm4gLUVOT01FTTsKIAogCXBoeS0mZ3Q7aTJjX2RldiA9IGNsaWVudDsKJiM0MzsJcGh5LSZndDtyYXdfbmNpID0gKHVpbnRwdHJfdClkZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KSA9PQomIzQzOwkJCVNUX05DSV9JMkNfUFJPVE9fUkFXX05DSTsKIAogCWkyY19zZXRfY2xpZW50ZGF0YShjbGllbnQsIHBoeSk7CiAKQEAgLTIyNSwxOSAmIzQzOzI3NCwzMSBAQCBzdGF0aWMgaW50IHN0X25jaV9pMmNfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKIAkJcmV0dXJuIC1FTk9ERVY7CiAJfQogCiYjNDM7CXIgPSBkZXZtX3JlZ3VsYXRvcl9nZXRfZW5hYmxlX29wdGlvbmFsKGRldiwgJiMzNDt2ZGQtaW8mIzM0Oyk7CiYjNDM7CWlmIChyICZhbXA7JmFtcDsgciAhPSAtRU5PREVWKQomIzQzOwkJcmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCByLCAmIzM0O2ZhaWxlZCB0byBlbmFibGUgdmRkLWlvXG4mIzM0Oyk7CiYjNDM7CiYjNDM7CXIgPSBQVFJfRVJSX09SX1pFUk8oZGV2bV9jbGtfZ2V0X29wdGlvbmFsX2VuYWJsZWQoZGV2LCBOVUxMKSk7CiYjNDM7CWlmIChyKQomIzQzOwkJcmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCByLCAmIzM0O2ZhaWxlZCB0byBlbmFibGUgY2xvY2tcbiYjMzQ7KTsKJiM0MzsKIAlwaHktJmd0O3NlX3N0YXR1cy5pc19lc2VfcHJlc2VudCA9CiAJCQkJZGV2aWNlX3Byb3BlcnR5X3JlYWRfYm9vbChkZXYsICYjMzQ7ZXNlLXByZXNlbnQmIzM0Oyk7CiAJcGh5LSZndDtzZV9zdGF0dXMuaXNfdWljY19wcmVzZW50ID0KIAkJCQlkZXZpY2VfcHJvcGVydHlfcmVhZF9ib29sKGRldiwgJiMzNDt1aWNjLXByZXNlbnQmIzM0Oyk7CiAKIAlyID0gbmRsY19wcm9iZShwaHksICZhbXA7aTJjX3BoeV9vcHMsICZhbXA7Y2xpZW50LSZndDtkZXYsCi0JCQlTVF9OQ0lfRlJBTUVfSEVBRFJPT00sIFNUX05DSV9GUkFNRV9UQUlMUk9PTSwKJiM0MzsJCQlwaHktJmd0O3Jhd19uY2kgPyBTVF9OQ0lfUkFXX0ZSQU1FX0hFQURST09NIDoKJiM0MzsJCQkJICAgICAgIFNUX05DSV9GUkFNRV9IRUFEUk9PTSwKJiM0MzsJCQlTVF9OQ0lfRlJBTUVfVEFJTFJPT00sCiAJCQkmYW1wO3BoeS0mZ3Q7bmRsYywgJmFtcDtwaHktJmd0O3NlX3N0YXR1cyk7CiAJaWYgKHIgJmx0OyAwKSB7CiAJCW5mY19lcnIoJmFtcDtjbGllbnQtJmd0O2RldiwgJiMzNDtVbmFibGUgdG8gcmVnaXN0ZXIgbmRsYyBsYXllclxuJiMzNDspOwogCQlyZXR1cm4gcjsKIAl9CiAKJiM0MzsJcGh5LSZndDtuZGxjLSZndDtyYXdfbmNpID0gcGh5LSZndDtyYXdfbmNpOwomIzQzOwogCXBoeS0mZ3Q7aXJxX2FjdGl2ZSA9IHRydWU7CiAJciA9IGRldm1fcmVxdWVzdF90aHJlYWRlZF9pcnEoJmFtcDtjbGllbnQtJmd0O2RldiwgY2xpZW50LSZndDtpcnEsIE5VTEwsCiAJCQkJc3RfbmNpX2lycV90aHJlYWRfZm4sCkBAIC0yNTcsMjMgJiM0MzszMTgsMjUgQEAgc3RhdGljIHZvaWQgc3RfbmNpX2kyY19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKIH0KIAogc3RhdGljIGNvbnN0IHN0cnVjdCBpMmNfZGV2aWNlX2lkIHN0X25jaV9pMmNfaWRfdGFibGVbXSA9IHsKLQl7IC5uYW1lID0gU1RfTkNJX0RSSVZFUl9OQU1FIH0sCi0JeyB9CiYjNDM7CXsgU1RfTkNJX0RSSVZFUl9OQU1FIH0sCiYjNDM7CXt9CiB9OwogTU9EVUxFX0RFVklDRV9UQUJMRShpMmMsIHN0X25jaV9pMmNfaWRfdGFibGUpOwogCi1zdGF0aWMgY29uc3Qgc3RydWN0IGFjcGlfZGV2aWNlX2lkIHN0X25jaV9pMmNfYWNwaV9tYXRjaFtdID0gewotCXsgLmlkID0gJiMzNDtTTU8yMTAxJiMzNDsgfSwKLQl7IC5pZCA9ICYjMzQ7U01PMjEwMiYjMzQ7IH0sCi0JeyB9CiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBhY3BpX2RldmljZV9pZCBzdF9uY2lfaTJjX2FjcGlfbWF0Y2hbXSBfX21heWJlX3VudXNlZCA9IHsKJiM0MzsJeyYjMzQ7U01PMjEwMSYjMzQ7fSwKJiM0MzsJeyYjMzQ7U01PMjEwMiYjMzQ7fSwKJiM0MzsJe30KIH07CiBNT0RVTEVfREVWSUNFX1RBQkxFKGFjcGksIHN0X25jaV9pMmNfYWNwaV9tYXRjaCk7CiAKLXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIG9mX3N0X25jaV9pMmNfbWF0Y2hbXSA9IHsKLQl7IC5jb21wYXRpYmxlID0gJiMzNDtzdCxzdDIxbmZjYi1pMmMmIzM0OyB9LAotCXsgLmNvbXBhdGlibGUgPSAmIzM0O3N0LHN0MjFuZmNiX2kyYyYjMzQ7IH0sCi0JeyAuY29tcGF0aWJsZSA9ICYjMzQ7c3Qsc3QyMW5mY2MtaTJjJiMzNDsgfSwKLQl7IH0KJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBvZl9zdF9uY2lfaTJjX21hdGNoW10gX19tYXliZV91bnVzZWQgPSB7CiYjNDM7CXsgLmNvbXBhdGlibGUgPSAmIzM0O3N0LHN0MjFuZmNiLWkyYyYjMzQ7LCB9LAomIzQzOwl7IC5jb21wYXRpYmxlID0gJiMzNDtzdCxzdDIxbmZjYl9pMmMmIzM0OywgfSwKJiM0MzsJeyAuY29tcGF0aWJsZSA9ICYjMzQ7c3Qsc3QyMW5mY2MtaTJjJiMzNDssIH0sCiYjNDM7CXsgLmNvbXBhdGlibGUgPSAmIzM0O3N0LHN0MjFuZmNkJiMzNDssCiYjNDM7CSAgLmRhdGEgPSAodm9pZCAqKVNUX05DSV9JMkNfUFJPVE9fUkFXX05DSSB9LAomIzQzOwl7fQogfTsKIE1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIG9mX3N0X25jaV9pMmNfbWF0Y2gpOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25mYy9zdC1uY2kvbmRsYy5jIGIvZHJpdmVycy9uZmMvc3QtbmNpL25kbGMuYwppbmRleCBiZTQ4MDg4NTljZmE5Li5iMzE5MjQ2MGM5NmUzIDEwMDY0NAotLS0gYS9kcml2ZXJzL25mYy9zdC1uY2kvbmRsYy5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmMKQEAgLTYyLDggJiM0Mzs2Miw5IEBAIHZvaWQgbmRsY19jbG9zZShzdHJ1Y3QgbGx0X25kbGMgKm5kbGMpCiAJLyogdG9nZ2xlIHJlc2V0IHBpbiAqLwogCW5kbGMtJmd0O29wcy0mZ3Q7ZW5hYmxlKG5kbGMtJmd0O3BoeV9pZCk7CiAKLQluY2lfcHJvcF9jbWQobmRsYy0mZ3Q7bmRldiwgU1RfTkNJX0NPUkVfUFJPUCwKLQkJICAgICBzaXplb2Yoc3RydWN0IG5jaV9tb2RlX3NldF9jbWQpLCAoX191OCAqKSZhbXA7Y21kKTsKJiM0MzsJaWYgKCFuZGxjLSZndDtyYXdfbmNpKQomIzQzOwkJbmNpX3Byb3BfY21kKG5kbGMtJmd0O25kZXYsIFNUX05DSV9DT1JFX1BST1AsCiYjNDM7CQkJICAgICBzaXplb2Yoc3RydWN0IG5jaV9tb2RlX3NldF9jbWQpLCAoX191OCAqKSZhbXA7Y21kKTsKIAogCW5kbGMtJmd0O3Bvd2VyZWQgPSAwOwogCW5kbGMtJmd0O29wcy0mZ3Q7ZGlzYWJsZShuZGxjLSZndDtwaHlfaWQpOwpAQCAtNzIsMTEgJiM0Mzs3MywxMyBAQCBFWFBPUlRfU1lNQk9MKG5kbGNfY2xvc2UpOwogCiBpbnQgbmRsY19zZW5kKHN0cnVjdCBsbHRfbmRsYyAqbmRsYywgc3RydWN0IHNrX2J1ZmYgKnNrYikKIHsKLQkvKiBhZGQgbmRsYyBoZWFkZXIgKi8KLQl1OCBwY2IgPSBQQ0JfVFlQRV9EQVRBRlJBTUUgfCBQQ0JfREFUQUZSQU1FX1JFVFJBTlNNSVRfTk8gfAotCQlQQ0JfRlJBTUVfQ1JDX0lORk9fTk9UUFJFU0VOVDsKJiM0MzsJaWYgKCFuZGxjLSZndDtyYXdfbmNpKSB7CiYjNDM7CQkvKiBhZGQgbmRsYyBoZWFkZXIgKi8KJiM0MzsJCXU4IHBjYiA9IFBDQl9UWVBFX0RBVEFGUkFNRSB8IFBDQl9EQVRBRlJBTUVfUkVUUkFOU01JVF9OTyB8CiYjNDM7CQkJUENCX0ZSQU1FX0NSQ19JTkZPX05PVFBSRVNFTlQ7CiAKLQkqKHU4ICopc2tiX3B1c2goc2tiLCAxKSA9IHBjYjsKJiM0MzsJCSoodTggKilza2JfcHVzaChza2IsIDEpID0gcGNiOwomIzQzOwl9CiAJc2tiX3F1ZXVlX3RhaWwoJmFtcDtuZGxjLSZndDtzZW5kX3EsIHNrYik7CiAKIAlzY2hlZHVsZV93b3JrKCZhbXA7bmRsYy0mZ3Q7c21fd29yayk7CkBAIC0xMDMsNiAmIzQzOzEwNiwxMCBAQCBzdGF0aWMgdm9pZCBsbHRfbmRsY19zZW5kX3F1ZXVlKHN0cnVjdCBsbHRfbmRsYyAqbmRsYykKIAkJCW5kbGMtJmd0O2hhcmRfZmF1bHQgPSByOwogCQkJYnJlYWs7CiAJCX0KJiM0MzsJCWlmIChuZGxjLSZndDtyYXdfbmNpKSB7CiYjNDM7CQkJa2ZyZWVfc2tiKHNrYik7CiYjNDM7CQkJY29udGludWU7CiYjNDM7CQl9CiAJCXRpbWVfc2VudCA9IGppZmZpZXM7CiAJCSoodW5zaWduZWQgbG9uZyAqKXNrYi0mZ3Q7Y2IgPSB0aW1lX3NlbnQ7CiAKQEAgLTE1NCw2ICYjNDM7MTYxLDEwIEBAIHN0YXRpYyB2b2lkIGxsdF9uZGxjX3Jjdl9xdWV1ZShzdHJ1Y3QgbGx0X25kbGMgKm5kbGMpCiAJCXByX2RlYnVnKCYjMzQ7cmN2UWxlbj0lZFxuJiMzNDssIG5kbGMtJmd0O3Jjdl9xLnFsZW4pOwogCiAJd2hpbGUgKChza2IgPSBza2JfZGVxdWV1ZSgmYW1wO25kbGMtJmd0O3Jjdl9xKSkgIT0gTlVMTCkgewomIzQzOwkJaWYgKG5kbGMtJmd0O3Jhd19uY2kpIHsKJiM0MzsJCQluY2lfcmVjdl9mcmFtZShuZGxjLSZndDtuZGV2LCBza2IpOwomIzQzOwkJCWNvbnRpbnVlOwomIzQzOwkJfQogCQlwY2IgPSBza2ItJmd0O2RhdGFbMF07CiAJCXNrYl9wdWxsKHNrYiwgMSk7CiAJCWlmICgocGNiICZhbXA7IFBDQl9UWVBFX01BU0spID09IFBDQl9UWVBFX1NVUEVSVklTT1IpIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmggYi9kcml2ZXJzL25mYy9zdC1uY2kvbmRsYy5oCmluZGV4IGMyNGNlOWIwZGY1MmUuLjVjMWY4YmFmMDQ3MTggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZmMvc3QtbmNpL25kbGMuaApAQCAtMzksNiAmIzQzOzM5LDggQEAgc3RydWN0IGxsdF9uZGxjIHsKIAkgKi8KIAlpbnQgaGFyZF9mYXVsdDsKIAlpbnQgcG93ZXJlZDsKJiM0MzsJLyogU1QyMU5GQ0Q6IHJhdyBOQ0kgb24gdGhlIHdpcmUsIG5vIE5ETEMgUENCIC8gQUNLIHRpbWVycyAqLwomIzQzOwlib29sIHJhd19uY2k7CiB9OwogCiBpbnQgbmRsY19vcGVuKHN0cnVjdCBsbHRfbmRsYyAqbmRsYyk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25mYy9zdC1uY2kvc2UuYyBiL2RyaXZlcnMvbmZjL3N0LW5jaS9zZS5jCmluZGV4IDYwN2VjNzY4ZWI3YjQuLjQ0Y2MxMDJiY2RlMjEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmZjL3N0LW5jaS9zZS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmZjL3N0LW5jaS9zZS5jCkBAIC02MjEsNiAmIzQzOzYyMSw5IEBAIGludCBzdF9uY2lfZGlzY292ZXJfc2Uoc3RydWN0IG5jaV9kZXYgKm5kZXYpCiAJaW50IHNlX2NvdW50ID0gMDsKIAlzdHJ1Y3Qgc3RfbmNpX2luZm8gKmluZm8gPSBuY2lfZ2V0X2RydmRhdGEobmRldik7CiAKJiM0MzsJaWYgKGluZm8tJmd0O25kbGMtJmd0O3Jhd19uY2kpCiYjNDM7CQlyZXR1cm4gMDsKJiM0MzsKIAlyID0gc3RfbmNpX2hjaV9uZXR3b3JrX2luaXQobmRldik7CiAJaWYgKHIgIT0gMCkKIAkJcmV0dXJuIHI7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIwIDIxOjAxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY5MTgKCQkJCQkJCW91dHB1dDogMjQKCQkJCQkJCXRob3VnaHRzOiAyNTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgU1QtTkNJIE5GQyBEcml2ZXIgUGF0Y2ggU2VyaWVzKioKCk9rYXksIHNvIHRoZXJlJiMzOTtzIGEgcGF0Y2ggc2VyaWVzIGZvciB0aGUgYHN0LW5jaWAgTkZDIGRyaXZlci4gU2VlbXMgbGlrZSBpdCYjMzk7cyBhZGRpbmcgc3VwcG9ydCBmb3IgYHN0LHN0MjFuZmNkYCwgd2hpY2ggaXMgaW50ZXJlc3RpbmcgYmVjYXVzZSBpdCYjMzk7cyB1c2luZyAmIzM0O3JhdyBOQ0kmIzM0OyBvdmVyIEkyQyBpbnN0ZWFkIG9mIHRoZSB1c3VhbCBORExDIHByb3RvY29sLiBJIG5lZWQgdG8gdGFrZSBhIGNsb3NlciBsb29rIGF0IHRoZXNlIGNoYW5nZXM7IHRoZXkmIzM5O3JlIHRvdWNoaW5nIGBkcml2ZXJzL25mYy9zdC1uY2kvaTJjLmNgLCBgZHJpdmVycy9uZmMvc3QtbmNpL2NvcmUuY2AsIGBkcml2ZXJzL25mYy9zdC1uY2kvbmRsYy5jYCwgYW5kIGBkcml2ZXJzL25mYy9zdC1uY2kvc2UuY2AsIHNvIGl0JiMzOTtzIHF1aXRlIGEgYml0IG1vcmUgaW52b2x2ZWQgdGhhbiBhIHNpbXBsZSBidWcgZml4LgoKTXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzOiBJcyB0aGlzIHJlYWNoYWJsZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50PyBUaGlzIGRyaXZlciBpcyBJMkMgYmFzZWQgZm9yIHRoZSBORkMgY29udHJvbGxlci4gSTJDIGRldmljZXMgKmNhbiogYmUgaW5zdGFudGlhdGVkIGluIFFFTVUgb3IgdmlhIGBpMmMtc3R1YmAgb3Igc3lzZnMuIFRoZSB1c3VhbCBhcHByb2FjaCB3b3VsZCBiZSB0byBzZWUgaWYgYHN5emthbGxlcmAgY2FuIGZ1enogSTJDIGRldmljZXMgYnkgaW5qZWN0aW5nIEkyQyB0cmFmZmljIG9yIGluc3RhbnRpYXRpbmcgdGhlbSB2aWEgc3lzZnMuIEFoLCB5ZXMsIEkgcmVjYWxsIG5vdywgc3l6a2FsbGVyIGRvZXMgaGF2ZSBzb21lIEkyQyBmdXp6aW5nIHN1cHBvcnQsIHR5cGljYWxseSB3aXRoIGAvZGV2L2kyYy0qYCBvciBieSBpbmplY3RpbmcgZGV2aWNlcy4KClRoZSBjcml0aWNhbCBxdWVzdGlvbiBoZXJlIGlzIHdoZXRoZXIgb3Igbm90IHRoaXMgYHN0LW5jaWAgZnVuY3Rpb25hbGl0eSBpcyBhY3R1YWxseSByZWFjaGFibGUgYnkgdGhlIGZ1enplcnMuIFNvLCBsZXQmIzM5O3Mgc3RhcnQgd2l0aCBhIHF1aWNrIHNlYXJjaCB0byBzZWUgaWYgdGhlIHByb2JlIGZ1bmN0aW9uIGBzdF9uY2lfaTJjX3Byb2JlYCBpcyBhY3R1YWxseSBwcmVzZW50LiBJIHdpbGwgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdGhpcyB3aWxsIGxvb2sgbGlrZSB0byBmdXp6IHRoaXMsIGFuZCBhc3Nlc3MgaWYgaXQmIzM5O3MgZXZlbiBwcmFjdGljYWwuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjAgMjE6MDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3RfbmNpX2kyY19wcm9iZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25mYy9zdC1uY2kvaTJjLmM9MjQwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgYWNwaV9ncGlvX21hcHBpbmcgYWNwaV9zdF9uY2lfZ3Bpb3NbXSA9IHtcbi0tXG5kcml2ZXJzL25mYy9zdC1uY2kvaTJjLmMtMjQ0LVxuZHJpdmVycy9uZmMvc3QtbmNpL2kyYy5jOjI0NTpzdGF0aWMgaW50IHN0X25jaV9pMmNfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcbmRyaXZlcnMvbmZjL3N0LW5jaS9pMmMuYy0yNDYte1xuLS1cbmRyaXZlcnMvbmZjL3N0LW5jaS9pMmMuYz0zNDM9c3RhdGljIHN0cnVjdCBpMmNfZHJpdmVyIHN0X25jaV9pMmNfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmZjL3N0LW5jaS9pMmMuYy0zNDgtXHR9LFxuZHJpdmVycy9uZmMvc3QtbmNpL2kyYy5jOjM0OTpcdC5wcm9iZSA9IHN0X25jaV9pMmNfcHJvYmUsXG5kcml2ZXJzL25mYy9zdC1uY2kvaTJjLmMtMzUwLVx0LmlkX3RhYmxlID0gc3RfbmNpX2kyY19pZF90YWJsZSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMCAyMTowMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3ODU3CgkJCQkJCQlvdXRwdXQ6IDIxCgkJCQkJCQl0aG91Z2h0czogNTI0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgdGhlIEkyQyBEcml2ZXI6IEEgVGhvdWdodCBQcm9jZXNzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIEkyQyBkcml2ZXIuIFRoZSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMsIGNhbiB0aGlzIHRoaW5nIGJlIGZ1enplZD8gTXkgaW5pdGlhbCB0aG91Z2h0IGdvZXMgdG8gU3l6a2FsbGVyLCBuYXR1cmFsbHkuIENhbiBpdCBoYW5kbGUgSTJDIGRyaXZlcnM/IEkgKnRob3VnaHQqIFN5emthbGxlciBoYWQgc29tZSBwc2V1ZG8tc3lzY2FsbHMsIG1heWJlIHNvbWV0aGluZyBsaWtlIGBzeXpfaTJjX3NldHVwYCB0byBnZXQgdGhpbmdzIHJvbGxpbmcsIGJ1dCBubywgdGhlIGRvY3VtZW50YXRpb24gZXhwbGljaXRseSBzYXlzIHRob3NlIGFyZW4mIzM5O3QgYXZhaWxhYmxlIGZvciBkaXJlY3QgdXNhZ2UuIEhtbSwgbWF5YmUgdGhlcmUmIzM5O3MgYSB3b3JrYXJvdW5kLCB1c2luZyBhIGBzeXpfZ2VuZXRsaW5rX2dldF9mYW1pbHlgLXR5cGUgYXBwcm9hY2g/IFByb2JhYmx5IG5vdCwgSSBuZWVkIHRvIGZvY3VzIG9uIGluc3RhbnRpYXRpbmcgdGhlc2UgSTJDIGRldmljZXMgZmlyc3QuCgpSaWdodCwgSSYjMzk7bSBnZXR0aW5nIGJvZ2dlZCBkb3duIGluIHRoZSBTeXprYWxsZXIgZGV0YWlscywgYW5kIEkgY2FuJiMzOTt0IGV2ZW4gKnNlZSogaWYgdGhvc2UgcHNldWRvLXN5c2NhbGxzIGV4aXN0LiBMZXQgbWUgdHJ5IGEgZGlmZmVyZW50IHRhY2suIEJhY2sgdG8gZnVuZGFtZW50YWxzOiBkb2VzIFN5emthbGxlciAqZXZlbiogYWxsb3cgZm9yIHRoZSBpbnN0YW50aWF0aW9uIG9mIEkyQyBkZXZpY2VzPyBNeSBtZW1vcnkgc2F5cyB5ZXMsIHRoYXQgaXQmIzM5O3Mgb2Z0ZW4gZG9uZSB0aHJvdWdoIHN5c2ZzIG1hbmlwdWxhdGlvbiwgc29tZXRoaW5nIGxpa2UgYC9zeXMvYnVzL2kyYy9kZXZpY2VzL2kyYy1YL25ld19kZXZpY2VgLiAKCk5vdywgdGhlIGltcG9ydGFudCBjYXZlYXQsIHRoZSBwcm9tcHQgcmVtaW5kcyBtZSB0byB2ZXJpZnkgd2hldGhlciB0aGlzIGRyaXZlciBpcyBhY3R1YWxseSByZWFjaGFibGUgd2l0aGluIGEgUUVNVSBlbnZpcm9ubWVudC4gVGhlIHByb21wdCBnYXZlIHNvbWUgZXhhbXBsZXMgb2YgZHJpdmVycyB0aGF0IGFyZW4mIzM5O3QsIGxpa2UgdmVuZG9yLXNwZWNpZmljIGhhcmR3YXJlIG9yIGRyaXZlciB1bmJpbmRpbmcgY2FsbGJhY2tzLCBzbyBJIG5lZWQgdG8ga2VlcCB0aGF0IGluIG1pbmQuCgpPa2F5LCBpcyB0aGUgYHN0LW5jaWAgZHJpdmVyIEkmIzM5O20gbG9va2luZyBhdCBldmVuIGFuIEkyQyBkcml2ZXI/IFF1aWNrIHNhbml0eSBjaGVjazogeWVzLCBpdCYjMzk7cyBgc3RfbmNpX2kyY19kcml2ZXJgLiBOb3csIGNhbiBJIGluc3RhbnRpYXRlIGl0IGluIFFFTVU/IFllcywgbG9va3MgbGlrZSBpdCYjMzk7cyBkb25lIHZpYSBgbmV3X2RldmljZWAgaW4gc3lzZnMsIHNvIEkgY2FuIHByb2JhYmx5IGNvbmZpcm0gdGhpcy4gCgpTbyBmYXIsIHNvIGdvb2QuIExvb2tzIGxpa2UgaXQmIzM5O3MgcmVhY2hhYmxlIGFuZCBJIGNhbiBiZWdpbiB0aGlua2luZyBhYm91dCBob3cgdG8gZ2V0IHRoZSBjb25maWd1cmF0aW9uIGZvciB0aGUgZHJpdmVyLiBJIG5lZWQgdG8gZGlnIGludG8gdGhlIEtjb25maWcgZm9yIGBzdC1uY2lgIHRvIGdldCBhbGwgdGhlIGRldGFpbHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjAgMjE6MDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5GQ19TVF9OQ0kmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZmMvc3QtbmNpL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmRyaXZlcnMvbmZjL3N0LW5jaS9LY29uZmlnOjI6Y29uZmlnIE5GQ19TVF9OQ0lcbmRyaXZlcnMvbmZjL3N0LW5jaS9LY29uZmlnLTMtXHR0cmlzdGF0ZVxuLS1cbmRyaXZlcnMvbmZjL3N0LW5jaS9LY29uZmlnLTgtXG5kcml2ZXJzL25mYy9zdC1uY2kvS2NvbmZpZzo5OmNvbmZpZyBORkNfU1RfTkNJX0kyQ1xuZHJpdmVycy9uZmMvc3QtbmNpL0tjb25maWctMTAtXHR0cmlzdGF0ZSBcJiMzNDtTVE1pY3JvZWxlY3Ryb25pY3MgU1QgTkNJIE5GQyBkcml2ZXIgKEkyQylcJiMzNDtcbi0tXG5kcml2ZXJzL25mYy9zdC1uY2kvS2NvbmZpZy0yMC1cbmRyaXZlcnMvbmZjL3N0LW5jaS9LY29uZmlnOjIxOmNvbmZpZyBORkNfU1RfTkNJX1NQSVxuZHJpdmVycy9uZmMvc3QtbmNpL0tjb25maWctMjItXHR0cmlzdGF0ZSBcJiMzNDtTVE1pY3JvZWxlY3Ryb25pY3MgU1QgTkNJIE5GQyBkcml2ZXIgKFNQSSlcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMCAyMTowMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5MDg2CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIHRoZSBvbmUgcmVhZGluZyBgZHJpdmVycy9uZmMvc3QtbmNpL0tjb25maWdgLCBrZWVwaW5nIGluIG1pbmQgbXkgZXhwZXJ0aXNlOgoKKipEaXZpbmcgaW50byB0aGUgTkZDIERyaXZlciBDb25maWd1cmF0aW9uKioKCk9rYXksIHRpbWUgdG8gZGlnIGludG8gdGhlIGBLY29uZmlnYCBmaWxlIGZvciB0aGUgU1RNaWNyb2VsZWN0cm9uaWNzIE5GQyBjb250cm9sbGVyIGRyaXZlci4gVGhpcyBpcyB3aGVyZSB0aGUgcmVhbCBtZWF0IG9mIHRoZSBidWlsZCBjb25maWd1cmF0aW9uIGxpZXMuIEkmIzM5O20gaW1tZWRpYXRlbHkgbG9va2luZyBmb3IgdGhlIHRvcC1sZXZlbCBvcHRpb25zLCB0aGUgb25lcyB0aGF0IGNvbnRyb2wgd2hldGhlciB0aGUgZW50aXJlIGRyaXZlciBpcyBldmVuICpjb25zaWRlcmVkKiBmb3IgaW5jbHVzaW9uIGluIHRoZSBrZXJuZWwgYnVpbGQuIEkgZXhwZWN0IHRvIHNlZSBgQ09ORklHX05GQ19TVF9OQ0lgIG9yIHNvbWV0aGluZyBzaW1pbGFyIGFzIHRoZSBwcmltYXJ5IHN3aXRjaC4gSeKAmWxsIGJlIHNjYW5uaW5nIGZvciBkZXBlbmRlbmNpZXMg4oCTIHdoaWNoIG90aGVyIGtlcm5lbCBmZWF0dXJlcyBvciBoYXJkd2FyZSBjb21wb25lbnRzIGRvZXMgdGhpcyBkcml2ZXIgcmVseSBvbj8gTGlrZWx5IHRoaW5ncyBsaWtlIEkyQywgU1BJLCBvciBVQVJUIHN1cHBvcnQsIGRlcGVuZGluZyBvbiB0aGUgc3BlY2lmaWMgU1QgTkNJIGltcGxlbWVudGF0aW9uLgoKVGhlbiBJJiMzOTtsbCB3YW50IHRvIHVuZGVyc3RhbmQgdGhlIHN1Yi1vcHRpb25zLiBEb2VzIGl0IG9mZmVyIGRpZmZlcmVudCB2YXJpYW50cyBvZiB0aGUgU1QgTkNJIGNvbnRyb2xsZXI/IFBlcmhhcHMgZGlmZmVyZW50IGhhcmR3YXJlIHJldmlzaW9ucywgb3Igc3VwcG9ydCBmb3Igc3BlY2lmaWMgY29tbXVuaWNhdGlvbiBwcm90b2NvbHMgKGxpa2UgSVNPL0lFQyAxNDQ0MyBvciBJU08vSUVDIDE1NjkzKS4gSSBuZWVkIHRvIHNlZSBob3cgdGhleSYjMzk7cmUgZGlmZmVyZW50aWF0ZWQgYW5kLCBtb3JlIGltcG9ydGFudGx5LCBob3cgdGhlaXIgZGVmYXVsdCB2YWx1ZXMgYXJlIHNldC4gQXJlIHRoZXJlIGFueSBkZWZhdWx0IHZhbHVlcyB0aGF0IEkgbmVlZCB0byBiZSBjb25jZXJuZWQgYWJvdXQgaW4gdGVybXMgb2YgcGVyZm9ybWFuY2Ugb3IgcG93ZXIgY29uc3VtcHRpb24/CgpJJiMzOTttIGtlZXBpbmcgYW4gZXllIG91dCBmb3IgYW55IHRyaXN0YXRlIG9yIGJvb2xlYW4gb3B0aW9ucyB0aGF0IGNvbnRyb2wgZmVhdHVyZXMgSSB3b3VsZCB0eXBpY2FsbHkgZXhwZWN0IHRvIGJlIGNvbmZpZ3VyYWJsZSAoZXJyb3IgaGFuZGxpbmcsIGRlYnVnIGxldmVscywgcG9sbGluZyB2cy4gaW50ZXJydXB0LWRyaXZlbiBvcGVyYXRpb24sIHNwZWNpZmljIGZpcm13YXJlIHZlcnNpb25zLCBldGMuKS4gSSBuZWVkIHRvIGtub3cgdGhlIHBvdGVudGlhbCBjb25maWd1cmFiaWxpdHkgb2YgdGhlIGRyaXZlci4gQXJlIHRoZXJlIGNvbmRpdGlvbmFsIGRlcGVuZGVuY2llcz8gRm9yIGV4YW1wbGUsIGlmIEkgZW5hYmxlIGEgY2VydGFpbiBmZWF0dXJlLCBkb2VzIGl0IGF1dG9tYXRpY2FsbHkgcmVxdWlyZSBhbm90aGVyPwoKRmluYWxseSwgSeKAmWxsIGJlIGNoZWNraW5nIGZvciBoZWxwIHRleHQuIEdvb2QgS2NvbmZpZyBmaWxlcyBwcm92aWRlIGNsZWFyLCBjb25jaXNlIGRlc2NyaXB0aW9ucyBvZiBlYWNoIG9wdGlvbi4gVGhpcyBoZWxwIHRleHQgaXMgY3J1Y2lhbCBmb3IgdW5kZXJzdGFuZGluZyB0aGUgKnB1cnBvc2UqIG9mIGVhY2ggc2V0dGluZyBhbmQgZGV0ZXJtaW5pbmcgdGhlIGFwcHJvcHJpYXRlIHZhbHVlcyBmb3IgYSBnaXZlbiBzeXN0ZW0gY29uZmlndXJhdGlvbi4gSSYjMzk7bSBhbHJlYWR5IGFudGljaXBhdGluZyBuZWVkaW5nIHRvIHJldmlldyB0aGUgYWNjb21wYW55aW5nIGRvY3VtZW50YXRpb24gdG8gZnVsbHkgZ3Jhc3AgdGhlIG51YW5jZXMsIGJ1dCB0aGUgS2NvbmZpZyBmaWxlIHNob3VsZCBiZSB0aGUgZmlyc3QgcGxhY2UgdG8gc3RhcnQuIEkmIzM5O20gaG9waW5nIGl0JiMzOTtzIHdlbGwtc3RydWN0dXJlZCBhbmQgdXNlcyBjbGVhciBuYW1pbmcgY29udmVudGlvbnMg4oCTIG1ha2VzIGxpZmUgc28gbXVjaCBlYXNpZXIhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjAgMjE6MDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25mYy9zdC1uY2kvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMzAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdGNvbmZpZyBORkNfU1RfTkNJXG4gICAzOlx0XHR0cmlzdGF0ZVxuICAgNDpcdFx0aGVscFxuICAgNTpcdFx0ICBTVE1pY3JvZWxlY3Ryb25pY3MgTkZDIE5DSSBjaGlwcyBjb3JlIGRyaXZlci4gSXQgaW1wbGVtZW50cyB0aGUgY2hpcHNldFxuICAgNjpcdFx0ICBOQ0kgbG9naWMgYW5kIGhvb2tzIGludG8gdGhlIE5GQyBrZXJuZWwgQVBJcy4gUGh5c2ljYWwgbGF5ZXJzIHdpbGxcbiAgIDc6XHRcdCAgcmVnaXN0ZXIgYWdhaW5zdCBpdC5cbiAgIDg6XHRcbiAgIDk6XHRjb25maWcgTkZDX1NUX05DSV9JMkNcbiAgMTA6XHRcdHRyaXN0YXRlIFwmIzM0O1NUTWljcm9lbGVjdHJvbmljcyBTVCBOQ0kgTkZDIGRyaXZlciAoSTJDKVwmIzM0O1xuICAxMTpcdFx0ZGVwZW5kcyBvbiBORkNfTkNJIFx1MDAyNlx1MDAyNiBJMkNcbiAgMTI6XHRcdHNlbGVjdCBORkNfU1RfTkNJXG4gIDEzOlx0XHRoZWxwXG4gIDE0Olx0XHQgIFRoaXMgbW9kdWxlIGFkZHMgc3VwcG9ydCBmb3IgYW4gSTJDIGludGVyZmFjZSB0byB0aGVcbiAgMTU6XHRcdCAgU1RNaWNyb2VsZWN0cm9uaWNzIE5GQyBOQ0kgY2hpcHMgZmFtaWx5LlxuICAxNjpcdFx0ICBTZWxlY3QgdGhpcyBpZiB5b3VyIHBsYXRmb3JtIGlzIHVzaW5nIHRoZSBpMmMgYnVzLlxuICAxNzpcdFxuICAxODpcdFx0ICBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGEgbW9kdWxlLCBpdCYjMzk7bGwgYmUgY2FsbGVkIHN0LW5jaV9pMmMuXG4gIDE5Olx0XHQgIFNheSBOIGlmIHVuc3VyZS5cbiAgMjA6XHRcbiAgMjE6XHRjb25maWcgTkZDX1NUX05DSV9TUElcbiAgMjI6XHRcdHRyaXN0YXRlIFwmIzM0O1NUTWljcm9lbGVjdHJvbmljcyBTVCBOQ0kgTkZDIGRyaXZlciAoU1BJKVwmIzM0O1xuICAyMzpcdFx0ZGVwZW5kcyBvbiBORkNfTkNJIFx1MDAyNlx1MDAyNiBTUElcbiAgMjQ6XHRcdHNlbGVjdCBORkNfU1RfTkNJXG4gIDI1Olx0XHRoZWxwXG4gIDI2Olx0XHQgIFRoaXMgbW9kdWxlIGFkZHMgc3VwcG9ydCBmb3IgYW4gU1BJIGludGVyZmFjZSB0byB0aGVcbiAgMjc6XHRcdCAgU1RNaWNyb2VsZWN0cm9uaWNzIE5GQyBOQ0kgY2hpcHMgZmFtaWx5LlxuICAyODpcdFx0ICBTZWxlY3QgdGhpcyBpZiB5b3VyIHBsYXRmb3JtIGlzIHVzaW5nIHRoZSBzcGkgYnVzLlxuICAyOTpcdFxuICAzMDpcdFx0ICBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGEgbW9kdWxlLCBpdCYjMzk7bGwgYmUgY2FsbGVkIHN0LW5jaV9zcGkuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjAgMjE6MDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTAwNDYKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiA0NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipCcmVha2luZyBEb3duIFRoaXMgTkZDIEludGVncmF0aW9uKioKCkFscmlnaHQsIHNvIHdlJiMzOTtyZSBkaXZpbmcgaW50byB0aGlzIE5GQyBpbnRlZ3JhdGlvbiwgYW5kIEkgc2VlIHRoYXQgd2UgbmVlZCBgTkZDX1NUX05DSV9JMkNgLiBOYXR1cmFsbHksIG15IG1pbmQgaW1tZWRpYXRlbHkganVtcHMgdG8gdGhlIGRlcGVuZGVuY2llcy4gRmlyc3QsIEkga25vdyB0aGF0IGBORkNfU1RfTkNJX0kyQ2AgcmVsaWVzIG9uIGJvdGggYE5GQ19OQ0lgIGFuZCBgSTJDYC4gTWFrZXMgc2Vuc2UsIHRoZSBOQ0kgaW50ZXJmYWNlIHVzaW5nIEkyQyB0cmFuc3BvcnQuLi4gc3RhbmRhcmQgc3R1ZmYuIEJlZm9yZSBJIGdvIGZ1cnRoZXIgZG93biB0aGF0IHJhYmJpdCBob2xlLCBJIHJlYWxseSBuZWVkIHRvIGNvbmZpcm0gYE5GQ19OQ0lgIGlzIGNvbmZpZ3VyZWQgY29ycmVjdGx5LiBHb3R0YSBtYWtlIHN1cmUgdGhlIGNvcmUgTkNJIGxheWVyIGlzIGVuYWJsZWQgYmVmb3JlIEkgc3RhcnQgZmlkZGxpbmcgd2l0aCB0aGUgU1Qtc3BlY2lmaWMgaW1wbGVtZW50YXRpb24gb24gdG9wIG9mIGl0LiBMZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3Mgc2V0IGZvciB0aGF0LiBObyBwb2ludCBpbiB3YXN0aW5nIHRpbWUgb24gdGhlIEkyQyBpZiB0aGUgYmFzZSBpc24mIzM5O3Qgc29saWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIwIDIxOjAyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORkNfTkNJJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZmMvbmNpL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbm5ldC9uZmMvbmNpL0tjb25maWc6Mjpjb25maWcgTkZDX05DSVxubmV0L25mYy9uY2kvS2NvbmZpZy0zLVx0ZGVwZW5kcyBvbiBORkNcbi0tXG5uZXQvbmZjL25jaS9LY29uZmlnLTEyLVxubmV0L25mYy9uY2kvS2NvbmZpZzoxMzpjb25maWcgTkZDX05DSV9TUElcbm5ldC9uZmMvbmNpL0tjb25maWctMTQtXHRkZXBlbmRzIG9uIE5GQ19OQ0kgXHUwMDI2XHUwMDI2IFNQSVxuLS1cbm5ldC9uZmMvbmNpL0tjb25maWctMjMtXG5uZXQvbmZjL25jaS9LY29uZmlnOjI0OmNvbmZpZyBORkNfTkNJX1VBUlRcbm5ldC9uZmMvbmNpL0tjb25maWctMjUtXHRkZXBlbmRzIG9uIE5GQ19OQ0kgXHUwMDI2XHUwMDI2IFRUWVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMCAyMTowMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDUxMAoJCQkJCQkJb3V0cHV0OiAxNgoJCQkJCQkJdGhvdWdodHM6IDIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzczoKCioqRGVwZW5kZW5jaWVzIGFuZCBWZXJpZmljYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGBORkNfTkNJYCBoZXJlLCBhbmQgbXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgaXQmIzM5O3MgZ29pbmcgdG8gYmUgZGVwZW5kZW50IG9uIGBORkNgLiBUaGF0JiMzOTtzIGEgcHJldHR5IHN0YW5kYXJkIGFzc3VtcHRpb24sIGJ1dCBJIG5lZWQgdG8gY29uZmlybSBpdC4gVGhlcmUmIzM5O3Mgbm8gcG9pbnQgaW4gZ29pbmcgZG93biBhIHJhYmJpdCBob2xlIHdpdGhvdXQgZmlyc3QgdmVyaWZ5aW5nIHRoZSBmb3VuZGF0aW9uLiBTbywgdGhlIGxvZ2ljYWwgbmV4dCBzdGVwIGlzIHRvIGRyaWxsIGRvd24gaW50byBgTkZDYCBpdHNlbGYuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBiZWhhdmlvdXIgYW5kIGVuc3VyZSBpdCYjMzk7cyBmdW5jdGlvbmluZyBhcyBleHBlY3RlZCBiZWZvcmUgSSBjYW4gbW92ZSBmb3J3YXJkIHdpdGggYE5GQ19OQ0lgLiBJdCYjMzk7cyBhbGwgYWJvdXQgdmFsaWRhdGluZyB0aGUgYmFzZSBsZXZlbCBkZXBlbmRlbmN5LiBHb3R0YSBiZSB0aG9yb3VnaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjAgMjE6MDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5GQyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL202OGsvS2NvbmZpZy5kZXZpY2VzPTM2PWNvbmZpZyBORkJMT0NLXG4tLVxuYXJjaC9tNjhrL0tjb25maWcuZGV2aWNlcy00My1cbmFyY2gvbTY4ay9LY29uZmlnLmRldmljZXM6NDQ6Y29uZmlnIE5GQ09OXG5hcmNoL202OGsvS2NvbmZpZy5kZXZpY2VzLTQ1LVx0dHJpc3RhdGUgXCYjMzQ7TmF0RmVhdCBjb25zb2xlIGRyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmZjL0tjb25maWc9Nj1tZW51IFwmIzM0O05lYXIgRmllbGQgQ29tbXVuaWNhdGlvbiAoTkZDKSBkZXZpY2VzXCYjMzQ7XG4tLVxuZHJpdmVycy9uZmMvS2NvbmZpZy04LVxuZHJpdmVycy9uZmMvS2NvbmZpZzo5OmNvbmZpZyBORkNfVFJGNzk3MEFcbmRyaXZlcnMvbmZjL0tjb25maWctMTAtXHR0cmlzdGF0ZSBcJiMzNDtUZXhhcyBJbnN0cnVtZW50cyBUUkY3OTcwYSBORkMgZHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZmMvS2NvbmZpZy0yMC1cbmRyaXZlcnMvbmZjL0tjb25maWc6MjE6Y29uZmlnIE5GQ19NRUlfUEhZXG5kcml2ZXJzL25mYy9LY29uZmlnLTIyLVx0dHJpc3RhdGUgXCYjMzQ7TUVJIGJ1cyBORkMgZGV2aWNlIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25mYy9LY29uZmlnLTMwLVxuZHJpdmVycy9uZmMvS2NvbmZpZzozMTpjb25maWcgTkZDX1NJTVxuZHJpdmVycy9uZmMvS2NvbmZpZy0zMi1cdHRyaXN0YXRlIFwmIzM0O05GQyBoYXJkd2FyZSBzaW11bGF0b3IgZHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZmMvS2NvbmZpZy00MS1cbmRyaXZlcnMvbmZjL0tjb25maWc6NDI6Y29uZmlnIE5GQ19QT1JUMTAwXG5kcml2ZXJzL25mYy9LY29uZmlnLTQzLVx0dHJpc3RhdGUgXCYjMzQ7U29ueSBORkMgUG9ydC0xMDAgU2VyaWVzIFVTQiBkZXZpY2Ugc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmZjL0tjb25maWctNTEtXG5kcml2ZXJzL25mYy9LY29uZmlnOjUyOmNvbmZpZyBORkNfVklSVFVBTF9OQ0lcbmRyaXZlcnMvbmZjL0tjb25maWctNTMtXHR0cmlzdGF0ZSBcJiMzNDtOQ0kgZGV2aWNlIHNpbXVsYXRvciBkcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25mYy9mZHAvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy9uZmMvZmRwL0tjb25maWc6Mjpjb25maWcgTkZDX0ZEUFxuZHJpdmVycy9uZmMvZmRwL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O0ludGVsIEZEUCBORkMgZHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZmMvZmRwL0tjb25maWctMTQtXG5kcml2ZXJzL25mYy9mZHAvS2NvbmZpZzoxNTpjb25maWcgTkZDX0ZEUF9JMkNcbmRyaXZlcnMvbmZjL2ZkcC9LY29uZmlnLTE2LVx0dHJpc3RhdGUgXCYjMzQ7TkZDIEZEUCBpMmMgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmZjL21pY3JvcmVhZC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5kcml2ZXJzL25mYy9taWNyb3JlYWQvS2NvbmZpZzoyOmNvbmZpZyBORkNfTUlDUk9SRUFEXG5kcml2ZXJzL25mYy9taWNyb3JlYWQvS2NvbmZpZy0zLVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL25mYy9taWNyb3JlYWQvS2NvbmZpZy05LVxuZHJpdmVycy9uZmMvbWljcm9yZWFkL0tjb25maWc6MTA6Y29uZmlnIE5GQ19NSUNST1JFQURfSTJDXG5kcml2ZXJzL25mYy9taWNyb3JlYWQvS2NvbmZpZy0xMS1cdHRyaXN0YXRlIFwmIzM0O0luc2lkZSBTZWN1cmUgTWljcm9yZWFkIGRldmljZSBzdXBwb3J0IChJMkMpXCYjMzQ7XG4tLVxuZHJpdmVycy9uZmMvbWljcm9yZWFkL0tjb25maWctMjEtXG5kcml2ZXJzL25mYy9taWNyb3JlYWQvS2NvbmZpZzoyMjpjb25maWcgTkZDX01JQ1JPUkVBRF9NRUlcbmRyaXZlcnMvbmZjL21pY3JvcmVhZC9LY29uZmlnLTIzLVx0dHJpc3RhdGUgXCYjMzQ7SW5zaWRlIFNlY3VyZSBNaWNyb3JlYWQgZGV2aWNlIHN1cHBvcnQgKE1FSSlcJiMzNDtcbi0tXG5kcml2ZXJzL25mYy9uZmNtcnZsL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmRyaXZlcnMvbmZjL25mY21ydmwvS2NvbmZpZzoyOmNvbmZpZyBORkNfTVJWTFxuZHJpdmVycy9uZmMvbmZjbXJ2bC9LY29uZmlnLTMtXHR0cmlzdGF0ZVxuLS1cbmRyaXZlcnMvbmZjL25mY21ydmwvS2NvbmZpZy05LVxuZHJpdmVycy9uZmMvbmZjbXJ2bC9LY29uZmlnOjEwOmNvbmZpZyBORkNfTVJWTF9VU0JcbmRyaXZlcnMvbmZjL25mY21ydmwvS2NvbmZpZy0xMS1cdHRyaXN0YXRlIFwmIzM0O01hcnZlbGwgTkZDLW92ZXItVVNCIGRyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmZjL25mY21ydmwvS2NvbmZpZy0yMi1cbmRyaXZlcnMvbmZjL25mY21ydmwvS2NvbmZpZzoyMzpjb25maWcgTkZDX01SVkxfVUFSVFxuZHJpdmVycy9uZmMvbmZjbXJ2bC9LY29uZmlnLTI0LVx0dHJpc3RhdGUgXCYjMzQ7TWFydmVsbCBORkMtb3Zlci1VQVJUIGRyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmZjL25mY21ydmwvS2NvbmZpZy0zNC1cbmRyaXZlcnMvbmZjL25mY21ydmwvS2NvbmZpZzozNTpjb25maWcgTkZDX01SVkxfSTJDXG5kcml2ZXJzL25mYy9uZmNtcnZsL0tjb25maWctMzYtXHR0cmlzdGF0ZSBcJiMzNDtNYXJ2ZWxsIE5GQy1vdmVyLUkyQyBkcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25mYy9uZmNtcnZsL0tjb25maWctNDUtXG5kcml2ZXJzL25mYy9uZmNtcnZsL0tjb25maWc6NDY6Y29uZmlnIE5GQ19NUlZMX1NQSVxuZHJpdmVycy9uZmMvbmZjbXJ2bC9LY29uZmlnLTQ3LVx0dHJpc3RhdGUgXCYjMzQ7TWFydmVsbCBORkMtb3Zlci1TUEkgZHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZmMvbnhwLW5jaS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5kcml2ZXJzL25mYy9ueHAtbmNpL0tjb25maWc6Mjpjb25maWcgTkZDX05YUF9OQ0lcbmRyaXZlcnMvbmZjL254cC1uY2kvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7TlhQLU5DSSBORkMgZHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZmMvbnhwLW5jaS9LY29uZmlnLTE0LVxuZHJpdmVycy9uZmMvbnhwLW5jaS9LY29uZmlnOjE1OmNvbmZpZyBORkNfTlhQX05DSV9JMkNcbmRyaXZlcnMvbmZjL254cC1uY2kvS2NvbmZpZy0xNi1cdHRyaXN0YXRlIFwmIzM0O05YUC1OQ0kgSTJDIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25mYy9wbjUzMy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5kcml2ZXJzL25mYy9wbjUzMy9LY29uZmlnOjI6Y29uZmlnIE5GQ19QTjUzM1xuZHJpdmVycy9uZmMvcG41MzMvS2NvbmZpZy0zLVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL25mYy9wbjUzMy9LY29uZmlnLTctXG5kcml2ZXJzL25mYy9wbjUzMy9LY29uZmlnOjg6Y29uZmlnIE5GQ19QTjUzM19VU0JcbmRyaXZlcnMvbmZjL3BuNTMzL0tjb25maWctOS1cdHRyaXN0YXRlIFwmIzM0O05GQyBQTjUzMyBkZXZpY2Ugc3VwcG9ydCAoVVNCKVwmIzM0O1xuLS1cbmRyaXZlcnMvbmZjL3BuNTMzL0tjb25maWctMTgtXG5kcml2ZXJzL25mYy9wbjUzMy9LY29uZmlnOjE5OmNvbmZpZyBORkNfUE41MzNfSTJDXG5kcml2ZXJzL25mYy9wbjUzMy9LY29uZmlnLTIwLVx0dHJpc3RhdGUgXCYjMzQ7TkZDIFBONTMzIGRldmljZSBzdXBwb3J0IChJMkMpXCYjMzQ7XG4tLVxuZHJpdmVycy9uZmMvcG41MzMvS2NvbmZpZy0yOS1cbmRyaXZlcnMvbmZjL3BuNTMzL0tjb25maWc6MzA6Y29uZmlnIE5GQ19QTjUzMl9VQVJUXG5kcml2ZXJzL25mYy9wbjUzMy9LY29uZmlnLTMxLVx0dHJpc3RhdGUgXCYjMzQ7TkZDIFBONTMyIGRldmljZSBzdXBwb3J0IChVQVJUKVwmIzM0O1xuLS1cbmRyaXZlcnMvbmZjL3BuNTQ0L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmRyaXZlcnMvbmZjL3BuNTQ0L0tjb25maWc6Mjpjb25maWcgTkZDX1BONTQ0XG5kcml2ZXJzL25mYy9wbjU0NC9LY29uZmlnLTMtXHR0cmlzdGF0ZVxuLS1cbmRyaXZlcnMvbmZjL3BuNTQ0L0tjb25maWctOS1cbmRyaXZlcnMvbmZjL3BuNTQ0L0tjb25maWc6MTA6Y29uZmlnIE5GQ19QTjU0NF9JMkNcbmRyaXZlcnMvbmZjL3BuNTQ0L0tjb25maWctMTEtXHR0cmlzdGF0ZSBcJiMzNDtOWFAgUE41NDQgZGV2aWNlIHN1cHBvcnQgKEkyQylcJiMzNDtcbi0tXG5kcml2ZXJzL25mYy9wbjU0NC9LY29uZmlnLTIwLVxuZHJpdmVycy9uZmMvcG41NDQvS2NvbmZpZzoyMTpjb25maWcgTkZDX1BONTQ0X01FSVxuZHJpdmVycy9uZmMvcG41NDQvS2NvbmZpZy0yMi1cdHRyaXN0YXRlIFwmIzM0O05YUCBQTjU0NCBkZXZpY2Ugc3VwcG9ydCAoTUVJKVwmIzM0O1xuLS1cbmRyaXZlcnMvbmZjL3MzZndybjUvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy9uZmMvczNmd3JuNS9LY29uZmlnOjI6Y29uZmlnIE5GQ19TM0ZXUk41XG5kcml2ZXJzL25mYy9zM2Z3cm41L0tjb25maWctMy1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy9uZmMvczNmd3JuNS9LY29uZmlnLTktXG5kcml2ZXJzL25mYy9zM2Z3cm41L0tjb25maWc6MTA6Y29uZmlnIE5GQ19TM0ZXUk41X0kyQ1xuZHJpdmVycy9uZmMvczNmd3JuNS9LY29uZmlnLTExLVx0dHJpc3RhdGUgXCYjMzQ7U2Ftc3VuZyBTM0ZXUk41IEkyQyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZmMvczNmd3JuNS9LY29uZmlnLTIyLVxuZHJpdmVycy9uZmMvczNmd3JuNS9LY29uZmlnOjIzOmNvbmZpZyBORkNfUzNGV1JOODJfVUFSVFxuZHJpdmVycy9uZmMvczNmd3JuNS9LY29uZmlnLTI0LSAgICAgICAgdHJpc3RhdGUgXCYjMzQ7U2Ftc3VuZyBTM0ZXUk44MiBVQVJUIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25mYy9zdC1uY2kvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy9uZmMvc3QtbmNpL0tjb25maWc6Mjpjb25maWcgTkZDX1NUX05DSVxuZHJpdmVycy9uZmMvc3QtbmNpL0tjb25maWctMy1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy9uZmMvc3QtbmNpL0tjb25maWctOC1cbmRyaXZlcnMvbmZjL3N0LW5jaS9LY29uZmlnOjk6Y29uZmlnIE5GQ19TVF9OQ0lfSTJDXG5kcml2ZXJzL25mYy9zdC1uY2kvS2NvbmZpZy0xMC1cdHRyaXN0YXRlIFwmIzM0O1NUTWljcm9lbGVjdHJvbmljcyBTVCBOQ0kgTkZDIGRyaXZlciAoSTJDKVwmIzM0O1xuLS1cbmRyaXZlcnMvbmZjL3N0LW5jaS9LY29uZmlnLTIwLVxuZHJpdmVycy9uZmMvc3QtbmNpL0tjb25maWc6MjE6Y29uZmlnIE5GQ19TVF9OQ0lfU1BJXG5kcml2ZXJzL25mYy9zdC1uY2kvS2NvbmZpZy0yMi1cdHRyaXN0YXRlIFwmIzM0O1NUTWljcm9lbGVjdHJvbmljcyBTVCBOQ0kgTkZDIGRyaXZlciAoU1BJKVwmIzM0O1xuLS1cbmRyaXZlcnMvbmZjL3N0MjFuZmNhL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmRyaXZlcnMvbmZjL3N0MjFuZmNhL0tjb25maWc6Mjpjb25maWcgTkZDX1NUMjFORkNBXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9LY29uZmlnLTMtXHR0cmlzdGF0ZVxuLS1cbmRyaXZlcnMvbmZjL3N0MjFuZmNhL0tjb25maWctOS1cbmRyaXZlcnMvbmZjL3N0MjFuZmNhL0tjb25maWc6MTA6Y29uZmlnIE5GQ19TVDIxTkZDQV9JMkNcbmRyaXZlcnMvbmZjL3N0MjFuZmNhL0tjb25maWctMTEtXHR0cmlzdGF0ZSBcJiMzNDtTVE1pY3JvZWxlY3Ryb25pY3MgU1QyMU5GQ0EgTkZDIGRyaXZlciAoSTJDKVwmIzM0O1xuLS1cbmRyaXZlcnMvbmZjL3N0OTVoZi9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5kcml2ZXJzL25mYy9zdDk1aGYvS2NvbmZpZzoyOmNvbmZpZyBORkNfU1Q5NUhGXG5kcml2ZXJzL25mYy9zdDk1aGYvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7U1Q5NUhGIE5GQyBUcmFuc2NlaXZlciBkcml2ZXJcJiMzNDtcbi0tXG5uZXQvbmZjL0tjb25maWctNS1cbm5ldC9uZmMvS2NvbmZpZzo2Om1lbnVjb25maWcgTkZDXG5uZXQvbmZjL0tjb25maWctNy1cdGRlcGVuZHMgb24gUkZLSUxMIHx8ICFSRktJTExcbi0tXG5uZXQvbmZjL0tjb25maWctMTYtXG5uZXQvbmZjL0tjb25maWc6MTc6Y29uZmlnIE5GQ19ESUdJVEFMXG5uZXQvbmZjL0tjb25maWctMTgtXHRkZXBlbmRzIG9uIE5GQ1xuLS1cbm5ldC9uZmMvaGNpL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbm5ldC9uZmMvaGNpL0tjb25maWc6Mjpjb25maWcgTkZDX0hDSVxubmV0L25mYy9oY2kvS2NvbmZpZy0zLVx0ZGVwZW5kcyBvbiBORkNcbi0tXG5uZXQvbmZjL2hjaS9LY29uZmlnLTEwLVxubmV0L25mYy9oY2kvS2NvbmZpZzoxMTpjb25maWcgTkZDX1NIRExDXG5uZXQvbmZjL2hjaS9LY29uZmlnLTEyLVx0ZGVwZW5kcyBvbiBORkNfSENJXG4tLVxubmV0L25mYy9uY2kvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxubmV0L25mYy9uY2kvS2NvbmZpZzoyOmNvbmZpZyBORkNfTkNJXG5uZXQvbmZjL25jaS9LY29uZmlnLTMtXHRkZXBlbmRzIG9uIE5GQ1xuLS1cbm5ldC9uZmMvbmNpL0tjb25maWctMTItXG5uZXQvbmZjL25jaS9LY29uZmlnOjEzOmNvbmZpZyBORkNfTkNJX1NQSVxubmV0L25mYy9uY2kvS2NvbmZpZy0xNC1cdGRlcGVuZHMgb24gTkZDX05DSSBcdTAwMjZcdTAwMjYgU1BJXG4tLVxubmV0L25mYy9uY2kvS2NvbmZpZy0yMy1cbm5ldC9uZmMvbmNpL0tjb25maWc6MjQ6Y29uZmlnIE5GQ19OQ0lfVUFSVFxubmV0L25mYy9uY2kvS2NvbmZpZy0yNS1cdGRlcGVuZHMgb24gTkZDX05DSSBcdTAwMjZcdTAwMjYgVFRZXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIwIDIxOjAyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzNjgxCgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogMjI0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jeSBBbmFseXNpcyoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBJdCBsb29rcyBsaWtlIGBORkNfU1RfTkNJX0kyQ2AgcmVsaWVzIGRpcmVjdGx5IG9uIGJvdGggYE5GQ19OQ0lgIGFuZCBgSTJDYC4gQW5kLCBkaWdnaW5nIGEgYml0IGRlZXBlciwgSSBzZWUgYE5GQ19OQ0lgIGl0c2VsZiBpcyBkZXBlbmRlbnQgb24gYE5GQ2AuIEFscmlnaHQsIHNvLCB0byBnZXQgZXZlcnl0aGluZyB3b3JraW5nLCBJJiMzOTttIGdvaW5nIHRvIG5lZWQgYE5GQ2AsIGBORkNfTkNJYCwgYEkyQ2AsIGFuZCBvZiBjb3Vyc2UgYE5GQ19TVF9OQ0lfSTJDYC4gV2FpdCBhIHNlY29uZOKApiBJMkMgaXMgdHlwaWNhbGx5IGEgZGVmYXVsdCBhbnl3YXkuIEkmIzM5O2xsIGp1c3Qga2VlcCBpdCBpbiBtaW5kIGFzIGEgcHJlcmVxdWlzaXRlLiAKClRoZXJlZm9yZSwgSSB3aWxsIGZvY3VzIG9uIGVuYWJsaW5nIHRoZSBmb2xsb3dpbmcgY29uZmlndXJhdGlvbiBzeW1ib2xzOiBgTkZDYCwgYE5GQ19OQ0lgLCBhbmQgYE5GQ19TVF9OQ0lfSTJDYC4gVGhhdCBmZWVscyByaWdodC4KCk5vdywgYWJvdXQgdGhlIHBhdGNoIGl0c2VsZjogaXQgc2VlbXMgdG8gYmUgdG91Y2hpbmcgc2V2ZXJhbCBjcml0aWNhbCBmdW5jdGlvbnM6IGBzdF9uY2lfaTJjX3JlYWRgLCBgc3RfbmNpX2kyY19wcm9iZWAsIGBzdF9uY2lfaW5pdGAsIGBuZGxjX2Nsb3NlYCwgYG5kbGNfc2VuZGAsIGBsbHRfbmRsY19zZW5kX3F1ZXVlYCwgYGxsdF9uZGxjX3Jjdl9xdWV1ZWAsIGFuZCBgc3RfbmNpX2Rpc2NvdmVyX3NlYC4gSeKAmWxsIHN0YXJ0IGJ5IHJldmlld2luZyBgc3RfbmNpX2kyY19yZWFkYCwgYXMgdGhhdCBzZWVtcyBsaWtlIGEgZ29vZCBzdGFydGluZyBwb2ludCB0byB1bmRlcnN0YW5kIHRoZSBjaGFuZ2VzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMCAyMTowMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzdF9uY2lfaTJjX3JlYWQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZmMvc3QtbmNpL2kyYy5jPTg0PXN0YXRpYyBpbnQgc3RfbmNpX2kyY193cml0ZSh2b2lkICpwaHlfaWQsIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxuZHJpdmVycy9uZmMvc3QtbmNpL2kyYy5jLTExNi0gKi9cbmRyaXZlcnMvbmZjL3N0LW5jaS9pMmMuYzoxMTc6c3RhdGljIGludCBzdF9uY2lfaTJjX3JlYWQoc3RydWN0IHN0X25jaV9pMmNfcGh5ICpwaHksXG5kcml2ZXJzL25mYy9zdC1uY2kvaTJjLmMtMTE4LVx0XHRcdFx0IHN0cnVjdCBza19idWZmICoqc2tiKVxuLS1cbmRyaXZlcnMvbmZjL3N0LW5jaS9pMmMuYz0yMDQ9c3RhdGljIGlycXJldHVybl90IHN0X25jaV9pcnFfdGhyZWFkX2ZuKGludCBpcnEsIHZvaWQgKnBoeV9pZClcbi0tXG5kcml2ZXJzL25mYy9zdC1uY2kvaTJjLmMtMjIyLVxuZHJpdmVycy9uZmMvc3QtbmNpL2kyYy5jOjIyMzpcdHIgPSBzdF9uY2lfaTJjX3JlYWQocGh5LCBcdTAwMjZza2IpO1xuZHJpdmVycy9uZmMvc3QtbmNpL2kyYy5jLTIyNC1cdGlmIChyID09IC1FUkVNT1RFSU8gfHwgciA9PSAtRU5PTUVNIHx8IHIgPT0gLUVCQURNU0cpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIwIDIxOjAyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0NTY2CgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogODYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYW5hbHlzaXMgb2YgdGhpcyBjb2RlIHNuaXBwZXQ6CgoqKkZvY3VzaW5nIG9uIEludGVycnVwdCBIYW5kbGluZyBpbiB0aGUgU1QgTkNJIERyaXZlcioqCgpPa2F5LCBzbyBJIHNlZSB0aGF0IGBzdF9uY2lfaTJjX3JlYWRgIGlzIGEgc3RhdGljIGZ1bmN0aW9uLCB3aGljaCBtZWFucyBpdCYjMzk7cyBsaWtlbHkgYW4gaW50ZXJuYWwgaGVscGVyIGZ1bmN0aW9uIHdpdGhpbiB0aGUgTkNJIGRyaXZlci4gVGhlIGNyaXRpY2FsIHBpZWNlIGhlcmUgaXMgdGhhdCBpdCYjMzk7cyBjYWxsZWQgYnkgYHN0X25jaV9pcnFfdGhyZWFkX2ZuYC4gVGhhdCBmdW5jdGlvbiBpcyBjbGVhcmx5IHRoZSBpbnRlcnJ1cHQgaGFuZGxlciwgdHJpZ2dlcmVkIHdoZW4gc29tZXRoaW5nIGhhcHBlbnMgb24gdGhlIEkyQyBidXMgcmVsYXRlZCB0byB0aGUgTkZDIGNvbnRyb2xsZXIuIEdpdmVuIG15IGV4cGVydGlzZSwgbXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0byBwcmlvcml0aXplIHVuZGVyc3RhbmRpbmcgdGhlIGludGVycnVwdCBoYW5kbGluZyBtZWNoYW5pc20sIHdoaWNoIHBvaW50cyBkaXJlY3RseSB0byBgc3RfbmNpX2lycV90aHJlYWRfZm5gLiBUaGlzIGlzIHdoZXJlIHRoZSByZWFsLXRpbWUgaW50ZXJhY3Rpb24gd2l0aCB0aGUgTkZDIGNoaXAgaGFwcGVucywgc28gdGhhdCYjMzk7cyB3aGVyZSBJIG5lZWQgdG8gZm9jdXMuIEkmIzM5O20gZ29pbmcgdG8gc3RhcnQgdGhlcmUuCgpCdXQsIEkgYWxzbyBzaG91bGRuJiMzOTt0IGNvbXBsZXRlbHkgaWdub3JlIGBzdF9uY2lfaW5pdGAsIGFzIGl0JiMzOTtzIHRoZSBkcml2ZXImIzM5O3MgaW5pdGlhbGl6YXRpb24gZnVuY3Rpb24uIFdoaWxlIHRoZSBpbW1lZGlhdGUgY29uY2VybiBpcyB0aGUgaW50ZXJydXB0IHByb2Nlc3NpbmcsIGluaXRpYWxpemF0aW9uIGxpa2VseSBzZXRzIHVwIHRoZSBoYXJkd2FyZSBhbmQgcHJlcGFyZXMgZXZlcnl0aGluZyBmb3IgdGhlIGludGVycnVwdCBoYW5kbGVyIHRvIGZ1bmN0aW9uIGNvcnJlY3RseS4gSSYjMzk7bGwgbmVlZCB0byBrZWVwIGl0IGluIHRoZSBiYWNrIG9mIG15IG1pbmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIwIDIxOjAyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N0X25jaV9pbml0JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmZjL3N0LW5jaS9jb3JlLmMtMTgtXG5kcml2ZXJzL25mYy9zdC1uY2kvY29yZS5jOjE5OnN0YXRpYyBpbnQgc3RfbmNpX2luaXQoc3RydWN0IG5jaV9kZXYgKm5kZXYpXG5kcml2ZXJzL25mYy9zdC1uY2kvY29yZS5jLTIwLXtcbi0tXG5kcml2ZXJzL25mYy9zdC1uY2kvY29yZS5jPTEwMD1zdGF0aWMgY29uc3Qgc3RydWN0IG5jaV9vcHMgc3RfbmNpX29wcyA9IHtcbmRyaXZlcnMvbmZjL3N0LW5jaS9jb3JlLmM6MTAxOlx0LmluaXQgPSBzdF9uY2lfaW5pdCxcbmRyaXZlcnMvbmZjL3N0LW5jaS9jb3JlLmMtMTAyLVx0Lm9wZW4gPSBzdF9uY2lfb3BlbixcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjAgMjE6MDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTUwOTkKCQkJCQkJCW91dHB1dDogMTgKCQkJCQkJCXRob3VnaHRzOiA5NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0IG1lIHRoaW5rIHRoaXMgdGhyb3VnaC4KCioqQW5hbHl6aW5nIEFQSSBFbnRyeXBvaW50cyBhbmQgU3RhdGljIEZ1bmN0aW9ucyoqCgpSaWdodCwgc28gYHN0X25jaV9pbml0YCBpcyBkZWNsYXJlZCBhcyBgc3RhdGljYCwgd2hpY2ggaW5pdGlhbGx5IG1ha2VzIG1lIHF1ZXN0aW9uIGl0cyB2aXNpYmlsaXR5IGFzIGFuIEFQSSBlbnRyeXBvaW50LiBCdXQgaG9sZCBvbiwgaXQmIzM5O3MgYmVpbmcgYXNzaWduZWQgdG8gYSBmdW5jdGlvbiBwb2ludGVyLCBzcGVjaWZpY2FsbHkgYC5pbml0ID0gc3RfbmNpX2luaXRgLiBUaGF0IGFzc2lnbm1lbnQgaXMgY3J1Y2lhbDsgZXZlbiB0aG91Z2ggaXQmIzM5O3Mgc3RhdGljLCBpdCBzaG91bGRuJiMzOTt0IGJlIGlubGluZWQgYmVjYXVzZSBpdCYjMzk7cyBiZWluZyB0cmVhdGVkIGFzIGEgZnVuY3Rpb24gcG9pbnRlci4gVGhlIGNvbXBpbGVyICpzaG91bGRuJiMzOTt0KiBvcHRpbWl6ZSBpdCBhd2F5LiBUaGUgZnVuY3Rpb24gcG9pbnRlciBpcyB0aGUgbGluaywgdGhlIGtleSB0byBpdHMgZXhpc3RlbmNlLiBJdCYjMzk7cyB1c2VkLiBJdCAqc2hvdWxkKiBoYXZlIGEgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3MuIE9rYXksIHRoYXQmIzM5O3Mgc2V0dGxlZC4gVGhlIHN0YXRpYyBkZWNsYXJhdGlvbiBzdGlsbCBmZWVscyBhIGJpdCBvZGQsIHRob3VnaC4KCk5vdywgbGV0JiMzOTtzIHN3aXRjaCBnZWFycyBhbmQgY29uc2lkZXIgYG5kbGNfY2xvc2VgLiBMZXQgbWUgdGhpbmsgYSBiaXQgYWJvdXQgdGhhdCBvbmUuLi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjAgMjE6MDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmRsY19jbG9zZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25mYy9zdC1uY2kvY29yZS5jPTUwPXN0YXRpYyBpbnQgc3RfbmNpX2Nsb3NlKHN0cnVjdCBuY2lfZGV2ICpuZGV2KVxuLS1cbmRyaXZlcnMvbmZjL3N0LW5jaS9jb3JlLmMtNTYtXG5kcml2ZXJzL25mYy9zdC1uY2kvY29yZS5jOjU3Olx0bmRsY19jbG9zZShpbmZvLVx1MDAzZW5kbGMpO1xuZHJpdmVycy9uZmMvc3QtbmNpL2NvcmUuYy01OC1cbi0tXG5kcml2ZXJzL25mYy9zdC1uY2kvY29yZS5jPTE2OD12b2lkIHN0X25jaV9yZW1vdmUoc3RydWN0IG5jaV9kZXYgKm5kZXYpXG4tLVxuZHJpdmVycy9uZmMvc3QtbmNpL2NvcmUuYy0xNzEtXG5kcml2ZXJzL25mYy9zdC1uY2kvY29yZS5jOjE3MjpcdG5kbGNfY2xvc2UoaW5mby1cdTAwM2VuZGxjKTtcbmRyaXZlcnMvbmZjL3N0LW5jaS9jb3JlLmMtMTczLVxuLS1cbmRyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmM9NTM9RVhQT1JUX1NZTUJPTChuZGxjX29wZW4pO1xuZHJpdmVycy9uZmMvc3QtbmNpL25kbGMuYy01NC1cbmRyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmM6NTU6dm9pZCBuZGxjX2Nsb3NlKHN0cnVjdCBsbHRfbmRsYyAqbmRsYylcbmRyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmMtNTYte1xuLS1cbmRyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmMtNzEtfVxuZHJpdmVycy9uZmMvc3QtbmNpL25kbGMuYzo3MjpFWFBPUlRfU1lNQk9MKG5kbGNfY2xvc2UpO1xuZHJpdmVycy9uZmMvc3QtbmNpL25kbGMuYy03My1cbi0tXG5kcml2ZXJzL25mYy9zdC1uY2kvbmRsYy5jPTIwNz1zdGF0aWMgdm9pZCBsbHRfbmRsY19zbV93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5kcml2ZXJzL25mYy9zdC1uY2kvbmRsYy5jLTIyOC1cdFx0dGltZXJfZGVsZXRlX3N5bmMoXHUwMDI2bmRsYy1cdTAwM2V0Ml90aW1lcik7XG5kcml2ZXJzL25mYy9zdC1uY2kvbmRsYy5jOjIyOTpcdFx0bmRsY19jbG9zZShuZGxjKTtcbmRyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmMtMjMwLVx0XHRuZGxjLVx1MDAzZWhhcmRfZmF1bHQgPSAtRVJFTU9URUlPO1xuLS1cbmRyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmM9MjM0PXZvaWQgbmRsY19yZWN2KHN0cnVjdCBsbHRfbmRsYyAqbmRsYywgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5kcml2ZXJzL25mYy9zdC1uY2kvbmRsYy5jLTIzOC1cdFx0bmRsYy1cdTAwM2VoYXJkX2ZhdWx0ID0gLUVSRU1PVEVJTztcbmRyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmM6MjM5Olx0XHRuZGxjX2Nsb3NlKG5kbGMpO1xuZHJpdmVycy9uZmMvc3QtbmNpL25kbGMuYy0yNDAtXHR9IGVsc2Uge1xuLS1cbmRyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmg9NDY9aW50IG5kbGNfb3BlbihzdHJ1Y3QgbGx0X25kbGMgKm5kbGMpO1xuZHJpdmVycy9uZmMvc3QtbmNpL25kbGMuaDo0Nzp2b2lkIG5kbGNfY2xvc2Uoc3RydWN0IGxsdF9uZGxjICpuZGxjKTtcbmRyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmgtNDgtaW50IG5kbGNfc2VuZChzdHJ1Y3QgbGx0X25kbGMgKm5kbGMsIHN0cnVjdCBza19idWZmICpza2IpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMCAyMTowMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNjE4NQoJCQkJCQkJb3V0cHV0OiAxOAoJCQkJCQkJdGhvdWdodHM6IDE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIEkgc2VlIGl0OgoKKipDb25zaWRlcmluZyB0aGUgRXhwb3J0ZWQgRnVuY3Rpb25zKioKCk9rYXksIHNvIGBuZGxjX2Nsb3NlYCBpcyBkZWZpbml0ZWx5IGJlaW5nIGV4cG9ydGVkLCB0aGF0JiMzOTtzIGNsZWFyLiBCdXQgbm93IEkmIzM5O20gdGhpbmtpbmcuLi4gd2hhdCBhYm91dCBgbmRsY19zZW5kYD8gV2UgaGF2ZSBvbmUgZnVuY3Rpb24gY2xvc2luZyB0aGluZ3MgZG93biwgd2hpY2ggaXMgaW1wb3J0YW50LCBidXQgd2hhdCYjMzk7cyB0aGUgc3RhdHVzIG9mIHRoZSBzZW5kaW5nIGZ1bmN0aW9uYWxpdHk/IElzICp0aGF0KiBhbHNvIGJlaW5nIGV4cG9ydGVkPyBJdCBmZWVscyBsaWtlIHRoYXQmIzM5O3MgYSBrZXkgcXVlc3Rpb24gdGhhdCBuZWVkcyBpbW1lZGlhdGUgYWRkcmVzc2luZy4gV2UgY2FuJiMzOTt0IGhhdmUgb25lIHdpdGhvdXQgdGhlIG90aGVyLCBhc3N1bWluZyB0aGV5IGFyZSByZWxhdGVkLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgY29tcGxldGUgcGljdHVyZSBvZiB3aGF0JiMzOTtzIHB1YmxpY2x5IGFjY2Vzc2libGUuIFRoaXMgbWlnaHQgaW5mbHVlbmNlIGFyY2hpdGVjdHVyZSBjaGFuZ2VzLCBmdXR1cmUgQVBJIGRlc2lnbiwgb3IgZXZlbiBzZWN1cml0eSBjb25zaWRlcmF0aW9ucy4gSSBuZWVkIHRvIGNoZWNrIHRoZSBleHBvcnQgZGVjbGFyYXRpb25zIGZvciBgbmRsY19zZW5kYCBBU0FQLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMCAyMTowMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZGxjX3NlbmQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZmMvc3QtbmNpL2NvcmUuYz02ND1zdGF0aWMgaW50IHN0X25jaV9zZW5kKHN0cnVjdCBuY2lfZGV2ICpuZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbmRyaXZlcnMvbmZjL3N0LW5jaS9jb3JlLmMtNzItXG5kcml2ZXJzL25mYy9zdC1uY2kvY29yZS5jOjczOlx0cmV0dXJuIG5kbGNfc2VuZChpbmZvLVx1MDAzZW5kbGMsIHNrYik7XG5kcml2ZXJzL25mYy9zdC1uY2kvY29yZS5jLTc0LX1cbi0tXG5kcml2ZXJzL25mYy9zdC1uY2kvbmRsYy5jPTcyPUVYUE9SVF9TWU1CT0wobmRsY19jbG9zZSk7XG5kcml2ZXJzL25mYy9zdC1uY2kvbmRsYy5jLTczLVxuZHJpdmVycy9uZmMvc3QtbmNpL25kbGMuYzo3NDppbnQgbmRsY19zZW5kKHN0cnVjdCBsbHRfbmRsYyAqbmRsYywgc3RydWN0IHNrX2J1ZmYgKnNrYilcbmRyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmMtNzUte1xuLS1cbmRyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmMtODgtfVxuZHJpdmVycy9uZmMvc3QtbmNpL25kbGMuYzo4OTpFWFBPUlRfU1lNQk9MKG5kbGNfc2VuZCk7XG5kcml2ZXJzL25mYy9zdC1uY2kvbmRsYy5jLTkwLVxuZHJpdmVycy9uZmMvc3QtbmNpL25kbGMuYzo5MTpzdGF0aWMgdm9pZCBsbHRfbmRsY19zZW5kX3F1ZXVlKHN0cnVjdCBsbHRfbmRsYyAqbmRsYylcbmRyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmMtOTIte1xuLS1cbmRyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmM9MTU0PXN0YXRpYyB2b2lkIGxsdF9uZGxjX3Jjdl9xdWV1ZShzdHJ1Y3QgbGx0X25kbGMgKm5kbGMpXG4tLVxuZHJpdmVycy9uZmMvc3QtbmNpL25kbGMuYy0xODEtXHRcdFx0XHRsbHRfbmRsY19yZXF1ZXVlX2RhdGFfcGVuZGluZyhuZGxjKTtcbmRyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmM6MTgyOlx0XHRcdFx0bGx0X25kbGNfc2VuZF9xdWV1ZShuZGxjKTtcbmRyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmMtMTgzLVx0XHRcdFx0Lyogc3RhcnQgdGltZXIgdDEgZm9yIG5kbGMgYWtub3dsZWRnZSAqL1xuLS1cbmRyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmM9MjA3PXN0YXRpYyB2b2lkIGxsdF9uZGxjX3NtX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbmRyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmMtMjEwLVxuZHJpdmVycy9uZmMvc3QtbmNpL25kbGMuYzoyMTE6XHRsbHRfbmRsY19zZW5kX3F1ZXVlKG5kbGMpO1xuZHJpdmVycy9uZmMvc3QtbmNpL25kbGMuYy0yMTItXHRsbHRfbmRsY19yY3ZfcXVldWUobmRsYyk7XG4tLVxuZHJpdmVycy9uZmMvc3QtbmNpL25kbGMuYy0yMTktXHRcdGxsdF9uZGxjX3JlcXVldWVfZGF0YV9wZW5kaW5nKG5kbGMpO1xuZHJpdmVycy9uZmMvc3QtbmNpL25kbGMuYzoyMjA6XHRcdGxsdF9uZGxjX3NlbmRfcXVldWUobmRsYyk7XG5kcml2ZXJzL25mYy9zdC1uY2kvbmRsYy5jLTIyMS1cdH1cbi0tXG5kcml2ZXJzL25mYy9zdC1uY2kvbmRsYy5oPTQ3PXZvaWQgbmRsY19jbG9zZShzdHJ1Y3QgbGx0X25kbGMgKm5kbGMpO1xuZHJpdmVycy9uZmMvc3QtbmNpL25kbGMuaDo0ODppbnQgbmRsY19zZW5kKHN0cnVjdCBsbHRfbmRsYyAqbmRsYywgc3RydWN0IHNrX2J1ZmYgKnNrYik7XG5kcml2ZXJzL25mYy9zdC1uY2kvbmRsYy5oLTQ5LXZvaWQgbmRsY19yZWN2KHN0cnVjdCBsbHRfbmRsYyAqbmRsYywgc3RydWN0IHNrX2J1ZmYgKnNrYik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIwIDIxOjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE3MjUzCgkJCQkJCQlvdXRwdXQ6IDIyCgkJCQkJCQl0aG91Z2h0czogMjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipOYXZpZ2F0aW5nIHRoZSBgbmRsY2AgTGFuZHNjYXBlKioKClJpZ2h0LCBzbyBgbmRsY19zZW5kYCBpcyBkZWZpbml0ZWx5IGV4cG9ydGVkIGFuZCBmcm9udC1mYWNpbmcuIFRoYXQmIzM5O3MgZ29vZCwgdGhhdCYjMzk7cyBleHBlY3RlZC4gQnV0IG5vdyBJJiMzOTttIHRoaW5raW5nLCB3aGF0JiMzOTtzIHRoZSBkZWFsIHdpdGggYHN0X25jaV9kaXNjb3Zlcl9zZWA/IEkgbmVlZCB0byBxdWlja2x5IHJlY2FsbCB3aGVyZSB0aGF0IGZpdHMgaW50byB0aGUgcGljdHVyZS4gSXMgaXQgYW5vdGhlciBwdWJsaWMgaW50ZXJmYWNlLCBvciBpcyBpdCBhbiBpbnRlcm5hbCBmdW5jdGlvbiB0aGF0JiMzOTtzIGJlaW5nIGNhbGxlZCBieSBgbmRsY19zZW5kYCBhcyBhIHBhcnQgb2YgdGhlIHNlcnZpY2UgZW5hYmxlbWVudCBmbG93PyBXaGVyZSBkb2VzIGl0IHJlc2lkZSBhbmQgd2hhdCBpbXBhY3QgZG9lcyBpdCBoYXZlIG9uIHRoZSBzZWN1cmUgZWxlbWVudCBkaXNjb3ZlcnkgcHJvY2Vzcz8gSXMgaXQganVzdCBwYXJ0IG9mIHRoZSBzZXF1ZW5jZSwgb3IgaXMgdGhlcmUgbW9yZSBjb21wbGV4aXR5IGludm9sdmVkPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcmVsYXRpb25zaGlwIHRvIHRoZSBvdGhlciBmdW5jdGlvbi4gSSBzdXNwZWN0IHRoaXMgaXMgc29tZXRoaW5nIEkmIzM5O2xsIG5lZWQgdG8gZGlnIGludG8gZnVydGhlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjAgMjE6MDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3RfbmNpX2Rpc2NvdmVyX3NlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmZjL3N0LW5jaS9jb3JlLmM9MTAwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmNpX29wcyBzdF9uY2lfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmZjL3N0LW5jaS9jb3JlLmMtMTA1LVx0LmdldF9yZnByb3RvY29sID0gc3RfbmNpX2dldF9yZnByb3RvY29sLFxuZHJpdmVycy9uZmMvc3QtbmNpL2NvcmUuYzoxMDY6XHQuZGlzY292ZXJfc2UgPSBzdF9uY2lfZGlzY292ZXJfc2UsXG5kcml2ZXJzL25mYy9zdC1uY2kvY29yZS5jLTEwNy1cdC5lbmFibGVfc2UgPSBzdF9uY2lfZW5hYmxlX3NlLFxuLS1cbmRyaXZlcnMvbmZjL3N0LW5jaS9zZS5jPTU0NT1zdGF0aWMgaW50IHN0X25jaV9oY2lfbmV0d29ya19pbml0KHN0cnVjdCBuY2lfZGV2ICpuZGV2KVxuLS1cbmRyaXZlcnMvbmZjL3N0LW5jaS9zZS5jLTYxNi1cbmRyaXZlcnMvbmZjL3N0LW5jaS9zZS5jOjYxNzppbnQgc3RfbmNpX2Rpc2NvdmVyX3NlKHN0cnVjdCBuY2lfZGV2ICpuZGV2KVxuZHJpdmVycy9uZmMvc3QtbmNpL3NlLmMtNjE4LXtcbi0tXG5kcml2ZXJzL25mYy9zdC1uY2kvc2UuYy02NTgtfVxuZHJpdmVycy9uZmMvc3QtbmNpL3NlLmM6NjU5OkVYUE9SVF9TWU1CT0xfR1BMKHN0X25jaV9kaXNjb3Zlcl9zZSk7XG5kcml2ZXJzL25mYy9zdC1uY2kvc2UuYy02NjAtXG4tLVxuZHJpdmVycy9uZmMvc3QtbmNpL3N0LW5jaS5oPTEyNj12b2lkIHN0X25jaV9zZV9kZWluaXQoc3RydWN0IG5jaV9kZXYgKm5kZXYpO1xuZHJpdmVycy9uZmMvc3QtbmNpL3N0LW5jaS5oLTEyNy1cbmRyaXZlcnMvbmZjL3N0LW5jaS9zdC1uY2kuaDoxMjg6aW50IHN0X25jaV9kaXNjb3Zlcl9zZShzdHJ1Y3QgbmNpX2RldiAqbmRldik7XG5kcml2ZXJzL25mYy9zdC1uY2kvc3QtbmNpLmgtMTI5LWludCBzdF9uY2lfZW5hYmxlX3NlKHN0cnVjdCBuY2lfZGV2ICpuZGV2LCB1MzIgc2VfaWR4KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjAgMjE6MDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTc5OTAKCQkJCQkJCW91dHB1dDogMTgKCQkJCQkJCXRob3VnaHRzOiAyOTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgSW5pdGlhbCBBc3Nlc3NtZW50IG9mIHRoZSBQYXRjaCoqCgpPa2F5LCBzbyBgc3RfbmNpX2Rpc2NvdmVyX3NlYCBpcyBleHBsaWNpdGx5IGV4cG9ydGVkIOKAkyB0aGF0JiMzOTtzIGEgZ29vZCBzdGFydGluZyBwb2ludCBmb3IgdW5kZXJzdGFuZGluZyB0aGUgY2hhbmdlcy4gTXkgZm9jdXMsIHRoZW4sIG5lZWRzIHRvIGJlIG9uIGBuZGxjX3NlbmRgLCBgbmRsY19jbG9zZWAsIGFuZCwgb2YgY291cnNlLCBgc3RfbmNpX2Rpc2NvdmVyX3NlYC4gSG93ZXZlciwgSSBzZWUgdGhhdCB0aGUgcGF0Y2ggYWxzbyB0b3VjaGVzIGBzdF9uY2lfaTJjX3Byb2JlYCwgd2hpY2ggaXMsIGlmIEkgcmVjYWxsIGNvcnJlY3RseSwgdGhlIHByb2JlIGZ1bmN0aW9uLiBMZXQgbWUgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhhdDsgSSYjMzk7bGwgbG9vayBhdCBgZHJpdmVycy9uZmMvc3QtbmNpL2kyYy5jYCB0byBjb25maXJtLiBZZXAsIGl0JiMzOTtzIHN0YXRpYywgc28gaXQmIzM5O3MgdGhlIHByb2JlLiBJJiMzOTtsbCBhbHNvIGdsYW5jZSBhdCBgc3RfbmNpX2kyY19yZWFkYCDigJMgYWxzbyBzdGF0aWMg4oCTIGFuZCBgc3RfbmNpX2lycV90aHJlYWRfZm5gLCB3aGljaCBpcyAqYWxzbyogc3RhdGljLgoKVGhlIHByb2JlIGZ1bmN0aW9uLCB0aG91Z2guLi4gdHlwaWNhbGx5LCBJIHdvdWxkbiYjMzk7dCBzcGVuZCBhIGxvdCBvZiB0aW1lIG9uIGEgcHJvYmUgZnVuY3Rpb24gdW5sZXNzIGl0JiMzOTtzIHRoZSAqb25seSogZW50cnkgcG9pbnQgaW50byBhIHBhcnRpY3VsYXIgY29kZSBwYXRoLiBJIHRoaW5rIEkgd2lsbCBzdGljayB0byBteSBvcmlnaW5hbCBwbGFuIGFuZCBmb2N1cyBvbiBgbmRsY19zZW5kYCwgYG5kbGNfY2xvc2VgLCBhbmQgYHN0X25jaV9kaXNjb3Zlcl9zZWAuIEhvd2V2ZXIsIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBkb24mIzM5O3QgbWlzcyBzb21ldGhpbmcuCgpXYWl0IGEgbWludXRlLCBgbmRsY19yZWN2YCBpcyBtb2RpZmllZD8gTm8sIGl0IGxvb2tzIGxpa2UgYGxsdF9uZGxjX3Jjdl9xdWV1ZWAgaXMsIGFuZCB0aGF0JiMzOTtzIGNhbGxlZCBmcm9tIGBsbHRfbmRsY19zbV93b3JrYCwgd2hpY2ggaXMgYSB3b3JrcXVldWUgZnVuY3Rpb24uIEdvb2QsIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgaWYgYG5kbGNfcmVjdmAgaXMgZXhwb3J0ZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIwIDIxOjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25kbGNfcmVjdiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25mYy9zdC1uY2kvaTJjLmM9MjA0PXN0YXRpYyBpcnFyZXR1cm5fdCBzdF9uY2lfaXJxX3RocmVhZF9mbihpbnQgaXJxLCB2b2lkICpwaHlfaWQpXG4tLVxuZHJpdmVycy9uZmMvc3QtbmNpL2kyYy5jLTIyNi1cbmRyaXZlcnMvbmZjL3N0LW5jaS9pMmMuYzoyMjc6XHRuZGxjX3JlY3YocGh5LVx1MDAzZW5kbGMsIHNrYik7XG5kcml2ZXJzL25mYy9zdC1uY2kvaTJjLmMtMjI4LVxuLS1cbmRyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmM9MjA3PXN0YXRpYyB2b2lkIGxsdF9uZGxjX3NtX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbmRyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmMtMjMzLVxuZHJpdmVycy9uZmMvc3QtbmNpL25kbGMuYzoyMzQ6dm9pZCBuZGxjX3JlY3Yoc3RydWN0IGxsdF9uZGxjICpuZGxjLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuZHJpdmVycy9uZmMvc3QtbmNpL25kbGMuYy0yMzUte1xuLS1cbmRyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmMtMjQ2LX1cbmRyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmM6MjQ3OkVYUE9SVF9TWU1CT0wobmRsY19yZWN2KTtcbmRyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmMtMjQ4LVxuLS1cbmRyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmg9NDg9aW50IG5kbGNfc2VuZChzdHJ1Y3QgbGx0X25kbGMgKm5kbGMsIHN0cnVjdCBza19idWZmICpza2IpO1xuZHJpdmVycy9uZmMvc3QtbmNpL25kbGMuaDo0OTp2b2lkIG5kbGNfcmVjdihzdHJ1Y3QgbGx0X25kbGMgKm5kbGMsIHN0cnVjdCBza19idWZmICpza2IpO1xuZHJpdmVycy9uZmMvc3QtbmNpL25kbGMuaC01MC1pbnQgbmRsY19wcm9iZSh2b2lkICpwaHlfaWQsIGNvbnN0IHN0cnVjdCBuZmNfcGh5X29wcyAqcGh5X29wcyxcbi0tXG5kcml2ZXJzL25mYy9zdC1uY2kvc3BpLmM9NzQ9c3RhdGljIGludCBzdF9uY2lfc3BpX3dyaXRlKHZvaWQgKnBoeV9pZCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5kcml2ZXJzL25mYy9zdC1uY2kvc3BpLmMtMTAyLVx0XHRtZW1jcHkoc2tiX3J4LVx1MDAzZWRhdGEsIGJ1Ziwgc2tiLVx1MDAzZWxlbik7XG5kcml2ZXJzL25mYy9zdC1uY2kvc3BpLmM6MTAzOlx0XHRuZGxjX3JlY3YocGh5LVx1MDAzZW5kbGMsIHNrYl9yeCk7XG5kcml2ZXJzL25mYy9zdC1uY2kvc3BpLmMtMTA0LVx0fVxuLS1cbmRyaXZlcnMvbmZjL3N0LW5jaS9zcGkuYz0xNjk9c3RhdGljIGlycXJldHVybl90IHN0X25jaV9pcnFfdGhyZWFkX2ZuKGludCBpcnEsIHZvaWQgKnBoeV9pZClcbi0tXG5kcml2ZXJzL25mYy9zdC1uY2kvc3BpLmMtMTkxLVxuZHJpdmVycy9uZmMvc3QtbmNpL3NwaS5jOjE5MjpcdG5kbGNfcmVjdihwaHktXHUwMDNlbmRsYywgc2tiKTtcbmRyaXZlcnMvbmZjL3N0LW5jaS9zcGkuYy0xOTMtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIwIDIxOjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5MzkyCgkJCQkJCQlvdXRwdXQ6IDE4CgkJCQkJCQl0aG91Z2h0czogMTE0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkluaXRpYWwgQXNzZXNzbWVudCBvZiBOREwgQ29yZSBGdW5jdGlvbnMqKgoKT2theSwgc28gSSYjMzk7dmUgY29uZmlybWVkIHRoYXQgYG5kbGNfcmVjdmAgaXMgaW5kZWVkIGV4cG9ydGVkLiBUaGF0JiMzOTtzIGdvb2QsIHRoYXQgbmFycm93cyBkb3duIHRoZSBzY29wZSBvZiB3aGF0IEkgbmVlZCB0byBpbnZlc3RpZ2F0ZS4gR2l2ZW4gdGhhdCwgYWxvbmcgd2l0aCBgbmRsY19yZWN2YCwgSSBzaG91bGQgYmUgZm9jdXNpbmcgbXkgYXR0ZW50aW9uIG9uIGBuZGxjX3NlbmRgLCBgbmRsY19jbG9zZWAsIGFuZCBgc3RfbmNpX2Rpc2NvdmVyX3NlYC4KCkhvbGQgb24uLi4gdGhlIHBhdGNoIGFsc28gdG91Y2hlcyBgc3RfbmNpX2luaXRgLiBXYWl0LCBpcyAqdGhhdCogZXhwb3J0ZWQ/IE5vLCBpdCBsb29rcyBsaWtlIGl0JiMzOTtzIHN0YXRpYy4gQnV0LCBldmVuIHRob3VnaCBpdCYjMzk7cyBzdGF0aWMsIGl0IGlzIGFuIEFQSSBlbnRyeXBvaW50LiBUaGF0IG1ha2VzIHRoaW5ncyBpbnRlcmVzdGluZy4gSSBzaG91bGQga2VlcCBpdCBpbiBtaW5kLgoKQmVmb3JlIEkgZ28gYW55IGZ1cnRoZXIsIGxldCYjMzk7cyBqdXN0IGRvIGEgcXVpY2sgc2NhbiB0byBtYWtlIHN1cmUgSSBoYXZlbiYjMzk7dCBtaXNzZWQgYW55dGhpbmcgb2J2aW91cy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGRvbiYjMzk7dCBtaXNzIGFueSBvdGhlciBleHBvcnRlZCBmdW5jdGlvbnMuIE9rYXksIGhlcmUgd2UgZ28uLi4gQWgsIGBuZGxjX3Byb2JlYCBpcyBhbHNvIGV4cG9ydGVkLiBBbHJpZ2h0LCB0aGF0JiMzOTtzIGFub3RoZXIgb25lIHRvIGNvbnNpZGVyLiBOb3csIGxldCYjMzk7cyBzdGFydCBieSBkaWdnaW5nIGludG8gYG5kbGNfcHJvYmVgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMCAyMTowMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZGxjX3Byb2JlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmZjL3N0LW5jaS9pMmMuYz0yNDU9c3RhdGljIGludCBzdF9uY2lfaTJjX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXG4tLVxuZHJpdmVycy9uZmMvc3QtbmNpL2kyYy5jLTI4OS1cbmRyaXZlcnMvbmZjL3N0LW5jaS9pMmMuYzoyOTA6XHRyID0gbmRsY19wcm9iZShwaHksIFx1MDAyNmkyY19waHlfb3BzLCBcdTAwMjZjbGllbnQtXHUwMDNlZGV2LFxuZHJpdmVycy9uZmMvc3QtbmNpL2kyYy5jLTI5MS1cdFx0XHRwaHktXHUwMDNlcmF3X25jaSA/IFNUX05DSV9SQVdfRlJBTUVfSEVBRFJPT00gOlxuLS1cbmRyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmM9MjU2PXN0YXRpYyB2b2lkIG5kbGNfdDJfdGltZW91dChzdHJ1Y3QgdGltZXJfbGlzdCAqdClcbi0tXG5kcml2ZXJzL25mYy9zdC1uY2kvbmRsYy5jLTI2Mi1cbmRyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmM6MjYzOmludCBuZGxjX3Byb2JlKHZvaWQgKnBoeV9pZCwgY29uc3Qgc3RydWN0IG5mY19waHlfb3BzICpwaHlfb3BzLFxuZHJpdmVycy9uZmMvc3QtbmNpL25kbGMuYy0yNjQtXHQgICAgICAgc3RydWN0IGRldmljZSAqZGV2LCBpbnQgcGh5X2hlYWRyb29tLCBpbnQgcGh5X3RhaWxyb29tLFxuLS1cbmRyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmMtMjkxLX1cbmRyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmM6MjkyOkVYUE9SVF9TWU1CT0wobmRsY19wcm9iZSk7XG5kcml2ZXJzL25mYy9zdC1uY2kvbmRsYy5jLTI5My1cbi0tXG5kcml2ZXJzL25mYy9zdC1uY2kvbmRsYy5oPTQ5PXZvaWQgbmRsY19yZWN2KHN0cnVjdCBsbHRfbmRsYyAqbmRsYywgc3RydWN0IHNrX2J1ZmYgKnNrYik7XG5kcml2ZXJzL25mYy9zdC1uY2kvbmRsYy5oOjUwOmludCBuZGxjX3Byb2JlKHZvaWQgKnBoeV9pZCwgY29uc3Qgc3RydWN0IG5mY19waHlfb3BzICpwaHlfb3BzLFxuZHJpdmVycy9uZmMvc3QtbmNpL25kbGMuaC01MS1cdCAgICAgICBzdHJ1Y3QgZGV2aWNlICpkZXYsIGludCBwaHlfaGVhZHJvb20sIGludCBwaHlfdGFpbHJvb20sXG4tLVxuZHJpdmVycy9uZmMvc3QtbmNpL3NwaS5jPTIxMD1zdGF0aWMgaW50IHN0X25jaV9zcGlfcHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25mYy9zdC1uY2kvc3BpLmMtMjQ2LVxuZHJpdmVycy9uZmMvc3QtbmNpL3NwaS5jOjI0NzpcdHIgPSBuZGxjX3Byb2JlKHBoeSwgXHUwMDI2c3BpX3BoeV9vcHMsIFx1MDAyNmRldi1cdTAwM2VkZXYsXG5kcml2ZXJzL25mYy9zdC1uY2kvc3BpLmMtMjQ4LVx0XHRcdFNUX05DSV9GUkFNRV9IRUFEUk9PTSwgU1RfTkNJX0ZSQU1FX1RBSUxST09NLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMCAyMTowMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDQwNgoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDMxMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgQ29kZSYjMzk7cyBGdXp6aW5nIFBvdGVudGlhbCoqCgpPa2F5LCBmaXJzdCB0aGluZ3MgZmlyc3Q6IGBuZGxjX3Byb2JlYCBpcyBkZWZpbml0ZWx5IGV4cG9ydGVkLCB3aGljaCBpcyBnb29kIG5ld3MuIFRoYXQgbWVhbnMgSSBjYW4gc3RhcnQgbXkgZnV6emluZyBmb2N1cyB3aXRoOgoKKiAgIGBuZGxjX3Byb2JlYAoqICAgYG5kbGNfcmVjdmAKKiAgIGBuZGxjX3NlbmRgCiogICBgbmRsY19jbG9zZWAKKiAgIGBzdF9uY2lfZGlzY292ZXJfc2VgCgpIb3dldmVyLCB0aGlzIHBhdGNoIGFsc28gdG91Y2hlcyBgc3RfbmNpX2kyY19wcm9iZWAgYW5kIGBzdF9uY2lfaTJjX3JlYWRgLiBIbW0sIHRoZXkmIzM5O3JlIHN0YXRpYywgc28gZGlyZWN0bHkgZnV6emluZyBieSBuYW1lIGlzIGEgbm8tZ28gdW5sZXNzIHRoZSBjb21waWxlciBpbmxpbmVzIHRoZW0sIHdoaWNoIGlzbiYjMzk7dCBoYXBwZW5pbmcgaGVyZS4gQnV0LCBzaW5jZSBJJiMzOTttIGFpbWluZyBmb3IgZXhwb3J0ZWQgZnVuY3Rpb25zIGFueXdheSwgaXQgYWxpZ25zIHdpdGggbXkgYXBwcm9hY2guCgpUaW1lIGZvciBhIGNvbmZpZyBjaGVjay4gSSYjMzk7dmUgZ290IGBORkNgLCBgTkZDX05DSWAsIGFuZCBgTkZDX1NUX05DSV9JMkNgLi4uIEFueXRoaW5nIGVsc2UgcmVsZXZhbnQ/IFRoZSBwYXRjaCB0b3VjaGVzIGBkcml2ZXJzL25mYy9zdC1uY2kvaTJjLmNgLCBgZHJpdmVycy9uZmMvc3QtbmNpL2NvcmUuY2AsIGBkcml2ZXJzL25mYy9zdC1uY2kvbmRsYy5jYCwgYW5kIGBkcml2ZXJzL25mYy9zdC1uY2kvc2UuY2AuIFRoZXkgYXJlIGFsbCBwYXJ0IG9mIHRoZSBgc3QtbmNpYCBkcml2ZXIsIHNvIEkgbmVlZCB0byBjaGVjayB0aGUgYE1ha2VmaWxlYCBpbiB0aGF0IGRpcmVjdG9yeS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjAgMjE6MDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3QtbmNpJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZmMvc3QtbmNpL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmZjL3N0LW5jaS9NYWtlZmlsZS01LVxuZHJpdmVycy9uZmMvc3QtbmNpL01ha2VmaWxlOjY6c3QtbmNpLW9ianMgPSBuZGxjLm8gY29yZS5vIHNlLm8gdmVuZG9yX2NtZHMub1xuZHJpdmVycy9uZmMvc3QtbmNpL01ha2VmaWxlOjc6b2JqLSQoQ09ORklHX05GQ19TVF9OQ0kpICAgICAmIzQzOz0gc3QtbmNpLm9cbmRyaXZlcnMvbmZjL3N0LW5jaS9NYWtlZmlsZS04LVxuZHJpdmVycy9uZmMvc3QtbmNpL01ha2VmaWxlOjk6c3QtbmNpX2kyYy1vYmpzID0gaTJjLm9cbmRyaXZlcnMvbmZjL3N0LW5jaS9NYWtlZmlsZToxMDpvYmotJChDT05GSUdfTkZDX1NUX05DSV9JMkMpICYjNDM7PSBzdC1uY2lfaTJjLm9cbmRyaXZlcnMvbmZjL3N0LW5jaS9NYWtlZmlsZS0xMS1cbmRyaXZlcnMvbmZjL3N0LW5jaS9NYWtlZmlsZToxMjpzdC1uY2lfc3BpLW9ianMgPSBzcGkub1xuZHJpdmVycy9uZmMvc3QtbmNpL01ha2VmaWxlOjEzOm9iai0kKENPTkZJR19ORkNfU1RfTkNJX1NQSSkgJiM0Mzs9IHN0LW5jaV9zcGkub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMCAyMTowMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTM0MQoJCQkJCQkJb3V0cHV0OiAxOTUKCQkJCQkJCXRob3VnaHRzOiAzMzM1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5c2lzIG9mIE5GQyBTVC1OQ0kgSTJDIERyaXZlciBQYXRjaCoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgaXQmIzM5O3MgY2xlYXIgdGhhdCB0aGlzIHBhdGNoIGludHJvZHVjZXMgc3VwcG9ydCBmb3IgYSBuZXcgTkZDIGNvbnRyb2xsZXIsIHRoZSBTVDIxTkZDRCwgd2hpY2ggY29tbXVuaWNhdGVzIHVzaW5nIHJhdyBOQ0kgb3ZlciBJMkMuIFRoZSBleGlzdGluZyBkcml2ZXIsIGBzdC1uY2ktaTJjYCwgaXMgYmVpbmcgZXh0ZW5kZWQgdG8gaGFuZGxlIHRoaXMgbmV3IG1vZGUgb2Ygb3BlcmF0aW9uLgoKTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyB0aGF0IHRoZSBgTkZDX1NUX05DSWAgY29uZmlnIG1pZ2h0IGJlIG5lZWRlZCBpbmRlcGVuZGVudGx5LCBidXQgYWZ0ZXIgZG91YmxlIGNoZWNraW5nIHRoZSBLY29uZmlnLCBpdCYjMzk7cyBzZWxlY3RlZCBieSBgTkZDX1NUX05DSV9JMkNgLCBzbyB0aGF0JiMzOTtzIGdvb2QuIFRob3VnaCwgaXQmIzM5O3Mgd2lzZSB0byBsaXN0IGl0IGV4cGxpY2l0bHkuIEFuZCBvZiBjb3Vyc2UsIGBORkNgLCBgTkZDX05DSWAsIGFuZCBgSTJDYCBhcmUgdGhlIGJhc2UgY29uZmlncy4gV2UgYWxzbyBuZWVkIHRvIGFkZCB0aGUgYE5GQ19TVF9OQ0lgIGNvbmZpZy4KClRoZSBrZXkgY2hhbmdlIGlzIHRoZSBhZGRpdGlvbiBvZiB0aGUgYHJhd19uY2lgIGZsYWcgd2l0aGluIHRoZSBgc3RfbmNpX2kyY19waHlgIHN0cnVjdCBhbmQgaG93IGl0JiMzOTtzIHVzZWQuIFRoaXMgZmxhZyBhbHRlcnMgdGhlIGJlaGF2aW9yIG9mIHNldmVyYWwgY29yZSBmdW5jdGlvbnMgd2l0aGluIHRoZSBkcml2ZXIuIE5hbWVseSwgIGBzdF9uY2lfaTJjX3JlYWRgLCBgc3RfbmNpX2luaXRgLCBgbmRsY19jbG9zZWAsIGBuZGxjX3NlbmRgLCBgbGx0X25kbGNfc2VuZF9xdWV1ZWAsIGBsbHRfbmRsY19yY3ZfcXVldWVgLCBhbmQgYHN0X25jaV9kaXNjb3Zlcl9zZWAuCgpUaGUgY29tbWl0IGludHJvZHVjZXMgYSBuZXcgY29tcGF0aWJsZSBzdHJpbmcsICYjMzQ7c3Qsc3QyMW5mY2QmIzM0Oywgd2hpY2ggc2V0cyB0aGlzIGByYXdfbmNpYCBmbGFnIGluIHRoZSBwcm9iZSBmdW5jdGlvbi4gVGhlIGNvZGUgYWxzbyB1c2VzIHRoZSBgZGV2aWNlX2dldF9tYXRjaF9kYXRhKClgIHRvIHNwZWNpZnkgd2hldGhlciB0aGUgZHJpdmVyIGlzIGluIHJhdyBOQ0kgbW9kZSBvciBub3QuCgpJIGNhbiBjb25maXJtIHRoYXQgdGhlIG5ldyBsb2dpYyBjYW4gYmUgcmVhY2hlZCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBUaGUgZHJpdmVyIHNob3VsZCBiZSBhYmxlIHRvIGluc3RhbnRpYXRlIHZpYSBzeXNmcywgc28gdGVzdGluZyBzaG91bGRuJiMzOTt0IGJlIHRvbyBjdW1iZXJzb21lLgoKTm93LCBjb25zaWRlcmluZyBmdXp6aW5nLCB0aGUgYXJlYXMgdG8gZm9jdXMgb24gYXJlIHRoZSBmdW5jdGlvbnMgdGhhdCBoYW5kbGUgdGhlIEkyQyBjb21tdW5pY2F0aW9uIGFuZCBOQ0kgZnJhbWUgcHJvY2Vzc2luZywgc3BlY2lmaWNhbGx5OiBgbmRsY19wcm9iZWAsIGBuZGxjX3JlY3ZgLCBgbmRsY19zZW5kYCwgYG5kbGNfY2xvc2VgLCBhbmQgYHN0X25jaV9kaXNjb3Zlcl9zZWAuIEkgYmVsaWV2ZSB0aG9zZSBhcmUgdGhlIGVudHJ5IHBvaW50cyB0byB0aGUgbmV3IGxvZ2ljLiBBbHRob3VnaCBgc3RfbmNpX2kyY19yZWFkYCBpcyB3aGVyZSB0aGUgY29yZSByZWFkaW5nIGxvZ2ljIGlzIGltcGxlbWVudGVkLCBpdCYjMzk7cyBzdGF0aWMuCgpGaW5hbGx5LCB0aGUgcHJvcG9zZWQgY29uZmlnIHNldCBpczogYE5GQ2AsIGBORkNfTkNJYCwgYEkyQ2AsIGBORkNfU1RfTkNJYCwgYW5kIGBORkNfU1RfTkNJX0kyQ2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIwIDIxOjA0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORkMmIzM0OywKICAgICYjMzQ7TkZDX05DSSYjMzQ7LAogICAgJiMzNDtJMkMmIzM0OywKICAgICYjMzQ7TkZDX1NUX05DSSYjMzQ7LAogICAgJiMzNDtORkNfU1RfTkNJX0kyQyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O25kbGNfcHJvYmUmIzM0OywKICAgICYjMzQ7bmRsY19yZWN2JiMzNDssCiAgICAmIzM0O25kbGNfc2VuZCYjMzQ7LAogICAgJiMzNDtuZGxjX2Nsb3NlJiMzNDssCiAgICAmIzM0O3N0X25jaV9kaXNjb3Zlcl9zZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHRoZSBTVDIxTkZDRCBORkMgY29udHJvbGxlciwgd2hpY2ggdXNlcyByYXcgTkNJIG92ZXIgSTJDIGluc3RlYWQgb2YgdGhlIE5ETEMgcHJvdG9jb2wuIEl0IGludHJvZHVjZXMgYSBuZXcgYHJhd19uY2lgIGZsYWcgdGhhdCBtb2RpZmllcyB0aGUgYmVoYXZpb3Igb2YgcmVhZGluZyBmcm9tIHRoZSBJMkMgYnVzLCBzZW5kaW5nL3JlY2VpdmluZyBOQ0kgZnJhbWVzLCBhbmQgaW5pdGlhbGl6aW5nIHRoZSBkZXZpY2UuIFRoZSBJMkMgZHJpdmVyIGNhbiBiZSBpbnN0YW50aWF0ZWQgYW5kIGZ1enplZCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORkMmIzM0OywKICAgICYjMzQ7TkZDX05DSSYjMzQ7LAogICAgJiMzNDtJMkMmIzM0OywKICAgICYjMzQ7TkZDX1NUX05DSSYjMzQ7LAogICAgJiMzNDtORkNfU1RfTkNJX0kyQyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O25kbGNfcHJvYmUmIzM0OywKICAgICYjMzQ7bmRsY19yZWN2JiMzNDssCiAgICAmIzM0O25kbGNfc2VuZCYjMzQ7LAogICAgJiMzNDtuZGxjX2Nsb3NlJiMzNDssCiAgICAmIzM0O3N0X25jaV9kaXNjb3Zlcl9zZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHRoZSBTVDIxTkZDRCBORkMgY29udHJvbGxlciwgd2hpY2ggdXNlcyByYXcgTkNJIG92ZXIgSTJDIGluc3RlYWQgb2YgdGhlIE5ETEMgcHJvdG9jb2wuIEl0IGludHJvZHVjZXMgYSBuZXcgYHJhd19uY2lgIGZsYWcgdGhhdCBtb2RpZmllcyB0aGUgYmVoYXZpb3Igb2YgcmVhZGluZyBmcm9tIHRoZSBJMkMgYnVzLCBzZW5kaW5nL3JlY2VpdmluZyBOQ0kgZnJhbWVzLCBhbmQgaW5pdGlhbGl6aW5nIHRoZSBkZXZpY2UuIFRoZSBJMkMgZHJpdmVyIGNhbiBiZSBpbnN0YW50aWF0ZWQgYW5kIGZ1enplZCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMCAyMTowNDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIwIDIxOjA0PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgc3VwcG9ydCBmb3IgYSBuZXcgTkZDIGNoaXAgKFNUMjFORkNEKSB3aGljaCB1c2VzIHJhdyBOQ0kgZnJhbWVzIG92ZXIgSTJDIGluc3RlYWQgb2YgdGhlIE5ETEMgcHJvdG9jb2wuIFRoZSBjaGFuZ2VzIHByaW1hcmlseSBpbnZvbHZlIHJlYWRpbmcgZGF0YSBmcm9tIHRoZSBJMkMgYnVzIGludG8gYSBsb2NhbCBzdGFjayBidWZmZXIsIGFsbG9jYXRpbmcgYW4gc2tfYnVmZiwgYW5kIGNvcHlpbmcgdGhlIHJlY2VpdmVkIGRhdGEgaW50byBpdC4gVGhlIGNvZGUgZXhwbGljaXRseSBjaGVja3MgdGhlIHJldHVybiB2YWx1ZXMgb2YgYGkyY19tYXN0ZXJfcmVjdmAgdG8gZW5zdXJlIHRoYXQgdGhlIGJ1ZmZlciBpcyBmdWxseSBpbml0aWFsaXplZCBiZWZvcmUgYW55IGRhdGEgaXMgcmVhZCBmcm9tIGl0IG9yIGNvcGllZCB0byB0aGUgc2tfYnVmZi4gVGhlcmUgYXJlIG5vIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdpdGggcGFkZGluZyBiZWluZyBzZW50IHRvIHVzZXIgc3BhY2UsIG5vciBhcmUgdGhlcmUgYW55IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzIHVzZWQgaW4gY29udHJvbCBmbG93LiBBbnkgcG90ZW50aWFsIG1lbW9yeSBjb3JydXB0aW9uLCBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzIGluIHRoaXMgY29kZSB3b3VsZCBiZSBlZmZlY3RpdmVseSBjYXVnaHQgYnkgS0FTQU4uIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBqdXN0aWZpZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5CmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kCmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikKZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuCgpDUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjoKLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlCiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOCiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUAogIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuCi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsCiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLgoKUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTiwKTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy4KQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWQpzZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrcwp0aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLgoKTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3QKdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsCmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5cwp0aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZwp1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wKZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLApjYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy4KClNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczoKMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2IKICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHMKICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC4KMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcwogICBvciBzdHJ1Y3QgZmllbGRzLgozLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzCiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuCjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzCiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy4KClNldCBOZWVkc0tNU0FOPWZhbHNlIElGOgotIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyCiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0CiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLgotIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkCiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLgotIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4KClVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGUKZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDU5ZmIwODI0YmVjNGQxMDI2M2U0ODViNWFjYjc3NTc5NDNiMmIyYmMKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVGh1IEF1ZyAyMCAyMTowMTo1MyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbmZjL3N0LHN0LW5jaS55YW1sIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9uZmMvc3Qsc3QtbmNpLnlhbWwKaW5kZXggMWRjYmRkYmM1YTc0ZS4uYzg1OTc5N2Y0MjJiYyAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9uZmMvc3Qsc3QtbmNpLnlhbWwKJiM0MzsmIzQzOyYjNDM7IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9uZmMvc3Qsc3QtbmNpLnlhbWwKQEAgLTE1LDYgJiM0MzsxNSw3IEBAIHByb3BlcnRpZXM6CiAgICAgICAtIHN0LHN0MjFuZmNiLWkyYwogICAgICAgLSBzdCxzdDIxbmZjYi1zcGkKICAgICAgIC0gc3Qsc3QyMW5mY2MtaTJjCiYjNDM7ICAgICAgLSBzdCxzdDIxbmZjZAogCiAgIHJlc2V0LWdwaW9zOgogICAgIGRlc2NyaXB0aW9uOiBPdXRwdXQgR1BJTyBwaW4gdXNlZCBmb3IgcmVzZXR0aW5nIHRoZSBjb250cm9sbGVyCkBAIC0zNiw2ICYjNDM7MzcsMTUgQEAgcHJvcGVydGllczoKICAgICAgIFNwZWNpZmllcyB0aGF0IHRoZSB1aWNjIHN3cCBzaWduYWwgY2FuIGJlIHBoeXNpY2FsbHkgY29ubmVjdGVkIHRvIHRoZQogICAgICAgY29udHJvbGxlcgogCiYjNDM7ICBjbG9ja3M6CiYjNDM7ICAgIG1heEl0ZW1zOiAxCiYjNDM7ICAgIGRlc2NyaXB0aW9uOgomIzQzOyAgICAgIEV4dGVybmFsIHJlZmVyZW5jZSBjbG9jayBjb25uZWN0ZWQgdG8gU1lTX0NMSy4KJiM0MzsKJiM0MzsgIHZkZC1pby1zdXBwbHk6CiYjNDM7ICAgIGRlc2NyaXB0aW9uOgomIzQzOyAgICAgIERpZ2l0YWwgSS9PIHN1cHBseSAoVlBTX0lPKS4KJiM0MzsKIHJlcXVpcmVkOgogICAtIGNvbXBhdGlibGUKICAgLSBpbnRlcnJ1cHRzCkBAIC00OSw2ICYjNDM7NTksNyBAQCBpZjoKICAgICAgICAgZW51bToKICAgICAgICAgICAtIHN0LHN0MjFuZmNiLWkyYwogICAgICAgICAgIC0gc3Qsc3QyMW5mY2MtaTJjCiYjNDM7ICAgICAgICAgIC0gc3Qsc3QyMW5mY2QKIHRoZW46CiAgIHByb3BlcnRpZXM6CiAgICAgc3BpLW1heC1mcmVxdWVuY3k6IGZhbHNlCkBAIC04MSw2ICYjNDM7OTIsMjYgQEAgZXhhbXBsZXM6CiAgICAgICAgIH07CiAgICAgfTsKIAomIzQzOyAgLSB8CiYjNDM7ICAgICNpbmNsdWRlICZsdDtkdC1iaW5kaW5ncy9ncGlvL2dwaW8uaCZndDsKJiM0MzsgICAgI2luY2x1ZGUgJmx0O2R0LWJpbmRpbmdzL2ludGVycnVwdC1jb250cm9sbGVyL2lycS5oJmd0OwomIzQzOwomIzQzOyAgICBpMmMgewomIzQzOyAgICAgICAgI2FkZHJlc3MtY2VsbHMgPSAmbHQ7MSZndDs7CiYjNDM7ICAgICAgICAjc2l6ZS1jZWxscyA9ICZsdDswJmd0OzsKJiM0MzsKJiM0MzsgICAgICAgIG5mY0A4IHsKJiM0MzsgICAgICAgICAgICBjb21wYXRpYmxlID0gJiMzNDtzdCxzdDIxbmZjZCYjMzQ7OwomIzQzOyAgICAgICAgICAgIHJlZyA9ICZsdDsweDA4Jmd0OzsKJiM0MzsKJiM0MzsgICAgICAgICAgICBpbnRlcnJ1cHRzLWV4dGVuZGVkID0gJmx0OyZhbXA7Z3BpbzUgMiBJUlFfVFlQRV9MRVZFTF9ISUdIJmd0OzsKJiM0MzsgICAgICAgICAgICByZXNldC1ncGlvcyA9ICZsdDsmYW1wO2dwaW81IDI5IEdQSU9fQUNUSVZFX0hJR0gmZ3Q7OwomIzQzOwomIzQzOyAgICAgICAgICAgIGNsb2NrcyA9ICZsdDsmYW1wO2NsayZndDs7CiYjNDM7ICAgICAgICAgICAgdmRkLWlvLXN1cHBseSA9ICZsdDsmYW1wO3ZkZF9pbyZndDs7CiYjNDM7ICAgICAgICB9OwomIzQzOyAgICB9OwomIzQzOwogICAtIHwKICAgICAjaW5jbHVkZSAmbHQ7ZHQtYmluZGluZ3MvZ3Bpby9ncGlvLmgmZ3Q7CiAgICAgI2luY2x1ZGUgJmx0O2R0LWJpbmRpbmdzL2ludGVycnVwdC1jb250cm9sbGVyL2lycS5oJmd0OwpkaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9ib290L2R0cy9xY29tL3FjbTY0OTAtZmFpcnBob25lLWZwNS5kdHMgYi9hcmNoL2FybTY0L2Jvb3QvZHRzL3Fjb20vcWNtNjQ5MC1mYWlycGhvbmUtZnA1LmR0cwppbmRleCAwNGNiOTIzMGQyOWZkLi5lZjY2MDc5YTAyNjNjIDEwMDY0NAotLS0gYS9hcmNoL2FybTY0L2Jvb3QvZHRzL3Fjb20vcWNtNjQ5MC1mYWlycGhvbmUtZnA1LmR0cwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL2FybTY0L2Jvb3QvZHRzL3Fjb20vcWNtNjQ5MC1mYWlycGhvbmUtZnA1LmR0cwpAQCAtOTA4LDcgJiM0Mzs5MDgsMjMgQEAgcmVkcml2ZXJfc3NfaW46IGVuZHBvaW50IHsKICZhbXA7aTJjOSB7CiAJc3RhdHVzID0gJiMzNDtva2F5JiMzNDs7CiAKLQkvKiBTVDIxTkZDIE5GQyBAIDI4ICovCiYjNDM7CW5mY0A4IHsKJiM0MzsJCWNvbXBhdGlibGUgPSAmIzM0O3N0LHN0MjFuZmNkJiMzNDs7CiYjNDM7CQlyZWcgPSAmbHQ7MHgwOCZndDs7CiYjNDM7CiYjNDM7CQlpbnRlcnJ1cHRzLWV4dGVuZGVkID0gJmx0OyZhbXA7dGxtbSA0MSBJUlFfVFlQRV9MRVZFTF9ISUdIJmd0OzsKJiM0MzsJCXJlc2V0LWdwaW9zID0gJmx0OyZhbXA7dGxtbSAzOCBHUElPX0FDVElWRV9ISUdIJmd0OzsKJiM0MzsKJiM0MzsJCXBpbmN0cmwtMCA9ICZsdDsmYW1wO25mY19kZWZhdWx0Jmd0OzsKJiM0MzsJCXBpbmN0cmwtbmFtZXMgPSAmIzM0O2RlZmF1bHQmIzM0OzsKJiM0MzsKJiM0MzsJCWNsb2NrcyA9ICZsdDsmYW1wO3JwbWhjYyBSUE1IX0xOX0JCX0NMSzImZ3Q7OwomIzQzOwkJdmRkLWlvLXN1cHBseSA9ICZsdDsmYW1wO3ZyZWdfbDE4YiZndDs7CiYjNDM7CiYjNDM7CQllc2UtcHJlc2VudDsKJiM0MzsJCXVpY2MtcHJlc2VudDsKJiM0MzsJfTsKJiM0MzsKIAkvKiBWTDUzTDMgVG9GIEAgMjkgKi8KIH07CiAKQEAgLTE0MTAsNiAmIzQzOzE0MjYsMjIgQEAgaGFsbF9zZW5zb3JfZGVmYXVsdDogaGFsbC1zZW5zb3ItZGVmYXVsdC1zdGF0ZSB7CiAJCWRyaXZlLXN0cmVuZ3RoID0gJmx0OzImZ3Q7OwogCQliaWFzLXB1bGwtdXA7CiAJfTsKJiM0MzsKJiM0MzsJbmZjX2RlZmF1bHQ6IG5mYy1kZWZhdWx0LXN0YXRlIHsKJiM0MzsJCXJlc2V0LXBpbnMgewomIzQzOwkJCXBpbnMgPSAmIzM0O2dwaW8zOCYjMzQ7OwomIzQzOwkJCWZ1bmN0aW9uID0gJiMzNDtncGlvJiMzNDs7CiYjNDM7CQkJZHJpdmUtc3RyZW5ndGggPSAmbHQ7MiZndDs7CiYjNDM7CQkJYmlhcy1kaXNhYmxlOwomIzQzOwkJfTsKJiM0MzsKJiM0MzsJCWludC1waW5zIHsKJiM0MzsJCQlwaW5zID0gJiMzNDtncGlvNDEmIzM0OzsKJiM0MzsJCQlmdW5jdGlvbiA9ICYjMzQ7Z3BpbyYjMzQ7OwomIzQzOwkJCWRyaXZlLXN0cmVuZ3RoID0gJmx0OzImZ3Q7OwomIzQzOwkJCWJpYXMtZGlzYWJsZTsKJiM0MzsJCX07CiYjNDM7CX07CiB9OwogCiAmYW1wO3VhcnQ1IHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmZjL3N0LW5jaS9jb3JlLmMgYi9kcml2ZXJzL25mYy9zdC1uY2kvY29yZS5jCmluZGV4IGEzNjcxMzZkNDMzMGEuLjIzNTZmMTZiODA3MDYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmZjL3N0LW5jaS9jb3JlLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZmMvc3QtbmNpL2NvcmUuYwpAQCAtMTgsOCAmIzQzOzE4LDEzIEBACiAKIHN0YXRpYyBpbnQgc3RfbmNpX2luaXQoc3RydWN0IG5jaV9kZXYgKm5kZXYpCiB7CiYjNDM7CXN0cnVjdCBzdF9uY2lfaW5mbyAqaW5mbyA9IG5jaV9nZXRfZHJ2ZGF0YShuZGV2KTsKIAlzdHJ1Y3QgbmNpX21vZGVfc2V0X2NtZCBjbWQ7CiAKJiM0MzsJLyogU1QyMU5GQ0QgaGFzIG5vIE5ETEMgcHJvcHJpZXRhcnkgU0VUX05GQ19NT0RFICovCiYjNDM7CWlmIChpbmZvLSZndDtuZGxjLSZndDtyYXdfbmNpKQomIzQzOwkJcmV0dXJuIDA7CiYjNDM7CiAJY21kLmNtZF90eXBlID0gU1RfTkNJX1NFVF9ORkNfTU9ERTsKIAljbWQubW9kZSA9IDE7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmZjL3N0LW5jaS9pMmMuYyBiL2RyaXZlcnMvbmZjL3N0LW5jaS9pMmMuYwppbmRleCAxNTJjMjBiNmJiMDFhLi5jZmRkYjdmZmUwMmE0IDEwMDY0NAotLS0gYS9kcml2ZXJzL25mYy9zdC1uY2kvaTJjLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZmMvc3QtbmNpL2kyYy5jCkBAIC0xMCwxMCAmIzQzOzEwLDEzIEBACiAjaW5jbHVkZSAmbHQ7bGludXgvaTJjLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvZ3Bpby9jb25zdW1lci5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L2FjcGkuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvY2xrLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvaW50ZXJydXB0LmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvZGVsYXkuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9uZmMuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9vZi5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9wcm9wZXJ0eS5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9yZWd1bGF0b3IvY29uc3VtZXIuaCZndDsKIAogI2luY2x1ZGUgJiMzNDtzdC1uY2kuaCYjMzQ7CiAKQEAgLTIyLDEwICYjNDM7MjUsMTcgQEAKIC8qIG5kbGMgaGVhZGVyICovCiAjZGVmaW5lIFNUX05DSV9GUkFNRV9IRUFEUk9PTSAxCiAjZGVmaW5lIFNUX05DSV9GUkFNRV9UQUlMUk9PTSAwCiYjNDM7I2RlZmluZSBTVF9OQ0lfUkFXX0ZSQU1FX0hFQURST09NIDAKIAogI2RlZmluZSBTVF9OQ0lfSTJDX01JTl9TSVpFIDQgICAvKiBQQ0IoMSkgJiM0MzsgTkNJIFBhY2tldCBoZWFkZXIoMykgKi8KJiM0MzsjZGVmaW5lIFNUX05DSV9OQ0lfSERSX1NJWkUgMyAgIC8qIHJhdyBOQ0k6IE1UL1BCRi9HSUQgJiM0MzsgT0lEICYjNDM7IGxlbiAqLwogI2RlZmluZSBTVF9OQ0lfSTJDX01BWF9TSVpFIDI1MCAvKiByZXEgNC4yLjEgKi8KIAomIzQzO2VudW0gc3RfbmNpX2kyY19wcm90byB7CiYjNDM7CVNUX05DSV9JMkNfUFJPVE9fTkRMQyA9IDAsCiYjNDM7CVNUX05DSV9JMkNfUFJPVE9fUkFXX05DSSwKJiM0Mzt9OwomIzQzOwogI2RlZmluZSBTVF9OQ0lfRFJJVkVSX05BTUUgJiMzNDtzdF9uY2kmIzM0OwogI2RlZmluZSBTVF9OQ0lfSTJDX0RSSVZFUl9OQU1FICYjMzQ7c3RfbmNpX2kyYyYjMzQ7CiAKQEAgLTM0LDYgJiM0Mzs0NCw3IEBAIHN0cnVjdCBzdF9uY2lfaTJjX3BoeSB7CiAJc3RydWN0IGxsdF9uZGxjICpuZGxjOwogCiAJYm9vbCBpcnFfYWN0aXZlOwomIzQzOwlib29sIHJhd19uY2k7CiAKIAlzdHJ1Y3QgZ3Bpb19kZXNjICpncGlvZF9yZXNldDsKIApAQCAtMTExLDYgJiM0MzsxMjIsNDIgQEAgc3RhdGljIGludCBzdF9uY2lfaTJjX3JlYWQoc3RydWN0IHN0X25jaV9pMmNfcGh5ICpwaHksCiAJdTggYnVmW1NUX05DSV9JMkNfTUFYX1NJWkVdOwogCXN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQgPSBwaHktJmd0O2kyY19kZXY7CiAKJiM0MzsJaWYgKHBoeS0mZ3Q7cmF3X25jaSkgewomIzQzOwkJciA9IGkyY19tYXN0ZXJfcmVjdihjbGllbnQsIGJ1ZiwgU1RfTkNJX05DSV9IRFJfU0laRSk7CiYjNDM7CQlpZiAociAmbHQ7IDApIHsKJiM0MzsJCQl1c2xlZXBfcmFuZ2UoMTAwMCwgNDAwMCk7CiYjNDM7CQkJciA9IGkyY19tYXN0ZXJfcmVjdihjbGllbnQsIGJ1ZiwgU1RfTkNJX05DSV9IRFJfU0laRSk7CiYjNDM7CQl9CiYjNDM7CQlpZiAociAhPSBTVF9OQ0lfTkNJX0hEUl9TSVpFKQomIzQzOwkJCXJldHVybiAtRVJFTU9URUlPOwomIzQzOwomIzQzOwkJbGVuID0gYnVmWzJdOwomIzQzOwkJaWYgKGxlbiAmZ3Q7IFNUX05DSV9JMkNfTUFYX1NJWkUpIHsKJiM0MzsJCQluZmNfZXJyKCZhbXA7Y2xpZW50LSZndDtkZXYsICYjMzQ7aW52YWxpZCBmcmFtZSBsZW5cbiYjMzQ7KTsKJiM0MzsJCQlyZXR1cm4gLUVCQURNU0c7CiYjNDM7CQl9CiYjNDM7CiYjNDM7CQkqc2tiID0gYWxsb2Nfc2tiKFNUX05DSV9OQ0lfSERSX1NJWkUgJiM0MzsgbGVuLCBHRlBfS0VSTkVMKTsKJiM0MzsJCWlmICghKnNrYikKJiM0MzsJCQlyZXR1cm4gLUVOT01FTTsKJiM0MzsKJiM0MzsJCXNrYl9wdXQoKnNrYiwgU1RfTkNJX05DSV9IRFJfU0laRSk7CiYjNDM7CQltZW1jcHkoKCpza2IpLSZndDtkYXRhLCBidWYsIFNUX05DSV9OQ0lfSERSX1NJWkUpOwomIzQzOwomIzQzOwkJaWYgKCFsZW4pCiYjNDM7CQkJcmV0dXJuIDA7CiYjNDM7CiYjNDM7CQlyID0gaTJjX21hc3Rlcl9yZWN2KGNsaWVudCwgYnVmLCBsZW4pOwomIzQzOwkJaWYgKHIgIT0gbGVuKSB7CiYjNDM7CQkJa2ZyZWVfc2tiKCpza2IpOwomIzQzOwkJCXJldHVybiAtRVJFTU9URUlPOwomIzQzOwkJfQomIzQzOwomIzQzOwkJc2tiX3B1dCgqc2tiLCBsZW4pOwomIzQzOwkJbWVtY3B5KCgqc2tiKS0mZ3Q7ZGF0YSAmIzQzOyBTVF9OQ0lfTkNJX0hEUl9TSVpFLCBidWYsIGxlbik7CiYjNDM7CQlyZXR1cm4gMDsKJiM0MzsJfQomIzQzOwogCXIgPSBpMmNfbWFzdGVyX3JlY3YoY2xpZW50LCBidWYsIFNUX05DSV9JMkNfTUlOX1NJWkUpOwogCWlmIChyICZsdDsgMCkgeyAgLyogUmV0cnksIGNoaXAgd2FzIGluIHN0YW5kYnkgKi8KIAkJdXNsZWVwX3JhbmdlKDEwMDAsIDQwMDApOwpAQCAtMjExLDYgJiM0MzsyNTgsOCBAQCBzdGF0aWMgaW50IHN0X25jaV9pMmNfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKIAkJcmV0dXJuIC1FTk9NRU07CiAKIAlwaHktJmd0O2kyY19kZXYgPSBjbGllbnQ7CiYjNDM7CXBoeS0mZ3Q7cmF3X25jaSA9ICh1aW50cHRyX3QpZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldikgPT0KJiM0MzsJCQlTVF9OQ0lfSTJDX1BST1RPX1JBV19OQ0k7CiAKIAlpMmNfc2V0X2NsaWVudGRhdGEoY2xpZW50LCBwaHkpOwogCkBAIC0yMjUsMTkgJiM0MzsyNzQsMzEgQEAgc3RhdGljIGludCBzdF9uY2lfaTJjX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCiAJCXJldHVybiAtRU5PREVWOwogCX0KIAomIzQzOwlyID0gZGV2bV9yZWd1bGF0b3JfZ2V0X2VuYWJsZV9vcHRpb25hbChkZXYsICYjMzQ7dmRkLWlvJiMzNDspOwomIzQzOwlpZiAociAmYW1wOyZhbXA7IHIgIT0gLUVOT0RFVikKJiM0MzsJCXJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgciwgJiMzNDtmYWlsZWQgdG8gZW5hYmxlIHZkZC1pb1xuJiMzNDspOwomIzQzOwomIzQzOwlyID0gUFRSX0VSUl9PUl9aRVJPKGRldm1fY2xrX2dldF9vcHRpb25hbF9lbmFibGVkKGRldiwgTlVMTCkpOwomIzQzOwlpZiAocikKJiM0MzsJCXJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgciwgJiMzNDtmYWlsZWQgdG8gZW5hYmxlIGNsb2NrXG4mIzM0Oyk7CiYjNDM7CiAJcGh5LSZndDtzZV9zdGF0dXMuaXNfZXNlX3ByZXNlbnQgPQogCQkJCWRldmljZV9wcm9wZXJ0eV9yZWFkX2Jvb2woZGV2LCAmIzM0O2VzZS1wcmVzZW50JiMzNDspOwogCXBoeS0mZ3Q7c2Vfc3RhdHVzLmlzX3VpY2NfcHJlc2VudCA9CiAJCQkJZGV2aWNlX3Byb3BlcnR5X3JlYWRfYm9vbChkZXYsICYjMzQ7dWljYy1wcmVzZW50JiMzNDspOwogCiAJciA9IG5kbGNfcHJvYmUocGh5LCAmYW1wO2kyY19waHlfb3BzLCAmYW1wO2NsaWVudC0mZ3Q7ZGV2LAotCQkJU1RfTkNJX0ZSQU1FX0hFQURST09NLCBTVF9OQ0lfRlJBTUVfVEFJTFJPT00sCiYjNDM7CQkJcGh5LSZndDtyYXdfbmNpID8gU1RfTkNJX1JBV19GUkFNRV9IRUFEUk9PTSA6CiYjNDM7CQkJCSAgICAgICBTVF9OQ0lfRlJBTUVfSEVBRFJPT00sCiYjNDM7CQkJU1RfTkNJX0ZSQU1FX1RBSUxST09NLAogCQkJJmFtcDtwaHktJmd0O25kbGMsICZhbXA7cGh5LSZndDtzZV9zdGF0dXMpOwogCWlmIChyICZsdDsgMCkgewogCQluZmNfZXJyKCZhbXA7Y2xpZW50LSZndDtkZXYsICYjMzQ7VW5hYmxlIHRvIHJlZ2lzdGVyIG5kbGMgbGF5ZXJcbiYjMzQ7KTsKIAkJcmV0dXJuIHI7CiAJfQogCiYjNDM7CXBoeS0mZ3Q7bmRsYy0mZ3Q7cmF3X25jaSA9IHBoeS0mZ3Q7cmF3X25jaTsKJiM0MzsKIAlwaHktJmd0O2lycV9hY3RpdmUgPSB0cnVlOwogCXIgPSBkZXZtX3JlcXVlc3RfdGhyZWFkZWRfaXJxKCZhbXA7Y2xpZW50LSZndDtkZXYsIGNsaWVudC0mZ3Q7aXJxLCBOVUxMLAogCQkJCXN0X25jaV9pcnFfdGhyZWFkX2ZuLApAQCAtMjU3LDIzICYjNDM7MzE4LDI1IEBAIHN0YXRpYyB2b2lkIHN0X25jaV9pMmNfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCiB9CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaTJjX2RldmljZV9pZCBzdF9uY2lfaTJjX2lkX3RhYmxlW10gPSB7Ci0JeyAubmFtZSA9IFNUX05DSV9EUklWRVJfTkFNRSB9LAotCXsgfQomIzQzOwl7IFNUX05DSV9EUklWRVJfTkFNRSB9LAomIzQzOwl7fQogfTsKIE1PRFVMRV9ERVZJQ0VfVEFCTEUoaTJjLCBzdF9uY2lfaTJjX2lkX3RhYmxlKTsKIAotc3RhdGljIGNvbnN0IHN0cnVjdCBhY3BpX2RldmljZV9pZCBzdF9uY2lfaTJjX2FjcGlfbWF0Y2hbXSA9IHsKLQl7IC5pZCA9ICYjMzQ7U01PMjEwMSYjMzQ7IH0sCi0JeyAuaWQgPSAmIzM0O1NNTzIxMDImIzM0OyB9LAotCXsgfQomIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgYWNwaV9kZXZpY2VfaWQgc3RfbmNpX2kyY19hY3BpX21hdGNoW10gX19tYXliZV91bnVzZWQgPSB7CiYjNDM7CXsmIzM0O1NNTzIxMDEmIzM0O30sCiYjNDM7CXsmIzM0O1NNTzIxMDImIzM0O30sCiYjNDM7CXt9CiB9OwogTU9EVUxFX0RFVklDRV9UQUJMRShhY3BpLCBzdF9uY2lfaTJjX2FjcGlfbWF0Y2gpOwogCi1zdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBvZl9zdF9uY2lfaTJjX21hdGNoW10gPSB7Ci0JeyAuY29tcGF0aWJsZSA9ICYjMzQ7c3Qsc3QyMW5mY2ItaTJjJiMzNDsgfSwKLQl7IC5jb21wYXRpYmxlID0gJiMzNDtzdCxzdDIxbmZjYl9pMmMmIzM0OyB9LAotCXsgLmNvbXBhdGlibGUgPSAmIzM0O3N0LHN0MjFuZmNjLWkyYyYjMzQ7IH0sCi0JeyB9CiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgb2Zfc3RfbmNpX2kyY19tYXRjaFtdIF9fbWF5YmVfdW51c2VkID0gewomIzQzOwl7IC5jb21wYXRpYmxlID0gJiMzNDtzdCxzdDIxbmZjYi1pMmMmIzM0OywgfSwKJiM0MzsJeyAuY29tcGF0aWJsZSA9ICYjMzQ7c3Qsc3QyMW5mY2JfaTJjJiMzNDssIH0sCiYjNDM7CXsgLmNvbXBhdGlibGUgPSAmIzM0O3N0LHN0MjFuZmNjLWkyYyYjMzQ7LCB9LAomIzQzOwl7IC5jb21wYXRpYmxlID0gJiMzNDtzdCxzdDIxbmZjZCYjMzQ7LAomIzQzOwkgIC5kYXRhID0gKHZvaWQgKilTVF9OQ0lfSTJDX1BST1RPX1JBV19OQ0kgfSwKJiM0MzsJe30KIH07CiBNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBvZl9zdF9uY2lfaTJjX21hdGNoKTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZmMvc3QtbmNpL25kbGMuYyBiL2RyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmMKaW5kZXggYmU0ODA4ODU5Y2ZhOS4uYjMxOTI0NjBjOTZlMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZmMvc3QtbmNpL25kbGMuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25mYy9zdC1uY2kvbmRsYy5jCkBAIC02Miw4ICYjNDM7NjIsOSBAQCB2b2lkIG5kbGNfY2xvc2Uoc3RydWN0IGxsdF9uZGxjICpuZGxjKQogCS8qIHRvZ2dsZSByZXNldCBwaW4gKi8KIAluZGxjLSZndDtvcHMtJmd0O2VuYWJsZShuZGxjLSZndDtwaHlfaWQpOwogCi0JbmNpX3Byb3BfY21kKG5kbGMtJmd0O25kZXYsIFNUX05DSV9DT1JFX1BST1AsCi0JCSAgICAgc2l6ZW9mKHN0cnVjdCBuY2lfbW9kZV9zZXRfY21kKSwgKF9fdTggKikmYW1wO2NtZCk7CiYjNDM7CWlmICghbmRsYy0mZ3Q7cmF3X25jaSkKJiM0MzsJCW5jaV9wcm9wX2NtZChuZGxjLSZndDtuZGV2LCBTVF9OQ0lfQ09SRV9QUk9QLAomIzQzOwkJCSAgICAgc2l6ZW9mKHN0cnVjdCBuY2lfbW9kZV9zZXRfY21kKSwgKF9fdTggKikmYW1wO2NtZCk7CiAKIAluZGxjLSZndDtwb3dlcmVkID0gMDsKIAluZGxjLSZndDtvcHMtJmd0O2Rpc2FibGUobmRsYy0mZ3Q7cGh5X2lkKTsKQEAgLTcyLDExICYjNDM7NzMsMTMgQEAgRVhQT1JUX1NZTUJPTChuZGxjX2Nsb3NlKTsKIAogaW50IG5kbGNfc2VuZChzdHJ1Y3QgbGx0X25kbGMgKm5kbGMsIHN0cnVjdCBza19idWZmICpza2IpCiB7Ci0JLyogYWRkIG5kbGMgaGVhZGVyICovCi0JdTggcGNiID0gUENCX1RZUEVfREFUQUZSQU1FIHwgUENCX0RBVEFGUkFNRV9SRVRSQU5TTUlUX05PIHwKLQkJUENCX0ZSQU1FX0NSQ19JTkZPX05PVFBSRVNFTlQ7CiYjNDM7CWlmICghbmRsYy0mZ3Q7cmF3X25jaSkgewomIzQzOwkJLyogYWRkIG5kbGMgaGVhZGVyICovCiYjNDM7CQl1OCBwY2IgPSBQQ0JfVFlQRV9EQVRBRlJBTUUgfCBQQ0JfREFUQUZSQU1FX1JFVFJBTlNNSVRfTk8gfAomIzQzOwkJCVBDQl9GUkFNRV9DUkNfSU5GT19OT1RQUkVTRU5UOwogCi0JKih1OCAqKXNrYl9wdXNoKHNrYiwgMSkgPSBwY2I7CiYjNDM7CQkqKHU4ICopc2tiX3B1c2goc2tiLCAxKSA9IHBjYjsKJiM0MzsJfQogCXNrYl9xdWV1ZV90YWlsKCZhbXA7bmRsYy0mZ3Q7c2VuZF9xLCBza2IpOwogCiAJc2NoZWR1bGVfd29yaygmYW1wO25kbGMtJmd0O3NtX3dvcmspOwpAQCAtMTAzLDYgJiM0MzsxMDYsMTAgQEAgc3RhdGljIHZvaWQgbGx0X25kbGNfc2VuZF9xdWV1ZShzdHJ1Y3QgbGx0X25kbGMgKm5kbGMpCiAJCQluZGxjLSZndDtoYXJkX2ZhdWx0ID0gcjsKIAkJCWJyZWFrOwogCQl9CiYjNDM7CQlpZiAobmRsYy0mZ3Q7cmF3X25jaSkgewomIzQzOwkJCWtmcmVlX3NrYihza2IpOwomIzQzOwkJCWNvbnRpbnVlOwomIzQzOwkJfQogCQl0aW1lX3NlbnQgPSBqaWZmaWVzOwogCQkqKHVuc2lnbmVkIGxvbmcgKilza2ItJmd0O2NiID0gdGltZV9zZW50OwogCkBAIC0xNTQsNiAmIzQzOzE2MSwxMCBAQCBzdGF0aWMgdm9pZCBsbHRfbmRsY19yY3ZfcXVldWUoc3RydWN0IGxsdF9uZGxjICpuZGxjKQogCQlwcl9kZWJ1ZygmIzM0O3JjdlFsZW49JWRcbiYjMzQ7LCBuZGxjLSZndDtyY3ZfcS5xbGVuKTsKIAogCXdoaWxlICgoc2tiID0gc2tiX2RlcXVldWUoJmFtcDtuZGxjLSZndDtyY3ZfcSkpICE9IE5VTEwpIHsKJiM0MzsJCWlmIChuZGxjLSZndDtyYXdfbmNpKSB7CiYjNDM7CQkJbmNpX3JlY3ZfZnJhbWUobmRsYy0mZ3Q7bmRldiwgc2tiKTsKJiM0MzsJCQljb250aW51ZTsKJiM0MzsJCX0KIAkJcGNiID0gc2tiLSZndDtkYXRhWzBdOwogCQlza2JfcHVsbChza2IsIDEpOwogCQlpZiAoKHBjYiAmYW1wOyBQQ0JfVFlQRV9NQVNLKSA9PSBQQ0JfVFlQRV9TVVBFUlZJU09SKSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25mYy9zdC1uY2kvbmRsYy5oIGIvZHJpdmVycy9uZmMvc3QtbmNpL25kbGMuaAppbmRleCBjMjRjZTliMGRmNTJlLi41YzFmOGJhZjA0NzE4IDEwMDY0NAotLS0gYS9kcml2ZXJzL25mYy9zdC1uY2kvbmRsYy5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmgKQEAgLTM5LDYgJiM0MzszOSw4IEBAIHN0cnVjdCBsbHRfbmRsYyB7CiAJICovCiAJaW50IGhhcmRfZmF1bHQ7CiAJaW50IHBvd2VyZWQ7CiYjNDM7CS8qIFNUMjFORkNEOiByYXcgTkNJIG9uIHRoZSB3aXJlLCBubyBORExDIFBDQiAvIEFDSyB0aW1lcnMgKi8KJiM0MzsJYm9vbCByYXdfbmNpOwogfTsKIAogaW50IG5kbGNfb3BlbihzdHJ1Y3QgbGx0X25kbGMgKm5kbGMpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZmMvc3QtbmNpL3NlLmMgYi9kcml2ZXJzL25mYy9zdC1uY2kvc2UuYwppbmRleCA2MDdlYzc2OGViN2I0Li40NGNjMTAyYmNkZTIxIDEwMDY0NAotLS0gYS9kcml2ZXJzL25mYy9zdC1uY2kvc2UuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25mYy9zdC1uY2kvc2UuYwpAQCAtNjIxLDYgJiM0Mzs2MjEsOSBAQCBpbnQgc3RfbmNpX2Rpc2NvdmVyX3NlKHN0cnVjdCBuY2lfZGV2ICpuZGV2KQogCWludCBzZV9jb3VudCA9IDA7CiAJc3RydWN0IHN0X25jaV9pbmZvICppbmZvID0gbmNpX2dldF9kcnZkYXRhKG5kZXYpOwogCiYjNDM7CWlmIChpbmZvLSZndDtuZGxjLSZndDtyYXdfbmNpKQomIzQzOwkJcmV0dXJuIDA7CiYjNDM7CiAJciA9IHN0X25jaV9oY2lfbmV0d29ya19pbml0KG5kZXYpOwogCWlmIChyICE9IDApCiAJCXJldHVybiByOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjAgMjE6MDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjkxNQoJCQkJCQkJb3V0cHV0OiAyMDEKCQkJCQkJCXRob3VnaHRzOiAzNTU2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKktNU0FOIEFuYWx5c2lzIG9mIFNUMjFORkNEIFJhdyBOQ0kgU3VwcG9ydCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBUaGlzIHBhdGNoIGlzIGFkZGluZyBzdXBwb3J0IGZvciBhIG5ldyBORkMgY2hpcCwgdGhlIFNUMjFORkNELCB0byB0aGUgYHN0LW5jaWAgZHJpdmVyLiBUaGUga2V5IGRpZmZlcmVuY2UgaGVyZSBpcyB0aGUgdXNlIG9mICYjMzQ7cmF3IE5DSSYjMzQ7IG92ZXIgSTJDIGluc3RlYWQgb2YgdGhlIG1vcmUgY29tcGxleCBORExDIHByb3RvY29sLiBUaGUgZHJpdmVyJiMzOTtzIGBpMmMuY2AgZmlsZSBoYXMgdGhlIG5ldyBsb2dpYyBmb3IgaGFuZGxpbmcgdGhpcyByYXcgTkNJIG1vZGUuCgpUaGUgY3JpdGljYWwgcGFydCBpcyB3aXRoaW4gdGhlIGBzdF9uY2lfaTJjX3JlYWRgIGZ1bmN0aW9uLiBJdCByZWFkcyBkYXRhIGZyb20gdGhlIEkyQyBkZXZpY2UgaW50byBhIGxvY2FsIGJ1ZmZlciAoYGJ1ZmApLiBJdCBhcHBlYXJzIHRoZSBjb2RlIHJlYWRzIHRoZSBOQ0kgaGVhZGVyIGZpcnN0LCB0aGVuIGRldGVybWluZXMgdGhlIHBheWxvYWQgbGVuZ3RoIGZyb20gdGhlIGhlYWRlciwgYW5kIHRoZW4gcmVhZHMgdGhlIGFjdHVhbCBwYXlsb2FkLiBBIGNvdXBsZSBvZiBpbXBvcnRhbnQgY2hlY2tzIGFyZSBpbiBwbGFjZTogaWYgdGhlIGZpcnN0IGBpMmNfbWFzdGVyX3JlY3ZgIGZhaWxzLCBpdCB0cmllcyBhZ2Fpbi4gVGhlbiwgaXQgdmFsaWRhdGVzIHRoZSBwYXlsb2FkIGxlbmd0aCAoYGxlbmApIHRvIG1ha2Ugc3VyZSBpdCYjMzk7cyB3aXRoaW4gdGhlIHBlcm1pc3NpYmxlIHJhbmdlIChgU1RfTkNJX0kyQ19NQVhfU0laRWApLiBUaGlzIGxvb2tzIHNhZmUuIFRoZSBhbGxvY2F0aW9uIGFuZCBjb3B5aW5nIGludG8gdGhlIGBza2JgIGFwcGVhciB0byBiZSBkb25lIGNvcnJlY3RseSwgZW5zdXJpbmcgdGhlIGBza2JgIG9ubHkgY29udGFpbnMgaW5pdGlhbGl6ZWQgZGF0YS4KCkkmIzM5O20gY2hlY2tpbmcgaWYgdGhlIGRyaXZlciBjb3JyZWN0bHkgaGFuZGxlcyBgaTJjX21hc3Rlcl9yZWN2YCByZXR1cm5pbmcgYSBwb3NpdGl2ZSB2YWx1ZSBsZXNzIHRoYW4gdGhlIGV4cGVjdGVkIG51bWJlciBvZiBieXRlcy4gQWZ0ZXIgcmV2aWV3aW5nIGBpMmNfbWFzdGVyX3JlY3ZgJiMzOTtzIGRvY3VtZW50YXRpb24sIGl0IHJldHVybnMgdGhlIG51bWJlciBvZiBieXRlcyByZWFkLiBJZiB0aGlzIGRvZXNuJiMzOTt0IG1hdGNoIHRoZSBleHBlY3RlZCBzaXplLCB0aGUgY29kZSByZXR1cm5zIGFuIGVycm9yLCB3aGljaCBpcyBjb3JyZWN0LgoKVGhlcmUgaXMgYWxzbyBhIGNvbmNlcm4gYWJvdXQgdW5pbml0aWFsaXplZCBtZW1vcnkgaW4gdGhlIGBza2JgLiBUaGUgYGFsbG9jX3NrYmAgYWxsb2NhdGVzIHRoZSBtZW1vcnksIGJ1dCB0aGUgYHNrYl9wdXRgIGFuZCBgbWVtY3B5YCBhcmUgdGhlIHBsYWNlcyB3aGVyZSBpbml0aWFsaXplZCBkYXRhIGlzIHBsYWNlZCBpbnRvIHRoZSBgc2tiYC4gVGhlIGxvZ2ljIGFwcGVhcnMgc2FmZSBiZWNhdXNlIGBtZW1jcHlgIGNvcGllcyBleGFjdGx5IHRoZSBkYXRhIHJlYWQgZnJvbSBJMkMsIGVuc3VyaW5nIGFsbCBkYXRhIGluIHRoZSBgc2tiYCBpcyBpbml0aWFsaXplZC4KClRoZSBORExDIHByb3RvY29sIGlzIGJ5cGFzc2VkIGluIGByYXdfbmNpYCBtb2RlLiBUaHVzLCBpbiB0aGUgYG5kbGNfc2VuZGAgZnVuY3Rpb24sIHRoZSBQQ0IgYnl0ZSBpcyBub3QgcHVzaGVkIG9udG8gdGhlIHNrYi4gVGhlIGBsbHRfbmRsY19yY3ZfcXVldWVgIGZ1bmN0aW9uIGFsc28gcGFzc2VzIHRoZSBza2IgZGlyZWN0bHkgdG8gdGhlIE5DSSBmcmFtZS4gSSBoYXZlIHRvIG1ha2Ugc3VyZSBubyB1bmluaXRpYWxpemVkIG1lbW9yeSBnb2VzIGludG8gYG5jaV9yZWN2X2ZyYW1lYC4gVGhlIHJldmlldyBjb25maXJtcyB0aGUgc2tiIGhhcyB0aGUgcmlnaHQgYW1vdW50IG9mIGJ5dGVzLCB0aGUgZGF0YSBpcyBwdXNoZWQsIGFuZCBub3RoaW5nIGlzIG1pc3NlZC4gVGhlcmUgZG9lc24mIzM5O3QgYXBwZWFyIHRvIGJlIGFueSBwYWRkaW5nIG9yIGFueSBvdGhlciB1bmluaXRpYWxpemVkIG1lbW9yeSBsZWFrLgoKVGhlIHBhdGNoIGluY2x1ZGVzIHRoZSBjb2RlIGluIGBzdF9uY2lfaTJjX3Byb2JlYCB0aGF0IGNoZWNrcyBhIGZsYWc6IGBwaHktJmd0O3Jhd19uY2lgLiBJIHZlcmlmaWVkIHRoYXQgaXQmIzM5O3MganVzdCBhIGJvb2xlYW4gZmxhZy4gQWxzbywgYHN0X25jaV9pbml0YCBhdm9pZHMgc2VuZGluZyBhIGNvbW1hbmQgZm9yIHRoZSBTVDIxTkZDRCBpZiBpbiB0aGUgYHJhd19uY2lgIG1vZGUuCgpMZXQmIzM5O3MgYWxzbyBsb29rIGF0IGFueSBLTVNBTi1zcGVjaWZpYyBpc3N1ZS4gSSBhbSBzZWVpbmcgdGhlIGRyaXZlciByZWFkaW5nIGRhdGEgZnJvbSB0aGUgSTJDIGRldmljZSBpbnRvIGEgbG9jYWwgYnVmZmVyIGFuZCBjb3B5aW5nIHRoZSBkYXRhIHRvIGFuIHNrYi4gS01TQU4gaXMgZ3JlYXQgYXQgZGV0ZWN0aW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlLCBidXQgaWYgSTJDIGlzIG1vY2tlZCwgaXQgbWlnaHQgc2hvdyB1bmluaXRpYWxpemVkIG1lbW9yeSBpbiBjZXJ0YWluIG1vY2tzLiBUaGUga2V5IGlzIHRvIG1ha2Ugc3VyZSBgaTJjX21hc3Rlcl9yZWN2YCBhbHdheXMgcmV0dXJucyB0aGUgcmlnaHQgYW1vdW50IG9mIGJ5dGVzLiBTaW5jZSB0aGUgZHJpdmVyIGNvZGUgZXhwbGljaXRseSBjaGVja3MgdGhlIHJldHVybiB2YWx1ZSB0byBlbnN1cmUgdGhlIGJ1ZmZlciBpcyBmdWxseSBpbml0aWFsaXplZCwgaXQmIzM5O3Mgbm90IGEgY29uY2Vybi4gVGhlIGNvZGUgY2hlY2tzIHRoYXQgdGhlIGV4cGVjdGVkIG51bWJlciBvZiBieXRlcyBpcyByZWFkLgoKRmluYWxseSwgSSBoYXZlIHRvIGVuc3VyZSB0aGUgcGF0Y2ggZG9lcyBub3QgbGVhayB1bmluaXRpYWxpemVkIG1lbW9yeSBpbnRvIHRoZSBza2IuIFRoZXJlIGFyZSBubyBzdHJ1Y3QgcGFkZGluZyBpc3N1ZXMuIFRoZSByZWFkcyBpbiB0aGUgZHJpdmVyIHdpbGwgZW5zdXJlIGFsbCBkYXRhIGlzIGluIHRoZSBsb2NhbCBidWZmZXIuIEFuZCBpZiBldmVyeXRoaW5nIGlzIHJlYWQgZnJvbSBJMkMsIGBtZW1jcHlgIGRvZXMgYSBjb3B5IGludG8gdGhlIGBza2JgLCBhbmQgbm8gY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgYXJlIHBhcnRpYWxseSBpbml0aWFsaXplZC4gSSBkb24mIzM5O3Qgc2VlIGFueSBLTVNBTi1zcGVjaWZpYyByaXNrcyBoZXJlLgoKVGhlcmVmb3JlLCBhZnRlciBhIGNhcmVmdWwgcmV2aWV3LCBJIGJlbGlldmUgdGhlIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2UgaXMgbG93LiBBbGwgYnVmZmVycyBhcmUgaW5pdGlhbGl6ZWQsIGFuZCB0aGUgY29kZSBleHBsaWNpdGx5IGNoZWNrcyB0aGUgcmV0dXJuIHZhbHVlcyBvZiBJMkMgZnVuY3Rpb25zIHRvIGVuc3VyZSBkYXRhIGludGVncml0eS4gVGhlcmVmb3JlLCBOZWVkc0tNU0FOIHNob3VsZCBiZSBmYWxzZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjAgMjE6MDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBzdXBwb3J0IGZvciBhIG5ldyBORkMgY2hpcCAoU1QyMU5GQ0QpIHdoaWNoIHVzZXMgcmF3IE5DSSBmcmFtZXMgb3ZlciBJMkMgaW5zdGVhZCBvZiB0aGUgTkRMQyBwcm90b2NvbC4gVGhlIGNoYW5nZXMgcHJpbWFyaWx5IGludm9sdmUgcmVhZGluZyBkYXRhIGZyb20gdGhlIEkyQyBidXMgaW50byBhIGxvY2FsIHN0YWNrIGJ1ZmZlciwgYWxsb2NhdGluZyBhbiBza19idWZmLCBhbmQgY29weWluZyB0aGUgcmVjZWl2ZWQgZGF0YSBpbnRvIGl0LiBUaGUgY29kZSBleHBsaWNpdGx5IGNoZWNrcyB0aGUgcmV0dXJuIHZhbHVlcyBvZiBgaTJjX21hc3Rlcl9yZWN2YCB0byBlbnN1cmUgdGhhdCB0aGUgYnVmZmVyIGlzIGZ1bGx5IGluaXRpYWxpemVkIGJlZm9yZSBhbnkgZGF0YSBpcyByZWFkIGZyb20gaXQgb3IgY29waWVkIHRvIHRoZSBza19idWZmLiBUaGVyZSBhcmUgbm8gY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2l0aCBwYWRkaW5nIGJlaW5nIHNlbnQgdG8gdXNlciBzcGFjZSwgbm9yIGFyZSB0aGVyZSBhbnkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMgdXNlZCBpbiBjb250cm9sIGZsb3cuIEFueSBwb3RlbnRpYWwgbWVtb3J5IGNvcnJ1cHRpb24sIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgaW4gdGhpcyBjb2RlIHdvdWxkIGJlIGVmZmVjdGl2ZWx5IGNhdWdodCBieSBLQVNBTi4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IGp1c3RpZmllZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgc3VwcG9ydCBmb3IgYSBuZXcgTkZDIGNoaXAgKFNUMjFORkNEKSB3aGljaCB1c2VzIHJhdyBOQ0kgZnJhbWVzIG92ZXIgSTJDIGluc3RlYWQgb2YgdGhlIE5ETEMgcHJvdG9jb2wuIFRoZSBjaGFuZ2VzIHByaW1hcmlseSBpbnZvbHZlIHJlYWRpbmcgZGF0YSBmcm9tIHRoZSBJMkMgYnVzIGludG8gYSBsb2NhbCBzdGFjayBidWZmZXIsIGFsbG9jYXRpbmcgYW4gc2tfYnVmZiwgYW5kIGNvcHlpbmcgdGhlIHJlY2VpdmVkIGRhdGEgaW50byBpdC4gVGhlIGNvZGUgZXhwbGljaXRseSBjaGVja3MgdGhlIHJldHVybiB2YWx1ZXMgb2YgYGkyY19tYXN0ZXJfcmVjdmAgdG8gZW5zdXJlIHRoYXQgdGhlIGJ1ZmZlciBpcyBmdWxseSBpbml0aWFsaXplZCBiZWZvcmUgYW55IGRhdGEgaXMgcmVhZCBmcm9tIGl0IG9yIGNvcGllZCB0byB0aGUgc2tfYnVmZi4gVGhlcmUgYXJlIG5vIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdpdGggcGFkZGluZyBiZWluZyBzZW50IHRvIHVzZXIgc3BhY2UsIG5vciBhcmUgdGhlcmUgYW55IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzIHVzZWQgaW4gY29udHJvbCBmbG93LiBBbnkgcG90ZW50aWFsIG1lbW9yeSBjb3JydXB0aW9uLCBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzIGluIHRoaXMgY29kZSB3b3VsZCBiZSBlZmZlY3RpdmVseSBjYXVnaHQgYnkgS0FTQU4uIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBqdXN0aWZpZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIwVDIxOjAxOjU2LjM5NzcyNzgwNVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2NjE4MjkyNjQ2NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORkNcIixcbiAgICBcIk5GQ19OQ0lcIixcbiAgICBcIkkyQ1wiLFxuICAgIFwiTkZDX1NUX05DSVwiLFxuICAgIFwiTkZDX1NUX05DSV9JMkNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJuZGxjX3Byb2JlXCIsXG4gICAgXCJuZGxjX3JlY3ZcIixcbiAgICBcIm5kbGNfc2VuZFwiLFxuICAgIFwibmRsY19jbG9zZVwiLFxuICAgIFwic3RfbmNpX2Rpc2NvdmVyX3NlXCJcbiAgXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIHN1cHBvcnQgZm9yIGEgbmV3IE5GQyBjaGlwIChTVDIxTkZDRCkgd2hpY2ggdXNlcyByYXcgTkNJIGZyYW1lcyBvdmVyIEkyQyBpbnN0ZWFkIG9mIHRoZSBORExDIHByb3RvY29sLiBUaGUgY2hhbmdlcyBwcmltYXJpbHkgaW52b2x2ZSByZWFkaW5nIGRhdGEgZnJvbSB0aGUgSTJDIGJ1cyBpbnRvIGEgbG9jYWwgc3RhY2sgYnVmZmVyLCBhbGxvY2F0aW5nIGFuIHNrX2J1ZmYsIGFuZCBjb3B5aW5nIHRoZSByZWNlaXZlZCBkYXRhIGludG8gaXQuIFRoZSBjb2RlIGV4cGxpY2l0bHkgY2hlY2tzIHRoZSByZXR1cm4gdmFsdWVzIG9mIGBpMmNfbWFzdGVyX3JlY3ZgIHRvIGVuc3VyZSB0aGF0IHRoZSBidWZmZXIgaXMgZnVsbHkgaW5pdGlhbGl6ZWQgYmVmb3JlIGFueSBkYXRhIGlzIHJlYWQgZnJvbSBpdCBvciBjb3BpZWQgdG8gdGhlIHNrX2J1ZmYuIFRoZXJlIGFyZSBubyBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aXRoIHBhZGRpbmcgYmVpbmcgc2VudCB0byB1c2VyIHNwYWNlLCBub3IgYXJlIHRoZXJlIGFueSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcyB1c2VkIGluIGNvbnRyb2wgZmxvdy4gQW55IHBvdGVudGlhbCBtZW1vcnkgY29ycnVwdGlvbiwgb3V0LW9mLWJvdW5kcyBhY2Nlc3Nlcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyBpbiB0aGlzIGNvZGUgd291bGQgYmUgZWZmZWN0aXZlbHkgY2F1Z2h0IGJ5IEtBU0FOLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QganVzdGlmaWVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgdGhlIFNUMjFORkNEIE5GQyBjb250cm9sbGVyLCB3aGljaCB1c2VzIHJhdyBOQ0kgb3ZlciBJMkMgaW5zdGVhZCBvZiB0aGUgTkRMQyBwcm90b2NvbC4gSXQgaW50cm9kdWNlcyBhIG5ldyBgcmF3X25jaWAgZmxhZyB0aGF0IG1vZGlmaWVzIHRoZSBiZWhhdmlvciBvZiByZWFkaW5nIGZyb20gdGhlIEkyQyBidXMsIHNlbmRpbmcvcmVjZWl2aW5nIE5DSSBmcmFtZXMsIGFuZCBpbml0aWFsaXppbmcgdGhlIGRldmljZS4gVGhlIEkyQyBkcml2ZXIgY2FuIGJlIGluc3RhbnRpYXRlZCBhbmQgZnV6emVkIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIwVDIxOjAxOjU2LjM5NzczNDY3NVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTUxNzgwMzU2OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDU5ZmIwODI0YmVjNGQxMDI2M2U0ODViNWFjYjc3NTc5NDNiMmIyYmNcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFRodSBBdWcgMjAgMjE6MDE6NTMgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9uZmMvc3Qsc3QtbmNpLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L25mYy9zdCxzdC1uY2kueWFtbFxcbmluZGV4IDFkY2JkZGJjNWE3NGUuLmM4NTk3OTdmNDIyYmMgMTAwNjQ0XFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9uZmMvc3Qsc3QtbmNpLnlhbWxcXG4rKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L25mYy9zdCxzdC1uY2kueWFtbFxcbkBAIC0xNSw2ICsxNSw3IEBAIHByb3BlcnRpZXM6XFxuICAgICAgIC0gc3Qsc3QyMW5mY2ItaTJjXFxuICAgICAgIC0gc3Qsc3QyMW5mY2Itc3BpXFxuICAgICAgIC0gc3Qsc3QyMW5mY2MtaTJjXFxuKyAgICAgIC0gc3Qsc3QyMW5mY2RcXG4gXFxuICAgcmVzZXQtZ3Bpb3M6XFxuICAgICBkZXNjcmlwdGlvbjogT3V0cHV0IEdQSU8gcGluIHVzZWQgZm9yIHJlc2V0dGluZyB0aGUgY29udHJvbGxlclxcbkBAIC0zNiw2ICszNywxNSBAQCBwcm9wZXJ0aWVzOlxcbiAgICAgICBTcGVjaWZpZXMgdGhhdCB0aGUgdWljYyBzd3Agc2lnbmFsIGNhbiBiZSBwaHlzaWNhbGx5IGNvbm5lY3RlZCB0byB0aGVcXG4gICAgICAgY29udHJvbGxlclxcbiBcXG4rICBjbG9ja3M6XFxuKyAgICBtYXhJdGVtczogMVxcbisgICAgZGVzY3JpcHRpb246XFxuKyAgICAgIEV4dGVybmFsIHJlZmVyZW5jZSBjbG9jayBjb25uZWN0ZWQgdG8gU1lTX0NMSy5cXG4rXFxuKyAgdmRkLWlvLXN1cHBseTpcXG4rICAgIGRlc2NyaXB0aW9uOlxcbisgICAgICBEaWdpdGFsIEkvTyBzdXBwbHkgKFZQU19JTykuXFxuK1xcbiByZXF1aXJlZDpcXG4gICAtIGNvbXBhdGlibGVcXG4gICAtIGludGVycnVwdHNcXG5AQCAtNDksNiArNTksNyBAQCBpZjpcXG4gICAgICAgICBlbnVtOlxcbiAgICAgICAgICAgLSBzdCxzdDIxbmZjYi1pMmNcXG4gICAgICAgICAgIC0gc3Qsc3QyMW5mY2MtaTJjXFxuKyAgICAgICAgICAtIHN0LHN0MjFuZmNkXFxuIHRoZW46XFxuICAgcHJvcGVydGllczpcXG4gICAgIHNwaS1tYXgtZnJlcXVlbmN5OiBmYWxzZVxcbkBAIC04MSw2ICs5MiwyNiBAQCBleGFtcGxlczpcXG4gICAgICAgICB9O1xcbiAgICAgfTtcXG4gXFxuKyAgLSB8XFxuKyAgICAjaW5jbHVkZSBcXHUwMDNjZHQtYmluZGluZ3MvZ3Bpby9ncGlvLmhcXHUwMDNlXFxuKyAgICAjaW5jbHVkZSBcXHUwMDNjZHQtYmluZGluZ3MvaW50ZXJydXB0LWNvbnRyb2xsZXIvaXJxLmhcXHUwMDNlXFxuK1xcbisgICAgaTJjIHtcXG4rICAgICAgICAjYWRkcmVzcy1jZWxscyA9IFxcdTAwM2MxXFx1MDAzZTtcXG4rICAgICAgICAjc2l6ZS1jZWxscyA9IFxcdTAwM2MwXFx1MDAzZTtcXG4rXFxuKyAgICAgICAgbmZjQDgge1xcbisgICAgICAgICAgICBjb21wYXRpYmxlID0gXFxcInN0LHN0MjFuZmNkXFxcIjtcXG4rICAgICAgICAgICAgcmVnID0gXFx1MDAzYzB4MDhcXHUwMDNlO1xcbitcXG4rICAgICAgICAgICAgaW50ZXJydXB0cy1leHRlbmRlZCA9IFxcdTAwM2NcXHUwMDI2Z3BpbzUgMiBJUlFfVFlQRV9MRVZFTF9ISUdIXFx1MDAzZTtcXG4rICAgICAgICAgICAgcmVzZXQtZ3Bpb3MgPSBcXHUwMDNjXFx1MDAyNmdwaW81IDI5IEdQSU9fQUNUSVZFX0hJR0hcXHUwMDNlO1xcbitcXG4rICAgICAgICAgICAgY2xvY2tzID0gXFx1MDAzY1xcdTAwMjZjbGtcXHUwMDNlO1xcbisgICAgICAgICAgICB2ZGQtaW8tc3VwcGx5ID0gXFx1MDAzY1xcdTAwMjZ2ZGRfaW9cXHUwMDNlO1xcbisgICAgICAgIH07XFxuKyAgICB9O1xcbitcXG4gICAtIHxcXG4gICAgICNpbmNsdWRlIFxcdTAwM2NkdC1iaW5kaW5ncy9ncGlvL2dwaW8uaFxcdTAwM2VcXG4gICAgICNpbmNsdWRlIFxcdTAwM2NkdC1iaW5kaW5ncy9pbnRlcnJ1cHQtY29udHJvbGxlci9pcnEuaFxcdTAwM2VcXG5kaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9ib290L2R0cy9xY29tL3FjbTY0OTAtZmFpcnBob25lLWZwNS5kdHMgYi9hcmNoL2FybTY0L2Jvb3QvZHRzL3Fjb20vcWNtNjQ5MC1mYWlycGhvbmUtZnA1LmR0c1xcbmluZGV4IDA0Y2I5MjMwZDI5ZmQuLmVmNjYwNzlhMDI2M2MgMTAwNjQ0XFxuLS0tIGEvYXJjaC9hcm02NC9ib290L2R0cy9xY29tL3FjbTY0OTAtZmFpcnBob25lLWZwNS5kdHNcXG4rKysgYi9hcmNoL2FybTY0L2Jvb3QvZHRzL3Fjb20vcWNtNjQ5MC1mYWlycGhvbmUtZnA1LmR0c1xcbkBAIC05MDgsNyArOTA4LDIzIEBAIHJlZHJpdmVyX3NzX2luOiBlbmRwb2ludCB7XFxuIFxcdTAwMjZpMmM5IHtcXG4gXFx0c3RhdHVzID0gXFxcIm9rYXlcXFwiO1xcbiBcXG4tXFx0LyogU1QyMU5GQyBORkMgQCAyOCAqL1xcbitcXHRuZmNAOCB7XFxuK1xcdFxcdGNvbXBhdGlibGUgPSBcXFwic3Qsc3QyMW5mY2RcXFwiO1xcbitcXHRcXHRyZWcgPSBcXHUwMDNjMHgwOFxcdTAwM2U7XFxuK1xcbitcXHRcXHRpbnRlcnJ1cHRzLWV4dGVuZGVkID0gXFx1MDAzY1xcdTAwMjZ0bG1tIDQxIElSUV9UWVBFX0xFVkVMX0hJR0hcXHUwMDNlO1xcbitcXHRcXHRyZXNldC1ncGlvcyA9IFxcdTAwM2NcXHUwMDI2dGxtbSAzOCBHUElPX0FDVElWRV9ISUdIXFx1MDAzZTtcXG4rXFxuK1xcdFxcdHBpbmN0cmwtMCA9IFxcdTAwM2NcXHUwMDI2bmZjX2RlZmF1bHRcXHUwMDNlO1xcbitcXHRcXHRwaW5jdHJsLW5hbWVzID0gXFxcImRlZmF1bHRcXFwiO1xcbitcXG4rXFx0XFx0Y2xvY2tzID0gXFx1MDAzY1xcdTAwMjZycG1oY2MgUlBNSF9MTl9CQl9DTEsyXFx1MDAzZTtcXG4rXFx0XFx0dmRkLWlvLXN1cHBseSA9IFxcdTAwM2NcXHUwMDI2dnJlZ19sMThiXFx1MDAzZTtcXG4rXFxuK1xcdFxcdGVzZS1wcmVzZW50O1xcbitcXHRcXHR1aWNjLXByZXNlbnQ7XFxuK1xcdH07XFxuK1xcbiBcXHQvKiBWTDUzTDMgVG9GIEAgMjkgKi9cXG4gfTtcXG4gXFxuQEAgLTE0MTAsNiArMTQyNiwyMiBAQCBoYWxsX3NlbnNvcl9kZWZhdWx0OiBoYWxsLXNlbnNvci1kZWZhdWx0LXN0YXRlIHtcXG4gXFx0XFx0ZHJpdmUtc3RyZW5ndGggPSBcXHUwMDNjMlxcdTAwM2U7XFxuIFxcdFxcdGJpYXMtcHVsbC11cDtcXG4gXFx0fTtcXG4rXFxuK1xcdG5mY19kZWZhdWx0OiBuZmMtZGVmYXVsdC1zdGF0ZSB7XFxuK1xcdFxcdHJlc2V0LXBpbnMge1xcbitcXHRcXHRcXHRwaW5zID0gXFxcImdwaW8zOFxcXCI7XFxuK1xcdFxcdFxcdGZ1bmN0aW9uID0gXFxcImdwaW9cXFwiO1xcbitcXHRcXHRcXHRkcml2ZS1zdHJlbmd0aCA9IFxcdTAwM2MyXFx1MDAzZTtcXG4rXFx0XFx0XFx0Ymlhcy1kaXNhYmxlO1xcbitcXHRcXHR9O1xcbitcXG4rXFx0XFx0aW50LXBpbnMge1xcbitcXHRcXHRcXHRwaW5zID0gXFxcImdwaW80MVxcXCI7XFxuK1xcdFxcdFxcdGZ1bmN0aW9uID0gXFxcImdwaW9cXFwiO1xcbitcXHRcXHRcXHRkcml2ZS1zdHJlbmd0aCA9IFxcdTAwM2MyXFx1MDAzZTtcXG4rXFx0XFx0XFx0Ymlhcy1kaXNhYmxlO1xcbitcXHRcXHR9O1xcbitcXHR9O1xcbiB9O1xcbiBcXG4gXFx1MDAyNnVhcnQ1IHtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZmMvc3QtbmNpL2NvcmUuYyBiL2RyaXZlcnMvbmZjL3N0LW5jaS9jb3JlLmNcXG5pbmRleCBhMzY3MTM2ZDQzMzBhLi4yMzU2ZjE2YjgwNzA2IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmZjL3N0LW5jaS9jb3JlLmNcXG4rKysgYi9kcml2ZXJzL25mYy9zdC1uY2kvY29yZS5jXFxuQEAgLTE4LDggKzE4LDEzIEBAXFxuIFxcbiBzdGF0aWMgaW50IHN0X25jaV9pbml0KHN0cnVjdCBuY2lfZGV2ICpuZGV2KVxcbiB7XFxuK1xcdHN0cnVjdCBzdF9uY2lfaW5mbyAqaW5mbyA9IG5jaV9nZXRfZHJ2ZGF0YShuZGV2KTtcXG4gXFx0c3RydWN0IG5jaV9tb2RlX3NldF9jbWQgY21kO1xcbiBcXG4rXFx0LyogU1QyMU5GQ0QgaGFzIG5vIE5ETEMgcHJvcHJpZXRhcnkgU0VUX05GQ19NT0RFICovXFxuK1xcdGlmIChpbmZvLVxcdTAwM2VuZGxjLVxcdTAwM2VyYXdfbmNpKVxcbitcXHRcXHRyZXR1cm4gMDtcXG4rXFxuIFxcdGNtZC5jbWRfdHlwZSA9IFNUX05DSV9TRVRfTkZDX01PREU7XFxuIFxcdGNtZC5tb2RlID0gMTtcXG4gXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmZjL3N0LW5jaS9pMmMuYyBiL2RyaXZlcnMvbmZjL3N0LW5jaS9pMmMuY1xcbmluZGV4IDE1MmMyMGI2YmIwMWEuLmNmZGRiN2ZmZTAyYTQgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZmMvc3QtbmNpL2kyYy5jXFxuKysrIGIvZHJpdmVycy9uZmMvc3QtbmNpL2kyYy5jXFxuQEAgLTEwLDEwICsxMCwxMyBAQFxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvaTJjLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9ncGlvL2NvbnN1bWVyLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9hY3BpLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9jbGsuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2ludGVycnVwdC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvZGVsYXkuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L25mYy5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvb2YuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3Byb3BlcnR5LmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9yZWd1bGF0b3IvY29uc3VtZXIuaFxcdTAwM2VcXG4gXFxuICNpbmNsdWRlIFxcXCJzdC1uY2kuaFxcXCJcXG4gXFxuQEAgLTIyLDEwICsyNSwxNyBAQFxcbiAvKiBuZGxjIGhlYWRlciAqL1xcbiAjZGVmaW5lIFNUX05DSV9GUkFNRV9IRUFEUk9PTSAxXFxuICNkZWZpbmUgU1RfTkNJX0ZSQU1FX1RBSUxST09NIDBcXG4rI2RlZmluZSBTVF9OQ0lfUkFXX0ZSQU1FX0hFQURST09NIDBcXG4gXFxuICNkZWZpbmUgU1RfTkNJX0kyQ19NSU5fU0laRSA0ICAgLyogUENCKDEpICsgTkNJIFBhY2tldCBoZWFkZXIoMykgKi9cXG4rI2RlZmluZSBTVF9OQ0lfTkNJX0hEUl9TSVpFIDMgICAvKiByYXcgTkNJOiBNVC9QQkYvR0lEICsgT0lEICsgbGVuICovXFxuICNkZWZpbmUgU1RfTkNJX0kyQ19NQVhfU0laRSAyNTAgLyogcmVxIDQuMi4xICovXFxuIFxcbitlbnVtIHN0X25jaV9pMmNfcHJvdG8ge1xcbitcXHRTVF9OQ0lfSTJDX1BST1RPX05ETEMgPSAwLFxcbitcXHRTVF9OQ0lfSTJDX1BST1RPX1JBV19OQ0ksXFxuK307XFxuK1xcbiAjZGVmaW5lIFNUX05DSV9EUklWRVJfTkFNRSBcXFwic3RfbmNpXFxcIlxcbiAjZGVmaW5lIFNUX05DSV9JMkNfRFJJVkVSX05BTUUgXFxcInN0X25jaV9pMmNcXFwiXFxuIFxcbkBAIC0zNCw2ICs0NCw3IEBAIHN0cnVjdCBzdF9uY2lfaTJjX3BoeSB7XFxuIFxcdHN0cnVjdCBsbHRfbmRsYyAqbmRsYztcXG4gXFxuIFxcdGJvb2wgaXJxX2FjdGl2ZTtcXG4rXFx0Ym9vbCByYXdfbmNpO1xcbiBcXG4gXFx0c3RydWN0IGdwaW9fZGVzYyAqZ3Bpb2RfcmVzZXQ7XFxuIFxcbkBAIC0xMTEsNiArMTIyLDQyIEBAIHN0YXRpYyBpbnQgc3RfbmNpX2kyY19yZWFkKHN0cnVjdCBzdF9uY2lfaTJjX3BoeSAqcGh5LFxcbiBcXHR1OCBidWZbU1RfTkNJX0kyQ19NQVhfU0laRV07XFxuIFxcdHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQgPSBwaHktXFx1MDAzZWkyY19kZXY7XFxuIFxcbitcXHRpZiAocGh5LVxcdTAwM2VyYXdfbmNpKSB7XFxuK1xcdFxcdHIgPSBpMmNfbWFzdGVyX3JlY3YoY2xpZW50LCBidWYsIFNUX05DSV9OQ0lfSERSX1NJWkUpO1xcbitcXHRcXHRpZiAociBcXHUwMDNjIDApIHtcXG4rXFx0XFx0XFx0dXNsZWVwX3JhbmdlKDEwMDAsIDQwMDApO1xcbitcXHRcXHRcXHRyID0gaTJjX21hc3Rlcl9yZWN2KGNsaWVudCwgYnVmLCBTVF9OQ0lfTkNJX0hEUl9TSVpFKTtcXG4rXFx0XFx0fVxcbitcXHRcXHRpZiAociAhPSBTVF9OQ0lfTkNJX0hEUl9TSVpFKVxcbitcXHRcXHRcXHRyZXR1cm4gLUVSRU1PVEVJTztcXG4rXFxuK1xcdFxcdGxlbiA9IGJ1ZlsyXTtcXG4rXFx0XFx0aWYgKGxlbiBcXHUwMDNlIFNUX05DSV9JMkNfTUFYX1NJWkUpIHtcXG4rXFx0XFx0XFx0bmZjX2VycihcXHUwMDI2Y2xpZW50LVxcdTAwM2VkZXYsIFxcXCJpbnZhbGlkIGZyYW1lIGxlblxcXFxuXFxcIik7XFxuK1xcdFxcdFxcdHJldHVybiAtRUJBRE1TRztcXG4rXFx0XFx0fVxcbitcXG4rXFx0XFx0KnNrYiA9IGFsbG9jX3NrYihTVF9OQ0lfTkNJX0hEUl9TSVpFICsgbGVuLCBHRlBfS0VSTkVMKTtcXG4rXFx0XFx0aWYgKCEqc2tiKVxcbitcXHRcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4rXFxuK1xcdFxcdHNrYl9wdXQoKnNrYiwgU1RfTkNJX05DSV9IRFJfU0laRSk7XFxuK1xcdFxcdG1lbWNweSgoKnNrYiktXFx1MDAzZWRhdGEsIGJ1ZiwgU1RfTkNJX05DSV9IRFJfU0laRSk7XFxuK1xcbitcXHRcXHRpZiAoIWxlbilcXG4rXFx0XFx0XFx0cmV0dXJuIDA7XFxuK1xcbitcXHRcXHRyID0gaTJjX21hc3Rlcl9yZWN2KGNsaWVudCwgYnVmLCBsZW4pO1xcbitcXHRcXHRpZiAociAhPSBsZW4pIHtcXG4rXFx0XFx0XFx0a2ZyZWVfc2tiKCpza2IpO1xcbitcXHRcXHRcXHRyZXR1cm4gLUVSRU1PVEVJTztcXG4rXFx0XFx0fVxcbitcXG4rXFx0XFx0c2tiX3B1dCgqc2tiLCBsZW4pO1xcbitcXHRcXHRtZW1jcHkoKCpza2IpLVxcdTAwM2VkYXRhICsgU1RfTkNJX05DSV9IRFJfU0laRSwgYnVmLCBsZW4pO1xcbitcXHRcXHRyZXR1cm4gMDtcXG4rXFx0fVxcbitcXG4gXFx0ciA9IGkyY19tYXN0ZXJfcmVjdihjbGllbnQsIGJ1ZiwgU1RfTkNJX0kyQ19NSU5fU0laRSk7XFxuIFxcdGlmIChyIFxcdTAwM2MgMCkgeyAgLyogUmV0cnksIGNoaXAgd2FzIGluIHN0YW5kYnkgKi9cXG4gXFx0XFx0dXNsZWVwX3JhbmdlKDEwMDAsIDQwMDApO1xcbkBAIC0yMTEsNiArMjU4LDggQEAgc3RhdGljIGludCBzdF9uY2lfaTJjX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXFxuIFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbiBcXG4gXFx0cGh5LVxcdTAwM2VpMmNfZGV2ID0gY2xpZW50O1xcbitcXHRwaHktXFx1MDAzZXJhd19uY2kgPSAodWludHB0cl90KWRldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpID09XFxuK1xcdFxcdFxcdFNUX05DSV9JMkNfUFJPVE9fUkFXX05DSTtcXG4gXFxuIFxcdGkyY19zZXRfY2xpZW50ZGF0YShjbGllbnQsIHBoeSk7XFxuIFxcbkBAIC0yMjUsMTkgKzI3NCwzMSBAQCBzdGF0aWMgaW50IHN0X25jaV9pMmNfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcXG4gXFx0XFx0cmV0dXJuIC1FTk9ERVY7XFxuIFxcdH1cXG4gXFxuK1xcdHIgPSBkZXZtX3JlZ3VsYXRvcl9nZXRfZW5hYmxlX29wdGlvbmFsKGRldiwgXFxcInZkZC1pb1xcXCIpO1xcbitcXHRpZiAociBcXHUwMDI2XFx1MDAyNiByICE9IC1FTk9ERVYpXFxuK1xcdFxcdHJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgciwgXFxcImZhaWxlZCB0byBlbmFibGUgdmRkLWlvXFxcXG5cXFwiKTtcXG4rXFxuK1xcdHIgPSBQVFJfRVJSX09SX1pFUk8oZGV2bV9jbGtfZ2V0X29wdGlvbmFsX2VuYWJsZWQoZGV2LCBOVUxMKSk7XFxuK1xcdGlmIChyKVxcbitcXHRcXHRyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIHIsIFxcXCJmYWlsZWQgdG8gZW5hYmxlIGNsb2NrXFxcXG5cXFwiKTtcXG4rXFxuIFxcdHBoeS1cXHUwMDNlc2Vfc3RhdHVzLmlzX2VzZV9wcmVzZW50ID1cXG4gXFx0XFx0XFx0XFx0ZGV2aWNlX3Byb3BlcnR5X3JlYWRfYm9vbChkZXYsIFxcXCJlc2UtcHJlc2VudFxcXCIpO1xcbiBcXHRwaHktXFx1MDAzZXNlX3N0YXR1cy5pc191aWNjX3ByZXNlbnQgPVxcbiBcXHRcXHRcXHRcXHRkZXZpY2VfcHJvcGVydHlfcmVhZF9ib29sKGRldiwgXFxcInVpY2MtcHJlc2VudFxcXCIpO1xcbiBcXG4gXFx0ciA9IG5kbGNfcHJvYmUocGh5LCBcXHUwMDI2aTJjX3BoeV9vcHMsIFxcdTAwMjZjbGllbnQtXFx1MDAzZWRldixcXG4tXFx0XFx0XFx0U1RfTkNJX0ZSQU1FX0hFQURST09NLCBTVF9OQ0lfRlJBTUVfVEFJTFJPT00sXFxuK1xcdFxcdFxcdHBoeS1cXHUwMDNlcmF3X25jaSA/IFNUX05DSV9SQVdfRlJBTUVfSEVBRFJPT00gOlxcbitcXHRcXHRcXHRcXHQgICAgICAgU1RfTkNJX0ZSQU1FX0hFQURST09NLFxcbitcXHRcXHRcXHRTVF9OQ0lfRlJBTUVfVEFJTFJPT00sXFxuIFxcdFxcdFxcdFxcdTAwMjZwaHktXFx1MDAzZW5kbGMsIFxcdTAwMjZwaHktXFx1MDAzZXNlX3N0YXR1cyk7XFxuIFxcdGlmIChyIFxcdTAwM2MgMCkge1xcbiBcXHRcXHRuZmNfZXJyKFxcdTAwMjZjbGllbnQtXFx1MDAzZWRldiwgXFxcIlVuYWJsZSB0byByZWdpc3RlciBuZGxjIGxheWVyXFxcXG5cXFwiKTtcXG4gXFx0XFx0cmV0dXJuIHI7XFxuIFxcdH1cXG4gXFxuK1xcdHBoeS1cXHUwMDNlbmRsYy1cXHUwMDNlcmF3X25jaSA9IHBoeS1cXHUwMDNlcmF3X25jaTtcXG4rXFxuIFxcdHBoeS1cXHUwMDNlaXJxX2FjdGl2ZSA9IHRydWU7XFxuIFxcdHIgPSBkZXZtX3JlcXVlc3RfdGhyZWFkZWRfaXJxKFxcdTAwMjZjbGllbnQtXFx1MDAzZWRldiwgY2xpZW50LVxcdTAwM2VpcnEsIE5VTEwsXFxuIFxcdFxcdFxcdFxcdHN0X25jaV9pcnFfdGhyZWFkX2ZuLFxcbkBAIC0yNTcsMjMgKzMxOCwyNSBAQCBzdGF0aWMgdm9pZCBzdF9uY2lfaTJjX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxcbiB9XFxuIFxcbiBzdGF0aWMgY29uc3Qgc3RydWN0IGkyY19kZXZpY2VfaWQgc3RfbmNpX2kyY19pZF90YWJsZVtdID0ge1xcbi1cXHR7IC5uYW1lID0gU1RfTkNJX0RSSVZFUl9OQU1FIH0sXFxuLVxcdHsgfVxcbitcXHR7IFNUX05DSV9EUklWRVJfTkFNRSB9LFxcbitcXHR7fVxcbiB9O1xcbiBNT0RVTEVfREVWSUNFX1RBQkxFKGkyYywgc3RfbmNpX2kyY19pZF90YWJsZSk7XFxuIFxcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGFjcGlfZGV2aWNlX2lkIHN0X25jaV9pMmNfYWNwaV9tYXRjaFtdID0ge1xcbi1cXHR7IC5pZCA9IFxcXCJTTU8yMTAxXFxcIiB9LFxcbi1cXHR7IC5pZCA9IFxcXCJTTU8yMTAyXFxcIiB9LFxcbi1cXHR7IH1cXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBhY3BpX2RldmljZV9pZCBzdF9uY2lfaTJjX2FjcGlfbWF0Y2hbXSBfX21heWJlX3VudXNlZCA9IHtcXG4rXFx0e1xcXCJTTU8yMTAxXFxcIn0sXFxuK1xcdHtcXFwiU01PMjEwMlxcXCJ9LFxcbitcXHR7fVxcbiB9O1xcbiBNT0RVTEVfREVWSUNFX1RBQkxFKGFjcGksIHN0X25jaV9pMmNfYWNwaV9tYXRjaCk7XFxuIFxcbi1zdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBvZl9zdF9uY2lfaTJjX21hdGNoW10gPSB7XFxuLVxcdHsgLmNvbXBhdGlibGUgPSBcXFwic3Qsc3QyMW5mY2ItaTJjXFxcIiB9LFxcbi1cXHR7IC5jb21wYXRpYmxlID0gXFxcInN0LHN0MjFuZmNiX2kyY1xcXCIgfSxcXG4tXFx0eyAuY29tcGF0aWJsZSA9IFxcXCJzdCxzdDIxbmZjYy1pMmNcXFwiIH0sXFxuLVxcdHsgfVxcbitzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBvZl9zdF9uY2lfaTJjX21hdGNoW10gX19tYXliZV91bnVzZWQgPSB7XFxuK1xcdHsgLmNvbXBhdGlibGUgPSBcXFwic3Qsc3QyMW5mY2ItaTJjXFxcIiwgfSxcXG4rXFx0eyAuY29tcGF0aWJsZSA9IFxcXCJzdCxzdDIxbmZjYl9pMmNcXFwiLCB9LFxcbitcXHR7IC5jb21wYXRpYmxlID0gXFxcInN0LHN0MjFuZmNjLWkyY1xcXCIsIH0sXFxuK1xcdHsgLmNvbXBhdGlibGUgPSBcXFwic3Qsc3QyMW5mY2RcXFwiLFxcbitcXHQgIC5kYXRhID0gKHZvaWQgKilTVF9OQ0lfSTJDX1BST1RPX1JBV19OQ0kgfSxcXG4rXFx0e31cXG4gfTtcXG4gTU9EVUxFX0RFVklDRV9UQUJMRShvZiwgb2Zfc3RfbmNpX2kyY19tYXRjaCk7XFxuIFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25mYy9zdC1uY2kvbmRsYy5jIGIvZHJpdmVycy9uZmMvc3QtbmNpL25kbGMuY1xcbmluZGV4IGJlNDgwODg1OWNmYTkuLmIzMTkyNDYwYzk2ZTMgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZmMvc3QtbmNpL25kbGMuY1xcbisrKyBiL2RyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmNcXG5AQCAtNjIsOCArNjIsOSBAQCB2b2lkIG5kbGNfY2xvc2Uoc3RydWN0IGxsdF9uZGxjICpuZGxjKVxcbiBcXHQvKiB0b2dnbGUgcmVzZXQgcGluICovXFxuIFxcdG5kbGMtXFx1MDAzZW9wcy1cXHUwMDNlZW5hYmxlKG5kbGMtXFx1MDAzZXBoeV9pZCk7XFxuIFxcbi1cXHRuY2lfcHJvcF9jbWQobmRsYy1cXHUwMDNlbmRldiwgU1RfTkNJX0NPUkVfUFJPUCxcXG4tXFx0XFx0ICAgICBzaXplb2Yoc3RydWN0IG5jaV9tb2RlX3NldF9jbWQpLCAoX191OCAqKVxcdTAwMjZjbWQpO1xcbitcXHRpZiAoIW5kbGMtXFx1MDAzZXJhd19uY2kpXFxuK1xcdFxcdG5jaV9wcm9wX2NtZChuZGxjLVxcdTAwM2VuZGV2LCBTVF9OQ0lfQ09SRV9QUk9QLFxcbitcXHRcXHRcXHQgICAgIHNpemVvZihzdHJ1Y3QgbmNpX21vZGVfc2V0X2NtZCksIChfX3U4ICopXFx1MDAyNmNtZCk7XFxuIFxcbiBcXHRuZGxjLVxcdTAwM2Vwb3dlcmVkID0gMDtcXG4gXFx0bmRsYy1cXHUwMDNlb3BzLVxcdTAwM2VkaXNhYmxlKG5kbGMtXFx1MDAzZXBoeV9pZCk7XFxuQEAgLTcyLDExICs3MywxMyBAQCBFWFBPUlRfU1lNQk9MKG5kbGNfY2xvc2UpO1xcbiBcXG4gaW50IG5kbGNfc2VuZChzdHJ1Y3QgbGx0X25kbGMgKm5kbGMsIHN0cnVjdCBza19idWZmICpza2IpXFxuIHtcXG4tXFx0LyogYWRkIG5kbGMgaGVhZGVyICovXFxuLVxcdHU4IHBjYiA9IFBDQl9UWVBFX0RBVEFGUkFNRSB8IFBDQl9EQVRBRlJBTUVfUkVUUkFOU01JVF9OTyB8XFxuLVxcdFxcdFBDQl9GUkFNRV9DUkNfSU5GT19OT1RQUkVTRU5UO1xcbitcXHRpZiAoIW5kbGMtXFx1MDAzZXJhd19uY2kpIHtcXG4rXFx0XFx0LyogYWRkIG5kbGMgaGVhZGVyICovXFxuK1xcdFxcdHU4IHBjYiA9IFBDQl9UWVBFX0RBVEFGUkFNRSB8IFBDQl9EQVRBRlJBTUVfUkVUUkFOU01JVF9OTyB8XFxuK1xcdFxcdFxcdFBDQl9GUkFNRV9DUkNfSU5GT19OT1RQUkVTRU5UO1xcbiBcXG4tXFx0Kih1OCAqKXNrYl9wdXNoKHNrYiwgMSkgPSBwY2I7XFxuK1xcdFxcdCoodTggKilza2JfcHVzaChza2IsIDEpID0gcGNiO1xcbitcXHR9XFxuIFxcdHNrYl9xdWV1ZV90YWlsKFxcdTAwMjZuZGxjLVxcdTAwM2VzZW5kX3EsIHNrYik7XFxuIFxcbiBcXHRzY2hlZHVsZV93b3JrKFxcdTAwMjZuZGxjLVxcdTAwM2VzbV93b3JrKTtcXG5AQCAtMTAzLDYgKzEwNiwxMCBAQCBzdGF0aWMgdm9pZCBsbHRfbmRsY19zZW5kX3F1ZXVlKHN0cnVjdCBsbHRfbmRsYyAqbmRsYylcXG4gXFx0XFx0XFx0bmRsYy1cXHUwMDNlaGFyZF9mYXVsdCA9IHI7XFxuIFxcdFxcdFxcdGJyZWFrO1xcbiBcXHRcXHR9XFxuK1xcdFxcdGlmIChuZGxjLVxcdTAwM2VyYXdfbmNpKSB7XFxuK1xcdFxcdFxcdGtmcmVlX3NrYihza2IpO1xcbitcXHRcXHRcXHRjb250aW51ZTtcXG4rXFx0XFx0fVxcbiBcXHRcXHR0aW1lX3NlbnQgPSBqaWZmaWVzO1xcbiBcXHRcXHQqKHVuc2lnbmVkIGxvbmcgKilza2ItXFx1MDAzZWNiID0gdGltZV9zZW50O1xcbiBcXG5AQCAtMTU0LDYgKzE2MSwxMCBAQCBzdGF0aWMgdm9pZCBsbHRfbmRsY19yY3ZfcXVldWUoc3RydWN0IGxsdF9uZGxjICpuZGxjKVxcbiBcXHRcXHRwcl9kZWJ1ZyhcXFwicmN2UWxlbj0lZFxcXFxuXFxcIiwgbmRsYy1cXHUwMDNlcmN2X3EucWxlbik7XFxuIFxcbiBcXHR3aGlsZSAoKHNrYiA9IHNrYl9kZXF1ZXVlKFxcdTAwMjZuZGxjLVxcdTAwM2VyY3ZfcSkpICE9IE5VTEwpIHtcXG4rXFx0XFx0aWYgKG5kbGMtXFx1MDAzZXJhd19uY2kpIHtcXG4rXFx0XFx0XFx0bmNpX3JlY3ZfZnJhbWUobmRsYy1cXHUwMDNlbmRldiwgc2tiKTtcXG4rXFx0XFx0XFx0Y29udGludWU7XFxuK1xcdFxcdH1cXG4gXFx0XFx0cGNiID0gc2tiLVxcdTAwM2VkYXRhWzBdO1xcbiBcXHRcXHRza2JfcHVsbChza2IsIDEpO1xcbiBcXHRcXHRpZiAoKHBjYiBcXHUwMDI2IFBDQl9UWVBFX01BU0spID09IFBDQl9UWVBFX1NVUEVSVklTT1IpIHtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZmMvc3QtbmNpL25kbGMuaCBiL2RyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmhcXG5pbmRleCBjMjRjZTliMGRmNTJlLi41YzFmOGJhZjA0NzE4IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmhcXG4rKysgYi9kcml2ZXJzL25mYy9zdC1uY2kvbmRsYy5oXFxuQEAgLTM5LDYgKzM5LDggQEAgc3RydWN0IGxsdF9uZGxjIHtcXG4gXFx0ICovXFxuIFxcdGludCBoYXJkX2ZhdWx0O1xcbiBcXHRpbnQgcG93ZXJlZDtcXG4rXFx0LyogU1QyMU5GQ0Q6IHJhdyBOQ0kgb24gdGhlIHdpcmUsIG5vIE5ETEMgUENCIC8gQUNLIHRpbWVycyAqL1xcbitcXHRib29sIHJhd19uY2k7XFxuIH07XFxuIFxcbiBpbnQgbmRsY19vcGVuKHN0cnVjdCBsbHRfbmRsYyAqbmRsYyk7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmZjL3N0LW5jaS9zZS5jIGIvZHJpdmVycy9uZmMvc3QtbmNpL3NlLmNcXG5pbmRleCA2MDdlYzc2OGViN2I0Li40NGNjMTAyYmNkZTIxIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmZjL3N0LW5jaS9zZS5jXFxuKysrIGIvZHJpdmVycy9uZmMvc3QtbmNpL3NlLmNcXG5AQCAtNjIxLDYgKzYyMSw5IEBAIGludCBzdF9uY2lfZGlzY292ZXJfc2Uoc3RydWN0IG5jaV9kZXYgKm5kZXYpXFxuIFxcdGludCBzZV9jb3VudCA9IDA7XFxuIFxcdHN0cnVjdCBzdF9uY2lfaW5mbyAqaW5mbyA9IG5jaV9nZXRfZHJ2ZGF0YShuZGV2KTtcXG4gXFxuK1xcdGlmIChpbmZvLVxcdTAwM2VuZGxjLVxcdTAwM2VyYXdfbmNpKVxcbitcXHRcXHRyZXR1cm4gMDtcXG4rXFxuIFxcdHIgPSBzdF9uY2lfaGNpX25ldHdvcmtfaW5pdChuZGV2KTtcXG4gXFx0aWYgKHIgIT0gMClcXG4gXFx0XFx0cmV0dXJuIHI7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIwVDIxOjAxOjU3LjkxNjU1MTQzM1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjEyNTM1NDQzNzE2MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORkNcIixcbiAgICBcIk5GQ19OQ0lcIixcbiAgICBcIkkyQ1wiLFxuICAgIFwiTkZDX1NUX05DSVwiLFxuICAgIFwiTkZDX1NUX05DSV9JMkNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJuZGxjX3Byb2JlXCIsXG4gICAgXCJuZGxjX3JlY3ZcIixcbiAgICBcIm5kbGNfc2VuZFwiLFxuICAgIFwibmRsY19jbG9zZVwiLFxuICAgIFwic3RfbmNpX2Rpc2NvdmVyX3NlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciB0aGUgU1QyMU5GQ0QgTkZDIGNvbnRyb2xsZXIsIHdoaWNoIHVzZXMgcmF3IE5DSSBvdmVyIEkyQyBpbnN0ZWFkIG9mIHRoZSBORExDIHByb3RvY29sLiBJdCBpbnRyb2R1Y2VzIGEgbmV3IGByYXdfbmNpYCBmbGFnIHRoYXQgbW9kaWZpZXMgdGhlIGJlaGF2aW9yIG9mIHJlYWRpbmcgZnJvbSB0aGUgSTJDIGJ1cywgc2VuZGluZy9yZWNlaXZpbmcgTkNJIGZyYW1lcywgYW5kIGluaXRpYWxpemluZyB0aGUgZGV2aWNlLiBUaGUgSTJDIGRyaXZlciBjYW4gYmUgaW5zdGFudGlhdGVkIGFuZCBmdXp6ZWQgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNTlmYjA4MjRiZWM0ZDEwMjYzZTQ4NWI1YWNiNzc1Nzk0M2IyYjJiY1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgQXVnIDIwIDIxOjAxOjUzIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9uZmMvc3Qsc3QtbmNpLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L25mYy9zdCxzdC1uY2kueWFtbFxuaW5kZXggMWRjYmRkYmM1YTc0ZS4uYzg1OTc5N2Y0MjJiYyAxMDA2NDRcbi0tLSBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbmZjL3N0LHN0LW5jaS55YW1sXG4rKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L25mYy9zdCxzdC1uY2kueWFtbFxuQEAgLTE1LDYgKzE1LDcgQEAgcHJvcGVydGllczpcbiAgICAgICAtIHN0LHN0MjFuZmNiLWkyY1xuICAgICAgIC0gc3Qsc3QyMW5mY2Itc3BpXG4gICAgICAgLSBzdCxzdDIxbmZjYy1pMmNcbisgICAgICAtIHN0LHN0MjFuZmNkXG4gXG4gICByZXNldC1ncGlvczpcbiAgICAgZGVzY3JpcHRpb246IE91dHB1dCBHUElPIHBpbiB1c2VkIGZvciByZXNldHRpbmcgdGhlIGNvbnRyb2xsZXJcbkBAIC0zNiw2ICszNywxNSBAQCBwcm9wZXJ0aWVzOlxuICAgICAgIFNwZWNpZmllcyB0aGF0IHRoZSB1aWNjIHN3cCBzaWduYWwgY2FuIGJlIHBoeXNpY2FsbHkgY29ubmVjdGVkIHRvIHRoZVxuICAgICAgIGNvbnRyb2xsZXJcbiBcbisgIGNsb2NrczpcbisgICAgbWF4SXRlbXM6IDFcbisgICAgZGVzY3JpcHRpb246XG4rICAgICAgRXh0ZXJuYWwgcmVmZXJlbmNlIGNsb2NrIGNvbm5lY3RlZCB0byBTWVNfQ0xLLlxuK1xuKyAgdmRkLWlvLXN1cHBseTpcbisgICAgZGVzY3JpcHRpb246XG4rICAgICAgRGlnaXRhbCBJL08gc3VwcGx5IChWUFNfSU8pLlxuK1xuIHJlcXVpcmVkOlxuICAgLSBjb21wYXRpYmxlXG4gICAtIGludGVycnVwdHNcbkBAIC00OSw2ICs1OSw3IEBAIGlmOlxuICAgICAgICAgZW51bTpcbiAgICAgICAgICAgLSBzdCxzdDIxbmZjYi1pMmNcbiAgICAgICAgICAgLSBzdCxzdDIxbmZjYy1pMmNcbisgICAgICAgICAgLSBzdCxzdDIxbmZjZFxuIHRoZW46XG4gICBwcm9wZXJ0aWVzOlxuICAgICBzcGktbWF4LWZyZXF1ZW5jeTogZmFsc2VcbkBAIC04MSw2ICs5MiwyNiBAQCBleGFtcGxlczpcbiAgICAgICAgIH07XG4gICAgIH07XG4gXG4rICAtIHxcbisgICAgI2luY2x1ZGUgXHUwMDNjZHQtYmluZGluZ3MvZ3Bpby9ncGlvLmhcdTAwM2VcbisgICAgI2luY2x1ZGUgXHUwMDNjZHQtYmluZGluZ3MvaW50ZXJydXB0LWNvbnRyb2xsZXIvaXJxLmhcdTAwM2VcbitcbisgICAgaTJjIHtcbisgICAgICAgICNhZGRyZXNzLWNlbGxzID0gXHUwMDNjMVx1MDAzZTtcbisgICAgICAgICNzaXplLWNlbGxzID0gXHUwMDNjMFx1MDAzZTtcbitcbisgICAgICAgIG5mY0A4IHtcbisgICAgICAgICAgICBjb21wYXRpYmxlID0gXCJzdCxzdDIxbmZjZFwiO1xuKyAgICAgICAgICAgIHJlZyA9IFx1MDAzYzB4MDhcdTAwM2U7XG4rXG4rICAgICAgICAgICAgaW50ZXJydXB0cy1leHRlbmRlZCA9IFx1MDAzY1x1MDAyNmdwaW81IDIgSVJRX1RZUEVfTEVWRUxfSElHSFx1MDAzZTtcbisgICAgICAgICAgICByZXNldC1ncGlvcyA9IFx1MDAzY1x1MDAyNmdwaW81IDI5IEdQSU9fQUNUSVZFX0hJR0hcdTAwM2U7XG4rXG4rICAgICAgICAgICAgY2xvY2tzID0gXHUwMDNjXHUwMDI2Y2xrXHUwMDNlO1xuKyAgICAgICAgICAgIHZkZC1pby1zdXBwbHkgPSBcdTAwM2NcdTAwMjZ2ZGRfaW9cdTAwM2U7XG4rICAgICAgICB9O1xuKyAgICB9O1xuK1xuICAgLSB8XG4gICAgICNpbmNsdWRlIFx1MDAzY2R0LWJpbmRpbmdzL2dwaW8vZ3Bpby5oXHUwMDNlXG4gICAgICNpbmNsdWRlIFx1MDAzY2R0LWJpbmRpbmdzL2ludGVycnVwdC1jb250cm9sbGVyL2lycS5oXHUwMDNlXG5kaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9ib290L2R0cy9xY29tL3FjbTY0OTAtZmFpcnBob25lLWZwNS5kdHMgYi9hcmNoL2FybTY0L2Jvb3QvZHRzL3Fjb20vcWNtNjQ5MC1mYWlycGhvbmUtZnA1LmR0c1xuaW5kZXggMDRjYjkyMzBkMjlmZC4uZWY2NjA3OWEwMjYzYyAxMDA2NDRcbi0tLSBhL2FyY2gvYXJtNjQvYm9vdC9kdHMvcWNvbS9xY202NDkwLWZhaXJwaG9uZS1mcDUuZHRzXG4rKysgYi9hcmNoL2FybTY0L2Jvb3QvZHRzL3Fjb20vcWNtNjQ5MC1mYWlycGhvbmUtZnA1LmR0c1xuQEAgLTkwOCw3ICs5MDgsMjMgQEAgcmVkcml2ZXJfc3NfaW46IGVuZHBvaW50IHtcbiBcdTAwMjZpMmM5IHtcbiBcdHN0YXR1cyA9IFwib2theVwiO1xuIFxuLVx0LyogU1QyMU5GQyBORkMgQCAyOCAqL1xuK1x0bmZjQDgge1xuK1x0XHRjb21wYXRpYmxlID0gXCJzdCxzdDIxbmZjZFwiO1xuK1x0XHRyZWcgPSBcdTAwM2MweDA4XHUwMDNlO1xuK1xuK1x0XHRpbnRlcnJ1cHRzLWV4dGVuZGVkID0gXHUwMDNjXHUwMDI2dGxtbSA0MSBJUlFfVFlQRV9MRVZFTF9ISUdIXHUwMDNlO1xuK1x0XHRyZXNldC1ncGlvcyA9IFx1MDAzY1x1MDAyNnRsbW0gMzggR1BJT19BQ1RJVkVfSElHSFx1MDAzZTtcbitcbitcdFx0cGluY3RybC0wID0gXHUwMDNjXHUwMDI2bmZjX2RlZmF1bHRcdTAwM2U7XG4rXHRcdHBpbmN0cmwtbmFtZXMgPSBcImRlZmF1bHRcIjtcbitcbitcdFx0Y2xvY2tzID0gXHUwMDNjXHUwMDI2cnBtaGNjIFJQTUhfTE5fQkJfQ0xLMlx1MDAzZTtcbitcdFx0dmRkLWlvLXN1cHBseSA9IFx1MDAzY1x1MDAyNnZyZWdfbDE4Ylx1MDAzZTtcbitcbitcdFx0ZXNlLXByZXNlbnQ7XG4rXHRcdHVpY2MtcHJlc2VudDtcbitcdH07XG4rXG4gXHQvKiBWTDUzTDMgVG9GIEAgMjkgKi9cbiB9O1xuIFxuQEAgLTE0MTAsNiArMTQyNiwyMiBAQCBoYWxsX3NlbnNvcl9kZWZhdWx0OiBoYWxsLXNlbnNvci1kZWZhdWx0LXN0YXRlIHtcbiBcdFx0ZHJpdmUtc3RyZW5ndGggPSBcdTAwM2MyXHUwMDNlO1xuIFx0XHRiaWFzLXB1bGwtdXA7XG4gXHR9O1xuK1xuK1x0bmZjX2RlZmF1bHQ6IG5mYy1kZWZhdWx0LXN0YXRlIHtcbitcdFx0cmVzZXQtcGlucyB7XG4rXHRcdFx0cGlucyA9IFwiZ3BpbzM4XCI7XG4rXHRcdFx0ZnVuY3Rpb24gPSBcImdwaW9cIjtcbitcdFx0XHRkcml2ZS1zdHJlbmd0aCA9IFx1MDAzYzJcdTAwM2U7XG4rXHRcdFx0Ymlhcy1kaXNhYmxlO1xuK1x0XHR9O1xuK1xuK1x0XHRpbnQtcGlucyB7XG4rXHRcdFx0cGlucyA9IFwiZ3BpbzQxXCI7XG4rXHRcdFx0ZnVuY3Rpb24gPSBcImdwaW9cIjtcbitcdFx0XHRkcml2ZS1zdHJlbmd0aCA9IFx1MDAzYzJcdTAwM2U7XG4rXHRcdFx0Ymlhcy1kaXNhYmxlO1xuK1x0XHR9O1xuK1x0fTtcbiB9O1xuIFxuIFx1MDAyNnVhcnQ1IHtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25mYy9zdC1uY2kvY29yZS5jIGIvZHJpdmVycy9uZmMvc3QtbmNpL2NvcmUuY1xuaW5kZXggYTM2NzEzNmQ0MzMwYS4uMjM1NmYxNmI4MDcwNiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmZjL3N0LW5jaS9jb3JlLmNcbisrKyBiL2RyaXZlcnMvbmZjL3N0LW5jaS9jb3JlLmNcbkBAIC0xOCw4ICsxOCwxMyBAQFxuIFxuIHN0YXRpYyBpbnQgc3RfbmNpX2luaXQoc3RydWN0IG5jaV9kZXYgKm5kZXYpXG4ge1xuK1x0c3RydWN0IHN0X25jaV9pbmZvICppbmZvID0gbmNpX2dldF9kcnZkYXRhKG5kZXYpO1xuIFx0c3RydWN0IG5jaV9tb2RlX3NldF9jbWQgY21kO1xuIFxuK1x0LyogU1QyMU5GQ0QgaGFzIG5vIE5ETEMgcHJvcHJpZXRhcnkgU0VUX05GQ19NT0RFICovXG4rXHRpZiAoaW5mby1cdTAwM2VuZGxjLVx1MDAzZXJhd19uY2kpXG4rXHRcdHJldHVybiAwO1xuK1xuIFx0Y21kLmNtZF90eXBlID0gU1RfTkNJX1NFVF9ORkNfTU9ERTtcbiBcdGNtZC5tb2RlID0gMTtcbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25mYy9zdC1uY2kvaTJjLmMgYi9kcml2ZXJzL25mYy9zdC1uY2kvaTJjLmNcbmluZGV4IDE1MmMyMGI2YmIwMWEuLmNmZGRiN2ZmZTAyYTQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25mYy9zdC1uY2kvaTJjLmNcbisrKyBiL2RyaXZlcnMvbmZjL3N0LW5jaS9pMmMuY1xuQEAgLTEwLDEwICsxMCwxMyBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2kyYy5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvZ3Bpby9jb25zdW1lci5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvYWNwaS5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvY2xrLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9pbnRlcnJ1cHQuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2RlbGF5LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9uZmMuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L29mLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9wcm9wZXJ0eS5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvcmVndWxhdG9yL2NvbnN1bWVyLmhcdTAwM2VcbiBcbiAjaW5jbHVkZSBcInN0LW5jaS5oXCJcbiBcbkBAIC0yMiwxMCArMjUsMTcgQEBcbiAvKiBuZGxjIGhlYWRlciAqL1xuICNkZWZpbmUgU1RfTkNJX0ZSQU1FX0hFQURST09NIDFcbiAjZGVmaW5lIFNUX05DSV9GUkFNRV9UQUlMUk9PTSAwXG4rI2RlZmluZSBTVF9OQ0lfUkFXX0ZSQU1FX0hFQURST09NIDBcbiBcbiAjZGVmaW5lIFNUX05DSV9JMkNfTUlOX1NJWkUgNCAgIC8qIFBDQigxKSArIE5DSSBQYWNrZXQgaGVhZGVyKDMpICovXG4rI2RlZmluZSBTVF9OQ0lfTkNJX0hEUl9TSVpFIDMgICAvKiByYXcgTkNJOiBNVC9QQkYvR0lEICsgT0lEICsgbGVuICovXG4gI2RlZmluZSBTVF9OQ0lfSTJDX01BWF9TSVpFIDI1MCAvKiByZXEgNC4yLjEgKi9cbiBcbitlbnVtIHN0X25jaV9pMmNfcHJvdG8ge1xuK1x0U1RfTkNJX0kyQ19QUk9UT19ORExDID0gMCxcbitcdFNUX05DSV9JMkNfUFJPVE9fUkFXX05DSSxcbit9O1xuK1xuICNkZWZpbmUgU1RfTkNJX0RSSVZFUl9OQU1FIFwic3RfbmNpXCJcbiAjZGVmaW5lIFNUX05DSV9JMkNfRFJJVkVSX05BTUUgXCJzdF9uY2lfaTJjXCJcbiBcbkBAIC0zNCw2ICs0NCw3IEBAIHN0cnVjdCBzdF9uY2lfaTJjX3BoeSB7XG4gXHRzdHJ1Y3QgbGx0X25kbGMgKm5kbGM7XG4gXG4gXHRib29sIGlycV9hY3RpdmU7XG4rXHRib29sIHJhd19uY2k7XG4gXG4gXHRzdHJ1Y3QgZ3Bpb19kZXNjICpncGlvZF9yZXNldDtcbiBcbkBAIC0xMTEsNiArMTIyLDQyIEBAIHN0YXRpYyBpbnQgc3RfbmNpX2kyY19yZWFkKHN0cnVjdCBzdF9uY2lfaTJjX3BoeSAqcGh5LFxuIFx0dTggYnVmW1NUX05DSV9JMkNfTUFYX1NJWkVdO1xuIFx0c3RydWN0IGkyY19jbGllbnQgKmNsaWVudCA9IHBoeS1cdTAwM2VpMmNfZGV2O1xuIFxuK1x0aWYgKHBoeS1cdTAwM2VyYXdfbmNpKSB7XG4rXHRcdHIgPSBpMmNfbWFzdGVyX3JlY3YoY2xpZW50LCBidWYsIFNUX05DSV9OQ0lfSERSX1NJWkUpO1xuK1x0XHRpZiAociBcdTAwM2MgMCkge1xuK1x0XHRcdHVzbGVlcF9yYW5nZSgxMDAwLCA0MDAwKTtcbitcdFx0XHRyID0gaTJjX21hc3Rlcl9yZWN2KGNsaWVudCwgYnVmLCBTVF9OQ0lfTkNJX0hEUl9TSVpFKTtcbitcdFx0fVxuK1x0XHRpZiAociAhPSBTVF9OQ0lfTkNJX0hEUl9TSVpFKVxuK1x0XHRcdHJldHVybiAtRVJFTU9URUlPO1xuK1xuK1x0XHRsZW4gPSBidWZbMl07XG4rXHRcdGlmIChsZW4gXHUwMDNlIFNUX05DSV9JMkNfTUFYX1NJWkUpIHtcbitcdFx0XHRuZmNfZXJyKFx1MDAyNmNsaWVudC1cdTAwM2VkZXYsIFwiaW52YWxpZCBmcmFtZSBsZW5cXG5cIik7XG4rXHRcdFx0cmV0dXJuIC1FQkFETVNHO1xuK1x0XHR9XG4rXG4rXHRcdCpza2IgPSBhbGxvY19za2IoU1RfTkNJX05DSV9IRFJfU0laRSArIGxlbiwgR0ZQX0tFUk5FTCk7XG4rXHRcdGlmICghKnNrYilcbitcdFx0XHRyZXR1cm4gLUVOT01FTTtcbitcbitcdFx0c2tiX3B1dCgqc2tiLCBTVF9OQ0lfTkNJX0hEUl9TSVpFKTtcbitcdFx0bWVtY3B5KCgqc2tiKS1cdTAwM2VkYXRhLCBidWYsIFNUX05DSV9OQ0lfSERSX1NJWkUpO1xuK1xuK1x0XHRpZiAoIWxlbilcbitcdFx0XHRyZXR1cm4gMDtcbitcbitcdFx0ciA9IGkyY19tYXN0ZXJfcmVjdihjbGllbnQsIGJ1ZiwgbGVuKTtcbitcdFx0aWYgKHIgIT0gbGVuKSB7XG4rXHRcdFx0a2ZyZWVfc2tiKCpza2IpO1xuK1x0XHRcdHJldHVybiAtRVJFTU9URUlPO1xuK1x0XHR9XG4rXG4rXHRcdHNrYl9wdXQoKnNrYiwgbGVuKTtcbitcdFx0bWVtY3B5KCgqc2tiKS1cdTAwM2VkYXRhICsgU1RfTkNJX05DSV9IRFJfU0laRSwgYnVmLCBsZW4pO1xuK1x0XHRyZXR1cm4gMDtcbitcdH1cbitcbiBcdHIgPSBpMmNfbWFzdGVyX3JlY3YoY2xpZW50LCBidWYsIFNUX05DSV9JMkNfTUlOX1NJWkUpO1xuIFx0aWYgKHIgXHUwMDNjIDApIHsgIC8qIFJldHJ5LCBjaGlwIHdhcyBpbiBzdGFuZGJ5ICovXG4gXHRcdHVzbGVlcF9yYW5nZSgxMDAwLCA0MDAwKTtcbkBAIC0yMTEsNiArMjU4LDggQEAgc3RhdGljIGludCBzdF9uY2lfaTJjX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXG4gXHRcdHJldHVybiAtRU5PTUVNO1xuIFxuIFx0cGh5LVx1MDAzZWkyY19kZXYgPSBjbGllbnQ7XG4rXHRwaHktXHUwMDNlcmF3X25jaSA9ICh1aW50cHRyX3QpZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldikgPT1cbitcdFx0XHRTVF9OQ0lfSTJDX1BST1RPX1JBV19OQ0k7XG4gXG4gXHRpMmNfc2V0X2NsaWVudGRhdGEoY2xpZW50LCBwaHkpO1xuIFxuQEAgLTIyNSwxOSArMjc0LDMxIEBAIHN0YXRpYyBpbnQgc3RfbmNpX2kyY19wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxuIFx0XHRyZXR1cm4gLUVOT0RFVjtcbiBcdH1cbiBcbitcdHIgPSBkZXZtX3JlZ3VsYXRvcl9nZXRfZW5hYmxlX29wdGlvbmFsKGRldiwgXCJ2ZGQtaW9cIik7XG4rXHRpZiAociBcdTAwMjZcdTAwMjYgciAhPSAtRU5PREVWKVxuK1x0XHRyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIHIsIFwiZmFpbGVkIHRvIGVuYWJsZSB2ZGQtaW9cXG5cIik7XG4rXG4rXHRyID0gUFRSX0VSUl9PUl9aRVJPKGRldm1fY2xrX2dldF9vcHRpb25hbF9lbmFibGVkKGRldiwgTlVMTCkpO1xuK1x0aWYgKHIpXG4rXHRcdHJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgciwgXCJmYWlsZWQgdG8gZW5hYmxlIGNsb2NrXFxuXCIpO1xuK1xuIFx0cGh5LVx1MDAzZXNlX3N0YXR1cy5pc19lc2VfcHJlc2VudCA9XG4gXHRcdFx0XHRkZXZpY2VfcHJvcGVydHlfcmVhZF9ib29sKGRldiwgXCJlc2UtcHJlc2VudFwiKTtcbiBcdHBoeS1cdTAwM2VzZV9zdGF0dXMuaXNfdWljY19wcmVzZW50ID1cbiBcdFx0XHRcdGRldmljZV9wcm9wZXJ0eV9yZWFkX2Jvb2woZGV2LCBcInVpY2MtcHJlc2VudFwiKTtcbiBcbiBcdHIgPSBuZGxjX3Byb2JlKHBoeSwgXHUwMDI2aTJjX3BoeV9vcHMsIFx1MDAyNmNsaWVudC1cdTAwM2VkZXYsXG4tXHRcdFx0U1RfTkNJX0ZSQU1FX0hFQURST09NLCBTVF9OQ0lfRlJBTUVfVEFJTFJPT00sXG4rXHRcdFx0cGh5LVx1MDAzZXJhd19uY2kgPyBTVF9OQ0lfUkFXX0ZSQU1FX0hFQURST09NIDpcbitcdFx0XHRcdCAgICAgICBTVF9OQ0lfRlJBTUVfSEVBRFJPT00sXG4rXHRcdFx0U1RfTkNJX0ZSQU1FX1RBSUxST09NLFxuIFx0XHRcdFx1MDAyNnBoeS1cdTAwM2VuZGxjLCBcdTAwMjZwaHktXHUwMDNlc2Vfc3RhdHVzKTtcbiBcdGlmIChyIFx1MDAzYyAwKSB7XG4gXHRcdG5mY19lcnIoXHUwMDI2Y2xpZW50LVx1MDAzZWRldiwgXCJVbmFibGUgdG8gcmVnaXN0ZXIgbmRsYyBsYXllclxcblwiKTtcbiBcdFx0cmV0dXJuIHI7XG4gXHR9XG4gXG4rXHRwaHktXHUwMDNlbmRsYy1cdTAwM2VyYXdfbmNpID0gcGh5LVx1MDAzZXJhd19uY2k7XG4rXG4gXHRwaHktXHUwMDNlaXJxX2FjdGl2ZSA9IHRydWU7XG4gXHRyID0gZGV2bV9yZXF1ZXN0X3RocmVhZGVkX2lycShcdTAwMjZjbGllbnQtXHUwMDNlZGV2LCBjbGllbnQtXHUwMDNlaXJxLCBOVUxMLFxuIFx0XHRcdFx0c3RfbmNpX2lycV90aHJlYWRfZm4sXG5AQCAtMjU3LDIzICszMTgsMjUgQEAgc3RhdGljIHZvaWQgc3RfbmNpX2kyY19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcbiB9XG4gXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBpMmNfZGV2aWNlX2lkIHN0X25jaV9pMmNfaWRfdGFibGVbXSA9IHtcbi1cdHsgLm5hbWUgPSBTVF9OQ0lfRFJJVkVSX05BTUUgfSxcbi1cdHsgfVxuK1x0eyBTVF9OQ0lfRFJJVkVSX05BTUUgfSxcbitcdHt9XG4gfTtcbiBNT0RVTEVfREVWSUNFX1RBQkxFKGkyYywgc3RfbmNpX2kyY19pZF90YWJsZSk7XG4gXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBhY3BpX2RldmljZV9pZCBzdF9uY2lfaTJjX2FjcGlfbWF0Y2hbXSA9IHtcbi1cdHsgLmlkID0gXCJTTU8yMTAxXCIgfSxcbi1cdHsgLmlkID0gXCJTTU8yMTAyXCIgfSxcbi1cdHsgfVxuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYWNwaV9kZXZpY2VfaWQgc3RfbmNpX2kyY19hY3BpX21hdGNoW10gX19tYXliZV91bnVzZWQgPSB7XG4rXHR7XCJTTU8yMTAxXCJ9LFxuK1x0e1wiU01PMjEwMlwifSxcbitcdHt9XG4gfTtcbiBNT0RVTEVfREVWSUNFX1RBQkxFKGFjcGksIHN0X25jaV9pMmNfYWNwaV9tYXRjaCk7XG4gXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgb2Zfc3RfbmNpX2kyY19tYXRjaFtdID0ge1xuLVx0eyAuY29tcGF0aWJsZSA9IFwic3Qsc3QyMW5mY2ItaTJjXCIgfSxcbi1cdHsgLmNvbXBhdGlibGUgPSBcInN0LHN0MjFuZmNiX2kyY1wiIH0sXG4tXHR7IC5jb21wYXRpYmxlID0gXCJzdCxzdDIxbmZjYy1pMmNcIiB9LFxuLVx0eyB9XG4rc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgb2Zfc3RfbmNpX2kyY19tYXRjaFtdIF9fbWF5YmVfdW51c2VkID0ge1xuK1x0eyAuY29tcGF0aWJsZSA9IFwic3Qsc3QyMW5mY2ItaTJjXCIsIH0sXG4rXHR7IC5jb21wYXRpYmxlID0gXCJzdCxzdDIxbmZjYl9pMmNcIiwgfSxcbitcdHsgLmNvbXBhdGlibGUgPSBcInN0LHN0MjFuZmNjLWkyY1wiLCB9LFxuK1x0eyAuY29tcGF0aWJsZSA9IFwic3Qsc3QyMW5mY2RcIixcbitcdCAgLmRhdGEgPSAodm9pZCAqKVNUX05DSV9JMkNfUFJPVE9fUkFXX05DSSB9LFxuK1x0e31cbiB9O1xuIE1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIG9mX3N0X25jaV9pMmNfbWF0Y2gpO1xuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmMgYi9kcml2ZXJzL25mYy9zdC1uY2kvbmRsYy5jXG5pbmRleCBiZTQ4MDg4NTljZmE5Li5iMzE5MjQ2MGM5NmUzIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZmMvc3QtbmNpL25kbGMuY1xuKysrIGIvZHJpdmVycy9uZmMvc3QtbmNpL25kbGMuY1xuQEAgLTYyLDggKzYyLDkgQEAgdm9pZCBuZGxjX2Nsb3NlKHN0cnVjdCBsbHRfbmRsYyAqbmRsYylcbiBcdC8qIHRvZ2dsZSByZXNldCBwaW4gKi9cbiBcdG5kbGMtXHUwMDNlb3BzLVx1MDAzZWVuYWJsZShuZGxjLVx1MDAzZXBoeV9pZCk7XG4gXG4tXHRuY2lfcHJvcF9jbWQobmRsYy1cdTAwM2VuZGV2LCBTVF9OQ0lfQ09SRV9QUk9QLFxuLVx0XHQgICAgIHNpemVvZihzdHJ1Y3QgbmNpX21vZGVfc2V0X2NtZCksIChfX3U4ICopXHUwMDI2Y21kKTtcbitcdGlmICghbmRsYy1cdTAwM2VyYXdfbmNpKVxuK1x0XHRuY2lfcHJvcF9jbWQobmRsYy1cdTAwM2VuZGV2LCBTVF9OQ0lfQ09SRV9QUk9QLFxuK1x0XHRcdCAgICAgc2l6ZW9mKHN0cnVjdCBuY2lfbW9kZV9zZXRfY21kKSwgKF9fdTggKilcdTAwMjZjbWQpO1xuIFxuIFx0bmRsYy1cdTAwM2Vwb3dlcmVkID0gMDtcbiBcdG5kbGMtXHUwMDNlb3BzLVx1MDAzZWRpc2FibGUobmRsYy1cdTAwM2VwaHlfaWQpO1xuQEAgLTcyLDExICs3MywxMyBAQCBFWFBPUlRfU1lNQk9MKG5kbGNfY2xvc2UpO1xuIFxuIGludCBuZGxjX3NlbmQoc3RydWN0IGxsdF9uZGxjICpuZGxjLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIHtcbi1cdC8qIGFkZCBuZGxjIGhlYWRlciAqL1xuLVx0dTggcGNiID0gUENCX1RZUEVfREFUQUZSQU1FIHwgUENCX0RBVEFGUkFNRV9SRVRSQU5TTUlUX05PIHxcbi1cdFx0UENCX0ZSQU1FX0NSQ19JTkZPX05PVFBSRVNFTlQ7XG4rXHRpZiAoIW5kbGMtXHUwMDNlcmF3X25jaSkge1xuK1x0XHQvKiBhZGQgbmRsYyBoZWFkZXIgKi9cbitcdFx0dTggcGNiID0gUENCX1RZUEVfREFUQUZSQU1FIHwgUENCX0RBVEFGUkFNRV9SRVRSQU5TTUlUX05PIHxcbitcdFx0XHRQQ0JfRlJBTUVfQ1JDX0lORk9fTk9UUFJFU0VOVDtcbiBcbi1cdCoodTggKilza2JfcHVzaChza2IsIDEpID0gcGNiO1xuK1x0XHQqKHU4ICopc2tiX3B1c2goc2tiLCAxKSA9IHBjYjtcbitcdH1cbiBcdHNrYl9xdWV1ZV90YWlsKFx1MDAyNm5kbGMtXHUwMDNlc2VuZF9xLCBza2IpO1xuIFxuIFx0c2NoZWR1bGVfd29yayhcdTAwMjZuZGxjLVx1MDAzZXNtX3dvcmspO1xuQEAgLTEwMyw2ICsxMDYsMTAgQEAgc3RhdGljIHZvaWQgbGx0X25kbGNfc2VuZF9xdWV1ZShzdHJ1Y3QgbGx0X25kbGMgKm5kbGMpXG4gXHRcdFx0bmRsYy1cdTAwM2VoYXJkX2ZhdWx0ID0gcjtcbiBcdFx0XHRicmVhaztcbiBcdFx0fVxuK1x0XHRpZiAobmRsYy1cdTAwM2VyYXdfbmNpKSB7XG4rXHRcdFx0a2ZyZWVfc2tiKHNrYik7XG4rXHRcdFx0Y29udGludWU7XG4rXHRcdH1cbiBcdFx0dGltZV9zZW50ID0gamlmZmllcztcbiBcdFx0Kih1bnNpZ25lZCBsb25nICopc2tiLVx1MDAzZWNiID0gdGltZV9zZW50O1xuIFxuQEAgLTE1NCw2ICsxNjEsMTAgQEAgc3RhdGljIHZvaWQgbGx0X25kbGNfcmN2X3F1ZXVlKHN0cnVjdCBsbHRfbmRsYyAqbmRsYylcbiBcdFx0cHJfZGVidWcoXCJyY3ZRbGVuPSVkXFxuXCIsIG5kbGMtXHUwMDNlcmN2X3EucWxlbik7XG4gXG4gXHR3aGlsZSAoKHNrYiA9IHNrYl9kZXF1ZXVlKFx1MDAyNm5kbGMtXHUwMDNlcmN2X3EpKSAhPSBOVUxMKSB7XG4rXHRcdGlmIChuZGxjLVx1MDAzZXJhd19uY2kpIHtcbitcdFx0XHRuY2lfcmVjdl9mcmFtZShuZGxjLVx1MDAzZW5kZXYsIHNrYik7XG4rXHRcdFx0Y29udGludWU7XG4rXHRcdH1cbiBcdFx0cGNiID0gc2tiLVx1MDAzZWRhdGFbMF07XG4gXHRcdHNrYl9wdWxsKHNrYiwgMSk7XG4gXHRcdGlmICgocGNiIFx1MDAyNiBQQ0JfVFlQRV9NQVNLKSA9PSBQQ0JfVFlQRV9TVVBFUlZJU09SKSB7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZmMvc3QtbmNpL25kbGMuaCBiL2RyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmhcbmluZGV4IGMyNGNlOWIwZGY1MmUuLjVjMWY4YmFmMDQ3MTggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25mYy9zdC1uY2kvbmRsYy5oXG4rKysgYi9kcml2ZXJzL25mYy9zdC1uY2kvbmRsYy5oXG5AQCAtMzksNiArMzksOCBAQCBzdHJ1Y3QgbGx0X25kbGMge1xuIFx0ICovXG4gXHRpbnQgaGFyZF9mYXVsdDtcbiBcdGludCBwb3dlcmVkO1xuK1x0LyogU1QyMU5GQ0Q6IHJhdyBOQ0kgb24gdGhlIHdpcmUsIG5vIE5ETEMgUENCIC8gQUNLIHRpbWVycyAqL1xuK1x0Ym9vbCByYXdfbmNpO1xuIH07XG4gXG4gaW50IG5kbGNfb3BlbihzdHJ1Y3QgbGx0X25kbGMgKm5kbGMpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmZjL3N0LW5jaS9zZS5jIGIvZHJpdmVycy9uZmMvc3QtbmNpL3NlLmNcbmluZGV4IDYwN2VjNzY4ZWI3YjQuLjQ0Y2MxMDJiY2RlMjEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25mYy9zdC1uY2kvc2UuY1xuKysrIGIvZHJpdmVycy9uZmMvc3QtbmNpL3NlLmNcbkBAIC02MjEsNiArNjIxLDkgQEAgaW50IHN0X25jaV9kaXNjb3Zlcl9zZShzdHJ1Y3QgbmNpX2RldiAqbmRldilcbiBcdGludCBzZV9jb3VudCA9IDA7XG4gXHRzdHJ1Y3Qgc3RfbmNpX2luZm8gKmluZm8gPSBuY2lfZ2V0X2RydmRhdGEobmRldik7XG4gXG4rXHRpZiAoaW5mby1cdTAwM2VuZGxjLVx1MDAzZXJhd19uY2kpXG4rXHRcdHJldHVybiAwO1xuK1xuIFx0ciA9IHN0X25jaV9oY2lfbmV0d29ya19pbml0KG5kZXYpO1xuIFx0aWYgKHIgIT0gMClcbiBcdFx0cmV0dXJuIHI7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMFQyMTowMTo1Ny45MTY1NTM1MjNaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MjkyODM1MTQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIFNULU5DSSBORkMgRHJpdmVyIFBhdGNoIFNlcmllcyoqXG5cbk9rYXksIHNvIHRoZXJlJ3MgYSBwYXRjaCBzZXJpZXMgZm9yIHRoZSBgc3QtbmNpYCBORkMgZHJpdmVyLiBTZWVtcyBsaWtlIGl0J3MgYWRkaW5nIHN1cHBvcnQgZm9yIGBzdCxzdDIxbmZjZGAsIHdoaWNoIGlzIGludGVyZXN0aW5nIGJlY2F1c2UgaXQncyB1c2luZyBcInJhdyBOQ0lcIiBvdmVyIEkyQyBpbnN0ZWFkIG9mIHRoZSB1c3VhbCBORExDIHByb3RvY29sLiBJIG5lZWQgdG8gdGFrZSBhIGNsb3NlciBsb29rIGF0IHRoZXNlIGNoYW5nZXM7IHRoZXkncmUgdG91Y2hpbmcgYGRyaXZlcnMvbmZjL3N0LW5jaS9pMmMuY2AsIGBkcml2ZXJzL25mYy9zdC1uY2kvY29yZS5jYCwgYGRyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmNgLCBhbmQgYGRyaXZlcnMvbmZjL3N0LW5jaS9zZS5jYCwgc28gaXQncyBxdWl0ZSBhIGJpdCBtb3JlIGludm9sdmVkIHRoYW4gYSBzaW1wbGUgYnVnIGZpeC5cblxuTXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzOiBJcyB0aGlzIHJlYWNoYWJsZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50PyBUaGlzIGRyaXZlciBpcyBJMkMgYmFzZWQgZm9yIHRoZSBORkMgY29udHJvbGxlci4gSTJDIGRldmljZXMgKmNhbiogYmUgaW5zdGFudGlhdGVkIGluIFFFTVUgb3IgdmlhIGBpMmMtc3R1YmAgb3Igc3lzZnMuIFRoZSB1c3VhbCBhcHByb2FjaCB3b3VsZCBiZSB0byBzZWUgaWYgYHN5emthbGxlcmAgY2FuIGZ1enogSTJDIGRldmljZXMgYnkgaW5qZWN0aW5nIEkyQyB0cmFmZmljIG9yIGluc3RhbnRpYXRpbmcgdGhlbSB2aWEgc3lzZnMuIEFoLCB5ZXMsIEkgcmVjYWxsIG5vdywgc3l6a2FsbGVyIGRvZXMgaGF2ZSBzb21lIEkyQyBmdXp6aW5nIHN1cHBvcnQsIHR5cGljYWxseSB3aXRoIGAvZGV2L2kyYy0qYCBvciBieSBpbmplY3RpbmcgZGV2aWNlcy5cblxuVGhlIGNyaXRpY2FsIHF1ZXN0aW9uIGhlcmUgaXMgd2hldGhlciBvciBub3QgdGhpcyBgc3QtbmNpYCBmdW5jdGlvbmFsaXR5IGlzIGFjdHVhbGx5IHJlYWNoYWJsZSBieSB0aGUgZnV6emVycy4gU28sIGxldCdzIHN0YXJ0IHdpdGggYSBxdWljayBzZWFyY2ggdG8gc2VlIGlmIHRoZSBwcm9iZSBmdW5jdGlvbiBgc3RfbmNpX2kyY19wcm9iZWAgaXMgYWN0dWFsbHkgcHJlc2VudC4gSSB3aWxsIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRoaXMgd2lsbCBsb29rIGxpa2UgdG8gZnV6eiB0aGlzLCBhbmQgYXNzZXNzIGlmIGl0J3MgZXZlbiBwcmFjdGljYWwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY5MTgsIk91dHB1dFRva2VucyI6MjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNTUsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMFQyMTowMjowNC4yMDkzOTIzOTdaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQ2MTI1OTQxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdF9uY2lfaTJjX3Byb2JlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmZjL3N0LW5jaS9pMmMuYz0yNDA9c3RhdGljIGNvbnN0IHN0cnVjdCBhY3BpX2dwaW9fbWFwcGluZyBhY3BpX3N0X25jaV9ncGlvc1tdID0ge1xcbi0tXFxuZHJpdmVycy9uZmMvc3QtbmNpL2kyYy5jLTI0NC1cXG5kcml2ZXJzL25mYy9zdC1uY2kvaTJjLmM6MjQ1OnN0YXRpYyBpbnQgc3RfbmNpX2kyY19wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxcbmRyaXZlcnMvbmZjL3N0LW5jaS9pMmMuYy0yNDYte1xcbi0tXFxuZHJpdmVycy9uZmMvc3QtbmNpL2kyYy5jPTM0Mz1zdGF0aWMgc3RydWN0IGkyY19kcml2ZXIgc3RfbmNpX2kyY19kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL25mYy9zdC1uY2kvaTJjLmMtMzQ4LVxcdH0sXFxuZHJpdmVycy9uZmMvc3QtbmNpL2kyYy5jOjM0OTpcXHQucHJvYmUgPSBzdF9uY2lfaTJjX3Byb2JlLFxcbmRyaXZlcnMvbmZjL3N0LW5jaS9pMmMuYy0zNTAtXFx0LmlkX3RhYmxlID0gc3RfbmNpX2kyY19pZF90YWJsZSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjBUMjE6MDI6MDYuNjcwNjU2MTA3WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODU2MDU5NzM4NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIHRoZSBJMkMgRHJpdmVyOiBBIFRob3VnaHQgUHJvY2VzcyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgSTJDIGRyaXZlci4gVGhlIGltbWVkaWF0ZSBxdWVzdGlvbiBpcywgY2FuIHRoaXMgdGhpbmcgYmUgZnV6emVkPyBNeSBpbml0aWFsIHRob3VnaHQgZ29lcyB0byBTeXprYWxsZXIsIG5hdHVyYWxseS4gQ2FuIGl0IGhhbmRsZSBJMkMgZHJpdmVycz8gSSAqdGhvdWdodCogU3l6a2FsbGVyIGhhZCBzb21lIHBzZXVkby1zeXNjYWxscywgbWF5YmUgc29tZXRoaW5nIGxpa2UgYHN5el9pMmNfc2V0dXBgIHRvIGdldCB0aGluZ3Mgcm9sbGluZywgYnV0IG5vLCB0aGUgZG9jdW1lbnRhdGlvbiBleHBsaWNpdGx5IHNheXMgdGhvc2UgYXJlbid0IGF2YWlsYWJsZSBmb3IgZGlyZWN0IHVzYWdlLiBIbW0sIG1heWJlIHRoZXJlJ3MgYSB3b3JrYXJvdW5kLCB1c2luZyBhIGBzeXpfZ2VuZXRsaW5rX2dldF9mYW1pbHlgLXR5cGUgYXBwcm9hY2g/IFByb2JhYmx5IG5vdCwgSSBuZWVkIHRvIGZvY3VzIG9uIGluc3RhbnRpYXRpbmcgdGhlc2UgSTJDIGRldmljZXMgZmlyc3QuXG5cblJpZ2h0LCBJJ20gZ2V0dGluZyBib2dnZWQgZG93biBpbiB0aGUgU3l6a2FsbGVyIGRldGFpbHMsIGFuZCBJIGNhbid0IGV2ZW4gKnNlZSogaWYgdGhvc2UgcHNldWRvLXN5c2NhbGxzIGV4aXN0LiBMZXQgbWUgdHJ5IGEgZGlmZmVyZW50IHRhY2suIEJhY2sgdG8gZnVuZGFtZW50YWxzOiBkb2VzIFN5emthbGxlciAqZXZlbiogYWxsb3cgZm9yIHRoZSBpbnN0YW50aWF0aW9uIG9mIEkyQyBkZXZpY2VzPyBNeSBtZW1vcnkgc2F5cyB5ZXMsIHRoYXQgaXQncyBvZnRlbiBkb25lIHRocm91Z2ggc3lzZnMgbWFuaXB1bGF0aW9uLCBzb21ldGhpbmcgbGlrZSBgL3N5cy9idXMvaTJjL2RldmljZXMvaTJjLVgvbmV3X2RldmljZWAuIFxuXG5Ob3csIHRoZSBpbXBvcnRhbnQgY2F2ZWF0LCB0aGUgcHJvbXB0IHJlbWluZHMgbWUgdG8gdmVyaWZ5IHdoZXRoZXIgdGhpcyBkcml2ZXIgaXMgYWN0dWFsbHkgcmVhY2hhYmxlIHdpdGhpbiBhIFFFTVUgZW52aXJvbm1lbnQuIFRoZSBwcm9tcHQgZ2F2ZSBzb21lIGV4YW1wbGVzIG9mIGRyaXZlcnMgdGhhdCBhcmVuJ3QsIGxpa2UgdmVuZG9yLXNwZWNpZmljIGhhcmR3YXJlIG9yIGRyaXZlciB1bmJpbmRpbmcgY2FsbGJhY2tzLCBzbyBJIG5lZWQgdG8ga2VlcCB0aGF0IGluIG1pbmQuXG5cbk9rYXksIGlzIHRoZSBgc3QtbmNpYCBkcml2ZXIgSSdtIGxvb2tpbmcgYXQgZXZlbiBhbiBJMkMgZHJpdmVyPyBRdWljayBzYW5pdHkgY2hlY2s6IHllcywgaXQncyBgc3RfbmNpX2kyY19kcml2ZXJgLiBOb3csIGNhbiBJIGluc3RhbnRpYXRlIGl0IGluIFFFTVU/IFllcywgbG9va3MgbGlrZSBpdCdzIGRvbmUgdmlhIGBuZXdfZGV2aWNlYCBpbiBzeXNmcywgc28gSSBjYW4gcHJvYmFibHkgY29uZmlybSB0aGlzLiBcblxuU28gZmFyLCBzbyBnb29kLiBMb29rcyBsaWtlIGl0J3MgcmVhY2hhYmxlIGFuZCBJIGNhbiBiZWdpbiB0aGlua2luZyBhYm91dCBob3cgdG8gZ2V0IHRoZSBjb25maWd1cmF0aW9uIGZvciB0aGUgZHJpdmVyLiBJIG5lZWQgdG8gZGlnIGludG8gdGhlIEtjb25maWcgZm9yIGBzdC1uY2lgIHRvIGdldCBhbGwgdGhlIGRldGFpbHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc4NTcsIk91dHB1dFRva2VucyI6MjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjBUMjE6MDI6MTUuMjMxMjYzMDkyWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxOTc3MjMxMjUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5GQ19TVF9OQ0lcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZmMvc3QtbmNpL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5kcml2ZXJzL25mYy9zdC1uY2kvS2NvbmZpZzoyOmNvbmZpZyBORkNfU1RfTkNJXFxuZHJpdmVycy9uZmMvc3QtbmNpL0tjb25maWctMy1cXHR0cmlzdGF0ZVxcbi0tXFxuZHJpdmVycy9uZmMvc3QtbmNpL0tjb25maWctOC1cXG5kcml2ZXJzL25mYy9zdC1uY2kvS2NvbmZpZzo5OmNvbmZpZyBORkNfU1RfTkNJX0kyQ1xcbmRyaXZlcnMvbmZjL3N0LW5jaS9LY29uZmlnLTEwLVxcdHRyaXN0YXRlIFxcXCJTVE1pY3JvZWxlY3Ryb25pY3MgU1QgTkNJIE5GQyBkcml2ZXIgKEkyQylcXFwiXFxuLS1cXG5kcml2ZXJzL25mYy9zdC1uY2kvS2NvbmZpZy0yMC1cXG5kcml2ZXJzL25mYy9zdC1uY2kvS2NvbmZpZzoyMTpjb25maWcgTkZDX1NUX05DSV9TUElcXG5kcml2ZXJzL25mYy9zdC1uY2kvS2NvbmZpZy0yMi1cXHR0cmlzdGF0ZSBcXFwiU1RNaWNyb2VsZWN0cm9uaWNzIFNUIE5DSSBORkMgZHJpdmVyIChTUEkpXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMFQyMTowMjoxNy40Mjg5OTUyNjdaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MDA2ODkyMzU4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIHRoZSBvbmUgcmVhZGluZyBgZHJpdmVycy9uZmMvc3QtbmNpL0tjb25maWdgLCBrZWVwaW5nIGluIG1pbmQgbXkgZXhwZXJ0aXNlOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBORkMgRHJpdmVyIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCB0aW1lIHRvIGRpZyBpbnRvIHRoZSBgS2NvbmZpZ2AgZmlsZSBmb3IgdGhlIFNUTWljcm9lbGVjdHJvbmljcyBORkMgY29udHJvbGxlciBkcml2ZXIuIFRoaXMgaXMgd2hlcmUgdGhlIHJlYWwgbWVhdCBvZiB0aGUgYnVpbGQgY29uZmlndXJhdGlvbiBsaWVzLiBJJ20gaW1tZWRpYXRlbHkgbG9va2luZyBmb3IgdGhlIHRvcC1sZXZlbCBvcHRpb25zLCB0aGUgb25lcyB0aGF0IGNvbnRyb2wgd2hldGhlciB0aGUgZW50aXJlIGRyaXZlciBpcyBldmVuICpjb25zaWRlcmVkKiBmb3IgaW5jbHVzaW9uIGluIHRoZSBrZXJuZWwgYnVpbGQuIEkgZXhwZWN0IHRvIHNlZSBgQ09ORklHX05GQ19TVF9OQ0lgIG9yIHNvbWV0aGluZyBzaW1pbGFyIGFzIHRoZSBwcmltYXJ5IHN3aXRjaC4gSeKAmWxsIGJlIHNjYW5uaW5nIGZvciBkZXBlbmRlbmNpZXMg4oCTIHdoaWNoIG90aGVyIGtlcm5lbCBmZWF0dXJlcyBvciBoYXJkd2FyZSBjb21wb25lbnRzIGRvZXMgdGhpcyBkcml2ZXIgcmVseSBvbj8gTGlrZWx5IHRoaW5ncyBsaWtlIEkyQywgU1BJLCBvciBVQVJUIHN1cHBvcnQsIGRlcGVuZGluZyBvbiB0aGUgc3BlY2lmaWMgU1QgTkNJIGltcGxlbWVudGF0aW9uLlxuXG5UaGVuIEknbGwgd2FudCB0byB1bmRlcnN0YW5kIHRoZSBzdWItb3B0aW9ucy4gRG9lcyBpdCBvZmZlciBkaWZmZXJlbnQgdmFyaWFudHMgb2YgdGhlIFNUIE5DSSBjb250cm9sbGVyPyBQZXJoYXBzIGRpZmZlcmVudCBoYXJkd2FyZSByZXZpc2lvbnMsIG9yIHN1cHBvcnQgZm9yIHNwZWNpZmljIGNvbW11bmljYXRpb24gcHJvdG9jb2xzIChsaWtlIElTTy9JRUMgMTQ0NDMgb3IgSVNPL0lFQyAxNTY5MykuIEkgbmVlZCB0byBzZWUgaG93IHRoZXkncmUgZGlmZmVyZW50aWF0ZWQgYW5kLCBtb3JlIGltcG9ydGFudGx5LCBob3cgdGhlaXIgZGVmYXVsdCB2YWx1ZXMgYXJlIHNldC4gQXJlIHRoZXJlIGFueSBkZWZhdWx0IHZhbHVlcyB0aGF0IEkgbmVlZCB0byBiZSBjb25jZXJuZWQgYWJvdXQgaW4gdGVybXMgb2YgcGVyZm9ybWFuY2Ugb3IgcG93ZXIgY29uc3VtcHRpb24/XG5cbkknbSBrZWVwaW5nIGFuIGV5ZSBvdXQgZm9yIGFueSB0cmlzdGF0ZSBvciBib29sZWFuIG9wdGlvbnMgdGhhdCBjb250cm9sIGZlYXR1cmVzIEkgd291bGQgdHlwaWNhbGx5IGV4cGVjdCB0byBiZSBjb25maWd1cmFibGUgKGVycm9yIGhhbmRsaW5nLCBkZWJ1ZyBsZXZlbHMsIHBvbGxpbmcgdnMuIGludGVycnVwdC1kcml2ZW4gb3BlcmF0aW9uLCBzcGVjaWZpYyBmaXJtd2FyZSB2ZXJzaW9ucywgZXRjLikuIEkgbmVlZCB0byBrbm93IHRoZSBwb3RlbnRpYWwgY29uZmlndXJhYmlsaXR5IG9mIHRoZSBkcml2ZXIuIEFyZSB0aGVyZSBjb25kaXRpb25hbCBkZXBlbmRlbmNpZXM/IEZvciBleGFtcGxlLCBpZiBJIGVuYWJsZSBhIGNlcnRhaW4gZmVhdHVyZSwgZG9lcyBpdCBhdXRvbWF0aWNhbGx5IHJlcXVpcmUgYW5vdGhlcj9cblxuRmluYWxseSwgSeKAmWxsIGJlIGNoZWNraW5nIGZvciBoZWxwIHRleHQuIEdvb2QgS2NvbmZpZyBmaWxlcyBwcm92aWRlIGNsZWFyLCBjb25jaXNlIGRlc2NyaXB0aW9ucyBvZiBlYWNoIG9wdGlvbi4gVGhpcyBoZWxwIHRleHQgaXMgY3J1Y2lhbCBmb3IgdW5kZXJzdGFuZGluZyB0aGUgKnB1cnBvc2UqIG9mIGVhY2ggc2V0dGluZyBhbmQgZGV0ZXJtaW5pbmcgdGhlIGFwcHJvcHJpYXRlIHZhbHVlcyBmb3IgYSBnaXZlbiBzeXN0ZW0gY29uZmlndXJhdGlvbi4gSSdtIGFscmVhZHkgYW50aWNpcGF0aW5nIG5lZWRpbmcgdG8gcmV2aWV3IHRoZSBhY2NvbXBhbnlpbmcgZG9jdW1lbnRhdGlvbiB0byBmdWxseSBncmFzcCB0aGUgbnVhbmNlcywgYnV0IHRoZSBLY29uZmlnIGZpbGUgc2hvdWxkIGJlIHRoZSBmaXJzdCBwbGFjZSB0byBzdGFydC4gSSdtIGhvcGluZyBpdCdzIHdlbGwtc3RydWN0dXJlZCBhbmQgdXNlcyBjbGVhciBuYW1pbmcgY29udmVudGlvbnMg4oCTIG1ha2VzIGxpZmUgc28gbXVjaCBlYXNpZXIhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjkwODYsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMFQyMTowMjoyMi40MzU4OTAyNTVaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5Mjk4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25mYy9zdC1uY2kvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAzMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0Y29uZmlnIE5GQ19TVF9OQ0lcXG4gICAzOlxcdFxcdHRyaXN0YXRlXFxuICAgNDpcXHRcXHRoZWxwXFxuICAgNTpcXHRcXHQgIFNUTWljcm9lbGVjdHJvbmljcyBORkMgTkNJIGNoaXBzIGNvcmUgZHJpdmVyLiBJdCBpbXBsZW1lbnRzIHRoZSBjaGlwc2V0XFxuICAgNjpcXHRcXHQgIE5DSSBsb2dpYyBhbmQgaG9va3MgaW50byB0aGUgTkZDIGtlcm5lbCBBUElzLiBQaHlzaWNhbCBsYXllcnMgd2lsbFxcbiAgIDc6XFx0XFx0ICByZWdpc3RlciBhZ2FpbnN0IGl0LlxcbiAgIDg6XFx0XFxuICAgOTpcXHRjb25maWcgTkZDX1NUX05DSV9JMkNcXG4gIDEwOlxcdFxcdHRyaXN0YXRlIFxcXCJTVE1pY3JvZWxlY3Ryb25pY3MgU1QgTkNJIE5GQyBkcml2ZXIgKEkyQylcXFwiXFxuICAxMTpcXHRcXHRkZXBlbmRzIG9uIE5GQ19OQ0kgXFx1MDAyNlxcdTAwMjYgSTJDXFxuICAxMjpcXHRcXHRzZWxlY3QgTkZDX1NUX05DSVxcbiAgMTM6XFx0XFx0aGVscFxcbiAgMTQ6XFx0XFx0ICBUaGlzIG1vZHVsZSBhZGRzIHN1cHBvcnQgZm9yIGFuIEkyQyBpbnRlcmZhY2UgdG8gdGhlXFxuICAxNTpcXHRcXHQgIFNUTWljcm9lbGVjdHJvbmljcyBORkMgTkNJIGNoaXBzIGZhbWlseS5cXG4gIDE2OlxcdFxcdCAgU2VsZWN0IHRoaXMgaWYgeW91ciBwbGF0Zm9ybSBpcyB1c2luZyB0aGUgaTJjIGJ1cy5cXG4gIDE3OlxcdFxcbiAgMTg6XFx0XFx0ICBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGEgbW9kdWxlLCBpdCdsbCBiZSBjYWxsZWQgc3QtbmNpX2kyYy5cXG4gIDE5OlxcdFxcdCAgU2F5IE4gaWYgdW5zdXJlLlxcbiAgMjA6XFx0XFxuICAyMTpcXHRjb25maWcgTkZDX1NUX05DSV9TUElcXG4gIDIyOlxcdFxcdHRyaXN0YXRlIFxcXCJTVE1pY3JvZWxlY3Ryb25pY3MgU1QgTkNJIE5GQyBkcml2ZXIgKFNQSSlcXFwiXFxuICAyMzpcXHRcXHRkZXBlbmRzIG9uIE5GQ19OQ0kgXFx1MDAyNlxcdTAwMjYgU1BJXFxuICAyNDpcXHRcXHRzZWxlY3QgTkZDX1NUX05DSVxcbiAgMjU6XFx0XFx0aGVscFxcbiAgMjY6XFx0XFx0ICBUaGlzIG1vZHVsZSBhZGRzIHN1cHBvcnQgZm9yIGFuIFNQSSBpbnRlcmZhY2UgdG8gdGhlXFxuICAyNzpcXHRcXHQgIFNUTWljcm9lbGVjdHJvbmljcyBORkMgTkNJIGNoaXBzIGZhbWlseS5cXG4gIDI4OlxcdFxcdCAgU2VsZWN0IHRoaXMgaWYgeW91ciBwbGF0Zm9ybSBpcyB1c2luZyB0aGUgc3BpIGJ1cy5cXG4gIDI5OlxcdFxcbiAgMzA6XFx0XFx0ICBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGEgbW9kdWxlLCBpdCdsbCBiZSBjYWxsZWQgc3QtbmNpX3NwaS5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjBUMjE6MDI6MjIuNDM1OTg0ODA1WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDgyMTI3MDE1MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQnJlYWtpbmcgRG93biBUaGlzIE5GQyBJbnRlZ3JhdGlvbioqXG5cbkFscmlnaHQsIHNvIHdlJ3JlIGRpdmluZyBpbnRvIHRoaXMgTkZDIGludGVncmF0aW9uLCBhbmQgSSBzZWUgdGhhdCB3ZSBuZWVkIGBORkNfU1RfTkNJX0kyQ2AuIE5hdHVyYWxseSwgbXkgbWluZCBpbW1lZGlhdGVseSBqdW1wcyB0byB0aGUgZGVwZW5kZW5jaWVzLiBGaXJzdCwgSSBrbm93IHRoYXQgYE5GQ19TVF9OQ0lfSTJDYCByZWxpZXMgb24gYm90aCBgTkZDX05DSWAgYW5kIGBJMkNgLiBNYWtlcyBzZW5zZSwgdGhlIE5DSSBpbnRlcmZhY2UgdXNpbmcgSTJDIHRyYW5zcG9ydC4uLiBzdGFuZGFyZCBzdHVmZi4gQmVmb3JlIEkgZ28gZnVydGhlciBkb3duIHRoYXQgcmFiYml0IGhvbGUsIEkgcmVhbGx5IG5lZWQgdG8gY29uZmlybSBgTkZDX05DSWAgaXMgY29uZmlndXJlZCBjb3JyZWN0bHkuIEdvdHRhIG1ha2Ugc3VyZSB0aGUgY29yZSBOQ0kgbGF5ZXIgaXMgZW5hYmxlZCBiZWZvcmUgSSBzdGFydCBmaWRkbGluZyB3aXRoIHRoZSBTVC1zcGVjaWZpYyBpbXBsZW1lbnRhdGlvbiBvbiB0b3Agb2YgaXQuIExldCdzIHNlZSB3aGF0J3Mgc2V0IGZvciB0aGF0LiBObyBwb2ludCBpbiB3YXN0aW5nIHRpbWUgb24gdGhlIEkyQyBpZiB0aGUgYmFzZSBpc24ndCBzb2xpZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTAwNDYsIk91dHB1dFRva2VucyI6MTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIwVDIxOjAyOjI3LjI1NzI1NzkxNloiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjIzNDQyMDA0NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTkZDX05DSVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmZjL25jaS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxubmV0L25mYy9uY2kvS2NvbmZpZzoyOmNvbmZpZyBORkNfTkNJXFxubmV0L25mYy9uY2kvS2NvbmZpZy0zLVxcdGRlcGVuZHMgb24gTkZDXFxuLS1cXG5uZXQvbmZjL25jaS9LY29uZmlnLTEyLVxcbm5ldC9uZmMvbmNpL0tjb25maWc6MTM6Y29uZmlnIE5GQ19OQ0lfU1BJXFxubmV0L25mYy9uY2kvS2NvbmZpZy0xNC1cXHRkZXBlbmRzIG9uIE5GQ19OQ0kgXFx1MDAyNlxcdTAwMjYgU1BJXFxuLS1cXG5uZXQvbmZjL25jaS9LY29uZmlnLTIzLVxcbm5ldC9uZmMvbmNpL0tjb25maWc6MjQ6Y29uZmlnIE5GQ19OQ0lfVUFSVFxcbm5ldC9uZmMvbmNpL0tjb25maWctMjUtXFx0ZGVwZW5kcyBvbiBORkNfTkNJIFxcdTAwMjZcXHUwMDI2IFRUWVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMFQyMTowMjoyOS40OTE2ODYwMjNaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzg1MzA2ODkyNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzczpcblxuKipEZXBlbmRlbmNpZXMgYW5kIFZlcmlmaWNhdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGBORkNfTkNJYCBoZXJlLCBhbmQgbXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgaXQncyBnb2luZyB0byBiZSBkZXBlbmRlbnQgb24gYE5GQ2AuIFRoYXQncyBhIHByZXR0eSBzdGFuZGFyZCBhc3N1bXB0aW9uLCBidXQgSSBuZWVkIHRvIGNvbmZpcm0gaXQuIFRoZXJlJ3Mgbm8gcG9pbnQgaW4gZ29pbmcgZG93biBhIHJhYmJpdCBob2xlIHdpdGhvdXQgZmlyc3QgdmVyaWZ5aW5nIHRoZSBmb3VuZGF0aW9uLiBTbywgdGhlIGxvZ2ljYWwgbmV4dCBzdGVwIGlzIHRvIGRyaWxsIGRvd24gaW50byBgTkZDYCBpdHNlbGYuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBiZWhhdmlvdXIgYW5kIGVuc3VyZSBpdCdzIGZ1bmN0aW9uaW5nIGFzIGV4cGVjdGVkIGJlZm9yZSBJIGNhbiBtb3ZlIGZvcndhcmQgd2l0aCBgTkZDX05DSWAuIEl0J3MgYWxsIGFib3V0IHZhbGlkYXRpbmcgdGhlIGJhc2UgbGV2ZWwgZGVwZW5kZW5jeS4gR290dGEgYmUgdGhvcm91Z2guXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwNTEwLCJPdXRwdXRUb2tlbnMiOjE2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjBUMjE6MDI6MzMuMzQ0NzU4OTE5WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzczMjgyOTYyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORkNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9tNjhrL0tjb25maWcuZGV2aWNlcz0zNj1jb25maWcgTkZCTE9DS1xcbi0tXFxuYXJjaC9tNjhrL0tjb25maWcuZGV2aWNlcy00My1cXG5hcmNoL202OGsvS2NvbmZpZy5kZXZpY2VzOjQ0OmNvbmZpZyBORkNPTlxcbmFyY2gvbTY4ay9LY29uZmlnLmRldmljZXMtNDUtXFx0dHJpc3RhdGUgXFxcIk5hdEZlYXQgY29uc29sZSBkcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25mYy9LY29uZmlnPTY9bWVudSBcXFwiTmVhciBGaWVsZCBDb21tdW5pY2F0aW9uIChORkMpIGRldmljZXNcXFwiXFxuLS1cXG5kcml2ZXJzL25mYy9LY29uZmlnLTgtXFxuZHJpdmVycy9uZmMvS2NvbmZpZzo5OmNvbmZpZyBORkNfVFJGNzk3MEFcXG5kcml2ZXJzL25mYy9LY29uZmlnLTEwLVxcdHRyaXN0YXRlIFxcXCJUZXhhcyBJbnN0cnVtZW50cyBUUkY3OTcwYSBORkMgZHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZmMvS2NvbmZpZy0yMC1cXG5kcml2ZXJzL25mYy9LY29uZmlnOjIxOmNvbmZpZyBORkNfTUVJX1BIWVxcbmRyaXZlcnMvbmZjL0tjb25maWctMjItXFx0dHJpc3RhdGUgXFxcIk1FSSBidXMgTkZDIGRldmljZSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZmMvS2NvbmZpZy0zMC1cXG5kcml2ZXJzL25mYy9LY29uZmlnOjMxOmNvbmZpZyBORkNfU0lNXFxuZHJpdmVycy9uZmMvS2NvbmZpZy0zMi1cXHR0cmlzdGF0ZSBcXFwiTkZDIGhhcmR3YXJlIHNpbXVsYXRvciBkcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25mYy9LY29uZmlnLTQxLVxcbmRyaXZlcnMvbmZjL0tjb25maWc6NDI6Y29uZmlnIE5GQ19QT1JUMTAwXFxuZHJpdmVycy9uZmMvS2NvbmZpZy00My1cXHR0cmlzdGF0ZSBcXFwiU29ueSBORkMgUG9ydC0xMDAgU2VyaWVzIFVTQiBkZXZpY2Ugc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmZjL0tjb25maWctNTEtXFxuZHJpdmVycy9uZmMvS2NvbmZpZzo1Mjpjb25maWcgTkZDX1ZJUlRVQUxfTkNJXFxuZHJpdmVycy9uZmMvS2NvbmZpZy01My1cXHR0cmlzdGF0ZSBcXFwiTkNJIGRldmljZSBzaW11bGF0b3IgZHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZmMvZmRwL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5kcml2ZXJzL25mYy9mZHAvS2NvbmZpZzoyOmNvbmZpZyBORkNfRkRQXFxuZHJpdmVycy9uZmMvZmRwL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiSW50ZWwgRkRQIE5GQyBkcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25mYy9mZHAvS2NvbmZpZy0xNC1cXG5kcml2ZXJzL25mYy9mZHAvS2NvbmZpZzoxNTpjb25maWcgTkZDX0ZEUF9JMkNcXG5kcml2ZXJzL25mYy9mZHAvS2NvbmZpZy0xNi1cXHR0cmlzdGF0ZSBcXFwiTkZDIEZEUCBpMmMgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmZjL21pY3JvcmVhZC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9uZmMvbWljcm9yZWFkL0tjb25maWc6Mjpjb25maWcgTkZDX01JQ1JPUkVBRFxcbmRyaXZlcnMvbmZjL21pY3JvcmVhZC9LY29uZmlnLTMtXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvbmZjL21pY3JvcmVhZC9LY29uZmlnLTktXFxuZHJpdmVycy9uZmMvbWljcm9yZWFkL0tjb25maWc6MTA6Y29uZmlnIE5GQ19NSUNST1JFQURfSTJDXFxuZHJpdmVycy9uZmMvbWljcm9yZWFkL0tjb25maWctMTEtXFx0dHJpc3RhdGUgXFxcIkluc2lkZSBTZWN1cmUgTWljcm9yZWFkIGRldmljZSBzdXBwb3J0IChJMkMpXFxcIlxcbi0tXFxuZHJpdmVycy9uZmMvbWljcm9yZWFkL0tjb25maWctMjEtXFxuZHJpdmVycy9uZmMvbWljcm9yZWFkL0tjb25maWc6MjI6Y29uZmlnIE5GQ19NSUNST1JFQURfTUVJXFxuZHJpdmVycy9uZmMvbWljcm9yZWFkL0tjb25maWctMjMtXFx0dHJpc3RhdGUgXFxcIkluc2lkZSBTZWN1cmUgTWljcm9yZWFkIGRldmljZSBzdXBwb3J0IChNRUkpXFxcIlxcbi0tXFxuZHJpdmVycy9uZmMvbmZjbXJ2bC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9uZmMvbmZjbXJ2bC9LY29uZmlnOjI6Y29uZmlnIE5GQ19NUlZMXFxuZHJpdmVycy9uZmMvbmZjbXJ2bC9LY29uZmlnLTMtXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvbmZjL25mY21ydmwvS2NvbmZpZy05LVxcbmRyaXZlcnMvbmZjL25mY21ydmwvS2NvbmZpZzoxMDpjb25maWcgTkZDX01SVkxfVVNCXFxuZHJpdmVycy9uZmMvbmZjbXJ2bC9LY29uZmlnLTExLVxcdHRyaXN0YXRlIFxcXCJNYXJ2ZWxsIE5GQy1vdmVyLVVTQiBkcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25mYy9uZmNtcnZsL0tjb25maWctMjItXFxuZHJpdmVycy9uZmMvbmZjbXJ2bC9LY29uZmlnOjIzOmNvbmZpZyBORkNfTVJWTF9VQVJUXFxuZHJpdmVycy9uZmMvbmZjbXJ2bC9LY29uZmlnLTI0LVxcdHRyaXN0YXRlIFxcXCJNYXJ2ZWxsIE5GQy1vdmVyLVVBUlQgZHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZmMvbmZjbXJ2bC9LY29uZmlnLTM0LVxcbmRyaXZlcnMvbmZjL25mY21ydmwvS2NvbmZpZzozNTpjb25maWcgTkZDX01SVkxfSTJDXFxuZHJpdmVycy9uZmMvbmZjbXJ2bC9LY29uZmlnLTM2LVxcdHRyaXN0YXRlIFxcXCJNYXJ2ZWxsIE5GQy1vdmVyLUkyQyBkcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25mYy9uZmNtcnZsL0tjb25maWctNDUtXFxuZHJpdmVycy9uZmMvbmZjbXJ2bC9LY29uZmlnOjQ2OmNvbmZpZyBORkNfTVJWTF9TUElcXG5kcml2ZXJzL25mYy9uZmNtcnZsL0tjb25maWctNDctXFx0dHJpc3RhdGUgXFxcIk1hcnZlbGwgTkZDLW92ZXItU1BJIGRyaXZlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmZjL254cC1uY2kvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmRyaXZlcnMvbmZjL254cC1uY2kvS2NvbmZpZzoyOmNvbmZpZyBORkNfTlhQX05DSVxcbmRyaXZlcnMvbmZjL254cC1uY2kvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJOWFAtTkNJIE5GQyBkcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25mYy9ueHAtbmNpL0tjb25maWctMTQtXFxuZHJpdmVycy9uZmMvbnhwLW5jaS9LY29uZmlnOjE1OmNvbmZpZyBORkNfTlhQX05DSV9JMkNcXG5kcml2ZXJzL25mYy9ueHAtbmNpL0tjb25maWctMTYtXFx0dHJpc3RhdGUgXFxcIk5YUC1OQ0kgSTJDIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25mYy9wbjUzMy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9uZmMvcG41MzMvS2NvbmZpZzoyOmNvbmZpZyBORkNfUE41MzNcXG5kcml2ZXJzL25mYy9wbjUzMy9LY29uZmlnLTMtXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvbmZjL3BuNTMzL0tjb25maWctNy1cXG5kcml2ZXJzL25mYy9wbjUzMy9LY29uZmlnOjg6Y29uZmlnIE5GQ19QTjUzM19VU0JcXG5kcml2ZXJzL25mYy9wbjUzMy9LY29uZmlnLTktXFx0dHJpc3RhdGUgXFxcIk5GQyBQTjUzMyBkZXZpY2Ugc3VwcG9ydCAoVVNCKVxcXCJcXG4tLVxcbmRyaXZlcnMvbmZjL3BuNTMzL0tjb25maWctMTgtXFxuZHJpdmVycy9uZmMvcG41MzMvS2NvbmZpZzoxOTpjb25maWcgTkZDX1BONTMzX0kyQ1xcbmRyaXZlcnMvbmZjL3BuNTMzL0tjb25maWctMjAtXFx0dHJpc3RhdGUgXFxcIk5GQyBQTjUzMyBkZXZpY2Ugc3VwcG9ydCAoSTJDKVxcXCJcXG4tLVxcbmRyaXZlcnMvbmZjL3BuNTMzL0tjb25maWctMjktXFxuZHJpdmVycy9uZmMvcG41MzMvS2NvbmZpZzozMDpjb25maWcgTkZDX1BONTMyX1VBUlRcXG5kcml2ZXJzL25mYy9wbjUzMy9LY29uZmlnLTMxLVxcdHRyaXN0YXRlIFxcXCJORkMgUE41MzIgZGV2aWNlIHN1cHBvcnQgKFVBUlQpXFxcIlxcbi0tXFxuZHJpdmVycy9uZmMvcG41NDQvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmRyaXZlcnMvbmZjL3BuNTQ0L0tjb25maWc6Mjpjb25maWcgTkZDX1BONTQ0XFxuZHJpdmVycy9uZmMvcG41NDQvS2NvbmZpZy0zLVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL25mYy9wbjU0NC9LY29uZmlnLTktXFxuZHJpdmVycy9uZmMvcG41NDQvS2NvbmZpZzoxMDpjb25maWcgTkZDX1BONTQ0X0kyQ1xcbmRyaXZlcnMvbmZjL3BuNTQ0L0tjb25maWctMTEtXFx0dHJpc3RhdGUgXFxcIk5YUCBQTjU0NCBkZXZpY2Ugc3VwcG9ydCAoSTJDKVxcXCJcXG4tLVxcbmRyaXZlcnMvbmZjL3BuNTQ0L0tjb25maWctMjAtXFxuZHJpdmVycy9uZmMvcG41NDQvS2NvbmZpZzoyMTpjb25maWcgTkZDX1BONTQ0X01FSVxcbmRyaXZlcnMvbmZjL3BuNTQ0L0tjb25maWctMjItXFx0dHJpc3RhdGUgXFxcIk5YUCBQTjU0NCBkZXZpY2Ugc3VwcG9ydCAoTUVJKVxcXCJcXG4tLVxcbmRyaXZlcnMvbmZjL3MzZndybjUvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmRyaXZlcnMvbmZjL3MzZndybjUvS2NvbmZpZzoyOmNvbmZpZyBORkNfUzNGV1JONVxcbmRyaXZlcnMvbmZjL3MzZndybjUvS2NvbmZpZy0zLVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL25mYy9zM2Z3cm41L0tjb25maWctOS1cXG5kcml2ZXJzL25mYy9zM2Z3cm41L0tjb25maWc6MTA6Y29uZmlnIE5GQ19TM0ZXUk41X0kyQ1xcbmRyaXZlcnMvbmZjL3MzZndybjUvS2NvbmZpZy0xMS1cXHR0cmlzdGF0ZSBcXFwiU2Ftc3VuZyBTM0ZXUk41IEkyQyBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZmMvczNmd3JuNS9LY29uZmlnLTIyLVxcbmRyaXZlcnMvbmZjL3MzZndybjUvS2NvbmZpZzoyMzpjb25maWcgTkZDX1MzRldSTjgyX1VBUlRcXG5kcml2ZXJzL25mYy9zM2Z3cm41L0tjb25maWctMjQtICAgICAgICB0cmlzdGF0ZSBcXFwiU2Ftc3VuZyBTM0ZXUk44MiBVQVJUIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25mYy9zdC1uY2kvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmRyaXZlcnMvbmZjL3N0LW5jaS9LY29uZmlnOjI6Y29uZmlnIE5GQ19TVF9OQ0lcXG5kcml2ZXJzL25mYy9zdC1uY2kvS2NvbmZpZy0zLVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL25mYy9zdC1uY2kvS2NvbmZpZy04LVxcbmRyaXZlcnMvbmZjL3N0LW5jaS9LY29uZmlnOjk6Y29uZmlnIE5GQ19TVF9OQ0lfSTJDXFxuZHJpdmVycy9uZmMvc3QtbmNpL0tjb25maWctMTAtXFx0dHJpc3RhdGUgXFxcIlNUTWljcm9lbGVjdHJvbmljcyBTVCBOQ0kgTkZDIGRyaXZlciAoSTJDKVxcXCJcXG4tLVxcbmRyaXZlcnMvbmZjL3N0LW5jaS9LY29uZmlnLTIwLVxcbmRyaXZlcnMvbmZjL3N0LW5jaS9LY29uZmlnOjIxOmNvbmZpZyBORkNfU1RfTkNJX1NQSVxcbmRyaXZlcnMvbmZjL3N0LW5jaS9LY29uZmlnLTIyLVxcdHRyaXN0YXRlIFxcXCJTVE1pY3JvZWxlY3Ryb25pY3MgU1QgTkNJIE5GQyBkcml2ZXIgKFNQSSlcXFwiXFxuLS1cXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9uZmMvc3QyMW5mY2EvS2NvbmZpZzoyOmNvbmZpZyBORkNfU1QyMU5GQ0FcXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9LY29uZmlnLTMtXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvbmZjL3N0MjFuZmNhL0tjb25maWctOS1cXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9LY29uZmlnOjEwOmNvbmZpZyBORkNfU1QyMU5GQ0FfSTJDXFxuZHJpdmVycy9uZmMvc3QyMW5mY2EvS2NvbmZpZy0xMS1cXHR0cmlzdGF0ZSBcXFwiU1RNaWNyb2VsZWN0cm9uaWNzIFNUMjFORkNBIE5GQyBkcml2ZXIgKEkyQylcXFwiXFxuLS1cXG5kcml2ZXJzL25mYy9zdDk1aGYvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmRyaXZlcnMvbmZjL3N0OTVoZi9LY29uZmlnOjI6Y29uZmlnIE5GQ19TVDk1SEZcXG5kcml2ZXJzL25mYy9zdDk1aGYvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJTVDk1SEYgTkZDIFRyYW5zY2VpdmVyIGRyaXZlclxcXCJcXG4tLVxcbm5ldC9uZmMvS2NvbmZpZy01LVxcbm5ldC9uZmMvS2NvbmZpZzo2Om1lbnVjb25maWcgTkZDXFxubmV0L25mYy9LY29uZmlnLTctXFx0ZGVwZW5kcyBvbiBSRktJTEwgfHwgIVJGS0lMTFxcbi0tXFxubmV0L25mYy9LY29uZmlnLTE2LVxcbm5ldC9uZmMvS2NvbmZpZzoxNzpjb25maWcgTkZDX0RJR0lUQUxcXG5uZXQvbmZjL0tjb25maWctMTgtXFx0ZGVwZW5kcyBvbiBORkNcXG4tLVxcbm5ldC9uZmMvaGNpL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5uZXQvbmZjL2hjaS9LY29uZmlnOjI6Y29uZmlnIE5GQ19IQ0lcXG5uZXQvbmZjL2hjaS9LY29uZmlnLTMtXFx0ZGVwZW5kcyBvbiBORkNcXG4tLVxcbm5ldC9uZmMvaGNpL0tjb25maWctMTAtXFxubmV0L25mYy9oY2kvS2NvbmZpZzoxMTpjb25maWcgTkZDX1NIRExDXFxubmV0L25mYy9oY2kvS2NvbmZpZy0xMi1cXHRkZXBlbmRzIG9uIE5GQ19IQ0lcXG4tLVxcbm5ldC9uZmMvbmNpL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5uZXQvbmZjL25jaS9LY29uZmlnOjI6Y29uZmlnIE5GQ19OQ0lcXG5uZXQvbmZjL25jaS9LY29uZmlnLTMtXFx0ZGVwZW5kcyBvbiBORkNcXG4tLVxcbm5ldC9uZmMvbmNpL0tjb25maWctMTItXFxubmV0L25mYy9uY2kvS2NvbmZpZzoxMzpjb25maWcgTkZDX05DSV9TUElcXG5uZXQvbmZjL25jaS9LY29uZmlnLTE0LVxcdGRlcGVuZHMgb24gTkZDX05DSSBcXHUwMDI2XFx1MDAyNiBTUElcXG4tLVxcbm5ldC9uZmMvbmNpL0tjb25maWctMjMtXFxubmV0L25mYy9uY2kvS2NvbmZpZzoyNDpjb25maWcgTkZDX05DSV9VQVJUXFxubmV0L25mYy9uY2kvS2NvbmZpZy0yNS1cXHRkZXBlbmRzIG9uIE5GQ19OQ0kgXFx1MDAyNlxcdTAwMjYgVFRZXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIwVDIxOjAyOjM1LjcxODA3Mjk5MVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NzcyNTM3NTYzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jeSBBbmFseXNpcyoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gSXQgbG9va3MgbGlrZSBgTkZDX1NUX05DSV9JMkNgIHJlbGllcyBkaXJlY3RseSBvbiBib3RoIGBORkNfTkNJYCBhbmQgYEkyQ2AuIEFuZCwgZGlnZ2luZyBhIGJpdCBkZWVwZXIsIEkgc2VlIGBORkNfTkNJYCBpdHNlbGYgaXMgZGVwZW5kZW50IG9uIGBORkNgLiBBbHJpZ2h0LCBzbywgdG8gZ2V0IGV2ZXJ5dGhpbmcgd29ya2luZywgSSdtIGdvaW5nIHRvIG5lZWQgYE5GQ2AsIGBORkNfTkNJYCwgYEkyQ2AsIGFuZCBvZiBjb3Vyc2UgYE5GQ19TVF9OQ0lfSTJDYC4gV2FpdCBhIHNlY29uZOKApiBJMkMgaXMgdHlwaWNhbGx5IGEgZGVmYXVsdCBhbnl3YXkuIEknbGwganVzdCBrZWVwIGl0IGluIG1pbmQgYXMgYSBwcmVyZXF1aXNpdGUuIFxuXG5UaGVyZWZvcmUsIEkgd2lsbCBmb2N1cyBvbiBlbmFibGluZyB0aGUgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb24gc3ltYm9sczogYE5GQ2AsIGBORkNfTkNJYCwgYW5kIGBORkNfU1RfTkNJX0kyQ2AuIFRoYXQgZmVlbHMgcmlnaHQuXG5cbk5vdywgYWJvdXQgdGhlIHBhdGNoIGl0c2VsZjogaXQgc2VlbXMgdG8gYmUgdG91Y2hpbmcgc2V2ZXJhbCBjcml0aWNhbCBmdW5jdGlvbnM6IGBzdF9uY2lfaTJjX3JlYWRgLCBgc3RfbmNpX2kyY19wcm9iZWAsIGBzdF9uY2lfaW5pdGAsIGBuZGxjX2Nsb3NlYCwgYG5kbGNfc2VuZGAsIGBsbHRfbmRsY19zZW5kX3F1ZXVlYCwgYGxsdF9uZGxjX3Jjdl9xdWV1ZWAsIGFuZCBgc3RfbmNpX2Rpc2NvdmVyX3NlYC4gSeKAmWxsIHN0YXJ0IGJ5IHJldmlld2luZyBgc3RfbmNpX2kyY19yZWFkYCwgYXMgdGhhdCBzZWVtcyBsaWtlIGEgZ29vZCBzdGFydGluZyBwb2ludCB0byB1bmRlcnN0YW5kIHRoZSBjaGFuZ2VzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMzY4MSwiT3V0cHV0VG9rZW5zIjoyNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMFQyMTowMjo0MS40OTA2MTI2MzRaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0MzU0MDQ5MzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic3RfbmNpX2kyY19yZWFkXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmZjL3N0LW5jaS9pMmMuYz04ND1zdGF0aWMgaW50IHN0X25jaV9pMmNfd3JpdGUodm9pZCAqcGh5X2lkLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxuZHJpdmVycy9uZmMvc3QtbmNpL2kyYy5jLTExNi0gKi9cXG5kcml2ZXJzL25mYy9zdC1uY2kvaTJjLmM6MTE3OnN0YXRpYyBpbnQgc3RfbmNpX2kyY19yZWFkKHN0cnVjdCBzdF9uY2lfaTJjX3BoeSAqcGh5LFxcbmRyaXZlcnMvbmZjL3N0LW5jaS9pMmMuYy0xMTgtXFx0XFx0XFx0XFx0IHN0cnVjdCBza19idWZmICoqc2tiKVxcbi0tXFxuZHJpdmVycy9uZmMvc3QtbmNpL2kyYy5jPTIwND1zdGF0aWMgaXJxcmV0dXJuX3Qgc3RfbmNpX2lycV90aHJlYWRfZm4oaW50IGlycSwgdm9pZCAqcGh5X2lkKVxcbi0tXFxuZHJpdmVycy9uZmMvc3QtbmNpL2kyYy5jLTIyMi1cXG5kcml2ZXJzL25mYy9zdC1uY2kvaTJjLmM6MjIzOlxcdHIgPSBzdF9uY2lfaTJjX3JlYWQocGh5LCBcXHUwMDI2c2tiKTtcXG5kcml2ZXJzL25mYy9zdC1uY2kvaTJjLmMtMjI0LVxcdGlmIChyID09IC1FUkVNT1RFSU8gfHwgciA9PSAtRU5PTUVNIHx8IHIgPT0gLUVCQURNU0cpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIwVDIxOjAyOjQzLjkyNjAyNTQ4MloiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MzAxNjM5NDgwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYW5hbHlzaXMgb2YgdGhpcyBjb2RlIHNuaXBwZXQ6XG5cbioqRm9jdXNpbmcgb24gSW50ZXJydXB0IEhhbmRsaW5nIGluIHRoZSBTVCBOQ0kgRHJpdmVyKipcblxuT2theSwgc28gSSBzZWUgdGhhdCBgc3RfbmNpX2kyY19yZWFkYCBpcyBhIHN0YXRpYyBmdW5jdGlvbiwgd2hpY2ggbWVhbnMgaXQncyBsaWtlbHkgYW4gaW50ZXJuYWwgaGVscGVyIGZ1bmN0aW9uIHdpdGhpbiB0aGUgTkNJIGRyaXZlci4gVGhlIGNyaXRpY2FsIHBpZWNlIGhlcmUgaXMgdGhhdCBpdCdzIGNhbGxlZCBieSBgc3RfbmNpX2lycV90aHJlYWRfZm5gLiBUaGF0IGZ1bmN0aW9uIGlzIGNsZWFybHkgdGhlIGludGVycnVwdCBoYW5kbGVyLCB0cmlnZ2VyZWQgd2hlbiBzb21ldGhpbmcgaGFwcGVucyBvbiB0aGUgSTJDIGJ1cyByZWxhdGVkIHRvIHRoZSBORkMgY29udHJvbGxlci4gR2l2ZW4gbXkgZXhwZXJ0aXNlLCBteSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIHByaW9yaXRpemUgdW5kZXJzdGFuZGluZyB0aGUgaW50ZXJydXB0IGhhbmRsaW5nIG1lY2hhbmlzbSwgd2hpY2ggcG9pbnRzIGRpcmVjdGx5IHRvIGBzdF9uY2lfaXJxX3RocmVhZF9mbmAuIFRoaXMgaXMgd2hlcmUgdGhlIHJlYWwtdGltZSBpbnRlcmFjdGlvbiB3aXRoIHRoZSBORkMgY2hpcCBoYXBwZW5zLCBzbyB0aGF0J3Mgd2hlcmUgSSBuZWVkIHRvIGZvY3VzLiBJJ20gZ29pbmcgdG8gc3RhcnQgdGhlcmUuXG5cbkJ1dCwgSSBhbHNvIHNob3VsZG4ndCBjb21wbGV0ZWx5IGlnbm9yZSBgc3RfbmNpX2luaXRgLCBhcyBpdCdzIHRoZSBkcml2ZXIncyBpbml0aWFsaXphdGlvbiBmdW5jdGlvbi4gV2hpbGUgdGhlIGltbWVkaWF0ZSBjb25jZXJuIGlzIHRoZSBpbnRlcnJ1cHQgcHJvY2Vzc2luZywgaW5pdGlhbGl6YXRpb24gbGlrZWx5IHNldHMgdXAgdGhlIGhhcmR3YXJlIGFuZCBwcmVwYXJlcyBldmVyeXRoaW5nIGZvciB0aGUgaW50ZXJydXB0IGhhbmRsZXIgdG8gZnVuY3Rpb24gY29ycmVjdGx5LiBJJ2xsIG5lZWQgdG8ga2VlcCBpdCBpbiB0aGUgYmFjayBvZiBteSBtaW5kLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDU2NiwiT3V0cHV0VG9rZW5zIjoyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIwVDIxOjAyOjQ4LjIyNzY2Nzg3MVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQxODYzNDM3NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdF9uY2lfaW5pdFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25mYy9zdC1uY2kvY29yZS5jLTE4LVxcbmRyaXZlcnMvbmZjL3N0LW5jaS9jb3JlLmM6MTk6c3RhdGljIGludCBzdF9uY2lfaW5pdChzdHJ1Y3QgbmNpX2RldiAqbmRldilcXG5kcml2ZXJzL25mYy9zdC1uY2kvY29yZS5jLTIwLXtcXG4tLVxcbmRyaXZlcnMvbmZjL3N0LW5jaS9jb3JlLmM9MTAwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmNpX29wcyBzdF9uY2lfb3BzID0ge1xcbmRyaXZlcnMvbmZjL3N0LW5jaS9jb3JlLmM6MTAxOlxcdC5pbml0ID0gc3RfbmNpX2luaXQsXFxuZHJpdmVycy9uZmMvc3QtbmNpL2NvcmUuYy0xMDItXFx0Lm9wZW4gPSBzdF9uY2lfb3BlbixcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjBUMjE6MDI6NTAuNjQ2MzA3NTg3WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ3MTc2ODA0ODEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCBtZSB0aGluayB0aGlzIHRocm91Z2guXG5cbioqQW5hbHl6aW5nIEFQSSBFbnRyeXBvaW50cyBhbmQgU3RhdGljIEZ1bmN0aW9ucyoqXG5cblJpZ2h0LCBzbyBgc3RfbmNpX2luaXRgIGlzIGRlY2xhcmVkIGFzIGBzdGF0aWNgLCB3aGljaCBpbml0aWFsbHkgbWFrZXMgbWUgcXVlc3Rpb24gaXRzIHZpc2liaWxpdHkgYXMgYW4gQVBJIGVudHJ5cG9pbnQuIEJ1dCBob2xkIG9uLCBpdCdzIGJlaW5nIGFzc2lnbmVkIHRvIGEgZnVuY3Rpb24gcG9pbnRlciwgc3BlY2lmaWNhbGx5IGAuaW5pdCA9IHN0X25jaV9pbml0YC4gVGhhdCBhc3NpZ25tZW50IGlzIGNydWNpYWw7IGV2ZW4gdGhvdWdoIGl0J3Mgc3RhdGljLCBpdCBzaG91bGRuJ3QgYmUgaW5saW5lZCBiZWNhdXNlIGl0J3MgYmVpbmcgdHJlYXRlZCBhcyBhIGZ1bmN0aW9uIHBvaW50ZXIuIFRoZSBjb21waWxlciAqc2hvdWxkbid0KiBvcHRpbWl6ZSBpdCBhd2F5LiBUaGUgZnVuY3Rpb24gcG9pbnRlciBpcyB0aGUgbGluaywgdGhlIGtleSB0byBpdHMgZXhpc3RlbmNlLiBJdCdzIHVzZWQuIEl0ICpzaG91bGQqIGhhdmUgYSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzcy4gT2theSwgdGhhdCdzIHNldHRsZWQuIFRoZSBzdGF0aWMgZGVjbGFyYXRpb24gc3RpbGwgZmVlbHMgYSBiaXQgb2RkLCB0aG91Z2guXG5cbk5vdywgbGV0J3Mgc3dpdGNoIGdlYXJzIGFuZCBjb25zaWRlciBgbmRsY19jbG9zZWAuIExldCBtZSB0aGluayBhIGJpdCBhYm91dCB0aGF0IG9uZS4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTA5OSwiT3V0cHV0VG9rZW5zIjoxOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjk1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIwVDIxOjAyOjU1LjM2Mzk5MDUyOFoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjkxNTk4OTkyNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuZGxjX2Nsb3NlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmZjL3N0LW5jaS9jb3JlLmM9NTA9c3RhdGljIGludCBzdF9uY2lfY2xvc2Uoc3RydWN0IG5jaV9kZXYgKm5kZXYpXFxuLS1cXG5kcml2ZXJzL25mYy9zdC1uY2kvY29yZS5jLTU2LVxcbmRyaXZlcnMvbmZjL3N0LW5jaS9jb3JlLmM6NTc6XFx0bmRsY19jbG9zZShpbmZvLVxcdTAwM2VuZGxjKTtcXG5kcml2ZXJzL25mYy9zdC1uY2kvY29yZS5jLTU4LVxcbi0tXFxuZHJpdmVycy9uZmMvc3QtbmNpL2NvcmUuYz0xNjg9dm9pZCBzdF9uY2lfcmVtb3ZlKHN0cnVjdCBuY2lfZGV2ICpuZGV2KVxcbi0tXFxuZHJpdmVycy9uZmMvc3QtbmNpL2NvcmUuYy0xNzEtXFxuZHJpdmVycy9uZmMvc3QtbmNpL2NvcmUuYzoxNzI6XFx0bmRsY19jbG9zZShpbmZvLVxcdTAwM2VuZGxjKTtcXG5kcml2ZXJzL25mYy9zdC1uY2kvY29yZS5jLTE3My1cXG4tLVxcbmRyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmM9NTM9RVhQT1JUX1NZTUJPTChuZGxjX29wZW4pO1xcbmRyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmMtNTQtXFxuZHJpdmVycy9uZmMvc3QtbmNpL25kbGMuYzo1NTp2b2lkIG5kbGNfY2xvc2Uoc3RydWN0IGxsdF9uZGxjICpuZGxjKVxcbmRyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmMtNTYte1xcbi0tXFxuZHJpdmVycy9uZmMvc3QtbmNpL25kbGMuYy03MS19XFxuZHJpdmVycy9uZmMvc3QtbmNpL25kbGMuYzo3MjpFWFBPUlRfU1lNQk9MKG5kbGNfY2xvc2UpO1xcbmRyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmMtNzMtXFxuLS1cXG5kcml2ZXJzL25mYy9zdC1uY2kvbmRsYy5jPTIwNz1zdGF0aWMgdm9pZCBsbHRfbmRsY19zbV93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbmRyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmMtMjI4LVxcdFxcdHRpbWVyX2RlbGV0ZV9zeW5jKFxcdTAwMjZuZGxjLVxcdTAwM2V0Ml90aW1lcik7XFxuZHJpdmVycy9uZmMvc3QtbmNpL25kbGMuYzoyMjk6XFx0XFx0bmRsY19jbG9zZShuZGxjKTtcXG5kcml2ZXJzL25mYy9zdC1uY2kvbmRsYy5jLTIzMC1cXHRcXHRuZGxjLVxcdTAwM2VoYXJkX2ZhdWx0ID0gLUVSRU1PVEVJTztcXG4tLVxcbmRyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmM9MjM0PXZvaWQgbmRsY19yZWN2KHN0cnVjdCBsbHRfbmRsYyAqbmRsYywgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbmRyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmMtMjM4LVxcdFxcdG5kbGMtXFx1MDAzZWhhcmRfZmF1bHQgPSAtRVJFTU9URUlPO1xcbmRyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmM6MjM5OlxcdFxcdG5kbGNfY2xvc2UobmRsYyk7XFxuZHJpdmVycy9uZmMvc3QtbmNpL25kbGMuYy0yNDAtXFx0fSBlbHNlIHtcXG4tLVxcbmRyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmg9NDY9aW50IG5kbGNfb3BlbihzdHJ1Y3QgbGx0X25kbGMgKm5kbGMpO1xcbmRyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmg6NDc6dm9pZCBuZGxjX2Nsb3NlKHN0cnVjdCBsbHRfbmRsYyAqbmRsYyk7XFxuZHJpdmVycy9uZmMvc3QtbmNpL25kbGMuaC00OC1pbnQgbmRsY19zZW5kKHN0cnVjdCBsbHRfbmRsYyAqbmRsYywgc3RydWN0IHNrX2J1ZmYgKnNrYik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIwVDIxOjAyOjU4LjI3OTk4NTQ0MloiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MjMwNzg4ODAzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgSSBzZWUgaXQ6XG5cbioqQ29uc2lkZXJpbmcgdGhlIEV4cG9ydGVkIEZ1bmN0aW9ucyoqXG5cbk9rYXksIHNvIGBuZGxjX2Nsb3NlYCBpcyBkZWZpbml0ZWx5IGJlaW5nIGV4cG9ydGVkLCB0aGF0J3MgY2xlYXIuIEJ1dCBub3cgSSdtIHRoaW5raW5nLi4uIHdoYXQgYWJvdXQgYG5kbGNfc2VuZGA/IFdlIGhhdmUgb25lIGZ1bmN0aW9uIGNsb3NpbmcgdGhpbmdzIGRvd24sIHdoaWNoIGlzIGltcG9ydGFudCwgYnV0IHdoYXQncyB0aGUgc3RhdHVzIG9mIHRoZSBzZW5kaW5nIGZ1bmN0aW9uYWxpdHk/IElzICp0aGF0KiBhbHNvIGJlaW5nIGV4cG9ydGVkPyBJdCBmZWVscyBsaWtlIHRoYXQncyBhIGtleSBxdWVzdGlvbiB0aGF0IG5lZWRzIGltbWVkaWF0ZSBhZGRyZXNzaW5nLiBXZSBjYW4ndCBoYXZlIG9uZSB3aXRob3V0IHRoZSBvdGhlciwgYXNzdW1pbmcgdGhleSBhcmUgcmVsYXRlZC4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGNvbXBsZXRlIHBpY3R1cmUgb2Ygd2hhdCdzIHB1YmxpY2x5IGFjY2Vzc2libGUuIFRoaXMgbWlnaHQgaW5mbHVlbmNlIGFyY2hpdGVjdHVyZSBjaGFuZ2VzLCBmdXR1cmUgQVBJIGRlc2lnbiwgb3IgZXZlbiBzZWN1cml0eSBjb25zaWRlcmF0aW9ucy4gSSBuZWVkIHRvIGNoZWNrIHRoZSBleHBvcnQgZGVjbGFyYXRpb25zIGZvciBgbmRsY19zZW5kYCBBU0FQLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjE4NSwiT3V0cHV0VG9rZW5zIjoxOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIwVDIxOjAzOjAyLjUxMDc3Nzc2NVoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjI2NzI3MzE2MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuZGxjX3NlbmRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZmMvc3QtbmNpL2NvcmUuYz02ND1zdGF0aWMgaW50IHN0X25jaV9zZW5kKHN0cnVjdCBuY2lfZGV2ICpuZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxuZHJpdmVycy9uZmMvc3QtbmNpL2NvcmUuYy03Mi1cXG5kcml2ZXJzL25mYy9zdC1uY2kvY29yZS5jOjczOlxcdHJldHVybiBuZGxjX3NlbmQoaW5mby1cXHUwMDNlbmRsYywgc2tiKTtcXG5kcml2ZXJzL25mYy9zdC1uY2kvY29yZS5jLTc0LX1cXG4tLVxcbmRyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmM9NzI9RVhQT1JUX1NZTUJPTChuZGxjX2Nsb3NlKTtcXG5kcml2ZXJzL25mYy9zdC1uY2kvbmRsYy5jLTczLVxcbmRyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmM6NzQ6aW50IG5kbGNfc2VuZChzdHJ1Y3QgbGx0X25kbGMgKm5kbGMsIHN0cnVjdCBza19idWZmICpza2IpXFxuZHJpdmVycy9uZmMvc3QtbmNpL25kbGMuYy03NS17XFxuLS1cXG5kcml2ZXJzL25mYy9zdC1uY2kvbmRsYy5jLTg4LX1cXG5kcml2ZXJzL25mYy9zdC1uY2kvbmRsYy5jOjg5OkVYUE9SVF9TWU1CT0wobmRsY19zZW5kKTtcXG5kcml2ZXJzL25mYy9zdC1uY2kvbmRsYy5jLTkwLVxcbmRyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmM6OTE6c3RhdGljIHZvaWQgbGx0X25kbGNfc2VuZF9xdWV1ZShzdHJ1Y3QgbGx0X25kbGMgKm5kbGMpXFxuZHJpdmVycy9uZmMvc3QtbmNpL25kbGMuYy05Mi17XFxuLS1cXG5kcml2ZXJzL25mYy9zdC1uY2kvbmRsYy5jPTE1ND1zdGF0aWMgdm9pZCBsbHRfbmRsY19yY3ZfcXVldWUoc3RydWN0IGxsdF9uZGxjICpuZGxjKVxcbi0tXFxuZHJpdmVycy9uZmMvc3QtbmNpL25kbGMuYy0xODEtXFx0XFx0XFx0XFx0bGx0X25kbGNfcmVxdWV1ZV9kYXRhX3BlbmRpbmcobmRsYyk7XFxuZHJpdmVycy9uZmMvc3QtbmNpL25kbGMuYzoxODI6XFx0XFx0XFx0XFx0bGx0X25kbGNfc2VuZF9xdWV1ZShuZGxjKTtcXG5kcml2ZXJzL25mYy9zdC1uY2kvbmRsYy5jLTE4My1cXHRcXHRcXHRcXHQvKiBzdGFydCB0aW1lciB0MSBmb3IgbmRsYyBha25vd2xlZGdlICovXFxuLS1cXG5kcml2ZXJzL25mYy9zdC1uY2kvbmRsYy5jPTIwNz1zdGF0aWMgdm9pZCBsbHRfbmRsY19zbV93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbmRyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmMtMjEwLVxcbmRyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmM6MjExOlxcdGxsdF9uZGxjX3NlbmRfcXVldWUobmRsYyk7XFxuZHJpdmVycy9uZmMvc3QtbmNpL25kbGMuYy0yMTItXFx0bGx0X25kbGNfcmN2X3F1ZXVlKG5kbGMpO1xcbi0tXFxuZHJpdmVycy9uZmMvc3QtbmNpL25kbGMuYy0yMTktXFx0XFx0bGx0X25kbGNfcmVxdWV1ZV9kYXRhX3BlbmRpbmcobmRsYyk7XFxuZHJpdmVycy9uZmMvc3QtbmNpL25kbGMuYzoyMjA6XFx0XFx0bGx0X25kbGNfc2VuZF9xdWV1ZShuZGxjKTtcXG5kcml2ZXJzL25mYy9zdC1uY2kvbmRsYy5jLTIyMS1cXHR9XFxuLS1cXG5kcml2ZXJzL25mYy9zdC1uY2kvbmRsYy5oPTQ3PXZvaWQgbmRsY19jbG9zZShzdHJ1Y3QgbGx0X25kbGMgKm5kbGMpO1xcbmRyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmg6NDg6aW50IG5kbGNfc2VuZChzdHJ1Y3QgbGx0X25kbGMgKm5kbGMsIHN0cnVjdCBza19idWZmICpza2IpO1xcbmRyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmgtNDktdm9pZCBuZGxjX3JlY3Yoc3RydWN0IGxsdF9uZGxjICpuZGxjLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjBUMjE6MDM6MDQuNzc4MDU1MDA2WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyOTcwNTIzNTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqTmF2aWdhdGluZyB0aGUgYG5kbGNgIExhbmRzY2FwZSoqXG5cblJpZ2h0LCBzbyBgbmRsY19zZW5kYCBpcyBkZWZpbml0ZWx5IGV4cG9ydGVkIGFuZCBmcm9udC1mYWNpbmcuIFRoYXQncyBnb29kLCB0aGF0J3MgZXhwZWN0ZWQuIEJ1dCBub3cgSSdtIHRoaW5raW5nLCB3aGF0J3MgdGhlIGRlYWwgd2l0aCBgc3RfbmNpX2Rpc2NvdmVyX3NlYD8gSSBuZWVkIHRvIHF1aWNrbHkgcmVjYWxsIHdoZXJlIHRoYXQgZml0cyBpbnRvIHRoZSBwaWN0dXJlLiBJcyBpdCBhbm90aGVyIHB1YmxpYyBpbnRlcmZhY2UsIG9yIGlzIGl0IGFuIGludGVybmFsIGZ1bmN0aW9uIHRoYXQncyBiZWluZyBjYWxsZWQgYnkgYG5kbGNfc2VuZGAgYXMgYSBwYXJ0IG9mIHRoZSBzZXJ2aWNlIGVuYWJsZW1lbnQgZmxvdz8gV2hlcmUgZG9lcyBpdCByZXNpZGUgYW5kIHdoYXQgaW1wYWN0IGRvZXMgaXQgaGF2ZSBvbiB0aGUgc2VjdXJlIGVsZW1lbnQgZGlzY292ZXJ5IHByb2Nlc3M/IElzIGl0IGp1c3QgcGFydCBvZiB0aGUgc2VxdWVuY2UsIG9yIGlzIHRoZXJlIG1vcmUgY29tcGxleGl0eSBpbnZvbHZlZD8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJlbGF0aW9uc2hpcCB0byB0aGUgb3RoZXIgZnVuY3Rpb24uIEkgc3VzcGVjdCB0aGlzIGlzIHNvbWV0aGluZyBJJ2xsIG5lZWQgdG8gZGlnIGludG8gZnVydGhlci5cblxuXG4iLCJJbnB1dFRva2VucyI6MTcyNTMsIk91dHB1dFRva2VucyI6MjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMFQyMTowMzowOS4wNzUxMDkzOTZaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzMTUzNzM5NjUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic3RfbmNpX2Rpc2NvdmVyX3NlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmZjL3N0LW5jaS9jb3JlLmM9MTAwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmNpX29wcyBzdF9uY2lfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZmMvc3QtbmNpL2NvcmUuYy0xMDUtXFx0LmdldF9yZnByb3RvY29sID0gc3RfbmNpX2dldF9yZnByb3RvY29sLFxcbmRyaXZlcnMvbmZjL3N0LW5jaS9jb3JlLmM6MTA2OlxcdC5kaXNjb3Zlcl9zZSA9IHN0X25jaV9kaXNjb3Zlcl9zZSxcXG5kcml2ZXJzL25mYy9zdC1uY2kvY29yZS5jLTEwNy1cXHQuZW5hYmxlX3NlID0gc3RfbmNpX2VuYWJsZV9zZSxcXG4tLVxcbmRyaXZlcnMvbmZjL3N0LW5jaS9zZS5jPTU0NT1zdGF0aWMgaW50IHN0X25jaV9oY2lfbmV0d29ya19pbml0KHN0cnVjdCBuY2lfZGV2ICpuZGV2KVxcbi0tXFxuZHJpdmVycy9uZmMvc3QtbmNpL3NlLmMtNjE2LVxcbmRyaXZlcnMvbmZjL3N0LW5jaS9zZS5jOjYxNzppbnQgc3RfbmNpX2Rpc2NvdmVyX3NlKHN0cnVjdCBuY2lfZGV2ICpuZGV2KVxcbmRyaXZlcnMvbmZjL3N0LW5jaS9zZS5jLTYxOC17XFxuLS1cXG5kcml2ZXJzL25mYy9zdC1uY2kvc2UuYy02NTgtfVxcbmRyaXZlcnMvbmZjL3N0LW5jaS9zZS5jOjY1OTpFWFBPUlRfU1lNQk9MX0dQTChzdF9uY2lfZGlzY292ZXJfc2UpO1xcbmRyaXZlcnMvbmZjL3N0LW5jaS9zZS5jLTY2MC1cXG4tLVxcbmRyaXZlcnMvbmZjL3N0LW5jaS9zdC1uY2kuaD0xMjY9dm9pZCBzdF9uY2lfc2VfZGVpbml0KHN0cnVjdCBuY2lfZGV2ICpuZGV2KTtcXG5kcml2ZXJzL25mYy9zdC1uY2kvc3QtbmNpLmgtMTI3LVxcbmRyaXZlcnMvbmZjL3N0LW5jaS9zdC1uY2kuaDoxMjg6aW50IHN0X25jaV9kaXNjb3Zlcl9zZShzdHJ1Y3QgbmNpX2RldiAqbmRldik7XFxuZHJpdmVycy9uZmMvc3QtbmNpL3N0LW5jaS5oLTEyOS1pbnQgc3RfbmNpX2VuYWJsZV9zZShzdHJ1Y3QgbmNpX2RldiAqbmRldiwgdTMyIHNlX2lkeCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIwVDIxOjAzOjExLjM5MDQ4ODQ3MVoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2OTg3NjAwNzQyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEluaXRpYWwgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBgc3RfbmNpX2Rpc2NvdmVyX3NlYCBpcyBleHBsaWNpdGx5IGV4cG9ydGVkIOKAkyB0aGF0J3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50IGZvciB1bmRlcnN0YW5kaW5nIHRoZSBjaGFuZ2VzLiBNeSBmb2N1cywgdGhlbiwgbmVlZHMgdG8gYmUgb24gYG5kbGNfc2VuZGAsIGBuZGxjX2Nsb3NlYCwgYW5kLCBvZiBjb3Vyc2UsIGBzdF9uY2lfZGlzY292ZXJfc2VgLiBIb3dldmVyLCBJIHNlZSB0aGF0IHRoZSBwYXRjaCBhbHNvIHRvdWNoZXMgYHN0X25jaV9pMmNfcHJvYmVgLCB3aGljaCBpcywgaWYgSSByZWNhbGwgY29ycmVjdGx5LCB0aGUgcHJvYmUgZnVuY3Rpb24uIExldCBtZSBxdWlja2x5IGRvdWJsZS1jaGVjayB0aGF0OyBJJ2xsIGxvb2sgYXQgYGRyaXZlcnMvbmZjL3N0LW5jaS9pMmMuY2AgdG8gY29uZmlybS4gWWVwLCBpdCdzIHN0YXRpYywgc28gaXQncyB0aGUgcHJvYmUuIEknbGwgYWxzbyBnbGFuY2UgYXQgYHN0X25jaV9pMmNfcmVhZGAg4oCTIGFsc28gc3RhdGljIOKAkyBhbmQgYHN0X25jaV9pcnFfdGhyZWFkX2ZuYCwgd2hpY2ggaXMgKmFsc28qIHN0YXRpYy5cblxuVGhlIHByb2JlIGZ1bmN0aW9uLCB0aG91Z2guLi4gdHlwaWNhbGx5LCBJIHdvdWxkbid0IHNwZW5kIGEgbG90IG9mIHRpbWUgb24gYSBwcm9iZSBmdW5jdGlvbiB1bmxlc3MgaXQncyB0aGUgKm9ubHkqIGVudHJ5IHBvaW50IGludG8gYSBwYXJ0aWN1bGFyIGNvZGUgcGF0aC4gSSB0aGluayBJIHdpbGwgc3RpY2sgdG8gbXkgb3JpZ2luYWwgcGxhbiBhbmQgZm9jdXMgb24gYG5kbGNfc2VuZGAsIGBuZGxjX2Nsb3NlYCwgYW5kIGBzdF9uY2lfZGlzY292ZXJfc2VgLiBIb3dldmVyLCBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgZG9uJ3QgbWlzcyBzb21ldGhpbmcuXG5cbldhaXQgYSBtaW51dGUsIGBuZGxjX3JlY3ZgIGlzIG1vZGlmaWVkPyBObywgaXQgbG9va3MgbGlrZSBgbGx0X25kbGNfcmN2X3F1ZXVlYCBpcywgYW5kIHRoYXQncyBjYWxsZWQgZnJvbSBgbGx0X25kbGNfc21fd29ya2AsIHdoaWNoIGlzIGEgd29ya3F1ZXVlIGZ1bmN0aW9uLiBHb29kLCBJJ2xsIG5lZWQgdG8gY2hlY2sgaWYgYG5kbGNfcmVjdmAgaXMgZXhwb3J0ZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE3OTkwLCJPdXRwdXRUb2tlbnMiOjE4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjkzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIwVDIxOjAzOjE4LjM3ODA5MTc3M1oiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjM1MTg3ODM1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuZGxjX3JlY3ZcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZmMvc3QtbmNpL2kyYy5jPTIwND1zdGF0aWMgaXJxcmV0dXJuX3Qgc3RfbmNpX2lycV90aHJlYWRfZm4oaW50IGlycSwgdm9pZCAqcGh5X2lkKVxcbi0tXFxuZHJpdmVycy9uZmMvc3QtbmNpL2kyYy5jLTIyNi1cXG5kcml2ZXJzL25mYy9zdC1uY2kvaTJjLmM6MjI3OlxcdG5kbGNfcmVjdihwaHktXFx1MDAzZW5kbGMsIHNrYik7XFxuZHJpdmVycy9uZmMvc3QtbmNpL2kyYy5jLTIyOC1cXG4tLVxcbmRyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmM9MjA3PXN0YXRpYyB2b2lkIGxsdF9uZGxjX3NtX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxuZHJpdmVycy9uZmMvc3QtbmNpL25kbGMuYy0yMzMtXFxuZHJpdmVycy9uZmMvc3QtbmNpL25kbGMuYzoyMzQ6dm9pZCBuZGxjX3JlY3Yoc3RydWN0IGxsdF9uZGxjICpuZGxjLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbmRyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmMtMjM1LXtcXG4tLVxcbmRyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmMtMjQ2LX1cXG5kcml2ZXJzL25mYy9zdC1uY2kvbmRsYy5jOjI0NzpFWFBPUlRfU1lNQk9MKG5kbGNfcmVjdik7XFxuZHJpdmVycy9uZmMvc3QtbmNpL25kbGMuYy0yNDgtXFxuLS1cXG5kcml2ZXJzL25mYy9zdC1uY2kvbmRsYy5oPTQ4PWludCBuZGxjX3NlbmQoc3RydWN0IGxsdF9uZGxjICpuZGxjLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTtcXG5kcml2ZXJzL25mYy9zdC1uY2kvbmRsYy5oOjQ5OnZvaWQgbmRsY19yZWN2KHN0cnVjdCBsbHRfbmRsYyAqbmRsYywgc3RydWN0IHNrX2J1ZmYgKnNrYik7XFxuZHJpdmVycy9uZmMvc3QtbmNpL25kbGMuaC01MC1pbnQgbmRsY19wcm9iZSh2b2lkICpwaHlfaWQsIGNvbnN0IHN0cnVjdCBuZmNfcGh5X29wcyAqcGh5X29wcyxcXG4tLVxcbmRyaXZlcnMvbmZjL3N0LW5jaS9zcGkuYz03ND1zdGF0aWMgaW50IHN0X25jaV9zcGlfd3JpdGUodm9pZCAqcGh5X2lkLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxuZHJpdmVycy9uZmMvc3QtbmNpL3NwaS5jLTEwMi1cXHRcXHRtZW1jcHkoc2tiX3J4LVxcdTAwM2VkYXRhLCBidWYsIHNrYi1cXHUwMDNlbGVuKTtcXG5kcml2ZXJzL25mYy9zdC1uY2kvc3BpLmM6MTAzOlxcdFxcdG5kbGNfcmVjdihwaHktXFx1MDAzZW5kbGMsIHNrYl9yeCk7XFxuZHJpdmVycy9uZmMvc3QtbmNpL3NwaS5jLTEwNC1cXHR9XFxuLS1cXG5kcml2ZXJzL25mYy9zdC1uY2kvc3BpLmM9MTY5PXN0YXRpYyBpcnFyZXR1cm5fdCBzdF9uY2lfaXJxX3RocmVhZF9mbihpbnQgaXJxLCB2b2lkICpwaHlfaWQpXFxuLS1cXG5kcml2ZXJzL25mYy9zdC1uY2kvc3BpLmMtMTkxLVxcbmRyaXZlcnMvbmZjL3N0LW5jaS9zcGkuYzoxOTI6XFx0bmRsY19yZWN2KHBoeS1cXHUwMDNlbmRsYywgc2tiKTtcXG5kcml2ZXJzL25mYy9zdC1uY2kvc3BpLmMtMTkzLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMFQyMTowMzoyMC43Mjk5NzU4MDNaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDgzOTI1ODA0MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbml0aWFsIEFzc2Vzc21lbnQgb2YgTkRMIENvcmUgRnVuY3Rpb25zKipcblxuT2theSwgc28gSSd2ZSBjb25maXJtZWQgdGhhdCBgbmRsY19yZWN2YCBpcyBpbmRlZWQgZXhwb3J0ZWQuIFRoYXQncyBnb29kLCB0aGF0IG5hcnJvd3MgZG93biB0aGUgc2NvcGUgb2Ygd2hhdCBJIG5lZWQgdG8gaW52ZXN0aWdhdGUuIEdpdmVuIHRoYXQsIGFsb25nIHdpdGggYG5kbGNfcmVjdmAsIEkgc2hvdWxkIGJlIGZvY3VzaW5nIG15IGF0dGVudGlvbiBvbiBgbmRsY19zZW5kYCwgYG5kbGNfY2xvc2VgLCBhbmQgYHN0X25jaV9kaXNjb3Zlcl9zZWAuXG5cbkhvbGQgb24uLi4gdGhlIHBhdGNoIGFsc28gdG91Y2hlcyBgc3RfbmNpX2luaXRgLiBXYWl0LCBpcyAqdGhhdCogZXhwb3J0ZWQ/IE5vLCBpdCBsb29rcyBsaWtlIGl0J3Mgc3RhdGljLiBCdXQsIGV2ZW4gdGhvdWdoIGl0J3Mgc3RhdGljLCBpdCBpcyBhbiBBUEkgZW50cnlwb2ludC4gVGhhdCBtYWtlcyB0aGluZ3MgaW50ZXJlc3RpbmcuIEkgc2hvdWxkIGtlZXAgaXQgaW4gbWluZC5cblxuQmVmb3JlIEkgZ28gYW55IGZ1cnRoZXIsIGxldCdzIGp1c3QgZG8gYSBxdWljayBzY2FuIHRvIG1ha2Ugc3VyZSBJIGhhdmVuJ3QgbWlzc2VkIGFueXRoaW5nIG9idmlvdXMuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBkb24ndCBtaXNzIGFueSBvdGhlciBleHBvcnRlZCBmdW5jdGlvbnMuIE9rYXksIGhlcmUgd2UgZ28uLi4gQWgsIGBuZGxjX3Byb2JlYCBpcyBhbHNvIGV4cG9ydGVkLiBBbHJpZ2h0LCB0aGF0J3MgYW5vdGhlciBvbmUgdG8gY29uc2lkZXIuIE5vdywgbGV0J3Mgc3RhcnQgYnkgZGlnZ2luZyBpbnRvIGBuZGxjX3Byb2JlYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTkzOTIsIk91dHB1dFRva2VucyI6MTgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjBUMjE6MDM6MjUuNTY5MjM2ODg1WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTQzODA0OTUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5kbGNfcHJvYmVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZmMvc3QtbmNpL2kyYy5jPTI0NT1zdGF0aWMgaW50IHN0X25jaV9pMmNfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcXG4tLVxcbmRyaXZlcnMvbmZjL3N0LW5jaS9pMmMuYy0yODktXFxuZHJpdmVycy9uZmMvc3QtbmNpL2kyYy5jOjI5MDpcXHRyID0gbmRsY19wcm9iZShwaHksIFxcdTAwMjZpMmNfcGh5X29wcywgXFx1MDAyNmNsaWVudC1cXHUwMDNlZGV2LFxcbmRyaXZlcnMvbmZjL3N0LW5jaS9pMmMuYy0yOTEtXFx0XFx0XFx0cGh5LVxcdTAwM2VyYXdfbmNpID8gU1RfTkNJX1JBV19GUkFNRV9IRUFEUk9PTSA6XFxuLS1cXG5kcml2ZXJzL25mYy9zdC1uY2kvbmRsYy5jPTI1Nj1zdGF0aWMgdm9pZCBuZGxjX3QyX3RpbWVvdXQoc3RydWN0IHRpbWVyX2xpc3QgKnQpXFxuLS1cXG5kcml2ZXJzL25mYy9zdC1uY2kvbmRsYy5jLTI2Mi1cXG5kcml2ZXJzL25mYy9zdC1uY2kvbmRsYy5jOjI2MzppbnQgbmRsY19wcm9iZSh2b2lkICpwaHlfaWQsIGNvbnN0IHN0cnVjdCBuZmNfcGh5X29wcyAqcGh5X29wcyxcXG5kcml2ZXJzL25mYy9zdC1uY2kvbmRsYy5jLTI2NC1cXHQgICAgICAgc3RydWN0IGRldmljZSAqZGV2LCBpbnQgcGh5X2hlYWRyb29tLCBpbnQgcGh5X3RhaWxyb29tLFxcbi0tXFxuZHJpdmVycy9uZmMvc3QtbmNpL25kbGMuYy0yOTEtfVxcbmRyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmM6MjkyOkVYUE9SVF9TWU1CT0wobmRsY19wcm9iZSk7XFxuZHJpdmVycy9uZmMvc3QtbmNpL25kbGMuYy0yOTMtXFxuLS1cXG5kcml2ZXJzL25mYy9zdC1uY2kvbmRsYy5oPTQ5PXZvaWQgbmRsY19yZWN2KHN0cnVjdCBsbHRfbmRsYyAqbmRsYywgc3RydWN0IHNrX2J1ZmYgKnNrYik7XFxuZHJpdmVycy9uZmMvc3QtbmNpL25kbGMuaDo1MDppbnQgbmRsY19wcm9iZSh2b2lkICpwaHlfaWQsIGNvbnN0IHN0cnVjdCBuZmNfcGh5X29wcyAqcGh5X29wcyxcXG5kcml2ZXJzL25mYy9zdC1uY2kvbmRsYy5oLTUxLVxcdCAgICAgICBzdHJ1Y3QgZGV2aWNlICpkZXYsIGludCBwaHlfaGVhZHJvb20sIGludCBwaHlfdGFpbHJvb20sXFxuLS1cXG5kcml2ZXJzL25mYy9zdC1uY2kvc3BpLmM9MjEwPXN0YXRpYyBpbnQgc3RfbmNpX3NwaV9wcm9iZShzdHJ1Y3Qgc3BpX2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZmMvc3QtbmNpL3NwaS5jLTI0Ni1cXG5kcml2ZXJzL25mYy9zdC1uY2kvc3BpLmM6MjQ3OlxcdHIgPSBuZGxjX3Byb2JlKHBoeSwgXFx1MDAyNnNwaV9waHlfb3BzLCBcXHUwMDI2ZGV2LVxcdTAwM2VkZXYsXFxuZHJpdmVycy9uZmMvc3QtbmNpL3NwaS5jLTI0OC1cXHRcXHRcXHRTVF9OQ0lfRlJBTUVfSEVBRFJPT00sIFNUX05DSV9GUkFNRV9UQUlMUk9PTSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjBUMjE6MDM6MjcuNTEzMDcyOTI1WiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY0Nzc4MTg2NTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIENvZGUncyBGdXp6aW5nIFBvdGVudGlhbCoqXG5cbk9rYXksIGZpcnN0IHRoaW5ncyBmaXJzdDogYG5kbGNfcHJvYmVgIGlzIGRlZmluaXRlbHkgZXhwb3J0ZWQsIHdoaWNoIGlzIGdvb2QgbmV3cy4gVGhhdCBtZWFucyBJIGNhbiBzdGFydCBteSBmdXp6aW5nIGZvY3VzIHdpdGg6XG5cbiogICBgbmRsY19wcm9iZWBcbiogICBgbmRsY19yZWN2YFxuKiAgIGBuZGxjX3NlbmRgXG4qICAgYG5kbGNfY2xvc2VgXG4qICAgYHN0X25jaV9kaXNjb3Zlcl9zZWBcblxuSG93ZXZlciwgdGhpcyBwYXRjaCBhbHNvIHRvdWNoZXMgYHN0X25jaV9pMmNfcHJvYmVgIGFuZCBgc3RfbmNpX2kyY19yZWFkYC4gSG1tLCB0aGV5J3JlIHN0YXRpYywgc28gZGlyZWN0bHkgZnV6emluZyBieSBuYW1lIGlzIGEgbm8tZ28gdW5sZXNzIHRoZSBjb21waWxlciBpbmxpbmVzIHRoZW0sIHdoaWNoIGlzbid0IGhhcHBlbmluZyBoZXJlLiBCdXQsIHNpbmNlIEknbSBhaW1pbmcgZm9yIGV4cG9ydGVkIGZ1bmN0aW9ucyBhbnl3YXksIGl0IGFsaWducyB3aXRoIG15IGFwcHJvYWNoLlxuXG5UaW1lIGZvciBhIGNvbmZpZyBjaGVjay4gSSd2ZSBnb3QgYE5GQ2AsIGBORkNfTkNJYCwgYW5kIGBORkNfU1RfTkNJX0kyQ2AuLi4gQW55dGhpbmcgZWxzZSByZWxldmFudD8gVGhlIHBhdGNoIHRvdWNoZXMgYGRyaXZlcnMvbmZjL3N0LW5jaS9pMmMuY2AsIGBkcml2ZXJzL25mYy9zdC1uY2kvY29yZS5jYCwgYGRyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmNgLCBhbmQgYGRyaXZlcnMvbmZjL3N0LW5jaS9zZS5jYC4gVGhleSBhcmUgYWxsIHBhcnQgb2YgdGhlIGBzdC1uY2lgIGRyaXZlciwgc28gSSBuZWVkIHRvIGNoZWNrIHRoZSBgTWFrZWZpbGVgIGluIHRoYXQgZGlyZWN0b3J5LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDQwNiwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMxMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMFQyMTowMzozMy45OTA4OTU1MzdaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3Mzg1MTY1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInN0LW5jaVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25mYy9zdC1uY2kvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZmMvc3QtbmNpL01ha2VmaWxlLTUtXFxuZHJpdmVycy9uZmMvc3QtbmNpL01ha2VmaWxlOjY6c3QtbmNpLW9ianMgPSBuZGxjLm8gY29yZS5vIHNlLm8gdmVuZG9yX2NtZHMub1xcbmRyaXZlcnMvbmZjL3N0LW5jaS9NYWtlZmlsZTo3Om9iai0kKENPTkZJR19ORkNfU1RfTkNJKSAgICAgKz0gc3QtbmNpLm9cXG5kcml2ZXJzL25mYy9zdC1uY2kvTWFrZWZpbGUtOC1cXG5kcml2ZXJzL25mYy9zdC1uY2kvTWFrZWZpbGU6OTpzdC1uY2lfaTJjLW9ianMgPSBpMmMub1xcbmRyaXZlcnMvbmZjL3N0LW5jaS9NYWtlZmlsZToxMDpvYmotJChDT05GSUdfTkZDX1NUX05DSV9JMkMpICs9IHN0LW5jaV9pMmMub1xcbmRyaXZlcnMvbmZjL3N0LW5jaS9NYWtlZmlsZS0xMS1cXG5kcml2ZXJzL25mYy9zdC1uY2kvTWFrZWZpbGU6MTI6c3QtbmNpX3NwaS1vYmpzID0gc3BpLm9cXG5kcml2ZXJzL25mYy9zdC1uY2kvTWFrZWZpbGU6MTM6b2JqLSQoQ09ORklHX05GQ19TVF9OQ0lfU1BJKSArPSBzdC1uY2lfc3BpLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjBUMjE6MDM6MzQuMDM4Mjg1OTcyWiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5MTU3MDk2Mzc0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5c2lzIG9mIE5GQyBTVC1OQ0kgSTJDIERyaXZlciBQYXRjaCoqXG5cbkFscmlnaHQsIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIGl0J3MgY2xlYXIgdGhhdCB0aGlzIHBhdGNoIGludHJvZHVjZXMgc3VwcG9ydCBmb3IgYSBuZXcgTkZDIGNvbnRyb2xsZXIsIHRoZSBTVDIxTkZDRCwgd2hpY2ggY29tbXVuaWNhdGVzIHVzaW5nIHJhdyBOQ0kgb3ZlciBJMkMuIFRoZSBleGlzdGluZyBkcml2ZXIsIGBzdC1uY2ktaTJjYCwgaXMgYmVpbmcgZXh0ZW5kZWQgdG8gaGFuZGxlIHRoaXMgbmV3IG1vZGUgb2Ygb3BlcmF0aW9uLlxuXG5NeSBpbml0aWFsIHRob3VnaHQgd2FzIHRoYXQgdGhlIGBORkNfU1RfTkNJYCBjb25maWcgbWlnaHQgYmUgbmVlZGVkIGluZGVwZW5kZW50bHksIGJ1dCBhZnRlciBkb3VibGUgY2hlY2tpbmcgdGhlIEtjb25maWcsIGl0J3Mgc2VsZWN0ZWQgYnkgYE5GQ19TVF9OQ0lfSTJDYCwgc28gdGhhdCdzIGdvb2QuIFRob3VnaCwgaXQncyB3aXNlIHRvIGxpc3QgaXQgZXhwbGljaXRseS4gQW5kIG9mIGNvdXJzZSwgYE5GQ2AsIGBORkNfTkNJYCwgYW5kIGBJMkNgIGFyZSB0aGUgYmFzZSBjb25maWdzLiBXZSBhbHNvIG5lZWQgdG8gYWRkIHRoZSBgTkZDX1NUX05DSWAgY29uZmlnLlxuXG5UaGUga2V5IGNoYW5nZSBpcyB0aGUgYWRkaXRpb24gb2YgdGhlIGByYXdfbmNpYCBmbGFnIHdpdGhpbiB0aGUgYHN0X25jaV9pMmNfcGh5YCBzdHJ1Y3QgYW5kIGhvdyBpdCdzIHVzZWQuIFRoaXMgZmxhZyBhbHRlcnMgdGhlIGJlaGF2aW9yIG9mIHNldmVyYWwgY29yZSBmdW5jdGlvbnMgd2l0aGluIHRoZSBkcml2ZXIuIE5hbWVseSwgIGBzdF9uY2lfaTJjX3JlYWRgLCBgc3RfbmNpX2luaXRgLCBgbmRsY19jbG9zZWAsIGBuZGxjX3NlbmRgLCBgbGx0X25kbGNfc2VuZF9xdWV1ZWAsIGBsbHRfbmRsY19yY3ZfcXVldWVgLCBhbmQgYHN0X25jaV9kaXNjb3Zlcl9zZWAuXG5cblRoZSBjb21taXQgaW50cm9kdWNlcyBhIG5ldyBjb21wYXRpYmxlIHN0cmluZywgXCJzdCxzdDIxbmZjZFwiLCB3aGljaCBzZXRzIHRoaXMgYHJhd19uY2lgIGZsYWcgaW4gdGhlIHByb2JlIGZ1bmN0aW9uLiBUaGUgY29kZSBhbHNvIHVzZXMgdGhlIGBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoKWAgdG8gc3BlY2lmeSB3aGV0aGVyIHRoZSBkcml2ZXIgaXMgaW4gcmF3IE5DSSBtb2RlIG9yIG5vdC5cblxuSSBjYW4gY29uZmlybSB0aGF0IHRoZSBuZXcgbG9naWMgY2FuIGJlIHJlYWNoZWQgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gVGhlIGRyaXZlciBzaG91bGQgYmUgYWJsZSB0byBpbnN0YW50aWF0ZSB2aWEgc3lzZnMsIHNvIHRlc3Rpbmcgc2hvdWxkbid0IGJlIHRvbyBjdW1iZXJzb21lLlxuXG5Ob3csIGNvbnNpZGVyaW5nIGZ1enppbmcsIHRoZSBhcmVhcyB0byBmb2N1cyBvbiBhcmUgdGhlIGZ1bmN0aW9ucyB0aGF0IGhhbmRsZSB0aGUgSTJDIGNvbW11bmljYXRpb24gYW5kIE5DSSBmcmFtZSBwcm9jZXNzaW5nLCBzcGVjaWZpY2FsbHk6IGBuZGxjX3Byb2JlYCwgYG5kbGNfcmVjdmAsIGBuZGxjX3NlbmRgLCBgbmRsY19jbG9zZWAsIGFuZCBgc3RfbmNpX2Rpc2NvdmVyX3NlYC4gSSBiZWxpZXZlIHRob3NlIGFyZSB0aGUgZW50cnkgcG9pbnRzIHRvIHRoZSBuZXcgbG9naWMuIEFsdGhvdWdoIGBzdF9uY2lfaTJjX3JlYWRgIGlzIHdoZXJlIHRoZSBjb3JlIHJlYWRpbmcgbG9naWMgaXMgaW1wbGVtZW50ZWQsIGl0J3Mgc3RhdGljLlxuXG5GaW5hbGx5LCB0aGUgcHJvcG9zZWQgY29uZmlnIHNldCBpczogYE5GQ2AsIGBORkNfTkNJYCwgYEkyQ2AsIGBORkNfU1RfTkNJYCwgYW5kIGBORkNfU1RfTkNJX0kyQ2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxMzQxLCJPdXRwdXRUb2tlbnMiOjE5NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMzMzUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjBUMjE6MDQ6MDMuMTk1Mzg1ODM2WiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzU1OTU2NjgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5GQ1wiLFxuICAgIFwiTkZDX05DSVwiLFxuICAgIFwiSTJDXCIsXG4gICAgXCJORkNfU1RfTkNJXCIsXG4gICAgXCJORkNfU1RfTkNJX0kyQ1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm5kbGNfcHJvYmVcIixcbiAgICBcIm5kbGNfcmVjdlwiLFxuICAgIFwibmRsY19zZW5kXCIsXG4gICAgXCJuZGxjX2Nsb3NlXCIsXG4gICAgXCJzdF9uY2lfZGlzY292ZXJfc2VcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHRoZSBTVDIxTkZDRCBORkMgY29udHJvbGxlciwgd2hpY2ggdXNlcyByYXcgTkNJIG92ZXIgSTJDIGluc3RlYWQgb2YgdGhlIE5ETEMgcHJvdG9jb2wuIEl0IGludHJvZHVjZXMgYSBuZXcgYHJhd19uY2lgIGZsYWcgdGhhdCBtb2RpZmllcyB0aGUgYmVoYXZpb3Igb2YgcmVhZGluZyBmcm9tIHRoZSBJMkMgYnVzLCBzZW5kaW5nL3JlY2VpdmluZyBOQ0kgZnJhbWVzLCBhbmQgaW5pdGlhbGl6aW5nIHRoZSBkZXZpY2UuIFRoZSBJMkMgZHJpdmVyIGNhbiBiZSBpbnN0YW50aWF0ZWQgYW5kIGZ1enplZCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5GQ1wiLFxuICAgIFwiTkZDX05DSVwiLFxuICAgIFwiSTJDXCIsXG4gICAgXCJORkNfU1RfTkNJXCIsXG4gICAgXCJORkNfU1RfTkNJX0kyQ1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm5kbGNfcHJvYmVcIixcbiAgICBcIm5kbGNfcmVjdlwiLFxuICAgIFwibmRsY19zZW5kXCIsXG4gICAgXCJuZGxjX2Nsb3NlXCIsXG4gICAgXCJzdF9uY2lfZGlzY292ZXJfc2VcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHRoZSBTVDIxTkZDRCBORkMgY29udHJvbGxlciwgd2hpY2ggdXNlcyByYXcgTkNJIG92ZXIgSTJDIGluc3RlYWQgb2YgdGhlIE5ETEMgcHJvdG9jb2wuIEl0IGludHJvZHVjZXMgYSBuZXcgYHJhd19uY2lgIGZsYWcgdGhhdCBtb2RpZmllcyB0aGUgYmVoYXZpb3Igb2YgcmVhZGluZyBmcm9tIHRoZSBJMkMgYnVzLCBzZW5kaW5nL3JlY2VpdmluZyBOQ0kgZnJhbWVzLCBhbmQgaW5pdGlhbGl6aW5nIHRoZSBkZXZpY2UuIFRoZSBJMkMgZHJpdmVyIGNhbiBiZSBpbnN0YW50aWF0ZWQgYW5kIGZ1enplZCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMFQyMTowNDowMy4yNzA5OTMwNzRaIiwiU2VxIjozMSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM5MzA5NjUwNTE1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjBUMjE6MDQ6MDMuMjcxNDg0MjE0WiIsIlNlcSI6MzIsIk5lc3RpbmciOjIsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjM5MzA5MTU1Mjc1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIHN1cHBvcnQgZm9yIGEgbmV3IE5GQyBjaGlwIChTVDIxTkZDRCkgd2hpY2ggdXNlcyByYXcgTkNJIGZyYW1lcyBvdmVyIEkyQyBpbnN0ZWFkIG9mIHRoZSBORExDIHByb3RvY29sLiBUaGUgY2hhbmdlcyBwcmltYXJpbHkgaW52b2x2ZSByZWFkaW5nIGRhdGEgZnJvbSB0aGUgSTJDIGJ1cyBpbnRvIGEgbG9jYWwgc3RhY2sgYnVmZmVyLCBhbGxvY2F0aW5nIGFuIHNrX2J1ZmYsIGFuZCBjb3B5aW5nIHRoZSByZWNlaXZlZCBkYXRhIGludG8gaXQuIFRoZSBjb2RlIGV4cGxpY2l0bHkgY2hlY2tzIHRoZSByZXR1cm4gdmFsdWVzIG9mIGBpMmNfbWFzdGVyX3JlY3ZgIHRvIGVuc3VyZSB0aGF0IHRoZSBidWZmZXIgaXMgZnVsbHkgaW5pdGlhbGl6ZWQgYmVmb3JlIGFueSBkYXRhIGlzIHJlYWQgZnJvbSBpdCBvciBjb3BpZWQgdG8gdGhlIHNrX2J1ZmYuIFRoZXJlIGFyZSBubyBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aXRoIHBhZGRpbmcgYmVpbmcgc2VudCB0byB1c2VyIHNwYWNlLCBub3IgYXJlIHRoZXJlIGFueSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcyB1c2VkIGluIGNvbnRyb2wgZmxvdy4gQW55IHBvdGVudGlhbCBtZW1vcnkgY29ycnVwdGlvbiwgb3V0LW9mLWJvdW5kcyBhY2Nlc3Nlcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyBpbiB0aGlzIGNvZGUgd291bGQgYmUgZWZmZWN0aXZlbHkgY2F1Z2h0IGJ5IEtBU0FOLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QganVzdGlmaWVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDU5ZmIwODI0YmVjNGQxMDI2M2U0ODViNWFjYjc3NTc5NDNiMmIyYmNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEF1ZyAyMCAyMTowMTo1MyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbmZjL3N0LHN0LW5jaS55YW1sIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9uZmMvc3Qsc3QtbmNpLnlhbWxcbmluZGV4IDFkY2JkZGJjNWE3NGUuLmM4NTk3OTdmNDIyYmMgMTAwNjQ0XG4tLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L25mYy9zdCxzdC1uY2kueWFtbFxuKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9uZmMvc3Qsc3QtbmNpLnlhbWxcbkBAIC0xNSw2ICsxNSw3IEBAIHByb3BlcnRpZXM6XG4gICAgICAgLSBzdCxzdDIxbmZjYi1pMmNcbiAgICAgICAtIHN0LHN0MjFuZmNiLXNwaVxuICAgICAgIC0gc3Qsc3QyMW5mY2MtaTJjXG4rICAgICAgLSBzdCxzdDIxbmZjZFxuIFxuICAgcmVzZXQtZ3Bpb3M6XG4gICAgIGRlc2NyaXB0aW9uOiBPdXRwdXQgR1BJTyBwaW4gdXNlZCBmb3IgcmVzZXR0aW5nIHRoZSBjb250cm9sbGVyXG5AQCAtMzYsNiArMzcsMTUgQEAgcHJvcGVydGllczpcbiAgICAgICBTcGVjaWZpZXMgdGhhdCB0aGUgdWljYyBzd3Agc2lnbmFsIGNhbiBiZSBwaHlzaWNhbGx5IGNvbm5lY3RlZCB0byB0aGVcbiAgICAgICBjb250cm9sbGVyXG4gXG4rICBjbG9ja3M6XG4rICAgIG1heEl0ZW1zOiAxXG4rICAgIGRlc2NyaXB0aW9uOlxuKyAgICAgIEV4dGVybmFsIHJlZmVyZW5jZSBjbG9jayBjb25uZWN0ZWQgdG8gU1lTX0NMSy5cbitcbisgIHZkZC1pby1zdXBwbHk6XG4rICAgIGRlc2NyaXB0aW9uOlxuKyAgICAgIERpZ2l0YWwgSS9PIHN1cHBseSAoVlBTX0lPKS5cbitcbiByZXF1aXJlZDpcbiAgIC0gY29tcGF0aWJsZVxuICAgLSBpbnRlcnJ1cHRzXG5AQCAtNDksNiArNTksNyBAQCBpZjpcbiAgICAgICAgIGVudW06XG4gICAgICAgICAgIC0gc3Qsc3QyMW5mY2ItaTJjXG4gICAgICAgICAgIC0gc3Qsc3QyMW5mY2MtaTJjXG4rICAgICAgICAgIC0gc3Qsc3QyMW5mY2RcbiB0aGVuOlxuICAgcHJvcGVydGllczpcbiAgICAgc3BpLW1heC1mcmVxdWVuY3k6IGZhbHNlXG5AQCAtODEsNiArOTIsMjYgQEAgZXhhbXBsZXM6XG4gICAgICAgICB9O1xuICAgICB9O1xuIFxuKyAgLSB8XG4rICAgICNpbmNsdWRlIFx1MDAzY2R0LWJpbmRpbmdzL2dwaW8vZ3Bpby5oXHUwMDNlXG4rICAgICNpbmNsdWRlIFx1MDAzY2R0LWJpbmRpbmdzL2ludGVycnVwdC1jb250cm9sbGVyL2lycS5oXHUwMDNlXG4rXG4rICAgIGkyYyB7XG4rICAgICAgICAjYWRkcmVzcy1jZWxscyA9IFx1MDAzYzFcdTAwM2U7XG4rICAgICAgICAjc2l6ZS1jZWxscyA9IFx1MDAzYzBcdTAwM2U7XG4rXG4rICAgICAgICBuZmNAOCB7XG4rICAgICAgICAgICAgY29tcGF0aWJsZSA9IFwic3Qsc3QyMW5mY2RcIjtcbisgICAgICAgICAgICByZWcgPSBcdTAwM2MweDA4XHUwMDNlO1xuK1xuKyAgICAgICAgICAgIGludGVycnVwdHMtZXh0ZW5kZWQgPSBcdTAwM2NcdTAwMjZncGlvNSAyIElSUV9UWVBFX0xFVkVMX0hJR0hcdTAwM2U7XG4rICAgICAgICAgICAgcmVzZXQtZ3Bpb3MgPSBcdTAwM2NcdTAwMjZncGlvNSAyOSBHUElPX0FDVElWRV9ISUdIXHUwMDNlO1xuK1xuKyAgICAgICAgICAgIGNsb2NrcyA9IFx1MDAzY1x1MDAyNmNsa1x1MDAzZTtcbisgICAgICAgICAgICB2ZGQtaW8tc3VwcGx5ID0gXHUwMDNjXHUwMDI2dmRkX2lvXHUwMDNlO1xuKyAgICAgICAgfTtcbisgICAgfTtcbitcbiAgIC0gfFxuICAgICAjaW5jbHVkZSBcdTAwM2NkdC1iaW5kaW5ncy9ncGlvL2dwaW8uaFx1MDAzZVxuICAgICAjaW5jbHVkZSBcdTAwM2NkdC1iaW5kaW5ncy9pbnRlcnJ1cHQtY29udHJvbGxlci9pcnEuaFx1MDAzZVxuZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQvYm9vdC9kdHMvcWNvbS9xY202NDkwLWZhaXJwaG9uZS1mcDUuZHRzIGIvYXJjaC9hcm02NC9ib290L2R0cy9xY29tL3FjbTY0OTAtZmFpcnBob25lLWZwNS5kdHNcbmluZGV4IDA0Y2I5MjMwZDI5ZmQuLmVmNjYwNzlhMDI2M2MgMTAwNjQ0XG4tLS0gYS9hcmNoL2FybTY0L2Jvb3QvZHRzL3Fjb20vcWNtNjQ5MC1mYWlycGhvbmUtZnA1LmR0c1xuKysrIGIvYXJjaC9hcm02NC9ib290L2R0cy9xY29tL3FjbTY0OTAtZmFpcnBob25lLWZwNS5kdHNcbkBAIC05MDgsNyArOTA4LDIzIEBAIHJlZHJpdmVyX3NzX2luOiBlbmRwb2ludCB7XG4gXHUwMDI2aTJjOSB7XG4gXHRzdGF0dXMgPSBcIm9rYXlcIjtcbiBcbi1cdC8qIFNUMjFORkMgTkZDIEAgMjggKi9cbitcdG5mY0A4IHtcbitcdFx0Y29tcGF0aWJsZSA9IFwic3Qsc3QyMW5mY2RcIjtcbitcdFx0cmVnID0gXHUwMDNjMHgwOFx1MDAzZTtcbitcbitcdFx0aW50ZXJydXB0cy1leHRlbmRlZCA9IFx1MDAzY1x1MDAyNnRsbW0gNDEgSVJRX1RZUEVfTEVWRUxfSElHSFx1MDAzZTtcbitcdFx0cmVzZXQtZ3Bpb3MgPSBcdTAwM2NcdTAwMjZ0bG1tIDM4IEdQSU9fQUNUSVZFX0hJR0hcdTAwM2U7XG4rXG4rXHRcdHBpbmN0cmwtMCA9IFx1MDAzY1x1MDAyNm5mY19kZWZhdWx0XHUwMDNlO1xuK1x0XHRwaW5jdHJsLW5hbWVzID0gXCJkZWZhdWx0XCI7XG4rXG4rXHRcdGNsb2NrcyA9IFx1MDAzY1x1MDAyNnJwbWhjYyBSUE1IX0xOX0JCX0NMSzJcdTAwM2U7XG4rXHRcdHZkZC1pby1zdXBwbHkgPSBcdTAwM2NcdTAwMjZ2cmVnX2wxOGJcdTAwM2U7XG4rXG4rXHRcdGVzZS1wcmVzZW50O1xuK1x0XHR1aWNjLXByZXNlbnQ7XG4rXHR9O1xuK1xuIFx0LyogVkw1M0wzIFRvRiBAIDI5ICovXG4gfTtcbiBcbkBAIC0xNDEwLDYgKzE0MjYsMjIgQEAgaGFsbF9zZW5zb3JfZGVmYXVsdDogaGFsbC1zZW5zb3ItZGVmYXVsdC1zdGF0ZSB7XG4gXHRcdGRyaXZlLXN0cmVuZ3RoID0gXHUwMDNjMlx1MDAzZTtcbiBcdFx0Ymlhcy1wdWxsLXVwO1xuIFx0fTtcbitcbitcdG5mY19kZWZhdWx0OiBuZmMtZGVmYXVsdC1zdGF0ZSB7XG4rXHRcdHJlc2V0LXBpbnMge1xuK1x0XHRcdHBpbnMgPSBcImdwaW8zOFwiO1xuK1x0XHRcdGZ1bmN0aW9uID0gXCJncGlvXCI7XG4rXHRcdFx0ZHJpdmUtc3RyZW5ndGggPSBcdTAwM2MyXHUwMDNlO1xuK1x0XHRcdGJpYXMtZGlzYWJsZTtcbitcdFx0fTtcbitcbitcdFx0aW50LXBpbnMge1xuK1x0XHRcdHBpbnMgPSBcImdwaW80MVwiO1xuK1x0XHRcdGZ1bmN0aW9uID0gXCJncGlvXCI7XG4rXHRcdFx0ZHJpdmUtc3RyZW5ndGggPSBcdTAwM2MyXHUwMDNlO1xuK1x0XHRcdGJpYXMtZGlzYWJsZTtcbitcdFx0fTtcbitcdH07XG4gfTtcbiBcbiBcdTAwMjZ1YXJ0NSB7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZmMvc3QtbmNpL2NvcmUuYyBiL2RyaXZlcnMvbmZjL3N0LW5jaS9jb3JlLmNcbmluZGV4IGEzNjcxMzZkNDMzMGEuLjIzNTZmMTZiODA3MDYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25mYy9zdC1uY2kvY29yZS5jXG4rKysgYi9kcml2ZXJzL25mYy9zdC1uY2kvY29yZS5jXG5AQCAtMTgsOCArMTgsMTMgQEBcbiBcbiBzdGF0aWMgaW50IHN0X25jaV9pbml0KHN0cnVjdCBuY2lfZGV2ICpuZGV2KVxuIHtcbitcdHN0cnVjdCBzdF9uY2lfaW5mbyAqaW5mbyA9IG5jaV9nZXRfZHJ2ZGF0YShuZGV2KTtcbiBcdHN0cnVjdCBuY2lfbW9kZV9zZXRfY21kIGNtZDtcbiBcbitcdC8qIFNUMjFORkNEIGhhcyBubyBORExDIHByb3ByaWV0YXJ5IFNFVF9ORkNfTU9ERSAqL1xuK1x0aWYgKGluZm8tXHUwMDNlbmRsYy1cdTAwM2VyYXdfbmNpKVxuK1x0XHRyZXR1cm4gMDtcbitcbiBcdGNtZC5jbWRfdHlwZSA9IFNUX05DSV9TRVRfTkZDX01PREU7XG4gXHRjbWQubW9kZSA9IDE7XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZmMvc3QtbmNpL2kyYy5jIGIvZHJpdmVycy9uZmMvc3QtbmNpL2kyYy5jXG5pbmRleCAxNTJjMjBiNmJiMDFhLi5jZmRkYjdmZmUwMmE0IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZmMvc3QtbmNpL2kyYy5jXG4rKysgYi9kcml2ZXJzL25mYy9zdC1uY2kvaTJjLmNcbkBAIC0xMCwxMCArMTAsMTMgQEBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9pMmMuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2dwaW8vY29uc3VtZXIuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2FjcGkuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L2Nsay5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvaW50ZXJydXB0LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9kZWxheS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvbmZjLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9vZi5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvcHJvcGVydHkuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L3JlZ3VsYXRvci9jb25zdW1lci5oXHUwMDNlXG4gXG4gI2luY2x1ZGUgXCJzdC1uY2kuaFwiXG4gXG5AQCAtMjIsMTAgKzI1LDE3IEBAXG4gLyogbmRsYyBoZWFkZXIgKi9cbiAjZGVmaW5lIFNUX05DSV9GUkFNRV9IRUFEUk9PTSAxXG4gI2RlZmluZSBTVF9OQ0lfRlJBTUVfVEFJTFJPT00gMFxuKyNkZWZpbmUgU1RfTkNJX1JBV19GUkFNRV9IRUFEUk9PTSAwXG4gXG4gI2RlZmluZSBTVF9OQ0lfSTJDX01JTl9TSVpFIDQgICAvKiBQQ0IoMSkgKyBOQ0kgUGFja2V0IGhlYWRlcigzKSAqL1xuKyNkZWZpbmUgU1RfTkNJX05DSV9IRFJfU0laRSAzICAgLyogcmF3IE5DSTogTVQvUEJGL0dJRCArIE9JRCArIGxlbiAqL1xuICNkZWZpbmUgU1RfTkNJX0kyQ19NQVhfU0laRSAyNTAgLyogcmVxIDQuMi4xICovXG4gXG4rZW51bSBzdF9uY2lfaTJjX3Byb3RvIHtcbitcdFNUX05DSV9JMkNfUFJPVE9fTkRMQyA9IDAsXG4rXHRTVF9OQ0lfSTJDX1BST1RPX1JBV19OQ0ksXG4rfTtcbitcbiAjZGVmaW5lIFNUX05DSV9EUklWRVJfTkFNRSBcInN0X25jaVwiXG4gI2RlZmluZSBTVF9OQ0lfSTJDX0RSSVZFUl9OQU1FIFwic3RfbmNpX2kyY1wiXG4gXG5AQCAtMzQsNiArNDQsNyBAQCBzdHJ1Y3Qgc3RfbmNpX2kyY19waHkge1xuIFx0c3RydWN0IGxsdF9uZGxjICpuZGxjO1xuIFxuIFx0Ym9vbCBpcnFfYWN0aXZlO1xuK1x0Ym9vbCByYXdfbmNpO1xuIFxuIFx0c3RydWN0IGdwaW9fZGVzYyAqZ3Bpb2RfcmVzZXQ7XG4gXG5AQCAtMTExLDYgKzEyMiw0MiBAQCBzdGF0aWMgaW50IHN0X25jaV9pMmNfcmVhZChzdHJ1Y3Qgc3RfbmNpX2kyY19waHkgKnBoeSxcbiBcdHU4IGJ1ZltTVF9OQ0lfSTJDX01BWF9TSVpFXTtcbiBcdHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQgPSBwaHktXHUwMDNlaTJjX2RldjtcbiBcbitcdGlmIChwaHktXHUwMDNlcmF3X25jaSkge1xuK1x0XHRyID0gaTJjX21hc3Rlcl9yZWN2KGNsaWVudCwgYnVmLCBTVF9OQ0lfTkNJX0hEUl9TSVpFKTtcbitcdFx0aWYgKHIgXHUwMDNjIDApIHtcbitcdFx0XHR1c2xlZXBfcmFuZ2UoMTAwMCwgNDAwMCk7XG4rXHRcdFx0ciA9IGkyY19tYXN0ZXJfcmVjdihjbGllbnQsIGJ1ZiwgU1RfTkNJX05DSV9IRFJfU0laRSk7XG4rXHRcdH1cbitcdFx0aWYgKHIgIT0gU1RfTkNJX05DSV9IRFJfU0laRSlcbitcdFx0XHRyZXR1cm4gLUVSRU1PVEVJTztcbitcbitcdFx0bGVuID0gYnVmWzJdO1xuK1x0XHRpZiAobGVuIFx1MDAzZSBTVF9OQ0lfSTJDX01BWF9TSVpFKSB7XG4rXHRcdFx0bmZjX2VycihcdTAwMjZjbGllbnQtXHUwMDNlZGV2LCBcImludmFsaWQgZnJhbWUgbGVuXFxuXCIpO1xuK1x0XHRcdHJldHVybiAtRUJBRE1TRztcbitcdFx0fVxuK1xuK1x0XHQqc2tiID0gYWxsb2Nfc2tiKFNUX05DSV9OQ0lfSERSX1NJWkUgKyBsZW4sIEdGUF9LRVJORUwpO1xuK1x0XHRpZiAoISpza2IpXG4rXHRcdFx0cmV0dXJuIC1FTk9NRU07XG4rXG4rXHRcdHNrYl9wdXQoKnNrYiwgU1RfTkNJX05DSV9IRFJfU0laRSk7XG4rXHRcdG1lbWNweSgoKnNrYiktXHUwMDNlZGF0YSwgYnVmLCBTVF9OQ0lfTkNJX0hEUl9TSVpFKTtcbitcbitcdFx0aWYgKCFsZW4pXG4rXHRcdFx0cmV0dXJuIDA7XG4rXG4rXHRcdHIgPSBpMmNfbWFzdGVyX3JlY3YoY2xpZW50LCBidWYsIGxlbik7XG4rXHRcdGlmIChyICE9IGxlbikge1xuK1x0XHRcdGtmcmVlX3NrYigqc2tiKTtcbitcdFx0XHRyZXR1cm4gLUVSRU1PVEVJTztcbitcdFx0fVxuK1xuK1x0XHRza2JfcHV0KCpza2IsIGxlbik7XG4rXHRcdG1lbWNweSgoKnNrYiktXHUwMDNlZGF0YSArIFNUX05DSV9OQ0lfSERSX1NJWkUsIGJ1ZiwgbGVuKTtcbitcdFx0cmV0dXJuIDA7XG4rXHR9XG4rXG4gXHRyID0gaTJjX21hc3Rlcl9yZWN2KGNsaWVudCwgYnVmLCBTVF9OQ0lfSTJDX01JTl9TSVpFKTtcbiBcdGlmIChyIFx1MDAzYyAwKSB7ICAvKiBSZXRyeSwgY2hpcCB3YXMgaW4gc3RhbmRieSAqL1xuIFx0XHR1c2xlZXBfcmFuZ2UoMTAwMCwgNDAwMCk7XG5AQCAtMjExLDYgKzI1OCw4IEBAIHN0YXRpYyBpbnQgc3RfbmNpX2kyY19wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxuIFx0XHRyZXR1cm4gLUVOT01FTTtcbiBcbiBcdHBoeS1cdTAwM2VpMmNfZGV2ID0gY2xpZW50O1xuK1x0cGh5LVx1MDAzZXJhd19uY2kgPSAodWludHB0cl90KWRldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpID09XG4rXHRcdFx0U1RfTkNJX0kyQ19QUk9UT19SQVdfTkNJO1xuIFxuIFx0aTJjX3NldF9jbGllbnRkYXRhKGNsaWVudCwgcGh5KTtcbiBcbkBAIC0yMjUsMTkgKzI3NCwzMSBAQCBzdGF0aWMgaW50IHN0X25jaV9pMmNfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcbiBcdFx0cmV0dXJuIC1FTk9ERVY7XG4gXHR9XG4gXG4rXHRyID0gZGV2bV9yZWd1bGF0b3JfZ2V0X2VuYWJsZV9vcHRpb25hbChkZXYsIFwidmRkLWlvXCIpO1xuK1x0aWYgKHIgXHUwMDI2XHUwMDI2IHIgIT0gLUVOT0RFVilcbitcdFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCByLCBcImZhaWxlZCB0byBlbmFibGUgdmRkLWlvXFxuXCIpO1xuK1xuK1x0ciA9IFBUUl9FUlJfT1JfWkVSTyhkZXZtX2Nsa19nZXRfb3B0aW9uYWxfZW5hYmxlZChkZXYsIE5VTEwpKTtcbitcdGlmIChyKVxuK1x0XHRyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIHIsIFwiZmFpbGVkIHRvIGVuYWJsZSBjbG9ja1xcblwiKTtcbitcbiBcdHBoeS1cdTAwM2VzZV9zdGF0dXMuaXNfZXNlX3ByZXNlbnQgPVxuIFx0XHRcdFx0ZGV2aWNlX3Byb3BlcnR5X3JlYWRfYm9vbChkZXYsIFwiZXNlLXByZXNlbnRcIik7XG4gXHRwaHktXHUwMDNlc2Vfc3RhdHVzLmlzX3VpY2NfcHJlc2VudCA9XG4gXHRcdFx0XHRkZXZpY2VfcHJvcGVydHlfcmVhZF9ib29sKGRldiwgXCJ1aWNjLXByZXNlbnRcIik7XG4gXG4gXHRyID0gbmRsY19wcm9iZShwaHksIFx1MDAyNmkyY19waHlfb3BzLCBcdTAwMjZjbGllbnQtXHUwMDNlZGV2LFxuLVx0XHRcdFNUX05DSV9GUkFNRV9IRUFEUk9PTSwgU1RfTkNJX0ZSQU1FX1RBSUxST09NLFxuK1x0XHRcdHBoeS1cdTAwM2VyYXdfbmNpID8gU1RfTkNJX1JBV19GUkFNRV9IRUFEUk9PTSA6XG4rXHRcdFx0XHQgICAgICAgU1RfTkNJX0ZSQU1FX0hFQURST09NLFxuK1x0XHRcdFNUX05DSV9GUkFNRV9UQUlMUk9PTSxcbiBcdFx0XHRcdTAwMjZwaHktXHUwMDNlbmRsYywgXHUwMDI2cGh5LVx1MDAzZXNlX3N0YXR1cyk7XG4gXHRpZiAociBcdTAwM2MgMCkge1xuIFx0XHRuZmNfZXJyKFx1MDAyNmNsaWVudC1cdTAwM2VkZXYsIFwiVW5hYmxlIHRvIHJlZ2lzdGVyIG5kbGMgbGF5ZXJcXG5cIik7XG4gXHRcdHJldHVybiByO1xuIFx0fVxuIFxuK1x0cGh5LVx1MDAzZW5kbGMtXHUwMDNlcmF3X25jaSA9IHBoeS1cdTAwM2VyYXdfbmNpO1xuK1xuIFx0cGh5LVx1MDAzZWlycV9hY3RpdmUgPSB0cnVlO1xuIFx0ciA9IGRldm1fcmVxdWVzdF90aHJlYWRlZF9pcnEoXHUwMDI2Y2xpZW50LVx1MDAzZWRldiwgY2xpZW50LVx1MDAzZWlycSwgTlVMTCxcbiBcdFx0XHRcdHN0X25jaV9pcnFfdGhyZWFkX2ZuLFxuQEAgLTI1NywyMyArMzE4LDI1IEBAIHN0YXRpYyB2b2lkIHN0X25jaV9pMmNfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXG4gfVxuIFxuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaTJjX2RldmljZV9pZCBzdF9uY2lfaTJjX2lkX3RhYmxlW10gPSB7XG4tXHR7IC5uYW1lID0gU1RfTkNJX0RSSVZFUl9OQU1FIH0sXG4tXHR7IH1cbitcdHsgU1RfTkNJX0RSSVZFUl9OQU1FIH0sXG4rXHR7fVxuIH07XG4gTU9EVUxFX0RFVklDRV9UQUJMRShpMmMsIHN0X25jaV9pMmNfaWRfdGFibGUpO1xuIFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgYWNwaV9kZXZpY2VfaWQgc3RfbmNpX2kyY19hY3BpX21hdGNoW10gPSB7XG4tXHR7IC5pZCA9IFwiU01PMjEwMVwiIH0sXG4tXHR7IC5pZCA9IFwiU01PMjEwMlwiIH0sXG4tXHR7IH1cbitzdGF0aWMgY29uc3Qgc3RydWN0IGFjcGlfZGV2aWNlX2lkIHN0X25jaV9pMmNfYWNwaV9tYXRjaFtdIF9fbWF5YmVfdW51c2VkID0ge1xuK1x0e1wiU01PMjEwMVwifSxcbitcdHtcIlNNTzIxMDJcIn0sXG4rXHR7fVxuIH07XG4gTU9EVUxFX0RFVklDRV9UQUJMRShhY3BpLCBzdF9uY2lfaTJjX2FjcGlfbWF0Y2gpO1xuIFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIG9mX3N0X25jaV9pMmNfbWF0Y2hbXSA9IHtcbi1cdHsgLmNvbXBhdGlibGUgPSBcInN0LHN0MjFuZmNiLWkyY1wiIH0sXG4tXHR7IC5jb21wYXRpYmxlID0gXCJzdCxzdDIxbmZjYl9pMmNcIiB9LFxuLVx0eyAuY29tcGF0aWJsZSA9IFwic3Qsc3QyMW5mY2MtaTJjXCIgfSxcbi1cdHsgfVxuK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIG9mX3N0X25jaV9pMmNfbWF0Y2hbXSBfX21heWJlX3VudXNlZCA9IHtcbitcdHsgLmNvbXBhdGlibGUgPSBcInN0LHN0MjFuZmNiLWkyY1wiLCB9LFxuK1x0eyAuY29tcGF0aWJsZSA9IFwic3Qsc3QyMW5mY2JfaTJjXCIsIH0sXG4rXHR7IC5jb21wYXRpYmxlID0gXCJzdCxzdDIxbmZjYy1pMmNcIiwgfSxcbitcdHsgLmNvbXBhdGlibGUgPSBcInN0LHN0MjFuZmNkXCIsXG4rXHQgIC5kYXRhID0gKHZvaWQgKilTVF9OQ0lfSTJDX1BST1RPX1JBV19OQ0kgfSxcbitcdHt9XG4gfTtcbiBNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBvZl9zdF9uY2lfaTJjX21hdGNoKTtcbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25mYy9zdC1uY2kvbmRsYy5jIGIvZHJpdmVycy9uZmMvc3QtbmNpL25kbGMuY1xuaW5kZXggYmU0ODA4ODU5Y2ZhOS4uYjMxOTI0NjBjOTZlMyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmNcbisrKyBiL2RyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmNcbkBAIC02Miw4ICs2Miw5IEBAIHZvaWQgbmRsY19jbG9zZShzdHJ1Y3QgbGx0X25kbGMgKm5kbGMpXG4gXHQvKiB0b2dnbGUgcmVzZXQgcGluICovXG4gXHRuZGxjLVx1MDAzZW9wcy1cdTAwM2VlbmFibGUobmRsYy1cdTAwM2VwaHlfaWQpO1xuIFxuLVx0bmNpX3Byb3BfY21kKG5kbGMtXHUwMDNlbmRldiwgU1RfTkNJX0NPUkVfUFJPUCxcbi1cdFx0ICAgICBzaXplb2Yoc3RydWN0IG5jaV9tb2RlX3NldF9jbWQpLCAoX191OCAqKVx1MDAyNmNtZCk7XG4rXHRpZiAoIW5kbGMtXHUwMDNlcmF3X25jaSlcbitcdFx0bmNpX3Byb3BfY21kKG5kbGMtXHUwMDNlbmRldiwgU1RfTkNJX0NPUkVfUFJPUCxcbitcdFx0XHQgICAgIHNpemVvZihzdHJ1Y3QgbmNpX21vZGVfc2V0X2NtZCksIChfX3U4ICopXHUwMDI2Y21kKTtcbiBcbiBcdG5kbGMtXHUwMDNlcG93ZXJlZCA9IDA7XG4gXHRuZGxjLVx1MDAzZW9wcy1cdTAwM2VkaXNhYmxlKG5kbGMtXHUwMDNlcGh5X2lkKTtcbkBAIC03MiwxMSArNzMsMTMgQEAgRVhQT1JUX1NZTUJPTChuZGxjX2Nsb3NlKTtcbiBcbiBpbnQgbmRsY19zZW5kKHN0cnVjdCBsbHRfbmRsYyAqbmRsYywgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiB7XG4tXHQvKiBhZGQgbmRsYyBoZWFkZXIgKi9cbi1cdHU4IHBjYiA9IFBDQl9UWVBFX0RBVEFGUkFNRSB8IFBDQl9EQVRBRlJBTUVfUkVUUkFOU01JVF9OTyB8XG4tXHRcdFBDQl9GUkFNRV9DUkNfSU5GT19OT1RQUkVTRU5UO1xuK1x0aWYgKCFuZGxjLVx1MDAzZXJhd19uY2kpIHtcbitcdFx0LyogYWRkIG5kbGMgaGVhZGVyICovXG4rXHRcdHU4IHBjYiA9IFBDQl9UWVBFX0RBVEFGUkFNRSB8IFBDQl9EQVRBRlJBTUVfUkVUUkFOU01JVF9OTyB8XG4rXHRcdFx0UENCX0ZSQU1FX0NSQ19JTkZPX05PVFBSRVNFTlQ7XG4gXG4tXHQqKHU4ICopc2tiX3B1c2goc2tiLCAxKSA9IHBjYjtcbitcdFx0Kih1OCAqKXNrYl9wdXNoKHNrYiwgMSkgPSBwY2I7XG4rXHR9XG4gXHRza2JfcXVldWVfdGFpbChcdTAwMjZuZGxjLVx1MDAzZXNlbmRfcSwgc2tiKTtcbiBcbiBcdHNjaGVkdWxlX3dvcmsoXHUwMDI2bmRsYy1cdTAwM2VzbV93b3JrKTtcbkBAIC0xMDMsNiArMTA2LDEwIEBAIHN0YXRpYyB2b2lkIGxsdF9uZGxjX3NlbmRfcXVldWUoc3RydWN0IGxsdF9uZGxjICpuZGxjKVxuIFx0XHRcdG5kbGMtXHUwMDNlaGFyZF9mYXVsdCA9IHI7XG4gXHRcdFx0YnJlYWs7XG4gXHRcdH1cbitcdFx0aWYgKG5kbGMtXHUwMDNlcmF3X25jaSkge1xuK1x0XHRcdGtmcmVlX3NrYihza2IpO1xuK1x0XHRcdGNvbnRpbnVlO1xuK1x0XHR9XG4gXHRcdHRpbWVfc2VudCA9IGppZmZpZXM7XG4gXHRcdCoodW5zaWduZWQgbG9uZyAqKXNrYi1cdTAwM2VjYiA9IHRpbWVfc2VudDtcbiBcbkBAIC0xNTQsNiArMTYxLDEwIEBAIHN0YXRpYyB2b2lkIGxsdF9uZGxjX3Jjdl9xdWV1ZShzdHJ1Y3QgbGx0X25kbGMgKm5kbGMpXG4gXHRcdHByX2RlYnVnKFwicmN2UWxlbj0lZFxcblwiLCBuZGxjLVx1MDAzZXJjdl9xLnFsZW4pO1xuIFxuIFx0d2hpbGUgKChza2IgPSBza2JfZGVxdWV1ZShcdTAwMjZuZGxjLVx1MDAzZXJjdl9xKSkgIT0gTlVMTCkge1xuK1x0XHRpZiAobmRsYy1cdTAwM2VyYXdfbmNpKSB7XG4rXHRcdFx0bmNpX3JlY3ZfZnJhbWUobmRsYy1cdTAwM2VuZGV2LCBza2IpO1xuK1x0XHRcdGNvbnRpbnVlO1xuK1x0XHR9XG4gXHRcdHBjYiA9IHNrYi1cdTAwM2VkYXRhWzBdO1xuIFx0XHRza2JfcHVsbChza2IsIDEpO1xuIFx0XHRpZiAoKHBjYiBcdTAwMjYgUENCX1RZUEVfTUFTSykgPT0gUENCX1RZUEVfU1VQRVJWSVNPUikge1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmggYi9kcml2ZXJzL25mYy9zdC1uY2kvbmRsYy5oXG5pbmRleCBjMjRjZTliMGRmNTJlLi41YzFmOGJhZjA0NzE4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZmMvc3QtbmNpL25kbGMuaFxuKysrIGIvZHJpdmVycy9uZmMvc3QtbmNpL25kbGMuaFxuQEAgLTM5LDYgKzM5LDggQEAgc3RydWN0IGxsdF9uZGxjIHtcbiBcdCAqL1xuIFx0aW50IGhhcmRfZmF1bHQ7XG4gXHRpbnQgcG93ZXJlZDtcbitcdC8qIFNUMjFORkNEOiByYXcgTkNJIG9uIHRoZSB3aXJlLCBubyBORExDIFBDQiAvIEFDSyB0aW1lcnMgKi9cbitcdGJvb2wgcmF3X25jaTtcbiB9O1xuIFxuIGludCBuZGxjX29wZW4oc3RydWN0IGxsdF9uZGxjICpuZGxjKTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25mYy9zdC1uY2kvc2UuYyBiL2RyaXZlcnMvbmZjL3N0LW5jaS9zZS5jXG5pbmRleCA2MDdlYzc2OGViN2I0Li40NGNjMTAyYmNkZTIxIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZmMvc3QtbmNpL3NlLmNcbisrKyBiL2RyaXZlcnMvbmZjL3N0LW5jaS9zZS5jXG5AQCAtNjIxLDYgKzYyMSw5IEBAIGludCBzdF9uY2lfZGlzY292ZXJfc2Uoc3RydWN0IG5jaV9kZXYgKm5kZXYpXG4gXHRpbnQgc2VfY291bnQgPSAwO1xuIFx0c3RydWN0IHN0X25jaV9pbmZvICppbmZvID0gbmNpX2dldF9kcnZkYXRhKG5kZXYpO1xuIFxuK1x0aWYgKGluZm8tXHUwMDNlbmRsYy1cdTAwM2VyYXdfbmNpKVxuK1x0XHRyZXR1cm4gMDtcbitcbiBcdHIgPSBzdF9uY2lfaGNpX25ldHdvcmtfaW5pdChuZGV2KTtcbiBcdGlmIChyICE9IDApXG4gXHRcdHJldHVybiByO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjBUMjE6MDQ6MDMuMjcxNDg2Mjk0WiIsIlNlcSI6MzMsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM5MzA5MTMxMzM1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKktNU0FOIEFuYWx5c2lzIG9mIFNUMjFORkNEIFJhdyBOQ0kgU3VwcG9ydCoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gVGhpcyBwYXRjaCBpcyBhZGRpbmcgc3VwcG9ydCBmb3IgYSBuZXcgTkZDIGNoaXAsIHRoZSBTVDIxTkZDRCwgdG8gdGhlIGBzdC1uY2lgIGRyaXZlci4gVGhlIGtleSBkaWZmZXJlbmNlIGhlcmUgaXMgdGhlIHVzZSBvZiBcInJhdyBOQ0lcIiBvdmVyIEkyQyBpbnN0ZWFkIG9mIHRoZSBtb3JlIGNvbXBsZXggTkRMQyBwcm90b2NvbC4gVGhlIGRyaXZlcidzIGBpMmMuY2AgZmlsZSBoYXMgdGhlIG5ldyBsb2dpYyBmb3IgaGFuZGxpbmcgdGhpcyByYXcgTkNJIG1vZGUuXG5cblRoZSBjcml0aWNhbCBwYXJ0IGlzIHdpdGhpbiB0aGUgYHN0X25jaV9pMmNfcmVhZGAgZnVuY3Rpb24uIEl0IHJlYWRzIGRhdGEgZnJvbSB0aGUgSTJDIGRldmljZSBpbnRvIGEgbG9jYWwgYnVmZmVyIChgYnVmYCkuIEl0IGFwcGVhcnMgdGhlIGNvZGUgcmVhZHMgdGhlIE5DSSBoZWFkZXIgZmlyc3QsIHRoZW4gZGV0ZXJtaW5lcyB0aGUgcGF5bG9hZCBsZW5ndGggZnJvbSB0aGUgaGVhZGVyLCBhbmQgdGhlbiByZWFkcyB0aGUgYWN0dWFsIHBheWxvYWQuIEEgY291cGxlIG9mIGltcG9ydGFudCBjaGVja3MgYXJlIGluIHBsYWNlOiBpZiB0aGUgZmlyc3QgYGkyY19tYXN0ZXJfcmVjdmAgZmFpbHMsIGl0IHRyaWVzIGFnYWluLiBUaGVuLCBpdCB2YWxpZGF0ZXMgdGhlIHBheWxvYWQgbGVuZ3RoIChgbGVuYCkgdG8gbWFrZSBzdXJlIGl0J3Mgd2l0aGluIHRoZSBwZXJtaXNzaWJsZSByYW5nZSAoYFNUX05DSV9JMkNfTUFYX1NJWkVgKS4gVGhpcyBsb29rcyBzYWZlLiBUaGUgYWxsb2NhdGlvbiBhbmQgY29weWluZyBpbnRvIHRoZSBgc2tiYCBhcHBlYXIgdG8gYmUgZG9uZSBjb3JyZWN0bHksIGVuc3VyaW5nIHRoZSBgc2tiYCBvbmx5IGNvbnRhaW5zIGluaXRpYWxpemVkIGRhdGEuXG5cbkknbSBjaGVja2luZyBpZiB0aGUgZHJpdmVyIGNvcnJlY3RseSBoYW5kbGVzIGBpMmNfbWFzdGVyX3JlY3ZgIHJldHVybmluZyBhIHBvc2l0aXZlIHZhbHVlIGxlc3MgdGhhbiB0aGUgZXhwZWN0ZWQgbnVtYmVyIG9mIGJ5dGVzLiBBZnRlciByZXZpZXdpbmcgYGkyY19tYXN0ZXJfcmVjdmAncyBkb2N1bWVudGF0aW9uLCBpdCByZXR1cm5zIHRoZSBudW1iZXIgb2YgYnl0ZXMgcmVhZC4gSWYgdGhpcyBkb2Vzbid0IG1hdGNoIHRoZSBleHBlY3RlZCBzaXplLCB0aGUgY29kZSByZXR1cm5zIGFuIGVycm9yLCB3aGljaCBpcyBjb3JyZWN0LlxuXG5UaGVyZSBpcyBhbHNvIGEgY29uY2VybiBhYm91dCB1bmluaXRpYWxpemVkIG1lbW9yeSBpbiB0aGUgYHNrYmAuIFRoZSBgYWxsb2Nfc2tiYCBhbGxvY2F0ZXMgdGhlIG1lbW9yeSwgYnV0IHRoZSBgc2tiX3B1dGAgYW5kIGBtZW1jcHlgIGFyZSB0aGUgcGxhY2VzIHdoZXJlIGluaXRpYWxpemVkIGRhdGEgaXMgcGxhY2VkIGludG8gdGhlIGBza2JgLiBUaGUgbG9naWMgYXBwZWFycyBzYWZlIGJlY2F1c2UgYG1lbWNweWAgY29waWVzIGV4YWN0bHkgdGhlIGRhdGEgcmVhZCBmcm9tIEkyQywgZW5zdXJpbmcgYWxsIGRhdGEgaW4gdGhlIGBza2JgIGlzIGluaXRpYWxpemVkLlxuXG5UaGUgTkRMQyBwcm90b2NvbCBpcyBieXBhc3NlZCBpbiBgcmF3X25jaWAgbW9kZS4gVGh1cywgaW4gdGhlIGBuZGxjX3NlbmRgIGZ1bmN0aW9uLCB0aGUgUENCIGJ5dGUgaXMgbm90IHB1c2hlZCBvbnRvIHRoZSBza2IuIFRoZSBgbGx0X25kbGNfcmN2X3F1ZXVlYCBmdW5jdGlvbiBhbHNvIHBhc3NlcyB0aGUgc2tiIGRpcmVjdGx5IHRvIHRoZSBOQ0kgZnJhbWUuIEkgaGF2ZSB0byBtYWtlIHN1cmUgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgZ29lcyBpbnRvIGBuY2lfcmVjdl9mcmFtZWAuIFRoZSByZXZpZXcgY29uZmlybXMgdGhlIHNrYiBoYXMgdGhlIHJpZ2h0IGFtb3VudCBvZiBieXRlcywgdGhlIGRhdGEgaXMgcHVzaGVkLCBhbmQgbm90aGluZyBpcyBtaXNzZWQuIFRoZXJlIGRvZXNuJ3QgYXBwZWFyIHRvIGJlIGFueSBwYWRkaW5nIG9yIGFueSBvdGhlciB1bmluaXRpYWxpemVkIG1lbW9yeSBsZWFrLlxuXG5UaGUgcGF0Y2ggaW5jbHVkZXMgdGhlIGNvZGUgaW4gYHN0X25jaV9pMmNfcHJvYmVgIHRoYXQgY2hlY2tzIGEgZmxhZzogYHBoeS1cdTAwM2VyYXdfbmNpYC4gSSB2ZXJpZmllZCB0aGF0IGl0J3MganVzdCBhIGJvb2xlYW4gZmxhZy4gQWxzbywgYHN0X25jaV9pbml0YCBhdm9pZHMgc2VuZGluZyBhIGNvbW1hbmQgZm9yIHRoZSBTVDIxTkZDRCBpZiBpbiB0aGUgYHJhd19uY2lgIG1vZGUuXG5cbkxldCdzIGFsc28gbG9vayBhdCBhbnkgS01TQU4tc3BlY2lmaWMgaXNzdWUuIEkgYW0gc2VlaW5nIHRoZSBkcml2ZXIgcmVhZGluZyBkYXRhIGZyb20gdGhlIEkyQyBkZXZpY2UgaW50byBhIGxvY2FsIGJ1ZmZlciBhbmQgY29weWluZyB0aGUgZGF0YSB0byBhbiBza2IuIEtNU0FOIGlzIGdyZWF0IGF0IGRldGVjdGluZyB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSwgYnV0IGlmIEkyQyBpcyBtb2NrZWQsIGl0IG1pZ2h0IHNob3cgdW5pbml0aWFsaXplZCBtZW1vcnkgaW4gY2VydGFpbiBtb2Nrcy4gVGhlIGtleSBpcyB0byBtYWtlIHN1cmUgYGkyY19tYXN0ZXJfcmVjdmAgYWx3YXlzIHJldHVybnMgdGhlIHJpZ2h0IGFtb3VudCBvZiBieXRlcy4gU2luY2UgdGhlIGRyaXZlciBjb2RlIGV4cGxpY2l0bHkgY2hlY2tzIHRoZSByZXR1cm4gdmFsdWUgdG8gZW5zdXJlIHRoZSBidWZmZXIgaXMgZnVsbHkgaW5pdGlhbGl6ZWQsIGl0J3Mgbm90IGEgY29uY2Vybi4gVGhlIGNvZGUgY2hlY2tzIHRoYXQgdGhlIGV4cGVjdGVkIG51bWJlciBvZiBieXRlcyBpcyByZWFkLlxuXG5GaW5hbGx5LCBJIGhhdmUgdG8gZW5zdXJlIHRoZSBwYXRjaCBkb2VzIG5vdCBsZWFrIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGludG8gdGhlIHNrYi4gVGhlcmUgYXJlIG5vIHN0cnVjdCBwYWRkaW5nIGlzc3Vlcy4gVGhlIHJlYWRzIGluIHRoZSBkcml2ZXIgd2lsbCBlbnN1cmUgYWxsIGRhdGEgaXMgaW4gdGhlIGxvY2FsIGJ1ZmZlci4gQW5kIGlmIGV2ZXJ5dGhpbmcgaXMgcmVhZCBmcm9tIEkyQywgYG1lbWNweWAgZG9lcyBhIGNvcHkgaW50byB0aGUgYHNrYmAsIGFuZCBubyBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyBhcmUgcGFydGlhbGx5IGluaXRpYWxpemVkLiBJIGRvbid0IHNlZSBhbnkgS01TQU4tc3BlY2lmaWMgcmlza3MgaGVyZS5cblxuVGhlcmVmb3JlLCBhZnRlciBhIGNhcmVmdWwgcmV2aWV3LCBJIGJlbGlldmUgdGhlIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2UgaXMgbG93LiBBbGwgYnVmZmVycyBhcmUgaW5pdGlhbGl6ZWQsIGFuZCB0aGUgY29kZSBleHBsaWNpdGx5IGNoZWNrcyB0aGUgcmV0dXJuIHZhbHVlcyBvZiBJMkMgZnVuY3Rpb25zIHRvIGVuc3VyZSBkYXRhIGludGVncml0eS4gVGhlcmVmb3JlLCBOZWVkc0tNU0FOIHNob3VsZCBiZSBmYWxzZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NjkxNSwiT3V0cHV0VG9rZW5zIjoyMDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNTU2LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjBUMjE6MDQ6NDIuNTgwNjIwNjY5WiIsIlNlcSI6MzQsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY5NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIHN1cHBvcnQgZm9yIGEgbmV3IE5GQyBjaGlwIChTVDIxTkZDRCkgd2hpY2ggdXNlcyByYXcgTkNJIGZyYW1lcyBvdmVyIEkyQyBpbnN0ZWFkIG9mIHRoZSBORExDIHByb3RvY29sLiBUaGUgY2hhbmdlcyBwcmltYXJpbHkgaW52b2x2ZSByZWFkaW5nIGRhdGEgZnJvbSB0aGUgSTJDIGJ1cyBpbnRvIGEgbG9jYWwgc3RhY2sgYnVmZmVyLCBhbGxvY2F0aW5nIGFuIHNrX2J1ZmYsIGFuZCBjb3B5aW5nIHRoZSByZWNlaXZlZCBkYXRhIGludG8gaXQuIFRoZSBjb2RlIGV4cGxpY2l0bHkgY2hlY2tzIHRoZSByZXR1cm4gdmFsdWVzIG9mIGBpMmNfbWFzdGVyX3JlY3ZgIHRvIGVuc3VyZSB0aGF0IHRoZSBidWZmZXIgaXMgZnVsbHkgaW5pdGlhbGl6ZWQgYmVmb3JlIGFueSBkYXRhIGlzIHJlYWQgZnJvbSBpdCBvciBjb3BpZWQgdG8gdGhlIHNrX2J1ZmYuIFRoZXJlIGFyZSBubyBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aXRoIHBhZGRpbmcgYmVpbmcgc2VudCB0byB1c2VyIHNwYWNlLCBub3IgYXJlIHRoZXJlIGFueSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcyB1c2VkIGluIGNvbnRyb2wgZmxvdy4gQW55IHBvdGVudGlhbCBtZW1vcnkgY29ycnVwdGlvbiwgb3V0LW9mLWJvdW5kcyBhY2Nlc3Nlcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyBpbiB0aGlzIGNvZGUgd291bGQgYmUgZWZmZWN0aXZlbHkgY2F1Z2h0IGJ5IEtBU0FOLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QganVzdGlmaWVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGludHJvZHVjZXMgc3VwcG9ydCBmb3IgYSBuZXcgTkZDIGNoaXAgKFNUMjFORkNEKSB3aGljaCB1c2VzIHJhdyBOQ0kgZnJhbWVzIG92ZXIgSTJDIGluc3RlYWQgb2YgdGhlIE5ETEMgcHJvdG9jb2wuIFRoZSBjaGFuZ2VzIHByaW1hcmlseSBpbnZvbHZlIHJlYWRpbmcgZGF0YSBmcm9tIHRoZSBJMkMgYnVzIGludG8gYSBsb2NhbCBzdGFjayBidWZmZXIsIGFsbG9jYXRpbmcgYW4gc2tfYnVmZiwgYW5kIGNvcHlpbmcgdGhlIHJlY2VpdmVkIGRhdGEgaW50byBpdC4gVGhlIGNvZGUgZXhwbGljaXRseSBjaGVja3MgdGhlIHJldHVybiB2YWx1ZXMgb2YgYGkyY19tYXN0ZXJfcmVjdmAgdG8gZW5zdXJlIHRoYXQgdGhlIGJ1ZmZlciBpcyBmdWxseSBpbml0aWFsaXplZCBiZWZvcmUgYW55IGRhdGEgaXMgcmVhZCBmcm9tIGl0IG9yIGNvcGllZCB0byB0aGUgc2tfYnVmZi4gVGhlcmUgYXJlIG5vIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdpdGggcGFkZGluZyBiZWluZyBzZW50IHRvIHVzZXIgc3BhY2UsIG5vciBhcmUgdGhlcmUgYW55IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzIHVzZWQgaW4gY29udHJvbCBmbG93LiBBbnkgcG90ZW50aWFsIG1lbW9yeSBjb3JydXB0aW9uLCBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzIGluIHRoaXMgY29kZSB3b3VsZCBiZSBlZmZlY3RpdmVseSBjYXVnaHQgYnkgS0FTQU4uIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBqdXN0aWZpZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow9tpjj[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-20 21:00:06 +0000 UTC FinishedAt: 2026-08-20 21:04:44 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "9f69d05b5a85c417c73fa2d5c7a2d507ac81cf4b", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NFC", "NFC_NCI", "I2C", "NFC_ST_NCI", "NFC_ST_NCI_I2C" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "9f69d05b5a85c417c73fa2d5c7a2d507ac81cf4b", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NFC", "NFC_NCI", "I2C", "NFC_ST_NCI", "NFC_ST_NCI_I2C" ], "series_id": "4170b9c8-1819-4e36-84a7-66096e59b400" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "ndlc_probe", "ndlc_recv", "ndlc_send", "ndlc_close", "st_nci_discover_se" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIwIDIxOjAxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05GQyYjMzQ7LAogICAgJiMzNDtORkNfTkNJJiMzNDssCiAgICAmIzM0O0kyQyYjMzQ7LAogICAgJiMzNDtORkNfU1RfTkNJJiMzNDssCiAgICAmIzM0O05GQ19TVF9OQ0lfSTJDJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bmRsY19wcm9iZSYjMzQ7LAogICAgJiMzNDtuZGxjX3JlY3YmIzM0OywKICAgICYjMzQ7bmRsY19zZW5kJiMzNDssCiAgICAmIzM0O25kbGNfY2xvc2UmIzM0OywKICAgICYjMzQ7c3RfbmNpX2Rpc2NvdmVyX3NlJiMzNDsKICBdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBzdXBwb3J0IGZvciBhIG5ldyBORkMgY2hpcCAoU1QyMU5GQ0QpIHdoaWNoIHVzZXMgcmF3IE5DSSBmcmFtZXMgb3ZlciBJMkMgaW5zdGVhZCBvZiB0aGUgTkRMQyBwcm90b2NvbC4gVGhlIGNoYW5nZXMgcHJpbWFyaWx5IGludm9sdmUgcmVhZGluZyBkYXRhIGZyb20gdGhlIEkyQyBidXMgaW50byBhIGxvY2FsIHN0YWNrIGJ1ZmZlciwgYWxsb2NhdGluZyBhbiBza19idWZmLCBhbmQgY29weWluZyB0aGUgcmVjZWl2ZWQgZGF0YSBpbnRvIGl0LiBUaGUgY29kZSBleHBsaWNpdGx5IGNoZWNrcyB0aGUgcmV0dXJuIHZhbHVlcyBvZiBgaTJjX21hc3Rlcl9yZWN2YCB0byBlbnN1cmUgdGhhdCB0aGUgYnVmZmVyIGlzIGZ1bGx5IGluaXRpYWxpemVkIGJlZm9yZSBhbnkgZGF0YSBpcyByZWFkIGZyb20gaXQgb3IgY29waWVkIHRvIHRoZSBza19idWZmLiBUaGVyZSBhcmUgbm8gY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2l0aCBwYWRkaW5nIGJlaW5nIHNlbnQgdG8gdXNlciBzcGFjZSwgbm9yIGFyZSB0aGVyZSBhbnkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMgdXNlZCBpbiBjb250cm9sIGZsb3cuIEFueSBwb3RlbnRpYWwgbWVtb3J5IGNvcnJ1cHRpb24sIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgaW4gdGhpcyBjb2RlIHdvdWxkIGJlIGVmZmVjdGl2ZWx5IGNhdWdodCBieSBLQVNBTi4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IGp1c3RpZmllZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciB0aGUgU1QyMU5GQ0QgTkZDIGNvbnRyb2xsZXIsIHdoaWNoIHVzZXMgcmF3IE5DSSBvdmVyIEkyQyBpbnN0ZWFkIG9mIHRoZSBORExDIHByb3RvY29sLiBJdCBpbnRyb2R1Y2VzIGEgbmV3IGByYXdfbmNpYCBmbGFnIHRoYXQgbW9kaWZpZXMgdGhlIGJlaGF2aW9yIG9mIHJlYWRpbmcgZnJvbSB0aGUgSTJDIGJ1cywgc2VuZGluZy9yZWNlaXZpbmcgTkNJIGZyYW1lcywgYW5kIGluaXRpYWxpemluZyB0aGUgZGV2aWNlLiBUaGUgSTJDIGRyaXZlciBjYW4gYmUgaW5zdGFudGlhdGVkIGFuZCBmdXp6ZWQgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMCAyMTowMTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDU5ZmIwODI0YmVjNGQxMDI2M2U0ODViNWFjYjc3NTc5NDNiMmIyYmNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEF1ZyAyMCAyMTowMTo1MyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L25mYy9zdCxzdC1uY2kueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbmZjL3N0LHN0LW5jaS55YW1sXG5pbmRleCAxZGNiZGRiYzVhNzRlLi5jODU5Nzk3ZjQyMmJjIDEwMDY0NFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9uZmMvc3Qsc3QtbmNpLnlhbWxcbiYjNDM7JiM0MzsmIzQzOyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbmZjL3N0LHN0LW5jaS55YW1sXG5AQCAtMTUsNiAmIzQzOzE1LDcgQEAgcHJvcGVydGllczpcbiAgICAgICAtIHN0LHN0MjFuZmNiLWkyY1xuICAgICAgIC0gc3Qsc3QyMW5mY2Itc3BpXG4gICAgICAgLSBzdCxzdDIxbmZjYy1pMmNcbiYjNDM7ICAgICAgLSBzdCxzdDIxbmZjZFxuIFxuICAgcmVzZXQtZ3Bpb3M6XG4gICAgIGRlc2NyaXB0aW9uOiBPdXRwdXQgR1BJTyBwaW4gdXNlZCBmb3IgcmVzZXR0aW5nIHRoZSBjb250cm9sbGVyXG5AQCAtMzYsNiAmIzQzOzM3LDE1IEBAIHByb3BlcnRpZXM6XG4gICAgICAgU3BlY2lmaWVzIHRoYXQgdGhlIHVpY2Mgc3dwIHNpZ25hbCBjYW4gYmUgcGh5c2ljYWxseSBjb25uZWN0ZWQgdG8gdGhlXG4gICAgICAgY29udHJvbGxlclxuIFxuJiM0MzsgIGNsb2NrczpcbiYjNDM7ICAgIG1heEl0ZW1zOiAxXG4mIzQzOyAgICBkZXNjcmlwdGlvbjpcbiYjNDM7ICAgICAgRXh0ZXJuYWwgcmVmZXJlbmNlIGNsb2NrIGNvbm5lY3RlZCB0byBTWVNfQ0xLLlxuJiM0MztcbiYjNDM7ICB2ZGQtaW8tc3VwcGx5OlxuJiM0MzsgICAgZGVzY3JpcHRpb246XG4mIzQzOyAgICAgIERpZ2l0YWwgSS9PIHN1cHBseSAoVlBTX0lPKS5cbiYjNDM7XG4gcmVxdWlyZWQ6XG4gICAtIGNvbXBhdGlibGVcbiAgIC0gaW50ZXJydXB0c1xuQEAgLTQ5LDYgJiM0Mzs1OSw3IEBAIGlmOlxuICAgICAgICAgZW51bTpcbiAgICAgICAgICAgLSBzdCxzdDIxbmZjYi1pMmNcbiAgICAgICAgICAgLSBzdCxzdDIxbmZjYy1pMmNcbiYjNDM7ICAgICAgICAgIC0gc3Qsc3QyMW5mY2RcbiB0aGVuOlxuICAgcHJvcGVydGllczpcbiAgICAgc3BpLW1heC1mcmVxdWVuY3k6IGZhbHNlXG5AQCAtODEsNiAmIzQzOzkyLDI2IEBAIGV4YW1wbGVzOlxuICAgICAgICAgfTtcbiAgICAgfTtcbiBcbiYjNDM7ICAtIHxcbiYjNDM7ICAgICNpbmNsdWRlIFx1MDAzY2R0LWJpbmRpbmdzL2dwaW8vZ3Bpby5oXHUwMDNlXG4mIzQzOyAgICAjaW5jbHVkZSBcdTAwM2NkdC1iaW5kaW5ncy9pbnRlcnJ1cHQtY29udHJvbGxlci9pcnEuaFx1MDAzZVxuJiM0MztcbiYjNDM7ICAgIGkyYyB7XG4mIzQzOyAgICAgICAgI2FkZHJlc3MtY2VsbHMgPSBcdTAwM2MxXHUwMDNlO1xuJiM0MzsgICAgICAgICNzaXplLWNlbGxzID0gXHUwMDNjMFx1MDAzZTtcbiYjNDM7XG4mIzQzOyAgICAgICAgbmZjQDgge1xuJiM0MzsgICAgICAgICAgICBjb21wYXRpYmxlID0gXCYjMzQ7c3Qsc3QyMW5mY2RcJiMzNDs7XG4mIzQzOyAgICAgICAgICAgIHJlZyA9IFx1MDAzYzB4MDhcdTAwM2U7XG4mIzQzO1xuJiM0MzsgICAgICAgICAgICBpbnRlcnJ1cHRzLWV4dGVuZGVkID0gXHUwMDNjXHUwMDI2Z3BpbzUgMiBJUlFfVFlQRV9MRVZFTF9ISUdIXHUwMDNlO1xuJiM0MzsgICAgICAgICAgICByZXNldC1ncGlvcyA9IFx1MDAzY1x1MDAyNmdwaW81IDI5IEdQSU9fQUNUSVZFX0hJR0hcdTAwM2U7XG4mIzQzO1xuJiM0MzsgICAgICAgICAgICBjbG9ja3MgPSBcdTAwM2NcdTAwMjZjbGtcdTAwM2U7XG4mIzQzOyAgICAgICAgICAgIHZkZC1pby1zdXBwbHkgPSBcdTAwM2NcdTAwMjZ2ZGRfaW9cdTAwM2U7XG4mIzQzOyAgICAgICAgfTtcbiYjNDM7ICAgIH07XG4mIzQzO1xuICAgLSB8XG4gICAgICNpbmNsdWRlIFx1MDAzY2R0LWJpbmRpbmdzL2dwaW8vZ3Bpby5oXHUwMDNlXG4gICAgICNpbmNsdWRlIFx1MDAzY2R0LWJpbmRpbmdzL2ludGVycnVwdC1jb250cm9sbGVyL2lycS5oXHUwMDNlXG5kaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9ib290L2R0cy9xY29tL3FjbTY0OTAtZmFpcnBob25lLWZwNS5kdHMgYi9hcmNoL2FybTY0L2Jvb3QvZHRzL3Fjb20vcWNtNjQ5MC1mYWlycGhvbmUtZnA1LmR0c1xuaW5kZXggMDRjYjkyMzBkMjlmZC4uZWY2NjA3OWEwMjYzYyAxMDA2NDRcbi0tLSBhL2FyY2gvYXJtNjQvYm9vdC9kdHMvcWNvbS9xY202NDkwLWZhaXJwaG9uZS1mcDUuZHRzXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL2FybTY0L2Jvb3QvZHRzL3Fjb20vcWNtNjQ5MC1mYWlycGhvbmUtZnA1LmR0c1xuQEAgLTkwOCw3ICYjNDM7OTA4LDIzIEBAIHJlZHJpdmVyX3NzX2luOiBlbmRwb2ludCB7XG4gXHUwMDI2aTJjOSB7XG4gXHRzdGF0dXMgPSBcJiMzNDtva2F5XCYjMzQ7O1xuIFxuLVx0LyogU1QyMU5GQyBORkMgQCAyOCAqL1xuJiM0MztcdG5mY0A4IHtcbiYjNDM7XHRcdGNvbXBhdGlibGUgPSBcJiMzNDtzdCxzdDIxbmZjZFwmIzM0OztcbiYjNDM7XHRcdHJlZyA9IFx1MDAzYzB4MDhcdTAwM2U7XG4mIzQzO1xuJiM0MztcdFx0aW50ZXJydXB0cy1leHRlbmRlZCA9IFx1MDAzY1x1MDAyNnRsbW0gNDEgSVJRX1RZUEVfTEVWRUxfSElHSFx1MDAzZTtcbiYjNDM7XHRcdHJlc2V0LWdwaW9zID0gXHUwMDNjXHUwMDI2dGxtbSAzOCBHUElPX0FDVElWRV9ISUdIXHUwMDNlO1xuJiM0MztcbiYjNDM7XHRcdHBpbmN0cmwtMCA9IFx1MDAzY1x1MDAyNm5mY19kZWZhdWx0XHUwMDNlO1xuJiM0MztcdFx0cGluY3RybC1uYW1lcyA9IFwmIzM0O2RlZmF1bHRcJiMzNDs7XG4mIzQzO1xuJiM0MztcdFx0Y2xvY2tzID0gXHUwMDNjXHUwMDI2cnBtaGNjIFJQTUhfTE5fQkJfQ0xLMlx1MDAzZTtcbiYjNDM7XHRcdHZkZC1pby1zdXBwbHkgPSBcdTAwM2NcdTAwMjZ2cmVnX2wxOGJcdTAwM2U7XG4mIzQzO1xuJiM0MztcdFx0ZXNlLXByZXNlbnQ7XG4mIzQzO1x0XHR1aWNjLXByZXNlbnQ7XG4mIzQzO1x0fTtcbiYjNDM7XG4gXHQvKiBWTDUzTDMgVG9GIEAgMjkgKi9cbiB9O1xuIFxuQEAgLTE0MTAsNiAmIzQzOzE0MjYsMjIgQEAgaGFsbF9zZW5zb3JfZGVmYXVsdDogaGFsbC1zZW5zb3ItZGVmYXVsdC1zdGF0ZSB7XG4gXHRcdGRyaXZlLXN0cmVuZ3RoID0gXHUwMDNjMlx1MDAzZTtcbiBcdFx0Ymlhcy1wdWxsLXVwO1xuIFx0fTtcbiYjNDM7XG4mIzQzO1x0bmZjX2RlZmF1bHQ6IG5mYy1kZWZhdWx0LXN0YXRlIHtcbiYjNDM7XHRcdHJlc2V0LXBpbnMge1xuJiM0MztcdFx0XHRwaW5zID0gXCYjMzQ7Z3BpbzM4XCYjMzQ7O1xuJiM0MztcdFx0XHRmdW5jdGlvbiA9IFwmIzM0O2dwaW9cJiMzNDs7XG4mIzQzO1x0XHRcdGRyaXZlLXN0cmVuZ3RoID0gXHUwMDNjMlx1MDAzZTtcbiYjNDM7XHRcdFx0Ymlhcy1kaXNhYmxlO1xuJiM0MztcdFx0fTtcbiYjNDM7XG4mIzQzO1x0XHRpbnQtcGlucyB7XG4mIzQzO1x0XHRcdHBpbnMgPSBcJiMzNDtncGlvNDFcJiMzNDs7XG4mIzQzO1x0XHRcdGZ1bmN0aW9uID0gXCYjMzQ7Z3Bpb1wmIzM0OztcbiYjNDM7XHRcdFx0ZHJpdmUtc3RyZW5ndGggPSBcdTAwM2MyXHUwMDNlO1xuJiM0MztcdFx0XHRiaWFzLWRpc2FibGU7XG4mIzQzO1x0XHR9O1xuJiM0MztcdH07XG4gfTtcbiBcbiBcdTAwMjZ1YXJ0NSB7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZmMvc3QtbmNpL2NvcmUuYyBiL2RyaXZlcnMvbmZjL3N0LW5jaS9jb3JlLmNcbmluZGV4IGEzNjcxMzZkNDMzMGEuLjIzNTZmMTZiODA3MDYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25mYy9zdC1uY2kvY29yZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25mYy9zdC1uY2kvY29yZS5jXG5AQCAtMTgsOCAmIzQzOzE4LDEzIEBAXG4gXG4gc3RhdGljIGludCBzdF9uY2lfaW5pdChzdHJ1Y3QgbmNpX2RldiAqbmRldilcbiB7XG4mIzQzO1x0c3RydWN0IHN0X25jaV9pbmZvICppbmZvID0gbmNpX2dldF9kcnZkYXRhKG5kZXYpO1xuIFx0c3RydWN0IG5jaV9tb2RlX3NldF9jbWQgY21kO1xuIFxuJiM0MztcdC8qIFNUMjFORkNEIGhhcyBubyBORExDIHByb3ByaWV0YXJ5IFNFVF9ORkNfTU9ERSAqL1xuJiM0MztcdGlmIChpbmZvLVx1MDAzZW5kbGMtXHUwMDNlcmF3X25jaSlcbiYjNDM7XHRcdHJldHVybiAwO1xuJiM0MztcbiBcdGNtZC5jbWRfdHlwZSA9IFNUX05DSV9TRVRfTkZDX01PREU7XG4gXHRjbWQubW9kZSA9IDE7XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZmMvc3QtbmNpL2kyYy5jIGIvZHJpdmVycy9uZmMvc3QtbmNpL2kyYy5jXG5pbmRleCAxNTJjMjBiNmJiMDFhLi5jZmRkYjdmZmUwMmE0IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZmMvc3QtbmNpL2kyYy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25mYy9zdC1uY2kvaTJjLmNcbkBAIC0xMCwxMCAmIzQzOzEwLDEzIEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvaTJjLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9ncGlvL2NvbnN1bWVyLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9hY3BpLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvY2xrLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9pbnRlcnJ1cHQuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2RlbGF5LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9uZmMuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L29mLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvcHJvcGVydHkuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9yZWd1bGF0b3IvY29uc3VtZXIuaFx1MDAzZVxuIFxuICNpbmNsdWRlIFwmIzM0O3N0LW5jaS5oXCYjMzQ7XG4gXG5AQCAtMjIsMTAgJiM0MzsyNSwxNyBAQFxuIC8qIG5kbGMgaGVhZGVyICovXG4gI2RlZmluZSBTVF9OQ0lfRlJBTUVfSEVBRFJPT00gMVxuICNkZWZpbmUgU1RfTkNJX0ZSQU1FX1RBSUxST09NIDBcbiYjNDM7I2RlZmluZSBTVF9OQ0lfUkFXX0ZSQU1FX0hFQURST09NIDBcbiBcbiAjZGVmaW5lIFNUX05DSV9JMkNfTUlOX1NJWkUgNCAgIC8qIFBDQigxKSAmIzQzOyBOQ0kgUGFja2V0IGhlYWRlcigzKSAqL1xuJiM0MzsjZGVmaW5lIFNUX05DSV9OQ0lfSERSX1NJWkUgMyAgIC8qIHJhdyBOQ0k6IE1UL1BCRi9HSUQgJiM0MzsgT0lEICYjNDM7IGxlbiAqL1xuICNkZWZpbmUgU1RfTkNJX0kyQ19NQVhfU0laRSAyNTAgLyogcmVxIDQuMi4xICovXG4gXG4mIzQzO2VudW0gc3RfbmNpX2kyY19wcm90byB7XG4mIzQzO1x0U1RfTkNJX0kyQ19QUk9UT19ORExDID0gMCxcbiYjNDM7XHRTVF9OQ0lfSTJDX1BST1RPX1JBV19OQ0ksXG4mIzQzO307XG4mIzQzO1xuICNkZWZpbmUgU1RfTkNJX0RSSVZFUl9OQU1FIFwmIzM0O3N0X25jaVwmIzM0O1xuICNkZWZpbmUgU1RfTkNJX0kyQ19EUklWRVJfTkFNRSBcJiMzNDtzdF9uY2lfaTJjXCYjMzQ7XG4gXG5AQCAtMzQsNiAmIzQzOzQ0LDcgQEAgc3RydWN0IHN0X25jaV9pMmNfcGh5IHtcbiBcdHN0cnVjdCBsbHRfbmRsYyAqbmRsYztcbiBcbiBcdGJvb2wgaXJxX2FjdGl2ZTtcbiYjNDM7XHRib29sIHJhd19uY2k7XG4gXG4gXHRzdHJ1Y3QgZ3Bpb19kZXNjICpncGlvZF9yZXNldDtcbiBcbkBAIC0xMTEsNiAmIzQzOzEyMiw0MiBAQCBzdGF0aWMgaW50IHN0X25jaV9pMmNfcmVhZChzdHJ1Y3Qgc3RfbmNpX2kyY19waHkgKnBoeSxcbiBcdHU4IGJ1ZltTVF9OQ0lfSTJDX01BWF9TSVpFXTtcbiBcdHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQgPSBwaHktXHUwMDNlaTJjX2RldjtcbiBcbiYjNDM7XHRpZiAocGh5LVx1MDAzZXJhd19uY2kpIHtcbiYjNDM7XHRcdHIgPSBpMmNfbWFzdGVyX3JlY3YoY2xpZW50LCBidWYsIFNUX05DSV9OQ0lfSERSX1NJWkUpO1xuJiM0MztcdFx0aWYgKHIgXHUwMDNjIDApIHtcbiYjNDM7XHRcdFx0dXNsZWVwX3JhbmdlKDEwMDAsIDQwMDApO1xuJiM0MztcdFx0XHRyID0gaTJjX21hc3Rlcl9yZWN2KGNsaWVudCwgYnVmLCBTVF9OQ0lfTkNJX0hEUl9TSVpFKTtcbiYjNDM7XHRcdH1cbiYjNDM7XHRcdGlmIChyICE9IFNUX05DSV9OQ0lfSERSX1NJWkUpXG4mIzQzO1x0XHRcdHJldHVybiAtRVJFTU9URUlPO1xuJiM0MztcbiYjNDM7XHRcdGxlbiA9IGJ1ZlsyXTtcbiYjNDM7XHRcdGlmIChsZW4gXHUwMDNlIFNUX05DSV9JMkNfTUFYX1NJWkUpIHtcbiYjNDM7XHRcdFx0bmZjX2VycihcdTAwMjZjbGllbnQtXHUwMDNlZGV2LCBcJiMzNDtpbnZhbGlkIGZyYW1lIGxlblxcblwmIzM0Oyk7XG4mIzQzO1x0XHRcdHJldHVybiAtRUJBRE1TRztcbiYjNDM7XHRcdH1cbiYjNDM7XG4mIzQzO1x0XHQqc2tiID0gYWxsb2Nfc2tiKFNUX05DSV9OQ0lfSERSX1NJWkUgJiM0MzsgbGVuLCBHRlBfS0VSTkVMKTtcbiYjNDM7XHRcdGlmICghKnNrYilcbiYjNDM7XHRcdFx0cmV0dXJuIC1FTk9NRU07XG4mIzQzO1xuJiM0MztcdFx0c2tiX3B1dCgqc2tiLCBTVF9OQ0lfTkNJX0hEUl9TSVpFKTtcbiYjNDM7XHRcdG1lbWNweSgoKnNrYiktXHUwMDNlZGF0YSwgYnVmLCBTVF9OQ0lfTkNJX0hEUl9TSVpFKTtcbiYjNDM7XG4mIzQzO1x0XHRpZiAoIWxlbilcbiYjNDM7XHRcdFx0cmV0dXJuIDA7XG4mIzQzO1xuJiM0MztcdFx0ciA9IGkyY19tYXN0ZXJfcmVjdihjbGllbnQsIGJ1ZiwgbGVuKTtcbiYjNDM7XHRcdGlmIChyICE9IGxlbikge1xuJiM0MztcdFx0XHRrZnJlZV9za2IoKnNrYik7XG4mIzQzO1x0XHRcdHJldHVybiAtRVJFTU9URUlPO1xuJiM0MztcdFx0fVxuJiM0MztcbiYjNDM7XHRcdHNrYl9wdXQoKnNrYiwgbGVuKTtcbiYjNDM7XHRcdG1lbWNweSgoKnNrYiktXHUwMDNlZGF0YSAmIzQzOyBTVF9OQ0lfTkNJX0hEUl9TSVpFLCBidWYsIGxlbik7XG4mIzQzO1x0XHRyZXR1cm4gMDtcbiYjNDM7XHR9XG4mIzQzO1xuIFx0ciA9IGkyY19tYXN0ZXJfcmVjdihjbGllbnQsIGJ1ZiwgU1RfTkNJX0kyQ19NSU5fU0laRSk7XG4gXHRpZiAociBcdTAwM2MgMCkgeyAgLyogUmV0cnksIGNoaXAgd2FzIGluIHN0YW5kYnkgKi9cbiBcdFx0dXNsZWVwX3JhbmdlKDEwMDAsIDQwMDApO1xuQEAgLTIxMSw2ICYjNDM7MjU4LDggQEAgc3RhdGljIGludCBzdF9uY2lfaTJjX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXG4gXHRcdHJldHVybiAtRU5PTUVNO1xuIFxuIFx0cGh5LVx1MDAzZWkyY19kZXYgPSBjbGllbnQ7XG4mIzQzO1x0cGh5LVx1MDAzZXJhd19uY2kgPSAodWludHB0cl90KWRldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpID09XG4mIzQzO1x0XHRcdFNUX05DSV9JMkNfUFJPVE9fUkFXX05DSTtcbiBcbiBcdGkyY19zZXRfY2xpZW50ZGF0YShjbGllbnQsIHBoeSk7XG4gXG5AQCAtMjI1LDE5ICYjNDM7Mjc0LDMxIEBAIHN0YXRpYyBpbnQgc3RfbmNpX2kyY19wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxuIFx0XHRyZXR1cm4gLUVOT0RFVjtcbiBcdH1cbiBcbiYjNDM7XHRyID0gZGV2bV9yZWd1bGF0b3JfZ2V0X2VuYWJsZV9vcHRpb25hbChkZXYsIFwmIzM0O3ZkZC1pb1wmIzM0Oyk7XG4mIzQzO1x0aWYgKHIgXHUwMDI2XHUwMDI2IHIgIT0gLUVOT0RFVilcbiYjNDM7XHRcdHJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgciwgXCYjMzQ7ZmFpbGVkIHRvIGVuYWJsZSB2ZGQtaW9cXG5cJiMzNDspO1xuJiM0MztcbiYjNDM7XHRyID0gUFRSX0VSUl9PUl9aRVJPKGRldm1fY2xrX2dldF9vcHRpb25hbF9lbmFibGVkKGRldiwgTlVMTCkpO1xuJiM0MztcdGlmIChyKVxuJiM0MztcdFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCByLCBcJiMzNDtmYWlsZWQgdG8gZW5hYmxlIGNsb2NrXFxuXCYjMzQ7KTtcbiYjNDM7XG4gXHRwaHktXHUwMDNlc2Vfc3RhdHVzLmlzX2VzZV9wcmVzZW50ID1cbiBcdFx0XHRcdGRldmljZV9wcm9wZXJ0eV9yZWFkX2Jvb2woZGV2LCBcJiMzNDtlc2UtcHJlc2VudFwmIzM0Oyk7XG4gXHRwaHktXHUwMDNlc2Vfc3RhdHVzLmlzX3VpY2NfcHJlc2VudCA9XG4gXHRcdFx0XHRkZXZpY2VfcHJvcGVydHlfcmVhZF9ib29sKGRldiwgXCYjMzQ7dWljYy1wcmVzZW50XCYjMzQ7KTtcbiBcbiBcdHIgPSBuZGxjX3Byb2JlKHBoeSwgXHUwMDI2aTJjX3BoeV9vcHMsIFx1MDAyNmNsaWVudC1cdTAwM2VkZXYsXG4tXHRcdFx0U1RfTkNJX0ZSQU1FX0hFQURST09NLCBTVF9OQ0lfRlJBTUVfVEFJTFJPT00sXG4mIzQzO1x0XHRcdHBoeS1cdTAwM2VyYXdfbmNpID8gU1RfTkNJX1JBV19GUkFNRV9IRUFEUk9PTSA6XG4mIzQzO1x0XHRcdFx0ICAgICAgIFNUX05DSV9GUkFNRV9IRUFEUk9PTSxcbiYjNDM7XHRcdFx0U1RfTkNJX0ZSQU1FX1RBSUxST09NLFxuIFx0XHRcdFx1MDAyNnBoeS1cdTAwM2VuZGxjLCBcdTAwMjZwaHktXHUwMDNlc2Vfc3RhdHVzKTtcbiBcdGlmIChyIFx1MDAzYyAwKSB7XG4gXHRcdG5mY19lcnIoXHUwMDI2Y2xpZW50LVx1MDAzZWRldiwgXCYjMzQ7VW5hYmxlIHRvIHJlZ2lzdGVyIG5kbGMgbGF5ZXJcXG5cJiMzNDspO1xuIFx0XHRyZXR1cm4gcjtcbiBcdH1cbiBcbiYjNDM7XHRwaHktXHUwMDNlbmRsYy1cdTAwM2VyYXdfbmNpID0gcGh5LVx1MDAzZXJhd19uY2k7XG4mIzQzO1xuIFx0cGh5LVx1MDAzZWlycV9hY3RpdmUgPSB0cnVlO1xuIFx0ciA9IGRldm1fcmVxdWVzdF90aHJlYWRlZF9pcnEoXHUwMDI2Y2xpZW50LVx1MDAzZWRldiwgY2xpZW50LVx1MDAzZWlycSwgTlVMTCxcbiBcdFx0XHRcdHN0X25jaV9pcnFfdGhyZWFkX2ZuLFxuQEAgLTI1NywyMyAmIzQzOzMxOCwyNSBAQCBzdGF0aWMgdm9pZCBzdF9uY2lfaTJjX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxuIH1cbiBcbiBzdGF0aWMgY29uc3Qgc3RydWN0IGkyY19kZXZpY2VfaWQgc3RfbmNpX2kyY19pZF90YWJsZVtdID0ge1xuLVx0eyAubmFtZSA9IFNUX05DSV9EUklWRVJfTkFNRSB9LFxuLVx0eyB9XG4mIzQzO1x0eyBTVF9OQ0lfRFJJVkVSX05BTUUgfSxcbiYjNDM7XHR7fVxuIH07XG4gTU9EVUxFX0RFVklDRV9UQUJMRShpMmMsIHN0X25jaV9pMmNfaWRfdGFibGUpO1xuIFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgYWNwaV9kZXZpY2VfaWQgc3RfbmNpX2kyY19hY3BpX21hdGNoW10gPSB7XG4tXHR7IC5pZCA9IFwmIzM0O1NNTzIxMDFcJiMzNDsgfSxcbi1cdHsgLmlkID0gXCYjMzQ7U01PMjEwMlwmIzM0OyB9LFxuLVx0eyB9XG4mIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgYWNwaV9kZXZpY2VfaWQgc3RfbmNpX2kyY19hY3BpX21hdGNoW10gX19tYXliZV91bnVzZWQgPSB7XG4mIzQzO1x0e1wmIzM0O1NNTzIxMDFcJiMzNDt9LFxuJiM0MztcdHtcJiMzNDtTTU8yMTAyXCYjMzQ7fSxcbiYjNDM7XHR7fVxuIH07XG4gTU9EVUxFX0RFVklDRV9UQUJMRShhY3BpLCBzdF9uY2lfaTJjX2FjcGlfbWF0Y2gpO1xuIFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIG9mX3N0X25jaV9pMmNfbWF0Y2hbXSA9IHtcbi1cdHsgLmNvbXBhdGlibGUgPSBcJiMzNDtzdCxzdDIxbmZjYi1pMmNcJiMzNDsgfSxcbi1cdHsgLmNvbXBhdGlibGUgPSBcJiMzNDtzdCxzdDIxbmZjYl9pMmNcJiMzNDsgfSxcbi1cdHsgLmNvbXBhdGlibGUgPSBcJiMzNDtzdCxzdDIxbmZjYy1pMmNcJiMzNDsgfSxcbi1cdHsgfVxuJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBvZl9zdF9uY2lfaTJjX21hdGNoW10gX19tYXliZV91bnVzZWQgPSB7XG4mIzQzO1x0eyAuY29tcGF0aWJsZSA9IFwmIzM0O3N0LHN0MjFuZmNiLWkyY1wmIzM0OywgfSxcbiYjNDM7XHR7IC5jb21wYXRpYmxlID0gXCYjMzQ7c3Qsc3QyMW5mY2JfaTJjXCYjMzQ7LCB9LFxuJiM0MztcdHsgLmNvbXBhdGlibGUgPSBcJiMzNDtzdCxzdDIxbmZjYy1pMmNcJiMzNDssIH0sXG4mIzQzO1x0eyAuY29tcGF0aWJsZSA9IFwmIzM0O3N0LHN0MjFuZmNkXCYjMzQ7LFxuJiM0MztcdCAgLmRhdGEgPSAodm9pZCAqKVNUX05DSV9JMkNfUFJPVE9fUkFXX05DSSB9LFxuJiM0MztcdHt9XG4gfTtcbiBNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBvZl9zdF9uY2lfaTJjX21hdGNoKTtcbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25mYy9zdC1uY2kvbmRsYy5jIGIvZHJpdmVycy9uZmMvc3QtbmNpL25kbGMuY1xuaW5kZXggYmU0ODA4ODU5Y2ZhOS4uYjMxOTI0NjBjOTZlMyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmNcbkBAIC02Miw4ICYjNDM7NjIsOSBAQCB2b2lkIG5kbGNfY2xvc2Uoc3RydWN0IGxsdF9uZGxjICpuZGxjKVxuIFx0LyogdG9nZ2xlIHJlc2V0IHBpbiAqL1xuIFx0bmRsYy1cdTAwM2VvcHMtXHUwMDNlZW5hYmxlKG5kbGMtXHUwMDNlcGh5X2lkKTtcbiBcbi1cdG5jaV9wcm9wX2NtZChuZGxjLVx1MDAzZW5kZXYsIFNUX05DSV9DT1JFX1BST1AsXG4tXHRcdCAgICAgc2l6ZW9mKHN0cnVjdCBuY2lfbW9kZV9zZXRfY21kKSwgKF9fdTggKilcdTAwMjZjbWQpO1xuJiM0MztcdGlmICghbmRsYy1cdTAwM2VyYXdfbmNpKVxuJiM0MztcdFx0bmNpX3Byb3BfY21kKG5kbGMtXHUwMDNlbmRldiwgU1RfTkNJX0NPUkVfUFJPUCxcbiYjNDM7XHRcdFx0ICAgICBzaXplb2Yoc3RydWN0IG5jaV9tb2RlX3NldF9jbWQpLCAoX191OCAqKVx1MDAyNmNtZCk7XG4gXG4gXHRuZGxjLVx1MDAzZXBvd2VyZWQgPSAwO1xuIFx0bmRsYy1cdTAwM2VvcHMtXHUwMDNlZGlzYWJsZShuZGxjLVx1MDAzZXBoeV9pZCk7XG5AQCAtNzIsMTEgJiM0Mzs3MywxMyBAQCBFWFBPUlRfU1lNQk9MKG5kbGNfY2xvc2UpO1xuIFxuIGludCBuZGxjX3NlbmQoc3RydWN0IGxsdF9uZGxjICpuZGxjLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIHtcbi1cdC8qIGFkZCBuZGxjIGhlYWRlciAqL1xuLVx0dTggcGNiID0gUENCX1RZUEVfREFUQUZSQU1FIHwgUENCX0RBVEFGUkFNRV9SRVRSQU5TTUlUX05PIHxcbi1cdFx0UENCX0ZSQU1FX0NSQ19JTkZPX05PVFBSRVNFTlQ7XG4mIzQzO1x0aWYgKCFuZGxjLVx1MDAzZXJhd19uY2kpIHtcbiYjNDM7XHRcdC8qIGFkZCBuZGxjIGhlYWRlciAqL1xuJiM0MztcdFx0dTggcGNiID0gUENCX1RZUEVfREFUQUZSQU1FIHwgUENCX0RBVEFGUkFNRV9SRVRSQU5TTUlUX05PIHxcbiYjNDM7XHRcdFx0UENCX0ZSQU1FX0NSQ19JTkZPX05PVFBSRVNFTlQ7XG4gXG4tXHQqKHU4ICopc2tiX3B1c2goc2tiLCAxKSA9IHBjYjtcbiYjNDM7XHRcdCoodTggKilza2JfcHVzaChza2IsIDEpID0gcGNiO1xuJiM0MztcdH1cbiBcdHNrYl9xdWV1ZV90YWlsKFx1MDAyNm5kbGMtXHUwMDNlc2VuZF9xLCBza2IpO1xuIFxuIFx0c2NoZWR1bGVfd29yayhcdTAwMjZuZGxjLVx1MDAzZXNtX3dvcmspO1xuQEAgLTEwMyw2ICYjNDM7MTA2LDEwIEBAIHN0YXRpYyB2b2lkIGxsdF9uZGxjX3NlbmRfcXVldWUoc3RydWN0IGxsdF9uZGxjICpuZGxjKVxuIFx0XHRcdG5kbGMtXHUwMDNlaGFyZF9mYXVsdCA9IHI7XG4gXHRcdFx0YnJlYWs7XG4gXHRcdH1cbiYjNDM7XHRcdGlmIChuZGxjLVx1MDAzZXJhd19uY2kpIHtcbiYjNDM7XHRcdFx0a2ZyZWVfc2tiKHNrYik7XG4mIzQzO1x0XHRcdGNvbnRpbnVlO1xuJiM0MztcdFx0fVxuIFx0XHR0aW1lX3NlbnQgPSBqaWZmaWVzO1xuIFx0XHQqKHVuc2lnbmVkIGxvbmcgKilza2ItXHUwMDNlY2IgPSB0aW1lX3NlbnQ7XG4gXG5AQCAtMTU0LDYgJiM0MzsxNjEsMTAgQEAgc3RhdGljIHZvaWQgbGx0X25kbGNfcmN2X3F1ZXVlKHN0cnVjdCBsbHRfbmRsYyAqbmRsYylcbiBcdFx0cHJfZGVidWcoXCYjMzQ7cmN2UWxlbj0lZFxcblwmIzM0OywgbmRsYy1cdTAwM2VyY3ZfcS5xbGVuKTtcbiBcbiBcdHdoaWxlICgoc2tiID0gc2tiX2RlcXVldWUoXHUwMDI2bmRsYy1cdTAwM2VyY3ZfcSkpICE9IE5VTEwpIHtcbiYjNDM7XHRcdGlmIChuZGxjLVx1MDAzZXJhd19uY2kpIHtcbiYjNDM7XHRcdFx0bmNpX3JlY3ZfZnJhbWUobmRsYy1cdTAwM2VuZGV2LCBza2IpO1xuJiM0MztcdFx0XHRjb250aW51ZTtcbiYjNDM7XHRcdH1cbiBcdFx0cGNiID0gc2tiLVx1MDAzZWRhdGFbMF07XG4gXHRcdHNrYl9wdWxsKHNrYiwgMSk7XG4gXHRcdGlmICgocGNiIFx1MDAyNiBQQ0JfVFlQRV9NQVNLKSA9PSBQQ0JfVFlQRV9TVVBFUlZJU09SKSB7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZmMvc3QtbmNpL25kbGMuaCBiL2RyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmhcbmluZGV4IGMyNGNlOWIwZGY1MmUuLjVjMWY4YmFmMDQ3MTggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25mYy9zdC1uY2kvbmRsYy5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25mYy9zdC1uY2kvbmRsYy5oXG5AQCAtMzksNiAmIzQzOzM5LDggQEAgc3RydWN0IGxsdF9uZGxjIHtcbiBcdCAqL1xuIFx0aW50IGhhcmRfZmF1bHQ7XG4gXHRpbnQgcG93ZXJlZDtcbiYjNDM7XHQvKiBTVDIxTkZDRDogcmF3IE5DSSBvbiB0aGUgd2lyZSwgbm8gTkRMQyBQQ0IgLyBBQ0sgdGltZXJzICovXG4mIzQzO1x0Ym9vbCByYXdfbmNpO1xuIH07XG4gXG4gaW50IG5kbGNfb3BlbihzdHJ1Y3QgbGx0X25kbGMgKm5kbGMpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmZjL3N0LW5jaS9zZS5jIGIvZHJpdmVycy9uZmMvc3QtbmNpL3NlLmNcbmluZGV4IDYwN2VjNzY4ZWI3YjQuLjQ0Y2MxMDJiY2RlMjEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25mYy9zdC1uY2kvc2UuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZmMvc3QtbmNpL3NlLmNcbkBAIC02MjEsNiAmIzQzOzYyMSw5IEBAIGludCBzdF9uY2lfZGlzY292ZXJfc2Uoc3RydWN0IG5jaV9kZXYgKm5kZXYpXG4gXHRpbnQgc2VfY291bnQgPSAwO1xuIFx0c3RydWN0IHN0X25jaV9pbmZvICppbmZvID0gbmNpX2dldF9kcnZkYXRhKG5kZXYpO1xuIFxuJiM0MztcdGlmIChpbmZvLVx1MDAzZW5kbGMtXHUwMDNlcmF3X25jaSlcbiYjNDM7XHRcdHJldHVybiAwO1xuJiM0MztcbiBcdHIgPSBzdF9uY2lfaGNpX25ldHdvcmtfaW5pdChuZGV2KTtcbiBcdGlmIChyICE9IDApXG4gXHRcdHJldHVybiByO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIwIDIxOjAxPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjJtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORkMmIzM0OywKICAgICYjMzQ7TkZDX05DSSYjMzQ7LAogICAgJiMzNDtJMkMmIzM0OywKICAgICYjMzQ7TkZDX1NUX05DSSYjMzQ7LAogICAgJiMzNDtORkNfU1RfTkNJX0kyQyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O25kbGNfcHJvYmUmIzM0OywKICAgICYjMzQ7bmRsY19yZWN2JiMzNDssCiAgICAmIzM0O25kbGNfc2VuZCYjMzQ7LAogICAgJiMzNDtuZGxjX2Nsb3NlJiMzNDssCiAgICAmIzM0O3N0X25jaV9kaXNjb3Zlcl9zZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHRoZSBTVDIxTkZDRCBORkMgY29udHJvbGxlciwgd2hpY2ggdXNlcyByYXcgTkNJIG92ZXIgSTJDIGluc3RlYWQgb2YgdGhlIE5ETEMgcHJvdG9jb2wuIEl0IGludHJvZHVjZXMgYSBuZXcgYHJhd19uY2lgIGZsYWcgdGhhdCBtb2RpZmllcyB0aGUgYmVoYXZpb3Igb2YgcmVhZGluZyBmcm9tIHRoZSBJMkMgYnVzLCBzZW5kaW5nL3JlY2VpdmluZyBOQ0kgZnJhbWVzLCBhbmQgaW5pdGlhbGl6aW5nIHRoZSBkZXZpY2UuIFRoZSBJMkMgZHJpdmVyIGNhbiBiZSBpbnN0YW50aWF0ZWQgYW5kIGZ1enplZCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNTlmYjA4MjRiZWM0ZDEwMjYzZTQ4NWI1YWNiNzc1Nzk0M2IyYjJiYwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgQXVnIDIwIDIxOjAxOjUzIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9uZmMvc3Qsc3QtbmNpLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L25mYy9zdCxzdC1uY2kueWFtbAppbmRleCAxZGNiZGRiYzVhNzRlLi5jODU5Nzk3ZjQyMmJjIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L25mYy9zdCxzdC1uY2kueWFtbAomIzQzOyYjNDM7JiM0MzsgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L25mYy9zdCxzdC1uY2kueWFtbApAQCAtMTUsNiAmIzQzOzE1LDcgQEAgcHJvcGVydGllczoKICAgICAgIC0gc3Qsc3QyMW5mY2ItaTJjCiAgICAgICAtIHN0LHN0MjFuZmNiLXNwaQogICAgICAgLSBzdCxzdDIxbmZjYy1pMmMKJiM0MzsgICAgICAtIHN0LHN0MjFuZmNkCiAKICAgcmVzZXQtZ3Bpb3M6CiAgICAgZGVzY3JpcHRpb246IE91dHB1dCBHUElPIHBpbiB1c2VkIGZvciByZXNldHRpbmcgdGhlIGNvbnRyb2xsZXIKQEAgLTM2LDYgJiM0MzszNywxNSBAQCBwcm9wZXJ0aWVzOgogICAgICAgU3BlY2lmaWVzIHRoYXQgdGhlIHVpY2Mgc3dwIHNpZ25hbCBjYW4gYmUgcGh5c2ljYWxseSBjb25uZWN0ZWQgdG8gdGhlCiAgICAgICBjb250cm9sbGVyCiAKJiM0MzsgIGNsb2NrczoKJiM0MzsgICAgbWF4SXRlbXM6IDEKJiM0MzsgICAgZGVzY3JpcHRpb246CiYjNDM7ICAgICAgRXh0ZXJuYWwgcmVmZXJlbmNlIGNsb2NrIGNvbm5lY3RlZCB0byBTWVNfQ0xLLgomIzQzOwomIzQzOyAgdmRkLWlvLXN1cHBseToKJiM0MzsgICAgZGVzY3JpcHRpb246CiYjNDM7ICAgICAgRGlnaXRhbCBJL08gc3VwcGx5IChWUFNfSU8pLgomIzQzOwogcmVxdWlyZWQ6CiAgIC0gY29tcGF0aWJsZQogICAtIGludGVycnVwdHMKQEAgLTQ5LDYgJiM0Mzs1OSw3IEBAIGlmOgogICAgICAgICBlbnVtOgogICAgICAgICAgIC0gc3Qsc3QyMW5mY2ItaTJjCiAgICAgICAgICAgLSBzdCxzdDIxbmZjYy1pMmMKJiM0MzsgICAgICAgICAgLSBzdCxzdDIxbmZjZAogdGhlbjoKICAgcHJvcGVydGllczoKICAgICBzcGktbWF4LWZyZXF1ZW5jeTogZmFsc2UKQEAgLTgxLDYgJiM0Mzs5MiwyNiBAQCBleGFtcGxlczoKICAgICAgICAgfTsKICAgICB9OwogCiYjNDM7ICAtIHwKJiM0MzsgICAgI2luY2x1ZGUgJmx0O2R0LWJpbmRpbmdzL2dwaW8vZ3Bpby5oJmd0OwomIzQzOyAgICAjaW5jbHVkZSAmbHQ7ZHQtYmluZGluZ3MvaW50ZXJydXB0LWNvbnRyb2xsZXIvaXJxLmgmZ3Q7CiYjNDM7CiYjNDM7ICAgIGkyYyB7CiYjNDM7ICAgICAgICAjYWRkcmVzcy1jZWxscyA9ICZsdDsxJmd0OzsKJiM0MzsgICAgICAgICNzaXplLWNlbGxzID0gJmx0OzAmZ3Q7OwomIzQzOwomIzQzOyAgICAgICAgbmZjQDggewomIzQzOyAgICAgICAgICAgIGNvbXBhdGlibGUgPSAmIzM0O3N0LHN0MjFuZmNkJiMzNDs7CiYjNDM7ICAgICAgICAgICAgcmVnID0gJmx0OzB4MDgmZ3Q7OwomIzQzOwomIzQzOyAgICAgICAgICAgIGludGVycnVwdHMtZXh0ZW5kZWQgPSAmbHQ7JmFtcDtncGlvNSAyIElSUV9UWVBFX0xFVkVMX0hJR0gmZ3Q7OwomIzQzOyAgICAgICAgICAgIHJlc2V0LWdwaW9zID0gJmx0OyZhbXA7Z3BpbzUgMjkgR1BJT19BQ1RJVkVfSElHSCZndDs7CiYjNDM7CiYjNDM7ICAgICAgICAgICAgY2xvY2tzID0gJmx0OyZhbXA7Y2xrJmd0OzsKJiM0MzsgICAgICAgICAgICB2ZGQtaW8tc3VwcGx5ID0gJmx0OyZhbXA7dmRkX2lvJmd0OzsKJiM0MzsgICAgICAgIH07CiYjNDM7ICAgIH07CiYjNDM7CiAgIC0gfAogICAgICNpbmNsdWRlICZsdDtkdC1iaW5kaW5ncy9ncGlvL2dwaW8uaCZndDsKICAgICAjaW5jbHVkZSAmbHQ7ZHQtYmluZGluZ3MvaW50ZXJydXB0LWNvbnRyb2xsZXIvaXJxLmgmZ3Q7CmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2Jvb3QvZHRzL3Fjb20vcWNtNjQ5MC1mYWlycGhvbmUtZnA1LmR0cyBiL2FyY2gvYXJtNjQvYm9vdC9kdHMvcWNvbS9xY202NDkwLWZhaXJwaG9uZS1mcDUuZHRzCmluZGV4IDA0Y2I5MjMwZDI5ZmQuLmVmNjYwNzlhMDI2M2MgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtNjQvYm9vdC9kdHMvcWNvbS9xY202NDkwLWZhaXJwaG9uZS1mcDUuZHRzCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvYXJtNjQvYm9vdC9kdHMvcWNvbS9xY202NDkwLWZhaXJwaG9uZS1mcDUuZHRzCkBAIC05MDgsNyAmIzQzOzkwOCwyMyBAQCByZWRyaXZlcl9zc19pbjogZW5kcG9pbnQgewogJmFtcDtpMmM5IHsKIAlzdGF0dXMgPSAmIzM0O29rYXkmIzM0OzsKIAotCS8qIFNUMjFORkMgTkZDIEAgMjggKi8KJiM0MzsJbmZjQDggewomIzQzOwkJY29tcGF0aWJsZSA9ICYjMzQ7c3Qsc3QyMW5mY2QmIzM0OzsKJiM0MzsJCXJlZyA9ICZsdDsweDA4Jmd0OzsKJiM0MzsKJiM0MzsJCWludGVycnVwdHMtZXh0ZW5kZWQgPSAmbHQ7JmFtcDt0bG1tIDQxIElSUV9UWVBFX0xFVkVMX0hJR0gmZ3Q7OwomIzQzOwkJcmVzZXQtZ3Bpb3MgPSAmbHQ7JmFtcDt0bG1tIDM4IEdQSU9fQUNUSVZFX0hJR0gmZ3Q7OwomIzQzOwomIzQzOwkJcGluY3RybC0wID0gJmx0OyZhbXA7bmZjX2RlZmF1bHQmZ3Q7OwomIzQzOwkJcGluY3RybC1uYW1lcyA9ICYjMzQ7ZGVmYXVsdCYjMzQ7OwomIzQzOwomIzQzOwkJY2xvY2tzID0gJmx0OyZhbXA7cnBtaGNjIFJQTUhfTE5fQkJfQ0xLMiZndDs7CiYjNDM7CQl2ZGQtaW8tc3VwcGx5ID0gJmx0OyZhbXA7dnJlZ19sMThiJmd0OzsKJiM0MzsKJiM0MzsJCWVzZS1wcmVzZW50OwomIzQzOwkJdWljYy1wcmVzZW50OwomIzQzOwl9OwomIzQzOwogCS8qIFZMNTNMMyBUb0YgQCAyOSAqLwogfTsKIApAQCAtMTQxMCw2ICYjNDM7MTQyNiwyMiBAQCBoYWxsX3NlbnNvcl9kZWZhdWx0OiBoYWxsLXNlbnNvci1kZWZhdWx0LXN0YXRlIHsKIAkJZHJpdmUtc3RyZW5ndGggPSAmbHQ7MiZndDs7CiAJCWJpYXMtcHVsbC11cDsKIAl9OwomIzQzOwomIzQzOwluZmNfZGVmYXVsdDogbmZjLWRlZmF1bHQtc3RhdGUgewomIzQzOwkJcmVzZXQtcGlucyB7CiYjNDM7CQkJcGlucyA9ICYjMzQ7Z3BpbzM4JiMzNDs7CiYjNDM7CQkJZnVuY3Rpb24gPSAmIzM0O2dwaW8mIzM0OzsKJiM0MzsJCQlkcml2ZS1zdHJlbmd0aCA9ICZsdDsyJmd0OzsKJiM0MzsJCQliaWFzLWRpc2FibGU7CiYjNDM7CQl9OwomIzQzOwomIzQzOwkJaW50LXBpbnMgewomIzQzOwkJCXBpbnMgPSAmIzM0O2dwaW80MSYjMzQ7OwomIzQzOwkJCWZ1bmN0aW9uID0gJiMzNDtncGlvJiMzNDs7CiYjNDM7CQkJZHJpdmUtc3RyZW5ndGggPSAmbHQ7MiZndDs7CiYjNDM7CQkJYmlhcy1kaXNhYmxlOwomIzQzOwkJfTsKJiM0MzsJfTsKIH07CiAKICZhbXA7dWFydDUgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZmMvc3QtbmNpL2NvcmUuYyBiL2RyaXZlcnMvbmZjL3N0LW5jaS9jb3JlLmMKaW5kZXggYTM2NzEzNmQ0MzMwYS4uMjM1NmYxNmI4MDcwNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZmMvc3QtbmNpL2NvcmUuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25mYy9zdC1uY2kvY29yZS5jCkBAIC0xOCw4ICYjNDM7MTgsMTMgQEAKIAogc3RhdGljIGludCBzdF9uY2lfaW5pdChzdHJ1Y3QgbmNpX2RldiAqbmRldikKIHsKJiM0MzsJc3RydWN0IHN0X25jaV9pbmZvICppbmZvID0gbmNpX2dldF9kcnZkYXRhKG5kZXYpOwogCXN0cnVjdCBuY2lfbW9kZV9zZXRfY21kIGNtZDsKIAomIzQzOwkvKiBTVDIxTkZDRCBoYXMgbm8gTkRMQyBwcm9wcmlldGFyeSBTRVRfTkZDX01PREUgKi8KJiM0MzsJaWYgKGluZm8tJmd0O25kbGMtJmd0O3Jhd19uY2kpCiYjNDM7CQlyZXR1cm4gMDsKJiM0MzsKIAljbWQuY21kX3R5cGUgPSBTVF9OQ0lfU0VUX05GQ19NT0RFOwogCWNtZC5tb2RlID0gMTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZmMvc3QtbmNpL2kyYy5jIGIvZHJpdmVycy9uZmMvc3QtbmNpL2kyYy5jCmluZGV4IDE1MmMyMGI2YmIwMWEuLmNmZGRiN2ZmZTAyYTQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmZjL3N0LW5jaS9pMmMuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25mYy9zdC1uY2kvaTJjLmMKQEAgLTEwLDEwICYjNDM7MTAsMTMgQEAKICNpbmNsdWRlICZsdDtsaW51eC9pMmMuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9ncGlvL2NvbnN1bWVyLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvYWNwaS5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9jbGsuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9pbnRlcnJ1cHQuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9kZWxheS5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L25mYy5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L29mLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L3Byb3BlcnR5LmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L3JlZ3VsYXRvci9jb25zdW1lci5oJmd0OwogCiAjaW5jbHVkZSAmIzM0O3N0LW5jaS5oJiMzNDsKIApAQCAtMjIsMTAgJiM0MzsyNSwxNyBAQAogLyogbmRsYyBoZWFkZXIgKi8KICNkZWZpbmUgU1RfTkNJX0ZSQU1FX0hFQURST09NIDEKICNkZWZpbmUgU1RfTkNJX0ZSQU1FX1RBSUxST09NIDAKJiM0MzsjZGVmaW5lIFNUX05DSV9SQVdfRlJBTUVfSEVBRFJPT00gMAogCiAjZGVmaW5lIFNUX05DSV9JMkNfTUlOX1NJWkUgNCAgIC8qIFBDQigxKSAmIzQzOyBOQ0kgUGFja2V0IGhlYWRlcigzKSAqLwomIzQzOyNkZWZpbmUgU1RfTkNJX05DSV9IRFJfU0laRSAzICAgLyogcmF3IE5DSTogTVQvUEJGL0dJRCAmIzQzOyBPSUQgJiM0MzsgbGVuICovCiAjZGVmaW5lIFNUX05DSV9JMkNfTUFYX1NJWkUgMjUwIC8qIHJlcSA0LjIuMSAqLwogCiYjNDM7ZW51bSBzdF9uY2lfaTJjX3Byb3RvIHsKJiM0MzsJU1RfTkNJX0kyQ19QUk9UT19ORExDID0gMCwKJiM0MzsJU1RfTkNJX0kyQ19QUk9UT19SQVdfTkNJLAomIzQzO307CiYjNDM7CiAjZGVmaW5lIFNUX05DSV9EUklWRVJfTkFNRSAmIzM0O3N0X25jaSYjMzQ7CiAjZGVmaW5lIFNUX05DSV9JMkNfRFJJVkVSX05BTUUgJiMzNDtzdF9uY2lfaTJjJiMzNDsKIApAQCAtMzQsNiAmIzQzOzQ0LDcgQEAgc3RydWN0IHN0X25jaV9pMmNfcGh5IHsKIAlzdHJ1Y3QgbGx0X25kbGMgKm5kbGM7CiAKIAlib29sIGlycV9hY3RpdmU7CiYjNDM7CWJvb2wgcmF3X25jaTsKIAogCXN0cnVjdCBncGlvX2Rlc2MgKmdwaW9kX3Jlc2V0OwogCkBAIC0xMTEsNiAmIzQzOzEyMiw0MiBAQCBzdGF0aWMgaW50IHN0X25jaV9pMmNfcmVhZChzdHJ1Y3Qgc3RfbmNpX2kyY19waHkgKnBoeSwKIAl1OCBidWZbU1RfTkNJX0kyQ19NQVhfU0laRV07CiAJc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCA9IHBoeS0mZ3Q7aTJjX2RldjsKIAomIzQzOwlpZiAocGh5LSZndDtyYXdfbmNpKSB7CiYjNDM7CQlyID0gaTJjX21hc3Rlcl9yZWN2KGNsaWVudCwgYnVmLCBTVF9OQ0lfTkNJX0hEUl9TSVpFKTsKJiM0MzsJCWlmIChyICZsdDsgMCkgewomIzQzOwkJCXVzbGVlcF9yYW5nZSgxMDAwLCA0MDAwKTsKJiM0MzsJCQlyID0gaTJjX21hc3Rlcl9yZWN2KGNsaWVudCwgYnVmLCBTVF9OQ0lfTkNJX0hEUl9TSVpFKTsKJiM0MzsJCX0KJiM0MzsJCWlmIChyICE9IFNUX05DSV9OQ0lfSERSX1NJWkUpCiYjNDM7CQkJcmV0dXJuIC1FUkVNT1RFSU87CiYjNDM7CiYjNDM7CQlsZW4gPSBidWZbMl07CiYjNDM7CQlpZiAobGVuICZndDsgU1RfTkNJX0kyQ19NQVhfU0laRSkgewomIzQzOwkJCW5mY19lcnIoJmFtcDtjbGllbnQtJmd0O2RldiwgJiMzNDtpbnZhbGlkIGZyYW1lIGxlblxuJiMzNDspOwomIzQzOwkJCXJldHVybiAtRUJBRE1TRzsKJiM0MzsJCX0KJiM0MzsKJiM0MzsJCSpza2IgPSBhbGxvY19za2IoU1RfTkNJX05DSV9IRFJfU0laRSAmIzQzOyBsZW4sIEdGUF9LRVJORUwpOwomIzQzOwkJaWYgKCEqc2tiKQomIzQzOwkJCXJldHVybiAtRU5PTUVNOwomIzQzOwomIzQzOwkJc2tiX3B1dCgqc2tiLCBTVF9OQ0lfTkNJX0hEUl9TSVpFKTsKJiM0MzsJCW1lbWNweSgoKnNrYiktJmd0O2RhdGEsIGJ1ZiwgU1RfTkNJX05DSV9IRFJfU0laRSk7CiYjNDM7CiYjNDM7CQlpZiAoIWxlbikKJiM0MzsJCQlyZXR1cm4gMDsKJiM0MzsKJiM0MzsJCXIgPSBpMmNfbWFzdGVyX3JlY3YoY2xpZW50LCBidWYsIGxlbik7CiYjNDM7CQlpZiAociAhPSBsZW4pIHsKJiM0MzsJCQlrZnJlZV9za2IoKnNrYik7CiYjNDM7CQkJcmV0dXJuIC1FUkVNT1RFSU87CiYjNDM7CQl9CiYjNDM7CiYjNDM7CQlza2JfcHV0KCpza2IsIGxlbik7CiYjNDM7CQltZW1jcHkoKCpza2IpLSZndDtkYXRhICYjNDM7IFNUX05DSV9OQ0lfSERSX1NJWkUsIGJ1ZiwgbGVuKTsKJiM0MzsJCXJldHVybiAwOwomIzQzOwl9CiYjNDM7CiAJciA9IGkyY19tYXN0ZXJfcmVjdihjbGllbnQsIGJ1ZiwgU1RfTkNJX0kyQ19NSU5fU0laRSk7CiAJaWYgKHIgJmx0OyAwKSB7ICAvKiBSZXRyeSwgY2hpcCB3YXMgaW4gc3RhbmRieSAqLwogCQl1c2xlZXBfcmFuZ2UoMTAwMCwgNDAwMCk7CkBAIC0yMTEsNiAmIzQzOzI1OCw4IEBAIHN0YXRpYyBpbnQgc3RfbmNpX2kyY19wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQogCQlyZXR1cm4gLUVOT01FTTsKIAogCXBoeS0mZ3Q7aTJjX2RldiA9IGNsaWVudDsKJiM0MzsJcGh5LSZndDtyYXdfbmNpID0gKHVpbnRwdHJfdClkZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KSA9PQomIzQzOwkJCVNUX05DSV9JMkNfUFJPVE9fUkFXX05DSTsKIAogCWkyY19zZXRfY2xpZW50ZGF0YShjbGllbnQsIHBoeSk7CiAKQEAgLTIyNSwxOSAmIzQzOzI3NCwzMSBAQCBzdGF0aWMgaW50IHN0X25jaV9pMmNfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKIAkJcmV0dXJuIC1FTk9ERVY7CiAJfQogCiYjNDM7CXIgPSBkZXZtX3JlZ3VsYXRvcl9nZXRfZW5hYmxlX29wdGlvbmFsKGRldiwgJiMzNDt2ZGQtaW8mIzM0Oyk7CiYjNDM7CWlmIChyICZhbXA7JmFtcDsgciAhPSAtRU5PREVWKQomIzQzOwkJcmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCByLCAmIzM0O2ZhaWxlZCB0byBlbmFibGUgdmRkLWlvXG4mIzM0Oyk7CiYjNDM7CiYjNDM7CXIgPSBQVFJfRVJSX09SX1pFUk8oZGV2bV9jbGtfZ2V0X29wdGlvbmFsX2VuYWJsZWQoZGV2LCBOVUxMKSk7CiYjNDM7CWlmIChyKQomIzQzOwkJcmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCByLCAmIzM0O2ZhaWxlZCB0byBlbmFibGUgY2xvY2tcbiYjMzQ7KTsKJiM0MzsKIAlwaHktJmd0O3NlX3N0YXR1cy5pc19lc2VfcHJlc2VudCA9CiAJCQkJZGV2aWNlX3Byb3BlcnR5X3JlYWRfYm9vbChkZXYsICYjMzQ7ZXNlLXByZXNlbnQmIzM0Oyk7CiAJcGh5LSZndDtzZV9zdGF0dXMuaXNfdWljY19wcmVzZW50ID0KIAkJCQlkZXZpY2VfcHJvcGVydHlfcmVhZF9ib29sKGRldiwgJiMzNDt1aWNjLXByZXNlbnQmIzM0Oyk7CiAKIAlyID0gbmRsY19wcm9iZShwaHksICZhbXA7aTJjX3BoeV9vcHMsICZhbXA7Y2xpZW50LSZndDtkZXYsCi0JCQlTVF9OQ0lfRlJBTUVfSEVBRFJPT00sIFNUX05DSV9GUkFNRV9UQUlMUk9PTSwKJiM0MzsJCQlwaHktJmd0O3Jhd19uY2kgPyBTVF9OQ0lfUkFXX0ZSQU1FX0hFQURST09NIDoKJiM0MzsJCQkJICAgICAgIFNUX05DSV9GUkFNRV9IRUFEUk9PTSwKJiM0MzsJCQlTVF9OQ0lfRlJBTUVfVEFJTFJPT00sCiAJCQkmYW1wO3BoeS0mZ3Q7bmRsYywgJmFtcDtwaHktJmd0O3NlX3N0YXR1cyk7CiAJaWYgKHIgJmx0OyAwKSB7CiAJCW5mY19lcnIoJmFtcDtjbGllbnQtJmd0O2RldiwgJiMzNDtVbmFibGUgdG8gcmVnaXN0ZXIgbmRsYyBsYXllclxuJiMzNDspOwogCQlyZXR1cm4gcjsKIAl9CiAKJiM0MzsJcGh5LSZndDtuZGxjLSZndDtyYXdfbmNpID0gcGh5LSZndDtyYXdfbmNpOwomIzQzOwogCXBoeS0mZ3Q7aXJxX2FjdGl2ZSA9IHRydWU7CiAJciA9IGRldm1fcmVxdWVzdF90aHJlYWRlZF9pcnEoJmFtcDtjbGllbnQtJmd0O2RldiwgY2xpZW50LSZndDtpcnEsIE5VTEwsCiAJCQkJc3RfbmNpX2lycV90aHJlYWRfZm4sCkBAIC0yNTcsMjMgJiM0MzszMTgsMjUgQEAgc3RhdGljIHZvaWQgc3RfbmNpX2kyY19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKIH0KIAogc3RhdGljIGNvbnN0IHN0cnVjdCBpMmNfZGV2aWNlX2lkIHN0X25jaV9pMmNfaWRfdGFibGVbXSA9IHsKLQl7IC5uYW1lID0gU1RfTkNJX0RSSVZFUl9OQU1FIH0sCi0JeyB9CiYjNDM7CXsgU1RfTkNJX0RSSVZFUl9OQU1FIH0sCiYjNDM7CXt9CiB9OwogTU9EVUxFX0RFVklDRV9UQUJMRShpMmMsIHN0X25jaV9pMmNfaWRfdGFibGUpOwogCi1zdGF0aWMgY29uc3Qgc3RydWN0IGFjcGlfZGV2aWNlX2lkIHN0X25jaV9pMmNfYWNwaV9tYXRjaFtdID0gewotCXsgLmlkID0gJiMzNDtTTU8yMTAxJiMzNDsgfSwKLQl7IC5pZCA9ICYjMzQ7U01PMjEwMiYjMzQ7IH0sCi0JeyB9CiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBhY3BpX2RldmljZV9pZCBzdF9uY2lfaTJjX2FjcGlfbWF0Y2hbXSBfX21heWJlX3VudXNlZCA9IHsKJiM0MzsJeyYjMzQ7U01PMjEwMSYjMzQ7fSwKJiM0MzsJeyYjMzQ7U01PMjEwMiYjMzQ7fSwKJiM0MzsJe30KIH07CiBNT0RVTEVfREVWSUNFX1RBQkxFKGFjcGksIHN0X25jaV9pMmNfYWNwaV9tYXRjaCk7CiAKLXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIG9mX3N0X25jaV9pMmNfbWF0Y2hbXSA9IHsKLQl7IC5jb21wYXRpYmxlID0gJiMzNDtzdCxzdDIxbmZjYi1pMmMmIzM0OyB9LAotCXsgLmNvbXBhdGlibGUgPSAmIzM0O3N0LHN0MjFuZmNiX2kyYyYjMzQ7IH0sCi0JeyAuY29tcGF0aWJsZSA9ICYjMzQ7c3Qsc3QyMW5mY2MtaTJjJiMzNDsgfSwKLQl7IH0KJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBvZl9zdF9uY2lfaTJjX21hdGNoW10gX19tYXliZV91bnVzZWQgPSB7CiYjNDM7CXsgLmNvbXBhdGlibGUgPSAmIzM0O3N0LHN0MjFuZmNiLWkyYyYjMzQ7LCB9LAomIzQzOwl7IC5jb21wYXRpYmxlID0gJiMzNDtzdCxzdDIxbmZjYl9pMmMmIzM0OywgfSwKJiM0MzsJeyAuY29tcGF0aWJsZSA9ICYjMzQ7c3Qsc3QyMW5mY2MtaTJjJiMzNDssIH0sCiYjNDM7CXsgLmNvbXBhdGlibGUgPSAmIzM0O3N0LHN0MjFuZmNkJiMzNDssCiYjNDM7CSAgLmRhdGEgPSAodm9pZCAqKVNUX05DSV9JMkNfUFJPVE9fUkFXX05DSSB9LAomIzQzOwl7fQogfTsKIE1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIG9mX3N0X25jaV9pMmNfbWF0Y2gpOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25mYy9zdC1uY2kvbmRsYy5jIGIvZHJpdmVycy9uZmMvc3QtbmNpL25kbGMuYwppbmRleCBiZTQ4MDg4NTljZmE5Li5iMzE5MjQ2MGM5NmUzIDEwMDY0NAotLS0gYS9kcml2ZXJzL25mYy9zdC1uY2kvbmRsYy5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmMKQEAgLTYyLDggJiM0Mzs2Miw5IEBAIHZvaWQgbmRsY19jbG9zZShzdHJ1Y3QgbGx0X25kbGMgKm5kbGMpCiAJLyogdG9nZ2xlIHJlc2V0IHBpbiAqLwogCW5kbGMtJmd0O29wcy0mZ3Q7ZW5hYmxlKG5kbGMtJmd0O3BoeV9pZCk7CiAKLQluY2lfcHJvcF9jbWQobmRsYy0mZ3Q7bmRldiwgU1RfTkNJX0NPUkVfUFJPUCwKLQkJICAgICBzaXplb2Yoc3RydWN0IG5jaV9tb2RlX3NldF9jbWQpLCAoX191OCAqKSZhbXA7Y21kKTsKJiM0MzsJaWYgKCFuZGxjLSZndDtyYXdfbmNpKQomIzQzOwkJbmNpX3Byb3BfY21kKG5kbGMtJmd0O25kZXYsIFNUX05DSV9DT1JFX1BST1AsCiYjNDM7CQkJICAgICBzaXplb2Yoc3RydWN0IG5jaV9tb2RlX3NldF9jbWQpLCAoX191OCAqKSZhbXA7Y21kKTsKIAogCW5kbGMtJmd0O3Bvd2VyZWQgPSAwOwogCW5kbGMtJmd0O29wcy0mZ3Q7ZGlzYWJsZShuZGxjLSZndDtwaHlfaWQpOwpAQCAtNzIsMTEgJiM0Mzs3MywxMyBAQCBFWFBPUlRfU1lNQk9MKG5kbGNfY2xvc2UpOwogCiBpbnQgbmRsY19zZW5kKHN0cnVjdCBsbHRfbmRsYyAqbmRsYywgc3RydWN0IHNrX2J1ZmYgKnNrYikKIHsKLQkvKiBhZGQgbmRsYyBoZWFkZXIgKi8KLQl1OCBwY2IgPSBQQ0JfVFlQRV9EQVRBRlJBTUUgfCBQQ0JfREFUQUZSQU1FX1JFVFJBTlNNSVRfTk8gfAotCQlQQ0JfRlJBTUVfQ1JDX0lORk9fTk9UUFJFU0VOVDsKJiM0MzsJaWYgKCFuZGxjLSZndDtyYXdfbmNpKSB7CiYjNDM7CQkvKiBhZGQgbmRsYyBoZWFkZXIgKi8KJiM0MzsJCXU4IHBjYiA9IFBDQl9UWVBFX0RBVEFGUkFNRSB8IFBDQl9EQVRBRlJBTUVfUkVUUkFOU01JVF9OTyB8CiYjNDM7CQkJUENCX0ZSQU1FX0NSQ19JTkZPX05PVFBSRVNFTlQ7CiAKLQkqKHU4ICopc2tiX3B1c2goc2tiLCAxKSA9IHBjYjsKJiM0MzsJCSoodTggKilza2JfcHVzaChza2IsIDEpID0gcGNiOwomIzQzOwl9CiAJc2tiX3F1ZXVlX3RhaWwoJmFtcDtuZGxjLSZndDtzZW5kX3EsIHNrYik7CiAKIAlzY2hlZHVsZV93b3JrKCZhbXA7bmRsYy0mZ3Q7c21fd29yayk7CkBAIC0xMDMsNiAmIzQzOzEwNiwxMCBAQCBzdGF0aWMgdm9pZCBsbHRfbmRsY19zZW5kX3F1ZXVlKHN0cnVjdCBsbHRfbmRsYyAqbmRsYykKIAkJCW5kbGMtJmd0O2hhcmRfZmF1bHQgPSByOwogCQkJYnJlYWs7CiAJCX0KJiM0MzsJCWlmIChuZGxjLSZndDtyYXdfbmNpKSB7CiYjNDM7CQkJa2ZyZWVfc2tiKHNrYik7CiYjNDM7CQkJY29udGludWU7CiYjNDM7CQl9CiAJCXRpbWVfc2VudCA9IGppZmZpZXM7CiAJCSoodW5zaWduZWQgbG9uZyAqKXNrYi0mZ3Q7Y2IgPSB0aW1lX3NlbnQ7CiAKQEAgLTE1NCw2ICYjNDM7MTYxLDEwIEBAIHN0YXRpYyB2b2lkIGxsdF9uZGxjX3Jjdl9xdWV1ZShzdHJ1Y3QgbGx0X25kbGMgKm5kbGMpCiAJCXByX2RlYnVnKCYjMzQ7cmN2UWxlbj0lZFxuJiMzNDssIG5kbGMtJmd0O3Jjdl9xLnFsZW4pOwogCiAJd2hpbGUgKChza2IgPSBza2JfZGVxdWV1ZSgmYW1wO25kbGMtJmd0O3Jjdl9xKSkgIT0gTlVMTCkgewomIzQzOwkJaWYgKG5kbGMtJmd0O3Jhd19uY2kpIHsKJiM0MzsJCQluY2lfcmVjdl9mcmFtZShuZGxjLSZndDtuZGV2LCBza2IpOwomIzQzOwkJCWNvbnRpbnVlOwomIzQzOwkJfQogCQlwY2IgPSBza2ItJmd0O2RhdGFbMF07CiAJCXNrYl9wdWxsKHNrYiwgMSk7CiAJCWlmICgocGNiICZhbXA7IFBDQl9UWVBFX01BU0spID09IFBDQl9UWVBFX1NVUEVSVklTT1IpIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmggYi9kcml2ZXJzL25mYy9zdC1uY2kvbmRsYy5oCmluZGV4IGMyNGNlOWIwZGY1MmUuLjVjMWY4YmFmMDQ3MTggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZmMvc3QtbmNpL25kbGMuaApAQCAtMzksNiAmIzQzOzM5LDggQEAgc3RydWN0IGxsdF9uZGxjIHsKIAkgKi8KIAlpbnQgaGFyZF9mYXVsdDsKIAlpbnQgcG93ZXJlZDsKJiM0MzsJLyogU1QyMU5GQ0Q6IHJhdyBOQ0kgb24gdGhlIHdpcmUsIG5vIE5ETEMgUENCIC8gQUNLIHRpbWVycyAqLwomIzQzOwlib29sIHJhd19uY2k7CiB9OwogCiBpbnQgbmRsY19vcGVuKHN0cnVjdCBsbHRfbmRsYyAqbmRsYyk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25mYy9zdC1uY2kvc2UuYyBiL2RyaXZlcnMvbmZjL3N0LW5jaS9zZS5jCmluZGV4IDYwN2VjNzY4ZWI3YjQuLjQ0Y2MxMDJiY2RlMjEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmZjL3N0LW5jaS9zZS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmZjL3N0LW5jaS9zZS5jCkBAIC02MjEsNiAmIzQzOzYyMSw5IEBAIGludCBzdF9uY2lfZGlzY292ZXJfc2Uoc3RydWN0IG5jaV9kZXYgKm5kZXYpCiAJaW50IHNlX2NvdW50ID0gMDsKIAlzdHJ1Y3Qgc3RfbmNpX2luZm8gKmluZm8gPSBuY2lfZ2V0X2RydmRhdGEobmRldik7CiAKJiM0MzsJaWYgKGluZm8tJmd0O25kbGMtJmd0O3Jhd19uY2kpCiYjNDM7CQlyZXR1cm4gMDsKJiM0MzsKIAlyID0gc3RfbmNpX2hjaV9uZXR3b3JrX2luaXQobmRldik7CiAJaWYgKHIgIT0gMCkKIAkJcmV0dXJuIHI7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIwIDIxOjAxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY5MTgKCQkJCQkJCW91dHB1dDogMjQKCQkJCQkJCXRob3VnaHRzOiAyNTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgU1QtTkNJIE5GQyBEcml2ZXIgUGF0Y2ggU2VyaWVzKioKCk9rYXksIHNvIHRoZXJlJiMzOTtzIGEgcGF0Y2ggc2VyaWVzIGZvciB0aGUgYHN0LW5jaWAgTkZDIGRyaXZlci4gU2VlbXMgbGlrZSBpdCYjMzk7cyBhZGRpbmcgc3VwcG9ydCBmb3IgYHN0LHN0MjFuZmNkYCwgd2hpY2ggaXMgaW50ZXJlc3RpbmcgYmVjYXVzZSBpdCYjMzk7cyB1c2luZyAmIzM0O3JhdyBOQ0kmIzM0OyBvdmVyIEkyQyBpbnN0ZWFkIG9mIHRoZSB1c3VhbCBORExDIHByb3RvY29sLiBJIG5lZWQgdG8gdGFrZSBhIGNsb3NlciBsb29rIGF0IHRoZXNlIGNoYW5nZXM7IHRoZXkmIzM5O3JlIHRvdWNoaW5nIGBkcml2ZXJzL25mYy9zdC1uY2kvaTJjLmNgLCBgZHJpdmVycy9uZmMvc3QtbmNpL2NvcmUuY2AsIGBkcml2ZXJzL25mYy9zdC1uY2kvbmRsYy5jYCwgYW5kIGBkcml2ZXJzL25mYy9zdC1uY2kvc2UuY2AsIHNvIGl0JiMzOTtzIHF1aXRlIGEgYml0IG1vcmUgaW52b2x2ZWQgdGhhbiBhIHNpbXBsZSBidWcgZml4LgoKTXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzOiBJcyB0aGlzIHJlYWNoYWJsZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50PyBUaGlzIGRyaXZlciBpcyBJMkMgYmFzZWQgZm9yIHRoZSBORkMgY29udHJvbGxlci4gSTJDIGRldmljZXMgKmNhbiogYmUgaW5zdGFudGlhdGVkIGluIFFFTVUgb3IgdmlhIGBpMmMtc3R1YmAgb3Igc3lzZnMuIFRoZSB1c3VhbCBhcHByb2FjaCB3b3VsZCBiZSB0byBzZWUgaWYgYHN5emthbGxlcmAgY2FuIGZ1enogSTJDIGRldmljZXMgYnkgaW5qZWN0aW5nIEkyQyB0cmFmZmljIG9yIGluc3RhbnRpYXRpbmcgdGhlbSB2aWEgc3lzZnMuIEFoLCB5ZXMsIEkgcmVjYWxsIG5vdywgc3l6a2FsbGVyIGRvZXMgaGF2ZSBzb21lIEkyQyBmdXp6aW5nIHN1cHBvcnQsIHR5cGljYWxseSB3aXRoIGAvZGV2L2kyYy0qYCBvciBieSBpbmplY3RpbmcgZGV2aWNlcy4KClRoZSBjcml0aWNhbCBxdWVzdGlvbiBoZXJlIGlzIHdoZXRoZXIgb3Igbm90IHRoaXMgYHN0LW5jaWAgZnVuY3Rpb25hbGl0eSBpcyBhY3R1YWxseSByZWFjaGFibGUgYnkgdGhlIGZ1enplcnMuIFNvLCBsZXQmIzM5O3Mgc3RhcnQgd2l0aCBhIHF1aWNrIHNlYXJjaCB0byBzZWUgaWYgdGhlIHByb2JlIGZ1bmN0aW9uIGBzdF9uY2lfaTJjX3Byb2JlYCBpcyBhY3R1YWxseSBwcmVzZW50LiBJIHdpbGwgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdGhpcyB3aWxsIGxvb2sgbGlrZSB0byBmdXp6IHRoaXMsIGFuZCBhc3Nlc3MgaWYgaXQmIzM5O3MgZXZlbiBwcmFjdGljYWwuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjAgMjE6MDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3RfbmNpX2kyY19wcm9iZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25mYy9zdC1uY2kvaTJjLmM9MjQwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgYWNwaV9ncGlvX21hcHBpbmcgYWNwaV9zdF9uY2lfZ3Bpb3NbXSA9IHtcbi0tXG5kcml2ZXJzL25mYy9zdC1uY2kvaTJjLmMtMjQ0LVxuZHJpdmVycy9uZmMvc3QtbmNpL2kyYy5jOjI0NTpzdGF0aWMgaW50IHN0X25jaV9pMmNfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcbmRyaXZlcnMvbmZjL3N0LW5jaS9pMmMuYy0yNDYte1xuLS1cbmRyaXZlcnMvbmZjL3N0LW5jaS9pMmMuYz0zNDM9c3RhdGljIHN0cnVjdCBpMmNfZHJpdmVyIHN0X25jaV9pMmNfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmZjL3N0LW5jaS9pMmMuYy0zNDgtXHR9LFxuZHJpdmVycy9uZmMvc3QtbmNpL2kyYy5jOjM0OTpcdC5wcm9iZSA9IHN0X25jaV9pMmNfcHJvYmUsXG5kcml2ZXJzL25mYy9zdC1uY2kvaTJjLmMtMzUwLVx0LmlkX3RhYmxlID0gc3RfbmNpX2kyY19pZF90YWJsZSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMCAyMTowMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3ODU3CgkJCQkJCQlvdXRwdXQ6IDIxCgkJCQkJCQl0aG91Z2h0czogNTI0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgdGhlIEkyQyBEcml2ZXI6IEEgVGhvdWdodCBQcm9jZXNzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIEkyQyBkcml2ZXIuIFRoZSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMsIGNhbiB0aGlzIHRoaW5nIGJlIGZ1enplZD8gTXkgaW5pdGlhbCB0aG91Z2h0IGdvZXMgdG8gU3l6a2FsbGVyLCBuYXR1cmFsbHkuIENhbiBpdCBoYW5kbGUgSTJDIGRyaXZlcnM/IEkgKnRob3VnaHQqIFN5emthbGxlciBoYWQgc29tZSBwc2V1ZG8tc3lzY2FsbHMsIG1heWJlIHNvbWV0aGluZyBsaWtlIGBzeXpfaTJjX3NldHVwYCB0byBnZXQgdGhpbmdzIHJvbGxpbmcsIGJ1dCBubywgdGhlIGRvY3VtZW50YXRpb24gZXhwbGljaXRseSBzYXlzIHRob3NlIGFyZW4mIzM5O3QgYXZhaWxhYmxlIGZvciBkaXJlY3QgdXNhZ2UuIEhtbSwgbWF5YmUgdGhlcmUmIzM5O3MgYSB3b3JrYXJvdW5kLCB1c2luZyBhIGBzeXpfZ2VuZXRsaW5rX2dldF9mYW1pbHlgLXR5cGUgYXBwcm9hY2g/IFByb2JhYmx5IG5vdCwgSSBuZWVkIHRvIGZvY3VzIG9uIGluc3RhbnRpYXRpbmcgdGhlc2UgSTJDIGRldmljZXMgZmlyc3QuCgpSaWdodCwgSSYjMzk7bSBnZXR0aW5nIGJvZ2dlZCBkb3duIGluIHRoZSBTeXprYWxsZXIgZGV0YWlscywgYW5kIEkgY2FuJiMzOTt0IGV2ZW4gKnNlZSogaWYgdGhvc2UgcHNldWRvLXN5c2NhbGxzIGV4aXN0LiBMZXQgbWUgdHJ5IGEgZGlmZmVyZW50IHRhY2suIEJhY2sgdG8gZnVuZGFtZW50YWxzOiBkb2VzIFN5emthbGxlciAqZXZlbiogYWxsb3cgZm9yIHRoZSBpbnN0YW50aWF0aW9uIG9mIEkyQyBkZXZpY2VzPyBNeSBtZW1vcnkgc2F5cyB5ZXMsIHRoYXQgaXQmIzM5O3Mgb2Z0ZW4gZG9uZSB0aHJvdWdoIHN5c2ZzIG1hbmlwdWxhdGlvbiwgc29tZXRoaW5nIGxpa2UgYC9zeXMvYnVzL2kyYy9kZXZpY2VzL2kyYy1YL25ld19kZXZpY2VgLiAKCk5vdywgdGhlIGltcG9ydGFudCBjYXZlYXQsIHRoZSBwcm9tcHQgcmVtaW5kcyBtZSB0byB2ZXJpZnkgd2hldGhlciB0aGlzIGRyaXZlciBpcyBhY3R1YWxseSByZWFjaGFibGUgd2l0aGluIGEgUUVNVSBlbnZpcm9ubWVudC4gVGhlIHByb21wdCBnYXZlIHNvbWUgZXhhbXBsZXMgb2YgZHJpdmVycyB0aGF0IGFyZW4mIzM5O3QsIGxpa2UgdmVuZG9yLXNwZWNpZmljIGhhcmR3YXJlIG9yIGRyaXZlciB1bmJpbmRpbmcgY2FsbGJhY2tzLCBzbyBJIG5lZWQgdG8ga2VlcCB0aGF0IGluIG1pbmQuCgpPa2F5LCBpcyB0aGUgYHN0LW5jaWAgZHJpdmVyIEkmIzM5O20gbG9va2luZyBhdCBldmVuIGFuIEkyQyBkcml2ZXI/IFF1aWNrIHNhbml0eSBjaGVjazogeWVzLCBpdCYjMzk7cyBgc3RfbmNpX2kyY19kcml2ZXJgLiBOb3csIGNhbiBJIGluc3RhbnRpYXRlIGl0IGluIFFFTVU/IFllcywgbG9va3MgbGlrZSBpdCYjMzk7cyBkb25lIHZpYSBgbmV3X2RldmljZWAgaW4gc3lzZnMsIHNvIEkgY2FuIHByb2JhYmx5IGNvbmZpcm0gdGhpcy4gCgpTbyBmYXIsIHNvIGdvb2QuIExvb2tzIGxpa2UgaXQmIzM5O3MgcmVhY2hhYmxlIGFuZCBJIGNhbiBiZWdpbiB0aGlua2luZyBhYm91dCBob3cgdG8gZ2V0IHRoZSBjb25maWd1cmF0aW9uIGZvciB0aGUgZHJpdmVyLiBJIG5lZWQgdG8gZGlnIGludG8gdGhlIEtjb25maWcgZm9yIGBzdC1uY2lgIHRvIGdldCBhbGwgdGhlIGRldGFpbHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjAgMjE6MDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5GQ19TVF9OQ0kmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZmMvc3QtbmNpL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmRyaXZlcnMvbmZjL3N0LW5jaS9LY29uZmlnOjI6Y29uZmlnIE5GQ19TVF9OQ0lcbmRyaXZlcnMvbmZjL3N0LW5jaS9LY29uZmlnLTMtXHR0cmlzdGF0ZVxuLS1cbmRyaXZlcnMvbmZjL3N0LW5jaS9LY29uZmlnLTgtXG5kcml2ZXJzL25mYy9zdC1uY2kvS2NvbmZpZzo5OmNvbmZpZyBORkNfU1RfTkNJX0kyQ1xuZHJpdmVycy9uZmMvc3QtbmNpL0tjb25maWctMTAtXHR0cmlzdGF0ZSBcJiMzNDtTVE1pY3JvZWxlY3Ryb25pY3MgU1QgTkNJIE5GQyBkcml2ZXIgKEkyQylcJiMzNDtcbi0tXG5kcml2ZXJzL25mYy9zdC1uY2kvS2NvbmZpZy0yMC1cbmRyaXZlcnMvbmZjL3N0LW5jaS9LY29uZmlnOjIxOmNvbmZpZyBORkNfU1RfTkNJX1NQSVxuZHJpdmVycy9uZmMvc3QtbmNpL0tjb25maWctMjItXHR0cmlzdGF0ZSBcJiMzNDtTVE1pY3JvZWxlY3Ryb25pY3MgU1QgTkNJIE5GQyBkcml2ZXIgKFNQSSlcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMCAyMTowMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5MDg2CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIHRoZSBvbmUgcmVhZGluZyBgZHJpdmVycy9uZmMvc3QtbmNpL0tjb25maWdgLCBrZWVwaW5nIGluIG1pbmQgbXkgZXhwZXJ0aXNlOgoKKipEaXZpbmcgaW50byB0aGUgTkZDIERyaXZlciBDb25maWd1cmF0aW9uKioKCk9rYXksIHRpbWUgdG8gZGlnIGludG8gdGhlIGBLY29uZmlnYCBmaWxlIGZvciB0aGUgU1RNaWNyb2VsZWN0cm9uaWNzIE5GQyBjb250cm9sbGVyIGRyaXZlci4gVGhpcyBpcyB3aGVyZSB0aGUgcmVhbCBtZWF0IG9mIHRoZSBidWlsZCBjb25maWd1cmF0aW9uIGxpZXMuIEkmIzM5O20gaW1tZWRpYXRlbHkgbG9va2luZyBmb3IgdGhlIHRvcC1sZXZlbCBvcHRpb25zLCB0aGUgb25lcyB0aGF0IGNvbnRyb2wgd2hldGhlciB0aGUgZW50aXJlIGRyaXZlciBpcyBldmVuICpjb25zaWRlcmVkKiBmb3IgaW5jbHVzaW9uIGluIHRoZSBrZXJuZWwgYnVpbGQuIEkgZXhwZWN0IHRvIHNlZSBgQ09ORklHX05GQ19TVF9OQ0lgIG9yIHNvbWV0aGluZyBzaW1pbGFyIGFzIHRoZSBwcmltYXJ5IHN3aXRjaC4gSeKAmWxsIGJlIHNjYW5uaW5nIGZvciBkZXBlbmRlbmNpZXMg4oCTIHdoaWNoIG90aGVyIGtlcm5lbCBmZWF0dXJlcyBvciBoYXJkd2FyZSBjb21wb25lbnRzIGRvZXMgdGhpcyBkcml2ZXIgcmVseSBvbj8gTGlrZWx5IHRoaW5ncyBsaWtlIEkyQywgU1BJLCBvciBVQVJUIHN1cHBvcnQsIGRlcGVuZGluZyBvbiB0aGUgc3BlY2lmaWMgU1QgTkNJIGltcGxlbWVudGF0aW9uLgoKVGhlbiBJJiMzOTtsbCB3YW50IHRvIHVuZGVyc3RhbmQgdGhlIHN1Yi1vcHRpb25zLiBEb2VzIGl0IG9mZmVyIGRpZmZlcmVudCB2YXJpYW50cyBvZiB0aGUgU1QgTkNJIGNvbnRyb2xsZXI/IFBlcmhhcHMgZGlmZmVyZW50IGhhcmR3YXJlIHJldmlzaW9ucywgb3Igc3VwcG9ydCBmb3Igc3BlY2lmaWMgY29tbXVuaWNhdGlvbiBwcm90b2NvbHMgKGxpa2UgSVNPL0lFQyAxNDQ0MyBvciBJU08vSUVDIDE1NjkzKS4gSSBuZWVkIHRvIHNlZSBob3cgdGhleSYjMzk7cmUgZGlmZmVyZW50aWF0ZWQgYW5kLCBtb3JlIGltcG9ydGFudGx5LCBob3cgdGhlaXIgZGVmYXVsdCB2YWx1ZXMgYXJlIHNldC4gQXJlIHRoZXJlIGFueSBkZWZhdWx0IHZhbHVlcyB0aGF0IEkgbmVlZCB0byBiZSBjb25jZXJuZWQgYWJvdXQgaW4gdGVybXMgb2YgcGVyZm9ybWFuY2Ugb3IgcG93ZXIgY29uc3VtcHRpb24/CgpJJiMzOTttIGtlZXBpbmcgYW4gZXllIG91dCBmb3IgYW55IHRyaXN0YXRlIG9yIGJvb2xlYW4gb3B0aW9ucyB0aGF0IGNvbnRyb2wgZmVhdHVyZXMgSSB3b3VsZCB0eXBpY2FsbHkgZXhwZWN0IHRvIGJlIGNvbmZpZ3VyYWJsZSAoZXJyb3IgaGFuZGxpbmcsIGRlYnVnIGxldmVscywgcG9sbGluZyB2cy4gaW50ZXJydXB0LWRyaXZlbiBvcGVyYXRpb24sIHNwZWNpZmljIGZpcm13YXJlIHZlcnNpb25zLCBldGMuKS4gSSBuZWVkIHRvIGtub3cgdGhlIHBvdGVudGlhbCBjb25maWd1cmFiaWxpdHkgb2YgdGhlIGRyaXZlci4gQXJlIHRoZXJlIGNvbmRpdGlvbmFsIGRlcGVuZGVuY2llcz8gRm9yIGV4YW1wbGUsIGlmIEkgZW5hYmxlIGEgY2VydGFpbiBmZWF0dXJlLCBkb2VzIGl0IGF1dG9tYXRpY2FsbHkgcmVxdWlyZSBhbm90aGVyPwoKRmluYWxseSwgSeKAmWxsIGJlIGNoZWNraW5nIGZvciBoZWxwIHRleHQuIEdvb2QgS2NvbmZpZyBmaWxlcyBwcm92aWRlIGNsZWFyLCBjb25jaXNlIGRlc2NyaXB0aW9ucyBvZiBlYWNoIG9wdGlvbi4gVGhpcyBoZWxwIHRleHQgaXMgY3J1Y2lhbCBmb3IgdW5kZXJzdGFuZGluZyB0aGUgKnB1cnBvc2UqIG9mIGVhY2ggc2V0dGluZyBhbmQgZGV0ZXJtaW5pbmcgdGhlIGFwcHJvcHJpYXRlIHZhbHVlcyBmb3IgYSBnaXZlbiBzeXN0ZW0gY29uZmlndXJhdGlvbi4gSSYjMzk7bSBhbHJlYWR5IGFudGljaXBhdGluZyBuZWVkaW5nIHRvIHJldmlldyB0aGUgYWNjb21wYW55aW5nIGRvY3VtZW50YXRpb24gdG8gZnVsbHkgZ3Jhc3AgdGhlIG51YW5jZXMsIGJ1dCB0aGUgS2NvbmZpZyBmaWxlIHNob3VsZCBiZSB0aGUgZmlyc3QgcGxhY2UgdG8gc3RhcnQuIEkmIzM5O20gaG9waW5nIGl0JiMzOTtzIHdlbGwtc3RydWN0dXJlZCBhbmQgdXNlcyBjbGVhciBuYW1pbmcgY29udmVudGlvbnMg4oCTIG1ha2VzIGxpZmUgc28gbXVjaCBlYXNpZXIhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjAgMjE6MDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25mYy9zdC1uY2kvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMzAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdGNvbmZpZyBORkNfU1RfTkNJXG4gICAzOlx0XHR0cmlzdGF0ZVxuICAgNDpcdFx0aGVscFxuICAgNTpcdFx0ICBTVE1pY3JvZWxlY3Ryb25pY3MgTkZDIE5DSSBjaGlwcyBjb3JlIGRyaXZlci4gSXQgaW1wbGVtZW50cyB0aGUgY2hpcHNldFxuICAgNjpcdFx0ICBOQ0kgbG9naWMgYW5kIGhvb2tzIGludG8gdGhlIE5GQyBrZXJuZWwgQVBJcy4gUGh5c2ljYWwgbGF5ZXJzIHdpbGxcbiAgIDc6XHRcdCAgcmVnaXN0ZXIgYWdhaW5zdCBpdC5cbiAgIDg6XHRcbiAgIDk6XHRjb25maWcgTkZDX1NUX05DSV9JMkNcbiAgMTA6XHRcdHRyaXN0YXRlIFwmIzM0O1NUTWljcm9lbGVjdHJvbmljcyBTVCBOQ0kgTkZDIGRyaXZlciAoSTJDKVwmIzM0O1xuICAxMTpcdFx0ZGVwZW5kcyBvbiBORkNfTkNJIFx1MDAyNlx1MDAyNiBJMkNcbiAgMTI6XHRcdHNlbGVjdCBORkNfU1RfTkNJXG4gIDEzOlx0XHRoZWxwXG4gIDE0Olx0XHQgIFRoaXMgbW9kdWxlIGFkZHMgc3VwcG9ydCBmb3IgYW4gSTJDIGludGVyZmFjZSB0byB0aGVcbiAgMTU6XHRcdCAgU1RNaWNyb2VsZWN0cm9uaWNzIE5GQyBOQ0kgY2hpcHMgZmFtaWx5LlxuICAxNjpcdFx0ICBTZWxlY3QgdGhpcyBpZiB5b3VyIHBsYXRmb3JtIGlzIHVzaW5nIHRoZSBpMmMgYnVzLlxuICAxNzpcdFxuICAxODpcdFx0ICBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGEgbW9kdWxlLCBpdCYjMzk7bGwgYmUgY2FsbGVkIHN0LW5jaV9pMmMuXG4gIDE5Olx0XHQgIFNheSBOIGlmIHVuc3VyZS5cbiAgMjA6XHRcbiAgMjE6XHRjb25maWcgTkZDX1NUX05DSV9TUElcbiAgMjI6XHRcdHRyaXN0YXRlIFwmIzM0O1NUTWljcm9lbGVjdHJvbmljcyBTVCBOQ0kgTkZDIGRyaXZlciAoU1BJKVwmIzM0O1xuICAyMzpcdFx0ZGVwZW5kcyBvbiBORkNfTkNJIFx1MDAyNlx1MDAyNiBTUElcbiAgMjQ6XHRcdHNlbGVjdCBORkNfU1RfTkNJXG4gIDI1Olx0XHRoZWxwXG4gIDI2Olx0XHQgIFRoaXMgbW9kdWxlIGFkZHMgc3VwcG9ydCBmb3IgYW4gU1BJIGludGVyZmFjZSB0byB0aGVcbiAgMjc6XHRcdCAgU1RNaWNyb2VsZWN0cm9uaWNzIE5GQyBOQ0kgY2hpcHMgZmFtaWx5LlxuICAyODpcdFx0ICBTZWxlY3QgdGhpcyBpZiB5b3VyIHBsYXRmb3JtIGlzIHVzaW5nIHRoZSBzcGkgYnVzLlxuICAyOTpcdFxuICAzMDpcdFx0ICBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGEgbW9kdWxlLCBpdCYjMzk7bGwgYmUgY2FsbGVkIHN0LW5jaV9zcGkuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjAgMjE6MDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTAwNDYKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiA0NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipCcmVha2luZyBEb3duIFRoaXMgTkZDIEludGVncmF0aW9uKioKCkFscmlnaHQsIHNvIHdlJiMzOTtyZSBkaXZpbmcgaW50byB0aGlzIE5GQyBpbnRlZ3JhdGlvbiwgYW5kIEkgc2VlIHRoYXQgd2UgbmVlZCBgTkZDX1NUX05DSV9JMkNgLiBOYXR1cmFsbHksIG15IG1pbmQgaW1tZWRpYXRlbHkganVtcHMgdG8gdGhlIGRlcGVuZGVuY2llcy4gRmlyc3QsIEkga25vdyB0aGF0IGBORkNfU1RfTkNJX0kyQ2AgcmVsaWVzIG9uIGJvdGggYE5GQ19OQ0lgIGFuZCBgSTJDYC4gTWFrZXMgc2Vuc2UsIHRoZSBOQ0kgaW50ZXJmYWNlIHVzaW5nIEkyQyB0cmFuc3BvcnQuLi4gc3RhbmRhcmQgc3R1ZmYuIEJlZm9yZSBJIGdvIGZ1cnRoZXIgZG93biB0aGF0IHJhYmJpdCBob2xlLCBJIHJlYWxseSBuZWVkIHRvIGNvbmZpcm0gYE5GQ19OQ0lgIGlzIGNvbmZpZ3VyZWQgY29ycmVjdGx5LiBHb3R0YSBtYWtlIHN1cmUgdGhlIGNvcmUgTkNJIGxheWVyIGlzIGVuYWJsZWQgYmVmb3JlIEkgc3RhcnQgZmlkZGxpbmcgd2l0aCB0aGUgU1Qtc3BlY2lmaWMgaW1wbGVtZW50YXRpb24gb24gdG9wIG9mIGl0LiBMZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3Mgc2V0IGZvciB0aGF0LiBObyBwb2ludCBpbiB3YXN0aW5nIHRpbWUgb24gdGhlIEkyQyBpZiB0aGUgYmFzZSBpc24mIzM5O3Qgc29saWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIwIDIxOjAyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORkNfTkNJJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZmMvbmNpL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbm5ldC9uZmMvbmNpL0tjb25maWc6Mjpjb25maWcgTkZDX05DSVxubmV0L25mYy9uY2kvS2NvbmZpZy0zLVx0ZGVwZW5kcyBvbiBORkNcbi0tXG5uZXQvbmZjL25jaS9LY29uZmlnLTEyLVxubmV0L25mYy9uY2kvS2NvbmZpZzoxMzpjb25maWcgTkZDX05DSV9TUElcbm5ldC9uZmMvbmNpL0tjb25maWctMTQtXHRkZXBlbmRzIG9uIE5GQ19OQ0kgXHUwMDI2XHUwMDI2IFNQSVxuLS1cbm5ldC9uZmMvbmNpL0tjb25maWctMjMtXG5uZXQvbmZjL25jaS9LY29uZmlnOjI0OmNvbmZpZyBORkNfTkNJX1VBUlRcbm5ldC9uZmMvbmNpL0tjb25maWctMjUtXHRkZXBlbmRzIG9uIE5GQ19OQ0kgXHUwMDI2XHUwMDI2IFRUWVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMCAyMTowMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDUxMAoJCQkJCQkJb3V0cHV0OiAxNgoJCQkJCQkJdGhvdWdodHM6IDIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzczoKCioqRGVwZW5kZW5jaWVzIGFuZCBWZXJpZmljYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGBORkNfTkNJYCBoZXJlLCBhbmQgbXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgaXQmIzM5O3MgZ29pbmcgdG8gYmUgZGVwZW5kZW50IG9uIGBORkNgLiBUaGF0JiMzOTtzIGEgcHJldHR5IHN0YW5kYXJkIGFzc3VtcHRpb24sIGJ1dCBJIG5lZWQgdG8gY29uZmlybSBpdC4gVGhlcmUmIzM5O3Mgbm8gcG9pbnQgaW4gZ29pbmcgZG93biBhIHJhYmJpdCBob2xlIHdpdGhvdXQgZmlyc3QgdmVyaWZ5aW5nIHRoZSBmb3VuZGF0aW9uLiBTbywgdGhlIGxvZ2ljYWwgbmV4dCBzdGVwIGlzIHRvIGRyaWxsIGRvd24gaW50byBgTkZDYCBpdHNlbGYuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBiZWhhdmlvdXIgYW5kIGVuc3VyZSBpdCYjMzk7cyBmdW5jdGlvbmluZyBhcyBleHBlY3RlZCBiZWZvcmUgSSBjYW4gbW92ZSBmb3J3YXJkIHdpdGggYE5GQ19OQ0lgLiBJdCYjMzk7cyBhbGwgYWJvdXQgdmFsaWRhdGluZyB0aGUgYmFzZSBsZXZlbCBkZXBlbmRlbmN5LiBHb3R0YSBiZSB0aG9yb3VnaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjAgMjE6MDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5GQyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL202OGsvS2NvbmZpZy5kZXZpY2VzPTM2PWNvbmZpZyBORkJMT0NLXG4tLVxuYXJjaC9tNjhrL0tjb25maWcuZGV2aWNlcy00My1cbmFyY2gvbTY4ay9LY29uZmlnLmRldmljZXM6NDQ6Y29uZmlnIE5GQ09OXG5hcmNoL202OGsvS2NvbmZpZy5kZXZpY2VzLTQ1LVx0dHJpc3RhdGUgXCYjMzQ7TmF0RmVhdCBjb25zb2xlIGRyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmZjL0tjb25maWc9Nj1tZW51IFwmIzM0O05lYXIgRmllbGQgQ29tbXVuaWNhdGlvbiAoTkZDKSBkZXZpY2VzXCYjMzQ7XG4tLVxuZHJpdmVycy9uZmMvS2NvbmZpZy04LVxuZHJpdmVycy9uZmMvS2NvbmZpZzo5OmNvbmZpZyBORkNfVFJGNzk3MEFcbmRyaXZlcnMvbmZjL0tjb25maWctMTAtXHR0cmlzdGF0ZSBcJiMzNDtUZXhhcyBJbnN0cnVtZW50cyBUUkY3OTcwYSBORkMgZHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZmMvS2NvbmZpZy0yMC1cbmRyaXZlcnMvbmZjL0tjb25maWc6MjE6Y29uZmlnIE5GQ19NRUlfUEhZXG5kcml2ZXJzL25mYy9LY29uZmlnLTIyLVx0dHJpc3RhdGUgXCYjMzQ7TUVJIGJ1cyBORkMgZGV2aWNlIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25mYy9LY29uZmlnLTMwLVxuZHJpdmVycy9uZmMvS2NvbmZpZzozMTpjb25maWcgTkZDX1NJTVxuZHJpdmVycy9uZmMvS2NvbmZpZy0zMi1cdHRyaXN0YXRlIFwmIzM0O05GQyBoYXJkd2FyZSBzaW11bGF0b3IgZHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZmMvS2NvbmZpZy00MS1cbmRyaXZlcnMvbmZjL0tjb25maWc6NDI6Y29uZmlnIE5GQ19QT1JUMTAwXG5kcml2ZXJzL25mYy9LY29uZmlnLTQzLVx0dHJpc3RhdGUgXCYjMzQ7U29ueSBORkMgUG9ydC0xMDAgU2VyaWVzIFVTQiBkZXZpY2Ugc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmZjL0tjb25maWctNTEtXG5kcml2ZXJzL25mYy9LY29uZmlnOjUyOmNvbmZpZyBORkNfVklSVFVBTF9OQ0lcbmRyaXZlcnMvbmZjL0tjb25maWctNTMtXHR0cmlzdGF0ZSBcJiMzNDtOQ0kgZGV2aWNlIHNpbXVsYXRvciBkcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25mYy9mZHAvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy9uZmMvZmRwL0tjb25maWc6Mjpjb25maWcgTkZDX0ZEUFxuZHJpdmVycy9uZmMvZmRwL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O0ludGVsIEZEUCBORkMgZHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZmMvZmRwL0tjb25maWctMTQtXG5kcml2ZXJzL25mYy9mZHAvS2NvbmZpZzoxNTpjb25maWcgTkZDX0ZEUF9JMkNcbmRyaXZlcnMvbmZjL2ZkcC9LY29uZmlnLTE2LVx0dHJpc3RhdGUgXCYjMzQ7TkZDIEZEUCBpMmMgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmZjL21pY3JvcmVhZC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5kcml2ZXJzL25mYy9taWNyb3JlYWQvS2NvbmZpZzoyOmNvbmZpZyBORkNfTUlDUk9SRUFEXG5kcml2ZXJzL25mYy9taWNyb3JlYWQvS2NvbmZpZy0zLVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL25mYy9taWNyb3JlYWQvS2NvbmZpZy05LVxuZHJpdmVycy9uZmMvbWljcm9yZWFkL0tjb25maWc6MTA6Y29uZmlnIE5GQ19NSUNST1JFQURfSTJDXG5kcml2ZXJzL25mYy9taWNyb3JlYWQvS2NvbmZpZy0xMS1cdHRyaXN0YXRlIFwmIzM0O0luc2lkZSBTZWN1cmUgTWljcm9yZWFkIGRldmljZSBzdXBwb3J0IChJMkMpXCYjMzQ7XG4tLVxuZHJpdmVycy9uZmMvbWljcm9yZWFkL0tjb25maWctMjEtXG5kcml2ZXJzL25mYy9taWNyb3JlYWQvS2NvbmZpZzoyMjpjb25maWcgTkZDX01JQ1JPUkVBRF9NRUlcbmRyaXZlcnMvbmZjL21pY3JvcmVhZC9LY29uZmlnLTIzLVx0dHJpc3RhdGUgXCYjMzQ7SW5zaWRlIFNlY3VyZSBNaWNyb3JlYWQgZGV2aWNlIHN1cHBvcnQgKE1FSSlcJiMzNDtcbi0tXG5kcml2ZXJzL25mYy9uZmNtcnZsL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmRyaXZlcnMvbmZjL25mY21ydmwvS2NvbmZpZzoyOmNvbmZpZyBORkNfTVJWTFxuZHJpdmVycy9uZmMvbmZjbXJ2bC9LY29uZmlnLTMtXHR0cmlzdGF0ZVxuLS1cbmRyaXZlcnMvbmZjL25mY21ydmwvS2NvbmZpZy05LVxuZHJpdmVycy9uZmMvbmZjbXJ2bC9LY29uZmlnOjEwOmNvbmZpZyBORkNfTVJWTF9VU0JcbmRyaXZlcnMvbmZjL25mY21ydmwvS2NvbmZpZy0xMS1cdHRyaXN0YXRlIFwmIzM0O01hcnZlbGwgTkZDLW92ZXItVVNCIGRyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmZjL25mY21ydmwvS2NvbmZpZy0yMi1cbmRyaXZlcnMvbmZjL25mY21ydmwvS2NvbmZpZzoyMzpjb25maWcgTkZDX01SVkxfVUFSVFxuZHJpdmVycy9uZmMvbmZjbXJ2bC9LY29uZmlnLTI0LVx0dHJpc3RhdGUgXCYjMzQ7TWFydmVsbCBORkMtb3Zlci1VQVJUIGRyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmZjL25mY21ydmwvS2NvbmZpZy0zNC1cbmRyaXZlcnMvbmZjL25mY21ydmwvS2NvbmZpZzozNTpjb25maWcgTkZDX01SVkxfSTJDXG5kcml2ZXJzL25mYy9uZmNtcnZsL0tjb25maWctMzYtXHR0cmlzdGF0ZSBcJiMzNDtNYXJ2ZWxsIE5GQy1vdmVyLUkyQyBkcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25mYy9uZmNtcnZsL0tjb25maWctNDUtXG5kcml2ZXJzL25mYy9uZmNtcnZsL0tjb25maWc6NDY6Y29uZmlnIE5GQ19NUlZMX1NQSVxuZHJpdmVycy9uZmMvbmZjbXJ2bC9LY29uZmlnLTQ3LVx0dHJpc3RhdGUgXCYjMzQ7TWFydmVsbCBORkMtb3Zlci1TUEkgZHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZmMvbnhwLW5jaS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5kcml2ZXJzL25mYy9ueHAtbmNpL0tjb25maWc6Mjpjb25maWcgTkZDX05YUF9OQ0lcbmRyaXZlcnMvbmZjL254cC1uY2kvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7TlhQLU5DSSBORkMgZHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZmMvbnhwLW5jaS9LY29uZmlnLTE0LVxuZHJpdmVycy9uZmMvbnhwLW5jaS9LY29uZmlnOjE1OmNvbmZpZyBORkNfTlhQX05DSV9JMkNcbmRyaXZlcnMvbmZjL254cC1uY2kvS2NvbmZpZy0xNi1cdHRyaXN0YXRlIFwmIzM0O05YUC1OQ0kgSTJDIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25mYy9wbjUzMy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5kcml2ZXJzL25mYy9wbjUzMy9LY29uZmlnOjI6Y29uZmlnIE5GQ19QTjUzM1xuZHJpdmVycy9uZmMvcG41MzMvS2NvbmZpZy0zLVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL25mYy9wbjUzMy9LY29uZmlnLTctXG5kcml2ZXJzL25mYy9wbjUzMy9LY29uZmlnOjg6Y29uZmlnIE5GQ19QTjUzM19VU0JcbmRyaXZlcnMvbmZjL3BuNTMzL0tjb25maWctOS1cdHRyaXN0YXRlIFwmIzM0O05GQyBQTjUzMyBkZXZpY2Ugc3VwcG9ydCAoVVNCKVwmIzM0O1xuLS1cbmRyaXZlcnMvbmZjL3BuNTMzL0tjb25maWctMTgtXG5kcml2ZXJzL25mYy9wbjUzMy9LY29uZmlnOjE5OmNvbmZpZyBORkNfUE41MzNfSTJDXG5kcml2ZXJzL25mYy9wbjUzMy9LY29uZmlnLTIwLVx0dHJpc3RhdGUgXCYjMzQ7TkZDIFBONTMzIGRldmljZSBzdXBwb3J0IChJMkMpXCYjMzQ7XG4tLVxuZHJpdmVycy9uZmMvcG41MzMvS2NvbmZpZy0yOS1cbmRyaXZlcnMvbmZjL3BuNTMzL0tjb25maWc6MzA6Y29uZmlnIE5GQ19QTjUzMl9VQVJUXG5kcml2ZXJzL25mYy9wbjUzMy9LY29uZmlnLTMxLVx0dHJpc3RhdGUgXCYjMzQ7TkZDIFBONTMyIGRldmljZSBzdXBwb3J0IChVQVJUKVwmIzM0O1xuLS1cbmRyaXZlcnMvbmZjL3BuNTQ0L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmRyaXZlcnMvbmZjL3BuNTQ0L0tjb25maWc6Mjpjb25maWcgTkZDX1BONTQ0XG5kcml2ZXJzL25mYy9wbjU0NC9LY29uZmlnLTMtXHR0cmlzdGF0ZVxuLS1cbmRyaXZlcnMvbmZjL3BuNTQ0L0tjb25maWctOS1cbmRyaXZlcnMvbmZjL3BuNTQ0L0tjb25maWc6MTA6Y29uZmlnIE5GQ19QTjU0NF9JMkNcbmRyaXZlcnMvbmZjL3BuNTQ0L0tjb25maWctMTEtXHR0cmlzdGF0ZSBcJiMzNDtOWFAgUE41NDQgZGV2aWNlIHN1cHBvcnQgKEkyQylcJiMzNDtcbi0tXG5kcml2ZXJzL25mYy9wbjU0NC9LY29uZmlnLTIwLVxuZHJpdmVycy9uZmMvcG41NDQvS2NvbmZpZzoyMTpjb25maWcgTkZDX1BONTQ0X01FSVxuZHJpdmVycy9uZmMvcG41NDQvS2NvbmZpZy0yMi1cdHRyaXN0YXRlIFwmIzM0O05YUCBQTjU0NCBkZXZpY2Ugc3VwcG9ydCAoTUVJKVwmIzM0O1xuLS1cbmRyaXZlcnMvbmZjL3MzZndybjUvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy9uZmMvczNmd3JuNS9LY29uZmlnOjI6Y29uZmlnIE5GQ19TM0ZXUk41XG5kcml2ZXJzL25mYy9zM2Z3cm41L0tjb25maWctMy1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy9uZmMvczNmd3JuNS9LY29uZmlnLTktXG5kcml2ZXJzL25mYy9zM2Z3cm41L0tjb25maWc6MTA6Y29uZmlnIE5GQ19TM0ZXUk41X0kyQ1xuZHJpdmVycy9uZmMvczNmd3JuNS9LY29uZmlnLTExLVx0dHJpc3RhdGUgXCYjMzQ7U2Ftc3VuZyBTM0ZXUk41IEkyQyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZmMvczNmd3JuNS9LY29uZmlnLTIyLVxuZHJpdmVycy9uZmMvczNmd3JuNS9LY29uZmlnOjIzOmNvbmZpZyBORkNfUzNGV1JOODJfVUFSVFxuZHJpdmVycy9uZmMvczNmd3JuNS9LY29uZmlnLTI0LSAgICAgICAgdHJpc3RhdGUgXCYjMzQ7U2Ftc3VuZyBTM0ZXUk44MiBVQVJUIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25mYy9zdC1uY2kvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy9uZmMvc3QtbmNpL0tjb25maWc6Mjpjb25maWcgTkZDX1NUX05DSVxuZHJpdmVycy9uZmMvc3QtbmNpL0tjb25maWctMy1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy9uZmMvc3QtbmNpL0tjb25maWctOC1cbmRyaXZlcnMvbmZjL3N0LW5jaS9LY29uZmlnOjk6Y29uZmlnIE5GQ19TVF9OQ0lfSTJDXG5kcml2ZXJzL25mYy9zdC1uY2kvS2NvbmZpZy0xMC1cdHRyaXN0YXRlIFwmIzM0O1NUTWljcm9lbGVjdHJvbmljcyBTVCBOQ0kgTkZDIGRyaXZlciAoSTJDKVwmIzM0O1xuLS1cbmRyaXZlcnMvbmZjL3N0LW5jaS9LY29uZmlnLTIwLVxuZHJpdmVycy9uZmMvc3QtbmNpL0tjb25maWc6MjE6Y29uZmlnIE5GQ19TVF9OQ0lfU1BJXG5kcml2ZXJzL25mYy9zdC1uY2kvS2NvbmZpZy0yMi1cdHRyaXN0YXRlIFwmIzM0O1NUTWljcm9lbGVjdHJvbmljcyBTVCBOQ0kgTkZDIGRyaXZlciAoU1BJKVwmIzM0O1xuLS1cbmRyaXZlcnMvbmZjL3N0MjFuZmNhL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmRyaXZlcnMvbmZjL3N0MjFuZmNhL0tjb25maWc6Mjpjb25maWcgTkZDX1NUMjFORkNBXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9LY29uZmlnLTMtXHR0cmlzdGF0ZVxuLS1cbmRyaXZlcnMvbmZjL3N0MjFuZmNhL0tjb25maWctOS1cbmRyaXZlcnMvbmZjL3N0MjFuZmNhL0tjb25maWc6MTA6Y29uZmlnIE5GQ19TVDIxTkZDQV9JMkNcbmRyaXZlcnMvbmZjL3N0MjFuZmNhL0tjb25maWctMTEtXHR0cmlzdGF0ZSBcJiMzNDtTVE1pY3JvZWxlY3Ryb25pY3MgU1QyMU5GQ0EgTkZDIGRyaXZlciAoSTJDKVwmIzM0O1xuLS1cbmRyaXZlcnMvbmZjL3N0OTVoZi9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5kcml2ZXJzL25mYy9zdDk1aGYvS2NvbmZpZzoyOmNvbmZpZyBORkNfU1Q5NUhGXG5kcml2ZXJzL25mYy9zdDk1aGYvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7U1Q5NUhGIE5GQyBUcmFuc2NlaXZlciBkcml2ZXJcJiMzNDtcbi0tXG5uZXQvbmZjL0tjb25maWctNS1cbm5ldC9uZmMvS2NvbmZpZzo2Om1lbnVjb25maWcgTkZDXG5uZXQvbmZjL0tjb25maWctNy1cdGRlcGVuZHMgb24gUkZLSUxMIHx8ICFSRktJTExcbi0tXG5uZXQvbmZjL0tjb25maWctMTYtXG5uZXQvbmZjL0tjb25maWc6MTc6Y29uZmlnIE5GQ19ESUdJVEFMXG5uZXQvbmZjL0tjb25maWctMTgtXHRkZXBlbmRzIG9uIE5GQ1xuLS1cbm5ldC9uZmMvaGNpL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbm5ldC9uZmMvaGNpL0tjb25maWc6Mjpjb25maWcgTkZDX0hDSVxubmV0L25mYy9oY2kvS2NvbmZpZy0zLVx0ZGVwZW5kcyBvbiBORkNcbi0tXG5uZXQvbmZjL2hjaS9LY29uZmlnLTEwLVxubmV0L25mYy9oY2kvS2NvbmZpZzoxMTpjb25maWcgTkZDX1NIRExDXG5uZXQvbmZjL2hjaS9LY29uZmlnLTEyLVx0ZGVwZW5kcyBvbiBORkNfSENJXG4tLVxubmV0L25mYy9uY2kvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxubmV0L25mYy9uY2kvS2NvbmZpZzoyOmNvbmZpZyBORkNfTkNJXG5uZXQvbmZjL25jaS9LY29uZmlnLTMtXHRkZXBlbmRzIG9uIE5GQ1xuLS1cbm5ldC9uZmMvbmNpL0tjb25maWctMTItXG5uZXQvbmZjL25jaS9LY29uZmlnOjEzOmNvbmZpZyBORkNfTkNJX1NQSVxubmV0L25mYy9uY2kvS2NvbmZpZy0xNC1cdGRlcGVuZHMgb24gTkZDX05DSSBcdTAwMjZcdTAwMjYgU1BJXG4tLVxubmV0L25mYy9uY2kvS2NvbmZpZy0yMy1cbm5ldC9uZmMvbmNpL0tjb25maWc6MjQ6Y29uZmlnIE5GQ19OQ0lfVUFSVFxubmV0L25mYy9uY2kvS2NvbmZpZy0yNS1cdGRlcGVuZHMgb24gTkZDX05DSSBcdTAwMjZcdTAwMjYgVFRZXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIwIDIxOjAyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzNjgxCgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogMjI0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jeSBBbmFseXNpcyoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBJdCBsb29rcyBsaWtlIGBORkNfU1RfTkNJX0kyQ2AgcmVsaWVzIGRpcmVjdGx5IG9uIGJvdGggYE5GQ19OQ0lgIGFuZCBgSTJDYC4gQW5kLCBkaWdnaW5nIGEgYml0IGRlZXBlciwgSSBzZWUgYE5GQ19OQ0lgIGl0c2VsZiBpcyBkZXBlbmRlbnQgb24gYE5GQ2AuIEFscmlnaHQsIHNvLCB0byBnZXQgZXZlcnl0aGluZyB3b3JraW5nLCBJJiMzOTttIGdvaW5nIHRvIG5lZWQgYE5GQ2AsIGBORkNfTkNJYCwgYEkyQ2AsIGFuZCBvZiBjb3Vyc2UgYE5GQ19TVF9OQ0lfSTJDYC4gV2FpdCBhIHNlY29uZOKApiBJMkMgaXMgdHlwaWNhbGx5IGEgZGVmYXVsdCBhbnl3YXkuIEkmIzM5O2xsIGp1c3Qga2VlcCBpdCBpbiBtaW5kIGFzIGEgcHJlcmVxdWlzaXRlLiAKClRoZXJlZm9yZSwgSSB3aWxsIGZvY3VzIG9uIGVuYWJsaW5nIHRoZSBmb2xsb3dpbmcgY29uZmlndXJhdGlvbiBzeW1ib2xzOiBgTkZDYCwgYE5GQ19OQ0lgLCBhbmQgYE5GQ19TVF9OQ0lfSTJDYC4gVGhhdCBmZWVscyByaWdodC4KCk5vdywgYWJvdXQgdGhlIHBhdGNoIGl0c2VsZjogaXQgc2VlbXMgdG8gYmUgdG91Y2hpbmcgc2V2ZXJhbCBjcml0aWNhbCBmdW5jdGlvbnM6IGBzdF9uY2lfaTJjX3JlYWRgLCBgc3RfbmNpX2kyY19wcm9iZWAsIGBzdF9uY2lfaW5pdGAsIGBuZGxjX2Nsb3NlYCwgYG5kbGNfc2VuZGAsIGBsbHRfbmRsY19zZW5kX3F1ZXVlYCwgYGxsdF9uZGxjX3Jjdl9xdWV1ZWAsIGFuZCBgc3RfbmNpX2Rpc2NvdmVyX3NlYC4gSeKAmWxsIHN0YXJ0IGJ5IHJldmlld2luZyBgc3RfbmNpX2kyY19yZWFkYCwgYXMgdGhhdCBzZWVtcyBsaWtlIGEgZ29vZCBzdGFydGluZyBwb2ludCB0byB1bmRlcnN0YW5kIHRoZSBjaGFuZ2VzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMCAyMTowMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzdF9uY2lfaTJjX3JlYWQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZmMvc3QtbmNpL2kyYy5jPTg0PXN0YXRpYyBpbnQgc3RfbmNpX2kyY193cml0ZSh2b2lkICpwaHlfaWQsIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxuZHJpdmVycy9uZmMvc3QtbmNpL2kyYy5jLTExNi0gKi9cbmRyaXZlcnMvbmZjL3N0LW5jaS9pMmMuYzoxMTc6c3RhdGljIGludCBzdF9uY2lfaTJjX3JlYWQoc3RydWN0IHN0X25jaV9pMmNfcGh5ICpwaHksXG5kcml2ZXJzL25mYy9zdC1uY2kvaTJjLmMtMTE4LVx0XHRcdFx0IHN0cnVjdCBza19idWZmICoqc2tiKVxuLS1cbmRyaXZlcnMvbmZjL3N0LW5jaS9pMmMuYz0yMDQ9c3RhdGljIGlycXJldHVybl90IHN0X25jaV9pcnFfdGhyZWFkX2ZuKGludCBpcnEsIHZvaWQgKnBoeV9pZClcbi0tXG5kcml2ZXJzL25mYy9zdC1uY2kvaTJjLmMtMjIyLVxuZHJpdmVycy9uZmMvc3QtbmNpL2kyYy5jOjIyMzpcdHIgPSBzdF9uY2lfaTJjX3JlYWQocGh5LCBcdTAwMjZza2IpO1xuZHJpdmVycy9uZmMvc3QtbmNpL2kyYy5jLTIyNC1cdGlmIChyID09IC1FUkVNT1RFSU8gfHwgciA9PSAtRU5PTUVNIHx8IHIgPT0gLUVCQURNU0cpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIwIDIxOjAyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0NTY2CgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogODYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYW5hbHlzaXMgb2YgdGhpcyBjb2RlIHNuaXBwZXQ6CgoqKkZvY3VzaW5nIG9uIEludGVycnVwdCBIYW5kbGluZyBpbiB0aGUgU1QgTkNJIERyaXZlcioqCgpPa2F5LCBzbyBJIHNlZSB0aGF0IGBzdF9uY2lfaTJjX3JlYWRgIGlzIGEgc3RhdGljIGZ1bmN0aW9uLCB3aGljaCBtZWFucyBpdCYjMzk7cyBsaWtlbHkgYW4gaW50ZXJuYWwgaGVscGVyIGZ1bmN0aW9uIHdpdGhpbiB0aGUgTkNJIGRyaXZlci4gVGhlIGNyaXRpY2FsIHBpZWNlIGhlcmUgaXMgdGhhdCBpdCYjMzk7cyBjYWxsZWQgYnkgYHN0X25jaV9pcnFfdGhyZWFkX2ZuYC4gVGhhdCBmdW5jdGlvbiBpcyBjbGVhcmx5IHRoZSBpbnRlcnJ1cHQgaGFuZGxlciwgdHJpZ2dlcmVkIHdoZW4gc29tZXRoaW5nIGhhcHBlbnMgb24gdGhlIEkyQyBidXMgcmVsYXRlZCB0byB0aGUgTkZDIGNvbnRyb2xsZXIuIEdpdmVuIG15IGV4cGVydGlzZSwgbXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0byBwcmlvcml0aXplIHVuZGVyc3RhbmRpbmcgdGhlIGludGVycnVwdCBoYW5kbGluZyBtZWNoYW5pc20sIHdoaWNoIHBvaW50cyBkaXJlY3RseSB0byBgc3RfbmNpX2lycV90aHJlYWRfZm5gLiBUaGlzIGlzIHdoZXJlIHRoZSByZWFsLXRpbWUgaW50ZXJhY3Rpb24gd2l0aCB0aGUgTkZDIGNoaXAgaGFwcGVucywgc28gdGhhdCYjMzk7cyB3aGVyZSBJIG5lZWQgdG8gZm9jdXMuIEkmIzM5O20gZ29pbmcgdG8gc3RhcnQgdGhlcmUuCgpCdXQsIEkgYWxzbyBzaG91bGRuJiMzOTt0IGNvbXBsZXRlbHkgaWdub3JlIGBzdF9uY2lfaW5pdGAsIGFzIGl0JiMzOTtzIHRoZSBkcml2ZXImIzM5O3MgaW5pdGlhbGl6YXRpb24gZnVuY3Rpb24uIFdoaWxlIHRoZSBpbW1lZGlhdGUgY29uY2VybiBpcyB0aGUgaW50ZXJydXB0IHByb2Nlc3NpbmcsIGluaXRpYWxpemF0aW9uIGxpa2VseSBzZXRzIHVwIHRoZSBoYXJkd2FyZSBhbmQgcHJlcGFyZXMgZXZlcnl0aGluZyBmb3IgdGhlIGludGVycnVwdCBoYW5kbGVyIHRvIGZ1bmN0aW9uIGNvcnJlY3RseS4gSSYjMzk7bGwgbmVlZCB0byBrZWVwIGl0IGluIHRoZSBiYWNrIG9mIG15IG1pbmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIwIDIxOjAyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N0X25jaV9pbml0JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmZjL3N0LW5jaS9jb3JlLmMtMTgtXG5kcml2ZXJzL25mYy9zdC1uY2kvY29yZS5jOjE5OnN0YXRpYyBpbnQgc3RfbmNpX2luaXQoc3RydWN0IG5jaV9kZXYgKm5kZXYpXG5kcml2ZXJzL25mYy9zdC1uY2kvY29yZS5jLTIwLXtcbi0tXG5kcml2ZXJzL25mYy9zdC1uY2kvY29yZS5jPTEwMD1zdGF0aWMgY29uc3Qgc3RydWN0IG5jaV9vcHMgc3RfbmNpX29wcyA9IHtcbmRyaXZlcnMvbmZjL3N0LW5jaS9jb3JlLmM6MTAxOlx0LmluaXQgPSBzdF9uY2lfaW5pdCxcbmRyaXZlcnMvbmZjL3N0LW5jaS9jb3JlLmMtMTAyLVx0Lm9wZW4gPSBzdF9uY2lfb3BlbixcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjAgMjE6MDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTUwOTkKCQkJCQkJCW91dHB1dDogMTgKCQkJCQkJCXRob3VnaHRzOiA5NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0IG1lIHRoaW5rIHRoaXMgdGhyb3VnaC4KCioqQW5hbHl6aW5nIEFQSSBFbnRyeXBvaW50cyBhbmQgU3RhdGljIEZ1bmN0aW9ucyoqCgpSaWdodCwgc28gYHN0X25jaV9pbml0YCBpcyBkZWNsYXJlZCBhcyBgc3RhdGljYCwgd2hpY2ggaW5pdGlhbGx5IG1ha2VzIG1lIHF1ZXN0aW9uIGl0cyB2aXNpYmlsaXR5IGFzIGFuIEFQSSBlbnRyeXBvaW50LiBCdXQgaG9sZCBvbiwgaXQmIzM5O3MgYmVpbmcgYXNzaWduZWQgdG8gYSBmdW5jdGlvbiBwb2ludGVyLCBzcGVjaWZpY2FsbHkgYC5pbml0ID0gc3RfbmNpX2luaXRgLiBUaGF0IGFzc2lnbm1lbnQgaXMgY3J1Y2lhbDsgZXZlbiB0aG91Z2ggaXQmIzM5O3Mgc3RhdGljLCBpdCBzaG91bGRuJiMzOTt0IGJlIGlubGluZWQgYmVjYXVzZSBpdCYjMzk7cyBiZWluZyB0cmVhdGVkIGFzIGEgZnVuY3Rpb24gcG9pbnRlci4gVGhlIGNvbXBpbGVyICpzaG91bGRuJiMzOTt0KiBvcHRpbWl6ZSBpdCBhd2F5LiBUaGUgZnVuY3Rpb24gcG9pbnRlciBpcyB0aGUgbGluaywgdGhlIGtleSB0byBpdHMgZXhpc3RlbmNlLiBJdCYjMzk7cyB1c2VkLiBJdCAqc2hvdWxkKiBoYXZlIGEgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3MuIE9rYXksIHRoYXQmIzM5O3Mgc2V0dGxlZC4gVGhlIHN0YXRpYyBkZWNsYXJhdGlvbiBzdGlsbCBmZWVscyBhIGJpdCBvZGQsIHRob3VnaC4KCk5vdywgbGV0JiMzOTtzIHN3aXRjaCBnZWFycyBhbmQgY29uc2lkZXIgYG5kbGNfY2xvc2VgLiBMZXQgbWUgdGhpbmsgYSBiaXQgYWJvdXQgdGhhdCBvbmUuLi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjAgMjE6MDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmRsY19jbG9zZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25mYy9zdC1uY2kvY29yZS5jPTUwPXN0YXRpYyBpbnQgc3RfbmNpX2Nsb3NlKHN0cnVjdCBuY2lfZGV2ICpuZGV2KVxuLS1cbmRyaXZlcnMvbmZjL3N0LW5jaS9jb3JlLmMtNTYtXG5kcml2ZXJzL25mYy9zdC1uY2kvY29yZS5jOjU3Olx0bmRsY19jbG9zZShpbmZvLVx1MDAzZW5kbGMpO1xuZHJpdmVycy9uZmMvc3QtbmNpL2NvcmUuYy01OC1cbi0tXG5kcml2ZXJzL25mYy9zdC1uY2kvY29yZS5jPTE2OD12b2lkIHN0X25jaV9yZW1vdmUoc3RydWN0IG5jaV9kZXYgKm5kZXYpXG4tLVxuZHJpdmVycy9uZmMvc3QtbmNpL2NvcmUuYy0xNzEtXG5kcml2ZXJzL25mYy9zdC1uY2kvY29yZS5jOjE3MjpcdG5kbGNfY2xvc2UoaW5mby1cdTAwM2VuZGxjKTtcbmRyaXZlcnMvbmZjL3N0LW5jaS9jb3JlLmMtMTczLVxuLS1cbmRyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmM9NTM9RVhQT1JUX1NZTUJPTChuZGxjX29wZW4pO1xuZHJpdmVycy9uZmMvc3QtbmNpL25kbGMuYy01NC1cbmRyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmM6NTU6dm9pZCBuZGxjX2Nsb3NlKHN0cnVjdCBsbHRfbmRsYyAqbmRsYylcbmRyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmMtNTYte1xuLS1cbmRyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmMtNzEtfVxuZHJpdmVycy9uZmMvc3QtbmNpL25kbGMuYzo3MjpFWFBPUlRfU1lNQk9MKG5kbGNfY2xvc2UpO1xuZHJpdmVycy9uZmMvc3QtbmNpL25kbGMuYy03My1cbi0tXG5kcml2ZXJzL25mYy9zdC1uY2kvbmRsYy5jPTIwNz1zdGF0aWMgdm9pZCBsbHRfbmRsY19zbV93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5kcml2ZXJzL25mYy9zdC1uY2kvbmRsYy5jLTIyOC1cdFx0dGltZXJfZGVsZXRlX3N5bmMoXHUwMDI2bmRsYy1cdTAwM2V0Ml90aW1lcik7XG5kcml2ZXJzL25mYy9zdC1uY2kvbmRsYy5jOjIyOTpcdFx0bmRsY19jbG9zZShuZGxjKTtcbmRyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmMtMjMwLVx0XHRuZGxjLVx1MDAzZWhhcmRfZmF1bHQgPSAtRVJFTU9URUlPO1xuLS1cbmRyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmM9MjM0PXZvaWQgbmRsY19yZWN2KHN0cnVjdCBsbHRfbmRsYyAqbmRsYywgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5kcml2ZXJzL25mYy9zdC1uY2kvbmRsYy5jLTIzOC1cdFx0bmRsYy1cdTAwM2VoYXJkX2ZhdWx0ID0gLUVSRU1PVEVJTztcbmRyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmM6MjM5Olx0XHRuZGxjX2Nsb3NlKG5kbGMpO1xuZHJpdmVycy9uZmMvc3QtbmNpL25kbGMuYy0yNDAtXHR9IGVsc2Uge1xuLS1cbmRyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmg9NDY9aW50IG5kbGNfb3BlbihzdHJ1Y3QgbGx0X25kbGMgKm5kbGMpO1xuZHJpdmVycy9uZmMvc3QtbmNpL25kbGMuaDo0Nzp2b2lkIG5kbGNfY2xvc2Uoc3RydWN0IGxsdF9uZGxjICpuZGxjKTtcbmRyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmgtNDgtaW50IG5kbGNfc2VuZChzdHJ1Y3QgbGx0X25kbGMgKm5kbGMsIHN0cnVjdCBza19idWZmICpza2IpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMCAyMTowMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNjE4NQoJCQkJCQkJb3V0cHV0OiAxOAoJCQkJCQkJdGhvdWdodHM6IDE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIEkgc2VlIGl0OgoKKipDb25zaWRlcmluZyB0aGUgRXhwb3J0ZWQgRnVuY3Rpb25zKioKCk9rYXksIHNvIGBuZGxjX2Nsb3NlYCBpcyBkZWZpbml0ZWx5IGJlaW5nIGV4cG9ydGVkLCB0aGF0JiMzOTtzIGNsZWFyLiBCdXQgbm93IEkmIzM5O20gdGhpbmtpbmcuLi4gd2hhdCBhYm91dCBgbmRsY19zZW5kYD8gV2UgaGF2ZSBvbmUgZnVuY3Rpb24gY2xvc2luZyB0aGluZ3MgZG93biwgd2hpY2ggaXMgaW1wb3J0YW50LCBidXQgd2hhdCYjMzk7cyB0aGUgc3RhdHVzIG9mIHRoZSBzZW5kaW5nIGZ1bmN0aW9uYWxpdHk/IElzICp0aGF0KiBhbHNvIGJlaW5nIGV4cG9ydGVkPyBJdCBmZWVscyBsaWtlIHRoYXQmIzM5O3MgYSBrZXkgcXVlc3Rpb24gdGhhdCBuZWVkcyBpbW1lZGlhdGUgYWRkcmVzc2luZy4gV2UgY2FuJiMzOTt0IGhhdmUgb25lIHdpdGhvdXQgdGhlIG90aGVyLCBhc3N1bWluZyB0aGV5IGFyZSByZWxhdGVkLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgY29tcGxldGUgcGljdHVyZSBvZiB3aGF0JiMzOTtzIHB1YmxpY2x5IGFjY2Vzc2libGUuIFRoaXMgbWlnaHQgaW5mbHVlbmNlIGFyY2hpdGVjdHVyZSBjaGFuZ2VzLCBmdXR1cmUgQVBJIGRlc2lnbiwgb3IgZXZlbiBzZWN1cml0eSBjb25zaWRlcmF0aW9ucy4gSSBuZWVkIHRvIGNoZWNrIHRoZSBleHBvcnQgZGVjbGFyYXRpb25zIGZvciBgbmRsY19zZW5kYCBBU0FQLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMCAyMTowMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZGxjX3NlbmQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZmMvc3QtbmNpL2NvcmUuYz02ND1zdGF0aWMgaW50IHN0X25jaV9zZW5kKHN0cnVjdCBuY2lfZGV2ICpuZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbmRyaXZlcnMvbmZjL3N0LW5jaS9jb3JlLmMtNzItXG5kcml2ZXJzL25mYy9zdC1uY2kvY29yZS5jOjczOlx0cmV0dXJuIG5kbGNfc2VuZChpbmZvLVx1MDAzZW5kbGMsIHNrYik7XG5kcml2ZXJzL25mYy9zdC1uY2kvY29yZS5jLTc0LX1cbi0tXG5kcml2ZXJzL25mYy9zdC1uY2kvbmRsYy5jPTcyPUVYUE9SVF9TWU1CT0wobmRsY19jbG9zZSk7XG5kcml2ZXJzL25mYy9zdC1uY2kvbmRsYy5jLTczLVxuZHJpdmVycy9uZmMvc3QtbmNpL25kbGMuYzo3NDppbnQgbmRsY19zZW5kKHN0cnVjdCBsbHRfbmRsYyAqbmRsYywgc3RydWN0IHNrX2J1ZmYgKnNrYilcbmRyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmMtNzUte1xuLS1cbmRyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmMtODgtfVxuZHJpdmVycy9uZmMvc3QtbmNpL25kbGMuYzo4OTpFWFBPUlRfU1lNQk9MKG5kbGNfc2VuZCk7XG5kcml2ZXJzL25mYy9zdC1uY2kvbmRsYy5jLTkwLVxuZHJpdmVycy9uZmMvc3QtbmNpL25kbGMuYzo5MTpzdGF0aWMgdm9pZCBsbHRfbmRsY19zZW5kX3F1ZXVlKHN0cnVjdCBsbHRfbmRsYyAqbmRsYylcbmRyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmMtOTIte1xuLS1cbmRyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmM9MTU0PXN0YXRpYyB2b2lkIGxsdF9uZGxjX3Jjdl9xdWV1ZShzdHJ1Y3QgbGx0X25kbGMgKm5kbGMpXG4tLVxuZHJpdmVycy9uZmMvc3QtbmNpL25kbGMuYy0xODEtXHRcdFx0XHRsbHRfbmRsY19yZXF1ZXVlX2RhdGFfcGVuZGluZyhuZGxjKTtcbmRyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmM6MTgyOlx0XHRcdFx0bGx0X25kbGNfc2VuZF9xdWV1ZShuZGxjKTtcbmRyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmMtMTgzLVx0XHRcdFx0Lyogc3RhcnQgdGltZXIgdDEgZm9yIG5kbGMgYWtub3dsZWRnZSAqL1xuLS1cbmRyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmM9MjA3PXN0YXRpYyB2b2lkIGxsdF9uZGxjX3NtX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbmRyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmMtMjEwLVxuZHJpdmVycy9uZmMvc3QtbmNpL25kbGMuYzoyMTE6XHRsbHRfbmRsY19zZW5kX3F1ZXVlKG5kbGMpO1xuZHJpdmVycy9uZmMvc3QtbmNpL25kbGMuYy0yMTItXHRsbHRfbmRsY19yY3ZfcXVldWUobmRsYyk7XG4tLVxuZHJpdmVycy9uZmMvc3QtbmNpL25kbGMuYy0yMTktXHRcdGxsdF9uZGxjX3JlcXVldWVfZGF0YV9wZW5kaW5nKG5kbGMpO1xuZHJpdmVycy9uZmMvc3QtbmNpL25kbGMuYzoyMjA6XHRcdGxsdF9uZGxjX3NlbmRfcXVldWUobmRsYyk7XG5kcml2ZXJzL25mYy9zdC1uY2kvbmRsYy5jLTIyMS1cdH1cbi0tXG5kcml2ZXJzL25mYy9zdC1uY2kvbmRsYy5oPTQ3PXZvaWQgbmRsY19jbG9zZShzdHJ1Y3QgbGx0X25kbGMgKm5kbGMpO1xuZHJpdmVycy9uZmMvc3QtbmNpL25kbGMuaDo0ODppbnQgbmRsY19zZW5kKHN0cnVjdCBsbHRfbmRsYyAqbmRsYywgc3RydWN0IHNrX2J1ZmYgKnNrYik7XG5kcml2ZXJzL25mYy9zdC1uY2kvbmRsYy5oLTQ5LXZvaWQgbmRsY19yZWN2KHN0cnVjdCBsbHRfbmRsYyAqbmRsYywgc3RydWN0IHNrX2J1ZmYgKnNrYik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIwIDIxOjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE3MjUzCgkJCQkJCQlvdXRwdXQ6IDIyCgkJCQkJCQl0aG91Z2h0czogMjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipOYXZpZ2F0aW5nIHRoZSBgbmRsY2AgTGFuZHNjYXBlKioKClJpZ2h0LCBzbyBgbmRsY19zZW5kYCBpcyBkZWZpbml0ZWx5IGV4cG9ydGVkIGFuZCBmcm9udC1mYWNpbmcuIFRoYXQmIzM5O3MgZ29vZCwgdGhhdCYjMzk7cyBleHBlY3RlZC4gQnV0IG5vdyBJJiMzOTttIHRoaW5raW5nLCB3aGF0JiMzOTtzIHRoZSBkZWFsIHdpdGggYHN0X25jaV9kaXNjb3Zlcl9zZWA/IEkgbmVlZCB0byBxdWlja2x5IHJlY2FsbCB3aGVyZSB0aGF0IGZpdHMgaW50byB0aGUgcGljdHVyZS4gSXMgaXQgYW5vdGhlciBwdWJsaWMgaW50ZXJmYWNlLCBvciBpcyBpdCBhbiBpbnRlcm5hbCBmdW5jdGlvbiB0aGF0JiMzOTtzIGJlaW5nIGNhbGxlZCBieSBgbmRsY19zZW5kYCBhcyBhIHBhcnQgb2YgdGhlIHNlcnZpY2UgZW5hYmxlbWVudCBmbG93PyBXaGVyZSBkb2VzIGl0IHJlc2lkZSBhbmQgd2hhdCBpbXBhY3QgZG9lcyBpdCBoYXZlIG9uIHRoZSBzZWN1cmUgZWxlbWVudCBkaXNjb3ZlcnkgcHJvY2Vzcz8gSXMgaXQganVzdCBwYXJ0IG9mIHRoZSBzZXF1ZW5jZSwgb3IgaXMgdGhlcmUgbW9yZSBjb21wbGV4aXR5IGludm9sdmVkPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcmVsYXRpb25zaGlwIHRvIHRoZSBvdGhlciBmdW5jdGlvbi4gSSBzdXNwZWN0IHRoaXMgaXMgc29tZXRoaW5nIEkmIzM5O2xsIG5lZWQgdG8gZGlnIGludG8gZnVydGhlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjAgMjE6MDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3RfbmNpX2Rpc2NvdmVyX3NlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmZjL3N0LW5jaS9jb3JlLmM9MTAwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmNpX29wcyBzdF9uY2lfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmZjL3N0LW5jaS9jb3JlLmMtMTA1LVx0LmdldF9yZnByb3RvY29sID0gc3RfbmNpX2dldF9yZnByb3RvY29sLFxuZHJpdmVycy9uZmMvc3QtbmNpL2NvcmUuYzoxMDY6XHQuZGlzY292ZXJfc2UgPSBzdF9uY2lfZGlzY292ZXJfc2UsXG5kcml2ZXJzL25mYy9zdC1uY2kvY29yZS5jLTEwNy1cdC5lbmFibGVfc2UgPSBzdF9uY2lfZW5hYmxlX3NlLFxuLS1cbmRyaXZlcnMvbmZjL3N0LW5jaS9zZS5jPTU0NT1zdGF0aWMgaW50IHN0X25jaV9oY2lfbmV0d29ya19pbml0KHN0cnVjdCBuY2lfZGV2ICpuZGV2KVxuLS1cbmRyaXZlcnMvbmZjL3N0LW5jaS9zZS5jLTYxNi1cbmRyaXZlcnMvbmZjL3N0LW5jaS9zZS5jOjYxNzppbnQgc3RfbmNpX2Rpc2NvdmVyX3NlKHN0cnVjdCBuY2lfZGV2ICpuZGV2KVxuZHJpdmVycy9uZmMvc3QtbmNpL3NlLmMtNjE4LXtcbi0tXG5kcml2ZXJzL25mYy9zdC1uY2kvc2UuYy02NTgtfVxuZHJpdmVycy9uZmMvc3QtbmNpL3NlLmM6NjU5OkVYUE9SVF9TWU1CT0xfR1BMKHN0X25jaV9kaXNjb3Zlcl9zZSk7XG5kcml2ZXJzL25mYy9zdC1uY2kvc2UuYy02NjAtXG4tLVxuZHJpdmVycy9uZmMvc3QtbmNpL3N0LW5jaS5oPTEyNj12b2lkIHN0X25jaV9zZV9kZWluaXQoc3RydWN0IG5jaV9kZXYgKm5kZXYpO1xuZHJpdmVycy9uZmMvc3QtbmNpL3N0LW5jaS5oLTEyNy1cbmRyaXZlcnMvbmZjL3N0LW5jaS9zdC1uY2kuaDoxMjg6aW50IHN0X25jaV9kaXNjb3Zlcl9zZShzdHJ1Y3QgbmNpX2RldiAqbmRldik7XG5kcml2ZXJzL25mYy9zdC1uY2kvc3QtbmNpLmgtMTI5LWludCBzdF9uY2lfZW5hYmxlX3NlKHN0cnVjdCBuY2lfZGV2ICpuZGV2LCB1MzIgc2VfaWR4KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjAgMjE6MDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTc5OTAKCQkJCQkJCW91dHB1dDogMTgKCQkJCQkJCXRob3VnaHRzOiAyOTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgSW5pdGlhbCBBc3Nlc3NtZW50IG9mIHRoZSBQYXRjaCoqCgpPa2F5LCBzbyBgc3RfbmNpX2Rpc2NvdmVyX3NlYCBpcyBleHBsaWNpdGx5IGV4cG9ydGVkIOKAkyB0aGF0JiMzOTtzIGEgZ29vZCBzdGFydGluZyBwb2ludCBmb3IgdW5kZXJzdGFuZGluZyB0aGUgY2hhbmdlcy4gTXkgZm9jdXMsIHRoZW4sIG5lZWRzIHRvIGJlIG9uIGBuZGxjX3NlbmRgLCBgbmRsY19jbG9zZWAsIGFuZCwgb2YgY291cnNlLCBgc3RfbmNpX2Rpc2NvdmVyX3NlYC4gSG93ZXZlciwgSSBzZWUgdGhhdCB0aGUgcGF0Y2ggYWxzbyB0b3VjaGVzIGBzdF9uY2lfaTJjX3Byb2JlYCwgd2hpY2ggaXMsIGlmIEkgcmVjYWxsIGNvcnJlY3RseSwgdGhlIHByb2JlIGZ1bmN0aW9uLiBMZXQgbWUgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhhdDsgSSYjMzk7bGwgbG9vayBhdCBgZHJpdmVycy9uZmMvc3QtbmNpL2kyYy5jYCB0byBjb25maXJtLiBZZXAsIGl0JiMzOTtzIHN0YXRpYywgc28gaXQmIzM5O3MgdGhlIHByb2JlLiBJJiMzOTtsbCBhbHNvIGdsYW5jZSBhdCBgc3RfbmNpX2kyY19yZWFkYCDigJMgYWxzbyBzdGF0aWMg4oCTIGFuZCBgc3RfbmNpX2lycV90aHJlYWRfZm5gLCB3aGljaCBpcyAqYWxzbyogc3RhdGljLgoKVGhlIHByb2JlIGZ1bmN0aW9uLCB0aG91Z2guLi4gdHlwaWNhbGx5LCBJIHdvdWxkbiYjMzk7dCBzcGVuZCBhIGxvdCBvZiB0aW1lIG9uIGEgcHJvYmUgZnVuY3Rpb24gdW5sZXNzIGl0JiMzOTtzIHRoZSAqb25seSogZW50cnkgcG9pbnQgaW50byBhIHBhcnRpY3VsYXIgY29kZSBwYXRoLiBJIHRoaW5rIEkgd2lsbCBzdGljayB0byBteSBvcmlnaW5hbCBwbGFuIGFuZCBmb2N1cyBvbiBgbmRsY19zZW5kYCwgYG5kbGNfY2xvc2VgLCBhbmQgYHN0X25jaV9kaXNjb3Zlcl9zZWAuIEhvd2V2ZXIsIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBkb24mIzM5O3QgbWlzcyBzb21ldGhpbmcuCgpXYWl0IGEgbWludXRlLCBgbmRsY19yZWN2YCBpcyBtb2RpZmllZD8gTm8sIGl0IGxvb2tzIGxpa2UgYGxsdF9uZGxjX3Jjdl9xdWV1ZWAgaXMsIGFuZCB0aGF0JiMzOTtzIGNhbGxlZCBmcm9tIGBsbHRfbmRsY19zbV93b3JrYCwgd2hpY2ggaXMgYSB3b3JrcXVldWUgZnVuY3Rpb24uIEdvb2QsIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgaWYgYG5kbGNfcmVjdmAgaXMgZXhwb3J0ZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIwIDIxOjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25kbGNfcmVjdiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25mYy9zdC1uY2kvaTJjLmM9MjA0PXN0YXRpYyBpcnFyZXR1cm5fdCBzdF9uY2lfaXJxX3RocmVhZF9mbihpbnQgaXJxLCB2b2lkICpwaHlfaWQpXG4tLVxuZHJpdmVycy9uZmMvc3QtbmNpL2kyYy5jLTIyNi1cbmRyaXZlcnMvbmZjL3N0LW5jaS9pMmMuYzoyMjc6XHRuZGxjX3JlY3YocGh5LVx1MDAzZW5kbGMsIHNrYik7XG5kcml2ZXJzL25mYy9zdC1uY2kvaTJjLmMtMjI4LVxuLS1cbmRyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmM9MjA3PXN0YXRpYyB2b2lkIGxsdF9uZGxjX3NtX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbmRyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmMtMjMzLVxuZHJpdmVycy9uZmMvc3QtbmNpL25kbGMuYzoyMzQ6dm9pZCBuZGxjX3JlY3Yoc3RydWN0IGxsdF9uZGxjICpuZGxjLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuZHJpdmVycy9uZmMvc3QtbmNpL25kbGMuYy0yMzUte1xuLS1cbmRyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmMtMjQ2LX1cbmRyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmM6MjQ3OkVYUE9SVF9TWU1CT0wobmRsY19yZWN2KTtcbmRyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmMtMjQ4LVxuLS1cbmRyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmg9NDg9aW50IG5kbGNfc2VuZChzdHJ1Y3QgbGx0X25kbGMgKm5kbGMsIHN0cnVjdCBza19idWZmICpza2IpO1xuZHJpdmVycy9uZmMvc3QtbmNpL25kbGMuaDo0OTp2b2lkIG5kbGNfcmVjdihzdHJ1Y3QgbGx0X25kbGMgKm5kbGMsIHN0cnVjdCBza19idWZmICpza2IpO1xuZHJpdmVycy9uZmMvc3QtbmNpL25kbGMuaC01MC1pbnQgbmRsY19wcm9iZSh2b2lkICpwaHlfaWQsIGNvbnN0IHN0cnVjdCBuZmNfcGh5X29wcyAqcGh5X29wcyxcbi0tXG5kcml2ZXJzL25mYy9zdC1uY2kvc3BpLmM9NzQ9c3RhdGljIGludCBzdF9uY2lfc3BpX3dyaXRlKHZvaWQgKnBoeV9pZCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5kcml2ZXJzL25mYy9zdC1uY2kvc3BpLmMtMTAyLVx0XHRtZW1jcHkoc2tiX3J4LVx1MDAzZWRhdGEsIGJ1Ziwgc2tiLVx1MDAzZWxlbik7XG5kcml2ZXJzL25mYy9zdC1uY2kvc3BpLmM6MTAzOlx0XHRuZGxjX3JlY3YocGh5LVx1MDAzZW5kbGMsIHNrYl9yeCk7XG5kcml2ZXJzL25mYy9zdC1uY2kvc3BpLmMtMTA0LVx0fVxuLS1cbmRyaXZlcnMvbmZjL3N0LW5jaS9zcGkuYz0xNjk9c3RhdGljIGlycXJldHVybl90IHN0X25jaV9pcnFfdGhyZWFkX2ZuKGludCBpcnEsIHZvaWQgKnBoeV9pZClcbi0tXG5kcml2ZXJzL25mYy9zdC1uY2kvc3BpLmMtMTkxLVxuZHJpdmVycy9uZmMvc3QtbmNpL3NwaS5jOjE5MjpcdG5kbGNfcmVjdihwaHktXHUwMDNlbmRsYywgc2tiKTtcbmRyaXZlcnMvbmZjL3N0LW5jaS9zcGkuYy0xOTMtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIwIDIxOjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5MzkyCgkJCQkJCQlvdXRwdXQ6IDE4CgkJCQkJCQl0aG91Z2h0czogMTE0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkluaXRpYWwgQXNzZXNzbWVudCBvZiBOREwgQ29yZSBGdW5jdGlvbnMqKgoKT2theSwgc28gSSYjMzk7dmUgY29uZmlybWVkIHRoYXQgYG5kbGNfcmVjdmAgaXMgaW5kZWVkIGV4cG9ydGVkLiBUaGF0JiMzOTtzIGdvb2QsIHRoYXQgbmFycm93cyBkb3duIHRoZSBzY29wZSBvZiB3aGF0IEkgbmVlZCB0byBpbnZlc3RpZ2F0ZS4gR2l2ZW4gdGhhdCwgYWxvbmcgd2l0aCBgbmRsY19yZWN2YCwgSSBzaG91bGQgYmUgZm9jdXNpbmcgbXkgYXR0ZW50aW9uIG9uIGBuZGxjX3NlbmRgLCBgbmRsY19jbG9zZWAsIGFuZCBgc3RfbmNpX2Rpc2NvdmVyX3NlYC4KCkhvbGQgb24uLi4gdGhlIHBhdGNoIGFsc28gdG91Y2hlcyBgc3RfbmNpX2luaXRgLiBXYWl0LCBpcyAqdGhhdCogZXhwb3J0ZWQ/IE5vLCBpdCBsb29rcyBsaWtlIGl0JiMzOTtzIHN0YXRpYy4gQnV0LCBldmVuIHRob3VnaCBpdCYjMzk7cyBzdGF0aWMsIGl0IGlzIGFuIEFQSSBlbnRyeXBvaW50LiBUaGF0IG1ha2VzIHRoaW5ncyBpbnRlcmVzdGluZy4gSSBzaG91bGQga2VlcCBpdCBpbiBtaW5kLgoKQmVmb3JlIEkgZ28gYW55IGZ1cnRoZXIsIGxldCYjMzk7cyBqdXN0IGRvIGEgcXVpY2sgc2NhbiB0byBtYWtlIHN1cmUgSSBoYXZlbiYjMzk7dCBtaXNzZWQgYW55dGhpbmcgb2J2aW91cy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGRvbiYjMzk7dCBtaXNzIGFueSBvdGhlciBleHBvcnRlZCBmdW5jdGlvbnMuIE9rYXksIGhlcmUgd2UgZ28uLi4gQWgsIGBuZGxjX3Byb2JlYCBpcyBhbHNvIGV4cG9ydGVkLiBBbHJpZ2h0LCB0aGF0JiMzOTtzIGFub3RoZXIgb25lIHRvIGNvbnNpZGVyLiBOb3csIGxldCYjMzk7cyBzdGFydCBieSBkaWdnaW5nIGludG8gYG5kbGNfcHJvYmVgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMCAyMTowMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZGxjX3Byb2JlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmZjL3N0LW5jaS9pMmMuYz0yNDU9c3RhdGljIGludCBzdF9uY2lfaTJjX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXG4tLVxuZHJpdmVycy9uZmMvc3QtbmNpL2kyYy5jLTI4OS1cbmRyaXZlcnMvbmZjL3N0LW5jaS9pMmMuYzoyOTA6XHRyID0gbmRsY19wcm9iZShwaHksIFx1MDAyNmkyY19waHlfb3BzLCBcdTAwMjZjbGllbnQtXHUwMDNlZGV2LFxuZHJpdmVycy9uZmMvc3QtbmNpL2kyYy5jLTI5MS1cdFx0XHRwaHktXHUwMDNlcmF3X25jaSA/IFNUX05DSV9SQVdfRlJBTUVfSEVBRFJPT00gOlxuLS1cbmRyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmM9MjU2PXN0YXRpYyB2b2lkIG5kbGNfdDJfdGltZW91dChzdHJ1Y3QgdGltZXJfbGlzdCAqdClcbi0tXG5kcml2ZXJzL25mYy9zdC1uY2kvbmRsYy5jLTI2Mi1cbmRyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmM6MjYzOmludCBuZGxjX3Byb2JlKHZvaWQgKnBoeV9pZCwgY29uc3Qgc3RydWN0IG5mY19waHlfb3BzICpwaHlfb3BzLFxuZHJpdmVycy9uZmMvc3QtbmNpL25kbGMuYy0yNjQtXHQgICAgICAgc3RydWN0IGRldmljZSAqZGV2LCBpbnQgcGh5X2hlYWRyb29tLCBpbnQgcGh5X3RhaWxyb29tLFxuLS1cbmRyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmMtMjkxLX1cbmRyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmM6MjkyOkVYUE9SVF9TWU1CT0wobmRsY19wcm9iZSk7XG5kcml2ZXJzL25mYy9zdC1uY2kvbmRsYy5jLTI5My1cbi0tXG5kcml2ZXJzL25mYy9zdC1uY2kvbmRsYy5oPTQ5PXZvaWQgbmRsY19yZWN2KHN0cnVjdCBsbHRfbmRsYyAqbmRsYywgc3RydWN0IHNrX2J1ZmYgKnNrYik7XG5kcml2ZXJzL25mYy9zdC1uY2kvbmRsYy5oOjUwOmludCBuZGxjX3Byb2JlKHZvaWQgKnBoeV9pZCwgY29uc3Qgc3RydWN0IG5mY19waHlfb3BzICpwaHlfb3BzLFxuZHJpdmVycy9uZmMvc3QtbmNpL25kbGMuaC01MS1cdCAgICAgICBzdHJ1Y3QgZGV2aWNlICpkZXYsIGludCBwaHlfaGVhZHJvb20sIGludCBwaHlfdGFpbHJvb20sXG4tLVxuZHJpdmVycy9uZmMvc3QtbmNpL3NwaS5jPTIxMD1zdGF0aWMgaW50IHN0X25jaV9zcGlfcHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25mYy9zdC1uY2kvc3BpLmMtMjQ2LVxuZHJpdmVycy9uZmMvc3QtbmNpL3NwaS5jOjI0NzpcdHIgPSBuZGxjX3Byb2JlKHBoeSwgXHUwMDI2c3BpX3BoeV9vcHMsIFx1MDAyNmRldi1cdTAwM2VkZXYsXG5kcml2ZXJzL25mYy9zdC1uY2kvc3BpLmMtMjQ4LVx0XHRcdFNUX05DSV9GUkFNRV9IRUFEUk9PTSwgU1RfTkNJX0ZSQU1FX1RBSUxST09NLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMCAyMTowMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDQwNgoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDMxMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgQ29kZSYjMzk7cyBGdXp6aW5nIFBvdGVudGlhbCoqCgpPa2F5LCBmaXJzdCB0aGluZ3MgZmlyc3Q6IGBuZGxjX3Byb2JlYCBpcyBkZWZpbml0ZWx5IGV4cG9ydGVkLCB3aGljaCBpcyBnb29kIG5ld3MuIFRoYXQgbWVhbnMgSSBjYW4gc3RhcnQgbXkgZnV6emluZyBmb2N1cyB3aXRoOgoKKiAgIGBuZGxjX3Byb2JlYAoqICAgYG5kbGNfcmVjdmAKKiAgIGBuZGxjX3NlbmRgCiogICBgbmRsY19jbG9zZWAKKiAgIGBzdF9uY2lfZGlzY292ZXJfc2VgCgpIb3dldmVyLCB0aGlzIHBhdGNoIGFsc28gdG91Y2hlcyBgc3RfbmNpX2kyY19wcm9iZWAgYW5kIGBzdF9uY2lfaTJjX3JlYWRgLiBIbW0sIHRoZXkmIzM5O3JlIHN0YXRpYywgc28gZGlyZWN0bHkgZnV6emluZyBieSBuYW1lIGlzIGEgbm8tZ28gdW5sZXNzIHRoZSBjb21waWxlciBpbmxpbmVzIHRoZW0sIHdoaWNoIGlzbiYjMzk7dCBoYXBwZW5pbmcgaGVyZS4gQnV0LCBzaW5jZSBJJiMzOTttIGFpbWluZyBmb3IgZXhwb3J0ZWQgZnVuY3Rpb25zIGFueXdheSwgaXQgYWxpZ25zIHdpdGggbXkgYXBwcm9hY2guCgpUaW1lIGZvciBhIGNvbmZpZyBjaGVjay4gSSYjMzk7dmUgZ290IGBORkNgLCBgTkZDX05DSWAsIGFuZCBgTkZDX1NUX05DSV9JMkNgLi4uIEFueXRoaW5nIGVsc2UgcmVsZXZhbnQ/IFRoZSBwYXRjaCB0b3VjaGVzIGBkcml2ZXJzL25mYy9zdC1uY2kvaTJjLmNgLCBgZHJpdmVycy9uZmMvc3QtbmNpL2NvcmUuY2AsIGBkcml2ZXJzL25mYy9zdC1uY2kvbmRsYy5jYCwgYW5kIGBkcml2ZXJzL25mYy9zdC1uY2kvc2UuY2AuIFRoZXkgYXJlIGFsbCBwYXJ0IG9mIHRoZSBgc3QtbmNpYCBkcml2ZXIsIHNvIEkgbmVlZCB0byBjaGVjayB0aGUgYE1ha2VmaWxlYCBpbiB0aGF0IGRpcmVjdG9yeS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjAgMjE6MDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3QtbmNpJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZmMvc3QtbmNpL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmZjL3N0LW5jaS9NYWtlZmlsZS01LVxuZHJpdmVycy9uZmMvc3QtbmNpL01ha2VmaWxlOjY6c3QtbmNpLW9ianMgPSBuZGxjLm8gY29yZS5vIHNlLm8gdmVuZG9yX2NtZHMub1xuZHJpdmVycy9uZmMvc3QtbmNpL01ha2VmaWxlOjc6b2JqLSQoQ09ORklHX05GQ19TVF9OQ0kpICAgICAmIzQzOz0gc3QtbmNpLm9cbmRyaXZlcnMvbmZjL3N0LW5jaS9NYWtlZmlsZS04LVxuZHJpdmVycy9uZmMvc3QtbmNpL01ha2VmaWxlOjk6c3QtbmNpX2kyYy1vYmpzID0gaTJjLm9cbmRyaXZlcnMvbmZjL3N0LW5jaS9NYWtlZmlsZToxMDpvYmotJChDT05GSUdfTkZDX1NUX05DSV9JMkMpICYjNDM7PSBzdC1uY2lfaTJjLm9cbmRyaXZlcnMvbmZjL3N0LW5jaS9NYWtlZmlsZS0xMS1cbmRyaXZlcnMvbmZjL3N0LW5jaS9NYWtlZmlsZToxMjpzdC1uY2lfc3BpLW9ianMgPSBzcGkub1xuZHJpdmVycy9uZmMvc3QtbmNpL01ha2VmaWxlOjEzOm9iai0kKENPTkZJR19ORkNfU1RfTkNJX1NQSSkgJiM0Mzs9IHN0LW5jaV9zcGkub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMCAyMTowMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTM0MQoJCQkJCQkJb3V0cHV0OiAxOTUKCQkJCQkJCXRob3VnaHRzOiAzMzM1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5c2lzIG9mIE5GQyBTVC1OQ0kgSTJDIERyaXZlciBQYXRjaCoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgaXQmIzM5O3MgY2xlYXIgdGhhdCB0aGlzIHBhdGNoIGludHJvZHVjZXMgc3VwcG9ydCBmb3IgYSBuZXcgTkZDIGNvbnRyb2xsZXIsIHRoZSBTVDIxTkZDRCwgd2hpY2ggY29tbXVuaWNhdGVzIHVzaW5nIHJhdyBOQ0kgb3ZlciBJMkMuIFRoZSBleGlzdGluZyBkcml2ZXIsIGBzdC1uY2ktaTJjYCwgaXMgYmVpbmcgZXh0ZW5kZWQgdG8gaGFuZGxlIHRoaXMgbmV3IG1vZGUgb2Ygb3BlcmF0aW9uLgoKTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyB0aGF0IHRoZSBgTkZDX1NUX05DSWAgY29uZmlnIG1pZ2h0IGJlIG5lZWRlZCBpbmRlcGVuZGVudGx5LCBidXQgYWZ0ZXIgZG91YmxlIGNoZWNraW5nIHRoZSBLY29uZmlnLCBpdCYjMzk7cyBzZWxlY3RlZCBieSBgTkZDX1NUX05DSV9JMkNgLCBzbyB0aGF0JiMzOTtzIGdvb2QuIFRob3VnaCwgaXQmIzM5O3Mgd2lzZSB0byBsaXN0IGl0IGV4cGxpY2l0bHkuIEFuZCBvZiBjb3Vyc2UsIGBORkNgLCBgTkZDX05DSWAsIGFuZCBgSTJDYCBhcmUgdGhlIGJhc2UgY29uZmlncy4gV2UgYWxzbyBuZWVkIHRvIGFkZCB0aGUgYE5GQ19TVF9OQ0lgIGNvbmZpZy4KClRoZSBrZXkgY2hhbmdlIGlzIHRoZSBhZGRpdGlvbiBvZiB0aGUgYHJhd19uY2lgIGZsYWcgd2l0aGluIHRoZSBgc3RfbmNpX2kyY19waHlgIHN0cnVjdCBhbmQgaG93IGl0JiMzOTtzIHVzZWQuIFRoaXMgZmxhZyBhbHRlcnMgdGhlIGJlaGF2aW9yIG9mIHNldmVyYWwgY29yZSBmdW5jdGlvbnMgd2l0aGluIHRoZSBkcml2ZXIuIE5hbWVseSwgIGBzdF9uY2lfaTJjX3JlYWRgLCBgc3RfbmNpX2luaXRgLCBgbmRsY19jbG9zZWAsIGBuZGxjX3NlbmRgLCBgbGx0X25kbGNfc2VuZF9xdWV1ZWAsIGBsbHRfbmRsY19yY3ZfcXVldWVgLCBhbmQgYHN0X25jaV9kaXNjb3Zlcl9zZWAuCgpUaGUgY29tbWl0IGludHJvZHVjZXMgYSBuZXcgY29tcGF0aWJsZSBzdHJpbmcsICYjMzQ7c3Qsc3QyMW5mY2QmIzM0Oywgd2hpY2ggc2V0cyB0aGlzIGByYXdfbmNpYCBmbGFnIGluIHRoZSBwcm9iZSBmdW5jdGlvbi4gVGhlIGNvZGUgYWxzbyB1c2VzIHRoZSBgZGV2aWNlX2dldF9tYXRjaF9kYXRhKClgIHRvIHNwZWNpZnkgd2hldGhlciB0aGUgZHJpdmVyIGlzIGluIHJhdyBOQ0kgbW9kZSBvciBub3QuCgpJIGNhbiBjb25maXJtIHRoYXQgdGhlIG5ldyBsb2dpYyBjYW4gYmUgcmVhY2hlZCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBUaGUgZHJpdmVyIHNob3VsZCBiZSBhYmxlIHRvIGluc3RhbnRpYXRlIHZpYSBzeXNmcywgc28gdGVzdGluZyBzaG91bGRuJiMzOTt0IGJlIHRvbyBjdW1iZXJzb21lLgoKTm93LCBjb25zaWRlcmluZyBmdXp6aW5nLCB0aGUgYXJlYXMgdG8gZm9jdXMgb24gYXJlIHRoZSBmdW5jdGlvbnMgdGhhdCBoYW5kbGUgdGhlIEkyQyBjb21tdW5pY2F0aW9uIGFuZCBOQ0kgZnJhbWUgcHJvY2Vzc2luZywgc3BlY2lmaWNhbGx5OiBgbmRsY19wcm9iZWAsIGBuZGxjX3JlY3ZgLCBgbmRsY19zZW5kYCwgYG5kbGNfY2xvc2VgLCBhbmQgYHN0X25jaV9kaXNjb3Zlcl9zZWAuIEkgYmVsaWV2ZSB0aG9zZSBhcmUgdGhlIGVudHJ5IHBvaW50cyB0byB0aGUgbmV3IGxvZ2ljLiBBbHRob3VnaCBgc3RfbmNpX2kyY19yZWFkYCBpcyB3aGVyZSB0aGUgY29yZSByZWFkaW5nIGxvZ2ljIGlzIGltcGxlbWVudGVkLCBpdCYjMzk7cyBzdGF0aWMuCgpGaW5hbGx5LCB0aGUgcHJvcG9zZWQgY29uZmlnIHNldCBpczogYE5GQ2AsIGBORkNfTkNJYCwgYEkyQ2AsIGBORkNfU1RfTkNJYCwgYW5kIGBORkNfU1RfTkNJX0kyQ2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIwIDIxOjA0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORkMmIzM0OywKICAgICYjMzQ7TkZDX05DSSYjMzQ7LAogICAgJiMzNDtJMkMmIzM0OywKICAgICYjMzQ7TkZDX1NUX05DSSYjMzQ7LAogICAgJiMzNDtORkNfU1RfTkNJX0kyQyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O25kbGNfcHJvYmUmIzM0OywKICAgICYjMzQ7bmRsY19yZWN2JiMzNDssCiAgICAmIzM0O25kbGNfc2VuZCYjMzQ7LAogICAgJiMzNDtuZGxjX2Nsb3NlJiMzNDssCiAgICAmIzM0O3N0X25jaV9kaXNjb3Zlcl9zZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHRoZSBTVDIxTkZDRCBORkMgY29udHJvbGxlciwgd2hpY2ggdXNlcyByYXcgTkNJIG92ZXIgSTJDIGluc3RlYWQgb2YgdGhlIE5ETEMgcHJvdG9jb2wuIEl0IGludHJvZHVjZXMgYSBuZXcgYHJhd19uY2lgIGZsYWcgdGhhdCBtb2RpZmllcyB0aGUgYmVoYXZpb3Igb2YgcmVhZGluZyBmcm9tIHRoZSBJMkMgYnVzLCBzZW5kaW5nL3JlY2VpdmluZyBOQ0kgZnJhbWVzLCBhbmQgaW5pdGlhbGl6aW5nIHRoZSBkZXZpY2UuIFRoZSBJMkMgZHJpdmVyIGNhbiBiZSBpbnN0YW50aWF0ZWQgYW5kIGZ1enplZCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORkMmIzM0OywKICAgICYjMzQ7TkZDX05DSSYjMzQ7LAogICAgJiMzNDtJMkMmIzM0OywKICAgICYjMzQ7TkZDX1NUX05DSSYjMzQ7LAogICAgJiMzNDtORkNfU1RfTkNJX0kyQyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O25kbGNfcHJvYmUmIzM0OywKICAgICYjMzQ7bmRsY19yZWN2JiMzNDssCiAgICAmIzM0O25kbGNfc2VuZCYjMzQ7LAogICAgJiMzNDtuZGxjX2Nsb3NlJiMzNDssCiAgICAmIzM0O3N0X25jaV9kaXNjb3Zlcl9zZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHRoZSBTVDIxTkZDRCBORkMgY29udHJvbGxlciwgd2hpY2ggdXNlcyByYXcgTkNJIG92ZXIgSTJDIGluc3RlYWQgb2YgdGhlIE5ETEMgcHJvdG9jb2wuIEl0IGludHJvZHVjZXMgYSBuZXcgYHJhd19uY2lgIGZsYWcgdGhhdCBtb2RpZmllcyB0aGUgYmVoYXZpb3Igb2YgcmVhZGluZyBmcm9tIHRoZSBJMkMgYnVzLCBzZW5kaW5nL3JlY2VpdmluZyBOQ0kgZnJhbWVzLCBhbmQgaW5pdGlhbGl6aW5nIHRoZSBkZXZpY2UuIFRoZSBJMkMgZHJpdmVyIGNhbiBiZSBpbnN0YW50aWF0ZWQgYW5kIGZ1enplZCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMCAyMTowNDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIwIDIxOjA0PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgc3VwcG9ydCBmb3IgYSBuZXcgTkZDIGNoaXAgKFNUMjFORkNEKSB3aGljaCB1c2VzIHJhdyBOQ0kgZnJhbWVzIG92ZXIgSTJDIGluc3RlYWQgb2YgdGhlIE5ETEMgcHJvdG9jb2wuIFRoZSBjaGFuZ2VzIHByaW1hcmlseSBpbnZvbHZlIHJlYWRpbmcgZGF0YSBmcm9tIHRoZSBJMkMgYnVzIGludG8gYSBsb2NhbCBzdGFjayBidWZmZXIsIGFsbG9jYXRpbmcgYW4gc2tfYnVmZiwgYW5kIGNvcHlpbmcgdGhlIHJlY2VpdmVkIGRhdGEgaW50byBpdC4gVGhlIGNvZGUgZXhwbGljaXRseSBjaGVja3MgdGhlIHJldHVybiB2YWx1ZXMgb2YgYGkyY19tYXN0ZXJfcmVjdmAgdG8gZW5zdXJlIHRoYXQgdGhlIGJ1ZmZlciBpcyBmdWxseSBpbml0aWFsaXplZCBiZWZvcmUgYW55IGRhdGEgaXMgcmVhZCBmcm9tIGl0IG9yIGNvcGllZCB0byB0aGUgc2tfYnVmZi4gVGhlcmUgYXJlIG5vIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdpdGggcGFkZGluZyBiZWluZyBzZW50IHRvIHVzZXIgc3BhY2UsIG5vciBhcmUgdGhlcmUgYW55IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzIHVzZWQgaW4gY29udHJvbCBmbG93LiBBbnkgcG90ZW50aWFsIG1lbW9yeSBjb3JydXB0aW9uLCBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzIGluIHRoaXMgY29kZSB3b3VsZCBiZSBlZmZlY3RpdmVseSBjYXVnaHQgYnkgS0FTQU4uIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBqdXN0aWZpZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5CmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kCmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikKZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuCgpDUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjoKLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlCiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOCiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUAogIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuCi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsCiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLgoKUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTiwKTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy4KQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWQpzZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrcwp0aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLgoKTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3QKdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsCmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5cwp0aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZwp1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wKZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLApjYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy4KClNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczoKMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2IKICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHMKICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC4KMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcwogICBvciBzdHJ1Y3QgZmllbGRzLgozLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzCiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuCjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzCiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy4KClNldCBOZWVkc0tNU0FOPWZhbHNlIElGOgotIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyCiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0CiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLgotIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkCiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLgotIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4KClVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGUKZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDU5ZmIwODI0YmVjNGQxMDI2M2U0ODViNWFjYjc3NTc5NDNiMmIyYmMKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVGh1IEF1ZyAyMCAyMTowMTo1MyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbmZjL3N0LHN0LW5jaS55YW1sIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9uZmMvc3Qsc3QtbmNpLnlhbWwKaW5kZXggMWRjYmRkYmM1YTc0ZS4uYzg1OTc5N2Y0MjJiYyAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9uZmMvc3Qsc3QtbmNpLnlhbWwKJiM0MzsmIzQzOyYjNDM7IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9uZmMvc3Qsc3QtbmNpLnlhbWwKQEAgLTE1LDYgJiM0MzsxNSw3IEBAIHByb3BlcnRpZXM6CiAgICAgICAtIHN0LHN0MjFuZmNiLWkyYwogICAgICAgLSBzdCxzdDIxbmZjYi1zcGkKICAgICAgIC0gc3Qsc3QyMW5mY2MtaTJjCiYjNDM7ICAgICAgLSBzdCxzdDIxbmZjZAogCiAgIHJlc2V0LWdwaW9zOgogICAgIGRlc2NyaXB0aW9uOiBPdXRwdXQgR1BJTyBwaW4gdXNlZCBmb3IgcmVzZXR0aW5nIHRoZSBjb250cm9sbGVyCkBAIC0zNiw2ICYjNDM7MzcsMTUgQEAgcHJvcGVydGllczoKICAgICAgIFNwZWNpZmllcyB0aGF0IHRoZSB1aWNjIHN3cCBzaWduYWwgY2FuIGJlIHBoeXNpY2FsbHkgY29ubmVjdGVkIHRvIHRoZQogICAgICAgY29udHJvbGxlcgogCiYjNDM7ICBjbG9ja3M6CiYjNDM7ICAgIG1heEl0ZW1zOiAxCiYjNDM7ICAgIGRlc2NyaXB0aW9uOgomIzQzOyAgICAgIEV4dGVybmFsIHJlZmVyZW5jZSBjbG9jayBjb25uZWN0ZWQgdG8gU1lTX0NMSy4KJiM0MzsKJiM0MzsgIHZkZC1pby1zdXBwbHk6CiYjNDM7ICAgIGRlc2NyaXB0aW9uOgomIzQzOyAgICAgIERpZ2l0YWwgSS9PIHN1cHBseSAoVlBTX0lPKS4KJiM0MzsKIHJlcXVpcmVkOgogICAtIGNvbXBhdGlibGUKICAgLSBpbnRlcnJ1cHRzCkBAIC00OSw2ICYjNDM7NTksNyBAQCBpZjoKICAgICAgICAgZW51bToKICAgICAgICAgICAtIHN0LHN0MjFuZmNiLWkyYwogICAgICAgICAgIC0gc3Qsc3QyMW5mY2MtaTJjCiYjNDM7ICAgICAgICAgIC0gc3Qsc3QyMW5mY2QKIHRoZW46CiAgIHByb3BlcnRpZXM6CiAgICAgc3BpLW1heC1mcmVxdWVuY3k6IGZhbHNlCkBAIC04MSw2ICYjNDM7OTIsMjYgQEAgZXhhbXBsZXM6CiAgICAgICAgIH07CiAgICAgfTsKIAomIzQzOyAgLSB8CiYjNDM7ICAgICNpbmNsdWRlICZsdDtkdC1iaW5kaW5ncy9ncGlvL2dwaW8uaCZndDsKJiM0MzsgICAgI2luY2x1ZGUgJmx0O2R0LWJpbmRpbmdzL2ludGVycnVwdC1jb250cm9sbGVyL2lycS5oJmd0OwomIzQzOwomIzQzOyAgICBpMmMgewomIzQzOyAgICAgICAgI2FkZHJlc3MtY2VsbHMgPSAmbHQ7MSZndDs7CiYjNDM7ICAgICAgICAjc2l6ZS1jZWxscyA9ICZsdDswJmd0OzsKJiM0MzsKJiM0MzsgICAgICAgIG5mY0A4IHsKJiM0MzsgICAgICAgICAgICBjb21wYXRpYmxlID0gJiMzNDtzdCxzdDIxbmZjZCYjMzQ7OwomIzQzOyAgICAgICAgICAgIHJlZyA9ICZsdDsweDA4Jmd0OzsKJiM0MzsKJiM0MzsgICAgICAgICAgICBpbnRlcnJ1cHRzLWV4dGVuZGVkID0gJmx0OyZhbXA7Z3BpbzUgMiBJUlFfVFlQRV9MRVZFTF9ISUdIJmd0OzsKJiM0MzsgICAgICAgICAgICByZXNldC1ncGlvcyA9ICZsdDsmYW1wO2dwaW81IDI5IEdQSU9fQUNUSVZFX0hJR0gmZ3Q7OwomIzQzOwomIzQzOyAgICAgICAgICAgIGNsb2NrcyA9ICZsdDsmYW1wO2NsayZndDs7CiYjNDM7ICAgICAgICAgICAgdmRkLWlvLXN1cHBseSA9ICZsdDsmYW1wO3ZkZF9pbyZndDs7CiYjNDM7ICAgICAgICB9OwomIzQzOyAgICB9OwomIzQzOwogICAtIHwKICAgICAjaW5jbHVkZSAmbHQ7ZHQtYmluZGluZ3MvZ3Bpby9ncGlvLmgmZ3Q7CiAgICAgI2luY2x1ZGUgJmx0O2R0LWJpbmRpbmdzL2ludGVycnVwdC1jb250cm9sbGVyL2lycS5oJmd0OwpkaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9ib290L2R0cy9xY29tL3FjbTY0OTAtZmFpcnBob25lLWZwNS5kdHMgYi9hcmNoL2FybTY0L2Jvb3QvZHRzL3Fjb20vcWNtNjQ5MC1mYWlycGhvbmUtZnA1LmR0cwppbmRleCAwNGNiOTIzMGQyOWZkLi5lZjY2MDc5YTAyNjNjIDEwMDY0NAotLS0gYS9hcmNoL2FybTY0L2Jvb3QvZHRzL3Fjb20vcWNtNjQ5MC1mYWlycGhvbmUtZnA1LmR0cwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL2FybTY0L2Jvb3QvZHRzL3Fjb20vcWNtNjQ5MC1mYWlycGhvbmUtZnA1LmR0cwpAQCAtOTA4LDcgJiM0Mzs5MDgsMjMgQEAgcmVkcml2ZXJfc3NfaW46IGVuZHBvaW50IHsKICZhbXA7aTJjOSB7CiAJc3RhdHVzID0gJiMzNDtva2F5JiMzNDs7CiAKLQkvKiBTVDIxTkZDIE5GQyBAIDI4ICovCiYjNDM7CW5mY0A4IHsKJiM0MzsJCWNvbXBhdGlibGUgPSAmIzM0O3N0LHN0MjFuZmNkJiMzNDs7CiYjNDM7CQlyZWcgPSAmbHQ7MHgwOCZndDs7CiYjNDM7CiYjNDM7CQlpbnRlcnJ1cHRzLWV4dGVuZGVkID0gJmx0OyZhbXA7dGxtbSA0MSBJUlFfVFlQRV9MRVZFTF9ISUdIJmd0OzsKJiM0MzsJCXJlc2V0LWdwaW9zID0gJmx0OyZhbXA7dGxtbSAzOCBHUElPX0FDVElWRV9ISUdIJmd0OzsKJiM0MzsKJiM0MzsJCXBpbmN0cmwtMCA9ICZsdDsmYW1wO25mY19kZWZhdWx0Jmd0OzsKJiM0MzsJCXBpbmN0cmwtbmFtZXMgPSAmIzM0O2RlZmF1bHQmIzM0OzsKJiM0MzsKJiM0MzsJCWNsb2NrcyA9ICZsdDsmYW1wO3JwbWhjYyBSUE1IX0xOX0JCX0NMSzImZ3Q7OwomIzQzOwkJdmRkLWlvLXN1cHBseSA9ICZsdDsmYW1wO3ZyZWdfbDE4YiZndDs7CiYjNDM7CiYjNDM7CQllc2UtcHJlc2VudDsKJiM0MzsJCXVpY2MtcHJlc2VudDsKJiM0MzsJfTsKJiM0MzsKIAkvKiBWTDUzTDMgVG9GIEAgMjkgKi8KIH07CiAKQEAgLTE0MTAsNiAmIzQzOzE0MjYsMjIgQEAgaGFsbF9zZW5zb3JfZGVmYXVsdDogaGFsbC1zZW5zb3ItZGVmYXVsdC1zdGF0ZSB7CiAJCWRyaXZlLXN0cmVuZ3RoID0gJmx0OzImZ3Q7OwogCQliaWFzLXB1bGwtdXA7CiAJfTsKJiM0MzsKJiM0MzsJbmZjX2RlZmF1bHQ6IG5mYy1kZWZhdWx0LXN0YXRlIHsKJiM0MzsJCXJlc2V0LXBpbnMgewomIzQzOwkJCXBpbnMgPSAmIzM0O2dwaW8zOCYjMzQ7OwomIzQzOwkJCWZ1bmN0aW9uID0gJiMzNDtncGlvJiMzNDs7CiYjNDM7CQkJZHJpdmUtc3RyZW5ndGggPSAmbHQ7MiZndDs7CiYjNDM7CQkJYmlhcy1kaXNhYmxlOwomIzQzOwkJfTsKJiM0MzsKJiM0MzsJCWludC1waW5zIHsKJiM0MzsJCQlwaW5zID0gJiMzNDtncGlvNDEmIzM0OzsKJiM0MzsJCQlmdW5jdGlvbiA9ICYjMzQ7Z3BpbyYjMzQ7OwomIzQzOwkJCWRyaXZlLXN0cmVuZ3RoID0gJmx0OzImZ3Q7OwomIzQzOwkJCWJpYXMtZGlzYWJsZTsKJiM0MzsJCX07CiYjNDM7CX07CiB9OwogCiAmYW1wO3VhcnQ1IHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmZjL3N0LW5jaS9jb3JlLmMgYi9kcml2ZXJzL25mYy9zdC1uY2kvY29yZS5jCmluZGV4IGEzNjcxMzZkNDMzMGEuLjIzNTZmMTZiODA3MDYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmZjL3N0LW5jaS9jb3JlLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZmMvc3QtbmNpL2NvcmUuYwpAQCAtMTgsOCAmIzQzOzE4LDEzIEBACiAKIHN0YXRpYyBpbnQgc3RfbmNpX2luaXQoc3RydWN0IG5jaV9kZXYgKm5kZXYpCiB7CiYjNDM7CXN0cnVjdCBzdF9uY2lfaW5mbyAqaW5mbyA9IG5jaV9nZXRfZHJ2ZGF0YShuZGV2KTsKIAlzdHJ1Y3QgbmNpX21vZGVfc2V0X2NtZCBjbWQ7CiAKJiM0MzsJLyogU1QyMU5GQ0QgaGFzIG5vIE5ETEMgcHJvcHJpZXRhcnkgU0VUX05GQ19NT0RFICovCiYjNDM7CWlmIChpbmZvLSZndDtuZGxjLSZndDtyYXdfbmNpKQomIzQzOwkJcmV0dXJuIDA7CiYjNDM7CiAJY21kLmNtZF90eXBlID0gU1RfTkNJX1NFVF9ORkNfTU9ERTsKIAljbWQubW9kZSA9IDE7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmZjL3N0LW5jaS9pMmMuYyBiL2RyaXZlcnMvbmZjL3N0LW5jaS9pMmMuYwppbmRleCAxNTJjMjBiNmJiMDFhLi5jZmRkYjdmZmUwMmE0IDEwMDY0NAotLS0gYS9kcml2ZXJzL25mYy9zdC1uY2kvaTJjLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZmMvc3QtbmNpL2kyYy5jCkBAIC0xMCwxMCAmIzQzOzEwLDEzIEBACiAjaW5jbHVkZSAmbHQ7bGludXgvaTJjLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvZ3Bpby9jb25zdW1lci5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L2FjcGkuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvY2xrLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvaW50ZXJydXB0LmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvZGVsYXkuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9uZmMuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9vZi5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9wcm9wZXJ0eS5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9yZWd1bGF0b3IvY29uc3VtZXIuaCZndDsKIAogI2luY2x1ZGUgJiMzNDtzdC1uY2kuaCYjMzQ7CiAKQEAgLTIyLDEwICYjNDM7MjUsMTcgQEAKIC8qIG5kbGMgaGVhZGVyICovCiAjZGVmaW5lIFNUX05DSV9GUkFNRV9IRUFEUk9PTSAxCiAjZGVmaW5lIFNUX05DSV9GUkFNRV9UQUlMUk9PTSAwCiYjNDM7I2RlZmluZSBTVF9OQ0lfUkFXX0ZSQU1FX0hFQURST09NIDAKIAogI2RlZmluZSBTVF9OQ0lfSTJDX01JTl9TSVpFIDQgICAvKiBQQ0IoMSkgJiM0MzsgTkNJIFBhY2tldCBoZWFkZXIoMykgKi8KJiM0MzsjZGVmaW5lIFNUX05DSV9OQ0lfSERSX1NJWkUgMyAgIC8qIHJhdyBOQ0k6IE1UL1BCRi9HSUQgJiM0MzsgT0lEICYjNDM7IGxlbiAqLwogI2RlZmluZSBTVF9OQ0lfSTJDX01BWF9TSVpFIDI1MCAvKiByZXEgNC4yLjEgKi8KIAomIzQzO2VudW0gc3RfbmNpX2kyY19wcm90byB7CiYjNDM7CVNUX05DSV9JMkNfUFJPVE9fTkRMQyA9IDAsCiYjNDM7CVNUX05DSV9JMkNfUFJPVE9fUkFXX05DSSwKJiM0Mzt9OwomIzQzOwogI2RlZmluZSBTVF9OQ0lfRFJJVkVSX05BTUUgJiMzNDtzdF9uY2kmIzM0OwogI2RlZmluZSBTVF9OQ0lfSTJDX0RSSVZFUl9OQU1FICYjMzQ7c3RfbmNpX2kyYyYjMzQ7CiAKQEAgLTM0LDYgJiM0Mzs0NCw3IEBAIHN0cnVjdCBzdF9uY2lfaTJjX3BoeSB7CiAJc3RydWN0IGxsdF9uZGxjICpuZGxjOwogCiAJYm9vbCBpcnFfYWN0aXZlOwomIzQzOwlib29sIHJhd19uY2k7CiAKIAlzdHJ1Y3QgZ3Bpb19kZXNjICpncGlvZF9yZXNldDsKIApAQCAtMTExLDYgJiM0MzsxMjIsNDIgQEAgc3RhdGljIGludCBzdF9uY2lfaTJjX3JlYWQoc3RydWN0IHN0X25jaV9pMmNfcGh5ICpwaHksCiAJdTggYnVmW1NUX05DSV9JMkNfTUFYX1NJWkVdOwogCXN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQgPSBwaHktJmd0O2kyY19kZXY7CiAKJiM0MzsJaWYgKHBoeS0mZ3Q7cmF3X25jaSkgewomIzQzOwkJciA9IGkyY19tYXN0ZXJfcmVjdihjbGllbnQsIGJ1ZiwgU1RfTkNJX05DSV9IRFJfU0laRSk7CiYjNDM7CQlpZiAociAmbHQ7IDApIHsKJiM0MzsJCQl1c2xlZXBfcmFuZ2UoMTAwMCwgNDAwMCk7CiYjNDM7CQkJciA9IGkyY19tYXN0ZXJfcmVjdihjbGllbnQsIGJ1ZiwgU1RfTkNJX05DSV9IRFJfU0laRSk7CiYjNDM7CQl9CiYjNDM7CQlpZiAociAhPSBTVF9OQ0lfTkNJX0hEUl9TSVpFKQomIzQzOwkJCXJldHVybiAtRVJFTU9URUlPOwomIzQzOwomIzQzOwkJbGVuID0gYnVmWzJdOwomIzQzOwkJaWYgKGxlbiAmZ3Q7IFNUX05DSV9JMkNfTUFYX1NJWkUpIHsKJiM0MzsJCQluZmNfZXJyKCZhbXA7Y2xpZW50LSZndDtkZXYsICYjMzQ7aW52YWxpZCBmcmFtZSBsZW5cbiYjMzQ7KTsKJiM0MzsJCQlyZXR1cm4gLUVCQURNU0c7CiYjNDM7CQl9CiYjNDM7CiYjNDM7CQkqc2tiID0gYWxsb2Nfc2tiKFNUX05DSV9OQ0lfSERSX1NJWkUgJiM0MzsgbGVuLCBHRlBfS0VSTkVMKTsKJiM0MzsJCWlmICghKnNrYikKJiM0MzsJCQlyZXR1cm4gLUVOT01FTTsKJiM0MzsKJiM0MzsJCXNrYl9wdXQoKnNrYiwgU1RfTkNJX05DSV9IRFJfU0laRSk7CiYjNDM7CQltZW1jcHkoKCpza2IpLSZndDtkYXRhLCBidWYsIFNUX05DSV9OQ0lfSERSX1NJWkUpOwomIzQzOwomIzQzOwkJaWYgKCFsZW4pCiYjNDM7CQkJcmV0dXJuIDA7CiYjNDM7CiYjNDM7CQlyID0gaTJjX21hc3Rlcl9yZWN2KGNsaWVudCwgYnVmLCBsZW4pOwomIzQzOwkJaWYgKHIgIT0gbGVuKSB7CiYjNDM7CQkJa2ZyZWVfc2tiKCpza2IpOwomIzQzOwkJCXJldHVybiAtRVJFTU9URUlPOwomIzQzOwkJfQomIzQzOwomIzQzOwkJc2tiX3B1dCgqc2tiLCBsZW4pOwomIzQzOwkJbWVtY3B5KCgqc2tiKS0mZ3Q7ZGF0YSAmIzQzOyBTVF9OQ0lfTkNJX0hEUl9TSVpFLCBidWYsIGxlbik7CiYjNDM7CQlyZXR1cm4gMDsKJiM0MzsJfQomIzQzOwogCXIgPSBpMmNfbWFzdGVyX3JlY3YoY2xpZW50LCBidWYsIFNUX05DSV9JMkNfTUlOX1NJWkUpOwogCWlmIChyICZsdDsgMCkgeyAgLyogUmV0cnksIGNoaXAgd2FzIGluIHN0YW5kYnkgKi8KIAkJdXNsZWVwX3JhbmdlKDEwMDAsIDQwMDApOwpAQCAtMjExLDYgJiM0MzsyNTgsOCBAQCBzdGF0aWMgaW50IHN0X25jaV9pMmNfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKIAkJcmV0dXJuIC1FTk9NRU07CiAKIAlwaHktJmd0O2kyY19kZXYgPSBjbGllbnQ7CiYjNDM7CXBoeS0mZ3Q7cmF3X25jaSA9ICh1aW50cHRyX3QpZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldikgPT0KJiM0MzsJCQlTVF9OQ0lfSTJDX1BST1RPX1JBV19OQ0k7CiAKIAlpMmNfc2V0X2NsaWVudGRhdGEoY2xpZW50LCBwaHkpOwogCkBAIC0yMjUsMTkgJiM0MzsyNzQsMzEgQEAgc3RhdGljIGludCBzdF9uY2lfaTJjX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCiAJCXJldHVybiAtRU5PREVWOwogCX0KIAomIzQzOwlyID0gZGV2bV9yZWd1bGF0b3JfZ2V0X2VuYWJsZV9vcHRpb25hbChkZXYsICYjMzQ7dmRkLWlvJiMzNDspOwomIzQzOwlpZiAociAmYW1wOyZhbXA7IHIgIT0gLUVOT0RFVikKJiM0MzsJCXJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgciwgJiMzNDtmYWlsZWQgdG8gZW5hYmxlIHZkZC1pb1xuJiMzNDspOwomIzQzOwomIzQzOwlyID0gUFRSX0VSUl9PUl9aRVJPKGRldm1fY2xrX2dldF9vcHRpb25hbF9lbmFibGVkKGRldiwgTlVMTCkpOwomIzQzOwlpZiAocikKJiM0MzsJCXJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgciwgJiMzNDtmYWlsZWQgdG8gZW5hYmxlIGNsb2NrXG4mIzM0Oyk7CiYjNDM7CiAJcGh5LSZndDtzZV9zdGF0dXMuaXNfZXNlX3ByZXNlbnQgPQogCQkJCWRldmljZV9wcm9wZXJ0eV9yZWFkX2Jvb2woZGV2LCAmIzM0O2VzZS1wcmVzZW50JiMzNDspOwogCXBoeS0mZ3Q7c2Vfc3RhdHVzLmlzX3VpY2NfcHJlc2VudCA9CiAJCQkJZGV2aWNlX3Byb3BlcnR5X3JlYWRfYm9vbChkZXYsICYjMzQ7dWljYy1wcmVzZW50JiMzNDspOwogCiAJciA9IG5kbGNfcHJvYmUocGh5LCAmYW1wO2kyY19waHlfb3BzLCAmYW1wO2NsaWVudC0mZ3Q7ZGV2LAotCQkJU1RfTkNJX0ZSQU1FX0hFQURST09NLCBTVF9OQ0lfRlJBTUVfVEFJTFJPT00sCiYjNDM7CQkJcGh5LSZndDtyYXdfbmNpID8gU1RfTkNJX1JBV19GUkFNRV9IRUFEUk9PTSA6CiYjNDM7CQkJCSAgICAgICBTVF9OQ0lfRlJBTUVfSEVBRFJPT00sCiYjNDM7CQkJU1RfTkNJX0ZSQU1FX1RBSUxST09NLAogCQkJJmFtcDtwaHktJmd0O25kbGMsICZhbXA7cGh5LSZndDtzZV9zdGF0dXMpOwogCWlmIChyICZsdDsgMCkgewogCQluZmNfZXJyKCZhbXA7Y2xpZW50LSZndDtkZXYsICYjMzQ7VW5hYmxlIHRvIHJlZ2lzdGVyIG5kbGMgbGF5ZXJcbiYjMzQ7KTsKIAkJcmV0dXJuIHI7CiAJfQogCiYjNDM7CXBoeS0mZ3Q7bmRsYy0mZ3Q7cmF3X25jaSA9IHBoeS0mZ3Q7cmF3X25jaTsKJiM0MzsKIAlwaHktJmd0O2lycV9hY3RpdmUgPSB0cnVlOwogCXIgPSBkZXZtX3JlcXVlc3RfdGhyZWFkZWRfaXJxKCZhbXA7Y2xpZW50LSZndDtkZXYsIGNsaWVudC0mZ3Q7aXJxLCBOVUxMLAogCQkJCXN0X25jaV9pcnFfdGhyZWFkX2ZuLApAQCAtMjU3LDIzICYjNDM7MzE4LDI1IEBAIHN0YXRpYyB2b2lkIHN0X25jaV9pMmNfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCiB9CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaTJjX2RldmljZV9pZCBzdF9uY2lfaTJjX2lkX3RhYmxlW10gPSB7Ci0JeyAubmFtZSA9IFNUX05DSV9EUklWRVJfTkFNRSB9LAotCXsgfQomIzQzOwl7IFNUX05DSV9EUklWRVJfTkFNRSB9LAomIzQzOwl7fQogfTsKIE1PRFVMRV9ERVZJQ0VfVEFCTEUoaTJjLCBzdF9uY2lfaTJjX2lkX3RhYmxlKTsKIAotc3RhdGljIGNvbnN0IHN0cnVjdCBhY3BpX2RldmljZV9pZCBzdF9uY2lfaTJjX2FjcGlfbWF0Y2hbXSA9IHsKLQl7IC5pZCA9ICYjMzQ7U01PMjEwMSYjMzQ7IH0sCi0JeyAuaWQgPSAmIzM0O1NNTzIxMDImIzM0OyB9LAotCXsgfQomIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgYWNwaV9kZXZpY2VfaWQgc3RfbmNpX2kyY19hY3BpX21hdGNoW10gX19tYXliZV91bnVzZWQgPSB7CiYjNDM7CXsmIzM0O1NNTzIxMDEmIzM0O30sCiYjNDM7CXsmIzM0O1NNTzIxMDImIzM0O30sCiYjNDM7CXt9CiB9OwogTU9EVUxFX0RFVklDRV9UQUJMRShhY3BpLCBzdF9uY2lfaTJjX2FjcGlfbWF0Y2gpOwogCi1zdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBvZl9zdF9uY2lfaTJjX21hdGNoW10gPSB7Ci0JeyAuY29tcGF0aWJsZSA9ICYjMzQ7c3Qsc3QyMW5mY2ItaTJjJiMzNDsgfSwKLQl7IC5jb21wYXRpYmxlID0gJiMzNDtzdCxzdDIxbmZjYl9pMmMmIzM0OyB9LAotCXsgLmNvbXBhdGlibGUgPSAmIzM0O3N0LHN0MjFuZmNjLWkyYyYjMzQ7IH0sCi0JeyB9CiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgb2Zfc3RfbmNpX2kyY19tYXRjaFtdIF9fbWF5YmVfdW51c2VkID0gewomIzQzOwl7IC5jb21wYXRpYmxlID0gJiMzNDtzdCxzdDIxbmZjYi1pMmMmIzM0OywgfSwKJiM0MzsJeyAuY29tcGF0aWJsZSA9ICYjMzQ7c3Qsc3QyMW5mY2JfaTJjJiMzNDssIH0sCiYjNDM7CXsgLmNvbXBhdGlibGUgPSAmIzM0O3N0LHN0MjFuZmNjLWkyYyYjMzQ7LCB9LAomIzQzOwl7IC5jb21wYXRpYmxlID0gJiMzNDtzdCxzdDIxbmZjZCYjMzQ7LAomIzQzOwkgIC5kYXRhID0gKHZvaWQgKilTVF9OQ0lfSTJDX1BST1RPX1JBV19OQ0kgfSwKJiM0MzsJe30KIH07CiBNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBvZl9zdF9uY2lfaTJjX21hdGNoKTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZmMvc3QtbmNpL25kbGMuYyBiL2RyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmMKaW5kZXggYmU0ODA4ODU5Y2ZhOS4uYjMxOTI0NjBjOTZlMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZmMvc3QtbmNpL25kbGMuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25mYy9zdC1uY2kvbmRsYy5jCkBAIC02Miw4ICYjNDM7NjIsOSBAQCB2b2lkIG5kbGNfY2xvc2Uoc3RydWN0IGxsdF9uZGxjICpuZGxjKQogCS8qIHRvZ2dsZSByZXNldCBwaW4gKi8KIAluZGxjLSZndDtvcHMtJmd0O2VuYWJsZShuZGxjLSZndDtwaHlfaWQpOwogCi0JbmNpX3Byb3BfY21kKG5kbGMtJmd0O25kZXYsIFNUX05DSV9DT1JFX1BST1AsCi0JCSAgICAgc2l6ZW9mKHN0cnVjdCBuY2lfbW9kZV9zZXRfY21kKSwgKF9fdTggKikmYW1wO2NtZCk7CiYjNDM7CWlmICghbmRsYy0mZ3Q7cmF3X25jaSkKJiM0MzsJCW5jaV9wcm9wX2NtZChuZGxjLSZndDtuZGV2LCBTVF9OQ0lfQ09SRV9QUk9QLAomIzQzOwkJCSAgICAgc2l6ZW9mKHN0cnVjdCBuY2lfbW9kZV9zZXRfY21kKSwgKF9fdTggKikmYW1wO2NtZCk7CiAKIAluZGxjLSZndDtwb3dlcmVkID0gMDsKIAluZGxjLSZndDtvcHMtJmd0O2Rpc2FibGUobmRsYy0mZ3Q7cGh5X2lkKTsKQEAgLTcyLDExICYjNDM7NzMsMTMgQEAgRVhQT1JUX1NZTUJPTChuZGxjX2Nsb3NlKTsKIAogaW50IG5kbGNfc2VuZChzdHJ1Y3QgbGx0X25kbGMgKm5kbGMsIHN0cnVjdCBza19idWZmICpza2IpCiB7Ci0JLyogYWRkIG5kbGMgaGVhZGVyICovCi0JdTggcGNiID0gUENCX1RZUEVfREFUQUZSQU1FIHwgUENCX0RBVEFGUkFNRV9SRVRSQU5TTUlUX05PIHwKLQkJUENCX0ZSQU1FX0NSQ19JTkZPX05PVFBSRVNFTlQ7CiYjNDM7CWlmICghbmRsYy0mZ3Q7cmF3X25jaSkgewomIzQzOwkJLyogYWRkIG5kbGMgaGVhZGVyICovCiYjNDM7CQl1OCBwY2IgPSBQQ0JfVFlQRV9EQVRBRlJBTUUgfCBQQ0JfREFUQUZSQU1FX1JFVFJBTlNNSVRfTk8gfAomIzQzOwkJCVBDQl9GUkFNRV9DUkNfSU5GT19OT1RQUkVTRU5UOwogCi0JKih1OCAqKXNrYl9wdXNoKHNrYiwgMSkgPSBwY2I7CiYjNDM7CQkqKHU4ICopc2tiX3B1c2goc2tiLCAxKSA9IHBjYjsKJiM0MzsJfQogCXNrYl9xdWV1ZV90YWlsKCZhbXA7bmRsYy0mZ3Q7c2VuZF9xLCBza2IpOwogCiAJc2NoZWR1bGVfd29yaygmYW1wO25kbGMtJmd0O3NtX3dvcmspOwpAQCAtMTAzLDYgJiM0MzsxMDYsMTAgQEAgc3RhdGljIHZvaWQgbGx0X25kbGNfc2VuZF9xdWV1ZShzdHJ1Y3QgbGx0X25kbGMgKm5kbGMpCiAJCQluZGxjLSZndDtoYXJkX2ZhdWx0ID0gcjsKIAkJCWJyZWFrOwogCQl9CiYjNDM7CQlpZiAobmRsYy0mZ3Q7cmF3X25jaSkgewomIzQzOwkJCWtmcmVlX3NrYihza2IpOwomIzQzOwkJCWNvbnRpbnVlOwomIzQzOwkJfQogCQl0aW1lX3NlbnQgPSBqaWZmaWVzOwogCQkqKHVuc2lnbmVkIGxvbmcgKilza2ItJmd0O2NiID0gdGltZV9zZW50OwogCkBAIC0xNTQsNiAmIzQzOzE2MSwxMCBAQCBzdGF0aWMgdm9pZCBsbHRfbmRsY19yY3ZfcXVldWUoc3RydWN0IGxsdF9uZGxjICpuZGxjKQogCQlwcl9kZWJ1ZygmIzM0O3JjdlFsZW49JWRcbiYjMzQ7LCBuZGxjLSZndDtyY3ZfcS5xbGVuKTsKIAogCXdoaWxlICgoc2tiID0gc2tiX2RlcXVldWUoJmFtcDtuZGxjLSZndDtyY3ZfcSkpICE9IE5VTEwpIHsKJiM0MzsJCWlmIChuZGxjLSZndDtyYXdfbmNpKSB7CiYjNDM7CQkJbmNpX3JlY3ZfZnJhbWUobmRsYy0mZ3Q7bmRldiwgc2tiKTsKJiM0MzsJCQljb250aW51ZTsKJiM0MzsJCX0KIAkJcGNiID0gc2tiLSZndDtkYXRhWzBdOwogCQlza2JfcHVsbChza2IsIDEpOwogCQlpZiAoKHBjYiAmYW1wOyBQQ0JfVFlQRV9NQVNLKSA9PSBQQ0JfVFlQRV9TVVBFUlZJU09SKSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25mYy9zdC1uY2kvbmRsYy5oIGIvZHJpdmVycy9uZmMvc3QtbmNpL25kbGMuaAppbmRleCBjMjRjZTliMGRmNTJlLi41YzFmOGJhZjA0NzE4IDEwMDY0NAotLS0gYS9kcml2ZXJzL25mYy9zdC1uY2kvbmRsYy5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmgKQEAgLTM5LDYgJiM0MzszOSw4IEBAIHN0cnVjdCBsbHRfbmRsYyB7CiAJICovCiAJaW50IGhhcmRfZmF1bHQ7CiAJaW50IHBvd2VyZWQ7CiYjNDM7CS8qIFNUMjFORkNEOiByYXcgTkNJIG9uIHRoZSB3aXJlLCBubyBORExDIFBDQiAvIEFDSyB0aW1lcnMgKi8KJiM0MzsJYm9vbCByYXdfbmNpOwogfTsKIAogaW50IG5kbGNfb3BlbihzdHJ1Y3QgbGx0X25kbGMgKm5kbGMpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZmMvc3QtbmNpL3NlLmMgYi9kcml2ZXJzL25mYy9zdC1uY2kvc2UuYwppbmRleCA2MDdlYzc2OGViN2I0Li40NGNjMTAyYmNkZTIxIDEwMDY0NAotLS0gYS9kcml2ZXJzL25mYy9zdC1uY2kvc2UuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25mYy9zdC1uY2kvc2UuYwpAQCAtNjIxLDYgJiM0Mzs2MjEsOSBAQCBpbnQgc3RfbmNpX2Rpc2NvdmVyX3NlKHN0cnVjdCBuY2lfZGV2ICpuZGV2KQogCWludCBzZV9jb3VudCA9IDA7CiAJc3RydWN0IHN0X25jaV9pbmZvICppbmZvID0gbmNpX2dldF9kcnZkYXRhKG5kZXYpOwogCiYjNDM7CWlmIChpbmZvLSZndDtuZGxjLSZndDtyYXdfbmNpKQomIzQzOwkJcmV0dXJuIDA7CiYjNDM7CiAJciA9IHN0X25jaV9oY2lfbmV0d29ya19pbml0KG5kZXYpOwogCWlmIChyICE9IDApCiAJCXJldHVybiByOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjAgMjE6MDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjkxNQoJCQkJCQkJb3V0cHV0OiAyMDEKCQkJCQkJCXRob3VnaHRzOiAzNTU2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKktNU0FOIEFuYWx5c2lzIG9mIFNUMjFORkNEIFJhdyBOQ0kgU3VwcG9ydCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBUaGlzIHBhdGNoIGlzIGFkZGluZyBzdXBwb3J0IGZvciBhIG5ldyBORkMgY2hpcCwgdGhlIFNUMjFORkNELCB0byB0aGUgYHN0LW5jaWAgZHJpdmVyLiBUaGUga2V5IGRpZmZlcmVuY2UgaGVyZSBpcyB0aGUgdXNlIG9mICYjMzQ7cmF3IE5DSSYjMzQ7IG92ZXIgSTJDIGluc3RlYWQgb2YgdGhlIG1vcmUgY29tcGxleCBORExDIHByb3RvY29sLiBUaGUgZHJpdmVyJiMzOTtzIGBpMmMuY2AgZmlsZSBoYXMgdGhlIG5ldyBsb2dpYyBmb3IgaGFuZGxpbmcgdGhpcyByYXcgTkNJIG1vZGUuCgpUaGUgY3JpdGljYWwgcGFydCBpcyB3aXRoaW4gdGhlIGBzdF9uY2lfaTJjX3JlYWRgIGZ1bmN0aW9uLiBJdCByZWFkcyBkYXRhIGZyb20gdGhlIEkyQyBkZXZpY2UgaW50byBhIGxvY2FsIGJ1ZmZlciAoYGJ1ZmApLiBJdCBhcHBlYXJzIHRoZSBjb2RlIHJlYWRzIHRoZSBOQ0kgaGVhZGVyIGZpcnN0LCB0aGVuIGRldGVybWluZXMgdGhlIHBheWxvYWQgbGVuZ3RoIGZyb20gdGhlIGhlYWRlciwgYW5kIHRoZW4gcmVhZHMgdGhlIGFjdHVhbCBwYXlsb2FkLiBBIGNvdXBsZSBvZiBpbXBvcnRhbnQgY2hlY2tzIGFyZSBpbiBwbGFjZTogaWYgdGhlIGZpcnN0IGBpMmNfbWFzdGVyX3JlY3ZgIGZhaWxzLCBpdCB0cmllcyBhZ2Fpbi4gVGhlbiwgaXQgdmFsaWRhdGVzIHRoZSBwYXlsb2FkIGxlbmd0aCAoYGxlbmApIHRvIG1ha2Ugc3VyZSBpdCYjMzk7cyB3aXRoaW4gdGhlIHBlcm1pc3NpYmxlIHJhbmdlIChgU1RfTkNJX0kyQ19NQVhfU0laRWApLiBUaGlzIGxvb2tzIHNhZmUuIFRoZSBhbGxvY2F0aW9uIGFuZCBjb3B5aW5nIGludG8gdGhlIGBza2JgIGFwcGVhciB0byBiZSBkb25lIGNvcnJlY3RseSwgZW5zdXJpbmcgdGhlIGBza2JgIG9ubHkgY29udGFpbnMgaW5pdGlhbGl6ZWQgZGF0YS4KCkkmIzM5O20gY2hlY2tpbmcgaWYgdGhlIGRyaXZlciBjb3JyZWN0bHkgaGFuZGxlcyBgaTJjX21hc3Rlcl9yZWN2YCByZXR1cm5pbmcgYSBwb3NpdGl2ZSB2YWx1ZSBsZXNzIHRoYW4gdGhlIGV4cGVjdGVkIG51bWJlciBvZiBieXRlcy4gQWZ0ZXIgcmV2aWV3aW5nIGBpMmNfbWFzdGVyX3JlY3ZgJiMzOTtzIGRvY3VtZW50YXRpb24sIGl0IHJldHVybnMgdGhlIG51bWJlciBvZiBieXRlcyByZWFkLiBJZiB0aGlzIGRvZXNuJiMzOTt0IG1hdGNoIHRoZSBleHBlY3RlZCBzaXplLCB0aGUgY29kZSByZXR1cm5zIGFuIGVycm9yLCB3aGljaCBpcyBjb3JyZWN0LgoKVGhlcmUgaXMgYWxzbyBhIGNvbmNlcm4gYWJvdXQgdW5pbml0aWFsaXplZCBtZW1vcnkgaW4gdGhlIGBza2JgLiBUaGUgYGFsbG9jX3NrYmAgYWxsb2NhdGVzIHRoZSBtZW1vcnksIGJ1dCB0aGUgYHNrYl9wdXRgIGFuZCBgbWVtY3B5YCBhcmUgdGhlIHBsYWNlcyB3aGVyZSBpbml0aWFsaXplZCBkYXRhIGlzIHBsYWNlZCBpbnRvIHRoZSBgc2tiYC4gVGhlIGxvZ2ljIGFwcGVhcnMgc2FmZSBiZWNhdXNlIGBtZW1jcHlgIGNvcGllcyBleGFjdGx5IHRoZSBkYXRhIHJlYWQgZnJvbSBJMkMsIGVuc3VyaW5nIGFsbCBkYXRhIGluIHRoZSBgc2tiYCBpcyBpbml0aWFsaXplZC4KClRoZSBORExDIHByb3RvY29sIGlzIGJ5cGFzc2VkIGluIGByYXdfbmNpYCBtb2RlLiBUaHVzLCBpbiB0aGUgYG5kbGNfc2VuZGAgZnVuY3Rpb24sIHRoZSBQQ0IgYnl0ZSBpcyBub3QgcHVzaGVkIG9udG8gdGhlIHNrYi4gVGhlIGBsbHRfbmRsY19yY3ZfcXVldWVgIGZ1bmN0aW9uIGFsc28gcGFzc2VzIHRoZSBza2IgZGlyZWN0bHkgdG8gdGhlIE5DSSBmcmFtZS4gSSBoYXZlIHRvIG1ha2Ugc3VyZSBubyB1bmluaXRpYWxpemVkIG1lbW9yeSBnb2VzIGludG8gYG5jaV9yZWN2X2ZyYW1lYC4gVGhlIHJldmlldyBjb25maXJtcyB0aGUgc2tiIGhhcyB0aGUgcmlnaHQgYW1vdW50IG9mIGJ5dGVzLCB0aGUgZGF0YSBpcyBwdXNoZWQsIGFuZCBub3RoaW5nIGlzIG1pc3NlZC4gVGhlcmUgZG9lc24mIzM5O3QgYXBwZWFyIHRvIGJlIGFueSBwYWRkaW5nIG9yIGFueSBvdGhlciB1bmluaXRpYWxpemVkIG1lbW9yeSBsZWFrLgoKVGhlIHBhdGNoIGluY2x1ZGVzIHRoZSBjb2RlIGluIGBzdF9uY2lfaTJjX3Byb2JlYCB0aGF0IGNoZWNrcyBhIGZsYWc6IGBwaHktJmd0O3Jhd19uY2lgLiBJIHZlcmlmaWVkIHRoYXQgaXQmIzM5O3MganVzdCBhIGJvb2xlYW4gZmxhZy4gQWxzbywgYHN0X25jaV9pbml0YCBhdm9pZHMgc2VuZGluZyBhIGNvbW1hbmQgZm9yIHRoZSBTVDIxTkZDRCBpZiBpbiB0aGUgYHJhd19uY2lgIG1vZGUuCgpMZXQmIzM5O3MgYWxzbyBsb29rIGF0IGFueSBLTVNBTi1zcGVjaWZpYyBpc3N1ZS4gSSBhbSBzZWVpbmcgdGhlIGRyaXZlciByZWFkaW5nIGRhdGEgZnJvbSB0aGUgSTJDIGRldmljZSBpbnRvIGEgbG9jYWwgYnVmZmVyIGFuZCBjb3B5aW5nIHRoZSBkYXRhIHRvIGFuIHNrYi4gS01TQU4gaXMgZ3JlYXQgYXQgZGV0ZWN0aW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlLCBidXQgaWYgSTJDIGlzIG1vY2tlZCwgaXQgbWlnaHQgc2hvdyB1bmluaXRpYWxpemVkIG1lbW9yeSBpbiBjZXJ0YWluIG1vY2tzLiBUaGUga2V5IGlzIHRvIG1ha2Ugc3VyZSBgaTJjX21hc3Rlcl9yZWN2YCBhbHdheXMgcmV0dXJucyB0aGUgcmlnaHQgYW1vdW50IG9mIGJ5dGVzLiBTaW5jZSB0aGUgZHJpdmVyIGNvZGUgZXhwbGljaXRseSBjaGVja3MgdGhlIHJldHVybiB2YWx1ZSB0byBlbnN1cmUgdGhlIGJ1ZmZlciBpcyBmdWxseSBpbml0aWFsaXplZCwgaXQmIzM5O3Mgbm90IGEgY29uY2Vybi4gVGhlIGNvZGUgY2hlY2tzIHRoYXQgdGhlIGV4cGVjdGVkIG51bWJlciBvZiBieXRlcyBpcyByZWFkLgoKRmluYWxseSwgSSBoYXZlIHRvIGVuc3VyZSB0aGUgcGF0Y2ggZG9lcyBub3QgbGVhayB1bmluaXRpYWxpemVkIG1lbW9yeSBpbnRvIHRoZSBza2IuIFRoZXJlIGFyZSBubyBzdHJ1Y3QgcGFkZGluZyBpc3N1ZXMuIFRoZSByZWFkcyBpbiB0aGUgZHJpdmVyIHdpbGwgZW5zdXJlIGFsbCBkYXRhIGlzIGluIHRoZSBsb2NhbCBidWZmZXIuIEFuZCBpZiBldmVyeXRoaW5nIGlzIHJlYWQgZnJvbSBJMkMsIGBtZW1jcHlgIGRvZXMgYSBjb3B5IGludG8gdGhlIGBza2JgLCBhbmQgbm8gY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgYXJlIHBhcnRpYWxseSBpbml0aWFsaXplZC4gSSBkb24mIzM5O3Qgc2VlIGFueSBLTVNBTi1zcGVjaWZpYyByaXNrcyBoZXJlLgoKVGhlcmVmb3JlLCBhZnRlciBhIGNhcmVmdWwgcmV2aWV3LCBJIGJlbGlldmUgdGhlIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2UgaXMgbG93LiBBbGwgYnVmZmVycyBhcmUgaW5pdGlhbGl6ZWQsIGFuZCB0aGUgY29kZSBleHBsaWNpdGx5IGNoZWNrcyB0aGUgcmV0dXJuIHZhbHVlcyBvZiBJMkMgZnVuY3Rpb25zIHRvIGVuc3VyZSBkYXRhIGludGVncml0eS4gVGhlcmVmb3JlLCBOZWVkc0tNU0FOIHNob3VsZCBiZSBmYWxzZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjAgMjE6MDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBzdXBwb3J0IGZvciBhIG5ldyBORkMgY2hpcCAoU1QyMU5GQ0QpIHdoaWNoIHVzZXMgcmF3IE5DSSBmcmFtZXMgb3ZlciBJMkMgaW5zdGVhZCBvZiB0aGUgTkRMQyBwcm90b2NvbC4gVGhlIGNoYW5nZXMgcHJpbWFyaWx5IGludm9sdmUgcmVhZGluZyBkYXRhIGZyb20gdGhlIEkyQyBidXMgaW50byBhIGxvY2FsIHN0YWNrIGJ1ZmZlciwgYWxsb2NhdGluZyBhbiBza19idWZmLCBhbmQgY29weWluZyB0aGUgcmVjZWl2ZWQgZGF0YSBpbnRvIGl0LiBUaGUgY29kZSBleHBsaWNpdGx5IGNoZWNrcyB0aGUgcmV0dXJuIHZhbHVlcyBvZiBgaTJjX21hc3Rlcl9yZWN2YCB0byBlbnN1cmUgdGhhdCB0aGUgYnVmZmVyIGlzIGZ1bGx5IGluaXRpYWxpemVkIGJlZm9yZSBhbnkgZGF0YSBpcyByZWFkIGZyb20gaXQgb3IgY29waWVkIHRvIHRoZSBza19idWZmLiBUaGVyZSBhcmUgbm8gY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2l0aCBwYWRkaW5nIGJlaW5nIHNlbnQgdG8gdXNlciBzcGFjZSwgbm9yIGFyZSB0aGVyZSBhbnkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMgdXNlZCBpbiBjb250cm9sIGZsb3cuIEFueSBwb3RlbnRpYWwgbWVtb3J5IGNvcnJ1cHRpb24sIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgaW4gdGhpcyBjb2RlIHdvdWxkIGJlIGVmZmVjdGl2ZWx5IGNhdWdodCBieSBLQVNBTi4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IGp1c3RpZmllZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgc3VwcG9ydCBmb3IgYSBuZXcgTkZDIGNoaXAgKFNUMjFORkNEKSB3aGljaCB1c2VzIHJhdyBOQ0kgZnJhbWVzIG92ZXIgSTJDIGluc3RlYWQgb2YgdGhlIE5ETEMgcHJvdG9jb2wuIFRoZSBjaGFuZ2VzIHByaW1hcmlseSBpbnZvbHZlIHJlYWRpbmcgZGF0YSBmcm9tIHRoZSBJMkMgYnVzIGludG8gYSBsb2NhbCBzdGFjayBidWZmZXIsIGFsbG9jYXRpbmcgYW4gc2tfYnVmZiwgYW5kIGNvcHlpbmcgdGhlIHJlY2VpdmVkIGRhdGEgaW50byBpdC4gVGhlIGNvZGUgZXhwbGljaXRseSBjaGVja3MgdGhlIHJldHVybiB2YWx1ZXMgb2YgYGkyY19tYXN0ZXJfcmVjdmAgdG8gZW5zdXJlIHRoYXQgdGhlIGJ1ZmZlciBpcyBmdWxseSBpbml0aWFsaXplZCBiZWZvcmUgYW55IGRhdGEgaXMgcmVhZCBmcm9tIGl0IG9yIGNvcGllZCB0byB0aGUgc2tfYnVmZi4gVGhlcmUgYXJlIG5vIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdpdGggcGFkZGluZyBiZWluZyBzZW50IHRvIHVzZXIgc3BhY2UsIG5vciBhcmUgdGhlcmUgYW55IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzIHVzZWQgaW4gY29udHJvbCBmbG93LiBBbnkgcG90ZW50aWFsIG1lbW9yeSBjb3JydXB0aW9uLCBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzIGluIHRoaXMgY29kZSB3b3VsZCBiZSBlZmZlY3RpdmVseSBjYXVnaHQgYnkgS0FTQU4uIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBqdXN0aWZpZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIwVDIxOjAxOjU2LjM5NzcyNzgwNVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2NjE4MjkyNjQ2NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORkNcIixcbiAgICBcIk5GQ19OQ0lcIixcbiAgICBcIkkyQ1wiLFxuICAgIFwiTkZDX1NUX05DSVwiLFxuICAgIFwiTkZDX1NUX05DSV9JMkNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJuZGxjX3Byb2JlXCIsXG4gICAgXCJuZGxjX3JlY3ZcIixcbiAgICBcIm5kbGNfc2VuZFwiLFxuICAgIFwibmRsY19jbG9zZVwiLFxuICAgIFwic3RfbmNpX2Rpc2NvdmVyX3NlXCJcbiAgXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIHN1cHBvcnQgZm9yIGEgbmV3IE5GQyBjaGlwIChTVDIxTkZDRCkgd2hpY2ggdXNlcyByYXcgTkNJIGZyYW1lcyBvdmVyIEkyQyBpbnN0ZWFkIG9mIHRoZSBORExDIHByb3RvY29sLiBUaGUgY2hhbmdlcyBwcmltYXJpbHkgaW52b2x2ZSByZWFkaW5nIGRhdGEgZnJvbSB0aGUgSTJDIGJ1cyBpbnRvIGEgbG9jYWwgc3RhY2sgYnVmZmVyLCBhbGxvY2F0aW5nIGFuIHNrX2J1ZmYsIGFuZCBjb3B5aW5nIHRoZSByZWNlaXZlZCBkYXRhIGludG8gaXQuIFRoZSBjb2RlIGV4cGxpY2l0bHkgY2hlY2tzIHRoZSByZXR1cm4gdmFsdWVzIG9mIGBpMmNfbWFzdGVyX3JlY3ZgIHRvIGVuc3VyZSB0aGF0IHRoZSBidWZmZXIgaXMgZnVsbHkgaW5pdGlhbGl6ZWQgYmVmb3JlIGFueSBkYXRhIGlzIHJlYWQgZnJvbSBpdCBvciBjb3BpZWQgdG8gdGhlIHNrX2J1ZmYuIFRoZXJlIGFyZSBubyBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aXRoIHBhZGRpbmcgYmVpbmcgc2VudCB0byB1c2VyIHNwYWNlLCBub3IgYXJlIHRoZXJlIGFueSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcyB1c2VkIGluIGNvbnRyb2wgZmxvdy4gQW55IHBvdGVudGlhbCBtZW1vcnkgY29ycnVwdGlvbiwgb3V0LW9mLWJvdW5kcyBhY2Nlc3Nlcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyBpbiB0aGlzIGNvZGUgd291bGQgYmUgZWZmZWN0aXZlbHkgY2F1Z2h0IGJ5IEtBU0FOLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QganVzdGlmaWVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgdGhlIFNUMjFORkNEIE5GQyBjb250cm9sbGVyLCB3aGljaCB1c2VzIHJhdyBOQ0kgb3ZlciBJMkMgaW5zdGVhZCBvZiB0aGUgTkRMQyBwcm90b2NvbC4gSXQgaW50cm9kdWNlcyBhIG5ldyBgcmF3X25jaWAgZmxhZyB0aGF0IG1vZGlmaWVzIHRoZSBiZWhhdmlvciBvZiByZWFkaW5nIGZyb20gdGhlIEkyQyBidXMsIHNlbmRpbmcvcmVjZWl2aW5nIE5DSSBmcmFtZXMsIGFuZCBpbml0aWFsaXppbmcgdGhlIGRldmljZS4gVGhlIEkyQyBkcml2ZXIgY2FuIGJlIGluc3RhbnRpYXRlZCBhbmQgZnV6emVkIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIwVDIxOjAxOjU2LjM5NzczNDY3NVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTUxNzgwMzU2OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDU5ZmIwODI0YmVjNGQxMDI2M2U0ODViNWFjYjc3NTc5NDNiMmIyYmNcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFRodSBBdWcgMjAgMjE6MDE6NTMgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9uZmMvc3Qsc3QtbmNpLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L25mYy9zdCxzdC1uY2kueWFtbFxcbmluZGV4IDFkY2JkZGJjNWE3NGUuLmM4NTk3OTdmNDIyYmMgMTAwNjQ0XFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9uZmMvc3Qsc3QtbmNpLnlhbWxcXG4rKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L25mYy9zdCxzdC1uY2kueWFtbFxcbkBAIC0xNSw2ICsxNSw3IEBAIHByb3BlcnRpZXM6XFxuICAgICAgIC0gc3Qsc3QyMW5mY2ItaTJjXFxuICAgICAgIC0gc3Qsc3QyMW5mY2Itc3BpXFxuICAgICAgIC0gc3Qsc3QyMW5mY2MtaTJjXFxuKyAgICAgIC0gc3Qsc3QyMW5mY2RcXG4gXFxuICAgcmVzZXQtZ3Bpb3M6XFxuICAgICBkZXNjcmlwdGlvbjogT3V0cHV0IEdQSU8gcGluIHVzZWQgZm9yIHJlc2V0dGluZyB0aGUgY29udHJvbGxlclxcbkBAIC0zNiw2ICszNywxNSBAQCBwcm9wZXJ0aWVzOlxcbiAgICAgICBTcGVjaWZpZXMgdGhhdCB0aGUgdWljYyBzd3Agc2lnbmFsIGNhbiBiZSBwaHlzaWNhbGx5IGNvbm5lY3RlZCB0byB0aGVcXG4gICAgICAgY29udHJvbGxlclxcbiBcXG4rICBjbG9ja3M6XFxuKyAgICBtYXhJdGVtczogMVxcbisgICAgZGVzY3JpcHRpb246XFxuKyAgICAgIEV4dGVybmFsIHJlZmVyZW5jZSBjbG9jayBjb25uZWN0ZWQgdG8gU1lTX0NMSy5cXG4rXFxuKyAgdmRkLWlvLXN1cHBseTpcXG4rICAgIGRlc2NyaXB0aW9uOlxcbisgICAgICBEaWdpdGFsIEkvTyBzdXBwbHkgKFZQU19JTykuXFxuK1xcbiByZXF1aXJlZDpcXG4gICAtIGNvbXBhdGlibGVcXG4gICAtIGludGVycnVwdHNcXG5AQCAtNDksNiArNTksNyBAQCBpZjpcXG4gICAgICAgICBlbnVtOlxcbiAgICAgICAgICAgLSBzdCxzdDIxbmZjYi1pMmNcXG4gICAgICAgICAgIC0gc3Qsc3QyMW5mY2MtaTJjXFxuKyAgICAgICAgICAtIHN0LHN0MjFuZmNkXFxuIHRoZW46XFxuICAgcHJvcGVydGllczpcXG4gICAgIHNwaS1tYXgtZnJlcXVlbmN5OiBmYWxzZVxcbkBAIC04MSw2ICs5MiwyNiBAQCBleGFtcGxlczpcXG4gICAgICAgICB9O1xcbiAgICAgfTtcXG4gXFxuKyAgLSB8XFxuKyAgICAjaW5jbHVkZSBcXHUwMDNjZHQtYmluZGluZ3MvZ3Bpby9ncGlvLmhcXHUwMDNlXFxuKyAgICAjaW5jbHVkZSBcXHUwMDNjZHQtYmluZGluZ3MvaW50ZXJydXB0LWNvbnRyb2xsZXIvaXJxLmhcXHUwMDNlXFxuK1xcbisgICAgaTJjIHtcXG4rICAgICAgICAjYWRkcmVzcy1jZWxscyA9IFxcdTAwM2MxXFx1MDAzZTtcXG4rICAgICAgICAjc2l6ZS1jZWxscyA9IFxcdTAwM2MwXFx1MDAzZTtcXG4rXFxuKyAgICAgICAgbmZjQDgge1xcbisgICAgICAgICAgICBjb21wYXRpYmxlID0gXFxcInN0LHN0MjFuZmNkXFxcIjtcXG4rICAgICAgICAgICAgcmVnID0gXFx1MDAzYzB4MDhcXHUwMDNlO1xcbitcXG4rICAgICAgICAgICAgaW50ZXJydXB0cy1leHRlbmRlZCA9IFxcdTAwM2NcXHUwMDI2Z3BpbzUgMiBJUlFfVFlQRV9MRVZFTF9ISUdIXFx1MDAzZTtcXG4rICAgICAgICAgICAgcmVzZXQtZ3Bpb3MgPSBcXHUwMDNjXFx1MDAyNmdwaW81IDI5IEdQSU9fQUNUSVZFX0hJR0hcXHUwMDNlO1xcbitcXG4rICAgICAgICAgICAgY2xvY2tzID0gXFx1MDAzY1xcdTAwMjZjbGtcXHUwMDNlO1xcbisgICAgICAgICAgICB2ZGQtaW8tc3VwcGx5ID0gXFx1MDAzY1xcdTAwMjZ2ZGRfaW9cXHUwMDNlO1xcbisgICAgICAgIH07XFxuKyAgICB9O1xcbitcXG4gICAtIHxcXG4gICAgICNpbmNsdWRlIFxcdTAwM2NkdC1iaW5kaW5ncy9ncGlvL2dwaW8uaFxcdTAwM2VcXG4gICAgICNpbmNsdWRlIFxcdTAwM2NkdC1iaW5kaW5ncy9pbnRlcnJ1cHQtY29udHJvbGxlci9pcnEuaFxcdTAwM2VcXG5kaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9ib290L2R0cy9xY29tL3FjbTY0OTAtZmFpcnBob25lLWZwNS5kdHMgYi9hcmNoL2FybTY0L2Jvb3QvZHRzL3Fjb20vcWNtNjQ5MC1mYWlycGhvbmUtZnA1LmR0c1xcbmluZGV4IDA0Y2I5MjMwZDI5ZmQuLmVmNjYwNzlhMDI2M2MgMTAwNjQ0XFxuLS0tIGEvYXJjaC9hcm02NC9ib290L2R0cy9xY29tL3FjbTY0OTAtZmFpcnBob25lLWZwNS5kdHNcXG4rKysgYi9hcmNoL2FybTY0L2Jvb3QvZHRzL3Fjb20vcWNtNjQ5MC1mYWlycGhvbmUtZnA1LmR0c1xcbkBAIC05MDgsNyArOTA4LDIzIEBAIHJlZHJpdmVyX3NzX2luOiBlbmRwb2ludCB7XFxuIFxcdTAwMjZpMmM5IHtcXG4gXFx0c3RhdHVzID0gXFxcIm9rYXlcXFwiO1xcbiBcXG4tXFx0LyogU1QyMU5GQyBORkMgQCAyOCAqL1xcbitcXHRuZmNAOCB7XFxuK1xcdFxcdGNvbXBhdGlibGUgPSBcXFwic3Qsc3QyMW5mY2RcXFwiO1xcbitcXHRcXHRyZWcgPSBcXHUwMDNjMHgwOFxcdTAwM2U7XFxuK1xcbitcXHRcXHRpbnRlcnJ1cHRzLWV4dGVuZGVkID0gXFx1MDAzY1xcdTAwMjZ0bG1tIDQxIElSUV9UWVBFX0xFVkVMX0hJR0hcXHUwMDNlO1xcbitcXHRcXHRyZXNldC1ncGlvcyA9IFxcdTAwM2NcXHUwMDI2dGxtbSAzOCBHUElPX0FDVElWRV9ISUdIXFx1MDAzZTtcXG4rXFxuK1xcdFxcdHBpbmN0cmwtMCA9IFxcdTAwM2NcXHUwMDI2bmZjX2RlZmF1bHRcXHUwMDNlO1xcbitcXHRcXHRwaW5jdHJsLW5hbWVzID0gXFxcImRlZmF1bHRcXFwiO1xcbitcXG4rXFx0XFx0Y2xvY2tzID0gXFx1MDAzY1xcdTAwMjZycG1oY2MgUlBNSF9MTl9CQl9DTEsyXFx1MDAzZTtcXG4rXFx0XFx0dmRkLWlvLXN1cHBseSA9IFxcdTAwM2NcXHUwMDI2dnJlZ19sMThiXFx1MDAzZTtcXG4rXFxuK1xcdFxcdGVzZS1wcmVzZW50O1xcbitcXHRcXHR1aWNjLXByZXNlbnQ7XFxuK1xcdH07XFxuK1xcbiBcXHQvKiBWTDUzTDMgVG9GIEAgMjkgKi9cXG4gfTtcXG4gXFxuQEAgLTE0MTAsNiArMTQyNiwyMiBAQCBoYWxsX3NlbnNvcl9kZWZhdWx0OiBoYWxsLXNlbnNvci1kZWZhdWx0LXN0YXRlIHtcXG4gXFx0XFx0ZHJpdmUtc3RyZW5ndGggPSBcXHUwMDNjMlxcdTAwM2U7XFxuIFxcdFxcdGJpYXMtcHVsbC11cDtcXG4gXFx0fTtcXG4rXFxuK1xcdG5mY19kZWZhdWx0OiBuZmMtZGVmYXVsdC1zdGF0ZSB7XFxuK1xcdFxcdHJlc2V0LXBpbnMge1xcbitcXHRcXHRcXHRwaW5zID0gXFxcImdwaW8zOFxcXCI7XFxuK1xcdFxcdFxcdGZ1bmN0aW9uID0gXFxcImdwaW9cXFwiO1xcbitcXHRcXHRcXHRkcml2ZS1zdHJlbmd0aCA9IFxcdTAwM2MyXFx1MDAzZTtcXG4rXFx0XFx0XFx0Ymlhcy1kaXNhYmxlO1xcbitcXHRcXHR9O1xcbitcXG4rXFx0XFx0aW50LXBpbnMge1xcbitcXHRcXHRcXHRwaW5zID0gXFxcImdwaW80MVxcXCI7XFxuK1xcdFxcdFxcdGZ1bmN0aW9uID0gXFxcImdwaW9cXFwiO1xcbitcXHRcXHRcXHRkcml2ZS1zdHJlbmd0aCA9IFxcdTAwM2MyXFx1MDAzZTtcXG4rXFx0XFx0XFx0Ymlhcy1kaXNhYmxlO1xcbitcXHRcXHR9O1xcbitcXHR9O1xcbiB9O1xcbiBcXG4gXFx1MDAyNnVhcnQ1IHtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZmMvc3QtbmNpL2NvcmUuYyBiL2RyaXZlcnMvbmZjL3N0LW5jaS9jb3JlLmNcXG5pbmRleCBhMzY3MTM2ZDQzMzBhLi4yMzU2ZjE2YjgwNzA2IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmZjL3N0LW5jaS9jb3JlLmNcXG4rKysgYi9kcml2ZXJzL25mYy9zdC1uY2kvY29yZS5jXFxuQEAgLTE4LDggKzE4LDEzIEBAXFxuIFxcbiBzdGF0aWMgaW50IHN0X25jaV9pbml0KHN0cnVjdCBuY2lfZGV2ICpuZGV2KVxcbiB7XFxuK1xcdHN0cnVjdCBzdF9uY2lfaW5mbyAqaW5mbyA9IG5jaV9nZXRfZHJ2ZGF0YShuZGV2KTtcXG4gXFx0c3RydWN0IG5jaV9tb2RlX3NldF9jbWQgY21kO1xcbiBcXG4rXFx0LyogU1QyMU5GQ0QgaGFzIG5vIE5ETEMgcHJvcHJpZXRhcnkgU0VUX05GQ19NT0RFICovXFxuK1xcdGlmIChpbmZvLVxcdTAwM2VuZGxjLVxcdTAwM2VyYXdfbmNpKVxcbitcXHRcXHRyZXR1cm4gMDtcXG4rXFxuIFxcdGNtZC5jbWRfdHlwZSA9IFNUX05DSV9TRVRfTkZDX01PREU7XFxuIFxcdGNtZC5tb2RlID0gMTtcXG4gXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmZjL3N0LW5jaS9pMmMuYyBiL2RyaXZlcnMvbmZjL3N0LW5jaS9pMmMuY1xcbmluZGV4IDE1MmMyMGI2YmIwMWEuLmNmZGRiN2ZmZTAyYTQgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZmMvc3QtbmNpL2kyYy5jXFxuKysrIGIvZHJpdmVycy9uZmMvc3QtbmNpL2kyYy5jXFxuQEAgLTEwLDEwICsxMCwxMyBAQFxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvaTJjLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9ncGlvL2NvbnN1bWVyLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9hY3BpLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9jbGsuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2ludGVycnVwdC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvZGVsYXkuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L25mYy5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvb2YuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3Byb3BlcnR5LmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9yZWd1bGF0b3IvY29uc3VtZXIuaFxcdTAwM2VcXG4gXFxuICNpbmNsdWRlIFxcXCJzdC1uY2kuaFxcXCJcXG4gXFxuQEAgLTIyLDEwICsyNSwxNyBAQFxcbiAvKiBuZGxjIGhlYWRlciAqL1xcbiAjZGVmaW5lIFNUX05DSV9GUkFNRV9IRUFEUk9PTSAxXFxuICNkZWZpbmUgU1RfTkNJX0ZSQU1FX1RBSUxST09NIDBcXG4rI2RlZmluZSBTVF9OQ0lfUkFXX0ZSQU1FX0hFQURST09NIDBcXG4gXFxuICNkZWZpbmUgU1RfTkNJX0kyQ19NSU5fU0laRSA0ICAgLyogUENCKDEpICsgTkNJIFBhY2tldCBoZWFkZXIoMykgKi9cXG4rI2RlZmluZSBTVF9OQ0lfTkNJX0hEUl9TSVpFIDMgICAvKiByYXcgTkNJOiBNVC9QQkYvR0lEICsgT0lEICsgbGVuICovXFxuICNkZWZpbmUgU1RfTkNJX0kyQ19NQVhfU0laRSAyNTAgLyogcmVxIDQuMi4xICovXFxuIFxcbitlbnVtIHN0X25jaV9pMmNfcHJvdG8ge1xcbitcXHRTVF9OQ0lfSTJDX1BST1RPX05ETEMgPSAwLFxcbitcXHRTVF9OQ0lfSTJDX1BST1RPX1JBV19OQ0ksXFxuK307XFxuK1xcbiAjZGVmaW5lIFNUX05DSV9EUklWRVJfTkFNRSBcXFwic3RfbmNpXFxcIlxcbiAjZGVmaW5lIFNUX05DSV9JMkNfRFJJVkVSX05BTUUgXFxcInN0X25jaV9pMmNcXFwiXFxuIFxcbkBAIC0zNCw2ICs0NCw3IEBAIHN0cnVjdCBzdF9uY2lfaTJjX3BoeSB7XFxuIFxcdHN0cnVjdCBsbHRfbmRsYyAqbmRsYztcXG4gXFxuIFxcdGJvb2wgaXJxX2FjdGl2ZTtcXG4rXFx0Ym9vbCByYXdfbmNpO1xcbiBcXG4gXFx0c3RydWN0IGdwaW9fZGVzYyAqZ3Bpb2RfcmVzZXQ7XFxuIFxcbkBAIC0xMTEsNiArMTIyLDQyIEBAIHN0YXRpYyBpbnQgc3RfbmNpX2kyY19yZWFkKHN0cnVjdCBzdF9uY2lfaTJjX3BoeSAqcGh5LFxcbiBcXHR1OCBidWZbU1RfTkNJX0kyQ19NQVhfU0laRV07XFxuIFxcdHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQgPSBwaHktXFx1MDAzZWkyY19kZXY7XFxuIFxcbitcXHRpZiAocGh5LVxcdTAwM2VyYXdfbmNpKSB7XFxuK1xcdFxcdHIgPSBpMmNfbWFzdGVyX3JlY3YoY2xpZW50LCBidWYsIFNUX05DSV9OQ0lfSERSX1NJWkUpO1xcbitcXHRcXHRpZiAociBcXHUwMDNjIDApIHtcXG4rXFx0XFx0XFx0dXNsZWVwX3JhbmdlKDEwMDAsIDQwMDApO1xcbitcXHRcXHRcXHRyID0gaTJjX21hc3Rlcl9yZWN2KGNsaWVudCwgYnVmLCBTVF9OQ0lfTkNJX0hEUl9TSVpFKTtcXG4rXFx0XFx0fVxcbitcXHRcXHRpZiAociAhPSBTVF9OQ0lfTkNJX0hEUl9TSVpFKVxcbitcXHRcXHRcXHRyZXR1cm4gLUVSRU1PVEVJTztcXG4rXFxuK1xcdFxcdGxlbiA9IGJ1ZlsyXTtcXG4rXFx0XFx0aWYgKGxlbiBcXHUwMDNlIFNUX05DSV9JMkNfTUFYX1NJWkUpIHtcXG4rXFx0XFx0XFx0bmZjX2VycihcXHUwMDI2Y2xpZW50LVxcdTAwM2VkZXYsIFxcXCJpbnZhbGlkIGZyYW1lIGxlblxcXFxuXFxcIik7XFxuK1xcdFxcdFxcdHJldHVybiAtRUJBRE1TRztcXG4rXFx0XFx0fVxcbitcXG4rXFx0XFx0KnNrYiA9IGFsbG9jX3NrYihTVF9OQ0lfTkNJX0hEUl9TSVpFICsgbGVuLCBHRlBfS0VSTkVMKTtcXG4rXFx0XFx0aWYgKCEqc2tiKVxcbitcXHRcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4rXFxuK1xcdFxcdHNrYl9wdXQoKnNrYiwgU1RfTkNJX05DSV9IRFJfU0laRSk7XFxuK1xcdFxcdG1lbWNweSgoKnNrYiktXFx1MDAzZWRhdGEsIGJ1ZiwgU1RfTkNJX05DSV9IRFJfU0laRSk7XFxuK1xcbitcXHRcXHRpZiAoIWxlbilcXG4rXFx0XFx0XFx0cmV0dXJuIDA7XFxuK1xcbitcXHRcXHRyID0gaTJjX21hc3Rlcl9yZWN2KGNsaWVudCwgYnVmLCBsZW4pO1xcbitcXHRcXHRpZiAociAhPSBsZW4pIHtcXG4rXFx0XFx0XFx0a2ZyZWVfc2tiKCpza2IpO1xcbitcXHRcXHRcXHRyZXR1cm4gLUVSRU1PVEVJTztcXG4rXFx0XFx0fVxcbitcXG4rXFx0XFx0c2tiX3B1dCgqc2tiLCBsZW4pO1xcbitcXHRcXHRtZW1jcHkoKCpza2IpLVxcdTAwM2VkYXRhICsgU1RfTkNJX05DSV9IRFJfU0laRSwgYnVmLCBsZW4pO1xcbitcXHRcXHRyZXR1cm4gMDtcXG4rXFx0fVxcbitcXG4gXFx0ciA9IGkyY19tYXN0ZXJfcmVjdihjbGllbnQsIGJ1ZiwgU1RfTkNJX0kyQ19NSU5fU0laRSk7XFxuIFxcdGlmIChyIFxcdTAwM2MgMCkgeyAgLyogUmV0cnksIGNoaXAgd2FzIGluIHN0YW5kYnkgKi9cXG4gXFx0XFx0dXNsZWVwX3JhbmdlKDEwMDAsIDQwMDApO1xcbkBAIC0yMTEsNiArMjU4LDggQEAgc3RhdGljIGludCBzdF9uY2lfaTJjX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXFxuIFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbiBcXG4gXFx0cGh5LVxcdTAwM2VpMmNfZGV2ID0gY2xpZW50O1xcbitcXHRwaHktXFx1MDAzZXJhd19uY2kgPSAodWludHB0cl90KWRldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpID09XFxuK1xcdFxcdFxcdFNUX05DSV9JMkNfUFJPVE9fUkFXX05DSTtcXG4gXFxuIFxcdGkyY19zZXRfY2xpZW50ZGF0YShjbGllbnQsIHBoeSk7XFxuIFxcbkBAIC0yMjUsMTkgKzI3NCwzMSBAQCBzdGF0aWMgaW50IHN0X25jaV9pMmNfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcXG4gXFx0XFx0cmV0dXJuIC1FTk9ERVY7XFxuIFxcdH1cXG4gXFxuK1xcdHIgPSBkZXZtX3JlZ3VsYXRvcl9nZXRfZW5hYmxlX29wdGlvbmFsKGRldiwgXFxcInZkZC1pb1xcXCIpO1xcbitcXHRpZiAociBcXHUwMDI2XFx1MDAyNiByICE9IC1FTk9ERVYpXFxuK1xcdFxcdHJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgciwgXFxcImZhaWxlZCB0byBlbmFibGUgdmRkLWlvXFxcXG5cXFwiKTtcXG4rXFxuK1xcdHIgPSBQVFJfRVJSX09SX1pFUk8oZGV2bV9jbGtfZ2V0X29wdGlvbmFsX2VuYWJsZWQoZGV2LCBOVUxMKSk7XFxuK1xcdGlmIChyKVxcbitcXHRcXHRyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIHIsIFxcXCJmYWlsZWQgdG8gZW5hYmxlIGNsb2NrXFxcXG5cXFwiKTtcXG4rXFxuIFxcdHBoeS1cXHUwMDNlc2Vfc3RhdHVzLmlzX2VzZV9wcmVzZW50ID1cXG4gXFx0XFx0XFx0XFx0ZGV2aWNlX3Byb3BlcnR5X3JlYWRfYm9vbChkZXYsIFxcXCJlc2UtcHJlc2VudFxcXCIpO1xcbiBcXHRwaHktXFx1MDAzZXNlX3N0YXR1cy5pc191aWNjX3ByZXNlbnQgPVxcbiBcXHRcXHRcXHRcXHRkZXZpY2VfcHJvcGVydHlfcmVhZF9ib29sKGRldiwgXFxcInVpY2MtcHJlc2VudFxcXCIpO1xcbiBcXG4gXFx0ciA9IG5kbGNfcHJvYmUocGh5LCBcXHUwMDI2aTJjX3BoeV9vcHMsIFxcdTAwMjZjbGllbnQtXFx1MDAzZWRldixcXG4tXFx0XFx0XFx0U1RfTkNJX0ZSQU1FX0hFQURST09NLCBTVF9OQ0lfRlJBTUVfVEFJTFJPT00sXFxuK1xcdFxcdFxcdHBoeS1cXHUwMDNlcmF3X25jaSA/IFNUX05DSV9SQVdfRlJBTUVfSEVBRFJPT00gOlxcbitcXHRcXHRcXHRcXHQgICAgICAgU1RfTkNJX0ZSQU1FX0hFQURST09NLFxcbitcXHRcXHRcXHRTVF9OQ0lfRlJBTUVfVEFJTFJPT00sXFxuIFxcdFxcdFxcdFxcdTAwMjZwaHktXFx1MDAzZW5kbGMsIFxcdTAwMjZwaHktXFx1MDAzZXNlX3N0YXR1cyk7XFxuIFxcdGlmIChyIFxcdTAwM2MgMCkge1xcbiBcXHRcXHRuZmNfZXJyKFxcdTAwMjZjbGllbnQtXFx1MDAzZWRldiwgXFxcIlVuYWJsZSB0byByZWdpc3RlciBuZGxjIGxheWVyXFxcXG5cXFwiKTtcXG4gXFx0XFx0cmV0dXJuIHI7XFxuIFxcdH1cXG4gXFxuK1xcdHBoeS1cXHUwMDNlbmRsYy1cXHUwMDNlcmF3X25jaSA9IHBoeS1cXHUwMDNlcmF3X25jaTtcXG4rXFxuIFxcdHBoeS1cXHUwMDNlaXJxX2FjdGl2ZSA9IHRydWU7XFxuIFxcdHIgPSBkZXZtX3JlcXVlc3RfdGhyZWFkZWRfaXJxKFxcdTAwMjZjbGllbnQtXFx1MDAzZWRldiwgY2xpZW50LVxcdTAwM2VpcnEsIE5VTEwsXFxuIFxcdFxcdFxcdFxcdHN0X25jaV9pcnFfdGhyZWFkX2ZuLFxcbkBAIC0yNTcsMjMgKzMxOCwyNSBAQCBzdGF0aWMgdm9pZCBzdF9uY2lfaTJjX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxcbiB9XFxuIFxcbiBzdGF0aWMgY29uc3Qgc3RydWN0IGkyY19kZXZpY2VfaWQgc3RfbmNpX2kyY19pZF90YWJsZVtdID0ge1xcbi1cXHR7IC5uYW1lID0gU1RfTkNJX0RSSVZFUl9OQU1FIH0sXFxuLVxcdHsgfVxcbitcXHR7IFNUX05DSV9EUklWRVJfTkFNRSB9LFxcbitcXHR7fVxcbiB9O1xcbiBNT0RVTEVfREVWSUNFX1RBQkxFKGkyYywgc3RfbmNpX2kyY19pZF90YWJsZSk7XFxuIFxcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGFjcGlfZGV2aWNlX2lkIHN0X25jaV9pMmNfYWNwaV9tYXRjaFtdID0ge1xcbi1cXHR7IC5pZCA9IFxcXCJTTU8yMTAxXFxcIiB9LFxcbi1cXHR7IC5pZCA9IFxcXCJTTU8yMTAyXFxcIiB9LFxcbi1cXHR7IH1cXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBhY3BpX2RldmljZV9pZCBzdF9uY2lfaTJjX2FjcGlfbWF0Y2hbXSBfX21heWJlX3VudXNlZCA9IHtcXG4rXFx0e1xcXCJTTU8yMTAxXFxcIn0sXFxuK1xcdHtcXFwiU01PMjEwMlxcXCJ9LFxcbitcXHR7fVxcbiB9O1xcbiBNT0RVTEVfREVWSUNFX1RBQkxFKGFjcGksIHN0X25jaV9pMmNfYWNwaV9tYXRjaCk7XFxuIFxcbi1zdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBvZl9zdF9uY2lfaTJjX21hdGNoW10gPSB7XFxuLVxcdHsgLmNvbXBhdGlibGUgPSBcXFwic3Qsc3QyMW5mY2ItaTJjXFxcIiB9LFxcbi1cXHR7IC5jb21wYXRpYmxlID0gXFxcInN0LHN0MjFuZmNiX2kyY1xcXCIgfSxcXG4tXFx0eyAuY29tcGF0aWJsZSA9IFxcXCJzdCxzdDIxbmZjYy1pMmNcXFwiIH0sXFxuLVxcdHsgfVxcbitzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBvZl9zdF9uY2lfaTJjX21hdGNoW10gX19tYXliZV91bnVzZWQgPSB7XFxuK1xcdHsgLmNvbXBhdGlibGUgPSBcXFwic3Qsc3QyMW5mY2ItaTJjXFxcIiwgfSxcXG4rXFx0eyAuY29tcGF0aWJsZSA9IFxcXCJzdCxzdDIxbmZjYl9pMmNcXFwiLCB9LFxcbitcXHR7IC5jb21wYXRpYmxlID0gXFxcInN0LHN0MjFuZmNjLWkyY1xcXCIsIH0sXFxuK1xcdHsgLmNvbXBhdGlibGUgPSBcXFwic3Qsc3QyMW5mY2RcXFwiLFxcbitcXHQgIC5kYXRhID0gKHZvaWQgKilTVF9OQ0lfSTJDX1BST1RPX1JBV19OQ0kgfSxcXG4rXFx0e31cXG4gfTtcXG4gTU9EVUxFX0RFVklDRV9UQUJMRShvZiwgb2Zfc3RfbmNpX2kyY19tYXRjaCk7XFxuIFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25mYy9zdC1uY2kvbmRsYy5jIGIvZHJpdmVycy9uZmMvc3QtbmNpL25kbGMuY1xcbmluZGV4IGJlNDgwODg1OWNmYTkuLmIzMTkyNDYwYzk2ZTMgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZmMvc3QtbmNpL25kbGMuY1xcbisrKyBiL2RyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmNcXG5AQCAtNjIsOCArNjIsOSBAQCB2b2lkIG5kbGNfY2xvc2Uoc3RydWN0IGxsdF9uZGxjICpuZGxjKVxcbiBcXHQvKiB0b2dnbGUgcmVzZXQgcGluICovXFxuIFxcdG5kbGMtXFx1MDAzZW9wcy1cXHUwMDNlZW5hYmxlKG5kbGMtXFx1MDAzZXBoeV9pZCk7XFxuIFxcbi1cXHRuY2lfcHJvcF9jbWQobmRsYy1cXHUwMDNlbmRldiwgU1RfTkNJX0NPUkVfUFJPUCxcXG4tXFx0XFx0ICAgICBzaXplb2Yoc3RydWN0IG5jaV9tb2RlX3NldF9jbWQpLCAoX191OCAqKVxcdTAwMjZjbWQpO1xcbitcXHRpZiAoIW5kbGMtXFx1MDAzZXJhd19uY2kpXFxuK1xcdFxcdG5jaV9wcm9wX2NtZChuZGxjLVxcdTAwM2VuZGV2LCBTVF9OQ0lfQ09SRV9QUk9QLFxcbitcXHRcXHRcXHQgICAgIHNpemVvZihzdHJ1Y3QgbmNpX21vZGVfc2V0X2NtZCksIChfX3U4ICopXFx1MDAyNmNtZCk7XFxuIFxcbiBcXHRuZGxjLVxcdTAwM2Vwb3dlcmVkID0gMDtcXG4gXFx0bmRsYy1cXHUwMDNlb3BzLVxcdTAwM2VkaXNhYmxlKG5kbGMtXFx1MDAzZXBoeV9pZCk7XFxuQEAgLTcyLDExICs3MywxMyBAQCBFWFBPUlRfU1lNQk9MKG5kbGNfY2xvc2UpO1xcbiBcXG4gaW50IG5kbGNfc2VuZChzdHJ1Y3QgbGx0X25kbGMgKm5kbGMsIHN0cnVjdCBza19idWZmICpza2IpXFxuIHtcXG4tXFx0LyogYWRkIG5kbGMgaGVhZGVyICovXFxuLVxcdHU4IHBjYiA9IFBDQl9UWVBFX0RBVEFGUkFNRSB8IFBDQl9EQVRBRlJBTUVfUkVUUkFOU01JVF9OTyB8XFxuLVxcdFxcdFBDQl9GUkFNRV9DUkNfSU5GT19OT1RQUkVTRU5UO1xcbitcXHRpZiAoIW5kbGMtXFx1MDAzZXJhd19uY2kpIHtcXG4rXFx0XFx0LyogYWRkIG5kbGMgaGVhZGVyICovXFxuK1xcdFxcdHU4IHBjYiA9IFBDQl9UWVBFX0RBVEFGUkFNRSB8IFBDQl9EQVRBRlJBTUVfUkVUUkFOU01JVF9OTyB8XFxuK1xcdFxcdFxcdFBDQl9GUkFNRV9DUkNfSU5GT19OT1RQUkVTRU5UO1xcbiBcXG4tXFx0Kih1OCAqKXNrYl9wdXNoKHNrYiwgMSkgPSBwY2I7XFxuK1xcdFxcdCoodTggKilza2JfcHVzaChza2IsIDEpID0gcGNiO1xcbitcXHR9XFxuIFxcdHNrYl9xdWV1ZV90YWlsKFxcdTAwMjZuZGxjLVxcdTAwM2VzZW5kX3EsIHNrYik7XFxuIFxcbiBcXHRzY2hlZHVsZV93b3JrKFxcdTAwMjZuZGxjLVxcdTAwM2VzbV93b3JrKTtcXG5AQCAtMTAzLDYgKzEwNiwxMCBAQCBzdGF0aWMgdm9pZCBsbHRfbmRsY19zZW5kX3F1ZXVlKHN0cnVjdCBsbHRfbmRsYyAqbmRsYylcXG4gXFx0XFx0XFx0bmRsYy1cXHUwMDNlaGFyZF9mYXVsdCA9IHI7XFxuIFxcdFxcdFxcdGJyZWFrO1xcbiBcXHRcXHR9XFxuK1xcdFxcdGlmIChuZGxjLVxcdTAwM2VyYXdfbmNpKSB7XFxuK1xcdFxcdFxcdGtmcmVlX3NrYihza2IpO1xcbitcXHRcXHRcXHRjb250aW51ZTtcXG4rXFx0XFx0fVxcbiBcXHRcXHR0aW1lX3NlbnQgPSBqaWZmaWVzO1xcbiBcXHRcXHQqKHVuc2lnbmVkIGxvbmcgKilza2ItXFx1MDAzZWNiID0gdGltZV9zZW50O1xcbiBcXG5AQCAtMTU0LDYgKzE2MSwxMCBAQCBzdGF0aWMgdm9pZCBsbHRfbmRsY19yY3ZfcXVldWUoc3RydWN0IGxsdF9uZGxjICpuZGxjKVxcbiBcXHRcXHRwcl9kZWJ1ZyhcXFwicmN2UWxlbj0lZFxcXFxuXFxcIiwgbmRsYy1cXHUwMDNlcmN2X3EucWxlbik7XFxuIFxcbiBcXHR3aGlsZSAoKHNrYiA9IHNrYl9kZXF1ZXVlKFxcdTAwMjZuZGxjLVxcdTAwM2VyY3ZfcSkpICE9IE5VTEwpIHtcXG4rXFx0XFx0aWYgKG5kbGMtXFx1MDAzZXJhd19uY2kpIHtcXG4rXFx0XFx0XFx0bmNpX3JlY3ZfZnJhbWUobmRsYy1cXHUwMDNlbmRldiwgc2tiKTtcXG4rXFx0XFx0XFx0Y29udGludWU7XFxuK1xcdFxcdH1cXG4gXFx0XFx0cGNiID0gc2tiLVxcdTAwM2VkYXRhWzBdO1xcbiBcXHRcXHRza2JfcHVsbChza2IsIDEpO1xcbiBcXHRcXHRpZiAoKHBjYiBcXHUwMDI2IFBDQl9UWVBFX01BU0spID09IFBDQl9UWVBFX1NVUEVSVklTT1IpIHtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZmMvc3QtbmNpL25kbGMuaCBiL2RyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmhcXG5pbmRleCBjMjRjZTliMGRmNTJlLi41YzFmOGJhZjA0NzE4IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmhcXG4rKysgYi9kcml2ZXJzL25mYy9zdC1uY2kvbmRsYy5oXFxuQEAgLTM5LDYgKzM5LDggQEAgc3RydWN0IGxsdF9uZGxjIHtcXG4gXFx0ICovXFxuIFxcdGludCBoYXJkX2ZhdWx0O1xcbiBcXHRpbnQgcG93ZXJlZDtcXG4rXFx0LyogU1QyMU5GQ0Q6IHJhdyBOQ0kgb24gdGhlIHdpcmUsIG5vIE5ETEMgUENCIC8gQUNLIHRpbWVycyAqL1xcbitcXHRib29sIHJhd19uY2k7XFxuIH07XFxuIFxcbiBpbnQgbmRsY19vcGVuKHN0cnVjdCBsbHRfbmRsYyAqbmRsYyk7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmZjL3N0LW5jaS9zZS5jIGIvZHJpdmVycy9uZmMvc3QtbmNpL3NlLmNcXG5pbmRleCA2MDdlYzc2OGViN2I0Li40NGNjMTAyYmNkZTIxIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmZjL3N0LW5jaS9zZS5jXFxuKysrIGIvZHJpdmVycy9uZmMvc3QtbmNpL3NlLmNcXG5AQCAtNjIxLDYgKzYyMSw5IEBAIGludCBzdF9uY2lfZGlzY292ZXJfc2Uoc3RydWN0IG5jaV9kZXYgKm5kZXYpXFxuIFxcdGludCBzZV9jb3VudCA9IDA7XFxuIFxcdHN0cnVjdCBzdF9uY2lfaW5mbyAqaW5mbyA9IG5jaV9nZXRfZHJ2ZGF0YShuZGV2KTtcXG4gXFxuK1xcdGlmIChpbmZvLVxcdTAwM2VuZGxjLVxcdTAwM2VyYXdfbmNpKVxcbitcXHRcXHRyZXR1cm4gMDtcXG4rXFxuIFxcdHIgPSBzdF9uY2lfaGNpX25ldHdvcmtfaW5pdChuZGV2KTtcXG4gXFx0aWYgKHIgIT0gMClcXG4gXFx0XFx0cmV0dXJuIHI7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIwVDIxOjAxOjU3LjkxNjU1MTQzM1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjEyNTM1NDQzNzE2MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORkNcIixcbiAgICBcIk5GQ19OQ0lcIixcbiAgICBcIkkyQ1wiLFxuICAgIFwiTkZDX1NUX05DSVwiLFxuICAgIFwiTkZDX1NUX05DSV9JMkNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJuZGxjX3Byb2JlXCIsXG4gICAgXCJuZGxjX3JlY3ZcIixcbiAgICBcIm5kbGNfc2VuZFwiLFxuICAgIFwibmRsY19jbG9zZVwiLFxuICAgIFwic3RfbmNpX2Rpc2NvdmVyX3NlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciB0aGUgU1QyMU5GQ0QgTkZDIGNvbnRyb2xsZXIsIHdoaWNoIHVzZXMgcmF3IE5DSSBvdmVyIEkyQyBpbnN0ZWFkIG9mIHRoZSBORExDIHByb3RvY29sLiBJdCBpbnRyb2R1Y2VzIGEgbmV3IGByYXdfbmNpYCBmbGFnIHRoYXQgbW9kaWZpZXMgdGhlIGJlaGF2aW9yIG9mIHJlYWRpbmcgZnJvbSB0aGUgSTJDIGJ1cywgc2VuZGluZy9yZWNlaXZpbmcgTkNJIGZyYW1lcywgYW5kIGluaXRpYWxpemluZyB0aGUgZGV2aWNlLiBUaGUgSTJDIGRyaXZlciBjYW4gYmUgaW5zdGFudGlhdGVkIGFuZCBmdXp6ZWQgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNTlmYjA4MjRiZWM0ZDEwMjYzZTQ4NWI1YWNiNzc1Nzk0M2IyYjJiY1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgQXVnIDIwIDIxOjAxOjUzIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9uZmMvc3Qsc3QtbmNpLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L25mYy9zdCxzdC1uY2kueWFtbFxuaW5kZXggMWRjYmRkYmM1YTc0ZS4uYzg1OTc5N2Y0MjJiYyAxMDA2NDRcbi0tLSBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbmZjL3N0LHN0LW5jaS55YW1sXG4rKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L25mYy9zdCxzdC1uY2kueWFtbFxuQEAgLTE1LDYgKzE1LDcgQEAgcHJvcGVydGllczpcbiAgICAgICAtIHN0LHN0MjFuZmNiLWkyY1xuICAgICAgIC0gc3Qsc3QyMW5mY2Itc3BpXG4gICAgICAgLSBzdCxzdDIxbmZjYy1pMmNcbisgICAgICAtIHN0LHN0MjFuZmNkXG4gXG4gICByZXNldC1ncGlvczpcbiAgICAgZGVzY3JpcHRpb246IE91dHB1dCBHUElPIHBpbiB1c2VkIGZvciByZXNldHRpbmcgdGhlIGNvbnRyb2xsZXJcbkBAIC0zNiw2ICszNywxNSBAQCBwcm9wZXJ0aWVzOlxuICAgICAgIFNwZWNpZmllcyB0aGF0IHRoZSB1aWNjIHN3cCBzaWduYWwgY2FuIGJlIHBoeXNpY2FsbHkgY29ubmVjdGVkIHRvIHRoZVxuICAgICAgIGNvbnRyb2xsZXJcbiBcbisgIGNsb2NrczpcbisgICAgbWF4SXRlbXM6IDFcbisgICAgZGVzY3JpcHRpb246XG4rICAgICAgRXh0ZXJuYWwgcmVmZXJlbmNlIGNsb2NrIGNvbm5lY3RlZCB0byBTWVNfQ0xLLlxuK1xuKyAgdmRkLWlvLXN1cHBseTpcbisgICAgZGVzY3JpcHRpb246XG4rICAgICAgRGlnaXRhbCBJL08gc3VwcGx5IChWUFNfSU8pLlxuK1xuIHJlcXVpcmVkOlxuICAgLSBjb21wYXRpYmxlXG4gICAtIGludGVycnVwdHNcbkBAIC00OSw2ICs1OSw3IEBAIGlmOlxuICAgICAgICAgZW51bTpcbiAgICAgICAgICAgLSBzdCxzdDIxbmZjYi1pMmNcbiAgICAgICAgICAgLSBzdCxzdDIxbmZjYy1pMmNcbisgICAgICAgICAgLSBzdCxzdDIxbmZjZFxuIHRoZW46XG4gICBwcm9wZXJ0aWVzOlxuICAgICBzcGktbWF4LWZyZXF1ZW5jeTogZmFsc2VcbkBAIC04MSw2ICs5MiwyNiBAQCBleGFtcGxlczpcbiAgICAgICAgIH07XG4gICAgIH07XG4gXG4rICAtIHxcbisgICAgI2luY2x1ZGUgXHUwMDNjZHQtYmluZGluZ3MvZ3Bpby9ncGlvLmhcdTAwM2VcbisgICAgI2luY2x1ZGUgXHUwMDNjZHQtYmluZGluZ3MvaW50ZXJydXB0LWNvbnRyb2xsZXIvaXJxLmhcdTAwM2VcbitcbisgICAgaTJjIHtcbisgICAgICAgICNhZGRyZXNzLWNlbGxzID0gXHUwMDNjMVx1MDAzZTtcbisgICAgICAgICNzaXplLWNlbGxzID0gXHUwMDNjMFx1MDAzZTtcbitcbisgICAgICAgIG5mY0A4IHtcbisgICAgICAgICAgICBjb21wYXRpYmxlID0gXCJzdCxzdDIxbmZjZFwiO1xuKyAgICAgICAgICAgIHJlZyA9IFx1MDAzYzB4MDhcdTAwM2U7XG4rXG4rICAgICAgICAgICAgaW50ZXJydXB0cy1leHRlbmRlZCA9IFx1MDAzY1x1MDAyNmdwaW81IDIgSVJRX1RZUEVfTEVWRUxfSElHSFx1MDAzZTtcbisgICAgICAgICAgICByZXNldC1ncGlvcyA9IFx1MDAzY1x1MDAyNmdwaW81IDI5IEdQSU9fQUNUSVZFX0hJR0hcdTAwM2U7XG4rXG4rICAgICAgICAgICAgY2xvY2tzID0gXHUwMDNjXHUwMDI2Y2xrXHUwMDNlO1xuKyAgICAgICAgICAgIHZkZC1pby1zdXBwbHkgPSBcdTAwM2NcdTAwMjZ2ZGRfaW9cdTAwM2U7XG4rICAgICAgICB9O1xuKyAgICB9O1xuK1xuICAgLSB8XG4gICAgICNpbmNsdWRlIFx1MDAzY2R0LWJpbmRpbmdzL2dwaW8vZ3Bpby5oXHUwMDNlXG4gICAgICNpbmNsdWRlIFx1MDAzY2R0LWJpbmRpbmdzL2ludGVycnVwdC1jb250cm9sbGVyL2lycS5oXHUwMDNlXG5kaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9ib290L2R0cy9xY29tL3FjbTY0OTAtZmFpcnBob25lLWZwNS5kdHMgYi9hcmNoL2FybTY0L2Jvb3QvZHRzL3Fjb20vcWNtNjQ5MC1mYWlycGhvbmUtZnA1LmR0c1xuaW5kZXggMDRjYjkyMzBkMjlmZC4uZWY2NjA3OWEwMjYzYyAxMDA2NDRcbi0tLSBhL2FyY2gvYXJtNjQvYm9vdC9kdHMvcWNvbS9xY202NDkwLWZhaXJwaG9uZS1mcDUuZHRzXG4rKysgYi9hcmNoL2FybTY0L2Jvb3QvZHRzL3Fjb20vcWNtNjQ5MC1mYWlycGhvbmUtZnA1LmR0c1xuQEAgLTkwOCw3ICs5MDgsMjMgQEAgcmVkcml2ZXJfc3NfaW46IGVuZHBvaW50IHtcbiBcdTAwMjZpMmM5IHtcbiBcdHN0YXR1cyA9IFwib2theVwiO1xuIFxuLVx0LyogU1QyMU5GQyBORkMgQCAyOCAqL1xuK1x0bmZjQDgge1xuK1x0XHRjb21wYXRpYmxlID0gXCJzdCxzdDIxbmZjZFwiO1xuK1x0XHRyZWcgPSBcdTAwM2MweDA4XHUwMDNlO1xuK1xuK1x0XHRpbnRlcnJ1cHRzLWV4dGVuZGVkID0gXHUwMDNjXHUwMDI2dGxtbSA0MSBJUlFfVFlQRV9MRVZFTF9ISUdIXHUwMDNlO1xuK1x0XHRyZXNldC1ncGlvcyA9IFx1MDAzY1x1MDAyNnRsbW0gMzggR1BJT19BQ1RJVkVfSElHSFx1MDAzZTtcbitcbitcdFx0cGluY3RybC0wID0gXHUwMDNjXHUwMDI2bmZjX2RlZmF1bHRcdTAwM2U7XG4rXHRcdHBpbmN0cmwtbmFtZXMgPSBcImRlZmF1bHRcIjtcbitcbitcdFx0Y2xvY2tzID0gXHUwMDNjXHUwMDI2cnBtaGNjIFJQTUhfTE5fQkJfQ0xLMlx1MDAzZTtcbitcdFx0dmRkLWlvLXN1cHBseSA9IFx1MDAzY1x1MDAyNnZyZWdfbDE4Ylx1MDAzZTtcbitcbitcdFx0ZXNlLXByZXNlbnQ7XG4rXHRcdHVpY2MtcHJlc2VudDtcbitcdH07XG4rXG4gXHQvKiBWTDUzTDMgVG9GIEAgMjkgKi9cbiB9O1xuIFxuQEAgLTE0MTAsNiArMTQyNiwyMiBAQCBoYWxsX3NlbnNvcl9kZWZhdWx0OiBoYWxsLXNlbnNvci1kZWZhdWx0LXN0YXRlIHtcbiBcdFx0ZHJpdmUtc3RyZW5ndGggPSBcdTAwM2MyXHUwMDNlO1xuIFx0XHRiaWFzLXB1bGwtdXA7XG4gXHR9O1xuK1xuK1x0bmZjX2RlZmF1bHQ6IG5mYy1kZWZhdWx0LXN0YXRlIHtcbitcdFx0cmVzZXQtcGlucyB7XG4rXHRcdFx0cGlucyA9IFwiZ3BpbzM4XCI7XG4rXHRcdFx0ZnVuY3Rpb24gPSBcImdwaW9cIjtcbitcdFx0XHRkcml2ZS1zdHJlbmd0aCA9IFx1MDAzYzJcdTAwM2U7XG4rXHRcdFx0Ymlhcy1kaXNhYmxlO1xuK1x0XHR9O1xuK1xuK1x0XHRpbnQtcGlucyB7XG4rXHRcdFx0cGlucyA9IFwiZ3BpbzQxXCI7XG4rXHRcdFx0ZnVuY3Rpb24gPSBcImdwaW9cIjtcbitcdFx0XHRkcml2ZS1zdHJlbmd0aCA9IFx1MDAzYzJcdTAwM2U7XG4rXHRcdFx0Ymlhcy1kaXNhYmxlO1xuK1x0XHR9O1xuK1x0fTtcbiB9O1xuIFxuIFx1MDAyNnVhcnQ1IHtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25mYy9zdC1uY2kvY29yZS5jIGIvZHJpdmVycy9uZmMvc3QtbmNpL2NvcmUuY1xuaW5kZXggYTM2NzEzNmQ0MzMwYS4uMjM1NmYxNmI4MDcwNiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmZjL3N0LW5jaS9jb3JlLmNcbisrKyBiL2RyaXZlcnMvbmZjL3N0LW5jaS9jb3JlLmNcbkBAIC0xOCw4ICsxOCwxMyBAQFxuIFxuIHN0YXRpYyBpbnQgc3RfbmNpX2luaXQoc3RydWN0IG5jaV9kZXYgKm5kZXYpXG4ge1xuK1x0c3RydWN0IHN0X25jaV9pbmZvICppbmZvID0gbmNpX2dldF9kcnZkYXRhKG5kZXYpO1xuIFx0c3RydWN0IG5jaV9tb2RlX3NldF9jbWQgY21kO1xuIFxuK1x0LyogU1QyMU5GQ0QgaGFzIG5vIE5ETEMgcHJvcHJpZXRhcnkgU0VUX05GQ19NT0RFICovXG4rXHRpZiAoaW5mby1cdTAwM2VuZGxjLVx1MDAzZXJhd19uY2kpXG4rXHRcdHJldHVybiAwO1xuK1xuIFx0Y21kLmNtZF90eXBlID0gU1RfTkNJX1NFVF9ORkNfTU9ERTtcbiBcdGNtZC5tb2RlID0gMTtcbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25mYy9zdC1uY2kvaTJjLmMgYi9kcml2ZXJzL25mYy9zdC1uY2kvaTJjLmNcbmluZGV4IDE1MmMyMGI2YmIwMWEuLmNmZGRiN2ZmZTAyYTQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25mYy9zdC1uY2kvaTJjLmNcbisrKyBiL2RyaXZlcnMvbmZjL3N0LW5jaS9pMmMuY1xuQEAgLTEwLDEwICsxMCwxMyBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2kyYy5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvZ3Bpby9jb25zdW1lci5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvYWNwaS5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvY2xrLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9pbnRlcnJ1cHQuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2RlbGF5LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9uZmMuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L29mLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9wcm9wZXJ0eS5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvcmVndWxhdG9yL2NvbnN1bWVyLmhcdTAwM2VcbiBcbiAjaW5jbHVkZSBcInN0LW5jaS5oXCJcbiBcbkBAIC0yMiwxMCArMjUsMTcgQEBcbiAvKiBuZGxjIGhlYWRlciAqL1xuICNkZWZpbmUgU1RfTkNJX0ZSQU1FX0hFQURST09NIDFcbiAjZGVmaW5lIFNUX05DSV9GUkFNRV9UQUlMUk9PTSAwXG4rI2RlZmluZSBTVF9OQ0lfUkFXX0ZSQU1FX0hFQURST09NIDBcbiBcbiAjZGVmaW5lIFNUX05DSV9JMkNfTUlOX1NJWkUgNCAgIC8qIFBDQigxKSArIE5DSSBQYWNrZXQgaGVhZGVyKDMpICovXG4rI2RlZmluZSBTVF9OQ0lfTkNJX0hEUl9TSVpFIDMgICAvKiByYXcgTkNJOiBNVC9QQkYvR0lEICsgT0lEICsgbGVuICovXG4gI2RlZmluZSBTVF9OQ0lfSTJDX01BWF9TSVpFIDI1MCAvKiByZXEgNC4yLjEgKi9cbiBcbitlbnVtIHN0X25jaV9pMmNfcHJvdG8ge1xuK1x0U1RfTkNJX0kyQ19QUk9UT19ORExDID0gMCxcbitcdFNUX05DSV9JMkNfUFJPVE9fUkFXX05DSSxcbit9O1xuK1xuICNkZWZpbmUgU1RfTkNJX0RSSVZFUl9OQU1FIFwic3RfbmNpXCJcbiAjZGVmaW5lIFNUX05DSV9JMkNfRFJJVkVSX05BTUUgXCJzdF9uY2lfaTJjXCJcbiBcbkBAIC0zNCw2ICs0NCw3IEBAIHN0cnVjdCBzdF9uY2lfaTJjX3BoeSB7XG4gXHRzdHJ1Y3QgbGx0X25kbGMgKm5kbGM7XG4gXG4gXHRib29sIGlycV9hY3RpdmU7XG4rXHRib29sIHJhd19uY2k7XG4gXG4gXHRzdHJ1Y3QgZ3Bpb19kZXNjICpncGlvZF9yZXNldDtcbiBcbkBAIC0xMTEsNiArMTIyLDQyIEBAIHN0YXRpYyBpbnQgc3RfbmNpX2kyY19yZWFkKHN0cnVjdCBzdF9uY2lfaTJjX3BoeSAqcGh5LFxuIFx0dTggYnVmW1NUX05DSV9JMkNfTUFYX1NJWkVdO1xuIFx0c3RydWN0IGkyY19jbGllbnQgKmNsaWVudCA9IHBoeS1cdTAwM2VpMmNfZGV2O1xuIFxuK1x0aWYgKHBoeS1cdTAwM2VyYXdfbmNpKSB7XG4rXHRcdHIgPSBpMmNfbWFzdGVyX3JlY3YoY2xpZW50LCBidWYsIFNUX05DSV9OQ0lfSERSX1NJWkUpO1xuK1x0XHRpZiAociBcdTAwM2MgMCkge1xuK1x0XHRcdHVzbGVlcF9yYW5nZSgxMDAwLCA0MDAwKTtcbitcdFx0XHRyID0gaTJjX21hc3Rlcl9yZWN2KGNsaWVudCwgYnVmLCBTVF9OQ0lfTkNJX0hEUl9TSVpFKTtcbitcdFx0fVxuK1x0XHRpZiAociAhPSBTVF9OQ0lfTkNJX0hEUl9TSVpFKVxuK1x0XHRcdHJldHVybiAtRVJFTU9URUlPO1xuK1xuK1x0XHRsZW4gPSBidWZbMl07XG4rXHRcdGlmIChsZW4gXHUwMDNlIFNUX05DSV9JMkNfTUFYX1NJWkUpIHtcbitcdFx0XHRuZmNfZXJyKFx1MDAyNmNsaWVudC1cdTAwM2VkZXYsIFwiaW52YWxpZCBmcmFtZSBsZW5cXG5cIik7XG4rXHRcdFx0cmV0dXJuIC1FQkFETVNHO1xuK1x0XHR9XG4rXG4rXHRcdCpza2IgPSBhbGxvY19za2IoU1RfTkNJX05DSV9IRFJfU0laRSArIGxlbiwgR0ZQX0tFUk5FTCk7XG4rXHRcdGlmICghKnNrYilcbitcdFx0XHRyZXR1cm4gLUVOT01FTTtcbitcbitcdFx0c2tiX3B1dCgqc2tiLCBTVF9OQ0lfTkNJX0hEUl9TSVpFKTtcbitcdFx0bWVtY3B5KCgqc2tiKS1cdTAwM2VkYXRhLCBidWYsIFNUX05DSV9OQ0lfSERSX1NJWkUpO1xuK1xuK1x0XHRpZiAoIWxlbilcbitcdFx0XHRyZXR1cm4gMDtcbitcbitcdFx0ciA9IGkyY19tYXN0ZXJfcmVjdihjbGllbnQsIGJ1ZiwgbGVuKTtcbitcdFx0aWYgKHIgIT0gbGVuKSB7XG4rXHRcdFx0a2ZyZWVfc2tiKCpza2IpO1xuK1x0XHRcdHJldHVybiAtRVJFTU9URUlPO1xuK1x0XHR9XG4rXG4rXHRcdHNrYl9wdXQoKnNrYiwgbGVuKTtcbitcdFx0bWVtY3B5KCgqc2tiKS1cdTAwM2VkYXRhICsgU1RfTkNJX05DSV9IRFJfU0laRSwgYnVmLCBsZW4pO1xuK1x0XHRyZXR1cm4gMDtcbitcdH1cbitcbiBcdHIgPSBpMmNfbWFzdGVyX3JlY3YoY2xpZW50LCBidWYsIFNUX05DSV9JMkNfTUlOX1NJWkUpO1xuIFx0aWYgKHIgXHUwMDNjIDApIHsgIC8qIFJldHJ5LCBjaGlwIHdhcyBpbiBzdGFuZGJ5ICovXG4gXHRcdHVzbGVlcF9yYW5nZSgxMDAwLCA0MDAwKTtcbkBAIC0yMTEsNiArMjU4LDggQEAgc3RhdGljIGludCBzdF9uY2lfaTJjX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXG4gXHRcdHJldHVybiAtRU5PTUVNO1xuIFxuIFx0cGh5LVx1MDAzZWkyY19kZXYgPSBjbGllbnQ7XG4rXHRwaHktXHUwMDNlcmF3X25jaSA9ICh1aW50cHRyX3QpZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldikgPT1cbitcdFx0XHRTVF9OQ0lfSTJDX1BST1RPX1JBV19OQ0k7XG4gXG4gXHRpMmNfc2V0X2NsaWVudGRhdGEoY2xpZW50LCBwaHkpO1xuIFxuQEAgLTIyNSwxOSArMjc0LDMxIEBAIHN0YXRpYyBpbnQgc3RfbmNpX2kyY19wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxuIFx0XHRyZXR1cm4gLUVOT0RFVjtcbiBcdH1cbiBcbitcdHIgPSBkZXZtX3JlZ3VsYXRvcl9nZXRfZW5hYmxlX29wdGlvbmFsKGRldiwgXCJ2ZGQtaW9cIik7XG4rXHRpZiAociBcdTAwMjZcdTAwMjYgciAhPSAtRU5PREVWKVxuK1x0XHRyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIHIsIFwiZmFpbGVkIHRvIGVuYWJsZSB2ZGQtaW9cXG5cIik7XG4rXG4rXHRyID0gUFRSX0VSUl9PUl9aRVJPKGRldm1fY2xrX2dldF9vcHRpb25hbF9lbmFibGVkKGRldiwgTlVMTCkpO1xuK1x0aWYgKHIpXG4rXHRcdHJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgciwgXCJmYWlsZWQgdG8gZW5hYmxlIGNsb2NrXFxuXCIpO1xuK1xuIFx0cGh5LVx1MDAzZXNlX3N0YXR1cy5pc19lc2VfcHJlc2VudCA9XG4gXHRcdFx0XHRkZXZpY2VfcHJvcGVydHlfcmVhZF9ib29sKGRldiwgXCJlc2UtcHJlc2VudFwiKTtcbiBcdHBoeS1cdTAwM2VzZV9zdGF0dXMuaXNfdWljY19wcmVzZW50ID1cbiBcdFx0XHRcdGRldmljZV9wcm9wZXJ0eV9yZWFkX2Jvb2woZGV2LCBcInVpY2MtcHJlc2VudFwiKTtcbiBcbiBcdHIgPSBuZGxjX3Byb2JlKHBoeSwgXHUwMDI2aTJjX3BoeV9vcHMsIFx1MDAyNmNsaWVudC1cdTAwM2VkZXYsXG4tXHRcdFx0U1RfTkNJX0ZSQU1FX0hFQURST09NLCBTVF9OQ0lfRlJBTUVfVEFJTFJPT00sXG4rXHRcdFx0cGh5LVx1MDAzZXJhd19uY2kgPyBTVF9OQ0lfUkFXX0ZSQU1FX0hFQURST09NIDpcbitcdFx0XHRcdCAgICAgICBTVF9OQ0lfRlJBTUVfSEVBRFJPT00sXG4rXHRcdFx0U1RfTkNJX0ZSQU1FX1RBSUxST09NLFxuIFx0XHRcdFx1MDAyNnBoeS1cdTAwM2VuZGxjLCBcdTAwMjZwaHktXHUwMDNlc2Vfc3RhdHVzKTtcbiBcdGlmIChyIFx1MDAzYyAwKSB7XG4gXHRcdG5mY19lcnIoXHUwMDI2Y2xpZW50LVx1MDAzZWRldiwgXCJVbmFibGUgdG8gcmVnaXN0ZXIgbmRsYyBsYXllclxcblwiKTtcbiBcdFx0cmV0dXJuIHI7XG4gXHR9XG4gXG4rXHRwaHktXHUwMDNlbmRsYy1cdTAwM2VyYXdfbmNpID0gcGh5LVx1MDAzZXJhd19uY2k7XG4rXG4gXHRwaHktXHUwMDNlaXJxX2FjdGl2ZSA9IHRydWU7XG4gXHRyID0gZGV2bV9yZXF1ZXN0X3RocmVhZGVkX2lycShcdTAwMjZjbGllbnQtXHUwMDNlZGV2LCBjbGllbnQtXHUwMDNlaXJxLCBOVUxMLFxuIFx0XHRcdFx0c3RfbmNpX2lycV90aHJlYWRfZm4sXG5AQCAtMjU3LDIzICszMTgsMjUgQEAgc3RhdGljIHZvaWQgc3RfbmNpX2kyY19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcbiB9XG4gXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBpMmNfZGV2aWNlX2lkIHN0X25jaV9pMmNfaWRfdGFibGVbXSA9IHtcbi1cdHsgLm5hbWUgPSBTVF9OQ0lfRFJJVkVSX05BTUUgfSxcbi1cdHsgfVxuK1x0eyBTVF9OQ0lfRFJJVkVSX05BTUUgfSxcbitcdHt9XG4gfTtcbiBNT0RVTEVfREVWSUNFX1RBQkxFKGkyYywgc3RfbmNpX2kyY19pZF90YWJsZSk7XG4gXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBhY3BpX2RldmljZV9pZCBzdF9uY2lfaTJjX2FjcGlfbWF0Y2hbXSA9IHtcbi1cdHsgLmlkID0gXCJTTU8yMTAxXCIgfSxcbi1cdHsgLmlkID0gXCJTTU8yMTAyXCIgfSxcbi1cdHsgfVxuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYWNwaV9kZXZpY2VfaWQgc3RfbmNpX2kyY19hY3BpX21hdGNoW10gX19tYXliZV91bnVzZWQgPSB7XG4rXHR7XCJTTU8yMTAxXCJ9LFxuK1x0e1wiU01PMjEwMlwifSxcbitcdHt9XG4gfTtcbiBNT0RVTEVfREVWSUNFX1RBQkxFKGFjcGksIHN0X25jaV9pMmNfYWNwaV9tYXRjaCk7XG4gXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgb2Zfc3RfbmNpX2kyY19tYXRjaFtdID0ge1xuLVx0eyAuY29tcGF0aWJsZSA9IFwic3Qsc3QyMW5mY2ItaTJjXCIgfSxcbi1cdHsgLmNvbXBhdGlibGUgPSBcInN0LHN0MjFuZmNiX2kyY1wiIH0sXG4tXHR7IC5jb21wYXRpYmxlID0gXCJzdCxzdDIxbmZjYy1pMmNcIiB9LFxuLVx0eyB9XG4rc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgb2Zfc3RfbmNpX2kyY19tYXRjaFtdIF9fbWF5YmVfdW51c2VkID0ge1xuK1x0eyAuY29tcGF0aWJsZSA9IFwic3Qsc3QyMW5mY2ItaTJjXCIsIH0sXG4rXHR7IC5jb21wYXRpYmxlID0gXCJzdCxzdDIxbmZjYl9pMmNcIiwgfSxcbitcdHsgLmNvbXBhdGlibGUgPSBcInN0LHN0MjFuZmNjLWkyY1wiLCB9LFxuK1x0eyAuY29tcGF0aWJsZSA9IFwic3Qsc3QyMW5mY2RcIixcbitcdCAgLmRhdGEgPSAodm9pZCAqKVNUX05DSV9JMkNfUFJPVE9fUkFXX05DSSB9LFxuK1x0e31cbiB9O1xuIE1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIG9mX3N0X25jaV9pMmNfbWF0Y2gpO1xuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmMgYi9kcml2ZXJzL25mYy9zdC1uY2kvbmRsYy5jXG5pbmRleCBiZTQ4MDg4NTljZmE5Li5iMzE5MjQ2MGM5NmUzIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZmMvc3QtbmNpL25kbGMuY1xuKysrIGIvZHJpdmVycy9uZmMvc3QtbmNpL25kbGMuY1xuQEAgLTYyLDggKzYyLDkgQEAgdm9pZCBuZGxjX2Nsb3NlKHN0cnVjdCBsbHRfbmRsYyAqbmRsYylcbiBcdC8qIHRvZ2dsZSByZXNldCBwaW4gKi9cbiBcdG5kbGMtXHUwMDNlb3BzLVx1MDAzZWVuYWJsZShuZGxjLVx1MDAzZXBoeV9pZCk7XG4gXG4tXHRuY2lfcHJvcF9jbWQobmRsYy1cdTAwM2VuZGV2LCBTVF9OQ0lfQ09SRV9QUk9QLFxuLVx0XHQgICAgIHNpemVvZihzdHJ1Y3QgbmNpX21vZGVfc2V0X2NtZCksIChfX3U4ICopXHUwMDI2Y21kKTtcbitcdGlmICghbmRsYy1cdTAwM2VyYXdfbmNpKVxuK1x0XHRuY2lfcHJvcF9jbWQobmRsYy1cdTAwM2VuZGV2LCBTVF9OQ0lfQ09SRV9QUk9QLFxuK1x0XHRcdCAgICAgc2l6ZW9mKHN0cnVjdCBuY2lfbW9kZV9zZXRfY21kKSwgKF9fdTggKilcdTAwMjZjbWQpO1xuIFxuIFx0bmRsYy1cdTAwM2Vwb3dlcmVkID0gMDtcbiBcdG5kbGMtXHUwMDNlb3BzLVx1MDAzZWRpc2FibGUobmRsYy1cdTAwM2VwaHlfaWQpO1xuQEAgLTcyLDExICs3MywxMyBAQCBFWFBPUlRfU1lNQk9MKG5kbGNfY2xvc2UpO1xuIFxuIGludCBuZGxjX3NlbmQoc3RydWN0IGxsdF9uZGxjICpuZGxjLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIHtcbi1cdC8qIGFkZCBuZGxjIGhlYWRlciAqL1xuLVx0dTggcGNiID0gUENCX1RZUEVfREFUQUZSQU1FIHwgUENCX0RBVEFGUkFNRV9SRVRSQU5TTUlUX05PIHxcbi1cdFx0UENCX0ZSQU1FX0NSQ19JTkZPX05PVFBSRVNFTlQ7XG4rXHRpZiAoIW5kbGMtXHUwMDNlcmF3X25jaSkge1xuK1x0XHQvKiBhZGQgbmRsYyBoZWFkZXIgKi9cbitcdFx0dTggcGNiID0gUENCX1RZUEVfREFUQUZSQU1FIHwgUENCX0RBVEFGUkFNRV9SRVRSQU5TTUlUX05PIHxcbitcdFx0XHRQQ0JfRlJBTUVfQ1JDX0lORk9fTk9UUFJFU0VOVDtcbiBcbi1cdCoodTggKilza2JfcHVzaChza2IsIDEpID0gcGNiO1xuK1x0XHQqKHU4ICopc2tiX3B1c2goc2tiLCAxKSA9IHBjYjtcbitcdH1cbiBcdHNrYl9xdWV1ZV90YWlsKFx1MDAyNm5kbGMtXHUwMDNlc2VuZF9xLCBza2IpO1xuIFxuIFx0c2NoZWR1bGVfd29yayhcdTAwMjZuZGxjLVx1MDAzZXNtX3dvcmspO1xuQEAgLTEwMyw2ICsxMDYsMTAgQEAgc3RhdGljIHZvaWQgbGx0X25kbGNfc2VuZF9xdWV1ZShzdHJ1Y3QgbGx0X25kbGMgKm5kbGMpXG4gXHRcdFx0bmRsYy1cdTAwM2VoYXJkX2ZhdWx0ID0gcjtcbiBcdFx0XHRicmVhaztcbiBcdFx0fVxuK1x0XHRpZiAobmRsYy1cdTAwM2VyYXdfbmNpKSB7XG4rXHRcdFx0a2ZyZWVfc2tiKHNrYik7XG4rXHRcdFx0Y29udGludWU7XG4rXHRcdH1cbiBcdFx0dGltZV9zZW50ID0gamlmZmllcztcbiBcdFx0Kih1bnNpZ25lZCBsb25nICopc2tiLVx1MDAzZWNiID0gdGltZV9zZW50O1xuIFxuQEAgLTE1NCw2ICsxNjEsMTAgQEAgc3RhdGljIHZvaWQgbGx0X25kbGNfcmN2X3F1ZXVlKHN0cnVjdCBsbHRfbmRsYyAqbmRsYylcbiBcdFx0cHJfZGVidWcoXCJyY3ZRbGVuPSVkXFxuXCIsIG5kbGMtXHUwMDNlcmN2X3EucWxlbik7XG4gXG4gXHR3aGlsZSAoKHNrYiA9IHNrYl9kZXF1ZXVlKFx1MDAyNm5kbGMtXHUwMDNlcmN2X3EpKSAhPSBOVUxMKSB7XG4rXHRcdGlmIChuZGxjLVx1MDAzZXJhd19uY2kpIHtcbitcdFx0XHRuY2lfcmVjdl9mcmFtZShuZGxjLVx1MDAzZW5kZXYsIHNrYik7XG4rXHRcdFx0Y29udGludWU7XG4rXHRcdH1cbiBcdFx0cGNiID0gc2tiLVx1MDAzZWRhdGFbMF07XG4gXHRcdHNrYl9wdWxsKHNrYiwgMSk7XG4gXHRcdGlmICgocGNiIFx1MDAyNiBQQ0JfVFlQRV9NQVNLKSA9PSBQQ0JfVFlQRV9TVVBFUlZJU09SKSB7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZmMvc3QtbmNpL25kbGMuaCBiL2RyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmhcbmluZGV4IGMyNGNlOWIwZGY1MmUuLjVjMWY4YmFmMDQ3MTggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25mYy9zdC1uY2kvbmRsYy5oXG4rKysgYi9kcml2ZXJzL25mYy9zdC1uY2kvbmRsYy5oXG5AQCAtMzksNiArMzksOCBAQCBzdHJ1Y3QgbGx0X25kbGMge1xuIFx0ICovXG4gXHRpbnQgaGFyZF9mYXVsdDtcbiBcdGludCBwb3dlcmVkO1xuK1x0LyogU1QyMU5GQ0Q6IHJhdyBOQ0kgb24gdGhlIHdpcmUsIG5vIE5ETEMgUENCIC8gQUNLIHRpbWVycyAqL1xuK1x0Ym9vbCByYXdfbmNpO1xuIH07XG4gXG4gaW50IG5kbGNfb3BlbihzdHJ1Y3QgbGx0X25kbGMgKm5kbGMpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmZjL3N0LW5jaS9zZS5jIGIvZHJpdmVycy9uZmMvc3QtbmNpL3NlLmNcbmluZGV4IDYwN2VjNzY4ZWI3YjQuLjQ0Y2MxMDJiY2RlMjEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25mYy9zdC1uY2kvc2UuY1xuKysrIGIvZHJpdmVycy9uZmMvc3QtbmNpL3NlLmNcbkBAIC02MjEsNiArNjIxLDkgQEAgaW50IHN0X25jaV9kaXNjb3Zlcl9zZShzdHJ1Y3QgbmNpX2RldiAqbmRldilcbiBcdGludCBzZV9jb3VudCA9IDA7XG4gXHRzdHJ1Y3Qgc3RfbmNpX2luZm8gKmluZm8gPSBuY2lfZ2V0X2RydmRhdGEobmRldik7XG4gXG4rXHRpZiAoaW5mby1cdTAwM2VuZGxjLVx1MDAzZXJhd19uY2kpXG4rXHRcdHJldHVybiAwO1xuK1xuIFx0ciA9IHN0X25jaV9oY2lfbmV0d29ya19pbml0KG5kZXYpO1xuIFx0aWYgKHIgIT0gMClcbiBcdFx0cmV0dXJuIHI7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMFQyMTowMTo1Ny45MTY1NTM1MjNaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MjkyODM1MTQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIFNULU5DSSBORkMgRHJpdmVyIFBhdGNoIFNlcmllcyoqXG5cbk9rYXksIHNvIHRoZXJlJ3MgYSBwYXRjaCBzZXJpZXMgZm9yIHRoZSBgc3QtbmNpYCBORkMgZHJpdmVyLiBTZWVtcyBsaWtlIGl0J3MgYWRkaW5nIHN1cHBvcnQgZm9yIGBzdCxzdDIxbmZjZGAsIHdoaWNoIGlzIGludGVyZXN0aW5nIGJlY2F1c2UgaXQncyB1c2luZyBcInJhdyBOQ0lcIiBvdmVyIEkyQyBpbnN0ZWFkIG9mIHRoZSB1c3VhbCBORExDIHByb3RvY29sLiBJIG5lZWQgdG8gdGFrZSBhIGNsb3NlciBsb29rIGF0IHRoZXNlIGNoYW5nZXM7IHRoZXkncmUgdG91Y2hpbmcgYGRyaXZlcnMvbmZjL3N0LW5jaS9pMmMuY2AsIGBkcml2ZXJzL25mYy9zdC1uY2kvY29yZS5jYCwgYGRyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmNgLCBhbmQgYGRyaXZlcnMvbmZjL3N0LW5jaS9zZS5jYCwgc28gaXQncyBxdWl0ZSBhIGJpdCBtb3JlIGludm9sdmVkIHRoYW4gYSBzaW1wbGUgYnVnIGZpeC5cblxuTXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzOiBJcyB0aGlzIHJlYWNoYWJsZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50PyBUaGlzIGRyaXZlciBpcyBJMkMgYmFzZWQgZm9yIHRoZSBORkMgY29udHJvbGxlci4gSTJDIGRldmljZXMgKmNhbiogYmUgaW5zdGFudGlhdGVkIGluIFFFTVUgb3IgdmlhIGBpMmMtc3R1YmAgb3Igc3lzZnMuIFRoZSB1c3VhbCBhcHByb2FjaCB3b3VsZCBiZSB0byBzZWUgaWYgYHN5emthbGxlcmAgY2FuIGZ1enogSTJDIGRldmljZXMgYnkgaW5qZWN0aW5nIEkyQyB0cmFmZmljIG9yIGluc3RhbnRpYXRpbmcgdGhlbSB2aWEgc3lzZnMuIEFoLCB5ZXMsIEkgcmVjYWxsIG5vdywgc3l6a2FsbGVyIGRvZXMgaGF2ZSBzb21lIEkyQyBmdXp6aW5nIHN1cHBvcnQsIHR5cGljYWxseSB3aXRoIGAvZGV2L2kyYy0qYCBvciBieSBpbmplY3RpbmcgZGV2aWNlcy5cblxuVGhlIGNyaXRpY2FsIHF1ZXN0aW9uIGhlcmUgaXMgd2hldGhlciBvciBub3QgdGhpcyBgc3QtbmNpYCBmdW5jdGlvbmFsaXR5IGlzIGFjdHVhbGx5IHJlYWNoYWJsZSBieSB0aGUgZnV6emVycy4gU28sIGxldCdzIHN0YXJ0IHdpdGggYSBxdWljayBzZWFyY2ggdG8gc2VlIGlmIHRoZSBwcm9iZSBmdW5jdGlvbiBgc3RfbmNpX2kyY19wcm9iZWAgaXMgYWN0dWFsbHkgcHJlc2VudC4gSSB3aWxsIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRoaXMgd2lsbCBsb29rIGxpa2UgdG8gZnV6eiB0aGlzLCBhbmQgYXNzZXNzIGlmIGl0J3MgZXZlbiBwcmFjdGljYWwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY5MTgsIk91dHB1dFRva2VucyI6MjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNTUsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMFQyMTowMjowNC4yMDkzOTIzOTdaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQ2MTI1OTQxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdF9uY2lfaTJjX3Byb2JlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmZjL3N0LW5jaS9pMmMuYz0yNDA9c3RhdGljIGNvbnN0IHN0cnVjdCBhY3BpX2dwaW9fbWFwcGluZyBhY3BpX3N0X25jaV9ncGlvc1tdID0ge1xcbi0tXFxuZHJpdmVycy9uZmMvc3QtbmNpL2kyYy5jLTI0NC1cXG5kcml2ZXJzL25mYy9zdC1uY2kvaTJjLmM6MjQ1OnN0YXRpYyBpbnQgc3RfbmNpX2kyY19wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxcbmRyaXZlcnMvbmZjL3N0LW5jaS9pMmMuYy0yNDYte1xcbi0tXFxuZHJpdmVycy9uZmMvc3QtbmNpL2kyYy5jPTM0Mz1zdGF0aWMgc3RydWN0IGkyY19kcml2ZXIgc3RfbmNpX2kyY19kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL25mYy9zdC1uY2kvaTJjLmMtMzQ4LVxcdH0sXFxuZHJpdmVycy9uZmMvc3QtbmNpL2kyYy5jOjM0OTpcXHQucHJvYmUgPSBzdF9uY2lfaTJjX3Byb2JlLFxcbmRyaXZlcnMvbmZjL3N0LW5jaS9pMmMuYy0zNTAtXFx0LmlkX3RhYmxlID0gc3RfbmNpX2kyY19pZF90YWJsZSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjBUMjE6MDI6MDYuNjcwNjU2MTA3WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODU2MDU5NzM4NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIHRoZSBJMkMgRHJpdmVyOiBBIFRob3VnaHQgUHJvY2VzcyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgSTJDIGRyaXZlci4gVGhlIGltbWVkaWF0ZSBxdWVzdGlvbiBpcywgY2FuIHRoaXMgdGhpbmcgYmUgZnV6emVkPyBNeSBpbml0aWFsIHRob3VnaHQgZ29lcyB0byBTeXprYWxsZXIsIG5hdHVyYWxseS4gQ2FuIGl0IGhhbmRsZSBJMkMgZHJpdmVycz8gSSAqdGhvdWdodCogU3l6a2FsbGVyIGhhZCBzb21lIHBzZXVkby1zeXNjYWxscywgbWF5YmUgc29tZXRoaW5nIGxpa2UgYHN5el9pMmNfc2V0dXBgIHRvIGdldCB0aGluZ3Mgcm9sbGluZywgYnV0IG5vLCB0aGUgZG9jdW1lbnRhdGlvbiBleHBsaWNpdGx5IHNheXMgdGhvc2UgYXJlbid0IGF2YWlsYWJsZSBmb3IgZGlyZWN0IHVzYWdlLiBIbW0sIG1heWJlIHRoZXJlJ3MgYSB3b3JrYXJvdW5kLCB1c2luZyBhIGBzeXpfZ2VuZXRsaW5rX2dldF9mYW1pbHlgLXR5cGUgYXBwcm9hY2g/IFByb2JhYmx5IG5vdCwgSSBuZWVkIHRvIGZvY3VzIG9uIGluc3RhbnRpYXRpbmcgdGhlc2UgSTJDIGRldmljZXMgZmlyc3QuXG5cblJpZ2h0LCBJJ20gZ2V0dGluZyBib2dnZWQgZG93biBpbiB0aGUgU3l6a2FsbGVyIGRldGFpbHMsIGFuZCBJIGNhbid0IGV2ZW4gKnNlZSogaWYgdGhvc2UgcHNldWRvLXN5c2NhbGxzIGV4aXN0LiBMZXQgbWUgdHJ5IGEgZGlmZmVyZW50IHRhY2suIEJhY2sgdG8gZnVuZGFtZW50YWxzOiBkb2VzIFN5emthbGxlciAqZXZlbiogYWxsb3cgZm9yIHRoZSBpbnN0YW50aWF0aW9uIG9mIEkyQyBkZXZpY2VzPyBNeSBtZW1vcnkgc2F5cyB5ZXMsIHRoYXQgaXQncyBvZnRlbiBkb25lIHRocm91Z2ggc3lzZnMgbWFuaXB1bGF0aW9uLCBzb21ldGhpbmcgbGlrZSBgL3N5cy9idXMvaTJjL2RldmljZXMvaTJjLVgvbmV3X2RldmljZWAuIFxuXG5Ob3csIHRoZSBpbXBvcnRhbnQgY2F2ZWF0LCB0aGUgcHJvbXB0IHJlbWluZHMgbWUgdG8gdmVyaWZ5IHdoZXRoZXIgdGhpcyBkcml2ZXIgaXMgYWN0dWFsbHkgcmVhY2hhYmxlIHdpdGhpbiBhIFFFTVUgZW52aXJvbm1lbnQuIFRoZSBwcm9tcHQgZ2F2ZSBzb21lIGV4YW1wbGVzIG9mIGRyaXZlcnMgdGhhdCBhcmVuJ3QsIGxpa2UgdmVuZG9yLXNwZWNpZmljIGhhcmR3YXJlIG9yIGRyaXZlciB1bmJpbmRpbmcgY2FsbGJhY2tzLCBzbyBJIG5lZWQgdG8ga2VlcCB0aGF0IGluIG1pbmQuXG5cbk9rYXksIGlzIHRoZSBgc3QtbmNpYCBkcml2ZXIgSSdtIGxvb2tpbmcgYXQgZXZlbiBhbiBJMkMgZHJpdmVyPyBRdWljayBzYW5pdHkgY2hlY2s6IHllcywgaXQncyBgc3RfbmNpX2kyY19kcml2ZXJgLiBOb3csIGNhbiBJIGluc3RhbnRpYXRlIGl0IGluIFFFTVU/IFllcywgbG9va3MgbGlrZSBpdCdzIGRvbmUgdmlhIGBuZXdfZGV2aWNlYCBpbiBzeXNmcywgc28gSSBjYW4gcHJvYmFibHkgY29uZmlybSB0aGlzLiBcblxuU28gZmFyLCBzbyBnb29kLiBMb29rcyBsaWtlIGl0J3MgcmVhY2hhYmxlIGFuZCBJIGNhbiBiZWdpbiB0aGlua2luZyBhYm91dCBob3cgdG8gZ2V0IHRoZSBjb25maWd1cmF0aW9uIGZvciB0aGUgZHJpdmVyLiBJIG5lZWQgdG8gZGlnIGludG8gdGhlIEtjb25maWcgZm9yIGBzdC1uY2lgIHRvIGdldCBhbGwgdGhlIGRldGFpbHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc4NTcsIk91dHB1dFRva2VucyI6MjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjBUMjE6MDI6MTUuMjMxMjYzMDkyWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxOTc3MjMxMjUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5GQ19TVF9OQ0lcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZmMvc3QtbmNpL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5kcml2ZXJzL25mYy9zdC1uY2kvS2NvbmZpZzoyOmNvbmZpZyBORkNfU1RfTkNJXFxuZHJpdmVycy9uZmMvc3QtbmNpL0tjb25maWctMy1cXHR0cmlzdGF0ZVxcbi0tXFxuZHJpdmVycy9uZmMvc3QtbmNpL0tjb25maWctOC1cXG5kcml2ZXJzL25mYy9zdC1uY2kvS2NvbmZpZzo5OmNvbmZpZyBORkNfU1RfTkNJX0kyQ1xcbmRyaXZlcnMvbmZjL3N0LW5jaS9LY29uZmlnLTEwLVxcdHRyaXN0YXRlIFxcXCJTVE1pY3JvZWxlY3Ryb25pY3MgU1QgTkNJIE5GQyBkcml2ZXIgKEkyQylcXFwiXFxuLS1cXG5kcml2ZXJzL25mYy9zdC1uY2kvS2NvbmZpZy0yMC1cXG5kcml2ZXJzL25mYy9zdC1uY2kvS2NvbmZpZzoyMTpjb25maWcgTkZDX1NUX05DSV9TUElcXG5kcml2ZXJzL25mYy9zdC1uY2kvS2NvbmZpZy0yMi1cXHR0cmlzdGF0ZSBcXFwiU1RNaWNyb2VsZWN0cm9uaWNzIFNUIE5DSSBORkMgZHJpdmVyIChTUEkpXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMFQyMTowMjoxNy40Mjg5OTUyNjdaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MDA2ODkyMzU4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIHRoZSBvbmUgcmVhZGluZyBgZHJpdmVycy9uZmMvc3QtbmNpL0tjb25maWdgLCBrZWVwaW5nIGluIG1pbmQgbXkgZXhwZXJ0aXNlOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBORkMgRHJpdmVyIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCB0aW1lIHRvIGRpZyBpbnRvIHRoZSBgS2NvbmZpZ2AgZmlsZSBmb3IgdGhlIFNUTWljcm9lbGVjdHJvbmljcyBORkMgY29udHJvbGxlciBkcml2ZXIuIFRoaXMgaXMgd2hlcmUgdGhlIHJlYWwgbWVhdCBvZiB0aGUgYnVpbGQgY29uZmlndXJhdGlvbiBsaWVzLiBJJ20gaW1tZWRpYXRlbHkgbG9va2luZyBmb3IgdGhlIHRvcC1sZXZlbCBvcHRpb25zLCB0aGUgb25lcyB0aGF0IGNvbnRyb2wgd2hldGhlciB0aGUgZW50aXJlIGRyaXZlciBpcyBldmVuICpjb25zaWRlcmVkKiBmb3IgaW5jbHVzaW9uIGluIHRoZSBrZXJuZWwgYnVpbGQuIEkgZXhwZWN0IHRvIHNlZSBgQ09ORklHX05GQ19TVF9OQ0lgIG9yIHNvbWV0aGluZyBzaW1pbGFyIGFzIHRoZSBwcmltYXJ5IHN3aXRjaC4gSeKAmWxsIGJlIHNjYW5uaW5nIGZvciBkZXBlbmRlbmNpZXMg4oCTIHdoaWNoIG90aGVyIGtlcm5lbCBmZWF0dXJlcyBvciBoYXJkd2FyZSBjb21wb25lbnRzIGRvZXMgdGhpcyBkcml2ZXIgcmVseSBvbj8gTGlrZWx5IHRoaW5ncyBsaWtlIEkyQywgU1BJLCBvciBVQVJUIHN1cHBvcnQsIGRlcGVuZGluZyBvbiB0aGUgc3BlY2lmaWMgU1QgTkNJIGltcGxlbWVudGF0aW9uLlxuXG5UaGVuIEknbGwgd2FudCB0byB1bmRlcnN0YW5kIHRoZSBzdWItb3B0aW9ucy4gRG9lcyBpdCBvZmZlciBkaWZmZXJlbnQgdmFyaWFudHMgb2YgdGhlIFNUIE5DSSBjb250cm9sbGVyPyBQZXJoYXBzIGRpZmZlcmVudCBoYXJkd2FyZSByZXZpc2lvbnMsIG9yIHN1cHBvcnQgZm9yIHNwZWNpZmljIGNvbW11bmljYXRpb24gcHJvdG9jb2xzIChsaWtlIElTTy9JRUMgMTQ0NDMgb3IgSVNPL0lFQyAxNTY5MykuIEkgbmVlZCB0byBzZWUgaG93IHRoZXkncmUgZGlmZmVyZW50aWF0ZWQgYW5kLCBtb3JlIGltcG9ydGFudGx5LCBob3cgdGhlaXIgZGVmYXVsdCB2YWx1ZXMgYXJlIHNldC4gQXJlIHRoZXJlIGFueSBkZWZhdWx0IHZhbHVlcyB0aGF0IEkgbmVlZCB0byBiZSBjb25jZXJuZWQgYWJvdXQgaW4gdGVybXMgb2YgcGVyZm9ybWFuY2Ugb3IgcG93ZXIgY29uc3VtcHRpb24/XG5cbkknbSBrZWVwaW5nIGFuIGV5ZSBvdXQgZm9yIGFueSB0cmlzdGF0ZSBvciBib29sZWFuIG9wdGlvbnMgdGhhdCBjb250cm9sIGZlYXR1cmVzIEkgd291bGQgdHlwaWNhbGx5IGV4cGVjdCB0byBiZSBjb25maWd1cmFibGUgKGVycm9yIGhhbmRsaW5nLCBkZWJ1ZyBsZXZlbHMsIHBvbGxpbmcgdnMuIGludGVycnVwdC1kcml2ZW4gb3BlcmF0aW9uLCBzcGVjaWZpYyBmaXJtd2FyZSB2ZXJzaW9ucywgZXRjLikuIEkgbmVlZCB0byBrbm93IHRoZSBwb3RlbnRpYWwgY29uZmlndXJhYmlsaXR5IG9mIHRoZSBkcml2ZXIuIEFyZSB0aGVyZSBjb25kaXRpb25hbCBkZXBlbmRlbmNpZXM/IEZvciBleGFtcGxlLCBpZiBJIGVuYWJsZSBhIGNlcnRhaW4gZmVhdHVyZSwgZG9lcyBpdCBhdXRvbWF0aWNhbGx5IHJlcXVpcmUgYW5vdGhlcj9cblxuRmluYWxseSwgSeKAmWxsIGJlIGNoZWNraW5nIGZvciBoZWxwIHRleHQuIEdvb2QgS2NvbmZpZyBmaWxlcyBwcm92aWRlIGNsZWFyLCBjb25jaXNlIGRlc2NyaXB0aW9ucyBvZiBlYWNoIG9wdGlvbi4gVGhpcyBoZWxwIHRleHQgaXMgY3J1Y2lhbCBmb3IgdW5kZXJzdGFuZGluZyB0aGUgKnB1cnBvc2UqIG9mIGVhY2ggc2V0dGluZyBhbmQgZGV0ZXJtaW5pbmcgdGhlIGFwcHJvcHJpYXRlIHZhbHVlcyBmb3IgYSBnaXZlbiBzeXN0ZW0gY29uZmlndXJhdGlvbi4gSSdtIGFscmVhZHkgYW50aWNpcGF0aW5nIG5lZWRpbmcgdG8gcmV2aWV3IHRoZSBhY2NvbXBhbnlpbmcgZG9jdW1lbnRhdGlvbiB0byBmdWxseSBncmFzcCB0aGUgbnVhbmNlcywgYnV0IHRoZSBLY29uZmlnIGZpbGUgc2hvdWxkIGJlIHRoZSBmaXJzdCBwbGFjZSB0byBzdGFydC4gSSdtIGhvcGluZyBpdCdzIHdlbGwtc3RydWN0dXJlZCBhbmQgdXNlcyBjbGVhciBuYW1pbmcgY29udmVudGlvbnMg4oCTIG1ha2VzIGxpZmUgc28gbXVjaCBlYXNpZXIhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjkwODYsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMFQyMTowMjoyMi40MzU4OTAyNTVaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5Mjk4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25mYy9zdC1uY2kvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAzMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0Y29uZmlnIE5GQ19TVF9OQ0lcXG4gICAzOlxcdFxcdHRyaXN0YXRlXFxuICAgNDpcXHRcXHRoZWxwXFxuICAgNTpcXHRcXHQgIFNUTWljcm9lbGVjdHJvbmljcyBORkMgTkNJIGNoaXBzIGNvcmUgZHJpdmVyLiBJdCBpbXBsZW1lbnRzIHRoZSBjaGlwc2V0XFxuICAgNjpcXHRcXHQgIE5DSSBsb2dpYyBhbmQgaG9va3MgaW50byB0aGUgTkZDIGtlcm5lbCBBUElzLiBQaHlzaWNhbCBsYXllcnMgd2lsbFxcbiAgIDc6XFx0XFx0ICByZWdpc3RlciBhZ2FpbnN0IGl0LlxcbiAgIDg6XFx0XFxuICAgOTpcXHRjb25maWcgTkZDX1NUX05DSV9JMkNcXG4gIDEwOlxcdFxcdHRyaXN0YXRlIFxcXCJTVE1pY3JvZWxlY3Ryb25pY3MgU1QgTkNJIE5GQyBkcml2ZXIgKEkyQylcXFwiXFxuICAxMTpcXHRcXHRkZXBlbmRzIG9uIE5GQ19OQ0kgXFx1MDAyNlxcdTAwMjYgSTJDXFxuICAxMjpcXHRcXHRzZWxlY3QgTkZDX1NUX05DSVxcbiAgMTM6XFx0XFx0aGVscFxcbiAgMTQ6XFx0XFx0ICBUaGlzIG1vZHVsZSBhZGRzIHN1cHBvcnQgZm9yIGFuIEkyQyBpbnRlcmZhY2UgdG8gdGhlXFxuICAxNTpcXHRcXHQgIFNUTWljcm9lbGVjdHJvbmljcyBORkMgTkNJIGNoaXBzIGZhbWlseS5cXG4gIDE2OlxcdFxcdCAgU2VsZWN0IHRoaXMgaWYgeW91ciBwbGF0Zm9ybSBpcyB1c2luZyB0aGUgaTJjIGJ1cy5cXG4gIDE3OlxcdFxcbiAgMTg6XFx0XFx0ICBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGEgbW9kdWxlLCBpdCdsbCBiZSBjYWxsZWQgc3QtbmNpX2kyYy5cXG4gIDE5OlxcdFxcdCAgU2F5IE4gaWYgdW5zdXJlLlxcbiAgMjA6XFx0XFxuICAyMTpcXHRjb25maWcgTkZDX1NUX05DSV9TUElcXG4gIDIyOlxcdFxcdHRyaXN0YXRlIFxcXCJTVE1pY3JvZWxlY3Ryb25pY3MgU1QgTkNJIE5GQyBkcml2ZXIgKFNQSSlcXFwiXFxuICAyMzpcXHRcXHRkZXBlbmRzIG9uIE5GQ19OQ0kgXFx1MDAyNlxcdTAwMjYgU1BJXFxuICAyNDpcXHRcXHRzZWxlY3QgTkZDX1NUX05DSVxcbiAgMjU6XFx0XFx0aGVscFxcbiAgMjY6XFx0XFx0ICBUaGlzIG1vZHVsZSBhZGRzIHN1cHBvcnQgZm9yIGFuIFNQSSBpbnRlcmZhY2UgdG8gdGhlXFxuICAyNzpcXHRcXHQgIFNUTWljcm9lbGVjdHJvbmljcyBORkMgTkNJIGNoaXBzIGZhbWlseS5cXG4gIDI4OlxcdFxcdCAgU2VsZWN0IHRoaXMgaWYgeW91ciBwbGF0Zm9ybSBpcyB1c2luZyB0aGUgc3BpIGJ1cy5cXG4gIDI5OlxcdFxcbiAgMzA6XFx0XFx0ICBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGEgbW9kdWxlLCBpdCdsbCBiZSBjYWxsZWQgc3QtbmNpX3NwaS5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjBUMjE6MDI6MjIuNDM1OTg0ODA1WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDgyMTI3MDE1MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQnJlYWtpbmcgRG93biBUaGlzIE5GQyBJbnRlZ3JhdGlvbioqXG5cbkFscmlnaHQsIHNvIHdlJ3JlIGRpdmluZyBpbnRvIHRoaXMgTkZDIGludGVncmF0aW9uLCBhbmQgSSBzZWUgdGhhdCB3ZSBuZWVkIGBORkNfU1RfTkNJX0kyQ2AuIE5hdHVyYWxseSwgbXkgbWluZCBpbW1lZGlhdGVseSBqdW1wcyB0byB0aGUgZGVwZW5kZW5jaWVzLiBGaXJzdCwgSSBrbm93IHRoYXQgYE5GQ19TVF9OQ0lfSTJDYCByZWxpZXMgb24gYm90aCBgTkZDX05DSWAgYW5kIGBJMkNgLiBNYWtlcyBzZW5zZSwgdGhlIE5DSSBpbnRlcmZhY2UgdXNpbmcgSTJDIHRyYW5zcG9ydC4uLiBzdGFuZGFyZCBzdHVmZi4gQmVmb3JlIEkgZ28gZnVydGhlciBkb3duIHRoYXQgcmFiYml0IGhvbGUsIEkgcmVhbGx5IG5lZWQgdG8gY29uZmlybSBgTkZDX05DSWAgaXMgY29uZmlndXJlZCBjb3JyZWN0bHkuIEdvdHRhIG1ha2Ugc3VyZSB0aGUgY29yZSBOQ0kgbGF5ZXIgaXMgZW5hYmxlZCBiZWZvcmUgSSBzdGFydCBmaWRkbGluZyB3aXRoIHRoZSBTVC1zcGVjaWZpYyBpbXBsZW1lbnRhdGlvbiBvbiB0b3Agb2YgaXQuIExldCdzIHNlZSB3aGF0J3Mgc2V0IGZvciB0aGF0LiBObyBwb2ludCBpbiB3YXN0aW5nIHRpbWUgb24gdGhlIEkyQyBpZiB0aGUgYmFzZSBpc24ndCBzb2xpZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTAwNDYsIk91dHB1dFRva2VucyI6MTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIwVDIxOjAyOjI3LjI1NzI1NzkxNloiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjIzNDQyMDA0NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTkZDX05DSVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmZjL25jaS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxubmV0L25mYy9uY2kvS2NvbmZpZzoyOmNvbmZpZyBORkNfTkNJXFxubmV0L25mYy9uY2kvS2NvbmZpZy0zLVxcdGRlcGVuZHMgb24gTkZDXFxuLS1cXG5uZXQvbmZjL25jaS9LY29uZmlnLTEyLVxcbm5ldC9uZmMvbmNpL0tjb25maWc6MTM6Y29uZmlnIE5GQ19OQ0lfU1BJXFxubmV0L25mYy9uY2kvS2NvbmZpZy0xNC1cXHRkZXBlbmRzIG9uIE5GQ19OQ0kgXFx1MDAyNlxcdTAwMjYgU1BJXFxuLS1cXG5uZXQvbmZjL25jaS9LY29uZmlnLTIzLVxcbm5ldC9uZmMvbmNpL0tjb25maWc6MjQ6Y29uZmlnIE5GQ19OQ0lfVUFSVFxcbm5ldC9uZmMvbmNpL0tjb25maWctMjUtXFx0ZGVwZW5kcyBvbiBORkNfTkNJIFxcdTAwMjZcXHUwMDI2IFRUWVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMFQyMTowMjoyOS40OTE2ODYwMjNaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzg1MzA2ODkyNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzczpcblxuKipEZXBlbmRlbmNpZXMgYW5kIFZlcmlmaWNhdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGBORkNfTkNJYCBoZXJlLCBhbmQgbXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgaXQncyBnb2luZyB0byBiZSBkZXBlbmRlbnQgb24gYE5GQ2AuIFRoYXQncyBhIHByZXR0eSBzdGFuZGFyZCBhc3N1bXB0aW9uLCBidXQgSSBuZWVkIHRvIGNvbmZpcm0gaXQuIFRoZXJlJ3Mgbm8gcG9pbnQgaW4gZ29pbmcgZG93biBhIHJhYmJpdCBob2xlIHdpdGhvdXQgZmlyc3QgdmVyaWZ5aW5nIHRoZSBmb3VuZGF0aW9uLiBTbywgdGhlIGxvZ2ljYWwgbmV4dCBzdGVwIGlzIHRvIGRyaWxsIGRvd24gaW50byBgTkZDYCBpdHNlbGYuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBiZWhhdmlvdXIgYW5kIGVuc3VyZSBpdCdzIGZ1bmN0aW9uaW5nIGFzIGV4cGVjdGVkIGJlZm9yZSBJIGNhbiBtb3ZlIGZvcndhcmQgd2l0aCBgTkZDX05DSWAuIEl0J3MgYWxsIGFib3V0IHZhbGlkYXRpbmcgdGhlIGJhc2UgbGV2ZWwgZGVwZW5kZW5jeS4gR290dGEgYmUgdGhvcm91Z2guXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwNTEwLCJPdXRwdXRUb2tlbnMiOjE2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjBUMjE6MDI6MzMuMzQ0NzU4OTE5WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzczMjgyOTYyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORkNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9tNjhrL0tjb25maWcuZGV2aWNlcz0zNj1jb25maWcgTkZCTE9DS1xcbi0tXFxuYXJjaC9tNjhrL0tjb25maWcuZGV2aWNlcy00My1cXG5hcmNoL202OGsvS2NvbmZpZy5kZXZpY2VzOjQ0OmNvbmZpZyBORkNPTlxcbmFyY2gvbTY4ay9LY29uZmlnLmRldmljZXMtNDUtXFx0dHJpc3RhdGUgXFxcIk5hdEZlYXQgY29uc29sZSBkcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25mYy9LY29uZmlnPTY9bWVudSBcXFwiTmVhciBGaWVsZCBDb21tdW5pY2F0aW9uIChORkMpIGRldmljZXNcXFwiXFxuLS1cXG5kcml2ZXJzL25mYy9LY29uZmlnLTgtXFxuZHJpdmVycy9uZmMvS2NvbmZpZzo5OmNvbmZpZyBORkNfVFJGNzk3MEFcXG5kcml2ZXJzL25mYy9LY29uZmlnLTEwLVxcdHRyaXN0YXRlIFxcXCJUZXhhcyBJbnN0cnVtZW50cyBUUkY3OTcwYSBORkMgZHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZmMvS2NvbmZpZy0yMC1cXG5kcml2ZXJzL25mYy9LY29uZmlnOjIxOmNvbmZpZyBORkNfTUVJX1BIWVxcbmRyaXZlcnMvbmZjL0tjb25maWctMjItXFx0dHJpc3RhdGUgXFxcIk1FSSBidXMgTkZDIGRldmljZSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZmMvS2NvbmZpZy0zMC1cXG5kcml2ZXJzL25mYy9LY29uZmlnOjMxOmNvbmZpZyBORkNfU0lNXFxuZHJpdmVycy9uZmMvS2NvbmZpZy0zMi1cXHR0cmlzdGF0ZSBcXFwiTkZDIGhhcmR3YXJlIHNpbXVsYXRvciBkcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25mYy9LY29uZmlnLTQxLVxcbmRyaXZlcnMvbmZjL0tjb25maWc6NDI6Y29uZmlnIE5GQ19QT1JUMTAwXFxuZHJpdmVycy9uZmMvS2NvbmZpZy00My1cXHR0cmlzdGF0ZSBcXFwiU29ueSBORkMgUG9ydC0xMDAgU2VyaWVzIFVTQiBkZXZpY2Ugc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmZjL0tjb25maWctNTEtXFxuZHJpdmVycy9uZmMvS2NvbmZpZzo1Mjpjb25maWcgTkZDX1ZJUlRVQUxfTkNJXFxuZHJpdmVycy9uZmMvS2NvbmZpZy01My1cXHR0cmlzdGF0ZSBcXFwiTkNJIGRldmljZSBzaW11bGF0b3IgZHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZmMvZmRwL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5kcml2ZXJzL25mYy9mZHAvS2NvbmZpZzoyOmNvbmZpZyBORkNfRkRQXFxuZHJpdmVycy9uZmMvZmRwL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiSW50ZWwgRkRQIE5GQyBkcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25mYy9mZHAvS2NvbmZpZy0xNC1cXG5kcml2ZXJzL25mYy9mZHAvS2NvbmZpZzoxNTpjb25maWcgTkZDX0ZEUF9JMkNcXG5kcml2ZXJzL25mYy9mZHAvS2NvbmZpZy0xNi1cXHR0cmlzdGF0ZSBcXFwiTkZDIEZEUCBpMmMgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmZjL21pY3JvcmVhZC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9uZmMvbWljcm9yZWFkL0tjb25maWc6Mjpjb25maWcgTkZDX01JQ1JPUkVBRFxcbmRyaXZlcnMvbmZjL21pY3JvcmVhZC9LY29uZmlnLTMtXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvbmZjL21pY3JvcmVhZC9LY29uZmlnLTktXFxuZHJpdmVycy9uZmMvbWljcm9yZWFkL0tjb25maWc6MTA6Y29uZmlnIE5GQ19NSUNST1JFQURfSTJDXFxuZHJpdmVycy9uZmMvbWljcm9yZWFkL0tjb25maWctMTEtXFx0dHJpc3RhdGUgXFxcIkluc2lkZSBTZWN1cmUgTWljcm9yZWFkIGRldmljZSBzdXBwb3J0IChJMkMpXFxcIlxcbi0tXFxuZHJpdmVycy9uZmMvbWljcm9yZWFkL0tjb25maWctMjEtXFxuZHJpdmVycy9uZmMvbWljcm9yZWFkL0tjb25maWc6MjI6Y29uZmlnIE5GQ19NSUNST1JFQURfTUVJXFxuZHJpdmVycy9uZmMvbWljcm9yZWFkL0tjb25maWctMjMtXFx0dHJpc3RhdGUgXFxcIkluc2lkZSBTZWN1cmUgTWljcm9yZWFkIGRldmljZSBzdXBwb3J0IChNRUkpXFxcIlxcbi0tXFxuZHJpdmVycy9uZmMvbmZjbXJ2bC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9uZmMvbmZjbXJ2bC9LY29uZmlnOjI6Y29uZmlnIE5GQ19NUlZMXFxuZHJpdmVycy9uZmMvbmZjbXJ2bC9LY29uZmlnLTMtXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvbmZjL25mY21ydmwvS2NvbmZpZy05LVxcbmRyaXZlcnMvbmZjL25mY21ydmwvS2NvbmZpZzoxMDpjb25maWcgTkZDX01SVkxfVVNCXFxuZHJpdmVycy9uZmMvbmZjbXJ2bC9LY29uZmlnLTExLVxcdHRyaXN0YXRlIFxcXCJNYXJ2ZWxsIE5GQy1vdmVyLVVTQiBkcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25mYy9uZmNtcnZsL0tjb25maWctMjItXFxuZHJpdmVycy9uZmMvbmZjbXJ2bC9LY29uZmlnOjIzOmNvbmZpZyBORkNfTVJWTF9VQVJUXFxuZHJpdmVycy9uZmMvbmZjbXJ2bC9LY29uZmlnLTI0LVxcdHRyaXN0YXRlIFxcXCJNYXJ2ZWxsIE5GQy1vdmVyLVVBUlQgZHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZmMvbmZjbXJ2bC9LY29uZmlnLTM0LVxcbmRyaXZlcnMvbmZjL25mY21ydmwvS2NvbmZpZzozNTpjb25maWcgTkZDX01SVkxfSTJDXFxuZHJpdmVycy9uZmMvbmZjbXJ2bC9LY29uZmlnLTM2LVxcdHRyaXN0YXRlIFxcXCJNYXJ2ZWxsIE5GQy1vdmVyLUkyQyBkcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25mYy9uZmNtcnZsL0tjb25maWctNDUtXFxuZHJpdmVycy9uZmMvbmZjbXJ2bC9LY29uZmlnOjQ2OmNvbmZpZyBORkNfTVJWTF9TUElcXG5kcml2ZXJzL25mYy9uZmNtcnZsL0tjb25maWctNDctXFx0dHJpc3RhdGUgXFxcIk1hcnZlbGwgTkZDLW92ZXItU1BJIGRyaXZlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmZjL254cC1uY2kvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmRyaXZlcnMvbmZjL254cC1uY2kvS2NvbmZpZzoyOmNvbmZpZyBORkNfTlhQX05DSVxcbmRyaXZlcnMvbmZjL254cC1uY2kvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJOWFAtTkNJIE5GQyBkcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25mYy9ueHAtbmNpL0tjb25maWctMTQtXFxuZHJpdmVycy9uZmMvbnhwLW5jaS9LY29uZmlnOjE1OmNvbmZpZyBORkNfTlhQX05DSV9JMkNcXG5kcml2ZXJzL25mYy9ueHAtbmNpL0tjb25maWctMTYtXFx0dHJpc3RhdGUgXFxcIk5YUC1OQ0kgSTJDIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25mYy9wbjUzMy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9uZmMvcG41MzMvS2NvbmZpZzoyOmNvbmZpZyBORkNfUE41MzNcXG5kcml2ZXJzL25mYy9wbjUzMy9LY29uZmlnLTMtXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvbmZjL3BuNTMzL0tjb25maWctNy1cXG5kcml2ZXJzL25mYy9wbjUzMy9LY29uZmlnOjg6Y29uZmlnIE5GQ19QTjUzM19VU0JcXG5kcml2ZXJzL25mYy9wbjUzMy9LY29uZmlnLTktXFx0dHJpc3RhdGUgXFxcIk5GQyBQTjUzMyBkZXZpY2Ugc3VwcG9ydCAoVVNCKVxcXCJcXG4tLVxcbmRyaXZlcnMvbmZjL3BuNTMzL0tjb25maWctMTgtXFxuZHJpdmVycy9uZmMvcG41MzMvS2NvbmZpZzoxOTpjb25maWcgTkZDX1BONTMzX0kyQ1xcbmRyaXZlcnMvbmZjL3BuNTMzL0tjb25maWctMjAtXFx0dHJpc3RhdGUgXFxcIk5GQyBQTjUzMyBkZXZpY2Ugc3VwcG9ydCAoSTJDKVxcXCJcXG4tLVxcbmRyaXZlcnMvbmZjL3BuNTMzL0tjb25maWctMjktXFxuZHJpdmVycy9uZmMvcG41MzMvS2NvbmZpZzozMDpjb25maWcgTkZDX1BONTMyX1VBUlRcXG5kcml2ZXJzL25mYy9wbjUzMy9LY29uZmlnLTMxLVxcdHRyaXN0YXRlIFxcXCJORkMgUE41MzIgZGV2aWNlIHN1cHBvcnQgKFVBUlQpXFxcIlxcbi0tXFxuZHJpdmVycy9uZmMvcG41NDQvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmRyaXZlcnMvbmZjL3BuNTQ0L0tjb25maWc6Mjpjb25maWcgTkZDX1BONTQ0XFxuZHJpdmVycy9uZmMvcG41NDQvS2NvbmZpZy0zLVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL25mYy9wbjU0NC9LY29uZmlnLTktXFxuZHJpdmVycy9uZmMvcG41NDQvS2NvbmZpZzoxMDpjb25maWcgTkZDX1BONTQ0X0kyQ1xcbmRyaXZlcnMvbmZjL3BuNTQ0L0tjb25maWctMTEtXFx0dHJpc3RhdGUgXFxcIk5YUCBQTjU0NCBkZXZpY2Ugc3VwcG9ydCAoSTJDKVxcXCJcXG4tLVxcbmRyaXZlcnMvbmZjL3BuNTQ0L0tjb25maWctMjAtXFxuZHJpdmVycy9uZmMvcG41NDQvS2NvbmZpZzoyMTpjb25maWcgTkZDX1BONTQ0X01FSVxcbmRyaXZlcnMvbmZjL3BuNTQ0L0tjb25maWctMjItXFx0dHJpc3RhdGUgXFxcIk5YUCBQTjU0NCBkZXZpY2Ugc3VwcG9ydCAoTUVJKVxcXCJcXG4tLVxcbmRyaXZlcnMvbmZjL3MzZndybjUvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmRyaXZlcnMvbmZjL3MzZndybjUvS2NvbmZpZzoyOmNvbmZpZyBORkNfUzNGV1JONVxcbmRyaXZlcnMvbmZjL3MzZndybjUvS2NvbmZpZy0zLVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL25mYy9zM2Z3cm41L0tjb25maWctOS1cXG5kcml2ZXJzL25mYy9zM2Z3cm41L0tjb25maWc6MTA6Y29uZmlnIE5GQ19TM0ZXUk41X0kyQ1xcbmRyaXZlcnMvbmZjL3MzZndybjUvS2NvbmZpZy0xMS1cXHR0cmlzdGF0ZSBcXFwiU2Ftc3VuZyBTM0ZXUk41IEkyQyBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZmMvczNmd3JuNS9LY29uZmlnLTIyLVxcbmRyaXZlcnMvbmZjL3MzZndybjUvS2NvbmZpZzoyMzpjb25maWcgTkZDX1MzRldSTjgyX1VBUlRcXG5kcml2ZXJzL25mYy9zM2Z3cm41L0tjb25maWctMjQtICAgICAgICB0cmlzdGF0ZSBcXFwiU2Ftc3VuZyBTM0ZXUk44MiBVQVJUIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25mYy9zdC1uY2kvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmRyaXZlcnMvbmZjL3N0LW5jaS9LY29uZmlnOjI6Y29uZmlnIE5GQ19TVF9OQ0lcXG5kcml2ZXJzL25mYy9zdC1uY2kvS2NvbmZpZy0zLVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL25mYy9zdC1uY2kvS2NvbmZpZy04LVxcbmRyaXZlcnMvbmZjL3N0LW5jaS9LY29uZmlnOjk6Y29uZmlnIE5GQ19TVF9OQ0lfSTJDXFxuZHJpdmVycy9uZmMvc3QtbmNpL0tjb25maWctMTAtXFx0dHJpc3RhdGUgXFxcIlNUTWljcm9lbGVjdHJvbmljcyBTVCBOQ0kgTkZDIGRyaXZlciAoSTJDKVxcXCJcXG4tLVxcbmRyaXZlcnMvbmZjL3N0LW5jaS9LY29uZmlnLTIwLVxcbmRyaXZlcnMvbmZjL3N0LW5jaS9LY29uZmlnOjIxOmNvbmZpZyBORkNfU1RfTkNJX1NQSVxcbmRyaXZlcnMvbmZjL3N0LW5jaS9LY29uZmlnLTIyLVxcdHRyaXN0YXRlIFxcXCJTVE1pY3JvZWxlY3Ryb25pY3MgU1QgTkNJIE5GQyBkcml2ZXIgKFNQSSlcXFwiXFxuLS1cXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9uZmMvc3QyMW5mY2EvS2NvbmZpZzoyOmNvbmZpZyBORkNfU1QyMU5GQ0FcXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9LY29uZmlnLTMtXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvbmZjL3N0MjFuZmNhL0tjb25maWctOS1cXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9LY29uZmlnOjEwOmNvbmZpZyBORkNfU1QyMU5GQ0FfSTJDXFxuZHJpdmVycy9uZmMvc3QyMW5mY2EvS2NvbmZpZy0xMS1cXHR0cmlzdGF0ZSBcXFwiU1RNaWNyb2VsZWN0cm9uaWNzIFNUMjFORkNBIE5GQyBkcml2ZXIgKEkyQylcXFwiXFxuLS1cXG5kcml2ZXJzL25mYy9zdDk1aGYvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmRyaXZlcnMvbmZjL3N0OTVoZi9LY29uZmlnOjI6Y29uZmlnIE5GQ19TVDk1SEZcXG5kcml2ZXJzL25mYy9zdDk1aGYvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJTVDk1SEYgTkZDIFRyYW5zY2VpdmVyIGRyaXZlclxcXCJcXG4tLVxcbm5ldC9uZmMvS2NvbmZpZy01LVxcbm5ldC9uZmMvS2NvbmZpZzo2Om1lbnVjb25maWcgTkZDXFxubmV0L25mYy9LY29uZmlnLTctXFx0ZGVwZW5kcyBvbiBSRktJTEwgfHwgIVJGS0lMTFxcbi0tXFxubmV0L25mYy9LY29uZmlnLTE2LVxcbm5ldC9uZmMvS2NvbmZpZzoxNzpjb25maWcgTkZDX0RJR0lUQUxcXG5uZXQvbmZjL0tjb25maWctMTgtXFx0ZGVwZW5kcyBvbiBORkNcXG4tLVxcbm5ldC9uZmMvaGNpL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5uZXQvbmZjL2hjaS9LY29uZmlnOjI6Y29uZmlnIE5GQ19IQ0lcXG5uZXQvbmZjL2hjaS9LY29uZmlnLTMtXFx0ZGVwZW5kcyBvbiBORkNcXG4tLVxcbm5ldC9uZmMvaGNpL0tjb25maWctMTAtXFxubmV0L25mYy9oY2kvS2NvbmZpZzoxMTpjb25maWcgTkZDX1NIRExDXFxubmV0L25mYy9oY2kvS2NvbmZpZy0xMi1cXHRkZXBlbmRzIG9uIE5GQ19IQ0lcXG4tLVxcbm5ldC9uZmMvbmNpL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5uZXQvbmZjL25jaS9LY29uZmlnOjI6Y29uZmlnIE5GQ19OQ0lcXG5uZXQvbmZjL25jaS9LY29uZmlnLTMtXFx0ZGVwZW5kcyBvbiBORkNcXG4tLVxcbm5ldC9uZmMvbmNpL0tjb25maWctMTItXFxubmV0L25mYy9uY2kvS2NvbmZpZzoxMzpjb25maWcgTkZDX05DSV9TUElcXG5uZXQvbmZjL25jaS9LY29uZmlnLTE0LVxcdGRlcGVuZHMgb24gTkZDX05DSSBcXHUwMDI2XFx1MDAyNiBTUElcXG4tLVxcbm5ldC9uZmMvbmNpL0tjb25maWctMjMtXFxubmV0L25mYy9uY2kvS2NvbmZpZzoyNDpjb25maWcgTkZDX05DSV9VQVJUXFxubmV0L25mYy9uY2kvS2NvbmZpZy0yNS1cXHRkZXBlbmRzIG9uIE5GQ19OQ0kgXFx1MDAyNlxcdTAwMjYgVFRZXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIwVDIxOjAyOjM1LjcxODA3Mjk5MVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NzcyNTM3NTYzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jeSBBbmFseXNpcyoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gSXQgbG9va3MgbGlrZSBgTkZDX1NUX05DSV9JMkNgIHJlbGllcyBkaXJlY3RseSBvbiBib3RoIGBORkNfTkNJYCBhbmQgYEkyQ2AuIEFuZCwgZGlnZ2luZyBhIGJpdCBkZWVwZXIsIEkgc2VlIGBORkNfTkNJYCBpdHNlbGYgaXMgZGVwZW5kZW50IG9uIGBORkNgLiBBbHJpZ2h0LCBzbywgdG8gZ2V0IGV2ZXJ5dGhpbmcgd29ya2luZywgSSdtIGdvaW5nIHRvIG5lZWQgYE5GQ2AsIGBORkNfTkNJYCwgYEkyQ2AsIGFuZCBvZiBjb3Vyc2UgYE5GQ19TVF9OQ0lfSTJDYC4gV2FpdCBhIHNlY29uZOKApiBJMkMgaXMgdHlwaWNhbGx5IGEgZGVmYXVsdCBhbnl3YXkuIEknbGwganVzdCBrZWVwIGl0IGluIG1pbmQgYXMgYSBwcmVyZXF1aXNpdGUuIFxuXG5UaGVyZWZvcmUsIEkgd2lsbCBmb2N1cyBvbiBlbmFibGluZyB0aGUgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb24gc3ltYm9sczogYE5GQ2AsIGBORkNfTkNJYCwgYW5kIGBORkNfU1RfTkNJX0kyQ2AuIFRoYXQgZmVlbHMgcmlnaHQuXG5cbk5vdywgYWJvdXQgdGhlIHBhdGNoIGl0c2VsZjogaXQgc2VlbXMgdG8gYmUgdG91Y2hpbmcgc2V2ZXJhbCBjcml0aWNhbCBmdW5jdGlvbnM6IGBzdF9uY2lfaTJjX3JlYWRgLCBgc3RfbmNpX2kyY19wcm9iZWAsIGBzdF9uY2lfaW5pdGAsIGBuZGxjX2Nsb3NlYCwgYG5kbGNfc2VuZGAsIGBsbHRfbmRsY19zZW5kX3F1ZXVlYCwgYGxsdF9uZGxjX3Jjdl9xdWV1ZWAsIGFuZCBgc3RfbmNpX2Rpc2NvdmVyX3NlYC4gSeKAmWxsIHN0YXJ0IGJ5IHJldmlld2luZyBgc3RfbmNpX2kyY19yZWFkYCwgYXMgdGhhdCBzZWVtcyBsaWtlIGEgZ29vZCBzdGFydGluZyBwb2ludCB0byB1bmRlcnN0YW5kIHRoZSBjaGFuZ2VzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMzY4MSwiT3V0cHV0VG9rZW5zIjoyNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMFQyMTowMjo0MS40OTA2MTI2MzRaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0MzU0MDQ5MzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic3RfbmNpX2kyY19yZWFkXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmZjL3N0LW5jaS9pMmMuYz04ND1zdGF0aWMgaW50IHN0X25jaV9pMmNfd3JpdGUodm9pZCAqcGh5X2lkLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxuZHJpdmVycy9uZmMvc3QtbmNpL2kyYy5jLTExNi0gKi9cXG5kcml2ZXJzL25mYy9zdC1uY2kvaTJjLmM6MTE3OnN0YXRpYyBpbnQgc3RfbmNpX2kyY19yZWFkKHN0cnVjdCBzdF9uY2lfaTJjX3BoeSAqcGh5LFxcbmRyaXZlcnMvbmZjL3N0LW5jaS9pMmMuYy0xMTgtXFx0XFx0XFx0XFx0IHN0cnVjdCBza19idWZmICoqc2tiKVxcbi0tXFxuZHJpdmVycy9uZmMvc3QtbmNpL2kyYy5jPTIwND1zdGF0aWMgaXJxcmV0dXJuX3Qgc3RfbmNpX2lycV90aHJlYWRfZm4oaW50IGlycSwgdm9pZCAqcGh5X2lkKVxcbi0tXFxuZHJpdmVycy9uZmMvc3QtbmNpL2kyYy5jLTIyMi1cXG5kcml2ZXJzL25mYy9zdC1uY2kvaTJjLmM6MjIzOlxcdHIgPSBzdF9uY2lfaTJjX3JlYWQocGh5LCBcXHUwMDI2c2tiKTtcXG5kcml2ZXJzL25mYy9zdC1uY2kvaTJjLmMtMjI0LVxcdGlmIChyID09IC1FUkVNT1RFSU8gfHwgciA9PSAtRU5PTUVNIHx8IHIgPT0gLUVCQURNU0cpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIwVDIxOjAyOjQzLjkyNjAyNTQ4MloiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MzAxNjM5NDgwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYW5hbHlzaXMgb2YgdGhpcyBjb2RlIHNuaXBwZXQ6XG5cbioqRm9jdXNpbmcgb24gSW50ZXJydXB0IEhhbmRsaW5nIGluIHRoZSBTVCBOQ0kgRHJpdmVyKipcblxuT2theSwgc28gSSBzZWUgdGhhdCBgc3RfbmNpX2kyY19yZWFkYCBpcyBhIHN0YXRpYyBmdW5jdGlvbiwgd2hpY2ggbWVhbnMgaXQncyBsaWtlbHkgYW4gaW50ZXJuYWwgaGVscGVyIGZ1bmN0aW9uIHdpdGhpbiB0aGUgTkNJIGRyaXZlci4gVGhlIGNyaXRpY2FsIHBpZWNlIGhlcmUgaXMgdGhhdCBpdCdzIGNhbGxlZCBieSBgc3RfbmNpX2lycV90aHJlYWRfZm5gLiBUaGF0IGZ1bmN0aW9uIGlzIGNsZWFybHkgdGhlIGludGVycnVwdCBoYW5kbGVyLCB0cmlnZ2VyZWQgd2hlbiBzb21ldGhpbmcgaGFwcGVucyBvbiB0aGUgSTJDIGJ1cyByZWxhdGVkIHRvIHRoZSBORkMgY29udHJvbGxlci4gR2l2ZW4gbXkgZXhwZXJ0aXNlLCBteSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIHByaW9yaXRpemUgdW5kZXJzdGFuZGluZyB0aGUgaW50ZXJydXB0IGhhbmRsaW5nIG1lY2hhbmlzbSwgd2hpY2ggcG9pbnRzIGRpcmVjdGx5IHRvIGBzdF9uY2lfaXJxX3RocmVhZF9mbmAuIFRoaXMgaXMgd2hlcmUgdGhlIHJlYWwtdGltZSBpbnRlcmFjdGlvbiB3aXRoIHRoZSBORkMgY2hpcCBoYXBwZW5zLCBzbyB0aGF0J3Mgd2hlcmUgSSBuZWVkIHRvIGZvY3VzLiBJJ20gZ29pbmcgdG8gc3RhcnQgdGhlcmUuXG5cbkJ1dCwgSSBhbHNvIHNob3VsZG4ndCBjb21wbGV0ZWx5IGlnbm9yZSBgc3RfbmNpX2luaXRgLCBhcyBpdCdzIHRoZSBkcml2ZXIncyBpbml0aWFsaXphdGlvbiBmdW5jdGlvbi4gV2hpbGUgdGhlIGltbWVkaWF0ZSBjb25jZXJuIGlzIHRoZSBpbnRlcnJ1cHQgcHJvY2Vzc2luZywgaW5pdGlhbGl6YXRpb24gbGlrZWx5IHNldHMgdXAgdGhlIGhhcmR3YXJlIGFuZCBwcmVwYXJlcyBldmVyeXRoaW5nIGZvciB0aGUgaW50ZXJydXB0IGhhbmRsZXIgdG8gZnVuY3Rpb24gY29ycmVjdGx5LiBJJ2xsIG5lZWQgdG8ga2VlcCBpdCBpbiB0aGUgYmFjayBvZiBteSBtaW5kLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDU2NiwiT3V0cHV0VG9rZW5zIjoyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIwVDIxOjAyOjQ4LjIyNzY2Nzg3MVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQxODYzNDM3NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdF9uY2lfaW5pdFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25mYy9zdC1uY2kvY29yZS5jLTE4LVxcbmRyaXZlcnMvbmZjL3N0LW5jaS9jb3JlLmM6MTk6c3RhdGljIGludCBzdF9uY2lfaW5pdChzdHJ1Y3QgbmNpX2RldiAqbmRldilcXG5kcml2ZXJzL25mYy9zdC1uY2kvY29yZS5jLTIwLXtcXG4tLVxcbmRyaXZlcnMvbmZjL3N0LW5jaS9jb3JlLmM9MTAwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmNpX29wcyBzdF9uY2lfb3BzID0ge1xcbmRyaXZlcnMvbmZjL3N0LW5jaS9jb3JlLmM6MTAxOlxcdC5pbml0ID0gc3RfbmNpX2luaXQsXFxuZHJpdmVycy9uZmMvc3QtbmNpL2NvcmUuYy0xMDItXFx0Lm9wZW4gPSBzdF9uY2lfb3BlbixcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjBUMjE6MDI6NTAuNjQ2MzA3NTg3WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ3MTc2ODA0ODEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCBtZSB0aGluayB0aGlzIHRocm91Z2guXG5cbioqQW5hbHl6aW5nIEFQSSBFbnRyeXBvaW50cyBhbmQgU3RhdGljIEZ1bmN0aW9ucyoqXG5cblJpZ2h0LCBzbyBgc3RfbmNpX2luaXRgIGlzIGRlY2xhcmVkIGFzIGBzdGF0aWNgLCB3aGljaCBpbml0aWFsbHkgbWFrZXMgbWUgcXVlc3Rpb24gaXRzIHZpc2liaWxpdHkgYXMgYW4gQVBJIGVudHJ5cG9pbnQuIEJ1dCBob2xkIG9uLCBpdCdzIGJlaW5nIGFzc2lnbmVkIHRvIGEgZnVuY3Rpb24gcG9pbnRlciwgc3BlY2lmaWNhbGx5IGAuaW5pdCA9IHN0X25jaV9pbml0YC4gVGhhdCBhc3NpZ25tZW50IGlzIGNydWNpYWw7IGV2ZW4gdGhvdWdoIGl0J3Mgc3RhdGljLCBpdCBzaG91bGRuJ3QgYmUgaW5saW5lZCBiZWNhdXNlIGl0J3MgYmVpbmcgdHJlYXRlZCBhcyBhIGZ1bmN0aW9uIHBvaW50ZXIuIFRoZSBjb21waWxlciAqc2hvdWxkbid0KiBvcHRpbWl6ZSBpdCBhd2F5LiBUaGUgZnVuY3Rpb24gcG9pbnRlciBpcyB0aGUgbGluaywgdGhlIGtleSB0byBpdHMgZXhpc3RlbmNlLiBJdCdzIHVzZWQuIEl0ICpzaG91bGQqIGhhdmUgYSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzcy4gT2theSwgdGhhdCdzIHNldHRsZWQuIFRoZSBzdGF0aWMgZGVjbGFyYXRpb24gc3RpbGwgZmVlbHMgYSBiaXQgb2RkLCB0aG91Z2guXG5cbk5vdywgbGV0J3Mgc3dpdGNoIGdlYXJzIGFuZCBjb25zaWRlciBgbmRsY19jbG9zZWAuIExldCBtZSB0aGluayBhIGJpdCBhYm91dCB0aGF0IG9uZS4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTA5OSwiT3V0cHV0VG9rZW5zIjoxOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjk1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIwVDIxOjAyOjU1LjM2Mzk5MDUyOFoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjkxNTk4OTkyNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuZGxjX2Nsb3NlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmZjL3N0LW5jaS9jb3JlLmM9NTA9c3RhdGljIGludCBzdF9uY2lfY2xvc2Uoc3RydWN0IG5jaV9kZXYgKm5kZXYpXFxuLS1cXG5kcml2ZXJzL25mYy9zdC1uY2kvY29yZS5jLTU2LVxcbmRyaXZlcnMvbmZjL3N0LW5jaS9jb3JlLmM6NTc6XFx0bmRsY19jbG9zZShpbmZvLVxcdTAwM2VuZGxjKTtcXG5kcml2ZXJzL25mYy9zdC1uY2kvY29yZS5jLTU4LVxcbi0tXFxuZHJpdmVycy9uZmMvc3QtbmNpL2NvcmUuYz0xNjg9dm9pZCBzdF9uY2lfcmVtb3ZlKHN0cnVjdCBuY2lfZGV2ICpuZGV2KVxcbi0tXFxuZHJpdmVycy9uZmMvc3QtbmNpL2NvcmUuYy0xNzEtXFxuZHJpdmVycy9uZmMvc3QtbmNpL2NvcmUuYzoxNzI6XFx0bmRsY19jbG9zZShpbmZvLVxcdTAwM2VuZGxjKTtcXG5kcml2ZXJzL25mYy9zdC1uY2kvY29yZS5jLTE3My1cXG4tLVxcbmRyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmM9NTM9RVhQT1JUX1NZTUJPTChuZGxjX29wZW4pO1xcbmRyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmMtNTQtXFxuZHJpdmVycy9uZmMvc3QtbmNpL25kbGMuYzo1NTp2b2lkIG5kbGNfY2xvc2Uoc3RydWN0IGxsdF9uZGxjICpuZGxjKVxcbmRyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmMtNTYte1xcbi0tXFxuZHJpdmVycy9uZmMvc3QtbmNpL25kbGMuYy03MS19XFxuZHJpdmVycy9uZmMvc3QtbmNpL25kbGMuYzo3MjpFWFBPUlRfU1lNQk9MKG5kbGNfY2xvc2UpO1xcbmRyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmMtNzMtXFxuLS1cXG5kcml2ZXJzL25mYy9zdC1uY2kvbmRsYy5jPTIwNz1zdGF0aWMgdm9pZCBsbHRfbmRsY19zbV93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbmRyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmMtMjI4LVxcdFxcdHRpbWVyX2RlbGV0ZV9zeW5jKFxcdTAwMjZuZGxjLVxcdTAwM2V0Ml90aW1lcik7XFxuZHJpdmVycy9uZmMvc3QtbmNpL25kbGMuYzoyMjk6XFx0XFx0bmRsY19jbG9zZShuZGxjKTtcXG5kcml2ZXJzL25mYy9zdC1uY2kvbmRsYy5jLTIzMC1cXHRcXHRuZGxjLVxcdTAwM2VoYXJkX2ZhdWx0ID0gLUVSRU1PVEVJTztcXG4tLVxcbmRyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmM9MjM0PXZvaWQgbmRsY19yZWN2KHN0cnVjdCBsbHRfbmRsYyAqbmRsYywgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbmRyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmMtMjM4LVxcdFxcdG5kbGMtXFx1MDAzZWhhcmRfZmF1bHQgPSAtRVJFTU9URUlPO1xcbmRyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmM6MjM5OlxcdFxcdG5kbGNfY2xvc2UobmRsYyk7XFxuZHJpdmVycy9uZmMvc3QtbmNpL25kbGMuYy0yNDAtXFx0fSBlbHNlIHtcXG4tLVxcbmRyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmg9NDY9aW50IG5kbGNfb3BlbihzdHJ1Y3QgbGx0X25kbGMgKm5kbGMpO1xcbmRyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmg6NDc6dm9pZCBuZGxjX2Nsb3NlKHN0cnVjdCBsbHRfbmRsYyAqbmRsYyk7XFxuZHJpdmVycy9uZmMvc3QtbmNpL25kbGMuaC00OC1pbnQgbmRsY19zZW5kKHN0cnVjdCBsbHRfbmRsYyAqbmRsYywgc3RydWN0IHNrX2J1ZmYgKnNrYik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIwVDIxOjAyOjU4LjI3OTk4NTQ0MloiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MjMwNzg4ODAzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgSSBzZWUgaXQ6XG5cbioqQ29uc2lkZXJpbmcgdGhlIEV4cG9ydGVkIEZ1bmN0aW9ucyoqXG5cbk9rYXksIHNvIGBuZGxjX2Nsb3NlYCBpcyBkZWZpbml0ZWx5IGJlaW5nIGV4cG9ydGVkLCB0aGF0J3MgY2xlYXIuIEJ1dCBub3cgSSdtIHRoaW5raW5nLi4uIHdoYXQgYWJvdXQgYG5kbGNfc2VuZGA/IFdlIGhhdmUgb25lIGZ1bmN0aW9uIGNsb3NpbmcgdGhpbmdzIGRvd24sIHdoaWNoIGlzIGltcG9ydGFudCwgYnV0IHdoYXQncyB0aGUgc3RhdHVzIG9mIHRoZSBzZW5kaW5nIGZ1bmN0aW9uYWxpdHk/IElzICp0aGF0KiBhbHNvIGJlaW5nIGV4cG9ydGVkPyBJdCBmZWVscyBsaWtlIHRoYXQncyBhIGtleSBxdWVzdGlvbiB0aGF0IG5lZWRzIGltbWVkaWF0ZSBhZGRyZXNzaW5nLiBXZSBjYW4ndCBoYXZlIG9uZSB3aXRob3V0IHRoZSBvdGhlciwgYXNzdW1pbmcgdGhleSBhcmUgcmVsYXRlZC4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGNvbXBsZXRlIHBpY3R1cmUgb2Ygd2hhdCdzIHB1YmxpY2x5IGFjY2Vzc2libGUuIFRoaXMgbWlnaHQgaW5mbHVlbmNlIGFyY2hpdGVjdHVyZSBjaGFuZ2VzLCBmdXR1cmUgQVBJIGRlc2lnbiwgb3IgZXZlbiBzZWN1cml0eSBjb25zaWRlcmF0aW9ucy4gSSBuZWVkIHRvIGNoZWNrIHRoZSBleHBvcnQgZGVjbGFyYXRpb25zIGZvciBgbmRsY19zZW5kYCBBU0FQLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjE4NSwiT3V0cHV0VG9rZW5zIjoxOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIwVDIxOjAzOjAyLjUxMDc3Nzc2NVoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjI2NzI3MzE2MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuZGxjX3NlbmRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZmMvc3QtbmNpL2NvcmUuYz02ND1zdGF0aWMgaW50IHN0X25jaV9zZW5kKHN0cnVjdCBuY2lfZGV2ICpuZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxuZHJpdmVycy9uZmMvc3QtbmNpL2NvcmUuYy03Mi1cXG5kcml2ZXJzL25mYy9zdC1uY2kvY29yZS5jOjczOlxcdHJldHVybiBuZGxjX3NlbmQoaW5mby1cXHUwMDNlbmRsYywgc2tiKTtcXG5kcml2ZXJzL25mYy9zdC1uY2kvY29yZS5jLTc0LX1cXG4tLVxcbmRyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmM9NzI9RVhQT1JUX1NZTUJPTChuZGxjX2Nsb3NlKTtcXG5kcml2ZXJzL25mYy9zdC1uY2kvbmRsYy5jLTczLVxcbmRyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmM6NzQ6aW50IG5kbGNfc2VuZChzdHJ1Y3QgbGx0X25kbGMgKm5kbGMsIHN0cnVjdCBza19idWZmICpza2IpXFxuZHJpdmVycy9uZmMvc3QtbmNpL25kbGMuYy03NS17XFxuLS1cXG5kcml2ZXJzL25mYy9zdC1uY2kvbmRsYy5jLTg4LX1cXG5kcml2ZXJzL25mYy9zdC1uY2kvbmRsYy5jOjg5OkVYUE9SVF9TWU1CT0wobmRsY19zZW5kKTtcXG5kcml2ZXJzL25mYy9zdC1uY2kvbmRsYy5jLTkwLVxcbmRyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmM6OTE6c3RhdGljIHZvaWQgbGx0X25kbGNfc2VuZF9xdWV1ZShzdHJ1Y3QgbGx0X25kbGMgKm5kbGMpXFxuZHJpdmVycy9uZmMvc3QtbmNpL25kbGMuYy05Mi17XFxuLS1cXG5kcml2ZXJzL25mYy9zdC1uY2kvbmRsYy5jPTE1ND1zdGF0aWMgdm9pZCBsbHRfbmRsY19yY3ZfcXVldWUoc3RydWN0IGxsdF9uZGxjICpuZGxjKVxcbi0tXFxuZHJpdmVycy9uZmMvc3QtbmNpL25kbGMuYy0xODEtXFx0XFx0XFx0XFx0bGx0X25kbGNfcmVxdWV1ZV9kYXRhX3BlbmRpbmcobmRsYyk7XFxuZHJpdmVycy9uZmMvc3QtbmNpL25kbGMuYzoxODI6XFx0XFx0XFx0XFx0bGx0X25kbGNfc2VuZF9xdWV1ZShuZGxjKTtcXG5kcml2ZXJzL25mYy9zdC1uY2kvbmRsYy5jLTE4My1cXHRcXHRcXHRcXHQvKiBzdGFydCB0aW1lciB0MSBmb3IgbmRsYyBha25vd2xlZGdlICovXFxuLS1cXG5kcml2ZXJzL25mYy9zdC1uY2kvbmRsYy5jPTIwNz1zdGF0aWMgdm9pZCBsbHRfbmRsY19zbV93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbmRyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmMtMjEwLVxcbmRyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmM6MjExOlxcdGxsdF9uZGxjX3NlbmRfcXVldWUobmRsYyk7XFxuZHJpdmVycy9uZmMvc3QtbmNpL25kbGMuYy0yMTItXFx0bGx0X25kbGNfcmN2X3F1ZXVlKG5kbGMpO1xcbi0tXFxuZHJpdmVycy9uZmMvc3QtbmNpL25kbGMuYy0yMTktXFx0XFx0bGx0X25kbGNfcmVxdWV1ZV9kYXRhX3BlbmRpbmcobmRsYyk7XFxuZHJpdmVycy9uZmMvc3QtbmNpL25kbGMuYzoyMjA6XFx0XFx0bGx0X25kbGNfc2VuZF9xdWV1ZShuZGxjKTtcXG5kcml2ZXJzL25mYy9zdC1uY2kvbmRsYy5jLTIyMS1cXHR9XFxuLS1cXG5kcml2ZXJzL25mYy9zdC1uY2kvbmRsYy5oPTQ3PXZvaWQgbmRsY19jbG9zZShzdHJ1Y3QgbGx0X25kbGMgKm5kbGMpO1xcbmRyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmg6NDg6aW50IG5kbGNfc2VuZChzdHJ1Y3QgbGx0X25kbGMgKm5kbGMsIHN0cnVjdCBza19idWZmICpza2IpO1xcbmRyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmgtNDktdm9pZCBuZGxjX3JlY3Yoc3RydWN0IGxsdF9uZGxjICpuZGxjLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjBUMjE6MDM6MDQuNzc4MDU1MDA2WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyOTcwNTIzNTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqTmF2aWdhdGluZyB0aGUgYG5kbGNgIExhbmRzY2FwZSoqXG5cblJpZ2h0LCBzbyBgbmRsY19zZW5kYCBpcyBkZWZpbml0ZWx5IGV4cG9ydGVkIGFuZCBmcm9udC1mYWNpbmcuIFRoYXQncyBnb29kLCB0aGF0J3MgZXhwZWN0ZWQuIEJ1dCBub3cgSSdtIHRoaW5raW5nLCB3aGF0J3MgdGhlIGRlYWwgd2l0aCBgc3RfbmNpX2Rpc2NvdmVyX3NlYD8gSSBuZWVkIHRvIHF1aWNrbHkgcmVjYWxsIHdoZXJlIHRoYXQgZml0cyBpbnRvIHRoZSBwaWN0dXJlLiBJcyBpdCBhbm90aGVyIHB1YmxpYyBpbnRlcmZhY2UsIG9yIGlzIGl0IGFuIGludGVybmFsIGZ1bmN0aW9uIHRoYXQncyBiZWluZyBjYWxsZWQgYnkgYG5kbGNfc2VuZGAgYXMgYSBwYXJ0IG9mIHRoZSBzZXJ2aWNlIGVuYWJsZW1lbnQgZmxvdz8gV2hlcmUgZG9lcyBpdCByZXNpZGUgYW5kIHdoYXQgaW1wYWN0IGRvZXMgaXQgaGF2ZSBvbiB0aGUgc2VjdXJlIGVsZW1lbnQgZGlzY292ZXJ5IHByb2Nlc3M/IElzIGl0IGp1c3QgcGFydCBvZiB0aGUgc2VxdWVuY2UsIG9yIGlzIHRoZXJlIG1vcmUgY29tcGxleGl0eSBpbnZvbHZlZD8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJlbGF0aW9uc2hpcCB0byB0aGUgb3RoZXIgZnVuY3Rpb24uIEkgc3VzcGVjdCB0aGlzIGlzIHNvbWV0aGluZyBJJ2xsIG5lZWQgdG8gZGlnIGludG8gZnVydGhlci5cblxuXG4iLCJJbnB1dFRva2VucyI6MTcyNTMsIk91dHB1dFRva2VucyI6MjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMFQyMTowMzowOS4wNzUxMDkzOTZaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzMTUzNzM5NjUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic3RfbmNpX2Rpc2NvdmVyX3NlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmZjL3N0LW5jaS9jb3JlLmM9MTAwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmNpX29wcyBzdF9uY2lfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZmMvc3QtbmNpL2NvcmUuYy0xMDUtXFx0LmdldF9yZnByb3RvY29sID0gc3RfbmNpX2dldF9yZnByb3RvY29sLFxcbmRyaXZlcnMvbmZjL3N0LW5jaS9jb3JlLmM6MTA2OlxcdC5kaXNjb3Zlcl9zZSA9IHN0X25jaV9kaXNjb3Zlcl9zZSxcXG5kcml2ZXJzL25mYy9zdC1uY2kvY29yZS5jLTEwNy1cXHQuZW5hYmxlX3NlID0gc3RfbmNpX2VuYWJsZV9zZSxcXG4tLVxcbmRyaXZlcnMvbmZjL3N0LW5jaS9zZS5jPTU0NT1zdGF0aWMgaW50IHN0X25jaV9oY2lfbmV0d29ya19pbml0KHN0cnVjdCBuY2lfZGV2ICpuZGV2KVxcbi0tXFxuZHJpdmVycy9uZmMvc3QtbmNpL3NlLmMtNjE2LVxcbmRyaXZlcnMvbmZjL3N0LW5jaS9zZS5jOjYxNzppbnQgc3RfbmNpX2Rpc2NvdmVyX3NlKHN0cnVjdCBuY2lfZGV2ICpuZGV2KVxcbmRyaXZlcnMvbmZjL3N0LW5jaS9zZS5jLTYxOC17XFxuLS1cXG5kcml2ZXJzL25mYy9zdC1uY2kvc2UuYy02NTgtfVxcbmRyaXZlcnMvbmZjL3N0LW5jaS9zZS5jOjY1OTpFWFBPUlRfU1lNQk9MX0dQTChzdF9uY2lfZGlzY292ZXJfc2UpO1xcbmRyaXZlcnMvbmZjL3N0LW5jaS9zZS5jLTY2MC1cXG4tLVxcbmRyaXZlcnMvbmZjL3N0LW5jaS9zdC1uY2kuaD0xMjY9dm9pZCBzdF9uY2lfc2VfZGVpbml0KHN0cnVjdCBuY2lfZGV2ICpuZGV2KTtcXG5kcml2ZXJzL25mYy9zdC1uY2kvc3QtbmNpLmgtMTI3LVxcbmRyaXZlcnMvbmZjL3N0LW5jaS9zdC1uY2kuaDoxMjg6aW50IHN0X25jaV9kaXNjb3Zlcl9zZShzdHJ1Y3QgbmNpX2RldiAqbmRldik7XFxuZHJpdmVycy9uZmMvc3QtbmNpL3N0LW5jaS5oLTEyOS1pbnQgc3RfbmNpX2VuYWJsZV9zZShzdHJ1Y3QgbmNpX2RldiAqbmRldiwgdTMyIHNlX2lkeCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIwVDIxOjAzOjExLjM5MDQ4ODQ3MVoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2OTg3NjAwNzQyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEluaXRpYWwgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBgc3RfbmNpX2Rpc2NvdmVyX3NlYCBpcyBleHBsaWNpdGx5IGV4cG9ydGVkIOKAkyB0aGF0J3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50IGZvciB1bmRlcnN0YW5kaW5nIHRoZSBjaGFuZ2VzLiBNeSBmb2N1cywgdGhlbiwgbmVlZHMgdG8gYmUgb24gYG5kbGNfc2VuZGAsIGBuZGxjX2Nsb3NlYCwgYW5kLCBvZiBjb3Vyc2UsIGBzdF9uY2lfZGlzY292ZXJfc2VgLiBIb3dldmVyLCBJIHNlZSB0aGF0IHRoZSBwYXRjaCBhbHNvIHRvdWNoZXMgYHN0X25jaV9pMmNfcHJvYmVgLCB3aGljaCBpcywgaWYgSSByZWNhbGwgY29ycmVjdGx5LCB0aGUgcHJvYmUgZnVuY3Rpb24uIExldCBtZSBxdWlja2x5IGRvdWJsZS1jaGVjayB0aGF0OyBJJ2xsIGxvb2sgYXQgYGRyaXZlcnMvbmZjL3N0LW5jaS9pMmMuY2AgdG8gY29uZmlybS4gWWVwLCBpdCdzIHN0YXRpYywgc28gaXQncyB0aGUgcHJvYmUuIEknbGwgYWxzbyBnbGFuY2UgYXQgYHN0X25jaV9pMmNfcmVhZGAg4oCTIGFsc28gc3RhdGljIOKAkyBhbmQgYHN0X25jaV9pcnFfdGhyZWFkX2ZuYCwgd2hpY2ggaXMgKmFsc28qIHN0YXRpYy5cblxuVGhlIHByb2JlIGZ1bmN0aW9uLCB0aG91Z2guLi4gdHlwaWNhbGx5LCBJIHdvdWxkbid0IHNwZW5kIGEgbG90IG9mIHRpbWUgb24gYSBwcm9iZSBmdW5jdGlvbiB1bmxlc3MgaXQncyB0aGUgKm9ubHkqIGVudHJ5IHBvaW50IGludG8gYSBwYXJ0aWN1bGFyIGNvZGUgcGF0aC4gSSB0aGluayBJIHdpbGwgc3RpY2sgdG8gbXkgb3JpZ2luYWwgcGxhbiBhbmQgZm9jdXMgb24gYG5kbGNfc2VuZGAsIGBuZGxjX2Nsb3NlYCwgYW5kIGBzdF9uY2lfZGlzY292ZXJfc2VgLiBIb3dldmVyLCBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgZG9uJ3QgbWlzcyBzb21ldGhpbmcuXG5cbldhaXQgYSBtaW51dGUsIGBuZGxjX3JlY3ZgIGlzIG1vZGlmaWVkPyBObywgaXQgbG9va3MgbGlrZSBgbGx0X25kbGNfcmN2X3F1ZXVlYCBpcywgYW5kIHRoYXQncyBjYWxsZWQgZnJvbSBgbGx0X25kbGNfc21fd29ya2AsIHdoaWNoIGlzIGEgd29ya3F1ZXVlIGZ1bmN0aW9uLiBHb29kLCBJJ2xsIG5lZWQgdG8gY2hlY2sgaWYgYG5kbGNfcmVjdmAgaXMgZXhwb3J0ZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE3OTkwLCJPdXRwdXRUb2tlbnMiOjE4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjkzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIwVDIxOjAzOjE4LjM3ODA5MTc3M1oiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjM1MTg3ODM1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuZGxjX3JlY3ZcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZmMvc3QtbmNpL2kyYy5jPTIwND1zdGF0aWMgaXJxcmV0dXJuX3Qgc3RfbmNpX2lycV90aHJlYWRfZm4oaW50IGlycSwgdm9pZCAqcGh5X2lkKVxcbi0tXFxuZHJpdmVycy9uZmMvc3QtbmNpL2kyYy5jLTIyNi1cXG5kcml2ZXJzL25mYy9zdC1uY2kvaTJjLmM6MjI3OlxcdG5kbGNfcmVjdihwaHktXFx1MDAzZW5kbGMsIHNrYik7XFxuZHJpdmVycy9uZmMvc3QtbmNpL2kyYy5jLTIyOC1cXG4tLVxcbmRyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmM9MjA3PXN0YXRpYyB2b2lkIGxsdF9uZGxjX3NtX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxuZHJpdmVycy9uZmMvc3QtbmNpL25kbGMuYy0yMzMtXFxuZHJpdmVycy9uZmMvc3QtbmNpL25kbGMuYzoyMzQ6dm9pZCBuZGxjX3JlY3Yoc3RydWN0IGxsdF9uZGxjICpuZGxjLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbmRyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmMtMjM1LXtcXG4tLVxcbmRyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmMtMjQ2LX1cXG5kcml2ZXJzL25mYy9zdC1uY2kvbmRsYy5jOjI0NzpFWFBPUlRfU1lNQk9MKG5kbGNfcmVjdik7XFxuZHJpdmVycy9uZmMvc3QtbmNpL25kbGMuYy0yNDgtXFxuLS1cXG5kcml2ZXJzL25mYy9zdC1uY2kvbmRsYy5oPTQ4PWludCBuZGxjX3NlbmQoc3RydWN0IGxsdF9uZGxjICpuZGxjLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTtcXG5kcml2ZXJzL25mYy9zdC1uY2kvbmRsYy5oOjQ5OnZvaWQgbmRsY19yZWN2KHN0cnVjdCBsbHRfbmRsYyAqbmRsYywgc3RydWN0IHNrX2J1ZmYgKnNrYik7XFxuZHJpdmVycy9uZmMvc3QtbmNpL25kbGMuaC01MC1pbnQgbmRsY19wcm9iZSh2b2lkICpwaHlfaWQsIGNvbnN0IHN0cnVjdCBuZmNfcGh5X29wcyAqcGh5X29wcyxcXG4tLVxcbmRyaXZlcnMvbmZjL3N0LW5jaS9zcGkuYz03ND1zdGF0aWMgaW50IHN0X25jaV9zcGlfd3JpdGUodm9pZCAqcGh5X2lkLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxuZHJpdmVycy9uZmMvc3QtbmNpL3NwaS5jLTEwMi1cXHRcXHRtZW1jcHkoc2tiX3J4LVxcdTAwM2VkYXRhLCBidWYsIHNrYi1cXHUwMDNlbGVuKTtcXG5kcml2ZXJzL25mYy9zdC1uY2kvc3BpLmM6MTAzOlxcdFxcdG5kbGNfcmVjdihwaHktXFx1MDAzZW5kbGMsIHNrYl9yeCk7XFxuZHJpdmVycy9uZmMvc3QtbmNpL3NwaS5jLTEwNC1cXHR9XFxuLS1cXG5kcml2ZXJzL25mYy9zdC1uY2kvc3BpLmM9MTY5PXN0YXRpYyBpcnFyZXR1cm5fdCBzdF9uY2lfaXJxX3RocmVhZF9mbihpbnQgaXJxLCB2b2lkICpwaHlfaWQpXFxuLS1cXG5kcml2ZXJzL25mYy9zdC1uY2kvc3BpLmMtMTkxLVxcbmRyaXZlcnMvbmZjL3N0LW5jaS9zcGkuYzoxOTI6XFx0bmRsY19yZWN2KHBoeS1cXHUwMDNlbmRsYywgc2tiKTtcXG5kcml2ZXJzL25mYy9zdC1uY2kvc3BpLmMtMTkzLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMFQyMTowMzoyMC43Mjk5NzU4MDNaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDgzOTI1ODA0MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbml0aWFsIEFzc2Vzc21lbnQgb2YgTkRMIENvcmUgRnVuY3Rpb25zKipcblxuT2theSwgc28gSSd2ZSBjb25maXJtZWQgdGhhdCBgbmRsY19yZWN2YCBpcyBpbmRlZWQgZXhwb3J0ZWQuIFRoYXQncyBnb29kLCB0aGF0IG5hcnJvd3MgZG93biB0aGUgc2NvcGUgb2Ygd2hhdCBJIG5lZWQgdG8gaW52ZXN0aWdhdGUuIEdpdmVuIHRoYXQsIGFsb25nIHdpdGggYG5kbGNfcmVjdmAsIEkgc2hvdWxkIGJlIGZvY3VzaW5nIG15IGF0dGVudGlvbiBvbiBgbmRsY19zZW5kYCwgYG5kbGNfY2xvc2VgLCBhbmQgYHN0X25jaV9kaXNjb3Zlcl9zZWAuXG5cbkhvbGQgb24uLi4gdGhlIHBhdGNoIGFsc28gdG91Y2hlcyBgc3RfbmNpX2luaXRgLiBXYWl0LCBpcyAqdGhhdCogZXhwb3J0ZWQ/IE5vLCBpdCBsb29rcyBsaWtlIGl0J3Mgc3RhdGljLiBCdXQsIGV2ZW4gdGhvdWdoIGl0J3Mgc3RhdGljLCBpdCBpcyBhbiBBUEkgZW50cnlwb2ludC4gVGhhdCBtYWtlcyB0aGluZ3MgaW50ZXJlc3RpbmcuIEkgc2hvdWxkIGtlZXAgaXQgaW4gbWluZC5cblxuQmVmb3JlIEkgZ28gYW55IGZ1cnRoZXIsIGxldCdzIGp1c3QgZG8gYSBxdWljayBzY2FuIHRvIG1ha2Ugc3VyZSBJIGhhdmVuJ3QgbWlzc2VkIGFueXRoaW5nIG9idmlvdXMuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBkb24ndCBtaXNzIGFueSBvdGhlciBleHBvcnRlZCBmdW5jdGlvbnMuIE9rYXksIGhlcmUgd2UgZ28uLi4gQWgsIGBuZGxjX3Byb2JlYCBpcyBhbHNvIGV4cG9ydGVkLiBBbHJpZ2h0LCB0aGF0J3MgYW5vdGhlciBvbmUgdG8gY29uc2lkZXIuIE5vdywgbGV0J3Mgc3RhcnQgYnkgZGlnZ2luZyBpbnRvIGBuZGxjX3Byb2JlYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTkzOTIsIk91dHB1dFRva2VucyI6MTgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjBUMjE6MDM6MjUuNTY5MjM2ODg1WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTQzODA0OTUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5kbGNfcHJvYmVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZmMvc3QtbmNpL2kyYy5jPTI0NT1zdGF0aWMgaW50IHN0X25jaV9pMmNfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcXG4tLVxcbmRyaXZlcnMvbmZjL3N0LW5jaS9pMmMuYy0yODktXFxuZHJpdmVycy9uZmMvc3QtbmNpL2kyYy5jOjI5MDpcXHRyID0gbmRsY19wcm9iZShwaHksIFxcdTAwMjZpMmNfcGh5X29wcywgXFx1MDAyNmNsaWVudC1cXHUwMDNlZGV2LFxcbmRyaXZlcnMvbmZjL3N0LW5jaS9pMmMuYy0yOTEtXFx0XFx0XFx0cGh5LVxcdTAwM2VyYXdfbmNpID8gU1RfTkNJX1JBV19GUkFNRV9IRUFEUk9PTSA6XFxuLS1cXG5kcml2ZXJzL25mYy9zdC1uY2kvbmRsYy5jPTI1Nj1zdGF0aWMgdm9pZCBuZGxjX3QyX3RpbWVvdXQoc3RydWN0IHRpbWVyX2xpc3QgKnQpXFxuLS1cXG5kcml2ZXJzL25mYy9zdC1uY2kvbmRsYy5jLTI2Mi1cXG5kcml2ZXJzL25mYy9zdC1uY2kvbmRsYy5jOjI2MzppbnQgbmRsY19wcm9iZSh2b2lkICpwaHlfaWQsIGNvbnN0IHN0cnVjdCBuZmNfcGh5X29wcyAqcGh5X29wcyxcXG5kcml2ZXJzL25mYy9zdC1uY2kvbmRsYy5jLTI2NC1cXHQgICAgICAgc3RydWN0IGRldmljZSAqZGV2LCBpbnQgcGh5X2hlYWRyb29tLCBpbnQgcGh5X3RhaWxyb29tLFxcbi0tXFxuZHJpdmVycy9uZmMvc3QtbmNpL25kbGMuYy0yOTEtfVxcbmRyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmM6MjkyOkVYUE9SVF9TWU1CT0wobmRsY19wcm9iZSk7XFxuZHJpdmVycy9uZmMvc3QtbmNpL25kbGMuYy0yOTMtXFxuLS1cXG5kcml2ZXJzL25mYy9zdC1uY2kvbmRsYy5oPTQ5PXZvaWQgbmRsY19yZWN2KHN0cnVjdCBsbHRfbmRsYyAqbmRsYywgc3RydWN0IHNrX2J1ZmYgKnNrYik7XFxuZHJpdmVycy9uZmMvc3QtbmNpL25kbGMuaDo1MDppbnQgbmRsY19wcm9iZSh2b2lkICpwaHlfaWQsIGNvbnN0IHN0cnVjdCBuZmNfcGh5X29wcyAqcGh5X29wcyxcXG5kcml2ZXJzL25mYy9zdC1uY2kvbmRsYy5oLTUxLVxcdCAgICAgICBzdHJ1Y3QgZGV2aWNlICpkZXYsIGludCBwaHlfaGVhZHJvb20sIGludCBwaHlfdGFpbHJvb20sXFxuLS1cXG5kcml2ZXJzL25mYy9zdC1uY2kvc3BpLmM9MjEwPXN0YXRpYyBpbnQgc3RfbmNpX3NwaV9wcm9iZShzdHJ1Y3Qgc3BpX2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZmMvc3QtbmNpL3NwaS5jLTI0Ni1cXG5kcml2ZXJzL25mYy9zdC1uY2kvc3BpLmM6MjQ3OlxcdHIgPSBuZGxjX3Byb2JlKHBoeSwgXFx1MDAyNnNwaV9waHlfb3BzLCBcXHUwMDI2ZGV2LVxcdTAwM2VkZXYsXFxuZHJpdmVycy9uZmMvc3QtbmNpL3NwaS5jLTI0OC1cXHRcXHRcXHRTVF9OQ0lfRlJBTUVfSEVBRFJPT00sIFNUX05DSV9GUkFNRV9UQUlMUk9PTSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjBUMjE6MDM6MjcuNTEzMDcyOTI1WiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY0Nzc4MTg2NTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIENvZGUncyBGdXp6aW5nIFBvdGVudGlhbCoqXG5cbk9rYXksIGZpcnN0IHRoaW5ncyBmaXJzdDogYG5kbGNfcHJvYmVgIGlzIGRlZmluaXRlbHkgZXhwb3J0ZWQsIHdoaWNoIGlzIGdvb2QgbmV3cy4gVGhhdCBtZWFucyBJIGNhbiBzdGFydCBteSBmdXp6aW5nIGZvY3VzIHdpdGg6XG5cbiogICBgbmRsY19wcm9iZWBcbiogICBgbmRsY19yZWN2YFxuKiAgIGBuZGxjX3NlbmRgXG4qICAgYG5kbGNfY2xvc2VgXG4qICAgYHN0X25jaV9kaXNjb3Zlcl9zZWBcblxuSG93ZXZlciwgdGhpcyBwYXRjaCBhbHNvIHRvdWNoZXMgYHN0X25jaV9pMmNfcHJvYmVgIGFuZCBgc3RfbmNpX2kyY19yZWFkYC4gSG1tLCB0aGV5J3JlIHN0YXRpYywgc28gZGlyZWN0bHkgZnV6emluZyBieSBuYW1lIGlzIGEgbm8tZ28gdW5sZXNzIHRoZSBjb21waWxlciBpbmxpbmVzIHRoZW0sIHdoaWNoIGlzbid0IGhhcHBlbmluZyBoZXJlLiBCdXQsIHNpbmNlIEknbSBhaW1pbmcgZm9yIGV4cG9ydGVkIGZ1bmN0aW9ucyBhbnl3YXksIGl0IGFsaWducyB3aXRoIG15IGFwcHJvYWNoLlxuXG5UaW1lIGZvciBhIGNvbmZpZyBjaGVjay4gSSd2ZSBnb3QgYE5GQ2AsIGBORkNfTkNJYCwgYW5kIGBORkNfU1RfTkNJX0kyQ2AuLi4gQW55dGhpbmcgZWxzZSByZWxldmFudD8gVGhlIHBhdGNoIHRvdWNoZXMgYGRyaXZlcnMvbmZjL3N0LW5jaS9pMmMuY2AsIGBkcml2ZXJzL25mYy9zdC1uY2kvY29yZS5jYCwgYGRyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmNgLCBhbmQgYGRyaXZlcnMvbmZjL3N0LW5jaS9zZS5jYC4gVGhleSBhcmUgYWxsIHBhcnQgb2YgdGhlIGBzdC1uY2lgIGRyaXZlciwgc28gSSBuZWVkIHRvIGNoZWNrIHRoZSBgTWFrZWZpbGVgIGluIHRoYXQgZGlyZWN0b3J5LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDQwNiwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMxMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMFQyMTowMzozMy45OTA4OTU1MzdaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3Mzg1MTY1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInN0LW5jaVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25mYy9zdC1uY2kvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZmMvc3QtbmNpL01ha2VmaWxlLTUtXFxuZHJpdmVycy9uZmMvc3QtbmNpL01ha2VmaWxlOjY6c3QtbmNpLW9ianMgPSBuZGxjLm8gY29yZS5vIHNlLm8gdmVuZG9yX2NtZHMub1xcbmRyaXZlcnMvbmZjL3N0LW5jaS9NYWtlZmlsZTo3Om9iai0kKENPTkZJR19ORkNfU1RfTkNJKSAgICAgKz0gc3QtbmNpLm9cXG5kcml2ZXJzL25mYy9zdC1uY2kvTWFrZWZpbGUtOC1cXG5kcml2ZXJzL25mYy9zdC1uY2kvTWFrZWZpbGU6OTpzdC1uY2lfaTJjLW9ianMgPSBpMmMub1xcbmRyaXZlcnMvbmZjL3N0LW5jaS9NYWtlZmlsZToxMDpvYmotJChDT05GSUdfTkZDX1NUX05DSV9JMkMpICs9IHN0LW5jaV9pMmMub1xcbmRyaXZlcnMvbmZjL3N0LW5jaS9NYWtlZmlsZS0xMS1cXG5kcml2ZXJzL25mYy9zdC1uY2kvTWFrZWZpbGU6MTI6c3QtbmNpX3NwaS1vYmpzID0gc3BpLm9cXG5kcml2ZXJzL25mYy9zdC1uY2kvTWFrZWZpbGU6MTM6b2JqLSQoQ09ORklHX05GQ19TVF9OQ0lfU1BJKSArPSBzdC1uY2lfc3BpLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjBUMjE6MDM6MzQuMDM4Mjg1OTcyWiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5MTU3MDk2Mzc0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5c2lzIG9mIE5GQyBTVC1OQ0kgSTJDIERyaXZlciBQYXRjaCoqXG5cbkFscmlnaHQsIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIGl0J3MgY2xlYXIgdGhhdCB0aGlzIHBhdGNoIGludHJvZHVjZXMgc3VwcG9ydCBmb3IgYSBuZXcgTkZDIGNvbnRyb2xsZXIsIHRoZSBTVDIxTkZDRCwgd2hpY2ggY29tbXVuaWNhdGVzIHVzaW5nIHJhdyBOQ0kgb3ZlciBJMkMuIFRoZSBleGlzdGluZyBkcml2ZXIsIGBzdC1uY2ktaTJjYCwgaXMgYmVpbmcgZXh0ZW5kZWQgdG8gaGFuZGxlIHRoaXMgbmV3IG1vZGUgb2Ygb3BlcmF0aW9uLlxuXG5NeSBpbml0aWFsIHRob3VnaHQgd2FzIHRoYXQgdGhlIGBORkNfU1RfTkNJYCBjb25maWcgbWlnaHQgYmUgbmVlZGVkIGluZGVwZW5kZW50bHksIGJ1dCBhZnRlciBkb3VibGUgY2hlY2tpbmcgdGhlIEtjb25maWcsIGl0J3Mgc2VsZWN0ZWQgYnkgYE5GQ19TVF9OQ0lfSTJDYCwgc28gdGhhdCdzIGdvb2QuIFRob3VnaCwgaXQncyB3aXNlIHRvIGxpc3QgaXQgZXhwbGljaXRseS4gQW5kIG9mIGNvdXJzZSwgYE5GQ2AsIGBORkNfTkNJYCwgYW5kIGBJMkNgIGFyZSB0aGUgYmFzZSBjb25maWdzLiBXZSBhbHNvIG5lZWQgdG8gYWRkIHRoZSBgTkZDX1NUX05DSWAgY29uZmlnLlxuXG5UaGUga2V5IGNoYW5nZSBpcyB0aGUgYWRkaXRpb24gb2YgdGhlIGByYXdfbmNpYCBmbGFnIHdpdGhpbiB0aGUgYHN0X25jaV9pMmNfcGh5YCBzdHJ1Y3QgYW5kIGhvdyBpdCdzIHVzZWQuIFRoaXMgZmxhZyBhbHRlcnMgdGhlIGJlaGF2aW9yIG9mIHNldmVyYWwgY29yZSBmdW5jdGlvbnMgd2l0aGluIHRoZSBkcml2ZXIuIE5hbWVseSwgIGBzdF9uY2lfaTJjX3JlYWRgLCBgc3RfbmNpX2luaXRgLCBgbmRsY19jbG9zZWAsIGBuZGxjX3NlbmRgLCBgbGx0X25kbGNfc2VuZF9xdWV1ZWAsIGBsbHRfbmRsY19yY3ZfcXVldWVgLCBhbmQgYHN0X25jaV9kaXNjb3Zlcl9zZWAuXG5cblRoZSBjb21taXQgaW50cm9kdWNlcyBhIG5ldyBjb21wYXRpYmxlIHN0cmluZywgXCJzdCxzdDIxbmZjZFwiLCB3aGljaCBzZXRzIHRoaXMgYHJhd19uY2lgIGZsYWcgaW4gdGhlIHByb2JlIGZ1bmN0aW9uLiBUaGUgY29kZSBhbHNvIHVzZXMgdGhlIGBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoKWAgdG8gc3BlY2lmeSB3aGV0aGVyIHRoZSBkcml2ZXIgaXMgaW4gcmF3IE5DSSBtb2RlIG9yIG5vdC5cblxuSSBjYW4gY29uZmlybSB0aGF0IHRoZSBuZXcgbG9naWMgY2FuIGJlIHJlYWNoZWQgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gVGhlIGRyaXZlciBzaG91bGQgYmUgYWJsZSB0byBpbnN0YW50aWF0ZSB2aWEgc3lzZnMsIHNvIHRlc3Rpbmcgc2hvdWxkbid0IGJlIHRvbyBjdW1iZXJzb21lLlxuXG5Ob3csIGNvbnNpZGVyaW5nIGZ1enppbmcsIHRoZSBhcmVhcyB0byBmb2N1cyBvbiBhcmUgdGhlIGZ1bmN0aW9ucyB0aGF0IGhhbmRsZSB0aGUgSTJDIGNvbW11bmljYXRpb24gYW5kIE5DSSBmcmFtZSBwcm9jZXNzaW5nLCBzcGVjaWZpY2FsbHk6IGBuZGxjX3Byb2JlYCwgYG5kbGNfcmVjdmAsIGBuZGxjX3NlbmRgLCBgbmRsY19jbG9zZWAsIGFuZCBgc3RfbmNpX2Rpc2NvdmVyX3NlYC4gSSBiZWxpZXZlIHRob3NlIGFyZSB0aGUgZW50cnkgcG9pbnRzIHRvIHRoZSBuZXcgbG9naWMuIEFsdGhvdWdoIGBzdF9uY2lfaTJjX3JlYWRgIGlzIHdoZXJlIHRoZSBjb3JlIHJlYWRpbmcgbG9naWMgaXMgaW1wbGVtZW50ZWQsIGl0J3Mgc3RhdGljLlxuXG5GaW5hbGx5LCB0aGUgcHJvcG9zZWQgY29uZmlnIHNldCBpczogYE5GQ2AsIGBORkNfTkNJYCwgYEkyQ2AsIGBORkNfU1RfTkNJYCwgYW5kIGBORkNfU1RfTkNJX0kyQ2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxMzQxLCJPdXRwdXRUb2tlbnMiOjE5NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMzMzUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjBUMjE6MDQ6MDMuMTk1Mzg1ODM2WiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzU1OTU2NjgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5GQ1wiLFxuICAgIFwiTkZDX05DSVwiLFxuICAgIFwiSTJDXCIsXG4gICAgXCJORkNfU1RfTkNJXCIsXG4gICAgXCJORkNfU1RfTkNJX0kyQ1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm5kbGNfcHJvYmVcIixcbiAgICBcIm5kbGNfcmVjdlwiLFxuICAgIFwibmRsY19zZW5kXCIsXG4gICAgXCJuZGxjX2Nsb3NlXCIsXG4gICAgXCJzdF9uY2lfZGlzY292ZXJfc2VcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHRoZSBTVDIxTkZDRCBORkMgY29udHJvbGxlciwgd2hpY2ggdXNlcyByYXcgTkNJIG92ZXIgSTJDIGluc3RlYWQgb2YgdGhlIE5ETEMgcHJvdG9jb2wuIEl0IGludHJvZHVjZXMgYSBuZXcgYHJhd19uY2lgIGZsYWcgdGhhdCBtb2RpZmllcyB0aGUgYmVoYXZpb3Igb2YgcmVhZGluZyBmcm9tIHRoZSBJMkMgYnVzLCBzZW5kaW5nL3JlY2VpdmluZyBOQ0kgZnJhbWVzLCBhbmQgaW5pdGlhbGl6aW5nIHRoZSBkZXZpY2UuIFRoZSBJMkMgZHJpdmVyIGNhbiBiZSBpbnN0YW50aWF0ZWQgYW5kIGZ1enplZCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5GQ1wiLFxuICAgIFwiTkZDX05DSVwiLFxuICAgIFwiSTJDXCIsXG4gICAgXCJORkNfU1RfTkNJXCIsXG4gICAgXCJORkNfU1RfTkNJX0kyQ1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm5kbGNfcHJvYmVcIixcbiAgICBcIm5kbGNfcmVjdlwiLFxuICAgIFwibmRsY19zZW5kXCIsXG4gICAgXCJuZGxjX2Nsb3NlXCIsXG4gICAgXCJzdF9uY2lfZGlzY292ZXJfc2VcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHRoZSBTVDIxTkZDRCBORkMgY29udHJvbGxlciwgd2hpY2ggdXNlcyByYXcgTkNJIG92ZXIgSTJDIGluc3RlYWQgb2YgdGhlIE5ETEMgcHJvdG9jb2wuIEl0IGludHJvZHVjZXMgYSBuZXcgYHJhd19uY2lgIGZsYWcgdGhhdCBtb2RpZmllcyB0aGUgYmVoYXZpb3Igb2YgcmVhZGluZyBmcm9tIHRoZSBJMkMgYnVzLCBzZW5kaW5nL3JlY2VpdmluZyBOQ0kgZnJhbWVzLCBhbmQgaW5pdGlhbGl6aW5nIHRoZSBkZXZpY2UuIFRoZSBJMkMgZHJpdmVyIGNhbiBiZSBpbnN0YW50aWF0ZWQgYW5kIGZ1enplZCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMFQyMTowNDowMy4yNzA5OTMwNzRaIiwiU2VxIjozMSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM5MzA5NjUwNTE1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjBUMjE6MDQ6MDMuMjcxNDg0MjE0WiIsIlNlcSI6MzIsIk5lc3RpbmciOjIsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjM5MzA5MTU1Mjc1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIHN1cHBvcnQgZm9yIGEgbmV3IE5GQyBjaGlwIChTVDIxTkZDRCkgd2hpY2ggdXNlcyByYXcgTkNJIGZyYW1lcyBvdmVyIEkyQyBpbnN0ZWFkIG9mIHRoZSBORExDIHByb3RvY29sLiBUaGUgY2hhbmdlcyBwcmltYXJpbHkgaW52b2x2ZSByZWFkaW5nIGRhdGEgZnJvbSB0aGUgSTJDIGJ1cyBpbnRvIGEgbG9jYWwgc3RhY2sgYnVmZmVyLCBhbGxvY2F0aW5nIGFuIHNrX2J1ZmYsIGFuZCBjb3B5aW5nIHRoZSByZWNlaXZlZCBkYXRhIGludG8gaXQuIFRoZSBjb2RlIGV4cGxpY2l0bHkgY2hlY2tzIHRoZSByZXR1cm4gdmFsdWVzIG9mIGBpMmNfbWFzdGVyX3JlY3ZgIHRvIGVuc3VyZSB0aGF0IHRoZSBidWZmZXIgaXMgZnVsbHkgaW5pdGlhbGl6ZWQgYmVmb3JlIGFueSBkYXRhIGlzIHJlYWQgZnJvbSBpdCBvciBjb3BpZWQgdG8gdGhlIHNrX2J1ZmYuIFRoZXJlIGFyZSBubyBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aXRoIHBhZGRpbmcgYmVpbmcgc2VudCB0byB1c2VyIHNwYWNlLCBub3IgYXJlIHRoZXJlIGFueSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcyB1c2VkIGluIGNvbnRyb2wgZmxvdy4gQW55IHBvdGVudGlhbCBtZW1vcnkgY29ycnVwdGlvbiwgb3V0LW9mLWJvdW5kcyBhY2Nlc3Nlcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyBpbiB0aGlzIGNvZGUgd291bGQgYmUgZWZmZWN0aXZlbHkgY2F1Z2h0IGJ5IEtBU0FOLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QganVzdGlmaWVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDU5ZmIwODI0YmVjNGQxMDI2M2U0ODViNWFjYjc3NTc5NDNiMmIyYmNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEF1ZyAyMCAyMTowMTo1MyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbmZjL3N0LHN0LW5jaS55YW1sIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9uZmMvc3Qsc3QtbmNpLnlhbWxcbmluZGV4IDFkY2JkZGJjNWE3NGUuLmM4NTk3OTdmNDIyYmMgMTAwNjQ0XG4tLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L25mYy9zdCxzdC1uY2kueWFtbFxuKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9uZmMvc3Qsc3QtbmNpLnlhbWxcbkBAIC0xNSw2ICsxNSw3IEBAIHByb3BlcnRpZXM6XG4gICAgICAgLSBzdCxzdDIxbmZjYi1pMmNcbiAgICAgICAtIHN0LHN0MjFuZmNiLXNwaVxuICAgICAgIC0gc3Qsc3QyMW5mY2MtaTJjXG4rICAgICAgLSBzdCxzdDIxbmZjZFxuIFxuICAgcmVzZXQtZ3Bpb3M6XG4gICAgIGRlc2NyaXB0aW9uOiBPdXRwdXQgR1BJTyBwaW4gdXNlZCBmb3IgcmVzZXR0aW5nIHRoZSBjb250cm9sbGVyXG5AQCAtMzYsNiArMzcsMTUgQEAgcHJvcGVydGllczpcbiAgICAgICBTcGVjaWZpZXMgdGhhdCB0aGUgdWljYyBzd3Agc2lnbmFsIGNhbiBiZSBwaHlzaWNhbGx5IGNvbm5lY3RlZCB0byB0aGVcbiAgICAgICBjb250cm9sbGVyXG4gXG4rICBjbG9ja3M6XG4rICAgIG1heEl0ZW1zOiAxXG4rICAgIGRlc2NyaXB0aW9uOlxuKyAgICAgIEV4dGVybmFsIHJlZmVyZW5jZSBjbG9jayBjb25uZWN0ZWQgdG8gU1lTX0NMSy5cbitcbisgIHZkZC1pby1zdXBwbHk6XG4rICAgIGRlc2NyaXB0aW9uOlxuKyAgICAgIERpZ2l0YWwgSS9PIHN1cHBseSAoVlBTX0lPKS5cbitcbiByZXF1aXJlZDpcbiAgIC0gY29tcGF0aWJsZVxuICAgLSBpbnRlcnJ1cHRzXG5AQCAtNDksNiArNTksNyBAQCBpZjpcbiAgICAgICAgIGVudW06XG4gICAgICAgICAgIC0gc3Qsc3QyMW5mY2ItaTJjXG4gICAgICAgICAgIC0gc3Qsc3QyMW5mY2MtaTJjXG4rICAgICAgICAgIC0gc3Qsc3QyMW5mY2RcbiB0aGVuOlxuICAgcHJvcGVydGllczpcbiAgICAgc3BpLW1heC1mcmVxdWVuY3k6IGZhbHNlXG5AQCAtODEsNiArOTIsMjYgQEAgZXhhbXBsZXM6XG4gICAgICAgICB9O1xuICAgICB9O1xuIFxuKyAgLSB8XG4rICAgICNpbmNsdWRlIFx1MDAzY2R0LWJpbmRpbmdzL2dwaW8vZ3Bpby5oXHUwMDNlXG4rICAgICNpbmNsdWRlIFx1MDAzY2R0LWJpbmRpbmdzL2ludGVycnVwdC1jb250cm9sbGVyL2lycS5oXHUwMDNlXG4rXG4rICAgIGkyYyB7XG4rICAgICAgICAjYWRkcmVzcy1jZWxscyA9IFx1MDAzYzFcdTAwM2U7XG4rICAgICAgICAjc2l6ZS1jZWxscyA9IFx1MDAzYzBcdTAwM2U7XG4rXG4rICAgICAgICBuZmNAOCB7XG4rICAgICAgICAgICAgY29tcGF0aWJsZSA9IFwic3Qsc3QyMW5mY2RcIjtcbisgICAgICAgICAgICByZWcgPSBcdTAwM2MweDA4XHUwMDNlO1xuK1xuKyAgICAgICAgICAgIGludGVycnVwdHMtZXh0ZW5kZWQgPSBcdTAwM2NcdTAwMjZncGlvNSAyIElSUV9UWVBFX0xFVkVMX0hJR0hcdTAwM2U7XG4rICAgICAgICAgICAgcmVzZXQtZ3Bpb3MgPSBcdTAwM2NcdTAwMjZncGlvNSAyOSBHUElPX0FDVElWRV9ISUdIXHUwMDNlO1xuK1xuKyAgICAgICAgICAgIGNsb2NrcyA9IFx1MDAzY1x1MDAyNmNsa1x1MDAzZTtcbisgICAgICAgICAgICB2ZGQtaW8tc3VwcGx5ID0gXHUwMDNjXHUwMDI2dmRkX2lvXHUwMDNlO1xuKyAgICAgICAgfTtcbisgICAgfTtcbitcbiAgIC0gfFxuICAgICAjaW5jbHVkZSBcdTAwM2NkdC1iaW5kaW5ncy9ncGlvL2dwaW8uaFx1MDAzZVxuICAgICAjaW5jbHVkZSBcdTAwM2NkdC1iaW5kaW5ncy9pbnRlcnJ1cHQtY29udHJvbGxlci9pcnEuaFx1MDAzZVxuZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQvYm9vdC9kdHMvcWNvbS9xY202NDkwLWZhaXJwaG9uZS1mcDUuZHRzIGIvYXJjaC9hcm02NC9ib290L2R0cy9xY29tL3FjbTY0OTAtZmFpcnBob25lLWZwNS5kdHNcbmluZGV4IDA0Y2I5MjMwZDI5ZmQuLmVmNjYwNzlhMDI2M2MgMTAwNjQ0XG4tLS0gYS9hcmNoL2FybTY0L2Jvb3QvZHRzL3Fjb20vcWNtNjQ5MC1mYWlycGhvbmUtZnA1LmR0c1xuKysrIGIvYXJjaC9hcm02NC9ib290L2R0cy9xY29tL3FjbTY0OTAtZmFpcnBob25lLWZwNS5kdHNcbkBAIC05MDgsNyArOTA4LDIzIEBAIHJlZHJpdmVyX3NzX2luOiBlbmRwb2ludCB7XG4gXHUwMDI2aTJjOSB7XG4gXHRzdGF0dXMgPSBcIm9rYXlcIjtcbiBcbi1cdC8qIFNUMjFORkMgTkZDIEAgMjggKi9cbitcdG5mY0A4IHtcbitcdFx0Y29tcGF0aWJsZSA9IFwic3Qsc3QyMW5mY2RcIjtcbitcdFx0cmVnID0gXHUwMDNjMHgwOFx1MDAzZTtcbitcbitcdFx0aW50ZXJydXB0cy1leHRlbmRlZCA9IFx1MDAzY1x1MDAyNnRsbW0gNDEgSVJRX1RZUEVfTEVWRUxfSElHSFx1MDAzZTtcbitcdFx0cmVzZXQtZ3Bpb3MgPSBcdTAwM2NcdTAwMjZ0bG1tIDM4IEdQSU9fQUNUSVZFX0hJR0hcdTAwM2U7XG4rXG4rXHRcdHBpbmN0cmwtMCA9IFx1MDAzY1x1MDAyNm5mY19kZWZhdWx0XHUwMDNlO1xuK1x0XHRwaW5jdHJsLW5hbWVzID0gXCJkZWZhdWx0XCI7XG4rXG4rXHRcdGNsb2NrcyA9IFx1MDAzY1x1MDAyNnJwbWhjYyBSUE1IX0xOX0JCX0NMSzJcdTAwM2U7XG4rXHRcdHZkZC1pby1zdXBwbHkgPSBcdTAwM2NcdTAwMjZ2cmVnX2wxOGJcdTAwM2U7XG4rXG4rXHRcdGVzZS1wcmVzZW50O1xuK1x0XHR1aWNjLXByZXNlbnQ7XG4rXHR9O1xuK1xuIFx0LyogVkw1M0wzIFRvRiBAIDI5ICovXG4gfTtcbiBcbkBAIC0xNDEwLDYgKzE0MjYsMjIgQEAgaGFsbF9zZW5zb3JfZGVmYXVsdDogaGFsbC1zZW5zb3ItZGVmYXVsdC1zdGF0ZSB7XG4gXHRcdGRyaXZlLXN0cmVuZ3RoID0gXHUwMDNjMlx1MDAzZTtcbiBcdFx0Ymlhcy1wdWxsLXVwO1xuIFx0fTtcbitcbitcdG5mY19kZWZhdWx0OiBuZmMtZGVmYXVsdC1zdGF0ZSB7XG4rXHRcdHJlc2V0LXBpbnMge1xuK1x0XHRcdHBpbnMgPSBcImdwaW8zOFwiO1xuK1x0XHRcdGZ1bmN0aW9uID0gXCJncGlvXCI7XG4rXHRcdFx0ZHJpdmUtc3RyZW5ndGggPSBcdTAwM2MyXHUwMDNlO1xuK1x0XHRcdGJpYXMtZGlzYWJsZTtcbitcdFx0fTtcbitcbitcdFx0aW50LXBpbnMge1xuK1x0XHRcdHBpbnMgPSBcImdwaW80MVwiO1xuK1x0XHRcdGZ1bmN0aW9uID0gXCJncGlvXCI7XG4rXHRcdFx0ZHJpdmUtc3RyZW5ndGggPSBcdTAwM2MyXHUwMDNlO1xuK1x0XHRcdGJpYXMtZGlzYWJsZTtcbitcdFx0fTtcbitcdH07XG4gfTtcbiBcbiBcdTAwMjZ1YXJ0NSB7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZmMvc3QtbmNpL2NvcmUuYyBiL2RyaXZlcnMvbmZjL3N0LW5jaS9jb3JlLmNcbmluZGV4IGEzNjcxMzZkNDMzMGEuLjIzNTZmMTZiODA3MDYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25mYy9zdC1uY2kvY29yZS5jXG4rKysgYi9kcml2ZXJzL25mYy9zdC1uY2kvY29yZS5jXG5AQCAtMTgsOCArMTgsMTMgQEBcbiBcbiBzdGF0aWMgaW50IHN0X25jaV9pbml0KHN0cnVjdCBuY2lfZGV2ICpuZGV2KVxuIHtcbitcdHN0cnVjdCBzdF9uY2lfaW5mbyAqaW5mbyA9IG5jaV9nZXRfZHJ2ZGF0YShuZGV2KTtcbiBcdHN0cnVjdCBuY2lfbW9kZV9zZXRfY21kIGNtZDtcbiBcbitcdC8qIFNUMjFORkNEIGhhcyBubyBORExDIHByb3ByaWV0YXJ5IFNFVF9ORkNfTU9ERSAqL1xuK1x0aWYgKGluZm8tXHUwMDNlbmRsYy1cdTAwM2VyYXdfbmNpKVxuK1x0XHRyZXR1cm4gMDtcbitcbiBcdGNtZC5jbWRfdHlwZSA9IFNUX05DSV9TRVRfTkZDX01PREU7XG4gXHRjbWQubW9kZSA9IDE7XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZmMvc3QtbmNpL2kyYy5jIGIvZHJpdmVycy9uZmMvc3QtbmNpL2kyYy5jXG5pbmRleCAxNTJjMjBiNmJiMDFhLi5jZmRkYjdmZmUwMmE0IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZmMvc3QtbmNpL2kyYy5jXG4rKysgYi9kcml2ZXJzL25mYy9zdC1uY2kvaTJjLmNcbkBAIC0xMCwxMCArMTAsMTMgQEBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9pMmMuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2dwaW8vY29uc3VtZXIuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2FjcGkuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L2Nsay5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvaW50ZXJydXB0LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9kZWxheS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvbmZjLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9vZi5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvcHJvcGVydHkuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L3JlZ3VsYXRvci9jb25zdW1lci5oXHUwMDNlXG4gXG4gI2luY2x1ZGUgXCJzdC1uY2kuaFwiXG4gXG5AQCAtMjIsMTAgKzI1LDE3IEBAXG4gLyogbmRsYyBoZWFkZXIgKi9cbiAjZGVmaW5lIFNUX05DSV9GUkFNRV9IRUFEUk9PTSAxXG4gI2RlZmluZSBTVF9OQ0lfRlJBTUVfVEFJTFJPT00gMFxuKyNkZWZpbmUgU1RfTkNJX1JBV19GUkFNRV9IRUFEUk9PTSAwXG4gXG4gI2RlZmluZSBTVF9OQ0lfSTJDX01JTl9TSVpFIDQgICAvKiBQQ0IoMSkgKyBOQ0kgUGFja2V0IGhlYWRlcigzKSAqL1xuKyNkZWZpbmUgU1RfTkNJX05DSV9IRFJfU0laRSAzICAgLyogcmF3IE5DSTogTVQvUEJGL0dJRCArIE9JRCArIGxlbiAqL1xuICNkZWZpbmUgU1RfTkNJX0kyQ19NQVhfU0laRSAyNTAgLyogcmVxIDQuMi4xICovXG4gXG4rZW51bSBzdF9uY2lfaTJjX3Byb3RvIHtcbitcdFNUX05DSV9JMkNfUFJPVE9fTkRMQyA9IDAsXG4rXHRTVF9OQ0lfSTJDX1BST1RPX1JBV19OQ0ksXG4rfTtcbitcbiAjZGVmaW5lIFNUX05DSV9EUklWRVJfTkFNRSBcInN0X25jaVwiXG4gI2RlZmluZSBTVF9OQ0lfSTJDX0RSSVZFUl9OQU1FIFwic3RfbmNpX2kyY1wiXG4gXG5AQCAtMzQsNiArNDQsNyBAQCBzdHJ1Y3Qgc3RfbmNpX2kyY19waHkge1xuIFx0c3RydWN0IGxsdF9uZGxjICpuZGxjO1xuIFxuIFx0Ym9vbCBpcnFfYWN0aXZlO1xuK1x0Ym9vbCByYXdfbmNpO1xuIFxuIFx0c3RydWN0IGdwaW9fZGVzYyAqZ3Bpb2RfcmVzZXQ7XG4gXG5AQCAtMTExLDYgKzEyMiw0MiBAQCBzdGF0aWMgaW50IHN0X25jaV9pMmNfcmVhZChzdHJ1Y3Qgc3RfbmNpX2kyY19waHkgKnBoeSxcbiBcdHU4IGJ1ZltTVF9OQ0lfSTJDX01BWF9TSVpFXTtcbiBcdHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQgPSBwaHktXHUwMDNlaTJjX2RldjtcbiBcbitcdGlmIChwaHktXHUwMDNlcmF3X25jaSkge1xuK1x0XHRyID0gaTJjX21hc3Rlcl9yZWN2KGNsaWVudCwgYnVmLCBTVF9OQ0lfTkNJX0hEUl9TSVpFKTtcbitcdFx0aWYgKHIgXHUwMDNjIDApIHtcbitcdFx0XHR1c2xlZXBfcmFuZ2UoMTAwMCwgNDAwMCk7XG4rXHRcdFx0ciA9IGkyY19tYXN0ZXJfcmVjdihjbGllbnQsIGJ1ZiwgU1RfTkNJX05DSV9IRFJfU0laRSk7XG4rXHRcdH1cbitcdFx0aWYgKHIgIT0gU1RfTkNJX05DSV9IRFJfU0laRSlcbitcdFx0XHRyZXR1cm4gLUVSRU1PVEVJTztcbitcbitcdFx0bGVuID0gYnVmWzJdO1xuK1x0XHRpZiAobGVuIFx1MDAzZSBTVF9OQ0lfSTJDX01BWF9TSVpFKSB7XG4rXHRcdFx0bmZjX2VycihcdTAwMjZjbGllbnQtXHUwMDNlZGV2LCBcImludmFsaWQgZnJhbWUgbGVuXFxuXCIpO1xuK1x0XHRcdHJldHVybiAtRUJBRE1TRztcbitcdFx0fVxuK1xuK1x0XHQqc2tiID0gYWxsb2Nfc2tiKFNUX05DSV9OQ0lfSERSX1NJWkUgKyBsZW4sIEdGUF9LRVJORUwpO1xuK1x0XHRpZiAoISpza2IpXG4rXHRcdFx0cmV0dXJuIC1FTk9NRU07XG4rXG4rXHRcdHNrYl9wdXQoKnNrYiwgU1RfTkNJX05DSV9IRFJfU0laRSk7XG4rXHRcdG1lbWNweSgoKnNrYiktXHUwMDNlZGF0YSwgYnVmLCBTVF9OQ0lfTkNJX0hEUl9TSVpFKTtcbitcbitcdFx0aWYgKCFsZW4pXG4rXHRcdFx0cmV0dXJuIDA7XG4rXG4rXHRcdHIgPSBpMmNfbWFzdGVyX3JlY3YoY2xpZW50LCBidWYsIGxlbik7XG4rXHRcdGlmIChyICE9IGxlbikge1xuK1x0XHRcdGtmcmVlX3NrYigqc2tiKTtcbitcdFx0XHRyZXR1cm4gLUVSRU1PVEVJTztcbitcdFx0fVxuK1xuK1x0XHRza2JfcHV0KCpza2IsIGxlbik7XG4rXHRcdG1lbWNweSgoKnNrYiktXHUwMDNlZGF0YSArIFNUX05DSV9OQ0lfSERSX1NJWkUsIGJ1ZiwgbGVuKTtcbitcdFx0cmV0dXJuIDA7XG4rXHR9XG4rXG4gXHRyID0gaTJjX21hc3Rlcl9yZWN2KGNsaWVudCwgYnVmLCBTVF9OQ0lfSTJDX01JTl9TSVpFKTtcbiBcdGlmIChyIFx1MDAzYyAwKSB7ICAvKiBSZXRyeSwgY2hpcCB3YXMgaW4gc3RhbmRieSAqL1xuIFx0XHR1c2xlZXBfcmFuZ2UoMTAwMCwgNDAwMCk7XG5AQCAtMjExLDYgKzI1OCw4IEBAIHN0YXRpYyBpbnQgc3RfbmNpX2kyY19wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxuIFx0XHRyZXR1cm4gLUVOT01FTTtcbiBcbiBcdHBoeS1cdTAwM2VpMmNfZGV2ID0gY2xpZW50O1xuK1x0cGh5LVx1MDAzZXJhd19uY2kgPSAodWludHB0cl90KWRldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpID09XG4rXHRcdFx0U1RfTkNJX0kyQ19QUk9UT19SQVdfTkNJO1xuIFxuIFx0aTJjX3NldF9jbGllbnRkYXRhKGNsaWVudCwgcGh5KTtcbiBcbkBAIC0yMjUsMTkgKzI3NCwzMSBAQCBzdGF0aWMgaW50IHN0X25jaV9pMmNfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcbiBcdFx0cmV0dXJuIC1FTk9ERVY7XG4gXHR9XG4gXG4rXHRyID0gZGV2bV9yZWd1bGF0b3JfZ2V0X2VuYWJsZV9vcHRpb25hbChkZXYsIFwidmRkLWlvXCIpO1xuK1x0aWYgKHIgXHUwMDI2XHUwMDI2IHIgIT0gLUVOT0RFVilcbitcdFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCByLCBcImZhaWxlZCB0byBlbmFibGUgdmRkLWlvXFxuXCIpO1xuK1xuK1x0ciA9IFBUUl9FUlJfT1JfWkVSTyhkZXZtX2Nsa19nZXRfb3B0aW9uYWxfZW5hYmxlZChkZXYsIE5VTEwpKTtcbitcdGlmIChyKVxuK1x0XHRyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIHIsIFwiZmFpbGVkIHRvIGVuYWJsZSBjbG9ja1xcblwiKTtcbitcbiBcdHBoeS1cdTAwM2VzZV9zdGF0dXMuaXNfZXNlX3ByZXNlbnQgPVxuIFx0XHRcdFx0ZGV2aWNlX3Byb3BlcnR5X3JlYWRfYm9vbChkZXYsIFwiZXNlLXByZXNlbnRcIik7XG4gXHRwaHktXHUwMDNlc2Vfc3RhdHVzLmlzX3VpY2NfcHJlc2VudCA9XG4gXHRcdFx0XHRkZXZpY2VfcHJvcGVydHlfcmVhZF9ib29sKGRldiwgXCJ1aWNjLXByZXNlbnRcIik7XG4gXG4gXHRyID0gbmRsY19wcm9iZShwaHksIFx1MDAyNmkyY19waHlfb3BzLCBcdTAwMjZjbGllbnQtXHUwMDNlZGV2LFxuLVx0XHRcdFNUX05DSV9GUkFNRV9IRUFEUk9PTSwgU1RfTkNJX0ZSQU1FX1RBSUxST09NLFxuK1x0XHRcdHBoeS1cdTAwM2VyYXdfbmNpID8gU1RfTkNJX1JBV19GUkFNRV9IRUFEUk9PTSA6XG4rXHRcdFx0XHQgICAgICAgU1RfTkNJX0ZSQU1FX0hFQURST09NLFxuK1x0XHRcdFNUX05DSV9GUkFNRV9UQUlMUk9PTSxcbiBcdFx0XHRcdTAwMjZwaHktXHUwMDNlbmRsYywgXHUwMDI2cGh5LVx1MDAzZXNlX3N0YXR1cyk7XG4gXHRpZiAociBcdTAwM2MgMCkge1xuIFx0XHRuZmNfZXJyKFx1MDAyNmNsaWVudC1cdTAwM2VkZXYsIFwiVW5hYmxlIHRvIHJlZ2lzdGVyIG5kbGMgbGF5ZXJcXG5cIik7XG4gXHRcdHJldHVybiByO1xuIFx0fVxuIFxuK1x0cGh5LVx1MDAzZW5kbGMtXHUwMDNlcmF3X25jaSA9IHBoeS1cdTAwM2VyYXdfbmNpO1xuK1xuIFx0cGh5LVx1MDAzZWlycV9hY3RpdmUgPSB0cnVlO1xuIFx0ciA9IGRldm1fcmVxdWVzdF90aHJlYWRlZF9pcnEoXHUwMDI2Y2xpZW50LVx1MDAzZWRldiwgY2xpZW50LVx1MDAzZWlycSwgTlVMTCxcbiBcdFx0XHRcdHN0X25jaV9pcnFfdGhyZWFkX2ZuLFxuQEAgLTI1NywyMyArMzE4LDI1IEBAIHN0YXRpYyB2b2lkIHN0X25jaV9pMmNfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXG4gfVxuIFxuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaTJjX2RldmljZV9pZCBzdF9uY2lfaTJjX2lkX3RhYmxlW10gPSB7XG4tXHR7IC5uYW1lID0gU1RfTkNJX0RSSVZFUl9OQU1FIH0sXG4tXHR7IH1cbitcdHsgU1RfTkNJX0RSSVZFUl9OQU1FIH0sXG4rXHR7fVxuIH07XG4gTU9EVUxFX0RFVklDRV9UQUJMRShpMmMsIHN0X25jaV9pMmNfaWRfdGFibGUpO1xuIFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgYWNwaV9kZXZpY2VfaWQgc3RfbmNpX2kyY19hY3BpX21hdGNoW10gPSB7XG4tXHR7IC5pZCA9IFwiU01PMjEwMVwiIH0sXG4tXHR7IC5pZCA9IFwiU01PMjEwMlwiIH0sXG4tXHR7IH1cbitzdGF0aWMgY29uc3Qgc3RydWN0IGFjcGlfZGV2aWNlX2lkIHN0X25jaV9pMmNfYWNwaV9tYXRjaFtdIF9fbWF5YmVfdW51c2VkID0ge1xuK1x0e1wiU01PMjEwMVwifSxcbitcdHtcIlNNTzIxMDJcIn0sXG4rXHR7fVxuIH07XG4gTU9EVUxFX0RFVklDRV9UQUJMRShhY3BpLCBzdF9uY2lfaTJjX2FjcGlfbWF0Y2gpO1xuIFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIG9mX3N0X25jaV9pMmNfbWF0Y2hbXSA9IHtcbi1cdHsgLmNvbXBhdGlibGUgPSBcInN0LHN0MjFuZmNiLWkyY1wiIH0sXG4tXHR7IC5jb21wYXRpYmxlID0gXCJzdCxzdDIxbmZjYl9pMmNcIiB9LFxuLVx0eyAuY29tcGF0aWJsZSA9IFwic3Qsc3QyMW5mY2MtaTJjXCIgfSxcbi1cdHsgfVxuK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIG9mX3N0X25jaV9pMmNfbWF0Y2hbXSBfX21heWJlX3VudXNlZCA9IHtcbitcdHsgLmNvbXBhdGlibGUgPSBcInN0LHN0MjFuZmNiLWkyY1wiLCB9LFxuK1x0eyAuY29tcGF0aWJsZSA9IFwic3Qsc3QyMW5mY2JfaTJjXCIsIH0sXG4rXHR7IC5jb21wYXRpYmxlID0gXCJzdCxzdDIxbmZjYy1pMmNcIiwgfSxcbitcdHsgLmNvbXBhdGlibGUgPSBcInN0LHN0MjFuZmNkXCIsXG4rXHQgIC5kYXRhID0gKHZvaWQgKilTVF9OQ0lfSTJDX1BST1RPX1JBV19OQ0kgfSxcbitcdHt9XG4gfTtcbiBNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBvZl9zdF9uY2lfaTJjX21hdGNoKTtcbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25mYy9zdC1uY2kvbmRsYy5jIGIvZHJpdmVycy9uZmMvc3QtbmNpL25kbGMuY1xuaW5kZXggYmU0ODA4ODU5Y2ZhOS4uYjMxOTI0NjBjOTZlMyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmNcbisrKyBiL2RyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmNcbkBAIC02Miw4ICs2Miw5IEBAIHZvaWQgbmRsY19jbG9zZShzdHJ1Y3QgbGx0X25kbGMgKm5kbGMpXG4gXHQvKiB0b2dnbGUgcmVzZXQgcGluICovXG4gXHRuZGxjLVx1MDAzZW9wcy1cdTAwM2VlbmFibGUobmRsYy1cdTAwM2VwaHlfaWQpO1xuIFxuLVx0bmNpX3Byb3BfY21kKG5kbGMtXHUwMDNlbmRldiwgU1RfTkNJX0NPUkVfUFJPUCxcbi1cdFx0ICAgICBzaXplb2Yoc3RydWN0IG5jaV9tb2RlX3NldF9jbWQpLCAoX191OCAqKVx1MDAyNmNtZCk7XG4rXHRpZiAoIW5kbGMtXHUwMDNlcmF3X25jaSlcbitcdFx0bmNpX3Byb3BfY21kKG5kbGMtXHUwMDNlbmRldiwgU1RfTkNJX0NPUkVfUFJPUCxcbitcdFx0XHQgICAgIHNpemVvZihzdHJ1Y3QgbmNpX21vZGVfc2V0X2NtZCksIChfX3U4ICopXHUwMDI2Y21kKTtcbiBcbiBcdG5kbGMtXHUwMDNlcG93ZXJlZCA9IDA7XG4gXHRuZGxjLVx1MDAzZW9wcy1cdTAwM2VkaXNhYmxlKG5kbGMtXHUwMDNlcGh5X2lkKTtcbkBAIC03MiwxMSArNzMsMTMgQEAgRVhQT1JUX1NZTUJPTChuZGxjX2Nsb3NlKTtcbiBcbiBpbnQgbmRsY19zZW5kKHN0cnVjdCBsbHRfbmRsYyAqbmRsYywgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiB7XG4tXHQvKiBhZGQgbmRsYyBoZWFkZXIgKi9cbi1cdHU4IHBjYiA9IFBDQl9UWVBFX0RBVEFGUkFNRSB8IFBDQl9EQVRBRlJBTUVfUkVUUkFOU01JVF9OTyB8XG4tXHRcdFBDQl9GUkFNRV9DUkNfSU5GT19OT1RQUkVTRU5UO1xuK1x0aWYgKCFuZGxjLVx1MDAzZXJhd19uY2kpIHtcbitcdFx0LyogYWRkIG5kbGMgaGVhZGVyICovXG4rXHRcdHU4IHBjYiA9IFBDQl9UWVBFX0RBVEFGUkFNRSB8IFBDQl9EQVRBRlJBTUVfUkVUUkFOU01JVF9OTyB8XG4rXHRcdFx0UENCX0ZSQU1FX0NSQ19JTkZPX05PVFBSRVNFTlQ7XG4gXG4tXHQqKHU4ICopc2tiX3B1c2goc2tiLCAxKSA9IHBjYjtcbitcdFx0Kih1OCAqKXNrYl9wdXNoKHNrYiwgMSkgPSBwY2I7XG4rXHR9XG4gXHRza2JfcXVldWVfdGFpbChcdTAwMjZuZGxjLVx1MDAzZXNlbmRfcSwgc2tiKTtcbiBcbiBcdHNjaGVkdWxlX3dvcmsoXHUwMDI2bmRsYy1cdTAwM2VzbV93b3JrKTtcbkBAIC0xMDMsNiArMTA2LDEwIEBAIHN0YXRpYyB2b2lkIGxsdF9uZGxjX3NlbmRfcXVldWUoc3RydWN0IGxsdF9uZGxjICpuZGxjKVxuIFx0XHRcdG5kbGMtXHUwMDNlaGFyZF9mYXVsdCA9IHI7XG4gXHRcdFx0YnJlYWs7XG4gXHRcdH1cbitcdFx0aWYgKG5kbGMtXHUwMDNlcmF3X25jaSkge1xuK1x0XHRcdGtmcmVlX3NrYihza2IpO1xuK1x0XHRcdGNvbnRpbnVlO1xuK1x0XHR9XG4gXHRcdHRpbWVfc2VudCA9IGppZmZpZXM7XG4gXHRcdCoodW5zaWduZWQgbG9uZyAqKXNrYi1cdTAwM2VjYiA9IHRpbWVfc2VudDtcbiBcbkBAIC0xNTQsNiArMTYxLDEwIEBAIHN0YXRpYyB2b2lkIGxsdF9uZGxjX3Jjdl9xdWV1ZShzdHJ1Y3QgbGx0X25kbGMgKm5kbGMpXG4gXHRcdHByX2RlYnVnKFwicmN2UWxlbj0lZFxcblwiLCBuZGxjLVx1MDAzZXJjdl9xLnFsZW4pO1xuIFxuIFx0d2hpbGUgKChza2IgPSBza2JfZGVxdWV1ZShcdTAwMjZuZGxjLVx1MDAzZXJjdl9xKSkgIT0gTlVMTCkge1xuK1x0XHRpZiAobmRsYy1cdTAwM2VyYXdfbmNpKSB7XG4rXHRcdFx0bmNpX3JlY3ZfZnJhbWUobmRsYy1cdTAwM2VuZGV2LCBza2IpO1xuK1x0XHRcdGNvbnRpbnVlO1xuK1x0XHR9XG4gXHRcdHBjYiA9IHNrYi1cdTAwM2VkYXRhWzBdO1xuIFx0XHRza2JfcHVsbChza2IsIDEpO1xuIFx0XHRpZiAoKHBjYiBcdTAwMjYgUENCX1RZUEVfTUFTSykgPT0gUENCX1RZUEVfU1VQRVJWSVNPUikge1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmggYi9kcml2ZXJzL25mYy9zdC1uY2kvbmRsYy5oXG5pbmRleCBjMjRjZTliMGRmNTJlLi41YzFmOGJhZjA0NzE4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZmMvc3QtbmNpL25kbGMuaFxuKysrIGIvZHJpdmVycy9uZmMvc3QtbmNpL25kbGMuaFxuQEAgLTM5LDYgKzM5LDggQEAgc3RydWN0IGxsdF9uZGxjIHtcbiBcdCAqL1xuIFx0aW50IGhhcmRfZmF1bHQ7XG4gXHRpbnQgcG93ZXJlZDtcbitcdC8qIFNUMjFORkNEOiByYXcgTkNJIG9uIHRoZSB3aXJlLCBubyBORExDIFBDQiAvIEFDSyB0aW1lcnMgKi9cbitcdGJvb2wgcmF3X25jaTtcbiB9O1xuIFxuIGludCBuZGxjX29wZW4oc3RydWN0IGxsdF9uZGxjICpuZGxjKTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25mYy9zdC1uY2kvc2UuYyBiL2RyaXZlcnMvbmZjL3N0LW5jaS9zZS5jXG5pbmRleCA2MDdlYzc2OGViN2I0Li40NGNjMTAyYmNkZTIxIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZmMvc3QtbmNpL3NlLmNcbisrKyBiL2RyaXZlcnMvbmZjL3N0LW5jaS9zZS5jXG5AQCAtNjIxLDYgKzYyMSw5IEBAIGludCBzdF9uY2lfZGlzY292ZXJfc2Uoc3RydWN0IG5jaV9kZXYgKm5kZXYpXG4gXHRpbnQgc2VfY291bnQgPSAwO1xuIFx0c3RydWN0IHN0X25jaV9pbmZvICppbmZvID0gbmNpX2dldF9kcnZkYXRhKG5kZXYpO1xuIFxuK1x0aWYgKGluZm8tXHUwMDNlbmRsYy1cdTAwM2VyYXdfbmNpKVxuK1x0XHRyZXR1cm4gMDtcbitcbiBcdHIgPSBzdF9uY2lfaGNpX25ldHdvcmtfaW5pdChuZGV2KTtcbiBcdGlmIChyICE9IDApXG4gXHRcdHJldHVybiByO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjBUMjE6MDQ6MDMuMjcxNDg2Mjk0WiIsIlNlcSI6MzMsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM5MzA5MTMxMzM1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKktNU0FOIEFuYWx5c2lzIG9mIFNUMjFORkNEIFJhdyBOQ0kgU3VwcG9ydCoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gVGhpcyBwYXRjaCBpcyBhZGRpbmcgc3VwcG9ydCBmb3IgYSBuZXcgTkZDIGNoaXAsIHRoZSBTVDIxTkZDRCwgdG8gdGhlIGBzdC1uY2lgIGRyaXZlci4gVGhlIGtleSBkaWZmZXJlbmNlIGhlcmUgaXMgdGhlIHVzZSBvZiBcInJhdyBOQ0lcIiBvdmVyIEkyQyBpbnN0ZWFkIG9mIHRoZSBtb3JlIGNvbXBsZXggTkRMQyBwcm90b2NvbC4gVGhlIGRyaXZlcidzIGBpMmMuY2AgZmlsZSBoYXMgdGhlIG5ldyBsb2dpYyBmb3IgaGFuZGxpbmcgdGhpcyByYXcgTkNJIG1vZGUuXG5cblRoZSBjcml0aWNhbCBwYXJ0IGlzIHdpdGhpbiB0aGUgYHN0X25jaV9pMmNfcmVhZGAgZnVuY3Rpb24uIEl0IHJlYWRzIGRhdGEgZnJvbSB0aGUgSTJDIGRldmljZSBpbnRvIGEgbG9jYWwgYnVmZmVyIChgYnVmYCkuIEl0IGFwcGVhcnMgdGhlIGNvZGUgcmVhZHMgdGhlIE5DSSBoZWFkZXIgZmlyc3QsIHRoZW4gZGV0ZXJtaW5lcyB0aGUgcGF5bG9hZCBsZW5ndGggZnJvbSB0aGUgaGVhZGVyLCBhbmQgdGhlbiByZWFkcyB0aGUgYWN0dWFsIHBheWxvYWQuIEEgY291cGxlIG9mIGltcG9ydGFudCBjaGVja3MgYXJlIGluIHBsYWNlOiBpZiB0aGUgZmlyc3QgYGkyY19tYXN0ZXJfcmVjdmAgZmFpbHMsIGl0IHRyaWVzIGFnYWluLiBUaGVuLCBpdCB2YWxpZGF0ZXMgdGhlIHBheWxvYWQgbGVuZ3RoIChgbGVuYCkgdG8gbWFrZSBzdXJlIGl0J3Mgd2l0aGluIHRoZSBwZXJtaXNzaWJsZSByYW5nZSAoYFNUX05DSV9JMkNfTUFYX1NJWkVgKS4gVGhpcyBsb29rcyBzYWZlLiBUaGUgYWxsb2NhdGlvbiBhbmQgY29weWluZyBpbnRvIHRoZSBgc2tiYCBhcHBlYXIgdG8gYmUgZG9uZSBjb3JyZWN0bHksIGVuc3VyaW5nIHRoZSBgc2tiYCBvbmx5IGNvbnRhaW5zIGluaXRpYWxpemVkIGRhdGEuXG5cbkknbSBjaGVja2luZyBpZiB0aGUgZHJpdmVyIGNvcnJlY3RseSBoYW5kbGVzIGBpMmNfbWFzdGVyX3JlY3ZgIHJldHVybmluZyBhIHBvc2l0aXZlIHZhbHVlIGxlc3MgdGhhbiB0aGUgZXhwZWN0ZWQgbnVtYmVyIG9mIGJ5dGVzLiBBZnRlciByZXZpZXdpbmcgYGkyY19tYXN0ZXJfcmVjdmAncyBkb2N1bWVudGF0aW9uLCBpdCByZXR1cm5zIHRoZSBudW1iZXIgb2YgYnl0ZXMgcmVhZC4gSWYgdGhpcyBkb2Vzbid0IG1hdGNoIHRoZSBleHBlY3RlZCBzaXplLCB0aGUgY29kZSByZXR1cm5zIGFuIGVycm9yLCB3aGljaCBpcyBjb3JyZWN0LlxuXG5UaGVyZSBpcyBhbHNvIGEgY29uY2VybiBhYm91dCB1bmluaXRpYWxpemVkIG1lbW9yeSBpbiB0aGUgYHNrYmAuIFRoZSBgYWxsb2Nfc2tiYCBhbGxvY2F0ZXMgdGhlIG1lbW9yeSwgYnV0IHRoZSBgc2tiX3B1dGAgYW5kIGBtZW1jcHlgIGFyZSB0aGUgcGxhY2VzIHdoZXJlIGluaXRpYWxpemVkIGRhdGEgaXMgcGxhY2VkIGludG8gdGhlIGBza2JgLiBUaGUgbG9naWMgYXBwZWFycyBzYWZlIGJlY2F1c2UgYG1lbWNweWAgY29waWVzIGV4YWN0bHkgdGhlIGRhdGEgcmVhZCBmcm9tIEkyQywgZW5zdXJpbmcgYWxsIGRhdGEgaW4gdGhlIGBza2JgIGlzIGluaXRpYWxpemVkLlxuXG5UaGUgTkRMQyBwcm90b2NvbCBpcyBieXBhc3NlZCBpbiBgcmF3X25jaWAgbW9kZS4gVGh1cywgaW4gdGhlIGBuZGxjX3NlbmRgIGZ1bmN0aW9uLCB0aGUgUENCIGJ5dGUgaXMgbm90IHB1c2hlZCBvbnRvIHRoZSBza2IuIFRoZSBgbGx0X25kbGNfcmN2X3F1ZXVlYCBmdW5jdGlvbiBhbHNvIHBhc3NlcyB0aGUgc2tiIGRpcmVjdGx5IHRvIHRoZSBOQ0kgZnJhbWUuIEkgaGF2ZSB0byBtYWtlIHN1cmUgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgZ29lcyBpbnRvIGBuY2lfcmVjdl9mcmFtZWAuIFRoZSByZXZpZXcgY29uZmlybXMgdGhlIHNrYiBoYXMgdGhlIHJpZ2h0IGFtb3VudCBvZiBieXRlcywgdGhlIGRhdGEgaXMgcHVzaGVkLCBhbmQgbm90aGluZyBpcyBtaXNzZWQuIFRoZXJlIGRvZXNuJ3QgYXBwZWFyIHRvIGJlIGFueSBwYWRkaW5nIG9yIGFueSBvdGhlciB1bmluaXRpYWxpemVkIG1lbW9yeSBsZWFrLlxuXG5UaGUgcGF0Y2ggaW5jbHVkZXMgdGhlIGNvZGUgaW4gYHN0X25jaV9pMmNfcHJvYmVgIHRoYXQgY2hlY2tzIGEgZmxhZzogYHBoeS1cdTAwM2VyYXdfbmNpYC4gSSB2ZXJpZmllZCB0aGF0IGl0J3MganVzdCBhIGJvb2xlYW4gZmxhZy4gQWxzbywgYHN0X25jaV9pbml0YCBhdm9pZHMgc2VuZGluZyBhIGNvbW1hbmQgZm9yIHRoZSBTVDIxTkZDRCBpZiBpbiB0aGUgYHJhd19uY2lgIG1vZGUuXG5cbkxldCdzIGFsc28gbG9vayBhdCBhbnkgS01TQU4tc3BlY2lmaWMgaXNzdWUuIEkgYW0gc2VlaW5nIHRoZSBkcml2ZXIgcmVhZGluZyBkYXRhIGZyb20gdGhlIEkyQyBkZXZpY2UgaW50byBhIGxvY2FsIGJ1ZmZlciBhbmQgY29weWluZyB0aGUgZGF0YSB0byBhbiBza2IuIEtNU0FOIGlzIGdyZWF0IGF0IGRldGVjdGluZyB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSwgYnV0IGlmIEkyQyBpcyBtb2NrZWQsIGl0IG1pZ2h0IHNob3cgdW5pbml0aWFsaXplZCBtZW1vcnkgaW4gY2VydGFpbiBtb2Nrcy4gVGhlIGtleSBpcyB0byBtYWtlIHN1cmUgYGkyY19tYXN0ZXJfcmVjdmAgYWx3YXlzIHJldHVybnMgdGhlIHJpZ2h0IGFtb3VudCBvZiBieXRlcy4gU2luY2UgdGhlIGRyaXZlciBjb2RlIGV4cGxpY2l0bHkgY2hlY2tzIHRoZSByZXR1cm4gdmFsdWUgdG8gZW5zdXJlIHRoZSBidWZmZXIgaXMgZnVsbHkgaW5pdGlhbGl6ZWQsIGl0J3Mgbm90IGEgY29uY2Vybi4gVGhlIGNvZGUgY2hlY2tzIHRoYXQgdGhlIGV4cGVjdGVkIG51bWJlciBvZiBieXRlcyBpcyByZWFkLlxuXG5GaW5hbGx5LCBJIGhhdmUgdG8gZW5zdXJlIHRoZSBwYXRjaCBkb2VzIG5vdCBsZWFrIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGludG8gdGhlIHNrYi4gVGhlcmUgYXJlIG5vIHN0cnVjdCBwYWRkaW5nIGlzc3Vlcy4gVGhlIHJlYWRzIGluIHRoZSBkcml2ZXIgd2lsbCBlbnN1cmUgYWxsIGRhdGEgaXMgaW4gdGhlIGxvY2FsIGJ1ZmZlci4gQW5kIGlmIGV2ZXJ5dGhpbmcgaXMgcmVhZCBmcm9tIEkyQywgYG1lbWNweWAgZG9lcyBhIGNvcHkgaW50byB0aGUgYHNrYmAsIGFuZCBubyBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyBhcmUgcGFydGlhbGx5IGluaXRpYWxpemVkLiBJIGRvbid0IHNlZSBhbnkgS01TQU4tc3BlY2lmaWMgcmlza3MgaGVyZS5cblxuVGhlcmVmb3JlLCBhZnRlciBhIGNhcmVmdWwgcmV2aWV3LCBJIGJlbGlldmUgdGhlIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2UgaXMgbG93LiBBbGwgYnVmZmVycyBhcmUgaW5pdGlhbGl6ZWQsIGFuZCB0aGUgY29kZSBleHBsaWNpdGx5IGNoZWNrcyB0aGUgcmV0dXJuIHZhbHVlcyBvZiBJMkMgZnVuY3Rpb25zIHRvIGVuc3VyZSBkYXRhIGludGVncml0eS4gVGhlcmVmb3JlLCBOZWVkc0tNU0FOIHNob3VsZCBiZSBmYWxzZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NjkxNSwiT3V0cHV0VG9rZW5zIjoyMDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNTU2LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjBUMjE6MDQ6NDIuNTgwNjIwNjY5WiIsIlNlcSI6MzQsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY5NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIHN1cHBvcnQgZm9yIGEgbmV3IE5GQyBjaGlwIChTVDIxTkZDRCkgd2hpY2ggdXNlcyByYXcgTkNJIGZyYW1lcyBvdmVyIEkyQyBpbnN0ZWFkIG9mIHRoZSBORExDIHByb3RvY29sLiBUaGUgY2hhbmdlcyBwcmltYXJpbHkgaW52b2x2ZSByZWFkaW5nIGRhdGEgZnJvbSB0aGUgSTJDIGJ1cyBpbnRvIGEgbG9jYWwgc3RhY2sgYnVmZmVyLCBhbGxvY2F0aW5nIGFuIHNrX2J1ZmYsIGFuZCBjb3B5aW5nIHRoZSByZWNlaXZlZCBkYXRhIGludG8gaXQuIFRoZSBjb2RlIGV4cGxpY2l0bHkgY2hlY2tzIHRoZSByZXR1cm4gdmFsdWVzIG9mIGBpMmNfbWFzdGVyX3JlY3ZgIHRvIGVuc3VyZSB0aGF0IHRoZSBidWZmZXIgaXMgZnVsbHkgaW5pdGlhbGl6ZWQgYmVmb3JlIGFueSBkYXRhIGlzIHJlYWQgZnJvbSBpdCBvciBjb3BpZWQgdG8gdGhlIHNrX2J1ZmYuIFRoZXJlIGFyZSBubyBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aXRoIHBhZGRpbmcgYmVpbmcgc2VudCB0byB1c2VyIHNwYWNlLCBub3IgYXJlIHRoZXJlIGFueSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcyB1c2VkIGluIGNvbnRyb2wgZmxvdy4gQW55IHBvdGVudGlhbCBtZW1vcnkgY29ycnVwdGlvbiwgb3V0LW9mLWJvdW5kcyBhY2Nlc3Nlcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyBpbiB0aGlzIGNvZGUgd291bGQgYmUgZWZmZWN0aXZlbHkgY2F1Z2h0IGJ5IEtBU0FOLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QganVzdGlmaWVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGludHJvZHVjZXMgc3VwcG9ydCBmb3IgYSBuZXcgTkZDIGNoaXAgKFNUMjFORkNEKSB3aGljaCB1c2VzIHJhdyBOQ0kgZnJhbWVzIG92ZXIgSTJDIGluc3RlYWQgb2YgdGhlIE5ETEMgcHJvdG9jb2wuIFRoZSBjaGFuZ2VzIHByaW1hcmlseSBpbnZvbHZlIHJlYWRpbmcgZGF0YSBmcm9tIHRoZSBJMkMgYnVzIGludG8gYSBsb2NhbCBzdGFjayBidWZmZXIsIGFsbG9jYXRpbmcgYW4gc2tfYnVmZiwgYW5kIGNvcHlpbmcgdGhlIHJlY2VpdmVkIGRhdGEgaW50byBpdC4gVGhlIGNvZGUgZXhwbGljaXRseSBjaGVja3MgdGhlIHJldHVybiB2YWx1ZXMgb2YgYGkyY19tYXN0ZXJfcmVjdmAgdG8gZW5zdXJlIHRoYXQgdGhlIGJ1ZmZlciBpcyBmdWxseSBpbml0aWFsaXplZCBiZWZvcmUgYW55IGRhdGEgaXMgcmVhZCBmcm9tIGl0IG9yIGNvcGllZCB0byB0aGUgc2tfYnVmZi4gVGhlcmUgYXJlIG5vIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdpdGggcGFkZGluZyBiZWluZyBzZW50IHRvIHVzZXIgc3BhY2UsIG5vciBhcmUgdGhlcmUgYW55IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzIHVzZWQgaW4gY29udHJvbCBmbG93LiBBbnkgcG90ZW50aWFsIG1lbW9yeSBjb3JydXB0aW9uLCBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzIGluIHRoaXMgY29kZSB3b3VsZCBiZSBlZmZlY3RpdmVseSBjYXVnaHQgYnkgS0FTQU4uIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBqdXN0aWZpZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow9tpjj[1] Phase: Succeeded StartedAt: 2026-08-20 21:05:08 +0000 UTC FinishedAt: 2026-08-20 21:05:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9tpjj[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-20 21:05:08 +0000 UTC FinishedAt: 2026-08-20 21:05:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9tpjj[2] Phase: Succeeded StartedAt: 2026-08-20 21:05:08 +0000 UTC FinishedAt: 2026-08-20 22:48:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9tpjj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9f69d05b5a85c417c73fa2d5c7a2d507ac81cf4b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","I2C","NFC_ST_NCI","NFC_ST_NCI_I2C"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ndlc_probe","ndlc_recv","ndlc_send","ndlc_close","st_nci_discover_se"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9f69d05b5a85c417c73fa2d5c7a2d507ac81cf4b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","I2C","NFC_ST_NCI","NFC_ST_NCI_I2C"],"series_id":"4170b9c8-1819-4e36-84a7-66096e59b400","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-20 21:05:08 +0000 UTC FinishedAt: 2026-08-20 22:48:03 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"9f69d05b5a85c417c73fa2d5c7a2d507ac81cf4b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","I2C","NFC_ST_NCI","NFC_ST_NCI_I2C"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ndlc_probe","ndlc_recv","ndlc_send","ndlc_close","st_nci_discover_se"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"9f69d05b5a85c417c73fa2d5c7a2d507ac81cf4b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","I2C","NFC_ST_NCI","NFC_ST_NCI_I2C"],"series_id":"4170b9c8-1819-4e36-84a7-66096e59b400","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow9tpjj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9f69d05b5a85c417c73fa2d5c7a2d507ac81cf4b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","I2C","NFC_ST_NCI","NFC_ST_NCI_I2C"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ndlc_probe","ndlc_recv","ndlc_send","ndlc_close","st_nci_discover_se"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9f69d05b5a85c417c73fa2d5c7a2d507ac81cf4b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","I2C","NFC_ST_NCI","NFC_ST_NCI_I2C"],"series_id":"4170b9c8-1819-4e36-84a7-66096e59b400","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-20 21:05:08 +0000 UTC FinishedAt: 2026-08-20 21:05:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9tpjj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9f69d05b5a85c417c73fa2d5c7a2d507ac81cf4b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","I2C","NFC_ST_NCI","NFC_ST_NCI_I2C"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ndlc_probe","ndlc_recv","ndlc_send","ndlc_close","st_nci_discover_se"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9f69d05b5a85c417c73fa2d5c7a2d507ac81cf4b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","I2C","NFC_ST_NCI","NFC_ST_NCI_I2C"],"series_id":"4170b9c8-1819-4e36-84a7-66096e59b400","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-20 21:05:08 +0000 UTC FinishedAt: 2026-08-20 21:05:14 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"9f69d05b5a85c417c73fa2d5c7a2d507ac81cf4b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","I2C","NFC_ST_NCI","NFC_ST_NCI_I2C"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow9tpjj/series-workflow9tpjj-convert-artifact-3242636782/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9tpjj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9f69d05b5a85c417c73fa2d5c7a2d507ac81cf4b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","I2C","NFC_ST_NCI","NFC_ST_NCI_I2C"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ndlc_probe","ndlc_recv","ndlc_send","ndlc_close","st_nci_discover_se"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9f69d05b5a85c417c73fa2d5c7a2d507ac81cf4b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","I2C","NFC_ST_NCI","NFC_ST_NCI_I2C"],"series_id":"4170b9c8-1819-4e36-84a7-66096e59b400","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-20 21:05:18 +0000 UTC FinishedAt: 2026-08-20 21:21:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9tpjj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9f69d05b5a85c417c73fa2d5c7a2d507ac81cf4b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","I2C","NFC_ST_NCI","NFC_ST_NCI_I2C"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ndlc_probe","ndlc_recv","ndlc_send","ndlc_close","st_nci_discover_se"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9f69d05b5a85c417c73fa2d5c7a2d507ac81cf4b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","I2C","NFC_ST_NCI","NFC_ST_NCI_I2C"],"series_id":"4170b9c8-1819-4e36-84a7-66096e59b400","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-20 21:05:18 +0000 UTC FinishedAt: 2026-08-20 21:21:44 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*a26b0217-1f84-4628-936b-ea4214eb0441,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow9tpjj/series-workflow9tpjj-convert-artifact-3242636782/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "12adc5a1-f6b4-4a10-9856-4fb09e51ebf2", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow9tpjj/series-workflow9tpjj-build-action-1099365716/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9tpjj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9f69d05b5a85c417c73fa2d5c7a2d507ac81cf4b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","I2C","NFC_ST_NCI","NFC_ST_NCI_I2C"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ndlc_probe","ndlc_recv","ndlc_send","ndlc_close","st_nci_discover_se"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9f69d05b5a85c417c73fa2d5c7a2d507ac81cf4b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","I2C","NFC_ST_NCI","NFC_ST_NCI_I2C"],"series_id":"4170b9c8-1819-4e36-84a7-66096e59b400","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-20 21:05:18 +0000 UTC FinishedAt: 2026-08-20 21:21:34 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*a26b0217-1f84-4628-936b-ea4214eb0441,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow9tpjj/series-workflow9tpjj-convert-artifact-3242636782/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "12adc5a1-f6b4-4a10-9856-4fb09e51ebf2", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow9tpjj/series-workflow9tpjj-build-action-1099365716/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9tpjj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9f69d05b5a85c417c73fa2d5c7a2d507ac81cf4b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","I2C","NFC_ST_NCI","NFC_ST_NCI_I2C"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ndlc_probe","ndlc_recv","ndlc_send","ndlc_close","st_nci_discover_se"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9f69d05b5a85c417c73fa2d5c7a2d507ac81cf4b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","I2C","NFC_ST_NCI","NFC_ST_NCI_I2C"],"series_id":"4170b9c8-1819-4e36-84a7-66096e59b400","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-20 21:21:44 +0000 UTC FinishedAt: 2026-08-20 21:21:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9tpjj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9f69d05b5a85c417c73fa2d5c7a2d507ac81cf4b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","I2C","NFC_ST_NCI","NFC_ST_NCI_I2C"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ndlc_probe","ndlc_recv","ndlc_send","ndlc_close","st_nci_discover_se"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9f69d05b5a85c417c73fa2d5c7a2d507ac81cf4b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","I2C","NFC_ST_NCI","NFC_ST_NCI_I2C"],"series_id":"4170b9c8-1819-4e36-84a7-66096e59b400","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-20 21:21:44 +0000 UTC FinishedAt: 2026-08-20 21:21:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9tpjj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9f69d05b5a85c417c73fa2d5c7a2d507ac81cf4b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","I2C","NFC_ST_NCI","NFC_ST_NCI_I2C"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ndlc_probe","ndlc_recv","ndlc_send","ndlc_close","st_nci_discover_se"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9f69d05b5a85c417c73fa2d5c7a2d507ac81cf4b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","I2C","NFC_ST_NCI","NFC_ST_NCI_I2C"],"series_id":"4170b9c8-1819-4e36-84a7-66096e59b400","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-20 21:21:44 +0000 UTC FinishedAt: 2026-08-20 21:21:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9tpjj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9f69d05b5a85c417c73fa2d5c7a2d507ac81cf4b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","I2C","NFC_ST_NCI","NFC_ST_NCI_I2C"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ndlc_probe","ndlc_recv","ndlc_send","ndlc_close","st_nci_discover_se"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9f69d05b5a85c417c73fa2d5c7a2d507ac81cf4b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","I2C","NFC_ST_NCI","NFC_ST_NCI_I2C"],"series_id":"4170b9c8-1819-4e36-84a7-66096e59b400","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-20 21:21:44 +0000 UTC FinishedAt: 2026-08-20 21:21:49 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"9f69d05b5a85c417c73fa2d5c7a2d507ac81cf4b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","I2C","NFC_ST_NCI","NFC_ST_NCI_I2C"],"series_id":"4170b9c8-1819-4e36-84a7-66096e59b400","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow9tpjj/series-workflow9tpjj-convert-artifact-510315489/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9tpjj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9f69d05b5a85c417c73fa2d5c7a2d507ac81cf4b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","I2C","NFC_ST_NCI","NFC_ST_NCI_I2C"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ndlc_probe","ndlc_recv","ndlc_send","ndlc_close","st_nci_discover_se"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9f69d05b5a85c417c73fa2d5c7a2d507ac81cf4b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","I2C","NFC_ST_NCI","NFC_ST_NCI_I2C"],"series_id":"4170b9c8-1819-4e36-84a7-66096e59b400","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-20 21:21:54 +0000 UTC FinishedAt: 2026-08-20 21:24:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9tpjj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9f69d05b5a85c417c73fa2d5c7a2d507ac81cf4b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","I2C","NFC_ST_NCI","NFC_ST_NCI_I2C"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ndlc_probe","ndlc_recv","ndlc_send","ndlc_close","st_nci_discover_se"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9f69d05b5a85c417c73fa2d5c7a2d507ac81cf4b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","I2C","NFC_ST_NCI","NFC_ST_NCI_I2C"],"series_id":"4170b9c8-1819-4e36-84a7-66096e59b400","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-20 21:21:54 +0000 UTC FinishedAt: 2026-08-20 21:24:02 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*12adc5a1-f6b4-4a10-9856-4fb09e51ebf2,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Boot test: Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:report-findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow9tpjj/series-workflow9tpjj-build-action-1099365716/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },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-workflow9tpjj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9f69d05b5a85c417c73fa2d5c7a2d507ac81cf4b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","I2C","NFC_ST_NCI","NFC_ST_NCI_I2C"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ndlc_probe","ndlc_recv","ndlc_send","ndlc_close","st_nci_discover_se"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9f69d05b5a85c417c73fa2d5c7a2d507ac81cf4b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","I2C","NFC_ST_NCI","NFC_ST_NCI_I2C"],"series_id":"4170b9c8-1819-4e36-84a7-66096e59b400","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-20 21:24:12 +0000 UTC FinishedAt: 2026-08-20 21:24:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9tpjj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9f69d05b5a85c417c73fa2d5c7a2d507ac81cf4b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","I2C","NFC_ST_NCI","NFC_ST_NCI_I2C"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ndlc_probe","ndlc_recv","ndlc_send","ndlc_close","st_nci_discover_se"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9f69d05b5a85c417c73fa2d5c7a2d507ac81cf4b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","I2C","NFC_ST_NCI","NFC_ST_NCI_I2C"],"series_id":"4170b9c8-1819-4e36-84a7-66096e59b400","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-20 21:24:12 +0000 UTC FinishedAt: 2026-08-20 21:24:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9tpjj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9f69d05b5a85c417c73fa2d5c7a2d507ac81cf4b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","I2C","NFC_ST_NCI","NFC_ST_NCI_I2C"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ndlc_probe","ndlc_recv","ndlc_send","ndlc_close","st_nci_discover_se"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9f69d05b5a85c417c73fa2d5c7a2d507ac81cf4b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","I2C","NFC_ST_NCI","NFC_ST_NCI_I2C"],"series_id":"4170b9c8-1819-4e36-84a7-66096e59b400","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-20 21:24:12 +0000 UTC FinishedAt: 2026-08-20 21:40:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9tpjj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9f69d05b5a85c417c73fa2d5c7a2d507ac81cf4b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","I2C","NFC_ST_NCI","NFC_ST_NCI_I2C"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ndlc_probe","ndlc_recv","ndlc_send","ndlc_close","st_nci_discover_se"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9f69d05b5a85c417c73fa2d5c7a2d507ac81cf4b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","I2C","NFC_ST_NCI","NFC_ST_NCI_I2C"],"series_id":"4170b9c8-1819-4e36-84a7-66096e59b400","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-20 21:24:12 +0000 UTC FinishedAt: 2026-08-20 21:40:39 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*a26b0217-1f84-4628-936b-ea4214eb0441,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow9tpjj/series-workflow9tpjj-convert-artifact-510315489/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "8d49dbdc-bd76-4c6d-b0a4-cd04a01b1e0a", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow9tpjj/series-workflow9tpjj-build-action-1061309677/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9tpjj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9f69d05b5a85c417c73fa2d5c7a2d507ac81cf4b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","I2C","NFC_ST_NCI","NFC_ST_NCI_I2C"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ndlc_probe","ndlc_recv","ndlc_send","ndlc_close","st_nci_discover_se"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9f69d05b5a85c417c73fa2d5c7a2d507ac81cf4b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","I2C","NFC_ST_NCI","NFC_ST_NCI_I2C"],"series_id":"4170b9c8-1819-4e36-84a7-66096e59b400","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-20 21:24:12 +0000 UTC FinishedAt: 2026-08-20 21:40:29 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*a26b0217-1f84-4628-936b-ea4214eb0441,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow9tpjj/series-workflow9tpjj-convert-artifact-510315489/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "8d49dbdc-bd76-4c6d-b0a4-cd04a01b1e0a", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow9tpjj/series-workflow9tpjj-build-action-1061309677/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9tpjj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9f69d05b5a85c417c73fa2d5c7a2d507ac81cf4b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","I2C","NFC_ST_NCI","NFC_ST_NCI_I2C"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ndlc_probe","ndlc_recv","ndlc_send","ndlc_close","st_nci_discover_se"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9f69d05b5a85c417c73fa2d5c7a2d507ac81cf4b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","I2C","NFC_ST_NCI","NFC_ST_NCI_I2C"],"series_id":"4170b9c8-1819-4e36-84a7-66096e59b400","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-20 21:40:39 +0000 UTC FinishedAt: 2026-08-20 21:40:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9tpjj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9f69d05b5a85c417c73fa2d5c7a2d507ac81cf4b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","I2C","NFC_ST_NCI","NFC_ST_NCI_I2C"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ndlc_probe","ndlc_recv","ndlc_send","ndlc_close","st_nci_discover_se"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9f69d05b5a85c417c73fa2d5c7a2d507ac81cf4b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","I2C","NFC_ST_NCI","NFC_ST_NCI_I2C"],"series_id":"4170b9c8-1819-4e36-84a7-66096e59b400","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-20 21:40:39 +0000 UTC FinishedAt: 2026-08-20 21:40:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9tpjj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9f69d05b5a85c417c73fa2d5c7a2d507ac81cf4b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","I2C","NFC_ST_NCI","NFC_ST_NCI_I2C"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ndlc_probe","ndlc_recv","ndlc_send","ndlc_close","st_nci_discover_se"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9f69d05b5a85c417c73fa2d5c7a2d507ac81cf4b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","I2C","NFC_ST_NCI","NFC_ST_NCI_I2C"],"series_id":"4170b9c8-1819-4e36-84a7-66096e59b400","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-20 21:40:39 +0000 UTC FinishedAt: 2026-08-20 21:42:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9tpjj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9f69d05b5a85c417c73fa2d5c7a2d507ac81cf4b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","I2C","NFC_ST_NCI","NFC_ST_NCI_I2C"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ndlc_probe","ndlc_recv","ndlc_send","ndlc_close","st_nci_discover_se"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9f69d05b5a85c417c73fa2d5c7a2d507ac81cf4b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","I2C","NFC_ST_NCI","NFC_ST_NCI_I2C"],"series_id":"4170b9c8-1819-4e36-84a7-66096e59b400","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-20 21:40:39 +0000 UTC FinishedAt: 2026-08-20 21:42:26 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*8d49dbdc-bd76-4c6d-b0a4-cd04a01b1e0a,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Boot test: Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:report-findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow9tpjj/series-workflow9tpjj-build-action-1061309677/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },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-workflow9tpjj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9f69d05b5a85c417c73fa2d5c7a2d507ac81cf4b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","I2C","NFC_ST_NCI","NFC_ST_NCI_I2C"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ndlc_probe","ndlc_recv","ndlc_send","ndlc_close","st_nci_discover_se"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9f69d05b5a85c417c73fa2d5c7a2d507ac81cf4b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","I2C","NFC_ST_NCI","NFC_ST_NCI_I2C"],"series_id":"4170b9c8-1819-4e36-84a7-66096e59b400","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-20 21:42:36 +0000 UTC FinishedAt: 2026-08-20 22:48:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9tpjj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9f69d05b5a85c417c73fa2d5c7a2d507ac81cf4b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","I2C","NFC_ST_NCI","NFC_ST_NCI_I2C"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ndlc_probe","ndlc_recv","ndlc_send","ndlc_close","st_nci_discover_se"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9f69d05b5a85c417c73fa2d5c7a2d507ac81cf4b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","I2C","NFC_ST_NCI","NFC_ST_NCI_I2C"],"series_id":"4170b9c8-1819-4e36-84a7-66096e59b400","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-20 21:42:36 +0000 UTC FinishedAt: 2026-08-20 22:48:03 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ndlc_probe","ndlc_recv","ndlc_send","ndlc_close","st_nci_discover_se"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*12adc5a1-f6b4-4a10-9856-4fb09e51ebf2,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*8d49dbdc-bd76-4c6d-b0a4-cd04a01b1e0a,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow9tpjj/series-workflow9tpjj-build-action-1099365716/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow9tpjj/series-workflow9tpjj-build-action-1061309677/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow9tpjj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9f69d05b5a85c417c73fa2d5c7a2d507ac81cf4b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","I2C","NFC_ST_NCI","NFC_ST_NCI_I2C"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ndlc_probe","ndlc_recv","ndlc_send","ndlc_close","st_nci_discover_se"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9f69d05b5a85c417c73fa2d5c7a2d507ac81cf4b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","I2C","NFC_ST_NCI","NFC_ST_NCI_I2C"],"series_id":"4170b9c8-1819-4e36-84a7-66096e59b400","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-20 21:42:36 +0000 UTC FinishedAt: 2026-08-20 21:42:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9tpjj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9f69d05b5a85c417c73fa2d5c7a2d507ac81cf4b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","I2C","NFC_ST_NCI","NFC_ST_NCI_I2C"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ndlc_probe","ndlc_recv","ndlc_send","ndlc_close","st_nci_discover_se"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9f69d05b5a85c417c73fa2d5c7a2d507ac81cf4b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","I2C","NFC_ST_NCI","NFC_ST_NCI_I2C"],"series_id":"4170b9c8-1819-4e36-84a7-66096e59b400","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-20 21:42:36 +0000 UTC FinishedAt: 2026-08-20 21:42:41 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ndlc_probe","ndlc_recv","ndlc_send","ndlc_close","st_nci_discover_se"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow9tpjj/series-workflow9tpjj-convert-artifact-3580562550/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9tpjj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9f69d05b5a85c417c73fa2d5c7a2d507ac81cf4b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","I2C","NFC_ST_NCI","NFC_ST_NCI_I2C"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ndlc_probe","ndlc_recv","ndlc_send","ndlc_close","st_nci_discover_se"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9f69d05b5a85c417c73fa2d5c7a2d507ac81cf4b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","I2C","NFC_ST_NCI","NFC_ST_NCI_I2C"],"series_id":"4170b9c8-1819-4e36-84a7-66096e59b400","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-20 21:42:36 +0000 UTC FinishedAt: 2026-08-20 21:42:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9tpjj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9f69d05b5a85c417c73fa2d5c7a2d507ac81cf4b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","I2C","NFC_ST_NCI","NFC_ST_NCI_I2C"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ndlc_probe","ndlc_recv","ndlc_send","ndlc_close","st_nci_discover_se"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9f69d05b5a85c417c73fa2d5c7a2d507ac81cf4b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","I2C","NFC_ST_NCI","NFC_ST_NCI_I2C"],"series_id":"4170b9c8-1819-4e36-84a7-66096e59b400","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-20 21:42:36 +0000 UTC FinishedAt: 2026-08-20 21:42:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9tpjj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9f69d05b5a85c417c73fa2d5c7a2d507ac81cf4b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","I2C","NFC_ST_NCI","NFC_ST_NCI_I2C"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ndlc_probe","ndlc_recv","ndlc_send","ndlc_close","st_nci_discover_se"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9f69d05b5a85c417c73fa2d5c7a2d507ac81cf4b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","I2C","NFC_ST_NCI","NFC_ST_NCI_I2C"],"series_id":"4170b9c8-1819-4e36-84a7-66096e59b400","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-20 21:42:37 +0000 UTC FinishedAt: 2026-08-20 21:42:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9tpjj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9f69d05b5a85c417c73fa2d5c7a2d507ac81cf4b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","I2C","NFC_ST_NCI","NFC_ST_NCI_I2C"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ndlc_probe","ndlc_recv","ndlc_send","ndlc_close","st_nci_discover_se"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9f69d05b5a85c417c73fa2d5c7a2d507ac81cf4b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","I2C","NFC_ST_NCI","NFC_ST_NCI_I2C"],"series_id":"4170b9c8-1819-4e36-84a7-66096e59b400","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-20 21:42:47 +0000 UTC FinishedAt: 2026-08-20 22:48:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9tpjj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9f69d05b5a85c417c73fa2d5c7a2d507ac81cf4b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","I2C","NFC_ST_NCI","NFC_ST_NCI_I2C"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ndlc_probe","ndlc_recv","ndlc_send","ndlc_close","st_nci_discover_se"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9f69d05b5a85c417c73fa2d5c7a2d507ac81cf4b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","I2C","NFC_ST_NCI","NFC_ST_NCI_I2C"],"series_id":"4170b9c8-1819-4e36-84a7-66096e59b400","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-20 21:42:47 +0000 UTC FinishedAt: 2026-08-20 22:47:53 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*12adc5a1-f6b4-4a10-9856-4fb09e51ebf2,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*8d49dbdc-bd76-4c6d-b0a4-cd04a01b1e0a,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Fuzz,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow9tpjj/series-workflow9tpjj-build-action-1099365716/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:/patched,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow9tpjj/series-workflow9tpjj-build-action-1061309677/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:config,Path:/tmp/config.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow9tpjj/series-workflow9tpjj-convert-artifact-3580562550/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,}