Name: series-workflow9fjdm Phase: Succeeded StartedAt: 2026-08-24 13:44:26 +0000 UTC FinishedAt: 2026-08-24 16:22:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9fjdm[0] Phase: Succeeded StartedAt: 2026-08-24 13:44:26 +0000 UTC FinishedAt: 2026-08-24 13:48:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9fjdm[0].run-triage Phase: Succeeded StartedAt: 2026-08-24 13:44:26 +0000 UTC FinishedAt: 2026-08-24 13:48:20 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "db2ddb87143519e20a95aa36c60b36107b736a58", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "DRM_CIRRUS_QEMU" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "db2ddb87143519e20a95aa36c60b36107b736a58", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "DRM_CIRRUS_QEMU" ], "series_id": "655d3526-270b-4af4-acd2-6005a304fdbb" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "cirrus_pci_probe" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI0IDEzOjQ1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0RSTV9DSVJSVVNfUUVNVSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2NpcnJ1c19wY2lfcHJvYmUmIzM0OwogIF0sCiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgc2ltcGxlIGxlbmd0aCBjaGVjayBmb3IgYSBQQ0kgcmVzb3VyY2UgdG8gZW5zdXJlIGl0IG1hdGNoZXMgdGhlIGV4cGVjdGVkIENJUlJVU19WUkFNX1NJWkUgYmVmb3JlIGNhbGxpbmcgZGV2bV9pb3JlbWFwLiBUaGlzIHByZXZlbnRzIHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzIHRvIHRoZSBtYXBwZWQgVlJBTSByZWdpb24gaWYgdGhlIGFjdHVhbCByZXNvdXJjZSBsZW5ndGggaXMgc21hbGxlciB0aGFuIGV4cGVjdGVkLiBPdXQtb2YtYm91bmRzIGFjY2Vzc2VzIGFyZSBlZmZlY3RpdmVseSBkZXRlY3RlZCBieSBLQVNBTi4gVGhlcmUgaXMgbm8gaW50cm9kdWN0aW9uIG9yIGV4cG9zdXJlIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLCBpbmZvLWxlYWtzIHRvIHVzZXIgc3BhY2UsIG9yIHVuaW5pdGlhbGl6ZWQgc3RydWN0dXJlIGZpZWxkcywgd2hpY2ggYXJlIHRoZSBwcmltYXJ5IHRhcmdldHMgZm9yIEtNU0FOLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgY2hlY2sgZm9yIHRoZSBWUkFNIHNpemUgaW4gdGhlIFBDSSBwcm9iZSBmdW5jdGlvbiBvZiB0aGUgUUVNVSBDaXJydXMgVkdBIGRyaXZlci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgZHJpdmVyIHRoYXQgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoUUVNVSkuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjQgMTM6NDU8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA4YmZlNDM1OTMxNTgxZGI5NzFjNTk0ODhkMjI0ZThkODljM2FlY2ZjXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBBdWcgMjQgMTM6NDU6NDcgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYyBiL2RyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmNcbmluZGV4IDA3NTIyMWI0MzFkMzcuLjcwYzk5NTAyNWY1MDggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jXG5AQCAtNjAyLDYgJiM0Mzs2MDIsOSBAQCBzdGF0aWMgaW50IGNpcnJ1c19wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4gXG4gXHRkZXYgPSBcdTAwMjZjaXJydXMtXHUwMDNlZGV2O1xuIFxuJiM0MztcdGlmIChwY2lfcmVzb3VyY2VfbGVuKHBkZXYsIDApICE9IENJUlJVU19WUkFNX1NJWkUpXG4mIzQzO1x0XHRyZXR1cm4gLUVOT0RFVjtcbiYjNDM7XG4gXHRjaXJydXMtXHUwMDNldnJhbSA9IGRldm1faW9yZW1hcChcdTAwMjZwZGV2LVx1MDAzZWRldiwgcGNpX3Jlc291cmNlX3N0YXJ0KHBkZXYsIDApLFxuIFx0XHRcdFx0ICAgIHBjaV9yZXNvdXJjZV9sZW4ocGRldiwgMCkpO1xuIFx0aWYgKGNpcnJ1cy1cdTAwM2V2cmFtID09IE5VTEwpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjQgMTM6NDU8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0RSTV9DSVJSVVNfUUVNVSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2NpcnJ1c19wY2lfcHJvYmUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIGNoZWNrIGZvciB0aGUgVlJBTSBzaXplIGluIHRoZSBQQ0kgcHJvYmUgZnVuY3Rpb24gb2YgdGhlIFFFTVUgQ2lycnVzIFZHQSBkcml2ZXIuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIGRyaXZlciB0aGF0IGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKFFFTVUpLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgOGJmZTQzNTkzMTU4MWRiOTcxYzU5NDg4ZDIyNGU4ZDg5YzNhZWNmYwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gQXVnIDI0IDEzOjQ1OjQ3IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYyBiL2RyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmMKaW5kZXggMDc1MjIxYjQzMWQzNy4uNzBjOTk1MDI1ZjUwOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jCkBAIC02MDIsNiAmIzQzOzYwMiw5IEBAIHN0YXRpYyBpbnQgY2lycnVzX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwKIAogCWRldiA9ICZhbXA7Y2lycnVzLSZndDtkZXY7CiAKJiM0MzsJaWYgKHBjaV9yZXNvdXJjZV9sZW4ocGRldiwgMCkgIT0gQ0lSUlVTX1ZSQU1fU0laRSkKJiM0MzsJCXJldHVybiAtRU5PREVWOwomIzQzOwogCWNpcnJ1cy0mZ3Q7dnJhbSA9IGRldm1faW9yZW1hcCgmYW1wO3BkZXYtJmd0O2RldiwgcGNpX3Jlc291cmNlX3N0YXJ0KHBkZXYsIDApLAogCQkJCSAgICBwY2lfcmVzb3VyY2VfbGVuKHBkZXYsIDApKTsKIAlpZiAoY2lycnVzLSZndDt2cmFtID09IE5VTEwpCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI0IDEzOjQ1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwNDIKCQkJCQkJCW91dHB1dDogODEKCQkJCQkJCXRob3VnaHRzOiAxMzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgQ2lycnVzIFZHQSBEcml2ZXIgQ2hhbmdlKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciB0aGUgQ2lycnVzIFZHQSBkcml2ZXIgaW4gUUVNVS4gVGhleSYjMzk7dmUgYWRkZWQgYSByZXNvdXJjZSBsZW5ndGggY2hlY2sgd2l0aGluIGBjaXJydXNfcGNpX3Byb2JlYCBpbiBgZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuY2AuIFNwZWNpZmljYWxseSwgdGhleSYjMzk7cmUgdmVyaWZ5aW5nIHRoYXQgdGhlIFBDSSByZXNvdXJjZSBsZW5ndGggbWF0Y2hlcyBgQ0lSUlVTX1ZSQU1fU0laRWAuIFRoaXMgaXMgYSBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkIGZ1bmN0aW9uYWwgY2hhbmdlLCBhaW1lZCBhdCBlbnN1cmluZyB0aGUgZHJpdmVyIHdvcmtzIGNvcnJlY3RseSB3aXRoIHRoZSBleHBlY3RlZCB2aWRlbyBSQU0gYWxsb2NhdGlvbi4gR2l2ZW4gdGhhdCBpdCYjMzk7cyBhIGRyaXZlciBmb3IgUUVNVSYjMzk7cyBDaXJydXMgVkdBLCBpdHMgcmVhY2hhYmlsaXR5IGlzIGRlZmluaXRlbHkgbGltaXRlZCB0byB2aXJ0dWFsaXplZCBzZXR1cHMsIHdoaWNoIGlzIGltcG9ydGFudCB0byBrZWVwIGluIG1pbmQuCgpUbyBldmFsdWF0ZSB0aGUgaW1wYWN0IHByb3Blcmx5LCBJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgY2hlY2sgdGhlIEtjb25maWcgZm9yIHRoaXMgZHJpdmVyLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGNvbmZpZ3VyYXRpb25zIGVuYWJsZSBpdCBhbmQgdGhlcmVmb3JlIHdoZXJlIHRoaXMgY2hhbmdlIHdpbGwgYWN0dWFsbHkgYmUgcmVsZXZhbnQuIEFueSBwb3RlbnRpYWwgcmVncmVzc2lvbnMgYXJlIGxpa2VseSBsaW1pdGVkIHRvIHRob3NlIHNjZW5hcmlvcywgc28gdW5kZXJzdGFuZGluZyB0aGUgY29uZmlndXJhdGlvbiBjb250ZXh0IGlzIGtleSB0byBhc3Nlc3NpbmcgdGhlIHJpc2sgYW5kIGltcGFjdCBvZiB0aGlzIG1vZGlmaWNhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNCAxMzo0NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjaXJydXNfcGNpX3Byb2JlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jPTU2NT1zdGF0aWMgY29uc3Qgc3RydWN0IGRybV9kcml2ZXIgY2lycnVzX2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jLTU3Ny1cbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmM6NTc4OnN0YXRpYyBpbnQgY2lycnVzX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmMtNTc5LVx0XHRcdCAgICBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KVxuLS1cbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmM9NjY2PXN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBjaXJydXNfcGNpX2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jLTY2OC1cdC5pZF90YWJsZSA9IHBjaWlkbGlzdCxcbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmM6NjY5Olx0LnByb2JlID0gY2lycnVzX3BjaV9wcm9iZSxcbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmMtNjcwLVx0LnJlbW92ZSA9IGNpcnJ1c19wY2lfcmVtb3ZlLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI0IDEzOjQ1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBEUk1fQ0lSUlVTX1FFTVUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2dwdS9kcm0vdGlueS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvZ3B1L2RybS90aW55L0tjb25maWc9Mjc9Y29uZmlnIERSTV9CT0NIU1xuLS1cbmRyaXZlcnMvZ3B1L2RybS90aW55L0tjb25maWctMzgtXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9LY29uZmlnOjM5OmNvbmZpZyBEUk1fQ0lSUlVTX1FFTVVcbmRyaXZlcnMvZ3B1L2RybS90aW55L0tjb25maWctNDAtXHR0cmlzdGF0ZSBcJiMzNDtDaXJydXMgZHJpdmVyIGZvciBRRU1VIGVtdWxhdGVkIGRldmljZVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI0IDEzOjQ1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI4NTIKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSBkZXBlbmRlbmNpZXMgb2YgYERSTV9DSVJSVVNfUUVNVWAuCgoqKkFuYWx5emluZyBgRFJNX0NJUlJVU19RRU1VYCBEZXBlbmRlbmNpZXMqKgoKT2theSwgc28gSSBuZWVkIHRvIGRpdmUgaW50byB0aGUgZGVwZW5kZW5jaWVzIG9mIGBEUk1fQ0lSUlVTX1FFTVVgLiBGaXJzdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBpdCBhY3R1YWxseSAqZG9lcyogd2l0aGluIHRoZSBncmVhdGVyIERSTSBlY29zeXN0ZW0uIEl0JiMzOTtzIG9idmlvdXNseSByZWxhdGVkIHRvIHRoZSBDaXJydXMgbG9naWMgdmlydHVhbCBncmFwaGljcyBhZGFwdGVyLCBhbmQgYmVpbmcgY291cGxlZCB3aXRoIFFFTVUgc3VnZ2VzdHMgdGhpcyBpcyBhIHZpcnR1YWxpemF0aW9uLXNwZWNpZmljIGRyaXZlci4gVGhhdCBtZWFucyBpdOKAmXMgbGlrZWx5IGludGVyYWN0aW5nIHdpdGggdGhlIGhvc3QmIzM5O3MgdmlydHVhbCBtYWNoaW5lIGluZnJhc3RydWN0dXJlIOKAkyBwcm9iYWJseSB1c2luZyBLVk0gb3Igc29tZXRoaW5nIHNpbWlsYXIuCgpJJiMzOTtsbCBuZWVkIHRvIGV4YW1pbmUgdGhlIGtlcm5lbCBjb2RlLCBzcGVjaWZpY2FsbHkgdGhlIHJlbGV2YW50IG1ha2VmaWxlcyBhbmQgY29uZmlndXJhdGlvbiBmaWxlcy4gSSBleHBlY3QgaXQgdG8gZGVwZW5kIG9uIHRoZSBjb3JlIERSTSAoRGlyZWN0IFJlbmRlcmluZyBNYW5hZ2VyKSBmcmFtZXdvcmssIG9mIGNvdXJzZS4gQmV5b25kIHRoYXQsIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoaWNoIG90aGVyIERSTSBjb21wb25lbnRzLCBpZiBhbnksIGl0IGludGVyZmFjZXMgd2l0aDsgaXMgaXQgdXNpbmcgdGhlIFRUTSAoVHJhbnNsYXRpb24gVGFibGUgTWFuYWdlciksIEdFTSAoR3JhcGhpY3MgRXhlY3V0aW9uIE1hbmFnZXIpLCBvciBLTVMgKEtlcm5lbCBNb2RlIFNldHRpbmcpIGRpcmVjdGx5PyBPciBwZXJoYXBzIGl0IGhhcyBpdHMgb3duLCBzcGVjaWFsaXplZCBtZW1vcnkgbWFuYWdlbWVudCBsb2dpYy4KClRoZXJlIGNvdWxkIGJlIGNvbmRpdGlvbmFsIGRlcGVuZGVuY2llcyBiYXNlZCBvbiB0aGUgaG9zdCBjb25maWd1cmF0aW9uIG9yIHRoZSBzcGVjaWZpYyBRRU1VIHNldHVwLiBJdCB3b3VsZCBiZSBpbXBvcnRhbnQgdG8gY2hlY2sgaWYgdGhlcmUgYXJlIGFueSBzcGVjaWZpYyBRRU1VLXJlbGF0ZWQgaGVhZGVycyBvciBsaWJyYXJpZXMgcmVxdWlyZWQgZm9yIGNvbXBpbGF0aW9uLiBQbHVzLCBhbSBJIGRlYWxpbmcgd2l0aCBhIHVzZXItc3BhY2UgZHJpdmVyIG9yIGEga2VybmVsLXNwYWNlIGNvbXBvbmVudD8gVGhhdCBhZmZlY3RzIHRoZSBsaW5raW5nIGFuZCBtb2R1bGUgZGVwZW5kZW5jaWVzIHNpZ25pZmljYW50bHkuCgpJ4oCZbGwgbmVlZCB0byB0cmFjZSB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGFzIHdlbGwgdG8gdW5kZXJzdGFuZCB0aGUgZGlmZmVyZW50IGZlYXR1cmVzIHRoYXQgY2FuIGJlIGVuYWJsZWQgYW5kIHRoZWlyIGFzc29jaWF0ZWQgZGVwZW5kZW5jaWVzLiBUaGlzIGlzIGltcG9ydGFudCB0byBlbnN1cmUgSSBoYXZlIGEgY29tcGxldGUgcGljdHVyZSBvZiB0aGUgYnVpbGQgcmVxdWlyZW1lbnRzLiBJIHNob3VsZCBwcm9iYWJseSBhbHNvIGNoZWNrIHRoZSBidWlsZCBsb2dzIHRvIGdldCBhbiBpZGVhIG9mIHRoZSBjb21waWxhdGlvbiBvcHRpb25zIGFuZCBwb3RlbnRpYWwgbGluay10aW1lIGRlcGVuZGVuY2llcy4gRmluYWxseSwgdGhlIGRvY3VtZW50YXRpb24gYW5kIGFueSBtYWlsaW5nIGxpc3QgYXJjaGl2ZXMgd291bGQgYmUgbXkgbmV4dCBzdGVwIGlmIEkgaGl0IGFueSByb2FkYmxvY2tzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI0IDEzOjQ3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9ncHUvZHJtL3RpbnkvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDM5LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgMzk6XHRjb25maWcgRFJNX0NJUlJVU19RRU1VXG4gIDQwOlx0XHR0cmlzdGF0ZSBcJiMzNDtDaXJydXMgZHJpdmVyIGZvciBRRU1VIGVtdWxhdGVkIGRldmljZVwmIzM0O1xuICA0MTpcdFx0ZGVwZW5kcyBvbiBEUk0gXHUwMDI2XHUwMDI2IFBDSVxuICA0MjpcdFx0c2VsZWN0IERSTV9DTElFTlRfU0VMRUNUSU9OXG4gIDQzOlx0XHRzZWxlY3QgRFJNX0tNU19IRUxQRVJcbiAgNDQ6XHRcdHNlbGVjdCBEUk1fR0VNX1NITUVNX0hFTFBFUlxuICA0NTpcdFx0aGVscFxuICA0NjpcdFx0IFRoaXMgaXMgYSBLTVMgZHJpdmVyIGZvciBlbXVsYXRlZCBjaXJydXMgZGV2aWNlIGluIHFlbXUuXG4gIDQ3Olx0XHQgSXQgaXMgKk5PVCogaW50ZW5kZWQgZm9yIHJlYWwgY2lycnVzIGRldmljZXMuIFRoaXMgcmVxdWlyZXNcbiAgNDg6XHRcdCB0aGUgbW9kZXNldHRpbmcgdXNlcnNwYWNlIFgub3JnIGRyaXZlci5cbiAgNDk6XHRcbiAgNTA6XHRcdCBDaXJydXMgaXMgb2Jzb2xldGUsIHRoZSBoYXJkd2FyZSB3YXMgZGVzaWduZWQgaW4gdGhlIDkwaWVzXG4gIDUxOlx0XHQgYW5kIGNhbiYjMzk7dCBrZWVwIHVwIHdpdGggdG9kYXlzIG5lZWRzLiAgTW9yZSBiYWNrZ3JvdW5kOlxuICA1MjpcdFx0IGh0dHBzOi8vd3d3LmtyYXhlbC5vcmcvYmxvZy8yMDE0LzEwL3FlbXUtdXNpbmctY2lycnVzLWNvbnNpZGVyZWQtaGFybWZ1bC9cbiAgNTM6XHRcbiAgNTQ6XHRcdCBCZXR0ZXIgYWx0ZXJuYXRpdmVzIGFyZTpcbiAgNTU6XHRcdCAgIC0gc3RkdmdhIChEUk1fQk9DSFMsIHFlbXUgLXZnYSBzdGQsIGRlZmF1bHQgaW4gcWVtdSAyLjImIzQzOylcbiAgNTY6XHRcdCAgIC0gcXhsIChEUk1fUVhMLCBxZW11IC12Z2EgcXhsLCB3b3JrcyBiZXN0IHdpdGggc3BpY2UpXG4gIDU3Olx0XHQgICAtIHZpcnRpbyAoRFJNX1ZJUlRJT19HUFUpLCBxZW11IC12Z2EgdmlydGlvKVxuICA1ODpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI0IDEzOjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM2NTYKCQkJCQkJCW91dHB1dDogOTYKCQkJCQkJCXRob3VnaHRzOiA1NDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIGBjaXJydXNfcGNpX3Byb2JlYCBDaGFuZ2UgZm9yIEZ1enppbmcqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gVGhlIGNvcmUgY2hhbmdlIHJldm9sdmVzIGFyb3VuZCB0aGUgYGNpcnJ1c19wY2lfcHJvYmVgIGZ1bmN0aW9uIHdpdGhpbiB0aGUgYERSTV9DSVJSVVNfUUVNVWAgZHJpdmVyLCB3aGljaCwgaW1wb3J0YW50bHksIGRlcGVuZHMgb24gYm90aCBgRFJNYCBhbmQgYFBDSWAuIFRoaXMgaXMgYSBQQ0kgcHJvYmUgZnVuY3Rpb24sIGFuZCB0aG9zZSBhcmUgZXhlY3V0ZWQgZHVyaW5nIGRldmljZSBkZXRlY3Rpb24uIENydWNpYWxseSwgdGhlIENpcnJ1cyBWR0EgZGV2aWNlIGlzIHNvbWV0aGluZyB0aGF0ICpjYW4qIGJlIGFkZGVkIGFuZCBlbXVsYXRlZCB3aXRoaW4gUUVNVS4gVGhhdCBpbW1lZGlhdGVseSBtYWtlcyB0aGlzIGEgcG90ZW50aWFsbHkgaW50ZXJlc3RpbmcgdGFyZ2V0IGZvciBmdXp6aW5nLCBiZWNhdXNlIGl0IG1lYW5zIGl0ICppcyogcmVhY2hhYmxlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuCgpJbml0aWFsbHksIEkgaGFkIGEgcXVpY2sgdGhvdWdodCBhYm91dCB3aGV0aGVyIHRoaXMgd2FzIGEgaG90IHBhdGgsIGJ1dCBpdCYjMzk7cyBub3QuIFByb2JlIGZ1bmN0aW9ucyBhcmUgY2FsbGVkIGR1cmluZyBkZXZpY2UgaW5pdGlhbGl6YXRpb24sIHNvIHRoZSBjb25jZXJuIGlzIGlycmVsZXZhbnQuCgpUaGUgcHJvbXB0LCBvZiBjb3Vyc2UsIHJhaXNlcyByZWQgZmxhZ3MuIEl0IG1lbnRpb25zIGV4Y2x1ZGluZyBwYXRocyB1bnJlYWNoYWJsZSBpbiBRRU1VLiBIb3dldmVyLCB0aGlzIGlzIHByZWNpc2VseSBhIFFFTVUtZW11bGF0ZWQgZGV2aWNlIGRyaXZlciwgc28gdGhlIHJ1bGUgZG9lc24mIzM5O3QgYXBwbHkuIEl0JiMzOTtzIGEgYC5wcm9iZWAgY2FsbGJhY2ssIG5vdCBhIGAucmVtb3ZlYCBvciBgLnNodXRkb3duYCwgc28gdGhlIGV4Y2x1c2lvbnMgZm9yIHRlYXJkb3duIGNhbGxiYWNrcyBkb24mIzM5O3QgYXBwbHkuCgpJIG5lZWRlZCB0byBtYWtlIGEgcXVpY2sgY2hlY2suIEkmIzM5O20gbm90aW5nIHRoYXQgYGNpcnJ1c19wY2lfcHJvYmVgIGlzLCBpbiBmYWN0LCBhIHN0YXRpYyBmdW5jdGlvbi4gTm93LCB0aGUgcHJvbXB0IHN0cmVzc2VzIHByZWZlcnJpbmcgbm9uLXN0YXRpYyBmdW5jdGlvbnMgZHVlIHRvIGlubGluaW5nIGNvbnNpZGVyYXRpb25zLiBCdXQgaG9sZCBvbiwgYGNpcnJ1c19wY2lfcHJvYmVgIGlzIGEgY2FsbGJhY2sgZnVuY3Rpb24gcGFzc2VkIHRvIGBzdHJ1Y3QgcGNpX2RyaXZlcmAuIEl0ICpjYW5ub3QqIGJlIGlubGluZWQgYmVjYXVzZSBpdHMgYWRkcmVzcyBpcyB0YWtlbi4gVGhhdCBtZWFucyBpdCB3aWxsIGhhdmUgYSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzcy4gVGhpcyBtYWtlcyBpdCB1c2FibGUsIHNvIHRoZXJlJiMzOTtzIG5vIHByb2JsZW0uIFdlIGNhbiB1c2UgaXQuCgpUaGVyZSBhcmUgbm8gb3RoZXIgcmVsYXRlZCBmdW5jdGlvbnMgdGhhdCB3ZXJlIG1vZGlmaWVkLCBvbmx5IGBjaXJydXNfcGNpX3Byb2JlYC4gQWxzbywgdGhlIGRlcGVuZGVuY2llcyBmb3IgYERSTV9DSVJSVVNfUUVNVWAgYXJlIGBEUk1gIGFuZCBgUENJYC4gU2luY2UgdGhlc2UgYXJlIHNhdGlzZmllZCwgdGhlIGRlcGVuZGVuY3kgcmVxdWlyZW1lbnRzIGFyZSBtZXQuCgpMZXQmIzM5O3MgY2FsbCBzZXQtcmVzdWx0cyEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNCAxMzo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7RFJNX0NJUlJVU19RRU1VJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Y2lycnVzX3BjaV9wcm9iZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgY2hlY2sgZm9yIHRoZSBWUkFNIHNpemUgaW4gdGhlIFBDSSBwcm9iZSBmdW5jdGlvbiBvZiB0aGUgUUVNVSBDaXJydXMgVkdBIGRyaXZlci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgZHJpdmVyIHRoYXQgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoUUVNVSkuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0RSTV9DSVJSVVNfUUVNVSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2NpcnJ1c19wY2lfcHJvYmUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIGNoZWNrIGZvciB0aGUgVlJBTSBzaXplIGluIHRoZSBQQ0kgcHJvYmUgZnVuY3Rpb24gb2YgdGhlIFFFTVUgQ2lycnVzIFZHQSBkcml2ZXIuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIGRyaXZlciB0aGF0IGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKFFFTVUpLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNCAxMzo0NzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI0IDEzOjQ3PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBzaW1wbGUgbGVuZ3RoIGNoZWNrIGZvciBhIFBDSSByZXNvdXJjZSB0byBlbnN1cmUgaXQgbWF0Y2hlcyB0aGUgZXhwZWN0ZWQgQ0lSUlVTX1ZSQU1fU0laRSBiZWZvcmUgY2FsbGluZyBkZXZtX2lvcmVtYXAuIFRoaXMgcHJldmVudHMgcG90ZW50aWFsIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMgdG8gdGhlIG1hcHBlZCBWUkFNIHJlZ2lvbiBpZiB0aGUgYWN0dWFsIHJlc291cmNlIGxlbmd0aCBpcyBzbWFsbGVyIHRoYW4gZXhwZWN0ZWQuIE91dC1vZi1ib3VuZHMgYWNjZXNzZXMgYXJlIGVmZmVjdGl2ZWx5IGRldGVjdGVkIGJ5IEtBU0FOLiBUaGVyZSBpcyBubyBpbnRyb2R1Y3Rpb24gb3IgZXhwb3N1cmUgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMsIGluZm8tbGVha3MgdG8gdXNlciBzcGFjZSwgb3IgdW5pbml0aWFsaXplZCBzdHJ1Y3R1cmUgZmllbGRzLCB3aGljaCBhcmUgdGhlIHByaW1hcnkgdGFyZ2V0cyBmb3IgS01TQU4uIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnkuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5CmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kCmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikKZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuCgpDUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjoKLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlCiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOCiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUAogIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuCi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsCiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLgoKUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTiwKTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy4KQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWQpzZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrcwp0aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLgoKTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3QKdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsCmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5cwp0aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZwp1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wKZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLApjYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy4KClNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczoKMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2IKICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHMKICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC4KMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcwogICBvciBzdHJ1Y3QgZmllbGRzLgozLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzCiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuCjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzCiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy4KClNldCBOZWVkc0tNU0FOPWZhbHNlIElGOgotIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyCiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0CiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLgotIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkCiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLgotIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4KClVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGUKZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDhiZmU0MzU5MzE1ODFkYjk3MWM1OTQ4OGQyMjRlOGQ4OWMzYWVjZmMKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgTW9uIEF1ZyAyNCAxMzo0NTo0NyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmMgYi9kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jCmluZGV4IDA3NTIyMWI0MzFkMzcuLjcwYzk5NTAyNWY1MDggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYwpAQCAtNjAyLDYgJiM0Mzs2MDIsOSBAQCBzdGF0aWMgaW50IGNpcnJ1c19wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsCiAKIAlkZXYgPSAmYW1wO2NpcnJ1cy0mZ3Q7ZGV2OwogCiYjNDM7CWlmIChwY2lfcmVzb3VyY2VfbGVuKHBkZXYsIDApICE9IENJUlJVU19WUkFNX1NJWkUpCiYjNDM7CQlyZXR1cm4gLUVOT0RFVjsKJiM0MzsKIAljaXJydXMtJmd0O3ZyYW0gPSBkZXZtX2lvcmVtYXAoJmFtcDtwZGV2LSZndDtkZXYsIHBjaV9yZXNvdXJjZV9zdGFydChwZGV2LCAwKSwKIAkJCQkgICAgcGNpX3Jlc291cmNlX2xlbihwZGV2LCAwKSk7CiAJaWYgKGNpcnJ1cy0mZ3Q7dnJhbSA9PSBOVUxMKQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjQgMTM6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjAzOQoJCQkJCQkJb3V0cHV0OiAxNDUKCQkJCQkJCXRob3VnaHRzOiA0NDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgQ2lycnVzIFBDSSBSZXNvdXJjZSBMZW5ndGggQ2hlY2sqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCYjMzk7cyBiZWluZyBwcm9wb3NlZC4gSXQgYWRkcyBhIHN0cmFpZ2h0Zm9yd2FyZCBjaGVjayBpbiBgY2lycnVzX3BjaV9wcm9iZWAgd2l0aGluIHRoZSBgY2lycnVzLXFlbXUuY2AgZHJpdmVyLiBTcGVjaWZpY2FsbHksIGl0IHZlcmlmaWVzIHRoYXQgdGhlIGxlbmd0aCBvZiBQQ0kgcmVzb3VyY2UgMCBtYXRjaGVzIGBDSVJSVVNfVlJBTV9TSVpFYC4gSWYgaXQgZG9lc24mIzM5O3QsIHdlIHJldHVybiBgLUVOT0RFVmAuIFRoaXMgaXMgcHJldHR5IHN0YW5kYXJkIHByYWN0aWNlLCBhIHNpbXBsZSBib3VuZHMgb3IgbGVuZ3RoIGNoZWNrIHRvIGVuc3VyZSBldmVyeXRoaW5nJiMzOTtzIGFzIGV4cGVjdGVkLiBUaGUgcXVlc3Rpb24sIG9mIGNvdXJzZSwgaXMgaWYgdGhpcyBpbnRyb2R1Y2VzIGFueSByaXNrcy4KCkluaXRpYWxseSwgSSBjb25zaWRlcmVkIHdoZXRoZXIgdGhpcyBjaGVjayBtaWdodCBiZSByZWxhdGVkIHRvIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGV4cG9zdXJlLiBIb3dldmVyLCBhZnRlciBjYXJlZnVsIGNvbnNpZGVyYXRpb24sIGl0JiMzOTtzIGNsZWFyIHRoYXQgaXQgaXNuJiMzOTt0LiBUaGlzIGlzIHB1cmVseSBhIGNoZWNrIG9uIHRoZSBsZW5ndGggb2YgdGhlIFBDSSByZXNvdXJjZS4gSWYgdGhpcyBjaGVjayAqd2FzbiYjMzk7dCogdGhlcmUsIGFuZCB3ZSBhY2Nlc3NlZCBiZXlvbmQgdGhlIG1hcHBlZCByZWdpb24sIEtBU0FOIG9yIGFub3RoZXIgc2ltaWxhciBidWcgZGV0ZWN0b3Igd291bGQgcGljayB1cCBhbnkgb3V0LW9mLWJvdW5kcyBhY2Nlc3Nlcy4gS01TQU4sIG9uIHRoZSBvdGhlciBoYW5kLCBpcyBzcGVjaWZpY2FsbHkgZm9yIGNhdGNoaW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLCBhbmQgdGhlcmUmIzM5O3Mgbm8gaW5kaWNhdGlvbiBvZiB0aGF0IGhlcmUuCgpMZXQgbWUganVzdCBkb3VibGUtY2hlY2sgdGhlIGFjdHVhbCBjb2RlIHNuaXBwZXQ6CmBgYGMKIAlkZXYgPSAmYW1wO2NpcnJ1cy0mZ3Q7ZGV2OwogCiYjNDM7CWlmIChwY2lfcmVzb3VyY2VfbGVuKHBkZXYsIDApICE9IENJUlJVU19WUkFNX1NJWkUpCiYjNDM7CQlyZXR1cm4gLUVOT0RFVjsKJiM0MzsKIAljaXJydXMtJmd0O3ZyYW0gPSBkZXZtX2lvcmVtYXAoJmFtcDtwZGV2LSZndDtkZXYsIHBjaV9yZXNvdXJjZV9zdGFydChwZGV2LCAwKSwKIAkJCQkgICAgcGNpX3Jlc291cmNlX2xlbihwZGV2LCAwKSk7CiAJaWYgKGNpcnJ1cy0mZ3Q7dnJhbSA9PSBOVUxMKQpgYGAKCkFoLCByaWdodC4gVGhpcyBpcyBhIGZpeCBmb3IgYSBjYXNlIHdoZXJlIHRoZSByZXBvcnRlZCBsZW5ndGggb2YgdGhlIFBDSSByZXNvdXJjZSBtaWdodCBub3QgYmUgd2hhdCYjMzk7cyBleHBlY3RlZC4gSWYgaXQmIzM5O3MgKnNtYWxsZXIqIHRoYW4gYENJUlJVU19WUkFNX1NJWkVgLCBgZGV2bV9pb3JlbWFwYCB3b3VsZCBtYXAgYSBzbWFsbGVyIHJlZ2lvbi4gQW55IHN1YnNlcXVlbnQgYXR0ZW1wdHMgdG8gYWNjZXNzIGBjaXJydXMtJmd0O3ZyYW1gIHVwIHRvIGBDSVJSVVNfVlJBTV9TSVpFYCB3b3VsZCB0aGVuIHJlc3VsdCBpbiBhbiBvdXQtb2YtYm91bmRzIGFjY2Vzcy4gVGhlIGV4aXN0aW5nIEtBU0FOIHN5c3RlbSBjYW4gYWxyZWFkeSBoYW5kbGUgdGhpcy4gTm8gcmlzayBvZiBhbiB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkIGhlcmUuIFRoZXJlZm9yZSwgSSYjMzk7bSBjb25maWRlbnQgaW4gc2V0dGluZyBgTmVlZHNLTVNBTj1mYWxzZWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI0IDEzOjQ4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBzaW1wbGUgbGVuZ3RoIGNoZWNrIGZvciBhIFBDSSByZXNvdXJjZSB0byBlbnN1cmUgaXQgbWF0Y2hlcyB0aGUgZXhwZWN0ZWQgQ0lSUlVTX1ZSQU1fU0laRSBiZWZvcmUgY2FsbGluZyBkZXZtX2lvcmVtYXAuIFRoaXMgcHJldmVudHMgcG90ZW50aWFsIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMgdG8gdGhlIG1hcHBlZCBWUkFNIHJlZ2lvbiBpZiB0aGUgYWN0dWFsIHJlc291cmNlIGxlbmd0aCBpcyBzbWFsbGVyIHRoYW4gZXhwZWN0ZWQuIE91dC1vZi1ib3VuZHMgYWNjZXNzZXMgYXJlIGVmZmVjdGl2ZWx5IGRldGVjdGVkIGJ5IEtBU0FOLiBUaGVyZSBpcyBubyBpbnRyb2R1Y3Rpb24gb3IgZXhwb3N1cmUgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMsIGluZm8tbGVha3MgdG8gdXNlciBzcGFjZSwgb3IgdW5pbml0aWFsaXplZCBzdHJ1Y3R1cmUgZmllbGRzLCB3aGljaCBhcmUgdGhlIHByaW1hcnkgdGFyZ2V0cyBmb3IgS01TQU4uIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnkuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgc2ltcGxlIGxlbmd0aCBjaGVjayBmb3IgYSBQQ0kgcmVzb3VyY2UgdG8gZW5zdXJlIGl0IG1hdGNoZXMgdGhlIGV4cGVjdGVkIENJUlJVU19WUkFNX1NJWkUgYmVmb3JlIGNhbGxpbmcgZGV2bV9pb3JlbWFwLiBUaGlzIHByZXZlbnRzIHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzIHRvIHRoZSBtYXBwZWQgVlJBTSByZWdpb24gaWYgdGhlIGFjdHVhbCByZXNvdXJjZSBsZW5ndGggaXMgc21hbGxlciB0aGFuIGV4cGVjdGVkLiBPdXQtb2YtYm91bmRzIGFjY2Vzc2VzIGFyZSBlZmZlY3RpdmVseSBkZXRlY3RlZCBieSBLQVNBTi4gVGhlcmUgaXMgbm8gaW50cm9kdWN0aW9uIG9yIGV4cG9zdXJlIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLCBpbmZvLWxlYWtzIHRvIHVzZXIgc3BhY2UsIG9yIHVuaW5pdGlhbGl6ZWQgc3RydWN0dXJlIGZpZWxkcywgd2hpY2ggYXJlIHRoZSBwcmltYXJ5IHRhcmdldHMgZm9yIEtNU0FOLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0yNFQxMzo0NTo0OC4xNDc3MzM2OTlaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDAzODc0OTc5NDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiRFJNX0NJUlJVU19RRU1VXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiY2lycnVzX3BjaV9wcm9iZVwiXG4gIF0sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIHNpbXBsZSBsZW5ndGggY2hlY2sgZm9yIGEgUENJIHJlc291cmNlIHRvIGVuc3VyZSBpdCBtYXRjaGVzIHRoZSBleHBlY3RlZCBDSVJSVVNfVlJBTV9TSVpFIGJlZm9yZSBjYWxsaW5nIGRldm1faW9yZW1hcC4gVGhpcyBwcmV2ZW50cyBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyB0byB0aGUgbWFwcGVkIFZSQU0gcmVnaW9uIGlmIHRoZSBhY3R1YWwgcmVzb3VyY2UgbGVuZ3RoIGlzIHNtYWxsZXIgdGhhbiBleHBlY3RlZC4gT3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyBhcmUgZWZmZWN0aXZlbHkgZGV0ZWN0ZWQgYnkgS0FTQU4uIFRoZXJlIGlzIG5vIGludHJvZHVjdGlvbiBvciBleHBvc3VyZSBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcywgaW5mby1sZWFrcyB0byB1c2VyIHNwYWNlLCBvciB1bmluaXRpYWxpemVkIHN0cnVjdHVyZSBmaWVsZHMsIHdoaWNoIGFyZSB0aGUgcHJpbWFyeSB0YXJnZXRzIGZvciBLTVNBTi4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgY2hlY2sgZm9yIHRoZSBWUkFNIHNpemUgaW4gdGhlIFBDSSBwcm9iZSBmdW5jdGlvbiBvZiB0aGUgUUVNVSBDaXJydXMgVkdBIGRyaXZlci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgZHJpdmVyIHRoYXQgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoUUVNVSkuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI0VDEzOjQ1OjQ4LjE0Nzc0MDExOVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTE5MjM0MjM2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgOGJmZTQzNTkzMTU4MWRiOTcxYzU5NDg4ZDIyNGU4ZDg5YzNhZWNmY1xcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgTW9uIEF1ZyAyNCAxMzo0NTo0NyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jIGIvZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuY1xcbmluZGV4IDA3NTIyMWI0MzFkMzcuLjcwYzk5NTAyNWY1MDggMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuY1xcbisrKyBiL2RyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmNcXG5AQCAtNjAyLDYgKzYwMiw5IEBAIHN0YXRpYyBpbnQgY2lycnVzX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4gXFxuIFxcdGRldiA9IFxcdTAwMjZjaXJydXMtXFx1MDAzZWRldjtcXG4gXFxuK1xcdGlmIChwY2lfcmVzb3VyY2VfbGVuKHBkZXYsIDApICE9IENJUlJVU19WUkFNX1NJWkUpXFxuK1xcdFxcdHJldHVybiAtRU5PREVWO1xcbitcXG4gXFx0Y2lycnVzLVxcdTAwM2V2cmFtID0gZGV2bV9pb3JlbWFwKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIHBjaV9yZXNvdXJjZV9zdGFydChwZGV2LCAwKSxcXG4gXFx0XFx0XFx0XFx0ICAgIHBjaV9yZXNvdXJjZV9sZW4ocGRldiwgMCkpO1xcbiBcXHRpZiAoY2lycnVzLVxcdTAwM2V2cmFtID09IE5VTEwpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI0VDEzOjQ1OjQ4LjY2NzY2MzYwNVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjEzMDgwMjcwMTA0MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJEUk1fQ0lSUlVTX1FFTVVcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJjaXJydXNfcGNpX3Byb2JlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIGNoZWNrIGZvciB0aGUgVlJBTSBzaXplIGluIHRoZSBQQ0kgcHJvYmUgZnVuY3Rpb24gb2YgdGhlIFFFTVUgQ2lycnVzIFZHQSBkcml2ZXIuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIGRyaXZlciB0aGF0IGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKFFFTVUpLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA4YmZlNDM1OTMxNTgxZGI5NzFjNTk0ODhkMjI0ZThkODljM2FlY2ZjXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBBdWcgMjQgMTM6NDU6NDcgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jIGIvZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuY1xuaW5kZXggMDc1MjIxYjQzMWQzNy4uNzBjOTk1MDI1ZjUwOCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmNcbisrKyBiL2RyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmNcbkBAIC02MDIsNiArNjAyLDkgQEAgc3RhdGljIGludCBjaXJydXNfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuIFxuIFx0ZGV2ID0gXHUwMDI2Y2lycnVzLVx1MDAzZWRldjtcbiBcbitcdGlmIChwY2lfcmVzb3VyY2VfbGVuKHBkZXYsIDApICE9IENJUlJVU19WUkFNX1NJWkUpXG4rXHRcdHJldHVybiAtRU5PREVWO1xuK1xuIFx0Y2lycnVzLVx1MDAzZXZyYW0gPSBkZXZtX2lvcmVtYXAoXHUwMDI2cGRldi1cdTAwM2VkZXYsIHBjaV9yZXNvdXJjZV9zdGFydChwZGV2LCAwKSxcbiBcdFx0XHRcdCAgICBwY2lfcmVzb3VyY2VfbGVuKHBkZXYsIDApKTtcbiBcdGlmIChjaXJydXMtXHUwMDNldnJhbSA9PSBOVUxMKVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjRUMTM6NDU6NDguNjY3NjY1MTg1WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTI3OTExODEwMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBDaXJydXMgVkdBIERyaXZlciBDaGFuZ2UqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciB0aGUgQ2lycnVzIFZHQSBkcml2ZXIgaW4gUUVNVS4gVGhleSd2ZSBhZGRlZCBhIHJlc291cmNlIGxlbmd0aCBjaGVjayB3aXRoaW4gYGNpcnJ1c19wY2lfcHJvYmVgIGluIGBkcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jYC4gU3BlY2lmaWNhbGx5LCB0aGV5J3JlIHZlcmlmeWluZyB0aGF0IHRoZSBQQ0kgcmVzb3VyY2UgbGVuZ3RoIG1hdGNoZXMgYENJUlJVU19WUkFNX1NJWkVgLiBUaGlzIGlzIGEgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCBmdW5jdGlvbmFsIGNoYW5nZSwgYWltZWQgYXQgZW5zdXJpbmcgdGhlIGRyaXZlciB3b3JrcyBjb3JyZWN0bHkgd2l0aCB0aGUgZXhwZWN0ZWQgdmlkZW8gUkFNIGFsbG9jYXRpb24uIEdpdmVuIHRoYXQgaXQncyBhIGRyaXZlciBmb3IgUUVNVSdzIENpcnJ1cyBWR0EsIGl0cyByZWFjaGFiaWxpdHkgaXMgZGVmaW5pdGVseSBsaW1pdGVkIHRvIHZpcnR1YWxpemVkIHNldHVwcywgd2hpY2ggaXMgaW1wb3J0YW50IHRvIGtlZXAgaW4gbWluZC5cblxuVG8gZXZhbHVhdGUgdGhlIGltcGFjdCBwcm9wZXJseSwgSSdtIGdvaW5nIHRvIHF1aWNrbHkgY2hlY2sgdGhlIEtjb25maWcgZm9yIHRoaXMgZHJpdmVyLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGNvbmZpZ3VyYXRpb25zIGVuYWJsZSBpdCBhbmQgdGhlcmVmb3JlIHdoZXJlIHRoaXMgY2hhbmdlIHdpbGwgYWN0dWFsbHkgYmUgcmVsZXZhbnQuIEFueSBwb3RlbnRpYWwgcmVncmVzc2lvbnMgYXJlIGxpa2VseSBsaW1pdGVkIHRvIHRob3NlIHNjZW5hcmlvcywgc28gdW5kZXJzdGFuZGluZyB0aGUgY29uZmlndXJhdGlvbiBjb250ZXh0IGlzIGtleSB0byBhc3Nlc3NpbmcgdGhlIHJpc2sgYW5kIGltcGFjdCBvZiB0aGlzIG1vZGlmaWNhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjA0MiwiT3V0cHV0VG9rZW5zIjo4MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzMiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI0VDEzOjQ1OjUzLjk0Njc4ODI1NVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTcxMTAzNjgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY2lycnVzX3BjaV9wcm9iZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmM9NTY1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2RyaXZlciBjaXJydXNfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYy01NzctXFxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYzo1Nzg6c3RhdGljIGludCBjaXJydXNfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmMtNTc5LVxcdFxcdFxcdCAgICBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYz02NjY9c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIGNpcnJ1c19wY2lfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYy02NjgtXFx0LmlkX3RhYmxlID0gcGNpaWRsaXN0LFxcbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmM6NjY5OlxcdC5wcm9iZSA9IGNpcnJ1c19wY2lfcHJvYmUsXFxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYy02NzAtXFx0LnJlbW92ZSA9IGNpcnJ1c19wY2lfcmVtb3ZlLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNFQxMzo0NTo1NC4wNjM5MDE3MTNaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTMzNDg5NzEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIERSTV9DSVJSVVNfUUVNVVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2dwdS9kcm0vdGlueS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvZ3B1L2RybS90aW55L0tjb25maWc9Mjc9Y29uZmlnIERSTV9CT0NIU1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3RpbnkvS2NvbmZpZy0zOC1cXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9LY29uZmlnOjM5OmNvbmZpZyBEUk1fQ0lSUlVTX1FFTVVcXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9LY29uZmlnLTQwLVxcdHRyaXN0YXRlIFxcXCJDaXJydXMgZHJpdmVyIGZvciBRRU1VIGVtdWxhdGVkIGRldmljZVxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjRUMTM6NDU6NTQuMTU3MjU1NzM0WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTE1NTE5NDU3MTUwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgZGVwZW5kZW5jaWVzIG9mIGBEUk1fQ0lSUlVTX1FFTVVgLlxuXG4qKkFuYWx5emluZyBgRFJNX0NJUlJVU19RRU1VYCBEZXBlbmRlbmNpZXMqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZGl2ZSBpbnRvIHRoZSBkZXBlbmRlbmNpZXMgb2YgYERSTV9DSVJSVVNfUUVNVWAuIEZpcnN0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGl0IGFjdHVhbGx5ICpkb2VzKiB3aXRoaW4gdGhlIGdyZWF0ZXIgRFJNIGVjb3N5c3RlbS4gSXQncyBvYnZpb3VzbHkgcmVsYXRlZCB0byB0aGUgQ2lycnVzIGxvZ2ljIHZpcnR1YWwgZ3JhcGhpY3MgYWRhcHRlciwgYW5kIGJlaW5nIGNvdXBsZWQgd2l0aCBRRU1VIHN1Z2dlc3RzIHRoaXMgaXMgYSB2aXJ0dWFsaXphdGlvbi1zcGVjaWZpYyBkcml2ZXIuIFRoYXQgbWVhbnMgaXTigJlzIGxpa2VseSBpbnRlcmFjdGluZyB3aXRoIHRoZSBob3N0J3MgdmlydHVhbCBtYWNoaW5lIGluZnJhc3RydWN0dXJlIOKAkyBwcm9iYWJseSB1c2luZyBLVk0gb3Igc29tZXRoaW5nIHNpbWlsYXIuXG5cbkknbGwgbmVlZCB0byBleGFtaW5lIHRoZSBrZXJuZWwgY29kZSwgc3BlY2lmaWNhbGx5IHRoZSByZWxldmFudCBtYWtlZmlsZXMgYW5kIGNvbmZpZ3VyYXRpb24gZmlsZXMuIEkgZXhwZWN0IGl0IHRvIGRlcGVuZCBvbiB0aGUgY29yZSBEUk0gKERpcmVjdCBSZW5kZXJpbmcgTWFuYWdlcikgZnJhbWV3b3JrLCBvZiBjb3Vyc2UuIEJleW9uZCB0aGF0LCBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGljaCBvdGhlciBEUk0gY29tcG9uZW50cywgaWYgYW55LCBpdCBpbnRlcmZhY2VzIHdpdGg7IGlzIGl0IHVzaW5nIHRoZSBUVE0gKFRyYW5zbGF0aW9uIFRhYmxlIE1hbmFnZXIpLCBHRU0gKEdyYXBoaWNzIEV4ZWN1dGlvbiBNYW5hZ2VyKSwgb3IgS01TIChLZXJuZWwgTW9kZSBTZXR0aW5nKSBkaXJlY3RseT8gT3IgcGVyaGFwcyBpdCBoYXMgaXRzIG93biwgc3BlY2lhbGl6ZWQgbWVtb3J5IG1hbmFnZW1lbnQgbG9naWMuXG5cblRoZXJlIGNvdWxkIGJlIGNvbmRpdGlvbmFsIGRlcGVuZGVuY2llcyBiYXNlZCBvbiB0aGUgaG9zdCBjb25maWd1cmF0aW9uIG9yIHRoZSBzcGVjaWZpYyBRRU1VIHNldHVwLiBJdCB3b3VsZCBiZSBpbXBvcnRhbnQgdG8gY2hlY2sgaWYgdGhlcmUgYXJlIGFueSBzcGVjaWZpYyBRRU1VLXJlbGF0ZWQgaGVhZGVycyBvciBsaWJyYXJpZXMgcmVxdWlyZWQgZm9yIGNvbXBpbGF0aW9uLiBQbHVzLCBhbSBJIGRlYWxpbmcgd2l0aCBhIHVzZXItc3BhY2UgZHJpdmVyIG9yIGEga2VybmVsLXNwYWNlIGNvbXBvbmVudD8gVGhhdCBhZmZlY3RzIHRoZSBsaW5raW5nIGFuZCBtb2R1bGUgZGVwZW5kZW5jaWVzIHNpZ25pZmljYW50bHkuXG5cbknigJlsbCBuZWVkIHRvIHRyYWNlIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXMgd2VsbCB0byB1bmRlcnN0YW5kIHRoZSBkaWZmZXJlbnQgZmVhdHVyZXMgdGhhdCBjYW4gYmUgZW5hYmxlZCBhbmQgdGhlaXIgYXNzb2NpYXRlZCBkZXBlbmRlbmNpZXMuIFRoaXMgaXMgaW1wb3J0YW50IHRvIGVuc3VyZSBJIGhhdmUgYSBjb21wbGV0ZSBwaWN0dXJlIG9mIHRoZSBidWlsZCByZXF1aXJlbWVudHMuIEkgc2hvdWxkIHByb2JhYmx5IGFsc28gY2hlY2sgdGhlIGJ1aWxkIGxvZ3MgdG8gZ2V0IGFuIGlkZWEgb2YgdGhlIGNvbXBpbGF0aW9uIG9wdGlvbnMgYW5kIHBvdGVudGlhbCBsaW5rLXRpbWUgZGVwZW5kZW5jaWVzLiBGaW5hbGx5LCB0aGUgZG9jdW1lbnRhdGlvbiBhbmQgYW55IG1haWxpbmcgbGlzdCBhcmNoaXZlcyB3b3VsZCBiZSBteSBuZXh0IHN0ZXAgaWYgSSBoaXQgYW55IHJvYWRibG9ja3MuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI4NTIsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiLCJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjRUMTM6NDc6NDkuNjc2NzE1MDY0WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Njk4NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9ncHUvZHJtL3RpbnkvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAzOSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAzOTpcXHRjb25maWcgRFJNX0NJUlJVU19RRU1VXFxuICA0MDpcXHRcXHR0cmlzdGF0ZSBcXFwiQ2lycnVzIGRyaXZlciBmb3IgUUVNVSBlbXVsYXRlZCBkZXZpY2VcXFwiXFxuICA0MTpcXHRcXHRkZXBlbmRzIG9uIERSTSBcXHUwMDI2XFx1MDAyNiBQQ0lcXG4gIDQyOlxcdFxcdHNlbGVjdCBEUk1fQ0xJRU5UX1NFTEVDVElPTlxcbiAgNDM6XFx0XFx0c2VsZWN0IERSTV9LTVNfSEVMUEVSXFxuICA0NDpcXHRcXHRzZWxlY3QgRFJNX0dFTV9TSE1FTV9IRUxQRVJcXG4gIDQ1OlxcdFxcdGhlbHBcXG4gIDQ2OlxcdFxcdCBUaGlzIGlzIGEgS01TIGRyaXZlciBmb3IgZW11bGF0ZWQgY2lycnVzIGRldmljZSBpbiBxZW11LlxcbiAgNDc6XFx0XFx0IEl0IGlzICpOT1QqIGludGVuZGVkIGZvciByZWFsIGNpcnJ1cyBkZXZpY2VzLiBUaGlzIHJlcXVpcmVzXFxuICA0ODpcXHRcXHQgdGhlIG1vZGVzZXR0aW5nIHVzZXJzcGFjZSBYLm9yZyBkcml2ZXIuXFxuICA0OTpcXHRcXG4gIDUwOlxcdFxcdCBDaXJydXMgaXMgb2Jzb2xldGUsIHRoZSBoYXJkd2FyZSB3YXMgZGVzaWduZWQgaW4gdGhlIDkwaWVzXFxuICA1MTpcXHRcXHQgYW5kIGNhbid0IGtlZXAgdXAgd2l0aCB0b2RheXMgbmVlZHMuICBNb3JlIGJhY2tncm91bmQ6XFxuICA1MjpcXHRcXHQgaHR0cHM6Ly93d3cua3JheGVsLm9yZy9ibG9nLzIwMTQvMTAvcWVtdS11c2luZy1jaXJydXMtY29uc2lkZXJlZC1oYXJtZnVsL1xcbiAgNTM6XFx0XFxuICA1NDpcXHRcXHQgQmV0dGVyIGFsdGVybmF0aXZlcyBhcmU6XFxuICA1NTpcXHRcXHQgICAtIHN0ZHZnYSAoRFJNX0JPQ0hTLCBxZW11IC12Z2Egc3RkLCBkZWZhdWx0IGluIHFlbXUgMi4yKylcXG4gIDU2OlxcdFxcdCAgIC0gcXhsIChEUk1fUVhMLCBxZW11IC12Z2EgcXhsLCB3b3JrcyBiZXN0IHdpdGggc3BpY2UpXFxuICA1NzpcXHRcXHQgICAtIHZpcnRpbyAoRFJNX1ZJUlRJT19HUFUpLCBxZW11IC12Z2EgdmlydGlvKVxcbiAgNTg6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI0VDEzOjQ3OjQ5LjY3Njc4NjM2NFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjk2MTgyNzczODksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIGBjaXJydXNfcGNpX3Byb2JlYCBDaGFuZ2UgZm9yIEZ1enppbmcqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIFRoZSBjb3JlIGNoYW5nZSByZXZvbHZlcyBhcm91bmQgdGhlIGBjaXJydXNfcGNpX3Byb2JlYCBmdW5jdGlvbiB3aXRoaW4gdGhlIGBEUk1fQ0lSUlVTX1FFTVVgIGRyaXZlciwgd2hpY2gsIGltcG9ydGFudGx5LCBkZXBlbmRzIG9uIGJvdGggYERSTWAgYW5kIGBQQ0lgLiBUaGlzIGlzIGEgUENJIHByb2JlIGZ1bmN0aW9uLCBhbmQgdGhvc2UgYXJlIGV4ZWN1dGVkIGR1cmluZyBkZXZpY2UgZGV0ZWN0aW9uLiBDcnVjaWFsbHksIHRoZSBDaXJydXMgVkdBIGRldmljZSBpcyBzb21ldGhpbmcgdGhhdCAqY2FuKiBiZSBhZGRlZCBhbmQgZW11bGF0ZWQgd2l0aGluIFFFTVUuIFRoYXQgaW1tZWRpYXRlbHkgbWFrZXMgdGhpcyBhIHBvdGVudGlhbGx5IGludGVyZXN0aW5nIHRhcmdldCBmb3IgZnV6emluZywgYmVjYXVzZSBpdCBtZWFucyBpdCAqaXMqIHJlYWNoYWJsZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LlxuXG5Jbml0aWFsbHksIEkgaGFkIGEgcXVpY2sgdGhvdWdodCBhYm91dCB3aGV0aGVyIHRoaXMgd2FzIGEgaG90IHBhdGgsIGJ1dCBpdCdzIG5vdC4gUHJvYmUgZnVuY3Rpb25zIGFyZSBjYWxsZWQgZHVyaW5nIGRldmljZSBpbml0aWFsaXphdGlvbiwgc28gdGhlIGNvbmNlcm4gaXMgaXJyZWxldmFudC5cblxuVGhlIHByb21wdCwgb2YgY291cnNlLCByYWlzZXMgcmVkIGZsYWdzLiBJdCBtZW50aW9ucyBleGNsdWRpbmcgcGF0aHMgdW5yZWFjaGFibGUgaW4gUUVNVS4gSG93ZXZlciwgdGhpcyBpcyBwcmVjaXNlbHkgYSBRRU1VLWVtdWxhdGVkIGRldmljZSBkcml2ZXIsIHNvIHRoZSBydWxlIGRvZXNuJ3QgYXBwbHkuIEl0J3MgYSBgLnByb2JlYCBjYWxsYmFjaywgbm90IGEgYC5yZW1vdmVgIG9yIGAuc2h1dGRvd25gLCBzbyB0aGUgZXhjbHVzaW9ucyBmb3IgdGVhcmRvd24gY2FsbGJhY2tzIGRvbid0IGFwcGx5LlxuXG5JIG5lZWRlZCB0byBtYWtlIGEgcXVpY2sgY2hlY2suIEknbSBub3RpbmcgdGhhdCBgY2lycnVzX3BjaV9wcm9iZWAgaXMsIGluIGZhY3QsIGEgc3RhdGljIGZ1bmN0aW9uLiBOb3csIHRoZSBwcm9tcHQgc3RyZXNzZXMgcHJlZmVycmluZyBub24tc3RhdGljIGZ1bmN0aW9ucyBkdWUgdG8gaW5saW5pbmcgY29uc2lkZXJhdGlvbnMuIEJ1dCBob2xkIG9uLCBgY2lycnVzX3BjaV9wcm9iZWAgaXMgYSBjYWxsYmFjayBmdW5jdGlvbiBwYXNzZWQgdG8gYHN0cnVjdCBwY2lfZHJpdmVyYC4gSXQgKmNhbm5vdCogYmUgaW5saW5lZCBiZWNhdXNlIGl0cyBhZGRyZXNzIGlzIHRha2VuLiBUaGF0IG1lYW5zIGl0IHdpbGwgaGF2ZSBhIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzLiBUaGlzIG1ha2VzIGl0IHVzYWJsZSwgc28gdGhlcmUncyBubyBwcm9ibGVtLiBXZSBjYW4gdXNlIGl0LlxuXG5UaGVyZSBhcmUgbm8gb3RoZXIgcmVsYXRlZCBmdW5jdGlvbnMgdGhhdCB3ZXJlIG1vZGlmaWVkLCBvbmx5IGBjaXJydXNfcGNpX3Byb2JlYC4gQWxzbywgdGhlIGRlcGVuZGVuY2llcyBmb3IgYERSTV9DSVJSVVNfUUVNVWAgYXJlIGBEUk1gIGFuZCBgUENJYC4gU2luY2UgdGhlc2UgYXJlIHNhdGlzZmllZCwgdGhlIGRlcGVuZGVuY3kgcmVxdWlyZW1lbnRzIGFyZSBtZXQuXG5cbkxldCdzIGNhbGwgc2V0LXJlc3VsdHMhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM2NTYsIk91dHB1dFRva2VucyI6OTYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NDQsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNFQxMzo0Nzo1OS4yOTUwNjY5NDNaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3NTI5NDg1MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiRFJNX0NJUlJVU19RRU1VXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiY2lycnVzX3BjaV9wcm9iZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBjaGVjayBmb3IgdGhlIFZSQU0gc2l6ZSBpbiB0aGUgUENJIHByb2JlIGZ1bmN0aW9uIG9mIHRoZSBRRU1VIENpcnJ1cyBWR0EgZHJpdmVyLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSBkcml2ZXIgdGhhdCBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChRRU1VKS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJEUk1fQ0lSUlVTX1FFTVVcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJjaXJydXNfcGNpX3Byb2JlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIGNoZWNrIGZvciB0aGUgVlJBTSBzaXplIGluIHRoZSBQQ0kgcHJvYmUgZnVuY3Rpb24gb2YgdGhlIFFFTVUgQ2lycnVzIFZHQSBkcml2ZXIuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIGRyaXZlciB0aGF0IGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKFFFTVUpLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNFQxMzo0Nzo1OS40NzAzNjgxNzVaIiwiU2VxIjoxMCwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkwNjQ4NDgxOTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNFQxMzo0Nzo1OS40NzA5OTE0MjVaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6OTA2NDIxNzY0NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIHNpbXBsZSBsZW5ndGggY2hlY2sgZm9yIGEgUENJIHJlc291cmNlIHRvIGVuc3VyZSBpdCBtYXRjaGVzIHRoZSBleHBlY3RlZCBDSVJSVVNfVlJBTV9TSVpFIGJlZm9yZSBjYWxsaW5nIGRldm1faW9yZW1hcC4gVGhpcyBwcmV2ZW50cyBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyB0byB0aGUgbWFwcGVkIFZSQU0gcmVnaW9uIGlmIHRoZSBhY3R1YWwgcmVzb3VyY2UgbGVuZ3RoIGlzIHNtYWxsZXIgdGhhbiBleHBlY3RlZC4gT3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyBhcmUgZWZmZWN0aXZlbHkgZGV0ZWN0ZWQgYnkgS0FTQU4uIFRoZXJlIGlzIG5vIGludHJvZHVjdGlvbiBvciBleHBvc3VyZSBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcywgaW5mby1sZWFrcyB0byB1c2VyIHNwYWNlLCBvciB1bmluaXRpYWxpemVkIHN0cnVjdHVyZSBmaWVsZHMsIHdoaWNoIGFyZSB0aGUgcHJpbWFyeSB0YXJnZXRzIGZvciBLTVNBTi4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnlcbmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kXG5kZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpXG5mdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy5cblxuQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46XG4tIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGVcbiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOXG4gIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVBcbiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy5cbi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsXG4gIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy5cblxuUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTixcbkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuXG5BIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZXG5zZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrc1xudGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi5cblxuTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3RcbnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLFxuYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzXG50aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZ1xudW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sXG5mbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsXG5jYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy5cblxuU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOlxuMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2JcbiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzXG4gICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLlxuMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlc1xuICAgb3Igc3RydWN0IGZpZWxkcy5cbjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHNcbiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuXG40LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2Vzc1xuICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjpcbi0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXJcbiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0XG4gIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS5cbi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWRcbiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLlxuLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuXG5cblVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGVcbmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA4YmZlNDM1OTMxNTgxZGI5NzFjNTk0ODhkMjI0ZThkODljM2FlY2ZjXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBBdWcgMjQgMTM6NDU6NDcgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jIGIvZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuY1xuaW5kZXggMDc1MjIxYjQzMWQzNy4uNzBjOTk1MDI1ZjUwOCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmNcbisrKyBiL2RyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmNcbkBAIC02MDIsNiArNjAyLDkgQEAgc3RhdGljIGludCBjaXJydXNfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuIFxuIFx0ZGV2ID0gXHUwMDI2Y2lycnVzLVx1MDAzZWRldjtcbiBcbitcdGlmIChwY2lfcmVzb3VyY2VfbGVuKHBkZXYsIDApICE9IENJUlJVU19WUkFNX1NJWkUpXG4rXHRcdHJldHVybiAtRU5PREVWO1xuK1xuIFx0Y2lycnVzLVx1MDAzZXZyYW0gPSBkZXZtX2lvcmVtYXAoXHUwMDI2cGRldi1cdTAwM2VkZXYsIHBjaV9yZXNvdXJjZV9zdGFydChwZGV2LCAwKSxcbiBcdFx0XHRcdCAgICBwY2lfcmVzb3VyY2VfbGVuKHBkZXYsIDApKTtcbiBcdGlmIChjaXJydXMtXHUwMDNldnJhbSA9PSBOVUxMKVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjRUMTM6NDc6NTkuNDcwOTkyMjk1WiIsIlNlcSI6MTIsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjkwNjQxNzczMzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgQ2lycnVzIFBDSSBSZXNvdXJjZSBMZW5ndGggQ2hlY2sqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQncyBiZWluZyBwcm9wb3NlZC4gSXQgYWRkcyBhIHN0cmFpZ2h0Zm9yd2FyZCBjaGVjayBpbiBgY2lycnVzX3BjaV9wcm9iZWAgd2l0aGluIHRoZSBgY2lycnVzLXFlbXUuY2AgZHJpdmVyLiBTcGVjaWZpY2FsbHksIGl0IHZlcmlmaWVzIHRoYXQgdGhlIGxlbmd0aCBvZiBQQ0kgcmVzb3VyY2UgMCBtYXRjaGVzIGBDSVJSVVNfVlJBTV9TSVpFYC4gSWYgaXQgZG9lc24ndCwgd2UgcmV0dXJuIGAtRU5PREVWYC4gVGhpcyBpcyBwcmV0dHkgc3RhbmRhcmQgcHJhY3RpY2UsIGEgc2ltcGxlIGJvdW5kcyBvciBsZW5ndGggY2hlY2sgdG8gZW5zdXJlIGV2ZXJ5dGhpbmcncyBhcyBleHBlY3RlZC4gVGhlIHF1ZXN0aW9uLCBvZiBjb3Vyc2UsIGlzIGlmIHRoaXMgaW50cm9kdWNlcyBhbnkgcmlza3MuXG5cbkluaXRpYWxseSwgSSBjb25zaWRlcmVkIHdoZXRoZXIgdGhpcyBjaGVjayBtaWdodCBiZSByZWxhdGVkIHRvIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGV4cG9zdXJlLiBIb3dldmVyLCBhZnRlciBjYXJlZnVsIGNvbnNpZGVyYXRpb24sIGl0J3MgY2xlYXIgdGhhdCBpdCBpc24ndC4gVGhpcyBpcyBwdXJlbHkgYSBjaGVjayBvbiB0aGUgbGVuZ3RoIG9mIHRoZSBQQ0kgcmVzb3VyY2UuIElmIHRoaXMgY2hlY2sgKndhc24ndCogdGhlcmUsIGFuZCB3ZSBhY2Nlc3NlZCBiZXlvbmQgdGhlIG1hcHBlZCByZWdpb24sIEtBU0FOIG9yIGFub3RoZXIgc2ltaWxhciBidWcgZGV0ZWN0b3Igd291bGQgcGljayB1cCBhbnkgb3V0LW9mLWJvdW5kcyBhY2Nlc3Nlcy4gS01TQU4sIG9uIHRoZSBvdGhlciBoYW5kLCBpcyBzcGVjaWZpY2FsbHkgZm9yIGNhdGNoaW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLCBhbmQgdGhlcmUncyBubyBpbmRpY2F0aW9uIG9mIHRoYXQgaGVyZS5cblxuTGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrIHRoZSBhY3R1YWwgY29kZSBzbmlwcGV0OlxuYGBgY1xuIFx0ZGV2ID0gXHUwMDI2Y2lycnVzLVx1MDAzZWRldjtcbiBcbitcdGlmIChwY2lfcmVzb3VyY2VfbGVuKHBkZXYsIDApICE9IENJUlJVU19WUkFNX1NJWkUpXG4rXHRcdHJldHVybiAtRU5PREVWO1xuK1xuIFx0Y2lycnVzLVx1MDAzZXZyYW0gPSBkZXZtX2lvcmVtYXAoXHUwMDI2cGRldi1cdTAwM2VkZXYsIHBjaV9yZXNvdXJjZV9zdGFydChwZGV2LCAwKSxcbiBcdFx0XHRcdCAgICBwY2lfcmVzb3VyY2VfbGVuKHBkZXYsIDApKTtcbiBcdGlmIChjaXJydXMtXHUwMDNldnJhbSA9PSBOVUxMKVxuYGBgXG5cbkFoLCByaWdodC4gVGhpcyBpcyBhIGZpeCBmb3IgYSBjYXNlIHdoZXJlIHRoZSByZXBvcnRlZCBsZW5ndGggb2YgdGhlIFBDSSByZXNvdXJjZSBtaWdodCBub3QgYmUgd2hhdCdzIGV4cGVjdGVkLiBJZiBpdCdzICpzbWFsbGVyKiB0aGFuIGBDSVJSVVNfVlJBTV9TSVpFYCwgYGRldm1faW9yZW1hcGAgd291bGQgbWFwIGEgc21hbGxlciByZWdpb24uIEFueSBzdWJzZXF1ZW50IGF0dGVtcHRzIHRvIGFjY2VzcyBgY2lycnVzLVx1MDAzZXZyYW1gIHVwIHRvIGBDSVJSVVNfVlJBTV9TSVpFYCB3b3VsZCB0aGVuIHJlc3VsdCBpbiBhbiBvdXQtb2YtYm91bmRzIGFjY2Vzcy4gVGhlIGV4aXN0aW5nIEtBU0FOIHN5c3RlbSBjYW4gYWxyZWFkeSBoYW5kbGUgdGhpcy4gTm8gcmlzayBvZiBhbiB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkIGhlcmUuIFRoZXJlZm9yZSwgSSdtIGNvbmZpZGVudCBpbiBzZXR0aW5nIGBOZWVkc0tNU0FOPWZhbHNlYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjAzOSwiT3V0cHV0VG9rZW5zIjoxNDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NDQsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNFQxMzo0ODowOC41MzUxNzQzMTJaIiwiU2VxIjoxMywiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMjExMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBzaW1wbGUgbGVuZ3RoIGNoZWNrIGZvciBhIFBDSSByZXNvdXJjZSB0byBlbnN1cmUgaXQgbWF0Y2hlcyB0aGUgZXhwZWN0ZWQgQ0lSUlVTX1ZSQU1fU0laRSBiZWZvcmUgY2FsbGluZyBkZXZtX2lvcmVtYXAuIFRoaXMgcHJldmVudHMgcG90ZW50aWFsIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMgdG8gdGhlIG1hcHBlZCBWUkFNIHJlZ2lvbiBpZiB0aGUgYWN0dWFsIHJlc291cmNlIGxlbmd0aCBpcyBzbWFsbGVyIHRoYW4gZXhwZWN0ZWQuIE91dC1vZi1ib3VuZHMgYWNjZXNzZXMgYXJlIGVmZmVjdGl2ZWx5IGRldGVjdGVkIGJ5IEtBU0FOLiBUaGVyZSBpcyBubyBpbnRyb2R1Y3Rpb24gb3IgZXhwb3N1cmUgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMsIGluZm8tbGVha3MgdG8gdXNlciBzcGFjZSwgb3IgdW5pbml0aWFsaXplZCBzdHJ1Y3R1cmUgZmllbGRzLCB3aGljaCBhcmUgdGhlIHByaW1hcnkgdGFyZ2V0cyBmb3IgS01TQU4uIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnkuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIHNpbXBsZSBsZW5ndGggY2hlY2sgZm9yIGEgUENJIHJlc291cmNlIHRvIGVuc3VyZSBpdCBtYXRjaGVzIHRoZSBleHBlY3RlZCBDSVJSVVNfVlJBTV9TSVpFIGJlZm9yZSBjYWxsaW5nIGRldm1faW9yZW1hcC4gVGhpcyBwcmV2ZW50cyBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyB0byB0aGUgbWFwcGVkIFZSQU0gcmVnaW9uIGlmIHRoZSBhY3R1YWwgcmVzb3VyY2UgbGVuZ3RoIGlzIHNtYWxsZXIgdGhhbiBleHBlY3RlZC4gT3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyBhcmUgZWZmZWN0aXZlbHkgZGV0ZWN0ZWQgYnkgS0FTQU4uIFRoZXJlIGlzIG5vIGludHJvZHVjdGlvbiBvciBleHBvc3VyZSBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcywgaW5mby1sZWFrcyB0byB1c2VyIHNwYWNlLCBvciB1bmluaXRpYWxpemVkIHN0cnVjdHVyZSBmaWVsZHMsIHdoaWNoIGFyZSB0aGUgcHJpbWFyeSB0YXJnZXRzIGZvciBLTVNBTi4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow9fjdm[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-24 13:44:26 +0000 UTC FinishedAt: 2026-08-24 13:48:10 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "db2ddb87143519e20a95aa36c60b36107b736a58", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "DRM_CIRRUS_QEMU" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "db2ddb87143519e20a95aa36c60b36107b736a58", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "DRM_CIRRUS_QEMU" ], "series_id": "655d3526-270b-4af4-acd2-6005a304fdbb" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "cirrus_pci_probe" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI0IDEzOjQ1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0RSTV9DSVJSVVNfUUVNVSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2NpcnJ1c19wY2lfcHJvYmUmIzM0OwogIF0sCiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgc2ltcGxlIGxlbmd0aCBjaGVjayBmb3IgYSBQQ0kgcmVzb3VyY2UgdG8gZW5zdXJlIGl0IG1hdGNoZXMgdGhlIGV4cGVjdGVkIENJUlJVU19WUkFNX1NJWkUgYmVmb3JlIGNhbGxpbmcgZGV2bV9pb3JlbWFwLiBUaGlzIHByZXZlbnRzIHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzIHRvIHRoZSBtYXBwZWQgVlJBTSByZWdpb24gaWYgdGhlIGFjdHVhbCByZXNvdXJjZSBsZW5ndGggaXMgc21hbGxlciB0aGFuIGV4cGVjdGVkLiBPdXQtb2YtYm91bmRzIGFjY2Vzc2VzIGFyZSBlZmZlY3RpdmVseSBkZXRlY3RlZCBieSBLQVNBTi4gVGhlcmUgaXMgbm8gaW50cm9kdWN0aW9uIG9yIGV4cG9zdXJlIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLCBpbmZvLWxlYWtzIHRvIHVzZXIgc3BhY2UsIG9yIHVuaW5pdGlhbGl6ZWQgc3RydWN0dXJlIGZpZWxkcywgd2hpY2ggYXJlIHRoZSBwcmltYXJ5IHRhcmdldHMgZm9yIEtNU0FOLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgY2hlY2sgZm9yIHRoZSBWUkFNIHNpemUgaW4gdGhlIFBDSSBwcm9iZSBmdW5jdGlvbiBvZiB0aGUgUUVNVSBDaXJydXMgVkdBIGRyaXZlci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgZHJpdmVyIHRoYXQgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoUUVNVSkuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjQgMTM6NDU8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA4YmZlNDM1OTMxNTgxZGI5NzFjNTk0ODhkMjI0ZThkODljM2FlY2ZjXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBBdWcgMjQgMTM6NDU6NDcgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYyBiL2RyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmNcbmluZGV4IDA3NTIyMWI0MzFkMzcuLjcwYzk5NTAyNWY1MDggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jXG5AQCAtNjAyLDYgJiM0Mzs2MDIsOSBAQCBzdGF0aWMgaW50IGNpcnJ1c19wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4gXG4gXHRkZXYgPSBcdTAwMjZjaXJydXMtXHUwMDNlZGV2O1xuIFxuJiM0MztcdGlmIChwY2lfcmVzb3VyY2VfbGVuKHBkZXYsIDApICE9IENJUlJVU19WUkFNX1NJWkUpXG4mIzQzO1x0XHRyZXR1cm4gLUVOT0RFVjtcbiYjNDM7XG4gXHRjaXJydXMtXHUwMDNldnJhbSA9IGRldm1faW9yZW1hcChcdTAwMjZwZGV2LVx1MDAzZWRldiwgcGNpX3Jlc291cmNlX3N0YXJ0KHBkZXYsIDApLFxuIFx0XHRcdFx0ICAgIHBjaV9yZXNvdXJjZV9sZW4ocGRldiwgMCkpO1xuIFx0aWYgKGNpcnJ1cy1cdTAwM2V2cmFtID09IE5VTEwpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjQgMTM6NDU8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0RSTV9DSVJSVVNfUUVNVSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2NpcnJ1c19wY2lfcHJvYmUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIGNoZWNrIGZvciB0aGUgVlJBTSBzaXplIGluIHRoZSBQQ0kgcHJvYmUgZnVuY3Rpb24gb2YgdGhlIFFFTVUgQ2lycnVzIFZHQSBkcml2ZXIuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIGRyaXZlciB0aGF0IGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKFFFTVUpLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgOGJmZTQzNTkzMTU4MWRiOTcxYzU5NDg4ZDIyNGU4ZDg5YzNhZWNmYwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gQXVnIDI0IDEzOjQ1OjQ3IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYyBiL2RyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmMKaW5kZXggMDc1MjIxYjQzMWQzNy4uNzBjOTk1MDI1ZjUwOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jCkBAIC02MDIsNiAmIzQzOzYwMiw5IEBAIHN0YXRpYyBpbnQgY2lycnVzX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwKIAogCWRldiA9ICZhbXA7Y2lycnVzLSZndDtkZXY7CiAKJiM0MzsJaWYgKHBjaV9yZXNvdXJjZV9sZW4ocGRldiwgMCkgIT0gQ0lSUlVTX1ZSQU1fU0laRSkKJiM0MzsJCXJldHVybiAtRU5PREVWOwomIzQzOwogCWNpcnJ1cy0mZ3Q7dnJhbSA9IGRldm1faW9yZW1hcCgmYW1wO3BkZXYtJmd0O2RldiwgcGNpX3Jlc291cmNlX3N0YXJ0KHBkZXYsIDApLAogCQkJCSAgICBwY2lfcmVzb3VyY2VfbGVuKHBkZXYsIDApKTsKIAlpZiAoY2lycnVzLSZndDt2cmFtID09IE5VTEwpCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI0IDEzOjQ1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwNDIKCQkJCQkJCW91dHB1dDogODEKCQkJCQkJCXRob3VnaHRzOiAxMzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgQ2lycnVzIFZHQSBEcml2ZXIgQ2hhbmdlKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciB0aGUgQ2lycnVzIFZHQSBkcml2ZXIgaW4gUUVNVS4gVGhleSYjMzk7dmUgYWRkZWQgYSByZXNvdXJjZSBsZW5ndGggY2hlY2sgd2l0aGluIGBjaXJydXNfcGNpX3Byb2JlYCBpbiBgZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuY2AuIFNwZWNpZmljYWxseSwgdGhleSYjMzk7cmUgdmVyaWZ5aW5nIHRoYXQgdGhlIFBDSSByZXNvdXJjZSBsZW5ndGggbWF0Y2hlcyBgQ0lSUlVTX1ZSQU1fU0laRWAuIFRoaXMgaXMgYSBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkIGZ1bmN0aW9uYWwgY2hhbmdlLCBhaW1lZCBhdCBlbnN1cmluZyB0aGUgZHJpdmVyIHdvcmtzIGNvcnJlY3RseSB3aXRoIHRoZSBleHBlY3RlZCB2aWRlbyBSQU0gYWxsb2NhdGlvbi4gR2l2ZW4gdGhhdCBpdCYjMzk7cyBhIGRyaXZlciBmb3IgUUVNVSYjMzk7cyBDaXJydXMgVkdBLCBpdHMgcmVhY2hhYmlsaXR5IGlzIGRlZmluaXRlbHkgbGltaXRlZCB0byB2aXJ0dWFsaXplZCBzZXR1cHMsIHdoaWNoIGlzIGltcG9ydGFudCB0byBrZWVwIGluIG1pbmQuCgpUbyBldmFsdWF0ZSB0aGUgaW1wYWN0IHByb3Blcmx5LCBJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgY2hlY2sgdGhlIEtjb25maWcgZm9yIHRoaXMgZHJpdmVyLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGNvbmZpZ3VyYXRpb25zIGVuYWJsZSBpdCBhbmQgdGhlcmVmb3JlIHdoZXJlIHRoaXMgY2hhbmdlIHdpbGwgYWN0dWFsbHkgYmUgcmVsZXZhbnQuIEFueSBwb3RlbnRpYWwgcmVncmVzc2lvbnMgYXJlIGxpa2VseSBsaW1pdGVkIHRvIHRob3NlIHNjZW5hcmlvcywgc28gdW5kZXJzdGFuZGluZyB0aGUgY29uZmlndXJhdGlvbiBjb250ZXh0IGlzIGtleSB0byBhc3Nlc3NpbmcgdGhlIHJpc2sgYW5kIGltcGFjdCBvZiB0aGlzIG1vZGlmaWNhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNCAxMzo0NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjaXJydXNfcGNpX3Byb2JlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jPTU2NT1zdGF0aWMgY29uc3Qgc3RydWN0IGRybV9kcml2ZXIgY2lycnVzX2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jLTU3Ny1cbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmM6NTc4OnN0YXRpYyBpbnQgY2lycnVzX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmMtNTc5LVx0XHRcdCAgICBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KVxuLS1cbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmM9NjY2PXN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBjaXJydXNfcGNpX2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jLTY2OC1cdC5pZF90YWJsZSA9IHBjaWlkbGlzdCxcbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmM6NjY5Olx0LnByb2JlID0gY2lycnVzX3BjaV9wcm9iZSxcbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmMtNjcwLVx0LnJlbW92ZSA9IGNpcnJ1c19wY2lfcmVtb3ZlLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI0IDEzOjQ1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBEUk1fQ0lSUlVTX1FFTVUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2dwdS9kcm0vdGlueS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvZ3B1L2RybS90aW55L0tjb25maWc9Mjc9Y29uZmlnIERSTV9CT0NIU1xuLS1cbmRyaXZlcnMvZ3B1L2RybS90aW55L0tjb25maWctMzgtXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9LY29uZmlnOjM5OmNvbmZpZyBEUk1fQ0lSUlVTX1FFTVVcbmRyaXZlcnMvZ3B1L2RybS90aW55L0tjb25maWctNDAtXHR0cmlzdGF0ZSBcJiMzNDtDaXJydXMgZHJpdmVyIGZvciBRRU1VIGVtdWxhdGVkIGRldmljZVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI0IDEzOjQ1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI4NTIKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSBkZXBlbmRlbmNpZXMgb2YgYERSTV9DSVJSVVNfUUVNVWAuCgoqKkFuYWx5emluZyBgRFJNX0NJUlJVU19RRU1VYCBEZXBlbmRlbmNpZXMqKgoKT2theSwgc28gSSBuZWVkIHRvIGRpdmUgaW50byB0aGUgZGVwZW5kZW5jaWVzIG9mIGBEUk1fQ0lSUlVTX1FFTVVgLiBGaXJzdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBpdCBhY3R1YWxseSAqZG9lcyogd2l0aGluIHRoZSBncmVhdGVyIERSTSBlY29zeXN0ZW0uIEl0JiMzOTtzIG9idmlvdXNseSByZWxhdGVkIHRvIHRoZSBDaXJydXMgbG9naWMgdmlydHVhbCBncmFwaGljcyBhZGFwdGVyLCBhbmQgYmVpbmcgY291cGxlZCB3aXRoIFFFTVUgc3VnZ2VzdHMgdGhpcyBpcyBhIHZpcnR1YWxpemF0aW9uLXNwZWNpZmljIGRyaXZlci4gVGhhdCBtZWFucyBpdOKAmXMgbGlrZWx5IGludGVyYWN0aW5nIHdpdGggdGhlIGhvc3QmIzM5O3MgdmlydHVhbCBtYWNoaW5lIGluZnJhc3RydWN0dXJlIOKAkyBwcm9iYWJseSB1c2luZyBLVk0gb3Igc29tZXRoaW5nIHNpbWlsYXIuCgpJJiMzOTtsbCBuZWVkIHRvIGV4YW1pbmUgdGhlIGtlcm5lbCBjb2RlLCBzcGVjaWZpY2FsbHkgdGhlIHJlbGV2YW50IG1ha2VmaWxlcyBhbmQgY29uZmlndXJhdGlvbiBmaWxlcy4gSSBleHBlY3QgaXQgdG8gZGVwZW5kIG9uIHRoZSBjb3JlIERSTSAoRGlyZWN0IFJlbmRlcmluZyBNYW5hZ2VyKSBmcmFtZXdvcmssIG9mIGNvdXJzZS4gQmV5b25kIHRoYXQsIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoaWNoIG90aGVyIERSTSBjb21wb25lbnRzLCBpZiBhbnksIGl0IGludGVyZmFjZXMgd2l0aDsgaXMgaXQgdXNpbmcgdGhlIFRUTSAoVHJhbnNsYXRpb24gVGFibGUgTWFuYWdlciksIEdFTSAoR3JhcGhpY3MgRXhlY3V0aW9uIE1hbmFnZXIpLCBvciBLTVMgKEtlcm5lbCBNb2RlIFNldHRpbmcpIGRpcmVjdGx5PyBPciBwZXJoYXBzIGl0IGhhcyBpdHMgb3duLCBzcGVjaWFsaXplZCBtZW1vcnkgbWFuYWdlbWVudCBsb2dpYy4KClRoZXJlIGNvdWxkIGJlIGNvbmRpdGlvbmFsIGRlcGVuZGVuY2llcyBiYXNlZCBvbiB0aGUgaG9zdCBjb25maWd1cmF0aW9uIG9yIHRoZSBzcGVjaWZpYyBRRU1VIHNldHVwLiBJdCB3b3VsZCBiZSBpbXBvcnRhbnQgdG8gY2hlY2sgaWYgdGhlcmUgYXJlIGFueSBzcGVjaWZpYyBRRU1VLXJlbGF0ZWQgaGVhZGVycyBvciBsaWJyYXJpZXMgcmVxdWlyZWQgZm9yIGNvbXBpbGF0aW9uLiBQbHVzLCBhbSBJIGRlYWxpbmcgd2l0aCBhIHVzZXItc3BhY2UgZHJpdmVyIG9yIGEga2VybmVsLXNwYWNlIGNvbXBvbmVudD8gVGhhdCBhZmZlY3RzIHRoZSBsaW5raW5nIGFuZCBtb2R1bGUgZGVwZW5kZW5jaWVzIHNpZ25pZmljYW50bHkuCgpJ4oCZbGwgbmVlZCB0byB0cmFjZSB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGFzIHdlbGwgdG8gdW5kZXJzdGFuZCB0aGUgZGlmZmVyZW50IGZlYXR1cmVzIHRoYXQgY2FuIGJlIGVuYWJsZWQgYW5kIHRoZWlyIGFzc29jaWF0ZWQgZGVwZW5kZW5jaWVzLiBUaGlzIGlzIGltcG9ydGFudCB0byBlbnN1cmUgSSBoYXZlIGEgY29tcGxldGUgcGljdHVyZSBvZiB0aGUgYnVpbGQgcmVxdWlyZW1lbnRzLiBJIHNob3VsZCBwcm9iYWJseSBhbHNvIGNoZWNrIHRoZSBidWlsZCBsb2dzIHRvIGdldCBhbiBpZGVhIG9mIHRoZSBjb21waWxhdGlvbiBvcHRpb25zIGFuZCBwb3RlbnRpYWwgbGluay10aW1lIGRlcGVuZGVuY2llcy4gRmluYWxseSwgdGhlIGRvY3VtZW50YXRpb24gYW5kIGFueSBtYWlsaW5nIGxpc3QgYXJjaGl2ZXMgd291bGQgYmUgbXkgbmV4dCBzdGVwIGlmIEkgaGl0IGFueSByb2FkYmxvY2tzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI0IDEzOjQ3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9ncHUvZHJtL3RpbnkvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDM5LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgMzk6XHRjb25maWcgRFJNX0NJUlJVU19RRU1VXG4gIDQwOlx0XHR0cmlzdGF0ZSBcJiMzNDtDaXJydXMgZHJpdmVyIGZvciBRRU1VIGVtdWxhdGVkIGRldmljZVwmIzM0O1xuICA0MTpcdFx0ZGVwZW5kcyBvbiBEUk0gXHUwMDI2XHUwMDI2IFBDSVxuICA0MjpcdFx0c2VsZWN0IERSTV9DTElFTlRfU0VMRUNUSU9OXG4gIDQzOlx0XHRzZWxlY3QgRFJNX0tNU19IRUxQRVJcbiAgNDQ6XHRcdHNlbGVjdCBEUk1fR0VNX1NITUVNX0hFTFBFUlxuICA0NTpcdFx0aGVscFxuICA0NjpcdFx0IFRoaXMgaXMgYSBLTVMgZHJpdmVyIGZvciBlbXVsYXRlZCBjaXJydXMgZGV2aWNlIGluIHFlbXUuXG4gIDQ3Olx0XHQgSXQgaXMgKk5PVCogaW50ZW5kZWQgZm9yIHJlYWwgY2lycnVzIGRldmljZXMuIFRoaXMgcmVxdWlyZXNcbiAgNDg6XHRcdCB0aGUgbW9kZXNldHRpbmcgdXNlcnNwYWNlIFgub3JnIGRyaXZlci5cbiAgNDk6XHRcbiAgNTA6XHRcdCBDaXJydXMgaXMgb2Jzb2xldGUsIHRoZSBoYXJkd2FyZSB3YXMgZGVzaWduZWQgaW4gdGhlIDkwaWVzXG4gIDUxOlx0XHQgYW5kIGNhbiYjMzk7dCBrZWVwIHVwIHdpdGggdG9kYXlzIG5lZWRzLiAgTW9yZSBiYWNrZ3JvdW5kOlxuICA1MjpcdFx0IGh0dHBzOi8vd3d3LmtyYXhlbC5vcmcvYmxvZy8yMDE0LzEwL3FlbXUtdXNpbmctY2lycnVzLWNvbnNpZGVyZWQtaGFybWZ1bC9cbiAgNTM6XHRcbiAgNTQ6XHRcdCBCZXR0ZXIgYWx0ZXJuYXRpdmVzIGFyZTpcbiAgNTU6XHRcdCAgIC0gc3RkdmdhIChEUk1fQk9DSFMsIHFlbXUgLXZnYSBzdGQsIGRlZmF1bHQgaW4gcWVtdSAyLjImIzQzOylcbiAgNTY6XHRcdCAgIC0gcXhsIChEUk1fUVhMLCBxZW11IC12Z2EgcXhsLCB3b3JrcyBiZXN0IHdpdGggc3BpY2UpXG4gIDU3Olx0XHQgICAtIHZpcnRpbyAoRFJNX1ZJUlRJT19HUFUpLCBxZW11IC12Z2EgdmlydGlvKVxuICA1ODpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI0IDEzOjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM2NTYKCQkJCQkJCW91dHB1dDogOTYKCQkJCQkJCXRob3VnaHRzOiA1NDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIGBjaXJydXNfcGNpX3Byb2JlYCBDaGFuZ2UgZm9yIEZ1enppbmcqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gVGhlIGNvcmUgY2hhbmdlIHJldm9sdmVzIGFyb3VuZCB0aGUgYGNpcnJ1c19wY2lfcHJvYmVgIGZ1bmN0aW9uIHdpdGhpbiB0aGUgYERSTV9DSVJSVVNfUUVNVWAgZHJpdmVyLCB3aGljaCwgaW1wb3J0YW50bHksIGRlcGVuZHMgb24gYm90aCBgRFJNYCBhbmQgYFBDSWAuIFRoaXMgaXMgYSBQQ0kgcHJvYmUgZnVuY3Rpb24sIGFuZCB0aG9zZSBhcmUgZXhlY3V0ZWQgZHVyaW5nIGRldmljZSBkZXRlY3Rpb24uIENydWNpYWxseSwgdGhlIENpcnJ1cyBWR0EgZGV2aWNlIGlzIHNvbWV0aGluZyB0aGF0ICpjYW4qIGJlIGFkZGVkIGFuZCBlbXVsYXRlZCB3aXRoaW4gUUVNVS4gVGhhdCBpbW1lZGlhdGVseSBtYWtlcyB0aGlzIGEgcG90ZW50aWFsbHkgaW50ZXJlc3RpbmcgdGFyZ2V0IGZvciBmdXp6aW5nLCBiZWNhdXNlIGl0IG1lYW5zIGl0ICppcyogcmVhY2hhYmxlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuCgpJbml0aWFsbHksIEkgaGFkIGEgcXVpY2sgdGhvdWdodCBhYm91dCB3aGV0aGVyIHRoaXMgd2FzIGEgaG90IHBhdGgsIGJ1dCBpdCYjMzk7cyBub3QuIFByb2JlIGZ1bmN0aW9ucyBhcmUgY2FsbGVkIGR1cmluZyBkZXZpY2UgaW5pdGlhbGl6YXRpb24sIHNvIHRoZSBjb25jZXJuIGlzIGlycmVsZXZhbnQuCgpUaGUgcHJvbXB0LCBvZiBjb3Vyc2UsIHJhaXNlcyByZWQgZmxhZ3MuIEl0IG1lbnRpb25zIGV4Y2x1ZGluZyBwYXRocyB1bnJlYWNoYWJsZSBpbiBRRU1VLiBIb3dldmVyLCB0aGlzIGlzIHByZWNpc2VseSBhIFFFTVUtZW11bGF0ZWQgZGV2aWNlIGRyaXZlciwgc28gdGhlIHJ1bGUgZG9lc24mIzM5O3QgYXBwbHkuIEl0JiMzOTtzIGEgYC5wcm9iZWAgY2FsbGJhY2ssIG5vdCBhIGAucmVtb3ZlYCBvciBgLnNodXRkb3duYCwgc28gdGhlIGV4Y2x1c2lvbnMgZm9yIHRlYXJkb3duIGNhbGxiYWNrcyBkb24mIzM5O3QgYXBwbHkuCgpJIG5lZWRlZCB0byBtYWtlIGEgcXVpY2sgY2hlY2suIEkmIzM5O20gbm90aW5nIHRoYXQgYGNpcnJ1c19wY2lfcHJvYmVgIGlzLCBpbiBmYWN0LCBhIHN0YXRpYyBmdW5jdGlvbi4gTm93LCB0aGUgcHJvbXB0IHN0cmVzc2VzIHByZWZlcnJpbmcgbm9uLXN0YXRpYyBmdW5jdGlvbnMgZHVlIHRvIGlubGluaW5nIGNvbnNpZGVyYXRpb25zLiBCdXQgaG9sZCBvbiwgYGNpcnJ1c19wY2lfcHJvYmVgIGlzIGEgY2FsbGJhY2sgZnVuY3Rpb24gcGFzc2VkIHRvIGBzdHJ1Y3QgcGNpX2RyaXZlcmAuIEl0ICpjYW5ub3QqIGJlIGlubGluZWQgYmVjYXVzZSBpdHMgYWRkcmVzcyBpcyB0YWtlbi4gVGhhdCBtZWFucyBpdCB3aWxsIGhhdmUgYSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzcy4gVGhpcyBtYWtlcyBpdCB1c2FibGUsIHNvIHRoZXJlJiMzOTtzIG5vIHByb2JsZW0uIFdlIGNhbiB1c2UgaXQuCgpUaGVyZSBhcmUgbm8gb3RoZXIgcmVsYXRlZCBmdW5jdGlvbnMgdGhhdCB3ZXJlIG1vZGlmaWVkLCBvbmx5IGBjaXJydXNfcGNpX3Byb2JlYC4gQWxzbywgdGhlIGRlcGVuZGVuY2llcyBmb3IgYERSTV9DSVJSVVNfUUVNVWAgYXJlIGBEUk1gIGFuZCBgUENJYC4gU2luY2UgdGhlc2UgYXJlIHNhdGlzZmllZCwgdGhlIGRlcGVuZGVuY3kgcmVxdWlyZW1lbnRzIGFyZSBtZXQuCgpMZXQmIzM5O3MgY2FsbCBzZXQtcmVzdWx0cyEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNCAxMzo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7RFJNX0NJUlJVU19RRU1VJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Y2lycnVzX3BjaV9wcm9iZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgY2hlY2sgZm9yIHRoZSBWUkFNIHNpemUgaW4gdGhlIFBDSSBwcm9iZSBmdW5jdGlvbiBvZiB0aGUgUUVNVSBDaXJydXMgVkdBIGRyaXZlci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgZHJpdmVyIHRoYXQgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoUUVNVSkuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0RSTV9DSVJSVVNfUUVNVSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2NpcnJ1c19wY2lfcHJvYmUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIGNoZWNrIGZvciB0aGUgVlJBTSBzaXplIGluIHRoZSBQQ0kgcHJvYmUgZnVuY3Rpb24gb2YgdGhlIFFFTVUgQ2lycnVzIFZHQSBkcml2ZXIuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIGRyaXZlciB0aGF0IGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKFFFTVUpLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNCAxMzo0NzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI0IDEzOjQ3PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBzaW1wbGUgbGVuZ3RoIGNoZWNrIGZvciBhIFBDSSByZXNvdXJjZSB0byBlbnN1cmUgaXQgbWF0Y2hlcyB0aGUgZXhwZWN0ZWQgQ0lSUlVTX1ZSQU1fU0laRSBiZWZvcmUgY2FsbGluZyBkZXZtX2lvcmVtYXAuIFRoaXMgcHJldmVudHMgcG90ZW50aWFsIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMgdG8gdGhlIG1hcHBlZCBWUkFNIHJlZ2lvbiBpZiB0aGUgYWN0dWFsIHJlc291cmNlIGxlbmd0aCBpcyBzbWFsbGVyIHRoYW4gZXhwZWN0ZWQuIE91dC1vZi1ib3VuZHMgYWNjZXNzZXMgYXJlIGVmZmVjdGl2ZWx5IGRldGVjdGVkIGJ5IEtBU0FOLiBUaGVyZSBpcyBubyBpbnRyb2R1Y3Rpb24gb3IgZXhwb3N1cmUgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMsIGluZm8tbGVha3MgdG8gdXNlciBzcGFjZSwgb3IgdW5pbml0aWFsaXplZCBzdHJ1Y3R1cmUgZmllbGRzLCB3aGljaCBhcmUgdGhlIHByaW1hcnkgdGFyZ2V0cyBmb3IgS01TQU4uIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnkuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5CmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kCmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikKZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuCgpDUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjoKLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlCiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOCiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUAogIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuCi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsCiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLgoKUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTiwKTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy4KQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWQpzZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrcwp0aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLgoKTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3QKdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsCmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5cwp0aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZwp1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wKZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLApjYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy4KClNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczoKMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2IKICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHMKICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC4KMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcwogICBvciBzdHJ1Y3QgZmllbGRzLgozLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzCiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuCjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzCiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy4KClNldCBOZWVkc0tNU0FOPWZhbHNlIElGOgotIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyCiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0CiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLgotIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkCiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLgotIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4KClVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGUKZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDhiZmU0MzU5MzE1ODFkYjk3MWM1OTQ4OGQyMjRlOGQ4OWMzYWVjZmMKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgTW9uIEF1ZyAyNCAxMzo0NTo0NyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmMgYi9kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jCmluZGV4IDA3NTIyMWI0MzFkMzcuLjcwYzk5NTAyNWY1MDggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYwpAQCAtNjAyLDYgJiM0Mzs2MDIsOSBAQCBzdGF0aWMgaW50IGNpcnJ1c19wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsCiAKIAlkZXYgPSAmYW1wO2NpcnJ1cy0mZ3Q7ZGV2OwogCiYjNDM7CWlmIChwY2lfcmVzb3VyY2VfbGVuKHBkZXYsIDApICE9IENJUlJVU19WUkFNX1NJWkUpCiYjNDM7CQlyZXR1cm4gLUVOT0RFVjsKJiM0MzsKIAljaXJydXMtJmd0O3ZyYW0gPSBkZXZtX2lvcmVtYXAoJmFtcDtwZGV2LSZndDtkZXYsIHBjaV9yZXNvdXJjZV9zdGFydChwZGV2LCAwKSwKIAkJCQkgICAgcGNpX3Jlc291cmNlX2xlbihwZGV2LCAwKSk7CiAJaWYgKGNpcnJ1cy0mZ3Q7dnJhbSA9PSBOVUxMKQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjQgMTM6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjAzOQoJCQkJCQkJb3V0cHV0OiAxNDUKCQkJCQkJCXRob3VnaHRzOiA0NDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgQ2lycnVzIFBDSSBSZXNvdXJjZSBMZW5ndGggQ2hlY2sqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCYjMzk7cyBiZWluZyBwcm9wb3NlZC4gSXQgYWRkcyBhIHN0cmFpZ2h0Zm9yd2FyZCBjaGVjayBpbiBgY2lycnVzX3BjaV9wcm9iZWAgd2l0aGluIHRoZSBgY2lycnVzLXFlbXUuY2AgZHJpdmVyLiBTcGVjaWZpY2FsbHksIGl0IHZlcmlmaWVzIHRoYXQgdGhlIGxlbmd0aCBvZiBQQ0kgcmVzb3VyY2UgMCBtYXRjaGVzIGBDSVJSVVNfVlJBTV9TSVpFYC4gSWYgaXQgZG9lc24mIzM5O3QsIHdlIHJldHVybiBgLUVOT0RFVmAuIFRoaXMgaXMgcHJldHR5IHN0YW5kYXJkIHByYWN0aWNlLCBhIHNpbXBsZSBib3VuZHMgb3IgbGVuZ3RoIGNoZWNrIHRvIGVuc3VyZSBldmVyeXRoaW5nJiMzOTtzIGFzIGV4cGVjdGVkLiBUaGUgcXVlc3Rpb24sIG9mIGNvdXJzZSwgaXMgaWYgdGhpcyBpbnRyb2R1Y2VzIGFueSByaXNrcy4KCkluaXRpYWxseSwgSSBjb25zaWRlcmVkIHdoZXRoZXIgdGhpcyBjaGVjayBtaWdodCBiZSByZWxhdGVkIHRvIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGV4cG9zdXJlLiBIb3dldmVyLCBhZnRlciBjYXJlZnVsIGNvbnNpZGVyYXRpb24sIGl0JiMzOTtzIGNsZWFyIHRoYXQgaXQgaXNuJiMzOTt0LiBUaGlzIGlzIHB1cmVseSBhIGNoZWNrIG9uIHRoZSBsZW5ndGggb2YgdGhlIFBDSSByZXNvdXJjZS4gSWYgdGhpcyBjaGVjayAqd2FzbiYjMzk7dCogdGhlcmUsIGFuZCB3ZSBhY2Nlc3NlZCBiZXlvbmQgdGhlIG1hcHBlZCByZWdpb24sIEtBU0FOIG9yIGFub3RoZXIgc2ltaWxhciBidWcgZGV0ZWN0b3Igd291bGQgcGljayB1cCBhbnkgb3V0LW9mLWJvdW5kcyBhY2Nlc3Nlcy4gS01TQU4sIG9uIHRoZSBvdGhlciBoYW5kLCBpcyBzcGVjaWZpY2FsbHkgZm9yIGNhdGNoaW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLCBhbmQgdGhlcmUmIzM5O3Mgbm8gaW5kaWNhdGlvbiBvZiB0aGF0IGhlcmUuCgpMZXQgbWUganVzdCBkb3VibGUtY2hlY2sgdGhlIGFjdHVhbCBjb2RlIHNuaXBwZXQ6CmBgYGMKIAlkZXYgPSAmYW1wO2NpcnJ1cy0mZ3Q7ZGV2OwogCiYjNDM7CWlmIChwY2lfcmVzb3VyY2VfbGVuKHBkZXYsIDApICE9IENJUlJVU19WUkFNX1NJWkUpCiYjNDM7CQlyZXR1cm4gLUVOT0RFVjsKJiM0MzsKIAljaXJydXMtJmd0O3ZyYW0gPSBkZXZtX2lvcmVtYXAoJmFtcDtwZGV2LSZndDtkZXYsIHBjaV9yZXNvdXJjZV9zdGFydChwZGV2LCAwKSwKIAkJCQkgICAgcGNpX3Jlc291cmNlX2xlbihwZGV2LCAwKSk7CiAJaWYgKGNpcnJ1cy0mZ3Q7dnJhbSA9PSBOVUxMKQpgYGAKCkFoLCByaWdodC4gVGhpcyBpcyBhIGZpeCBmb3IgYSBjYXNlIHdoZXJlIHRoZSByZXBvcnRlZCBsZW5ndGggb2YgdGhlIFBDSSByZXNvdXJjZSBtaWdodCBub3QgYmUgd2hhdCYjMzk7cyBleHBlY3RlZC4gSWYgaXQmIzM5O3MgKnNtYWxsZXIqIHRoYW4gYENJUlJVU19WUkFNX1NJWkVgLCBgZGV2bV9pb3JlbWFwYCB3b3VsZCBtYXAgYSBzbWFsbGVyIHJlZ2lvbi4gQW55IHN1YnNlcXVlbnQgYXR0ZW1wdHMgdG8gYWNjZXNzIGBjaXJydXMtJmd0O3ZyYW1gIHVwIHRvIGBDSVJSVVNfVlJBTV9TSVpFYCB3b3VsZCB0aGVuIHJlc3VsdCBpbiBhbiBvdXQtb2YtYm91bmRzIGFjY2Vzcy4gVGhlIGV4aXN0aW5nIEtBU0FOIHN5c3RlbSBjYW4gYWxyZWFkeSBoYW5kbGUgdGhpcy4gTm8gcmlzayBvZiBhbiB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkIGhlcmUuIFRoZXJlZm9yZSwgSSYjMzk7bSBjb25maWRlbnQgaW4gc2V0dGluZyBgTmVlZHNLTVNBTj1mYWxzZWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI0IDEzOjQ4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBzaW1wbGUgbGVuZ3RoIGNoZWNrIGZvciBhIFBDSSByZXNvdXJjZSB0byBlbnN1cmUgaXQgbWF0Y2hlcyB0aGUgZXhwZWN0ZWQgQ0lSUlVTX1ZSQU1fU0laRSBiZWZvcmUgY2FsbGluZyBkZXZtX2lvcmVtYXAuIFRoaXMgcHJldmVudHMgcG90ZW50aWFsIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMgdG8gdGhlIG1hcHBlZCBWUkFNIHJlZ2lvbiBpZiB0aGUgYWN0dWFsIHJlc291cmNlIGxlbmd0aCBpcyBzbWFsbGVyIHRoYW4gZXhwZWN0ZWQuIE91dC1vZi1ib3VuZHMgYWNjZXNzZXMgYXJlIGVmZmVjdGl2ZWx5IGRldGVjdGVkIGJ5IEtBU0FOLiBUaGVyZSBpcyBubyBpbnRyb2R1Y3Rpb24gb3IgZXhwb3N1cmUgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMsIGluZm8tbGVha3MgdG8gdXNlciBzcGFjZSwgb3IgdW5pbml0aWFsaXplZCBzdHJ1Y3R1cmUgZmllbGRzLCB3aGljaCBhcmUgdGhlIHByaW1hcnkgdGFyZ2V0cyBmb3IgS01TQU4uIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnkuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgc2ltcGxlIGxlbmd0aCBjaGVjayBmb3IgYSBQQ0kgcmVzb3VyY2UgdG8gZW5zdXJlIGl0IG1hdGNoZXMgdGhlIGV4cGVjdGVkIENJUlJVU19WUkFNX1NJWkUgYmVmb3JlIGNhbGxpbmcgZGV2bV9pb3JlbWFwLiBUaGlzIHByZXZlbnRzIHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzIHRvIHRoZSBtYXBwZWQgVlJBTSByZWdpb24gaWYgdGhlIGFjdHVhbCByZXNvdXJjZSBsZW5ndGggaXMgc21hbGxlciB0aGFuIGV4cGVjdGVkLiBPdXQtb2YtYm91bmRzIGFjY2Vzc2VzIGFyZSBlZmZlY3RpdmVseSBkZXRlY3RlZCBieSBLQVNBTi4gVGhlcmUgaXMgbm8gaW50cm9kdWN0aW9uIG9yIGV4cG9zdXJlIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLCBpbmZvLWxlYWtzIHRvIHVzZXIgc3BhY2UsIG9yIHVuaW5pdGlhbGl6ZWQgc3RydWN0dXJlIGZpZWxkcywgd2hpY2ggYXJlIHRoZSBwcmltYXJ5IHRhcmdldHMgZm9yIEtNU0FOLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0yNFQxMzo0NTo0OC4xNDc3MzM2OTlaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDAzODc0OTc5NDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiRFJNX0NJUlJVU19RRU1VXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiY2lycnVzX3BjaV9wcm9iZVwiXG4gIF0sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIHNpbXBsZSBsZW5ndGggY2hlY2sgZm9yIGEgUENJIHJlc291cmNlIHRvIGVuc3VyZSBpdCBtYXRjaGVzIHRoZSBleHBlY3RlZCBDSVJSVVNfVlJBTV9TSVpFIGJlZm9yZSBjYWxsaW5nIGRldm1faW9yZW1hcC4gVGhpcyBwcmV2ZW50cyBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyB0byB0aGUgbWFwcGVkIFZSQU0gcmVnaW9uIGlmIHRoZSBhY3R1YWwgcmVzb3VyY2UgbGVuZ3RoIGlzIHNtYWxsZXIgdGhhbiBleHBlY3RlZC4gT3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyBhcmUgZWZmZWN0aXZlbHkgZGV0ZWN0ZWQgYnkgS0FTQU4uIFRoZXJlIGlzIG5vIGludHJvZHVjdGlvbiBvciBleHBvc3VyZSBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcywgaW5mby1sZWFrcyB0byB1c2VyIHNwYWNlLCBvciB1bmluaXRpYWxpemVkIHN0cnVjdHVyZSBmaWVsZHMsIHdoaWNoIGFyZSB0aGUgcHJpbWFyeSB0YXJnZXRzIGZvciBLTVNBTi4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgY2hlY2sgZm9yIHRoZSBWUkFNIHNpemUgaW4gdGhlIFBDSSBwcm9iZSBmdW5jdGlvbiBvZiB0aGUgUUVNVSBDaXJydXMgVkdBIGRyaXZlci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgZHJpdmVyIHRoYXQgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoUUVNVSkuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI0VDEzOjQ1OjQ4LjE0Nzc0MDExOVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTE5MjM0MjM2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgOGJmZTQzNTkzMTU4MWRiOTcxYzU5NDg4ZDIyNGU4ZDg5YzNhZWNmY1xcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgTW9uIEF1ZyAyNCAxMzo0NTo0NyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jIGIvZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuY1xcbmluZGV4IDA3NTIyMWI0MzFkMzcuLjcwYzk5NTAyNWY1MDggMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuY1xcbisrKyBiL2RyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmNcXG5AQCAtNjAyLDYgKzYwMiw5IEBAIHN0YXRpYyBpbnQgY2lycnVzX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4gXFxuIFxcdGRldiA9IFxcdTAwMjZjaXJydXMtXFx1MDAzZWRldjtcXG4gXFxuK1xcdGlmIChwY2lfcmVzb3VyY2VfbGVuKHBkZXYsIDApICE9IENJUlJVU19WUkFNX1NJWkUpXFxuK1xcdFxcdHJldHVybiAtRU5PREVWO1xcbitcXG4gXFx0Y2lycnVzLVxcdTAwM2V2cmFtID0gZGV2bV9pb3JlbWFwKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIHBjaV9yZXNvdXJjZV9zdGFydChwZGV2LCAwKSxcXG4gXFx0XFx0XFx0XFx0ICAgIHBjaV9yZXNvdXJjZV9sZW4ocGRldiwgMCkpO1xcbiBcXHRpZiAoY2lycnVzLVxcdTAwM2V2cmFtID09IE5VTEwpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI0VDEzOjQ1OjQ4LjY2NzY2MzYwNVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjEzMDgwMjcwMTA0MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJEUk1fQ0lSUlVTX1FFTVVcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJjaXJydXNfcGNpX3Byb2JlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIGNoZWNrIGZvciB0aGUgVlJBTSBzaXplIGluIHRoZSBQQ0kgcHJvYmUgZnVuY3Rpb24gb2YgdGhlIFFFTVUgQ2lycnVzIFZHQSBkcml2ZXIuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIGRyaXZlciB0aGF0IGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKFFFTVUpLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA4YmZlNDM1OTMxNTgxZGI5NzFjNTk0ODhkMjI0ZThkODljM2FlY2ZjXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBBdWcgMjQgMTM6NDU6NDcgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jIGIvZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuY1xuaW5kZXggMDc1MjIxYjQzMWQzNy4uNzBjOTk1MDI1ZjUwOCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmNcbisrKyBiL2RyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmNcbkBAIC02MDIsNiArNjAyLDkgQEAgc3RhdGljIGludCBjaXJydXNfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuIFxuIFx0ZGV2ID0gXHUwMDI2Y2lycnVzLVx1MDAzZWRldjtcbiBcbitcdGlmIChwY2lfcmVzb3VyY2VfbGVuKHBkZXYsIDApICE9IENJUlJVU19WUkFNX1NJWkUpXG4rXHRcdHJldHVybiAtRU5PREVWO1xuK1xuIFx0Y2lycnVzLVx1MDAzZXZyYW0gPSBkZXZtX2lvcmVtYXAoXHUwMDI2cGRldi1cdTAwM2VkZXYsIHBjaV9yZXNvdXJjZV9zdGFydChwZGV2LCAwKSxcbiBcdFx0XHRcdCAgICBwY2lfcmVzb3VyY2VfbGVuKHBkZXYsIDApKTtcbiBcdGlmIChjaXJydXMtXHUwMDNldnJhbSA9PSBOVUxMKVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjRUMTM6NDU6NDguNjY3NjY1MTg1WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTI3OTExODEwMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBDaXJydXMgVkdBIERyaXZlciBDaGFuZ2UqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciB0aGUgQ2lycnVzIFZHQSBkcml2ZXIgaW4gUUVNVS4gVGhleSd2ZSBhZGRlZCBhIHJlc291cmNlIGxlbmd0aCBjaGVjayB3aXRoaW4gYGNpcnJ1c19wY2lfcHJvYmVgIGluIGBkcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jYC4gU3BlY2lmaWNhbGx5LCB0aGV5J3JlIHZlcmlmeWluZyB0aGF0IHRoZSBQQ0kgcmVzb3VyY2UgbGVuZ3RoIG1hdGNoZXMgYENJUlJVU19WUkFNX1NJWkVgLiBUaGlzIGlzIGEgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCBmdW5jdGlvbmFsIGNoYW5nZSwgYWltZWQgYXQgZW5zdXJpbmcgdGhlIGRyaXZlciB3b3JrcyBjb3JyZWN0bHkgd2l0aCB0aGUgZXhwZWN0ZWQgdmlkZW8gUkFNIGFsbG9jYXRpb24uIEdpdmVuIHRoYXQgaXQncyBhIGRyaXZlciBmb3IgUUVNVSdzIENpcnJ1cyBWR0EsIGl0cyByZWFjaGFiaWxpdHkgaXMgZGVmaW5pdGVseSBsaW1pdGVkIHRvIHZpcnR1YWxpemVkIHNldHVwcywgd2hpY2ggaXMgaW1wb3J0YW50IHRvIGtlZXAgaW4gbWluZC5cblxuVG8gZXZhbHVhdGUgdGhlIGltcGFjdCBwcm9wZXJseSwgSSdtIGdvaW5nIHRvIHF1aWNrbHkgY2hlY2sgdGhlIEtjb25maWcgZm9yIHRoaXMgZHJpdmVyLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGNvbmZpZ3VyYXRpb25zIGVuYWJsZSBpdCBhbmQgdGhlcmVmb3JlIHdoZXJlIHRoaXMgY2hhbmdlIHdpbGwgYWN0dWFsbHkgYmUgcmVsZXZhbnQuIEFueSBwb3RlbnRpYWwgcmVncmVzc2lvbnMgYXJlIGxpa2VseSBsaW1pdGVkIHRvIHRob3NlIHNjZW5hcmlvcywgc28gdW5kZXJzdGFuZGluZyB0aGUgY29uZmlndXJhdGlvbiBjb250ZXh0IGlzIGtleSB0byBhc3Nlc3NpbmcgdGhlIHJpc2sgYW5kIGltcGFjdCBvZiB0aGlzIG1vZGlmaWNhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjA0MiwiT3V0cHV0VG9rZW5zIjo4MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzMiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI0VDEzOjQ1OjUzLjk0Njc4ODI1NVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTcxMTAzNjgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY2lycnVzX3BjaV9wcm9iZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmM9NTY1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2RyaXZlciBjaXJydXNfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYy01NzctXFxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYzo1Nzg6c3RhdGljIGludCBjaXJydXNfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmMtNTc5LVxcdFxcdFxcdCAgICBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYz02NjY9c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIGNpcnJ1c19wY2lfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYy02NjgtXFx0LmlkX3RhYmxlID0gcGNpaWRsaXN0LFxcbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmM6NjY5OlxcdC5wcm9iZSA9IGNpcnJ1c19wY2lfcHJvYmUsXFxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYy02NzAtXFx0LnJlbW92ZSA9IGNpcnJ1c19wY2lfcmVtb3ZlLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNFQxMzo0NTo1NC4wNjM5MDE3MTNaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTMzNDg5NzEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIERSTV9DSVJSVVNfUUVNVVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2dwdS9kcm0vdGlueS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvZ3B1L2RybS90aW55L0tjb25maWc9Mjc9Y29uZmlnIERSTV9CT0NIU1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3RpbnkvS2NvbmZpZy0zOC1cXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9LY29uZmlnOjM5OmNvbmZpZyBEUk1fQ0lSUlVTX1FFTVVcXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9LY29uZmlnLTQwLVxcdHRyaXN0YXRlIFxcXCJDaXJydXMgZHJpdmVyIGZvciBRRU1VIGVtdWxhdGVkIGRldmljZVxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjRUMTM6NDU6NTQuMTU3MjU1NzM0WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTE1NTE5NDU3MTUwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgZGVwZW5kZW5jaWVzIG9mIGBEUk1fQ0lSUlVTX1FFTVVgLlxuXG4qKkFuYWx5emluZyBgRFJNX0NJUlJVU19RRU1VYCBEZXBlbmRlbmNpZXMqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZGl2ZSBpbnRvIHRoZSBkZXBlbmRlbmNpZXMgb2YgYERSTV9DSVJSVVNfUUVNVWAuIEZpcnN0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGl0IGFjdHVhbGx5ICpkb2VzKiB3aXRoaW4gdGhlIGdyZWF0ZXIgRFJNIGVjb3N5c3RlbS4gSXQncyBvYnZpb3VzbHkgcmVsYXRlZCB0byB0aGUgQ2lycnVzIGxvZ2ljIHZpcnR1YWwgZ3JhcGhpY3MgYWRhcHRlciwgYW5kIGJlaW5nIGNvdXBsZWQgd2l0aCBRRU1VIHN1Z2dlc3RzIHRoaXMgaXMgYSB2aXJ0dWFsaXphdGlvbi1zcGVjaWZpYyBkcml2ZXIuIFRoYXQgbWVhbnMgaXTigJlzIGxpa2VseSBpbnRlcmFjdGluZyB3aXRoIHRoZSBob3N0J3MgdmlydHVhbCBtYWNoaW5lIGluZnJhc3RydWN0dXJlIOKAkyBwcm9iYWJseSB1c2luZyBLVk0gb3Igc29tZXRoaW5nIHNpbWlsYXIuXG5cbkknbGwgbmVlZCB0byBleGFtaW5lIHRoZSBrZXJuZWwgY29kZSwgc3BlY2lmaWNhbGx5IHRoZSByZWxldmFudCBtYWtlZmlsZXMgYW5kIGNvbmZpZ3VyYXRpb24gZmlsZXMuIEkgZXhwZWN0IGl0IHRvIGRlcGVuZCBvbiB0aGUgY29yZSBEUk0gKERpcmVjdCBSZW5kZXJpbmcgTWFuYWdlcikgZnJhbWV3b3JrLCBvZiBjb3Vyc2UuIEJleW9uZCB0aGF0LCBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGljaCBvdGhlciBEUk0gY29tcG9uZW50cywgaWYgYW55LCBpdCBpbnRlcmZhY2VzIHdpdGg7IGlzIGl0IHVzaW5nIHRoZSBUVE0gKFRyYW5zbGF0aW9uIFRhYmxlIE1hbmFnZXIpLCBHRU0gKEdyYXBoaWNzIEV4ZWN1dGlvbiBNYW5hZ2VyKSwgb3IgS01TIChLZXJuZWwgTW9kZSBTZXR0aW5nKSBkaXJlY3RseT8gT3IgcGVyaGFwcyBpdCBoYXMgaXRzIG93biwgc3BlY2lhbGl6ZWQgbWVtb3J5IG1hbmFnZW1lbnQgbG9naWMuXG5cblRoZXJlIGNvdWxkIGJlIGNvbmRpdGlvbmFsIGRlcGVuZGVuY2llcyBiYXNlZCBvbiB0aGUgaG9zdCBjb25maWd1cmF0aW9uIG9yIHRoZSBzcGVjaWZpYyBRRU1VIHNldHVwLiBJdCB3b3VsZCBiZSBpbXBvcnRhbnQgdG8gY2hlY2sgaWYgdGhlcmUgYXJlIGFueSBzcGVjaWZpYyBRRU1VLXJlbGF0ZWQgaGVhZGVycyBvciBsaWJyYXJpZXMgcmVxdWlyZWQgZm9yIGNvbXBpbGF0aW9uLiBQbHVzLCBhbSBJIGRlYWxpbmcgd2l0aCBhIHVzZXItc3BhY2UgZHJpdmVyIG9yIGEga2VybmVsLXNwYWNlIGNvbXBvbmVudD8gVGhhdCBhZmZlY3RzIHRoZSBsaW5raW5nIGFuZCBtb2R1bGUgZGVwZW5kZW5jaWVzIHNpZ25pZmljYW50bHkuXG5cbknigJlsbCBuZWVkIHRvIHRyYWNlIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXMgd2VsbCB0byB1bmRlcnN0YW5kIHRoZSBkaWZmZXJlbnQgZmVhdHVyZXMgdGhhdCBjYW4gYmUgZW5hYmxlZCBhbmQgdGhlaXIgYXNzb2NpYXRlZCBkZXBlbmRlbmNpZXMuIFRoaXMgaXMgaW1wb3J0YW50IHRvIGVuc3VyZSBJIGhhdmUgYSBjb21wbGV0ZSBwaWN0dXJlIG9mIHRoZSBidWlsZCByZXF1aXJlbWVudHMuIEkgc2hvdWxkIHByb2JhYmx5IGFsc28gY2hlY2sgdGhlIGJ1aWxkIGxvZ3MgdG8gZ2V0IGFuIGlkZWEgb2YgdGhlIGNvbXBpbGF0aW9uIG9wdGlvbnMgYW5kIHBvdGVudGlhbCBsaW5rLXRpbWUgZGVwZW5kZW5jaWVzLiBGaW5hbGx5LCB0aGUgZG9jdW1lbnRhdGlvbiBhbmQgYW55IG1haWxpbmcgbGlzdCBhcmNoaXZlcyB3b3VsZCBiZSBteSBuZXh0IHN0ZXAgaWYgSSBoaXQgYW55IHJvYWRibG9ja3MuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI4NTIsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiLCJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjRUMTM6NDc6NDkuNjc2NzE1MDY0WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Njk4NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9ncHUvZHJtL3RpbnkvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAzOSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAzOTpcXHRjb25maWcgRFJNX0NJUlJVU19RRU1VXFxuICA0MDpcXHRcXHR0cmlzdGF0ZSBcXFwiQ2lycnVzIGRyaXZlciBmb3IgUUVNVSBlbXVsYXRlZCBkZXZpY2VcXFwiXFxuICA0MTpcXHRcXHRkZXBlbmRzIG9uIERSTSBcXHUwMDI2XFx1MDAyNiBQQ0lcXG4gIDQyOlxcdFxcdHNlbGVjdCBEUk1fQ0xJRU5UX1NFTEVDVElPTlxcbiAgNDM6XFx0XFx0c2VsZWN0IERSTV9LTVNfSEVMUEVSXFxuICA0NDpcXHRcXHRzZWxlY3QgRFJNX0dFTV9TSE1FTV9IRUxQRVJcXG4gIDQ1OlxcdFxcdGhlbHBcXG4gIDQ2OlxcdFxcdCBUaGlzIGlzIGEgS01TIGRyaXZlciBmb3IgZW11bGF0ZWQgY2lycnVzIGRldmljZSBpbiBxZW11LlxcbiAgNDc6XFx0XFx0IEl0IGlzICpOT1QqIGludGVuZGVkIGZvciByZWFsIGNpcnJ1cyBkZXZpY2VzLiBUaGlzIHJlcXVpcmVzXFxuICA0ODpcXHRcXHQgdGhlIG1vZGVzZXR0aW5nIHVzZXJzcGFjZSBYLm9yZyBkcml2ZXIuXFxuICA0OTpcXHRcXG4gIDUwOlxcdFxcdCBDaXJydXMgaXMgb2Jzb2xldGUsIHRoZSBoYXJkd2FyZSB3YXMgZGVzaWduZWQgaW4gdGhlIDkwaWVzXFxuICA1MTpcXHRcXHQgYW5kIGNhbid0IGtlZXAgdXAgd2l0aCB0b2RheXMgbmVlZHMuICBNb3JlIGJhY2tncm91bmQ6XFxuICA1MjpcXHRcXHQgaHR0cHM6Ly93d3cua3JheGVsLm9yZy9ibG9nLzIwMTQvMTAvcWVtdS11c2luZy1jaXJydXMtY29uc2lkZXJlZC1oYXJtZnVsL1xcbiAgNTM6XFx0XFxuICA1NDpcXHRcXHQgQmV0dGVyIGFsdGVybmF0aXZlcyBhcmU6XFxuICA1NTpcXHRcXHQgICAtIHN0ZHZnYSAoRFJNX0JPQ0hTLCBxZW11IC12Z2Egc3RkLCBkZWZhdWx0IGluIHFlbXUgMi4yKylcXG4gIDU2OlxcdFxcdCAgIC0gcXhsIChEUk1fUVhMLCBxZW11IC12Z2EgcXhsLCB3b3JrcyBiZXN0IHdpdGggc3BpY2UpXFxuICA1NzpcXHRcXHQgICAtIHZpcnRpbyAoRFJNX1ZJUlRJT19HUFUpLCBxZW11IC12Z2EgdmlydGlvKVxcbiAgNTg6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI0VDEzOjQ3OjQ5LjY3Njc4NjM2NFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjk2MTgyNzczODksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIGBjaXJydXNfcGNpX3Byb2JlYCBDaGFuZ2UgZm9yIEZ1enppbmcqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIFRoZSBjb3JlIGNoYW5nZSByZXZvbHZlcyBhcm91bmQgdGhlIGBjaXJydXNfcGNpX3Byb2JlYCBmdW5jdGlvbiB3aXRoaW4gdGhlIGBEUk1fQ0lSUlVTX1FFTVVgIGRyaXZlciwgd2hpY2gsIGltcG9ydGFudGx5LCBkZXBlbmRzIG9uIGJvdGggYERSTWAgYW5kIGBQQ0lgLiBUaGlzIGlzIGEgUENJIHByb2JlIGZ1bmN0aW9uLCBhbmQgdGhvc2UgYXJlIGV4ZWN1dGVkIGR1cmluZyBkZXZpY2UgZGV0ZWN0aW9uLiBDcnVjaWFsbHksIHRoZSBDaXJydXMgVkdBIGRldmljZSBpcyBzb21ldGhpbmcgdGhhdCAqY2FuKiBiZSBhZGRlZCBhbmQgZW11bGF0ZWQgd2l0aGluIFFFTVUuIFRoYXQgaW1tZWRpYXRlbHkgbWFrZXMgdGhpcyBhIHBvdGVudGlhbGx5IGludGVyZXN0aW5nIHRhcmdldCBmb3IgZnV6emluZywgYmVjYXVzZSBpdCBtZWFucyBpdCAqaXMqIHJlYWNoYWJsZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LlxuXG5Jbml0aWFsbHksIEkgaGFkIGEgcXVpY2sgdGhvdWdodCBhYm91dCB3aGV0aGVyIHRoaXMgd2FzIGEgaG90IHBhdGgsIGJ1dCBpdCdzIG5vdC4gUHJvYmUgZnVuY3Rpb25zIGFyZSBjYWxsZWQgZHVyaW5nIGRldmljZSBpbml0aWFsaXphdGlvbiwgc28gdGhlIGNvbmNlcm4gaXMgaXJyZWxldmFudC5cblxuVGhlIHByb21wdCwgb2YgY291cnNlLCByYWlzZXMgcmVkIGZsYWdzLiBJdCBtZW50aW9ucyBleGNsdWRpbmcgcGF0aHMgdW5yZWFjaGFibGUgaW4gUUVNVS4gSG93ZXZlciwgdGhpcyBpcyBwcmVjaXNlbHkgYSBRRU1VLWVtdWxhdGVkIGRldmljZSBkcml2ZXIsIHNvIHRoZSBydWxlIGRvZXNuJ3QgYXBwbHkuIEl0J3MgYSBgLnByb2JlYCBjYWxsYmFjaywgbm90IGEgYC5yZW1vdmVgIG9yIGAuc2h1dGRvd25gLCBzbyB0aGUgZXhjbHVzaW9ucyBmb3IgdGVhcmRvd24gY2FsbGJhY2tzIGRvbid0IGFwcGx5LlxuXG5JIG5lZWRlZCB0byBtYWtlIGEgcXVpY2sgY2hlY2suIEknbSBub3RpbmcgdGhhdCBgY2lycnVzX3BjaV9wcm9iZWAgaXMsIGluIGZhY3QsIGEgc3RhdGljIGZ1bmN0aW9uLiBOb3csIHRoZSBwcm9tcHQgc3RyZXNzZXMgcHJlZmVycmluZyBub24tc3RhdGljIGZ1bmN0aW9ucyBkdWUgdG8gaW5saW5pbmcgY29uc2lkZXJhdGlvbnMuIEJ1dCBob2xkIG9uLCBgY2lycnVzX3BjaV9wcm9iZWAgaXMgYSBjYWxsYmFjayBmdW5jdGlvbiBwYXNzZWQgdG8gYHN0cnVjdCBwY2lfZHJpdmVyYC4gSXQgKmNhbm5vdCogYmUgaW5saW5lZCBiZWNhdXNlIGl0cyBhZGRyZXNzIGlzIHRha2VuLiBUaGF0IG1lYW5zIGl0IHdpbGwgaGF2ZSBhIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzLiBUaGlzIG1ha2VzIGl0IHVzYWJsZSwgc28gdGhlcmUncyBubyBwcm9ibGVtLiBXZSBjYW4gdXNlIGl0LlxuXG5UaGVyZSBhcmUgbm8gb3RoZXIgcmVsYXRlZCBmdW5jdGlvbnMgdGhhdCB3ZXJlIG1vZGlmaWVkLCBvbmx5IGBjaXJydXNfcGNpX3Byb2JlYC4gQWxzbywgdGhlIGRlcGVuZGVuY2llcyBmb3IgYERSTV9DSVJSVVNfUUVNVWAgYXJlIGBEUk1gIGFuZCBgUENJYC4gU2luY2UgdGhlc2UgYXJlIHNhdGlzZmllZCwgdGhlIGRlcGVuZGVuY3kgcmVxdWlyZW1lbnRzIGFyZSBtZXQuXG5cbkxldCdzIGNhbGwgc2V0LXJlc3VsdHMhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM2NTYsIk91dHB1dFRva2VucyI6OTYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NDQsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNFQxMzo0Nzo1OS4yOTUwNjY5NDNaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3NTI5NDg1MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiRFJNX0NJUlJVU19RRU1VXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiY2lycnVzX3BjaV9wcm9iZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBjaGVjayBmb3IgdGhlIFZSQU0gc2l6ZSBpbiB0aGUgUENJIHByb2JlIGZ1bmN0aW9uIG9mIHRoZSBRRU1VIENpcnJ1cyBWR0EgZHJpdmVyLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSBkcml2ZXIgdGhhdCBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChRRU1VKS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJEUk1fQ0lSUlVTX1FFTVVcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJjaXJydXNfcGNpX3Byb2JlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIGNoZWNrIGZvciB0aGUgVlJBTSBzaXplIGluIHRoZSBQQ0kgcHJvYmUgZnVuY3Rpb24gb2YgdGhlIFFFTVUgQ2lycnVzIFZHQSBkcml2ZXIuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIGRyaXZlciB0aGF0IGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKFFFTVUpLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNFQxMzo0Nzo1OS40NzAzNjgxNzVaIiwiU2VxIjoxMCwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkwNjQ4NDgxOTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNFQxMzo0Nzo1OS40NzA5OTE0MjVaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6OTA2NDIxNzY0NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIHNpbXBsZSBsZW5ndGggY2hlY2sgZm9yIGEgUENJIHJlc291cmNlIHRvIGVuc3VyZSBpdCBtYXRjaGVzIHRoZSBleHBlY3RlZCBDSVJSVVNfVlJBTV9TSVpFIGJlZm9yZSBjYWxsaW5nIGRldm1faW9yZW1hcC4gVGhpcyBwcmV2ZW50cyBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyB0byB0aGUgbWFwcGVkIFZSQU0gcmVnaW9uIGlmIHRoZSBhY3R1YWwgcmVzb3VyY2UgbGVuZ3RoIGlzIHNtYWxsZXIgdGhhbiBleHBlY3RlZC4gT3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyBhcmUgZWZmZWN0aXZlbHkgZGV0ZWN0ZWQgYnkgS0FTQU4uIFRoZXJlIGlzIG5vIGludHJvZHVjdGlvbiBvciBleHBvc3VyZSBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcywgaW5mby1sZWFrcyB0byB1c2VyIHNwYWNlLCBvciB1bmluaXRpYWxpemVkIHN0cnVjdHVyZSBmaWVsZHMsIHdoaWNoIGFyZSB0aGUgcHJpbWFyeSB0YXJnZXRzIGZvciBLTVNBTi4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnlcbmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kXG5kZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpXG5mdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy5cblxuQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46XG4tIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGVcbiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOXG4gIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVBcbiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy5cbi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsXG4gIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy5cblxuUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTixcbkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuXG5BIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZXG5zZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrc1xudGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi5cblxuTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3RcbnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLFxuYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzXG50aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZ1xudW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sXG5mbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsXG5jYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy5cblxuU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOlxuMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2JcbiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzXG4gICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLlxuMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlc1xuICAgb3Igc3RydWN0IGZpZWxkcy5cbjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHNcbiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuXG40LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2Vzc1xuICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjpcbi0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXJcbiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0XG4gIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS5cbi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWRcbiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLlxuLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuXG5cblVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGVcbmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA4YmZlNDM1OTMxNTgxZGI5NzFjNTk0ODhkMjI0ZThkODljM2FlY2ZjXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBBdWcgMjQgMTM6NDU6NDcgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jIGIvZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuY1xuaW5kZXggMDc1MjIxYjQzMWQzNy4uNzBjOTk1MDI1ZjUwOCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmNcbisrKyBiL2RyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmNcbkBAIC02MDIsNiArNjAyLDkgQEAgc3RhdGljIGludCBjaXJydXNfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuIFxuIFx0ZGV2ID0gXHUwMDI2Y2lycnVzLVx1MDAzZWRldjtcbiBcbitcdGlmIChwY2lfcmVzb3VyY2VfbGVuKHBkZXYsIDApICE9IENJUlJVU19WUkFNX1NJWkUpXG4rXHRcdHJldHVybiAtRU5PREVWO1xuK1xuIFx0Y2lycnVzLVx1MDAzZXZyYW0gPSBkZXZtX2lvcmVtYXAoXHUwMDI2cGRldi1cdTAwM2VkZXYsIHBjaV9yZXNvdXJjZV9zdGFydChwZGV2LCAwKSxcbiBcdFx0XHRcdCAgICBwY2lfcmVzb3VyY2VfbGVuKHBkZXYsIDApKTtcbiBcdGlmIChjaXJydXMtXHUwMDNldnJhbSA9PSBOVUxMKVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjRUMTM6NDc6NTkuNDcwOTkyMjk1WiIsIlNlcSI6MTIsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjkwNjQxNzczMzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgQ2lycnVzIFBDSSBSZXNvdXJjZSBMZW5ndGggQ2hlY2sqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQncyBiZWluZyBwcm9wb3NlZC4gSXQgYWRkcyBhIHN0cmFpZ2h0Zm9yd2FyZCBjaGVjayBpbiBgY2lycnVzX3BjaV9wcm9iZWAgd2l0aGluIHRoZSBgY2lycnVzLXFlbXUuY2AgZHJpdmVyLiBTcGVjaWZpY2FsbHksIGl0IHZlcmlmaWVzIHRoYXQgdGhlIGxlbmd0aCBvZiBQQ0kgcmVzb3VyY2UgMCBtYXRjaGVzIGBDSVJSVVNfVlJBTV9TSVpFYC4gSWYgaXQgZG9lc24ndCwgd2UgcmV0dXJuIGAtRU5PREVWYC4gVGhpcyBpcyBwcmV0dHkgc3RhbmRhcmQgcHJhY3RpY2UsIGEgc2ltcGxlIGJvdW5kcyBvciBsZW5ndGggY2hlY2sgdG8gZW5zdXJlIGV2ZXJ5dGhpbmcncyBhcyBleHBlY3RlZC4gVGhlIHF1ZXN0aW9uLCBvZiBjb3Vyc2UsIGlzIGlmIHRoaXMgaW50cm9kdWNlcyBhbnkgcmlza3MuXG5cbkluaXRpYWxseSwgSSBjb25zaWRlcmVkIHdoZXRoZXIgdGhpcyBjaGVjayBtaWdodCBiZSByZWxhdGVkIHRvIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGV4cG9zdXJlLiBIb3dldmVyLCBhZnRlciBjYXJlZnVsIGNvbnNpZGVyYXRpb24sIGl0J3MgY2xlYXIgdGhhdCBpdCBpc24ndC4gVGhpcyBpcyBwdXJlbHkgYSBjaGVjayBvbiB0aGUgbGVuZ3RoIG9mIHRoZSBQQ0kgcmVzb3VyY2UuIElmIHRoaXMgY2hlY2sgKndhc24ndCogdGhlcmUsIGFuZCB3ZSBhY2Nlc3NlZCBiZXlvbmQgdGhlIG1hcHBlZCByZWdpb24sIEtBU0FOIG9yIGFub3RoZXIgc2ltaWxhciBidWcgZGV0ZWN0b3Igd291bGQgcGljayB1cCBhbnkgb3V0LW9mLWJvdW5kcyBhY2Nlc3Nlcy4gS01TQU4sIG9uIHRoZSBvdGhlciBoYW5kLCBpcyBzcGVjaWZpY2FsbHkgZm9yIGNhdGNoaW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLCBhbmQgdGhlcmUncyBubyBpbmRpY2F0aW9uIG9mIHRoYXQgaGVyZS5cblxuTGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrIHRoZSBhY3R1YWwgY29kZSBzbmlwcGV0OlxuYGBgY1xuIFx0ZGV2ID0gXHUwMDI2Y2lycnVzLVx1MDAzZWRldjtcbiBcbitcdGlmIChwY2lfcmVzb3VyY2VfbGVuKHBkZXYsIDApICE9IENJUlJVU19WUkFNX1NJWkUpXG4rXHRcdHJldHVybiAtRU5PREVWO1xuK1xuIFx0Y2lycnVzLVx1MDAzZXZyYW0gPSBkZXZtX2lvcmVtYXAoXHUwMDI2cGRldi1cdTAwM2VkZXYsIHBjaV9yZXNvdXJjZV9zdGFydChwZGV2LCAwKSxcbiBcdFx0XHRcdCAgICBwY2lfcmVzb3VyY2VfbGVuKHBkZXYsIDApKTtcbiBcdGlmIChjaXJydXMtXHUwMDNldnJhbSA9PSBOVUxMKVxuYGBgXG5cbkFoLCByaWdodC4gVGhpcyBpcyBhIGZpeCBmb3IgYSBjYXNlIHdoZXJlIHRoZSByZXBvcnRlZCBsZW5ndGggb2YgdGhlIFBDSSByZXNvdXJjZSBtaWdodCBub3QgYmUgd2hhdCdzIGV4cGVjdGVkLiBJZiBpdCdzICpzbWFsbGVyKiB0aGFuIGBDSVJSVVNfVlJBTV9TSVpFYCwgYGRldm1faW9yZW1hcGAgd291bGQgbWFwIGEgc21hbGxlciByZWdpb24uIEFueSBzdWJzZXF1ZW50IGF0dGVtcHRzIHRvIGFjY2VzcyBgY2lycnVzLVx1MDAzZXZyYW1gIHVwIHRvIGBDSVJSVVNfVlJBTV9TSVpFYCB3b3VsZCB0aGVuIHJlc3VsdCBpbiBhbiBvdXQtb2YtYm91bmRzIGFjY2Vzcy4gVGhlIGV4aXN0aW5nIEtBU0FOIHN5c3RlbSBjYW4gYWxyZWFkeSBoYW5kbGUgdGhpcy4gTm8gcmlzayBvZiBhbiB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkIGhlcmUuIFRoZXJlZm9yZSwgSSdtIGNvbmZpZGVudCBpbiBzZXR0aW5nIGBOZWVkc0tNU0FOPWZhbHNlYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjAzOSwiT3V0cHV0VG9rZW5zIjoxNDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NDQsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNFQxMzo0ODowOC41MzUxNzQzMTJaIiwiU2VxIjoxMywiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMjExMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBzaW1wbGUgbGVuZ3RoIGNoZWNrIGZvciBhIFBDSSByZXNvdXJjZSB0byBlbnN1cmUgaXQgbWF0Y2hlcyB0aGUgZXhwZWN0ZWQgQ0lSUlVTX1ZSQU1fU0laRSBiZWZvcmUgY2FsbGluZyBkZXZtX2lvcmVtYXAuIFRoaXMgcHJldmVudHMgcG90ZW50aWFsIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMgdG8gdGhlIG1hcHBlZCBWUkFNIHJlZ2lvbiBpZiB0aGUgYWN0dWFsIHJlc291cmNlIGxlbmd0aCBpcyBzbWFsbGVyIHRoYW4gZXhwZWN0ZWQuIE91dC1vZi1ib3VuZHMgYWNjZXNzZXMgYXJlIGVmZmVjdGl2ZWx5IGRldGVjdGVkIGJ5IEtBU0FOLiBUaGVyZSBpcyBubyBpbnRyb2R1Y3Rpb24gb3IgZXhwb3N1cmUgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMsIGluZm8tbGVha3MgdG8gdXNlciBzcGFjZSwgb3IgdW5pbml0aWFsaXplZCBzdHJ1Y3R1cmUgZmllbGRzLCB3aGljaCBhcmUgdGhlIHByaW1hcnkgdGFyZ2V0cyBmb3IgS01TQU4uIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnkuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIHNpbXBsZSBsZW5ndGggY2hlY2sgZm9yIGEgUENJIHJlc291cmNlIHRvIGVuc3VyZSBpdCBtYXRjaGVzIHRoZSBleHBlY3RlZCBDSVJSVVNfVlJBTV9TSVpFIGJlZm9yZSBjYWxsaW5nIGRldm1faW9yZW1hcC4gVGhpcyBwcmV2ZW50cyBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyB0byB0aGUgbWFwcGVkIFZSQU0gcmVnaW9uIGlmIHRoZSBhY3R1YWwgcmVzb3VyY2UgbGVuZ3RoIGlzIHNtYWxsZXIgdGhhbiBleHBlY3RlZC4gT3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyBhcmUgZWZmZWN0aXZlbHkgZGV0ZWN0ZWQgYnkgS0FTQU4uIFRoZXJlIGlzIG5vIGludHJvZHVjdGlvbiBvciBleHBvc3VyZSBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcywgaW5mby1sZWFrcyB0byB1c2VyIHNwYWNlLCBvciB1bmluaXRpYWxpemVkIHN0cnVjdHVyZSBmaWVsZHMsIHdoaWNoIGFyZSB0aGUgcHJpbWFyeSB0YXJnZXRzIGZvciBLTVNBTi4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow9fjdm[1] Phase: Succeeded StartedAt: 2026-08-24 13:48:20 +0000 UTC FinishedAt: 2026-08-24 13:48:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9fjdm[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-24 13:48:20 +0000 UTC FinishedAt: 2026-08-24 13:48:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9fjdm[2] Phase: Succeeded StartedAt: 2026-08-24 13:48:20 +0000 UTC FinishedAt: 2026-08-24 16:22:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9fjdm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_CIRRUS_QEMU"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cirrus_pci_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_CIRRUS_QEMU"],"series_id":"655d3526-270b-4af4-acd2-6005a304fdbb","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-24 13:48:20 +0000 UTC FinishedAt: 2026-08-24 16:22:32 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_CIRRUS_QEMU"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cirrus_pci_probe"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_CIRRUS_QEMU"],"series_id":"655d3526-270b-4af4-acd2-6005a304fdbb","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow9fjdm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_CIRRUS_QEMU"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cirrus_pci_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_CIRRUS_QEMU"],"series_id":"655d3526-270b-4af4-acd2-6005a304fdbb","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-24 13:48:20 +0000 UTC FinishedAt: 2026-08-24 13:48:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9fjdm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_CIRRUS_QEMU"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cirrus_pci_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_CIRRUS_QEMU"],"series_id":"655d3526-270b-4af4-acd2-6005a304fdbb","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-24 13:48:20 +0000 UTC FinishedAt: 2026-08-24 13:48:34 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_CIRRUS_QEMU"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.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-workflow9fjdm/series-workflow9fjdm-convert-artifact-1559990793/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9fjdm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_CIRRUS_QEMU"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cirrus_pci_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_CIRRUS_QEMU"],"series_id":"655d3526-270b-4af4-acd2-6005a304fdbb","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-24 13:48:42 +0000 UTC FinishedAt: 2026-08-24 14:08:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9fjdm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_CIRRUS_QEMU"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cirrus_pci_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_CIRRUS_QEMU"],"series_id":"655d3526-270b-4af4-acd2-6005a304fdbb","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-24 13:48:42 +0000 UTC FinishedAt: 2026-08-24 14:08:42 +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:*e649b07d-ff83-4c3b-afa4-3eacb27aa614,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-workflow9fjdm/series-workflow9fjdm-convert-artifact-1559990793/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": "a00549b7-9ed6-45b0-8841-5ee19d0743d5", "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-workflow9fjdm/series-workflow9fjdm-build-action-1637108455/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9fjdm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_CIRRUS_QEMU"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cirrus_pci_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_CIRRUS_QEMU"],"series_id":"655d3526-270b-4af4-acd2-6005a304fdbb","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-24 13:48:42 +0000 UTC FinishedAt: 2026-08-24 14:08:32 +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:*e649b07d-ff83-4c3b-afa4-3eacb27aa614,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-workflow9fjdm/series-workflow9fjdm-convert-artifact-1559990793/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": "a00549b7-9ed6-45b0-8841-5ee19d0743d5", "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-workflow9fjdm/series-workflow9fjdm-build-action-1637108455/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9fjdm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_CIRRUS_QEMU"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cirrus_pci_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_CIRRUS_QEMU"],"series_id":"655d3526-270b-4af4-acd2-6005a304fdbb","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-24 14:08:42 +0000 UTC FinishedAt: 2026-08-24 14:08:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9fjdm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_CIRRUS_QEMU"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cirrus_pci_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_CIRRUS_QEMU"],"series_id":"655d3526-270b-4af4-acd2-6005a304fdbb","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-24 14:08:42 +0000 UTC FinishedAt: 2026-08-24 14:08:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9fjdm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_CIRRUS_QEMU"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cirrus_pci_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_CIRRUS_QEMU"],"series_id":"655d3526-270b-4af4-acd2-6005a304fdbb","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-24 14:08:42 +0000 UTC FinishedAt: 2026-08-24 14:08:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9fjdm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_CIRRUS_QEMU"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cirrus_pci_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_CIRRUS_QEMU"],"series_id":"655d3526-270b-4af4-acd2-6005a304fdbb","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-24 14:08:42 +0000 UTC FinishedAt: 2026-08-24 14:08:48 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_CIRRUS_QEMU"],"series_id":"655d3526-270b-4af4-acd2-6005a304fdbb","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.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-workflow9fjdm/series-workflow9fjdm-convert-artifact-3539142172/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9fjdm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_CIRRUS_QEMU"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cirrus_pci_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_CIRRUS_QEMU"],"series_id":"655d3526-270b-4af4-acd2-6005a304fdbb","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-24 14:08:52 +0000 UTC FinishedAt: 2026-08-24 14:10:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9fjdm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_CIRRUS_QEMU"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cirrus_pci_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_CIRRUS_QEMU"],"series_id":"655d3526-270b-4af4-acd2-6005a304fdbb","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-24 14:08:52 +0000 UTC FinishedAt: 2026-08-24 14:10:32 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*a00549b7-9ed6-45b0-8841-5ee19d0743d5,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-workflow9fjdm/series-workflow9fjdm-build-action-1637108455/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-workflow9fjdm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_CIRRUS_QEMU"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cirrus_pci_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_CIRRUS_QEMU"],"series_id":"655d3526-270b-4af4-acd2-6005a304fdbb","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-24 14:10:42 +0000 UTC FinishedAt: 2026-08-24 14:10:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9fjdm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_CIRRUS_QEMU"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cirrus_pci_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_CIRRUS_QEMU"],"series_id":"655d3526-270b-4af4-acd2-6005a304fdbb","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-24 14:10:42 +0000 UTC FinishedAt: 2026-08-24 14:10:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9fjdm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_CIRRUS_QEMU"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cirrus_pci_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_CIRRUS_QEMU"],"series_id":"655d3526-270b-4af4-acd2-6005a304fdbb","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-24 14:10:42 +0000 UTC FinishedAt: 2026-08-24 14:34:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9fjdm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_CIRRUS_QEMU"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cirrus_pci_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_CIRRUS_QEMU"],"series_id":"655d3526-270b-4af4-acd2-6005a304fdbb","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-24 14:10:42 +0000 UTC FinishedAt: 2026-08-24 14:34:43 +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:*e649b07d-ff83-4c3b-afa4-3eacb27aa614,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-workflow9fjdm/series-workflow9fjdm-convert-artifact-3539142172/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": "447dc5de-af79-4248-8b47-97353e3feaea", "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-workflow9fjdm/series-workflow9fjdm-build-action-1122543992/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9fjdm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_CIRRUS_QEMU"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cirrus_pci_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_CIRRUS_QEMU"],"series_id":"655d3526-270b-4af4-acd2-6005a304fdbb","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-24 14:10:42 +0000 UTC FinishedAt: 2026-08-24 14:34:20 +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:*e649b07d-ff83-4c3b-afa4-3eacb27aa614,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-workflow9fjdm/series-workflow9fjdm-convert-artifact-3539142172/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": "447dc5de-af79-4248-8b47-97353e3feaea", "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-workflow9fjdm/series-workflow9fjdm-build-action-1122543992/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9fjdm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_CIRRUS_QEMU"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cirrus_pci_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_CIRRUS_QEMU"],"series_id":"655d3526-270b-4af4-acd2-6005a304fdbb","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-24 14:34:43 +0000 UTC FinishedAt: 2026-08-24 14:34:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9fjdm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_CIRRUS_QEMU"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cirrus_pci_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_CIRRUS_QEMU"],"series_id":"655d3526-270b-4af4-acd2-6005a304fdbb","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-24 14:34:43 +0000 UTC FinishedAt: 2026-08-24 14:34:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9fjdm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_CIRRUS_QEMU"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cirrus_pci_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_CIRRUS_QEMU"],"series_id":"655d3526-270b-4af4-acd2-6005a304fdbb","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-24 14:34:43 +0000 UTC FinishedAt: 2026-08-24 14:36:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9fjdm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_CIRRUS_QEMU"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cirrus_pci_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_CIRRUS_QEMU"],"series_id":"655d3526-270b-4af4-acd2-6005a304fdbb","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-24 14:34:43 +0000 UTC FinishedAt: 2026-08-24 14:36:27 +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:*447dc5de-af79-4248-8b47-97353e3feaea,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-workflow9fjdm/series-workflow9fjdm-build-action-1122543992/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-workflow9fjdm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_CIRRUS_QEMU"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cirrus_pci_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_CIRRUS_QEMU"],"series_id":"655d3526-270b-4af4-acd2-6005a304fdbb","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-24 14:36:36 +0000 UTC FinishedAt: 2026-08-24 16:22:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9fjdm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_CIRRUS_QEMU"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cirrus_pci_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_CIRRUS_QEMU"],"series_id":"655d3526-270b-4af4-acd2-6005a304fdbb","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-24 14:36:36 +0000 UTC FinishedAt: 2026-08-24 16:22:32 +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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cirrus_pci_probe"],"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:*a00549b7-9ed6-45b0-8841-5ee19d0743d5,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*447dc5de-af79-4248-8b47-97353e3feaea,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-workflow9fjdm/series-workflow9fjdm-build-action-1637108455/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-workflow9fjdm/series-workflow9fjdm-build-action-1122543992/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow9fjdm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_CIRRUS_QEMU"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cirrus_pci_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_CIRRUS_QEMU"],"series_id":"655d3526-270b-4af4-acd2-6005a304fdbb","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-24 14:36:36 +0000 UTC FinishedAt: 2026-08-24 14:36:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9fjdm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_CIRRUS_QEMU"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cirrus_pci_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_CIRRUS_QEMU"],"series_id":"655d3526-270b-4af4-acd2-6005a304fdbb","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-24 14:36:36 +0000 UTC FinishedAt: 2026-08-24 14:36:42 +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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cirrus_pci_probe"],"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-workflow9fjdm/series-workflow9fjdm-convert-artifact-3151115493/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9fjdm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_CIRRUS_QEMU"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cirrus_pci_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_CIRRUS_QEMU"],"series_id":"655d3526-270b-4af4-acd2-6005a304fdbb","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-24 14:36:36 +0000 UTC FinishedAt: 2026-08-24 14:36:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9fjdm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_CIRRUS_QEMU"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cirrus_pci_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_CIRRUS_QEMU"],"series_id":"655d3526-270b-4af4-acd2-6005a304fdbb","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-24 14:36:36 +0000 UTC FinishedAt: 2026-08-24 14:36:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9fjdm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_CIRRUS_QEMU"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cirrus_pci_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_CIRRUS_QEMU"],"series_id":"655d3526-270b-4af4-acd2-6005a304fdbb","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-24 14:36:36 +0000 UTC FinishedAt: 2026-08-24 14:36:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9fjdm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_CIRRUS_QEMU"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cirrus_pci_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_CIRRUS_QEMU"],"series_id":"655d3526-270b-4af4-acd2-6005a304fdbb","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-24 14:36:46 +0000 UTC FinishedAt: 2026-08-24 16:22:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9fjdm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_CIRRUS_QEMU"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cirrus_pci_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_CIRRUS_QEMU"],"series_id":"655d3526-270b-4af4-acd2-6005a304fdbb","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-24 14:36:46 +0000 UTC FinishedAt: 2026-08-24 16:22:22 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*a00549b7-9ed6-45b0-8841-5ee19d0743d5,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*447dc5de-af79-4248-8b47-97353e3feaea,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-workflow9fjdm/series-workflow9fjdm-build-action-1637108455/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-workflow9fjdm/series-workflow9fjdm-build-action-1122543992/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-workflow9fjdm/series-workflow9fjdm-convert-artifact-3151115493/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,}