Name: series-workflow6kf9n Phase: Succeeded StartedAt: 2026-07-30 08:15:48 +0000 UTC FinishedAt: 2026-07-30 12:33:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6kf9n[0] Phase: Succeeded StartedAt: 2026-07-30 08:15:48 +0000 UTC FinishedAt: 2026-07-30 08:38:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6kf9n[0].run-triage Phase: Succeeded StartedAt: 2026-07-30 08:15:48 +0000 UTC FinishedAt: 2026-07-30 08:38:44 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "57aa1718d5953dd532137d43b696c68545c2e0b3", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_PKTGEN" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "57aa1718d5953dd532137d43b696c68545c2e0b3", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_PKTGEN" ], "series_id": "43a1a5d9-9180-4e6f-9abd-95458fda35a5" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "pktgen_if_write", "pktgen_thread_write", "pgctrl_write", "pktgen_thread_worker" ], "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+CgkJCTx0ZD4yMDI2LzA3LzMwIDA4OjM3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9QS1RHRU4mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtwa3RnZW5faWZfd3JpdGUmIzM0OywKICAgICYjMzQ7cGt0Z2VuX3RocmVhZF93cml0ZSYjMzQ7LAogICAgJiMzNDtwZ2N0cmxfd3JpdGUmIzM0OywKICAgICYjMzQ7cGt0Z2VuX3RocmVhZF93b3JrZXImIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgaW5maW5pdGUgbG9vcCBvciBvdXQtb2YtYm91bmRzIGlzc3VlIGluIHBrdGdlbl9maW5hbGl6ZV9za2Igd2hlbiBjYWxjdWxhdGluZyBmcmFnbWVudCBsZW5ndGhzLiBUaGlzIGlzIHJlYWNoYWJsZSBieSBjb25maWd1cmluZyBwa3RnZW4gdmlhIHByb2NmcyBhbmQgc3RhcnRpbmcgcGFja2V0IGdlbmVyYXRpb24uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDg6Mzc8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA2OGNkMTg4N2FiM2RkN2MzNDE1OGE2MDNkOWZhMDUzMWI5MzJjMTI0XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdWwgMzAgMDg6Mzc6NDkgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L2NvcmUvcGt0Z2VuLmMgYi9uZXQvY29yZS9wa3RnZW4uY1xuaW5kZXggOGUxODViMzE4Mjg4NS4uMmRiYjdjYWFjZDBkOSAxMDA2NDRcbi0tLSBhL25ldC9jb3JlL3BrdGdlbi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvY29yZS9wa3RnZW4uY1xuQEAgLTI4NDMsOCAmIzQzOzI4NDMsOCBAQCBzdGF0aWMgdm9pZCBwa3RnZW5fZmluYWxpemVfc2tiKHN0cnVjdCBwa3RnZW5fZGV2ICpwa3RfZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0XHR9XG4gXG4gXHRcdGkgPSAwO1xuLVx0XHRmcmFnX2xlbiA9IG1pbl90KGludCwgZGF0YWxlbiAvIGZyYWdzLCBQQUdFX1NJWkUpO1xuLVx0XHR3aGlsZSAoZGF0YWxlbiBcdTAwM2UgMCkge1xuJiM0MztcdFx0ZnJhZ19sZW4gPSBtaW5fdChpbnQsIERJVl9ST1VORF9VUChkYXRhbGVuLCBmcmFncyksIFBBR0VfU0laRSk7XG4mIzQzO1x0XHR3aGlsZSAoZGF0YWxlbiBcdTAwM2UgMCBcdTAwMjZcdTAwMjYgaSBcdTAwM2MgZnJhZ3MpIHtcbiBcdFx0XHRpZiAodW5saWtlbHkoIXBrdF9kZXYtXHUwMDNlcGFnZSkpIHtcbiBcdFx0XHRcdGludCBub2RlID0gbnVtYV9ub2RlX2lkKCk7XG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDg6Mzc8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9QS1RHRU4mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtwa3RnZW5faWZfd3JpdGUmIzM0OywKICAgICYjMzQ7cGt0Z2VuX3RocmVhZF93cml0ZSYjMzQ7LAogICAgJiMzNDtwZ2N0cmxfd3JpdGUmIzM0OywKICAgICYjMzQ7cGt0Z2VuX3RocmVhZF93b3JrZXImIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgaW5maW5pdGUgbG9vcCBvciBvdXQtb2YtYm91bmRzIGlzc3VlIGluIHBrdGdlbl9maW5hbGl6ZV9za2Igd2hlbiBjYWxjdWxhdGluZyBmcmFnbWVudCBsZW5ndGhzLiBUaGlzIGlzIHJlYWNoYWJsZSBieSBjb25maWd1cmluZyBwa3RnZW4gdmlhIHByb2NmcyBhbmQgc3RhcnRpbmcgcGFja2V0IGdlbmVyYXRpb24uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA2OGNkMTg4N2FiM2RkN2MzNDE1OGE2MDNkOWZhMDUzMWI5MzJjMTI0CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBKdWwgMzAgMDg6Mzc6NDkgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvY29yZS9wa3RnZW4uYyBiL25ldC9jb3JlL3BrdGdlbi5jCmluZGV4IDhlMTg1YjMxODI4ODUuLjJkYmI3Y2FhY2QwZDkgMTAwNjQ0Ci0tLSBhL25ldC9jb3JlL3BrdGdlbi5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9jb3JlL3BrdGdlbi5jCkBAIC0yODQzLDggJiM0MzsyODQzLDggQEAgc3RhdGljIHZvaWQgcGt0Z2VuX2ZpbmFsaXplX3NrYihzdHJ1Y3QgcGt0Z2VuX2RldiAqcGt0X2Rldiwgc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAkJfQogCiAJCWkgPSAwOwotCQlmcmFnX2xlbiA9IG1pbl90KGludCwgZGF0YWxlbiAvIGZyYWdzLCBQQUdFX1NJWkUpOwotCQl3aGlsZSAoZGF0YWxlbiAmZ3Q7IDApIHsKJiM0MzsJCWZyYWdfbGVuID0gbWluX3QoaW50LCBESVZfUk9VTkRfVVAoZGF0YWxlbiwgZnJhZ3MpLCBQQUdFX1NJWkUpOwomIzQzOwkJd2hpbGUgKGRhdGFsZW4gJmd0OyAwICZhbXA7JmFtcDsgaSAmbHQ7IGZyYWdzKSB7CiAJCQlpZiAodW5saWtlbHkoIXBrdF9kZXYtJmd0O3BhZ2UpKSB7CiAJCQkJaW50IG5vZGUgPSBudW1hX25vZGVfaWQoKTsKIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwODozNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDkwCgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMjgzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIHBrdGdlbi5jIFBhdGNoOiBBZGRyZXNzaW5nIFBvdGVudGlhbCBTS0IgRnJhZ21lbnQgSXNzdWVzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQgdHdlYWtzIGBuZXQvY29yZS9wa3RnZW4uY2AsIHNwZWNpZmljYWxseSB0aGUgYHBrdGdlbl9maW5hbGl6ZV9za2JgIGZ1bmN0aW9uLiBUaGUgY29kZSBjaGFuZ2UgaW1tZWRpYXRlbHkganVtcHMgb3V0IGF0IG1lOiBhIG1vZGlmaWNhdGlvbiB0byBob3cgYGZyYWdfbGVuYCBpcyBjYWxjdWxhdGVkIGFuZCB0aGUgYWRkaXRpb24gb2YgYSBjaGVjayB3aXRoaW4gdGhlIGB3aGlsZWAgbG9vcC4gSW5pdGlhbGx5LCBJIHN1c3BlY3RlZCBpdCB3YXMgYWJvdXQgb3B0aW1pemluZyBmcmFnbWVudCBhbGxvY2F0aW9uIGJ1dCBsb29raW5nIGNsb3NlciBJIHNlZSB0aGUgbW9yZSBsaWtlbHkgcmVhc29uLgoKVGhlIG9yaWdpbmFsIGNvZGUgdXNlZCBgZGF0YWxlbiAvIGZyYWdzYCB0byBkZXRlcm1pbmUgYGZyYWdfbGVuYC4gTXkgbWluZCByYWNlcyB0aHJvdWdoIHRoZSBpbXBsaWNhdGlvbnMuIElmIGBkYXRhbGVuYCBpcyBzbWFsbGVyIHRoYW4gYGZyYWdzYCwgdGhlIGRpdmlzaW9uIHJlc3VsdHMgaW4gemVyby4gVGhhdCBtZWFucyB3ZSBjb3VsZCBlbmQgdXAgd2l0aCBhIHplcm8tbGVuZ3RoIGZyYWdtZW50LiBUaGVuIHRoZSBleGlzdGluZyBjb2RlIHdvdWxkIGxlYWQgdG8gYW4gaW5maW5pdGUgbG9vcCBiZWNhdXNlIGBkYXRhbGVuYCB3b3VsZCBuZXZlciBiZSBkZWNyZW1lbnRlZCBhbmQgdGhlIGxvb3Agd291bGRuJiMzOTt0IGV4aXQuIE9yIGV2ZW4gd29yc2UsIGlmIGBkYXRhbGVuYCBpcyBub3QgZnVsbHkgY29uc3VtZWQsIHRoZW4gYGlgIGNvdWxkIGV4Y2VlZCBgTUFYX1NLQl9GUkFHU2AsIHdoaWNoIGxlYWRzIHRvIGFuIE91dC1vZi1Cb3VuZHMgbWVtb3J5IGFjY2VzcyBpc3N1ZS4gVGhlIGNoYW5nZSBgRElWX1JPVU5EX1VQKGRhdGFsZW4sIGZyYWdzKWAgY291cGxlZCB3aXRoIHRoZSBhZGRpdGlvbmFsIGBpICZsdDsgZnJhZ3NgIGNoZWNrIGluIHRoZSBgd2hpbGVgIGxvb3AgaXMgYSBjbGVhciBhdHRlbXB0IHRvIGF2b2lkIGJvdGggb2YgdGhvc2Ugc2NlbmFyaW9zLiBXZSBhcmUgbm93IGVuc3VyaW5nIHRoYXQgd2UgKmFsd2F5cyogYWxsb2NhdGUgc29tZSBieXRlcywgYW5kIHRoYXQgd2UgZG9uJiMzOTt0IGV4Y2VlZCB0aGUgbnVtYmVyIG9mIGZyYWdtZW50cy4KCkkgbmVlZCB0byBjb25maXJtIHRoaXMgdW5kZXJzdGFuZGluZywgc28gSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IHJldmlldyB0aGUgY29udGV4dCBvZiBgcGt0Z2VuX2ZpbmFsaXplX3NrYmAgYW5kIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCBvdGhlciBwYXJ0cyBvZiBgcGt0Z2VuLmNgLCBlc3BlY2lhbGx5IHJlbGF0ZWQgdG8gYHBrdGdlbl9kZXZgLiBUaW1lIHRvIGZpcmUgdXAgYGdyZXBwZXJgIGFuZCBzZWUgd2hhdCBlbHNlIGlzIGdvaW5nIG9uIGluIHRoYXQgZmlsZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGZ1bGwgcGljdHVyZSB0byBjb25maXJtIHRoaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDg6Mzc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGt0Z2VuX2ZpbmFsaXplX3NrYiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9jb3JlL3BrdGdlbi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9jb3JlL3BrdGdlbi5jPTI4MTQ9c3RhdGljIGlubGluZSBfX2JlMTYgYnVpbGRfdGNpKHVuc2lnbmVkIGludCBpZCwgdW5zaWduZWQgaW50IGNmaSxcbi0tXG5uZXQvY29yZS9wa3RnZW4uYy0yODE5LVxubmV0L2NvcmUvcGt0Z2VuLmM6MjgyMDpzdGF0aWMgdm9pZCBwa3RnZW5fZmluYWxpemVfc2tiKHN0cnVjdCBwa3RnZW5fZGV2ICpwa3RfZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxubmV0L2NvcmUvcGt0Z2VuLmMtMjgyMS1cdFx0XHRcdGludCBkYXRhbGVuKVxuLS1cbm5ldC9jb3JlL3BrdGdlbi5jPTI5Mjc9c3RhdGljIHN0cnVjdCBza19idWZmICpmaWxsX3BhY2tldF9pcHY0KHN0cnVjdCBuZXRfZGV2aWNlICpvZGV2LFxuLS1cbm5ldC9jb3JlL3BrdGdlbi5jLTMwMjctXG5uZXQvY29yZS9wa3RnZW4uYzozMDI4Olx0cGt0Z2VuX2ZpbmFsaXplX3NrYihwa3RfZGV2LCBza2IsIGRhdGFsZW4pO1xubmV0L2NvcmUvcGt0Z2VuLmMtMzAyOS1cbi0tXG5uZXQvY29yZS9wa3RnZW4uYz0zMDU1PXN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqZmlsbF9wYWNrZXRfaXB2NihzdHJ1Y3QgbmV0X2RldmljZSAqb2Rldixcbi0tXG5uZXQvY29yZS9wa3RnZW4uYy0zMTYyLVxubmV0L2NvcmUvcGt0Z2VuLmM6MzE2MzpcdHBrdGdlbl9maW5hbGl6ZV9za2IocGt0X2Rldiwgc2tiLCBkYXRhbGVuKTtcbm5ldC9jb3JlL3BrdGdlbi5jLTMxNjQtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDg6Mzc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzEyNgoJCQkJCQkJb3V0cHV0OiAyNwoJCQkJCQkJdGhvdWdodHM6IDQ3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHVuZGVyc3RhbmRpbmcsIGZyYW1lZCBhcyBteSBpbnRlcm5hbCB0aG91Z2h0IHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIHRoZSBQYWNrZXQgR2VuZXJhdGlvbiBDb2RlKioKCkFscmlnaHQsIEkmIzM5O20gZGlnZ2luZyBpbnRvIGBuZXQvY29yZS9wa3RnZW4uY2AgYWdhaW4uIEkmIzM5O20gc2VlaW5nIHRoYXQgYHBrdGdlbl9maW5hbGl6ZV9za2JgIGlzIGEga2V5IGZ1bmN0aW9uIGhlcmUuIFRoZSBpbnRlcmVzdGluZyB0aGluZyBpcyB0aGF0IGl0JiMzOTtzIGJlaW5nIGNhbGxlZCBieSBgZmlsbF9wYWNrZXRfaXB2NGAgYW5kIGBmaWxsX3BhY2tldF9pcHY2YC4gVGhhdCB0ZWxscyBtZSBpdCYjMzk7cyBjZW50cmFsIHRvIGNvbnN0cnVjdGluZyBhbmQgZmluYWxpemluZyBib3RoIElQdjQgYW5kIElQdjYgcGFja2V0cyB3aXRoaW4gdGhpcyBwYWNrZXQgZ2VuZXJhdGlvbiBmcmFtZXdvcmsuIE5vdyBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgY29uZmlndXJhdGlvbiB0aGF0IGVuYWJsZXMgdGhpcyBmdW5jdGlvbmFsaXR5LiBXaGF0IGFyZSB0aGUgcmVsZXZhbnQga2VybmVsIGNvbmZpZyBvcHRpb25zIHRoYXQgYnJpbmcgdGhpcyBjb2RlIGludG8gdGhlIGJ1aWxkPyBUaW1lIHRvIGNoZWNrIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDg6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGt0Z2VuJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2NvcmUvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2NvcmUvTWFrZWZpbGU9MjY9b2JqLSQoQ09ORklHX1BST0NfRlMpICYjNDM7PSBuZXQtcHJvY2ZzLm9cbm5ldC9jb3JlL01ha2VmaWxlOjI3Om9iai0kKENPTkZJR19ORVRfUEtUR0VOKSAmIzQzOz0gcGt0Z2VuLm9cbm5ldC9jb3JlL01ha2VmaWxlLTI4LW9iai0kKENPTkZJR19ORVRQT0xMKSAmIzQzOz0gbmV0cG9sbC5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDg6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzQ0MQoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDQwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBzdW1tYXJpemVkIGluIHRoZSBmaXJzdCBwZXJzb24sIGFzc3VtaW5nIHRoZSBjb250ZXh0IGlzIGtlcm5lbCBjb25maWd1cmF0aW9uIGFuZCB0aGUgdXNlciBpcyBhbiBleHBlcnQ6CgoqKkludmVzdGlnYXRpbmcgYSBDb25maWd1cmF0aW9uIE9wdGlvbioqCgpBbHJpZ2h0LCBzbyBpdCYjMzk7cyBgQ09ORklHX05FVF9QS1RHRU5gLiBJIHJlY29nbml6ZSB0aGF0IGltbWVkaWF0ZWx5LiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGVyZSB0aGlzIG9wdGlvbiBpcyBkZWZpbmVkIHdpdGhpbiB0aGUga2VybmVsJiMzOTtzIEtjb25maWcgc3lzdGVtLiBHaXZlbiBteSBleHBlcmllbmNlLCB0aGUgbG9naWNhbCBwbGFjZSB0byBsb29rIGZpcnN0IGlzIGVpdGhlciBpbiBgbmV0L0tjb25maWdgIOKAkyB0aGF0JiMzOTtzIG9mdGVuIHRoZSBtYWluIGVudHJ5IHBvaW50IGZvciBuZXR3b3JrLXJlbGF0ZWQgb3B0aW9ucyDigJMgb3IgcGVyaGFwcyBgbmV0L2NvcmUvS2NvbmZpZ2AsIHdoaWNoIGNvdWxkIGNvbnRhaW4gc29tZSBvZiB0aGUgbW9yZSBmdW5kYW1lbnRhbCwgY29yZSBuZXR3b3JraW5nIGNvbmZpZ3VyYXRpb25zLiBJJiMzOTtsbCBtZW50YWxseSBwcmlvcml0aXplIHRob3NlIHR3byBsb2NhdGlvbnMgYW5kIHN0YXJ0IGRpZ2dpbmcgaW50byB0aGUgS2NvbmZpZyBmaWxlcy4gVGhlIGdvYWwgaXMgdG8gdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzIGFuZCBkZWZhdWx0IGJlaGF2aW9yIG9mIGBORVRfUEtUR0VOYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwODozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkVUX1BLVEdFTiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvS2NvbmZpZz0zODQ9bWVudSBcJiMzNDtOZXR3b3JrIHRlc3RpbmdcJiMzNDtcbm5ldC9LY29uZmlnLTM4NS1cbm5ldC9LY29uZmlnOjM4Njpjb25maWcgTkVUX1BLVEdFTlxubmV0L0tjb25maWctMzg3LVx0dHJpc3RhdGUgXCYjMzQ7UGFja2V0IEdlbmVyYXRvciAoVVNFIFdJVEggQ0FVVElPTilcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwODozODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNzQ4CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEaXZpbmcgaW50byB0aGUgS2VybmVsIENvbmZpZ3VyYXRpb24gTGFuZHNjYXBlKioKCk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHNvbWV0aGluZyByZWxhdGVkIHRvIGtlcm5lbCBjb25maWd1cmF0aW9uLiBMZXQmIzM5O3Mgc3RhcnQgYnkgbG9va2luZyBhdCBgbmV0L0tjb25maWdgLCBzcGVjaWZpY2FsbHkgYXJvdW5kIGxpbmUgMzg2LiBJJiMzOTttIGd1ZXNzaW5nIHRoaXMgYXJlYSBkZWFscyB3aXRoIGEgcGFydGljdWxhciBuZXR3b3JraW5nIG9wdGlvbiwgb3IgcGVyaGFwcyBhIGdyb3VwIG9mIHJlbGF0ZWQgb3B0aW9ucy4gTGluZSAzODYgaXMgb2Z0ZW4gYSBnb29kIHBsYWNlIHRvIHN0YXJ0IGJlY2F1c2UgaXQgbWlnaHQgYmUgYSBtb2R1bGUgb3Igb3B0aW9uIGludHJvZHVjdGlvbi4gSSYjMzk7bSBsb29raW5nIGZvciB0aGUgZGVmaW5pbmcgaGVscCB0ZXh0LCBjb25zdHJhaW50cyBvbiBvdGhlciBvcHRpb25zLCBhbmQgbWF5YmUgb3RoZXIgS2NvbmZpZyBmaWxlcyB0aGF0IGFyZSByZWZlcmVuY2VkIGluIHRoaXMgYXJlYS4gVGhpcyBpbml0aWFsIGRpdmUgd2lsbCBnaXZlIG1lIGEgc2Vuc2Ugb2YgdGhlIHNjb3BlIGFuZCBjb250ZXh0IG9mIHRoZSBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMgaW4gdGhpcyBhcmVhLiBGcm9tIHRoZXJlLCBJIGNhbiBkZXRlcm1pbmUgdGhlIGFwcHJvcHJpYXRlIHN0cmF0ZWd5IHRvIGZ1bGx5IHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoZSBwYXJhbWV0ZXJzLCBhbmQgaG93IHRoZXkgYXBwbHkuIEhvcGVmdWxseSwgd2hhdGV2ZXIgSSYjMzk7bSBpbnZlc3RpZ2F0aW5nIGlzIHNlbGYgZXhwbGFuYXRvcnkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDA4OjM4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAzODAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDM4MDpcdFx0ICBtYWludGFpbiBjYXBhY2l0eSBmb3IgdGhlIG90aGVyIGZsb3dzLiBUaGlzIGZlYXR1cmUgcHJvdmlkZXMgc2VydmVyc1xuIDM4MTpcdFx0ICB3aXRoIG1hbnkgY2xpZW50cyBzb21lIHByb3RlY3Rpb24gYWdhaW5zdCBEb1MgYnkgYSBzaW5nbGUgKHNwb29mZWQpXG4gMzgyOlx0XHQgIGZsb3cgdGhhdCBncmVhdGx5IGV4Y2VlZHMgYXZlcmFnZSB3b3JrbG9hZC5cbiAzODM6XHRcbiAzODQ6XHRtZW51IFwmIzM0O05ldHdvcmsgdGVzdGluZ1wmIzM0O1xuIDM4NTpcdFxuIDM4NjpcdGNvbmZpZyBORVRfUEtUR0VOXG4gMzg3Olx0XHR0cmlzdGF0ZSBcJiMzNDtQYWNrZXQgR2VuZXJhdG9yIChVU0UgV0lUSCBDQVVUSU9OKVwmIzM0O1xuIDM4ODpcdFx0ZGVwZW5kcyBvbiBJTkVUIFx1MDAyNlx1MDAyNiBQUk9DX0ZTXG4gMzg5Olx0XHRoZWxwXG4gMzkwOlx0XHQgIFRoaXMgbW9kdWxlIHdpbGwgaW5qZWN0IHByZWNvbmZpZ3VyZWQgcGFja2V0cywgYXQgYSBjb25maWd1cmFibGVcbiAzOTE6XHRcdCAgcmF0ZSwgb3V0IG9mIGEgZ2l2ZW4gaW50ZXJmYWNlLiAgSXQgaXMgdXNlZCBmb3IgbmV0d29yayBpbnRlcmZhY2VcbiAzOTI6XHRcdCAgc3RyZXNzIHRlc3RpbmcgYW5kIHBlcmZvcm1hbmNlIGFuYWx5c2lzLiAgSWYgeW91IGRvbiYjMzk7dCB1bmRlcnN0YW5kXG4gMzkzOlx0XHQgIHdoYXQgd2FzIGp1c3Qgc2FpZCwgeW91IGRvbiYjMzk7dCBuZWVkIGl0OiBzYXkgTi5cbiAzOTQ6XHRcbiAzOTU6XHRcdCAgRG9jdW1lbnRhdGlvbiBvbiBob3cgdG8gdXNlIHRoZSBwYWNrZXQgZ2VuZXJhdG9yIGNhbiBiZSBmb3VuZFxuIDM5NjpcdFx0ICBhdCBcdTAwM2NmaWxlOkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9wa3RnZW4ucnN0XHUwMDNlLlxuIDM5NzpcdFxuIDM5ODpcdFx0ICBUbyBjb21waWxlIHRoaXMgY29kZSBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlXG4gMzk5Olx0XHQgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBwa3RnZW4uXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDA4OjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQzMTMKCQkJCQkJCW91dHB1dDogNTUKCQkJCQkJCXRob3VnaHRzOiA3OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4KCioqSW5pdGlhbCBBc3Nlc3NtZW50IG9mIHRoZSBgcGt0Z2VuYCBNb2R1bGUqKgoKQWxyaWdodCwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZSBkZXBlbmRlbmNpZXMgb2YgYE5FVF9QS1RHRU5gLiBJdCYjMzk7cyBwcmV0dHkgY2xlYXIgdGhpcyBtb2R1bGUgcmVsaWVzIG9uIHRoZSBuZXR3b3JraW5nIHN0YWNrLCBgSU5FVGAsIHdoaWNoIG1ha2VzIHNlbnNlLiBPZiBjb3Vyc2UsIGl0IGFsc28gdG91Y2hlcyBgUFJPQ19GU2AsIGluZGljYXRpbmcgc29tZSBraW5kIG9mIHVzZXItc3BhY2UgaW50ZXJmYWNlIG9yIGNvbmZpZ3VyYXRpb24gdGhyb3VnaCB0aGUgcHJvYyBmaWxlc3lzdGVtLiBUaGF0JiMzOTtzIHR5cGljYWwgZm9yIGEgcGFja2V0IGdlbmVyYXRvci4KCk15IHByaW1hcnkgaW50ZXJlc3QgcmlnaHQgbm93IGxpZXMgaW4gdGhlIHBhY2tldCBmaWxsaW5nIGZ1bmN0aW9ucywgYGZpbGxfcGFja2V0X2lwdjRgIGFuZCBgZmlsbF9wYWNrZXRfaXB2NmAuIFRoZSBmYWN0IHRoYXQgdGhleSYjMzk7cmUgYHN0YXRpY2AgaXMgbm90ZXdvcnRoeSDigJMgdGhleSYjMzk7cmUgbGlrZWx5IGhlbHBlciBmdW5jdGlvbnMgaW50ZXJuYWwgdG8gdGhlIGBwa3RnZW5gIGltcGxlbWVudGF0aW9uIGFuZCBub3QgaW50ZW5kZWQgZm9yIGRpcmVjdCBleHRlcm5hbCB1c2UuIEkgc2hvdWxkIGFsc28gcmVtZW1iZXIgYHBrdGdlbl9maW5hbGl6ZV9za2JgIGlzIGBzdGF0aWNgLiBJJiMzOTtsbCB3YW50IHRvIGtlZXAgdGhhdCBpbiBtaW5kIHdoZW4gdHJhY2luZyB0aGUgcGFja2V0IGNyZWF0aW9uIGZsb3cuCgpOb3csIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhlIGJpZ2dlciBwaWN0dXJlLiBJIG5lZWQgYSBjbGVhciB2aWV3IG9mIHRoZSAqcHVibGljKiBpbnRlcmZhY2UsIHNvIHRvIHNwZWFrLiBUaGVyZWZvcmUsIEkgbmVlZCB0byBrbm93IHdoaWNoIGZ1bmN0aW9ucyB3aXRoaW4gYHBrdGdlbi5jYCBhcmUgKm5vdCogc3RhdGljLCBhcyB0aGVzZSBhcmUgdGhlIG9uZXMgdGhhdCBhcmUgYWNjZXNzaWJsZSB0byBvdGhlciBtb2R1bGVzIGFuZCBwb3RlbnRpYWxseSBob3cgdGhlIGdlbmVyYXRvciBpcyBjb250cm9sbGVkIG9yIHV0aWxpemVkLiBJIG5lZWQgdG8gZW51bWVyYXRlIHRoZW0gdG8gZ2V0IGEgY29tcHJlaGVuc2l2ZSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBtb2R1bGUmIzM5O3MgZXhwb3NlZCBmdW5jdGlvbmFsaXR5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwODozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDteKFthLXpfQS1aMC05XSYjNDM7ICkmIzQzO1thLXpfQS1aMC05XSYjNDM7XFwoJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2NvcmUvcGt0Z2VuLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2NvcmUvcGt0Z2VuLmM9NDgwPXN0YXRpYyBjb25zdCBjaGFyIHZlcnNpb25bXSA9XG4tLVxubmV0L2NvcmUvcGt0Z2VuLmMtNDgyLVxubmV0L2NvcmUvcGt0Z2VuLmM6NDgzOnN0YXRpYyBpbnQgcGt0Z2VuX3JlbW92ZV9kZXZpY2Uoc3RydWN0IHBrdGdlbl90aHJlYWQgKnQsIHN0cnVjdCBwa3RnZW5fZGV2ICppKTtcbm5ldC9jb3JlL3BrdGdlbi5jOjQ4NDpzdGF0aWMgaW50IHBrdGdlbl9hZGRfZGV2aWNlKHN0cnVjdCBwa3RnZW5fdGhyZWFkICp0LCBjb25zdCBjaGFyICppZm5hbWUpO1xubmV0L2NvcmUvcGt0Z2VuLmMtNDg1LXN0YXRpYyBzdHJ1Y3QgcGt0Z2VuX2RldiAqcGt0Z2VuX2ZpbmRfZGV2KHN0cnVjdCBwa3RnZW5fdGhyZWFkICp0LFxubmV0L2NvcmUvcGt0Z2VuLmMtNDg2LVx0XHRcdFx0XHQgIGNvbnN0IGNoYXIgKmlmbmFtZSwgYm9vbCBleGFjdCk7XG5uZXQvY29yZS9wa3RnZW4uYzo0ODc6c3RhdGljIGludCBwa3RnZW5fZGV2aWNlX2V2ZW50KHN0cnVjdCBub3RpZmllcl9ibG9jayAqLCB1bnNpZ25lZCBsb25nLCB2b2lkICopO1xubmV0L2NvcmUvcGt0Z2VuLmM6NDg4OnN0YXRpYyB2b2lkIHBrdGdlbl9ydW5fYWxsX3RocmVhZHMoc3RydWN0IHBrdGdlbl9uZXQgKnBuKTtcbm5ldC9jb3JlL3BrdGdlbi5jOjQ4OTpzdGF0aWMgdm9pZCBwa3RnZW5fcmVzZXRfYWxsX3RocmVhZHMoc3RydWN0IHBrdGdlbl9uZXQgKnBuKTtcbm5ldC9jb3JlL3BrdGdlbi5jOjQ5MDpzdGF0aWMgdm9pZCBwa3RnZW5fc3RvcF9hbGxfdGhyZWFkcyhzdHJ1Y3QgcGt0Z2VuX25ldCAqcG4pO1xubmV0L2NvcmUvcGt0Z2VuLmMtNDkxLVxubmV0L2NvcmUvcGt0Z2VuLmM6NDkyOnN0YXRpYyB2b2lkIHBrdGdlbl9zdG9wKHN0cnVjdCBwa3RnZW5fdGhyZWFkICp0KTtcbm5ldC9jb3JlL3BrdGdlbi5jOjQ5MzpzdGF0aWMgdm9pZCBwa3RnZW5fY2xlYXJfY291bnRlcnMoc3RydWN0IHBrdGdlbl9kZXYgKnBrdF9kZXYpO1xubmV0L2NvcmUvcGt0Z2VuLmM6NDk0OnN0YXRpYyB2b2lkIGZpbGxfaW1peF9kaXN0cmlidXRpb24oc3RydWN0IHBrdGdlbl9kZXYgKnBrdF9kZXYpO1xubmV0L2NvcmUvcGt0Z2VuLmMtNDk1LVxuLS1cbm5ldC9jb3JlL3BrdGdlbi5jPTUwMD1zdGF0aWMgaW50IGRlYnVnICBfX3JlYWRfbW9zdGx5O1xubmV0L2NvcmUvcGt0Z2VuLmMtNTAxLVxubmV0L2NvcmUvcGt0Z2VuLmM6NTAyOnN0YXRpYyBERUZJTkVfTVVURVgocGt0Z2VuX3RocmVhZF9sb2NrKTtcbm5ldC9jb3JlL3BrdGdlbi5jLTUwMy1cbm5ldC9jb3JlL3BrdGdlbi5jPTUwND1zdGF0aWMgc3RydWN0IG5vdGlmaWVyX2Jsb2NrIHBrdGdlbl9ub3RpZmllcl9ibG9jayA9IHtcbi0tXG5uZXQvY29yZS9wa3RnZW4uYy01MTItXG5uZXQvY29yZS9wa3RnZW4uYzo1MTM6c3RhdGljIGludCBwZ2N0cmxfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSwgdm9pZCAqdilcbm5ldC9jb3JlL3BrdGdlbi5jLTUxNC17XG4tLVxubmV0L2NvcmUvcGt0Z2VuLmMtNTE4LVxubmV0L2NvcmUvcGt0Z2VuLmM6NTE5OnN0YXRpYyBzc2l6ZV90IHBnY3RybF93cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgY29uc3QgY2hhciBfX3VzZXIgKmJ1Zixcbm5ldC9jb3JlL3BrdGdlbi5jLTUyMC1cdFx0XHQgICAgc2l6ZV90IGNvdW50LCBsb2ZmX3QgKnBwb3MpXG4tLVxubmV0L2NvcmUvcGt0Z2VuLmMtNTUyLVxubmV0L2NvcmUvcGt0Z2VuLmM6NTUzOnN0YXRpYyBpbnQgcGdjdHJsX29wZW4oc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUpXG5uZXQvY29yZS9wa3RnZW4uYy01NTQte1xuLS1cbm5ldC9jb3JlL3BrdGdlbi5jPTU1OD1zdGF0aWMgY29uc3Qgc3RydWN0IHByb2Nfb3BzIHBrdGdlbl9wcm9jX29wcyA9IHtcbi0tXG5uZXQvY29yZS9wa3RnZW4uYy01NjUtXG5uZXQvY29yZS9wa3RnZW4uYzo1NjY6c3RhdGljIGludCBwa3RnZW5faWZfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSwgdm9pZCAqdilcbm5ldC9jb3JlL3BrdGdlbi5jLTU2Ny17XG4tLVxubmV0L2NvcmUvcGt0Z2VuLmMtNzUwLVxubmV0L2NvcmUvcGt0Z2VuLmM6NzUxOnN0YXRpYyBzc2l6ZV90IGhleDMyX2FyZyhjb25zdCBjaGFyIF9fdXNlciAqdXNlcl9idWZmZXIsIHNpemVfdCBtYXhsZW4sXG5uZXQvY29yZS9wa3RnZW4uYy03NTItXHRcdFx0IF9fdTMyICpudW0pXG4tLVxubmV0L2NvcmUvcGt0Z2VuLmMtNzc0LVxubmV0L2NvcmUvcGt0Z2VuLmM6Nzc1OnN0YXRpYyBzc2l6ZV90IGNvdW50X3RyYWlsX2NoYXJzKGNvbnN0IGNoYXIgX191c2VyICp1c2VyX2J1ZmZlciwgc2l6ZV90IG1heGxlbilcbm5ldC9jb3JlL3BrdGdlbi5jLTc3Ni17XG4tLVxubmV0L2NvcmUvcGt0Z2VuLmMtNzk5LVxubmV0L2NvcmUvcGt0Z2VuLmM6ODAwOnN0YXRpYyBzc2l6ZV90IG51bV9hcmcoY29uc3QgY2hhciBfX3VzZXIgKnVzZXJfYnVmZmVyLCBzaXplX3QgbWF4bGVuLFxubmV0L2NvcmUvcGt0Z2VuLmMtODAxLVx0XHQgICAgICAgdW5zaWduZWQgbG9uZyAqbnVtKVxuLS1cbm5ldC9jb3JlL3BrdGdlbi5jLTgxOS1cbm5ldC9jb3JlL3BrdGdlbi5jOjgyMDpzdGF0aWMgc3NpemVfdCBzdHJuX2xlbihjb25zdCBjaGFyIF9fdXNlciAqdXNlcl9idWZmZXIsIHNpemVfdCBtYXhsZW4pXG5uZXQvY29yZS9wa3RnZW4uYy04MjEte1xuLS1cbm5ldC9jb3JlL3BrdGdlbi5jLTg0OS0gKi9cbm5ldC9jb3JlL3BrdGdlbi5jOjg1MDpzdGF0aWMgc3NpemVfdCBnZXRfaW1peF9lbnRyaWVzKGNvbnN0IGNoYXIgX191c2VyICpidWZmZXIsXG5uZXQvY29yZS9wa3RnZW4uYy04NTEtXHRcdFx0XHRzaXplX3QgbWF4bGVuLFxuLS1cbm5ldC9jb3JlL3BrdGdlbi5jLTkxMS1cbm5ldC9jb3JlL3BrdGdlbi5jOjkxMjpzdGF0aWMgc3NpemVfdCBnZXRfbGFiZWxzKGNvbnN0IGNoYXIgX191c2VyICpidWZmZXIsXG5uZXQvY29yZS9wa3RnZW4uYy05MTMtXHRcdFx0ICBzaXplX3QgbWF4bGVuLCBzdHJ1Y3QgcGt0Z2VuX2RldiAqcGt0X2Rldilcbi0tXG5uZXQvY29yZS9wa3RnZW4uYy05NTQtXG5uZXQvY29yZS9wa3RnZW4uYzo5NTU6c3RhdGljIF9fdTMyIHBrdGdlbl9yZWFkX2ZsYWcoY29uc3QgY2hhciAqZiwgYm9vbCAqZGlzYWJsZSlcbm5ldC9jb3JlL3BrdGdlbi5jLTk1Ni17XG4tLVxubmV0L2NvcmUvcGt0Z2VuLmMtOTgzLVxubmV0L2NvcmUvcGt0Z2VuLmM6OTg0OnN0YXRpYyBzc2l6ZV90IHBrdGdlbl9pZl93cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSxcbm5ldC9jb3JlL3BrdGdlbi5jLTk4NS1cdFx0XHQgICAgICAgY29uc3QgY2hhciBfX3VzZXIgKnVzZXJfYnVmZmVyLCBzaXplX3QgY291bnQsXG4tLVxubmV0L2NvcmUvcGt0Z2VuLmMtMTg3MS1cbm5ldC9jb3JlL3BrdGdlbi5jOjE4NzI6c3RhdGljIGludCBwa3RnZW5faWZfb3BlbihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSlcbm5ldC9jb3JlL3BrdGdlbi5jLTE4NzMte1xuLS1cbm5ldC9jb3JlL3BrdGdlbi5jPTE4Nzc9c3RhdGljIGNvbnN0IHN0cnVjdCBwcm9jX29wcyBwa3RnZW5faWZfcHJvY19vcHMgPSB7XG4tLVxubmV0L2NvcmUvcGt0Z2VuLmMtMTg4NC1cbm5ldC9jb3JlL3BrdGdlbi5jOjE4ODU6c3RhdGljIGludCBwa3RnZW5fdGhyZWFkX3Nob3coc3RydWN0IHNlcV9maWxlICpzZXEsIHZvaWQgKnYpXG5uZXQvY29yZS9wa3RnZW4uYy0xODg2LXtcbi0tXG5uZXQvY29yZS9wa3RnZW4uYy0xOTE0LVxubmV0L2NvcmUvcGt0Z2VuLmM6MTkxNTpzdGF0aWMgc3NpemVfdCBwa3RnZW5fdGhyZWFkX3dyaXRlKHN0cnVjdCBmaWxlICpmaWxlLFxubmV0L2NvcmUvcGt0Z2VuLmMtMTkxNi1cdFx0XHRcdCAgIGNvbnN0IGNoYXIgX191c2VyICp1c2VyX2J1ZmZlcixcbi0tXG5uZXQvY29yZS9wa3RnZW4uYy0yMDExLVxubmV0L2NvcmUvcGt0Z2VuLmM6MjAxMjpzdGF0aWMgaW50IHBrdGdlbl90aHJlYWRfb3BlbihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSlcbm5ldC9jb3JlL3BrdGdlbi5jLTIwMTMte1xuLS1cbm5ldC9jb3JlL3BrdGdlbi5jPTIwMjY9c3RhdGljIHN0cnVjdCBwa3RnZW5fZGV2ICpfX3BrdGdlbl9OTl90aHJlYWRzKGNvbnN0IHN0cnVjdCBwa3RnZW5fbmV0ICpwbixcbi0tXG5uZXQvY29yZS9wa3RnZW4uYy0yMDQ4LSAqL1xubmV0L2NvcmUvcGt0Z2VuLmM6MjA0OTpzdGF0aWMgdm9pZCBwa3RnZW5fbWFya19kZXZpY2UoY29uc3Qgc3RydWN0IHBrdGdlbl9uZXQgKnBuLCBjb25zdCBjaGFyICppZm5hbWUpXG5uZXQvY29yZS9wa3RnZW4uYy0yMDUwLXtcbi0tXG5uZXQvY29yZS9wa3RnZW4uYy0yMDgwLVxubmV0L2NvcmUvcGt0Z2VuLmM6MjA4MTpzdGF0aWMgdm9pZCBwa3RnZW5fY2hhbmdlX25hbWUoY29uc3Qgc3RydWN0IHBrdGdlbl9uZXQgKnBuLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxubmV0L2NvcmUvcGt0Z2VuLmMtMjA4Mi17XG4tLVxubmV0L2NvcmUvcGt0Z2VuLmMtMjExMC1cbm5ldC9jb3JlL3BrdGdlbi5jOjIxMTE6c3RhdGljIGludCBwa3RnZW5fZGV2aWNlX2V2ZW50KHN0cnVjdCBub3RpZmllcl9ibG9jayAqdW51c2VkLFxubmV0L2NvcmUvcGt0Z2VuLmMtMjExMi1cdFx0XHQgICAgICAgdW5zaWduZWQgbG9uZyBldmVudCwgdm9pZCAqcHRyKVxuLS1cbm5ldC9jb3JlL3BrdGdlbi5jPTIxMzc9c3RhdGljIHN0cnVjdCBuZXRfZGV2aWNlICpwa3RnZW5fZGV2X2dldF9ieV9uYW1lKGNvbnN0IHN0cnVjdCBwa3RnZW5fbmV0ICpwbixcbi0tXG5uZXQvY29yZS9wa3RnZW4uYy0yMTU3LVxubmV0L2NvcmUvcGt0Z2VuLmM6MjE1ODpzdGF0aWMgaW50IHBrdGdlbl9zZXR1cF9kZXYoY29uc3Qgc3RydWN0IHBrdGdlbl9uZXQgKnBuLFxubmV0L2NvcmUvcGt0Z2VuLmMtMjE1OS1cdFx0XHQgICAgc3RydWN0IHBrdGdlbl9kZXYgKnBrdF9kZXYsIGNvbnN0IGNoYXIgKmlmbmFtZSlcbi0tXG5uZXQvY29yZS9wa3RnZW4uYy0yMTk0LSAqL1xubmV0L2NvcmUvcGt0Z2VuLmM6MjE5NTpzdGF0aWMgdm9pZCBwa3RnZW5fc2V0dXBfaW5qZWN0KHN0cnVjdCBwa3RnZW5fZGV2ICpwa3RfZGV2KVxubmV0L2NvcmUvcGt0Z2VuLmMtMjE5Ni17XG4tLVxubmV0L2NvcmUvcGt0Z2VuLmMtMjMyMy1cbm5ldC9jb3JlL3BrdGdlbi5jOjIzMjQ6c3RhdGljIHZvaWQgc3BpbihzdHJ1Y3QgcGt0Z2VuX2RldiAqcGt0X2Rldiwga3RpbWVfdCBzcGluX3VudGlsKVxubmV0L2NvcmUvcGt0Z2VuLmMtMjMyNS17XG4tLVxubmV0L2NvcmUvcGt0Z2VuLmMtMjM2Mi1cbm5ldC9jb3JlL3BrdGdlbi5jOjIzNjM6c3RhdGljIGlubGluZSB2b2lkIHNldF9wa3Rfb3ZlcmhlYWQoc3RydWN0IHBrdGdlbl9kZXYgKnBrdF9kZXYpXG5uZXQvY29yZS9wa3RnZW4uYy0yMzY0LXtcbi0tXG5uZXQvY29yZS9wa3RnZW4uYy0yMzcwLVxubmV0L2NvcmUvcGt0Z2VuLmM6MjM3MTpzdGF0aWMgaW5saW5lIGludCBmX3NlZW4oY29uc3Qgc3RydWN0IHBrdGdlbl9kZXYgKnBrdF9kZXYsIGludCBmbG93KVxubmV0L2NvcmUvcGt0Z2VuLmMtMjM3Mi17XG4tLVxubmV0L2NvcmUvcGt0Z2VuLmMtMjM3NS1cbm5ldC9jb3JlL3BrdGdlbi5jOjIzNzY6c3RhdGljIGlubGluZSBpbnQgZl9waWNrKHN0cnVjdCBwa3RnZW5fZGV2ICpwa3RfZGV2KVxubmV0L2NvcmUvcGt0Z2VuLmMtMjM3Ny17XG4tLVxubmV0L2NvcmUvcGt0Z2VuLmMtMjQwNi0jZGVmaW5lIERVTU1ZX01BUksgMFxubmV0L2NvcmUvcGt0Z2VuLmM6MjQwNzpzdGF0aWMgdm9pZCBnZXRfaXBzZWNfc2Eoc3RydWN0IHBrdGdlbl9kZXYgKnBrdF9kZXYsIGludCBmbG93KVxubmV0L2NvcmUvcGt0Z2VuLmMtMjQwOC17XG4tLVxubmV0L2NvcmUvcGt0Z2VuLmMtMjQzNy19XG5uZXQvY29yZS9wa3RnZW4uYzoyNDM4OnN0YXRpYyB2b2lkIHNldF9jdXJfcXVldWVfbWFwKHN0cnVjdCBwa3RnZW5fZGV2ICpwa3RfZGV2KVxubmV0L2NvcmUvcGt0Z2VuLmMtMjQzOS17XG4tLVxubmV0L2NvcmUvcGt0Z2VuLmMtMjQ2MS0gKi9cbm5ldC9jb3JlL3BrdGdlbi5jOjI0NjI6c3RhdGljIHZvaWQgbW9kX2N1cl9oZWFkZXJzKHN0cnVjdCBwa3RnZW5fZGV2ICpwa3RfZGV2KVxubmV0L2NvcmUvcGt0Z2VuLmMtMjQ2My17XG4tLVxubmV0L2NvcmUvcGt0Z2VuLmMtMjY2NS1cbm5ldC9jb3JlL3BrdGdlbi5jOjI2NjY6c3RhdGljIHZvaWQgZmlsbF9pbWl4X2Rpc3RyaWJ1dGlvbihzdHJ1Y3QgcGt0Z2VuX2RldiAqcGt0X2Rldilcbm5ldC9jb3JlL3BrdGdlbi5jLTI2Njcte1xuLS1cbm5ldC9jb3JlL3BrdGdlbi5jPTI2OTQ9c3RhdGljIHUzMiBwa3RnZW5fZHN0X21ldHJpY3NbUlRBWF9NQVggJiM0MzsgMV0gPSB7XG4tLVxubmV0L2NvcmUvcGt0Z2VuLmMtMjY5OC1cbm5ldC9jb3JlL3BrdGdlbi5jOjI2OTk6c3RhdGljIGludCBwa3RnZW5fb3V0cHV0X2lwc2VjKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBwa3RnZW5fZGV2ICpwa3RfZGV2KVxubmV0L2NvcmUvcGt0Z2VuLmMtMjcwMC17XG4tLVxubmV0L2NvcmUvcGt0Z2VuLmMtMjczOC1cbm5ldC9jb3JlL3BrdGdlbi5jOjI3Mzk6c3RhdGljIHZvaWQgZnJlZV9TQXMoc3RydWN0IHBrdGdlbl9kZXYgKnBrdF9kZXYpXG5uZXQvY29yZS9wa3RnZW4uYy0yNzQwLXtcbi0tXG5uZXQvY29yZS9wa3RnZW4uYy0yNzU1LVxubmV0L2NvcmUvcGt0Z2VuLmM6Mjc1NjpzdGF0aWMgaW50IHByb2Nlc3NfaXBzZWMoc3RydWN0IHBrdGdlbl9kZXYgKnBrdF9kZXYsXG5uZXQvY29yZS9wa3RnZW4uYy0yNzU3LVx0XHRcdCAgICAgIHN0cnVjdCBza19idWZmICpza2IsIF9fYmUxNiBwcm90b2NvbClcbi0tXG5uZXQvY29yZS9wa3RnZW4uYy0yODAyLVxubmV0L2NvcmUvcGt0Z2VuLmM6MjgwMzpzdGF0aWMgdm9pZCBtcGxzX3B1c2goX19iZTMyICptcGxzLCBzdHJ1Y3QgcGt0Z2VuX2RldiAqcGt0X2Rldilcbm5ldC9jb3JlL3BrdGdlbi5jLTI4MDQte1xuLS1cbm5ldC9jb3JlL3BrdGdlbi5jLTI4MTMtXG5uZXQvY29yZS9wa3RnZW4uYzoyODE0OnN0YXRpYyBpbmxpbmUgX19iZTE2IGJ1aWxkX3RjaSh1bnNpZ25lZCBpbnQgaWQsIHVuc2lnbmVkIGludCBjZmksXG5uZXQvY29yZS9wa3RnZW4uYy0yODE1LVx0XHRcdCAgICAgICB1bnNpZ25lZCBpbnQgcHJpbylcbi0tXG5uZXQvY29yZS9wa3RnZW4uYy0yODE5LVxubmV0L2NvcmUvcGt0Z2VuLmM6MjgyMDpzdGF0aWMgdm9pZCBwa3RnZW5fZmluYWxpemVfc2tiKHN0cnVjdCBwa3RnZW5fZGV2ICpwa3RfZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxubmV0L2NvcmUvcGt0Z2VuLmMtMjgyMS1cdFx0XHRcdGludCBkYXRhbGVuKVxuLS1cbm5ldC9jb3JlL3BrdGdlbi5jPTMxODU9c3RhdGljIHN0cnVjdCBza19idWZmICpmaWxsX3BhY2tldChzdHJ1Y3QgbmV0X2RldmljZSAqb2Rldixcbi0tXG5uZXQvY29yZS9wa3RnZW4uYy0zMTkzLVxubmV0L2NvcmUvcGt0Z2VuLmM6MzE5NDpzdGF0aWMgdm9pZCBwa3RnZW5fY2xlYXJfY291bnRlcnMoc3RydWN0IHBrdGdlbl9kZXYgKnBrdF9kZXYpXG5uZXQvY29yZS9wa3RnZW4uYy0zMTk1LXtcbi0tXG5uZXQvY29yZS9wa3RnZW4uYy0zMjA0LVxubmV0L2NvcmUvcGt0Z2VuLmM6MzIwNTpzdGF0aWMgdm9pZCBwa3RnZW5fcnVuKHN0cnVjdCBwa3RnZW5fdGhyZWFkICp0KVxubmV0L2NvcmUvcGt0Z2VuLmMtMzIwNi17XG4tLVxubmV0L2NvcmUvcGt0Z2VuLmMtMzIzNy1cbm5ldC9jb3JlL3BrdGdlbi5jOjMyMzg6c3RhdGljIHZvaWQgcGt0Z2VuX2hhbmRsZV9hbGxfdGhyZWFkcyhzdHJ1Y3QgcGt0Z2VuX25ldCAqcG4sIHUzMiBmbGFncylcbm5ldC9jb3JlL3BrdGdlbi5jLTMyMzkte1xuLS1cbm5ldC9jb3JlL3BrdGdlbi5jLTMyNDktXG5uZXQvY29yZS9wa3RnZW4uYzozMjUwOnN0YXRpYyB2b2lkIHBrdGdlbl9zdG9wX2FsbF90aHJlYWRzKHN0cnVjdCBwa3RnZW5fbmV0ICpwbilcbm5ldC9jb3JlL3BrdGdlbi5jLTMyNTEte1xuLS1cbm5ldC9jb3JlL3BrdGdlbi5jLTMyNTYtXG5uZXQvY29yZS9wa3RnZW4uYzozMjU3OnN0YXRpYyBpbnQgdGhyZWFkX2lzX3J1bm5pbmcoY29uc3Qgc3RydWN0IHBrdGdlbl90aHJlYWQgKnQpXG5uZXQvY29yZS9wa3RnZW4uYy0zMjU4LXtcbi0tXG5uZXQvY29yZS9wa3RnZW4uYy0zMjcwLVxubmV0L2NvcmUvcGt0Z2VuLmM6MzI3MTpzdGF0aWMgaW50IHBrdGdlbl93YWl0X3RocmVhZF9ydW4oc3RydWN0IHBrdGdlbl90aHJlYWQgKnQpXG5uZXQvY29yZS9wa3RnZW4uYy0zMjcyLXtcbi0tXG5uZXQvY29yZS9wa3RnZW4uYy0zMjkwLVxubmV0L2NvcmUvcGt0Z2VuLmM6MzI5MTpzdGF0aWMgaW50IHBrdGdlbl93YWl0X2FsbF90aHJlYWRzX3J1bihzdHJ1Y3QgcGt0Z2VuX25ldCAqcG4pXG5uZXQvY29yZS9wa3RnZW4uYy0zMjkyLXtcbi0tXG5uZXQvY29yZS9wa3RnZW4uYy0zMzE2LVxubmV0L2NvcmUvcGt0Z2VuLmM6MzMxNzpzdGF0aWMgdm9pZCBwa3RnZW5fcnVuX2FsbF90aHJlYWRzKHN0cnVjdCBwa3RnZW5fbmV0ICpwbilcbm5ldC9jb3JlL3BrdGdlbi5jLTMzMTgte1xuLS1cbm5ldC9jb3JlL3BrdGdlbi5jLTMzMjgtXG5uZXQvY29yZS9wa3RnZW4uYzozMzI5OnN0YXRpYyB2b2lkIHBrdGdlbl9yZXNldF9hbGxfdGhyZWFkcyhzdHJ1Y3QgcGt0Z2VuX25ldCAqcG4pXG5uZXQvY29yZS9wa3RnZW4uYy0zMzMwLXtcbi0tXG5uZXQvY29yZS9wa3RnZW4uYy0zMzQwLVxubmV0L2NvcmUvcGt0Z2VuLmM6MzM0MTpzdGF0aWMgdm9pZCBzaG93X3Jlc3VsdHMoc3RydWN0IHBrdGdlbl9kZXYgKnBrdF9kZXYsIGludCBucl9mcmFncylcbm5ldC9jb3JlL3BrdGdlbi5jLTMzNDIte1xuLS1cbm5ldC9jb3JlL3BrdGdlbi5jLTMzODItLyogU2V0IHN0b3BwZWQtYXQgdGltZXIsIHJlbW92ZSBmcm9tIHJ1bm5pbmcgbGlzdCwgZG8gY291bnRlcnMgXHUwMDI2IHN0YXRpc3RpY3MgKi9cbm5ldC9jb3JlL3BrdGdlbi5jOjMzODM6c3RhdGljIGludCBwa3RnZW5fc3RvcF9kZXZpY2Uoc3RydWN0IHBrdGdlbl9kZXYgKnBrdF9kZXYpXG5uZXQvY29yZS9wa3RnZW4uYy0zMzg0LXtcbi0tXG5uZXQvY29yZS9wa3RnZW4uYz0zNDAzPXN0YXRpYyBzdHJ1Y3QgcGt0Z2VuX2RldiAqbmV4dF90b19ydW4oc3RydWN0IHBrdGdlbl90aHJlYWQgKnQpXG4tLVxubmV0L2NvcmUvcGt0Z2VuLmMtMzQyMC1cbm5ldC9jb3JlL3BrdGdlbi5jOjM0MjE6c3RhdGljIHZvaWQgcGt0Z2VuX3N0b3Aoc3RydWN0IHBrdGdlbl90aHJlYWQgKnQpXG5uZXQvY29yZS9wa3RnZW4uYy0zNDIyLXtcbi0tXG5uZXQvY29yZS9wa3RnZW4uYy0zNDM5LSAqL1xubmV0L2NvcmUvcGt0Z2VuLmM6MzQ0MDpzdGF0aWMgdm9pZCBwa3RnZW5fcmVtX29uZV9pZihzdHJ1Y3QgcGt0Z2VuX3RocmVhZCAqdClcbm5ldC9jb3JlL3BrdGdlbi5jLTM0NDEte1xuLS1cbm5ldC9jb3JlL3BrdGdlbi5jLTM0NjEtXG5uZXQvY29yZS9wa3RnZW4uYzozNDYyOnN0YXRpYyB2b2lkIHBrdGdlbl9yZW1fYWxsX2lmcyhzdHJ1Y3QgcGt0Z2VuX3RocmVhZCAqdClcbm5ldC9jb3JlL3BrdGdlbi5jLTM0NjMte1xuLS1cbm5ldC9jb3JlL3BrdGdlbi5jLTM0ODAtXG5uZXQvY29yZS9wa3RnZW4uYzozNDgxOnN0YXRpYyB2b2lkIHBrdGdlbl9yZW1fdGhyZWFkKHN0cnVjdCBwa3RnZW5fdGhyZWFkICp0KVxubmV0L2NvcmUvcGt0Z2VuLmMtMzQ4Mi17XG4tLVxubmV0L2NvcmUvcGt0Z2VuLmMtMzQ4Ni1cbm5ldC9jb3JlL3BrdGdlbi5jOjM0ODc6c3RhdGljIHZvaWQgcGt0Z2VuX3Jlc2NoZWQoc3RydWN0IHBrdGdlbl9kZXYgKnBrdF9kZXYpXG5uZXQvY29yZS9wa3RnZW4uYy0zNDg4LXtcbi0tXG5uZXQvY29yZS9wa3RnZW4uYy0zNDk0LVxubmV0L2NvcmUvcGt0Z2VuLmM6MzQ5NTpzdGF0aWMgdm9pZCBwa3RnZW5fd2FpdF9mb3Jfc2tiKHN0cnVjdCBwa3RnZW5fZGV2ICpwa3RfZGV2KVxubmV0L2NvcmUvcGt0Z2VuLmMtMzQ5Ni17XG4tLVxubmV0L2NvcmUvcGt0Z2VuLmMtMzUxMC1cbm5ldC9jb3JlL3BrdGdlbi5jOjM1MTE6c3RhdGljIHZvaWQgcGt0Z2VuX3htaXQoc3RydWN0IHBrdGdlbl9kZXYgKnBrdF9kZXYpXG5uZXQvY29yZS9wa3RnZW4uYy0zNTEyLXtcbi0tXG5uZXQvY29yZS9wa3RnZW4uYy0zNjk5LVxubmV0L2NvcmUvcGt0Z2VuLmM6MzcwMDpzdGF0aWMgaW50IHBrdGdlbl90aHJlYWRfd29ya2VyKHZvaWQgKmFyZylcbm5ldC9jb3JlL3BrdGdlbi5jLTM3MDEte1xuLS1cbm5ldC9jb3JlL3BrdGdlbi5jPTM3NzA9c3RhdGljIHN0cnVjdCBwa3RnZW5fZGV2ICpwa3RnZW5fZmluZF9kZXYoc3RydWN0IHBrdGdlbl90aHJlYWQgKnQsXG4tLVxubmV0L2NvcmUvcGt0Z2VuLmMtMzc5NS1cbm5ldC9jb3JlL3BrdGdlbi5jOjM3OTY6c3RhdGljIGludCBhZGRfZGV2X3RvX3RocmVhZChzdHJ1Y3QgcGt0Z2VuX3RocmVhZCAqdCxcbm5ldC9jb3JlL3BrdGdlbi5jLTM3OTctXHRcdFx0ICAgICBzdHJ1Y3QgcGt0Z2VuX2RldiAqcGt0X2Rldilcbi0tXG5uZXQvY29yZS9wa3RnZW4uYy0zODI2LVxubmV0L2NvcmUvcGt0Z2VuLmM6MzgyNzpzdGF0aWMgaW50IHBrdGdlbl9hZGRfZGV2aWNlKHN0cnVjdCBwa3RnZW5fdGhyZWFkICp0LCBjb25zdCBjaGFyICppZm5hbWUpXG5uZXQvY29yZS9wa3RnZW4uYy0zODI4LXtcbi0tXG5uZXQvY29yZS9wa3RnZW4uYy0zOTE0LVxubmV0L2NvcmUvcGt0Z2VuLmM6MzkxNTpzdGF0aWMgaW50IF9fbmV0X2luaXQgcGt0Z2VuX2NyZWF0ZV90aHJlYWQoaW50IGNwdSwgc3RydWN0IHBrdGdlbl9uZXQgKnBuKVxubmV0L2NvcmUvcGt0Z2VuLmMtMzkxNi17XG4tLVxubmV0L2NvcmUvcGt0Z2VuLmMtMzk2Ny0gKi9cbm5ldC9jb3JlL3BrdGdlbi5jOjM5Njg6c3RhdGljIHZvaWQgX3JlbV9kZXZfZnJvbV9pZl9saXN0KHN0cnVjdCBwa3RnZW5fdGhyZWFkICp0LFxubmV0L2NvcmUvcGt0Z2VuLmMtMzk2OS1cdFx0XHRcdCAgc3RydWN0IHBrdGdlbl9kZXYgKnBrdF9kZXYpXG4tLVxubmV0L2NvcmUvcGt0Z2VuLmMtMzk4Mi1cbm5ldC9jb3JlL3BrdGdlbi5jOjM5ODM6c3RhdGljIGludCBwa3RnZW5fcmVtb3ZlX2RldmljZShzdHJ1Y3QgcGt0Z2VuX3RocmVhZCAqdCxcbm5ldC9jb3JlL3BrdGdlbi5jLTM5ODQtXHRcdFx0XHRzdHJ1Y3QgcGt0Z2VuX2RldiAqcGt0X2Rldilcbi0tXG5uZXQvY29yZS9wa3RnZW4uYy00MDE4LVxubmV0L2NvcmUvcGt0Z2VuLmM6NDAxOTpzdGF0aWMgaW50IF9fbmV0X2luaXQgcGdfbmV0X2luaXQoc3RydWN0IG5ldCAqbmV0KVxubmV0L2NvcmUvcGt0Z2VuLmMtNDAyMC17XG4tLVxubmV0L2NvcmUvcGt0Z2VuLmMtNDA2NS1cbm5ldC9jb3JlL3BrdGdlbi5jOjQwNjY6c3RhdGljIHZvaWQgX19uZXRfZXhpdCBwZ19uZXRfZXhpdChzdHJ1Y3QgbmV0ICpuZXQpXG5uZXQvY29yZS9wa3RnZW4uYy00MDY3LXtcbi0tXG5uZXQvY29yZS9wa3RnZW4uYz00MDkxPXN0YXRpYyBzdHJ1Y3QgcGVybmV0X29wZXJhdGlvbnMgcGdfbmV0X29wcyA9IHtcbi0tXG5uZXQvY29yZS9wa3RnZW4uYy00MDk3LVxubmV0L2NvcmUvcGt0Z2VuLmM6NDA5ODpzdGF0aWMgaW50IF9faW5pdCBwZ19pbml0KHZvaWQpXG5uZXQvY29yZS9wa3RnZW4uYy00MDk5LXtcbi0tXG5uZXQvY29yZS9wa3RnZW4uYy00MTEyLVxubmV0L2NvcmUvcGt0Z2VuLmM6NDExMzpzdGF0aWMgdm9pZCBfX2V4aXQgcGdfY2xlYW51cCh2b2lkKVxubmV0L2NvcmUvcGt0Z2VuLmMtNDExNC17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDA4OjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk5NTMKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAxNzUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQYWNrZXQgR2VuZXJhdGlvbiBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHksIG15IGJyYWluIHplcm9lcyBpbiBvbiB0aGUgZW50cnkgcG9pbnRzLiBUaGV5JiMzOTtyZSBwcmltYXJpbHkgYHByb2Nmc2AgaGFuZGxlcnMsIHNwZWNpZmljYWxseSBgcGdjdHJsX3dyaXRlYCwgYHBrdGdlbl9pZl93cml0ZWAsIGFuZCBgcGt0Z2VuX3RocmVhZF93cml0ZWAuIEkgcmVtZW1iZXIgdGhvc2UgZnVuY3Rpb25zLCB0aGV5IGhhbmRsZSB0aGUgdXNlci1zcGFjZSBjb25maWd1cmF0aW9uIG9mIGBwa3RnZW5gLiBCdXQgd2FpdCwgYHBrdGdlbl90aHJlYWRfd29ya2VyYCBpcyB0aGUgbWFpbiB0aHJlYWQgdGhhdCBhY3R1YWxseSAqc2VuZHMqIHRoZSBwYWNrZXRzLCByaWdodD8gQW5kIHRoZSB0cmFuc21pc3Npb24gaXRzZWxmIGhhcHBlbnMgd2l0aGluIGBwa3RnZW5feG1pdGAuCgpOb3cgSSBzZWUsIHRoaXMgcGF0Y2ggdG91Y2hlcyBgcGt0Z2VuX2ZpbmFsaXplX3NrYmAuIFRoYXQgcmluZ3MgYSBiZWxsLi4uIEkgYmVsaWV2ZSB0aGF0JiMzOTtzIHRoZSBmdW5jdGlvbiBjYWxsZWQgd2hlbiB0aGUgcGFja2V0cyBoYXZlIGJlZW4gZ2VuZXJhdGVkLiBUaGUgY3J1Y2lhbCBxdWVzdGlvbiBpcywgaG93IGVhc2lseSBjYW4gSSB0cmlnZ2VyIHRoaXMgZnJvbSB1c2Vyc3BhY2U/IEFoLCB0aGF0JiMzOTtzIHJpZ2h0LCBieSBjb25maWd1cmluZyBhbmQgc3RhcnRpbmcgYHBrdGdlbmAgdmlhIGBwcm9jZnNgLiBDb25maXJtZWQsIHRoZSBjb25maWd1cmF0aW9uIGtub2IgaXMgYE5FVF9QS1RHRU5gLgoKQnV0LCB3aGVuIGlzIGBwa3RnZW5fZmluYWxpemVfc2tiYCBhY3R1YWxseSBjYWxsZWQ/IElzIGl0IG9ubHkgd2hlbiBgcGt0X2Rldi0mZ3Q7ZmxhZ3NgIGhhcyB0aGUgYEZfRlJBR19QQUdFYCBiaXQgc2V0LCBvciBpcyBpdCB0cmlnZ2VyZWQgd2hlbmV2ZXIgYGRhdGFsZW4gJmd0OyAwYD8gVGhhdCBkZXRhaWwgaXMgaW1wb3J0YW50LiBPa2F5LCBJIG5lZWQgdG8gZ2V0IGludG8gdGhlIGNvZGUgZm9yIGEgbWludXRlLCBsZXQmIzM5O3MgdGFrZSBhIGxvb2sgYXQgYHBrdGdlbl9maW5hbGl6ZV9za2JgIGRpcmVjdGx5IHRvIHJlZnJlc2ggbXkgbWVtb3J5IGFuZCBiZSBzdXJlIG9mIHRoZSBleGFjdCBjb25kaXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDA4OjM4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L2NvcmUvcGt0Z2VuLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyODIwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzI4MjA6XHRzdGF0aWMgdm9pZCBwa3RnZW5fZmluYWxpemVfc2tiKHN0cnVjdCBwa3RnZW5fZGV2ICpwa3RfZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuMjgyMTpcdFx0XHRcdFx0aW50IGRhdGFsZW4pXG4yODIyOlx0e1xuMjgyMzpcdFx0c3RydWN0IHRpbWVzcGVjNjQgdGltZXN0YW1wO1xuMjgyNDpcdFx0c3RydWN0IHBrdGdlbl9oZHIgKnBnaDtcbjI4MjU6XHRcbjI4MjY6XHRcdHBnaCA9IHNrYl9wdXQoc2tiLCBzaXplb2YoKnBnaCkpO1xuMjgyNzpcdFx0ZGF0YWxlbiAtPSBzaXplb2YoKnBnaCk7XG4yODI4Olx0XG4yODI5Olx0XHRpZiAocGt0X2Rldi1cdTAwM2VuZnJhZ3MgXHUwMDNjPSAwKSB7XG4yODMwOlx0XHRcdHNrYl9wdXRfemVybyhza2IsIGRhdGFsZW4pO1xuMjgzMTpcdFx0fSBlbHNlIHtcbjI4MzI6XHRcdFx0aW50IGZyYWdzID0gcGt0X2Rldi1cdTAwM2VuZnJhZ3M7XG4yODMzOlx0XHRcdGludCBpLCBsZW47XG4yODM0Olx0XHRcdGludCBmcmFnX2xlbjtcbjI4MzU6XHRcbjI4MzY6XHRcbjI4Mzc6XHRcdFx0aWYgKGZyYWdzIFx1MDAzZSBNQVhfU0tCX0ZSQUdTKVxuMjgzODpcdFx0XHRcdGZyYWdzID0gTUFYX1NLQl9GUkFHUztcbjI4Mzk6XHRcdFx0bGVuID0gZGF0YWxlbiAtIGZyYWdzICogUEFHRV9TSVpFO1xuMjg0MDpcdFx0XHRpZiAobGVuIFx1MDAzZSAwKSB7XG4yODQxOlx0XHRcdFx0c2tiX3B1dF96ZXJvKHNrYiwgbGVuKTtcbjI4NDI6XHRcdFx0XHRkYXRhbGVuID0gZnJhZ3MgKiBQQUdFX1NJWkU7XG4yODQzOlx0XHRcdH1cbjI4NDQ6XHRcbjI4NDU6XHRcdFx0aSA9IDA7XG4yODQ2Olx0XHRcdGZyYWdfbGVuID0gbWluX3QoaW50LCBESVZfUk9VTkRfVVAoZGF0YWxlbiwgZnJhZ3MpLCBQQUdFX1NJWkUpO1xuMjg0NzpcdFx0XHR3aGlsZSAoZGF0YWxlbiBcdTAwM2UgMCBcdTAwMjZcdTAwMjYgaSBcdTAwM2MgZnJhZ3MpIHtcbjI4NDg6XHRcdFx0XHRpZiAodW5saWtlbHkoIXBrdF9kZXYtXHUwMDNlcGFnZSkpIHtcbjI4NDk6XHRcdFx0XHRcdGludCBub2RlID0gbnVtYV9ub2RlX2lkKCk7XG4yODUwOlx0XG4yODUxOlx0XHRcdFx0XHRpZiAocGt0X2Rldi1cdTAwM2Vub2RlIFx1MDAzZT0gMCBcdTAwMjZcdTAwMjYgKHBrdF9kZXYtXHUwMDNlZmxhZ3MgXHUwMDI2IEZfTk9ERSkpXG4yODUyOlx0XHRcdFx0XHRcdG5vZGUgPSBwa3RfZGV2LVx1MDAzZW5vZGU7XG4yODUzOlx0XHRcdFx0XHRwa3RfZGV2LVx1MDAzZXBhZ2UgPSBhbGxvY19wYWdlc19ub2RlKG5vZGUsIEdGUF9LRVJORUwgfCBfX0dGUF9aRVJPLCAwKTtcbjI4NTQ6XHRcdFx0XHRcdGlmICghcGt0X2Rldi1cdTAwM2VwYWdlKVxuMjg1NTpcdFx0XHRcdFx0XHRicmVhaztcbjI4NTY6XHRcdFx0XHR9XG4yODU3Olx0XHRcdFx0Z2V0X3BhZ2UocGt0X2Rldi1cdTAwM2VwYWdlKTtcbjI4NTg6XHRcbjI4NTk6XHRcdFx0XHQvKmxhc3QgZnJhZ21lbnQsIGZpbGwgcmVzdCBvZiBkYXRhKi9cbjI4NjA6XHRcdFx0XHRpZiAoaSA9PSAoZnJhZ3MgLSAxKSlcbjI4NjE6XHRcdFx0XHRcdHNrYl9mcmFnX2ZpbGxfcGFnZV9kZXNjKFx1MDAyNnNrYl9zaGluZm8oc2tiKS1cdTAwM2VmcmFnc1tpXSxcbjI4NjI6XHRcdFx0XHRcdFx0XHRcdHBrdF9kZXYtXHUwMDNlcGFnZSwgMCxcbjI4NjM6XHRcdFx0XHRcdFx0XHRcdG1pbihkYXRhbGVuLCBQQUdFX1NJWkUpKTtcbjI4NjQ6XHRcdFx0XHRlbHNlXG4yODY1Olx0XHRcdFx0XHRza2JfZnJhZ19maWxsX3BhZ2VfZGVzYyhcdTAwMjZza2Jfc2hpbmZvKHNrYiktXHUwMDNlZnJhZ3NbaV0sXG4yODY2Olx0XHRcdFx0XHRcdFx0XHRwa3RfZGV2LVx1MDAzZXBhZ2UsIDAsIGZyYWdfbGVuKTtcbjI4Njc6XHRcbjI4Njg6XHRcdFx0XHRkYXRhbGVuIC09IHNrYl9mcmFnX3NpemUoXHUwMDI2c2tiX3NoaW5mbyhza2IpLVx1MDAzZWZyYWdzW2ldKTtcbjI4Njk6XHRcdFx0XHRza2ItXHUwMDNlbGVuICYjNDM7PSBza2JfZnJhZ19zaXplKFx1MDAyNnNrYl9zaGluZm8oc2tiKS1cdTAwM2VmcmFnc1tpXSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDA4OjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExMzI1CgkJCQkJCQlvdXRwdXQ6IDExMwoJCQkJCQkJdGhvdWdodHM6IDI2NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgUGFja2V0IEdlbmVyYXRpb24gQnVnIGFuZCBGaXgqKgoKT2theSwgc28gdGhlIGNvcmUgb2YgdGhlIHByb2JsZW0gaGVyZSB3YXMgYSBkaXZpc2lvbiBpc3N1ZSBpbiB0aGUgcGFja2V0IGdlbmVyYXRpb24gY29kZS4gU3BlY2lmaWNhbGx5LCBgZGF0YWxlbiAvIGZyYWdzYCBjb3VsZCBldmFsdWF0ZSB0byB6ZXJvLiBXaGVuIHRoaXMgaGFwcGVuZWQsIGBmcmFnX2xlbmAgd2FzIGFsc28gemVybywgd2hpY2ggbWVhbnQgYGRhdGFsZW5gIHdvdWxkbiYjMzk7dCBkZWNyZWFzZSBpbiB0aGUgbG9vcC4gVGhlIHJlc3VsdD8gQW4gaW5maW5pdGUgbG9vcC4gT2J2aW91c2x5LCBhIGNyaXRpY2FsIGJ1Zy4KClRoZSBmaXgsIHRoYW5rZnVsbHksIGlzIGNsZWFuIGFuZCBzdHJhaWdodGZvcndhcmQuIFVzaW5nIGBESVZfUk9VTkRfVVAoZGF0YWxlbiwgZnJhZ3MpYCBlbnN1cmVzIHRoYXQgd2UgaGFuZGxlIHRoZSBkaXZpc2lvbiBjb3JyZWN0bHksIGFuZCBhZGRpbmcgYCZhbXA7JmFtcDsgaSAmbHQ7IGZyYWdzYCB0byB0aGUgd2hpbGUgbG9vcCBjb25kaXRpb24gcHJvdmlkZXMgYSBzZW5zaWJsZSB1cHBlciBib3VuZC4gRnVuY3Rpb25hbGx5LCB0aGlzIGlzIHRoZSBjb3JyZWN0IGFwcHJvYWNoLCBhbmQgSSBjYW4gY29uZmlybSB0aGUgbG9vcCBpcyByZWFjaGFibGUuCgpOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBsYXJnZXIgY29udGV4dC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBwaWVjZXMgb2YgdGhlIGNvZGViYXNlIGFyZSByZWxldmFudC4gQmFzZWQgb24gd2hhdCBJIGhhdmUgaGVyZSwgdGhlIGZ1bmN0aW9ucyBvZiBpbnRlcmVzdCBhcmUgYHBrdGdlbl9pZl93cml0ZWAsIGBwa3RnZW5fdGhyZWFkX3dyaXRlYCwgYW5kIGBwZ2N0cmxfd3JpdGVgLCBhbGwgaGFuZGxpbmcgY29uZmlndXJhdGlvbiwgYW5kIHRoZW4gdGhlIGFjdHVhbCBnZW5lcmF0aW9uIGhhcHBlbnMgZWl0aGVyIGluIGBwa3RnZW5feG1pdGAgb3IgYHBrdGdlbl90aHJlYWRfd29ya2VyYC4KClRvIHN1bW1hcml6ZSB0aGUgZnVuY3Rpb25zIGFnYWluLCBoZXJlJiMzOTtzIHRoZSBsaXN0OgoqICAgYHBrdGdlbl9pZl93cml0ZWAKKiAgIGBwa3RnZW5fdGhyZWFkX3dyaXRlYAoqICAgYHBnY3RybF93cml0ZWAKKiAgIGBwa3RnZW5fdGhyZWFkX3dvcmtlcmAKCkkgd2lsbCB0YWtlIGEgbW9tZW50IHRvIGRvdWJsZS1jaGVjayB0aGUgY29uZmlndXJhdGlvbiByZXF1aXJlbWVudHMgYmVjYXVzZSBJIGRvbiYjMzk7dCBsaWtlIGFzc3VtcHRpb25zLiBJIHNlZSB0aGF0IGBORVRfUEtUR0VOYCBpcyBuZWVkZWQsIHdoaWNoIGluIHR1cm4gZGVwZW5kcyBvbiBgSU5FVGAgYW5kIGBQUk9DX0ZTYC4gVGhhbmtmdWxseSwgYElORVRgIGFuZCBgUFJPQ19GU2AgYXJlIHVzdWFsbHkgZW5hYmxlZC4gU28gaXQgbG9va3MgbGlrZSBgTkVUX1BLVEdFTmAgaXMgc3VmZmljaWVudC4KCk5vdywgSSYjMzk7bSBjb25maWRlbnQgaW4gbXkgdW5kZXJzdGFuZGluZywgYW5kIEkgY2FuIHByb3ZpZGUgdGhlIHJlc3VsdHMgb2YgbXkgYW5hbHlzaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDA4OjM4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORVRfUEtUR0VOJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cGt0Z2VuX2lmX3dyaXRlJiMzNDssCiAgICAmIzM0O3BrdGdlbl90aHJlYWRfd3JpdGUmIzM0OywKICAgICYjMzQ7cGdjdHJsX3dyaXRlJiMzNDssCiAgICAmIzM0O3BrdGdlbl90aHJlYWRfd29ya2VyJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIGluZmluaXRlIGxvb3Agb3Igb3V0LW9mLWJvdW5kcyBpc3N1ZSBpbiBwa3RnZW5fZmluYWxpemVfc2tiIHdoZW4gY2FsY3VsYXRpbmcgZnJhZ21lbnQgbGVuZ3Rocy4gVGhpcyBpcyByZWFjaGFibGUgYnkgY29uZmlndXJpbmcgcGt0Z2VuIHZpYSBwcm9jZnMgYW5kIHN0YXJ0aW5nIHBhY2tldCBnZW5lcmF0aW9uLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORVRfUEtUR0VOJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cGt0Z2VuX2lmX3dyaXRlJiMzNDssCiAgICAmIzM0O3BrdGdlbl90aHJlYWRfd3JpdGUmIzM0OywKICAgICYjMzQ7cGdjdHJsX3dyaXRlJiMzNDssCiAgICAmIzM0O3BrdGdlbl90aHJlYWRfd29ya2VyJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIGluZmluaXRlIGxvb3Agb3Igb3V0LW9mLWJvdW5kcyBpc3N1ZSBpbiBwa3RnZW5fZmluYWxpemVfc2tiIHdoZW4gY2FsY3VsYXRpbmcgZnJhZ21lbnQgbGVuZ3Rocy4gVGhpcyBpcyByZWFjaGFibGUgYnkgY29uZmlndXJpbmcgcGt0Z2VuIHZpYSBwcm9jZnMgYW5kIHN0YXJ0aW5nIHBhY2tldCBnZW5lcmF0aW9uLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMzBUMDg6Mzc6NTAuNjYxMzg5NDc2WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDIzODEwNjI0NzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUX1BLVEdFTlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInBrdGdlbl9pZl93cml0ZVwiLFxuICAgIFwicGt0Z2VuX3RocmVhZF93cml0ZVwiLFxuICAgIFwicGdjdHJsX3dyaXRlXCIsXG4gICAgXCJwa3RnZW5fdGhyZWFkX3dvcmtlclwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIGluZmluaXRlIGxvb3Agb3Igb3V0LW9mLWJvdW5kcyBpc3N1ZSBpbiBwa3RnZW5fZmluYWxpemVfc2tiIHdoZW4gY2FsY3VsYXRpbmcgZnJhZ21lbnQgbGVuZ3Rocy4gVGhpcyBpcyByZWFjaGFibGUgYnkgY29uZmlndXJpbmcgcGt0Z2VuIHZpYSBwcm9jZnMgYW5kIHN0YXJ0aW5nIHBhY2tldCBnZW5lcmF0aW9uLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwODozNzo1MC42NjEzOTcyNDZaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0NDU1MDU3MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDY4Y2QxODg3YWIzZGQ3YzM0MTU4YTYwM2Q5ZmEwNTMxYjkzMmMxMjRcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFRodSBKdWwgMzAgMDg6Mzc6NDkgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbmV0L2NvcmUvcGt0Z2VuLmMgYi9uZXQvY29yZS9wa3RnZW4uY1xcbmluZGV4IDhlMTg1YjMxODI4ODUuLjJkYmI3Y2FhY2QwZDkgMTAwNjQ0XFxuLS0tIGEvbmV0L2NvcmUvcGt0Z2VuLmNcXG4rKysgYi9uZXQvY29yZS9wa3RnZW4uY1xcbkBAIC0yODQzLDggKzI4NDMsOCBAQCBzdGF0aWMgdm9pZCBwa3RnZW5fZmluYWxpemVfc2tiKHN0cnVjdCBwa3RnZW5fZGV2ICpwa3RfZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHRcXHR9XFxuIFxcbiBcXHRcXHRpID0gMDtcXG4tXFx0XFx0ZnJhZ19sZW4gPSBtaW5fdChpbnQsIGRhdGFsZW4gLyBmcmFncywgUEFHRV9TSVpFKTtcXG4tXFx0XFx0d2hpbGUgKGRhdGFsZW4gXFx1MDAzZSAwKSB7XFxuK1xcdFxcdGZyYWdfbGVuID0gbWluX3QoaW50LCBESVZfUk9VTkRfVVAoZGF0YWxlbiwgZnJhZ3MpLCBQQUdFX1NJWkUpO1xcbitcXHRcXHR3aGlsZSAoZGF0YWxlbiBcXHUwMDNlIDAgXFx1MDAyNlxcdTAwMjYgaSBcXHUwMDNjIGZyYWdzKSB7XFxuIFxcdFxcdFxcdGlmICh1bmxpa2VseSghcGt0X2Rldi1cXHUwMDNlcGFnZSkpIHtcXG4gXFx0XFx0XFx0XFx0aW50IG5vZGUgPSBudW1hX25vZGVfaWQoKTtcXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDA4OjM3OjUxLjEwNjkwODQ4WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NDE5MzU1MzQ4ODMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUX1BLVEdFTlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInBrdGdlbl9pZl93cml0ZVwiLFxuICAgIFwicGt0Z2VuX3RocmVhZF93cml0ZVwiLFxuICAgIFwicGdjdHJsX3dyaXRlXCIsXG4gICAgXCJwa3RnZW5fdGhyZWFkX3dvcmtlclwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIGluZmluaXRlIGxvb3Agb3Igb3V0LW9mLWJvdW5kcyBpc3N1ZSBpbiBwa3RnZW5fZmluYWxpemVfc2tiIHdoZW4gY2FsY3VsYXRpbmcgZnJhZ21lbnQgbGVuZ3Rocy4gVGhpcyBpcyByZWFjaGFibGUgYnkgY29uZmlndXJpbmcgcGt0Z2VuIHZpYSBwcm9jZnMgYW5kIHN0YXJ0aW5nIHBhY2tldCBnZW5lcmF0aW9uLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA2OGNkMTg4N2FiM2RkN2MzNDE1OGE2MDNkOWZhMDUzMWI5MzJjMTI0XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdWwgMzAgMDg6Mzc6NDkgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvY29yZS9wa3RnZW4uYyBiL25ldC9jb3JlL3BrdGdlbi5jXG5pbmRleCA4ZTE4NWIzMTgyODg1Li4yZGJiN2NhYWNkMGQ5IDEwMDY0NFxuLS0tIGEvbmV0L2NvcmUvcGt0Z2VuLmNcbisrKyBiL25ldC9jb3JlL3BrdGdlbi5jXG5AQCAtMjg0Myw4ICsyODQzLDggQEAgc3RhdGljIHZvaWQgcGt0Z2VuX2ZpbmFsaXplX3NrYihzdHJ1Y3QgcGt0Z2VuX2RldiAqcGt0X2Rldiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdFx0fVxuIFxuIFx0XHRpID0gMDtcbi1cdFx0ZnJhZ19sZW4gPSBtaW5fdChpbnQsIGRhdGFsZW4gLyBmcmFncywgUEFHRV9TSVpFKTtcbi1cdFx0d2hpbGUgKGRhdGFsZW4gXHUwMDNlIDApIHtcbitcdFx0ZnJhZ19sZW4gPSBtaW5fdChpbnQsIERJVl9ST1VORF9VUChkYXRhbGVuLCBmcmFncyksIFBBR0VfU0laRSk7XG4rXHRcdHdoaWxlIChkYXRhbGVuIFx1MDAzZSAwIFx1MDAyNlx1MDAyNiBpIFx1MDAzYyBmcmFncykge1xuIFx0XHRcdGlmICh1bmxpa2VseSghcGt0X2Rldi1cdTAwM2VwYWdlKSkge1xuIFx0XHRcdFx0aW50IG5vZGUgPSBudW1hX25vZGVfaWQoKTtcbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDA4OjM3OjUxLjEwNjkxMDUwOVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYxMzIyMDg0MjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgcGt0Z2VuLmMgUGF0Y2g6IEFkZHJlc3NpbmcgUG90ZW50aWFsIFNLQiBGcmFnbWVudCBJc3N1ZXMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQgdHdlYWtzIGBuZXQvY29yZS9wa3RnZW4uY2AsIHNwZWNpZmljYWxseSB0aGUgYHBrdGdlbl9maW5hbGl6ZV9za2JgIGZ1bmN0aW9uLiBUaGUgY29kZSBjaGFuZ2UgaW1tZWRpYXRlbHkganVtcHMgb3V0IGF0IG1lOiBhIG1vZGlmaWNhdGlvbiB0byBob3cgYGZyYWdfbGVuYCBpcyBjYWxjdWxhdGVkIGFuZCB0aGUgYWRkaXRpb24gb2YgYSBjaGVjayB3aXRoaW4gdGhlIGB3aGlsZWAgbG9vcC4gSW5pdGlhbGx5LCBJIHN1c3BlY3RlZCBpdCB3YXMgYWJvdXQgb3B0aW1pemluZyBmcmFnbWVudCBhbGxvY2F0aW9uIGJ1dCBsb29raW5nIGNsb3NlciBJIHNlZSB0aGUgbW9yZSBsaWtlbHkgcmVhc29uLlxuXG5UaGUgb3JpZ2luYWwgY29kZSB1c2VkIGBkYXRhbGVuIC8gZnJhZ3NgIHRvIGRldGVybWluZSBgZnJhZ19sZW5gLiBNeSBtaW5kIHJhY2VzIHRocm91Z2ggdGhlIGltcGxpY2F0aW9ucy4gSWYgYGRhdGFsZW5gIGlzIHNtYWxsZXIgdGhhbiBgZnJhZ3NgLCB0aGUgZGl2aXNpb24gcmVzdWx0cyBpbiB6ZXJvLiBUaGF0IG1lYW5zIHdlIGNvdWxkIGVuZCB1cCB3aXRoIGEgemVyby1sZW5ndGggZnJhZ21lbnQuIFRoZW4gdGhlIGV4aXN0aW5nIGNvZGUgd291bGQgbGVhZCB0byBhbiBpbmZpbml0ZSBsb29wIGJlY2F1c2UgYGRhdGFsZW5gIHdvdWxkIG5ldmVyIGJlIGRlY3JlbWVudGVkIGFuZCB0aGUgbG9vcCB3b3VsZG4ndCBleGl0LiBPciBldmVuIHdvcnNlLCBpZiBgZGF0YWxlbmAgaXMgbm90IGZ1bGx5IGNvbnN1bWVkLCB0aGVuIGBpYCBjb3VsZCBleGNlZWQgYE1BWF9TS0JfRlJBR1NgLCB3aGljaCBsZWFkcyB0byBhbiBPdXQtb2YtQm91bmRzIG1lbW9yeSBhY2Nlc3MgaXNzdWUuIFRoZSBjaGFuZ2UgYERJVl9ST1VORF9VUChkYXRhbGVuLCBmcmFncylgIGNvdXBsZWQgd2l0aCB0aGUgYWRkaXRpb25hbCBgaSBcdTAwM2MgZnJhZ3NgIGNoZWNrIGluIHRoZSBgd2hpbGVgIGxvb3AgaXMgYSBjbGVhciBhdHRlbXB0IHRvIGF2b2lkIGJvdGggb2YgdGhvc2Ugc2NlbmFyaW9zLiBXZSBhcmUgbm93IGVuc3VyaW5nIHRoYXQgd2UgKmFsd2F5cyogYWxsb2NhdGUgc29tZSBieXRlcywgYW5kIHRoYXQgd2UgZG9uJ3QgZXhjZWVkIHRoZSBudW1iZXIgb2YgZnJhZ21lbnRzLlxuXG5JIG5lZWQgdG8gY29uZmlybSB0aGlzIHVuZGVyc3RhbmRpbmcsIHNvIEknbSBnb2luZyB0byBxdWlja2x5IHJldmlldyB0aGUgY29udGV4dCBvZiBgcGt0Z2VuX2ZpbmFsaXplX3NrYmAgYW5kIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCBvdGhlciBwYXJ0cyBvZiBgcGt0Z2VuLmNgLCBlc3BlY2lhbGx5IHJlbGF0ZWQgdG8gYHBrdGdlbl9kZXZgLiBUaW1lIHRvIGZpcmUgdXAgYGdyZXBwZXJgIGFuZCBzZWUgd2hhdCBlbHNlIGlzIGdvaW5nIG9uIGluIHRoYXQgZmlsZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGZ1bGwgcGljdHVyZSB0byBjb25maXJtIHRoaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwOTAsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyODMsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwODozNzo1Ny4yMzkxMjA5MDVaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODU2NDc1NTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGt0Z2VuX2ZpbmFsaXplX3NrYlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvY29yZS9wa3RnZW4uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvY29yZS9wa3RnZW4uYz0yODE0PXN0YXRpYyBpbmxpbmUgX19iZTE2IGJ1aWxkX3RjaSh1bnNpZ25lZCBpbnQgaWQsIHVuc2lnbmVkIGludCBjZmksXFxuLS1cXG5uZXQvY29yZS9wa3RnZW4uYy0yODE5LVxcbm5ldC9jb3JlL3BrdGdlbi5jOjI4MjA6c3RhdGljIHZvaWQgcGt0Z2VuX2ZpbmFsaXplX3NrYihzdHJ1Y3QgcGt0Z2VuX2RldiAqcGt0X2Rldiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5uZXQvY29yZS9wa3RnZW4uYy0yODIxLVxcdFxcdFxcdFxcdGludCBkYXRhbGVuKVxcbi0tXFxubmV0L2NvcmUvcGt0Z2VuLmM9MjkyNz1zdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmZpbGxfcGFja2V0X2lwdjQoc3RydWN0IG5ldF9kZXZpY2UgKm9kZXYsXFxuLS1cXG5uZXQvY29yZS9wa3RnZW4uYy0zMDI3LVxcbm5ldC9jb3JlL3BrdGdlbi5jOjMwMjg6XFx0cGt0Z2VuX2ZpbmFsaXplX3NrYihwa3RfZGV2LCBza2IsIGRhdGFsZW4pO1xcbm5ldC9jb3JlL3BrdGdlbi5jLTMwMjktXFxuLS1cXG5uZXQvY29yZS9wa3RnZW4uYz0zMDU1PXN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqZmlsbF9wYWNrZXRfaXB2NihzdHJ1Y3QgbmV0X2RldmljZSAqb2RldixcXG4tLVxcbm5ldC9jb3JlL3BrdGdlbi5jLTMxNjItXFxubmV0L2NvcmUvcGt0Z2VuLmM6MzE2MzpcXHRwa3RnZW5fZmluYWxpemVfc2tiKHBrdF9kZXYsIHNrYiwgZGF0YWxlbik7XFxubmV0L2NvcmUvcGt0Z2VuLmMtMzE2NC1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDg6Mzc6NTcuMzI0NzczODYzWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzA0NTE1ODM3MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHVuZGVyc3RhbmRpbmcsIGZyYW1lZCBhcyBteSBpbnRlcm5hbCB0aG91Z2h0IHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gdGhlIFBhY2tldCBHZW5lcmF0aW9uIENvZGUqKlxuXG5BbHJpZ2h0LCBJJ20gZGlnZ2luZyBpbnRvIGBuZXQvY29yZS9wa3RnZW4uY2AgYWdhaW4uIEknbSBzZWVpbmcgdGhhdCBgcGt0Z2VuX2ZpbmFsaXplX3NrYmAgaXMgYSBrZXkgZnVuY3Rpb24gaGVyZS4gVGhlIGludGVyZXN0aW5nIHRoaW5nIGlzIHRoYXQgaXQncyBiZWluZyBjYWxsZWQgYnkgYGZpbGxfcGFja2V0X2lwdjRgIGFuZCBgZmlsbF9wYWNrZXRfaXB2NmAuIFRoYXQgdGVsbHMgbWUgaXQncyBjZW50cmFsIHRvIGNvbnN0cnVjdGluZyBhbmQgZmluYWxpemluZyBib3RoIElQdjQgYW5kIElQdjYgcGFja2V0cyB3aXRoaW4gdGhpcyBwYWNrZXQgZ2VuZXJhdGlvbiBmcmFtZXdvcmsuIE5vdyBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgY29uZmlndXJhdGlvbiB0aGF0IGVuYWJsZXMgdGhpcyBmdW5jdGlvbmFsaXR5LiBXaGF0IGFyZSB0aGUgcmVsZXZhbnQga2VybmVsIGNvbmZpZyBvcHRpb25zIHRoYXQgYnJpbmcgdGhpcyBjb2RlIGludG8gdGhlIGJ1aWxkPyBUaW1lIHRvIGNoZWNrIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMxMjYsIk91dHB1dFRva2VucyI6MjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwODozODowMC4zNjk5MzYwMTdaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzI0NzgwNTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGt0Z2VuXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9jb3JlL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9jb3JlL01ha2VmaWxlPTI2PW9iai0kKENPTkZJR19QUk9DX0ZTKSArPSBuZXQtcHJvY2ZzLm9cXG5uZXQvY29yZS9NYWtlZmlsZToyNzpvYmotJChDT05GSUdfTkVUX1BLVEdFTikgKz0gcGt0Z2VuLm9cXG5uZXQvY29yZS9NYWtlZmlsZS0yOC1vYmotJChDT05GSUdfTkVUUE9MTCkgKz0gbmV0cG9sbC5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDA4OjM4OjAwLjQ0MjQyMDAyNVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4OTg2NDgxODAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgc3VtbWFyaXplZCBpbiB0aGUgZmlyc3QgcGVyc29uLCBhc3N1bWluZyB0aGUgY29udGV4dCBpcyBrZXJuZWwgY29uZmlndXJhdGlvbiBhbmQgdGhlIHVzZXIgaXMgYW4gZXhwZXJ0OlxuXG4qKkludmVzdGlnYXRpbmcgYSBDb25maWd1cmF0aW9uIE9wdGlvbioqXG5cbkFscmlnaHQsIHNvIGl0J3MgYENPTkZJR19ORVRfUEtUR0VOYC4gSSByZWNvZ25pemUgdGhhdCBpbW1lZGlhdGVseS4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hlcmUgdGhpcyBvcHRpb24gaXMgZGVmaW5lZCB3aXRoaW4gdGhlIGtlcm5lbCdzIEtjb25maWcgc3lzdGVtLiBHaXZlbiBteSBleHBlcmllbmNlLCB0aGUgbG9naWNhbCBwbGFjZSB0byBsb29rIGZpcnN0IGlzIGVpdGhlciBpbiBgbmV0L0tjb25maWdgIOKAkyB0aGF0J3Mgb2Z0ZW4gdGhlIG1haW4gZW50cnkgcG9pbnQgZm9yIG5ldHdvcmstcmVsYXRlZCBvcHRpb25zIOKAkyBvciBwZXJoYXBzIGBuZXQvY29yZS9LY29uZmlnYCwgd2hpY2ggY291bGQgY29udGFpbiBzb21lIG9mIHRoZSBtb3JlIGZ1bmRhbWVudGFsLCBjb3JlIG5ldHdvcmtpbmcgY29uZmlndXJhdGlvbnMuIEknbGwgbWVudGFsbHkgcHJpb3JpdGl6ZSB0aG9zZSB0d28gbG9jYXRpb25zIGFuZCBzdGFydCBkaWdnaW5nIGludG8gdGhlIEtjb25maWcgZmlsZXMuIFRoZSBnb2FsIGlzIHRvIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyBhbmQgZGVmYXVsdCBiZWhhdmlvciBvZiBgTkVUX1BLVEdFTmAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM0NDEsIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwODozODowNC4zNDEwNzA0NDVaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQyMDY0Mzg1MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTkVUX1BLVEdFTlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvS2NvbmZpZz0zODQ9bWVudSBcXFwiTmV0d29yayB0ZXN0aW5nXFxcIlxcbm5ldC9LY29uZmlnLTM4NS1cXG5uZXQvS2NvbmZpZzozODY6Y29uZmlnIE5FVF9QS1RHRU5cXG5uZXQvS2NvbmZpZy0zODctXFx0dHJpc3RhdGUgXFxcIlBhY2tldCBHZW5lcmF0b3IgKFVTRSBXSVRIIENBVVRJT04pXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwODozODowNi43NjE3MzYyNzhaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjY0MzM3MjE5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBLZXJuZWwgQ29uZmlndXJhdGlvbiBMYW5kc2NhcGUqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBzb21ldGhpbmcgcmVsYXRlZCB0byBrZXJuZWwgY29uZmlndXJhdGlvbi4gTGV0J3Mgc3RhcnQgYnkgbG9va2luZyBhdCBgbmV0L0tjb25maWdgLCBzcGVjaWZpY2FsbHkgYXJvdW5kIGxpbmUgMzg2LiBJJ20gZ3Vlc3NpbmcgdGhpcyBhcmVhIGRlYWxzIHdpdGggYSBwYXJ0aWN1bGFyIG5ldHdvcmtpbmcgb3B0aW9uLCBvciBwZXJoYXBzIGEgZ3JvdXAgb2YgcmVsYXRlZCBvcHRpb25zLiBMaW5lIDM4NiBpcyBvZnRlbiBhIGdvb2QgcGxhY2UgdG8gc3RhcnQgYmVjYXVzZSBpdCBtaWdodCBiZSBhIG1vZHVsZSBvciBvcHRpb24gaW50cm9kdWN0aW9uLiBJJ20gbG9va2luZyBmb3IgdGhlIGRlZmluaW5nIGhlbHAgdGV4dCwgY29uc3RyYWludHMgb24gb3RoZXIgb3B0aW9ucywgYW5kIG1heWJlIG90aGVyIEtjb25maWcgZmlsZXMgdGhhdCBhcmUgcmVmZXJlbmNlZCBpbiB0aGlzIGFyZWEuIFRoaXMgaW5pdGlhbCBkaXZlIHdpbGwgZ2l2ZSBtZSBhIHNlbnNlIG9mIHRoZSBzY29wZSBhbmQgY29udGV4dCBvZiB0aGUgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzIGluIHRoaXMgYXJlYS4gRnJvbSB0aGVyZSwgSSBjYW4gZGV0ZXJtaW5lIHRoZSBhcHByb3ByaWF0ZSBzdHJhdGVneSB0byBmdWxseSB1bmRlcnN0YW5kIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGUgcGFyYW1ldGVycywgYW5kIGhvdyB0aGV5IGFwcGx5LiBIb3BlZnVsbHksIHdoYXRldmVyIEknbSBpbnZlc3RpZ2F0aW5nIGlzIHNlbGYgZXhwbGFuYXRvcnkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM3NDgsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwODozODoxMC4wMjYwNzUzNTdaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjY1NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMzgwLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMzgwOlxcdFxcdCAgbWFpbnRhaW4gY2FwYWNpdHkgZm9yIHRoZSBvdGhlciBmbG93cy4gVGhpcyBmZWF0dXJlIHByb3ZpZGVzIHNlcnZlcnNcXG4gMzgxOlxcdFxcdCAgd2l0aCBtYW55IGNsaWVudHMgc29tZSBwcm90ZWN0aW9uIGFnYWluc3QgRG9TIGJ5IGEgc2luZ2xlIChzcG9vZmVkKVxcbiAzODI6XFx0XFx0ICBmbG93IHRoYXQgZ3JlYXRseSBleGNlZWRzIGF2ZXJhZ2Ugd29ya2xvYWQuXFxuIDM4MzpcXHRcXG4gMzg0OlxcdG1lbnUgXFxcIk5ldHdvcmsgdGVzdGluZ1xcXCJcXG4gMzg1OlxcdFxcbiAzODY6XFx0Y29uZmlnIE5FVF9QS1RHRU5cXG4gMzg3OlxcdFxcdHRyaXN0YXRlIFxcXCJQYWNrZXQgR2VuZXJhdG9yIChVU0UgV0lUSCBDQVVUSU9OKVxcXCJcXG4gMzg4OlxcdFxcdGRlcGVuZHMgb24gSU5FVCBcXHUwMDI2XFx1MDAyNiBQUk9DX0ZTXFxuIDM4OTpcXHRcXHRoZWxwXFxuIDM5MDpcXHRcXHQgIFRoaXMgbW9kdWxlIHdpbGwgaW5qZWN0IHByZWNvbmZpZ3VyZWQgcGFja2V0cywgYXQgYSBjb25maWd1cmFibGVcXG4gMzkxOlxcdFxcdCAgcmF0ZSwgb3V0IG9mIGEgZ2l2ZW4gaW50ZXJmYWNlLiAgSXQgaXMgdXNlZCBmb3IgbmV0d29yayBpbnRlcmZhY2VcXG4gMzkyOlxcdFxcdCAgc3RyZXNzIHRlc3RpbmcgYW5kIHBlcmZvcm1hbmNlIGFuYWx5c2lzLiAgSWYgeW91IGRvbid0IHVuZGVyc3RhbmRcXG4gMzkzOlxcdFxcdCAgd2hhdCB3YXMganVzdCBzYWlkLCB5b3UgZG9uJ3QgbmVlZCBpdDogc2F5IE4uXFxuIDM5NDpcXHRcXG4gMzk1OlxcdFxcdCAgRG9jdW1lbnRhdGlvbiBvbiBob3cgdG8gdXNlIHRoZSBwYWNrZXQgZ2VuZXJhdG9yIGNhbiBiZSBmb3VuZFxcbiAzOTY6XFx0XFx0ICBhdCBcXHUwMDNjZmlsZTpEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvcGt0Z2VuLnJzdFxcdTAwM2UuXFxuIDM5NzpcXHRcXG4gMzk4OlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGNvZGUgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZVxcbiAzOTk6XFx0XFx0ICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgcGt0Z2VuLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwODozODoxMC4wMjYxNTAxMjdaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDU4MzkxNDYyOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLlxuXG4qKkluaXRpYWwgQXNzZXNzbWVudCBvZiB0aGUgYHBrdGdlbmAgTW9kdWxlKipcblxuQWxyaWdodCwgc28gSSdtIGxvb2tpbmcgYXQgdGhlIGRlcGVuZGVuY2llcyBvZiBgTkVUX1BLVEdFTmAuIEl0J3MgcHJldHR5IGNsZWFyIHRoaXMgbW9kdWxlIHJlbGllcyBvbiB0aGUgbmV0d29ya2luZyBzdGFjaywgYElORVRgLCB3aGljaCBtYWtlcyBzZW5zZS4gT2YgY291cnNlLCBpdCBhbHNvIHRvdWNoZXMgYFBST0NfRlNgLCBpbmRpY2F0aW5nIHNvbWUga2luZCBvZiB1c2VyLXNwYWNlIGludGVyZmFjZSBvciBjb25maWd1cmF0aW9uIHRocm91Z2ggdGhlIHByb2MgZmlsZXN5c3RlbS4gVGhhdCdzIHR5cGljYWwgZm9yIGEgcGFja2V0IGdlbmVyYXRvci5cblxuTXkgcHJpbWFyeSBpbnRlcmVzdCByaWdodCBub3cgbGllcyBpbiB0aGUgcGFja2V0IGZpbGxpbmcgZnVuY3Rpb25zLCBgZmlsbF9wYWNrZXRfaXB2NGAgYW5kIGBmaWxsX3BhY2tldF9pcHY2YC4gVGhlIGZhY3QgdGhhdCB0aGV5J3JlIGBzdGF0aWNgIGlzIG5vdGV3b3J0aHkg4oCTIHRoZXkncmUgbGlrZWx5IGhlbHBlciBmdW5jdGlvbnMgaW50ZXJuYWwgdG8gdGhlIGBwa3RnZW5gIGltcGxlbWVudGF0aW9uIGFuZCBub3QgaW50ZW5kZWQgZm9yIGRpcmVjdCBleHRlcm5hbCB1c2UuIEkgc2hvdWxkIGFsc28gcmVtZW1iZXIgYHBrdGdlbl9maW5hbGl6ZV9za2JgIGlzIGBzdGF0aWNgLiBJJ2xsIHdhbnQgdG8ga2VlcCB0aGF0IGluIG1pbmQgd2hlbiB0cmFjaW5nIHRoZSBwYWNrZXQgY3JlYXRpb24gZmxvdy5cblxuTm93LCBJJ20gdGhpbmtpbmcgYWJvdXQgdGhlIGJpZ2dlciBwaWN0dXJlLiBJIG5lZWQgYSBjbGVhciB2aWV3IG9mIHRoZSAqcHVibGljKiBpbnRlcmZhY2UsIHNvIHRvIHNwZWFrLiBUaGVyZWZvcmUsIEkgbmVlZCB0byBrbm93IHdoaWNoIGZ1bmN0aW9ucyB3aXRoaW4gYHBrdGdlbi5jYCBhcmUgKm5vdCogc3RhdGljLCBhcyB0aGVzZSBhcmUgdGhlIG9uZXMgdGhhdCBhcmUgYWNjZXNzaWJsZSB0byBvdGhlciBtb2R1bGVzIGFuZCBwb3RlbnRpYWxseSBob3cgdGhlIGdlbmVyYXRvciBpcyBjb250cm9sbGVkIG9yIHV0aWxpemVkLiBJIG5lZWQgdG8gZW51bWVyYXRlIHRoZW0gdG8gZ2V0IGEgY29tcHJlaGVuc2l2ZSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBtb2R1bGUncyBleHBvc2VkIGZ1bmN0aW9uYWxpdHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQzMTMsIk91dHB1dFRva2VucyI6NTUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3OCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDA4OjM4OjE0LjYxMDA2NzY1N1oiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTIxNjY5NDk5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl4oW2Etel9BLVowLTldKyApK1thLXpfQS1aMC05XStcXFxcKFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvY29yZS9wa3RnZW4uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvY29yZS9wa3RnZW4uYz00ODA9c3RhdGljIGNvbnN0IGNoYXIgdmVyc2lvbltdID1cXG4tLVxcbm5ldC9jb3JlL3BrdGdlbi5jLTQ4Mi1cXG5uZXQvY29yZS9wa3RnZW4uYzo0ODM6c3RhdGljIGludCBwa3RnZW5fcmVtb3ZlX2RldmljZShzdHJ1Y3QgcGt0Z2VuX3RocmVhZCAqdCwgc3RydWN0IHBrdGdlbl9kZXYgKmkpO1xcbm5ldC9jb3JlL3BrdGdlbi5jOjQ4NDpzdGF0aWMgaW50IHBrdGdlbl9hZGRfZGV2aWNlKHN0cnVjdCBwa3RnZW5fdGhyZWFkICp0LCBjb25zdCBjaGFyICppZm5hbWUpO1xcbm5ldC9jb3JlL3BrdGdlbi5jLTQ4NS1zdGF0aWMgc3RydWN0IHBrdGdlbl9kZXYgKnBrdGdlbl9maW5kX2RldihzdHJ1Y3QgcGt0Z2VuX3RocmVhZCAqdCxcXG5uZXQvY29yZS9wa3RnZW4uYy00ODYtXFx0XFx0XFx0XFx0XFx0ICBjb25zdCBjaGFyICppZm5hbWUsIGJvb2wgZXhhY3QpO1xcbm5ldC9jb3JlL3BrdGdlbi5jOjQ4NzpzdGF0aWMgaW50IHBrdGdlbl9kZXZpY2VfZXZlbnQoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICosIHVuc2lnbmVkIGxvbmcsIHZvaWQgKik7XFxubmV0L2NvcmUvcGt0Z2VuLmM6NDg4OnN0YXRpYyB2b2lkIHBrdGdlbl9ydW5fYWxsX3RocmVhZHMoc3RydWN0IHBrdGdlbl9uZXQgKnBuKTtcXG5uZXQvY29yZS9wa3RnZW4uYzo0ODk6c3RhdGljIHZvaWQgcGt0Z2VuX3Jlc2V0X2FsbF90aHJlYWRzKHN0cnVjdCBwa3RnZW5fbmV0ICpwbik7XFxubmV0L2NvcmUvcGt0Z2VuLmM6NDkwOnN0YXRpYyB2b2lkIHBrdGdlbl9zdG9wX2FsbF90aHJlYWRzKHN0cnVjdCBwa3RnZW5fbmV0ICpwbik7XFxubmV0L2NvcmUvcGt0Z2VuLmMtNDkxLVxcbm5ldC9jb3JlL3BrdGdlbi5jOjQ5MjpzdGF0aWMgdm9pZCBwa3RnZW5fc3RvcChzdHJ1Y3QgcGt0Z2VuX3RocmVhZCAqdCk7XFxubmV0L2NvcmUvcGt0Z2VuLmM6NDkzOnN0YXRpYyB2b2lkIHBrdGdlbl9jbGVhcl9jb3VudGVycyhzdHJ1Y3QgcGt0Z2VuX2RldiAqcGt0X2Rldik7XFxubmV0L2NvcmUvcGt0Z2VuLmM6NDk0OnN0YXRpYyB2b2lkIGZpbGxfaW1peF9kaXN0cmlidXRpb24oc3RydWN0IHBrdGdlbl9kZXYgKnBrdF9kZXYpO1xcbm5ldC9jb3JlL3BrdGdlbi5jLTQ5NS1cXG4tLVxcbm5ldC9jb3JlL3BrdGdlbi5jPTUwMD1zdGF0aWMgaW50IGRlYnVnICBfX3JlYWRfbW9zdGx5O1xcbm5ldC9jb3JlL3BrdGdlbi5jLTUwMS1cXG5uZXQvY29yZS9wa3RnZW4uYzo1MDI6c3RhdGljIERFRklORV9NVVRFWChwa3RnZW5fdGhyZWFkX2xvY2spO1xcbm5ldC9jb3JlL3BrdGdlbi5jLTUwMy1cXG5uZXQvY29yZS9wa3RnZW4uYz01MDQ9c3RhdGljIHN0cnVjdCBub3RpZmllcl9ibG9jayBwa3RnZW5fbm90aWZpZXJfYmxvY2sgPSB7XFxuLS1cXG5uZXQvY29yZS9wa3RnZW4uYy01MTItXFxubmV0L2NvcmUvcGt0Z2VuLmM6NTEzOnN0YXRpYyBpbnQgcGdjdHJsX3Nob3coc3RydWN0IHNlcV9maWxlICpzZXEsIHZvaWQgKnYpXFxubmV0L2NvcmUvcGt0Z2VuLmMtNTE0LXtcXG4tLVxcbm5ldC9jb3JlL3BrdGdlbi5jLTUxOC1cXG5uZXQvY29yZS9wa3RnZW4uYzo1MTk6c3RhdGljIHNzaXplX3QgcGdjdHJsX3dyaXRlKHN0cnVjdCBmaWxlICpmaWxlLCBjb25zdCBjaGFyIF9fdXNlciAqYnVmLFxcbm5ldC9jb3JlL3BrdGdlbi5jLTUyMC1cXHRcXHRcXHQgICAgc2l6ZV90IGNvdW50LCBsb2ZmX3QgKnBwb3MpXFxuLS1cXG5uZXQvY29yZS9wa3RnZW4uYy01NTItXFxubmV0L2NvcmUvcGt0Z2VuLmM6NTUzOnN0YXRpYyBpbnQgcGdjdHJsX29wZW4oc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUpXFxubmV0L2NvcmUvcGt0Z2VuLmMtNTU0LXtcXG4tLVxcbm5ldC9jb3JlL3BrdGdlbi5jPTU1OD1zdGF0aWMgY29uc3Qgc3RydWN0IHByb2Nfb3BzIHBrdGdlbl9wcm9jX29wcyA9IHtcXG4tLVxcbm5ldC9jb3JlL3BrdGdlbi5jLTU2NS1cXG5uZXQvY29yZS9wa3RnZW4uYzo1NjY6c3RhdGljIGludCBwa3RnZW5faWZfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSwgdm9pZCAqdilcXG5uZXQvY29yZS9wa3RnZW4uYy01Njcte1xcbi0tXFxubmV0L2NvcmUvcGt0Z2VuLmMtNzUwLVxcbm5ldC9jb3JlL3BrdGdlbi5jOjc1MTpzdGF0aWMgc3NpemVfdCBoZXgzMl9hcmcoY29uc3QgY2hhciBfX3VzZXIgKnVzZXJfYnVmZmVyLCBzaXplX3QgbWF4bGVuLFxcbm5ldC9jb3JlL3BrdGdlbi5jLTc1Mi1cXHRcXHRcXHQgX191MzIgKm51bSlcXG4tLVxcbm5ldC9jb3JlL3BrdGdlbi5jLTc3NC1cXG5uZXQvY29yZS9wa3RnZW4uYzo3NzU6c3RhdGljIHNzaXplX3QgY291bnRfdHJhaWxfY2hhcnMoY29uc3QgY2hhciBfX3VzZXIgKnVzZXJfYnVmZmVyLCBzaXplX3QgbWF4bGVuKVxcbm5ldC9jb3JlL3BrdGdlbi5jLTc3Ni17XFxuLS1cXG5uZXQvY29yZS9wa3RnZW4uYy03OTktXFxubmV0L2NvcmUvcGt0Z2VuLmM6ODAwOnN0YXRpYyBzc2l6ZV90IG51bV9hcmcoY29uc3QgY2hhciBfX3VzZXIgKnVzZXJfYnVmZmVyLCBzaXplX3QgbWF4bGVuLFxcbm5ldC9jb3JlL3BrdGdlbi5jLTgwMS1cXHRcXHQgICAgICAgdW5zaWduZWQgbG9uZyAqbnVtKVxcbi0tXFxubmV0L2NvcmUvcGt0Z2VuLmMtODE5LVxcbm5ldC9jb3JlL3BrdGdlbi5jOjgyMDpzdGF0aWMgc3NpemVfdCBzdHJuX2xlbihjb25zdCBjaGFyIF9fdXNlciAqdXNlcl9idWZmZXIsIHNpemVfdCBtYXhsZW4pXFxubmV0L2NvcmUvcGt0Z2VuLmMtODIxLXtcXG4tLVxcbm5ldC9jb3JlL3BrdGdlbi5jLTg0OS0gKi9cXG5uZXQvY29yZS9wa3RnZW4uYzo4NTA6c3RhdGljIHNzaXplX3QgZ2V0X2ltaXhfZW50cmllcyhjb25zdCBjaGFyIF9fdXNlciAqYnVmZmVyLFxcbm5ldC9jb3JlL3BrdGdlbi5jLTg1MS1cXHRcXHRcXHRcXHRzaXplX3QgbWF4bGVuLFxcbi0tXFxubmV0L2NvcmUvcGt0Z2VuLmMtOTExLVxcbm5ldC9jb3JlL3BrdGdlbi5jOjkxMjpzdGF0aWMgc3NpemVfdCBnZXRfbGFiZWxzKGNvbnN0IGNoYXIgX191c2VyICpidWZmZXIsXFxubmV0L2NvcmUvcGt0Z2VuLmMtOTEzLVxcdFxcdFxcdCAgc2l6ZV90IG1heGxlbiwgc3RydWN0IHBrdGdlbl9kZXYgKnBrdF9kZXYpXFxuLS1cXG5uZXQvY29yZS9wa3RnZW4uYy05NTQtXFxubmV0L2NvcmUvcGt0Z2VuLmM6OTU1OnN0YXRpYyBfX3UzMiBwa3RnZW5fcmVhZF9mbGFnKGNvbnN0IGNoYXIgKmYsIGJvb2wgKmRpc2FibGUpXFxubmV0L2NvcmUvcGt0Z2VuLmMtOTU2LXtcXG4tLVxcbm5ldC9jb3JlL3BrdGdlbi5jLTk4My1cXG5uZXQvY29yZS9wa3RnZW4uYzo5ODQ6c3RhdGljIHNzaXplX3QgcGt0Z2VuX2lmX3dyaXRlKHN0cnVjdCBmaWxlICpmaWxlLFxcbm5ldC9jb3JlL3BrdGdlbi5jLTk4NS1cXHRcXHRcXHQgICAgICAgY29uc3QgY2hhciBfX3VzZXIgKnVzZXJfYnVmZmVyLCBzaXplX3QgY291bnQsXFxuLS1cXG5uZXQvY29yZS9wa3RnZW4uYy0xODcxLVxcbm5ldC9jb3JlL3BrdGdlbi5jOjE4NzI6c3RhdGljIGludCBwa3RnZW5faWZfb3BlbihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSlcXG5uZXQvY29yZS9wa3RnZW4uYy0xODczLXtcXG4tLVxcbm5ldC9jb3JlL3BrdGdlbi5jPTE4Nzc9c3RhdGljIGNvbnN0IHN0cnVjdCBwcm9jX29wcyBwa3RnZW5faWZfcHJvY19vcHMgPSB7XFxuLS1cXG5uZXQvY29yZS9wa3RnZW4uYy0xODg0LVxcbm5ldC9jb3JlL3BrdGdlbi5jOjE4ODU6c3RhdGljIGludCBwa3RnZW5fdGhyZWFkX3Nob3coc3RydWN0IHNlcV9maWxlICpzZXEsIHZvaWQgKnYpXFxubmV0L2NvcmUvcGt0Z2VuLmMtMTg4Ni17XFxuLS1cXG5uZXQvY29yZS9wa3RnZW4uYy0xOTE0LVxcbm5ldC9jb3JlL3BrdGdlbi5jOjE5MTU6c3RhdGljIHNzaXplX3QgcGt0Z2VuX3RocmVhZF93cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSxcXG5uZXQvY29yZS9wa3RnZW4uYy0xOTE2LVxcdFxcdFxcdFxcdCAgIGNvbnN0IGNoYXIgX191c2VyICp1c2VyX2J1ZmZlcixcXG4tLVxcbm5ldC9jb3JlL3BrdGdlbi5jLTIwMTEtXFxubmV0L2NvcmUvcGt0Z2VuLmM6MjAxMjpzdGF0aWMgaW50IHBrdGdlbl90aHJlYWRfb3BlbihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSlcXG5uZXQvY29yZS9wa3RnZW4uYy0yMDEzLXtcXG4tLVxcbm5ldC9jb3JlL3BrdGdlbi5jPTIwMjY9c3RhdGljIHN0cnVjdCBwa3RnZW5fZGV2ICpfX3BrdGdlbl9OTl90aHJlYWRzKGNvbnN0IHN0cnVjdCBwa3RnZW5fbmV0ICpwbixcXG4tLVxcbm5ldC9jb3JlL3BrdGdlbi5jLTIwNDgtICovXFxubmV0L2NvcmUvcGt0Z2VuLmM6MjA0OTpzdGF0aWMgdm9pZCBwa3RnZW5fbWFya19kZXZpY2UoY29uc3Qgc3RydWN0IHBrdGdlbl9uZXQgKnBuLCBjb25zdCBjaGFyICppZm5hbWUpXFxubmV0L2NvcmUvcGt0Z2VuLmMtMjA1MC17XFxuLS1cXG5uZXQvY29yZS9wa3RnZW4uYy0yMDgwLVxcbm5ldC9jb3JlL3BrdGdlbi5jOjIwODE6c3RhdGljIHZvaWQgcGt0Z2VuX2NoYW5nZV9uYW1lKGNvbnN0IHN0cnVjdCBwa3RnZW5fbmV0ICpwbiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5uZXQvY29yZS9wa3RnZW4uYy0yMDgyLXtcXG4tLVxcbm5ldC9jb3JlL3BrdGdlbi5jLTIxMTAtXFxubmV0L2NvcmUvcGt0Z2VuLmM6MjExMTpzdGF0aWMgaW50IHBrdGdlbl9kZXZpY2VfZXZlbnQoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICp1bnVzZWQsXFxubmV0L2NvcmUvcGt0Z2VuLmMtMjExMi1cXHRcXHRcXHQgICAgICAgdW5zaWduZWQgbG9uZyBldmVudCwgdm9pZCAqcHRyKVxcbi0tXFxubmV0L2NvcmUvcGt0Z2VuLmM9MjEzNz1zdGF0aWMgc3RydWN0IG5ldF9kZXZpY2UgKnBrdGdlbl9kZXZfZ2V0X2J5X25hbWUoY29uc3Qgc3RydWN0IHBrdGdlbl9uZXQgKnBuLFxcbi0tXFxubmV0L2NvcmUvcGt0Z2VuLmMtMjE1Ny1cXG5uZXQvY29yZS9wa3RnZW4uYzoyMTU4OnN0YXRpYyBpbnQgcGt0Z2VuX3NldHVwX2Rldihjb25zdCBzdHJ1Y3QgcGt0Z2VuX25ldCAqcG4sXFxubmV0L2NvcmUvcGt0Z2VuLmMtMjE1OS1cXHRcXHRcXHQgICAgc3RydWN0IHBrdGdlbl9kZXYgKnBrdF9kZXYsIGNvbnN0IGNoYXIgKmlmbmFtZSlcXG4tLVxcbm5ldC9jb3JlL3BrdGdlbi5jLTIxOTQtICovXFxubmV0L2NvcmUvcGt0Z2VuLmM6MjE5NTpzdGF0aWMgdm9pZCBwa3RnZW5fc2V0dXBfaW5qZWN0KHN0cnVjdCBwa3RnZW5fZGV2ICpwa3RfZGV2KVxcbm5ldC9jb3JlL3BrdGdlbi5jLTIxOTYte1xcbi0tXFxubmV0L2NvcmUvcGt0Z2VuLmMtMjMyMy1cXG5uZXQvY29yZS9wa3RnZW4uYzoyMzI0OnN0YXRpYyB2b2lkIHNwaW4oc3RydWN0IHBrdGdlbl9kZXYgKnBrdF9kZXYsIGt0aW1lX3Qgc3Bpbl91bnRpbClcXG5uZXQvY29yZS9wa3RnZW4uYy0yMzI1LXtcXG4tLVxcbm5ldC9jb3JlL3BrdGdlbi5jLTIzNjItXFxubmV0L2NvcmUvcGt0Z2VuLmM6MjM2MzpzdGF0aWMgaW5saW5lIHZvaWQgc2V0X3BrdF9vdmVyaGVhZChzdHJ1Y3QgcGt0Z2VuX2RldiAqcGt0X2RldilcXG5uZXQvY29yZS9wa3RnZW4uYy0yMzY0LXtcXG4tLVxcbm5ldC9jb3JlL3BrdGdlbi5jLTIzNzAtXFxubmV0L2NvcmUvcGt0Z2VuLmM6MjM3MTpzdGF0aWMgaW5saW5lIGludCBmX3NlZW4oY29uc3Qgc3RydWN0IHBrdGdlbl9kZXYgKnBrdF9kZXYsIGludCBmbG93KVxcbm5ldC9jb3JlL3BrdGdlbi5jLTIzNzIte1xcbi0tXFxubmV0L2NvcmUvcGt0Z2VuLmMtMjM3NS1cXG5uZXQvY29yZS9wa3RnZW4uYzoyMzc2OnN0YXRpYyBpbmxpbmUgaW50IGZfcGljayhzdHJ1Y3QgcGt0Z2VuX2RldiAqcGt0X2RldilcXG5uZXQvY29yZS9wa3RnZW4uYy0yMzc3LXtcXG4tLVxcbm5ldC9jb3JlL3BrdGdlbi5jLTI0MDYtI2RlZmluZSBEVU1NWV9NQVJLIDBcXG5uZXQvY29yZS9wa3RnZW4uYzoyNDA3OnN0YXRpYyB2b2lkIGdldF9pcHNlY19zYShzdHJ1Y3QgcGt0Z2VuX2RldiAqcGt0X2RldiwgaW50IGZsb3cpXFxubmV0L2NvcmUvcGt0Z2VuLmMtMjQwOC17XFxuLS1cXG5uZXQvY29yZS9wa3RnZW4uYy0yNDM3LX1cXG5uZXQvY29yZS9wa3RnZW4uYzoyNDM4OnN0YXRpYyB2b2lkIHNldF9jdXJfcXVldWVfbWFwKHN0cnVjdCBwa3RnZW5fZGV2ICpwa3RfZGV2KVxcbm5ldC9jb3JlL3BrdGdlbi5jLTI0Mzkte1xcbi0tXFxubmV0L2NvcmUvcGt0Z2VuLmMtMjQ2MS0gKi9cXG5uZXQvY29yZS9wa3RnZW4uYzoyNDYyOnN0YXRpYyB2b2lkIG1vZF9jdXJfaGVhZGVycyhzdHJ1Y3QgcGt0Z2VuX2RldiAqcGt0X2RldilcXG5uZXQvY29yZS9wa3RnZW4uYy0yNDYzLXtcXG4tLVxcbm5ldC9jb3JlL3BrdGdlbi5jLTI2NjUtXFxubmV0L2NvcmUvcGt0Z2VuLmM6MjY2NjpzdGF0aWMgdm9pZCBmaWxsX2ltaXhfZGlzdHJpYnV0aW9uKHN0cnVjdCBwa3RnZW5fZGV2ICpwa3RfZGV2KVxcbm5ldC9jb3JlL3BrdGdlbi5jLTI2Njcte1xcbi0tXFxubmV0L2NvcmUvcGt0Z2VuLmM9MjY5ND1zdGF0aWMgdTMyIHBrdGdlbl9kc3RfbWV0cmljc1tSVEFYX01BWCArIDFdID0ge1xcbi0tXFxubmV0L2NvcmUvcGt0Z2VuLmMtMjY5OC1cXG5uZXQvY29yZS9wa3RnZW4uYzoyNjk5OnN0YXRpYyBpbnQgcGt0Z2VuX291dHB1dF9pcHNlYyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgcGt0Z2VuX2RldiAqcGt0X2RldilcXG5uZXQvY29yZS9wa3RnZW4uYy0yNzAwLXtcXG4tLVxcbm5ldC9jb3JlL3BrdGdlbi5jLTI3MzgtXFxubmV0L2NvcmUvcGt0Z2VuLmM6MjczOTpzdGF0aWMgdm9pZCBmcmVlX1NBcyhzdHJ1Y3QgcGt0Z2VuX2RldiAqcGt0X2RldilcXG5uZXQvY29yZS9wa3RnZW4uYy0yNzQwLXtcXG4tLVxcbm5ldC9jb3JlL3BrdGdlbi5jLTI3NTUtXFxubmV0L2NvcmUvcGt0Z2VuLmM6Mjc1NjpzdGF0aWMgaW50IHByb2Nlc3NfaXBzZWMoc3RydWN0IHBrdGdlbl9kZXYgKnBrdF9kZXYsXFxubmV0L2NvcmUvcGt0Z2VuLmMtMjc1Ny1cXHRcXHRcXHQgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBfX2JlMTYgcHJvdG9jb2wpXFxuLS1cXG5uZXQvY29yZS9wa3RnZW4uYy0yODAyLVxcbm5ldC9jb3JlL3BrdGdlbi5jOjI4MDM6c3RhdGljIHZvaWQgbXBsc19wdXNoKF9fYmUzMiAqbXBscywgc3RydWN0IHBrdGdlbl9kZXYgKnBrdF9kZXYpXFxubmV0L2NvcmUvcGt0Z2VuLmMtMjgwNC17XFxuLS1cXG5uZXQvY29yZS9wa3RnZW4uYy0yODEzLVxcbm5ldC9jb3JlL3BrdGdlbi5jOjI4MTQ6c3RhdGljIGlubGluZSBfX2JlMTYgYnVpbGRfdGNpKHVuc2lnbmVkIGludCBpZCwgdW5zaWduZWQgaW50IGNmaSxcXG5uZXQvY29yZS9wa3RnZW4uYy0yODE1LVxcdFxcdFxcdCAgICAgICB1bnNpZ25lZCBpbnQgcHJpbylcXG4tLVxcbm5ldC9jb3JlL3BrdGdlbi5jLTI4MTktXFxubmV0L2NvcmUvcGt0Z2VuLmM6MjgyMDpzdGF0aWMgdm9pZCBwa3RnZW5fZmluYWxpemVfc2tiKHN0cnVjdCBwa3RnZW5fZGV2ICpwa3RfZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbm5ldC9jb3JlL3BrdGdlbi5jLTI4MjEtXFx0XFx0XFx0XFx0aW50IGRhdGFsZW4pXFxuLS1cXG5uZXQvY29yZS9wa3RnZW4uYz0zMTg1PXN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqZmlsbF9wYWNrZXQoc3RydWN0IG5ldF9kZXZpY2UgKm9kZXYsXFxuLS1cXG5uZXQvY29yZS9wa3RnZW4uYy0zMTkzLVxcbm5ldC9jb3JlL3BrdGdlbi5jOjMxOTQ6c3RhdGljIHZvaWQgcGt0Z2VuX2NsZWFyX2NvdW50ZXJzKHN0cnVjdCBwa3RnZW5fZGV2ICpwa3RfZGV2KVxcbm5ldC9jb3JlL3BrdGdlbi5jLTMxOTUte1xcbi0tXFxubmV0L2NvcmUvcGt0Z2VuLmMtMzIwNC1cXG5uZXQvY29yZS9wa3RnZW4uYzozMjA1OnN0YXRpYyB2b2lkIHBrdGdlbl9ydW4oc3RydWN0IHBrdGdlbl90aHJlYWQgKnQpXFxubmV0L2NvcmUvcGt0Z2VuLmMtMzIwNi17XFxuLS1cXG5uZXQvY29yZS9wa3RnZW4uYy0zMjM3LVxcbm5ldC9jb3JlL3BrdGdlbi5jOjMyMzg6c3RhdGljIHZvaWQgcGt0Z2VuX2hhbmRsZV9hbGxfdGhyZWFkcyhzdHJ1Y3QgcGt0Z2VuX25ldCAqcG4sIHUzMiBmbGFncylcXG5uZXQvY29yZS9wa3RnZW4uYy0zMjM5LXtcXG4tLVxcbm5ldC9jb3JlL3BrdGdlbi5jLTMyNDktXFxubmV0L2NvcmUvcGt0Z2VuLmM6MzI1MDpzdGF0aWMgdm9pZCBwa3RnZW5fc3RvcF9hbGxfdGhyZWFkcyhzdHJ1Y3QgcGt0Z2VuX25ldCAqcG4pXFxubmV0L2NvcmUvcGt0Z2VuLmMtMzI1MS17XFxuLS1cXG5uZXQvY29yZS9wa3RnZW4uYy0zMjU2LVxcbm5ldC9jb3JlL3BrdGdlbi5jOjMyNTc6c3RhdGljIGludCB0aHJlYWRfaXNfcnVubmluZyhjb25zdCBzdHJ1Y3QgcGt0Z2VuX3RocmVhZCAqdClcXG5uZXQvY29yZS9wa3RnZW4uYy0zMjU4LXtcXG4tLVxcbm5ldC9jb3JlL3BrdGdlbi5jLTMyNzAtXFxubmV0L2NvcmUvcGt0Z2VuLmM6MzI3MTpzdGF0aWMgaW50IHBrdGdlbl93YWl0X3RocmVhZF9ydW4oc3RydWN0IHBrdGdlbl90aHJlYWQgKnQpXFxubmV0L2NvcmUvcGt0Z2VuLmMtMzI3Mi17XFxuLS1cXG5uZXQvY29yZS9wa3RnZW4uYy0zMjkwLVxcbm5ldC9jb3JlL3BrdGdlbi5jOjMyOTE6c3RhdGljIGludCBwa3RnZW5fd2FpdF9hbGxfdGhyZWFkc19ydW4oc3RydWN0IHBrdGdlbl9uZXQgKnBuKVxcbm5ldC9jb3JlL3BrdGdlbi5jLTMyOTIte1xcbi0tXFxubmV0L2NvcmUvcGt0Z2VuLmMtMzMxNi1cXG5uZXQvY29yZS9wa3RnZW4uYzozMzE3OnN0YXRpYyB2b2lkIHBrdGdlbl9ydW5fYWxsX3RocmVhZHMoc3RydWN0IHBrdGdlbl9uZXQgKnBuKVxcbm5ldC9jb3JlL3BrdGdlbi5jLTMzMTgte1xcbi0tXFxubmV0L2NvcmUvcGt0Z2VuLmMtMzMyOC1cXG5uZXQvY29yZS9wa3RnZW4uYzozMzI5OnN0YXRpYyB2b2lkIHBrdGdlbl9yZXNldF9hbGxfdGhyZWFkcyhzdHJ1Y3QgcGt0Z2VuX25ldCAqcG4pXFxubmV0L2NvcmUvcGt0Z2VuLmMtMzMzMC17XFxuLS1cXG5uZXQvY29yZS9wa3RnZW4uYy0zMzQwLVxcbm5ldC9jb3JlL3BrdGdlbi5jOjMzNDE6c3RhdGljIHZvaWQgc2hvd19yZXN1bHRzKHN0cnVjdCBwa3RnZW5fZGV2ICpwa3RfZGV2LCBpbnQgbnJfZnJhZ3MpXFxubmV0L2NvcmUvcGt0Z2VuLmMtMzM0Mi17XFxuLS1cXG5uZXQvY29yZS9wa3RnZW4uYy0zMzgyLS8qIFNldCBzdG9wcGVkLWF0IHRpbWVyLCByZW1vdmUgZnJvbSBydW5uaW5nIGxpc3QsIGRvIGNvdW50ZXJzIFxcdTAwMjYgc3RhdGlzdGljcyAqL1xcbm5ldC9jb3JlL3BrdGdlbi5jOjMzODM6c3RhdGljIGludCBwa3RnZW5fc3RvcF9kZXZpY2Uoc3RydWN0IHBrdGdlbl9kZXYgKnBrdF9kZXYpXFxubmV0L2NvcmUvcGt0Z2VuLmMtMzM4NC17XFxuLS1cXG5uZXQvY29yZS9wa3RnZW4uYz0zNDAzPXN0YXRpYyBzdHJ1Y3QgcGt0Z2VuX2RldiAqbmV4dF90b19ydW4oc3RydWN0IHBrdGdlbl90aHJlYWQgKnQpXFxuLS1cXG5uZXQvY29yZS9wa3RnZW4uYy0zNDIwLVxcbm5ldC9jb3JlL3BrdGdlbi5jOjM0MjE6c3RhdGljIHZvaWQgcGt0Z2VuX3N0b3Aoc3RydWN0IHBrdGdlbl90aHJlYWQgKnQpXFxubmV0L2NvcmUvcGt0Z2VuLmMtMzQyMi17XFxuLS1cXG5uZXQvY29yZS9wa3RnZW4uYy0zNDM5LSAqL1xcbm5ldC9jb3JlL3BrdGdlbi5jOjM0NDA6c3RhdGljIHZvaWQgcGt0Z2VuX3JlbV9vbmVfaWYoc3RydWN0IHBrdGdlbl90aHJlYWQgKnQpXFxubmV0L2NvcmUvcGt0Z2VuLmMtMzQ0MS17XFxuLS1cXG5uZXQvY29yZS9wa3RnZW4uYy0zNDYxLVxcbm5ldC9jb3JlL3BrdGdlbi5jOjM0NjI6c3RhdGljIHZvaWQgcGt0Z2VuX3JlbV9hbGxfaWZzKHN0cnVjdCBwa3RnZW5fdGhyZWFkICp0KVxcbm5ldC9jb3JlL3BrdGdlbi5jLTM0NjMte1xcbi0tXFxubmV0L2NvcmUvcGt0Z2VuLmMtMzQ4MC1cXG5uZXQvY29yZS9wa3RnZW4uYzozNDgxOnN0YXRpYyB2b2lkIHBrdGdlbl9yZW1fdGhyZWFkKHN0cnVjdCBwa3RnZW5fdGhyZWFkICp0KVxcbm5ldC9jb3JlL3BrdGdlbi5jLTM0ODIte1xcbi0tXFxubmV0L2NvcmUvcGt0Z2VuLmMtMzQ4Ni1cXG5uZXQvY29yZS9wa3RnZW4uYzozNDg3OnN0YXRpYyB2b2lkIHBrdGdlbl9yZXNjaGVkKHN0cnVjdCBwa3RnZW5fZGV2ICpwa3RfZGV2KVxcbm5ldC9jb3JlL3BrdGdlbi5jLTM0ODgte1xcbi0tXFxubmV0L2NvcmUvcGt0Z2VuLmMtMzQ5NC1cXG5uZXQvY29yZS9wa3RnZW4uYzozNDk1OnN0YXRpYyB2b2lkIHBrdGdlbl93YWl0X2Zvcl9za2Ioc3RydWN0IHBrdGdlbl9kZXYgKnBrdF9kZXYpXFxubmV0L2NvcmUvcGt0Z2VuLmMtMzQ5Ni17XFxuLS1cXG5uZXQvY29yZS9wa3RnZW4uYy0zNTEwLVxcbm5ldC9jb3JlL3BrdGdlbi5jOjM1MTE6c3RhdGljIHZvaWQgcGt0Z2VuX3htaXQoc3RydWN0IHBrdGdlbl9kZXYgKnBrdF9kZXYpXFxubmV0L2NvcmUvcGt0Z2VuLmMtMzUxMi17XFxuLS1cXG5uZXQvY29yZS9wa3RnZW4uYy0zNjk5LVxcbm5ldC9jb3JlL3BrdGdlbi5jOjM3MDA6c3RhdGljIGludCBwa3RnZW5fdGhyZWFkX3dvcmtlcih2b2lkICphcmcpXFxubmV0L2NvcmUvcGt0Z2VuLmMtMzcwMS17XFxuLS1cXG5uZXQvY29yZS9wa3RnZW4uYz0zNzcwPXN0YXRpYyBzdHJ1Y3QgcGt0Z2VuX2RldiAqcGt0Z2VuX2ZpbmRfZGV2KHN0cnVjdCBwa3RnZW5fdGhyZWFkICp0LFxcbi0tXFxubmV0L2NvcmUvcGt0Z2VuLmMtMzc5NS1cXG5uZXQvY29yZS9wa3RnZW4uYzozNzk2OnN0YXRpYyBpbnQgYWRkX2Rldl90b190aHJlYWQoc3RydWN0IHBrdGdlbl90aHJlYWQgKnQsXFxubmV0L2NvcmUvcGt0Z2VuLmMtMzc5Ny1cXHRcXHRcXHQgICAgIHN0cnVjdCBwa3RnZW5fZGV2ICpwa3RfZGV2KVxcbi0tXFxubmV0L2NvcmUvcGt0Z2VuLmMtMzgyNi1cXG5uZXQvY29yZS9wa3RnZW4uYzozODI3OnN0YXRpYyBpbnQgcGt0Z2VuX2FkZF9kZXZpY2Uoc3RydWN0IHBrdGdlbl90aHJlYWQgKnQsIGNvbnN0IGNoYXIgKmlmbmFtZSlcXG5uZXQvY29yZS9wa3RnZW4uYy0zODI4LXtcXG4tLVxcbm5ldC9jb3JlL3BrdGdlbi5jLTM5MTQtXFxubmV0L2NvcmUvcGt0Z2VuLmM6MzkxNTpzdGF0aWMgaW50IF9fbmV0X2luaXQgcGt0Z2VuX2NyZWF0ZV90aHJlYWQoaW50IGNwdSwgc3RydWN0IHBrdGdlbl9uZXQgKnBuKVxcbm5ldC9jb3JlL3BrdGdlbi5jLTM5MTYte1xcbi0tXFxubmV0L2NvcmUvcGt0Z2VuLmMtMzk2Ny0gKi9cXG5uZXQvY29yZS9wa3RnZW4uYzozOTY4OnN0YXRpYyB2b2lkIF9yZW1fZGV2X2Zyb21faWZfbGlzdChzdHJ1Y3QgcGt0Z2VuX3RocmVhZCAqdCxcXG5uZXQvY29yZS9wa3RnZW4uYy0zOTY5LVxcdFxcdFxcdFxcdCAgc3RydWN0IHBrdGdlbl9kZXYgKnBrdF9kZXYpXFxuLS1cXG5uZXQvY29yZS9wa3RnZW4uYy0zOTgyLVxcbm5ldC9jb3JlL3BrdGdlbi5jOjM5ODM6c3RhdGljIGludCBwa3RnZW5fcmVtb3ZlX2RldmljZShzdHJ1Y3QgcGt0Z2VuX3RocmVhZCAqdCxcXG5uZXQvY29yZS9wa3RnZW4uYy0zOTg0LVxcdFxcdFxcdFxcdHN0cnVjdCBwa3RnZW5fZGV2ICpwa3RfZGV2KVxcbi0tXFxubmV0L2NvcmUvcGt0Z2VuLmMtNDAxOC1cXG5uZXQvY29yZS9wa3RnZW4uYzo0MDE5OnN0YXRpYyBpbnQgX19uZXRfaW5pdCBwZ19uZXRfaW5pdChzdHJ1Y3QgbmV0ICpuZXQpXFxubmV0L2NvcmUvcGt0Z2VuLmMtNDAyMC17XFxuLS1cXG5uZXQvY29yZS9wa3RnZW4uYy00MDY1LVxcbm5ldC9jb3JlL3BrdGdlbi5jOjQwNjY6c3RhdGljIHZvaWQgX19uZXRfZXhpdCBwZ19uZXRfZXhpdChzdHJ1Y3QgbmV0ICpuZXQpXFxubmV0L2NvcmUvcGt0Z2VuLmMtNDA2Ny17XFxuLS1cXG5uZXQvY29yZS9wa3RnZW4uYz00MDkxPXN0YXRpYyBzdHJ1Y3QgcGVybmV0X29wZXJhdGlvbnMgcGdfbmV0X29wcyA9IHtcXG4tLVxcbm5ldC9jb3JlL3BrdGdlbi5jLTQwOTctXFxubmV0L2NvcmUvcGt0Z2VuLmM6NDA5ODpzdGF0aWMgaW50IF9faW5pdCBwZ19pbml0KHZvaWQpXFxubmV0L2NvcmUvcGt0Z2VuLmMtNDA5OS17XFxuLS1cXG5uZXQvY29yZS9wa3RnZW4uYy00MTEyLVxcbm5ldC9jb3JlL3BrdGdlbi5jOjQxMTM6c3RhdGljIHZvaWQgX19leGl0IHBnX2NsZWFudXAodm9pZClcXG5uZXQvY29yZS9wa3RnZW4uYy00MTE0LXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDg6Mzg6MTQuNzMxNzQ0MjU1WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg0ODkxNjE1MjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBQYWNrZXQgR2VuZXJhdGlvbiBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGltbWVkaWF0ZWx5LCBteSBicmFpbiB6ZXJvZXMgaW4gb24gdGhlIGVudHJ5IHBvaW50cy4gVGhleSdyZSBwcmltYXJpbHkgYHByb2Nmc2AgaGFuZGxlcnMsIHNwZWNpZmljYWxseSBgcGdjdHJsX3dyaXRlYCwgYHBrdGdlbl9pZl93cml0ZWAsIGFuZCBgcGt0Z2VuX3RocmVhZF93cml0ZWAuIEkgcmVtZW1iZXIgdGhvc2UgZnVuY3Rpb25zLCB0aGV5IGhhbmRsZSB0aGUgdXNlci1zcGFjZSBjb25maWd1cmF0aW9uIG9mIGBwa3RnZW5gLiBCdXQgd2FpdCwgYHBrdGdlbl90aHJlYWRfd29ya2VyYCBpcyB0aGUgbWFpbiB0aHJlYWQgdGhhdCBhY3R1YWxseSAqc2VuZHMqIHRoZSBwYWNrZXRzLCByaWdodD8gQW5kIHRoZSB0cmFuc21pc3Npb24gaXRzZWxmIGhhcHBlbnMgd2l0aGluIGBwa3RnZW5feG1pdGAuXG5cbk5vdyBJIHNlZSwgdGhpcyBwYXRjaCB0b3VjaGVzIGBwa3RnZW5fZmluYWxpemVfc2tiYC4gVGhhdCByaW5ncyBhIGJlbGwuLi4gSSBiZWxpZXZlIHRoYXQncyB0aGUgZnVuY3Rpb24gY2FsbGVkIHdoZW4gdGhlIHBhY2tldHMgaGF2ZSBiZWVuIGdlbmVyYXRlZC4gVGhlIGNydWNpYWwgcXVlc3Rpb24gaXMsIGhvdyBlYXNpbHkgY2FuIEkgdHJpZ2dlciB0aGlzIGZyb20gdXNlcnNwYWNlPyBBaCwgdGhhdCdzIHJpZ2h0LCBieSBjb25maWd1cmluZyBhbmQgc3RhcnRpbmcgYHBrdGdlbmAgdmlhIGBwcm9jZnNgLiBDb25maXJtZWQsIHRoZSBjb25maWd1cmF0aW9uIGtub2IgaXMgYE5FVF9QS1RHRU5gLlxuXG5CdXQsIHdoZW4gaXMgYHBrdGdlbl9maW5hbGl6ZV9za2JgIGFjdHVhbGx5IGNhbGxlZD8gSXMgaXQgb25seSB3aGVuIGBwa3RfZGV2LVx1MDAzZWZsYWdzYCBoYXMgdGhlIGBGX0ZSQUdfUEFHRWAgYml0IHNldCwgb3IgaXMgaXQgdHJpZ2dlcmVkIHdoZW5ldmVyIGBkYXRhbGVuIFx1MDAzZSAwYD8gVGhhdCBkZXRhaWwgaXMgaW1wb3J0YW50LiBPa2F5LCBJIG5lZWQgdG8gZ2V0IGludG8gdGhlIGNvZGUgZm9yIGEgbWludXRlLCBsZXQncyB0YWtlIGEgbG9vayBhdCBgcGt0Z2VuX2ZpbmFsaXplX3NrYmAgZGlyZWN0bHkgdG8gcmVmcmVzaCBteSBtZW1vcnkgYW5kIGJlIHN1cmUgb2YgdGhlIGV4YWN0IGNvbmRpdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6OTk1MywiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwODozODoyMy4yMjA5MDgzNTRaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjA1NjEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9jb3JlL3BrdGdlbi5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDI4MjAsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjI4MjA6XFx0c3RhdGljIHZvaWQgcGt0Z2VuX2ZpbmFsaXplX3NrYihzdHJ1Y3QgcGt0Z2VuX2RldiAqcGt0X2Rldiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4yODIxOlxcdFxcdFxcdFxcdFxcdGludCBkYXRhbGVuKVxcbjI4MjI6XFx0e1xcbjI4MjM6XFx0XFx0c3RydWN0IHRpbWVzcGVjNjQgdGltZXN0YW1wO1xcbjI4MjQ6XFx0XFx0c3RydWN0IHBrdGdlbl9oZHIgKnBnaDtcXG4yODI1OlxcdFxcbjI4MjY6XFx0XFx0cGdoID0gc2tiX3B1dChza2IsIHNpemVvZigqcGdoKSk7XFxuMjgyNzpcXHRcXHRkYXRhbGVuIC09IHNpemVvZigqcGdoKTtcXG4yODI4OlxcdFxcbjI4Mjk6XFx0XFx0aWYgKHBrdF9kZXYtXFx1MDAzZW5mcmFncyBcXHUwMDNjPSAwKSB7XFxuMjgzMDpcXHRcXHRcXHRza2JfcHV0X3plcm8oc2tiLCBkYXRhbGVuKTtcXG4yODMxOlxcdFxcdH0gZWxzZSB7XFxuMjgzMjpcXHRcXHRcXHRpbnQgZnJhZ3MgPSBwa3RfZGV2LVxcdTAwM2VuZnJhZ3M7XFxuMjgzMzpcXHRcXHRcXHRpbnQgaSwgbGVuO1xcbjI4MzQ6XFx0XFx0XFx0aW50IGZyYWdfbGVuO1xcbjI4MzU6XFx0XFxuMjgzNjpcXHRcXG4yODM3OlxcdFxcdFxcdGlmIChmcmFncyBcXHUwMDNlIE1BWF9TS0JfRlJBR1MpXFxuMjgzODpcXHRcXHRcXHRcXHRmcmFncyA9IE1BWF9TS0JfRlJBR1M7XFxuMjgzOTpcXHRcXHRcXHRsZW4gPSBkYXRhbGVuIC0gZnJhZ3MgKiBQQUdFX1NJWkU7XFxuMjg0MDpcXHRcXHRcXHRpZiAobGVuIFxcdTAwM2UgMCkge1xcbjI4NDE6XFx0XFx0XFx0XFx0c2tiX3B1dF96ZXJvKHNrYiwgbGVuKTtcXG4yODQyOlxcdFxcdFxcdFxcdGRhdGFsZW4gPSBmcmFncyAqIFBBR0VfU0laRTtcXG4yODQzOlxcdFxcdFxcdH1cXG4yODQ0OlxcdFxcbjI4NDU6XFx0XFx0XFx0aSA9IDA7XFxuMjg0NjpcXHRcXHRcXHRmcmFnX2xlbiA9IG1pbl90KGludCwgRElWX1JPVU5EX1VQKGRhdGFsZW4sIGZyYWdzKSwgUEFHRV9TSVpFKTtcXG4yODQ3OlxcdFxcdFxcdHdoaWxlIChkYXRhbGVuIFxcdTAwM2UgMCBcXHUwMDI2XFx1MDAyNiBpIFxcdTAwM2MgZnJhZ3MpIHtcXG4yODQ4OlxcdFxcdFxcdFxcdGlmICh1bmxpa2VseSghcGt0X2Rldi1cXHUwMDNlcGFnZSkpIHtcXG4yODQ5OlxcdFxcdFxcdFxcdFxcdGludCBub2RlID0gbnVtYV9ub2RlX2lkKCk7XFxuMjg1MDpcXHRcXG4yODUxOlxcdFxcdFxcdFxcdFxcdGlmIChwa3RfZGV2LVxcdTAwM2Vub2RlIFxcdTAwM2U9IDAgXFx1MDAyNlxcdTAwMjYgKHBrdF9kZXYtXFx1MDAzZWZsYWdzIFxcdTAwMjYgRl9OT0RFKSlcXG4yODUyOlxcdFxcdFxcdFxcdFxcdFxcdG5vZGUgPSBwa3RfZGV2LVxcdTAwM2Vub2RlO1xcbjI4NTM6XFx0XFx0XFx0XFx0XFx0cGt0X2Rldi1cXHUwMDNlcGFnZSA9IGFsbG9jX3BhZ2VzX25vZGUobm9kZSwgR0ZQX0tFUk5FTCB8IF9fR0ZQX1pFUk8sIDApO1xcbjI4NTQ6XFx0XFx0XFx0XFx0XFx0aWYgKCFwa3RfZGV2LVxcdTAwM2VwYWdlKVxcbjI4NTU6XFx0XFx0XFx0XFx0XFx0XFx0YnJlYWs7XFxuMjg1NjpcXHRcXHRcXHRcXHR9XFxuMjg1NzpcXHRcXHRcXHRcXHRnZXRfcGFnZShwa3RfZGV2LVxcdTAwM2VwYWdlKTtcXG4yODU4OlxcdFxcbjI4NTk6XFx0XFx0XFx0XFx0LypsYXN0IGZyYWdtZW50LCBmaWxsIHJlc3Qgb2YgZGF0YSovXFxuMjg2MDpcXHRcXHRcXHRcXHRpZiAoaSA9PSAoZnJhZ3MgLSAxKSlcXG4yODYxOlxcdFxcdFxcdFxcdFxcdHNrYl9mcmFnX2ZpbGxfcGFnZV9kZXNjKFxcdTAwMjZza2Jfc2hpbmZvKHNrYiktXFx1MDAzZWZyYWdzW2ldLFxcbjI4NjI6XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0cGt0X2Rldi1cXHUwMDNlcGFnZSwgMCxcXG4yODYzOlxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdG1pbihkYXRhbGVuLCBQQUdFX1NJWkUpKTtcXG4yODY0OlxcdFxcdFxcdFxcdGVsc2VcXG4yODY1OlxcdFxcdFxcdFxcdFxcdHNrYl9mcmFnX2ZpbGxfcGFnZV9kZXNjKFxcdTAwMjZza2Jfc2hpbmZvKHNrYiktXFx1MDAzZWZyYWdzW2ldLFxcbjI4NjY6XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0cGt0X2Rldi1cXHUwMDNlcGFnZSwgMCwgZnJhZ19sZW4pO1xcbjI4Njc6XFx0XFxuMjg2ODpcXHRcXHRcXHRcXHRkYXRhbGVuIC09IHNrYl9mcmFnX3NpemUoXFx1MDAyNnNrYl9zaGluZm8oc2tiKS1cXHUwMDNlZnJhZ3NbaV0pO1xcbjI4Njk6XFx0XFx0XFx0XFx0c2tiLVxcdTAwM2VsZW4gKz0gc2tiX2ZyYWdfc2l6ZShcXHUwMDI2c2tiX3NoaW5mbyhza2IpLVxcdTAwM2VmcmFnc1tpXSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDA4OjM4OjIzLjIyMTExNjU0NFoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5NjgyNDU5NTEwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBQYWNrZXQgR2VuZXJhdGlvbiBCdWcgYW5kIEZpeCoqXG5cbk9rYXksIHNvIHRoZSBjb3JlIG9mIHRoZSBwcm9ibGVtIGhlcmUgd2FzIGEgZGl2aXNpb24gaXNzdWUgaW4gdGhlIHBhY2tldCBnZW5lcmF0aW9uIGNvZGUuIFNwZWNpZmljYWxseSwgYGRhdGFsZW4gLyBmcmFnc2AgY291bGQgZXZhbHVhdGUgdG8gemVyby4gV2hlbiB0aGlzIGhhcHBlbmVkLCBgZnJhZ19sZW5gIHdhcyBhbHNvIHplcm8sIHdoaWNoIG1lYW50IGBkYXRhbGVuYCB3b3VsZG4ndCBkZWNyZWFzZSBpbiB0aGUgbG9vcC4gVGhlIHJlc3VsdD8gQW4gaW5maW5pdGUgbG9vcC4gT2J2aW91c2x5LCBhIGNyaXRpY2FsIGJ1Zy5cblxuVGhlIGZpeCwgdGhhbmtmdWxseSwgaXMgY2xlYW4gYW5kIHN0cmFpZ2h0Zm9yd2FyZC4gVXNpbmcgYERJVl9ST1VORF9VUChkYXRhbGVuLCBmcmFncylgIGVuc3VyZXMgdGhhdCB3ZSBoYW5kbGUgdGhlIGRpdmlzaW9uIGNvcnJlY3RseSwgYW5kIGFkZGluZyBgXHUwMDI2XHUwMDI2IGkgXHUwMDNjIGZyYWdzYCB0byB0aGUgd2hpbGUgbG9vcCBjb25kaXRpb24gcHJvdmlkZXMgYSBzZW5zaWJsZSB1cHBlciBib3VuZC4gRnVuY3Rpb25hbGx5LCB0aGlzIGlzIHRoZSBjb3JyZWN0IGFwcHJvYWNoLCBhbmQgSSBjYW4gY29uZmlybSB0aGUgbG9vcCBpcyByZWFjaGFibGUuXG5cbk5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGxhcmdlciBjb250ZXh0LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHBpZWNlcyBvZiB0aGUgY29kZWJhc2UgYXJlIHJlbGV2YW50LiBCYXNlZCBvbiB3aGF0IEkgaGF2ZSBoZXJlLCB0aGUgZnVuY3Rpb25zIG9mIGludGVyZXN0IGFyZSBgcGt0Z2VuX2lmX3dyaXRlYCwgYHBrdGdlbl90aHJlYWRfd3JpdGVgLCBhbmQgYHBnY3RybF93cml0ZWAsIGFsbCBoYW5kbGluZyBjb25maWd1cmF0aW9uLCBhbmQgdGhlbiB0aGUgYWN0dWFsIGdlbmVyYXRpb24gaGFwcGVucyBlaXRoZXIgaW4gYHBrdGdlbl94bWl0YCBvciBgcGt0Z2VuX3RocmVhZF93b3JrZXJgLlxuXG5UbyBzdW1tYXJpemUgdGhlIGZ1bmN0aW9ucyBhZ2FpbiwgaGVyZSdzIHRoZSBsaXN0OlxuKiAgIGBwa3RnZW5faWZfd3JpdGVgXG4qICAgYHBrdGdlbl90aHJlYWRfd3JpdGVgXG4qICAgYHBnY3RybF93cml0ZWBcbiogICBgcGt0Z2VuX3RocmVhZF93b3JrZXJgXG5cbkkgd2lsbCB0YWtlIGEgbW9tZW50IHRvIGRvdWJsZS1jaGVjayB0aGUgY29uZmlndXJhdGlvbiByZXF1aXJlbWVudHMgYmVjYXVzZSBJIGRvbid0IGxpa2UgYXNzdW1wdGlvbnMuIEkgc2VlIHRoYXQgYE5FVF9QS1RHRU5gIGlzIG5lZWRlZCwgd2hpY2ggaW4gdHVybiBkZXBlbmRzIG9uIGBJTkVUYCBhbmQgYFBST0NfRlNgLiBUaGFua2Z1bGx5LCBgSU5FVGAgYW5kIGBQUk9DX0ZTYCBhcmUgdXN1YWxseSBlbmFibGVkLiBTbyBpdCBsb29rcyBsaWtlIGBORVRfUEtUR0VOYCBpcyBzdWZmaWNpZW50LlxuXG5Ob3csIEknbSBjb25maWRlbnQgaW4gbXkgdW5kZXJzdGFuZGluZywgYW5kIEkgY2FuIHByb3ZpZGUgdGhlIHJlc3VsdHMgb2YgbXkgYW5hbHlzaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExMzI1LCJPdXRwdXRUb2tlbnMiOjExMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2NiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDA4OjM4OjMyLjkwMzU3ODg0NFoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzODg2MTQ4OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUX1BLVEdFTlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInBrdGdlbl9pZl93cml0ZVwiLFxuICAgIFwicGt0Z2VuX3RocmVhZF93cml0ZVwiLFxuICAgIFwicGdjdHJsX3dyaXRlXCIsXG4gICAgXCJwa3RnZW5fdGhyZWFkX3dvcmtlclwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIGluZmluaXRlIGxvb3Agb3Igb3V0LW9mLWJvdW5kcyBpc3N1ZSBpbiBwa3RnZW5fZmluYWxpemVfc2tiIHdoZW4gY2FsY3VsYXRpbmcgZnJhZ21lbnQgbGVuZ3Rocy4gVGhpcyBpcyByZWFjaGFibGUgYnkgY29uZmlndXJpbmcgcGt0Z2VuIHZpYSBwcm9jZnMgYW5kIHN0YXJ0aW5nIHBhY2tldCBnZW5lcmF0aW9uLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVF9QS1RHRU5cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJwa3RnZW5faWZfd3JpdGVcIixcbiAgICBcInBrdGdlbl90aHJlYWRfd3JpdGVcIixcbiAgICBcInBnY3RybF93cml0ZVwiLFxuICAgIFwicGt0Z2VuX3RocmVhZF93b3JrZXJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBpbmZpbml0ZSBsb29wIG9yIG91dC1vZi1ib3VuZHMgaXNzdWUgaW4gcGt0Z2VuX2ZpbmFsaXplX3NrYiB3aGVuIGNhbGN1bGF0aW5nIGZyYWdtZW50IGxlbmd0aHMuIFRoaXMgaXMgcmVhY2hhYmxlIGJ5IGNvbmZpZ3VyaW5nIHBrdGdlbiB2aWEgcHJvY2ZzIGFuZCBzdGFydGluZyBwYWNrZXQgZ2VuZXJhdGlvbi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflow6kf9n[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-30 08:15:48 +0000 UTC FinishedAt: 2026-07-30 08:38:34 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "57aa1718d5953dd532137d43b696c68545c2e0b3", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_PKTGEN" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "57aa1718d5953dd532137d43b696c68545c2e0b3", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_PKTGEN" ], "series_id": "43a1a5d9-9180-4e6f-9abd-95458fda35a5" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "pktgen_if_write", "pktgen_thread_write", "pgctrl_write", "pktgen_thread_worker" ], "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+CgkJCTx0ZD4yMDI2LzA3LzMwIDA4OjM3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9QS1RHRU4mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtwa3RnZW5faWZfd3JpdGUmIzM0OywKICAgICYjMzQ7cGt0Z2VuX3RocmVhZF93cml0ZSYjMzQ7LAogICAgJiMzNDtwZ2N0cmxfd3JpdGUmIzM0OywKICAgICYjMzQ7cGt0Z2VuX3RocmVhZF93b3JrZXImIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgaW5maW5pdGUgbG9vcCBvciBvdXQtb2YtYm91bmRzIGlzc3VlIGluIHBrdGdlbl9maW5hbGl6ZV9za2Igd2hlbiBjYWxjdWxhdGluZyBmcmFnbWVudCBsZW5ndGhzLiBUaGlzIGlzIHJlYWNoYWJsZSBieSBjb25maWd1cmluZyBwa3RnZW4gdmlhIHByb2NmcyBhbmQgc3RhcnRpbmcgcGFja2V0IGdlbmVyYXRpb24uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDg6Mzc8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA2OGNkMTg4N2FiM2RkN2MzNDE1OGE2MDNkOWZhMDUzMWI5MzJjMTI0XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdWwgMzAgMDg6Mzc6NDkgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L2NvcmUvcGt0Z2VuLmMgYi9uZXQvY29yZS9wa3RnZW4uY1xuaW5kZXggOGUxODViMzE4Mjg4NS4uMmRiYjdjYWFjZDBkOSAxMDA2NDRcbi0tLSBhL25ldC9jb3JlL3BrdGdlbi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvY29yZS9wa3RnZW4uY1xuQEAgLTI4NDMsOCAmIzQzOzI4NDMsOCBAQCBzdGF0aWMgdm9pZCBwa3RnZW5fZmluYWxpemVfc2tiKHN0cnVjdCBwa3RnZW5fZGV2ICpwa3RfZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0XHR9XG4gXG4gXHRcdGkgPSAwO1xuLVx0XHRmcmFnX2xlbiA9IG1pbl90KGludCwgZGF0YWxlbiAvIGZyYWdzLCBQQUdFX1NJWkUpO1xuLVx0XHR3aGlsZSAoZGF0YWxlbiBcdTAwM2UgMCkge1xuJiM0MztcdFx0ZnJhZ19sZW4gPSBtaW5fdChpbnQsIERJVl9ST1VORF9VUChkYXRhbGVuLCBmcmFncyksIFBBR0VfU0laRSk7XG4mIzQzO1x0XHR3aGlsZSAoZGF0YWxlbiBcdTAwM2UgMCBcdTAwMjZcdTAwMjYgaSBcdTAwM2MgZnJhZ3MpIHtcbiBcdFx0XHRpZiAodW5saWtlbHkoIXBrdF9kZXYtXHUwMDNlcGFnZSkpIHtcbiBcdFx0XHRcdGludCBub2RlID0gbnVtYV9ub2RlX2lkKCk7XG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDg6Mzc8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9QS1RHRU4mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtwa3RnZW5faWZfd3JpdGUmIzM0OywKICAgICYjMzQ7cGt0Z2VuX3RocmVhZF93cml0ZSYjMzQ7LAogICAgJiMzNDtwZ2N0cmxfd3JpdGUmIzM0OywKICAgICYjMzQ7cGt0Z2VuX3RocmVhZF93b3JrZXImIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgaW5maW5pdGUgbG9vcCBvciBvdXQtb2YtYm91bmRzIGlzc3VlIGluIHBrdGdlbl9maW5hbGl6ZV9za2Igd2hlbiBjYWxjdWxhdGluZyBmcmFnbWVudCBsZW5ndGhzLiBUaGlzIGlzIHJlYWNoYWJsZSBieSBjb25maWd1cmluZyBwa3RnZW4gdmlhIHByb2NmcyBhbmQgc3RhcnRpbmcgcGFja2V0IGdlbmVyYXRpb24uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA2OGNkMTg4N2FiM2RkN2MzNDE1OGE2MDNkOWZhMDUzMWI5MzJjMTI0CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBKdWwgMzAgMDg6Mzc6NDkgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvY29yZS9wa3RnZW4uYyBiL25ldC9jb3JlL3BrdGdlbi5jCmluZGV4IDhlMTg1YjMxODI4ODUuLjJkYmI3Y2FhY2QwZDkgMTAwNjQ0Ci0tLSBhL25ldC9jb3JlL3BrdGdlbi5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9jb3JlL3BrdGdlbi5jCkBAIC0yODQzLDggJiM0MzsyODQzLDggQEAgc3RhdGljIHZvaWQgcGt0Z2VuX2ZpbmFsaXplX3NrYihzdHJ1Y3QgcGt0Z2VuX2RldiAqcGt0X2Rldiwgc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAkJfQogCiAJCWkgPSAwOwotCQlmcmFnX2xlbiA9IG1pbl90KGludCwgZGF0YWxlbiAvIGZyYWdzLCBQQUdFX1NJWkUpOwotCQl3aGlsZSAoZGF0YWxlbiAmZ3Q7IDApIHsKJiM0MzsJCWZyYWdfbGVuID0gbWluX3QoaW50LCBESVZfUk9VTkRfVVAoZGF0YWxlbiwgZnJhZ3MpLCBQQUdFX1NJWkUpOwomIzQzOwkJd2hpbGUgKGRhdGFsZW4gJmd0OyAwICZhbXA7JmFtcDsgaSAmbHQ7IGZyYWdzKSB7CiAJCQlpZiAodW5saWtlbHkoIXBrdF9kZXYtJmd0O3BhZ2UpKSB7CiAJCQkJaW50IG5vZGUgPSBudW1hX25vZGVfaWQoKTsKIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwODozNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDkwCgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMjgzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIHBrdGdlbi5jIFBhdGNoOiBBZGRyZXNzaW5nIFBvdGVudGlhbCBTS0IgRnJhZ21lbnQgSXNzdWVzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQgdHdlYWtzIGBuZXQvY29yZS9wa3RnZW4uY2AsIHNwZWNpZmljYWxseSB0aGUgYHBrdGdlbl9maW5hbGl6ZV9za2JgIGZ1bmN0aW9uLiBUaGUgY29kZSBjaGFuZ2UgaW1tZWRpYXRlbHkganVtcHMgb3V0IGF0IG1lOiBhIG1vZGlmaWNhdGlvbiB0byBob3cgYGZyYWdfbGVuYCBpcyBjYWxjdWxhdGVkIGFuZCB0aGUgYWRkaXRpb24gb2YgYSBjaGVjayB3aXRoaW4gdGhlIGB3aGlsZWAgbG9vcC4gSW5pdGlhbGx5LCBJIHN1c3BlY3RlZCBpdCB3YXMgYWJvdXQgb3B0aW1pemluZyBmcmFnbWVudCBhbGxvY2F0aW9uIGJ1dCBsb29raW5nIGNsb3NlciBJIHNlZSB0aGUgbW9yZSBsaWtlbHkgcmVhc29uLgoKVGhlIG9yaWdpbmFsIGNvZGUgdXNlZCBgZGF0YWxlbiAvIGZyYWdzYCB0byBkZXRlcm1pbmUgYGZyYWdfbGVuYC4gTXkgbWluZCByYWNlcyB0aHJvdWdoIHRoZSBpbXBsaWNhdGlvbnMuIElmIGBkYXRhbGVuYCBpcyBzbWFsbGVyIHRoYW4gYGZyYWdzYCwgdGhlIGRpdmlzaW9uIHJlc3VsdHMgaW4gemVyby4gVGhhdCBtZWFucyB3ZSBjb3VsZCBlbmQgdXAgd2l0aCBhIHplcm8tbGVuZ3RoIGZyYWdtZW50LiBUaGVuIHRoZSBleGlzdGluZyBjb2RlIHdvdWxkIGxlYWQgdG8gYW4gaW5maW5pdGUgbG9vcCBiZWNhdXNlIGBkYXRhbGVuYCB3b3VsZCBuZXZlciBiZSBkZWNyZW1lbnRlZCBhbmQgdGhlIGxvb3Agd291bGRuJiMzOTt0IGV4aXQuIE9yIGV2ZW4gd29yc2UsIGlmIGBkYXRhbGVuYCBpcyBub3QgZnVsbHkgY29uc3VtZWQsIHRoZW4gYGlgIGNvdWxkIGV4Y2VlZCBgTUFYX1NLQl9GUkFHU2AsIHdoaWNoIGxlYWRzIHRvIGFuIE91dC1vZi1Cb3VuZHMgbWVtb3J5IGFjY2VzcyBpc3N1ZS4gVGhlIGNoYW5nZSBgRElWX1JPVU5EX1VQKGRhdGFsZW4sIGZyYWdzKWAgY291cGxlZCB3aXRoIHRoZSBhZGRpdGlvbmFsIGBpICZsdDsgZnJhZ3NgIGNoZWNrIGluIHRoZSBgd2hpbGVgIGxvb3AgaXMgYSBjbGVhciBhdHRlbXB0IHRvIGF2b2lkIGJvdGggb2YgdGhvc2Ugc2NlbmFyaW9zLiBXZSBhcmUgbm93IGVuc3VyaW5nIHRoYXQgd2UgKmFsd2F5cyogYWxsb2NhdGUgc29tZSBieXRlcywgYW5kIHRoYXQgd2UgZG9uJiMzOTt0IGV4Y2VlZCB0aGUgbnVtYmVyIG9mIGZyYWdtZW50cy4KCkkgbmVlZCB0byBjb25maXJtIHRoaXMgdW5kZXJzdGFuZGluZywgc28gSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IHJldmlldyB0aGUgY29udGV4dCBvZiBgcGt0Z2VuX2ZpbmFsaXplX3NrYmAgYW5kIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCBvdGhlciBwYXJ0cyBvZiBgcGt0Z2VuLmNgLCBlc3BlY2lhbGx5IHJlbGF0ZWQgdG8gYHBrdGdlbl9kZXZgLiBUaW1lIHRvIGZpcmUgdXAgYGdyZXBwZXJgIGFuZCBzZWUgd2hhdCBlbHNlIGlzIGdvaW5nIG9uIGluIHRoYXQgZmlsZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGZ1bGwgcGljdHVyZSB0byBjb25maXJtIHRoaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDg6Mzc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGt0Z2VuX2ZpbmFsaXplX3NrYiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9jb3JlL3BrdGdlbi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9jb3JlL3BrdGdlbi5jPTI4MTQ9c3RhdGljIGlubGluZSBfX2JlMTYgYnVpbGRfdGNpKHVuc2lnbmVkIGludCBpZCwgdW5zaWduZWQgaW50IGNmaSxcbi0tXG5uZXQvY29yZS9wa3RnZW4uYy0yODE5LVxubmV0L2NvcmUvcGt0Z2VuLmM6MjgyMDpzdGF0aWMgdm9pZCBwa3RnZW5fZmluYWxpemVfc2tiKHN0cnVjdCBwa3RnZW5fZGV2ICpwa3RfZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxubmV0L2NvcmUvcGt0Z2VuLmMtMjgyMS1cdFx0XHRcdGludCBkYXRhbGVuKVxuLS1cbm5ldC9jb3JlL3BrdGdlbi5jPTI5Mjc9c3RhdGljIHN0cnVjdCBza19idWZmICpmaWxsX3BhY2tldF9pcHY0KHN0cnVjdCBuZXRfZGV2aWNlICpvZGV2LFxuLS1cbm5ldC9jb3JlL3BrdGdlbi5jLTMwMjctXG5uZXQvY29yZS9wa3RnZW4uYzozMDI4Olx0cGt0Z2VuX2ZpbmFsaXplX3NrYihwa3RfZGV2LCBza2IsIGRhdGFsZW4pO1xubmV0L2NvcmUvcGt0Z2VuLmMtMzAyOS1cbi0tXG5uZXQvY29yZS9wa3RnZW4uYz0zMDU1PXN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqZmlsbF9wYWNrZXRfaXB2NihzdHJ1Y3QgbmV0X2RldmljZSAqb2Rldixcbi0tXG5uZXQvY29yZS9wa3RnZW4uYy0zMTYyLVxubmV0L2NvcmUvcGt0Z2VuLmM6MzE2MzpcdHBrdGdlbl9maW5hbGl6ZV9za2IocGt0X2Rldiwgc2tiLCBkYXRhbGVuKTtcbm5ldC9jb3JlL3BrdGdlbi5jLTMxNjQtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDg6Mzc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzEyNgoJCQkJCQkJb3V0cHV0OiAyNwoJCQkJCQkJdGhvdWdodHM6IDQ3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHVuZGVyc3RhbmRpbmcsIGZyYW1lZCBhcyBteSBpbnRlcm5hbCB0aG91Z2h0IHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIHRoZSBQYWNrZXQgR2VuZXJhdGlvbiBDb2RlKioKCkFscmlnaHQsIEkmIzM5O20gZGlnZ2luZyBpbnRvIGBuZXQvY29yZS9wa3RnZW4uY2AgYWdhaW4uIEkmIzM5O20gc2VlaW5nIHRoYXQgYHBrdGdlbl9maW5hbGl6ZV9za2JgIGlzIGEga2V5IGZ1bmN0aW9uIGhlcmUuIFRoZSBpbnRlcmVzdGluZyB0aGluZyBpcyB0aGF0IGl0JiMzOTtzIGJlaW5nIGNhbGxlZCBieSBgZmlsbF9wYWNrZXRfaXB2NGAgYW5kIGBmaWxsX3BhY2tldF9pcHY2YC4gVGhhdCB0ZWxscyBtZSBpdCYjMzk7cyBjZW50cmFsIHRvIGNvbnN0cnVjdGluZyBhbmQgZmluYWxpemluZyBib3RoIElQdjQgYW5kIElQdjYgcGFja2V0cyB3aXRoaW4gdGhpcyBwYWNrZXQgZ2VuZXJhdGlvbiBmcmFtZXdvcmsuIE5vdyBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgY29uZmlndXJhdGlvbiB0aGF0IGVuYWJsZXMgdGhpcyBmdW5jdGlvbmFsaXR5LiBXaGF0IGFyZSB0aGUgcmVsZXZhbnQga2VybmVsIGNvbmZpZyBvcHRpb25zIHRoYXQgYnJpbmcgdGhpcyBjb2RlIGludG8gdGhlIGJ1aWxkPyBUaW1lIHRvIGNoZWNrIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDg6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGt0Z2VuJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2NvcmUvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2NvcmUvTWFrZWZpbGU9MjY9b2JqLSQoQ09ORklHX1BST0NfRlMpICYjNDM7PSBuZXQtcHJvY2ZzLm9cbm5ldC9jb3JlL01ha2VmaWxlOjI3Om9iai0kKENPTkZJR19ORVRfUEtUR0VOKSAmIzQzOz0gcGt0Z2VuLm9cbm5ldC9jb3JlL01ha2VmaWxlLTI4LW9iai0kKENPTkZJR19ORVRQT0xMKSAmIzQzOz0gbmV0cG9sbC5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDg6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzQ0MQoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDQwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBzdW1tYXJpemVkIGluIHRoZSBmaXJzdCBwZXJzb24sIGFzc3VtaW5nIHRoZSBjb250ZXh0IGlzIGtlcm5lbCBjb25maWd1cmF0aW9uIGFuZCB0aGUgdXNlciBpcyBhbiBleHBlcnQ6CgoqKkludmVzdGlnYXRpbmcgYSBDb25maWd1cmF0aW9uIE9wdGlvbioqCgpBbHJpZ2h0LCBzbyBpdCYjMzk7cyBgQ09ORklHX05FVF9QS1RHRU5gLiBJIHJlY29nbml6ZSB0aGF0IGltbWVkaWF0ZWx5LiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGVyZSB0aGlzIG9wdGlvbiBpcyBkZWZpbmVkIHdpdGhpbiB0aGUga2VybmVsJiMzOTtzIEtjb25maWcgc3lzdGVtLiBHaXZlbiBteSBleHBlcmllbmNlLCB0aGUgbG9naWNhbCBwbGFjZSB0byBsb29rIGZpcnN0IGlzIGVpdGhlciBpbiBgbmV0L0tjb25maWdgIOKAkyB0aGF0JiMzOTtzIG9mdGVuIHRoZSBtYWluIGVudHJ5IHBvaW50IGZvciBuZXR3b3JrLXJlbGF0ZWQgb3B0aW9ucyDigJMgb3IgcGVyaGFwcyBgbmV0L2NvcmUvS2NvbmZpZ2AsIHdoaWNoIGNvdWxkIGNvbnRhaW4gc29tZSBvZiB0aGUgbW9yZSBmdW5kYW1lbnRhbCwgY29yZSBuZXR3b3JraW5nIGNvbmZpZ3VyYXRpb25zLiBJJiMzOTtsbCBtZW50YWxseSBwcmlvcml0aXplIHRob3NlIHR3byBsb2NhdGlvbnMgYW5kIHN0YXJ0IGRpZ2dpbmcgaW50byB0aGUgS2NvbmZpZyBmaWxlcy4gVGhlIGdvYWwgaXMgdG8gdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzIGFuZCBkZWZhdWx0IGJlaGF2aW9yIG9mIGBORVRfUEtUR0VOYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwODozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkVUX1BLVEdFTiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvS2NvbmZpZz0zODQ9bWVudSBcJiMzNDtOZXR3b3JrIHRlc3RpbmdcJiMzNDtcbm5ldC9LY29uZmlnLTM4NS1cbm5ldC9LY29uZmlnOjM4Njpjb25maWcgTkVUX1BLVEdFTlxubmV0L0tjb25maWctMzg3LVx0dHJpc3RhdGUgXCYjMzQ7UGFja2V0IEdlbmVyYXRvciAoVVNFIFdJVEggQ0FVVElPTilcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwODozODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNzQ4CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEaXZpbmcgaW50byB0aGUgS2VybmVsIENvbmZpZ3VyYXRpb24gTGFuZHNjYXBlKioKCk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHNvbWV0aGluZyByZWxhdGVkIHRvIGtlcm5lbCBjb25maWd1cmF0aW9uLiBMZXQmIzM5O3Mgc3RhcnQgYnkgbG9va2luZyBhdCBgbmV0L0tjb25maWdgLCBzcGVjaWZpY2FsbHkgYXJvdW5kIGxpbmUgMzg2LiBJJiMzOTttIGd1ZXNzaW5nIHRoaXMgYXJlYSBkZWFscyB3aXRoIGEgcGFydGljdWxhciBuZXR3b3JraW5nIG9wdGlvbiwgb3IgcGVyaGFwcyBhIGdyb3VwIG9mIHJlbGF0ZWQgb3B0aW9ucy4gTGluZSAzODYgaXMgb2Z0ZW4gYSBnb29kIHBsYWNlIHRvIHN0YXJ0IGJlY2F1c2UgaXQgbWlnaHQgYmUgYSBtb2R1bGUgb3Igb3B0aW9uIGludHJvZHVjdGlvbi4gSSYjMzk7bSBsb29raW5nIGZvciB0aGUgZGVmaW5pbmcgaGVscCB0ZXh0LCBjb25zdHJhaW50cyBvbiBvdGhlciBvcHRpb25zLCBhbmQgbWF5YmUgb3RoZXIgS2NvbmZpZyBmaWxlcyB0aGF0IGFyZSByZWZlcmVuY2VkIGluIHRoaXMgYXJlYS4gVGhpcyBpbml0aWFsIGRpdmUgd2lsbCBnaXZlIG1lIGEgc2Vuc2Ugb2YgdGhlIHNjb3BlIGFuZCBjb250ZXh0IG9mIHRoZSBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMgaW4gdGhpcyBhcmVhLiBGcm9tIHRoZXJlLCBJIGNhbiBkZXRlcm1pbmUgdGhlIGFwcHJvcHJpYXRlIHN0cmF0ZWd5IHRvIGZ1bGx5IHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoZSBwYXJhbWV0ZXJzLCBhbmQgaG93IHRoZXkgYXBwbHkuIEhvcGVmdWxseSwgd2hhdGV2ZXIgSSYjMzk7bSBpbnZlc3RpZ2F0aW5nIGlzIHNlbGYgZXhwbGFuYXRvcnkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDA4OjM4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAzODAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDM4MDpcdFx0ICBtYWludGFpbiBjYXBhY2l0eSBmb3IgdGhlIG90aGVyIGZsb3dzLiBUaGlzIGZlYXR1cmUgcHJvdmlkZXMgc2VydmVyc1xuIDM4MTpcdFx0ICB3aXRoIG1hbnkgY2xpZW50cyBzb21lIHByb3RlY3Rpb24gYWdhaW5zdCBEb1MgYnkgYSBzaW5nbGUgKHNwb29mZWQpXG4gMzgyOlx0XHQgIGZsb3cgdGhhdCBncmVhdGx5IGV4Y2VlZHMgYXZlcmFnZSB3b3JrbG9hZC5cbiAzODM6XHRcbiAzODQ6XHRtZW51IFwmIzM0O05ldHdvcmsgdGVzdGluZ1wmIzM0O1xuIDM4NTpcdFxuIDM4NjpcdGNvbmZpZyBORVRfUEtUR0VOXG4gMzg3Olx0XHR0cmlzdGF0ZSBcJiMzNDtQYWNrZXQgR2VuZXJhdG9yIChVU0UgV0lUSCBDQVVUSU9OKVwmIzM0O1xuIDM4ODpcdFx0ZGVwZW5kcyBvbiBJTkVUIFx1MDAyNlx1MDAyNiBQUk9DX0ZTXG4gMzg5Olx0XHRoZWxwXG4gMzkwOlx0XHQgIFRoaXMgbW9kdWxlIHdpbGwgaW5qZWN0IHByZWNvbmZpZ3VyZWQgcGFja2V0cywgYXQgYSBjb25maWd1cmFibGVcbiAzOTE6XHRcdCAgcmF0ZSwgb3V0IG9mIGEgZ2l2ZW4gaW50ZXJmYWNlLiAgSXQgaXMgdXNlZCBmb3IgbmV0d29yayBpbnRlcmZhY2VcbiAzOTI6XHRcdCAgc3RyZXNzIHRlc3RpbmcgYW5kIHBlcmZvcm1hbmNlIGFuYWx5c2lzLiAgSWYgeW91IGRvbiYjMzk7dCB1bmRlcnN0YW5kXG4gMzkzOlx0XHQgIHdoYXQgd2FzIGp1c3Qgc2FpZCwgeW91IGRvbiYjMzk7dCBuZWVkIGl0OiBzYXkgTi5cbiAzOTQ6XHRcbiAzOTU6XHRcdCAgRG9jdW1lbnRhdGlvbiBvbiBob3cgdG8gdXNlIHRoZSBwYWNrZXQgZ2VuZXJhdG9yIGNhbiBiZSBmb3VuZFxuIDM5NjpcdFx0ICBhdCBcdTAwM2NmaWxlOkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9wa3RnZW4ucnN0XHUwMDNlLlxuIDM5NzpcdFxuIDM5ODpcdFx0ICBUbyBjb21waWxlIHRoaXMgY29kZSBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlXG4gMzk5Olx0XHQgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBwa3RnZW4uXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDA4OjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQzMTMKCQkJCQkJCW91dHB1dDogNTUKCQkJCQkJCXRob3VnaHRzOiA3OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4KCioqSW5pdGlhbCBBc3Nlc3NtZW50IG9mIHRoZSBgcGt0Z2VuYCBNb2R1bGUqKgoKQWxyaWdodCwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZSBkZXBlbmRlbmNpZXMgb2YgYE5FVF9QS1RHRU5gLiBJdCYjMzk7cyBwcmV0dHkgY2xlYXIgdGhpcyBtb2R1bGUgcmVsaWVzIG9uIHRoZSBuZXR3b3JraW5nIHN0YWNrLCBgSU5FVGAsIHdoaWNoIG1ha2VzIHNlbnNlLiBPZiBjb3Vyc2UsIGl0IGFsc28gdG91Y2hlcyBgUFJPQ19GU2AsIGluZGljYXRpbmcgc29tZSBraW5kIG9mIHVzZXItc3BhY2UgaW50ZXJmYWNlIG9yIGNvbmZpZ3VyYXRpb24gdGhyb3VnaCB0aGUgcHJvYyBmaWxlc3lzdGVtLiBUaGF0JiMzOTtzIHR5cGljYWwgZm9yIGEgcGFja2V0IGdlbmVyYXRvci4KCk15IHByaW1hcnkgaW50ZXJlc3QgcmlnaHQgbm93IGxpZXMgaW4gdGhlIHBhY2tldCBmaWxsaW5nIGZ1bmN0aW9ucywgYGZpbGxfcGFja2V0X2lwdjRgIGFuZCBgZmlsbF9wYWNrZXRfaXB2NmAuIFRoZSBmYWN0IHRoYXQgdGhleSYjMzk7cmUgYHN0YXRpY2AgaXMgbm90ZXdvcnRoeSDigJMgdGhleSYjMzk7cmUgbGlrZWx5IGhlbHBlciBmdW5jdGlvbnMgaW50ZXJuYWwgdG8gdGhlIGBwa3RnZW5gIGltcGxlbWVudGF0aW9uIGFuZCBub3QgaW50ZW5kZWQgZm9yIGRpcmVjdCBleHRlcm5hbCB1c2UuIEkgc2hvdWxkIGFsc28gcmVtZW1iZXIgYHBrdGdlbl9maW5hbGl6ZV9za2JgIGlzIGBzdGF0aWNgLiBJJiMzOTtsbCB3YW50IHRvIGtlZXAgdGhhdCBpbiBtaW5kIHdoZW4gdHJhY2luZyB0aGUgcGFja2V0IGNyZWF0aW9uIGZsb3cuCgpOb3csIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhlIGJpZ2dlciBwaWN0dXJlLiBJIG5lZWQgYSBjbGVhciB2aWV3IG9mIHRoZSAqcHVibGljKiBpbnRlcmZhY2UsIHNvIHRvIHNwZWFrLiBUaGVyZWZvcmUsIEkgbmVlZCB0byBrbm93IHdoaWNoIGZ1bmN0aW9ucyB3aXRoaW4gYHBrdGdlbi5jYCBhcmUgKm5vdCogc3RhdGljLCBhcyB0aGVzZSBhcmUgdGhlIG9uZXMgdGhhdCBhcmUgYWNjZXNzaWJsZSB0byBvdGhlciBtb2R1bGVzIGFuZCBwb3RlbnRpYWxseSBob3cgdGhlIGdlbmVyYXRvciBpcyBjb250cm9sbGVkIG9yIHV0aWxpemVkLiBJIG5lZWQgdG8gZW51bWVyYXRlIHRoZW0gdG8gZ2V0IGEgY29tcHJlaGVuc2l2ZSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBtb2R1bGUmIzM5O3MgZXhwb3NlZCBmdW5jdGlvbmFsaXR5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwODozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDteKFthLXpfQS1aMC05XSYjNDM7ICkmIzQzO1thLXpfQS1aMC05XSYjNDM7XFwoJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2NvcmUvcGt0Z2VuLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2NvcmUvcGt0Z2VuLmM9NDgwPXN0YXRpYyBjb25zdCBjaGFyIHZlcnNpb25bXSA9XG4tLVxubmV0L2NvcmUvcGt0Z2VuLmMtNDgyLVxubmV0L2NvcmUvcGt0Z2VuLmM6NDgzOnN0YXRpYyBpbnQgcGt0Z2VuX3JlbW92ZV9kZXZpY2Uoc3RydWN0IHBrdGdlbl90aHJlYWQgKnQsIHN0cnVjdCBwa3RnZW5fZGV2ICppKTtcbm5ldC9jb3JlL3BrdGdlbi5jOjQ4NDpzdGF0aWMgaW50IHBrdGdlbl9hZGRfZGV2aWNlKHN0cnVjdCBwa3RnZW5fdGhyZWFkICp0LCBjb25zdCBjaGFyICppZm5hbWUpO1xubmV0L2NvcmUvcGt0Z2VuLmMtNDg1LXN0YXRpYyBzdHJ1Y3QgcGt0Z2VuX2RldiAqcGt0Z2VuX2ZpbmRfZGV2KHN0cnVjdCBwa3RnZW5fdGhyZWFkICp0LFxubmV0L2NvcmUvcGt0Z2VuLmMtNDg2LVx0XHRcdFx0XHQgIGNvbnN0IGNoYXIgKmlmbmFtZSwgYm9vbCBleGFjdCk7XG5uZXQvY29yZS9wa3RnZW4uYzo0ODc6c3RhdGljIGludCBwa3RnZW5fZGV2aWNlX2V2ZW50KHN0cnVjdCBub3RpZmllcl9ibG9jayAqLCB1bnNpZ25lZCBsb25nLCB2b2lkICopO1xubmV0L2NvcmUvcGt0Z2VuLmM6NDg4OnN0YXRpYyB2b2lkIHBrdGdlbl9ydW5fYWxsX3RocmVhZHMoc3RydWN0IHBrdGdlbl9uZXQgKnBuKTtcbm5ldC9jb3JlL3BrdGdlbi5jOjQ4OTpzdGF0aWMgdm9pZCBwa3RnZW5fcmVzZXRfYWxsX3RocmVhZHMoc3RydWN0IHBrdGdlbl9uZXQgKnBuKTtcbm5ldC9jb3JlL3BrdGdlbi5jOjQ5MDpzdGF0aWMgdm9pZCBwa3RnZW5fc3RvcF9hbGxfdGhyZWFkcyhzdHJ1Y3QgcGt0Z2VuX25ldCAqcG4pO1xubmV0L2NvcmUvcGt0Z2VuLmMtNDkxLVxubmV0L2NvcmUvcGt0Z2VuLmM6NDkyOnN0YXRpYyB2b2lkIHBrdGdlbl9zdG9wKHN0cnVjdCBwa3RnZW5fdGhyZWFkICp0KTtcbm5ldC9jb3JlL3BrdGdlbi5jOjQ5MzpzdGF0aWMgdm9pZCBwa3RnZW5fY2xlYXJfY291bnRlcnMoc3RydWN0IHBrdGdlbl9kZXYgKnBrdF9kZXYpO1xubmV0L2NvcmUvcGt0Z2VuLmM6NDk0OnN0YXRpYyB2b2lkIGZpbGxfaW1peF9kaXN0cmlidXRpb24oc3RydWN0IHBrdGdlbl9kZXYgKnBrdF9kZXYpO1xubmV0L2NvcmUvcGt0Z2VuLmMtNDk1LVxuLS1cbm5ldC9jb3JlL3BrdGdlbi5jPTUwMD1zdGF0aWMgaW50IGRlYnVnICBfX3JlYWRfbW9zdGx5O1xubmV0L2NvcmUvcGt0Z2VuLmMtNTAxLVxubmV0L2NvcmUvcGt0Z2VuLmM6NTAyOnN0YXRpYyBERUZJTkVfTVVURVgocGt0Z2VuX3RocmVhZF9sb2NrKTtcbm5ldC9jb3JlL3BrdGdlbi5jLTUwMy1cbm5ldC9jb3JlL3BrdGdlbi5jPTUwND1zdGF0aWMgc3RydWN0IG5vdGlmaWVyX2Jsb2NrIHBrdGdlbl9ub3RpZmllcl9ibG9jayA9IHtcbi0tXG5uZXQvY29yZS9wa3RnZW4uYy01MTItXG5uZXQvY29yZS9wa3RnZW4uYzo1MTM6c3RhdGljIGludCBwZ2N0cmxfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSwgdm9pZCAqdilcbm5ldC9jb3JlL3BrdGdlbi5jLTUxNC17XG4tLVxubmV0L2NvcmUvcGt0Z2VuLmMtNTE4LVxubmV0L2NvcmUvcGt0Z2VuLmM6NTE5OnN0YXRpYyBzc2l6ZV90IHBnY3RybF93cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgY29uc3QgY2hhciBfX3VzZXIgKmJ1Zixcbm5ldC9jb3JlL3BrdGdlbi5jLTUyMC1cdFx0XHQgICAgc2l6ZV90IGNvdW50LCBsb2ZmX3QgKnBwb3MpXG4tLVxubmV0L2NvcmUvcGt0Z2VuLmMtNTUyLVxubmV0L2NvcmUvcGt0Z2VuLmM6NTUzOnN0YXRpYyBpbnQgcGdjdHJsX29wZW4oc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUpXG5uZXQvY29yZS9wa3RnZW4uYy01NTQte1xuLS1cbm5ldC9jb3JlL3BrdGdlbi5jPTU1OD1zdGF0aWMgY29uc3Qgc3RydWN0IHByb2Nfb3BzIHBrdGdlbl9wcm9jX29wcyA9IHtcbi0tXG5uZXQvY29yZS9wa3RnZW4uYy01NjUtXG5uZXQvY29yZS9wa3RnZW4uYzo1NjY6c3RhdGljIGludCBwa3RnZW5faWZfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSwgdm9pZCAqdilcbm5ldC9jb3JlL3BrdGdlbi5jLTU2Ny17XG4tLVxubmV0L2NvcmUvcGt0Z2VuLmMtNzUwLVxubmV0L2NvcmUvcGt0Z2VuLmM6NzUxOnN0YXRpYyBzc2l6ZV90IGhleDMyX2FyZyhjb25zdCBjaGFyIF9fdXNlciAqdXNlcl9idWZmZXIsIHNpemVfdCBtYXhsZW4sXG5uZXQvY29yZS9wa3RnZW4uYy03NTItXHRcdFx0IF9fdTMyICpudW0pXG4tLVxubmV0L2NvcmUvcGt0Z2VuLmMtNzc0LVxubmV0L2NvcmUvcGt0Z2VuLmM6Nzc1OnN0YXRpYyBzc2l6ZV90IGNvdW50X3RyYWlsX2NoYXJzKGNvbnN0IGNoYXIgX191c2VyICp1c2VyX2J1ZmZlciwgc2l6ZV90IG1heGxlbilcbm5ldC9jb3JlL3BrdGdlbi5jLTc3Ni17XG4tLVxubmV0L2NvcmUvcGt0Z2VuLmMtNzk5LVxubmV0L2NvcmUvcGt0Z2VuLmM6ODAwOnN0YXRpYyBzc2l6ZV90IG51bV9hcmcoY29uc3QgY2hhciBfX3VzZXIgKnVzZXJfYnVmZmVyLCBzaXplX3QgbWF4bGVuLFxubmV0L2NvcmUvcGt0Z2VuLmMtODAxLVx0XHQgICAgICAgdW5zaWduZWQgbG9uZyAqbnVtKVxuLS1cbm5ldC9jb3JlL3BrdGdlbi5jLTgxOS1cbm5ldC9jb3JlL3BrdGdlbi5jOjgyMDpzdGF0aWMgc3NpemVfdCBzdHJuX2xlbihjb25zdCBjaGFyIF9fdXNlciAqdXNlcl9idWZmZXIsIHNpemVfdCBtYXhsZW4pXG5uZXQvY29yZS9wa3RnZW4uYy04MjEte1xuLS1cbm5ldC9jb3JlL3BrdGdlbi5jLTg0OS0gKi9cbm5ldC9jb3JlL3BrdGdlbi5jOjg1MDpzdGF0aWMgc3NpemVfdCBnZXRfaW1peF9lbnRyaWVzKGNvbnN0IGNoYXIgX191c2VyICpidWZmZXIsXG5uZXQvY29yZS9wa3RnZW4uYy04NTEtXHRcdFx0XHRzaXplX3QgbWF4bGVuLFxuLS1cbm5ldC9jb3JlL3BrdGdlbi5jLTkxMS1cbm5ldC9jb3JlL3BrdGdlbi5jOjkxMjpzdGF0aWMgc3NpemVfdCBnZXRfbGFiZWxzKGNvbnN0IGNoYXIgX191c2VyICpidWZmZXIsXG5uZXQvY29yZS9wa3RnZW4uYy05MTMtXHRcdFx0ICBzaXplX3QgbWF4bGVuLCBzdHJ1Y3QgcGt0Z2VuX2RldiAqcGt0X2Rldilcbi0tXG5uZXQvY29yZS9wa3RnZW4uYy05NTQtXG5uZXQvY29yZS9wa3RnZW4uYzo5NTU6c3RhdGljIF9fdTMyIHBrdGdlbl9yZWFkX2ZsYWcoY29uc3QgY2hhciAqZiwgYm9vbCAqZGlzYWJsZSlcbm5ldC9jb3JlL3BrdGdlbi5jLTk1Ni17XG4tLVxubmV0L2NvcmUvcGt0Z2VuLmMtOTgzLVxubmV0L2NvcmUvcGt0Z2VuLmM6OTg0OnN0YXRpYyBzc2l6ZV90IHBrdGdlbl9pZl93cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSxcbm5ldC9jb3JlL3BrdGdlbi5jLTk4NS1cdFx0XHQgICAgICAgY29uc3QgY2hhciBfX3VzZXIgKnVzZXJfYnVmZmVyLCBzaXplX3QgY291bnQsXG4tLVxubmV0L2NvcmUvcGt0Z2VuLmMtMTg3MS1cbm5ldC9jb3JlL3BrdGdlbi5jOjE4NzI6c3RhdGljIGludCBwa3RnZW5faWZfb3BlbihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSlcbm5ldC9jb3JlL3BrdGdlbi5jLTE4NzMte1xuLS1cbm5ldC9jb3JlL3BrdGdlbi5jPTE4Nzc9c3RhdGljIGNvbnN0IHN0cnVjdCBwcm9jX29wcyBwa3RnZW5faWZfcHJvY19vcHMgPSB7XG4tLVxubmV0L2NvcmUvcGt0Z2VuLmMtMTg4NC1cbm5ldC9jb3JlL3BrdGdlbi5jOjE4ODU6c3RhdGljIGludCBwa3RnZW5fdGhyZWFkX3Nob3coc3RydWN0IHNlcV9maWxlICpzZXEsIHZvaWQgKnYpXG5uZXQvY29yZS9wa3RnZW4uYy0xODg2LXtcbi0tXG5uZXQvY29yZS9wa3RnZW4uYy0xOTE0LVxubmV0L2NvcmUvcGt0Z2VuLmM6MTkxNTpzdGF0aWMgc3NpemVfdCBwa3RnZW5fdGhyZWFkX3dyaXRlKHN0cnVjdCBmaWxlICpmaWxlLFxubmV0L2NvcmUvcGt0Z2VuLmMtMTkxNi1cdFx0XHRcdCAgIGNvbnN0IGNoYXIgX191c2VyICp1c2VyX2J1ZmZlcixcbi0tXG5uZXQvY29yZS9wa3RnZW4uYy0yMDExLVxubmV0L2NvcmUvcGt0Z2VuLmM6MjAxMjpzdGF0aWMgaW50IHBrdGdlbl90aHJlYWRfb3BlbihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSlcbm5ldC9jb3JlL3BrdGdlbi5jLTIwMTMte1xuLS1cbm5ldC9jb3JlL3BrdGdlbi5jPTIwMjY9c3RhdGljIHN0cnVjdCBwa3RnZW5fZGV2ICpfX3BrdGdlbl9OTl90aHJlYWRzKGNvbnN0IHN0cnVjdCBwa3RnZW5fbmV0ICpwbixcbi0tXG5uZXQvY29yZS9wa3RnZW4uYy0yMDQ4LSAqL1xubmV0L2NvcmUvcGt0Z2VuLmM6MjA0OTpzdGF0aWMgdm9pZCBwa3RnZW5fbWFya19kZXZpY2UoY29uc3Qgc3RydWN0IHBrdGdlbl9uZXQgKnBuLCBjb25zdCBjaGFyICppZm5hbWUpXG5uZXQvY29yZS9wa3RnZW4uYy0yMDUwLXtcbi0tXG5uZXQvY29yZS9wa3RnZW4uYy0yMDgwLVxubmV0L2NvcmUvcGt0Z2VuLmM6MjA4MTpzdGF0aWMgdm9pZCBwa3RnZW5fY2hhbmdlX25hbWUoY29uc3Qgc3RydWN0IHBrdGdlbl9uZXQgKnBuLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxubmV0L2NvcmUvcGt0Z2VuLmMtMjA4Mi17XG4tLVxubmV0L2NvcmUvcGt0Z2VuLmMtMjExMC1cbm5ldC9jb3JlL3BrdGdlbi5jOjIxMTE6c3RhdGljIGludCBwa3RnZW5fZGV2aWNlX2V2ZW50KHN0cnVjdCBub3RpZmllcl9ibG9jayAqdW51c2VkLFxubmV0L2NvcmUvcGt0Z2VuLmMtMjExMi1cdFx0XHQgICAgICAgdW5zaWduZWQgbG9uZyBldmVudCwgdm9pZCAqcHRyKVxuLS1cbm5ldC9jb3JlL3BrdGdlbi5jPTIxMzc9c3RhdGljIHN0cnVjdCBuZXRfZGV2aWNlICpwa3RnZW5fZGV2X2dldF9ieV9uYW1lKGNvbnN0IHN0cnVjdCBwa3RnZW5fbmV0ICpwbixcbi0tXG5uZXQvY29yZS9wa3RnZW4uYy0yMTU3LVxubmV0L2NvcmUvcGt0Z2VuLmM6MjE1ODpzdGF0aWMgaW50IHBrdGdlbl9zZXR1cF9kZXYoY29uc3Qgc3RydWN0IHBrdGdlbl9uZXQgKnBuLFxubmV0L2NvcmUvcGt0Z2VuLmMtMjE1OS1cdFx0XHQgICAgc3RydWN0IHBrdGdlbl9kZXYgKnBrdF9kZXYsIGNvbnN0IGNoYXIgKmlmbmFtZSlcbi0tXG5uZXQvY29yZS9wa3RnZW4uYy0yMTk0LSAqL1xubmV0L2NvcmUvcGt0Z2VuLmM6MjE5NTpzdGF0aWMgdm9pZCBwa3RnZW5fc2V0dXBfaW5qZWN0KHN0cnVjdCBwa3RnZW5fZGV2ICpwa3RfZGV2KVxubmV0L2NvcmUvcGt0Z2VuLmMtMjE5Ni17XG4tLVxubmV0L2NvcmUvcGt0Z2VuLmMtMjMyMy1cbm5ldC9jb3JlL3BrdGdlbi5jOjIzMjQ6c3RhdGljIHZvaWQgc3BpbihzdHJ1Y3QgcGt0Z2VuX2RldiAqcGt0X2Rldiwga3RpbWVfdCBzcGluX3VudGlsKVxubmV0L2NvcmUvcGt0Z2VuLmMtMjMyNS17XG4tLVxubmV0L2NvcmUvcGt0Z2VuLmMtMjM2Mi1cbm5ldC9jb3JlL3BrdGdlbi5jOjIzNjM6c3RhdGljIGlubGluZSB2b2lkIHNldF9wa3Rfb3ZlcmhlYWQoc3RydWN0IHBrdGdlbl9kZXYgKnBrdF9kZXYpXG5uZXQvY29yZS9wa3RnZW4uYy0yMzY0LXtcbi0tXG5uZXQvY29yZS9wa3RnZW4uYy0yMzcwLVxubmV0L2NvcmUvcGt0Z2VuLmM6MjM3MTpzdGF0aWMgaW5saW5lIGludCBmX3NlZW4oY29uc3Qgc3RydWN0IHBrdGdlbl9kZXYgKnBrdF9kZXYsIGludCBmbG93KVxubmV0L2NvcmUvcGt0Z2VuLmMtMjM3Mi17XG4tLVxubmV0L2NvcmUvcGt0Z2VuLmMtMjM3NS1cbm5ldC9jb3JlL3BrdGdlbi5jOjIzNzY6c3RhdGljIGlubGluZSBpbnQgZl9waWNrKHN0cnVjdCBwa3RnZW5fZGV2ICpwa3RfZGV2KVxubmV0L2NvcmUvcGt0Z2VuLmMtMjM3Ny17XG4tLVxubmV0L2NvcmUvcGt0Z2VuLmMtMjQwNi0jZGVmaW5lIERVTU1ZX01BUksgMFxubmV0L2NvcmUvcGt0Z2VuLmM6MjQwNzpzdGF0aWMgdm9pZCBnZXRfaXBzZWNfc2Eoc3RydWN0IHBrdGdlbl9kZXYgKnBrdF9kZXYsIGludCBmbG93KVxubmV0L2NvcmUvcGt0Z2VuLmMtMjQwOC17XG4tLVxubmV0L2NvcmUvcGt0Z2VuLmMtMjQzNy19XG5uZXQvY29yZS9wa3RnZW4uYzoyNDM4OnN0YXRpYyB2b2lkIHNldF9jdXJfcXVldWVfbWFwKHN0cnVjdCBwa3RnZW5fZGV2ICpwa3RfZGV2KVxubmV0L2NvcmUvcGt0Z2VuLmMtMjQzOS17XG4tLVxubmV0L2NvcmUvcGt0Z2VuLmMtMjQ2MS0gKi9cbm5ldC9jb3JlL3BrdGdlbi5jOjI0NjI6c3RhdGljIHZvaWQgbW9kX2N1cl9oZWFkZXJzKHN0cnVjdCBwa3RnZW5fZGV2ICpwa3RfZGV2KVxubmV0L2NvcmUvcGt0Z2VuLmMtMjQ2My17XG4tLVxubmV0L2NvcmUvcGt0Z2VuLmMtMjY2NS1cbm5ldC9jb3JlL3BrdGdlbi5jOjI2NjY6c3RhdGljIHZvaWQgZmlsbF9pbWl4X2Rpc3RyaWJ1dGlvbihzdHJ1Y3QgcGt0Z2VuX2RldiAqcGt0X2Rldilcbm5ldC9jb3JlL3BrdGdlbi5jLTI2Njcte1xuLS1cbm5ldC9jb3JlL3BrdGdlbi5jPTI2OTQ9c3RhdGljIHUzMiBwa3RnZW5fZHN0X21ldHJpY3NbUlRBWF9NQVggJiM0MzsgMV0gPSB7XG4tLVxubmV0L2NvcmUvcGt0Z2VuLmMtMjY5OC1cbm5ldC9jb3JlL3BrdGdlbi5jOjI2OTk6c3RhdGljIGludCBwa3RnZW5fb3V0cHV0X2lwc2VjKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBwa3RnZW5fZGV2ICpwa3RfZGV2KVxubmV0L2NvcmUvcGt0Z2VuLmMtMjcwMC17XG4tLVxubmV0L2NvcmUvcGt0Z2VuLmMtMjczOC1cbm5ldC9jb3JlL3BrdGdlbi5jOjI3Mzk6c3RhdGljIHZvaWQgZnJlZV9TQXMoc3RydWN0IHBrdGdlbl9kZXYgKnBrdF9kZXYpXG5uZXQvY29yZS9wa3RnZW4uYy0yNzQwLXtcbi0tXG5uZXQvY29yZS9wa3RnZW4uYy0yNzU1LVxubmV0L2NvcmUvcGt0Z2VuLmM6Mjc1NjpzdGF0aWMgaW50IHByb2Nlc3NfaXBzZWMoc3RydWN0IHBrdGdlbl9kZXYgKnBrdF9kZXYsXG5uZXQvY29yZS9wa3RnZW4uYy0yNzU3LVx0XHRcdCAgICAgIHN0cnVjdCBza19idWZmICpza2IsIF9fYmUxNiBwcm90b2NvbClcbi0tXG5uZXQvY29yZS9wa3RnZW4uYy0yODAyLVxubmV0L2NvcmUvcGt0Z2VuLmM6MjgwMzpzdGF0aWMgdm9pZCBtcGxzX3B1c2goX19iZTMyICptcGxzLCBzdHJ1Y3QgcGt0Z2VuX2RldiAqcGt0X2Rldilcbm5ldC9jb3JlL3BrdGdlbi5jLTI4MDQte1xuLS1cbm5ldC9jb3JlL3BrdGdlbi5jLTI4MTMtXG5uZXQvY29yZS9wa3RnZW4uYzoyODE0OnN0YXRpYyBpbmxpbmUgX19iZTE2IGJ1aWxkX3RjaSh1bnNpZ25lZCBpbnQgaWQsIHVuc2lnbmVkIGludCBjZmksXG5uZXQvY29yZS9wa3RnZW4uYy0yODE1LVx0XHRcdCAgICAgICB1bnNpZ25lZCBpbnQgcHJpbylcbi0tXG5uZXQvY29yZS9wa3RnZW4uYy0yODE5LVxubmV0L2NvcmUvcGt0Z2VuLmM6MjgyMDpzdGF0aWMgdm9pZCBwa3RnZW5fZmluYWxpemVfc2tiKHN0cnVjdCBwa3RnZW5fZGV2ICpwa3RfZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxubmV0L2NvcmUvcGt0Z2VuLmMtMjgyMS1cdFx0XHRcdGludCBkYXRhbGVuKVxuLS1cbm5ldC9jb3JlL3BrdGdlbi5jPTMxODU9c3RhdGljIHN0cnVjdCBza19idWZmICpmaWxsX3BhY2tldChzdHJ1Y3QgbmV0X2RldmljZSAqb2Rldixcbi0tXG5uZXQvY29yZS9wa3RnZW4uYy0zMTkzLVxubmV0L2NvcmUvcGt0Z2VuLmM6MzE5NDpzdGF0aWMgdm9pZCBwa3RnZW5fY2xlYXJfY291bnRlcnMoc3RydWN0IHBrdGdlbl9kZXYgKnBrdF9kZXYpXG5uZXQvY29yZS9wa3RnZW4uYy0zMTk1LXtcbi0tXG5uZXQvY29yZS9wa3RnZW4uYy0zMjA0LVxubmV0L2NvcmUvcGt0Z2VuLmM6MzIwNTpzdGF0aWMgdm9pZCBwa3RnZW5fcnVuKHN0cnVjdCBwa3RnZW5fdGhyZWFkICp0KVxubmV0L2NvcmUvcGt0Z2VuLmMtMzIwNi17XG4tLVxubmV0L2NvcmUvcGt0Z2VuLmMtMzIzNy1cbm5ldC9jb3JlL3BrdGdlbi5jOjMyMzg6c3RhdGljIHZvaWQgcGt0Z2VuX2hhbmRsZV9hbGxfdGhyZWFkcyhzdHJ1Y3QgcGt0Z2VuX25ldCAqcG4sIHUzMiBmbGFncylcbm5ldC9jb3JlL3BrdGdlbi5jLTMyMzkte1xuLS1cbm5ldC9jb3JlL3BrdGdlbi5jLTMyNDktXG5uZXQvY29yZS9wa3RnZW4uYzozMjUwOnN0YXRpYyB2b2lkIHBrdGdlbl9zdG9wX2FsbF90aHJlYWRzKHN0cnVjdCBwa3RnZW5fbmV0ICpwbilcbm5ldC9jb3JlL3BrdGdlbi5jLTMyNTEte1xuLS1cbm5ldC9jb3JlL3BrdGdlbi5jLTMyNTYtXG5uZXQvY29yZS9wa3RnZW4uYzozMjU3OnN0YXRpYyBpbnQgdGhyZWFkX2lzX3J1bm5pbmcoY29uc3Qgc3RydWN0IHBrdGdlbl90aHJlYWQgKnQpXG5uZXQvY29yZS9wa3RnZW4uYy0zMjU4LXtcbi0tXG5uZXQvY29yZS9wa3RnZW4uYy0zMjcwLVxubmV0L2NvcmUvcGt0Z2VuLmM6MzI3MTpzdGF0aWMgaW50IHBrdGdlbl93YWl0X3RocmVhZF9ydW4oc3RydWN0IHBrdGdlbl90aHJlYWQgKnQpXG5uZXQvY29yZS9wa3RnZW4uYy0zMjcyLXtcbi0tXG5uZXQvY29yZS9wa3RnZW4uYy0zMjkwLVxubmV0L2NvcmUvcGt0Z2VuLmM6MzI5MTpzdGF0aWMgaW50IHBrdGdlbl93YWl0X2FsbF90aHJlYWRzX3J1bihzdHJ1Y3QgcGt0Z2VuX25ldCAqcG4pXG5uZXQvY29yZS9wa3RnZW4uYy0zMjkyLXtcbi0tXG5uZXQvY29yZS9wa3RnZW4uYy0zMzE2LVxubmV0L2NvcmUvcGt0Z2VuLmM6MzMxNzpzdGF0aWMgdm9pZCBwa3RnZW5fcnVuX2FsbF90aHJlYWRzKHN0cnVjdCBwa3RnZW5fbmV0ICpwbilcbm5ldC9jb3JlL3BrdGdlbi5jLTMzMTgte1xuLS1cbm5ldC9jb3JlL3BrdGdlbi5jLTMzMjgtXG5uZXQvY29yZS9wa3RnZW4uYzozMzI5OnN0YXRpYyB2b2lkIHBrdGdlbl9yZXNldF9hbGxfdGhyZWFkcyhzdHJ1Y3QgcGt0Z2VuX25ldCAqcG4pXG5uZXQvY29yZS9wa3RnZW4uYy0zMzMwLXtcbi0tXG5uZXQvY29yZS9wa3RnZW4uYy0zMzQwLVxubmV0L2NvcmUvcGt0Z2VuLmM6MzM0MTpzdGF0aWMgdm9pZCBzaG93X3Jlc3VsdHMoc3RydWN0IHBrdGdlbl9kZXYgKnBrdF9kZXYsIGludCBucl9mcmFncylcbm5ldC9jb3JlL3BrdGdlbi5jLTMzNDIte1xuLS1cbm5ldC9jb3JlL3BrdGdlbi5jLTMzODItLyogU2V0IHN0b3BwZWQtYXQgdGltZXIsIHJlbW92ZSBmcm9tIHJ1bm5pbmcgbGlzdCwgZG8gY291bnRlcnMgXHUwMDI2IHN0YXRpc3RpY3MgKi9cbm5ldC9jb3JlL3BrdGdlbi5jOjMzODM6c3RhdGljIGludCBwa3RnZW5fc3RvcF9kZXZpY2Uoc3RydWN0IHBrdGdlbl9kZXYgKnBrdF9kZXYpXG5uZXQvY29yZS9wa3RnZW4uYy0zMzg0LXtcbi0tXG5uZXQvY29yZS9wa3RnZW4uYz0zNDAzPXN0YXRpYyBzdHJ1Y3QgcGt0Z2VuX2RldiAqbmV4dF90b19ydW4oc3RydWN0IHBrdGdlbl90aHJlYWQgKnQpXG4tLVxubmV0L2NvcmUvcGt0Z2VuLmMtMzQyMC1cbm5ldC9jb3JlL3BrdGdlbi5jOjM0MjE6c3RhdGljIHZvaWQgcGt0Z2VuX3N0b3Aoc3RydWN0IHBrdGdlbl90aHJlYWQgKnQpXG5uZXQvY29yZS9wa3RnZW4uYy0zNDIyLXtcbi0tXG5uZXQvY29yZS9wa3RnZW4uYy0zNDM5LSAqL1xubmV0L2NvcmUvcGt0Z2VuLmM6MzQ0MDpzdGF0aWMgdm9pZCBwa3RnZW5fcmVtX29uZV9pZihzdHJ1Y3QgcGt0Z2VuX3RocmVhZCAqdClcbm5ldC9jb3JlL3BrdGdlbi5jLTM0NDEte1xuLS1cbm5ldC9jb3JlL3BrdGdlbi5jLTM0NjEtXG5uZXQvY29yZS9wa3RnZW4uYzozNDYyOnN0YXRpYyB2b2lkIHBrdGdlbl9yZW1fYWxsX2lmcyhzdHJ1Y3QgcGt0Z2VuX3RocmVhZCAqdClcbm5ldC9jb3JlL3BrdGdlbi5jLTM0NjMte1xuLS1cbm5ldC9jb3JlL3BrdGdlbi5jLTM0ODAtXG5uZXQvY29yZS9wa3RnZW4uYzozNDgxOnN0YXRpYyB2b2lkIHBrdGdlbl9yZW1fdGhyZWFkKHN0cnVjdCBwa3RnZW5fdGhyZWFkICp0KVxubmV0L2NvcmUvcGt0Z2VuLmMtMzQ4Mi17XG4tLVxubmV0L2NvcmUvcGt0Z2VuLmMtMzQ4Ni1cbm5ldC9jb3JlL3BrdGdlbi5jOjM0ODc6c3RhdGljIHZvaWQgcGt0Z2VuX3Jlc2NoZWQoc3RydWN0IHBrdGdlbl9kZXYgKnBrdF9kZXYpXG5uZXQvY29yZS9wa3RnZW4uYy0zNDg4LXtcbi0tXG5uZXQvY29yZS9wa3RnZW4uYy0zNDk0LVxubmV0L2NvcmUvcGt0Z2VuLmM6MzQ5NTpzdGF0aWMgdm9pZCBwa3RnZW5fd2FpdF9mb3Jfc2tiKHN0cnVjdCBwa3RnZW5fZGV2ICpwa3RfZGV2KVxubmV0L2NvcmUvcGt0Z2VuLmMtMzQ5Ni17XG4tLVxubmV0L2NvcmUvcGt0Z2VuLmMtMzUxMC1cbm5ldC9jb3JlL3BrdGdlbi5jOjM1MTE6c3RhdGljIHZvaWQgcGt0Z2VuX3htaXQoc3RydWN0IHBrdGdlbl9kZXYgKnBrdF9kZXYpXG5uZXQvY29yZS9wa3RnZW4uYy0zNTEyLXtcbi0tXG5uZXQvY29yZS9wa3RnZW4uYy0zNjk5LVxubmV0L2NvcmUvcGt0Z2VuLmM6MzcwMDpzdGF0aWMgaW50IHBrdGdlbl90aHJlYWRfd29ya2VyKHZvaWQgKmFyZylcbm5ldC9jb3JlL3BrdGdlbi5jLTM3MDEte1xuLS1cbm5ldC9jb3JlL3BrdGdlbi5jPTM3NzA9c3RhdGljIHN0cnVjdCBwa3RnZW5fZGV2ICpwa3RnZW5fZmluZF9kZXYoc3RydWN0IHBrdGdlbl90aHJlYWQgKnQsXG4tLVxubmV0L2NvcmUvcGt0Z2VuLmMtMzc5NS1cbm5ldC9jb3JlL3BrdGdlbi5jOjM3OTY6c3RhdGljIGludCBhZGRfZGV2X3RvX3RocmVhZChzdHJ1Y3QgcGt0Z2VuX3RocmVhZCAqdCxcbm5ldC9jb3JlL3BrdGdlbi5jLTM3OTctXHRcdFx0ICAgICBzdHJ1Y3QgcGt0Z2VuX2RldiAqcGt0X2Rldilcbi0tXG5uZXQvY29yZS9wa3RnZW4uYy0zODI2LVxubmV0L2NvcmUvcGt0Z2VuLmM6MzgyNzpzdGF0aWMgaW50IHBrdGdlbl9hZGRfZGV2aWNlKHN0cnVjdCBwa3RnZW5fdGhyZWFkICp0LCBjb25zdCBjaGFyICppZm5hbWUpXG5uZXQvY29yZS9wa3RnZW4uYy0zODI4LXtcbi0tXG5uZXQvY29yZS9wa3RnZW4uYy0zOTE0LVxubmV0L2NvcmUvcGt0Z2VuLmM6MzkxNTpzdGF0aWMgaW50IF9fbmV0X2luaXQgcGt0Z2VuX2NyZWF0ZV90aHJlYWQoaW50IGNwdSwgc3RydWN0IHBrdGdlbl9uZXQgKnBuKVxubmV0L2NvcmUvcGt0Z2VuLmMtMzkxNi17XG4tLVxubmV0L2NvcmUvcGt0Z2VuLmMtMzk2Ny0gKi9cbm5ldC9jb3JlL3BrdGdlbi5jOjM5Njg6c3RhdGljIHZvaWQgX3JlbV9kZXZfZnJvbV9pZl9saXN0KHN0cnVjdCBwa3RnZW5fdGhyZWFkICp0LFxubmV0L2NvcmUvcGt0Z2VuLmMtMzk2OS1cdFx0XHRcdCAgc3RydWN0IHBrdGdlbl9kZXYgKnBrdF9kZXYpXG4tLVxubmV0L2NvcmUvcGt0Z2VuLmMtMzk4Mi1cbm5ldC9jb3JlL3BrdGdlbi5jOjM5ODM6c3RhdGljIGludCBwa3RnZW5fcmVtb3ZlX2RldmljZShzdHJ1Y3QgcGt0Z2VuX3RocmVhZCAqdCxcbm5ldC9jb3JlL3BrdGdlbi5jLTM5ODQtXHRcdFx0XHRzdHJ1Y3QgcGt0Z2VuX2RldiAqcGt0X2Rldilcbi0tXG5uZXQvY29yZS9wa3RnZW4uYy00MDE4LVxubmV0L2NvcmUvcGt0Z2VuLmM6NDAxOTpzdGF0aWMgaW50IF9fbmV0X2luaXQgcGdfbmV0X2luaXQoc3RydWN0IG5ldCAqbmV0KVxubmV0L2NvcmUvcGt0Z2VuLmMtNDAyMC17XG4tLVxubmV0L2NvcmUvcGt0Z2VuLmMtNDA2NS1cbm5ldC9jb3JlL3BrdGdlbi5jOjQwNjY6c3RhdGljIHZvaWQgX19uZXRfZXhpdCBwZ19uZXRfZXhpdChzdHJ1Y3QgbmV0ICpuZXQpXG5uZXQvY29yZS9wa3RnZW4uYy00MDY3LXtcbi0tXG5uZXQvY29yZS9wa3RnZW4uYz00MDkxPXN0YXRpYyBzdHJ1Y3QgcGVybmV0X29wZXJhdGlvbnMgcGdfbmV0X29wcyA9IHtcbi0tXG5uZXQvY29yZS9wa3RnZW4uYy00MDk3LVxubmV0L2NvcmUvcGt0Z2VuLmM6NDA5ODpzdGF0aWMgaW50IF9faW5pdCBwZ19pbml0KHZvaWQpXG5uZXQvY29yZS9wa3RnZW4uYy00MDk5LXtcbi0tXG5uZXQvY29yZS9wa3RnZW4uYy00MTEyLVxubmV0L2NvcmUvcGt0Z2VuLmM6NDExMzpzdGF0aWMgdm9pZCBfX2V4aXQgcGdfY2xlYW51cCh2b2lkKVxubmV0L2NvcmUvcGt0Z2VuLmMtNDExNC17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDA4OjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk5NTMKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAxNzUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQYWNrZXQgR2VuZXJhdGlvbiBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHksIG15IGJyYWluIHplcm9lcyBpbiBvbiB0aGUgZW50cnkgcG9pbnRzLiBUaGV5JiMzOTtyZSBwcmltYXJpbHkgYHByb2Nmc2AgaGFuZGxlcnMsIHNwZWNpZmljYWxseSBgcGdjdHJsX3dyaXRlYCwgYHBrdGdlbl9pZl93cml0ZWAsIGFuZCBgcGt0Z2VuX3RocmVhZF93cml0ZWAuIEkgcmVtZW1iZXIgdGhvc2UgZnVuY3Rpb25zLCB0aGV5IGhhbmRsZSB0aGUgdXNlci1zcGFjZSBjb25maWd1cmF0aW9uIG9mIGBwa3RnZW5gLiBCdXQgd2FpdCwgYHBrdGdlbl90aHJlYWRfd29ya2VyYCBpcyB0aGUgbWFpbiB0aHJlYWQgdGhhdCBhY3R1YWxseSAqc2VuZHMqIHRoZSBwYWNrZXRzLCByaWdodD8gQW5kIHRoZSB0cmFuc21pc3Npb24gaXRzZWxmIGhhcHBlbnMgd2l0aGluIGBwa3RnZW5feG1pdGAuCgpOb3cgSSBzZWUsIHRoaXMgcGF0Y2ggdG91Y2hlcyBgcGt0Z2VuX2ZpbmFsaXplX3NrYmAuIFRoYXQgcmluZ3MgYSBiZWxsLi4uIEkgYmVsaWV2ZSB0aGF0JiMzOTtzIHRoZSBmdW5jdGlvbiBjYWxsZWQgd2hlbiB0aGUgcGFja2V0cyBoYXZlIGJlZW4gZ2VuZXJhdGVkLiBUaGUgY3J1Y2lhbCBxdWVzdGlvbiBpcywgaG93IGVhc2lseSBjYW4gSSB0cmlnZ2VyIHRoaXMgZnJvbSB1c2Vyc3BhY2U/IEFoLCB0aGF0JiMzOTtzIHJpZ2h0LCBieSBjb25maWd1cmluZyBhbmQgc3RhcnRpbmcgYHBrdGdlbmAgdmlhIGBwcm9jZnNgLiBDb25maXJtZWQsIHRoZSBjb25maWd1cmF0aW9uIGtub2IgaXMgYE5FVF9QS1RHRU5gLgoKQnV0LCB3aGVuIGlzIGBwa3RnZW5fZmluYWxpemVfc2tiYCBhY3R1YWxseSBjYWxsZWQ/IElzIGl0IG9ubHkgd2hlbiBgcGt0X2Rldi0mZ3Q7ZmxhZ3NgIGhhcyB0aGUgYEZfRlJBR19QQUdFYCBiaXQgc2V0LCBvciBpcyBpdCB0cmlnZ2VyZWQgd2hlbmV2ZXIgYGRhdGFsZW4gJmd0OyAwYD8gVGhhdCBkZXRhaWwgaXMgaW1wb3J0YW50LiBPa2F5LCBJIG5lZWQgdG8gZ2V0IGludG8gdGhlIGNvZGUgZm9yIGEgbWludXRlLCBsZXQmIzM5O3MgdGFrZSBhIGxvb2sgYXQgYHBrdGdlbl9maW5hbGl6ZV9za2JgIGRpcmVjdGx5IHRvIHJlZnJlc2ggbXkgbWVtb3J5IGFuZCBiZSBzdXJlIG9mIHRoZSBleGFjdCBjb25kaXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDA4OjM4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L2NvcmUvcGt0Z2VuLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyODIwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzI4MjA6XHRzdGF0aWMgdm9pZCBwa3RnZW5fZmluYWxpemVfc2tiKHN0cnVjdCBwa3RnZW5fZGV2ICpwa3RfZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuMjgyMTpcdFx0XHRcdFx0aW50IGRhdGFsZW4pXG4yODIyOlx0e1xuMjgyMzpcdFx0c3RydWN0IHRpbWVzcGVjNjQgdGltZXN0YW1wO1xuMjgyNDpcdFx0c3RydWN0IHBrdGdlbl9oZHIgKnBnaDtcbjI4MjU6XHRcbjI4MjY6XHRcdHBnaCA9IHNrYl9wdXQoc2tiLCBzaXplb2YoKnBnaCkpO1xuMjgyNzpcdFx0ZGF0YWxlbiAtPSBzaXplb2YoKnBnaCk7XG4yODI4Olx0XG4yODI5Olx0XHRpZiAocGt0X2Rldi1cdTAwM2VuZnJhZ3MgXHUwMDNjPSAwKSB7XG4yODMwOlx0XHRcdHNrYl9wdXRfemVybyhza2IsIGRhdGFsZW4pO1xuMjgzMTpcdFx0fSBlbHNlIHtcbjI4MzI6XHRcdFx0aW50IGZyYWdzID0gcGt0X2Rldi1cdTAwM2VuZnJhZ3M7XG4yODMzOlx0XHRcdGludCBpLCBsZW47XG4yODM0Olx0XHRcdGludCBmcmFnX2xlbjtcbjI4MzU6XHRcbjI4MzY6XHRcbjI4Mzc6XHRcdFx0aWYgKGZyYWdzIFx1MDAzZSBNQVhfU0tCX0ZSQUdTKVxuMjgzODpcdFx0XHRcdGZyYWdzID0gTUFYX1NLQl9GUkFHUztcbjI4Mzk6XHRcdFx0bGVuID0gZGF0YWxlbiAtIGZyYWdzICogUEFHRV9TSVpFO1xuMjg0MDpcdFx0XHRpZiAobGVuIFx1MDAzZSAwKSB7XG4yODQxOlx0XHRcdFx0c2tiX3B1dF96ZXJvKHNrYiwgbGVuKTtcbjI4NDI6XHRcdFx0XHRkYXRhbGVuID0gZnJhZ3MgKiBQQUdFX1NJWkU7XG4yODQzOlx0XHRcdH1cbjI4NDQ6XHRcbjI4NDU6XHRcdFx0aSA9IDA7XG4yODQ2Olx0XHRcdGZyYWdfbGVuID0gbWluX3QoaW50LCBESVZfUk9VTkRfVVAoZGF0YWxlbiwgZnJhZ3MpLCBQQUdFX1NJWkUpO1xuMjg0NzpcdFx0XHR3aGlsZSAoZGF0YWxlbiBcdTAwM2UgMCBcdTAwMjZcdTAwMjYgaSBcdTAwM2MgZnJhZ3MpIHtcbjI4NDg6XHRcdFx0XHRpZiAodW5saWtlbHkoIXBrdF9kZXYtXHUwMDNlcGFnZSkpIHtcbjI4NDk6XHRcdFx0XHRcdGludCBub2RlID0gbnVtYV9ub2RlX2lkKCk7XG4yODUwOlx0XG4yODUxOlx0XHRcdFx0XHRpZiAocGt0X2Rldi1cdTAwM2Vub2RlIFx1MDAzZT0gMCBcdTAwMjZcdTAwMjYgKHBrdF9kZXYtXHUwMDNlZmxhZ3MgXHUwMDI2IEZfTk9ERSkpXG4yODUyOlx0XHRcdFx0XHRcdG5vZGUgPSBwa3RfZGV2LVx1MDAzZW5vZGU7XG4yODUzOlx0XHRcdFx0XHRwa3RfZGV2LVx1MDAzZXBhZ2UgPSBhbGxvY19wYWdlc19ub2RlKG5vZGUsIEdGUF9LRVJORUwgfCBfX0dGUF9aRVJPLCAwKTtcbjI4NTQ6XHRcdFx0XHRcdGlmICghcGt0X2Rldi1cdTAwM2VwYWdlKVxuMjg1NTpcdFx0XHRcdFx0XHRicmVhaztcbjI4NTY6XHRcdFx0XHR9XG4yODU3Olx0XHRcdFx0Z2V0X3BhZ2UocGt0X2Rldi1cdTAwM2VwYWdlKTtcbjI4NTg6XHRcbjI4NTk6XHRcdFx0XHQvKmxhc3QgZnJhZ21lbnQsIGZpbGwgcmVzdCBvZiBkYXRhKi9cbjI4NjA6XHRcdFx0XHRpZiAoaSA9PSAoZnJhZ3MgLSAxKSlcbjI4NjE6XHRcdFx0XHRcdHNrYl9mcmFnX2ZpbGxfcGFnZV9kZXNjKFx1MDAyNnNrYl9zaGluZm8oc2tiKS1cdTAwM2VmcmFnc1tpXSxcbjI4NjI6XHRcdFx0XHRcdFx0XHRcdHBrdF9kZXYtXHUwMDNlcGFnZSwgMCxcbjI4NjM6XHRcdFx0XHRcdFx0XHRcdG1pbihkYXRhbGVuLCBQQUdFX1NJWkUpKTtcbjI4NjQ6XHRcdFx0XHRlbHNlXG4yODY1Olx0XHRcdFx0XHRza2JfZnJhZ19maWxsX3BhZ2VfZGVzYyhcdTAwMjZza2Jfc2hpbmZvKHNrYiktXHUwMDNlZnJhZ3NbaV0sXG4yODY2Olx0XHRcdFx0XHRcdFx0XHRwa3RfZGV2LVx1MDAzZXBhZ2UsIDAsIGZyYWdfbGVuKTtcbjI4Njc6XHRcbjI4Njg6XHRcdFx0XHRkYXRhbGVuIC09IHNrYl9mcmFnX3NpemUoXHUwMDI2c2tiX3NoaW5mbyhza2IpLVx1MDAzZWZyYWdzW2ldKTtcbjI4Njk6XHRcdFx0XHRza2ItXHUwMDNlbGVuICYjNDM7PSBza2JfZnJhZ19zaXplKFx1MDAyNnNrYl9zaGluZm8oc2tiKS1cdTAwM2VmcmFnc1tpXSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDA4OjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExMzI1CgkJCQkJCQlvdXRwdXQ6IDExMwoJCQkJCQkJdGhvdWdodHM6IDI2NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgUGFja2V0IEdlbmVyYXRpb24gQnVnIGFuZCBGaXgqKgoKT2theSwgc28gdGhlIGNvcmUgb2YgdGhlIHByb2JsZW0gaGVyZSB3YXMgYSBkaXZpc2lvbiBpc3N1ZSBpbiB0aGUgcGFja2V0IGdlbmVyYXRpb24gY29kZS4gU3BlY2lmaWNhbGx5LCBgZGF0YWxlbiAvIGZyYWdzYCBjb3VsZCBldmFsdWF0ZSB0byB6ZXJvLiBXaGVuIHRoaXMgaGFwcGVuZWQsIGBmcmFnX2xlbmAgd2FzIGFsc28gemVybywgd2hpY2ggbWVhbnQgYGRhdGFsZW5gIHdvdWxkbiYjMzk7dCBkZWNyZWFzZSBpbiB0aGUgbG9vcC4gVGhlIHJlc3VsdD8gQW4gaW5maW5pdGUgbG9vcC4gT2J2aW91c2x5LCBhIGNyaXRpY2FsIGJ1Zy4KClRoZSBmaXgsIHRoYW5rZnVsbHksIGlzIGNsZWFuIGFuZCBzdHJhaWdodGZvcndhcmQuIFVzaW5nIGBESVZfUk9VTkRfVVAoZGF0YWxlbiwgZnJhZ3MpYCBlbnN1cmVzIHRoYXQgd2UgaGFuZGxlIHRoZSBkaXZpc2lvbiBjb3JyZWN0bHksIGFuZCBhZGRpbmcgYCZhbXA7JmFtcDsgaSAmbHQ7IGZyYWdzYCB0byB0aGUgd2hpbGUgbG9vcCBjb25kaXRpb24gcHJvdmlkZXMgYSBzZW5zaWJsZSB1cHBlciBib3VuZC4gRnVuY3Rpb25hbGx5LCB0aGlzIGlzIHRoZSBjb3JyZWN0IGFwcHJvYWNoLCBhbmQgSSBjYW4gY29uZmlybSB0aGUgbG9vcCBpcyByZWFjaGFibGUuCgpOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBsYXJnZXIgY29udGV4dC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBwaWVjZXMgb2YgdGhlIGNvZGViYXNlIGFyZSByZWxldmFudC4gQmFzZWQgb24gd2hhdCBJIGhhdmUgaGVyZSwgdGhlIGZ1bmN0aW9ucyBvZiBpbnRlcmVzdCBhcmUgYHBrdGdlbl9pZl93cml0ZWAsIGBwa3RnZW5fdGhyZWFkX3dyaXRlYCwgYW5kIGBwZ2N0cmxfd3JpdGVgLCBhbGwgaGFuZGxpbmcgY29uZmlndXJhdGlvbiwgYW5kIHRoZW4gdGhlIGFjdHVhbCBnZW5lcmF0aW9uIGhhcHBlbnMgZWl0aGVyIGluIGBwa3RnZW5feG1pdGAgb3IgYHBrdGdlbl90aHJlYWRfd29ya2VyYC4KClRvIHN1bW1hcml6ZSB0aGUgZnVuY3Rpb25zIGFnYWluLCBoZXJlJiMzOTtzIHRoZSBsaXN0OgoqICAgYHBrdGdlbl9pZl93cml0ZWAKKiAgIGBwa3RnZW5fdGhyZWFkX3dyaXRlYAoqICAgYHBnY3RybF93cml0ZWAKKiAgIGBwa3RnZW5fdGhyZWFkX3dvcmtlcmAKCkkgd2lsbCB0YWtlIGEgbW9tZW50IHRvIGRvdWJsZS1jaGVjayB0aGUgY29uZmlndXJhdGlvbiByZXF1aXJlbWVudHMgYmVjYXVzZSBJIGRvbiYjMzk7dCBsaWtlIGFzc3VtcHRpb25zLiBJIHNlZSB0aGF0IGBORVRfUEtUR0VOYCBpcyBuZWVkZWQsIHdoaWNoIGluIHR1cm4gZGVwZW5kcyBvbiBgSU5FVGAgYW5kIGBQUk9DX0ZTYC4gVGhhbmtmdWxseSwgYElORVRgIGFuZCBgUFJPQ19GU2AgYXJlIHVzdWFsbHkgZW5hYmxlZC4gU28gaXQgbG9va3MgbGlrZSBgTkVUX1BLVEdFTmAgaXMgc3VmZmljaWVudC4KCk5vdywgSSYjMzk7bSBjb25maWRlbnQgaW4gbXkgdW5kZXJzdGFuZGluZywgYW5kIEkgY2FuIHByb3ZpZGUgdGhlIHJlc3VsdHMgb2YgbXkgYW5hbHlzaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDA4OjM4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORVRfUEtUR0VOJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cGt0Z2VuX2lmX3dyaXRlJiMzNDssCiAgICAmIzM0O3BrdGdlbl90aHJlYWRfd3JpdGUmIzM0OywKICAgICYjMzQ7cGdjdHJsX3dyaXRlJiMzNDssCiAgICAmIzM0O3BrdGdlbl90aHJlYWRfd29ya2VyJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIGluZmluaXRlIGxvb3Agb3Igb3V0LW9mLWJvdW5kcyBpc3N1ZSBpbiBwa3RnZW5fZmluYWxpemVfc2tiIHdoZW4gY2FsY3VsYXRpbmcgZnJhZ21lbnQgbGVuZ3Rocy4gVGhpcyBpcyByZWFjaGFibGUgYnkgY29uZmlndXJpbmcgcGt0Z2VuIHZpYSBwcm9jZnMgYW5kIHN0YXJ0aW5nIHBhY2tldCBnZW5lcmF0aW9uLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORVRfUEtUR0VOJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cGt0Z2VuX2lmX3dyaXRlJiMzNDssCiAgICAmIzM0O3BrdGdlbl90aHJlYWRfd3JpdGUmIzM0OywKICAgICYjMzQ7cGdjdHJsX3dyaXRlJiMzNDssCiAgICAmIzM0O3BrdGdlbl90aHJlYWRfd29ya2VyJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIGluZmluaXRlIGxvb3Agb3Igb3V0LW9mLWJvdW5kcyBpc3N1ZSBpbiBwa3RnZW5fZmluYWxpemVfc2tiIHdoZW4gY2FsY3VsYXRpbmcgZnJhZ21lbnQgbGVuZ3Rocy4gVGhpcyBpcyByZWFjaGFibGUgYnkgY29uZmlndXJpbmcgcGt0Z2VuIHZpYSBwcm9jZnMgYW5kIHN0YXJ0aW5nIHBhY2tldCBnZW5lcmF0aW9uLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMzBUMDg6Mzc6NTAuNjYxMzg5NDc2WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDIzODEwNjI0NzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUX1BLVEdFTlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInBrdGdlbl9pZl93cml0ZVwiLFxuICAgIFwicGt0Z2VuX3RocmVhZF93cml0ZVwiLFxuICAgIFwicGdjdHJsX3dyaXRlXCIsXG4gICAgXCJwa3RnZW5fdGhyZWFkX3dvcmtlclwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIGluZmluaXRlIGxvb3Agb3Igb3V0LW9mLWJvdW5kcyBpc3N1ZSBpbiBwa3RnZW5fZmluYWxpemVfc2tiIHdoZW4gY2FsY3VsYXRpbmcgZnJhZ21lbnQgbGVuZ3Rocy4gVGhpcyBpcyByZWFjaGFibGUgYnkgY29uZmlndXJpbmcgcGt0Z2VuIHZpYSBwcm9jZnMgYW5kIHN0YXJ0aW5nIHBhY2tldCBnZW5lcmF0aW9uLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwODozNzo1MC42NjEzOTcyNDZaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0NDU1MDU3MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDY4Y2QxODg3YWIzZGQ3YzM0MTU4YTYwM2Q5ZmEwNTMxYjkzMmMxMjRcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFRodSBKdWwgMzAgMDg6Mzc6NDkgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbmV0L2NvcmUvcGt0Z2VuLmMgYi9uZXQvY29yZS9wa3RnZW4uY1xcbmluZGV4IDhlMTg1YjMxODI4ODUuLjJkYmI3Y2FhY2QwZDkgMTAwNjQ0XFxuLS0tIGEvbmV0L2NvcmUvcGt0Z2VuLmNcXG4rKysgYi9uZXQvY29yZS9wa3RnZW4uY1xcbkBAIC0yODQzLDggKzI4NDMsOCBAQCBzdGF0aWMgdm9pZCBwa3RnZW5fZmluYWxpemVfc2tiKHN0cnVjdCBwa3RnZW5fZGV2ICpwa3RfZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHRcXHR9XFxuIFxcbiBcXHRcXHRpID0gMDtcXG4tXFx0XFx0ZnJhZ19sZW4gPSBtaW5fdChpbnQsIGRhdGFsZW4gLyBmcmFncywgUEFHRV9TSVpFKTtcXG4tXFx0XFx0d2hpbGUgKGRhdGFsZW4gXFx1MDAzZSAwKSB7XFxuK1xcdFxcdGZyYWdfbGVuID0gbWluX3QoaW50LCBESVZfUk9VTkRfVVAoZGF0YWxlbiwgZnJhZ3MpLCBQQUdFX1NJWkUpO1xcbitcXHRcXHR3aGlsZSAoZGF0YWxlbiBcXHUwMDNlIDAgXFx1MDAyNlxcdTAwMjYgaSBcXHUwMDNjIGZyYWdzKSB7XFxuIFxcdFxcdFxcdGlmICh1bmxpa2VseSghcGt0X2Rldi1cXHUwMDNlcGFnZSkpIHtcXG4gXFx0XFx0XFx0XFx0aW50IG5vZGUgPSBudW1hX25vZGVfaWQoKTtcXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDA4OjM3OjUxLjEwNjkwODQ4WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NDE5MzU1MzQ4ODMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUX1BLVEdFTlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInBrdGdlbl9pZl93cml0ZVwiLFxuICAgIFwicGt0Z2VuX3RocmVhZF93cml0ZVwiLFxuICAgIFwicGdjdHJsX3dyaXRlXCIsXG4gICAgXCJwa3RnZW5fdGhyZWFkX3dvcmtlclwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIGluZmluaXRlIGxvb3Agb3Igb3V0LW9mLWJvdW5kcyBpc3N1ZSBpbiBwa3RnZW5fZmluYWxpemVfc2tiIHdoZW4gY2FsY3VsYXRpbmcgZnJhZ21lbnQgbGVuZ3Rocy4gVGhpcyBpcyByZWFjaGFibGUgYnkgY29uZmlndXJpbmcgcGt0Z2VuIHZpYSBwcm9jZnMgYW5kIHN0YXJ0aW5nIHBhY2tldCBnZW5lcmF0aW9uLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA2OGNkMTg4N2FiM2RkN2MzNDE1OGE2MDNkOWZhMDUzMWI5MzJjMTI0XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdWwgMzAgMDg6Mzc6NDkgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvY29yZS9wa3RnZW4uYyBiL25ldC9jb3JlL3BrdGdlbi5jXG5pbmRleCA4ZTE4NWIzMTgyODg1Li4yZGJiN2NhYWNkMGQ5IDEwMDY0NFxuLS0tIGEvbmV0L2NvcmUvcGt0Z2VuLmNcbisrKyBiL25ldC9jb3JlL3BrdGdlbi5jXG5AQCAtMjg0Myw4ICsyODQzLDggQEAgc3RhdGljIHZvaWQgcGt0Z2VuX2ZpbmFsaXplX3NrYihzdHJ1Y3QgcGt0Z2VuX2RldiAqcGt0X2Rldiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdFx0fVxuIFxuIFx0XHRpID0gMDtcbi1cdFx0ZnJhZ19sZW4gPSBtaW5fdChpbnQsIGRhdGFsZW4gLyBmcmFncywgUEFHRV9TSVpFKTtcbi1cdFx0d2hpbGUgKGRhdGFsZW4gXHUwMDNlIDApIHtcbitcdFx0ZnJhZ19sZW4gPSBtaW5fdChpbnQsIERJVl9ST1VORF9VUChkYXRhbGVuLCBmcmFncyksIFBBR0VfU0laRSk7XG4rXHRcdHdoaWxlIChkYXRhbGVuIFx1MDAzZSAwIFx1MDAyNlx1MDAyNiBpIFx1MDAzYyBmcmFncykge1xuIFx0XHRcdGlmICh1bmxpa2VseSghcGt0X2Rldi1cdTAwM2VwYWdlKSkge1xuIFx0XHRcdFx0aW50IG5vZGUgPSBudW1hX25vZGVfaWQoKTtcbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDA4OjM3OjUxLjEwNjkxMDUwOVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYxMzIyMDg0MjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgcGt0Z2VuLmMgUGF0Y2g6IEFkZHJlc3NpbmcgUG90ZW50aWFsIFNLQiBGcmFnbWVudCBJc3N1ZXMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQgdHdlYWtzIGBuZXQvY29yZS9wa3RnZW4uY2AsIHNwZWNpZmljYWxseSB0aGUgYHBrdGdlbl9maW5hbGl6ZV9za2JgIGZ1bmN0aW9uLiBUaGUgY29kZSBjaGFuZ2UgaW1tZWRpYXRlbHkganVtcHMgb3V0IGF0IG1lOiBhIG1vZGlmaWNhdGlvbiB0byBob3cgYGZyYWdfbGVuYCBpcyBjYWxjdWxhdGVkIGFuZCB0aGUgYWRkaXRpb24gb2YgYSBjaGVjayB3aXRoaW4gdGhlIGB3aGlsZWAgbG9vcC4gSW5pdGlhbGx5LCBJIHN1c3BlY3RlZCBpdCB3YXMgYWJvdXQgb3B0aW1pemluZyBmcmFnbWVudCBhbGxvY2F0aW9uIGJ1dCBsb29raW5nIGNsb3NlciBJIHNlZSB0aGUgbW9yZSBsaWtlbHkgcmVhc29uLlxuXG5UaGUgb3JpZ2luYWwgY29kZSB1c2VkIGBkYXRhbGVuIC8gZnJhZ3NgIHRvIGRldGVybWluZSBgZnJhZ19sZW5gLiBNeSBtaW5kIHJhY2VzIHRocm91Z2ggdGhlIGltcGxpY2F0aW9ucy4gSWYgYGRhdGFsZW5gIGlzIHNtYWxsZXIgdGhhbiBgZnJhZ3NgLCB0aGUgZGl2aXNpb24gcmVzdWx0cyBpbiB6ZXJvLiBUaGF0IG1lYW5zIHdlIGNvdWxkIGVuZCB1cCB3aXRoIGEgemVyby1sZW5ndGggZnJhZ21lbnQuIFRoZW4gdGhlIGV4aXN0aW5nIGNvZGUgd291bGQgbGVhZCB0byBhbiBpbmZpbml0ZSBsb29wIGJlY2F1c2UgYGRhdGFsZW5gIHdvdWxkIG5ldmVyIGJlIGRlY3JlbWVudGVkIGFuZCB0aGUgbG9vcCB3b3VsZG4ndCBleGl0LiBPciBldmVuIHdvcnNlLCBpZiBgZGF0YWxlbmAgaXMgbm90IGZ1bGx5IGNvbnN1bWVkLCB0aGVuIGBpYCBjb3VsZCBleGNlZWQgYE1BWF9TS0JfRlJBR1NgLCB3aGljaCBsZWFkcyB0byBhbiBPdXQtb2YtQm91bmRzIG1lbW9yeSBhY2Nlc3MgaXNzdWUuIFRoZSBjaGFuZ2UgYERJVl9ST1VORF9VUChkYXRhbGVuLCBmcmFncylgIGNvdXBsZWQgd2l0aCB0aGUgYWRkaXRpb25hbCBgaSBcdTAwM2MgZnJhZ3NgIGNoZWNrIGluIHRoZSBgd2hpbGVgIGxvb3AgaXMgYSBjbGVhciBhdHRlbXB0IHRvIGF2b2lkIGJvdGggb2YgdGhvc2Ugc2NlbmFyaW9zLiBXZSBhcmUgbm93IGVuc3VyaW5nIHRoYXQgd2UgKmFsd2F5cyogYWxsb2NhdGUgc29tZSBieXRlcywgYW5kIHRoYXQgd2UgZG9uJ3QgZXhjZWVkIHRoZSBudW1iZXIgb2YgZnJhZ21lbnRzLlxuXG5JIG5lZWQgdG8gY29uZmlybSB0aGlzIHVuZGVyc3RhbmRpbmcsIHNvIEknbSBnb2luZyB0byBxdWlja2x5IHJldmlldyB0aGUgY29udGV4dCBvZiBgcGt0Z2VuX2ZpbmFsaXplX3NrYmAgYW5kIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCBvdGhlciBwYXJ0cyBvZiBgcGt0Z2VuLmNgLCBlc3BlY2lhbGx5IHJlbGF0ZWQgdG8gYHBrdGdlbl9kZXZgLiBUaW1lIHRvIGZpcmUgdXAgYGdyZXBwZXJgIGFuZCBzZWUgd2hhdCBlbHNlIGlzIGdvaW5nIG9uIGluIHRoYXQgZmlsZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGZ1bGwgcGljdHVyZSB0byBjb25maXJtIHRoaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwOTAsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyODMsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwODozNzo1Ny4yMzkxMjA5MDVaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODU2NDc1NTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGt0Z2VuX2ZpbmFsaXplX3NrYlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvY29yZS9wa3RnZW4uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvY29yZS9wa3RnZW4uYz0yODE0PXN0YXRpYyBpbmxpbmUgX19iZTE2IGJ1aWxkX3RjaSh1bnNpZ25lZCBpbnQgaWQsIHVuc2lnbmVkIGludCBjZmksXFxuLS1cXG5uZXQvY29yZS9wa3RnZW4uYy0yODE5LVxcbm5ldC9jb3JlL3BrdGdlbi5jOjI4MjA6c3RhdGljIHZvaWQgcGt0Z2VuX2ZpbmFsaXplX3NrYihzdHJ1Y3QgcGt0Z2VuX2RldiAqcGt0X2Rldiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5uZXQvY29yZS9wa3RnZW4uYy0yODIxLVxcdFxcdFxcdFxcdGludCBkYXRhbGVuKVxcbi0tXFxubmV0L2NvcmUvcGt0Z2VuLmM9MjkyNz1zdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmZpbGxfcGFja2V0X2lwdjQoc3RydWN0IG5ldF9kZXZpY2UgKm9kZXYsXFxuLS1cXG5uZXQvY29yZS9wa3RnZW4uYy0zMDI3LVxcbm5ldC9jb3JlL3BrdGdlbi5jOjMwMjg6XFx0cGt0Z2VuX2ZpbmFsaXplX3NrYihwa3RfZGV2LCBza2IsIGRhdGFsZW4pO1xcbm5ldC9jb3JlL3BrdGdlbi5jLTMwMjktXFxuLS1cXG5uZXQvY29yZS9wa3RnZW4uYz0zMDU1PXN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqZmlsbF9wYWNrZXRfaXB2NihzdHJ1Y3QgbmV0X2RldmljZSAqb2RldixcXG4tLVxcbm5ldC9jb3JlL3BrdGdlbi5jLTMxNjItXFxubmV0L2NvcmUvcGt0Z2VuLmM6MzE2MzpcXHRwa3RnZW5fZmluYWxpemVfc2tiKHBrdF9kZXYsIHNrYiwgZGF0YWxlbik7XFxubmV0L2NvcmUvcGt0Z2VuLmMtMzE2NC1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDg6Mzc6NTcuMzI0NzczODYzWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzA0NTE1ODM3MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHVuZGVyc3RhbmRpbmcsIGZyYW1lZCBhcyBteSBpbnRlcm5hbCB0aG91Z2h0IHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gdGhlIFBhY2tldCBHZW5lcmF0aW9uIENvZGUqKlxuXG5BbHJpZ2h0LCBJJ20gZGlnZ2luZyBpbnRvIGBuZXQvY29yZS9wa3RnZW4uY2AgYWdhaW4uIEknbSBzZWVpbmcgdGhhdCBgcGt0Z2VuX2ZpbmFsaXplX3NrYmAgaXMgYSBrZXkgZnVuY3Rpb24gaGVyZS4gVGhlIGludGVyZXN0aW5nIHRoaW5nIGlzIHRoYXQgaXQncyBiZWluZyBjYWxsZWQgYnkgYGZpbGxfcGFja2V0X2lwdjRgIGFuZCBgZmlsbF9wYWNrZXRfaXB2NmAuIFRoYXQgdGVsbHMgbWUgaXQncyBjZW50cmFsIHRvIGNvbnN0cnVjdGluZyBhbmQgZmluYWxpemluZyBib3RoIElQdjQgYW5kIElQdjYgcGFja2V0cyB3aXRoaW4gdGhpcyBwYWNrZXQgZ2VuZXJhdGlvbiBmcmFtZXdvcmsuIE5vdyBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgY29uZmlndXJhdGlvbiB0aGF0IGVuYWJsZXMgdGhpcyBmdW5jdGlvbmFsaXR5LiBXaGF0IGFyZSB0aGUgcmVsZXZhbnQga2VybmVsIGNvbmZpZyBvcHRpb25zIHRoYXQgYnJpbmcgdGhpcyBjb2RlIGludG8gdGhlIGJ1aWxkPyBUaW1lIHRvIGNoZWNrIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMxMjYsIk91dHB1dFRva2VucyI6MjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwODozODowMC4zNjk5MzYwMTdaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzI0NzgwNTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGt0Z2VuXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9jb3JlL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9jb3JlL01ha2VmaWxlPTI2PW9iai0kKENPTkZJR19QUk9DX0ZTKSArPSBuZXQtcHJvY2ZzLm9cXG5uZXQvY29yZS9NYWtlZmlsZToyNzpvYmotJChDT05GSUdfTkVUX1BLVEdFTikgKz0gcGt0Z2VuLm9cXG5uZXQvY29yZS9NYWtlZmlsZS0yOC1vYmotJChDT05GSUdfTkVUUE9MTCkgKz0gbmV0cG9sbC5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDA4OjM4OjAwLjQ0MjQyMDAyNVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4OTg2NDgxODAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgc3VtbWFyaXplZCBpbiB0aGUgZmlyc3QgcGVyc29uLCBhc3N1bWluZyB0aGUgY29udGV4dCBpcyBrZXJuZWwgY29uZmlndXJhdGlvbiBhbmQgdGhlIHVzZXIgaXMgYW4gZXhwZXJ0OlxuXG4qKkludmVzdGlnYXRpbmcgYSBDb25maWd1cmF0aW9uIE9wdGlvbioqXG5cbkFscmlnaHQsIHNvIGl0J3MgYENPTkZJR19ORVRfUEtUR0VOYC4gSSByZWNvZ25pemUgdGhhdCBpbW1lZGlhdGVseS4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hlcmUgdGhpcyBvcHRpb24gaXMgZGVmaW5lZCB3aXRoaW4gdGhlIGtlcm5lbCdzIEtjb25maWcgc3lzdGVtLiBHaXZlbiBteSBleHBlcmllbmNlLCB0aGUgbG9naWNhbCBwbGFjZSB0byBsb29rIGZpcnN0IGlzIGVpdGhlciBpbiBgbmV0L0tjb25maWdgIOKAkyB0aGF0J3Mgb2Z0ZW4gdGhlIG1haW4gZW50cnkgcG9pbnQgZm9yIG5ldHdvcmstcmVsYXRlZCBvcHRpb25zIOKAkyBvciBwZXJoYXBzIGBuZXQvY29yZS9LY29uZmlnYCwgd2hpY2ggY291bGQgY29udGFpbiBzb21lIG9mIHRoZSBtb3JlIGZ1bmRhbWVudGFsLCBjb3JlIG5ldHdvcmtpbmcgY29uZmlndXJhdGlvbnMuIEknbGwgbWVudGFsbHkgcHJpb3JpdGl6ZSB0aG9zZSB0d28gbG9jYXRpb25zIGFuZCBzdGFydCBkaWdnaW5nIGludG8gdGhlIEtjb25maWcgZmlsZXMuIFRoZSBnb2FsIGlzIHRvIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyBhbmQgZGVmYXVsdCBiZWhhdmlvciBvZiBgTkVUX1BLVEdFTmAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM0NDEsIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwODozODowNC4zNDEwNzA0NDVaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQyMDY0Mzg1MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTkVUX1BLVEdFTlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvS2NvbmZpZz0zODQ9bWVudSBcXFwiTmV0d29yayB0ZXN0aW5nXFxcIlxcbm5ldC9LY29uZmlnLTM4NS1cXG5uZXQvS2NvbmZpZzozODY6Y29uZmlnIE5FVF9QS1RHRU5cXG5uZXQvS2NvbmZpZy0zODctXFx0dHJpc3RhdGUgXFxcIlBhY2tldCBHZW5lcmF0b3IgKFVTRSBXSVRIIENBVVRJT04pXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwODozODowNi43NjE3MzYyNzhaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjY0MzM3MjE5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBLZXJuZWwgQ29uZmlndXJhdGlvbiBMYW5kc2NhcGUqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBzb21ldGhpbmcgcmVsYXRlZCB0byBrZXJuZWwgY29uZmlndXJhdGlvbi4gTGV0J3Mgc3RhcnQgYnkgbG9va2luZyBhdCBgbmV0L0tjb25maWdgLCBzcGVjaWZpY2FsbHkgYXJvdW5kIGxpbmUgMzg2LiBJJ20gZ3Vlc3NpbmcgdGhpcyBhcmVhIGRlYWxzIHdpdGggYSBwYXJ0aWN1bGFyIG5ldHdvcmtpbmcgb3B0aW9uLCBvciBwZXJoYXBzIGEgZ3JvdXAgb2YgcmVsYXRlZCBvcHRpb25zLiBMaW5lIDM4NiBpcyBvZnRlbiBhIGdvb2QgcGxhY2UgdG8gc3RhcnQgYmVjYXVzZSBpdCBtaWdodCBiZSBhIG1vZHVsZSBvciBvcHRpb24gaW50cm9kdWN0aW9uLiBJJ20gbG9va2luZyBmb3IgdGhlIGRlZmluaW5nIGhlbHAgdGV4dCwgY29uc3RyYWludHMgb24gb3RoZXIgb3B0aW9ucywgYW5kIG1heWJlIG90aGVyIEtjb25maWcgZmlsZXMgdGhhdCBhcmUgcmVmZXJlbmNlZCBpbiB0aGlzIGFyZWEuIFRoaXMgaW5pdGlhbCBkaXZlIHdpbGwgZ2l2ZSBtZSBhIHNlbnNlIG9mIHRoZSBzY29wZSBhbmQgY29udGV4dCBvZiB0aGUgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzIGluIHRoaXMgYXJlYS4gRnJvbSB0aGVyZSwgSSBjYW4gZGV0ZXJtaW5lIHRoZSBhcHByb3ByaWF0ZSBzdHJhdGVneSB0byBmdWxseSB1bmRlcnN0YW5kIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGUgcGFyYW1ldGVycywgYW5kIGhvdyB0aGV5IGFwcGx5LiBIb3BlZnVsbHksIHdoYXRldmVyIEknbSBpbnZlc3RpZ2F0aW5nIGlzIHNlbGYgZXhwbGFuYXRvcnkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM3NDgsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwODozODoxMC4wMjYwNzUzNTdaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjY1NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMzgwLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMzgwOlxcdFxcdCAgbWFpbnRhaW4gY2FwYWNpdHkgZm9yIHRoZSBvdGhlciBmbG93cy4gVGhpcyBmZWF0dXJlIHByb3ZpZGVzIHNlcnZlcnNcXG4gMzgxOlxcdFxcdCAgd2l0aCBtYW55IGNsaWVudHMgc29tZSBwcm90ZWN0aW9uIGFnYWluc3QgRG9TIGJ5IGEgc2luZ2xlIChzcG9vZmVkKVxcbiAzODI6XFx0XFx0ICBmbG93IHRoYXQgZ3JlYXRseSBleGNlZWRzIGF2ZXJhZ2Ugd29ya2xvYWQuXFxuIDM4MzpcXHRcXG4gMzg0OlxcdG1lbnUgXFxcIk5ldHdvcmsgdGVzdGluZ1xcXCJcXG4gMzg1OlxcdFxcbiAzODY6XFx0Y29uZmlnIE5FVF9QS1RHRU5cXG4gMzg3OlxcdFxcdHRyaXN0YXRlIFxcXCJQYWNrZXQgR2VuZXJhdG9yIChVU0UgV0lUSCBDQVVUSU9OKVxcXCJcXG4gMzg4OlxcdFxcdGRlcGVuZHMgb24gSU5FVCBcXHUwMDI2XFx1MDAyNiBQUk9DX0ZTXFxuIDM4OTpcXHRcXHRoZWxwXFxuIDM5MDpcXHRcXHQgIFRoaXMgbW9kdWxlIHdpbGwgaW5qZWN0IHByZWNvbmZpZ3VyZWQgcGFja2V0cywgYXQgYSBjb25maWd1cmFibGVcXG4gMzkxOlxcdFxcdCAgcmF0ZSwgb3V0IG9mIGEgZ2l2ZW4gaW50ZXJmYWNlLiAgSXQgaXMgdXNlZCBmb3IgbmV0d29yayBpbnRlcmZhY2VcXG4gMzkyOlxcdFxcdCAgc3RyZXNzIHRlc3RpbmcgYW5kIHBlcmZvcm1hbmNlIGFuYWx5c2lzLiAgSWYgeW91IGRvbid0IHVuZGVyc3RhbmRcXG4gMzkzOlxcdFxcdCAgd2hhdCB3YXMganVzdCBzYWlkLCB5b3UgZG9uJ3QgbmVlZCBpdDogc2F5IE4uXFxuIDM5NDpcXHRcXG4gMzk1OlxcdFxcdCAgRG9jdW1lbnRhdGlvbiBvbiBob3cgdG8gdXNlIHRoZSBwYWNrZXQgZ2VuZXJhdG9yIGNhbiBiZSBmb3VuZFxcbiAzOTY6XFx0XFx0ICBhdCBcXHUwMDNjZmlsZTpEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvcGt0Z2VuLnJzdFxcdTAwM2UuXFxuIDM5NzpcXHRcXG4gMzk4OlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGNvZGUgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZVxcbiAzOTk6XFx0XFx0ICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgcGt0Z2VuLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwODozODoxMC4wMjYxNTAxMjdaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDU4MzkxNDYyOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLlxuXG4qKkluaXRpYWwgQXNzZXNzbWVudCBvZiB0aGUgYHBrdGdlbmAgTW9kdWxlKipcblxuQWxyaWdodCwgc28gSSdtIGxvb2tpbmcgYXQgdGhlIGRlcGVuZGVuY2llcyBvZiBgTkVUX1BLVEdFTmAuIEl0J3MgcHJldHR5IGNsZWFyIHRoaXMgbW9kdWxlIHJlbGllcyBvbiB0aGUgbmV0d29ya2luZyBzdGFjaywgYElORVRgLCB3aGljaCBtYWtlcyBzZW5zZS4gT2YgY291cnNlLCBpdCBhbHNvIHRvdWNoZXMgYFBST0NfRlNgLCBpbmRpY2F0aW5nIHNvbWUga2luZCBvZiB1c2VyLXNwYWNlIGludGVyZmFjZSBvciBjb25maWd1cmF0aW9uIHRocm91Z2ggdGhlIHByb2MgZmlsZXN5c3RlbS4gVGhhdCdzIHR5cGljYWwgZm9yIGEgcGFja2V0IGdlbmVyYXRvci5cblxuTXkgcHJpbWFyeSBpbnRlcmVzdCByaWdodCBub3cgbGllcyBpbiB0aGUgcGFja2V0IGZpbGxpbmcgZnVuY3Rpb25zLCBgZmlsbF9wYWNrZXRfaXB2NGAgYW5kIGBmaWxsX3BhY2tldF9pcHY2YC4gVGhlIGZhY3QgdGhhdCB0aGV5J3JlIGBzdGF0aWNgIGlzIG5vdGV3b3J0aHkg4oCTIHRoZXkncmUgbGlrZWx5IGhlbHBlciBmdW5jdGlvbnMgaW50ZXJuYWwgdG8gdGhlIGBwa3RnZW5gIGltcGxlbWVudGF0aW9uIGFuZCBub3QgaW50ZW5kZWQgZm9yIGRpcmVjdCBleHRlcm5hbCB1c2UuIEkgc2hvdWxkIGFsc28gcmVtZW1iZXIgYHBrdGdlbl9maW5hbGl6ZV9za2JgIGlzIGBzdGF0aWNgLiBJJ2xsIHdhbnQgdG8ga2VlcCB0aGF0IGluIG1pbmQgd2hlbiB0cmFjaW5nIHRoZSBwYWNrZXQgY3JlYXRpb24gZmxvdy5cblxuTm93LCBJJ20gdGhpbmtpbmcgYWJvdXQgdGhlIGJpZ2dlciBwaWN0dXJlLiBJIG5lZWQgYSBjbGVhciB2aWV3IG9mIHRoZSAqcHVibGljKiBpbnRlcmZhY2UsIHNvIHRvIHNwZWFrLiBUaGVyZWZvcmUsIEkgbmVlZCB0byBrbm93IHdoaWNoIGZ1bmN0aW9ucyB3aXRoaW4gYHBrdGdlbi5jYCBhcmUgKm5vdCogc3RhdGljLCBhcyB0aGVzZSBhcmUgdGhlIG9uZXMgdGhhdCBhcmUgYWNjZXNzaWJsZSB0byBvdGhlciBtb2R1bGVzIGFuZCBwb3RlbnRpYWxseSBob3cgdGhlIGdlbmVyYXRvciBpcyBjb250cm9sbGVkIG9yIHV0aWxpemVkLiBJIG5lZWQgdG8gZW51bWVyYXRlIHRoZW0gdG8gZ2V0IGEgY29tcHJlaGVuc2l2ZSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBtb2R1bGUncyBleHBvc2VkIGZ1bmN0aW9uYWxpdHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQzMTMsIk91dHB1dFRva2VucyI6NTUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3OCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDA4OjM4OjE0LjYxMDA2NzY1N1oiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTIxNjY5NDk5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl4oW2Etel9BLVowLTldKyApK1thLXpfQS1aMC05XStcXFxcKFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvY29yZS9wa3RnZW4uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvY29yZS9wa3RnZW4uYz00ODA9c3RhdGljIGNvbnN0IGNoYXIgdmVyc2lvbltdID1cXG4tLVxcbm5ldC9jb3JlL3BrdGdlbi5jLTQ4Mi1cXG5uZXQvY29yZS9wa3RnZW4uYzo0ODM6c3RhdGljIGludCBwa3RnZW5fcmVtb3ZlX2RldmljZShzdHJ1Y3QgcGt0Z2VuX3RocmVhZCAqdCwgc3RydWN0IHBrdGdlbl9kZXYgKmkpO1xcbm5ldC9jb3JlL3BrdGdlbi5jOjQ4NDpzdGF0aWMgaW50IHBrdGdlbl9hZGRfZGV2aWNlKHN0cnVjdCBwa3RnZW5fdGhyZWFkICp0LCBjb25zdCBjaGFyICppZm5hbWUpO1xcbm5ldC9jb3JlL3BrdGdlbi5jLTQ4NS1zdGF0aWMgc3RydWN0IHBrdGdlbl9kZXYgKnBrdGdlbl9maW5kX2RldihzdHJ1Y3QgcGt0Z2VuX3RocmVhZCAqdCxcXG5uZXQvY29yZS9wa3RnZW4uYy00ODYtXFx0XFx0XFx0XFx0XFx0ICBjb25zdCBjaGFyICppZm5hbWUsIGJvb2wgZXhhY3QpO1xcbm5ldC9jb3JlL3BrdGdlbi5jOjQ4NzpzdGF0aWMgaW50IHBrdGdlbl9kZXZpY2VfZXZlbnQoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICosIHVuc2lnbmVkIGxvbmcsIHZvaWQgKik7XFxubmV0L2NvcmUvcGt0Z2VuLmM6NDg4OnN0YXRpYyB2b2lkIHBrdGdlbl9ydW5fYWxsX3RocmVhZHMoc3RydWN0IHBrdGdlbl9uZXQgKnBuKTtcXG5uZXQvY29yZS9wa3RnZW4uYzo0ODk6c3RhdGljIHZvaWQgcGt0Z2VuX3Jlc2V0X2FsbF90aHJlYWRzKHN0cnVjdCBwa3RnZW5fbmV0ICpwbik7XFxubmV0L2NvcmUvcGt0Z2VuLmM6NDkwOnN0YXRpYyB2b2lkIHBrdGdlbl9zdG9wX2FsbF90aHJlYWRzKHN0cnVjdCBwa3RnZW5fbmV0ICpwbik7XFxubmV0L2NvcmUvcGt0Z2VuLmMtNDkxLVxcbm5ldC9jb3JlL3BrdGdlbi5jOjQ5MjpzdGF0aWMgdm9pZCBwa3RnZW5fc3RvcChzdHJ1Y3QgcGt0Z2VuX3RocmVhZCAqdCk7XFxubmV0L2NvcmUvcGt0Z2VuLmM6NDkzOnN0YXRpYyB2b2lkIHBrdGdlbl9jbGVhcl9jb3VudGVycyhzdHJ1Y3QgcGt0Z2VuX2RldiAqcGt0X2Rldik7XFxubmV0L2NvcmUvcGt0Z2VuLmM6NDk0OnN0YXRpYyB2b2lkIGZpbGxfaW1peF9kaXN0cmlidXRpb24oc3RydWN0IHBrdGdlbl9kZXYgKnBrdF9kZXYpO1xcbm5ldC9jb3JlL3BrdGdlbi5jLTQ5NS1cXG4tLVxcbm5ldC9jb3JlL3BrdGdlbi5jPTUwMD1zdGF0aWMgaW50IGRlYnVnICBfX3JlYWRfbW9zdGx5O1xcbm5ldC9jb3JlL3BrdGdlbi5jLTUwMS1cXG5uZXQvY29yZS9wa3RnZW4uYzo1MDI6c3RhdGljIERFRklORV9NVVRFWChwa3RnZW5fdGhyZWFkX2xvY2spO1xcbm5ldC9jb3JlL3BrdGdlbi5jLTUwMy1cXG5uZXQvY29yZS9wa3RnZW4uYz01MDQ9c3RhdGljIHN0cnVjdCBub3RpZmllcl9ibG9jayBwa3RnZW5fbm90aWZpZXJfYmxvY2sgPSB7XFxuLS1cXG5uZXQvY29yZS9wa3RnZW4uYy01MTItXFxubmV0L2NvcmUvcGt0Z2VuLmM6NTEzOnN0YXRpYyBpbnQgcGdjdHJsX3Nob3coc3RydWN0IHNlcV9maWxlICpzZXEsIHZvaWQgKnYpXFxubmV0L2NvcmUvcGt0Z2VuLmMtNTE0LXtcXG4tLVxcbm5ldC9jb3JlL3BrdGdlbi5jLTUxOC1cXG5uZXQvY29yZS9wa3RnZW4uYzo1MTk6c3RhdGljIHNzaXplX3QgcGdjdHJsX3dyaXRlKHN0cnVjdCBmaWxlICpmaWxlLCBjb25zdCBjaGFyIF9fdXNlciAqYnVmLFxcbm5ldC9jb3JlL3BrdGdlbi5jLTUyMC1cXHRcXHRcXHQgICAgc2l6ZV90IGNvdW50LCBsb2ZmX3QgKnBwb3MpXFxuLS1cXG5uZXQvY29yZS9wa3RnZW4uYy01NTItXFxubmV0L2NvcmUvcGt0Z2VuLmM6NTUzOnN0YXRpYyBpbnQgcGdjdHJsX29wZW4oc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUpXFxubmV0L2NvcmUvcGt0Z2VuLmMtNTU0LXtcXG4tLVxcbm5ldC9jb3JlL3BrdGdlbi5jPTU1OD1zdGF0aWMgY29uc3Qgc3RydWN0IHByb2Nfb3BzIHBrdGdlbl9wcm9jX29wcyA9IHtcXG4tLVxcbm5ldC9jb3JlL3BrdGdlbi5jLTU2NS1cXG5uZXQvY29yZS9wa3RnZW4uYzo1NjY6c3RhdGljIGludCBwa3RnZW5faWZfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSwgdm9pZCAqdilcXG5uZXQvY29yZS9wa3RnZW4uYy01Njcte1xcbi0tXFxubmV0L2NvcmUvcGt0Z2VuLmMtNzUwLVxcbm5ldC9jb3JlL3BrdGdlbi5jOjc1MTpzdGF0aWMgc3NpemVfdCBoZXgzMl9hcmcoY29uc3QgY2hhciBfX3VzZXIgKnVzZXJfYnVmZmVyLCBzaXplX3QgbWF4bGVuLFxcbm5ldC9jb3JlL3BrdGdlbi5jLTc1Mi1cXHRcXHRcXHQgX191MzIgKm51bSlcXG4tLVxcbm5ldC9jb3JlL3BrdGdlbi5jLTc3NC1cXG5uZXQvY29yZS9wa3RnZW4uYzo3NzU6c3RhdGljIHNzaXplX3QgY291bnRfdHJhaWxfY2hhcnMoY29uc3QgY2hhciBfX3VzZXIgKnVzZXJfYnVmZmVyLCBzaXplX3QgbWF4bGVuKVxcbm5ldC9jb3JlL3BrdGdlbi5jLTc3Ni17XFxuLS1cXG5uZXQvY29yZS9wa3RnZW4uYy03OTktXFxubmV0L2NvcmUvcGt0Z2VuLmM6ODAwOnN0YXRpYyBzc2l6ZV90IG51bV9hcmcoY29uc3QgY2hhciBfX3VzZXIgKnVzZXJfYnVmZmVyLCBzaXplX3QgbWF4bGVuLFxcbm5ldC9jb3JlL3BrdGdlbi5jLTgwMS1cXHRcXHQgICAgICAgdW5zaWduZWQgbG9uZyAqbnVtKVxcbi0tXFxubmV0L2NvcmUvcGt0Z2VuLmMtODE5LVxcbm5ldC9jb3JlL3BrdGdlbi5jOjgyMDpzdGF0aWMgc3NpemVfdCBzdHJuX2xlbihjb25zdCBjaGFyIF9fdXNlciAqdXNlcl9idWZmZXIsIHNpemVfdCBtYXhsZW4pXFxubmV0L2NvcmUvcGt0Z2VuLmMtODIxLXtcXG4tLVxcbm5ldC9jb3JlL3BrdGdlbi5jLTg0OS0gKi9cXG5uZXQvY29yZS9wa3RnZW4uYzo4NTA6c3RhdGljIHNzaXplX3QgZ2V0X2ltaXhfZW50cmllcyhjb25zdCBjaGFyIF9fdXNlciAqYnVmZmVyLFxcbm5ldC9jb3JlL3BrdGdlbi5jLTg1MS1cXHRcXHRcXHRcXHRzaXplX3QgbWF4bGVuLFxcbi0tXFxubmV0L2NvcmUvcGt0Z2VuLmMtOTExLVxcbm5ldC9jb3JlL3BrdGdlbi5jOjkxMjpzdGF0aWMgc3NpemVfdCBnZXRfbGFiZWxzKGNvbnN0IGNoYXIgX191c2VyICpidWZmZXIsXFxubmV0L2NvcmUvcGt0Z2VuLmMtOTEzLVxcdFxcdFxcdCAgc2l6ZV90IG1heGxlbiwgc3RydWN0IHBrdGdlbl9kZXYgKnBrdF9kZXYpXFxuLS1cXG5uZXQvY29yZS9wa3RnZW4uYy05NTQtXFxubmV0L2NvcmUvcGt0Z2VuLmM6OTU1OnN0YXRpYyBfX3UzMiBwa3RnZW5fcmVhZF9mbGFnKGNvbnN0IGNoYXIgKmYsIGJvb2wgKmRpc2FibGUpXFxubmV0L2NvcmUvcGt0Z2VuLmMtOTU2LXtcXG4tLVxcbm5ldC9jb3JlL3BrdGdlbi5jLTk4My1cXG5uZXQvY29yZS9wa3RnZW4uYzo5ODQ6c3RhdGljIHNzaXplX3QgcGt0Z2VuX2lmX3dyaXRlKHN0cnVjdCBmaWxlICpmaWxlLFxcbm5ldC9jb3JlL3BrdGdlbi5jLTk4NS1cXHRcXHRcXHQgICAgICAgY29uc3QgY2hhciBfX3VzZXIgKnVzZXJfYnVmZmVyLCBzaXplX3QgY291bnQsXFxuLS1cXG5uZXQvY29yZS9wa3RnZW4uYy0xODcxLVxcbm5ldC9jb3JlL3BrdGdlbi5jOjE4NzI6c3RhdGljIGludCBwa3RnZW5faWZfb3BlbihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSlcXG5uZXQvY29yZS9wa3RnZW4uYy0xODczLXtcXG4tLVxcbm5ldC9jb3JlL3BrdGdlbi5jPTE4Nzc9c3RhdGljIGNvbnN0IHN0cnVjdCBwcm9jX29wcyBwa3RnZW5faWZfcHJvY19vcHMgPSB7XFxuLS1cXG5uZXQvY29yZS9wa3RnZW4uYy0xODg0LVxcbm5ldC9jb3JlL3BrdGdlbi5jOjE4ODU6c3RhdGljIGludCBwa3RnZW5fdGhyZWFkX3Nob3coc3RydWN0IHNlcV9maWxlICpzZXEsIHZvaWQgKnYpXFxubmV0L2NvcmUvcGt0Z2VuLmMtMTg4Ni17XFxuLS1cXG5uZXQvY29yZS9wa3RnZW4uYy0xOTE0LVxcbm5ldC9jb3JlL3BrdGdlbi5jOjE5MTU6c3RhdGljIHNzaXplX3QgcGt0Z2VuX3RocmVhZF93cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSxcXG5uZXQvY29yZS9wa3RnZW4uYy0xOTE2LVxcdFxcdFxcdFxcdCAgIGNvbnN0IGNoYXIgX191c2VyICp1c2VyX2J1ZmZlcixcXG4tLVxcbm5ldC9jb3JlL3BrdGdlbi5jLTIwMTEtXFxubmV0L2NvcmUvcGt0Z2VuLmM6MjAxMjpzdGF0aWMgaW50IHBrdGdlbl90aHJlYWRfb3BlbihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSlcXG5uZXQvY29yZS9wa3RnZW4uYy0yMDEzLXtcXG4tLVxcbm5ldC9jb3JlL3BrdGdlbi5jPTIwMjY9c3RhdGljIHN0cnVjdCBwa3RnZW5fZGV2ICpfX3BrdGdlbl9OTl90aHJlYWRzKGNvbnN0IHN0cnVjdCBwa3RnZW5fbmV0ICpwbixcXG4tLVxcbm5ldC9jb3JlL3BrdGdlbi5jLTIwNDgtICovXFxubmV0L2NvcmUvcGt0Z2VuLmM6MjA0OTpzdGF0aWMgdm9pZCBwa3RnZW5fbWFya19kZXZpY2UoY29uc3Qgc3RydWN0IHBrdGdlbl9uZXQgKnBuLCBjb25zdCBjaGFyICppZm5hbWUpXFxubmV0L2NvcmUvcGt0Z2VuLmMtMjA1MC17XFxuLS1cXG5uZXQvY29yZS9wa3RnZW4uYy0yMDgwLVxcbm5ldC9jb3JlL3BrdGdlbi5jOjIwODE6c3RhdGljIHZvaWQgcGt0Z2VuX2NoYW5nZV9uYW1lKGNvbnN0IHN0cnVjdCBwa3RnZW5fbmV0ICpwbiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5uZXQvY29yZS9wa3RnZW4uYy0yMDgyLXtcXG4tLVxcbm5ldC9jb3JlL3BrdGdlbi5jLTIxMTAtXFxubmV0L2NvcmUvcGt0Z2VuLmM6MjExMTpzdGF0aWMgaW50IHBrdGdlbl9kZXZpY2VfZXZlbnQoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICp1bnVzZWQsXFxubmV0L2NvcmUvcGt0Z2VuLmMtMjExMi1cXHRcXHRcXHQgICAgICAgdW5zaWduZWQgbG9uZyBldmVudCwgdm9pZCAqcHRyKVxcbi0tXFxubmV0L2NvcmUvcGt0Z2VuLmM9MjEzNz1zdGF0aWMgc3RydWN0IG5ldF9kZXZpY2UgKnBrdGdlbl9kZXZfZ2V0X2J5X25hbWUoY29uc3Qgc3RydWN0IHBrdGdlbl9uZXQgKnBuLFxcbi0tXFxubmV0L2NvcmUvcGt0Z2VuLmMtMjE1Ny1cXG5uZXQvY29yZS9wa3RnZW4uYzoyMTU4OnN0YXRpYyBpbnQgcGt0Z2VuX3NldHVwX2Rldihjb25zdCBzdHJ1Y3QgcGt0Z2VuX25ldCAqcG4sXFxubmV0L2NvcmUvcGt0Z2VuLmMtMjE1OS1cXHRcXHRcXHQgICAgc3RydWN0IHBrdGdlbl9kZXYgKnBrdF9kZXYsIGNvbnN0IGNoYXIgKmlmbmFtZSlcXG4tLVxcbm5ldC9jb3JlL3BrdGdlbi5jLTIxOTQtICovXFxubmV0L2NvcmUvcGt0Z2VuLmM6MjE5NTpzdGF0aWMgdm9pZCBwa3RnZW5fc2V0dXBfaW5qZWN0KHN0cnVjdCBwa3RnZW5fZGV2ICpwa3RfZGV2KVxcbm5ldC9jb3JlL3BrdGdlbi5jLTIxOTYte1xcbi0tXFxubmV0L2NvcmUvcGt0Z2VuLmMtMjMyMy1cXG5uZXQvY29yZS9wa3RnZW4uYzoyMzI0OnN0YXRpYyB2b2lkIHNwaW4oc3RydWN0IHBrdGdlbl9kZXYgKnBrdF9kZXYsIGt0aW1lX3Qgc3Bpbl91bnRpbClcXG5uZXQvY29yZS9wa3RnZW4uYy0yMzI1LXtcXG4tLVxcbm5ldC9jb3JlL3BrdGdlbi5jLTIzNjItXFxubmV0L2NvcmUvcGt0Z2VuLmM6MjM2MzpzdGF0aWMgaW5saW5lIHZvaWQgc2V0X3BrdF9vdmVyaGVhZChzdHJ1Y3QgcGt0Z2VuX2RldiAqcGt0X2RldilcXG5uZXQvY29yZS9wa3RnZW4uYy0yMzY0LXtcXG4tLVxcbm5ldC9jb3JlL3BrdGdlbi5jLTIzNzAtXFxubmV0L2NvcmUvcGt0Z2VuLmM6MjM3MTpzdGF0aWMgaW5saW5lIGludCBmX3NlZW4oY29uc3Qgc3RydWN0IHBrdGdlbl9kZXYgKnBrdF9kZXYsIGludCBmbG93KVxcbm5ldC9jb3JlL3BrdGdlbi5jLTIzNzIte1xcbi0tXFxubmV0L2NvcmUvcGt0Z2VuLmMtMjM3NS1cXG5uZXQvY29yZS9wa3RnZW4uYzoyMzc2OnN0YXRpYyBpbmxpbmUgaW50IGZfcGljayhzdHJ1Y3QgcGt0Z2VuX2RldiAqcGt0X2RldilcXG5uZXQvY29yZS9wa3RnZW4uYy0yMzc3LXtcXG4tLVxcbm5ldC9jb3JlL3BrdGdlbi5jLTI0MDYtI2RlZmluZSBEVU1NWV9NQVJLIDBcXG5uZXQvY29yZS9wa3RnZW4uYzoyNDA3OnN0YXRpYyB2b2lkIGdldF9pcHNlY19zYShzdHJ1Y3QgcGt0Z2VuX2RldiAqcGt0X2RldiwgaW50IGZsb3cpXFxubmV0L2NvcmUvcGt0Z2VuLmMtMjQwOC17XFxuLS1cXG5uZXQvY29yZS9wa3RnZW4uYy0yNDM3LX1cXG5uZXQvY29yZS9wa3RnZW4uYzoyNDM4OnN0YXRpYyB2b2lkIHNldF9jdXJfcXVldWVfbWFwKHN0cnVjdCBwa3RnZW5fZGV2ICpwa3RfZGV2KVxcbm5ldC9jb3JlL3BrdGdlbi5jLTI0Mzkte1xcbi0tXFxubmV0L2NvcmUvcGt0Z2VuLmMtMjQ2MS0gKi9cXG5uZXQvY29yZS9wa3RnZW4uYzoyNDYyOnN0YXRpYyB2b2lkIG1vZF9jdXJfaGVhZGVycyhzdHJ1Y3QgcGt0Z2VuX2RldiAqcGt0X2RldilcXG5uZXQvY29yZS9wa3RnZW4uYy0yNDYzLXtcXG4tLVxcbm5ldC9jb3JlL3BrdGdlbi5jLTI2NjUtXFxubmV0L2NvcmUvcGt0Z2VuLmM6MjY2NjpzdGF0aWMgdm9pZCBmaWxsX2ltaXhfZGlzdHJpYnV0aW9uKHN0cnVjdCBwa3RnZW5fZGV2ICpwa3RfZGV2KVxcbm5ldC9jb3JlL3BrdGdlbi5jLTI2Njcte1xcbi0tXFxubmV0L2NvcmUvcGt0Z2VuLmM9MjY5ND1zdGF0aWMgdTMyIHBrdGdlbl9kc3RfbWV0cmljc1tSVEFYX01BWCArIDFdID0ge1xcbi0tXFxubmV0L2NvcmUvcGt0Z2VuLmMtMjY5OC1cXG5uZXQvY29yZS9wa3RnZW4uYzoyNjk5OnN0YXRpYyBpbnQgcGt0Z2VuX291dHB1dF9pcHNlYyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgcGt0Z2VuX2RldiAqcGt0X2RldilcXG5uZXQvY29yZS9wa3RnZW4uYy0yNzAwLXtcXG4tLVxcbm5ldC9jb3JlL3BrdGdlbi5jLTI3MzgtXFxubmV0L2NvcmUvcGt0Z2VuLmM6MjczOTpzdGF0aWMgdm9pZCBmcmVlX1NBcyhzdHJ1Y3QgcGt0Z2VuX2RldiAqcGt0X2RldilcXG5uZXQvY29yZS9wa3RnZW4uYy0yNzQwLXtcXG4tLVxcbm5ldC9jb3JlL3BrdGdlbi5jLTI3NTUtXFxubmV0L2NvcmUvcGt0Z2VuLmM6Mjc1NjpzdGF0aWMgaW50IHByb2Nlc3NfaXBzZWMoc3RydWN0IHBrdGdlbl9kZXYgKnBrdF9kZXYsXFxubmV0L2NvcmUvcGt0Z2VuLmMtMjc1Ny1cXHRcXHRcXHQgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBfX2JlMTYgcHJvdG9jb2wpXFxuLS1cXG5uZXQvY29yZS9wa3RnZW4uYy0yODAyLVxcbm5ldC9jb3JlL3BrdGdlbi5jOjI4MDM6c3RhdGljIHZvaWQgbXBsc19wdXNoKF9fYmUzMiAqbXBscywgc3RydWN0IHBrdGdlbl9kZXYgKnBrdF9kZXYpXFxubmV0L2NvcmUvcGt0Z2VuLmMtMjgwNC17XFxuLS1cXG5uZXQvY29yZS9wa3RnZW4uYy0yODEzLVxcbm5ldC9jb3JlL3BrdGdlbi5jOjI4MTQ6c3RhdGljIGlubGluZSBfX2JlMTYgYnVpbGRfdGNpKHVuc2lnbmVkIGludCBpZCwgdW5zaWduZWQgaW50IGNmaSxcXG5uZXQvY29yZS9wa3RnZW4uYy0yODE1LVxcdFxcdFxcdCAgICAgICB1bnNpZ25lZCBpbnQgcHJpbylcXG4tLVxcbm5ldC9jb3JlL3BrdGdlbi5jLTI4MTktXFxubmV0L2NvcmUvcGt0Z2VuLmM6MjgyMDpzdGF0aWMgdm9pZCBwa3RnZW5fZmluYWxpemVfc2tiKHN0cnVjdCBwa3RnZW5fZGV2ICpwa3RfZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbm5ldC9jb3JlL3BrdGdlbi5jLTI4MjEtXFx0XFx0XFx0XFx0aW50IGRhdGFsZW4pXFxuLS1cXG5uZXQvY29yZS9wa3RnZW4uYz0zMTg1PXN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqZmlsbF9wYWNrZXQoc3RydWN0IG5ldF9kZXZpY2UgKm9kZXYsXFxuLS1cXG5uZXQvY29yZS9wa3RnZW4uYy0zMTkzLVxcbm5ldC9jb3JlL3BrdGdlbi5jOjMxOTQ6c3RhdGljIHZvaWQgcGt0Z2VuX2NsZWFyX2NvdW50ZXJzKHN0cnVjdCBwa3RnZW5fZGV2ICpwa3RfZGV2KVxcbm5ldC9jb3JlL3BrdGdlbi5jLTMxOTUte1xcbi0tXFxubmV0L2NvcmUvcGt0Z2VuLmMtMzIwNC1cXG5uZXQvY29yZS9wa3RnZW4uYzozMjA1OnN0YXRpYyB2b2lkIHBrdGdlbl9ydW4oc3RydWN0IHBrdGdlbl90aHJlYWQgKnQpXFxubmV0L2NvcmUvcGt0Z2VuLmMtMzIwNi17XFxuLS1cXG5uZXQvY29yZS9wa3RnZW4uYy0zMjM3LVxcbm5ldC9jb3JlL3BrdGdlbi5jOjMyMzg6c3RhdGljIHZvaWQgcGt0Z2VuX2hhbmRsZV9hbGxfdGhyZWFkcyhzdHJ1Y3QgcGt0Z2VuX25ldCAqcG4sIHUzMiBmbGFncylcXG5uZXQvY29yZS9wa3RnZW4uYy0zMjM5LXtcXG4tLVxcbm5ldC9jb3JlL3BrdGdlbi5jLTMyNDktXFxubmV0L2NvcmUvcGt0Z2VuLmM6MzI1MDpzdGF0aWMgdm9pZCBwa3RnZW5fc3RvcF9hbGxfdGhyZWFkcyhzdHJ1Y3QgcGt0Z2VuX25ldCAqcG4pXFxubmV0L2NvcmUvcGt0Z2VuLmMtMzI1MS17XFxuLS1cXG5uZXQvY29yZS9wa3RnZW4uYy0zMjU2LVxcbm5ldC9jb3JlL3BrdGdlbi5jOjMyNTc6c3RhdGljIGludCB0aHJlYWRfaXNfcnVubmluZyhjb25zdCBzdHJ1Y3QgcGt0Z2VuX3RocmVhZCAqdClcXG5uZXQvY29yZS9wa3RnZW4uYy0zMjU4LXtcXG4tLVxcbm5ldC9jb3JlL3BrdGdlbi5jLTMyNzAtXFxubmV0L2NvcmUvcGt0Z2VuLmM6MzI3MTpzdGF0aWMgaW50IHBrdGdlbl93YWl0X3RocmVhZF9ydW4oc3RydWN0IHBrdGdlbl90aHJlYWQgKnQpXFxubmV0L2NvcmUvcGt0Z2VuLmMtMzI3Mi17XFxuLS1cXG5uZXQvY29yZS9wa3RnZW4uYy0zMjkwLVxcbm5ldC9jb3JlL3BrdGdlbi5jOjMyOTE6c3RhdGljIGludCBwa3RnZW5fd2FpdF9hbGxfdGhyZWFkc19ydW4oc3RydWN0IHBrdGdlbl9uZXQgKnBuKVxcbm5ldC9jb3JlL3BrdGdlbi5jLTMyOTIte1xcbi0tXFxubmV0L2NvcmUvcGt0Z2VuLmMtMzMxNi1cXG5uZXQvY29yZS9wa3RnZW4uYzozMzE3OnN0YXRpYyB2b2lkIHBrdGdlbl9ydW5fYWxsX3RocmVhZHMoc3RydWN0IHBrdGdlbl9uZXQgKnBuKVxcbm5ldC9jb3JlL3BrdGdlbi5jLTMzMTgte1xcbi0tXFxubmV0L2NvcmUvcGt0Z2VuLmMtMzMyOC1cXG5uZXQvY29yZS9wa3RnZW4uYzozMzI5OnN0YXRpYyB2b2lkIHBrdGdlbl9yZXNldF9hbGxfdGhyZWFkcyhzdHJ1Y3QgcGt0Z2VuX25ldCAqcG4pXFxubmV0L2NvcmUvcGt0Z2VuLmMtMzMzMC17XFxuLS1cXG5uZXQvY29yZS9wa3RnZW4uYy0zMzQwLVxcbm5ldC9jb3JlL3BrdGdlbi5jOjMzNDE6c3RhdGljIHZvaWQgc2hvd19yZXN1bHRzKHN0cnVjdCBwa3RnZW5fZGV2ICpwa3RfZGV2LCBpbnQgbnJfZnJhZ3MpXFxubmV0L2NvcmUvcGt0Z2VuLmMtMzM0Mi17XFxuLS1cXG5uZXQvY29yZS9wa3RnZW4uYy0zMzgyLS8qIFNldCBzdG9wcGVkLWF0IHRpbWVyLCByZW1vdmUgZnJvbSBydW5uaW5nIGxpc3QsIGRvIGNvdW50ZXJzIFxcdTAwMjYgc3RhdGlzdGljcyAqL1xcbm5ldC9jb3JlL3BrdGdlbi5jOjMzODM6c3RhdGljIGludCBwa3RnZW5fc3RvcF9kZXZpY2Uoc3RydWN0IHBrdGdlbl9kZXYgKnBrdF9kZXYpXFxubmV0L2NvcmUvcGt0Z2VuLmMtMzM4NC17XFxuLS1cXG5uZXQvY29yZS9wa3RnZW4uYz0zNDAzPXN0YXRpYyBzdHJ1Y3QgcGt0Z2VuX2RldiAqbmV4dF90b19ydW4oc3RydWN0IHBrdGdlbl90aHJlYWQgKnQpXFxuLS1cXG5uZXQvY29yZS9wa3RnZW4uYy0zNDIwLVxcbm5ldC9jb3JlL3BrdGdlbi5jOjM0MjE6c3RhdGljIHZvaWQgcGt0Z2VuX3N0b3Aoc3RydWN0IHBrdGdlbl90aHJlYWQgKnQpXFxubmV0L2NvcmUvcGt0Z2VuLmMtMzQyMi17XFxuLS1cXG5uZXQvY29yZS9wa3RnZW4uYy0zNDM5LSAqL1xcbm5ldC9jb3JlL3BrdGdlbi5jOjM0NDA6c3RhdGljIHZvaWQgcGt0Z2VuX3JlbV9vbmVfaWYoc3RydWN0IHBrdGdlbl90aHJlYWQgKnQpXFxubmV0L2NvcmUvcGt0Z2VuLmMtMzQ0MS17XFxuLS1cXG5uZXQvY29yZS9wa3RnZW4uYy0zNDYxLVxcbm5ldC9jb3JlL3BrdGdlbi5jOjM0NjI6c3RhdGljIHZvaWQgcGt0Z2VuX3JlbV9hbGxfaWZzKHN0cnVjdCBwa3RnZW5fdGhyZWFkICp0KVxcbm5ldC9jb3JlL3BrdGdlbi5jLTM0NjMte1xcbi0tXFxubmV0L2NvcmUvcGt0Z2VuLmMtMzQ4MC1cXG5uZXQvY29yZS9wa3RnZW4uYzozNDgxOnN0YXRpYyB2b2lkIHBrdGdlbl9yZW1fdGhyZWFkKHN0cnVjdCBwa3RnZW5fdGhyZWFkICp0KVxcbm5ldC9jb3JlL3BrdGdlbi5jLTM0ODIte1xcbi0tXFxubmV0L2NvcmUvcGt0Z2VuLmMtMzQ4Ni1cXG5uZXQvY29yZS9wa3RnZW4uYzozNDg3OnN0YXRpYyB2b2lkIHBrdGdlbl9yZXNjaGVkKHN0cnVjdCBwa3RnZW5fZGV2ICpwa3RfZGV2KVxcbm5ldC9jb3JlL3BrdGdlbi5jLTM0ODgte1xcbi0tXFxubmV0L2NvcmUvcGt0Z2VuLmMtMzQ5NC1cXG5uZXQvY29yZS9wa3RnZW4uYzozNDk1OnN0YXRpYyB2b2lkIHBrdGdlbl93YWl0X2Zvcl9za2Ioc3RydWN0IHBrdGdlbl9kZXYgKnBrdF9kZXYpXFxubmV0L2NvcmUvcGt0Z2VuLmMtMzQ5Ni17XFxuLS1cXG5uZXQvY29yZS9wa3RnZW4uYy0zNTEwLVxcbm5ldC9jb3JlL3BrdGdlbi5jOjM1MTE6c3RhdGljIHZvaWQgcGt0Z2VuX3htaXQoc3RydWN0IHBrdGdlbl9kZXYgKnBrdF9kZXYpXFxubmV0L2NvcmUvcGt0Z2VuLmMtMzUxMi17XFxuLS1cXG5uZXQvY29yZS9wa3RnZW4uYy0zNjk5LVxcbm5ldC9jb3JlL3BrdGdlbi5jOjM3MDA6c3RhdGljIGludCBwa3RnZW5fdGhyZWFkX3dvcmtlcih2b2lkICphcmcpXFxubmV0L2NvcmUvcGt0Z2VuLmMtMzcwMS17XFxuLS1cXG5uZXQvY29yZS9wa3RnZW4uYz0zNzcwPXN0YXRpYyBzdHJ1Y3QgcGt0Z2VuX2RldiAqcGt0Z2VuX2ZpbmRfZGV2KHN0cnVjdCBwa3RnZW5fdGhyZWFkICp0LFxcbi0tXFxubmV0L2NvcmUvcGt0Z2VuLmMtMzc5NS1cXG5uZXQvY29yZS9wa3RnZW4uYzozNzk2OnN0YXRpYyBpbnQgYWRkX2Rldl90b190aHJlYWQoc3RydWN0IHBrdGdlbl90aHJlYWQgKnQsXFxubmV0L2NvcmUvcGt0Z2VuLmMtMzc5Ny1cXHRcXHRcXHQgICAgIHN0cnVjdCBwa3RnZW5fZGV2ICpwa3RfZGV2KVxcbi0tXFxubmV0L2NvcmUvcGt0Z2VuLmMtMzgyNi1cXG5uZXQvY29yZS9wa3RnZW4uYzozODI3OnN0YXRpYyBpbnQgcGt0Z2VuX2FkZF9kZXZpY2Uoc3RydWN0IHBrdGdlbl90aHJlYWQgKnQsIGNvbnN0IGNoYXIgKmlmbmFtZSlcXG5uZXQvY29yZS9wa3RnZW4uYy0zODI4LXtcXG4tLVxcbm5ldC9jb3JlL3BrdGdlbi5jLTM5MTQtXFxubmV0L2NvcmUvcGt0Z2VuLmM6MzkxNTpzdGF0aWMgaW50IF9fbmV0X2luaXQgcGt0Z2VuX2NyZWF0ZV90aHJlYWQoaW50IGNwdSwgc3RydWN0IHBrdGdlbl9uZXQgKnBuKVxcbm5ldC9jb3JlL3BrdGdlbi5jLTM5MTYte1xcbi0tXFxubmV0L2NvcmUvcGt0Z2VuLmMtMzk2Ny0gKi9cXG5uZXQvY29yZS9wa3RnZW4uYzozOTY4OnN0YXRpYyB2b2lkIF9yZW1fZGV2X2Zyb21faWZfbGlzdChzdHJ1Y3QgcGt0Z2VuX3RocmVhZCAqdCxcXG5uZXQvY29yZS9wa3RnZW4uYy0zOTY5LVxcdFxcdFxcdFxcdCAgc3RydWN0IHBrdGdlbl9kZXYgKnBrdF9kZXYpXFxuLS1cXG5uZXQvY29yZS9wa3RnZW4uYy0zOTgyLVxcbm5ldC9jb3JlL3BrdGdlbi5jOjM5ODM6c3RhdGljIGludCBwa3RnZW5fcmVtb3ZlX2RldmljZShzdHJ1Y3QgcGt0Z2VuX3RocmVhZCAqdCxcXG5uZXQvY29yZS9wa3RnZW4uYy0zOTg0LVxcdFxcdFxcdFxcdHN0cnVjdCBwa3RnZW5fZGV2ICpwa3RfZGV2KVxcbi0tXFxubmV0L2NvcmUvcGt0Z2VuLmMtNDAxOC1cXG5uZXQvY29yZS9wa3RnZW4uYzo0MDE5OnN0YXRpYyBpbnQgX19uZXRfaW5pdCBwZ19uZXRfaW5pdChzdHJ1Y3QgbmV0ICpuZXQpXFxubmV0L2NvcmUvcGt0Z2VuLmMtNDAyMC17XFxuLS1cXG5uZXQvY29yZS9wa3RnZW4uYy00MDY1LVxcbm5ldC9jb3JlL3BrdGdlbi5jOjQwNjY6c3RhdGljIHZvaWQgX19uZXRfZXhpdCBwZ19uZXRfZXhpdChzdHJ1Y3QgbmV0ICpuZXQpXFxubmV0L2NvcmUvcGt0Z2VuLmMtNDA2Ny17XFxuLS1cXG5uZXQvY29yZS9wa3RnZW4uYz00MDkxPXN0YXRpYyBzdHJ1Y3QgcGVybmV0X29wZXJhdGlvbnMgcGdfbmV0X29wcyA9IHtcXG4tLVxcbm5ldC9jb3JlL3BrdGdlbi5jLTQwOTctXFxubmV0L2NvcmUvcGt0Z2VuLmM6NDA5ODpzdGF0aWMgaW50IF9faW5pdCBwZ19pbml0KHZvaWQpXFxubmV0L2NvcmUvcGt0Z2VuLmMtNDA5OS17XFxuLS1cXG5uZXQvY29yZS9wa3RnZW4uYy00MTEyLVxcbm5ldC9jb3JlL3BrdGdlbi5jOjQxMTM6c3RhdGljIHZvaWQgX19leGl0IHBnX2NsZWFudXAodm9pZClcXG5uZXQvY29yZS9wa3RnZW4uYy00MTE0LXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDg6Mzg6MTQuNzMxNzQ0MjU1WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg0ODkxNjE1MjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBQYWNrZXQgR2VuZXJhdGlvbiBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGltbWVkaWF0ZWx5LCBteSBicmFpbiB6ZXJvZXMgaW4gb24gdGhlIGVudHJ5IHBvaW50cy4gVGhleSdyZSBwcmltYXJpbHkgYHByb2Nmc2AgaGFuZGxlcnMsIHNwZWNpZmljYWxseSBgcGdjdHJsX3dyaXRlYCwgYHBrdGdlbl9pZl93cml0ZWAsIGFuZCBgcGt0Z2VuX3RocmVhZF93cml0ZWAuIEkgcmVtZW1iZXIgdGhvc2UgZnVuY3Rpb25zLCB0aGV5IGhhbmRsZSB0aGUgdXNlci1zcGFjZSBjb25maWd1cmF0aW9uIG9mIGBwa3RnZW5gLiBCdXQgd2FpdCwgYHBrdGdlbl90aHJlYWRfd29ya2VyYCBpcyB0aGUgbWFpbiB0aHJlYWQgdGhhdCBhY3R1YWxseSAqc2VuZHMqIHRoZSBwYWNrZXRzLCByaWdodD8gQW5kIHRoZSB0cmFuc21pc3Npb24gaXRzZWxmIGhhcHBlbnMgd2l0aGluIGBwa3RnZW5feG1pdGAuXG5cbk5vdyBJIHNlZSwgdGhpcyBwYXRjaCB0b3VjaGVzIGBwa3RnZW5fZmluYWxpemVfc2tiYC4gVGhhdCByaW5ncyBhIGJlbGwuLi4gSSBiZWxpZXZlIHRoYXQncyB0aGUgZnVuY3Rpb24gY2FsbGVkIHdoZW4gdGhlIHBhY2tldHMgaGF2ZSBiZWVuIGdlbmVyYXRlZC4gVGhlIGNydWNpYWwgcXVlc3Rpb24gaXMsIGhvdyBlYXNpbHkgY2FuIEkgdHJpZ2dlciB0aGlzIGZyb20gdXNlcnNwYWNlPyBBaCwgdGhhdCdzIHJpZ2h0LCBieSBjb25maWd1cmluZyBhbmQgc3RhcnRpbmcgYHBrdGdlbmAgdmlhIGBwcm9jZnNgLiBDb25maXJtZWQsIHRoZSBjb25maWd1cmF0aW9uIGtub2IgaXMgYE5FVF9QS1RHRU5gLlxuXG5CdXQsIHdoZW4gaXMgYHBrdGdlbl9maW5hbGl6ZV9za2JgIGFjdHVhbGx5IGNhbGxlZD8gSXMgaXQgb25seSB3aGVuIGBwa3RfZGV2LVx1MDAzZWZsYWdzYCBoYXMgdGhlIGBGX0ZSQUdfUEFHRWAgYml0IHNldCwgb3IgaXMgaXQgdHJpZ2dlcmVkIHdoZW5ldmVyIGBkYXRhbGVuIFx1MDAzZSAwYD8gVGhhdCBkZXRhaWwgaXMgaW1wb3J0YW50LiBPa2F5LCBJIG5lZWQgdG8gZ2V0IGludG8gdGhlIGNvZGUgZm9yIGEgbWludXRlLCBsZXQncyB0YWtlIGEgbG9vayBhdCBgcGt0Z2VuX2ZpbmFsaXplX3NrYmAgZGlyZWN0bHkgdG8gcmVmcmVzaCBteSBtZW1vcnkgYW5kIGJlIHN1cmUgb2YgdGhlIGV4YWN0IGNvbmRpdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6OTk1MywiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwODozODoyMy4yMjA5MDgzNTRaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjA1NjEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9jb3JlL3BrdGdlbi5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDI4MjAsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjI4MjA6XFx0c3RhdGljIHZvaWQgcGt0Z2VuX2ZpbmFsaXplX3NrYihzdHJ1Y3QgcGt0Z2VuX2RldiAqcGt0X2Rldiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4yODIxOlxcdFxcdFxcdFxcdFxcdGludCBkYXRhbGVuKVxcbjI4MjI6XFx0e1xcbjI4MjM6XFx0XFx0c3RydWN0IHRpbWVzcGVjNjQgdGltZXN0YW1wO1xcbjI4MjQ6XFx0XFx0c3RydWN0IHBrdGdlbl9oZHIgKnBnaDtcXG4yODI1OlxcdFxcbjI4MjY6XFx0XFx0cGdoID0gc2tiX3B1dChza2IsIHNpemVvZigqcGdoKSk7XFxuMjgyNzpcXHRcXHRkYXRhbGVuIC09IHNpemVvZigqcGdoKTtcXG4yODI4OlxcdFxcbjI4Mjk6XFx0XFx0aWYgKHBrdF9kZXYtXFx1MDAzZW5mcmFncyBcXHUwMDNjPSAwKSB7XFxuMjgzMDpcXHRcXHRcXHRza2JfcHV0X3plcm8oc2tiLCBkYXRhbGVuKTtcXG4yODMxOlxcdFxcdH0gZWxzZSB7XFxuMjgzMjpcXHRcXHRcXHRpbnQgZnJhZ3MgPSBwa3RfZGV2LVxcdTAwM2VuZnJhZ3M7XFxuMjgzMzpcXHRcXHRcXHRpbnQgaSwgbGVuO1xcbjI4MzQ6XFx0XFx0XFx0aW50IGZyYWdfbGVuO1xcbjI4MzU6XFx0XFxuMjgzNjpcXHRcXG4yODM3OlxcdFxcdFxcdGlmIChmcmFncyBcXHUwMDNlIE1BWF9TS0JfRlJBR1MpXFxuMjgzODpcXHRcXHRcXHRcXHRmcmFncyA9IE1BWF9TS0JfRlJBR1M7XFxuMjgzOTpcXHRcXHRcXHRsZW4gPSBkYXRhbGVuIC0gZnJhZ3MgKiBQQUdFX1NJWkU7XFxuMjg0MDpcXHRcXHRcXHRpZiAobGVuIFxcdTAwM2UgMCkge1xcbjI4NDE6XFx0XFx0XFx0XFx0c2tiX3B1dF96ZXJvKHNrYiwgbGVuKTtcXG4yODQyOlxcdFxcdFxcdFxcdGRhdGFsZW4gPSBmcmFncyAqIFBBR0VfU0laRTtcXG4yODQzOlxcdFxcdFxcdH1cXG4yODQ0OlxcdFxcbjI4NDU6XFx0XFx0XFx0aSA9IDA7XFxuMjg0NjpcXHRcXHRcXHRmcmFnX2xlbiA9IG1pbl90KGludCwgRElWX1JPVU5EX1VQKGRhdGFsZW4sIGZyYWdzKSwgUEFHRV9TSVpFKTtcXG4yODQ3OlxcdFxcdFxcdHdoaWxlIChkYXRhbGVuIFxcdTAwM2UgMCBcXHUwMDI2XFx1MDAyNiBpIFxcdTAwM2MgZnJhZ3MpIHtcXG4yODQ4OlxcdFxcdFxcdFxcdGlmICh1bmxpa2VseSghcGt0X2Rldi1cXHUwMDNlcGFnZSkpIHtcXG4yODQ5OlxcdFxcdFxcdFxcdFxcdGludCBub2RlID0gbnVtYV9ub2RlX2lkKCk7XFxuMjg1MDpcXHRcXG4yODUxOlxcdFxcdFxcdFxcdFxcdGlmIChwa3RfZGV2LVxcdTAwM2Vub2RlIFxcdTAwM2U9IDAgXFx1MDAyNlxcdTAwMjYgKHBrdF9kZXYtXFx1MDAzZWZsYWdzIFxcdTAwMjYgRl9OT0RFKSlcXG4yODUyOlxcdFxcdFxcdFxcdFxcdFxcdG5vZGUgPSBwa3RfZGV2LVxcdTAwM2Vub2RlO1xcbjI4NTM6XFx0XFx0XFx0XFx0XFx0cGt0X2Rldi1cXHUwMDNlcGFnZSA9IGFsbG9jX3BhZ2VzX25vZGUobm9kZSwgR0ZQX0tFUk5FTCB8IF9fR0ZQX1pFUk8sIDApO1xcbjI4NTQ6XFx0XFx0XFx0XFx0XFx0aWYgKCFwa3RfZGV2LVxcdTAwM2VwYWdlKVxcbjI4NTU6XFx0XFx0XFx0XFx0XFx0XFx0YnJlYWs7XFxuMjg1NjpcXHRcXHRcXHRcXHR9XFxuMjg1NzpcXHRcXHRcXHRcXHRnZXRfcGFnZShwa3RfZGV2LVxcdTAwM2VwYWdlKTtcXG4yODU4OlxcdFxcbjI4NTk6XFx0XFx0XFx0XFx0LypsYXN0IGZyYWdtZW50LCBmaWxsIHJlc3Qgb2YgZGF0YSovXFxuMjg2MDpcXHRcXHRcXHRcXHRpZiAoaSA9PSAoZnJhZ3MgLSAxKSlcXG4yODYxOlxcdFxcdFxcdFxcdFxcdHNrYl9mcmFnX2ZpbGxfcGFnZV9kZXNjKFxcdTAwMjZza2Jfc2hpbmZvKHNrYiktXFx1MDAzZWZyYWdzW2ldLFxcbjI4NjI6XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0cGt0X2Rldi1cXHUwMDNlcGFnZSwgMCxcXG4yODYzOlxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdG1pbihkYXRhbGVuLCBQQUdFX1NJWkUpKTtcXG4yODY0OlxcdFxcdFxcdFxcdGVsc2VcXG4yODY1OlxcdFxcdFxcdFxcdFxcdHNrYl9mcmFnX2ZpbGxfcGFnZV9kZXNjKFxcdTAwMjZza2Jfc2hpbmZvKHNrYiktXFx1MDAzZWZyYWdzW2ldLFxcbjI4NjY6XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0cGt0X2Rldi1cXHUwMDNlcGFnZSwgMCwgZnJhZ19sZW4pO1xcbjI4Njc6XFx0XFxuMjg2ODpcXHRcXHRcXHRcXHRkYXRhbGVuIC09IHNrYl9mcmFnX3NpemUoXFx1MDAyNnNrYl9zaGluZm8oc2tiKS1cXHUwMDNlZnJhZ3NbaV0pO1xcbjI4Njk6XFx0XFx0XFx0XFx0c2tiLVxcdTAwM2VsZW4gKz0gc2tiX2ZyYWdfc2l6ZShcXHUwMDI2c2tiX3NoaW5mbyhza2IpLVxcdTAwM2VmcmFnc1tpXSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDA4OjM4OjIzLjIyMTExNjU0NFoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5NjgyNDU5NTEwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBQYWNrZXQgR2VuZXJhdGlvbiBCdWcgYW5kIEZpeCoqXG5cbk9rYXksIHNvIHRoZSBjb3JlIG9mIHRoZSBwcm9ibGVtIGhlcmUgd2FzIGEgZGl2aXNpb24gaXNzdWUgaW4gdGhlIHBhY2tldCBnZW5lcmF0aW9uIGNvZGUuIFNwZWNpZmljYWxseSwgYGRhdGFsZW4gLyBmcmFnc2AgY291bGQgZXZhbHVhdGUgdG8gemVyby4gV2hlbiB0aGlzIGhhcHBlbmVkLCBgZnJhZ19sZW5gIHdhcyBhbHNvIHplcm8sIHdoaWNoIG1lYW50IGBkYXRhbGVuYCB3b3VsZG4ndCBkZWNyZWFzZSBpbiB0aGUgbG9vcC4gVGhlIHJlc3VsdD8gQW4gaW5maW5pdGUgbG9vcC4gT2J2aW91c2x5LCBhIGNyaXRpY2FsIGJ1Zy5cblxuVGhlIGZpeCwgdGhhbmtmdWxseSwgaXMgY2xlYW4gYW5kIHN0cmFpZ2h0Zm9yd2FyZC4gVXNpbmcgYERJVl9ST1VORF9VUChkYXRhbGVuLCBmcmFncylgIGVuc3VyZXMgdGhhdCB3ZSBoYW5kbGUgdGhlIGRpdmlzaW9uIGNvcnJlY3RseSwgYW5kIGFkZGluZyBgXHUwMDI2XHUwMDI2IGkgXHUwMDNjIGZyYWdzYCB0byB0aGUgd2hpbGUgbG9vcCBjb25kaXRpb24gcHJvdmlkZXMgYSBzZW5zaWJsZSB1cHBlciBib3VuZC4gRnVuY3Rpb25hbGx5LCB0aGlzIGlzIHRoZSBjb3JyZWN0IGFwcHJvYWNoLCBhbmQgSSBjYW4gY29uZmlybSB0aGUgbG9vcCBpcyByZWFjaGFibGUuXG5cbk5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGxhcmdlciBjb250ZXh0LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHBpZWNlcyBvZiB0aGUgY29kZWJhc2UgYXJlIHJlbGV2YW50LiBCYXNlZCBvbiB3aGF0IEkgaGF2ZSBoZXJlLCB0aGUgZnVuY3Rpb25zIG9mIGludGVyZXN0IGFyZSBgcGt0Z2VuX2lmX3dyaXRlYCwgYHBrdGdlbl90aHJlYWRfd3JpdGVgLCBhbmQgYHBnY3RybF93cml0ZWAsIGFsbCBoYW5kbGluZyBjb25maWd1cmF0aW9uLCBhbmQgdGhlbiB0aGUgYWN0dWFsIGdlbmVyYXRpb24gaGFwcGVucyBlaXRoZXIgaW4gYHBrdGdlbl94bWl0YCBvciBgcGt0Z2VuX3RocmVhZF93b3JrZXJgLlxuXG5UbyBzdW1tYXJpemUgdGhlIGZ1bmN0aW9ucyBhZ2FpbiwgaGVyZSdzIHRoZSBsaXN0OlxuKiAgIGBwa3RnZW5faWZfd3JpdGVgXG4qICAgYHBrdGdlbl90aHJlYWRfd3JpdGVgXG4qICAgYHBnY3RybF93cml0ZWBcbiogICBgcGt0Z2VuX3RocmVhZF93b3JrZXJgXG5cbkkgd2lsbCB0YWtlIGEgbW9tZW50IHRvIGRvdWJsZS1jaGVjayB0aGUgY29uZmlndXJhdGlvbiByZXF1aXJlbWVudHMgYmVjYXVzZSBJIGRvbid0IGxpa2UgYXNzdW1wdGlvbnMuIEkgc2VlIHRoYXQgYE5FVF9QS1RHRU5gIGlzIG5lZWRlZCwgd2hpY2ggaW4gdHVybiBkZXBlbmRzIG9uIGBJTkVUYCBhbmQgYFBST0NfRlNgLiBUaGFua2Z1bGx5LCBgSU5FVGAgYW5kIGBQUk9DX0ZTYCBhcmUgdXN1YWxseSBlbmFibGVkLiBTbyBpdCBsb29rcyBsaWtlIGBORVRfUEtUR0VOYCBpcyBzdWZmaWNpZW50LlxuXG5Ob3csIEknbSBjb25maWRlbnQgaW4gbXkgdW5kZXJzdGFuZGluZywgYW5kIEkgY2FuIHByb3ZpZGUgdGhlIHJlc3VsdHMgb2YgbXkgYW5hbHlzaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExMzI1LCJPdXRwdXRUb2tlbnMiOjExMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2NiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDA4OjM4OjMyLjkwMzU3ODg0NFoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzODg2MTQ4OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUX1BLVEdFTlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInBrdGdlbl9pZl93cml0ZVwiLFxuICAgIFwicGt0Z2VuX3RocmVhZF93cml0ZVwiLFxuICAgIFwicGdjdHJsX3dyaXRlXCIsXG4gICAgXCJwa3RnZW5fdGhyZWFkX3dvcmtlclwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIGluZmluaXRlIGxvb3Agb3Igb3V0LW9mLWJvdW5kcyBpc3N1ZSBpbiBwa3RnZW5fZmluYWxpemVfc2tiIHdoZW4gY2FsY3VsYXRpbmcgZnJhZ21lbnQgbGVuZ3Rocy4gVGhpcyBpcyByZWFjaGFibGUgYnkgY29uZmlndXJpbmcgcGt0Z2VuIHZpYSBwcm9jZnMgYW5kIHN0YXJ0aW5nIHBhY2tldCBnZW5lcmF0aW9uLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVF9QS1RHRU5cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJwa3RnZW5faWZfd3JpdGVcIixcbiAgICBcInBrdGdlbl90aHJlYWRfd3JpdGVcIixcbiAgICBcInBnY3RybF93cml0ZVwiLFxuICAgIFwicGt0Z2VuX3RocmVhZF93b3JrZXJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBpbmZpbml0ZSBsb29wIG9yIG91dC1vZi1ib3VuZHMgaXNzdWUgaW4gcGt0Z2VuX2ZpbmFsaXplX3NrYiB3aGVuIGNhbGN1bGF0aW5nIGZyYWdtZW50IGxlbmd0aHMuIFRoaXMgaXMgcmVhY2hhYmxlIGJ5IGNvbmZpZ3VyaW5nIHBrdGdlbiB2aWEgcHJvY2ZzIGFuZCBzdGFydGluZyBwYWNrZXQgZ2VuZXJhdGlvbi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflow6kf9n[1] Phase: Succeeded StartedAt: 2026-07-30 08:38:44 +0000 UTC FinishedAt: 2026-07-30 08:38:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6kf9n[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-30 08:38:44 +0000 UTC FinishedAt: 2026-07-30 08:38:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6kf9n[2] Phase: Succeeded StartedAt: 2026-07-30 08:38:44 +0000 UTC FinishedAt: 2026-07-30 12:33:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6kf9n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"57aa1718d5953dd532137d43b696c68545c2e0b3","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_PKTGEN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pktgen_if_write","pktgen_thread_write","pgctrl_write","pktgen_thread_worker"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"57aa1718d5953dd532137d43b696c68545c2e0b3","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_PKTGEN"],"series_id":"43a1a5d9-9180-4e6f-9abd-95458fda35a5","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-30 08:38:44 +0000 UTC FinishedAt: 2026-07-30 12:33:39 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"57aa1718d5953dd532137d43b696c68545c2e0b3","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_PKTGEN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pktgen_if_write","pktgen_thread_write","pgctrl_write","pktgen_thread_worker"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"57aa1718d5953dd532137d43b696c68545c2e0b3","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_PKTGEN"],"series_id":"43a1a5d9-9180-4e6f-9abd-95458fda35a5","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow6kf9n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"57aa1718d5953dd532137d43b696c68545c2e0b3","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_PKTGEN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pktgen_if_write","pktgen_thread_write","pgctrl_write","pktgen_thread_worker"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"57aa1718d5953dd532137d43b696c68545c2e0b3","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_PKTGEN"],"series_id":"43a1a5d9-9180-4e6f-9abd-95458fda35a5","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-30 08:38:44 +0000 UTC FinishedAt: 2026-07-30 08:38:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6kf9n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"57aa1718d5953dd532137d43b696c68545c2e0b3","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_PKTGEN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pktgen_if_write","pktgen_thread_write","pgctrl_write","pktgen_thread_worker"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"57aa1718d5953dd532137d43b696c68545c2e0b3","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_PKTGEN"],"series_id":"43a1a5d9-9180-4e6f-9abd-95458fda35a5","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-30 08:38:44 +0000 UTC FinishedAt: 2026-07-30 08:38:50 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"57aa1718d5953dd532137d43b696c68545c2e0b3","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_PKTGEN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},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-workflow6kf9n/series-workflow6kf9n-convert-artifact-1169625372/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6kf9n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"57aa1718d5953dd532137d43b696c68545c2e0b3","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_PKTGEN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pktgen_if_write","pktgen_thread_write","pgctrl_write","pktgen_thread_worker"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"57aa1718d5953dd532137d43b696c68545c2e0b3","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_PKTGEN"],"series_id":"43a1a5d9-9180-4e6f-9abd-95458fda35a5","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-30 08:38:54 +0000 UTC FinishedAt: 2026-07-30 09:00:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6kf9n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"57aa1718d5953dd532137d43b696c68545c2e0b3","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_PKTGEN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pktgen_if_write","pktgen_thread_write","pgctrl_write","pktgen_thread_worker"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"57aa1718d5953dd532137d43b696c68545c2e0b3","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_PKTGEN"],"series_id":"43a1a5d9-9180-4e6f-9abd-95458fda35a5","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-30 08:38:54 +0000 UTC FinishedAt: 2026-07-30 09:00:58 +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:*a7e0c663-44b5-4bd8-8997-df05810df307,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-workflow6kf9n/series-workflow6kf9n-convert-artifact-1169625372/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": "d5498bba-c51b-4b40-a6aa-8d2e6d66fa8a", "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-workflow6kf9n/series-workflow6kf9n-build-action-3294738250/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6kf9n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"57aa1718d5953dd532137d43b696c68545c2e0b3","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_PKTGEN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pktgen_if_write","pktgen_thread_write","pgctrl_write","pktgen_thread_worker"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"57aa1718d5953dd532137d43b696c68545c2e0b3","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_PKTGEN"],"series_id":"43a1a5d9-9180-4e6f-9abd-95458fda35a5","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-30 08:38:54 +0000 UTC FinishedAt: 2026-07-30 09:00:47 +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:*a7e0c663-44b5-4bd8-8997-df05810df307,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-workflow6kf9n/series-workflow6kf9n-convert-artifact-1169625372/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": "d5498bba-c51b-4b40-a6aa-8d2e6d66fa8a", "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-workflow6kf9n/series-workflow6kf9n-build-action-3294738250/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6kf9n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"57aa1718d5953dd532137d43b696c68545c2e0b3","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_PKTGEN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pktgen_if_write","pktgen_thread_write","pgctrl_write","pktgen_thread_worker"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"57aa1718d5953dd532137d43b696c68545c2e0b3","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_PKTGEN"],"series_id":"43a1a5d9-9180-4e6f-9abd-95458fda35a5","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-30 09:00:58 +0000 UTC FinishedAt: 2026-07-30 09:00:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6kf9n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"57aa1718d5953dd532137d43b696c68545c2e0b3","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_PKTGEN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pktgen_if_write","pktgen_thread_write","pgctrl_write","pktgen_thread_worker"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"57aa1718d5953dd532137d43b696c68545c2e0b3","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_PKTGEN"],"series_id":"43a1a5d9-9180-4e6f-9abd-95458fda35a5","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-30 09:00:59 +0000 UTC FinishedAt: 2026-07-30 09:00:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6kf9n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"57aa1718d5953dd532137d43b696c68545c2e0b3","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_PKTGEN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pktgen_if_write","pktgen_thread_write","pgctrl_write","pktgen_thread_worker"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"57aa1718d5953dd532137d43b696c68545c2e0b3","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_PKTGEN"],"series_id":"43a1a5d9-9180-4e6f-9abd-95458fda35a5","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-30 09:00:59 +0000 UTC FinishedAt: 2026-07-30 09:01:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6kf9n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"57aa1718d5953dd532137d43b696c68545c2e0b3","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_PKTGEN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pktgen_if_write","pktgen_thread_write","pgctrl_write","pktgen_thread_worker"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"57aa1718d5953dd532137d43b696c68545c2e0b3","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_PKTGEN"],"series_id":"43a1a5d9-9180-4e6f-9abd-95458fda35a5","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-30 09:00:59 +0000 UTC FinishedAt: 2026-07-30 09:01:24 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"57aa1718d5953dd532137d43b696c68545c2e0b3","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_PKTGEN"],"series_id":"43a1a5d9-9180-4e6f-9abd-95458fda35a5","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},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-workflow6kf9n/series-workflow6kf9n-convert-artifact-2608632411/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6kf9n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"57aa1718d5953dd532137d43b696c68545c2e0b3","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_PKTGEN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pktgen_if_write","pktgen_thread_write","pgctrl_write","pktgen_thread_worker"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"57aa1718d5953dd532137d43b696c68545c2e0b3","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_PKTGEN"],"series_id":"43a1a5d9-9180-4e6f-9abd-95458fda35a5","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-30 09:01:38 +0000 UTC FinishedAt: 2026-07-30 09:03:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6kf9n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"57aa1718d5953dd532137d43b696c68545c2e0b3","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_PKTGEN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pktgen_if_write","pktgen_thread_write","pgctrl_write","pktgen_thread_worker"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"57aa1718d5953dd532137d43b696c68545c2e0b3","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_PKTGEN"],"series_id":"43a1a5d9-9180-4e6f-9abd-95458fda35a5","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-30 09:01:38 +0000 UTC FinishedAt: 2026-07-30 09:03:44 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*d5498bba-c51b-4b40-a6aa-8d2e6d66fa8a,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-workflow6kf9n/series-workflow6kf9n-build-action-3294738250/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-workflow6kf9n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"57aa1718d5953dd532137d43b696c68545c2e0b3","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_PKTGEN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pktgen_if_write","pktgen_thread_write","pgctrl_write","pktgen_thread_worker"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"57aa1718d5953dd532137d43b696c68545c2e0b3","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_PKTGEN"],"series_id":"43a1a5d9-9180-4e6f-9abd-95458fda35a5","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-30 09:03:54 +0000 UTC FinishedAt: 2026-07-30 09:03:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6kf9n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"57aa1718d5953dd532137d43b696c68545c2e0b3","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_PKTGEN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pktgen_if_write","pktgen_thread_write","pgctrl_write","pktgen_thread_worker"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"57aa1718d5953dd532137d43b696c68545c2e0b3","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_PKTGEN"],"series_id":"43a1a5d9-9180-4e6f-9abd-95458fda35a5","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-30 09:03:54 +0000 UTC FinishedAt: 2026-07-30 09:03:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6kf9n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"57aa1718d5953dd532137d43b696c68545c2e0b3","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_PKTGEN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pktgen_if_write","pktgen_thread_write","pgctrl_write","pktgen_thread_worker"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"57aa1718d5953dd532137d43b696c68545c2e0b3","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_PKTGEN"],"series_id":"43a1a5d9-9180-4e6f-9abd-95458fda35a5","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-30 09:03:54 +0000 UTC FinishedAt: 2026-07-30 09:28:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6kf9n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"57aa1718d5953dd532137d43b696c68545c2e0b3","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_PKTGEN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pktgen_if_write","pktgen_thread_write","pgctrl_write","pktgen_thread_worker"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"57aa1718d5953dd532137d43b696c68545c2e0b3","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_PKTGEN"],"series_id":"43a1a5d9-9180-4e6f-9abd-95458fda35a5","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-30 09:03:54 +0000 UTC FinishedAt: 2026-07-30 09:28:06 +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:*a7e0c663-44b5-4bd8-8997-df05810df307,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-workflow6kf9n/series-workflow6kf9n-convert-artifact-2608632411/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": "9cf442b0-04e6-49bd-b0a0-4c83e24369a5", "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-workflow6kf9n/series-workflow6kf9n-build-action-2645571839/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6kf9n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"57aa1718d5953dd532137d43b696c68545c2e0b3","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_PKTGEN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pktgen_if_write","pktgen_thread_write","pgctrl_write","pktgen_thread_worker"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"57aa1718d5953dd532137d43b696c68545c2e0b3","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_PKTGEN"],"series_id":"43a1a5d9-9180-4e6f-9abd-95458fda35a5","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-30 09:03:54 +0000 UTC FinishedAt: 2026-07-30 09:27:54 +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:*a7e0c663-44b5-4bd8-8997-df05810df307,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-workflow6kf9n/series-workflow6kf9n-convert-artifact-2608632411/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": "9cf442b0-04e6-49bd-b0a0-4c83e24369a5", "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-workflow6kf9n/series-workflow6kf9n-build-action-2645571839/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6kf9n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"57aa1718d5953dd532137d43b696c68545c2e0b3","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_PKTGEN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pktgen_if_write","pktgen_thread_write","pgctrl_write","pktgen_thread_worker"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"57aa1718d5953dd532137d43b696c68545c2e0b3","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_PKTGEN"],"series_id":"43a1a5d9-9180-4e6f-9abd-95458fda35a5","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-30 09:28:06 +0000 UTC FinishedAt: 2026-07-30 09:28:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6kf9n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"57aa1718d5953dd532137d43b696c68545c2e0b3","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_PKTGEN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pktgen_if_write","pktgen_thread_write","pgctrl_write","pktgen_thread_worker"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"57aa1718d5953dd532137d43b696c68545c2e0b3","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_PKTGEN"],"series_id":"43a1a5d9-9180-4e6f-9abd-95458fda35a5","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-30 09:28:06 +0000 UTC FinishedAt: 2026-07-30 09:28:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6kf9n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"57aa1718d5953dd532137d43b696c68545c2e0b3","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_PKTGEN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pktgen_if_write","pktgen_thread_write","pgctrl_write","pktgen_thread_worker"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"57aa1718d5953dd532137d43b696c68545c2e0b3","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_PKTGEN"],"series_id":"43a1a5d9-9180-4e6f-9abd-95458fda35a5","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-30 09:28:06 +0000 UTC FinishedAt: 2026-07-30 09:30:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6kf9n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"57aa1718d5953dd532137d43b696c68545c2e0b3","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_PKTGEN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pktgen_if_write","pktgen_thread_write","pgctrl_write","pktgen_thread_worker"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"57aa1718d5953dd532137d43b696c68545c2e0b3","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_PKTGEN"],"series_id":"43a1a5d9-9180-4e6f-9abd-95458fda35a5","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-30 09:28:07 +0000 UTC FinishedAt: 2026-07-30 09:29:51 +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:*9cf442b0-04e6-49bd-b0a0-4c83e24369a5,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-workflow6kf9n/series-workflow6kf9n-build-action-2645571839/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-workflow6kf9n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"57aa1718d5953dd532137d43b696c68545c2e0b3","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_PKTGEN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pktgen_if_write","pktgen_thread_write","pgctrl_write","pktgen_thread_worker"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"57aa1718d5953dd532137d43b696c68545c2e0b3","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_PKTGEN"],"series_id":"43a1a5d9-9180-4e6f-9abd-95458fda35a5","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-30 09:30:03 +0000 UTC FinishedAt: 2026-07-30 12:33:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6kf9n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"57aa1718d5953dd532137d43b696c68545c2e0b3","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_PKTGEN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pktgen_if_write","pktgen_thread_write","pgctrl_write","pktgen_thread_worker"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"57aa1718d5953dd532137d43b696c68545c2e0b3","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_PKTGEN"],"series_id":"43a1a5d9-9180-4e6f-9abd-95458fda35a5","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-30 09:30:03 +0000 UTC FinishedAt: 2026-07-30 09:30:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6kf9n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"57aa1718d5953dd532137d43b696c68545c2e0b3","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_PKTGEN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pktgen_if_write","pktgen_thread_write","pgctrl_write","pktgen_thread_worker"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"57aa1718d5953dd532137d43b696c68545c2e0b3","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_PKTGEN"],"series_id":"43a1a5d9-9180-4e6f-9abd-95458fda35a5","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-30 09:30:03 +0000 UTC FinishedAt: 2026-07-30 09:30:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6kf9n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"57aa1718d5953dd532137d43b696c68545c2e0b3","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_PKTGEN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pktgen_if_write","pktgen_thread_write","pgctrl_write","pktgen_thread_worker"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"57aa1718d5953dd532137d43b696c68545c2e0b3","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_PKTGEN"],"series_id":"43a1a5d9-9180-4e6f-9abd-95458fda35a5","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-30 09:30:04 +0000 UTC FinishedAt: 2026-07-30 12:33:39 +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":["pktgen_if_write","pktgen_thread_write","pgctrl_write","pktgen_thread_worker"],"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:*d5498bba-c51b-4b40-a6aa-8d2e6d66fa8a,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*9cf442b0-04e6-49bd-b0a0-4c83e24369a5,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-workflow6kf9n/series-workflow6kf9n-build-action-3294738250/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-workflow6kf9n/series-workflow6kf9n-build-action-2645571839/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow6kf9n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"57aa1718d5953dd532137d43b696c68545c2e0b3","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_PKTGEN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pktgen_if_write","pktgen_thread_write","pgctrl_write","pktgen_thread_worker"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"57aa1718d5953dd532137d43b696c68545c2e0b3","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_PKTGEN"],"series_id":"43a1a5d9-9180-4e6f-9abd-95458fda35a5","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-30 09:30:04 +0000 UTC FinishedAt: 2026-07-30 09:30:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6kf9n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"57aa1718d5953dd532137d43b696c68545c2e0b3","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_PKTGEN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pktgen_if_write","pktgen_thread_write","pgctrl_write","pktgen_thread_worker"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"57aa1718d5953dd532137d43b696c68545c2e0b3","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_PKTGEN"],"series_id":"43a1a5d9-9180-4e6f-9abd-95458fda35a5","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-30 09:30:04 +0000 UTC FinishedAt: 2026-07-30 09:30:08 +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":["pktgen_if_write","pktgen_thread_write","pgctrl_write","pktgen_thread_worker"],"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-workflow6kf9n/series-workflow6kf9n-convert-artifact-3654332756/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6kf9n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"57aa1718d5953dd532137d43b696c68545c2e0b3","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_PKTGEN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pktgen_if_write","pktgen_thread_write","pgctrl_write","pktgen_thread_worker"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"57aa1718d5953dd532137d43b696c68545c2e0b3","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_PKTGEN"],"series_id":"43a1a5d9-9180-4e6f-9abd-95458fda35a5","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-30 09:30:04 +0000 UTC FinishedAt: 2026-07-30 09:30:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6kf9n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"57aa1718d5953dd532137d43b696c68545c2e0b3","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_PKTGEN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pktgen_if_write","pktgen_thread_write","pgctrl_write","pktgen_thread_worker"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"57aa1718d5953dd532137d43b696c68545c2e0b3","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_PKTGEN"],"series_id":"43a1a5d9-9180-4e6f-9abd-95458fda35a5","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-30 09:30:17 +0000 UTC FinishedAt: 2026-07-30 12:33:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6kf9n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"57aa1718d5953dd532137d43b696c68545c2e0b3","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_PKTGEN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pktgen_if_write","pktgen_thread_write","pgctrl_write","pktgen_thread_worker"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"57aa1718d5953dd532137d43b696c68545c2e0b3","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_PKTGEN"],"series_id":"43a1a5d9-9180-4e6f-9abd-95458fda35a5","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-30 09:30:17 +0000 UTC FinishedAt: 2026-07-30 12:33:29 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*d5498bba-c51b-4b40-a6aa-8d2e6d66fa8a,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*9cf442b0-04e6-49bd-b0a0-4c83e24369a5,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-workflow6kf9n/series-workflow6kf9n-build-action-3294738250/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-workflow6kf9n/series-workflow6kf9n-build-action-2645571839/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-workflow6kf9n/series-workflow6kf9n-convert-artifact-3654332756/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,}