Name: series-workflowqmcng Phase: Succeeded StartedAt: 2026-06-26 15:42:06 +0000 UTC FinishedAt: 2026-06-26 20:41:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqmcng[0] Phase: Succeeded StartedAt: 2026-06-26 15:42:06 +0000 UTC FinishedAt: 2026-06-26 16:00:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqmcng[0].run-triage Phase: Succeeded StartedAt: 2026-06-26 15:42:06 +0000 UTC FinishedAt: 2026-06-26 16:00:18 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "92010229c4b38897f1319d260162d2f96925ed17", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BLK_DEV_INTEGRITY", "IO_URING" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "92010229c4b38897f1319d260162d2f96925ed17", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BLK_DEV_INTEGRITY", "IO_URING" ], "series_id": "4d7d15fe-d4ad-4aa2-bdf2-096f44e76a95" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "__blkdev_direct_IO" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDE1OjU4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JMS19ERVZfSU5URUdSSVRZJiMzNDssCiAgICAmIzM0O0lPX1VSSU5HJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7X19ibGtkZXZfZGlyZWN0X0lPJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGVycm9yIGhhbmRsaW5nIGluIGJsb2NrIGRldmljZSBkaXJlY3QgSS9PIHdoZW4gYmlvX2ludGVncml0eV9tYXBfaXRlciBmYWlscy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgYmxvY2sgbGF5ZXIgbG9naWMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMTU6NTg8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBjMmI0ZTU4MTQzNTRjNTgxYzUyYmZiODRlZTk0NmFiYjAxNTYzMTc1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBKdW4gMjYgMTU6NTg6NDggMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvYmxvY2svZm9wcy5jIGIvYmxvY2svZm9wcy5jXG5pbmRleCBiYjY2NDJiNDU5MzdjZS4uOWYxNmI5OTVjNjBjNmUgMTAwNjQ0XG4tLS0gYS9ibG9jay9mb3BzLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2Jsb2NrL2ZvcHMuY1xuQEAgLTIzOSw4ICYjNDM7MjM5LDExIEBAIHN0YXRpYyBzc2l6ZV90IF9fYmxrZGV2X2RpcmVjdF9JTyhzdHJ1Y3Qga2lvY2IgKmlvY2IsIHN0cnVjdCBpb3ZfaXRlciAqaXRlcixcbiBcdFx0fVxuIFx0XHRpZiAoaW9jYi1cdTAwM2VraV9mbGFncyBcdTAwMjYgSU9DQl9IQVNfTUVUQURBVEEpIHtcbiBcdFx0XHRyZXQgPSBiaW9faW50ZWdyaXR5X21hcF9pdGVyKGJpbywgaW9jYi1cdTAwM2Vwcml2YXRlKTtcbi1cdFx0XHRpZiAodW5saWtlbHkocmV0KSlcbi1cdFx0XHRcdGdvdG8gZmFpbDtcbiYjNDM7XHRcdFx0aWYgKHVubGlrZWx5KHJldCkpIHtcbiYjNDM7XHRcdFx0XHRiaW8tXHUwMDNlYmlfc3RhdHVzID0gZXJybm9fdG9fYmxrX3N0YXR1cyhyZXQpO1xuJiM0MztcdFx0XHRcdGJpb19lbmRpbyhiaW8pO1xuJiM0MztcdFx0XHRcdGJyZWFrO1xuJiM0MztcdFx0XHR9XG4gXHRcdH1cbiBcbiBcdFx0aWYgKGlzX3JlYWQpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAxNTo1ODwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCTEtfREVWX0lOVEVHUklUWSYjMzQ7LAogICAgJiMzNDtJT19VUklORyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O19fYmxrZGV2X2RpcmVjdF9JTyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBlcnJvciBoYW5kbGluZyBpbiBibG9jayBkZXZpY2UgZGlyZWN0IEkvTyB3aGVuIGJpb19pbnRlZ3JpdHlfbWFwX2l0ZXIgZmFpbHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIGJsb2NrIGxheWVyIGxvZ2ljLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBjMmI0ZTU4MTQzNTRjNTgxYzUyYmZiODRlZTk0NmFiYjAxNTYzMTc1CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIEZyaSBKdW4gMjYgMTU6NTg6NDggMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9ibG9jay9mb3BzLmMgYi9ibG9jay9mb3BzLmMKaW5kZXggYmI2NjQyYjQ1OTM3Y2UuLjlmMTZiOTk1YzYwYzZlIDEwMDY0NAotLS0gYS9ibG9jay9mb3BzLmMKJiM0MzsmIzQzOyYjNDM7IGIvYmxvY2svZm9wcy5jCkBAIC0yMzksOCAmIzQzOzIzOSwxMSBAQCBzdGF0aWMgc3NpemVfdCBfX2Jsa2Rldl9kaXJlY3RfSU8oc3RydWN0IGtpb2NiICppb2NiLCBzdHJ1Y3QgaW92X2l0ZXIgKml0ZXIsCiAJCX0KIAkJaWYgKGlvY2ItJmd0O2tpX2ZsYWdzICZhbXA7IElPQ0JfSEFTX01FVEFEQVRBKSB7CiAJCQlyZXQgPSBiaW9faW50ZWdyaXR5X21hcF9pdGVyKGJpbywgaW9jYi0mZ3Q7cHJpdmF0ZSk7Ci0JCQlpZiAodW5saWtlbHkocmV0KSkKLQkJCQlnb3RvIGZhaWw7CiYjNDM7CQkJaWYgKHVubGlrZWx5KHJldCkpIHsKJiM0MzsJCQkJYmlvLSZndDtiaV9zdGF0dXMgPSBlcnJub190b19ibGtfc3RhdHVzKHJldCk7CiYjNDM7CQkJCWJpb19lbmRpbyhiaW8pOwomIzQzOwkJCQlicmVhazsKJiM0MzsJCQl9CiAJCX0KIAogCQlpZiAoaXNfcmVhZCkgewo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAxNTo1ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODcwCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIEJsb2NrIERldmljZSBEaXJlY3QgSS9PIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoLiBJdCBzZWVtcyB3ZSYjMzk7cmUgbW9kaWZ5aW5nIGBibG9jay9mb3BzLmNgLCBzcGVjaWZpY2FsbHkgdGhlIGBfX2Jsa2Rldl9kaXJlY3RfSU9gIGZ1bmN0aW9uLiBUaGUga2V5IGNoYW5nZSBoZXJlIGlzIGhvdyB3ZSBoYW5kbGUgZmFpbHVyZXMgaW4gYGJpb19pbnRlZ3JpdHlfbWFwX2l0ZXJgLiAgSW5zdGVhZCBvZiB0aGUgdXN1YWwgYGdvdG8gZmFpbDtgLCB0aGUgcGF0Y2ggbm93IGluY2x1ZGVzIGEgbW9yZSBjb250cm9sbGVkIGFwcHJvYWNoOgoKYGBgYwoJCQlpZiAodW5saWtlbHkocmV0KSkgewoJCQkJYmlvLSZndDtiaV9zdGF0dXMgPSBlcnJub190b19ibGtfc3RhdHVzKHJldCk7CgkJCQliaW9fZW5kaW8oYmlvKTsKCQkJCWJyZWFrOwoJCQl9CmBgYAoKTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgdGhpcyBpcyBsaWtlbHkgYW4gYXR0ZW1wdCB0byByZWZpbmUgZXJyb3IgaGFuZGxpbmcgaW4gdGhlIGRpcmVjdCBJL08gcGF0aCwgcG9zc2libHkgdG8gbWFrZSBpdCBtb3JlIHJvYnVzdCBvciBwcmV2ZW50IGNhc2NhZGluZyBmYWlsdXJlcy4gVGhlIG9sZCBgZ290byBmYWlsO2AgYXBwcm9hY2ggbWlnaHQgaGF2ZSBiZWVuIHRvbyBhYnJ1cHQuICBJIG5lZWQgdG8gZGl2ZSBpbnRvIHRoaXMgYSBiaXQgZGVlcGVyIHRvIGZ1bGx5IHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucy4gSSYjMzk7bSBnb2luZyB0byBsb2NhdGUgbGluZSAyMzkgaW4gYGJsb2NrL2ZvcHMuY2AgYW5kIHNlZSB0aGUgc3Vycm91bmRpbmcgY29udGV4dC4gVW5kZXJzdGFuZGluZyB0aGUgYWRqYWNlbnQgY29kZSBpcyBrZXkgdG8gZ3Jhc3AgdGhlIHJhdGlvbmFsZSBiZWhpbmQgdGhpcyBuZXcgYXBwcm9hY2guCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMTU6NTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtibG9jay9mb3BzLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyMjAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDIyMDpcdFx0XHRpZiAodW5saWtlbHkocmV0KSkge1xuIDIyMTpcdFx0XHRcdGJpby1cdTAwM2ViaV9zdGF0dXMgPSBCTEtfU1RTX0lPRVJSO1xuIDIyMjpcdFx0XHRcdGJpb19lbmRpbyhiaW8pO1xuIDIyMzpcdFx0XHRcdGJyZWFrO1xuIDIyNDpcdFx0XHR9XG4gMjI1Olx0XHRcdGlmIChpb2NiLVx1MDAzZWtpX2ZsYWdzIFx1MDAyNiBJT0NCX05PV0FJVCkge1xuIDIyNjpcdFx0XHRcdC8qXG4gMjI3Olx0XHRcdFx0ICogVGhpcyBpcyBub25ibG9ja2luZyBJTywgYW5kIHdlIG5lZWQgdG8gYWxsb2NhdGVcbiAyMjg6XHRcdFx0XHQgKiBhbm90aGVyIGJpbyBpZiB3ZSBoYXZlIGRhdGEgbGVmdCB0byBtYXAuIEFzIHdlXG4gMjI5Olx0XHRcdFx0ICogY2Fubm90IGd1YXJhbnRlZSB0aGF0IG9uZSBvZiB0aGUgc3ViIGJpb3Mgd2lsbCBub3RcbiAyMzA6XHRcdFx0XHQgKiBmYWlsIGdldHRpbmcgaXNzdWVkIEZPUiBOT1dBSVQgYW5kIGFzIGVycm9yIHJlc3VsdHNcbiAyMzE6XHRcdFx0XHQgKiBhcmUgY29hbGVzY2VkIGFjcm9zcyBhbGwgb2YgdGhlbSwgYmUgc2FmZSBhbmQgYXNrIGZvclxuIDIzMjpcdFx0XHRcdCAqIGEgcmV0cnkgb2YgdGhpcyBmcm9tIGJsb2NraW5nIGNvbnRleHQuXG4gMjMzOlx0XHRcdFx0ICovXG4gMjM0Olx0XHRcdFx0aWYgKHVubGlrZWx5KGlvdl9pdGVyX2NvdW50KGl0ZXIpKSkge1xuIDIzNTpcdFx0XHRcdFx0cmV0ID0gLUVBR0FJTjtcbiAyMzY6XHRcdFx0XHRcdGdvdG8gZmFpbDtcbiAyMzc6XHRcdFx0XHR9XG4gMjM4Olx0XHRcdFx0YmlvLVx1MDAzZWJpX29wZiB8PSBSRVFfTk9XQUlUO1xuIDIzOTpcdFx0XHR9XG4gMjQwOlx0XHRcdGlmIChpb2NiLVx1MDAzZWtpX2ZsYWdzIFx1MDAyNiBJT0NCX0hBU19NRVRBREFUQSkge1xuIDI0MTpcdFx0XHRcdHJldCA9IGJpb19pbnRlZ3JpdHlfbWFwX2l0ZXIoYmlvLCBpb2NiLVx1MDAzZXByaXZhdGUpO1xuIDI0MjpcdFx0XHRcdGlmICh1bmxpa2VseShyZXQpKSB7XG4gMjQzOlx0XHRcdFx0XHRiaW8tXHUwMDNlYmlfc3RhdHVzID0gZXJybm9fdG9fYmxrX3N0YXR1cyhyZXQpO1xuIDI0NDpcdFx0XHRcdFx0YmlvX2VuZGlvKGJpbyk7XG4gMjQ1Olx0XHRcdFx0XHRicmVhaztcbiAyNDY6XHRcdFx0XHR9XG4gMjQ3Olx0XHRcdH1cbiAyNDg6XHRcbiAyNDk6XHRcdFx0aWYgKGlzX3JlYWQpIHtcbiAyNTA6XHRcdFx0XHRpZiAoZGlvLVx1MDAzZWZsYWdzIFx1MDAyNiBESU9fU0hPVUxEX0RJUlRZKVxuIDI1MTpcdFx0XHRcdFx0YmlvX3NldF9wYWdlc19kaXJ0eShiaW8pO1xuIDI1MjpcdFx0XHR9IGVsc2Uge1xuIDI1MzpcdFx0XHRcdHRhc2tfaW9fYWNjb3VudF93cml0ZShiaW8tXHUwMDNlYmlfaXRlci5iaV9zaXplKTtcbiAyNTQ6XHRcdFx0fVxuIDI1NTpcdFx0XHRkaW8tXHUwMDNlc2l6ZSAmIzQzOz0gYmlvLVx1MDAzZWJpX2l0ZXIuYmlfc2l6ZTtcbiAyNTY6XHRcdFx0cG9zICYjNDM7PSBiaW8tXHUwMDNlYmlfaXRlci5iaV9zaXplO1xuIDI1NzpcdFxuIDI1ODpcdFx0XHRucl9wYWdlcyA9IGJpb19pb3ZfdmVjc190b19hbGxvYyhpdGVyLCBCSU9fTUFYX1ZFQ1MpO1xuIDI1OTpcdFx0XHRpZiAoIW5yX3BhZ2VzKSB7XG4gMjYwOlx0XHRcdFx0c3VibWl0X2JpbyhiaW8pO1xuIDI2MTpcdFx0XHRcdGJyZWFrO1xuIDI2MjpcdFx0XHR9XG4gMjYzOlx0XHRcdGF0b21pY19pbmMoXHUwMDI2ZGlvLVx1MDAzZXJlZik7XG4gMjY0Olx0XHRcdHN1Ym1pdF9iaW8oYmlvKTtcbiAyNjU6XHRcdFx0YmlvID0gYmlvX2FsbG9jKGJkZXYsIG5yX3BhZ2VzLCBvcGYsIEdGUF9LRVJORUwpO1xuIDI2NjpcdFx0fVxuIDI2NzpcdFxuIDI2ODpcdFx0YmxrX2ZpbmlzaF9wbHVnKFx1MDAyNnBsdWcpO1xuIDI2OTpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDE1OjU4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwMjIKCQkJCQkJCW91dHB1dDogMjIKCQkJCQkJCXRob3VnaHRzOiA4NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIGBfX2Jsa2Rldl9kaXJlY3RfSU9gKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdHdlYWtpbmcgYF9fYmxrZGV2X2RpcmVjdF9JT2AsIHdoaWNoIG1lYW5zIHdlJiMzOTtyZSBsb29raW5nIGF0IGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gaG93IGRpcmVjdCBJL08gd29ya3Mgd2l0aCBibG9jayBkZXZpY2VzLiBUaGF0IHNjcmVhbXMgJiMzNDtmdXp6aW5nIHRhcmdldCYjMzQ7IHRvIG1lLiBUaGlzIGhhcyB0aGUgcG90ZW50aWFsIHRvIGV4cG9zZSBzb21lIG5hc3R5IGVkZ2UgY2FzZXMsIGVzcGVjaWFsbHkgZ2l2ZW4gdGhlIGNvbXBsZXhpdHkgb2YgYmxvY2sgZGV2aWNlIGludGVyYWN0aW9ucy4gTXkgbWFpbiBmb2N1cyBoZXJlIHdpbGwgYmUgb24gdGhlIGBfX2Jsa2Rldl9kaXJlY3RfSU9gIHN5bWJvbCBpdHNlbGYuIEkgZG9uJiMzOTt0IHNlZSBhbnkgb2J2aW91cyBjb25maWcgZGVwZW5kZW5jaWVzIGp1bXBpbmcgb3V0IGF0IG1lIHJpZ2h0IGF3YXksIGJ1dCBpdCYjMzk7cyBhbHdheXMgZ29vZCB0byBiZSB0aG9yb3VnaC4gSSYjMzk7bGwgbmVlZCB0byBkb3VibGUtY2hlY2sgaWYgc29tZXRoaW5nIGxpa2UgYElPQ0JfSEFTX01FVEFEQVRBYCBoYXMgYW55IGluZmx1ZW5jZSBvciBzcGVjaWZpYyBjb25maWd1cmF0aW9uIHJlcXVpcmVtZW50cy4gV2UgZG9uJiMzOTt0IHdhbnQgdG8gbWlzcyBhbnl0aGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAxNTo1ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtJT0NCX0hBU19NRVRBREFUQSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtibG9jay9mb3BzLmM9MTc1PXN0YXRpYyBzc2l6ZV90IF9fYmxrZGV2X2RpcmVjdF9JTyhzdHJ1Y3Qga2lvY2IgKmlvY2IsIHN0cnVjdCBpb3ZfaXRlciAqaXRlcixcbi0tXG5ibG9jay9mb3BzLmMtMjM5LVx0XHR9XG5ibG9jay9mb3BzLmM6MjQwOlx0XHRpZiAoaW9jYi1cdTAwM2VraV9mbGFncyBcdTAwMjYgSU9DQl9IQVNfTUVUQURBVEEpIHtcbmJsb2NrL2ZvcHMuYy0yNDEtXHRcdFx0cmV0ID0gYmlvX2ludGVncml0eV9tYXBfaXRlcihiaW8sIGlvY2ItXHUwMDNlcHJpdmF0ZSk7XG4tLVxuYmxvY2svZm9wcy5jPTMyND1zdGF0aWMgc3NpemVfdCBfX2Jsa2Rldl9kaXJlY3RfSU9fYXN5bmMoc3RydWN0IGtpb2NiICppb2NiLFxuLS1cbmJsb2NrL2ZvcHMuYy0zNzAtXG5ibG9jay9mb3BzLmM6MzcxOlx0aWYgKGlvY2ItXHUwMDNla2lfZmxhZ3MgXHUwMDI2IElPQ0JfSEFTX01FVEFEQVRBKSB7XG5ibG9jay9mb3BzLmMtMzcyLVx0XHRyZXQgPSBiaW9faW50ZWdyaXR5X21hcF9pdGVyKGJpbywgaW9jYi1cdTAwM2Vwcml2YXRlKTtcbi0tXG5ibG9jay9mb3BzLmM9Mzk4PXN0YXRpYyBzc2l6ZV90IGJsa2Rldl9kaXJlY3RfSU8oc3RydWN0IGtpb2NiICppb2NiLCBzdHJ1Y3QgaW92X2l0ZXIgKml0ZXIpXG4tLVxuYmxvY2svZm9wcy5jLTQzMC1cdGlmIChsaWtlbHkobnJfcGFnZXMgXHUwMDNjPSBCSU9fTUFYX1ZFQ1MgXHUwMDI2XHUwMDI2XG5ibG9jay9mb3BzLmM6NDMxOlx0XHQgICAhKGlvY2ItXHUwMDNla2lfZmxhZ3MgXHUwMDI2IElPQ0JfSEFTX01FVEFEQVRBKSkpIHtcbmJsb2NrL2ZvcHMuYy00MzItXHRcdGlmIChpc19zeW5jX2tpb2NiKGlvY2IpKVxuLS1cbmluY2x1ZGUvbGludXgvZnMuaD04OT10eXBlZGVmIGludCAoZGlvX2lvZG9uZV90KShzdHJ1Y3Qga2lvY2IgKmlvY2IsIGxvZmZfdCBvZmZzZXQsXG4tLVxuaW5jbHVkZS9saW51eC9mcy5oLTE0MS1cbmluY2x1ZGUvbGludXgvZnMuaDoxNDI6LyogU3VwcG9ydHMgSU9DQl9IQVNfTUVUQURBVEEgKi9cbmluY2x1ZGUvbGludXgvZnMuaC0xNDMtI2RlZmluZSBGTU9ERV9IQVNfTUVUQURBVEFcdCgoX19mb3JjZSBmbW9kZV90KSgxIFx1MDAzY1x1MDAzYyAxMykpXG4tLVxuaW5jbHVkZS9saW51eC9mcy5oPTMzNj1zdHJ1Y3QgcmVhZGFoZWFkX2NvbnRyb2w7XG4tLVxuaW5jbHVkZS9saW51eC9mcy5oLTM1OC0jZGVmaW5lIElPQ0JfQUlPX1JXXHRcdCgxIFx1MDAzY1x1MDAzYyAyMilcbmluY2x1ZGUvbGludXgvZnMuaDozNTk6I2RlZmluZSBJT0NCX0hBU19NRVRBREFUQVx0KDEgXHUwMDNjXHUwMDNjIDIzKVxuaW5jbHVkZS9saW51eC9mcy5oLTM2MC1cbi0tXG5pbmNsdWRlL2xpbnV4L2ZzLmgtMzc2LVx0eyBJT0NCX0FJT19SVyxcdFx0XCYjMzQ7QUlPX1JXXCYjMzQ7IH0sIFxcXG5pbmNsdWRlL2xpbnV4L2ZzLmg6Mzc3Olx0eyBJT0NCX0hBU19NRVRBREFUQSxcdFwmIzM0O0FJT19IQVNfTUVUQURBVEFcJiMzNDsgfVxuaW5jbHVkZS9saW51eC9mcy5oLTM3OC1cbi0tXG5pb191cmluZy9ydy5jPTIyND1zdGF0aWMgaW5saW5lIHZvaWQgaW9fbWV0YV9yZXN0b3JlKHN0cnVjdCBpb19hc3luY19ydyAqaW8sIHN0cnVjdCBraW9jYiAqa2lvY2IpXG5pb191cmluZy9ydy5jLTIyNS17XG5pb191cmluZy9ydy5jOjIyNjpcdGlmIChraW9jYi1cdTAwM2VraV9mbGFncyBcdTAwMjYgSU9DQl9IQVNfTUVUQURBVEEpIHtcbmlvX3VyaW5nL3J3LmMtMjI3LVx0XHRpby1cdTAwM2VtZXRhLnNlZWQgPSBpby1cdTAwM2VtZXRhX3N0YXRlLnNlZWQ7XG4tLVxuaW9fdXJpbmcvcncuYz04NDg9c3RhdGljIGludCBpb19yd19pbml0X2ZpbGUoc3RydWN0IGlvX2tpb2NiICpyZXEsIGZtb2RlX3QgbW9kZSwgaW50IHJ3X3R5cGUpXG4tLVxuaW9fdXJpbmcvcncuYy05MDQtXHRcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuaW9fdXJpbmcvcncuYzo5MDU6XHRcdGtpb2NiLVx1MDAzZWtpX2ZsYWdzIHw9IElPQ0JfSEFTX01FVEFEQVRBO1xuaW9fdXJpbmcvcncuYy05MDYtXHRcdGtpb2NiLVx1MDAzZXByaXZhdGUgPSBcdTAwMjZpby1cdTAwM2VtZXRhO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDE1OjU5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQyMDcKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiA1NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBDdXJyZW50IENvbnNpZGVyYXRpb25zIFJlZ2FyZGluZyBNZXRhZGF0YSBJL08gYW5kIGlvX3VyaW5nKioKCkFscmlnaHQsIGxldCYjMzk7cyBzZWUuIEkmIzM5O20gZm9jdXNpbmcgb24gbWV0YWRhdGEgSS9PLCBzcGVjaWZpY2FsbHkgaG93IGl0JiMzOTtzIGhhbmRsZWQsIHdoaWNoIG9mIGNvdXJzZSBicmluZ3MgYElPQ0JfSEFTX01FVEFEQVRBYCB0byBtaW5kLiAgVGhpcyBpcyBhIGZsYWcgdGhhdCwgYXMgSSB1bmRlcnN0YW5kIGl0LCBzaWduYWxzIHRoYXQgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBtZXRhZGF0YSBvcGVyYXRpb25zLCBhbmQgbmF0dXJhbGx5LCBpdCYjMzk7cyBzdXBwb3J0ZWQgd2l0aGluIHRoZSBpb191cmluZyBmcmFtZXdvcmsuICBUaGUgaW1tZWRpYXRlIGxvY2F0aW9uIEkgbmVlZCB0byBjaGVjayBpcyB3aXRoaW4gYF9fYmxrZGV2X2RpcmVjdF9JT2Ag4oCTIHRoYXQgc2VlbXMgdG8gYmUgd2hlcmUgdGhlIGNoYW5nZXMgcmVsYXRlZCB0byB0aGlzIGFyZSBjb25jZW50cmF0ZWQuICBJIHNob3VsZCBiZSBhYmxlIHRvIHRyYWNrIGRvd24gdGhlIGltcGxlbWVudGF0aW9uIGZyb20gdGhlcmUuIE5vdywgdGhlIG5leHQgcXVlc3Rpb24gcG9wcGluZyBpbnRvIG15IGhlYWQgaXMsIGFyZSB0aGVyZSBhbnkgc3BlY2lmaWMgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzIHRoYXQgY29tZSBpbnRvIHBsYXkgd2hlbiB1c2luZyB0aGUgYGJpb19pbnRlZ3JpdHlfbWFwX2l0ZXJgIHN0cnVjdHVyZSB3aXRoaW4gdGhpcyBjb250ZXh0PyBUaGF0JiMzOTtzIHRoZSBuZXh0IGFyZWEgSSB3YW50IHRvIGludmVzdGlnYXRlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDE1OjU5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2Jpb19pbnRlZ3JpdHlfbWFwX2l0ZXImIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YmxvY2svYmlvLWludGVncml0eS5jPTQzND1zdGF0aWMgdm9pZCBiaW9fdWlvX21ldGFfdG9fYmlwKHN0cnVjdCBiaW8gKmJpbywgc3RydWN0IHVpb19tZXRhICptZXRhKVxuLS1cbmJsb2NrL2Jpby1pbnRlZ3JpdHkuYy00NDctXG5ibG9jay9iaW8taW50ZWdyaXR5LmM6NDQ4OmludCBiaW9faW50ZWdyaXR5X21hcF9pdGVyKHN0cnVjdCBiaW8gKmJpbywgc3RydWN0IHVpb19tZXRhICptZXRhKVxuYmxvY2svYmlvLWludGVncml0eS5jLTQ0OS17XG4tLVxuYmxvY2svZm9wcy5jPTE3NT1zdGF0aWMgc3NpemVfdCBfX2Jsa2Rldl9kaXJlY3RfSU8oc3RydWN0IGtpb2NiICppb2NiLCBzdHJ1Y3QgaW92X2l0ZXIgKml0ZXIsXG4tLVxuYmxvY2svZm9wcy5jLTI0MC1cdFx0aWYgKGlvY2ItXHUwMDNla2lfZmxhZ3MgXHUwMDI2IElPQ0JfSEFTX01FVEFEQVRBKSB7XG5ibG9jay9mb3BzLmM6MjQxOlx0XHRcdHJldCA9IGJpb19pbnRlZ3JpdHlfbWFwX2l0ZXIoYmlvLCBpb2NiLVx1MDAzZXByaXZhdGUpO1xuYmxvY2svZm9wcy5jLTI0Mi1cdFx0XHRpZiAodW5saWtlbHkocmV0KSkge1xuLS1cbmJsb2NrL2ZvcHMuYz0zMjQ9c3RhdGljIHNzaXplX3QgX19ibGtkZXZfZGlyZWN0X0lPX2FzeW5jKHN0cnVjdCBraW9jYiAqaW9jYixcbi0tXG5ibG9jay9mb3BzLmMtMzcxLVx0aWYgKGlvY2ItXHUwMDNla2lfZmxhZ3MgXHUwMDI2IElPQ0JfSEFTX01FVEFEQVRBKSB7XG5ibG9jay9mb3BzLmM6MzcyOlx0XHRyZXQgPSBiaW9faW50ZWdyaXR5X21hcF9pdGVyKGJpbywgaW9jYi1cdTAwM2Vwcml2YXRlKTtcbmJsb2NrL2ZvcHMuYy0zNzMtXHRcdFdSSVRFX09OQ0UoaW9jYi1cdTAwM2Vwcml2YXRlLCBOVUxMKTtcbi0tXG5pbmNsdWRlL2xpbnV4L2Jpby1pbnRlZ3JpdHkuaD03OD1pbnQgYmlvX2ludGVncml0eV9tYXBfdXNlcihzdHJ1Y3QgYmlvICpiaW8sIHN0cnVjdCBpb3ZfaXRlciAqaXRlcik7XG5pbmNsdWRlL2xpbnV4L2Jpby1pbnRlZ3JpdHkuaDo3OTppbnQgYmlvX2ludGVncml0eV9tYXBfaXRlcihzdHJ1Y3QgYmlvICpiaW8sIHN0cnVjdCB1aW9fbWV0YSAqbWV0YSk7XG5pbmNsdWRlL2xpbnV4L2Jpby1pbnRlZ3JpdHkuaC04MC12b2lkIGJpb19pbnRlZ3JpdHlfdW5tYXBfdXNlcihzdHJ1Y3QgYmlvICpiaW8pO1xuLS1cbmluY2x1ZGUvbGludXgvYmlvLWludGVncml0eS5oPTkzPXN0YXRpYyBpbmxpbmUgaW50IGJpb19pbnRlZ3JpdHlfbWFwX3VzZXIoc3RydWN0IGJpbyAqYmlvLCBzdHJ1Y3QgaW92X2l0ZXIgKml0ZXIpXG4tLVxuaW5jbHVkZS9saW51eC9iaW8taW50ZWdyaXR5LmgtOTctXG5pbmNsdWRlL2xpbnV4L2Jpby1pbnRlZ3JpdHkuaDo5ODpzdGF0aWMgaW5saW5lIGludCBiaW9faW50ZWdyaXR5X21hcF9pdGVyKHN0cnVjdCBiaW8gKmJpbywgc3RydWN0IHVpb19tZXRhICptZXRhKVxuaW5jbHVkZS9saW51eC9iaW8taW50ZWdyaXR5LmgtOTkte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDE1OjU5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUwNTMKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiA0MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIGJpb19pbnRlZ3JpdHlfbWFwX2l0ZXIgRnVuY3Rpb24qKgoKT2theSwgc28gYGJpb19pbnRlZ3JpdHlfbWFwX2l0ZXJgIGlzIGRlZmluZWQgd2l0aGluIGBibG9jay9iaW8taW50ZWdyaXR5LmNgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgJiMzNDtSaWdodCwgZ29vZCB0byBrbm93IHdoZXJlIHRoZSBjb2RlIGxpdmVzLiYjMzQ7IE5vdywgdGhlIG5hdHVyYWwgbmV4dCBzdGVwIGlzIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIGlmIHRoaXMgcGFydGljdWxhciBtb2R1bGUgb3IgZnVuY3Rpb24gaGFzIGFueSBkZXBlbmRlbmNpZXMgb24gY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiBpdHMgYmVoYXZpb3IgaXMgaW5mbHVlbmNlZCBieSBhbnkgc2V0dGluZ3MsIGNvbXBpbGUtdGltZSBmbGFncywgb3IgcnVudGltZSBjb25maWd1cmF0aW9uIG9wdGlvbnMuIFRoaXMgaXMgY3J1Y2lhbCBmb3IgdW5kZXJzdGFuZGluZyBpdHMgZmxleGliaWxpdHkgYW5kIGhvdyBpdCBtaWdodCBpbnRlcmFjdCB3aXRoIHRoZSBicm9hZGVyIHN5c3RlbSYjMzk7cyBvdmVyYWxsIGludGVncml0eS4gTGV0JiMzOTtzIHNlZSBpZiB0aGF0IGZpbGUgaW1wb3J0cyBhbnkgY29uZmlncy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMTU6NTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YmlvLWludGVncml0eS5vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2Jsb2NrL01ha2VmaWxlPTI2PW9iai0kKENPTkZJR19JT1NDSEVEX0JGUSlcdCYjNDM7PSBiZnEub1xuYmxvY2svTWFrZWZpbGUtMjctXG5ibG9jay9NYWtlZmlsZToyODpvYmotJChDT05GSUdfQkxLX0RFVl9JTlRFR1JJVFkpICYjNDM7PSBiaW8taW50ZWdyaXR5Lm8gYmxrLWludGVncml0eS5vIHQxMC1waS5vIFxcXG5ibG9jay9NYWtlZmlsZS0yOS1cdFx0XHRcdCAgIGJpby1pbnRlZ3JpdHktYXV0by5vIGJpby1pbnRlZ3JpdHktZnMub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAxNTo1OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MzU1CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogNzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyB0aGUgQklPIEludGVncml0eSBEZXBlbmRlbmN5KioKCk9rYXksIHNvIGl0IGxvb2tzIGxpa2UgYGJpby1pbnRlZ3JpdHkub2AgKmFic29sdXRlbHkqIGRlcGVuZHMgb24gYENPTkZJR19CTEtfREVWX0lOVEVHUklUWWAuIFRoYXQmIzM5O3MgdGhlIG9idmlvdXMgc3RhcnRpbmcgcG9pbnQuIEkgc3VzcGVjdCB0aGF0IGlmIHRoYXQgY29uZmlnIG9wdGlvbiBpc24mIzM5O3Qgc2V0LCB0aGVuIHRoZSBgYmlvX2ludGVncml0eV9tYXBfaXRlcmAgZnVuY3Rpb24gaXMgcHJvYmFibHkganVzdCBhIHF1aWNrIGlubGluZSBzdHViIHRoYXQgcmV0dXJucyBlaXRoZXIgemVybyBvciBhbiBlcnJvci4gQSBxdWljayBjaGVjayBvZiBgaW5jbHVkZS9saW51eC9iaW8taW50ZWdyaXR5LmhgIHNob3VsZCBjb25maXJtIHRoYXQuIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhpcyBkZXBlbmRlbmN5IGlzIGhhbmRsZWQgY29ycmVjdGx5IGluIHRoZSBidWlsZCBzeXN0ZW0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDE1OjU5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC9iaW8taW50ZWdyaXR5LmgmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA4NSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDg1Olx0XG4gIDg2Olx0I2Vsc2UgLyogQ09ORklHX0JMS19ERVZfSU5URUdSSVRZICovXG4gIDg3Olx0XG4gIDg4Olx0c3RhdGljIGlubGluZSBzdHJ1Y3QgYmlvX2ludGVncml0eV9wYXlsb2FkICpiaW9faW50ZWdyaXR5KHN0cnVjdCBiaW8gKmJpbylcbiAgODk6XHR7XG4gIDkwOlx0XHRyZXR1cm4gTlVMTDtcbiAgOTE6XHR9XG4gIDkyOlx0XG4gIDkzOlx0c3RhdGljIGlubGluZSBpbnQgYmlvX2ludGVncml0eV9tYXBfdXNlcihzdHJ1Y3QgYmlvICpiaW8sIHN0cnVjdCBpb3ZfaXRlciAqaXRlcilcbiAgOTQ6XHR7XG4gIDk1Olx0XHRyZXR1cm4gLUVJTlZBTDtcbiAgOTY6XHR9XG4gIDk3Olx0XG4gIDk4Olx0c3RhdGljIGlubGluZSBpbnQgYmlvX2ludGVncml0eV9tYXBfaXRlcihzdHJ1Y3QgYmlvICpiaW8sIHN0cnVjdCB1aW9fbWV0YSAqbWV0YSlcbiAgOTk6XHR7XG4gMTAwOlx0XHRyZXR1cm4gLUVJTlZBTDtcbiAxMDE6XHR9XG4gMTAyOlx0XG4gMTAzOlx0c3RhdGljIGlubGluZSB2b2lkIGJpb19pbnRlZ3JpdHlfdW5tYXBfdXNlcihzdHJ1Y3QgYmlvICpiaW8pXG4gMTA0Olx0e1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAxNTo1OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1ODQyCgkJCQkJCQlvdXRwdXQ6IDIyCgkJCQkJCQl0aG91Z2h0czogNjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyB0aGUgQ29uZmlndXJhdGlvbiBmb3IgSW50ZWdyaXR5IGFuZCBJT19VUklORyoqCgpPa2F5LCBzbyBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiBoZXJlLiBXZSBkZWZpbml0ZWx5IG5lZWQgYENPTkZJR19CTEtfREVWX0lOVEVHUklUWWAg4oCTIHRoYXQmIzM5O3MgYSBnaXZlbi4gQnV0LCBJJiMzOTttIGFsc28gd29uZGVyaW5nIGlmIGBDT05GSUdfSU9fVVJJTkdgIGlzICpyZXF1aXJlZCogdG8gdHJpZ2dlciBgSU9DQl9IQVNfTUVUQURBVEFgLiBJdCBzZWVtcyBsaWtlIGEgcG90ZW50aWFsIGRlcGVuZGVuY3ksIGFuZCBJIG5lZWQgdG8gYmUgY2VydGFpbi4gSSYjMzk7dmUgZ290IHRvIGVuc3VyZSBJIGhhdmVuJiMzOTt0IG1pc3NlZCBhbnkgb3RoZXIgdXNlcyBvZiBgSU9DQl9IQVNfTUVUQURBVEFgLiBUaW1lIHRvIGNoZWNrIHRoZSBjb2RlYmFzZSBtb3JlIGdlbmVyYWxseSBmb3Igb3RoZXIgcGxhY2VzIHdoZXJlIGBJT0NCX0hBU19NRVRBREFUQWAgbWlnaHQgYmUgZGVmaW5lZCBvciB1c2VkLiBHb3R0YSBjb3ZlciBhbGwgdGhlIGJhc2VzIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAxNTo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtJT0NCX0hBU19NRVRBREFUQSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtibG9jay9mb3BzLmM9MTc1PXN0YXRpYyBzc2l6ZV90IF9fYmxrZGV2X2RpcmVjdF9JTyhzdHJ1Y3Qga2lvY2IgKmlvY2IsIHN0cnVjdCBpb3ZfaXRlciAqaXRlcixcbi0tXG5ibG9jay9mb3BzLmMtMjM5LVx0XHR9XG5ibG9jay9mb3BzLmM6MjQwOlx0XHRpZiAoaW9jYi1cdTAwM2VraV9mbGFncyBcdTAwMjYgSU9DQl9IQVNfTUVUQURBVEEpIHtcbmJsb2NrL2ZvcHMuYy0yNDEtXHRcdFx0cmV0ID0gYmlvX2ludGVncml0eV9tYXBfaXRlcihiaW8sIGlvY2ItXHUwMDNlcHJpdmF0ZSk7XG4tLVxuYmxvY2svZm9wcy5jPTMyND1zdGF0aWMgc3NpemVfdCBfX2Jsa2Rldl9kaXJlY3RfSU9fYXN5bmMoc3RydWN0IGtpb2NiICppb2NiLFxuLS1cbmJsb2NrL2ZvcHMuYy0zNzAtXG5ibG9jay9mb3BzLmM6MzcxOlx0aWYgKGlvY2ItXHUwMDNla2lfZmxhZ3MgXHUwMDI2IElPQ0JfSEFTX01FVEFEQVRBKSB7XG5ibG9jay9mb3BzLmMtMzcyLVx0XHRyZXQgPSBiaW9faW50ZWdyaXR5X21hcF9pdGVyKGJpbywgaW9jYi1cdTAwM2Vwcml2YXRlKTtcbi0tXG5ibG9jay9mb3BzLmM9Mzk4PXN0YXRpYyBzc2l6ZV90IGJsa2Rldl9kaXJlY3RfSU8oc3RydWN0IGtpb2NiICppb2NiLCBzdHJ1Y3QgaW92X2l0ZXIgKml0ZXIpXG4tLVxuYmxvY2svZm9wcy5jLTQzMC1cdGlmIChsaWtlbHkobnJfcGFnZXMgXHUwMDNjPSBCSU9fTUFYX1ZFQ1MgXHUwMDI2XHUwMDI2XG5ibG9jay9mb3BzLmM6NDMxOlx0XHQgICAhKGlvY2ItXHUwMDNla2lfZmxhZ3MgXHUwMDI2IElPQ0JfSEFTX01FVEFEQVRBKSkpIHtcbmJsb2NrL2ZvcHMuYy00MzItXHRcdGlmIChpc19zeW5jX2tpb2NiKGlvY2IpKVxuLS1cbmluY2x1ZGUvbGludXgvZnMuaD04OT10eXBlZGVmIGludCAoZGlvX2lvZG9uZV90KShzdHJ1Y3Qga2lvY2IgKmlvY2IsIGxvZmZfdCBvZmZzZXQsXG4tLVxuaW5jbHVkZS9saW51eC9mcy5oLTE0MS1cbmluY2x1ZGUvbGludXgvZnMuaDoxNDI6LyogU3VwcG9ydHMgSU9DQl9IQVNfTUVUQURBVEEgKi9cbmluY2x1ZGUvbGludXgvZnMuaC0xNDMtI2RlZmluZSBGTU9ERV9IQVNfTUVUQURBVEFcdCgoX19mb3JjZSBmbW9kZV90KSgxIFx1MDAzY1x1MDAzYyAxMykpXG4tLVxuaW5jbHVkZS9saW51eC9mcy5oPTMzNj1zdHJ1Y3QgcmVhZGFoZWFkX2NvbnRyb2w7XG4tLVxuaW5jbHVkZS9saW51eC9mcy5oLTM1OC0jZGVmaW5lIElPQ0JfQUlPX1JXXHRcdCgxIFx1MDAzY1x1MDAzYyAyMilcbmluY2x1ZGUvbGludXgvZnMuaDozNTk6I2RlZmluZSBJT0NCX0hBU19NRVRBREFUQVx0KDEgXHUwMDNjXHUwMDNjIDIzKVxuaW5jbHVkZS9saW51eC9mcy5oLTM2MC1cbi0tXG5pbmNsdWRlL2xpbnV4L2ZzLmgtMzc2LVx0eyBJT0NCX0FJT19SVyxcdFx0XCYjMzQ7QUlPX1JXXCYjMzQ7IH0sIFxcXG5pbmNsdWRlL2xpbnV4L2ZzLmg6Mzc3Olx0eyBJT0NCX0hBU19NRVRBREFUQSxcdFwmIzM0O0FJT19IQVNfTUVUQURBVEFcJiMzNDsgfVxuaW5jbHVkZS9saW51eC9mcy5oLTM3OC1cbi0tXG5pb191cmluZy9ydy5jPTIyND1zdGF0aWMgaW5saW5lIHZvaWQgaW9fbWV0YV9yZXN0b3JlKHN0cnVjdCBpb19hc3luY19ydyAqaW8sIHN0cnVjdCBraW9jYiAqa2lvY2IpXG5pb191cmluZy9ydy5jLTIyNS17XG5pb191cmluZy9ydy5jOjIyNjpcdGlmIChraW9jYi1cdTAwM2VraV9mbGFncyBcdTAwMjYgSU9DQl9IQVNfTUVUQURBVEEpIHtcbmlvX3VyaW5nL3J3LmMtMjI3LVx0XHRpby1cdTAwM2VtZXRhLnNlZWQgPSBpby1cdTAwM2VtZXRhX3N0YXRlLnNlZWQ7XG4tLVxuaW9fdXJpbmcvcncuYz04NDg9c3RhdGljIGludCBpb19yd19pbml0X2ZpbGUoc3RydWN0IGlvX2tpb2NiICpyZXEsIGZtb2RlX3QgbW9kZSwgaW50IHJ3X3R5cGUpXG4tLVxuaW9fdXJpbmcvcncuYy05MDQtXHRcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuaW9fdXJpbmcvcncuYzo5MDU6XHRcdGtpb2NiLVx1MDAzZWtpX2ZsYWdzIHw9IElPQ0JfSEFTX01FVEFEQVRBO1xuaW9fdXJpbmcvcncuYy05MDYtXHRcdGtpb2NiLVx1MDAzZXByaXZhdGUgPSBcdTAwMjZpby1cdTAwM2VtZXRhO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAxNTo1OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2OTg1CgkJCQkJCQlvdXRwdXQ6IDE4CgkJCQkJCQl0aG91Z2h0czogNTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyBJT19VUklORyBNZXRhZGF0YSBEZXBlbmRlbmN5KioKCk9rYXksIHNvIEkmIzM5O3ZlIHBpbnBvaW50ZWQgdGhhdCBgSU9DQl9IQVNfTUVUQURBVEFgIGlzIHNvbGVseSBkZWZpbmVkIGFuZCB1c2VkIHdpdGhpbiBgaW9fdXJpbmcvcncuY2AuIFRoYXQmIzM5O3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBUaGlzIHN0cm9uZ2x5IHN1Z2dlc3RzIGEgZGVwZW5kZW5jeSBvbiB0aGUgYGlvX3VyaW5nYCBpbmZyYXN0cnVjdHVyZSBpdHNlbGYuIE5vdywgSSBuZWVkIHRvIGNvbmZpcm0gdGhhdCBgQ09ORklHX0lPX1VSSU5HYCBpcyBpbmRlZWQgdGhlIGNvcnJlY3QgY29uZmlndXJhdGlvbiBzeW1ib2wgY29udHJvbGxpbmcgdGhpcyBmZWF0dXJlLiBJdCYjMzk7cyBhIGZhaXJseSBzYWZlIGFzc3VtcHRpb24gZ2l2ZW4gdGhlIG5hbWluZyBjb252ZW50aW9uLCBidXQgSSBhbHdheXMgcHJlZmVyIHRvIGRvdWJsZS1jaGVjayB0aGVzZSB0aGluZ3MgdG8gYXZvaWQgbWFraW5nIGluY29ycmVjdCBhc3NlcnRpb25zLiBUaW1lIHRvIGNvbmZpcm0gdGhhdCBjb25maWd1cmF0aW9uIG9wdGlvbiEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMTU6NTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIElPX1VSSU5HJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luaXQvS2NvbmZpZz0xODkwPWNvbmZpZyBBSU9cbi0tXG5pbml0L0tjb25maWctMTg5Ny1cbmluaXQvS2NvbmZpZzoxODk4OmNvbmZpZyBJT19VUklOR1xuaW5pdC9LY29uZmlnLTE4OTktXHRib29sIFwmIzM0O0VuYWJsZSBJTyB1cmluZyBzdXBwb3J0XCYjMzQ7IGlmIEVYUEVSVFxuLS1cbmluaXQvS2NvbmZpZz0xOTA3PWNvbmZpZyBHQ09WX1BST0ZJTEVfVVJJTkdcbi0tXG5pbml0L0tjb25maWctMTkxOS1cbmluaXQvS2NvbmZpZzoxOTIwOmNvbmZpZyBJT19VUklOR19NT0NLX0ZJTEVcbmluaXQvS2NvbmZpZy0xOTIxLVx0dHJpc3RhdGUgXCYjMzQ7RW5hYmxlIGlvX3VyaW5nIG1vY2sgZmlsZXMgKEV4cGVyaW1lbnRhbClcJiMzNDsgaWYgRVhQRVJUXG4tLVxuaW9fdXJpbmcvS2NvbmZpZy01LVxuaW9fdXJpbmcvS2NvbmZpZzo2OmNvbmZpZyBJT19VUklOR19aQ1JYXG5pb191cmluZy9LY29uZmlnLTctXHRkZWZfYm9vbCB5XG4tLVxuaW9fdXJpbmcvS2NvbmZpZy0xMi1cbmlvX3VyaW5nL0tjb25maWc6MTM6Y29uZmlnIElPX1VSSU5HX0JQRlxuaW9fdXJpbmcvS2NvbmZpZy0xNC1cdGRlZl9ib29sIHlcbi0tXG5pb191cmluZy9LY29uZmlnLTE3LVxuaW9fdXJpbmcvS2NvbmZpZzoxODpjb25maWcgSU9fVVJJTkdfQlBGX09QU1xuaW9fdXJpbmcvS2NvbmZpZy0xOS1cdGRlZl9ib29sIHlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMTU6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzQ4NgoJCQkJCQkJb3V0cHV0OiA4OAoJCQkJCQkJdGhvdWdodHM6IDQ2MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBCbG9jayBEZXZpY2UgRGlyZWN0IEkvTyBCdWcgRml4KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSwgYENPTkZJR19JT19VUklOR2AgYW5kIGBDT05GSUdfQkxLX0RFVl9JTlRFR1JJVFlgIGp1bXAgb3V0IGFzIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9ucy4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBpcyBpbiBgX19ibGtkZXZfZGlyZWN0X0lPYCB3aXRoaW4gYGJsb2NrL2ZvcHMuY2AuIFRoaXMgaXMgYSBjbGVhciBmdW5jdGlvbmFsIGNoYW5nZSwgc3BlY2lmaWNhbGx5IGluIGVycm9yIGhhbmRsaW5nLgoKVGhlIGJ1ZywgYXMgSSB1bmRlcnN0YW5kIGl0LCBzdGVtcyBmcm9tIGhvdyBgYmlvX2ludGVncml0eV9tYXBfaXRlcmAgZmFpbHVyZXMgd2VyZSBwcmV2aW91c2x5IGhhbmRsZWQuIFRoZSBvbGQgY29kZSB3b3VsZCBqdXN0IGBnb3RvIGZhaWw7YCwgYnV0IHRoYXQgbWlnaHQgbm90IHByb3Blcmx5IGNsZWFuIHVwIHRoZSBgYmlvYCwgcG90ZW50aWFsbHkgbGVha2luZyByZXNvdXJjZXMgb3Igc2ltcGx5IG5vdCBzZXR0aW5nIGBiaW8tJmd0O2JpX3N0YXR1c2AgY29ycmVjdGx5IGJlZm9yZSBjb21wbGV0aW5nIGl0LiBUaGUgb3JpZ2luYWwgY29kZSBzbmlwcGV0IHdhczoKCmBgYGMKCQkJcmV0ID0gYmlvX2ludGVncml0eV9tYXBfaXRlcihiaW8sIGlvY2ItJmd0O3ByaXZhdGUpOwoJCQlpZiAodW5saWtlbHkocmV0KSkKCQkJCWdvdG8gZmFpbDsKYGBgCgpBbmQgdGhlIGBmYWlsOmAgcGF0aCB3YXM6CgpgYGBjCmZhaWw6CglpZiAoZGlvLSZndDtmbGFncyAmYW1wOyBESU9fU0hPVUxEX0RJUlRZKSB7CgkJYmlvX2NoZWNrX3BhZ2VzX2RpcnR5KGJpbyk7Cgl9CglkaW8tJmd0O3NpemUgJiM0Mzs9IGJpby0mZ3Q7YmlfaXRlci5iaV9zaXplOwoJYmxrX2ZpbmlzaF9wbHVnKCZhbXA7cGx1Zyk7CgliaW9fcHV0KGJpbyk7CglyZXR1cm4gcmV0OwpgYGAKClRoZSBuZXcgY29kZSByZXBsYWNlcyB0aGlzIHdpdGg6CgpgYGBjCgkJCWlmICh1bmxpa2VseShyZXQpKSB7CgkJCQliaW8tJmd0O2JpX3N0YXR1cyA9IGVycm5vX3RvX2Jsa19zdGF0dXMocmV0KTsKCQkJCWJpb19lbmRpbyhiaW8pOwoJCQkJYnJlYWs7CgkJCX0KYGBgCgpUaGlzIGlzIGRlZmluaXRlbHkgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBlcnJvciBoYW5kbGluZy4gSXQmIzM5O3MgYSBwcmltZSBjYW5kaWRhdGUgZm9yIGZ1enppbmcsIGFuZCBJIG5lZWQgdG8gbWFrZSBhIG5vdGUgb2YgdGhpcy4gVGhlIGtleSBmb2N1cyBzeW1ib2xzIGZvciB0aGlzIGZ1enppbmcgYXJlIGBfX2Jsa2Rldl9kaXJlY3RfSU9gLCBhbmQgb2YgY291cnNlLCB0aGUgYEJMS19ERVZfSU5URUdSSVRZYCBhbmQgYElPX1VSSU5HYCBjb25maWd1cmF0aW9ucy4KCkxldCYjMzk7cyBxdWlja2x5IGNoZWNrIGlmIGBfX2Jsa2Rldl9kaXJlY3RfSU9gIGlzIGEgaG90IHBhdGguIERpcmVjdCBJL08gaXMgcmVhc29uYWJseSBjb21tb24sIGJ1dCB0aGlzIGlzIGJsb2NrIGRldmljZSBzcGVjaWZpYyB3aGljaCBuYXJyb3dzIHRoZSBzY29wZSB3aGljaCBpcyBnb29kLiBIb2xkIG9uLCBgX19ibGtkZXZfZGlyZWN0X0lPYCBpcyBzdGF0aWMuIEkgbXVzdCBoYXZlIG1pc3NlZCBzb21ldGhpbmcuIGBibGtkZXZfZGlyZWN0X0lPYCBjYWxscyBgX19ibGtkZXZfZGlyZWN0X0lPYC4gQWxyaWdodCwgSSYjMzk7bGwgc3RpbGwganVzdCB1c2UgYF9fYmxrZGV2X2RpcmVjdF9JT2AgYXMgdGhlIGZvY3VzLgoKVGltZSB0byBjYWxsIHNldC1yZXN1bHRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAxNTo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QkxLX0RFVl9JTlRFR1JJVFkmIzM0OywKICAgICYjMzQ7SU9fVVJJTkcmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtfX2Jsa2Rldl9kaXJlY3RfSU8mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgZXJyb3IgaGFuZGxpbmcgaW4gYmxvY2sgZGV2aWNlIGRpcmVjdCBJL08gd2hlbiBiaW9faW50ZWdyaXR5X21hcF9pdGVyIGZhaWxzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBibG9jayBsYXllciBsb2dpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QkxLX0RFVl9JTlRFR1JJVFkmIzM0OywKICAgICYjMzQ7SU9fVVJJTkcmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtfX2Jsa2Rldl9kaXJlY3RfSU8mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgZXJyb3IgaGFuZGxpbmcgaW4gYmxvY2sgZGV2aWNlIGRpcmVjdCBJL08gd2hlbiBiaW9faW50ZWdyaXR5X21hcF9pdGVyIGZhaWxzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBibG9jayBsYXllciBsb2dpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDE1OjU4OjUwLjI4ODE2NjQ3OVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1ODQxNTQ0ODExLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJMS19ERVZfSU5URUdSSVRZXCIsXG4gICAgXCJJT19VUklOR1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIl9fYmxrZGV2X2RpcmVjdF9JT1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGVycm9yIGhhbmRsaW5nIGluIGJsb2NrIGRldmljZSBkaXJlY3QgSS9PIHdoZW4gYmlvX2ludGVncml0eV9tYXBfaXRlciBmYWlscy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgYmxvY2sgbGF5ZXIgbG9naWMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDE1OjU4OjUwLjI4ODE3NTIwOVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjAwMTg2NTU0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgYzJiNGU1ODE0MzU0YzU4MWM1MmJmYjg0ZWU5NDZhYmIwMTU2MzE3NVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgRnJpIEp1biAyNiAxNTo1ODo0OCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9ibG9jay9mb3BzLmMgYi9ibG9jay9mb3BzLmNcXG5pbmRleCBiYjY2NDJiNDU5MzdjZS4uOWYxNmI5OTVjNjBjNmUgMTAwNjQ0XFxuLS0tIGEvYmxvY2svZm9wcy5jXFxuKysrIGIvYmxvY2svZm9wcy5jXFxuQEAgLTIzOSw4ICsyMzksMTEgQEAgc3RhdGljIHNzaXplX3QgX19ibGtkZXZfZGlyZWN0X0lPKHN0cnVjdCBraW9jYiAqaW9jYiwgc3RydWN0IGlvdl9pdGVyICppdGVyLFxcbiBcXHRcXHR9XFxuIFxcdFxcdGlmIChpb2NiLVxcdTAwM2VraV9mbGFncyBcXHUwMDI2IElPQ0JfSEFTX01FVEFEQVRBKSB7XFxuIFxcdFxcdFxcdHJldCA9IGJpb19pbnRlZ3JpdHlfbWFwX2l0ZXIoYmlvLCBpb2NiLVxcdTAwM2Vwcml2YXRlKTtcXG4tXFx0XFx0XFx0aWYgKHVubGlrZWx5KHJldCkpXFxuLVxcdFxcdFxcdFxcdGdvdG8gZmFpbDtcXG4rXFx0XFx0XFx0aWYgKHVubGlrZWx5KHJldCkpIHtcXG4rXFx0XFx0XFx0XFx0YmlvLVxcdTAwM2ViaV9zdGF0dXMgPSBlcnJub190b19ibGtfc3RhdHVzKHJldCk7XFxuK1xcdFxcdFxcdFxcdGJpb19lbmRpbyhiaW8pO1xcbitcXHRcXHRcXHRcXHRicmVhaztcXG4rXFx0XFx0XFx0fVxcbiBcXHRcXHR9XFxuIFxcbiBcXHRcXHRpZiAoaXNfcmVhZCkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQxNTo1ODo1MC44ODkxMjY2MzNaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ1MjQwNTczMTk3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJMS19ERVZfSU5URUdSSVRZXCIsXG4gICAgXCJJT19VUklOR1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIl9fYmxrZGV2X2RpcmVjdF9JT1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGVycm9yIGhhbmRsaW5nIGluIGJsb2NrIGRldmljZSBkaXJlY3QgSS9PIHdoZW4gYmlvX2ludGVncml0eV9tYXBfaXRlciBmYWlscy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgYmxvY2sgbGF5ZXIgbG9naWMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYzJiNGU1ODE0MzU0YzU4MWM1MmJmYjg0ZWU5NDZhYmIwMTU2MzE3NVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgSnVuIDI2IDE1OjU4OjQ4IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvYmxvY2svZm9wcy5jIGIvYmxvY2svZm9wcy5jXG5pbmRleCBiYjY2NDJiNDU5MzdjZS4uOWYxNmI5OTVjNjBjNmUgMTAwNjQ0XG4tLS0gYS9ibG9jay9mb3BzLmNcbisrKyBiL2Jsb2NrL2ZvcHMuY1xuQEAgLTIzOSw4ICsyMzksMTEgQEAgc3RhdGljIHNzaXplX3QgX19ibGtkZXZfZGlyZWN0X0lPKHN0cnVjdCBraW9jYiAqaW9jYiwgc3RydWN0IGlvdl9pdGVyICppdGVyLFxuIFx0XHR9XG4gXHRcdGlmIChpb2NiLVx1MDAzZWtpX2ZsYWdzIFx1MDAyNiBJT0NCX0hBU19NRVRBREFUQSkge1xuIFx0XHRcdHJldCA9IGJpb19pbnRlZ3JpdHlfbWFwX2l0ZXIoYmlvLCBpb2NiLVx1MDAzZXByaXZhdGUpO1xuLVx0XHRcdGlmICh1bmxpa2VseShyZXQpKVxuLVx0XHRcdFx0Z290byBmYWlsO1xuK1x0XHRcdGlmICh1bmxpa2VseShyZXQpKSB7XG4rXHRcdFx0XHRiaW8tXHUwMDNlYmlfc3RhdHVzID0gZXJybm9fdG9fYmxrX3N0YXR1cyhyZXQpO1xuK1x0XHRcdFx0YmlvX2VuZGlvKGJpbyk7XG4rXHRcdFx0XHRicmVhaztcbitcdFx0XHR9XG4gXHRcdH1cbiBcbiBcdFx0aWYgKGlzX3JlYWQpIHtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDE1OjU4OjUwLjg4OTEyNzkxM1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4MjY0MTg3ODMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgQmxvY2sgRGV2aWNlIERpcmVjdCBJL08gUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoLiBJdCBzZWVtcyB3ZSdyZSBtb2RpZnlpbmcgYGJsb2NrL2ZvcHMuY2AsIHNwZWNpZmljYWxseSB0aGUgYF9fYmxrZGV2X2RpcmVjdF9JT2AgZnVuY3Rpb24uIFRoZSBrZXkgY2hhbmdlIGhlcmUgaXMgaG93IHdlIGhhbmRsZSBmYWlsdXJlcyBpbiBgYmlvX2ludGVncml0eV9tYXBfaXRlcmAuICBJbnN0ZWFkIG9mIHRoZSB1c3VhbCBgZ290byBmYWlsO2AsIHRoZSBwYXRjaCBub3cgaW5jbHVkZXMgYSBtb3JlIGNvbnRyb2xsZWQgYXBwcm9hY2g6XG5cbmBgYGNcblx0XHRcdGlmICh1bmxpa2VseShyZXQpKSB7XG5cdFx0XHRcdGJpby1cdTAwM2ViaV9zdGF0dXMgPSBlcnJub190b19ibGtfc3RhdHVzKHJldCk7XG5cdFx0XHRcdGJpb19lbmRpbyhiaW8pO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdH1cbmBgYFxuXG5NeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCB0aGlzIGlzIGxpa2VseSBhbiBhdHRlbXB0IHRvIHJlZmluZSBlcnJvciBoYW5kbGluZyBpbiB0aGUgZGlyZWN0IEkvTyBwYXRoLCBwb3NzaWJseSB0byBtYWtlIGl0IG1vcmUgcm9idXN0IG9yIHByZXZlbnQgY2FzY2FkaW5nIGZhaWx1cmVzLiBUaGUgb2xkIGBnb3RvIGZhaWw7YCBhcHByb2FjaCBtaWdodCBoYXZlIGJlZW4gdG9vIGFicnVwdC4gIEkgbmVlZCB0byBkaXZlIGludG8gdGhpcyBhIGJpdCBkZWVwZXIgdG8gZnVsbHkgdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zLiBJJ20gZ29pbmcgdG8gbG9jYXRlIGxpbmUgMjM5IGluIGBibG9jay9mb3BzLmNgIGFuZCBzZWUgdGhlIHN1cnJvdW5kaW5nIGNvbnRleHQuIFVuZGVyc3RhbmRpbmcgdGhlIGFkamFjZW50IGNvZGUgaXMga2V5IHRvIGdyYXNwIHRoZSByYXRpb25hbGUgYmVoaW5kIHRoaXMgbmV3IGFwcHJvYWNoLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODcwLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTIwLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMTU6NTg6NTQuNzE1NTQ5NDU2WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTUxNzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiYmxvY2svZm9wcy5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDIyMCxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDIyMDpcXHRcXHRcXHRpZiAodW5saWtlbHkocmV0KSkge1xcbiAyMjE6XFx0XFx0XFx0XFx0YmlvLVxcdTAwM2ViaV9zdGF0dXMgPSBCTEtfU1RTX0lPRVJSO1xcbiAyMjI6XFx0XFx0XFx0XFx0YmlvX2VuZGlvKGJpbyk7XFxuIDIyMzpcXHRcXHRcXHRcXHRicmVhaztcXG4gMjI0OlxcdFxcdFxcdH1cXG4gMjI1OlxcdFxcdFxcdGlmIChpb2NiLVxcdTAwM2VraV9mbGFncyBcXHUwMDI2IElPQ0JfTk9XQUlUKSB7XFxuIDIyNjpcXHRcXHRcXHRcXHQvKlxcbiAyMjc6XFx0XFx0XFx0XFx0ICogVGhpcyBpcyBub25ibG9ja2luZyBJTywgYW5kIHdlIG5lZWQgdG8gYWxsb2NhdGVcXG4gMjI4OlxcdFxcdFxcdFxcdCAqIGFub3RoZXIgYmlvIGlmIHdlIGhhdmUgZGF0YSBsZWZ0IHRvIG1hcC4gQXMgd2VcXG4gMjI5OlxcdFxcdFxcdFxcdCAqIGNhbm5vdCBndWFyYW50ZWUgdGhhdCBvbmUgb2YgdGhlIHN1YiBiaW9zIHdpbGwgbm90XFxuIDIzMDpcXHRcXHRcXHRcXHQgKiBmYWlsIGdldHRpbmcgaXNzdWVkIEZPUiBOT1dBSVQgYW5kIGFzIGVycm9yIHJlc3VsdHNcXG4gMjMxOlxcdFxcdFxcdFxcdCAqIGFyZSBjb2FsZXNjZWQgYWNyb3NzIGFsbCBvZiB0aGVtLCBiZSBzYWZlIGFuZCBhc2sgZm9yXFxuIDIzMjpcXHRcXHRcXHRcXHQgKiBhIHJldHJ5IG9mIHRoaXMgZnJvbSBibG9ja2luZyBjb250ZXh0LlxcbiAyMzM6XFx0XFx0XFx0XFx0ICovXFxuIDIzNDpcXHRcXHRcXHRcXHRpZiAodW5saWtlbHkoaW92X2l0ZXJfY291bnQoaXRlcikpKSB7XFxuIDIzNTpcXHRcXHRcXHRcXHRcXHRyZXQgPSAtRUFHQUlOO1xcbiAyMzY6XFx0XFx0XFx0XFx0XFx0Z290byBmYWlsO1xcbiAyMzc6XFx0XFx0XFx0XFx0fVxcbiAyMzg6XFx0XFx0XFx0XFx0YmlvLVxcdTAwM2ViaV9vcGYgfD0gUkVRX05PV0FJVDtcXG4gMjM5OlxcdFxcdFxcdH1cXG4gMjQwOlxcdFxcdFxcdGlmIChpb2NiLVxcdTAwM2VraV9mbGFncyBcXHUwMDI2IElPQ0JfSEFTX01FVEFEQVRBKSB7XFxuIDI0MTpcXHRcXHRcXHRcXHRyZXQgPSBiaW9faW50ZWdyaXR5X21hcF9pdGVyKGJpbywgaW9jYi1cXHUwMDNlcHJpdmF0ZSk7XFxuIDI0MjpcXHRcXHRcXHRcXHRpZiAodW5saWtlbHkocmV0KSkge1xcbiAyNDM6XFx0XFx0XFx0XFx0XFx0YmlvLVxcdTAwM2ViaV9zdGF0dXMgPSBlcnJub190b19ibGtfc3RhdHVzKHJldCk7XFxuIDI0NDpcXHRcXHRcXHRcXHRcXHRiaW9fZW5kaW8oYmlvKTtcXG4gMjQ1OlxcdFxcdFxcdFxcdFxcdGJyZWFrO1xcbiAyNDY6XFx0XFx0XFx0XFx0fVxcbiAyNDc6XFx0XFx0XFx0fVxcbiAyNDg6XFx0XFxuIDI0OTpcXHRcXHRcXHRpZiAoaXNfcmVhZCkge1xcbiAyNTA6XFx0XFx0XFx0XFx0aWYgKGRpby1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBESU9fU0hPVUxEX0RJUlRZKVxcbiAyNTE6XFx0XFx0XFx0XFx0XFx0YmlvX3NldF9wYWdlc19kaXJ0eShiaW8pO1xcbiAyNTI6XFx0XFx0XFx0fSBlbHNlIHtcXG4gMjUzOlxcdFxcdFxcdFxcdHRhc2tfaW9fYWNjb3VudF93cml0ZShiaW8tXFx1MDAzZWJpX2l0ZXIuYmlfc2l6ZSk7XFxuIDI1NDpcXHRcXHRcXHR9XFxuIDI1NTpcXHRcXHRcXHRkaW8tXFx1MDAzZXNpemUgKz0gYmlvLVxcdTAwM2ViaV9pdGVyLmJpX3NpemU7XFxuIDI1NjpcXHRcXHRcXHRwb3MgKz0gYmlvLVxcdTAwM2ViaV9pdGVyLmJpX3NpemU7XFxuIDI1NzpcXHRcXG4gMjU4OlxcdFxcdFxcdG5yX3BhZ2VzID0gYmlvX2lvdl92ZWNzX3RvX2FsbG9jKGl0ZXIsIEJJT19NQVhfVkVDUyk7XFxuIDI1OTpcXHRcXHRcXHRpZiAoIW5yX3BhZ2VzKSB7XFxuIDI2MDpcXHRcXHRcXHRcXHRzdWJtaXRfYmlvKGJpbyk7XFxuIDI2MTpcXHRcXHRcXHRcXHRicmVhaztcXG4gMjYyOlxcdFxcdFxcdH1cXG4gMjYzOlxcdFxcdFxcdGF0b21pY19pbmMoXFx1MDAyNmRpby1cXHUwMDNlcmVmKTtcXG4gMjY0OlxcdFxcdFxcdHN1Ym1pdF9iaW8oYmlvKTtcXG4gMjY1OlxcdFxcdFxcdGJpbyA9IGJpb19hbGxvYyhiZGV2LCBucl9wYWdlcywgb3BmLCBHRlBfS0VSTkVMKTtcXG4gMjY2OlxcdFxcdH1cXG4gMjY3OlxcdFxcbiAyNjg6XFx0XFx0YmxrX2ZpbmlzaF9wbHVnKFxcdTAwMjZwbHVnKTtcXG4gMjY5OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQxNTo1ODo1NC43MTU2NDg0NDZaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjA1MDE3MTM4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgYF9fYmxrZGV2X2RpcmVjdF9JT2AqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHR3ZWFraW5nIGBfX2Jsa2Rldl9kaXJlY3RfSU9gLCB3aGljaCBtZWFucyB3ZSdyZSBsb29raW5nIGF0IGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gaG93IGRpcmVjdCBJL08gd29ya3Mgd2l0aCBibG9jayBkZXZpY2VzLiBUaGF0IHNjcmVhbXMgXCJmdXp6aW5nIHRhcmdldFwiIHRvIG1lLiBUaGlzIGhhcyB0aGUgcG90ZW50aWFsIHRvIGV4cG9zZSBzb21lIG5hc3R5IGVkZ2UgY2FzZXMsIGVzcGVjaWFsbHkgZ2l2ZW4gdGhlIGNvbXBsZXhpdHkgb2YgYmxvY2sgZGV2aWNlIGludGVyYWN0aW9ucy4gTXkgbWFpbiBmb2N1cyBoZXJlIHdpbGwgYmUgb24gdGhlIGBfX2Jsa2Rldl9kaXJlY3RfSU9gIHN5bWJvbCBpdHNlbGYuIEkgZG9uJ3Qgc2VlIGFueSBvYnZpb3VzIGNvbmZpZyBkZXBlbmRlbmNpZXMganVtcGluZyBvdXQgYXQgbWUgcmlnaHQgYXdheSwgYnV0IGl0J3MgYWx3YXlzIGdvb2QgdG8gYmUgdGhvcm91Z2guIEknbGwgbmVlZCB0byBkb3VibGUtY2hlY2sgaWYgc29tZXRoaW5nIGxpa2UgYElPQ0JfSEFTX01FVEFEQVRBYCBoYXMgYW55IGluZmx1ZW5jZSBvciBzcGVjaWZpYyBjb25maWd1cmF0aW9uIHJlcXVpcmVtZW50cy4gV2UgZG9uJ3Qgd2FudCB0byBtaXNzIGFueXRoaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMDIyLCJPdXRwdXRUb2tlbnMiOjIyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQxNTo1ODo1OC4zMjA2Njg2MTRaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mzg3NzYyMzkxMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJJT0NCX0hBU19NRVRBREFUQVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJibG9jay9mb3BzLmM9MTc1PXN0YXRpYyBzc2l6ZV90IF9fYmxrZGV2X2RpcmVjdF9JTyhzdHJ1Y3Qga2lvY2IgKmlvY2IsIHN0cnVjdCBpb3ZfaXRlciAqaXRlcixcXG4tLVxcbmJsb2NrL2ZvcHMuYy0yMzktXFx0XFx0fVxcbmJsb2NrL2ZvcHMuYzoyNDA6XFx0XFx0aWYgKGlvY2ItXFx1MDAzZWtpX2ZsYWdzIFxcdTAwMjYgSU9DQl9IQVNfTUVUQURBVEEpIHtcXG5ibG9jay9mb3BzLmMtMjQxLVxcdFxcdFxcdHJldCA9IGJpb19pbnRlZ3JpdHlfbWFwX2l0ZXIoYmlvLCBpb2NiLVxcdTAwM2Vwcml2YXRlKTtcXG4tLVxcbmJsb2NrL2ZvcHMuYz0zMjQ9c3RhdGljIHNzaXplX3QgX19ibGtkZXZfZGlyZWN0X0lPX2FzeW5jKHN0cnVjdCBraW9jYiAqaW9jYixcXG4tLVxcbmJsb2NrL2ZvcHMuYy0zNzAtXFxuYmxvY2svZm9wcy5jOjM3MTpcXHRpZiAoaW9jYi1cXHUwMDNla2lfZmxhZ3MgXFx1MDAyNiBJT0NCX0hBU19NRVRBREFUQSkge1xcbmJsb2NrL2ZvcHMuYy0zNzItXFx0XFx0cmV0ID0gYmlvX2ludGVncml0eV9tYXBfaXRlcihiaW8sIGlvY2ItXFx1MDAzZXByaXZhdGUpO1xcbi0tXFxuYmxvY2svZm9wcy5jPTM5OD1zdGF0aWMgc3NpemVfdCBibGtkZXZfZGlyZWN0X0lPKHN0cnVjdCBraW9jYiAqaW9jYiwgc3RydWN0IGlvdl9pdGVyICppdGVyKVxcbi0tXFxuYmxvY2svZm9wcy5jLTQzMC1cXHRpZiAobGlrZWx5KG5yX3BhZ2VzIFxcdTAwM2M9IEJJT19NQVhfVkVDUyBcXHUwMDI2XFx1MDAyNlxcbmJsb2NrL2ZvcHMuYzo0MzE6XFx0XFx0ICAgIShpb2NiLVxcdTAwM2VraV9mbGFncyBcXHUwMDI2IElPQ0JfSEFTX01FVEFEQVRBKSkpIHtcXG5ibG9jay9mb3BzLmMtNDMyLVxcdFxcdGlmIChpc19zeW5jX2tpb2NiKGlvY2IpKVxcbi0tXFxuaW5jbHVkZS9saW51eC9mcy5oPTg5PXR5cGVkZWYgaW50IChkaW9faW9kb25lX3QpKHN0cnVjdCBraW9jYiAqaW9jYiwgbG9mZl90IG9mZnNldCxcXG4tLVxcbmluY2x1ZGUvbGludXgvZnMuaC0xNDEtXFxuaW5jbHVkZS9saW51eC9mcy5oOjE0MjovKiBTdXBwb3J0cyBJT0NCX0hBU19NRVRBREFUQSAqL1xcbmluY2x1ZGUvbGludXgvZnMuaC0xNDMtI2RlZmluZSBGTU9ERV9IQVNfTUVUQURBVEFcXHQoKF9fZm9yY2UgZm1vZGVfdCkoMSBcXHUwMDNjXFx1MDAzYyAxMykpXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2ZzLmg9MzM2PXN0cnVjdCByZWFkYWhlYWRfY29udHJvbDtcXG4tLVxcbmluY2x1ZGUvbGludXgvZnMuaC0zNTgtI2RlZmluZSBJT0NCX0FJT19SV1xcdFxcdCgxIFxcdTAwM2NcXHUwMDNjIDIyKVxcbmluY2x1ZGUvbGludXgvZnMuaDozNTk6I2RlZmluZSBJT0NCX0hBU19NRVRBREFUQVxcdCgxIFxcdTAwM2NcXHUwMDNjIDIzKVxcbmluY2x1ZGUvbGludXgvZnMuaC0zNjAtXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2ZzLmgtMzc2LVxcdHsgSU9DQl9BSU9fUlcsXFx0XFx0XFxcIkFJT19SV1xcXCIgfSwgXFxcXFxcbmluY2x1ZGUvbGludXgvZnMuaDozNzc6XFx0eyBJT0NCX0hBU19NRVRBREFUQSxcXHRcXFwiQUlPX0hBU19NRVRBREFUQVxcXCIgfVxcbmluY2x1ZGUvbGludXgvZnMuaC0zNzgtXFxuLS1cXG5pb191cmluZy9ydy5jPTIyND1zdGF0aWMgaW5saW5lIHZvaWQgaW9fbWV0YV9yZXN0b3JlKHN0cnVjdCBpb19hc3luY19ydyAqaW8sIHN0cnVjdCBraW9jYiAqa2lvY2IpXFxuaW9fdXJpbmcvcncuYy0yMjUte1xcbmlvX3VyaW5nL3J3LmM6MjI2OlxcdGlmIChraW9jYi1cXHUwMDNla2lfZmxhZ3MgXFx1MDAyNiBJT0NCX0hBU19NRVRBREFUQSkge1xcbmlvX3VyaW5nL3J3LmMtMjI3LVxcdFxcdGlvLVxcdTAwM2VtZXRhLnNlZWQgPSBpby1cXHUwMDNlbWV0YV9zdGF0ZS5zZWVkO1xcbi0tXFxuaW9fdXJpbmcvcncuYz04NDg9c3RhdGljIGludCBpb19yd19pbml0X2ZpbGUoc3RydWN0IGlvX2tpb2NiICpyZXEsIGZtb2RlX3QgbW9kZSwgaW50IHJ3X3R5cGUpXFxuLS1cXG5pb191cmluZy9ydy5jLTkwNC1cXHRcXHRcXHRyZXR1cm4gLUVPUE5PVFNVUFA7XFxuaW9fdXJpbmcvcncuYzo5MDU6XFx0XFx0a2lvY2ItXFx1MDAzZWtpX2ZsYWdzIHw9IElPQ0JfSEFTX01FVEFEQVRBO1xcbmlvX3VyaW5nL3J3LmMtOTA2LVxcdFxcdGtpb2NiLVxcdTAwM2Vwcml2YXRlID0gXFx1MDAyNmlvLVxcdTAwM2VtZXRhO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQxNTo1OTowMi4xOTgzMDI0NzVaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjUwODE1MTk3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEN1cnJlbnQgQ29uc2lkZXJhdGlvbnMgUmVnYXJkaW5nIE1ldGFkYXRhIEkvTyBhbmQgaW9fdXJpbmcqKlxuXG5BbHJpZ2h0LCBsZXQncyBzZWUuIEknbSBmb2N1c2luZyBvbiBtZXRhZGF0YSBJL08sIHNwZWNpZmljYWxseSBob3cgaXQncyBoYW5kbGVkLCB3aGljaCBvZiBjb3Vyc2UgYnJpbmdzIGBJT0NCX0hBU19NRVRBREFUQWAgdG8gbWluZC4gIFRoaXMgaXMgYSBmbGFnIHRoYXQsIGFzIEkgdW5kZXJzdGFuZCBpdCwgc2lnbmFscyB0aGF0IHdlJ3JlIGRlYWxpbmcgd2l0aCBtZXRhZGF0YSBvcGVyYXRpb25zLCBhbmQgbmF0dXJhbGx5LCBpdCdzIHN1cHBvcnRlZCB3aXRoaW4gdGhlIGlvX3VyaW5nIGZyYW1ld29yay4gIFRoZSBpbW1lZGlhdGUgbG9jYXRpb24gSSBuZWVkIHRvIGNoZWNrIGlzIHdpdGhpbiBgX19ibGtkZXZfZGlyZWN0X0lPYCDigJMgdGhhdCBzZWVtcyB0byBiZSB3aGVyZSB0aGUgY2hhbmdlcyByZWxhdGVkIHRvIHRoaXMgYXJlIGNvbmNlbnRyYXRlZC4gIEkgc2hvdWxkIGJlIGFibGUgdG8gdHJhY2sgZG93biB0aGUgaW1wbGVtZW50YXRpb24gZnJvbSB0aGVyZS4gTm93LCB0aGUgbmV4dCBxdWVzdGlvbiBwb3BwaW5nIGludG8gbXkgaGVhZCBpcywgYXJlIHRoZXJlIGFueSBzcGVjaWZpYyBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMgdGhhdCBjb21lIGludG8gcGxheSB3aGVuIHVzaW5nIHRoZSBgYmlvX2ludGVncml0eV9tYXBfaXRlcmAgc3RydWN0dXJlIHdpdGhpbiB0aGlzIGNvbnRleHQ/IFRoYXQncyB0aGUgbmV4dCBhcmVhIEkgd2FudCB0byBpbnZlc3RpZ2F0ZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDIwNywiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDE1OjU5OjA1Ljg0OTEyMDQ3MloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDgwODI1MTA2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJpb19pbnRlZ3JpdHlfbWFwX2l0ZXJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYmxvY2svYmlvLWludGVncml0eS5jPTQzND1zdGF0aWMgdm9pZCBiaW9fdWlvX21ldGFfdG9fYmlwKHN0cnVjdCBiaW8gKmJpbywgc3RydWN0IHVpb19tZXRhICptZXRhKVxcbi0tXFxuYmxvY2svYmlvLWludGVncml0eS5jLTQ0Ny1cXG5ibG9jay9iaW8taW50ZWdyaXR5LmM6NDQ4OmludCBiaW9faW50ZWdyaXR5X21hcF9pdGVyKHN0cnVjdCBiaW8gKmJpbywgc3RydWN0IHVpb19tZXRhICptZXRhKVxcbmJsb2NrL2Jpby1pbnRlZ3JpdHkuYy00NDkte1xcbi0tXFxuYmxvY2svZm9wcy5jPTE3NT1zdGF0aWMgc3NpemVfdCBfX2Jsa2Rldl9kaXJlY3RfSU8oc3RydWN0IGtpb2NiICppb2NiLCBzdHJ1Y3QgaW92X2l0ZXIgKml0ZXIsXFxuLS1cXG5ibG9jay9mb3BzLmMtMjQwLVxcdFxcdGlmIChpb2NiLVxcdTAwM2VraV9mbGFncyBcXHUwMDI2IElPQ0JfSEFTX01FVEFEQVRBKSB7XFxuYmxvY2svZm9wcy5jOjI0MTpcXHRcXHRcXHRyZXQgPSBiaW9faW50ZWdyaXR5X21hcF9pdGVyKGJpbywgaW9jYi1cXHUwMDNlcHJpdmF0ZSk7XFxuYmxvY2svZm9wcy5jLTI0Mi1cXHRcXHRcXHRpZiAodW5saWtlbHkocmV0KSkge1xcbi0tXFxuYmxvY2svZm9wcy5jPTMyND1zdGF0aWMgc3NpemVfdCBfX2Jsa2Rldl9kaXJlY3RfSU9fYXN5bmMoc3RydWN0IGtpb2NiICppb2NiLFxcbi0tXFxuYmxvY2svZm9wcy5jLTM3MS1cXHRpZiAoaW9jYi1cXHUwMDNla2lfZmxhZ3MgXFx1MDAyNiBJT0NCX0hBU19NRVRBREFUQSkge1xcbmJsb2NrL2ZvcHMuYzozNzI6XFx0XFx0cmV0ID0gYmlvX2ludGVncml0eV9tYXBfaXRlcihiaW8sIGlvY2ItXFx1MDAzZXByaXZhdGUpO1xcbmJsb2NrL2ZvcHMuYy0zNzMtXFx0XFx0V1JJVEVfT05DRShpb2NiLVxcdTAwM2Vwcml2YXRlLCBOVUxMKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvYmlvLWludGVncml0eS5oPTc4PWludCBiaW9faW50ZWdyaXR5X21hcF91c2VyKHN0cnVjdCBiaW8gKmJpbywgc3RydWN0IGlvdl9pdGVyICppdGVyKTtcXG5pbmNsdWRlL2xpbnV4L2Jpby1pbnRlZ3JpdHkuaDo3OTppbnQgYmlvX2ludGVncml0eV9tYXBfaXRlcihzdHJ1Y3QgYmlvICpiaW8sIHN0cnVjdCB1aW9fbWV0YSAqbWV0YSk7XFxuaW5jbHVkZS9saW51eC9iaW8taW50ZWdyaXR5LmgtODAtdm9pZCBiaW9faW50ZWdyaXR5X3VubWFwX3VzZXIoc3RydWN0IGJpbyAqYmlvKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvYmlvLWludGVncml0eS5oPTkzPXN0YXRpYyBpbmxpbmUgaW50IGJpb19pbnRlZ3JpdHlfbWFwX3VzZXIoc3RydWN0IGJpbyAqYmlvLCBzdHJ1Y3QgaW92X2l0ZXIgKml0ZXIpXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2Jpby1pbnRlZ3JpdHkuaC05Ny1cXG5pbmNsdWRlL2xpbnV4L2Jpby1pbnRlZ3JpdHkuaDo5ODpzdGF0aWMgaW5saW5lIGludCBiaW9faW50ZWdyaXR5X21hcF9pdGVyKHN0cnVjdCBiaW8gKmJpbywgc3RydWN0IHVpb19tZXRhICptZXRhKVxcbmluY2x1ZGUvbGludXgvYmlvLWludGVncml0eS5oLTk5LXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMTU6NTk6MDguMzI5OTUxMzE4WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzExMDAwNjg1MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIGJpb19pbnRlZ3JpdHlfbWFwX2l0ZXIgRnVuY3Rpb24qKlxuXG5Pa2F5LCBzbyBgYmlvX2ludGVncml0eV9tYXBfaXRlcmAgaXMgZGVmaW5lZCB3aXRoaW4gYGJsb2NrL2Jpby1pbnRlZ3JpdHkuY2AuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIlJpZ2h0LCBnb29kIHRvIGtub3cgd2hlcmUgdGhlIGNvZGUgbGl2ZXMuXCIgTm93LCB0aGUgbmF0dXJhbCBuZXh0IHN0ZXAgaXMgdG8gcXVpY2tseSBkZXRlcm1pbmUgaWYgdGhpcyBwYXJ0aWN1bGFyIG1vZHVsZSBvciBmdW5jdGlvbiBoYXMgYW55IGRlcGVuZGVuY2llcyBvbiBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGlmIGl0cyBiZWhhdmlvciBpcyBpbmZsdWVuY2VkIGJ5IGFueSBzZXR0aW5ncywgY29tcGlsZS10aW1lIGZsYWdzLCBvciBydW50aW1lIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gVGhpcyBpcyBjcnVjaWFsIGZvciB1bmRlcnN0YW5kaW5nIGl0cyBmbGV4aWJpbGl0eSBhbmQgaG93IGl0IG1pZ2h0IGludGVyYWN0IHdpdGggdGhlIGJyb2FkZXIgc3lzdGVtJ3Mgb3ZlcmFsbCBpbnRlZ3JpdHkuIExldCdzIHNlZSBpZiB0aGF0IGZpbGUgaW1wb3J0cyBhbnkgY29uZmlncy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTA1MywiT3V0cHV0VG9rZW5zIjoxOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDE1OjU5OjExLjQzOTk2MDc5OVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjU2NzAzNTYwNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJiaW8taW50ZWdyaXR5Lm9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYmxvY2svTWFrZWZpbGU9MjY9b2JqLSQoQ09ORklHX0lPU0NIRURfQkZRKVxcdCs9IGJmcS5vXFxuYmxvY2svTWFrZWZpbGUtMjctXFxuYmxvY2svTWFrZWZpbGU6Mjg6b2JqLSQoQ09ORklHX0JMS19ERVZfSU5URUdSSVRZKSArPSBiaW8taW50ZWdyaXR5Lm8gYmxrLWludGVncml0eS5vIHQxMC1waS5vIFxcXFxcXG5ibG9jay9NYWtlZmlsZS0yOS1cXHRcXHRcXHRcXHQgICBiaW8taW50ZWdyaXR5LWF1dG8ubyBiaW8taW50ZWdyaXR5LWZzLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMTU6NTk6MTQuMDA3MDA0MTk0WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4NTYwNDIxODEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyB0aGUgQklPIEludGVncml0eSBEZXBlbmRlbmN5KipcblxuT2theSwgc28gaXQgbG9va3MgbGlrZSBgYmlvLWludGVncml0eS5vYCAqYWJzb2x1dGVseSogZGVwZW5kcyBvbiBgQ09ORklHX0JMS19ERVZfSU5URUdSSVRZYC4gVGhhdCdzIHRoZSBvYnZpb3VzIHN0YXJ0aW5nIHBvaW50LiBJIHN1c3BlY3QgdGhhdCBpZiB0aGF0IGNvbmZpZyBvcHRpb24gaXNuJ3Qgc2V0LCB0aGVuIHRoZSBgYmlvX2ludGVncml0eV9tYXBfaXRlcmAgZnVuY3Rpb24gaXMgcHJvYmFibHkganVzdCBhIHF1aWNrIGlubGluZSBzdHViIHRoYXQgcmV0dXJucyBlaXRoZXIgemVybyBvciBhbiBlcnJvci4gQSBxdWljayBjaGVjayBvZiBgaW5jbHVkZS9saW51eC9iaW8taW50ZWdyaXR5LmhgIHNob3VsZCBjb25maXJtIHRoYXQuIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhpcyBkZXBlbmRlbmN5IGlzIGhhbmRsZWQgY29ycmVjdGx5IGluIHRoZSBidWlsZCBzeXN0ZW0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUzNTUsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQxNTo1OToxNy44NjMwNTAzOTVaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTIxNzQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImluY2x1ZGUvbGludXgvYmlvLWludGVncml0eS5oXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDg1LFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDg1OlxcdFxcbiAgODY6XFx0I2Vsc2UgLyogQ09ORklHX0JMS19ERVZfSU5URUdSSVRZICovXFxuICA4NzpcXHRcXG4gIDg4OlxcdHN0YXRpYyBpbmxpbmUgc3RydWN0IGJpb19pbnRlZ3JpdHlfcGF5bG9hZCAqYmlvX2ludGVncml0eShzdHJ1Y3QgYmlvICpiaW8pXFxuICA4OTpcXHR7XFxuICA5MDpcXHRcXHRyZXR1cm4gTlVMTDtcXG4gIDkxOlxcdH1cXG4gIDkyOlxcdFxcbiAgOTM6XFx0c3RhdGljIGlubGluZSBpbnQgYmlvX2ludGVncml0eV9tYXBfdXNlcihzdHJ1Y3QgYmlvICpiaW8sIHN0cnVjdCBpb3ZfaXRlciAqaXRlcilcXG4gIDk0OlxcdHtcXG4gIDk1OlxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiAgOTY6XFx0fVxcbiAgOTc6XFx0XFxuICA5ODpcXHRzdGF0aWMgaW5saW5lIGludCBiaW9faW50ZWdyaXR5X21hcF9pdGVyKHN0cnVjdCBiaW8gKmJpbywgc3RydWN0IHVpb19tZXRhICptZXRhKVxcbiAgOTk6XFx0e1xcbiAxMDA6XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIDEwMTpcXHR9XFxuIDEwMjpcXHRcXG4gMTAzOlxcdHN0YXRpYyBpbmxpbmUgdm9pZCBiaW9faW50ZWdyaXR5X3VubWFwX3VzZXIoc3RydWN0IGJpbyAqYmlvKVxcbiAxMDQ6XFx0e1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQxNTo1OToxNy44NjMxNzQzNDZaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjg4OTY4NTkzNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbnZlc3RpZ2F0aW5nIHRoZSBDb25maWd1cmF0aW9uIGZvciBJbnRlZ3JpdHkgYW5kIElPX1VSSU5HKipcblxuT2theSwgc28gSSdtIHRoaW5raW5nIGFib3V0IHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiBoZXJlLiBXZSBkZWZpbml0ZWx5IG5lZWQgYENPTkZJR19CTEtfREVWX0lOVEVHUklUWWAg4oCTIHRoYXQncyBhIGdpdmVuLiBCdXQsIEknbSBhbHNvIHdvbmRlcmluZyBpZiBgQ09ORklHX0lPX1VSSU5HYCBpcyAqcmVxdWlyZWQqIHRvIHRyaWdnZXIgYElPQ0JfSEFTX01FVEFEQVRBYC4gSXQgc2VlbXMgbGlrZSBhIHBvdGVudGlhbCBkZXBlbmRlbmN5LCBhbmQgSSBuZWVkIHRvIGJlIGNlcnRhaW4uIEkndmUgZ290IHRvIGVuc3VyZSBJIGhhdmVuJ3QgbWlzc2VkIGFueSBvdGhlciB1c2VzIG9mIGBJT0NCX0hBU19NRVRBREFUQWAuIFRpbWUgdG8gY2hlY2sgdGhlIGNvZGViYXNlIG1vcmUgZ2VuZXJhbGx5IGZvciBvdGhlciBwbGFjZXMgd2hlcmUgYElPQ0JfSEFTX01FVEFEQVRBYCBtaWdodCBiZSBkZWZpbmVkIG9yIHVzZWQuIEdvdHRhIGNvdmVyIGFsbCB0aGUgYmFzZXMhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU4NDIsIk91dHB1dFRva2VucyI6MjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDE1OjU5OjIwLjc1Mjg2MzM1MloiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjI1NTMyNTA2MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJJT0NCX0hBU19NRVRBREFUQVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJibG9jay9mb3BzLmM9MTc1PXN0YXRpYyBzc2l6ZV90IF9fYmxrZGV2X2RpcmVjdF9JTyhzdHJ1Y3Qga2lvY2IgKmlvY2IsIHN0cnVjdCBpb3ZfaXRlciAqaXRlcixcXG4tLVxcbmJsb2NrL2ZvcHMuYy0yMzktXFx0XFx0fVxcbmJsb2NrL2ZvcHMuYzoyNDA6XFx0XFx0aWYgKGlvY2ItXFx1MDAzZWtpX2ZsYWdzIFxcdTAwMjYgSU9DQl9IQVNfTUVUQURBVEEpIHtcXG5ibG9jay9mb3BzLmMtMjQxLVxcdFxcdFxcdHJldCA9IGJpb19pbnRlZ3JpdHlfbWFwX2l0ZXIoYmlvLCBpb2NiLVxcdTAwM2Vwcml2YXRlKTtcXG4tLVxcbmJsb2NrL2ZvcHMuYz0zMjQ9c3RhdGljIHNzaXplX3QgX19ibGtkZXZfZGlyZWN0X0lPX2FzeW5jKHN0cnVjdCBraW9jYiAqaW9jYixcXG4tLVxcbmJsb2NrL2ZvcHMuYy0zNzAtXFxuYmxvY2svZm9wcy5jOjM3MTpcXHRpZiAoaW9jYi1cXHUwMDNla2lfZmxhZ3MgXFx1MDAyNiBJT0NCX0hBU19NRVRBREFUQSkge1xcbmJsb2NrL2ZvcHMuYy0zNzItXFx0XFx0cmV0ID0gYmlvX2ludGVncml0eV9tYXBfaXRlcihiaW8sIGlvY2ItXFx1MDAzZXByaXZhdGUpO1xcbi0tXFxuYmxvY2svZm9wcy5jPTM5OD1zdGF0aWMgc3NpemVfdCBibGtkZXZfZGlyZWN0X0lPKHN0cnVjdCBraW9jYiAqaW9jYiwgc3RydWN0IGlvdl9pdGVyICppdGVyKVxcbi0tXFxuYmxvY2svZm9wcy5jLTQzMC1cXHRpZiAobGlrZWx5KG5yX3BhZ2VzIFxcdTAwM2M9IEJJT19NQVhfVkVDUyBcXHUwMDI2XFx1MDAyNlxcbmJsb2NrL2ZvcHMuYzo0MzE6XFx0XFx0ICAgIShpb2NiLVxcdTAwM2VraV9mbGFncyBcXHUwMDI2IElPQ0JfSEFTX01FVEFEQVRBKSkpIHtcXG5ibG9jay9mb3BzLmMtNDMyLVxcdFxcdGlmIChpc19zeW5jX2tpb2NiKGlvY2IpKVxcbi0tXFxuaW5jbHVkZS9saW51eC9mcy5oPTg5PXR5cGVkZWYgaW50IChkaW9faW9kb25lX3QpKHN0cnVjdCBraW9jYiAqaW9jYiwgbG9mZl90IG9mZnNldCxcXG4tLVxcbmluY2x1ZGUvbGludXgvZnMuaC0xNDEtXFxuaW5jbHVkZS9saW51eC9mcy5oOjE0MjovKiBTdXBwb3J0cyBJT0NCX0hBU19NRVRBREFUQSAqL1xcbmluY2x1ZGUvbGludXgvZnMuaC0xNDMtI2RlZmluZSBGTU9ERV9IQVNfTUVUQURBVEFcXHQoKF9fZm9yY2UgZm1vZGVfdCkoMSBcXHUwMDNjXFx1MDAzYyAxMykpXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2ZzLmg9MzM2PXN0cnVjdCByZWFkYWhlYWRfY29udHJvbDtcXG4tLVxcbmluY2x1ZGUvbGludXgvZnMuaC0zNTgtI2RlZmluZSBJT0NCX0FJT19SV1xcdFxcdCgxIFxcdTAwM2NcXHUwMDNjIDIyKVxcbmluY2x1ZGUvbGludXgvZnMuaDozNTk6I2RlZmluZSBJT0NCX0hBU19NRVRBREFUQVxcdCgxIFxcdTAwM2NcXHUwMDNjIDIzKVxcbmluY2x1ZGUvbGludXgvZnMuaC0zNjAtXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2ZzLmgtMzc2LVxcdHsgSU9DQl9BSU9fUlcsXFx0XFx0XFxcIkFJT19SV1xcXCIgfSwgXFxcXFxcbmluY2x1ZGUvbGludXgvZnMuaDozNzc6XFx0eyBJT0NCX0hBU19NRVRBREFUQSxcXHRcXFwiQUlPX0hBU19NRVRBREFUQVxcXCIgfVxcbmluY2x1ZGUvbGludXgvZnMuaC0zNzgtXFxuLS1cXG5pb191cmluZy9ydy5jPTIyND1zdGF0aWMgaW5saW5lIHZvaWQgaW9fbWV0YV9yZXN0b3JlKHN0cnVjdCBpb19hc3luY19ydyAqaW8sIHN0cnVjdCBraW9jYiAqa2lvY2IpXFxuaW9fdXJpbmcvcncuYy0yMjUte1xcbmlvX3VyaW5nL3J3LmM6MjI2OlxcdGlmIChraW9jYi1cXHUwMDNla2lfZmxhZ3MgXFx1MDAyNiBJT0NCX0hBU19NRVRBREFUQSkge1xcbmlvX3VyaW5nL3J3LmMtMjI3LVxcdFxcdGlvLVxcdTAwM2VtZXRhLnNlZWQgPSBpby1cXHUwMDNlbWV0YV9zdGF0ZS5zZWVkO1xcbi0tXFxuaW9fdXJpbmcvcncuYz04NDg9c3RhdGljIGludCBpb19yd19pbml0X2ZpbGUoc3RydWN0IGlvX2tpb2NiICpyZXEsIGZtb2RlX3QgbW9kZSwgaW50IHJ3X3R5cGUpXFxuLS1cXG5pb191cmluZy9ydy5jLTkwNC1cXHRcXHRcXHRyZXR1cm4gLUVPUE5PVFNVUFA7XFxuaW9fdXJpbmcvcncuYzo5MDU6XFx0XFx0a2lvY2ItXFx1MDAzZWtpX2ZsYWdzIHw9IElPQ0JfSEFTX01FVEFEQVRBO1xcbmlvX3VyaW5nL3J3LmMtOTA2LVxcdFxcdGtpb2NiLVxcdTAwM2Vwcml2YXRlID0gXFx1MDAyNmlvLVxcdTAwM2VtZXRhO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQxNTo1OToyMy4wMDgxOTcwOTRaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzI4NDQ1NzY1NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbnZlc3RpZ2F0aW5nIElPX1VSSU5HIE1ldGFkYXRhIERlcGVuZGVuY3kqKlxuXG5Pa2F5LCBzbyBJJ3ZlIHBpbnBvaW50ZWQgdGhhdCBgSU9DQl9IQVNfTUVUQURBVEFgIGlzIHNvbGVseSBkZWZpbmVkIGFuZCB1c2VkIHdpdGhpbiBgaW9fdXJpbmcvcncuY2AuIFRoYXQncyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIFRoaXMgc3Ryb25nbHkgc3VnZ2VzdHMgYSBkZXBlbmRlbmN5IG9uIHRoZSBgaW9fdXJpbmdgIGluZnJhc3RydWN0dXJlIGl0c2VsZi4gTm93LCBJIG5lZWQgdG8gY29uZmlybSB0aGF0IGBDT05GSUdfSU9fVVJJTkdgIGlzIGluZGVlZCB0aGUgY29ycmVjdCBjb25maWd1cmF0aW9uIHN5bWJvbCBjb250cm9sbGluZyB0aGlzIGZlYXR1cmUuIEl0J3MgYSBmYWlybHkgc2FmZSBhc3N1bXB0aW9uIGdpdmVuIHRoZSBuYW1pbmcgY29udmVudGlvbiwgYnV0IEkgYWx3YXlzIHByZWZlciB0byBkb3VibGUtY2hlY2sgdGhlc2UgdGhpbmdzIHRvIGF2b2lkIG1ha2luZyBpbmNvcnJlY3QgYXNzZXJ0aW9ucy4gVGltZSB0byBjb25maXJtIHRoYXQgY29uZmlndXJhdGlvbiBvcHRpb24hXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY5ODUsIk91dHB1dFRva2VucyI6MTgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQxNTo1OToyNi4yOTI2NTgyWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTEzNzU0NjE1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBJT19VUklOR1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbml0L0tjb25maWc9MTg5MD1jb25maWcgQUlPXFxuLS1cXG5pbml0L0tjb25maWctMTg5Ny1cXG5pbml0L0tjb25maWc6MTg5ODpjb25maWcgSU9fVVJJTkdcXG5pbml0L0tjb25maWctMTg5OS1cXHRib29sIFxcXCJFbmFibGUgSU8gdXJpbmcgc3VwcG9ydFxcXCIgaWYgRVhQRVJUXFxuLS1cXG5pbml0L0tjb25maWc9MTkwNz1jb25maWcgR0NPVl9QUk9GSUxFX1VSSU5HXFxuLS1cXG5pbml0L0tjb25maWctMTkxOS1cXG5pbml0L0tjb25maWc6MTkyMDpjb25maWcgSU9fVVJJTkdfTU9DS19GSUxFXFxuaW5pdC9LY29uZmlnLTE5MjEtXFx0dHJpc3RhdGUgXFxcIkVuYWJsZSBpb191cmluZyBtb2NrIGZpbGVzIChFeHBlcmltZW50YWwpXFxcIiBpZiBFWFBFUlRcXG4tLVxcbmlvX3VyaW5nL0tjb25maWctNS1cXG5pb191cmluZy9LY29uZmlnOjY6Y29uZmlnIElPX1VSSU5HX1pDUlhcXG5pb191cmluZy9LY29uZmlnLTctXFx0ZGVmX2Jvb2wgeVxcbi0tXFxuaW9fdXJpbmcvS2NvbmZpZy0xMi1cXG5pb191cmluZy9LY29uZmlnOjEzOmNvbmZpZyBJT19VUklOR19CUEZcXG5pb191cmluZy9LY29uZmlnLTE0LVxcdGRlZl9ib29sIHlcXG4tLVxcbmlvX3VyaW5nL0tjb25maWctMTctXFxuaW9fdXJpbmcvS2NvbmZpZzoxODpjb25maWcgSU9fVVJJTkdfQlBGX09QU1xcbmlvX3VyaW5nL0tjb25maWctMTktXFx0ZGVmX2Jvb2wgeVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQxNTo1OToyOC40MDY0MTgzMTdaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzYzOTIyMjcwNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBCbG9jayBEZXZpY2UgRGlyZWN0IEkvTyBCdWcgRml4KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHksIGBDT05GSUdfSU9fVVJJTkdgIGFuZCBgQ09ORklHX0JMS19ERVZfSU5URUdSSVRZYCBqdW1wIG91dCBhcyB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMuIFRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgaXMgaW4gYF9fYmxrZGV2X2RpcmVjdF9JT2Agd2l0aGluIGBibG9jay9mb3BzLmNgLiBUaGlzIGlzIGEgY2xlYXIgZnVuY3Rpb25hbCBjaGFuZ2UsIHNwZWNpZmljYWxseSBpbiBlcnJvciBoYW5kbGluZy5cblxuVGhlIGJ1ZywgYXMgSSB1bmRlcnN0YW5kIGl0LCBzdGVtcyBmcm9tIGhvdyBgYmlvX2ludGVncml0eV9tYXBfaXRlcmAgZmFpbHVyZXMgd2VyZSBwcmV2aW91c2x5IGhhbmRsZWQuIFRoZSBvbGQgY29kZSB3b3VsZCBqdXN0IGBnb3RvIGZhaWw7YCwgYnV0IHRoYXQgbWlnaHQgbm90IHByb3Blcmx5IGNsZWFuIHVwIHRoZSBgYmlvYCwgcG90ZW50aWFsbHkgbGVha2luZyByZXNvdXJjZXMgb3Igc2ltcGx5IG5vdCBzZXR0aW5nIGBiaW8tXHUwMDNlYmlfc3RhdHVzYCBjb3JyZWN0bHkgYmVmb3JlIGNvbXBsZXRpbmcgaXQuIFRoZSBvcmlnaW5hbCBjb2RlIHNuaXBwZXQgd2FzOlxuXG5gYGBjXG5cdFx0XHRyZXQgPSBiaW9faW50ZWdyaXR5X21hcF9pdGVyKGJpbywgaW9jYi1cdTAwM2Vwcml2YXRlKTtcblx0XHRcdGlmICh1bmxpa2VseShyZXQpKVxuXHRcdFx0XHRnb3RvIGZhaWw7XG5gYGBcblxuQW5kIHRoZSBgZmFpbDpgIHBhdGggd2FzOlxuXG5gYGBjXG5mYWlsOlxuXHRpZiAoZGlvLVx1MDAzZWZsYWdzIFx1MDAyNiBESU9fU0hPVUxEX0RJUlRZKSB7XG5cdFx0YmlvX2NoZWNrX3BhZ2VzX2RpcnR5KGJpbyk7XG5cdH1cblx0ZGlvLVx1MDAzZXNpemUgKz0gYmlvLVx1MDAzZWJpX2l0ZXIuYmlfc2l6ZTtcblx0YmxrX2ZpbmlzaF9wbHVnKFx1MDAyNnBsdWcpO1xuXHRiaW9fcHV0KGJpbyk7XG5cdHJldHVybiByZXQ7XG5gYGBcblxuVGhlIG5ldyBjb2RlIHJlcGxhY2VzIHRoaXMgd2l0aDpcblxuYGBgY1xuXHRcdFx0aWYgKHVubGlrZWx5KHJldCkpIHtcblx0XHRcdFx0YmlvLVx1MDAzZWJpX3N0YXR1cyA9IGVycm5vX3RvX2Jsa19zdGF0dXMocmV0KTtcblx0XHRcdFx0YmlvX2VuZGlvKGJpbyk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuYGBgXG5cblRoaXMgaXMgZGVmaW5pdGVseSBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGVycm9yIGhhbmRsaW5nLiBJdCdzIGEgcHJpbWUgY2FuZGlkYXRlIGZvciBmdXp6aW5nLCBhbmQgSSBuZWVkIHRvIG1ha2UgYSBub3RlIG9mIHRoaXMuIFRoZSBrZXkgZm9jdXMgc3ltYm9scyBmb3IgdGhpcyBmdXp6aW5nIGFyZSBgX19ibGtkZXZfZGlyZWN0X0lPYCwgYW5kIG9mIGNvdXJzZSwgdGhlIGBCTEtfREVWX0lOVEVHUklUWWAgYW5kIGBJT19VUklOR2AgY29uZmlndXJhdGlvbnMuXG5cbkxldCdzIHF1aWNrbHkgY2hlY2sgaWYgYF9fYmxrZGV2X2RpcmVjdF9JT2AgaXMgYSBob3QgcGF0aC4gRGlyZWN0IEkvTyBpcyByZWFzb25hYmx5IGNvbW1vbiwgYnV0IHRoaXMgaXMgYmxvY2sgZGV2aWNlIHNwZWNpZmljIHdoaWNoIG5hcnJvd3MgdGhlIHNjb3BlIHdoaWNoIGlzIGdvb2QuIEhvbGQgb24sIGBfX2Jsa2Rldl9kaXJlY3RfSU9gIGlzIHN0YXRpYy4gSSBtdXN0IGhhdmUgbWlzc2VkIHNvbWV0aGluZy4gYGJsa2Rldl9kaXJlY3RfSU9gIGNhbGxzIGBfX2Jsa2Rldl9kaXJlY3RfSU9gLiBBbHJpZ2h0LCBJJ2xsIHN0aWxsIGp1c3QgdXNlIGBfX2Jsa2Rldl9kaXJlY3RfSU9gIGFzIHRoZSBmb2N1cy5cblxuVGltZSB0byBjYWxsIHNldC1yZXN1bHRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3NDg2LCJPdXRwdXRUb2tlbnMiOjg4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDYzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDE1OjU5OjM2LjA0NTY0Mzk2MloiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg0MDQ4ODE4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCTEtfREVWX0lOVEVHUklUWVwiLFxuICAgIFwiSU9fVVJJTkdcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJfX2Jsa2Rldl9kaXJlY3RfSU9cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBlcnJvciBoYW5kbGluZyBpbiBibG9jayBkZXZpY2UgZGlyZWN0IEkvTyB3aGVuIGJpb19pbnRlZ3JpdHlfbWFwX2l0ZXIgZmFpbHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIGJsb2NrIGxheWVyIGxvZ2ljLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJMS19ERVZfSU5URUdSSVRZXCIsXG4gICAgXCJJT19VUklOR1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIl9fYmxrZGV2X2RpcmVjdF9JT1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGVycm9yIGhhbmRsaW5nIGluIGJsb2NrIGRldmljZSBkaXJlY3QgSS9PIHdoZW4gYmlvX2ludGVncml0eV9tYXBfaXRlciBmYWlscy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgYmxvY2sgbGF5ZXIgbG9naWMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowqmcng[0].run-triage(0) Phase: Succeeded StartedAt: 2026-06-26 15:42:06 +0000 UTC FinishedAt: 2026-06-26 15:59:36 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "92010229c4b38897f1319d260162d2f96925ed17", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BLK_DEV_INTEGRITY", "IO_URING" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "92010229c4b38897f1319d260162d2f96925ed17", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BLK_DEV_INTEGRITY", "IO_URING" ], "series_id": "4d7d15fe-d4ad-4aa2-bdf2-096f44e76a95" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "__blkdev_direct_IO" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDE1OjU4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JMS19ERVZfSU5URUdSSVRZJiMzNDssCiAgICAmIzM0O0lPX1VSSU5HJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7X19ibGtkZXZfZGlyZWN0X0lPJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGVycm9yIGhhbmRsaW5nIGluIGJsb2NrIGRldmljZSBkaXJlY3QgSS9PIHdoZW4gYmlvX2ludGVncml0eV9tYXBfaXRlciBmYWlscy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgYmxvY2sgbGF5ZXIgbG9naWMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMTU6NTg8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBjMmI0ZTU4MTQzNTRjNTgxYzUyYmZiODRlZTk0NmFiYjAxNTYzMTc1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBKdW4gMjYgMTU6NTg6NDggMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvYmxvY2svZm9wcy5jIGIvYmxvY2svZm9wcy5jXG5pbmRleCBiYjY2NDJiNDU5MzdjZS4uOWYxNmI5OTVjNjBjNmUgMTAwNjQ0XG4tLS0gYS9ibG9jay9mb3BzLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2Jsb2NrL2ZvcHMuY1xuQEAgLTIzOSw4ICYjNDM7MjM5LDExIEBAIHN0YXRpYyBzc2l6ZV90IF9fYmxrZGV2X2RpcmVjdF9JTyhzdHJ1Y3Qga2lvY2IgKmlvY2IsIHN0cnVjdCBpb3ZfaXRlciAqaXRlcixcbiBcdFx0fVxuIFx0XHRpZiAoaW9jYi1cdTAwM2VraV9mbGFncyBcdTAwMjYgSU9DQl9IQVNfTUVUQURBVEEpIHtcbiBcdFx0XHRyZXQgPSBiaW9faW50ZWdyaXR5X21hcF9pdGVyKGJpbywgaW9jYi1cdTAwM2Vwcml2YXRlKTtcbi1cdFx0XHRpZiAodW5saWtlbHkocmV0KSlcbi1cdFx0XHRcdGdvdG8gZmFpbDtcbiYjNDM7XHRcdFx0aWYgKHVubGlrZWx5KHJldCkpIHtcbiYjNDM7XHRcdFx0XHRiaW8tXHUwMDNlYmlfc3RhdHVzID0gZXJybm9fdG9fYmxrX3N0YXR1cyhyZXQpO1xuJiM0MztcdFx0XHRcdGJpb19lbmRpbyhiaW8pO1xuJiM0MztcdFx0XHRcdGJyZWFrO1xuJiM0MztcdFx0XHR9XG4gXHRcdH1cbiBcbiBcdFx0aWYgKGlzX3JlYWQpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAxNTo1ODwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCTEtfREVWX0lOVEVHUklUWSYjMzQ7LAogICAgJiMzNDtJT19VUklORyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O19fYmxrZGV2X2RpcmVjdF9JTyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBlcnJvciBoYW5kbGluZyBpbiBibG9jayBkZXZpY2UgZGlyZWN0IEkvTyB3aGVuIGJpb19pbnRlZ3JpdHlfbWFwX2l0ZXIgZmFpbHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIGJsb2NrIGxheWVyIGxvZ2ljLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBjMmI0ZTU4MTQzNTRjNTgxYzUyYmZiODRlZTk0NmFiYjAxNTYzMTc1CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIEZyaSBKdW4gMjYgMTU6NTg6NDggMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9ibG9jay9mb3BzLmMgYi9ibG9jay9mb3BzLmMKaW5kZXggYmI2NjQyYjQ1OTM3Y2UuLjlmMTZiOTk1YzYwYzZlIDEwMDY0NAotLS0gYS9ibG9jay9mb3BzLmMKJiM0MzsmIzQzOyYjNDM7IGIvYmxvY2svZm9wcy5jCkBAIC0yMzksOCAmIzQzOzIzOSwxMSBAQCBzdGF0aWMgc3NpemVfdCBfX2Jsa2Rldl9kaXJlY3RfSU8oc3RydWN0IGtpb2NiICppb2NiLCBzdHJ1Y3QgaW92X2l0ZXIgKml0ZXIsCiAJCX0KIAkJaWYgKGlvY2ItJmd0O2tpX2ZsYWdzICZhbXA7IElPQ0JfSEFTX01FVEFEQVRBKSB7CiAJCQlyZXQgPSBiaW9faW50ZWdyaXR5X21hcF9pdGVyKGJpbywgaW9jYi0mZ3Q7cHJpdmF0ZSk7Ci0JCQlpZiAodW5saWtlbHkocmV0KSkKLQkJCQlnb3RvIGZhaWw7CiYjNDM7CQkJaWYgKHVubGlrZWx5KHJldCkpIHsKJiM0MzsJCQkJYmlvLSZndDtiaV9zdGF0dXMgPSBlcnJub190b19ibGtfc3RhdHVzKHJldCk7CiYjNDM7CQkJCWJpb19lbmRpbyhiaW8pOwomIzQzOwkJCQlicmVhazsKJiM0MzsJCQl9CiAJCX0KIAogCQlpZiAoaXNfcmVhZCkgewo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAxNTo1ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODcwCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIEJsb2NrIERldmljZSBEaXJlY3QgSS9PIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoLiBJdCBzZWVtcyB3ZSYjMzk7cmUgbW9kaWZ5aW5nIGBibG9jay9mb3BzLmNgLCBzcGVjaWZpY2FsbHkgdGhlIGBfX2Jsa2Rldl9kaXJlY3RfSU9gIGZ1bmN0aW9uLiBUaGUga2V5IGNoYW5nZSBoZXJlIGlzIGhvdyB3ZSBoYW5kbGUgZmFpbHVyZXMgaW4gYGJpb19pbnRlZ3JpdHlfbWFwX2l0ZXJgLiAgSW5zdGVhZCBvZiB0aGUgdXN1YWwgYGdvdG8gZmFpbDtgLCB0aGUgcGF0Y2ggbm93IGluY2x1ZGVzIGEgbW9yZSBjb250cm9sbGVkIGFwcHJvYWNoOgoKYGBgYwoJCQlpZiAodW5saWtlbHkocmV0KSkgewoJCQkJYmlvLSZndDtiaV9zdGF0dXMgPSBlcnJub190b19ibGtfc3RhdHVzKHJldCk7CgkJCQliaW9fZW5kaW8oYmlvKTsKCQkJCWJyZWFrOwoJCQl9CmBgYAoKTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgdGhpcyBpcyBsaWtlbHkgYW4gYXR0ZW1wdCB0byByZWZpbmUgZXJyb3IgaGFuZGxpbmcgaW4gdGhlIGRpcmVjdCBJL08gcGF0aCwgcG9zc2libHkgdG8gbWFrZSBpdCBtb3JlIHJvYnVzdCBvciBwcmV2ZW50IGNhc2NhZGluZyBmYWlsdXJlcy4gVGhlIG9sZCBgZ290byBmYWlsO2AgYXBwcm9hY2ggbWlnaHQgaGF2ZSBiZWVuIHRvbyBhYnJ1cHQuICBJIG5lZWQgdG8gZGl2ZSBpbnRvIHRoaXMgYSBiaXQgZGVlcGVyIHRvIGZ1bGx5IHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucy4gSSYjMzk7bSBnb2luZyB0byBsb2NhdGUgbGluZSAyMzkgaW4gYGJsb2NrL2ZvcHMuY2AgYW5kIHNlZSB0aGUgc3Vycm91bmRpbmcgY29udGV4dC4gVW5kZXJzdGFuZGluZyB0aGUgYWRqYWNlbnQgY29kZSBpcyBrZXkgdG8gZ3Jhc3AgdGhlIHJhdGlvbmFsZSBiZWhpbmQgdGhpcyBuZXcgYXBwcm9hY2guCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMTU6NTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtibG9jay9mb3BzLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyMjAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDIyMDpcdFx0XHRpZiAodW5saWtlbHkocmV0KSkge1xuIDIyMTpcdFx0XHRcdGJpby1cdTAwM2ViaV9zdGF0dXMgPSBCTEtfU1RTX0lPRVJSO1xuIDIyMjpcdFx0XHRcdGJpb19lbmRpbyhiaW8pO1xuIDIyMzpcdFx0XHRcdGJyZWFrO1xuIDIyNDpcdFx0XHR9XG4gMjI1Olx0XHRcdGlmIChpb2NiLVx1MDAzZWtpX2ZsYWdzIFx1MDAyNiBJT0NCX05PV0FJVCkge1xuIDIyNjpcdFx0XHRcdC8qXG4gMjI3Olx0XHRcdFx0ICogVGhpcyBpcyBub25ibG9ja2luZyBJTywgYW5kIHdlIG5lZWQgdG8gYWxsb2NhdGVcbiAyMjg6XHRcdFx0XHQgKiBhbm90aGVyIGJpbyBpZiB3ZSBoYXZlIGRhdGEgbGVmdCB0byBtYXAuIEFzIHdlXG4gMjI5Olx0XHRcdFx0ICogY2Fubm90IGd1YXJhbnRlZSB0aGF0IG9uZSBvZiB0aGUgc3ViIGJpb3Mgd2lsbCBub3RcbiAyMzA6XHRcdFx0XHQgKiBmYWlsIGdldHRpbmcgaXNzdWVkIEZPUiBOT1dBSVQgYW5kIGFzIGVycm9yIHJlc3VsdHNcbiAyMzE6XHRcdFx0XHQgKiBhcmUgY29hbGVzY2VkIGFjcm9zcyBhbGwgb2YgdGhlbSwgYmUgc2FmZSBhbmQgYXNrIGZvclxuIDIzMjpcdFx0XHRcdCAqIGEgcmV0cnkgb2YgdGhpcyBmcm9tIGJsb2NraW5nIGNvbnRleHQuXG4gMjMzOlx0XHRcdFx0ICovXG4gMjM0Olx0XHRcdFx0aWYgKHVubGlrZWx5KGlvdl9pdGVyX2NvdW50KGl0ZXIpKSkge1xuIDIzNTpcdFx0XHRcdFx0cmV0ID0gLUVBR0FJTjtcbiAyMzY6XHRcdFx0XHRcdGdvdG8gZmFpbDtcbiAyMzc6XHRcdFx0XHR9XG4gMjM4Olx0XHRcdFx0YmlvLVx1MDAzZWJpX29wZiB8PSBSRVFfTk9XQUlUO1xuIDIzOTpcdFx0XHR9XG4gMjQwOlx0XHRcdGlmIChpb2NiLVx1MDAzZWtpX2ZsYWdzIFx1MDAyNiBJT0NCX0hBU19NRVRBREFUQSkge1xuIDI0MTpcdFx0XHRcdHJldCA9IGJpb19pbnRlZ3JpdHlfbWFwX2l0ZXIoYmlvLCBpb2NiLVx1MDAzZXByaXZhdGUpO1xuIDI0MjpcdFx0XHRcdGlmICh1bmxpa2VseShyZXQpKSB7XG4gMjQzOlx0XHRcdFx0XHRiaW8tXHUwMDNlYmlfc3RhdHVzID0gZXJybm9fdG9fYmxrX3N0YXR1cyhyZXQpO1xuIDI0NDpcdFx0XHRcdFx0YmlvX2VuZGlvKGJpbyk7XG4gMjQ1Olx0XHRcdFx0XHRicmVhaztcbiAyNDY6XHRcdFx0XHR9XG4gMjQ3Olx0XHRcdH1cbiAyNDg6XHRcbiAyNDk6XHRcdFx0aWYgKGlzX3JlYWQpIHtcbiAyNTA6XHRcdFx0XHRpZiAoZGlvLVx1MDAzZWZsYWdzIFx1MDAyNiBESU9fU0hPVUxEX0RJUlRZKVxuIDI1MTpcdFx0XHRcdFx0YmlvX3NldF9wYWdlc19kaXJ0eShiaW8pO1xuIDI1MjpcdFx0XHR9IGVsc2Uge1xuIDI1MzpcdFx0XHRcdHRhc2tfaW9fYWNjb3VudF93cml0ZShiaW8tXHUwMDNlYmlfaXRlci5iaV9zaXplKTtcbiAyNTQ6XHRcdFx0fVxuIDI1NTpcdFx0XHRkaW8tXHUwMDNlc2l6ZSAmIzQzOz0gYmlvLVx1MDAzZWJpX2l0ZXIuYmlfc2l6ZTtcbiAyNTY6XHRcdFx0cG9zICYjNDM7PSBiaW8tXHUwMDNlYmlfaXRlci5iaV9zaXplO1xuIDI1NzpcdFxuIDI1ODpcdFx0XHRucl9wYWdlcyA9IGJpb19pb3ZfdmVjc190b19hbGxvYyhpdGVyLCBCSU9fTUFYX1ZFQ1MpO1xuIDI1OTpcdFx0XHRpZiAoIW5yX3BhZ2VzKSB7XG4gMjYwOlx0XHRcdFx0c3VibWl0X2JpbyhiaW8pO1xuIDI2MTpcdFx0XHRcdGJyZWFrO1xuIDI2MjpcdFx0XHR9XG4gMjYzOlx0XHRcdGF0b21pY19pbmMoXHUwMDI2ZGlvLVx1MDAzZXJlZik7XG4gMjY0Olx0XHRcdHN1Ym1pdF9iaW8oYmlvKTtcbiAyNjU6XHRcdFx0YmlvID0gYmlvX2FsbG9jKGJkZXYsIG5yX3BhZ2VzLCBvcGYsIEdGUF9LRVJORUwpO1xuIDI2NjpcdFx0fVxuIDI2NzpcdFxuIDI2ODpcdFx0YmxrX2ZpbmlzaF9wbHVnKFx1MDAyNnBsdWcpO1xuIDI2OTpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDE1OjU4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwMjIKCQkJCQkJCW91dHB1dDogMjIKCQkJCQkJCXRob3VnaHRzOiA4NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIGBfX2Jsa2Rldl9kaXJlY3RfSU9gKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdHdlYWtpbmcgYF9fYmxrZGV2X2RpcmVjdF9JT2AsIHdoaWNoIG1lYW5zIHdlJiMzOTtyZSBsb29raW5nIGF0IGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gaG93IGRpcmVjdCBJL08gd29ya3Mgd2l0aCBibG9jayBkZXZpY2VzLiBUaGF0IHNjcmVhbXMgJiMzNDtmdXp6aW5nIHRhcmdldCYjMzQ7IHRvIG1lLiBUaGlzIGhhcyB0aGUgcG90ZW50aWFsIHRvIGV4cG9zZSBzb21lIG5hc3R5IGVkZ2UgY2FzZXMsIGVzcGVjaWFsbHkgZ2l2ZW4gdGhlIGNvbXBsZXhpdHkgb2YgYmxvY2sgZGV2aWNlIGludGVyYWN0aW9ucy4gTXkgbWFpbiBmb2N1cyBoZXJlIHdpbGwgYmUgb24gdGhlIGBfX2Jsa2Rldl9kaXJlY3RfSU9gIHN5bWJvbCBpdHNlbGYuIEkgZG9uJiMzOTt0IHNlZSBhbnkgb2J2aW91cyBjb25maWcgZGVwZW5kZW5jaWVzIGp1bXBpbmcgb3V0IGF0IG1lIHJpZ2h0IGF3YXksIGJ1dCBpdCYjMzk7cyBhbHdheXMgZ29vZCB0byBiZSB0aG9yb3VnaC4gSSYjMzk7bGwgbmVlZCB0byBkb3VibGUtY2hlY2sgaWYgc29tZXRoaW5nIGxpa2UgYElPQ0JfSEFTX01FVEFEQVRBYCBoYXMgYW55IGluZmx1ZW5jZSBvciBzcGVjaWZpYyBjb25maWd1cmF0aW9uIHJlcXVpcmVtZW50cy4gV2UgZG9uJiMzOTt0IHdhbnQgdG8gbWlzcyBhbnl0aGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAxNTo1ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtJT0NCX0hBU19NRVRBREFUQSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtibG9jay9mb3BzLmM9MTc1PXN0YXRpYyBzc2l6ZV90IF9fYmxrZGV2X2RpcmVjdF9JTyhzdHJ1Y3Qga2lvY2IgKmlvY2IsIHN0cnVjdCBpb3ZfaXRlciAqaXRlcixcbi0tXG5ibG9jay9mb3BzLmMtMjM5LVx0XHR9XG5ibG9jay9mb3BzLmM6MjQwOlx0XHRpZiAoaW9jYi1cdTAwM2VraV9mbGFncyBcdTAwMjYgSU9DQl9IQVNfTUVUQURBVEEpIHtcbmJsb2NrL2ZvcHMuYy0yNDEtXHRcdFx0cmV0ID0gYmlvX2ludGVncml0eV9tYXBfaXRlcihiaW8sIGlvY2ItXHUwMDNlcHJpdmF0ZSk7XG4tLVxuYmxvY2svZm9wcy5jPTMyND1zdGF0aWMgc3NpemVfdCBfX2Jsa2Rldl9kaXJlY3RfSU9fYXN5bmMoc3RydWN0IGtpb2NiICppb2NiLFxuLS1cbmJsb2NrL2ZvcHMuYy0zNzAtXG5ibG9jay9mb3BzLmM6MzcxOlx0aWYgKGlvY2ItXHUwMDNla2lfZmxhZ3MgXHUwMDI2IElPQ0JfSEFTX01FVEFEQVRBKSB7XG5ibG9jay9mb3BzLmMtMzcyLVx0XHRyZXQgPSBiaW9faW50ZWdyaXR5X21hcF9pdGVyKGJpbywgaW9jYi1cdTAwM2Vwcml2YXRlKTtcbi0tXG5ibG9jay9mb3BzLmM9Mzk4PXN0YXRpYyBzc2l6ZV90IGJsa2Rldl9kaXJlY3RfSU8oc3RydWN0IGtpb2NiICppb2NiLCBzdHJ1Y3QgaW92X2l0ZXIgKml0ZXIpXG4tLVxuYmxvY2svZm9wcy5jLTQzMC1cdGlmIChsaWtlbHkobnJfcGFnZXMgXHUwMDNjPSBCSU9fTUFYX1ZFQ1MgXHUwMDI2XHUwMDI2XG5ibG9jay9mb3BzLmM6NDMxOlx0XHQgICAhKGlvY2ItXHUwMDNla2lfZmxhZ3MgXHUwMDI2IElPQ0JfSEFTX01FVEFEQVRBKSkpIHtcbmJsb2NrL2ZvcHMuYy00MzItXHRcdGlmIChpc19zeW5jX2tpb2NiKGlvY2IpKVxuLS1cbmluY2x1ZGUvbGludXgvZnMuaD04OT10eXBlZGVmIGludCAoZGlvX2lvZG9uZV90KShzdHJ1Y3Qga2lvY2IgKmlvY2IsIGxvZmZfdCBvZmZzZXQsXG4tLVxuaW5jbHVkZS9saW51eC9mcy5oLTE0MS1cbmluY2x1ZGUvbGludXgvZnMuaDoxNDI6LyogU3VwcG9ydHMgSU9DQl9IQVNfTUVUQURBVEEgKi9cbmluY2x1ZGUvbGludXgvZnMuaC0xNDMtI2RlZmluZSBGTU9ERV9IQVNfTUVUQURBVEFcdCgoX19mb3JjZSBmbW9kZV90KSgxIFx1MDAzY1x1MDAzYyAxMykpXG4tLVxuaW5jbHVkZS9saW51eC9mcy5oPTMzNj1zdHJ1Y3QgcmVhZGFoZWFkX2NvbnRyb2w7XG4tLVxuaW5jbHVkZS9saW51eC9mcy5oLTM1OC0jZGVmaW5lIElPQ0JfQUlPX1JXXHRcdCgxIFx1MDAzY1x1MDAzYyAyMilcbmluY2x1ZGUvbGludXgvZnMuaDozNTk6I2RlZmluZSBJT0NCX0hBU19NRVRBREFUQVx0KDEgXHUwMDNjXHUwMDNjIDIzKVxuaW5jbHVkZS9saW51eC9mcy5oLTM2MC1cbi0tXG5pbmNsdWRlL2xpbnV4L2ZzLmgtMzc2LVx0eyBJT0NCX0FJT19SVyxcdFx0XCYjMzQ7QUlPX1JXXCYjMzQ7IH0sIFxcXG5pbmNsdWRlL2xpbnV4L2ZzLmg6Mzc3Olx0eyBJT0NCX0hBU19NRVRBREFUQSxcdFwmIzM0O0FJT19IQVNfTUVUQURBVEFcJiMzNDsgfVxuaW5jbHVkZS9saW51eC9mcy5oLTM3OC1cbi0tXG5pb191cmluZy9ydy5jPTIyND1zdGF0aWMgaW5saW5lIHZvaWQgaW9fbWV0YV9yZXN0b3JlKHN0cnVjdCBpb19hc3luY19ydyAqaW8sIHN0cnVjdCBraW9jYiAqa2lvY2IpXG5pb191cmluZy9ydy5jLTIyNS17XG5pb191cmluZy9ydy5jOjIyNjpcdGlmIChraW9jYi1cdTAwM2VraV9mbGFncyBcdTAwMjYgSU9DQl9IQVNfTUVUQURBVEEpIHtcbmlvX3VyaW5nL3J3LmMtMjI3LVx0XHRpby1cdTAwM2VtZXRhLnNlZWQgPSBpby1cdTAwM2VtZXRhX3N0YXRlLnNlZWQ7XG4tLVxuaW9fdXJpbmcvcncuYz04NDg9c3RhdGljIGludCBpb19yd19pbml0X2ZpbGUoc3RydWN0IGlvX2tpb2NiICpyZXEsIGZtb2RlX3QgbW9kZSwgaW50IHJ3X3R5cGUpXG4tLVxuaW9fdXJpbmcvcncuYy05MDQtXHRcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuaW9fdXJpbmcvcncuYzo5MDU6XHRcdGtpb2NiLVx1MDAzZWtpX2ZsYWdzIHw9IElPQ0JfSEFTX01FVEFEQVRBO1xuaW9fdXJpbmcvcncuYy05MDYtXHRcdGtpb2NiLVx1MDAzZXByaXZhdGUgPSBcdTAwMjZpby1cdTAwM2VtZXRhO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDE1OjU5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQyMDcKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiA1NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBDdXJyZW50IENvbnNpZGVyYXRpb25zIFJlZ2FyZGluZyBNZXRhZGF0YSBJL08gYW5kIGlvX3VyaW5nKioKCkFscmlnaHQsIGxldCYjMzk7cyBzZWUuIEkmIzM5O20gZm9jdXNpbmcgb24gbWV0YWRhdGEgSS9PLCBzcGVjaWZpY2FsbHkgaG93IGl0JiMzOTtzIGhhbmRsZWQsIHdoaWNoIG9mIGNvdXJzZSBicmluZ3MgYElPQ0JfSEFTX01FVEFEQVRBYCB0byBtaW5kLiAgVGhpcyBpcyBhIGZsYWcgdGhhdCwgYXMgSSB1bmRlcnN0YW5kIGl0LCBzaWduYWxzIHRoYXQgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBtZXRhZGF0YSBvcGVyYXRpb25zLCBhbmQgbmF0dXJhbGx5LCBpdCYjMzk7cyBzdXBwb3J0ZWQgd2l0aGluIHRoZSBpb191cmluZyBmcmFtZXdvcmsuICBUaGUgaW1tZWRpYXRlIGxvY2F0aW9uIEkgbmVlZCB0byBjaGVjayBpcyB3aXRoaW4gYF9fYmxrZGV2X2RpcmVjdF9JT2Ag4oCTIHRoYXQgc2VlbXMgdG8gYmUgd2hlcmUgdGhlIGNoYW5nZXMgcmVsYXRlZCB0byB0aGlzIGFyZSBjb25jZW50cmF0ZWQuICBJIHNob3VsZCBiZSBhYmxlIHRvIHRyYWNrIGRvd24gdGhlIGltcGxlbWVudGF0aW9uIGZyb20gdGhlcmUuIE5vdywgdGhlIG5leHQgcXVlc3Rpb24gcG9wcGluZyBpbnRvIG15IGhlYWQgaXMsIGFyZSB0aGVyZSBhbnkgc3BlY2lmaWMgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzIHRoYXQgY29tZSBpbnRvIHBsYXkgd2hlbiB1c2luZyB0aGUgYGJpb19pbnRlZ3JpdHlfbWFwX2l0ZXJgIHN0cnVjdHVyZSB3aXRoaW4gdGhpcyBjb250ZXh0PyBUaGF0JiMzOTtzIHRoZSBuZXh0IGFyZWEgSSB3YW50IHRvIGludmVzdGlnYXRlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDE1OjU5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2Jpb19pbnRlZ3JpdHlfbWFwX2l0ZXImIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YmxvY2svYmlvLWludGVncml0eS5jPTQzND1zdGF0aWMgdm9pZCBiaW9fdWlvX21ldGFfdG9fYmlwKHN0cnVjdCBiaW8gKmJpbywgc3RydWN0IHVpb19tZXRhICptZXRhKVxuLS1cbmJsb2NrL2Jpby1pbnRlZ3JpdHkuYy00NDctXG5ibG9jay9iaW8taW50ZWdyaXR5LmM6NDQ4OmludCBiaW9faW50ZWdyaXR5X21hcF9pdGVyKHN0cnVjdCBiaW8gKmJpbywgc3RydWN0IHVpb19tZXRhICptZXRhKVxuYmxvY2svYmlvLWludGVncml0eS5jLTQ0OS17XG4tLVxuYmxvY2svZm9wcy5jPTE3NT1zdGF0aWMgc3NpemVfdCBfX2Jsa2Rldl9kaXJlY3RfSU8oc3RydWN0IGtpb2NiICppb2NiLCBzdHJ1Y3QgaW92X2l0ZXIgKml0ZXIsXG4tLVxuYmxvY2svZm9wcy5jLTI0MC1cdFx0aWYgKGlvY2ItXHUwMDNla2lfZmxhZ3MgXHUwMDI2IElPQ0JfSEFTX01FVEFEQVRBKSB7XG5ibG9jay9mb3BzLmM6MjQxOlx0XHRcdHJldCA9IGJpb19pbnRlZ3JpdHlfbWFwX2l0ZXIoYmlvLCBpb2NiLVx1MDAzZXByaXZhdGUpO1xuYmxvY2svZm9wcy5jLTI0Mi1cdFx0XHRpZiAodW5saWtlbHkocmV0KSkge1xuLS1cbmJsb2NrL2ZvcHMuYz0zMjQ9c3RhdGljIHNzaXplX3QgX19ibGtkZXZfZGlyZWN0X0lPX2FzeW5jKHN0cnVjdCBraW9jYiAqaW9jYixcbi0tXG5ibG9jay9mb3BzLmMtMzcxLVx0aWYgKGlvY2ItXHUwMDNla2lfZmxhZ3MgXHUwMDI2IElPQ0JfSEFTX01FVEFEQVRBKSB7XG5ibG9jay9mb3BzLmM6MzcyOlx0XHRyZXQgPSBiaW9faW50ZWdyaXR5X21hcF9pdGVyKGJpbywgaW9jYi1cdTAwM2Vwcml2YXRlKTtcbmJsb2NrL2ZvcHMuYy0zNzMtXHRcdFdSSVRFX09OQ0UoaW9jYi1cdTAwM2Vwcml2YXRlLCBOVUxMKTtcbi0tXG5pbmNsdWRlL2xpbnV4L2Jpby1pbnRlZ3JpdHkuaD03OD1pbnQgYmlvX2ludGVncml0eV9tYXBfdXNlcihzdHJ1Y3QgYmlvICpiaW8sIHN0cnVjdCBpb3ZfaXRlciAqaXRlcik7XG5pbmNsdWRlL2xpbnV4L2Jpby1pbnRlZ3JpdHkuaDo3OTppbnQgYmlvX2ludGVncml0eV9tYXBfaXRlcihzdHJ1Y3QgYmlvICpiaW8sIHN0cnVjdCB1aW9fbWV0YSAqbWV0YSk7XG5pbmNsdWRlL2xpbnV4L2Jpby1pbnRlZ3JpdHkuaC04MC12b2lkIGJpb19pbnRlZ3JpdHlfdW5tYXBfdXNlcihzdHJ1Y3QgYmlvICpiaW8pO1xuLS1cbmluY2x1ZGUvbGludXgvYmlvLWludGVncml0eS5oPTkzPXN0YXRpYyBpbmxpbmUgaW50IGJpb19pbnRlZ3JpdHlfbWFwX3VzZXIoc3RydWN0IGJpbyAqYmlvLCBzdHJ1Y3QgaW92X2l0ZXIgKml0ZXIpXG4tLVxuaW5jbHVkZS9saW51eC9iaW8taW50ZWdyaXR5LmgtOTctXG5pbmNsdWRlL2xpbnV4L2Jpby1pbnRlZ3JpdHkuaDo5ODpzdGF0aWMgaW5saW5lIGludCBiaW9faW50ZWdyaXR5X21hcF9pdGVyKHN0cnVjdCBiaW8gKmJpbywgc3RydWN0IHVpb19tZXRhICptZXRhKVxuaW5jbHVkZS9saW51eC9iaW8taW50ZWdyaXR5LmgtOTkte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDE1OjU5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUwNTMKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiA0MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIGJpb19pbnRlZ3JpdHlfbWFwX2l0ZXIgRnVuY3Rpb24qKgoKT2theSwgc28gYGJpb19pbnRlZ3JpdHlfbWFwX2l0ZXJgIGlzIGRlZmluZWQgd2l0aGluIGBibG9jay9iaW8taW50ZWdyaXR5LmNgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgJiMzNDtSaWdodCwgZ29vZCB0byBrbm93IHdoZXJlIHRoZSBjb2RlIGxpdmVzLiYjMzQ7IE5vdywgdGhlIG5hdHVyYWwgbmV4dCBzdGVwIGlzIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIGlmIHRoaXMgcGFydGljdWxhciBtb2R1bGUgb3IgZnVuY3Rpb24gaGFzIGFueSBkZXBlbmRlbmNpZXMgb24gY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiBpdHMgYmVoYXZpb3IgaXMgaW5mbHVlbmNlZCBieSBhbnkgc2V0dGluZ3MsIGNvbXBpbGUtdGltZSBmbGFncywgb3IgcnVudGltZSBjb25maWd1cmF0aW9uIG9wdGlvbnMuIFRoaXMgaXMgY3J1Y2lhbCBmb3IgdW5kZXJzdGFuZGluZyBpdHMgZmxleGliaWxpdHkgYW5kIGhvdyBpdCBtaWdodCBpbnRlcmFjdCB3aXRoIHRoZSBicm9hZGVyIHN5c3RlbSYjMzk7cyBvdmVyYWxsIGludGVncml0eS4gTGV0JiMzOTtzIHNlZSBpZiB0aGF0IGZpbGUgaW1wb3J0cyBhbnkgY29uZmlncy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMTU6NTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YmlvLWludGVncml0eS5vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2Jsb2NrL01ha2VmaWxlPTI2PW9iai0kKENPTkZJR19JT1NDSEVEX0JGUSlcdCYjNDM7PSBiZnEub1xuYmxvY2svTWFrZWZpbGUtMjctXG5ibG9jay9NYWtlZmlsZToyODpvYmotJChDT05GSUdfQkxLX0RFVl9JTlRFR1JJVFkpICYjNDM7PSBiaW8taW50ZWdyaXR5Lm8gYmxrLWludGVncml0eS5vIHQxMC1waS5vIFxcXG5ibG9jay9NYWtlZmlsZS0yOS1cdFx0XHRcdCAgIGJpby1pbnRlZ3JpdHktYXV0by5vIGJpby1pbnRlZ3JpdHktZnMub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAxNTo1OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MzU1CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogNzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyB0aGUgQklPIEludGVncml0eSBEZXBlbmRlbmN5KioKCk9rYXksIHNvIGl0IGxvb2tzIGxpa2UgYGJpby1pbnRlZ3JpdHkub2AgKmFic29sdXRlbHkqIGRlcGVuZHMgb24gYENPTkZJR19CTEtfREVWX0lOVEVHUklUWWAuIFRoYXQmIzM5O3MgdGhlIG9idmlvdXMgc3RhcnRpbmcgcG9pbnQuIEkgc3VzcGVjdCB0aGF0IGlmIHRoYXQgY29uZmlnIG9wdGlvbiBpc24mIzM5O3Qgc2V0LCB0aGVuIHRoZSBgYmlvX2ludGVncml0eV9tYXBfaXRlcmAgZnVuY3Rpb24gaXMgcHJvYmFibHkganVzdCBhIHF1aWNrIGlubGluZSBzdHViIHRoYXQgcmV0dXJucyBlaXRoZXIgemVybyBvciBhbiBlcnJvci4gQSBxdWljayBjaGVjayBvZiBgaW5jbHVkZS9saW51eC9iaW8taW50ZWdyaXR5LmhgIHNob3VsZCBjb25maXJtIHRoYXQuIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhpcyBkZXBlbmRlbmN5IGlzIGhhbmRsZWQgY29ycmVjdGx5IGluIHRoZSBidWlsZCBzeXN0ZW0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDE1OjU5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC9iaW8taW50ZWdyaXR5LmgmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA4NSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDg1Olx0XG4gIDg2Olx0I2Vsc2UgLyogQ09ORklHX0JMS19ERVZfSU5URUdSSVRZICovXG4gIDg3Olx0XG4gIDg4Olx0c3RhdGljIGlubGluZSBzdHJ1Y3QgYmlvX2ludGVncml0eV9wYXlsb2FkICpiaW9faW50ZWdyaXR5KHN0cnVjdCBiaW8gKmJpbylcbiAgODk6XHR7XG4gIDkwOlx0XHRyZXR1cm4gTlVMTDtcbiAgOTE6XHR9XG4gIDkyOlx0XG4gIDkzOlx0c3RhdGljIGlubGluZSBpbnQgYmlvX2ludGVncml0eV9tYXBfdXNlcihzdHJ1Y3QgYmlvICpiaW8sIHN0cnVjdCBpb3ZfaXRlciAqaXRlcilcbiAgOTQ6XHR7XG4gIDk1Olx0XHRyZXR1cm4gLUVJTlZBTDtcbiAgOTY6XHR9XG4gIDk3Olx0XG4gIDk4Olx0c3RhdGljIGlubGluZSBpbnQgYmlvX2ludGVncml0eV9tYXBfaXRlcihzdHJ1Y3QgYmlvICpiaW8sIHN0cnVjdCB1aW9fbWV0YSAqbWV0YSlcbiAgOTk6XHR7XG4gMTAwOlx0XHRyZXR1cm4gLUVJTlZBTDtcbiAxMDE6XHR9XG4gMTAyOlx0XG4gMTAzOlx0c3RhdGljIGlubGluZSB2b2lkIGJpb19pbnRlZ3JpdHlfdW5tYXBfdXNlcihzdHJ1Y3QgYmlvICpiaW8pXG4gMTA0Olx0e1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAxNTo1OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1ODQyCgkJCQkJCQlvdXRwdXQ6IDIyCgkJCQkJCQl0aG91Z2h0czogNjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyB0aGUgQ29uZmlndXJhdGlvbiBmb3IgSW50ZWdyaXR5IGFuZCBJT19VUklORyoqCgpPa2F5LCBzbyBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiBoZXJlLiBXZSBkZWZpbml0ZWx5IG5lZWQgYENPTkZJR19CTEtfREVWX0lOVEVHUklUWWAg4oCTIHRoYXQmIzM5O3MgYSBnaXZlbi4gQnV0LCBJJiMzOTttIGFsc28gd29uZGVyaW5nIGlmIGBDT05GSUdfSU9fVVJJTkdgIGlzICpyZXF1aXJlZCogdG8gdHJpZ2dlciBgSU9DQl9IQVNfTUVUQURBVEFgLiBJdCBzZWVtcyBsaWtlIGEgcG90ZW50aWFsIGRlcGVuZGVuY3ksIGFuZCBJIG5lZWQgdG8gYmUgY2VydGFpbi4gSSYjMzk7dmUgZ290IHRvIGVuc3VyZSBJIGhhdmVuJiMzOTt0IG1pc3NlZCBhbnkgb3RoZXIgdXNlcyBvZiBgSU9DQl9IQVNfTUVUQURBVEFgLiBUaW1lIHRvIGNoZWNrIHRoZSBjb2RlYmFzZSBtb3JlIGdlbmVyYWxseSBmb3Igb3RoZXIgcGxhY2VzIHdoZXJlIGBJT0NCX0hBU19NRVRBREFUQWAgbWlnaHQgYmUgZGVmaW5lZCBvciB1c2VkLiBHb3R0YSBjb3ZlciBhbGwgdGhlIGJhc2VzIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAxNTo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtJT0NCX0hBU19NRVRBREFUQSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtibG9jay9mb3BzLmM9MTc1PXN0YXRpYyBzc2l6ZV90IF9fYmxrZGV2X2RpcmVjdF9JTyhzdHJ1Y3Qga2lvY2IgKmlvY2IsIHN0cnVjdCBpb3ZfaXRlciAqaXRlcixcbi0tXG5ibG9jay9mb3BzLmMtMjM5LVx0XHR9XG5ibG9jay9mb3BzLmM6MjQwOlx0XHRpZiAoaW9jYi1cdTAwM2VraV9mbGFncyBcdTAwMjYgSU9DQl9IQVNfTUVUQURBVEEpIHtcbmJsb2NrL2ZvcHMuYy0yNDEtXHRcdFx0cmV0ID0gYmlvX2ludGVncml0eV9tYXBfaXRlcihiaW8sIGlvY2ItXHUwMDNlcHJpdmF0ZSk7XG4tLVxuYmxvY2svZm9wcy5jPTMyND1zdGF0aWMgc3NpemVfdCBfX2Jsa2Rldl9kaXJlY3RfSU9fYXN5bmMoc3RydWN0IGtpb2NiICppb2NiLFxuLS1cbmJsb2NrL2ZvcHMuYy0zNzAtXG5ibG9jay9mb3BzLmM6MzcxOlx0aWYgKGlvY2ItXHUwMDNla2lfZmxhZ3MgXHUwMDI2IElPQ0JfSEFTX01FVEFEQVRBKSB7XG5ibG9jay9mb3BzLmMtMzcyLVx0XHRyZXQgPSBiaW9faW50ZWdyaXR5X21hcF9pdGVyKGJpbywgaW9jYi1cdTAwM2Vwcml2YXRlKTtcbi0tXG5ibG9jay9mb3BzLmM9Mzk4PXN0YXRpYyBzc2l6ZV90IGJsa2Rldl9kaXJlY3RfSU8oc3RydWN0IGtpb2NiICppb2NiLCBzdHJ1Y3QgaW92X2l0ZXIgKml0ZXIpXG4tLVxuYmxvY2svZm9wcy5jLTQzMC1cdGlmIChsaWtlbHkobnJfcGFnZXMgXHUwMDNjPSBCSU9fTUFYX1ZFQ1MgXHUwMDI2XHUwMDI2XG5ibG9jay9mb3BzLmM6NDMxOlx0XHQgICAhKGlvY2ItXHUwMDNla2lfZmxhZ3MgXHUwMDI2IElPQ0JfSEFTX01FVEFEQVRBKSkpIHtcbmJsb2NrL2ZvcHMuYy00MzItXHRcdGlmIChpc19zeW5jX2tpb2NiKGlvY2IpKVxuLS1cbmluY2x1ZGUvbGludXgvZnMuaD04OT10eXBlZGVmIGludCAoZGlvX2lvZG9uZV90KShzdHJ1Y3Qga2lvY2IgKmlvY2IsIGxvZmZfdCBvZmZzZXQsXG4tLVxuaW5jbHVkZS9saW51eC9mcy5oLTE0MS1cbmluY2x1ZGUvbGludXgvZnMuaDoxNDI6LyogU3VwcG9ydHMgSU9DQl9IQVNfTUVUQURBVEEgKi9cbmluY2x1ZGUvbGludXgvZnMuaC0xNDMtI2RlZmluZSBGTU9ERV9IQVNfTUVUQURBVEFcdCgoX19mb3JjZSBmbW9kZV90KSgxIFx1MDAzY1x1MDAzYyAxMykpXG4tLVxuaW5jbHVkZS9saW51eC9mcy5oPTMzNj1zdHJ1Y3QgcmVhZGFoZWFkX2NvbnRyb2w7XG4tLVxuaW5jbHVkZS9saW51eC9mcy5oLTM1OC0jZGVmaW5lIElPQ0JfQUlPX1JXXHRcdCgxIFx1MDAzY1x1MDAzYyAyMilcbmluY2x1ZGUvbGludXgvZnMuaDozNTk6I2RlZmluZSBJT0NCX0hBU19NRVRBREFUQVx0KDEgXHUwMDNjXHUwMDNjIDIzKVxuaW5jbHVkZS9saW51eC9mcy5oLTM2MC1cbi0tXG5pbmNsdWRlL2xpbnV4L2ZzLmgtMzc2LVx0eyBJT0NCX0FJT19SVyxcdFx0XCYjMzQ7QUlPX1JXXCYjMzQ7IH0sIFxcXG5pbmNsdWRlL2xpbnV4L2ZzLmg6Mzc3Olx0eyBJT0NCX0hBU19NRVRBREFUQSxcdFwmIzM0O0FJT19IQVNfTUVUQURBVEFcJiMzNDsgfVxuaW5jbHVkZS9saW51eC9mcy5oLTM3OC1cbi0tXG5pb191cmluZy9ydy5jPTIyND1zdGF0aWMgaW5saW5lIHZvaWQgaW9fbWV0YV9yZXN0b3JlKHN0cnVjdCBpb19hc3luY19ydyAqaW8sIHN0cnVjdCBraW9jYiAqa2lvY2IpXG5pb191cmluZy9ydy5jLTIyNS17XG5pb191cmluZy9ydy5jOjIyNjpcdGlmIChraW9jYi1cdTAwM2VraV9mbGFncyBcdTAwMjYgSU9DQl9IQVNfTUVUQURBVEEpIHtcbmlvX3VyaW5nL3J3LmMtMjI3LVx0XHRpby1cdTAwM2VtZXRhLnNlZWQgPSBpby1cdTAwM2VtZXRhX3N0YXRlLnNlZWQ7XG4tLVxuaW9fdXJpbmcvcncuYz04NDg9c3RhdGljIGludCBpb19yd19pbml0X2ZpbGUoc3RydWN0IGlvX2tpb2NiICpyZXEsIGZtb2RlX3QgbW9kZSwgaW50IHJ3X3R5cGUpXG4tLVxuaW9fdXJpbmcvcncuYy05MDQtXHRcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuaW9fdXJpbmcvcncuYzo5MDU6XHRcdGtpb2NiLVx1MDAzZWtpX2ZsYWdzIHw9IElPQ0JfSEFTX01FVEFEQVRBO1xuaW9fdXJpbmcvcncuYy05MDYtXHRcdGtpb2NiLVx1MDAzZXByaXZhdGUgPSBcdTAwMjZpby1cdTAwM2VtZXRhO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAxNTo1OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2OTg1CgkJCQkJCQlvdXRwdXQ6IDE4CgkJCQkJCQl0aG91Z2h0czogNTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyBJT19VUklORyBNZXRhZGF0YSBEZXBlbmRlbmN5KioKCk9rYXksIHNvIEkmIzM5O3ZlIHBpbnBvaW50ZWQgdGhhdCBgSU9DQl9IQVNfTUVUQURBVEFgIGlzIHNvbGVseSBkZWZpbmVkIGFuZCB1c2VkIHdpdGhpbiBgaW9fdXJpbmcvcncuY2AuIFRoYXQmIzM5O3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBUaGlzIHN0cm9uZ2x5IHN1Z2dlc3RzIGEgZGVwZW5kZW5jeSBvbiB0aGUgYGlvX3VyaW5nYCBpbmZyYXN0cnVjdHVyZSBpdHNlbGYuIE5vdywgSSBuZWVkIHRvIGNvbmZpcm0gdGhhdCBgQ09ORklHX0lPX1VSSU5HYCBpcyBpbmRlZWQgdGhlIGNvcnJlY3QgY29uZmlndXJhdGlvbiBzeW1ib2wgY29udHJvbGxpbmcgdGhpcyBmZWF0dXJlLiBJdCYjMzk7cyBhIGZhaXJseSBzYWZlIGFzc3VtcHRpb24gZ2l2ZW4gdGhlIG5hbWluZyBjb252ZW50aW9uLCBidXQgSSBhbHdheXMgcHJlZmVyIHRvIGRvdWJsZS1jaGVjayB0aGVzZSB0aGluZ3MgdG8gYXZvaWQgbWFraW5nIGluY29ycmVjdCBhc3NlcnRpb25zLiBUaW1lIHRvIGNvbmZpcm0gdGhhdCBjb25maWd1cmF0aW9uIG9wdGlvbiEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMTU6NTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIElPX1VSSU5HJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luaXQvS2NvbmZpZz0xODkwPWNvbmZpZyBBSU9cbi0tXG5pbml0L0tjb25maWctMTg5Ny1cbmluaXQvS2NvbmZpZzoxODk4OmNvbmZpZyBJT19VUklOR1xuaW5pdC9LY29uZmlnLTE4OTktXHRib29sIFwmIzM0O0VuYWJsZSBJTyB1cmluZyBzdXBwb3J0XCYjMzQ7IGlmIEVYUEVSVFxuLS1cbmluaXQvS2NvbmZpZz0xOTA3PWNvbmZpZyBHQ09WX1BST0ZJTEVfVVJJTkdcbi0tXG5pbml0L0tjb25maWctMTkxOS1cbmluaXQvS2NvbmZpZzoxOTIwOmNvbmZpZyBJT19VUklOR19NT0NLX0ZJTEVcbmluaXQvS2NvbmZpZy0xOTIxLVx0dHJpc3RhdGUgXCYjMzQ7RW5hYmxlIGlvX3VyaW5nIG1vY2sgZmlsZXMgKEV4cGVyaW1lbnRhbClcJiMzNDsgaWYgRVhQRVJUXG4tLVxuaW9fdXJpbmcvS2NvbmZpZy01LVxuaW9fdXJpbmcvS2NvbmZpZzo2OmNvbmZpZyBJT19VUklOR19aQ1JYXG5pb191cmluZy9LY29uZmlnLTctXHRkZWZfYm9vbCB5XG4tLVxuaW9fdXJpbmcvS2NvbmZpZy0xMi1cbmlvX3VyaW5nL0tjb25maWc6MTM6Y29uZmlnIElPX1VSSU5HX0JQRlxuaW9fdXJpbmcvS2NvbmZpZy0xNC1cdGRlZl9ib29sIHlcbi0tXG5pb191cmluZy9LY29uZmlnLTE3LVxuaW9fdXJpbmcvS2NvbmZpZzoxODpjb25maWcgSU9fVVJJTkdfQlBGX09QU1xuaW9fdXJpbmcvS2NvbmZpZy0xOS1cdGRlZl9ib29sIHlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMTU6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzQ4NgoJCQkJCQkJb3V0cHV0OiA4OAoJCQkJCQkJdGhvdWdodHM6IDQ2MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBCbG9jayBEZXZpY2UgRGlyZWN0IEkvTyBCdWcgRml4KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSwgYENPTkZJR19JT19VUklOR2AgYW5kIGBDT05GSUdfQkxLX0RFVl9JTlRFR1JJVFlgIGp1bXAgb3V0IGFzIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9ucy4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBpcyBpbiBgX19ibGtkZXZfZGlyZWN0X0lPYCB3aXRoaW4gYGJsb2NrL2ZvcHMuY2AuIFRoaXMgaXMgYSBjbGVhciBmdW5jdGlvbmFsIGNoYW5nZSwgc3BlY2lmaWNhbGx5IGluIGVycm9yIGhhbmRsaW5nLgoKVGhlIGJ1ZywgYXMgSSB1bmRlcnN0YW5kIGl0LCBzdGVtcyBmcm9tIGhvdyBgYmlvX2ludGVncml0eV9tYXBfaXRlcmAgZmFpbHVyZXMgd2VyZSBwcmV2aW91c2x5IGhhbmRsZWQuIFRoZSBvbGQgY29kZSB3b3VsZCBqdXN0IGBnb3RvIGZhaWw7YCwgYnV0IHRoYXQgbWlnaHQgbm90IHByb3Blcmx5IGNsZWFuIHVwIHRoZSBgYmlvYCwgcG90ZW50aWFsbHkgbGVha2luZyByZXNvdXJjZXMgb3Igc2ltcGx5IG5vdCBzZXR0aW5nIGBiaW8tJmd0O2JpX3N0YXR1c2AgY29ycmVjdGx5IGJlZm9yZSBjb21wbGV0aW5nIGl0LiBUaGUgb3JpZ2luYWwgY29kZSBzbmlwcGV0IHdhczoKCmBgYGMKCQkJcmV0ID0gYmlvX2ludGVncml0eV9tYXBfaXRlcihiaW8sIGlvY2ItJmd0O3ByaXZhdGUpOwoJCQlpZiAodW5saWtlbHkocmV0KSkKCQkJCWdvdG8gZmFpbDsKYGBgCgpBbmQgdGhlIGBmYWlsOmAgcGF0aCB3YXM6CgpgYGBjCmZhaWw6CglpZiAoZGlvLSZndDtmbGFncyAmYW1wOyBESU9fU0hPVUxEX0RJUlRZKSB7CgkJYmlvX2NoZWNrX3BhZ2VzX2RpcnR5KGJpbyk7Cgl9CglkaW8tJmd0O3NpemUgJiM0Mzs9IGJpby0mZ3Q7YmlfaXRlci5iaV9zaXplOwoJYmxrX2ZpbmlzaF9wbHVnKCZhbXA7cGx1Zyk7CgliaW9fcHV0KGJpbyk7CglyZXR1cm4gcmV0OwpgYGAKClRoZSBuZXcgY29kZSByZXBsYWNlcyB0aGlzIHdpdGg6CgpgYGBjCgkJCWlmICh1bmxpa2VseShyZXQpKSB7CgkJCQliaW8tJmd0O2JpX3N0YXR1cyA9IGVycm5vX3RvX2Jsa19zdGF0dXMocmV0KTsKCQkJCWJpb19lbmRpbyhiaW8pOwoJCQkJYnJlYWs7CgkJCX0KYGBgCgpUaGlzIGlzIGRlZmluaXRlbHkgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBlcnJvciBoYW5kbGluZy4gSXQmIzM5O3MgYSBwcmltZSBjYW5kaWRhdGUgZm9yIGZ1enppbmcsIGFuZCBJIG5lZWQgdG8gbWFrZSBhIG5vdGUgb2YgdGhpcy4gVGhlIGtleSBmb2N1cyBzeW1ib2xzIGZvciB0aGlzIGZ1enppbmcgYXJlIGBfX2Jsa2Rldl9kaXJlY3RfSU9gLCBhbmQgb2YgY291cnNlLCB0aGUgYEJMS19ERVZfSU5URUdSSVRZYCBhbmQgYElPX1VSSU5HYCBjb25maWd1cmF0aW9ucy4KCkxldCYjMzk7cyBxdWlja2x5IGNoZWNrIGlmIGBfX2Jsa2Rldl9kaXJlY3RfSU9gIGlzIGEgaG90IHBhdGguIERpcmVjdCBJL08gaXMgcmVhc29uYWJseSBjb21tb24sIGJ1dCB0aGlzIGlzIGJsb2NrIGRldmljZSBzcGVjaWZpYyB3aGljaCBuYXJyb3dzIHRoZSBzY29wZSB3aGljaCBpcyBnb29kLiBIb2xkIG9uLCBgX19ibGtkZXZfZGlyZWN0X0lPYCBpcyBzdGF0aWMuIEkgbXVzdCBoYXZlIG1pc3NlZCBzb21ldGhpbmcuIGBibGtkZXZfZGlyZWN0X0lPYCBjYWxscyBgX19ibGtkZXZfZGlyZWN0X0lPYC4gQWxyaWdodCwgSSYjMzk7bGwgc3RpbGwganVzdCB1c2UgYF9fYmxrZGV2X2RpcmVjdF9JT2AgYXMgdGhlIGZvY3VzLgoKVGltZSB0byBjYWxsIHNldC1yZXN1bHRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAxNTo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QkxLX0RFVl9JTlRFR1JJVFkmIzM0OywKICAgICYjMzQ7SU9fVVJJTkcmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtfX2Jsa2Rldl9kaXJlY3RfSU8mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgZXJyb3IgaGFuZGxpbmcgaW4gYmxvY2sgZGV2aWNlIGRpcmVjdCBJL08gd2hlbiBiaW9faW50ZWdyaXR5X21hcF9pdGVyIGZhaWxzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBibG9jayBsYXllciBsb2dpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QkxLX0RFVl9JTlRFR1JJVFkmIzM0OywKICAgICYjMzQ7SU9fVVJJTkcmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtfX2Jsa2Rldl9kaXJlY3RfSU8mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgZXJyb3IgaGFuZGxpbmcgaW4gYmxvY2sgZGV2aWNlIGRpcmVjdCBJL08gd2hlbiBiaW9faW50ZWdyaXR5X21hcF9pdGVyIGZhaWxzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBibG9jayBsYXllciBsb2dpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDE1OjU4OjUwLjI4ODE2NjQ3OVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1ODQxNTQ0ODExLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJMS19ERVZfSU5URUdSSVRZXCIsXG4gICAgXCJJT19VUklOR1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIl9fYmxrZGV2X2RpcmVjdF9JT1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGVycm9yIGhhbmRsaW5nIGluIGJsb2NrIGRldmljZSBkaXJlY3QgSS9PIHdoZW4gYmlvX2ludGVncml0eV9tYXBfaXRlciBmYWlscy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgYmxvY2sgbGF5ZXIgbG9naWMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDE1OjU4OjUwLjI4ODE3NTIwOVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjAwMTg2NTU0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgYzJiNGU1ODE0MzU0YzU4MWM1MmJmYjg0ZWU5NDZhYmIwMTU2MzE3NVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgRnJpIEp1biAyNiAxNTo1ODo0OCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9ibG9jay9mb3BzLmMgYi9ibG9jay9mb3BzLmNcXG5pbmRleCBiYjY2NDJiNDU5MzdjZS4uOWYxNmI5OTVjNjBjNmUgMTAwNjQ0XFxuLS0tIGEvYmxvY2svZm9wcy5jXFxuKysrIGIvYmxvY2svZm9wcy5jXFxuQEAgLTIzOSw4ICsyMzksMTEgQEAgc3RhdGljIHNzaXplX3QgX19ibGtkZXZfZGlyZWN0X0lPKHN0cnVjdCBraW9jYiAqaW9jYiwgc3RydWN0IGlvdl9pdGVyICppdGVyLFxcbiBcXHRcXHR9XFxuIFxcdFxcdGlmIChpb2NiLVxcdTAwM2VraV9mbGFncyBcXHUwMDI2IElPQ0JfSEFTX01FVEFEQVRBKSB7XFxuIFxcdFxcdFxcdHJldCA9IGJpb19pbnRlZ3JpdHlfbWFwX2l0ZXIoYmlvLCBpb2NiLVxcdTAwM2Vwcml2YXRlKTtcXG4tXFx0XFx0XFx0aWYgKHVubGlrZWx5KHJldCkpXFxuLVxcdFxcdFxcdFxcdGdvdG8gZmFpbDtcXG4rXFx0XFx0XFx0aWYgKHVubGlrZWx5KHJldCkpIHtcXG4rXFx0XFx0XFx0XFx0YmlvLVxcdTAwM2ViaV9zdGF0dXMgPSBlcnJub190b19ibGtfc3RhdHVzKHJldCk7XFxuK1xcdFxcdFxcdFxcdGJpb19lbmRpbyhiaW8pO1xcbitcXHRcXHRcXHRcXHRicmVhaztcXG4rXFx0XFx0XFx0fVxcbiBcXHRcXHR9XFxuIFxcbiBcXHRcXHRpZiAoaXNfcmVhZCkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQxNTo1ODo1MC44ODkxMjY2MzNaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ1MjQwNTczMTk3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJMS19ERVZfSU5URUdSSVRZXCIsXG4gICAgXCJJT19VUklOR1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIl9fYmxrZGV2X2RpcmVjdF9JT1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGVycm9yIGhhbmRsaW5nIGluIGJsb2NrIGRldmljZSBkaXJlY3QgSS9PIHdoZW4gYmlvX2ludGVncml0eV9tYXBfaXRlciBmYWlscy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgYmxvY2sgbGF5ZXIgbG9naWMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYzJiNGU1ODE0MzU0YzU4MWM1MmJmYjg0ZWU5NDZhYmIwMTU2MzE3NVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgSnVuIDI2IDE1OjU4OjQ4IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvYmxvY2svZm9wcy5jIGIvYmxvY2svZm9wcy5jXG5pbmRleCBiYjY2NDJiNDU5MzdjZS4uOWYxNmI5OTVjNjBjNmUgMTAwNjQ0XG4tLS0gYS9ibG9jay9mb3BzLmNcbisrKyBiL2Jsb2NrL2ZvcHMuY1xuQEAgLTIzOSw4ICsyMzksMTEgQEAgc3RhdGljIHNzaXplX3QgX19ibGtkZXZfZGlyZWN0X0lPKHN0cnVjdCBraW9jYiAqaW9jYiwgc3RydWN0IGlvdl9pdGVyICppdGVyLFxuIFx0XHR9XG4gXHRcdGlmIChpb2NiLVx1MDAzZWtpX2ZsYWdzIFx1MDAyNiBJT0NCX0hBU19NRVRBREFUQSkge1xuIFx0XHRcdHJldCA9IGJpb19pbnRlZ3JpdHlfbWFwX2l0ZXIoYmlvLCBpb2NiLVx1MDAzZXByaXZhdGUpO1xuLVx0XHRcdGlmICh1bmxpa2VseShyZXQpKVxuLVx0XHRcdFx0Z290byBmYWlsO1xuK1x0XHRcdGlmICh1bmxpa2VseShyZXQpKSB7XG4rXHRcdFx0XHRiaW8tXHUwMDNlYmlfc3RhdHVzID0gZXJybm9fdG9fYmxrX3N0YXR1cyhyZXQpO1xuK1x0XHRcdFx0YmlvX2VuZGlvKGJpbyk7XG4rXHRcdFx0XHRicmVhaztcbitcdFx0XHR9XG4gXHRcdH1cbiBcbiBcdFx0aWYgKGlzX3JlYWQpIHtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDE1OjU4OjUwLjg4OTEyNzkxM1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4MjY0MTg3ODMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgQmxvY2sgRGV2aWNlIERpcmVjdCBJL08gUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoLiBJdCBzZWVtcyB3ZSdyZSBtb2RpZnlpbmcgYGJsb2NrL2ZvcHMuY2AsIHNwZWNpZmljYWxseSB0aGUgYF9fYmxrZGV2X2RpcmVjdF9JT2AgZnVuY3Rpb24uIFRoZSBrZXkgY2hhbmdlIGhlcmUgaXMgaG93IHdlIGhhbmRsZSBmYWlsdXJlcyBpbiBgYmlvX2ludGVncml0eV9tYXBfaXRlcmAuICBJbnN0ZWFkIG9mIHRoZSB1c3VhbCBgZ290byBmYWlsO2AsIHRoZSBwYXRjaCBub3cgaW5jbHVkZXMgYSBtb3JlIGNvbnRyb2xsZWQgYXBwcm9hY2g6XG5cbmBgYGNcblx0XHRcdGlmICh1bmxpa2VseShyZXQpKSB7XG5cdFx0XHRcdGJpby1cdTAwM2ViaV9zdGF0dXMgPSBlcnJub190b19ibGtfc3RhdHVzKHJldCk7XG5cdFx0XHRcdGJpb19lbmRpbyhiaW8pO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdH1cbmBgYFxuXG5NeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCB0aGlzIGlzIGxpa2VseSBhbiBhdHRlbXB0IHRvIHJlZmluZSBlcnJvciBoYW5kbGluZyBpbiB0aGUgZGlyZWN0IEkvTyBwYXRoLCBwb3NzaWJseSB0byBtYWtlIGl0IG1vcmUgcm9idXN0IG9yIHByZXZlbnQgY2FzY2FkaW5nIGZhaWx1cmVzLiBUaGUgb2xkIGBnb3RvIGZhaWw7YCBhcHByb2FjaCBtaWdodCBoYXZlIGJlZW4gdG9vIGFicnVwdC4gIEkgbmVlZCB0byBkaXZlIGludG8gdGhpcyBhIGJpdCBkZWVwZXIgdG8gZnVsbHkgdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zLiBJJ20gZ29pbmcgdG8gbG9jYXRlIGxpbmUgMjM5IGluIGBibG9jay9mb3BzLmNgIGFuZCBzZWUgdGhlIHN1cnJvdW5kaW5nIGNvbnRleHQuIFVuZGVyc3RhbmRpbmcgdGhlIGFkamFjZW50IGNvZGUgaXMga2V5IHRvIGdyYXNwIHRoZSByYXRpb25hbGUgYmVoaW5kIHRoaXMgbmV3IGFwcHJvYWNoLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODcwLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTIwLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMTU6NTg6NTQuNzE1NTQ5NDU2WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTUxNzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiYmxvY2svZm9wcy5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDIyMCxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDIyMDpcXHRcXHRcXHRpZiAodW5saWtlbHkocmV0KSkge1xcbiAyMjE6XFx0XFx0XFx0XFx0YmlvLVxcdTAwM2ViaV9zdGF0dXMgPSBCTEtfU1RTX0lPRVJSO1xcbiAyMjI6XFx0XFx0XFx0XFx0YmlvX2VuZGlvKGJpbyk7XFxuIDIyMzpcXHRcXHRcXHRcXHRicmVhaztcXG4gMjI0OlxcdFxcdFxcdH1cXG4gMjI1OlxcdFxcdFxcdGlmIChpb2NiLVxcdTAwM2VraV9mbGFncyBcXHUwMDI2IElPQ0JfTk9XQUlUKSB7XFxuIDIyNjpcXHRcXHRcXHRcXHQvKlxcbiAyMjc6XFx0XFx0XFx0XFx0ICogVGhpcyBpcyBub25ibG9ja2luZyBJTywgYW5kIHdlIG5lZWQgdG8gYWxsb2NhdGVcXG4gMjI4OlxcdFxcdFxcdFxcdCAqIGFub3RoZXIgYmlvIGlmIHdlIGhhdmUgZGF0YSBsZWZ0IHRvIG1hcC4gQXMgd2VcXG4gMjI5OlxcdFxcdFxcdFxcdCAqIGNhbm5vdCBndWFyYW50ZWUgdGhhdCBvbmUgb2YgdGhlIHN1YiBiaW9zIHdpbGwgbm90XFxuIDIzMDpcXHRcXHRcXHRcXHQgKiBmYWlsIGdldHRpbmcgaXNzdWVkIEZPUiBOT1dBSVQgYW5kIGFzIGVycm9yIHJlc3VsdHNcXG4gMjMxOlxcdFxcdFxcdFxcdCAqIGFyZSBjb2FsZXNjZWQgYWNyb3NzIGFsbCBvZiB0aGVtLCBiZSBzYWZlIGFuZCBhc2sgZm9yXFxuIDIzMjpcXHRcXHRcXHRcXHQgKiBhIHJldHJ5IG9mIHRoaXMgZnJvbSBibG9ja2luZyBjb250ZXh0LlxcbiAyMzM6XFx0XFx0XFx0XFx0ICovXFxuIDIzNDpcXHRcXHRcXHRcXHRpZiAodW5saWtlbHkoaW92X2l0ZXJfY291bnQoaXRlcikpKSB7XFxuIDIzNTpcXHRcXHRcXHRcXHRcXHRyZXQgPSAtRUFHQUlOO1xcbiAyMzY6XFx0XFx0XFx0XFx0XFx0Z290byBmYWlsO1xcbiAyMzc6XFx0XFx0XFx0XFx0fVxcbiAyMzg6XFx0XFx0XFx0XFx0YmlvLVxcdTAwM2ViaV9vcGYgfD0gUkVRX05PV0FJVDtcXG4gMjM5OlxcdFxcdFxcdH1cXG4gMjQwOlxcdFxcdFxcdGlmIChpb2NiLVxcdTAwM2VraV9mbGFncyBcXHUwMDI2IElPQ0JfSEFTX01FVEFEQVRBKSB7XFxuIDI0MTpcXHRcXHRcXHRcXHRyZXQgPSBiaW9faW50ZWdyaXR5X21hcF9pdGVyKGJpbywgaW9jYi1cXHUwMDNlcHJpdmF0ZSk7XFxuIDI0MjpcXHRcXHRcXHRcXHRpZiAodW5saWtlbHkocmV0KSkge1xcbiAyNDM6XFx0XFx0XFx0XFx0XFx0YmlvLVxcdTAwM2ViaV9zdGF0dXMgPSBlcnJub190b19ibGtfc3RhdHVzKHJldCk7XFxuIDI0NDpcXHRcXHRcXHRcXHRcXHRiaW9fZW5kaW8oYmlvKTtcXG4gMjQ1OlxcdFxcdFxcdFxcdFxcdGJyZWFrO1xcbiAyNDY6XFx0XFx0XFx0XFx0fVxcbiAyNDc6XFx0XFx0XFx0fVxcbiAyNDg6XFx0XFxuIDI0OTpcXHRcXHRcXHRpZiAoaXNfcmVhZCkge1xcbiAyNTA6XFx0XFx0XFx0XFx0aWYgKGRpby1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBESU9fU0hPVUxEX0RJUlRZKVxcbiAyNTE6XFx0XFx0XFx0XFx0XFx0YmlvX3NldF9wYWdlc19kaXJ0eShiaW8pO1xcbiAyNTI6XFx0XFx0XFx0fSBlbHNlIHtcXG4gMjUzOlxcdFxcdFxcdFxcdHRhc2tfaW9fYWNjb3VudF93cml0ZShiaW8tXFx1MDAzZWJpX2l0ZXIuYmlfc2l6ZSk7XFxuIDI1NDpcXHRcXHRcXHR9XFxuIDI1NTpcXHRcXHRcXHRkaW8tXFx1MDAzZXNpemUgKz0gYmlvLVxcdTAwM2ViaV9pdGVyLmJpX3NpemU7XFxuIDI1NjpcXHRcXHRcXHRwb3MgKz0gYmlvLVxcdTAwM2ViaV9pdGVyLmJpX3NpemU7XFxuIDI1NzpcXHRcXG4gMjU4OlxcdFxcdFxcdG5yX3BhZ2VzID0gYmlvX2lvdl92ZWNzX3RvX2FsbG9jKGl0ZXIsIEJJT19NQVhfVkVDUyk7XFxuIDI1OTpcXHRcXHRcXHRpZiAoIW5yX3BhZ2VzKSB7XFxuIDI2MDpcXHRcXHRcXHRcXHRzdWJtaXRfYmlvKGJpbyk7XFxuIDI2MTpcXHRcXHRcXHRcXHRicmVhaztcXG4gMjYyOlxcdFxcdFxcdH1cXG4gMjYzOlxcdFxcdFxcdGF0b21pY19pbmMoXFx1MDAyNmRpby1cXHUwMDNlcmVmKTtcXG4gMjY0OlxcdFxcdFxcdHN1Ym1pdF9iaW8oYmlvKTtcXG4gMjY1OlxcdFxcdFxcdGJpbyA9IGJpb19hbGxvYyhiZGV2LCBucl9wYWdlcywgb3BmLCBHRlBfS0VSTkVMKTtcXG4gMjY2OlxcdFxcdH1cXG4gMjY3OlxcdFxcbiAyNjg6XFx0XFx0YmxrX2ZpbmlzaF9wbHVnKFxcdTAwMjZwbHVnKTtcXG4gMjY5OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQxNTo1ODo1NC43MTU2NDg0NDZaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjA1MDE3MTM4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgYF9fYmxrZGV2X2RpcmVjdF9JT2AqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHR3ZWFraW5nIGBfX2Jsa2Rldl9kaXJlY3RfSU9gLCB3aGljaCBtZWFucyB3ZSdyZSBsb29raW5nIGF0IGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gaG93IGRpcmVjdCBJL08gd29ya3Mgd2l0aCBibG9jayBkZXZpY2VzLiBUaGF0IHNjcmVhbXMgXCJmdXp6aW5nIHRhcmdldFwiIHRvIG1lLiBUaGlzIGhhcyB0aGUgcG90ZW50aWFsIHRvIGV4cG9zZSBzb21lIG5hc3R5IGVkZ2UgY2FzZXMsIGVzcGVjaWFsbHkgZ2l2ZW4gdGhlIGNvbXBsZXhpdHkgb2YgYmxvY2sgZGV2aWNlIGludGVyYWN0aW9ucy4gTXkgbWFpbiBmb2N1cyBoZXJlIHdpbGwgYmUgb24gdGhlIGBfX2Jsa2Rldl9kaXJlY3RfSU9gIHN5bWJvbCBpdHNlbGYuIEkgZG9uJ3Qgc2VlIGFueSBvYnZpb3VzIGNvbmZpZyBkZXBlbmRlbmNpZXMganVtcGluZyBvdXQgYXQgbWUgcmlnaHQgYXdheSwgYnV0IGl0J3MgYWx3YXlzIGdvb2QgdG8gYmUgdGhvcm91Z2guIEknbGwgbmVlZCB0byBkb3VibGUtY2hlY2sgaWYgc29tZXRoaW5nIGxpa2UgYElPQ0JfSEFTX01FVEFEQVRBYCBoYXMgYW55IGluZmx1ZW5jZSBvciBzcGVjaWZpYyBjb25maWd1cmF0aW9uIHJlcXVpcmVtZW50cy4gV2UgZG9uJ3Qgd2FudCB0byBtaXNzIGFueXRoaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMDIyLCJPdXRwdXRUb2tlbnMiOjIyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQxNTo1ODo1OC4zMjA2Njg2MTRaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mzg3NzYyMzkxMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJJT0NCX0hBU19NRVRBREFUQVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJibG9jay9mb3BzLmM9MTc1PXN0YXRpYyBzc2l6ZV90IF9fYmxrZGV2X2RpcmVjdF9JTyhzdHJ1Y3Qga2lvY2IgKmlvY2IsIHN0cnVjdCBpb3ZfaXRlciAqaXRlcixcXG4tLVxcbmJsb2NrL2ZvcHMuYy0yMzktXFx0XFx0fVxcbmJsb2NrL2ZvcHMuYzoyNDA6XFx0XFx0aWYgKGlvY2ItXFx1MDAzZWtpX2ZsYWdzIFxcdTAwMjYgSU9DQl9IQVNfTUVUQURBVEEpIHtcXG5ibG9jay9mb3BzLmMtMjQxLVxcdFxcdFxcdHJldCA9IGJpb19pbnRlZ3JpdHlfbWFwX2l0ZXIoYmlvLCBpb2NiLVxcdTAwM2Vwcml2YXRlKTtcXG4tLVxcbmJsb2NrL2ZvcHMuYz0zMjQ9c3RhdGljIHNzaXplX3QgX19ibGtkZXZfZGlyZWN0X0lPX2FzeW5jKHN0cnVjdCBraW9jYiAqaW9jYixcXG4tLVxcbmJsb2NrL2ZvcHMuYy0zNzAtXFxuYmxvY2svZm9wcy5jOjM3MTpcXHRpZiAoaW9jYi1cXHUwMDNla2lfZmxhZ3MgXFx1MDAyNiBJT0NCX0hBU19NRVRBREFUQSkge1xcbmJsb2NrL2ZvcHMuYy0zNzItXFx0XFx0cmV0ID0gYmlvX2ludGVncml0eV9tYXBfaXRlcihiaW8sIGlvY2ItXFx1MDAzZXByaXZhdGUpO1xcbi0tXFxuYmxvY2svZm9wcy5jPTM5OD1zdGF0aWMgc3NpemVfdCBibGtkZXZfZGlyZWN0X0lPKHN0cnVjdCBraW9jYiAqaW9jYiwgc3RydWN0IGlvdl9pdGVyICppdGVyKVxcbi0tXFxuYmxvY2svZm9wcy5jLTQzMC1cXHRpZiAobGlrZWx5KG5yX3BhZ2VzIFxcdTAwM2M9IEJJT19NQVhfVkVDUyBcXHUwMDI2XFx1MDAyNlxcbmJsb2NrL2ZvcHMuYzo0MzE6XFx0XFx0ICAgIShpb2NiLVxcdTAwM2VraV9mbGFncyBcXHUwMDI2IElPQ0JfSEFTX01FVEFEQVRBKSkpIHtcXG5ibG9jay9mb3BzLmMtNDMyLVxcdFxcdGlmIChpc19zeW5jX2tpb2NiKGlvY2IpKVxcbi0tXFxuaW5jbHVkZS9saW51eC9mcy5oPTg5PXR5cGVkZWYgaW50IChkaW9faW9kb25lX3QpKHN0cnVjdCBraW9jYiAqaW9jYiwgbG9mZl90IG9mZnNldCxcXG4tLVxcbmluY2x1ZGUvbGludXgvZnMuaC0xNDEtXFxuaW5jbHVkZS9saW51eC9mcy5oOjE0MjovKiBTdXBwb3J0cyBJT0NCX0hBU19NRVRBREFUQSAqL1xcbmluY2x1ZGUvbGludXgvZnMuaC0xNDMtI2RlZmluZSBGTU9ERV9IQVNfTUVUQURBVEFcXHQoKF9fZm9yY2UgZm1vZGVfdCkoMSBcXHUwMDNjXFx1MDAzYyAxMykpXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2ZzLmg9MzM2PXN0cnVjdCByZWFkYWhlYWRfY29udHJvbDtcXG4tLVxcbmluY2x1ZGUvbGludXgvZnMuaC0zNTgtI2RlZmluZSBJT0NCX0FJT19SV1xcdFxcdCgxIFxcdTAwM2NcXHUwMDNjIDIyKVxcbmluY2x1ZGUvbGludXgvZnMuaDozNTk6I2RlZmluZSBJT0NCX0hBU19NRVRBREFUQVxcdCgxIFxcdTAwM2NcXHUwMDNjIDIzKVxcbmluY2x1ZGUvbGludXgvZnMuaC0zNjAtXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2ZzLmgtMzc2LVxcdHsgSU9DQl9BSU9fUlcsXFx0XFx0XFxcIkFJT19SV1xcXCIgfSwgXFxcXFxcbmluY2x1ZGUvbGludXgvZnMuaDozNzc6XFx0eyBJT0NCX0hBU19NRVRBREFUQSxcXHRcXFwiQUlPX0hBU19NRVRBREFUQVxcXCIgfVxcbmluY2x1ZGUvbGludXgvZnMuaC0zNzgtXFxuLS1cXG5pb191cmluZy9ydy5jPTIyND1zdGF0aWMgaW5saW5lIHZvaWQgaW9fbWV0YV9yZXN0b3JlKHN0cnVjdCBpb19hc3luY19ydyAqaW8sIHN0cnVjdCBraW9jYiAqa2lvY2IpXFxuaW9fdXJpbmcvcncuYy0yMjUte1xcbmlvX3VyaW5nL3J3LmM6MjI2OlxcdGlmIChraW9jYi1cXHUwMDNla2lfZmxhZ3MgXFx1MDAyNiBJT0NCX0hBU19NRVRBREFUQSkge1xcbmlvX3VyaW5nL3J3LmMtMjI3LVxcdFxcdGlvLVxcdTAwM2VtZXRhLnNlZWQgPSBpby1cXHUwMDNlbWV0YV9zdGF0ZS5zZWVkO1xcbi0tXFxuaW9fdXJpbmcvcncuYz04NDg9c3RhdGljIGludCBpb19yd19pbml0X2ZpbGUoc3RydWN0IGlvX2tpb2NiICpyZXEsIGZtb2RlX3QgbW9kZSwgaW50IHJ3X3R5cGUpXFxuLS1cXG5pb191cmluZy9ydy5jLTkwNC1cXHRcXHRcXHRyZXR1cm4gLUVPUE5PVFNVUFA7XFxuaW9fdXJpbmcvcncuYzo5MDU6XFx0XFx0a2lvY2ItXFx1MDAzZWtpX2ZsYWdzIHw9IElPQ0JfSEFTX01FVEFEQVRBO1xcbmlvX3VyaW5nL3J3LmMtOTA2LVxcdFxcdGtpb2NiLVxcdTAwM2Vwcml2YXRlID0gXFx1MDAyNmlvLVxcdTAwM2VtZXRhO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQxNTo1OTowMi4xOTgzMDI0NzVaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjUwODE1MTk3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEN1cnJlbnQgQ29uc2lkZXJhdGlvbnMgUmVnYXJkaW5nIE1ldGFkYXRhIEkvTyBhbmQgaW9fdXJpbmcqKlxuXG5BbHJpZ2h0LCBsZXQncyBzZWUuIEknbSBmb2N1c2luZyBvbiBtZXRhZGF0YSBJL08sIHNwZWNpZmljYWxseSBob3cgaXQncyBoYW5kbGVkLCB3aGljaCBvZiBjb3Vyc2UgYnJpbmdzIGBJT0NCX0hBU19NRVRBREFUQWAgdG8gbWluZC4gIFRoaXMgaXMgYSBmbGFnIHRoYXQsIGFzIEkgdW5kZXJzdGFuZCBpdCwgc2lnbmFscyB0aGF0IHdlJ3JlIGRlYWxpbmcgd2l0aCBtZXRhZGF0YSBvcGVyYXRpb25zLCBhbmQgbmF0dXJhbGx5LCBpdCdzIHN1cHBvcnRlZCB3aXRoaW4gdGhlIGlvX3VyaW5nIGZyYW1ld29yay4gIFRoZSBpbW1lZGlhdGUgbG9jYXRpb24gSSBuZWVkIHRvIGNoZWNrIGlzIHdpdGhpbiBgX19ibGtkZXZfZGlyZWN0X0lPYCDigJMgdGhhdCBzZWVtcyB0byBiZSB3aGVyZSB0aGUgY2hhbmdlcyByZWxhdGVkIHRvIHRoaXMgYXJlIGNvbmNlbnRyYXRlZC4gIEkgc2hvdWxkIGJlIGFibGUgdG8gdHJhY2sgZG93biB0aGUgaW1wbGVtZW50YXRpb24gZnJvbSB0aGVyZS4gTm93LCB0aGUgbmV4dCBxdWVzdGlvbiBwb3BwaW5nIGludG8gbXkgaGVhZCBpcywgYXJlIHRoZXJlIGFueSBzcGVjaWZpYyBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMgdGhhdCBjb21lIGludG8gcGxheSB3aGVuIHVzaW5nIHRoZSBgYmlvX2ludGVncml0eV9tYXBfaXRlcmAgc3RydWN0dXJlIHdpdGhpbiB0aGlzIGNvbnRleHQ/IFRoYXQncyB0aGUgbmV4dCBhcmVhIEkgd2FudCB0byBpbnZlc3RpZ2F0ZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDIwNywiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDE1OjU5OjA1Ljg0OTEyMDQ3MloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDgwODI1MTA2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJpb19pbnRlZ3JpdHlfbWFwX2l0ZXJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYmxvY2svYmlvLWludGVncml0eS5jPTQzND1zdGF0aWMgdm9pZCBiaW9fdWlvX21ldGFfdG9fYmlwKHN0cnVjdCBiaW8gKmJpbywgc3RydWN0IHVpb19tZXRhICptZXRhKVxcbi0tXFxuYmxvY2svYmlvLWludGVncml0eS5jLTQ0Ny1cXG5ibG9jay9iaW8taW50ZWdyaXR5LmM6NDQ4OmludCBiaW9faW50ZWdyaXR5X21hcF9pdGVyKHN0cnVjdCBiaW8gKmJpbywgc3RydWN0IHVpb19tZXRhICptZXRhKVxcbmJsb2NrL2Jpby1pbnRlZ3JpdHkuYy00NDkte1xcbi0tXFxuYmxvY2svZm9wcy5jPTE3NT1zdGF0aWMgc3NpemVfdCBfX2Jsa2Rldl9kaXJlY3RfSU8oc3RydWN0IGtpb2NiICppb2NiLCBzdHJ1Y3QgaW92X2l0ZXIgKml0ZXIsXFxuLS1cXG5ibG9jay9mb3BzLmMtMjQwLVxcdFxcdGlmIChpb2NiLVxcdTAwM2VraV9mbGFncyBcXHUwMDI2IElPQ0JfSEFTX01FVEFEQVRBKSB7XFxuYmxvY2svZm9wcy5jOjI0MTpcXHRcXHRcXHRyZXQgPSBiaW9faW50ZWdyaXR5X21hcF9pdGVyKGJpbywgaW9jYi1cXHUwMDNlcHJpdmF0ZSk7XFxuYmxvY2svZm9wcy5jLTI0Mi1cXHRcXHRcXHRpZiAodW5saWtlbHkocmV0KSkge1xcbi0tXFxuYmxvY2svZm9wcy5jPTMyND1zdGF0aWMgc3NpemVfdCBfX2Jsa2Rldl9kaXJlY3RfSU9fYXN5bmMoc3RydWN0IGtpb2NiICppb2NiLFxcbi0tXFxuYmxvY2svZm9wcy5jLTM3MS1cXHRpZiAoaW9jYi1cXHUwMDNla2lfZmxhZ3MgXFx1MDAyNiBJT0NCX0hBU19NRVRBREFUQSkge1xcbmJsb2NrL2ZvcHMuYzozNzI6XFx0XFx0cmV0ID0gYmlvX2ludGVncml0eV9tYXBfaXRlcihiaW8sIGlvY2ItXFx1MDAzZXByaXZhdGUpO1xcbmJsb2NrL2ZvcHMuYy0zNzMtXFx0XFx0V1JJVEVfT05DRShpb2NiLVxcdTAwM2Vwcml2YXRlLCBOVUxMKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvYmlvLWludGVncml0eS5oPTc4PWludCBiaW9faW50ZWdyaXR5X21hcF91c2VyKHN0cnVjdCBiaW8gKmJpbywgc3RydWN0IGlvdl9pdGVyICppdGVyKTtcXG5pbmNsdWRlL2xpbnV4L2Jpby1pbnRlZ3JpdHkuaDo3OTppbnQgYmlvX2ludGVncml0eV9tYXBfaXRlcihzdHJ1Y3QgYmlvICpiaW8sIHN0cnVjdCB1aW9fbWV0YSAqbWV0YSk7XFxuaW5jbHVkZS9saW51eC9iaW8taW50ZWdyaXR5LmgtODAtdm9pZCBiaW9faW50ZWdyaXR5X3VubWFwX3VzZXIoc3RydWN0IGJpbyAqYmlvKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvYmlvLWludGVncml0eS5oPTkzPXN0YXRpYyBpbmxpbmUgaW50IGJpb19pbnRlZ3JpdHlfbWFwX3VzZXIoc3RydWN0IGJpbyAqYmlvLCBzdHJ1Y3QgaW92X2l0ZXIgKml0ZXIpXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2Jpby1pbnRlZ3JpdHkuaC05Ny1cXG5pbmNsdWRlL2xpbnV4L2Jpby1pbnRlZ3JpdHkuaDo5ODpzdGF0aWMgaW5saW5lIGludCBiaW9faW50ZWdyaXR5X21hcF9pdGVyKHN0cnVjdCBiaW8gKmJpbywgc3RydWN0IHVpb19tZXRhICptZXRhKVxcbmluY2x1ZGUvbGludXgvYmlvLWludGVncml0eS5oLTk5LXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMTU6NTk6MDguMzI5OTUxMzE4WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzExMDAwNjg1MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIGJpb19pbnRlZ3JpdHlfbWFwX2l0ZXIgRnVuY3Rpb24qKlxuXG5Pa2F5LCBzbyBgYmlvX2ludGVncml0eV9tYXBfaXRlcmAgaXMgZGVmaW5lZCB3aXRoaW4gYGJsb2NrL2Jpby1pbnRlZ3JpdHkuY2AuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIlJpZ2h0LCBnb29kIHRvIGtub3cgd2hlcmUgdGhlIGNvZGUgbGl2ZXMuXCIgTm93LCB0aGUgbmF0dXJhbCBuZXh0IHN0ZXAgaXMgdG8gcXVpY2tseSBkZXRlcm1pbmUgaWYgdGhpcyBwYXJ0aWN1bGFyIG1vZHVsZSBvciBmdW5jdGlvbiBoYXMgYW55IGRlcGVuZGVuY2llcyBvbiBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGlmIGl0cyBiZWhhdmlvciBpcyBpbmZsdWVuY2VkIGJ5IGFueSBzZXR0aW5ncywgY29tcGlsZS10aW1lIGZsYWdzLCBvciBydW50aW1lIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gVGhpcyBpcyBjcnVjaWFsIGZvciB1bmRlcnN0YW5kaW5nIGl0cyBmbGV4aWJpbGl0eSBhbmQgaG93IGl0IG1pZ2h0IGludGVyYWN0IHdpdGggdGhlIGJyb2FkZXIgc3lzdGVtJ3Mgb3ZlcmFsbCBpbnRlZ3JpdHkuIExldCdzIHNlZSBpZiB0aGF0IGZpbGUgaW1wb3J0cyBhbnkgY29uZmlncy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTA1MywiT3V0cHV0VG9rZW5zIjoxOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDE1OjU5OjExLjQzOTk2MDc5OVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjU2NzAzNTYwNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJiaW8taW50ZWdyaXR5Lm9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYmxvY2svTWFrZWZpbGU9MjY9b2JqLSQoQ09ORklHX0lPU0NIRURfQkZRKVxcdCs9IGJmcS5vXFxuYmxvY2svTWFrZWZpbGUtMjctXFxuYmxvY2svTWFrZWZpbGU6Mjg6b2JqLSQoQ09ORklHX0JMS19ERVZfSU5URUdSSVRZKSArPSBiaW8taW50ZWdyaXR5Lm8gYmxrLWludGVncml0eS5vIHQxMC1waS5vIFxcXFxcXG5ibG9jay9NYWtlZmlsZS0yOS1cXHRcXHRcXHRcXHQgICBiaW8taW50ZWdyaXR5LWF1dG8ubyBiaW8taW50ZWdyaXR5LWZzLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMTU6NTk6MTQuMDA3MDA0MTk0WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4NTYwNDIxODEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyB0aGUgQklPIEludGVncml0eSBEZXBlbmRlbmN5KipcblxuT2theSwgc28gaXQgbG9va3MgbGlrZSBgYmlvLWludGVncml0eS5vYCAqYWJzb2x1dGVseSogZGVwZW5kcyBvbiBgQ09ORklHX0JMS19ERVZfSU5URUdSSVRZYC4gVGhhdCdzIHRoZSBvYnZpb3VzIHN0YXJ0aW5nIHBvaW50LiBJIHN1c3BlY3QgdGhhdCBpZiB0aGF0IGNvbmZpZyBvcHRpb24gaXNuJ3Qgc2V0LCB0aGVuIHRoZSBgYmlvX2ludGVncml0eV9tYXBfaXRlcmAgZnVuY3Rpb24gaXMgcHJvYmFibHkganVzdCBhIHF1aWNrIGlubGluZSBzdHViIHRoYXQgcmV0dXJucyBlaXRoZXIgemVybyBvciBhbiBlcnJvci4gQSBxdWljayBjaGVjayBvZiBgaW5jbHVkZS9saW51eC9iaW8taW50ZWdyaXR5LmhgIHNob3VsZCBjb25maXJtIHRoYXQuIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhpcyBkZXBlbmRlbmN5IGlzIGhhbmRsZWQgY29ycmVjdGx5IGluIHRoZSBidWlsZCBzeXN0ZW0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUzNTUsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQxNTo1OToxNy44NjMwNTAzOTVaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTIxNzQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImluY2x1ZGUvbGludXgvYmlvLWludGVncml0eS5oXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDg1LFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDg1OlxcdFxcbiAgODY6XFx0I2Vsc2UgLyogQ09ORklHX0JMS19ERVZfSU5URUdSSVRZICovXFxuICA4NzpcXHRcXG4gIDg4OlxcdHN0YXRpYyBpbmxpbmUgc3RydWN0IGJpb19pbnRlZ3JpdHlfcGF5bG9hZCAqYmlvX2ludGVncml0eShzdHJ1Y3QgYmlvICpiaW8pXFxuICA4OTpcXHR7XFxuICA5MDpcXHRcXHRyZXR1cm4gTlVMTDtcXG4gIDkxOlxcdH1cXG4gIDkyOlxcdFxcbiAgOTM6XFx0c3RhdGljIGlubGluZSBpbnQgYmlvX2ludGVncml0eV9tYXBfdXNlcihzdHJ1Y3QgYmlvICpiaW8sIHN0cnVjdCBpb3ZfaXRlciAqaXRlcilcXG4gIDk0OlxcdHtcXG4gIDk1OlxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiAgOTY6XFx0fVxcbiAgOTc6XFx0XFxuICA5ODpcXHRzdGF0aWMgaW5saW5lIGludCBiaW9faW50ZWdyaXR5X21hcF9pdGVyKHN0cnVjdCBiaW8gKmJpbywgc3RydWN0IHVpb19tZXRhICptZXRhKVxcbiAgOTk6XFx0e1xcbiAxMDA6XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIDEwMTpcXHR9XFxuIDEwMjpcXHRcXG4gMTAzOlxcdHN0YXRpYyBpbmxpbmUgdm9pZCBiaW9faW50ZWdyaXR5X3VubWFwX3VzZXIoc3RydWN0IGJpbyAqYmlvKVxcbiAxMDQ6XFx0e1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQxNTo1OToxNy44NjMxNzQzNDZaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjg4OTY4NTkzNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbnZlc3RpZ2F0aW5nIHRoZSBDb25maWd1cmF0aW9uIGZvciBJbnRlZ3JpdHkgYW5kIElPX1VSSU5HKipcblxuT2theSwgc28gSSdtIHRoaW5raW5nIGFib3V0IHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiBoZXJlLiBXZSBkZWZpbml0ZWx5IG5lZWQgYENPTkZJR19CTEtfREVWX0lOVEVHUklUWWAg4oCTIHRoYXQncyBhIGdpdmVuLiBCdXQsIEknbSBhbHNvIHdvbmRlcmluZyBpZiBgQ09ORklHX0lPX1VSSU5HYCBpcyAqcmVxdWlyZWQqIHRvIHRyaWdnZXIgYElPQ0JfSEFTX01FVEFEQVRBYC4gSXQgc2VlbXMgbGlrZSBhIHBvdGVudGlhbCBkZXBlbmRlbmN5LCBhbmQgSSBuZWVkIHRvIGJlIGNlcnRhaW4uIEkndmUgZ290IHRvIGVuc3VyZSBJIGhhdmVuJ3QgbWlzc2VkIGFueSBvdGhlciB1c2VzIG9mIGBJT0NCX0hBU19NRVRBREFUQWAuIFRpbWUgdG8gY2hlY2sgdGhlIGNvZGViYXNlIG1vcmUgZ2VuZXJhbGx5IGZvciBvdGhlciBwbGFjZXMgd2hlcmUgYElPQ0JfSEFTX01FVEFEQVRBYCBtaWdodCBiZSBkZWZpbmVkIG9yIHVzZWQuIEdvdHRhIGNvdmVyIGFsbCB0aGUgYmFzZXMhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU4NDIsIk91dHB1dFRva2VucyI6MjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDE1OjU5OjIwLjc1Mjg2MzM1MloiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjI1NTMyNTA2MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJJT0NCX0hBU19NRVRBREFUQVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJibG9jay9mb3BzLmM9MTc1PXN0YXRpYyBzc2l6ZV90IF9fYmxrZGV2X2RpcmVjdF9JTyhzdHJ1Y3Qga2lvY2IgKmlvY2IsIHN0cnVjdCBpb3ZfaXRlciAqaXRlcixcXG4tLVxcbmJsb2NrL2ZvcHMuYy0yMzktXFx0XFx0fVxcbmJsb2NrL2ZvcHMuYzoyNDA6XFx0XFx0aWYgKGlvY2ItXFx1MDAzZWtpX2ZsYWdzIFxcdTAwMjYgSU9DQl9IQVNfTUVUQURBVEEpIHtcXG5ibG9jay9mb3BzLmMtMjQxLVxcdFxcdFxcdHJldCA9IGJpb19pbnRlZ3JpdHlfbWFwX2l0ZXIoYmlvLCBpb2NiLVxcdTAwM2Vwcml2YXRlKTtcXG4tLVxcbmJsb2NrL2ZvcHMuYz0zMjQ9c3RhdGljIHNzaXplX3QgX19ibGtkZXZfZGlyZWN0X0lPX2FzeW5jKHN0cnVjdCBraW9jYiAqaW9jYixcXG4tLVxcbmJsb2NrL2ZvcHMuYy0zNzAtXFxuYmxvY2svZm9wcy5jOjM3MTpcXHRpZiAoaW9jYi1cXHUwMDNla2lfZmxhZ3MgXFx1MDAyNiBJT0NCX0hBU19NRVRBREFUQSkge1xcbmJsb2NrL2ZvcHMuYy0zNzItXFx0XFx0cmV0ID0gYmlvX2ludGVncml0eV9tYXBfaXRlcihiaW8sIGlvY2ItXFx1MDAzZXByaXZhdGUpO1xcbi0tXFxuYmxvY2svZm9wcy5jPTM5OD1zdGF0aWMgc3NpemVfdCBibGtkZXZfZGlyZWN0X0lPKHN0cnVjdCBraW9jYiAqaW9jYiwgc3RydWN0IGlvdl9pdGVyICppdGVyKVxcbi0tXFxuYmxvY2svZm9wcy5jLTQzMC1cXHRpZiAobGlrZWx5KG5yX3BhZ2VzIFxcdTAwM2M9IEJJT19NQVhfVkVDUyBcXHUwMDI2XFx1MDAyNlxcbmJsb2NrL2ZvcHMuYzo0MzE6XFx0XFx0ICAgIShpb2NiLVxcdTAwM2VraV9mbGFncyBcXHUwMDI2IElPQ0JfSEFTX01FVEFEQVRBKSkpIHtcXG5ibG9jay9mb3BzLmMtNDMyLVxcdFxcdGlmIChpc19zeW5jX2tpb2NiKGlvY2IpKVxcbi0tXFxuaW5jbHVkZS9saW51eC9mcy5oPTg5PXR5cGVkZWYgaW50IChkaW9faW9kb25lX3QpKHN0cnVjdCBraW9jYiAqaW9jYiwgbG9mZl90IG9mZnNldCxcXG4tLVxcbmluY2x1ZGUvbGludXgvZnMuaC0xNDEtXFxuaW5jbHVkZS9saW51eC9mcy5oOjE0MjovKiBTdXBwb3J0cyBJT0NCX0hBU19NRVRBREFUQSAqL1xcbmluY2x1ZGUvbGludXgvZnMuaC0xNDMtI2RlZmluZSBGTU9ERV9IQVNfTUVUQURBVEFcXHQoKF9fZm9yY2UgZm1vZGVfdCkoMSBcXHUwMDNjXFx1MDAzYyAxMykpXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2ZzLmg9MzM2PXN0cnVjdCByZWFkYWhlYWRfY29udHJvbDtcXG4tLVxcbmluY2x1ZGUvbGludXgvZnMuaC0zNTgtI2RlZmluZSBJT0NCX0FJT19SV1xcdFxcdCgxIFxcdTAwM2NcXHUwMDNjIDIyKVxcbmluY2x1ZGUvbGludXgvZnMuaDozNTk6I2RlZmluZSBJT0NCX0hBU19NRVRBREFUQVxcdCgxIFxcdTAwM2NcXHUwMDNjIDIzKVxcbmluY2x1ZGUvbGludXgvZnMuaC0zNjAtXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2ZzLmgtMzc2LVxcdHsgSU9DQl9BSU9fUlcsXFx0XFx0XFxcIkFJT19SV1xcXCIgfSwgXFxcXFxcbmluY2x1ZGUvbGludXgvZnMuaDozNzc6XFx0eyBJT0NCX0hBU19NRVRBREFUQSxcXHRcXFwiQUlPX0hBU19NRVRBREFUQVxcXCIgfVxcbmluY2x1ZGUvbGludXgvZnMuaC0zNzgtXFxuLS1cXG5pb191cmluZy9ydy5jPTIyND1zdGF0aWMgaW5saW5lIHZvaWQgaW9fbWV0YV9yZXN0b3JlKHN0cnVjdCBpb19hc3luY19ydyAqaW8sIHN0cnVjdCBraW9jYiAqa2lvY2IpXFxuaW9fdXJpbmcvcncuYy0yMjUte1xcbmlvX3VyaW5nL3J3LmM6MjI2OlxcdGlmIChraW9jYi1cXHUwMDNla2lfZmxhZ3MgXFx1MDAyNiBJT0NCX0hBU19NRVRBREFUQSkge1xcbmlvX3VyaW5nL3J3LmMtMjI3LVxcdFxcdGlvLVxcdTAwM2VtZXRhLnNlZWQgPSBpby1cXHUwMDNlbWV0YV9zdGF0ZS5zZWVkO1xcbi0tXFxuaW9fdXJpbmcvcncuYz04NDg9c3RhdGljIGludCBpb19yd19pbml0X2ZpbGUoc3RydWN0IGlvX2tpb2NiICpyZXEsIGZtb2RlX3QgbW9kZSwgaW50IHJ3X3R5cGUpXFxuLS1cXG5pb191cmluZy9ydy5jLTkwNC1cXHRcXHRcXHRyZXR1cm4gLUVPUE5PVFNVUFA7XFxuaW9fdXJpbmcvcncuYzo5MDU6XFx0XFx0a2lvY2ItXFx1MDAzZWtpX2ZsYWdzIHw9IElPQ0JfSEFTX01FVEFEQVRBO1xcbmlvX3VyaW5nL3J3LmMtOTA2LVxcdFxcdGtpb2NiLVxcdTAwM2Vwcml2YXRlID0gXFx1MDAyNmlvLVxcdTAwM2VtZXRhO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQxNTo1OToyMy4wMDgxOTcwOTRaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzI4NDQ1NzY1NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbnZlc3RpZ2F0aW5nIElPX1VSSU5HIE1ldGFkYXRhIERlcGVuZGVuY3kqKlxuXG5Pa2F5LCBzbyBJJ3ZlIHBpbnBvaW50ZWQgdGhhdCBgSU9DQl9IQVNfTUVUQURBVEFgIGlzIHNvbGVseSBkZWZpbmVkIGFuZCB1c2VkIHdpdGhpbiBgaW9fdXJpbmcvcncuY2AuIFRoYXQncyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIFRoaXMgc3Ryb25nbHkgc3VnZ2VzdHMgYSBkZXBlbmRlbmN5IG9uIHRoZSBgaW9fdXJpbmdgIGluZnJhc3RydWN0dXJlIGl0c2VsZi4gTm93LCBJIG5lZWQgdG8gY29uZmlybSB0aGF0IGBDT05GSUdfSU9fVVJJTkdgIGlzIGluZGVlZCB0aGUgY29ycmVjdCBjb25maWd1cmF0aW9uIHN5bWJvbCBjb250cm9sbGluZyB0aGlzIGZlYXR1cmUuIEl0J3MgYSBmYWlybHkgc2FmZSBhc3N1bXB0aW9uIGdpdmVuIHRoZSBuYW1pbmcgY29udmVudGlvbiwgYnV0IEkgYWx3YXlzIHByZWZlciB0byBkb3VibGUtY2hlY2sgdGhlc2UgdGhpbmdzIHRvIGF2b2lkIG1ha2luZyBpbmNvcnJlY3QgYXNzZXJ0aW9ucy4gVGltZSB0byBjb25maXJtIHRoYXQgY29uZmlndXJhdGlvbiBvcHRpb24hXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY5ODUsIk91dHB1dFRva2VucyI6MTgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQxNTo1OToyNi4yOTI2NTgyWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTEzNzU0NjE1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBJT19VUklOR1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbml0L0tjb25maWc9MTg5MD1jb25maWcgQUlPXFxuLS1cXG5pbml0L0tjb25maWctMTg5Ny1cXG5pbml0L0tjb25maWc6MTg5ODpjb25maWcgSU9fVVJJTkdcXG5pbml0L0tjb25maWctMTg5OS1cXHRib29sIFxcXCJFbmFibGUgSU8gdXJpbmcgc3VwcG9ydFxcXCIgaWYgRVhQRVJUXFxuLS1cXG5pbml0L0tjb25maWc9MTkwNz1jb25maWcgR0NPVl9QUk9GSUxFX1VSSU5HXFxuLS1cXG5pbml0L0tjb25maWctMTkxOS1cXG5pbml0L0tjb25maWc6MTkyMDpjb25maWcgSU9fVVJJTkdfTU9DS19GSUxFXFxuaW5pdC9LY29uZmlnLTE5MjEtXFx0dHJpc3RhdGUgXFxcIkVuYWJsZSBpb191cmluZyBtb2NrIGZpbGVzIChFeHBlcmltZW50YWwpXFxcIiBpZiBFWFBFUlRcXG4tLVxcbmlvX3VyaW5nL0tjb25maWctNS1cXG5pb191cmluZy9LY29uZmlnOjY6Y29uZmlnIElPX1VSSU5HX1pDUlhcXG5pb191cmluZy9LY29uZmlnLTctXFx0ZGVmX2Jvb2wgeVxcbi0tXFxuaW9fdXJpbmcvS2NvbmZpZy0xMi1cXG5pb191cmluZy9LY29uZmlnOjEzOmNvbmZpZyBJT19VUklOR19CUEZcXG5pb191cmluZy9LY29uZmlnLTE0LVxcdGRlZl9ib29sIHlcXG4tLVxcbmlvX3VyaW5nL0tjb25maWctMTctXFxuaW9fdXJpbmcvS2NvbmZpZzoxODpjb25maWcgSU9fVVJJTkdfQlBGX09QU1xcbmlvX3VyaW5nL0tjb25maWctMTktXFx0ZGVmX2Jvb2wgeVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQxNTo1OToyOC40MDY0MTgzMTdaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzYzOTIyMjcwNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBCbG9jayBEZXZpY2UgRGlyZWN0IEkvTyBCdWcgRml4KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHksIGBDT05GSUdfSU9fVVJJTkdgIGFuZCBgQ09ORklHX0JMS19ERVZfSU5URUdSSVRZYCBqdW1wIG91dCBhcyB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMuIFRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgaXMgaW4gYF9fYmxrZGV2X2RpcmVjdF9JT2Agd2l0aGluIGBibG9jay9mb3BzLmNgLiBUaGlzIGlzIGEgY2xlYXIgZnVuY3Rpb25hbCBjaGFuZ2UsIHNwZWNpZmljYWxseSBpbiBlcnJvciBoYW5kbGluZy5cblxuVGhlIGJ1ZywgYXMgSSB1bmRlcnN0YW5kIGl0LCBzdGVtcyBmcm9tIGhvdyBgYmlvX2ludGVncml0eV9tYXBfaXRlcmAgZmFpbHVyZXMgd2VyZSBwcmV2aW91c2x5IGhhbmRsZWQuIFRoZSBvbGQgY29kZSB3b3VsZCBqdXN0IGBnb3RvIGZhaWw7YCwgYnV0IHRoYXQgbWlnaHQgbm90IHByb3Blcmx5IGNsZWFuIHVwIHRoZSBgYmlvYCwgcG90ZW50aWFsbHkgbGVha2luZyByZXNvdXJjZXMgb3Igc2ltcGx5IG5vdCBzZXR0aW5nIGBiaW8tXHUwMDNlYmlfc3RhdHVzYCBjb3JyZWN0bHkgYmVmb3JlIGNvbXBsZXRpbmcgaXQuIFRoZSBvcmlnaW5hbCBjb2RlIHNuaXBwZXQgd2FzOlxuXG5gYGBjXG5cdFx0XHRyZXQgPSBiaW9faW50ZWdyaXR5X21hcF9pdGVyKGJpbywgaW9jYi1cdTAwM2Vwcml2YXRlKTtcblx0XHRcdGlmICh1bmxpa2VseShyZXQpKVxuXHRcdFx0XHRnb3RvIGZhaWw7XG5gYGBcblxuQW5kIHRoZSBgZmFpbDpgIHBhdGggd2FzOlxuXG5gYGBjXG5mYWlsOlxuXHRpZiAoZGlvLVx1MDAzZWZsYWdzIFx1MDAyNiBESU9fU0hPVUxEX0RJUlRZKSB7XG5cdFx0YmlvX2NoZWNrX3BhZ2VzX2RpcnR5KGJpbyk7XG5cdH1cblx0ZGlvLVx1MDAzZXNpemUgKz0gYmlvLVx1MDAzZWJpX2l0ZXIuYmlfc2l6ZTtcblx0YmxrX2ZpbmlzaF9wbHVnKFx1MDAyNnBsdWcpO1xuXHRiaW9fcHV0KGJpbyk7XG5cdHJldHVybiByZXQ7XG5gYGBcblxuVGhlIG5ldyBjb2RlIHJlcGxhY2VzIHRoaXMgd2l0aDpcblxuYGBgY1xuXHRcdFx0aWYgKHVubGlrZWx5KHJldCkpIHtcblx0XHRcdFx0YmlvLVx1MDAzZWJpX3N0YXR1cyA9IGVycm5vX3RvX2Jsa19zdGF0dXMocmV0KTtcblx0XHRcdFx0YmlvX2VuZGlvKGJpbyk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuYGBgXG5cblRoaXMgaXMgZGVmaW5pdGVseSBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGVycm9yIGhhbmRsaW5nLiBJdCdzIGEgcHJpbWUgY2FuZGlkYXRlIGZvciBmdXp6aW5nLCBhbmQgSSBuZWVkIHRvIG1ha2UgYSBub3RlIG9mIHRoaXMuIFRoZSBrZXkgZm9jdXMgc3ltYm9scyBmb3IgdGhpcyBmdXp6aW5nIGFyZSBgX19ibGtkZXZfZGlyZWN0X0lPYCwgYW5kIG9mIGNvdXJzZSwgdGhlIGBCTEtfREVWX0lOVEVHUklUWWAgYW5kIGBJT19VUklOR2AgY29uZmlndXJhdGlvbnMuXG5cbkxldCdzIHF1aWNrbHkgY2hlY2sgaWYgYF9fYmxrZGV2X2RpcmVjdF9JT2AgaXMgYSBob3QgcGF0aC4gRGlyZWN0IEkvTyBpcyByZWFzb25hYmx5IGNvbW1vbiwgYnV0IHRoaXMgaXMgYmxvY2sgZGV2aWNlIHNwZWNpZmljIHdoaWNoIG5hcnJvd3MgdGhlIHNjb3BlIHdoaWNoIGlzIGdvb2QuIEhvbGQgb24sIGBfX2Jsa2Rldl9kaXJlY3RfSU9gIGlzIHN0YXRpYy4gSSBtdXN0IGhhdmUgbWlzc2VkIHNvbWV0aGluZy4gYGJsa2Rldl9kaXJlY3RfSU9gIGNhbGxzIGBfX2Jsa2Rldl9kaXJlY3RfSU9gLiBBbHJpZ2h0LCBJJ2xsIHN0aWxsIGp1c3QgdXNlIGBfX2Jsa2Rldl9kaXJlY3RfSU9gIGFzIHRoZSBmb2N1cy5cblxuVGltZSB0byBjYWxsIHNldC1yZXN1bHRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3NDg2LCJPdXRwdXRUb2tlbnMiOjg4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDYzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDE1OjU5OjM2LjA0NTY0Mzk2MloiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg0MDQ4ODE4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCTEtfREVWX0lOVEVHUklUWVwiLFxuICAgIFwiSU9fVVJJTkdcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJfX2Jsa2Rldl9kaXJlY3RfSU9cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBlcnJvciBoYW5kbGluZyBpbiBibG9jayBkZXZpY2UgZGlyZWN0IEkvTyB3aGVuIGJpb19pbnRlZ3JpdHlfbWFwX2l0ZXIgZmFpbHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIGJsb2NrIGxheWVyIGxvZ2ljLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJMS19ERVZfSU5URUdSSVRZXCIsXG4gICAgXCJJT19VUklOR1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIl9fYmxrZGV2X2RpcmVjdF9JT1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGVycm9yIGhhbmRsaW5nIGluIGJsb2NrIGRldmljZSBkaXJlY3QgSS9PIHdoZW4gYmlvX2ludGVncml0eV9tYXBfaXRlciBmYWlscy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgYmxvY2sgbGF5ZXIgbG9naWMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowqmcng[1] Phase: Succeeded StartedAt: 2026-06-26 16:00:18 +0000 UTC FinishedAt: 2026-06-26 16:00:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqmcng[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-06-26 16:00:18 +0000 UTC FinishedAt: 2026-06-26 16:00:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqmcng[2] Phase: Succeeded StartedAt: 2026-06-26 16:00:18 +0000 UTC FinishedAt: 2026-06-26 20:41:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqmcng[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"92010229c4b38897f1319d260162d2f96925ed17","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_INTEGRITY","IO_URING"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["__blkdev_direct_IO"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"92010229c4b38897f1319d260162d2f96925ed17","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_INTEGRITY","IO_URING"],"series_id":"4d7d15fe-d4ad-4aa2-bdf2-096f44e76a95","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-06-26 16:00:18 +0000 UTC FinishedAt: 2026-06-26 20:41:36 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"92010229c4b38897f1319d260162d2f96925ed17","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_INTEGRITY","IO_URING"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["__blkdev_direct_IO"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"92010229c4b38897f1319d260162d2f96925ed17","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_INTEGRITY","IO_URING"],"series_id":"4d7d15fe-d4ad-4aa2-bdf2-096f44e76a95","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowqmcng[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"92010229c4b38897f1319d260162d2f96925ed17","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_INTEGRITY","IO_URING"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["__blkdev_direct_IO"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"92010229c4b38897f1319d260162d2f96925ed17","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_INTEGRITY","IO_URING"],"series_id":"4d7d15fe-d4ad-4aa2-bdf2-096f44e76a95","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-06-26 16:00:18 +0000 UTC FinishedAt: 2026-06-26 16:00:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqmcng[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"92010229c4b38897f1319d260162d2f96925ed17","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_INTEGRITY","IO_URING"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["__blkdev_direct_IO"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"92010229c4b38897f1319d260162d2f96925ed17","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_INTEGRITY","IO_URING"],"series_id":"4d7d15fe-d4ad-4aa2-bdf2-096f44e76a95","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-06-26 16:00:18 +0000 UTC FinishedAt: 2026-06-26 16:00:49 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"92010229c4b38897f1319d260162d2f96925ed17","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_INTEGRITY","IO_URING"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},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-workflowqmcng/series-workflowqmcng-convert-artifact-2094716246/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqmcng[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"92010229c4b38897f1319d260162d2f96925ed17","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_INTEGRITY","IO_URING"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["__blkdev_direct_IO"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"92010229c4b38897f1319d260162d2f96925ed17","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_INTEGRITY","IO_URING"],"series_id":"4d7d15fe-d4ad-4aa2-bdf2-096f44e76a95","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-06-26 16:00:53 +0000 UTC FinishedAt: 2026-06-26 16:59:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqmcng[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"92010229c4b38897f1319d260162d2f96925ed17","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_INTEGRITY","IO_URING"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["__blkdev_direct_IO"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"92010229c4b38897f1319d260162d2f96925ed17","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_INTEGRITY","IO_URING"],"series_id":"4d7d15fe-d4ad-4aa2-bdf2-096f44e76a95","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-06-26 16:00:53 +0000 UTC FinishedAt: 2026-06-26 16:59:30 +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:*b48fd2ad-e52f-414b-9f96-1592bd1ac319,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-workflowqmcng/series-workflowqmcng-convert-artifact-2094716246/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": "e8b3e9a5-ee60-4dd7-87af-41ed5fa72ed0", "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-workflowqmcng/series-workflowqmcng-build-action-972714378/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqmcng[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"92010229c4b38897f1319d260162d2f96925ed17","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_INTEGRITY","IO_URING"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["__blkdev_direct_IO"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"92010229c4b38897f1319d260162d2f96925ed17","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_INTEGRITY","IO_URING"],"series_id":"4d7d15fe-d4ad-4aa2-bdf2-096f44e76a95","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build(0) Phase: Failed StartedAt: 2026-06-26 16:00:53 +0000 UTC FinishedAt: 2026-06-26 16:05:08 +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:*b48fd2ad-e52f-414b-9f96-1592bd1ac319,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-workflowqmcng/series-workflowqmcng-convert-artifact-2094716246/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowqmcng[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"92010229c4b38897f1319d260162d2f96925ed17","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_INTEGRITY","IO_URING"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["__blkdev_direct_IO"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"92010229c4b38897f1319d260162d2f96925ed17","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_INTEGRITY","IO_URING"],"series_id":"4d7d15fe-d4ad-4aa2-bdf2-096f44e76a95","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build(1) Phase: Failed StartedAt: 2026-06-26 16:11:19 +0000 UTC FinishedAt: 2026-06-26 16:19:22 +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:*b48fd2ad-e52f-414b-9f96-1592bd1ac319,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-workflowqmcng/series-workflowqmcng-convert-artifact-2094716246/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowqmcng[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"92010229c4b38897f1319d260162d2f96925ed17","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_INTEGRITY","IO_URING"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["__blkdev_direct_IO"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"92010229c4b38897f1319d260162d2f96925ed17","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_INTEGRITY","IO_URING"],"series_id":"4d7d15fe-d4ad-4aa2-bdf2-096f44e76a95","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build(2) Phase: Succeeded StartedAt: 2026-06-26 16:25:10 +0000 UTC FinishedAt: 2026-06-26 16:59:20 +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:*b48fd2ad-e52f-414b-9f96-1592bd1ac319,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-workflowqmcng/series-workflowqmcng-convert-artifact-2094716246/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": "e8b3e9a5-ee60-4dd7-87af-41ed5fa72ed0", "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-workflowqmcng/series-workflowqmcng-build-action-972714378/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqmcng[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"92010229c4b38897f1319d260162d2f96925ed17","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_INTEGRITY","IO_URING"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["__blkdev_direct_IO"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"92010229c4b38897f1319d260162d2f96925ed17","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_INTEGRITY","IO_URING"],"series_id":"4d7d15fe-d4ad-4aa2-bdf2-096f44e76a95","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-06-26 16:59:30 +0000 UTC FinishedAt: 2026-06-26 16:59:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqmcng[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"92010229c4b38897f1319d260162d2f96925ed17","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_INTEGRITY","IO_URING"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["__blkdev_direct_IO"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"92010229c4b38897f1319d260162d2f96925ed17","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_INTEGRITY","IO_URING"],"series_id":"4d7d15fe-d4ad-4aa2-bdf2-096f44e76a95","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-06-26 16:59:30 +0000 UTC FinishedAt: 2026-06-26 16:59:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqmcng[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"92010229c4b38897f1319d260162d2f96925ed17","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_INTEGRITY","IO_URING"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["__blkdev_direct_IO"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"92010229c4b38897f1319d260162d2f96925ed17","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_INTEGRITY","IO_URING"],"series_id":"4d7d15fe-d4ad-4aa2-bdf2-096f44e76a95","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-06-26 16:59:30 +0000 UTC FinishedAt: 2026-06-26 16:59:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqmcng[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"92010229c4b38897f1319d260162d2f96925ed17","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_INTEGRITY","IO_URING"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["__blkdev_direct_IO"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"92010229c4b38897f1319d260162d2f96925ed17","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_INTEGRITY","IO_URING"],"series_id":"4d7d15fe-d4ad-4aa2-bdf2-096f44e76a95","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-06-26 16:59:30 +0000 UTC FinishedAt: 2026-06-26 16:59:36 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"92010229c4b38897f1319d260162d2f96925ed17","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_INTEGRITY","IO_URING"],"series_id":"4d7d15fe-d4ad-4aa2-bdf2-096f44e76a95","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},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-workflowqmcng/series-workflowqmcng-convert-artifact-38310889/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqmcng[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"92010229c4b38897f1319d260162d2f96925ed17","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_INTEGRITY","IO_URING"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["__blkdev_direct_IO"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"92010229c4b38897f1319d260162d2f96925ed17","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_INTEGRITY","IO_URING"],"series_id":"4d7d15fe-d4ad-4aa2-bdf2-096f44e76a95","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-06-26 16:59:40 +0000 UTC FinishedAt: 2026-06-26 17:01:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqmcng[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"92010229c4b38897f1319d260162d2f96925ed17","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_INTEGRITY","IO_URING"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["__blkdev_direct_IO"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"92010229c4b38897f1319d260162d2f96925ed17","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_INTEGRITY","IO_URING"],"series_id":"4d7d15fe-d4ad-4aa2-bdf2-096f44e76a95","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-06-26 16:59:40 +0000 UTC FinishedAt: 2026-06-26 17:01:42 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*e8b3e9a5-ee60-4dd7-87af-41ed5fa72ed0,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-workflowqmcng/series-workflowqmcng-build-action-972714378/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-workflowqmcng[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"92010229c4b38897f1319d260162d2f96925ed17","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_INTEGRITY","IO_URING"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["__blkdev_direct_IO"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"92010229c4b38897f1319d260162d2f96925ed17","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_INTEGRITY","IO_URING"],"series_id":"4d7d15fe-d4ad-4aa2-bdf2-096f44e76a95","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-06-26 17:01:52 +0000 UTC FinishedAt: 2026-06-26 17:01:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqmcng[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"92010229c4b38897f1319d260162d2f96925ed17","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_INTEGRITY","IO_URING"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["__blkdev_direct_IO"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"92010229c4b38897f1319d260162d2f96925ed17","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_INTEGRITY","IO_URING"],"series_id":"4d7d15fe-d4ad-4aa2-bdf2-096f44e76a95","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-06-26 17:01:52 +0000 UTC FinishedAt: 2026-06-26 17:01:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqmcng[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"92010229c4b38897f1319d260162d2f96925ed17","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_INTEGRITY","IO_URING"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["__blkdev_direct_IO"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"92010229c4b38897f1319d260162d2f96925ed17","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_INTEGRITY","IO_URING"],"series_id":"4d7d15fe-d4ad-4aa2-bdf2-096f44e76a95","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-06-26 17:01:52 +0000 UTC FinishedAt: 2026-06-26 17:36:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqmcng[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"92010229c4b38897f1319d260162d2f96925ed17","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_INTEGRITY","IO_URING"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["__blkdev_direct_IO"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"92010229c4b38897f1319d260162d2f96925ed17","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_INTEGRITY","IO_URING"],"series_id":"4d7d15fe-d4ad-4aa2-bdf2-096f44e76a95","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-06-26 17:01:52 +0000 UTC FinishedAt: 2026-06-26 17:36:04 +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:*b48fd2ad-e52f-414b-9f96-1592bd1ac319,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-workflowqmcng/series-workflowqmcng-convert-artifact-38310889/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": "a17f6e9d-3437-4341-91a1-ca9b009c8609", "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-workflowqmcng/series-workflowqmcng-build-action-234673093/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqmcng[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"92010229c4b38897f1319d260162d2f96925ed17","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_INTEGRITY","IO_URING"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["__blkdev_direct_IO"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"92010229c4b38897f1319d260162d2f96925ed17","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_INTEGRITY","IO_URING"],"series_id":"4d7d15fe-d4ad-4aa2-bdf2-096f44e76a95","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-06-26 17:01:52 +0000 UTC FinishedAt: 2026-06-26 17:35:54 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*b48fd2ad-e52f-414b-9f96-1592bd1ac319,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-workflowqmcng/series-workflowqmcng-convert-artifact-38310889/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": "a17f6e9d-3437-4341-91a1-ca9b009c8609", "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-workflowqmcng/series-workflowqmcng-build-action-234673093/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqmcng[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"92010229c4b38897f1319d260162d2f96925ed17","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_INTEGRITY","IO_URING"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["__blkdev_direct_IO"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"92010229c4b38897f1319d260162d2f96925ed17","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_INTEGRITY","IO_URING"],"series_id":"4d7d15fe-d4ad-4aa2-bdf2-096f44e76a95","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-06-26 17:36:04 +0000 UTC FinishedAt: 2026-06-26 17:36:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqmcng[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"92010229c4b38897f1319d260162d2f96925ed17","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_INTEGRITY","IO_URING"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["__blkdev_direct_IO"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"92010229c4b38897f1319d260162d2f96925ed17","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_INTEGRITY","IO_URING"],"series_id":"4d7d15fe-d4ad-4aa2-bdf2-096f44e76a95","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-06-26 17:36:04 +0000 UTC FinishedAt: 2026-06-26 17:36:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqmcng[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"92010229c4b38897f1319d260162d2f96925ed17","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_INTEGRITY","IO_URING"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["__blkdev_direct_IO"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"92010229c4b38897f1319d260162d2f96925ed17","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_INTEGRITY","IO_URING"],"series_id":"4d7d15fe-d4ad-4aa2-bdf2-096f44e76a95","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-06-26 17:36:04 +0000 UTC FinishedAt: 2026-06-26 17:38:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqmcng[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"92010229c4b38897f1319d260162d2f96925ed17","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_INTEGRITY","IO_URING"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["__blkdev_direct_IO"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"92010229c4b38897f1319d260162d2f96925ed17","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_INTEGRITY","IO_URING"],"series_id":"4d7d15fe-d4ad-4aa2-bdf2-096f44e76a95","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-06-26 17:36:04 +0000 UTC FinishedAt: 2026-06-26 17:37:55 +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:*a17f6e9d-3437-4341-91a1-ca9b009c8609,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-workflowqmcng/series-workflowqmcng-build-action-234673093/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-workflowqmcng[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"92010229c4b38897f1319d260162d2f96925ed17","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_INTEGRITY","IO_URING"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["__blkdev_direct_IO"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"92010229c4b38897f1319d260162d2f96925ed17","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_INTEGRITY","IO_URING"],"series_id":"4d7d15fe-d4ad-4aa2-bdf2-096f44e76a95","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-06-26 17:38:05 +0000 UTC FinishedAt: 2026-06-26 20:41:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqmcng[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"92010229c4b38897f1319d260162d2f96925ed17","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_INTEGRITY","IO_URING"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["__blkdev_direct_IO"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"92010229c4b38897f1319d260162d2f96925ed17","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_INTEGRITY","IO_URING"],"series_id":"4d7d15fe-d4ad-4aa2-bdf2-096f44e76a95","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-06-26 17:38:05 +0000 UTC FinishedAt: 2026-06-26 20:41:36 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["__blkdev_direct_IO"],"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:*e8b3e9a5-ee60-4dd7-87af-41ed5fa72ed0,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*a17f6e9d-3437-4341-91a1-ca9b009c8609,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-workflowqmcng/series-workflowqmcng-build-action-972714378/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-workflowqmcng/series-workflowqmcng-build-action-234673093/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowqmcng[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"92010229c4b38897f1319d260162d2f96925ed17","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_INTEGRITY","IO_URING"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["__blkdev_direct_IO"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"92010229c4b38897f1319d260162d2f96925ed17","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_INTEGRITY","IO_URING"],"series_id":"4d7d15fe-d4ad-4aa2-bdf2-096f44e76a95","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-06-26 17:38:05 +0000 UTC FinishedAt: 2026-06-26 17:40:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqmcng[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"92010229c4b38897f1319d260162d2f96925ed17","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_INTEGRITY","IO_URING"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["__blkdev_direct_IO"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"92010229c4b38897f1319d260162d2f96925ed17","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_INTEGRITY","IO_URING"],"series_id":"4d7d15fe-d4ad-4aa2-bdf2-096f44e76a95","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-06-26 17:38:05 +0000 UTC FinishedAt: 2026-06-26 17:39:09 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["__blkdev_direct_IO"],"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-workflowqmcng/series-workflowqmcng-convert-artifact-3831506238/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqmcng[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"92010229c4b38897f1319d260162d2f96925ed17","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_INTEGRITY","IO_URING"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["__blkdev_direct_IO"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"92010229c4b38897f1319d260162d2f96925ed17","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_INTEGRITY","IO_URING"],"series_id":"4d7d15fe-d4ad-4aa2-bdf2-096f44e76a95","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-06-26 17:38:05 +0000 UTC FinishedAt: 2026-06-26 17:38:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqmcng[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"92010229c4b38897f1319d260162d2f96925ed17","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_INTEGRITY","IO_URING"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["__blkdev_direct_IO"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"92010229c4b38897f1319d260162d2f96925ed17","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_INTEGRITY","IO_URING"],"series_id":"4d7d15fe-d4ad-4aa2-bdf2-096f44e76a95","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-06-26 17:38:05 +0000 UTC FinishedAt: 2026-06-26 17:38:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqmcng[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"92010229c4b38897f1319d260162d2f96925ed17","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_INTEGRITY","IO_URING"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["__blkdev_direct_IO"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"92010229c4b38897f1319d260162d2f96925ed17","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_INTEGRITY","IO_URING"],"series_id":"4d7d15fe-d4ad-4aa2-bdf2-096f44e76a95","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-06-26 17:38:05 +0000 UTC FinishedAt: 2026-06-26 17:38:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqmcng[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"92010229c4b38897f1319d260162d2f96925ed17","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_INTEGRITY","IO_URING"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["__blkdev_direct_IO"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"92010229c4b38897f1319d260162d2f96925ed17","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_INTEGRITY","IO_URING"],"series_id":"4d7d15fe-d4ad-4aa2-bdf2-096f44e76a95","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-06-26 17:40:08 +0000 UTC FinishedAt: 2026-06-26 20:41:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqmcng[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"92010229c4b38897f1319d260162d2f96925ed17","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_INTEGRITY","IO_URING"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["__blkdev_direct_IO"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"92010229c4b38897f1319d260162d2f96925ed17","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_INTEGRITY","IO_URING"],"series_id":"4d7d15fe-d4ad-4aa2-bdf2-096f44e76a95","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-06-26 17:40:08 +0000 UTC FinishedAt: 2026-06-26 20:41:23 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*e8b3e9a5-ee60-4dd7-87af-41ed5fa72ed0,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*a17f6e9d-3437-4341-91a1-ca9b009c8609,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-workflowqmcng/series-workflowqmcng-build-action-972714378/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-workflowqmcng/series-workflowqmcng-build-action-234673093/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-workflowqmcng/series-workflowqmcng-convert-artifact-3831506238/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,}