Name: series-workflow5q2ck Phase: Succeeded StartedAt: 2026-07-08 05:03:10 +0000 UTC FinishedAt: 2026-07-08 10:02:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5q2ck[0] Phase: Succeeded StartedAt: 2026-07-08 05:03:10 +0000 UTC FinishedAt: 2026-07-08 05:24:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5q2ck[0].run-triage Phase: Succeeded StartedAt: 2026-07-08 05:03:10 +0000 UTC FinishedAt: 2026-07-08 05:24:00 +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": "0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "HFSPLUS_FS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "HFSPLUS_FS" ], "series_id": "0f44a0db-ac7c-41e0-aad5-af36e5c93602" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "hfsplus_brec_read_cat", "hfsplus_find_cat", "hfsplus_delete_cat" ], "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+CgkJCTx0ZD4yMDI2LzA3LzA4IDA1OjIzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0hGU1BMVVNfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtoZnNwbHVzX2JyZWNfcmVhZF9jYXQmIzM0OywKICAgICYjMzQ7aGZzcGx1c19maW5kX2NhdCYjMzQ7LAogICAgJiMzNDtoZnNwbHVzX2RlbGV0ZV9jYXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBib3VuZHMgY2hlY2tpbmcgYW5kIHR5cGUgdmFsaWRhdGlvbiBmb3IgSEZTJiM0MzsgY2F0YWxvZyB0aHJlYWQgcmVjb3JkcywgZml4aW5nIHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIHJlYWRzIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBidWdzLiBUaGlzIG1vZGlmaWVzIGNvcmUgZmlsZXN5c3RlbSBsb2dpYyB0aGF0IGlzIHJlYWNoYWJsZSBmcm9tIHVzZXIgc3BhY2UgdmlhIGZpbGVzeXN0ZW0gb3BlcmF0aW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAwNToyMzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGMyZmM3YzY0MmQ5MzU4NmEyNzU5ZDY5NDgyYjBiNzY3ZGUxN2JiYmNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEp1bCA4IDA1OjIzOjI5IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2ZzL2hmc3BsdXMvYmZpbmQuYyBiL2ZzL2hmc3BsdXMvYmZpbmQuY1xuaW5kZXggOWE1NWZhNmQ1Mjk0MjkuLjQxN2MzMDE0ZjRjN2QwIDEwMDY0NFxuLS0tIGEvZnMvaGZzcGx1cy9iZmluZC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9mcy9oZnNwbHVzL2JmaW5kLmNcbkBAIC0zMjIsNiAmIzQzOzMyMiwxMSBAQCBpbnQgaGZzcGx1c19icmVjX3JlYWRfY2F0KHN0cnVjdCBoZnNfZmluZF9kYXRhICpmZCwgaGZzcGx1c19jYXRfZW50cnkgKmVudHJ5KVxuIFx0XHRcdHByX2VycihcJiMzNDt0aHJlYWQgcmVjb3JkIHRvbyBzaG9ydCAoZ290ICV1KVxcblwmIzM0OywgZmQtXHUwMDNlZW50cnlsZW5ndGgpO1xuIFx0XHRcdHJldHVybiAtRUlPO1xuIFx0XHR9XG4mIzQzO1x0XHRpZiAoYmUxNl90b19jcHUoZW50cnktXHUwMDNldGhyZWFkLm5vZGVOYW1lLmxlbmd0aCkgXHUwMDNlXG4mIzQzO1x0XHQgICAgSEZTUExVU19NQVhfU1RSTEVOKSB7XG4mIzQzO1x0XHRcdHByX2VycihcJiMzNDtjYXRhbG9nIG5hbWUgbGVuZ3RoIGNvcnJ1cHRlZFxcblwmIzM0Oyk7XG4mIzQzO1x0XHRcdHJldHVybiAtRUlPO1xuJiM0MztcdFx0fVxuIFx0XHRleHBlY3RlZF9zaXplID0gaGZzcGx1c19jYXRfdGhyZWFkX3NpemUoXHUwMDI2ZW50cnktXHUwMDNldGhyZWFkKTtcbiBcdFx0YnJlYWs7XG4gXHRkZWZhdWx0OlxuZGlmZiAtLWdpdCBhL2ZzL2hmc3BsdXMvY2F0YWxvZy5jIGIvZnMvaGZzcGx1cy9jYXRhbG9nLmNcbmluZGV4IDc3NmNlMzZjZjA3NmI0Li4xYTRiMGJlYWUxMzUwNiAxMDA2NDRcbi0tLSBhL2ZzL2hmc3BsdXMvY2F0YWxvZy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9mcy9oZnNwbHVzL2NhdGFsb2cuY1xuQEAgLTIwNCwxNiAmIzQzOzIwNCwxMSBAQCBpbnQgaGZzcGx1c19maW5kX2NhdChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCB1MzIgY25pZCxcbiBcdFx0cmV0dXJuIGVycjtcbiBcbiBcdHR5cGUgPSBiZTE2X3RvX2NwdSh0bXAudHlwZSk7XG4tXHRpZiAodHlwZSAhPSBIRlNQTFVTX0ZPTERFUl9USFJFQUQgXHUwMDI2XHUwMDI2IHR5cGUgIT0gSEZTUExVU19GSUxFX1RIUkVBRCkge1xuJiM0MztcdGlmICghaXNfaGZzX3RocmVhZF9yZWNvcmRfdHlwZSh0eXBlKSkge1xuIFx0XHRwcl9lcnIoXCYjMzQ7Zm91bmQgYmFkIHRocmVhZCByZWNvcmQgaW4gY2F0YWxvZ1xcblwmIzM0Oyk7XG4gXHRcdHJldHVybiAtRUlPO1xuIFx0fVxuIFxuLVx0aWYgKGJlMTZfdG9fY3B1KHRtcC50aHJlYWQubm9kZU5hbWUubGVuZ3RoKSBcdTAwM2UgMjU1KSB7XG4tXHRcdHByX2VycihcJiMzNDtjYXRhbG9nIG5hbWUgbGVuZ3RoIGNvcnJ1cHRlZFxcblwmIzM0Oyk7XG4tXHRcdHJldHVybiAtRUlPO1xuLVx0fVxuLVxuIFx0aGZzcGx1c19jYXRfYnVpbGRfa2V5X3VuaShmZC1cdTAwM2VzZWFyY2hfa2V5LFxuIFx0XHRiZTMyX3RvX2NwdSh0bXAudGhyZWFkLnBhcmVudElEKSxcbiBcdFx0XHUwMDI2dG1wLnRocmVhZC5ub2RlTmFtZSk7XG5AQCAtMzUwLDIzICYjNDM7MzQ1LDIyIEBAIGludCBoZnNwbHVzX2RlbGV0ZV9jYXQodTMyIGNuaWQsIHN0cnVjdCBpbm9kZSAqZGlyLCBjb25zdCBzdHJ1Y3QgcXN0ciAqc3RyKVxuIFx0XHRnb3RvIG91dDtcbiBcbiBcdGlmICghc3RyKSB7XG4tXHRcdGludCBsZW47XG4mIzQzO1x0XHRoZnNwbHVzX2NhdF9lbnRyeSBlbnRyeSA9IHswfTtcbiBcbiBcdFx0aGZzcGx1c19jYXRfYnVpbGRfa2V5X3dpdGhfY25pZChzYiwgZmQuc2VhcmNoX2tleSwgY25pZCk7XG4tXHRcdGVyciA9IGhmc19icmVjX2ZpbmQoXHUwMDI2ZmQsIGhmc19maW5kX3JlY19ieV9rZXkpO1xuJiM0MztcdFx0ZXJyID0gaGZzcGx1c19icmVjX3JlYWRfY2F0KFx1MDAyNmZkLCBcdTAwMjZlbnRyeSk7XG4gXHRcdGlmIChlcnIpXG4gXHRcdFx0Z290byBvdXQ7XG4gXG4tXHRcdG9mZiA9IGZkLmVudHJ5b2Zmc2V0ICYjNDM7XG4tXHRcdFx0b2Zmc2V0b2Yoc3RydWN0IGhmc3BsdXNfY2F0X3RocmVhZCwgbm9kZU5hbWUpO1xuLVx0XHRmZC5zZWFyY2hfa2V5LVx1MDAzZWNhdC5wYXJlbnQgPSBjcHVfdG9fYmUzMihkaXItXHUwMDNlaV9pbm8pO1xuLVx0XHRoZnNfYm5vZGVfcmVhZChmZC5ibm9kZSxcbi1cdFx0XHRcdTAwMjZmZC5zZWFyY2hfa2V5LVx1MDAzZWNhdC5uYW1lLmxlbmd0aCwgb2ZmLCAyKTtcbi1cdFx0bGVuID0gYmUxNl90b19jcHUoZmQuc2VhcmNoX2tleS1cdTAwM2VjYXQubmFtZS5sZW5ndGgpICogMjtcbi1cdFx0aGZzX2Jub2RlX3JlYWQoZmQuYm5vZGUsXG4tXHRcdFx0XHUwMDI2ZmQuc2VhcmNoX2tleS1cdTAwM2VjYXQubmFtZS51bmljb2RlLFxuLVx0XHRcdG9mZiAmIzQzOyAyLCBsZW4pO1xuLVx0XHRmZC5zZWFyY2hfa2V5LVx1MDAzZWtleV9sZW4gPSBjcHVfdG9fYmUxNig2ICYjNDM7IGxlbik7XG4mIzQzO1x0XHR0eXBlID0gYmUxNl90b19jcHUoZW50cnkudHlwZSk7XG4mIzQzO1x0XHRpZiAoIWlzX2hmc190aHJlYWRfcmVjb3JkX3R5cGUodHlwZSkpIHtcbiYjNDM7XHRcdFx0cHJfZXJyKFwmIzM0O2ZvdW5kIGJhZCB0aHJlYWQgcmVjb3JkIGluIGNhdGFsb2dcXG5cJiMzNDspO1xuJiM0MztcdFx0XHRlcnIgPSAtRUlPO1xuJiM0MztcdFx0XHRnb3RvIG91dDtcbiYjNDM7XHRcdH1cbiYjNDM7XG4mIzQzO1x0XHRoZnNwbHVzX2NhdF9idWlsZF9rZXlfdW5pKGZkLnNlYXJjaF9rZXksIGRpci1cdTAwM2VpX2lubyxcbiYjNDM7XHRcdFx0XHRcdCAgXHUwMDI2ZW50cnkudGhyZWFkLm5vZGVOYW1lKTtcbiBcdH0gZWxzZSB7XG4gXHRcdGVyciA9IGhmc3BsdXNfY2F0X2J1aWxkX2tleShzYiwgZmQuc2VhcmNoX2tleSwgZGlyLVx1MDAzZWlfaW5vLCBzdHIpO1xuIFx0XHRpZiAodW5saWtlbHkoZXJyKSlcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2hmc19jb21tb24uaCBiL2luY2x1ZGUvbGludXgvaGZzX2NvbW1vbi5oXG5pbmRleCA0NWZiNGM5ZmY5ZjVlZS4uYzQ4NjIxNjZlZmM5OTQgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L2hmc19jb21tb24uaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9oZnNfY29tbW9uLmhcbkBAIC05Miw2ICYjNDM7OTIsMTEgQEBcbiAjZGVmaW5lIEhGU19DRFJfVEhEXHRcdDB4MDNcdC8qIGZvbGRlciAoZGlyZWN0b3J5KSB0aHJlYWQgKi9cbiAjZGVmaW5lIEhGU19DRFJfRlRIXHRcdDB4MDRcdC8qIGZpbGUgdGhyZWFkICovXG4gXG4mIzQzO3N0YXRpYyBpbmxpbmUgYm9vbCBpc19oZnNfdGhyZWFkX3JlY29yZF90eXBlKHUxNiB0eXBlKVxuJiM0Mzt7XG4mIzQzO1x0cmV0dXJuIHR5cGUgPT0gSEZTX0NEUl9USEQgfHwgdHlwZSA9PSBIRlNfQ0RSX0ZUSDtcbiYjNDM7fVxuJiM0MztcbiAvKiBsZWdhbCB2YWx1ZXMgZm9yIGhmc19leHRfa2V5LkZrVHlwZSBhbmQgaGZzX2ZpbGUuZm9yayAqL1xuICNkZWZpbmUgSEZTX0ZLX0RBVEFcdFx0MHgwMFxuICNkZWZpbmUgSEZTX0ZLX1JTUkNcdFx0MHhGRlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDA1OjIzPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0hGU1BMVVNfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtoZnNwbHVzX2JyZWNfcmVhZF9jYXQmIzM0OywKICAgICYjMzQ7aGZzcGx1c19maW5kX2NhdCYjMzQ7LAogICAgJiMzNDtoZnNwbHVzX2RlbGV0ZV9jYXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBib3VuZHMgY2hlY2tpbmcgYW5kIHR5cGUgdmFsaWRhdGlvbiBmb3IgSEZTJiM0MzsgY2F0YWxvZyB0aHJlYWQgcmVjb3JkcywgZml4aW5nIHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIHJlYWRzIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBidWdzLiBUaGlzIG1vZGlmaWVzIGNvcmUgZmlsZXN5c3RlbSBsb2dpYyB0aGF0IGlzIHJlYWNoYWJsZSBmcm9tIHVzZXIgc3BhY2UgdmlhIGZpbGVzeXN0ZW0gb3BlcmF0aW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYzJmYzdjNjQyZDkzNTg2YTI3NTlkNjk0ODJiMGI3NjdkZTE3YmJiYwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgSnVsIDggMDU6MjM6MjkgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9mcy9oZnNwbHVzL2JmaW5kLmMgYi9mcy9oZnNwbHVzL2JmaW5kLmMKaW5kZXggOWE1NWZhNmQ1Mjk0MjkuLjQxN2MzMDE0ZjRjN2QwIDEwMDY0NAotLS0gYS9mcy9oZnNwbHVzL2JmaW5kLmMKJiM0MzsmIzQzOyYjNDM7IGIvZnMvaGZzcGx1cy9iZmluZC5jCkBAIC0zMjIsNiAmIzQzOzMyMiwxMSBAQCBpbnQgaGZzcGx1c19icmVjX3JlYWRfY2F0KHN0cnVjdCBoZnNfZmluZF9kYXRhICpmZCwgaGZzcGx1c19jYXRfZW50cnkgKmVudHJ5KQogCQkJcHJfZXJyKCYjMzQ7dGhyZWFkIHJlY29yZCB0b28gc2hvcnQgKGdvdCAldSlcbiYjMzQ7LCBmZC0mZ3Q7ZW50cnlsZW5ndGgpOwogCQkJcmV0dXJuIC1FSU87CiAJCX0KJiM0MzsJCWlmIChiZTE2X3RvX2NwdShlbnRyeS0mZ3Q7dGhyZWFkLm5vZGVOYW1lLmxlbmd0aCkgJmd0OwomIzQzOwkJICAgIEhGU1BMVVNfTUFYX1NUUkxFTikgewomIzQzOwkJCXByX2VycigmIzM0O2NhdGFsb2cgbmFtZSBsZW5ndGggY29ycnVwdGVkXG4mIzM0Oyk7CiYjNDM7CQkJcmV0dXJuIC1FSU87CiYjNDM7CQl9CiAJCWV4cGVjdGVkX3NpemUgPSBoZnNwbHVzX2NhdF90aHJlYWRfc2l6ZSgmYW1wO2VudHJ5LSZndDt0aHJlYWQpOwogCQlicmVhazsKIAlkZWZhdWx0OgpkaWZmIC0tZ2l0IGEvZnMvaGZzcGx1cy9jYXRhbG9nLmMgYi9mcy9oZnNwbHVzL2NhdGFsb2cuYwppbmRleCA3NzZjZTM2Y2YwNzZiNC4uMWE0YjBiZWFlMTM1MDYgMTAwNjQ0Ci0tLSBhL2ZzL2hmc3BsdXMvY2F0YWxvZy5jCiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2hmc3BsdXMvY2F0YWxvZy5jCkBAIC0yMDQsMTYgJiM0MzsyMDQsMTEgQEAgaW50IGhmc3BsdXNfZmluZF9jYXQoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgdTMyIGNuaWQsCiAJCXJldHVybiBlcnI7CiAKIAl0eXBlID0gYmUxNl90b19jcHUodG1wLnR5cGUpOwotCWlmICh0eXBlICE9IEhGU1BMVVNfRk9MREVSX1RIUkVBRCAmYW1wOyZhbXA7IHR5cGUgIT0gSEZTUExVU19GSUxFX1RIUkVBRCkgewomIzQzOwlpZiAoIWlzX2hmc190aHJlYWRfcmVjb3JkX3R5cGUodHlwZSkpIHsKIAkJcHJfZXJyKCYjMzQ7Zm91bmQgYmFkIHRocmVhZCByZWNvcmQgaW4gY2F0YWxvZ1xuJiMzNDspOwogCQlyZXR1cm4gLUVJTzsKIAl9CiAKLQlpZiAoYmUxNl90b19jcHUodG1wLnRocmVhZC5ub2RlTmFtZS5sZW5ndGgpICZndDsgMjU1KSB7Ci0JCXByX2VycigmIzM0O2NhdGFsb2cgbmFtZSBsZW5ndGggY29ycnVwdGVkXG4mIzM0Oyk7Ci0JCXJldHVybiAtRUlPOwotCX0KLQogCWhmc3BsdXNfY2F0X2J1aWxkX2tleV91bmkoZmQtJmd0O3NlYXJjaF9rZXksCiAJCWJlMzJfdG9fY3B1KHRtcC50aHJlYWQucGFyZW50SUQpLAogCQkmYW1wO3RtcC50aHJlYWQubm9kZU5hbWUpOwpAQCAtMzUwLDIzICYjNDM7MzQ1LDIyIEBAIGludCBoZnNwbHVzX2RlbGV0ZV9jYXQodTMyIGNuaWQsIHN0cnVjdCBpbm9kZSAqZGlyLCBjb25zdCBzdHJ1Y3QgcXN0ciAqc3RyKQogCQlnb3RvIG91dDsKIAogCWlmICghc3RyKSB7Ci0JCWludCBsZW47CiYjNDM7CQloZnNwbHVzX2NhdF9lbnRyeSBlbnRyeSA9IHswfTsKIAogCQloZnNwbHVzX2NhdF9idWlsZF9rZXlfd2l0aF9jbmlkKHNiLCBmZC5zZWFyY2hfa2V5LCBjbmlkKTsKLQkJZXJyID0gaGZzX2JyZWNfZmluZCgmYW1wO2ZkLCBoZnNfZmluZF9yZWNfYnlfa2V5KTsKJiM0MzsJCWVyciA9IGhmc3BsdXNfYnJlY19yZWFkX2NhdCgmYW1wO2ZkLCAmYW1wO2VudHJ5KTsKIAkJaWYgKGVycikKIAkJCWdvdG8gb3V0OwogCi0JCW9mZiA9IGZkLmVudHJ5b2Zmc2V0ICYjNDM7Ci0JCQlvZmZzZXRvZihzdHJ1Y3QgaGZzcGx1c19jYXRfdGhyZWFkLCBub2RlTmFtZSk7Ci0JCWZkLnNlYXJjaF9rZXktJmd0O2NhdC5wYXJlbnQgPSBjcHVfdG9fYmUzMihkaXItJmd0O2lfaW5vKTsKLQkJaGZzX2Jub2RlX3JlYWQoZmQuYm5vZGUsCi0JCQkmYW1wO2ZkLnNlYXJjaF9rZXktJmd0O2NhdC5uYW1lLmxlbmd0aCwgb2ZmLCAyKTsKLQkJbGVuID0gYmUxNl90b19jcHUoZmQuc2VhcmNoX2tleS0mZ3Q7Y2F0Lm5hbWUubGVuZ3RoKSAqIDI7Ci0JCWhmc19ibm9kZV9yZWFkKGZkLmJub2RlLAotCQkJJmFtcDtmZC5zZWFyY2hfa2V5LSZndDtjYXQubmFtZS51bmljb2RlLAotCQkJb2ZmICYjNDM7IDIsIGxlbik7Ci0JCWZkLnNlYXJjaF9rZXktJmd0O2tleV9sZW4gPSBjcHVfdG9fYmUxNig2ICYjNDM7IGxlbik7CiYjNDM7CQl0eXBlID0gYmUxNl90b19jcHUoZW50cnkudHlwZSk7CiYjNDM7CQlpZiAoIWlzX2hmc190aHJlYWRfcmVjb3JkX3R5cGUodHlwZSkpIHsKJiM0MzsJCQlwcl9lcnIoJiMzNDtmb3VuZCBiYWQgdGhyZWFkIHJlY29yZCBpbiBjYXRhbG9nXG4mIzM0Oyk7CiYjNDM7CQkJZXJyID0gLUVJTzsKJiM0MzsJCQlnb3RvIG91dDsKJiM0MzsJCX0KJiM0MzsKJiM0MzsJCWhmc3BsdXNfY2F0X2J1aWxkX2tleV91bmkoZmQuc2VhcmNoX2tleSwgZGlyLSZndDtpX2lubywKJiM0MzsJCQkJCSAgJmFtcDtlbnRyeS50aHJlYWQubm9kZU5hbWUpOwogCX0gZWxzZSB7CiAJCWVyciA9IGhmc3BsdXNfY2F0X2J1aWxkX2tleShzYiwgZmQuc2VhcmNoX2tleSwgZGlyLSZndDtpX2lubywgc3RyKTsKIAkJaWYgKHVubGlrZWx5KGVycikpCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2hmc19jb21tb24uaCBiL2luY2x1ZGUvbGludXgvaGZzX2NvbW1vbi5oCmluZGV4IDQ1ZmI0YzlmZjlmNWVlLi5jNDg2MjE2NmVmYzk5NCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9oZnNfY29tbW9uLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9oZnNfY29tbW9uLmgKQEAgLTkyLDYgJiM0Mzs5MiwxMSBAQAogI2RlZmluZSBIRlNfQ0RSX1RIRAkJMHgwMwkvKiBmb2xkZXIgKGRpcmVjdG9yeSkgdGhyZWFkICovCiAjZGVmaW5lIEhGU19DRFJfRlRICQkweDA0CS8qIGZpbGUgdGhyZWFkICovCiAKJiM0MztzdGF0aWMgaW5saW5lIGJvb2wgaXNfaGZzX3RocmVhZF9yZWNvcmRfdHlwZSh1MTYgdHlwZSkKJiM0Mzt7CiYjNDM7CXJldHVybiB0eXBlID09IEhGU19DRFJfVEhEIHx8IHR5cGUgPT0gSEZTX0NEUl9GVEg7CiYjNDM7fQomIzQzOwogLyogbGVnYWwgdmFsdWVzIGZvciBoZnNfZXh0X2tleS5Ga1R5cGUgYW5kIGhmc19maWxlLmZvcmsgKi8KICNkZWZpbmUgSEZTX0ZLX0RBVEEJCTB4MDAKICNkZWZpbmUgSEZTX0ZLX1JTUkMJCTB4RkYKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMDU6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjk5OAoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDIxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEhGUyYjNDM7IEZpbGVzeXN0ZW0gUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGl0JiMzOTtzIHRvdWNoaW5nIHNvbWUgY29yZSBhcmVhcyBvZiB0aGUgSEZTJiM0MzsgZmlsZXN5c3RlbS4gU3BlY2lmaWNhbGx5LCBgZnMvaGZzcGx1cy9iZmluZC5jYCwgYGZzL2hmc3BsdXMvY2F0YWxvZy5jYCwgYW5kIGBpbmNsdWRlL2xpbnV4L2hmc19jb21tb24uaGAuIFRoYXQgYWxvbmUgdGVsbHMgbWUgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBwb3RlbnRpYWxseSBjcml0aWNhbCBtb2RpZmljYXRpb25zIHRvIGhvdyB0aGUgZmlsZXN5c3RlbSBzdHJ1Y3R1cmVzIGFyZSBoYW5kbGVkLgoKVGhlIGtleSBjaGFuZ2UgSSBzZWUgaXMgdGhlIGludHJvZHVjdGlvbiBvZiBhIGxlbmd0aCBjaGVjayB3aXRoaW4gYGhmc3BsdXNfYnJlY19yZWFkX2NhdCgpYC4gSXQgc2VlbXMgd2UmIzM5O3JlIGd1YXJkaW5nIGFnYWluc3QgYSBwb3RlbnRpYWxseSBtYWxpY2lvdXMgb3IgY29ycnVwdCBjYXRhbG9nIGVudHJ5IHdoZXJlIHRoZSB0aHJlYWQmIzM5O3Mgbm9kZSBuYW1lIGxlbmd0aCBtaWdodCBleGNlZWQgYEhGU1BMVVNfTUFYX1NUUkxFTmAuIEdvb2QsIHRoYXQmIzM5O3MgYSBjbGFzc2ljIGJ1ZmZlciBvdmVyZmxvdyBwcmV2ZW50aW9uIHN0cmF0ZWd5LiBQcmV2ZW50aW5nIGFuIGV4Y2Vzc2l2ZSBzdHJpbmcgbGVuZ3RoLCBjb3VsZCBtaXRpZ2F0ZSBhIHBvdGVudGlhbCBzZWN1cml0eSB2dWxuZXJhYmlsaXR5LgoKSSBhbHNvIG5vdGljZSB0aGUgaW50cm9kdWN0aW9uIG9mIGBpc19oZnNfdGhyZWFkX3JlY29yZF90eXBlKClgIGFuZCBpdHMgdXNlIGluIGBoZnNwbHVzX2ZpbmRfY2F0KClgIGFuZCBgaGZzcGx1c19kZWxldGVfY2F0KClgLiBJJiMzOTttIGFzc3VtaW5nIHRoaXMgaXMgYSB0eXBlIGNoZWNrIHdoaWNoIHdpbGwgZW5zdXJlIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggdGhlIGNvcnJlY3QgcmVjb3JkIHR5cGUgYmVmb3JlIGF0dGVtcHRpbmcgdG8gb3BlcmF0ZSBvbiBpdC4gUHJldmVudHMgbWlzaW50ZXJwcmV0YXRpb25zLgoKVGhlIHJlZmFjdG9yaW5nIG9mIGBoZnNwbHVzX2RlbGV0ZV9jYXQoKWAgaXMgaW50ZXJlc3RpbmcuIFRoZSBwYXRjaCBpcyBub3cgdXNpbmcgYGhmc3BsdXNfYnJlY19yZWFkX2NhdCgpYCBpbnN0ZWFkIG9mIGBoZnNfYnJlY19maW5kKClgIGZvbGxvd2VkIGJ5IG1hbnVhbCByZWFkaW5nIG9mIGBub2RlTmFtZWAuIExvb2tzIGxpa2Ugd2UgYXJlIGltcHJvdmluZyBjb2RlIHJldXNhYmlsaXR5IGFuZCBzaW1wbGlmeWluZyBgaGZzcGx1c19kZWxldGVfY2F0KClgLiBUaGF0JiMzOTtzIGEgZ29vZCBzdGVwIHRvd2FyZCBtYWludGFpbmFiaWxpdHkuCgpHaXZlbiB0aGF0IHRoaXMgaXMgZnVuY3Rpb25hbCBjb2RlLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgc3BlY2lmaWNzIG9mIGhvdyBIRlNQTFVTIGlzIGNvbmZpZ3VyZWQgaW4gdGhpcyBrZXJuZWwuIExldCBtZSBzZWFyY2ggdGhlIEtjb25maWcgZmlsZXMgZm9yIHRoZSBgSEZTUExVU2AgY29uZmlndXJhdGlvbiBvcHRpb24uIEkgbmVlZCB0byBrbm93IHVuZGVyIHdoYXQgY29uZGl0aW9ucyB0aGlzIGNvZGUgaXMgZW5hYmxlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAwNToyMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgSEZTUExVU19GUyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2hmc3BsdXMvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9oZnNwbHVzL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmZzL2hmc3BsdXMvS2NvbmZpZzoyOmNvbmZpZyBIRlNQTFVTX0ZTXG5mcy9oZnNwbHVzL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O0FwcGxlIEV4dGVuZGVkIEhGUyBmaWxlIHN5c3RlbSBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMDU6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzcyNgoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDY0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGFuYWx5c2lzIG9mIHRoZSBzaXR1YXRpb246CgoqKkluaXRpYWwgQXNzZXNzbWVudCBhbmQgRm9jdXNlZCBBcHByb2FjaCoqCgpPa2F5LCBzbyB0aGUgaW5pdGlhbCBjb25maWcgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBpcyBgSEZTUExVU19GU2AuIEdvb2QsIHRoYXQgbmFycm93cyBkb3duIHRoZSBzY29wZSBjb25zaWRlcmFibHkuIEJhc2VkIG9uIHRoZSBuYW1lLCBJJiMzOTttIHByZXR0eSBzdXJlIHdlJiMzOTtyZSB0YWxraW5nIGFib3V0IHRoZSBIRlMgUGx1cyBmaWxlIHN5c3RlbS4gTm93LCB0byBtYWtlIHRoZSBtb3N0IG9mIG15IHRpbWUsIEkgbmVlZCB0byBmb2N1cyBvbiB0aGUga2V5IGZ1bmN0aW9ucyBhc3NvY2lhdGVkIHdpdGggdGhlIGNhdGFsb2d1ZSBmaWxlIG9wZXJhdGlvbnMuIFRoYXQgbWVhbnMgYGhmc3BsdXNfYnJlY19yZWFkX2NhdGAsIHdoaWNoIEkmIzM5O20gYXNzdW1pbmcgaGFuZGxlcyByZWFkaW5nIGZyb20gdGhlIEItdHJlZSB0aGF0IHN0b3JlcyB0aGUgZGlyZWN0b3J5IGVudHJpZXM7IGBoZnNwbHVzX2ZpbmRfY2F0YCwgd2hpY2ggaXMgbGlrZWx5IHJlc3BvbnNpYmxlIGZvciBzZWFyY2hpbmcgZm9yIHNwZWNpZmljIGVudHJpZXMgd2l0aGluIHRoYXQgQi10cmVlOyBhbmQgYGhmc3BsdXNfZGVsZXRlX2NhdGAsIHdoaWNoIHdpbGwgYmUgdGhlIGZ1bmN0aW9uIHRvIGRlbGV0ZSBlbnRyaWVzIGZyb20gdGhlIGNhdGFsb2d1ZS4gVGhvc2UgYXJlIHRoZSBvbmVzIHRvIHNjcnV0aW5pemUuIEJlZm9yZSBkaWdnaW5nIGFueSBkZWVwZXIsIEkmIzM5O2xsIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoYXQgdGhlcmUgYXJlbiYjMzk7dCBhbnkgb3RoZXIgcmVsYXRlZCBjb25maWd1cmF0aW9ucyBvciBkZXBlbmRlbmNpZXMgSSBzaG91bGQgYmUgYXdhcmUgb2YgdG8gZW5zdXJlIEkmIzM5O20gbm90IG1pc3NpbmcgYW55dGhpbmcgY3J1Y2lhbC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAwNToyMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtIRlNQTFVTX0ZTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvaGZzcGx1cy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvaGZzcGx1cy8ua3VuaXRjb25maWc9MT1DT05GSUdfS1VOSVQ9eVxuZnMvaGZzcGx1cy8ua3VuaXRjb25maWc6MjpDT05GSUdfSEZTUExVU19GUz15XG5mcy9oZnNwbHVzLy5rdW5pdGNvbmZpZy0zLUNPTkZJR19IRlNQTFVTX0tVTklUX1RFU1Q9eVxuLS1cbmZzL2hmc3BsdXMvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZnMvaGZzcGx1cy9LY29uZmlnOjI6Y29uZmlnIEhGU1BMVVNfRlNcbmZzL2hmc3BsdXMvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7QXBwbGUgRXh0ZW5kZWQgSEZTIGZpbGUgc3lzdGVtIHN1cHBvcnRcJiMzNDtcbi0tXG5mcy9oZnNwbHVzL0tjb25maWc9MTg9Y29uZmlnIEhGU1BMVVNfS1VOSVRfVEVTVFxuZnMvaGZzcGx1cy9LY29uZmlnLTE5LVx0dHJpc3RhdGUgXCYjMzQ7S1VuaXQgdGVzdHMgZm9yIEhGUyYjNDM7IGZpbGVzeXN0ZW1cJiMzNDsgaWYgIUtVTklUX0FMTF9URVNUU1xuZnMvaGZzcGx1cy9LY29uZmlnOjIwOlx0ZGVwZW5kcyBvbiBIRlNQTFVTX0ZTIFx1MDAyNlx1MDAyNiBLVU5JVFxuZnMvaGZzcGx1cy9LY29uZmlnLTIxLVx0ZGVmYXVsdCBLVU5JVF9BTExfVEVTVFNcbi0tXG5mcy9oZnNwbHVzL01ha2VmaWxlLTUtXG5mcy9oZnNwbHVzL01ha2VmaWxlOjY6b2JqLSQoQ09ORklHX0hGU1BMVVNfRlMpICYjNDM7PSBoZnNwbHVzLm9cbmZzL2hmc3BsdXMvTWFrZWZpbGUtNy1cbi0tXG5mcy9oZnNwbHVzL2hmc3BsdXNfZnMuaC0xMC1cbmZzL2hmc3BsdXMvaGZzcGx1c19mcy5oOjExOiNpZm5kZWYgX0xJTlVYX0hGU1BMVVNfRlNfSFxuZnMvaGZzcGx1cy9oZnNwbHVzX2ZzLmg6MTI6I2RlZmluZSBfTElOVVhfSEZTUExVU19GU19IXG5mcy9oZnNwbHVzL2hmc3BsdXNfZnMuaC0xMy1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAwNToyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NDQ0CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMTMzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgSEZTJiM0MzsgQ29kZWJhc2UqKgoKT2theSwgc28gdGhlIGNvbmZpZyBpbmRpY2F0ZXMgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBgSEZTUExVU19GU2AuIEdvdCBpdC4gTm93LCBsb29raW5nIGF0IHRoZSByZWNlbnQgbW9kaWZpY2F0aW9ucywgSSBzZWUgdGhleSYjMzk7dmUgdG91Y2hlZCBgaGZzcGx1c19icmVjX3JlYWRfY2F0YCwgYGhmc3BsdXNfZmluZF9jYXRgLCBhbmQgYGhmc3BsdXNfZGVsZXRlX2NhdGAuIFRob3NlIGFyZSBhbGwgY2F0YWxvZyBmaWxlIGZ1bmN0aW9ucywgd2hpY2ggaXMgaW50ZXJlc3RpbmcuCgpSaWdodCwgYGhmc3BsdXNfYnJlY19yZWFkX2NhdGAgZmVlbHMgbGlrZSBhIHNvbGlkIHN0YXJ0aW5nIHBvaW50IOKAkyByZWFkaW5nIGNhdGFsb2cgZW50cmllcyBpcyBvZnRlbiBhIHZlY3Rvci4gQW5kLCBkZWZpbml0ZWx5LCBgaGZzcGx1c19kZWxldGVfY2F0YCBjb3VsZCBiZSBpbnRlcmVzdGluZy4gTWFuaXB1bGF0aW9uIG9mIHRoZSBjYXRhbG9nIHN0cnVjdHVyZSBpcyBhIGNsYXNzaWMgdGFyZ2V0LiBPaCwgYW5kIGBoZnNwbHVzX2ZpbmRfY2F0YCBhcyB3ZWxsLCBJIHNob3VsZG4mIzM5O3QgZGlzbWlzcyB0aGF0IG9uZS4KCkJ1dCBiZWZvcmUgSSBkaWcgaW4sIGxldCYjMzk7cyBqdXN0IGNvbmZpcm0gdGhlc2UgYXJlIHJlYWNoYWJsZS4gSSYjMzk7bSBwcmV0dHkgc3VyZSBgaGZzcGx1c19maW5kX2NhdGAgaXMgY2FsbGVkIGJ5IGBoZnNwbHVzX2xvb2t1cGAsIG9yIHNvbWV0aGluZyBzaW1pbGFyLCByaWdodD8gTmVlZCB0byBlbnN1cmUgdGhlc2UgYXJlbiYjMzk7dCBqdXN0IGRlYWQgY29kZSBvciBpbmRpcmVjdGx5IGV4cG9zZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMDU6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aGZzcGx1c19maW5kX2NhdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2hmc3BsdXMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2hmc3BsdXMvY2F0YWxvZy5jPTE3Nj1zdGF0aWMgaW50IGhmc3BsdXNfZmlsbF9jYXRfdGhyZWFkKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsXG4tLVxuZnMvaGZzcGx1cy9jYXRhbG9nLmMtMTkzLS8qIFRyeSB0byBnZXQgYSBjYXRhbG9nIGVudHJ5IGZvciBnaXZlbiBjYXRhbG9nIGlkICovXG5mcy9oZnNwbHVzL2NhdGFsb2cuYzoxOTQ6aW50IGhmc3BsdXNfZmluZF9jYXQoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgdTMyIGNuaWQsXG5mcy9oZnNwbHVzL2NhdGFsb2cuYy0xOTUtXHRcdCAgICAgc3RydWN0IGhmc19maW5kX2RhdGEgKmZkKVxuLS1cbmZzL2hmc3BsdXMvaGZzcGx1c19mcy5oPTQyMD12b2lkIGhmc3BsdXNfY2F0X3NldF9wZXJtcyhzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgaGZzcGx1c19wZXJtICpwZXJtcyk7XG5mcy9oZnNwbHVzL2hmc3BsdXNfZnMuaDo0MjE6aW50IGhmc3BsdXNfZmluZF9jYXQoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgdTMyIGNuaWQsXG5mcy9oZnNwbHVzL2hmc3BsdXNfZnMuaC00MjItXHRcdCAgICAgc3RydWN0IGhmc19maW5kX2RhdGEgKmZkKTtcbi0tXG5mcy9oZnNwbHVzL2lub2RlLmM9Njc3PWludCBoZnNwbHVzX2NhdF93cml0ZV9pbm9kZShzdHJ1Y3QgaW5vZGUgKmlub2RlKVxuLS1cbmZzL2hmc3BsdXMvaW5vZGUuYy02OTYtXG5mcy9oZnNwbHVzL2lub2RlLmM6Njk3Olx0aWYgKGhmc3BsdXNfZmluZF9jYXQobWFpbl9pbm9kZS1cdTAwM2VpX3NiLCBtYWluX2lub2RlLVx1MDAzZWlfaW5vLCBcdTAwMjZmZCkpXG5mcy9oZnNwbHVzL2lub2RlLmMtNjk4LVx0XHQvKiBwYW5pYz8gKi9cbi0tXG5mcy9oZnNwbHVzL3N1cGVyLmM9NjU9c3RydWN0IGlub2RlICpoZnNwbHVzX2lnZXQoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgdW5zaWduZWQgbG9uZyBpbm8pXG4tLVxuZnMvaGZzcGx1cy9zdXBlci5jLTk5LVx0XHRpZiAoIWVycikge1xuZnMvaGZzcGx1cy9zdXBlci5jOjEwMDpcdFx0XHRlcnIgPSBoZnNwbHVzX2ZpbmRfY2F0KGlub2RlLVx1MDAzZWlfc2IsIGlub2RlLVx1MDAzZWlfaW5vLCBcdTAwMjZmZCk7XG5mcy9oZnNwbHVzL3N1cGVyLmMtMTAxLVx0XHRcdGlmICghZXJyKVxuLS1cbmZzL2hmc3BsdXMveGF0dHIuYz0zNTE9aW50IF9faGZzcGx1c19zZXR4YXR0cihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBjb25zdCBjaGFyICpuYW1lLFxuLS1cbmZzL2hmc3BsdXMveGF0dHIuYy0zNzYtXG5mcy9oZnNwbHVzL3hhdHRyLmM6Mzc3Olx0ZXJyID0gaGZzcGx1c19maW5kX2NhdChpbm9kZS1cdTAwM2VpX3NiLCBpbm9kZS1cdTAwM2VpX2lubywgXHUwMDI2Y2F0X2ZkKTtcbmZzL2hmc3BsdXMveGF0dHIuYy0zNzgtXHRpZiAoZXJyKSB7XG4tLVxuZnMvaGZzcGx1cy94YXR0ci5jPTU2Mj1zdGF0aWMgc3NpemVfdCBoZnNwbHVzX2dldHhhdHRyX2ZpbmRlcl9pbmZvKHN0cnVjdCBpbm9kZSAqaW5vZGUsXG4tLVxuZnMvaGZzcGx1cy94YXR0ci5jLTU3OS1cdFx0fVxuZnMvaGZzcGx1cy94YXR0ci5jOjU4MDpcdFx0cmVzID0gaGZzcGx1c19maW5kX2NhdChpbm9kZS1cdTAwM2VpX3NiLCBpbm9kZS1cdTAwM2VpX2lubywgXHUwMDI2ZmQpO1xuZnMvaGZzcGx1cy94YXR0ci5jLTU4MS1cdFx0aWYgKHJlcylcbi0tXG5mcy9oZnNwbHVzL3hhdHRyLmM9NzM0PXN0YXRpYyBzc2l6ZV90IGhmc3BsdXNfbGlzdHhhdHRyX2ZpbmRlcl9pbmZvKHN0cnVjdCBkZW50cnkgKmRlbnRyeSxcbi0tXG5mcy9oZnNwbHVzL3hhdHRyLmMtNzUxLVxuZnMvaGZzcGx1cy94YXR0ci5jOjc1MjpcdHJlcyA9IGhmc3BsdXNfZmluZF9jYXQoaW5vZGUtXHUwMDNlaV9zYiwgaW5vZGUtXHUwMDNlaV9pbm8sIFx1MDAyNmZkKTtcbmZzL2hmc3BsdXMveGF0dHIuYy03NTMtXHRpZiAocmVzKVxuLS1cbmZzL2hmc3BsdXMveGF0dHIuYz05MDY9c3RhdGljIGludCBoZnNwbHVzX3JlbW92ZXhhdHRyKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGNvbnN0IGNoYXIgKm5hbWUpXG4tLVxuZnMvaGZzcGx1cy94YXR0ci5jLTkyOS1cbmZzL2hmc3BsdXMveGF0dHIuYzo5MzA6XHRlcnIgPSBoZnNwbHVzX2ZpbmRfY2F0KGlub2RlLVx1MDAzZWlfc2IsIGlub2RlLVx1MDAzZWlfaW5vLCBcdTAwMjZjYXRfZmQpO1xuZnMvaGZzcGx1cy94YXR0ci5jLTkzMS1cdGlmIChlcnIpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAwNToyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1ODE3CgkJCQkJCQlvdXRwdXQ6IDExNAoJCQkJCQkJdGhvdWdodHM6IDExNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgZnJvbSBteSBleHBlcnQgcGVyc3BlY3RpdmU6CgoqKkhGUyYjNDM7IENhdGFsb2cgUmVjb3JkIE9wZXJhdGlvbnM6IEEgRm9jdXNlZCBBc3Nlc3NtZW50KioKClJpZ2h0LCBzbyB3ZSYjMzk7cmUgdGFsa2luZyBhYm91dCBhIHBhdGNoIHRoYXQmIzM5O3MgY2xlYXJseSBhZGRyZXNzaW5nIGlzc3VlcyB3aXRoaW4gdGhlIEhGUyYjNDM7IGNhdGFsb2cgaGFuZGxpbmcuIFRoZSBrZXkgb3BlcmF0aW9ucywgYXMgZmFyIGFzIEkgY2FuIHNlZSwgYXJlIGBoZnNwbHVzX2RlbGV0ZV9jYXRgIGZvciBmaWxlL2RpcmVjdG9yeSBkZWxldGlvbiwgYW5kIGBoZnNwbHVzX2JyZWNfcmVhZF9jYXRgIGZvciByZWFkaW5nIHRob3NlIGNydWNpYWwgY2F0YWxvZyByZWNvcmRzLiBUaGUgZmFjdCB0aGF0IHRoZSBwYXRjaCBpcyAqZnVuY3Rpb25hbCogaXMgYSBnb29kIHNpZ24g4oCTIGl0IHN1Z2dlc3RzIGEgdGFuZ2libGUgaW1wcm92ZW1lbnQsIGFuZCB0aGF0IHRoZSBidWdzIGFyZSBnZXR0aW5nIGFkZHJlc3NlZC4KClRoZSBgV29ydGhGdXp6aW5nOiB0cnVlYCBmbGFnIGFuZCB0aGUgYEZvY3VzU3ltYm9sc2AgbGlzdCwgdGhhdCYjMzk7cyB3aGF0IHBpcXVlcyBteSBpbnRlcmVzdC4gSXQgbWVhbnMgd2UmIzM5O3ZlIGlkZW50aWZpZWQgdGhlIHNwZWNpZmljIGFyZWFzIG1vc3QgbGlrZWx5IHRvIGJlbmVmaXQgZnJvbSByaWdvcm91cyB0ZXN0aW5nLiBUYXJnZXRpbmcgYGhmc3BsdXNfYnJlY19yZWFkX2NhdGAsIGBoZnNwbHVzX2ZpbmRfY2F0YCwgYW5kIGBoZnNwbHVzX2RlbGV0ZV9jYXRgIG1ha2VzIHBlcmZlY3Qgc2Vuc2UuIFRoZXNlIGFyZSB0aGUgY3JpdGljYWwgZnVuY3Rpb25zIHdoZXJlIGRhdGEgY29ycnVwdGlvbiBvciB1bmV4cGVjdGVkIGJlaGF2aW9yIGNvdWxkIGVhc2lseSBtYW5pZmVzdCwgZXNwZWNpYWxseSB3aXRoIGNvbXBsZXggb3IgbWFsZm9ybWVkIGNhdGFsb2cgZW50cmllcy4gRnV6emluZyB0aGVtIGlzIGEgZ3JlYXQgd2F5IHRvIGV4cG9zZSBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0aWVzLgoKVGhlIGBFbmFibGVDb25maWdzOiBIRlNQTFVTX0ZTYCBpcyBhIHNpbXBsZSBpbmNsdXNpb24gdGFnLgoKTXkgYXNzZXNzbWVudCBpcyB0aGF0IHRoaXMgaXMgYSB3ZWxsLXRhcmdldGVkIGltcHJvdmVtZW50IHRvIEhGUyYjNDM7IGhhbmRsaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAwNToyMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SEZTUExVU19GUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2hmc3BsdXNfYnJlY19yZWFkX2NhdCYjMzQ7LAogICAgJiMzNDtoZnNwbHVzX2ZpbmRfY2F0JiMzNDssCiAgICAmIzM0O2hmc3BsdXNfZGVsZXRlX2NhdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGJvdW5kcyBjaGVja2luZyBhbmQgdHlwZSB2YWxpZGF0aW9uIGZvciBIRlMmIzQzOyBjYXRhbG9nIHRocmVhZCByZWNvcmRzLCBmaXhpbmcgcG90ZW50aWFsIG91dC1vZi1ib3VuZHMgcmVhZHMgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGJ1Z3MuIFRoaXMgbW9kaWZpZXMgY29yZSBmaWxlc3lzdGVtIGxvZ2ljIHRoYXQgaXMgcmVhY2hhYmxlIGZyb20gdXNlciBzcGFjZSB2aWEgZmlsZXN5c3RlbSBvcGVyYXRpb25zLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtIRlNQTFVTX0ZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aGZzcGx1c19icmVjX3JlYWRfY2F0JiMzNDssCiAgICAmIzM0O2hmc3BsdXNfZmluZF9jYXQmIzM0OywKICAgICYjMzQ7aGZzcGx1c19kZWxldGVfY2F0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYm91bmRzIGNoZWNraW5nIGFuZCB0eXBlIHZhbGlkYXRpb24gZm9yIEhGUyYjNDM7IGNhdGFsb2cgdGhyZWFkIHJlY29yZHMsIGZpeGluZyBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kcyByZWFkcyBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gYnVncy4gVGhpcyBtb2RpZmllcyBjb3JlIGZpbGVzeXN0ZW0gbG9naWMgdGhhdCBpcyByZWFjaGFibGUgZnJvbSB1c2VyIHNwYWNlIHZpYSBmaWxlc3lzdGVtIG9wZXJhdGlvbnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0wOFQwNToyMzozMC44OTc3OTc4NTVaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODA0ODMwMDc1OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJIRlNQTFVTX0ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaGZzcGx1c19icmVjX3JlYWRfY2F0XCIsXG4gICAgXCJoZnNwbHVzX2ZpbmRfY2F0XCIsXG4gICAgXCJoZnNwbHVzX2RlbGV0ZV9jYXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGJvdW5kcyBjaGVja2luZyBhbmQgdHlwZSB2YWxpZGF0aW9uIGZvciBIRlMrIGNhdGFsb2cgdGhyZWFkIHJlY29yZHMsIGZpeGluZyBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kcyByZWFkcyBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gYnVncy4gVGhpcyBtb2RpZmllcyBjb3JlIGZpbGVzeXN0ZW0gbG9naWMgdGhhdCBpcyByZWFjaGFibGUgZnJvbSB1c2VyIHNwYWNlIHZpYSBmaWxlc3lzdGVtIG9wZXJhdGlvbnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDA1OjIzOjMwLjg5NzgwMjQ0NVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjkxMzc5NzE4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgYzJmYzdjNjQyZDkzNTg2YTI3NTlkNjk0ODJiMGI3NjdkZTE3YmJiY1xcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgV2VkIEp1bCA4IDA1OjIzOjI5IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2ZzL2hmc3BsdXMvYmZpbmQuYyBiL2ZzL2hmc3BsdXMvYmZpbmQuY1xcbmluZGV4IDlhNTVmYTZkNTI5NDI5Li40MTdjMzAxNGY0YzdkMCAxMDA2NDRcXG4tLS0gYS9mcy9oZnNwbHVzL2JmaW5kLmNcXG4rKysgYi9mcy9oZnNwbHVzL2JmaW5kLmNcXG5AQCAtMzIyLDYgKzMyMiwxMSBAQCBpbnQgaGZzcGx1c19icmVjX3JlYWRfY2F0KHN0cnVjdCBoZnNfZmluZF9kYXRhICpmZCwgaGZzcGx1c19jYXRfZW50cnkgKmVudHJ5KVxcbiBcXHRcXHRcXHRwcl9lcnIoXFxcInRocmVhZCByZWNvcmQgdG9vIHNob3J0IChnb3QgJXUpXFxcXG5cXFwiLCBmZC1cXHUwMDNlZW50cnlsZW5ndGgpO1xcbiBcXHRcXHRcXHRyZXR1cm4gLUVJTztcXG4gXFx0XFx0fVxcbitcXHRcXHRpZiAoYmUxNl90b19jcHUoZW50cnktXFx1MDAzZXRocmVhZC5ub2RlTmFtZS5sZW5ndGgpIFxcdTAwM2VcXG4rXFx0XFx0ICAgIEhGU1BMVVNfTUFYX1NUUkxFTikge1xcbitcXHRcXHRcXHRwcl9lcnIoXFxcImNhdGFsb2cgbmFtZSBsZW5ndGggY29ycnVwdGVkXFxcXG5cXFwiKTtcXG4rXFx0XFx0XFx0cmV0dXJuIC1FSU87XFxuK1xcdFxcdH1cXG4gXFx0XFx0ZXhwZWN0ZWRfc2l6ZSA9IGhmc3BsdXNfY2F0X3RocmVhZF9zaXplKFxcdTAwMjZlbnRyeS1cXHUwMDNldGhyZWFkKTtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdGRlZmF1bHQ6XFxuZGlmZiAtLWdpdCBhL2ZzL2hmc3BsdXMvY2F0YWxvZy5jIGIvZnMvaGZzcGx1cy9jYXRhbG9nLmNcXG5pbmRleCA3NzZjZTM2Y2YwNzZiNC4uMWE0YjBiZWFlMTM1MDYgMTAwNjQ0XFxuLS0tIGEvZnMvaGZzcGx1cy9jYXRhbG9nLmNcXG4rKysgYi9mcy9oZnNwbHVzL2NhdGFsb2cuY1xcbkBAIC0yMDQsMTYgKzIwNCwxMSBAQCBpbnQgaGZzcGx1c19maW5kX2NhdChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCB1MzIgY25pZCxcXG4gXFx0XFx0cmV0dXJuIGVycjtcXG4gXFxuIFxcdHR5cGUgPSBiZTE2X3RvX2NwdSh0bXAudHlwZSk7XFxuLVxcdGlmICh0eXBlICE9IEhGU1BMVVNfRk9MREVSX1RIUkVBRCBcXHUwMDI2XFx1MDAyNiB0eXBlICE9IEhGU1BMVVNfRklMRV9USFJFQUQpIHtcXG4rXFx0aWYgKCFpc19oZnNfdGhyZWFkX3JlY29yZF90eXBlKHR5cGUpKSB7XFxuIFxcdFxcdHByX2VycihcXFwiZm91bmQgYmFkIHRocmVhZCByZWNvcmQgaW4gY2F0YWxvZ1xcXFxuXFxcIik7XFxuIFxcdFxcdHJldHVybiAtRUlPO1xcbiBcXHR9XFxuIFxcbi1cXHRpZiAoYmUxNl90b19jcHUodG1wLnRocmVhZC5ub2RlTmFtZS5sZW5ndGgpIFxcdTAwM2UgMjU1KSB7XFxuLVxcdFxcdHByX2VycihcXFwiY2F0YWxvZyBuYW1lIGxlbmd0aCBjb3JydXB0ZWRcXFxcblxcXCIpO1xcbi1cXHRcXHRyZXR1cm4gLUVJTztcXG4tXFx0fVxcbi1cXG4gXFx0aGZzcGx1c19jYXRfYnVpbGRfa2V5X3VuaShmZC1cXHUwMDNlc2VhcmNoX2tleSxcXG4gXFx0XFx0YmUzMl90b19jcHUodG1wLnRocmVhZC5wYXJlbnRJRCksXFxuIFxcdFxcdFxcdTAwMjZ0bXAudGhyZWFkLm5vZGVOYW1lKTtcXG5AQCAtMzUwLDIzICszNDUsMjIgQEAgaW50IGhmc3BsdXNfZGVsZXRlX2NhdCh1MzIgY25pZCwgc3RydWN0IGlub2RlICpkaXIsIGNvbnN0IHN0cnVjdCBxc3RyICpzdHIpXFxuIFxcdFxcdGdvdG8gb3V0O1xcbiBcXG4gXFx0aWYgKCFzdHIpIHtcXG4tXFx0XFx0aW50IGxlbjtcXG4rXFx0XFx0aGZzcGx1c19jYXRfZW50cnkgZW50cnkgPSB7MH07XFxuIFxcbiBcXHRcXHRoZnNwbHVzX2NhdF9idWlsZF9rZXlfd2l0aF9jbmlkKHNiLCBmZC5zZWFyY2hfa2V5LCBjbmlkKTtcXG4tXFx0XFx0ZXJyID0gaGZzX2JyZWNfZmluZChcXHUwMDI2ZmQsIGhmc19maW5kX3JlY19ieV9rZXkpO1xcbitcXHRcXHRlcnIgPSBoZnNwbHVzX2JyZWNfcmVhZF9jYXQoXFx1MDAyNmZkLCBcXHUwMDI2ZW50cnkpO1xcbiBcXHRcXHRpZiAoZXJyKVxcbiBcXHRcXHRcXHRnb3RvIG91dDtcXG4gXFxuLVxcdFxcdG9mZiA9IGZkLmVudHJ5b2Zmc2V0ICtcXG4tXFx0XFx0XFx0b2Zmc2V0b2Yoc3RydWN0IGhmc3BsdXNfY2F0X3RocmVhZCwgbm9kZU5hbWUpO1xcbi1cXHRcXHRmZC5zZWFyY2hfa2V5LVxcdTAwM2VjYXQucGFyZW50ID0gY3B1X3RvX2JlMzIoZGlyLVxcdTAwM2VpX2lubyk7XFxuLVxcdFxcdGhmc19ibm9kZV9yZWFkKGZkLmJub2RlLFxcbi1cXHRcXHRcXHRcXHUwMDI2ZmQuc2VhcmNoX2tleS1cXHUwMDNlY2F0Lm5hbWUubGVuZ3RoLCBvZmYsIDIpO1xcbi1cXHRcXHRsZW4gPSBiZTE2X3RvX2NwdShmZC5zZWFyY2hfa2V5LVxcdTAwM2VjYXQubmFtZS5sZW5ndGgpICogMjtcXG4tXFx0XFx0aGZzX2Jub2RlX3JlYWQoZmQuYm5vZGUsXFxuLVxcdFxcdFxcdFxcdTAwMjZmZC5zZWFyY2hfa2V5LVxcdTAwM2VjYXQubmFtZS51bmljb2RlLFxcbi1cXHRcXHRcXHRvZmYgKyAyLCBsZW4pO1xcbi1cXHRcXHRmZC5zZWFyY2hfa2V5LVxcdTAwM2VrZXlfbGVuID0gY3B1X3RvX2JlMTYoNiArIGxlbik7XFxuK1xcdFxcdHR5cGUgPSBiZTE2X3RvX2NwdShlbnRyeS50eXBlKTtcXG4rXFx0XFx0aWYgKCFpc19oZnNfdGhyZWFkX3JlY29yZF90eXBlKHR5cGUpKSB7XFxuK1xcdFxcdFxcdHByX2VycihcXFwiZm91bmQgYmFkIHRocmVhZCByZWNvcmQgaW4gY2F0YWxvZ1xcXFxuXFxcIik7XFxuK1xcdFxcdFxcdGVyciA9IC1FSU87XFxuK1xcdFxcdFxcdGdvdG8gb3V0O1xcbitcXHRcXHR9XFxuK1xcbitcXHRcXHRoZnNwbHVzX2NhdF9idWlsZF9rZXlfdW5pKGZkLnNlYXJjaF9rZXksIGRpci1cXHUwMDNlaV9pbm8sXFxuK1xcdFxcdFxcdFxcdFxcdCAgXFx1MDAyNmVudHJ5LnRocmVhZC5ub2RlTmFtZSk7XFxuIFxcdH0gZWxzZSB7XFxuIFxcdFxcdGVyciA9IGhmc3BsdXNfY2F0X2J1aWxkX2tleShzYiwgZmQuc2VhcmNoX2tleSwgZGlyLVxcdTAwM2VpX2lubywgc3RyKTtcXG4gXFx0XFx0aWYgKHVubGlrZWx5KGVycikpXFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvaGZzX2NvbW1vbi5oIGIvaW5jbHVkZS9saW51eC9oZnNfY29tbW9uLmhcXG5pbmRleCA0NWZiNGM5ZmY5ZjVlZS4uYzQ4NjIxNjZlZmM5OTQgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS9saW51eC9oZnNfY29tbW9uLmhcXG4rKysgYi9pbmNsdWRlL2xpbnV4L2hmc19jb21tb24uaFxcbkBAIC05Miw2ICs5MiwxMSBAQFxcbiAjZGVmaW5lIEhGU19DRFJfVEhEXFx0XFx0MHgwM1xcdC8qIGZvbGRlciAoZGlyZWN0b3J5KSB0aHJlYWQgKi9cXG4gI2RlZmluZSBIRlNfQ0RSX0ZUSFxcdFxcdDB4MDRcXHQvKiBmaWxlIHRocmVhZCAqL1xcbiBcXG4rc3RhdGljIGlubGluZSBib29sIGlzX2hmc190aHJlYWRfcmVjb3JkX3R5cGUodTE2IHR5cGUpXFxuK3tcXG4rXFx0cmV0dXJuIHR5cGUgPT0gSEZTX0NEUl9USEQgfHwgdHlwZSA9PSBIRlNfQ0RSX0ZUSDtcXG4rfVxcbitcXG4gLyogbGVnYWwgdmFsdWVzIGZvciBoZnNfZXh0X2tleS5Ga1R5cGUgYW5kIGhmc19maWxlLmZvcmsgKi9cXG4gI2RlZmluZSBIRlNfRktfREFUQVxcdFxcdDB4MDBcXG4gI2RlZmluZSBIRlNfRktfUlNSQ1xcdFxcdDB4RkZcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMDU6MjM6MzEuNTg5NzMwMDYzWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNzM1NjM1NTA5MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJIRlNQTFVTX0ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaGZzcGx1c19icmVjX3JlYWRfY2F0XCIsXG4gICAgXCJoZnNwbHVzX2ZpbmRfY2F0XCIsXG4gICAgXCJoZnNwbHVzX2RlbGV0ZV9jYXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGJvdW5kcyBjaGVja2luZyBhbmQgdHlwZSB2YWxpZGF0aW9uIGZvciBIRlMrIGNhdGFsb2cgdGhyZWFkIHJlY29yZHMsIGZpeGluZyBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kcyByZWFkcyBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gYnVncy4gVGhpcyBtb2RpZmllcyBjb3JlIGZpbGVzeXN0ZW0gbG9naWMgdGhhdCBpcyByZWFjaGFibGUgZnJvbSB1c2VyIHNwYWNlIHZpYSBmaWxlc3lzdGVtIG9wZXJhdGlvbnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYzJmYzdjNjQyZDkzNTg2YTI3NTlkNjk0ODJiMGI3NjdkZTE3YmJiY1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVsIDggMDU6MjM6MjkgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9mcy9oZnNwbHVzL2JmaW5kLmMgYi9mcy9oZnNwbHVzL2JmaW5kLmNcbmluZGV4IDlhNTVmYTZkNTI5NDI5Li40MTdjMzAxNGY0YzdkMCAxMDA2NDRcbi0tLSBhL2ZzL2hmc3BsdXMvYmZpbmQuY1xuKysrIGIvZnMvaGZzcGx1cy9iZmluZC5jXG5AQCAtMzIyLDYgKzMyMiwxMSBAQCBpbnQgaGZzcGx1c19icmVjX3JlYWRfY2F0KHN0cnVjdCBoZnNfZmluZF9kYXRhICpmZCwgaGZzcGx1c19jYXRfZW50cnkgKmVudHJ5KVxuIFx0XHRcdHByX2VycihcInRocmVhZCByZWNvcmQgdG9vIHNob3J0IChnb3QgJXUpXFxuXCIsIGZkLVx1MDAzZWVudHJ5bGVuZ3RoKTtcbiBcdFx0XHRyZXR1cm4gLUVJTztcbiBcdFx0fVxuK1x0XHRpZiAoYmUxNl90b19jcHUoZW50cnktXHUwMDNldGhyZWFkLm5vZGVOYW1lLmxlbmd0aCkgXHUwMDNlXG4rXHRcdCAgICBIRlNQTFVTX01BWF9TVFJMRU4pIHtcbitcdFx0XHRwcl9lcnIoXCJjYXRhbG9nIG5hbWUgbGVuZ3RoIGNvcnJ1cHRlZFxcblwiKTtcbitcdFx0XHRyZXR1cm4gLUVJTztcbitcdFx0fVxuIFx0XHRleHBlY3RlZF9zaXplID0gaGZzcGx1c19jYXRfdGhyZWFkX3NpemUoXHUwMDI2ZW50cnktXHUwMDNldGhyZWFkKTtcbiBcdFx0YnJlYWs7XG4gXHRkZWZhdWx0OlxuZGlmZiAtLWdpdCBhL2ZzL2hmc3BsdXMvY2F0YWxvZy5jIGIvZnMvaGZzcGx1cy9jYXRhbG9nLmNcbmluZGV4IDc3NmNlMzZjZjA3NmI0Li4xYTRiMGJlYWUxMzUwNiAxMDA2NDRcbi0tLSBhL2ZzL2hmc3BsdXMvY2F0YWxvZy5jXG4rKysgYi9mcy9oZnNwbHVzL2NhdGFsb2cuY1xuQEAgLTIwNCwxNiArMjA0LDExIEBAIGludCBoZnNwbHVzX2ZpbmRfY2F0KHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHUzMiBjbmlkLFxuIFx0XHRyZXR1cm4gZXJyO1xuIFxuIFx0dHlwZSA9IGJlMTZfdG9fY3B1KHRtcC50eXBlKTtcbi1cdGlmICh0eXBlICE9IEhGU1BMVVNfRk9MREVSX1RIUkVBRCBcdTAwMjZcdTAwMjYgdHlwZSAhPSBIRlNQTFVTX0ZJTEVfVEhSRUFEKSB7XG4rXHRpZiAoIWlzX2hmc190aHJlYWRfcmVjb3JkX3R5cGUodHlwZSkpIHtcbiBcdFx0cHJfZXJyKFwiZm91bmQgYmFkIHRocmVhZCByZWNvcmQgaW4gY2F0YWxvZ1xcblwiKTtcbiBcdFx0cmV0dXJuIC1FSU87XG4gXHR9XG4gXG4tXHRpZiAoYmUxNl90b19jcHUodG1wLnRocmVhZC5ub2RlTmFtZS5sZW5ndGgpIFx1MDAzZSAyNTUpIHtcbi1cdFx0cHJfZXJyKFwiY2F0YWxvZyBuYW1lIGxlbmd0aCBjb3JydXB0ZWRcXG5cIik7XG4tXHRcdHJldHVybiAtRUlPO1xuLVx0fVxuLVxuIFx0aGZzcGx1c19jYXRfYnVpbGRfa2V5X3VuaShmZC1cdTAwM2VzZWFyY2hfa2V5LFxuIFx0XHRiZTMyX3RvX2NwdSh0bXAudGhyZWFkLnBhcmVudElEKSxcbiBcdFx0XHUwMDI2dG1wLnRocmVhZC5ub2RlTmFtZSk7XG5AQCAtMzUwLDIzICszNDUsMjIgQEAgaW50IGhmc3BsdXNfZGVsZXRlX2NhdCh1MzIgY25pZCwgc3RydWN0IGlub2RlICpkaXIsIGNvbnN0IHN0cnVjdCBxc3RyICpzdHIpXG4gXHRcdGdvdG8gb3V0O1xuIFxuIFx0aWYgKCFzdHIpIHtcbi1cdFx0aW50IGxlbjtcbitcdFx0aGZzcGx1c19jYXRfZW50cnkgZW50cnkgPSB7MH07XG4gXG4gXHRcdGhmc3BsdXNfY2F0X2J1aWxkX2tleV93aXRoX2NuaWQoc2IsIGZkLnNlYXJjaF9rZXksIGNuaWQpO1xuLVx0XHRlcnIgPSBoZnNfYnJlY19maW5kKFx1MDAyNmZkLCBoZnNfZmluZF9yZWNfYnlfa2V5KTtcbitcdFx0ZXJyID0gaGZzcGx1c19icmVjX3JlYWRfY2F0KFx1MDAyNmZkLCBcdTAwMjZlbnRyeSk7XG4gXHRcdGlmIChlcnIpXG4gXHRcdFx0Z290byBvdXQ7XG4gXG4tXHRcdG9mZiA9IGZkLmVudHJ5b2Zmc2V0ICtcbi1cdFx0XHRvZmZzZXRvZihzdHJ1Y3QgaGZzcGx1c19jYXRfdGhyZWFkLCBub2RlTmFtZSk7XG4tXHRcdGZkLnNlYXJjaF9rZXktXHUwMDNlY2F0LnBhcmVudCA9IGNwdV90b19iZTMyKGRpci1cdTAwM2VpX2lubyk7XG4tXHRcdGhmc19ibm9kZV9yZWFkKGZkLmJub2RlLFxuLVx0XHRcdFx1MDAyNmZkLnNlYXJjaF9rZXktXHUwMDNlY2F0Lm5hbWUubGVuZ3RoLCBvZmYsIDIpO1xuLVx0XHRsZW4gPSBiZTE2X3RvX2NwdShmZC5zZWFyY2hfa2V5LVx1MDAzZWNhdC5uYW1lLmxlbmd0aCkgKiAyO1xuLVx0XHRoZnNfYm5vZGVfcmVhZChmZC5ibm9kZSxcbi1cdFx0XHRcdTAwMjZmZC5zZWFyY2hfa2V5LVx1MDAzZWNhdC5uYW1lLnVuaWNvZGUsXG4tXHRcdFx0b2ZmICsgMiwgbGVuKTtcbi1cdFx0ZmQuc2VhcmNoX2tleS1cdTAwM2VrZXlfbGVuID0gY3B1X3RvX2JlMTYoNiArIGxlbik7XG4rXHRcdHR5cGUgPSBiZTE2X3RvX2NwdShlbnRyeS50eXBlKTtcbitcdFx0aWYgKCFpc19oZnNfdGhyZWFkX3JlY29yZF90eXBlKHR5cGUpKSB7XG4rXHRcdFx0cHJfZXJyKFwiZm91bmQgYmFkIHRocmVhZCByZWNvcmQgaW4gY2F0YWxvZ1xcblwiKTtcbitcdFx0XHRlcnIgPSAtRUlPO1xuK1x0XHRcdGdvdG8gb3V0O1xuK1x0XHR9XG4rXG4rXHRcdGhmc3BsdXNfY2F0X2J1aWxkX2tleV91bmkoZmQuc2VhcmNoX2tleSwgZGlyLVx1MDAzZWlfaW5vLFxuK1x0XHRcdFx0XHQgIFx1MDAyNmVudHJ5LnRocmVhZC5ub2RlTmFtZSk7XG4gXHR9IGVsc2Uge1xuIFx0XHRlcnIgPSBoZnNwbHVzX2NhdF9idWlsZF9rZXkoc2IsIGZkLnNlYXJjaF9rZXksIGRpci1cdTAwM2VpX2lubywgc3RyKTtcbiBcdFx0aWYgKHVubGlrZWx5KGVycikpXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9oZnNfY29tbW9uLmggYi9pbmNsdWRlL2xpbnV4L2hmc19jb21tb24uaFxuaW5kZXggNDVmYjRjOWZmOWY1ZWUuLmM0ODYyMTY2ZWZjOTk0IDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9oZnNfY29tbW9uLmhcbisrKyBiL2luY2x1ZGUvbGludXgvaGZzX2NvbW1vbi5oXG5AQCAtOTIsNiArOTIsMTEgQEBcbiAjZGVmaW5lIEhGU19DRFJfVEhEXHRcdDB4MDNcdC8qIGZvbGRlciAoZGlyZWN0b3J5KSB0aHJlYWQgKi9cbiAjZGVmaW5lIEhGU19DRFJfRlRIXHRcdDB4MDRcdC8qIGZpbGUgdGhyZWFkICovXG4gXG4rc3RhdGljIGlubGluZSBib29sIGlzX2hmc190aHJlYWRfcmVjb3JkX3R5cGUodTE2IHR5cGUpXG4re1xuK1x0cmV0dXJuIHR5cGUgPT0gSEZTX0NEUl9USEQgfHwgdHlwZSA9PSBIRlNfQ0RSX0ZUSDtcbit9XG4rXG4gLyogbGVnYWwgdmFsdWVzIGZvciBoZnNfZXh0X2tleS5Ga1R5cGUgYW5kIGhmc19maWxlLmZvcmsgKi9cbiAjZGVmaW5lIEhGU19GS19EQVRBXHRcdDB4MDBcbiAjZGVmaW5lIEhGU19GS19SU1JDXHRcdDB4RkZcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDA1OjIzOjMxLjU4OTczMTQ0M1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUwODA0MTk4MDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBIRlMrIEZpbGVzeXN0ZW0gUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpdCdzIHRvdWNoaW5nIHNvbWUgY29yZSBhcmVhcyBvZiB0aGUgSEZTKyBmaWxlc3lzdGVtLiBTcGVjaWZpY2FsbHksIGBmcy9oZnNwbHVzL2JmaW5kLmNgLCBgZnMvaGZzcGx1cy9jYXRhbG9nLmNgLCBhbmQgYGluY2x1ZGUvbGludXgvaGZzX2NvbW1vbi5oYC4gVGhhdCBhbG9uZSB0ZWxscyBtZSB3ZSdyZSBkZWFsaW5nIHdpdGggcG90ZW50aWFsbHkgY3JpdGljYWwgbW9kaWZpY2F0aW9ucyB0byBob3cgdGhlIGZpbGVzeXN0ZW0gc3RydWN0dXJlcyBhcmUgaGFuZGxlZC5cblxuVGhlIGtleSBjaGFuZ2UgSSBzZWUgaXMgdGhlIGludHJvZHVjdGlvbiBvZiBhIGxlbmd0aCBjaGVjayB3aXRoaW4gYGhmc3BsdXNfYnJlY19yZWFkX2NhdCgpYC4gSXQgc2VlbXMgd2UncmUgZ3VhcmRpbmcgYWdhaW5zdCBhIHBvdGVudGlhbGx5IG1hbGljaW91cyBvciBjb3JydXB0IGNhdGFsb2cgZW50cnkgd2hlcmUgdGhlIHRocmVhZCdzIG5vZGUgbmFtZSBsZW5ndGggbWlnaHQgZXhjZWVkIGBIRlNQTFVTX01BWF9TVFJMRU5gLiBHb29kLCB0aGF0J3MgYSBjbGFzc2ljIGJ1ZmZlciBvdmVyZmxvdyBwcmV2ZW50aW9uIHN0cmF0ZWd5LiBQcmV2ZW50aW5nIGFuIGV4Y2Vzc2l2ZSBzdHJpbmcgbGVuZ3RoLCBjb3VsZCBtaXRpZ2F0ZSBhIHBvdGVudGlhbCBzZWN1cml0eSB2dWxuZXJhYmlsaXR5LlxuXG5JIGFsc28gbm90aWNlIHRoZSBpbnRyb2R1Y3Rpb24gb2YgYGlzX2hmc190aHJlYWRfcmVjb3JkX3R5cGUoKWAgYW5kIGl0cyB1c2UgaW4gYGhmc3BsdXNfZmluZF9jYXQoKWAgYW5kIGBoZnNwbHVzX2RlbGV0ZV9jYXQoKWAuIEknbSBhc3N1bWluZyB0aGlzIGlzIGEgdHlwZSBjaGVjayB3aGljaCB3aWxsIGVuc3VyZSB3ZSdyZSBkZWFsaW5nIHdpdGggdGhlIGNvcnJlY3QgcmVjb3JkIHR5cGUgYmVmb3JlIGF0dGVtcHRpbmcgdG8gb3BlcmF0ZSBvbiBpdC4gUHJldmVudHMgbWlzaW50ZXJwcmV0YXRpb25zLlxuXG5UaGUgcmVmYWN0b3Jpbmcgb2YgYGhmc3BsdXNfZGVsZXRlX2NhdCgpYCBpcyBpbnRlcmVzdGluZy4gVGhlIHBhdGNoIGlzIG5vdyB1c2luZyBgaGZzcGx1c19icmVjX3JlYWRfY2F0KClgIGluc3RlYWQgb2YgYGhmc19icmVjX2ZpbmQoKWAgZm9sbG93ZWQgYnkgbWFudWFsIHJlYWRpbmcgb2YgYG5vZGVOYW1lYC4gTG9va3MgbGlrZSB3ZSBhcmUgaW1wcm92aW5nIGNvZGUgcmV1c2FiaWxpdHkgYW5kIHNpbXBsaWZ5aW5nIGBoZnNwbHVzX2RlbGV0ZV9jYXQoKWAuIFRoYXQncyBhIGdvb2Qgc3RlcCB0b3dhcmQgbWFpbnRhaW5hYmlsaXR5LlxuXG5HaXZlbiB0aGF0IHRoaXMgaXMgZnVuY3Rpb25hbCBjb2RlLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgc3BlY2lmaWNzIG9mIGhvdyBIRlNQTFVTIGlzIGNvbmZpZ3VyZWQgaW4gdGhpcyBrZXJuZWwuIExldCBtZSBzZWFyY2ggdGhlIEtjb25maWcgZmlsZXMgZm9yIHRoZSBgSEZTUExVU2AgY29uZmlndXJhdGlvbiBvcHRpb24uIEkgbmVlZCB0byBrbm93IHVuZGVyIHdoYXQgY29uZGl0aW9ucyB0aGlzIGNvZGUgaXMgZW5hYmxlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjk5OCwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxNiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDA1OjIzOjM2LjY3MDE1MzMxM1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjg5Nzg3MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEhGU1BMVVNfRlNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvaGZzcGx1cy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2hmc3BsdXMvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmZzL2hmc3BsdXMvS2NvbmZpZzoyOmNvbmZpZyBIRlNQTFVTX0ZTXFxuZnMvaGZzcGx1cy9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIkFwcGxlIEV4dGVuZGVkIEhGUyBmaWxlIHN5c3RlbSBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQwNToyMzozNi43OTkxMzY5MTNaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjQzNzYwMjM3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYW5hbHlzaXMgb2YgdGhlIHNpdHVhdGlvbjpcblxuKipJbml0aWFsIEFzc2Vzc21lbnQgYW5kIEZvY3VzZWQgQXBwcm9hY2gqKlxuXG5Pa2F5LCBzbyB0aGUgaW5pdGlhbCBjb25maWcgd2UncmUgZGVhbGluZyB3aXRoIGlzIGBIRlNQTFVTX0ZTYC4gR29vZCwgdGhhdCBuYXJyb3dzIGRvd24gdGhlIHNjb3BlIGNvbnNpZGVyYWJseS4gQmFzZWQgb24gdGhlIG5hbWUsIEknbSBwcmV0dHkgc3VyZSB3ZSdyZSB0YWxraW5nIGFib3V0IHRoZSBIRlMgUGx1cyBmaWxlIHN5c3RlbS4gTm93LCB0byBtYWtlIHRoZSBtb3N0IG9mIG15IHRpbWUsIEkgbmVlZCB0byBmb2N1cyBvbiB0aGUga2V5IGZ1bmN0aW9ucyBhc3NvY2lhdGVkIHdpdGggdGhlIGNhdGFsb2d1ZSBmaWxlIG9wZXJhdGlvbnMuIFRoYXQgbWVhbnMgYGhmc3BsdXNfYnJlY19yZWFkX2NhdGAsIHdoaWNoIEknbSBhc3N1bWluZyBoYW5kbGVzIHJlYWRpbmcgZnJvbSB0aGUgQi10cmVlIHRoYXQgc3RvcmVzIHRoZSBkaXJlY3RvcnkgZW50cmllczsgYGhmc3BsdXNfZmluZF9jYXRgLCB3aGljaCBpcyBsaWtlbHkgcmVzcG9uc2libGUgZm9yIHNlYXJjaGluZyBmb3Igc3BlY2lmaWMgZW50cmllcyB3aXRoaW4gdGhhdCBCLXRyZWU7IGFuZCBgaGZzcGx1c19kZWxldGVfY2F0YCwgd2hpY2ggd2lsbCBiZSB0aGUgZnVuY3Rpb24gdG8gZGVsZXRlIGVudHJpZXMgZnJvbSB0aGUgY2F0YWxvZ3VlLiBUaG9zZSBhcmUgdGhlIG9uZXMgdG8gc2NydXRpbml6ZS4gQmVmb3JlIGRpZ2dpbmcgYW55IGRlZXBlciwgSSdsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGF0IHRoZXJlIGFyZW4ndCBhbnkgb3RoZXIgcmVsYXRlZCBjb25maWd1cmF0aW9ucyBvciBkZXBlbmRlbmNpZXMgSSBzaG91bGQgYmUgYXdhcmUgb2YgdG8gZW5zdXJlIEknbSBub3QgbWlzc2luZyBhbnl0aGluZyBjcnVjaWFsLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNzI2LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMDU6MjM6NDAuMDQyODk5NDZaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM4MzM2OTYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkhGU1BMVVNfRlNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvaGZzcGx1cy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvaGZzcGx1cy8ua3VuaXRjb25maWc9MT1DT05GSUdfS1VOSVQ9eVxcbmZzL2hmc3BsdXMvLmt1bml0Y29uZmlnOjI6Q09ORklHX0hGU1BMVVNfRlM9eVxcbmZzL2hmc3BsdXMvLmt1bml0Y29uZmlnLTMtQ09ORklHX0hGU1BMVVNfS1VOSVRfVEVTVD15XFxuLS1cXG5mcy9oZnNwbHVzL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5mcy9oZnNwbHVzL0tjb25maWc6Mjpjb25maWcgSEZTUExVU19GU1xcbmZzL2hmc3BsdXMvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJBcHBsZSBFeHRlbmRlZCBIRlMgZmlsZSBzeXN0ZW0gc3VwcG9ydFxcXCJcXG4tLVxcbmZzL2hmc3BsdXMvS2NvbmZpZz0xOD1jb25maWcgSEZTUExVU19LVU5JVF9URVNUXFxuZnMvaGZzcGx1cy9LY29uZmlnLTE5LVxcdHRyaXN0YXRlIFxcXCJLVW5pdCB0ZXN0cyBmb3IgSEZTKyBmaWxlc3lzdGVtXFxcIiBpZiAhS1VOSVRfQUxMX1RFU1RTXFxuZnMvaGZzcGx1cy9LY29uZmlnOjIwOlxcdGRlcGVuZHMgb24gSEZTUExVU19GUyBcXHUwMDI2XFx1MDAyNiBLVU5JVFxcbmZzL2hmc3BsdXMvS2NvbmZpZy0yMS1cXHRkZWZhdWx0IEtVTklUX0FMTF9URVNUU1xcbi0tXFxuZnMvaGZzcGx1cy9NYWtlZmlsZS01LVxcbmZzL2hmc3BsdXMvTWFrZWZpbGU6NjpvYmotJChDT05GSUdfSEZTUExVU19GUykgKz0gaGZzcGx1cy5vXFxuZnMvaGZzcGx1cy9NYWtlZmlsZS03LVxcbi0tXFxuZnMvaGZzcGx1cy9oZnNwbHVzX2ZzLmgtMTAtXFxuZnMvaGZzcGx1cy9oZnNwbHVzX2ZzLmg6MTE6I2lmbmRlZiBfTElOVVhfSEZTUExVU19GU19IXFxuZnMvaGZzcGx1cy9oZnNwbHVzX2ZzLmg6MTI6I2RlZmluZSBfTElOVVhfSEZTUExVU19GU19IXFxuZnMvaGZzcGx1cy9oZnNwbHVzX2ZzLmgtMTMtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDA1OjIzOjQwLjE4MTI0MTAyWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzgyNzg3ODM0MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEhGUysgQ29kZWJhc2UqKlxuXG5Pa2F5LCBzbyB0aGUgY29uZmlnIGluZGljYXRlcyB3ZSdyZSBkZWFsaW5nIHdpdGggYEhGU1BMVVNfRlNgLiBHb3QgaXQuIE5vdywgbG9va2luZyBhdCB0aGUgcmVjZW50IG1vZGlmaWNhdGlvbnMsIEkgc2VlIHRoZXkndmUgdG91Y2hlZCBgaGZzcGx1c19icmVjX3JlYWRfY2F0YCwgYGhmc3BsdXNfZmluZF9jYXRgLCBhbmQgYGhmc3BsdXNfZGVsZXRlX2NhdGAuIFRob3NlIGFyZSBhbGwgY2F0YWxvZyBmaWxlIGZ1bmN0aW9ucywgd2hpY2ggaXMgaW50ZXJlc3RpbmcuXG5cblJpZ2h0LCBgaGZzcGx1c19icmVjX3JlYWRfY2F0YCBmZWVscyBsaWtlIGEgc29saWQgc3RhcnRpbmcgcG9pbnQg4oCTIHJlYWRpbmcgY2F0YWxvZyBlbnRyaWVzIGlzIG9mdGVuIGEgdmVjdG9yLiBBbmQsIGRlZmluaXRlbHksIGBoZnNwbHVzX2RlbGV0ZV9jYXRgIGNvdWxkIGJlIGludGVyZXN0aW5nLiBNYW5pcHVsYXRpb24gb2YgdGhlIGNhdGFsb2cgc3RydWN0dXJlIGlzIGEgY2xhc3NpYyB0YXJnZXQuIE9oLCBhbmQgYGhmc3BsdXNfZmluZF9jYXRgIGFzIHdlbGwsIEkgc2hvdWxkbid0IGRpc21pc3MgdGhhdCBvbmUuXG5cbkJ1dCBiZWZvcmUgSSBkaWcgaW4sIGxldCdzIGp1c3QgY29uZmlybSB0aGVzZSBhcmUgcmVhY2hhYmxlLiBJJ20gcHJldHR5IHN1cmUgYGhmc3BsdXNfZmluZF9jYXRgIGlzIGNhbGxlZCBieSBgaGZzcGx1c19sb29rdXBgLCBvciBzb21ldGhpbmcgc2ltaWxhciwgcmlnaHQ/IE5lZWQgdG8gZW5zdXJlIHRoZXNlIGFyZW4ndCBqdXN0IGRlYWQgY29kZSBvciBpbmRpcmVjdGx5IGV4cG9zZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ0NDQsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMzMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMDU6MjM6NDQuMDA5MTIxNTMzWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk0Mzg4NDUzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImhmc3BsdXNfZmluZF9jYXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvaGZzcGx1cy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvaGZzcGx1cy9jYXRhbG9nLmM9MTc2PXN0YXRpYyBpbnQgaGZzcGx1c19maWxsX2NhdF90aHJlYWQoc3RydWN0IHN1cGVyX2Jsb2NrICpzYixcXG4tLVxcbmZzL2hmc3BsdXMvY2F0YWxvZy5jLTE5My0vKiBUcnkgdG8gZ2V0IGEgY2F0YWxvZyBlbnRyeSBmb3IgZ2l2ZW4gY2F0YWxvZyBpZCAqL1xcbmZzL2hmc3BsdXMvY2F0YWxvZy5jOjE5NDppbnQgaGZzcGx1c19maW5kX2NhdChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCB1MzIgY25pZCxcXG5mcy9oZnNwbHVzL2NhdGFsb2cuYy0xOTUtXFx0XFx0ICAgICBzdHJ1Y3QgaGZzX2ZpbmRfZGF0YSAqZmQpXFxuLS1cXG5mcy9oZnNwbHVzL2hmc3BsdXNfZnMuaD00MjA9dm9pZCBoZnNwbHVzX2NhdF9zZXRfcGVybXMoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGhmc3BsdXNfcGVybSAqcGVybXMpO1xcbmZzL2hmc3BsdXMvaGZzcGx1c19mcy5oOjQyMTppbnQgaGZzcGx1c19maW5kX2NhdChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCB1MzIgY25pZCxcXG5mcy9oZnNwbHVzL2hmc3BsdXNfZnMuaC00MjItXFx0XFx0ICAgICBzdHJ1Y3QgaGZzX2ZpbmRfZGF0YSAqZmQpO1xcbi0tXFxuZnMvaGZzcGx1cy9pbm9kZS5jPTY3Nz1pbnQgaGZzcGx1c19jYXRfd3JpdGVfaW5vZGUoc3RydWN0IGlub2RlICppbm9kZSlcXG4tLVxcbmZzL2hmc3BsdXMvaW5vZGUuYy02OTYtXFxuZnMvaGZzcGx1cy9pbm9kZS5jOjY5NzpcXHRpZiAoaGZzcGx1c19maW5kX2NhdChtYWluX2lub2RlLVxcdTAwM2VpX3NiLCBtYWluX2lub2RlLVxcdTAwM2VpX2lubywgXFx1MDAyNmZkKSlcXG5mcy9oZnNwbHVzL2lub2RlLmMtNjk4LVxcdFxcdC8qIHBhbmljPyAqL1xcbi0tXFxuZnMvaGZzcGx1cy9zdXBlci5jPTY1PXN0cnVjdCBpbm9kZSAqaGZzcGx1c19pZ2V0KHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHVuc2lnbmVkIGxvbmcgaW5vKVxcbi0tXFxuZnMvaGZzcGx1cy9zdXBlci5jLTk5LVxcdFxcdGlmICghZXJyKSB7XFxuZnMvaGZzcGx1cy9zdXBlci5jOjEwMDpcXHRcXHRcXHRlcnIgPSBoZnNwbHVzX2ZpbmRfY2F0KGlub2RlLVxcdTAwM2VpX3NiLCBpbm9kZS1cXHUwMDNlaV9pbm8sIFxcdTAwMjZmZCk7XFxuZnMvaGZzcGx1cy9zdXBlci5jLTEwMS1cXHRcXHRcXHRpZiAoIWVycilcXG4tLVxcbmZzL2hmc3BsdXMveGF0dHIuYz0zNTE9aW50IF9faGZzcGx1c19zZXR4YXR0cihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBjb25zdCBjaGFyICpuYW1lLFxcbi0tXFxuZnMvaGZzcGx1cy94YXR0ci5jLTM3Ni1cXG5mcy9oZnNwbHVzL3hhdHRyLmM6Mzc3OlxcdGVyciA9IGhmc3BsdXNfZmluZF9jYXQoaW5vZGUtXFx1MDAzZWlfc2IsIGlub2RlLVxcdTAwM2VpX2lubywgXFx1MDAyNmNhdF9mZCk7XFxuZnMvaGZzcGx1cy94YXR0ci5jLTM3OC1cXHRpZiAoZXJyKSB7XFxuLS1cXG5mcy9oZnNwbHVzL3hhdHRyLmM9NTYyPXN0YXRpYyBzc2l6ZV90IGhmc3BsdXNfZ2V0eGF0dHJfZmluZGVyX2luZm8oc3RydWN0IGlub2RlICppbm9kZSxcXG4tLVxcbmZzL2hmc3BsdXMveGF0dHIuYy01NzktXFx0XFx0fVxcbmZzL2hmc3BsdXMveGF0dHIuYzo1ODA6XFx0XFx0cmVzID0gaGZzcGx1c19maW5kX2NhdChpbm9kZS1cXHUwMDNlaV9zYiwgaW5vZGUtXFx1MDAzZWlfaW5vLCBcXHUwMDI2ZmQpO1xcbmZzL2hmc3BsdXMveGF0dHIuYy01ODEtXFx0XFx0aWYgKHJlcylcXG4tLVxcbmZzL2hmc3BsdXMveGF0dHIuYz03MzQ9c3RhdGljIHNzaXplX3QgaGZzcGx1c19saXN0eGF0dHJfZmluZGVyX2luZm8oc3RydWN0IGRlbnRyeSAqZGVudHJ5LFxcbi0tXFxuZnMvaGZzcGx1cy94YXR0ci5jLTc1MS1cXG5mcy9oZnNwbHVzL3hhdHRyLmM6NzUyOlxcdHJlcyA9IGhmc3BsdXNfZmluZF9jYXQoaW5vZGUtXFx1MDAzZWlfc2IsIGlub2RlLVxcdTAwM2VpX2lubywgXFx1MDAyNmZkKTtcXG5mcy9oZnNwbHVzL3hhdHRyLmMtNzUzLVxcdGlmIChyZXMpXFxuLS1cXG5mcy9oZnNwbHVzL3hhdHRyLmM9OTA2PXN0YXRpYyBpbnQgaGZzcGx1c19yZW1vdmV4YXR0cihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBjb25zdCBjaGFyICpuYW1lKVxcbi0tXFxuZnMvaGZzcGx1cy94YXR0ci5jLTkyOS1cXG5mcy9oZnNwbHVzL3hhdHRyLmM6OTMwOlxcdGVyciA9IGhmc3BsdXNfZmluZF9jYXQoaW5vZGUtXFx1MDAzZWlfc2IsIGlub2RlLVxcdTAwM2VpX2lubywgXFx1MDAyNmNhdF9mZCk7XFxuZnMvaGZzcGx1cy94YXR0ci5jLTkzMS1cXHRpZiAoZXJyKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDA1OjIzOjQ0LjEwMzUxNDQ3NloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ2MjEyODk1NzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgZnJvbSBteSBleHBlcnQgcGVyc3BlY3RpdmU6XG5cbioqSEZTKyBDYXRhbG9nIFJlY29yZCBPcGVyYXRpb25zOiBBIEZvY3VzZWQgQXNzZXNzbWVudCoqXG5cblJpZ2h0LCBzbyB3ZSdyZSB0YWxraW5nIGFib3V0IGEgcGF0Y2ggdGhhdCdzIGNsZWFybHkgYWRkcmVzc2luZyBpc3N1ZXMgd2l0aGluIHRoZSBIRlMrIGNhdGFsb2cgaGFuZGxpbmcuIFRoZSBrZXkgb3BlcmF0aW9ucywgYXMgZmFyIGFzIEkgY2FuIHNlZSwgYXJlIGBoZnNwbHVzX2RlbGV0ZV9jYXRgIGZvciBmaWxlL2RpcmVjdG9yeSBkZWxldGlvbiwgYW5kIGBoZnNwbHVzX2JyZWNfcmVhZF9jYXRgIGZvciByZWFkaW5nIHRob3NlIGNydWNpYWwgY2F0YWxvZyByZWNvcmRzLiBUaGUgZmFjdCB0aGF0IHRoZSBwYXRjaCBpcyAqZnVuY3Rpb25hbCogaXMgYSBnb29kIHNpZ24g4oCTIGl0IHN1Z2dlc3RzIGEgdGFuZ2libGUgaW1wcm92ZW1lbnQsIGFuZCB0aGF0IHRoZSBidWdzIGFyZSBnZXR0aW5nIGFkZHJlc3NlZC5cblxuVGhlIGBXb3J0aEZ1enppbmc6IHRydWVgIGZsYWcgYW5kIHRoZSBgRm9jdXNTeW1ib2xzYCBsaXN0LCB0aGF0J3Mgd2hhdCBwaXF1ZXMgbXkgaW50ZXJlc3QuIEl0IG1lYW5zIHdlJ3ZlIGlkZW50aWZpZWQgdGhlIHNwZWNpZmljIGFyZWFzIG1vc3QgbGlrZWx5IHRvIGJlbmVmaXQgZnJvbSByaWdvcm91cyB0ZXN0aW5nLiBUYXJnZXRpbmcgYGhmc3BsdXNfYnJlY19yZWFkX2NhdGAsIGBoZnNwbHVzX2ZpbmRfY2F0YCwgYW5kIGBoZnNwbHVzX2RlbGV0ZV9jYXRgIG1ha2VzIHBlcmZlY3Qgc2Vuc2UuIFRoZXNlIGFyZSB0aGUgY3JpdGljYWwgZnVuY3Rpb25zIHdoZXJlIGRhdGEgY29ycnVwdGlvbiBvciB1bmV4cGVjdGVkIGJlaGF2aW9yIGNvdWxkIGVhc2lseSBtYW5pZmVzdCwgZXNwZWNpYWxseSB3aXRoIGNvbXBsZXggb3IgbWFsZm9ybWVkIGNhdGFsb2cgZW50cmllcy4gRnV6emluZyB0aGVtIGlzIGEgZ3JlYXQgd2F5IHRvIGV4cG9zZSBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0aWVzLlxuXG5UaGUgYEVuYWJsZUNvbmZpZ3M6IEhGU1BMVVNfRlNgIGlzIGEgc2ltcGxlIGluY2x1c2lvbiB0YWcuXG5cbk15IGFzc2Vzc21lbnQgaXMgdGhhdCB0aGlzIGlzIGEgd2VsbC10YXJnZXRlZCBpbXByb3ZlbWVudCB0byBIRlMrIGhhbmRsaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1ODE3LCJPdXRwdXRUb2tlbnMiOjExNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQwNToyMzo0OC43MjQ4MDczNFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyMTI2ODUyMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSEZTUExVU19GU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImhmc3BsdXNfYnJlY19yZWFkX2NhdFwiLFxuICAgIFwiaGZzcGx1c19maW5kX2NhdFwiLFxuICAgIFwiaGZzcGx1c19kZWxldGVfY2F0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBib3VuZHMgY2hlY2tpbmcgYW5kIHR5cGUgdmFsaWRhdGlvbiBmb3IgSEZTKyBjYXRhbG9nIHRocmVhZCByZWNvcmRzLCBmaXhpbmcgcG90ZW50aWFsIG91dC1vZi1ib3VuZHMgcmVhZHMgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGJ1Z3MuIFRoaXMgbW9kaWZpZXMgY29yZSBmaWxlc3lzdGVtIGxvZ2ljIHRoYXQgaXMgcmVhY2hhYmxlIGZyb20gdXNlciBzcGFjZSB2aWEgZmlsZXN5c3RlbSBvcGVyYXRpb25zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkhGU1BMVVNfRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJoZnNwbHVzX2JyZWNfcmVhZF9jYXRcIixcbiAgICBcImhmc3BsdXNfZmluZF9jYXRcIixcbiAgICBcImhmc3BsdXNfZGVsZXRlX2NhdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYm91bmRzIGNoZWNraW5nIGFuZCB0eXBlIHZhbGlkYXRpb24gZm9yIEhGUysgY2F0YWxvZyB0aHJlYWQgcmVjb3JkcywgZml4aW5nIHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIHJlYWRzIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBidWdzLiBUaGlzIG1vZGlmaWVzIGNvcmUgZmlsZXN5c3RlbSBsb2dpYyB0aGF0IGlzIHJlYWNoYWJsZSBmcm9tIHVzZXIgc3BhY2UgdmlhIGZpbGVzeXN0ZW0gb3BlcmF0aW9ucy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow5q2ck[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-08 05:03:10 +0000 UTC FinishedAt: 2026-07-08 05:23:50 +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": "0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "HFSPLUS_FS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "HFSPLUS_FS" ], "series_id": "0f44a0db-ac7c-41e0-aad5-af36e5c93602" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "hfsplus_brec_read_cat", "hfsplus_find_cat", "hfsplus_delete_cat" ], "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+CgkJCTx0ZD4yMDI2LzA3LzA4IDA1OjIzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0hGU1BMVVNfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtoZnNwbHVzX2JyZWNfcmVhZF9jYXQmIzM0OywKICAgICYjMzQ7aGZzcGx1c19maW5kX2NhdCYjMzQ7LAogICAgJiMzNDtoZnNwbHVzX2RlbGV0ZV9jYXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBib3VuZHMgY2hlY2tpbmcgYW5kIHR5cGUgdmFsaWRhdGlvbiBmb3IgSEZTJiM0MzsgY2F0YWxvZyB0aHJlYWQgcmVjb3JkcywgZml4aW5nIHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIHJlYWRzIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBidWdzLiBUaGlzIG1vZGlmaWVzIGNvcmUgZmlsZXN5c3RlbSBsb2dpYyB0aGF0IGlzIHJlYWNoYWJsZSBmcm9tIHVzZXIgc3BhY2UgdmlhIGZpbGVzeXN0ZW0gb3BlcmF0aW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAwNToyMzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGMyZmM3YzY0MmQ5MzU4NmEyNzU5ZDY5NDgyYjBiNzY3ZGUxN2JiYmNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEp1bCA4IDA1OjIzOjI5IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2ZzL2hmc3BsdXMvYmZpbmQuYyBiL2ZzL2hmc3BsdXMvYmZpbmQuY1xuaW5kZXggOWE1NWZhNmQ1Mjk0MjkuLjQxN2MzMDE0ZjRjN2QwIDEwMDY0NFxuLS0tIGEvZnMvaGZzcGx1cy9iZmluZC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9mcy9oZnNwbHVzL2JmaW5kLmNcbkBAIC0zMjIsNiAmIzQzOzMyMiwxMSBAQCBpbnQgaGZzcGx1c19icmVjX3JlYWRfY2F0KHN0cnVjdCBoZnNfZmluZF9kYXRhICpmZCwgaGZzcGx1c19jYXRfZW50cnkgKmVudHJ5KVxuIFx0XHRcdHByX2VycihcJiMzNDt0aHJlYWQgcmVjb3JkIHRvbyBzaG9ydCAoZ290ICV1KVxcblwmIzM0OywgZmQtXHUwMDNlZW50cnlsZW5ndGgpO1xuIFx0XHRcdHJldHVybiAtRUlPO1xuIFx0XHR9XG4mIzQzO1x0XHRpZiAoYmUxNl90b19jcHUoZW50cnktXHUwMDNldGhyZWFkLm5vZGVOYW1lLmxlbmd0aCkgXHUwMDNlXG4mIzQzO1x0XHQgICAgSEZTUExVU19NQVhfU1RSTEVOKSB7XG4mIzQzO1x0XHRcdHByX2VycihcJiMzNDtjYXRhbG9nIG5hbWUgbGVuZ3RoIGNvcnJ1cHRlZFxcblwmIzM0Oyk7XG4mIzQzO1x0XHRcdHJldHVybiAtRUlPO1xuJiM0MztcdFx0fVxuIFx0XHRleHBlY3RlZF9zaXplID0gaGZzcGx1c19jYXRfdGhyZWFkX3NpemUoXHUwMDI2ZW50cnktXHUwMDNldGhyZWFkKTtcbiBcdFx0YnJlYWs7XG4gXHRkZWZhdWx0OlxuZGlmZiAtLWdpdCBhL2ZzL2hmc3BsdXMvY2F0YWxvZy5jIGIvZnMvaGZzcGx1cy9jYXRhbG9nLmNcbmluZGV4IDc3NmNlMzZjZjA3NmI0Li4xYTRiMGJlYWUxMzUwNiAxMDA2NDRcbi0tLSBhL2ZzL2hmc3BsdXMvY2F0YWxvZy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9mcy9oZnNwbHVzL2NhdGFsb2cuY1xuQEAgLTIwNCwxNiAmIzQzOzIwNCwxMSBAQCBpbnQgaGZzcGx1c19maW5kX2NhdChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCB1MzIgY25pZCxcbiBcdFx0cmV0dXJuIGVycjtcbiBcbiBcdHR5cGUgPSBiZTE2X3RvX2NwdSh0bXAudHlwZSk7XG4tXHRpZiAodHlwZSAhPSBIRlNQTFVTX0ZPTERFUl9USFJFQUQgXHUwMDI2XHUwMDI2IHR5cGUgIT0gSEZTUExVU19GSUxFX1RIUkVBRCkge1xuJiM0MztcdGlmICghaXNfaGZzX3RocmVhZF9yZWNvcmRfdHlwZSh0eXBlKSkge1xuIFx0XHRwcl9lcnIoXCYjMzQ7Zm91bmQgYmFkIHRocmVhZCByZWNvcmQgaW4gY2F0YWxvZ1xcblwmIzM0Oyk7XG4gXHRcdHJldHVybiAtRUlPO1xuIFx0fVxuIFxuLVx0aWYgKGJlMTZfdG9fY3B1KHRtcC50aHJlYWQubm9kZU5hbWUubGVuZ3RoKSBcdTAwM2UgMjU1KSB7XG4tXHRcdHByX2VycihcJiMzNDtjYXRhbG9nIG5hbWUgbGVuZ3RoIGNvcnJ1cHRlZFxcblwmIzM0Oyk7XG4tXHRcdHJldHVybiAtRUlPO1xuLVx0fVxuLVxuIFx0aGZzcGx1c19jYXRfYnVpbGRfa2V5X3VuaShmZC1cdTAwM2VzZWFyY2hfa2V5LFxuIFx0XHRiZTMyX3RvX2NwdSh0bXAudGhyZWFkLnBhcmVudElEKSxcbiBcdFx0XHUwMDI2dG1wLnRocmVhZC5ub2RlTmFtZSk7XG5AQCAtMzUwLDIzICYjNDM7MzQ1LDIyIEBAIGludCBoZnNwbHVzX2RlbGV0ZV9jYXQodTMyIGNuaWQsIHN0cnVjdCBpbm9kZSAqZGlyLCBjb25zdCBzdHJ1Y3QgcXN0ciAqc3RyKVxuIFx0XHRnb3RvIG91dDtcbiBcbiBcdGlmICghc3RyKSB7XG4tXHRcdGludCBsZW47XG4mIzQzO1x0XHRoZnNwbHVzX2NhdF9lbnRyeSBlbnRyeSA9IHswfTtcbiBcbiBcdFx0aGZzcGx1c19jYXRfYnVpbGRfa2V5X3dpdGhfY25pZChzYiwgZmQuc2VhcmNoX2tleSwgY25pZCk7XG4tXHRcdGVyciA9IGhmc19icmVjX2ZpbmQoXHUwMDI2ZmQsIGhmc19maW5kX3JlY19ieV9rZXkpO1xuJiM0MztcdFx0ZXJyID0gaGZzcGx1c19icmVjX3JlYWRfY2F0KFx1MDAyNmZkLCBcdTAwMjZlbnRyeSk7XG4gXHRcdGlmIChlcnIpXG4gXHRcdFx0Z290byBvdXQ7XG4gXG4tXHRcdG9mZiA9IGZkLmVudHJ5b2Zmc2V0ICYjNDM7XG4tXHRcdFx0b2Zmc2V0b2Yoc3RydWN0IGhmc3BsdXNfY2F0X3RocmVhZCwgbm9kZU5hbWUpO1xuLVx0XHRmZC5zZWFyY2hfa2V5LVx1MDAzZWNhdC5wYXJlbnQgPSBjcHVfdG9fYmUzMihkaXItXHUwMDNlaV9pbm8pO1xuLVx0XHRoZnNfYm5vZGVfcmVhZChmZC5ibm9kZSxcbi1cdFx0XHRcdTAwMjZmZC5zZWFyY2hfa2V5LVx1MDAzZWNhdC5uYW1lLmxlbmd0aCwgb2ZmLCAyKTtcbi1cdFx0bGVuID0gYmUxNl90b19jcHUoZmQuc2VhcmNoX2tleS1cdTAwM2VjYXQubmFtZS5sZW5ndGgpICogMjtcbi1cdFx0aGZzX2Jub2RlX3JlYWQoZmQuYm5vZGUsXG4tXHRcdFx0XHUwMDI2ZmQuc2VhcmNoX2tleS1cdTAwM2VjYXQubmFtZS51bmljb2RlLFxuLVx0XHRcdG9mZiAmIzQzOyAyLCBsZW4pO1xuLVx0XHRmZC5zZWFyY2hfa2V5LVx1MDAzZWtleV9sZW4gPSBjcHVfdG9fYmUxNig2ICYjNDM7IGxlbik7XG4mIzQzO1x0XHR0eXBlID0gYmUxNl90b19jcHUoZW50cnkudHlwZSk7XG4mIzQzO1x0XHRpZiAoIWlzX2hmc190aHJlYWRfcmVjb3JkX3R5cGUodHlwZSkpIHtcbiYjNDM7XHRcdFx0cHJfZXJyKFwmIzM0O2ZvdW5kIGJhZCB0aHJlYWQgcmVjb3JkIGluIGNhdGFsb2dcXG5cJiMzNDspO1xuJiM0MztcdFx0XHRlcnIgPSAtRUlPO1xuJiM0MztcdFx0XHRnb3RvIG91dDtcbiYjNDM7XHRcdH1cbiYjNDM7XG4mIzQzO1x0XHRoZnNwbHVzX2NhdF9idWlsZF9rZXlfdW5pKGZkLnNlYXJjaF9rZXksIGRpci1cdTAwM2VpX2lubyxcbiYjNDM7XHRcdFx0XHRcdCAgXHUwMDI2ZW50cnkudGhyZWFkLm5vZGVOYW1lKTtcbiBcdH0gZWxzZSB7XG4gXHRcdGVyciA9IGhmc3BsdXNfY2F0X2J1aWxkX2tleShzYiwgZmQuc2VhcmNoX2tleSwgZGlyLVx1MDAzZWlfaW5vLCBzdHIpO1xuIFx0XHRpZiAodW5saWtlbHkoZXJyKSlcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2hmc19jb21tb24uaCBiL2luY2x1ZGUvbGludXgvaGZzX2NvbW1vbi5oXG5pbmRleCA0NWZiNGM5ZmY5ZjVlZS4uYzQ4NjIxNjZlZmM5OTQgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L2hmc19jb21tb24uaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9oZnNfY29tbW9uLmhcbkBAIC05Miw2ICYjNDM7OTIsMTEgQEBcbiAjZGVmaW5lIEhGU19DRFJfVEhEXHRcdDB4MDNcdC8qIGZvbGRlciAoZGlyZWN0b3J5KSB0aHJlYWQgKi9cbiAjZGVmaW5lIEhGU19DRFJfRlRIXHRcdDB4MDRcdC8qIGZpbGUgdGhyZWFkICovXG4gXG4mIzQzO3N0YXRpYyBpbmxpbmUgYm9vbCBpc19oZnNfdGhyZWFkX3JlY29yZF90eXBlKHUxNiB0eXBlKVxuJiM0Mzt7XG4mIzQzO1x0cmV0dXJuIHR5cGUgPT0gSEZTX0NEUl9USEQgfHwgdHlwZSA9PSBIRlNfQ0RSX0ZUSDtcbiYjNDM7fVxuJiM0MztcbiAvKiBsZWdhbCB2YWx1ZXMgZm9yIGhmc19leHRfa2V5LkZrVHlwZSBhbmQgaGZzX2ZpbGUuZm9yayAqL1xuICNkZWZpbmUgSEZTX0ZLX0RBVEFcdFx0MHgwMFxuICNkZWZpbmUgSEZTX0ZLX1JTUkNcdFx0MHhGRlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDA1OjIzPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0hGU1BMVVNfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtoZnNwbHVzX2JyZWNfcmVhZF9jYXQmIzM0OywKICAgICYjMzQ7aGZzcGx1c19maW5kX2NhdCYjMzQ7LAogICAgJiMzNDtoZnNwbHVzX2RlbGV0ZV9jYXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBib3VuZHMgY2hlY2tpbmcgYW5kIHR5cGUgdmFsaWRhdGlvbiBmb3IgSEZTJiM0MzsgY2F0YWxvZyB0aHJlYWQgcmVjb3JkcywgZml4aW5nIHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIHJlYWRzIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBidWdzLiBUaGlzIG1vZGlmaWVzIGNvcmUgZmlsZXN5c3RlbSBsb2dpYyB0aGF0IGlzIHJlYWNoYWJsZSBmcm9tIHVzZXIgc3BhY2UgdmlhIGZpbGVzeXN0ZW0gb3BlcmF0aW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYzJmYzdjNjQyZDkzNTg2YTI3NTlkNjk0ODJiMGI3NjdkZTE3YmJiYwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgSnVsIDggMDU6MjM6MjkgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9mcy9oZnNwbHVzL2JmaW5kLmMgYi9mcy9oZnNwbHVzL2JmaW5kLmMKaW5kZXggOWE1NWZhNmQ1Mjk0MjkuLjQxN2MzMDE0ZjRjN2QwIDEwMDY0NAotLS0gYS9mcy9oZnNwbHVzL2JmaW5kLmMKJiM0MzsmIzQzOyYjNDM7IGIvZnMvaGZzcGx1cy9iZmluZC5jCkBAIC0zMjIsNiAmIzQzOzMyMiwxMSBAQCBpbnQgaGZzcGx1c19icmVjX3JlYWRfY2F0KHN0cnVjdCBoZnNfZmluZF9kYXRhICpmZCwgaGZzcGx1c19jYXRfZW50cnkgKmVudHJ5KQogCQkJcHJfZXJyKCYjMzQ7dGhyZWFkIHJlY29yZCB0b28gc2hvcnQgKGdvdCAldSlcbiYjMzQ7LCBmZC0mZ3Q7ZW50cnlsZW5ndGgpOwogCQkJcmV0dXJuIC1FSU87CiAJCX0KJiM0MzsJCWlmIChiZTE2X3RvX2NwdShlbnRyeS0mZ3Q7dGhyZWFkLm5vZGVOYW1lLmxlbmd0aCkgJmd0OwomIzQzOwkJICAgIEhGU1BMVVNfTUFYX1NUUkxFTikgewomIzQzOwkJCXByX2VycigmIzM0O2NhdGFsb2cgbmFtZSBsZW5ndGggY29ycnVwdGVkXG4mIzM0Oyk7CiYjNDM7CQkJcmV0dXJuIC1FSU87CiYjNDM7CQl9CiAJCWV4cGVjdGVkX3NpemUgPSBoZnNwbHVzX2NhdF90aHJlYWRfc2l6ZSgmYW1wO2VudHJ5LSZndDt0aHJlYWQpOwogCQlicmVhazsKIAlkZWZhdWx0OgpkaWZmIC0tZ2l0IGEvZnMvaGZzcGx1cy9jYXRhbG9nLmMgYi9mcy9oZnNwbHVzL2NhdGFsb2cuYwppbmRleCA3NzZjZTM2Y2YwNzZiNC4uMWE0YjBiZWFlMTM1MDYgMTAwNjQ0Ci0tLSBhL2ZzL2hmc3BsdXMvY2F0YWxvZy5jCiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2hmc3BsdXMvY2F0YWxvZy5jCkBAIC0yMDQsMTYgJiM0MzsyMDQsMTEgQEAgaW50IGhmc3BsdXNfZmluZF9jYXQoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgdTMyIGNuaWQsCiAJCXJldHVybiBlcnI7CiAKIAl0eXBlID0gYmUxNl90b19jcHUodG1wLnR5cGUpOwotCWlmICh0eXBlICE9IEhGU1BMVVNfRk9MREVSX1RIUkVBRCAmYW1wOyZhbXA7IHR5cGUgIT0gSEZTUExVU19GSUxFX1RIUkVBRCkgewomIzQzOwlpZiAoIWlzX2hmc190aHJlYWRfcmVjb3JkX3R5cGUodHlwZSkpIHsKIAkJcHJfZXJyKCYjMzQ7Zm91bmQgYmFkIHRocmVhZCByZWNvcmQgaW4gY2F0YWxvZ1xuJiMzNDspOwogCQlyZXR1cm4gLUVJTzsKIAl9CiAKLQlpZiAoYmUxNl90b19jcHUodG1wLnRocmVhZC5ub2RlTmFtZS5sZW5ndGgpICZndDsgMjU1KSB7Ci0JCXByX2VycigmIzM0O2NhdGFsb2cgbmFtZSBsZW5ndGggY29ycnVwdGVkXG4mIzM0Oyk7Ci0JCXJldHVybiAtRUlPOwotCX0KLQogCWhmc3BsdXNfY2F0X2J1aWxkX2tleV91bmkoZmQtJmd0O3NlYXJjaF9rZXksCiAJCWJlMzJfdG9fY3B1KHRtcC50aHJlYWQucGFyZW50SUQpLAogCQkmYW1wO3RtcC50aHJlYWQubm9kZU5hbWUpOwpAQCAtMzUwLDIzICYjNDM7MzQ1LDIyIEBAIGludCBoZnNwbHVzX2RlbGV0ZV9jYXQodTMyIGNuaWQsIHN0cnVjdCBpbm9kZSAqZGlyLCBjb25zdCBzdHJ1Y3QgcXN0ciAqc3RyKQogCQlnb3RvIG91dDsKIAogCWlmICghc3RyKSB7Ci0JCWludCBsZW47CiYjNDM7CQloZnNwbHVzX2NhdF9lbnRyeSBlbnRyeSA9IHswfTsKIAogCQloZnNwbHVzX2NhdF9idWlsZF9rZXlfd2l0aF9jbmlkKHNiLCBmZC5zZWFyY2hfa2V5LCBjbmlkKTsKLQkJZXJyID0gaGZzX2JyZWNfZmluZCgmYW1wO2ZkLCBoZnNfZmluZF9yZWNfYnlfa2V5KTsKJiM0MzsJCWVyciA9IGhmc3BsdXNfYnJlY19yZWFkX2NhdCgmYW1wO2ZkLCAmYW1wO2VudHJ5KTsKIAkJaWYgKGVycikKIAkJCWdvdG8gb3V0OwogCi0JCW9mZiA9IGZkLmVudHJ5b2Zmc2V0ICYjNDM7Ci0JCQlvZmZzZXRvZihzdHJ1Y3QgaGZzcGx1c19jYXRfdGhyZWFkLCBub2RlTmFtZSk7Ci0JCWZkLnNlYXJjaF9rZXktJmd0O2NhdC5wYXJlbnQgPSBjcHVfdG9fYmUzMihkaXItJmd0O2lfaW5vKTsKLQkJaGZzX2Jub2RlX3JlYWQoZmQuYm5vZGUsCi0JCQkmYW1wO2ZkLnNlYXJjaF9rZXktJmd0O2NhdC5uYW1lLmxlbmd0aCwgb2ZmLCAyKTsKLQkJbGVuID0gYmUxNl90b19jcHUoZmQuc2VhcmNoX2tleS0mZ3Q7Y2F0Lm5hbWUubGVuZ3RoKSAqIDI7Ci0JCWhmc19ibm9kZV9yZWFkKGZkLmJub2RlLAotCQkJJmFtcDtmZC5zZWFyY2hfa2V5LSZndDtjYXQubmFtZS51bmljb2RlLAotCQkJb2ZmICYjNDM7IDIsIGxlbik7Ci0JCWZkLnNlYXJjaF9rZXktJmd0O2tleV9sZW4gPSBjcHVfdG9fYmUxNig2ICYjNDM7IGxlbik7CiYjNDM7CQl0eXBlID0gYmUxNl90b19jcHUoZW50cnkudHlwZSk7CiYjNDM7CQlpZiAoIWlzX2hmc190aHJlYWRfcmVjb3JkX3R5cGUodHlwZSkpIHsKJiM0MzsJCQlwcl9lcnIoJiMzNDtmb3VuZCBiYWQgdGhyZWFkIHJlY29yZCBpbiBjYXRhbG9nXG4mIzM0Oyk7CiYjNDM7CQkJZXJyID0gLUVJTzsKJiM0MzsJCQlnb3RvIG91dDsKJiM0MzsJCX0KJiM0MzsKJiM0MzsJCWhmc3BsdXNfY2F0X2J1aWxkX2tleV91bmkoZmQuc2VhcmNoX2tleSwgZGlyLSZndDtpX2lubywKJiM0MzsJCQkJCSAgJmFtcDtlbnRyeS50aHJlYWQubm9kZU5hbWUpOwogCX0gZWxzZSB7CiAJCWVyciA9IGhmc3BsdXNfY2F0X2J1aWxkX2tleShzYiwgZmQuc2VhcmNoX2tleSwgZGlyLSZndDtpX2lubywgc3RyKTsKIAkJaWYgKHVubGlrZWx5KGVycikpCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2hmc19jb21tb24uaCBiL2luY2x1ZGUvbGludXgvaGZzX2NvbW1vbi5oCmluZGV4IDQ1ZmI0YzlmZjlmNWVlLi5jNDg2MjE2NmVmYzk5NCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9oZnNfY29tbW9uLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9oZnNfY29tbW9uLmgKQEAgLTkyLDYgJiM0Mzs5MiwxMSBAQAogI2RlZmluZSBIRlNfQ0RSX1RIRAkJMHgwMwkvKiBmb2xkZXIgKGRpcmVjdG9yeSkgdGhyZWFkICovCiAjZGVmaW5lIEhGU19DRFJfRlRICQkweDA0CS8qIGZpbGUgdGhyZWFkICovCiAKJiM0MztzdGF0aWMgaW5saW5lIGJvb2wgaXNfaGZzX3RocmVhZF9yZWNvcmRfdHlwZSh1MTYgdHlwZSkKJiM0Mzt7CiYjNDM7CXJldHVybiB0eXBlID09IEhGU19DRFJfVEhEIHx8IHR5cGUgPT0gSEZTX0NEUl9GVEg7CiYjNDM7fQomIzQzOwogLyogbGVnYWwgdmFsdWVzIGZvciBoZnNfZXh0X2tleS5Ga1R5cGUgYW5kIGhmc19maWxlLmZvcmsgKi8KICNkZWZpbmUgSEZTX0ZLX0RBVEEJCTB4MDAKICNkZWZpbmUgSEZTX0ZLX1JTUkMJCTB4RkYKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMDU6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjk5OAoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDIxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEhGUyYjNDM7IEZpbGVzeXN0ZW0gUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGl0JiMzOTtzIHRvdWNoaW5nIHNvbWUgY29yZSBhcmVhcyBvZiB0aGUgSEZTJiM0MzsgZmlsZXN5c3RlbS4gU3BlY2lmaWNhbGx5LCBgZnMvaGZzcGx1cy9iZmluZC5jYCwgYGZzL2hmc3BsdXMvY2F0YWxvZy5jYCwgYW5kIGBpbmNsdWRlL2xpbnV4L2hmc19jb21tb24uaGAuIFRoYXQgYWxvbmUgdGVsbHMgbWUgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBwb3RlbnRpYWxseSBjcml0aWNhbCBtb2RpZmljYXRpb25zIHRvIGhvdyB0aGUgZmlsZXN5c3RlbSBzdHJ1Y3R1cmVzIGFyZSBoYW5kbGVkLgoKVGhlIGtleSBjaGFuZ2UgSSBzZWUgaXMgdGhlIGludHJvZHVjdGlvbiBvZiBhIGxlbmd0aCBjaGVjayB3aXRoaW4gYGhmc3BsdXNfYnJlY19yZWFkX2NhdCgpYC4gSXQgc2VlbXMgd2UmIzM5O3JlIGd1YXJkaW5nIGFnYWluc3QgYSBwb3RlbnRpYWxseSBtYWxpY2lvdXMgb3IgY29ycnVwdCBjYXRhbG9nIGVudHJ5IHdoZXJlIHRoZSB0aHJlYWQmIzM5O3Mgbm9kZSBuYW1lIGxlbmd0aCBtaWdodCBleGNlZWQgYEhGU1BMVVNfTUFYX1NUUkxFTmAuIEdvb2QsIHRoYXQmIzM5O3MgYSBjbGFzc2ljIGJ1ZmZlciBvdmVyZmxvdyBwcmV2ZW50aW9uIHN0cmF0ZWd5LiBQcmV2ZW50aW5nIGFuIGV4Y2Vzc2l2ZSBzdHJpbmcgbGVuZ3RoLCBjb3VsZCBtaXRpZ2F0ZSBhIHBvdGVudGlhbCBzZWN1cml0eSB2dWxuZXJhYmlsaXR5LgoKSSBhbHNvIG5vdGljZSB0aGUgaW50cm9kdWN0aW9uIG9mIGBpc19oZnNfdGhyZWFkX3JlY29yZF90eXBlKClgIGFuZCBpdHMgdXNlIGluIGBoZnNwbHVzX2ZpbmRfY2F0KClgIGFuZCBgaGZzcGx1c19kZWxldGVfY2F0KClgLiBJJiMzOTttIGFzc3VtaW5nIHRoaXMgaXMgYSB0eXBlIGNoZWNrIHdoaWNoIHdpbGwgZW5zdXJlIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggdGhlIGNvcnJlY3QgcmVjb3JkIHR5cGUgYmVmb3JlIGF0dGVtcHRpbmcgdG8gb3BlcmF0ZSBvbiBpdC4gUHJldmVudHMgbWlzaW50ZXJwcmV0YXRpb25zLgoKVGhlIHJlZmFjdG9yaW5nIG9mIGBoZnNwbHVzX2RlbGV0ZV9jYXQoKWAgaXMgaW50ZXJlc3RpbmcuIFRoZSBwYXRjaCBpcyBub3cgdXNpbmcgYGhmc3BsdXNfYnJlY19yZWFkX2NhdCgpYCBpbnN0ZWFkIG9mIGBoZnNfYnJlY19maW5kKClgIGZvbGxvd2VkIGJ5IG1hbnVhbCByZWFkaW5nIG9mIGBub2RlTmFtZWAuIExvb2tzIGxpa2Ugd2UgYXJlIGltcHJvdmluZyBjb2RlIHJldXNhYmlsaXR5IGFuZCBzaW1wbGlmeWluZyBgaGZzcGx1c19kZWxldGVfY2F0KClgLiBUaGF0JiMzOTtzIGEgZ29vZCBzdGVwIHRvd2FyZCBtYWludGFpbmFiaWxpdHkuCgpHaXZlbiB0aGF0IHRoaXMgaXMgZnVuY3Rpb25hbCBjb2RlLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgc3BlY2lmaWNzIG9mIGhvdyBIRlNQTFVTIGlzIGNvbmZpZ3VyZWQgaW4gdGhpcyBrZXJuZWwuIExldCBtZSBzZWFyY2ggdGhlIEtjb25maWcgZmlsZXMgZm9yIHRoZSBgSEZTUExVU2AgY29uZmlndXJhdGlvbiBvcHRpb24uIEkgbmVlZCB0byBrbm93IHVuZGVyIHdoYXQgY29uZGl0aW9ucyB0aGlzIGNvZGUgaXMgZW5hYmxlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAwNToyMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgSEZTUExVU19GUyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2hmc3BsdXMvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9oZnNwbHVzL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmZzL2hmc3BsdXMvS2NvbmZpZzoyOmNvbmZpZyBIRlNQTFVTX0ZTXG5mcy9oZnNwbHVzL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O0FwcGxlIEV4dGVuZGVkIEhGUyBmaWxlIHN5c3RlbSBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMDU6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzcyNgoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDY0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGFuYWx5c2lzIG9mIHRoZSBzaXR1YXRpb246CgoqKkluaXRpYWwgQXNzZXNzbWVudCBhbmQgRm9jdXNlZCBBcHByb2FjaCoqCgpPa2F5LCBzbyB0aGUgaW5pdGlhbCBjb25maWcgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBpcyBgSEZTUExVU19GU2AuIEdvb2QsIHRoYXQgbmFycm93cyBkb3duIHRoZSBzY29wZSBjb25zaWRlcmFibHkuIEJhc2VkIG9uIHRoZSBuYW1lLCBJJiMzOTttIHByZXR0eSBzdXJlIHdlJiMzOTtyZSB0YWxraW5nIGFib3V0IHRoZSBIRlMgUGx1cyBmaWxlIHN5c3RlbS4gTm93LCB0byBtYWtlIHRoZSBtb3N0IG9mIG15IHRpbWUsIEkgbmVlZCB0byBmb2N1cyBvbiB0aGUga2V5IGZ1bmN0aW9ucyBhc3NvY2lhdGVkIHdpdGggdGhlIGNhdGFsb2d1ZSBmaWxlIG9wZXJhdGlvbnMuIFRoYXQgbWVhbnMgYGhmc3BsdXNfYnJlY19yZWFkX2NhdGAsIHdoaWNoIEkmIzM5O20gYXNzdW1pbmcgaGFuZGxlcyByZWFkaW5nIGZyb20gdGhlIEItdHJlZSB0aGF0IHN0b3JlcyB0aGUgZGlyZWN0b3J5IGVudHJpZXM7IGBoZnNwbHVzX2ZpbmRfY2F0YCwgd2hpY2ggaXMgbGlrZWx5IHJlc3BvbnNpYmxlIGZvciBzZWFyY2hpbmcgZm9yIHNwZWNpZmljIGVudHJpZXMgd2l0aGluIHRoYXQgQi10cmVlOyBhbmQgYGhmc3BsdXNfZGVsZXRlX2NhdGAsIHdoaWNoIHdpbGwgYmUgdGhlIGZ1bmN0aW9uIHRvIGRlbGV0ZSBlbnRyaWVzIGZyb20gdGhlIGNhdGFsb2d1ZS4gVGhvc2UgYXJlIHRoZSBvbmVzIHRvIHNjcnV0aW5pemUuIEJlZm9yZSBkaWdnaW5nIGFueSBkZWVwZXIsIEkmIzM5O2xsIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoYXQgdGhlcmUgYXJlbiYjMzk7dCBhbnkgb3RoZXIgcmVsYXRlZCBjb25maWd1cmF0aW9ucyBvciBkZXBlbmRlbmNpZXMgSSBzaG91bGQgYmUgYXdhcmUgb2YgdG8gZW5zdXJlIEkmIzM5O20gbm90IG1pc3NpbmcgYW55dGhpbmcgY3J1Y2lhbC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAwNToyMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtIRlNQTFVTX0ZTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvaGZzcGx1cy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvaGZzcGx1cy8ua3VuaXRjb25maWc9MT1DT05GSUdfS1VOSVQ9eVxuZnMvaGZzcGx1cy8ua3VuaXRjb25maWc6MjpDT05GSUdfSEZTUExVU19GUz15XG5mcy9oZnNwbHVzLy5rdW5pdGNvbmZpZy0zLUNPTkZJR19IRlNQTFVTX0tVTklUX1RFU1Q9eVxuLS1cbmZzL2hmc3BsdXMvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZnMvaGZzcGx1cy9LY29uZmlnOjI6Y29uZmlnIEhGU1BMVVNfRlNcbmZzL2hmc3BsdXMvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7QXBwbGUgRXh0ZW5kZWQgSEZTIGZpbGUgc3lzdGVtIHN1cHBvcnRcJiMzNDtcbi0tXG5mcy9oZnNwbHVzL0tjb25maWc9MTg9Y29uZmlnIEhGU1BMVVNfS1VOSVRfVEVTVFxuZnMvaGZzcGx1cy9LY29uZmlnLTE5LVx0dHJpc3RhdGUgXCYjMzQ7S1VuaXQgdGVzdHMgZm9yIEhGUyYjNDM7IGZpbGVzeXN0ZW1cJiMzNDsgaWYgIUtVTklUX0FMTF9URVNUU1xuZnMvaGZzcGx1cy9LY29uZmlnOjIwOlx0ZGVwZW5kcyBvbiBIRlNQTFVTX0ZTIFx1MDAyNlx1MDAyNiBLVU5JVFxuZnMvaGZzcGx1cy9LY29uZmlnLTIxLVx0ZGVmYXVsdCBLVU5JVF9BTExfVEVTVFNcbi0tXG5mcy9oZnNwbHVzL01ha2VmaWxlLTUtXG5mcy9oZnNwbHVzL01ha2VmaWxlOjY6b2JqLSQoQ09ORklHX0hGU1BMVVNfRlMpICYjNDM7PSBoZnNwbHVzLm9cbmZzL2hmc3BsdXMvTWFrZWZpbGUtNy1cbi0tXG5mcy9oZnNwbHVzL2hmc3BsdXNfZnMuaC0xMC1cbmZzL2hmc3BsdXMvaGZzcGx1c19mcy5oOjExOiNpZm5kZWYgX0xJTlVYX0hGU1BMVVNfRlNfSFxuZnMvaGZzcGx1cy9oZnNwbHVzX2ZzLmg6MTI6I2RlZmluZSBfTElOVVhfSEZTUExVU19GU19IXG5mcy9oZnNwbHVzL2hmc3BsdXNfZnMuaC0xMy1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAwNToyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NDQ0CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMTMzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgSEZTJiM0MzsgQ29kZWJhc2UqKgoKT2theSwgc28gdGhlIGNvbmZpZyBpbmRpY2F0ZXMgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBgSEZTUExVU19GU2AuIEdvdCBpdC4gTm93LCBsb29raW5nIGF0IHRoZSByZWNlbnQgbW9kaWZpY2F0aW9ucywgSSBzZWUgdGhleSYjMzk7dmUgdG91Y2hlZCBgaGZzcGx1c19icmVjX3JlYWRfY2F0YCwgYGhmc3BsdXNfZmluZF9jYXRgLCBhbmQgYGhmc3BsdXNfZGVsZXRlX2NhdGAuIFRob3NlIGFyZSBhbGwgY2F0YWxvZyBmaWxlIGZ1bmN0aW9ucywgd2hpY2ggaXMgaW50ZXJlc3RpbmcuCgpSaWdodCwgYGhmc3BsdXNfYnJlY19yZWFkX2NhdGAgZmVlbHMgbGlrZSBhIHNvbGlkIHN0YXJ0aW5nIHBvaW50IOKAkyByZWFkaW5nIGNhdGFsb2cgZW50cmllcyBpcyBvZnRlbiBhIHZlY3Rvci4gQW5kLCBkZWZpbml0ZWx5LCBgaGZzcGx1c19kZWxldGVfY2F0YCBjb3VsZCBiZSBpbnRlcmVzdGluZy4gTWFuaXB1bGF0aW9uIG9mIHRoZSBjYXRhbG9nIHN0cnVjdHVyZSBpcyBhIGNsYXNzaWMgdGFyZ2V0LiBPaCwgYW5kIGBoZnNwbHVzX2ZpbmRfY2F0YCBhcyB3ZWxsLCBJIHNob3VsZG4mIzM5O3QgZGlzbWlzcyB0aGF0IG9uZS4KCkJ1dCBiZWZvcmUgSSBkaWcgaW4sIGxldCYjMzk7cyBqdXN0IGNvbmZpcm0gdGhlc2UgYXJlIHJlYWNoYWJsZS4gSSYjMzk7bSBwcmV0dHkgc3VyZSBgaGZzcGx1c19maW5kX2NhdGAgaXMgY2FsbGVkIGJ5IGBoZnNwbHVzX2xvb2t1cGAsIG9yIHNvbWV0aGluZyBzaW1pbGFyLCByaWdodD8gTmVlZCB0byBlbnN1cmUgdGhlc2UgYXJlbiYjMzk7dCBqdXN0IGRlYWQgY29kZSBvciBpbmRpcmVjdGx5IGV4cG9zZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMDU6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aGZzcGx1c19maW5kX2NhdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2hmc3BsdXMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2hmc3BsdXMvY2F0YWxvZy5jPTE3Nj1zdGF0aWMgaW50IGhmc3BsdXNfZmlsbF9jYXRfdGhyZWFkKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsXG4tLVxuZnMvaGZzcGx1cy9jYXRhbG9nLmMtMTkzLS8qIFRyeSB0byBnZXQgYSBjYXRhbG9nIGVudHJ5IGZvciBnaXZlbiBjYXRhbG9nIGlkICovXG5mcy9oZnNwbHVzL2NhdGFsb2cuYzoxOTQ6aW50IGhmc3BsdXNfZmluZF9jYXQoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgdTMyIGNuaWQsXG5mcy9oZnNwbHVzL2NhdGFsb2cuYy0xOTUtXHRcdCAgICAgc3RydWN0IGhmc19maW5kX2RhdGEgKmZkKVxuLS1cbmZzL2hmc3BsdXMvaGZzcGx1c19mcy5oPTQyMD12b2lkIGhmc3BsdXNfY2F0X3NldF9wZXJtcyhzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgaGZzcGx1c19wZXJtICpwZXJtcyk7XG5mcy9oZnNwbHVzL2hmc3BsdXNfZnMuaDo0MjE6aW50IGhmc3BsdXNfZmluZF9jYXQoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgdTMyIGNuaWQsXG5mcy9oZnNwbHVzL2hmc3BsdXNfZnMuaC00MjItXHRcdCAgICAgc3RydWN0IGhmc19maW5kX2RhdGEgKmZkKTtcbi0tXG5mcy9oZnNwbHVzL2lub2RlLmM9Njc3PWludCBoZnNwbHVzX2NhdF93cml0ZV9pbm9kZShzdHJ1Y3QgaW5vZGUgKmlub2RlKVxuLS1cbmZzL2hmc3BsdXMvaW5vZGUuYy02OTYtXG5mcy9oZnNwbHVzL2lub2RlLmM6Njk3Olx0aWYgKGhmc3BsdXNfZmluZF9jYXQobWFpbl9pbm9kZS1cdTAwM2VpX3NiLCBtYWluX2lub2RlLVx1MDAzZWlfaW5vLCBcdTAwMjZmZCkpXG5mcy9oZnNwbHVzL2lub2RlLmMtNjk4LVx0XHQvKiBwYW5pYz8gKi9cbi0tXG5mcy9oZnNwbHVzL3N1cGVyLmM9NjU9c3RydWN0IGlub2RlICpoZnNwbHVzX2lnZXQoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgdW5zaWduZWQgbG9uZyBpbm8pXG4tLVxuZnMvaGZzcGx1cy9zdXBlci5jLTk5LVx0XHRpZiAoIWVycikge1xuZnMvaGZzcGx1cy9zdXBlci5jOjEwMDpcdFx0XHRlcnIgPSBoZnNwbHVzX2ZpbmRfY2F0KGlub2RlLVx1MDAzZWlfc2IsIGlub2RlLVx1MDAzZWlfaW5vLCBcdTAwMjZmZCk7XG5mcy9oZnNwbHVzL3N1cGVyLmMtMTAxLVx0XHRcdGlmICghZXJyKVxuLS1cbmZzL2hmc3BsdXMveGF0dHIuYz0zNTE9aW50IF9faGZzcGx1c19zZXR4YXR0cihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBjb25zdCBjaGFyICpuYW1lLFxuLS1cbmZzL2hmc3BsdXMveGF0dHIuYy0zNzYtXG5mcy9oZnNwbHVzL3hhdHRyLmM6Mzc3Olx0ZXJyID0gaGZzcGx1c19maW5kX2NhdChpbm9kZS1cdTAwM2VpX3NiLCBpbm9kZS1cdTAwM2VpX2lubywgXHUwMDI2Y2F0X2ZkKTtcbmZzL2hmc3BsdXMveGF0dHIuYy0zNzgtXHRpZiAoZXJyKSB7XG4tLVxuZnMvaGZzcGx1cy94YXR0ci5jPTU2Mj1zdGF0aWMgc3NpemVfdCBoZnNwbHVzX2dldHhhdHRyX2ZpbmRlcl9pbmZvKHN0cnVjdCBpbm9kZSAqaW5vZGUsXG4tLVxuZnMvaGZzcGx1cy94YXR0ci5jLTU3OS1cdFx0fVxuZnMvaGZzcGx1cy94YXR0ci5jOjU4MDpcdFx0cmVzID0gaGZzcGx1c19maW5kX2NhdChpbm9kZS1cdTAwM2VpX3NiLCBpbm9kZS1cdTAwM2VpX2lubywgXHUwMDI2ZmQpO1xuZnMvaGZzcGx1cy94YXR0ci5jLTU4MS1cdFx0aWYgKHJlcylcbi0tXG5mcy9oZnNwbHVzL3hhdHRyLmM9NzM0PXN0YXRpYyBzc2l6ZV90IGhmc3BsdXNfbGlzdHhhdHRyX2ZpbmRlcl9pbmZvKHN0cnVjdCBkZW50cnkgKmRlbnRyeSxcbi0tXG5mcy9oZnNwbHVzL3hhdHRyLmMtNzUxLVxuZnMvaGZzcGx1cy94YXR0ci5jOjc1MjpcdHJlcyA9IGhmc3BsdXNfZmluZF9jYXQoaW5vZGUtXHUwMDNlaV9zYiwgaW5vZGUtXHUwMDNlaV9pbm8sIFx1MDAyNmZkKTtcbmZzL2hmc3BsdXMveGF0dHIuYy03NTMtXHRpZiAocmVzKVxuLS1cbmZzL2hmc3BsdXMveGF0dHIuYz05MDY9c3RhdGljIGludCBoZnNwbHVzX3JlbW92ZXhhdHRyKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGNvbnN0IGNoYXIgKm5hbWUpXG4tLVxuZnMvaGZzcGx1cy94YXR0ci5jLTkyOS1cbmZzL2hmc3BsdXMveGF0dHIuYzo5MzA6XHRlcnIgPSBoZnNwbHVzX2ZpbmRfY2F0KGlub2RlLVx1MDAzZWlfc2IsIGlub2RlLVx1MDAzZWlfaW5vLCBcdTAwMjZjYXRfZmQpO1xuZnMvaGZzcGx1cy94YXR0ci5jLTkzMS1cdGlmIChlcnIpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAwNToyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1ODE3CgkJCQkJCQlvdXRwdXQ6IDExNAoJCQkJCQkJdGhvdWdodHM6IDExNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgZnJvbSBteSBleHBlcnQgcGVyc3BlY3RpdmU6CgoqKkhGUyYjNDM7IENhdGFsb2cgUmVjb3JkIE9wZXJhdGlvbnM6IEEgRm9jdXNlZCBBc3Nlc3NtZW50KioKClJpZ2h0LCBzbyB3ZSYjMzk7cmUgdGFsa2luZyBhYm91dCBhIHBhdGNoIHRoYXQmIzM5O3MgY2xlYXJseSBhZGRyZXNzaW5nIGlzc3VlcyB3aXRoaW4gdGhlIEhGUyYjNDM7IGNhdGFsb2cgaGFuZGxpbmcuIFRoZSBrZXkgb3BlcmF0aW9ucywgYXMgZmFyIGFzIEkgY2FuIHNlZSwgYXJlIGBoZnNwbHVzX2RlbGV0ZV9jYXRgIGZvciBmaWxlL2RpcmVjdG9yeSBkZWxldGlvbiwgYW5kIGBoZnNwbHVzX2JyZWNfcmVhZF9jYXRgIGZvciByZWFkaW5nIHRob3NlIGNydWNpYWwgY2F0YWxvZyByZWNvcmRzLiBUaGUgZmFjdCB0aGF0IHRoZSBwYXRjaCBpcyAqZnVuY3Rpb25hbCogaXMgYSBnb29kIHNpZ24g4oCTIGl0IHN1Z2dlc3RzIGEgdGFuZ2libGUgaW1wcm92ZW1lbnQsIGFuZCB0aGF0IHRoZSBidWdzIGFyZSBnZXR0aW5nIGFkZHJlc3NlZC4KClRoZSBgV29ydGhGdXp6aW5nOiB0cnVlYCBmbGFnIGFuZCB0aGUgYEZvY3VzU3ltYm9sc2AgbGlzdCwgdGhhdCYjMzk7cyB3aGF0IHBpcXVlcyBteSBpbnRlcmVzdC4gSXQgbWVhbnMgd2UmIzM5O3ZlIGlkZW50aWZpZWQgdGhlIHNwZWNpZmljIGFyZWFzIG1vc3QgbGlrZWx5IHRvIGJlbmVmaXQgZnJvbSByaWdvcm91cyB0ZXN0aW5nLiBUYXJnZXRpbmcgYGhmc3BsdXNfYnJlY19yZWFkX2NhdGAsIGBoZnNwbHVzX2ZpbmRfY2F0YCwgYW5kIGBoZnNwbHVzX2RlbGV0ZV9jYXRgIG1ha2VzIHBlcmZlY3Qgc2Vuc2UuIFRoZXNlIGFyZSB0aGUgY3JpdGljYWwgZnVuY3Rpb25zIHdoZXJlIGRhdGEgY29ycnVwdGlvbiBvciB1bmV4cGVjdGVkIGJlaGF2aW9yIGNvdWxkIGVhc2lseSBtYW5pZmVzdCwgZXNwZWNpYWxseSB3aXRoIGNvbXBsZXggb3IgbWFsZm9ybWVkIGNhdGFsb2cgZW50cmllcy4gRnV6emluZyB0aGVtIGlzIGEgZ3JlYXQgd2F5IHRvIGV4cG9zZSBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0aWVzLgoKVGhlIGBFbmFibGVDb25maWdzOiBIRlNQTFVTX0ZTYCBpcyBhIHNpbXBsZSBpbmNsdXNpb24gdGFnLgoKTXkgYXNzZXNzbWVudCBpcyB0aGF0IHRoaXMgaXMgYSB3ZWxsLXRhcmdldGVkIGltcHJvdmVtZW50IHRvIEhGUyYjNDM7IGhhbmRsaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAwNToyMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SEZTUExVU19GUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2hmc3BsdXNfYnJlY19yZWFkX2NhdCYjMzQ7LAogICAgJiMzNDtoZnNwbHVzX2ZpbmRfY2F0JiMzNDssCiAgICAmIzM0O2hmc3BsdXNfZGVsZXRlX2NhdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGJvdW5kcyBjaGVja2luZyBhbmQgdHlwZSB2YWxpZGF0aW9uIGZvciBIRlMmIzQzOyBjYXRhbG9nIHRocmVhZCByZWNvcmRzLCBmaXhpbmcgcG90ZW50aWFsIG91dC1vZi1ib3VuZHMgcmVhZHMgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGJ1Z3MuIFRoaXMgbW9kaWZpZXMgY29yZSBmaWxlc3lzdGVtIGxvZ2ljIHRoYXQgaXMgcmVhY2hhYmxlIGZyb20gdXNlciBzcGFjZSB2aWEgZmlsZXN5c3RlbSBvcGVyYXRpb25zLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtIRlNQTFVTX0ZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aGZzcGx1c19icmVjX3JlYWRfY2F0JiMzNDssCiAgICAmIzM0O2hmc3BsdXNfZmluZF9jYXQmIzM0OywKICAgICYjMzQ7aGZzcGx1c19kZWxldGVfY2F0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYm91bmRzIGNoZWNraW5nIGFuZCB0eXBlIHZhbGlkYXRpb24gZm9yIEhGUyYjNDM7IGNhdGFsb2cgdGhyZWFkIHJlY29yZHMsIGZpeGluZyBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kcyByZWFkcyBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gYnVncy4gVGhpcyBtb2RpZmllcyBjb3JlIGZpbGVzeXN0ZW0gbG9naWMgdGhhdCBpcyByZWFjaGFibGUgZnJvbSB1c2VyIHNwYWNlIHZpYSBmaWxlc3lzdGVtIG9wZXJhdGlvbnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0wOFQwNToyMzozMC44OTc3OTc4NTVaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODA0ODMwMDc1OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJIRlNQTFVTX0ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaGZzcGx1c19icmVjX3JlYWRfY2F0XCIsXG4gICAgXCJoZnNwbHVzX2ZpbmRfY2F0XCIsXG4gICAgXCJoZnNwbHVzX2RlbGV0ZV9jYXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGJvdW5kcyBjaGVja2luZyBhbmQgdHlwZSB2YWxpZGF0aW9uIGZvciBIRlMrIGNhdGFsb2cgdGhyZWFkIHJlY29yZHMsIGZpeGluZyBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kcyByZWFkcyBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gYnVncy4gVGhpcyBtb2RpZmllcyBjb3JlIGZpbGVzeXN0ZW0gbG9naWMgdGhhdCBpcyByZWFjaGFibGUgZnJvbSB1c2VyIHNwYWNlIHZpYSBmaWxlc3lzdGVtIG9wZXJhdGlvbnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDA1OjIzOjMwLjg5NzgwMjQ0NVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjkxMzc5NzE4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgYzJmYzdjNjQyZDkzNTg2YTI3NTlkNjk0ODJiMGI3NjdkZTE3YmJiY1xcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgV2VkIEp1bCA4IDA1OjIzOjI5IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2ZzL2hmc3BsdXMvYmZpbmQuYyBiL2ZzL2hmc3BsdXMvYmZpbmQuY1xcbmluZGV4IDlhNTVmYTZkNTI5NDI5Li40MTdjMzAxNGY0YzdkMCAxMDA2NDRcXG4tLS0gYS9mcy9oZnNwbHVzL2JmaW5kLmNcXG4rKysgYi9mcy9oZnNwbHVzL2JmaW5kLmNcXG5AQCAtMzIyLDYgKzMyMiwxMSBAQCBpbnQgaGZzcGx1c19icmVjX3JlYWRfY2F0KHN0cnVjdCBoZnNfZmluZF9kYXRhICpmZCwgaGZzcGx1c19jYXRfZW50cnkgKmVudHJ5KVxcbiBcXHRcXHRcXHRwcl9lcnIoXFxcInRocmVhZCByZWNvcmQgdG9vIHNob3J0IChnb3QgJXUpXFxcXG5cXFwiLCBmZC1cXHUwMDNlZW50cnlsZW5ndGgpO1xcbiBcXHRcXHRcXHRyZXR1cm4gLUVJTztcXG4gXFx0XFx0fVxcbitcXHRcXHRpZiAoYmUxNl90b19jcHUoZW50cnktXFx1MDAzZXRocmVhZC5ub2RlTmFtZS5sZW5ndGgpIFxcdTAwM2VcXG4rXFx0XFx0ICAgIEhGU1BMVVNfTUFYX1NUUkxFTikge1xcbitcXHRcXHRcXHRwcl9lcnIoXFxcImNhdGFsb2cgbmFtZSBsZW5ndGggY29ycnVwdGVkXFxcXG5cXFwiKTtcXG4rXFx0XFx0XFx0cmV0dXJuIC1FSU87XFxuK1xcdFxcdH1cXG4gXFx0XFx0ZXhwZWN0ZWRfc2l6ZSA9IGhmc3BsdXNfY2F0X3RocmVhZF9zaXplKFxcdTAwMjZlbnRyeS1cXHUwMDNldGhyZWFkKTtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdGRlZmF1bHQ6XFxuZGlmZiAtLWdpdCBhL2ZzL2hmc3BsdXMvY2F0YWxvZy5jIGIvZnMvaGZzcGx1cy9jYXRhbG9nLmNcXG5pbmRleCA3NzZjZTM2Y2YwNzZiNC4uMWE0YjBiZWFlMTM1MDYgMTAwNjQ0XFxuLS0tIGEvZnMvaGZzcGx1cy9jYXRhbG9nLmNcXG4rKysgYi9mcy9oZnNwbHVzL2NhdGFsb2cuY1xcbkBAIC0yMDQsMTYgKzIwNCwxMSBAQCBpbnQgaGZzcGx1c19maW5kX2NhdChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCB1MzIgY25pZCxcXG4gXFx0XFx0cmV0dXJuIGVycjtcXG4gXFxuIFxcdHR5cGUgPSBiZTE2X3RvX2NwdSh0bXAudHlwZSk7XFxuLVxcdGlmICh0eXBlICE9IEhGU1BMVVNfRk9MREVSX1RIUkVBRCBcXHUwMDI2XFx1MDAyNiB0eXBlICE9IEhGU1BMVVNfRklMRV9USFJFQUQpIHtcXG4rXFx0aWYgKCFpc19oZnNfdGhyZWFkX3JlY29yZF90eXBlKHR5cGUpKSB7XFxuIFxcdFxcdHByX2VycihcXFwiZm91bmQgYmFkIHRocmVhZCByZWNvcmQgaW4gY2F0YWxvZ1xcXFxuXFxcIik7XFxuIFxcdFxcdHJldHVybiAtRUlPO1xcbiBcXHR9XFxuIFxcbi1cXHRpZiAoYmUxNl90b19jcHUodG1wLnRocmVhZC5ub2RlTmFtZS5sZW5ndGgpIFxcdTAwM2UgMjU1KSB7XFxuLVxcdFxcdHByX2VycihcXFwiY2F0YWxvZyBuYW1lIGxlbmd0aCBjb3JydXB0ZWRcXFxcblxcXCIpO1xcbi1cXHRcXHRyZXR1cm4gLUVJTztcXG4tXFx0fVxcbi1cXG4gXFx0aGZzcGx1c19jYXRfYnVpbGRfa2V5X3VuaShmZC1cXHUwMDNlc2VhcmNoX2tleSxcXG4gXFx0XFx0YmUzMl90b19jcHUodG1wLnRocmVhZC5wYXJlbnRJRCksXFxuIFxcdFxcdFxcdTAwMjZ0bXAudGhyZWFkLm5vZGVOYW1lKTtcXG5AQCAtMzUwLDIzICszNDUsMjIgQEAgaW50IGhmc3BsdXNfZGVsZXRlX2NhdCh1MzIgY25pZCwgc3RydWN0IGlub2RlICpkaXIsIGNvbnN0IHN0cnVjdCBxc3RyICpzdHIpXFxuIFxcdFxcdGdvdG8gb3V0O1xcbiBcXG4gXFx0aWYgKCFzdHIpIHtcXG4tXFx0XFx0aW50IGxlbjtcXG4rXFx0XFx0aGZzcGx1c19jYXRfZW50cnkgZW50cnkgPSB7MH07XFxuIFxcbiBcXHRcXHRoZnNwbHVzX2NhdF9idWlsZF9rZXlfd2l0aF9jbmlkKHNiLCBmZC5zZWFyY2hfa2V5LCBjbmlkKTtcXG4tXFx0XFx0ZXJyID0gaGZzX2JyZWNfZmluZChcXHUwMDI2ZmQsIGhmc19maW5kX3JlY19ieV9rZXkpO1xcbitcXHRcXHRlcnIgPSBoZnNwbHVzX2JyZWNfcmVhZF9jYXQoXFx1MDAyNmZkLCBcXHUwMDI2ZW50cnkpO1xcbiBcXHRcXHRpZiAoZXJyKVxcbiBcXHRcXHRcXHRnb3RvIG91dDtcXG4gXFxuLVxcdFxcdG9mZiA9IGZkLmVudHJ5b2Zmc2V0ICtcXG4tXFx0XFx0XFx0b2Zmc2V0b2Yoc3RydWN0IGhmc3BsdXNfY2F0X3RocmVhZCwgbm9kZU5hbWUpO1xcbi1cXHRcXHRmZC5zZWFyY2hfa2V5LVxcdTAwM2VjYXQucGFyZW50ID0gY3B1X3RvX2JlMzIoZGlyLVxcdTAwM2VpX2lubyk7XFxuLVxcdFxcdGhmc19ibm9kZV9yZWFkKGZkLmJub2RlLFxcbi1cXHRcXHRcXHRcXHUwMDI2ZmQuc2VhcmNoX2tleS1cXHUwMDNlY2F0Lm5hbWUubGVuZ3RoLCBvZmYsIDIpO1xcbi1cXHRcXHRsZW4gPSBiZTE2X3RvX2NwdShmZC5zZWFyY2hfa2V5LVxcdTAwM2VjYXQubmFtZS5sZW5ndGgpICogMjtcXG4tXFx0XFx0aGZzX2Jub2RlX3JlYWQoZmQuYm5vZGUsXFxuLVxcdFxcdFxcdFxcdTAwMjZmZC5zZWFyY2hfa2V5LVxcdTAwM2VjYXQubmFtZS51bmljb2RlLFxcbi1cXHRcXHRcXHRvZmYgKyAyLCBsZW4pO1xcbi1cXHRcXHRmZC5zZWFyY2hfa2V5LVxcdTAwM2VrZXlfbGVuID0gY3B1X3RvX2JlMTYoNiArIGxlbik7XFxuK1xcdFxcdHR5cGUgPSBiZTE2X3RvX2NwdShlbnRyeS50eXBlKTtcXG4rXFx0XFx0aWYgKCFpc19oZnNfdGhyZWFkX3JlY29yZF90eXBlKHR5cGUpKSB7XFxuK1xcdFxcdFxcdHByX2VycihcXFwiZm91bmQgYmFkIHRocmVhZCByZWNvcmQgaW4gY2F0YWxvZ1xcXFxuXFxcIik7XFxuK1xcdFxcdFxcdGVyciA9IC1FSU87XFxuK1xcdFxcdFxcdGdvdG8gb3V0O1xcbitcXHRcXHR9XFxuK1xcbitcXHRcXHRoZnNwbHVzX2NhdF9idWlsZF9rZXlfdW5pKGZkLnNlYXJjaF9rZXksIGRpci1cXHUwMDNlaV9pbm8sXFxuK1xcdFxcdFxcdFxcdFxcdCAgXFx1MDAyNmVudHJ5LnRocmVhZC5ub2RlTmFtZSk7XFxuIFxcdH0gZWxzZSB7XFxuIFxcdFxcdGVyciA9IGhmc3BsdXNfY2F0X2J1aWxkX2tleShzYiwgZmQuc2VhcmNoX2tleSwgZGlyLVxcdTAwM2VpX2lubywgc3RyKTtcXG4gXFx0XFx0aWYgKHVubGlrZWx5KGVycikpXFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvaGZzX2NvbW1vbi5oIGIvaW5jbHVkZS9saW51eC9oZnNfY29tbW9uLmhcXG5pbmRleCA0NWZiNGM5ZmY5ZjVlZS4uYzQ4NjIxNjZlZmM5OTQgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS9saW51eC9oZnNfY29tbW9uLmhcXG4rKysgYi9pbmNsdWRlL2xpbnV4L2hmc19jb21tb24uaFxcbkBAIC05Miw2ICs5MiwxMSBAQFxcbiAjZGVmaW5lIEhGU19DRFJfVEhEXFx0XFx0MHgwM1xcdC8qIGZvbGRlciAoZGlyZWN0b3J5KSB0aHJlYWQgKi9cXG4gI2RlZmluZSBIRlNfQ0RSX0ZUSFxcdFxcdDB4MDRcXHQvKiBmaWxlIHRocmVhZCAqL1xcbiBcXG4rc3RhdGljIGlubGluZSBib29sIGlzX2hmc190aHJlYWRfcmVjb3JkX3R5cGUodTE2IHR5cGUpXFxuK3tcXG4rXFx0cmV0dXJuIHR5cGUgPT0gSEZTX0NEUl9USEQgfHwgdHlwZSA9PSBIRlNfQ0RSX0ZUSDtcXG4rfVxcbitcXG4gLyogbGVnYWwgdmFsdWVzIGZvciBoZnNfZXh0X2tleS5Ga1R5cGUgYW5kIGhmc19maWxlLmZvcmsgKi9cXG4gI2RlZmluZSBIRlNfRktfREFUQVxcdFxcdDB4MDBcXG4gI2RlZmluZSBIRlNfRktfUlNSQ1xcdFxcdDB4RkZcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMDU6MjM6MzEuNTg5NzMwMDYzWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNzM1NjM1NTA5MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJIRlNQTFVTX0ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaGZzcGx1c19icmVjX3JlYWRfY2F0XCIsXG4gICAgXCJoZnNwbHVzX2ZpbmRfY2F0XCIsXG4gICAgXCJoZnNwbHVzX2RlbGV0ZV9jYXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGJvdW5kcyBjaGVja2luZyBhbmQgdHlwZSB2YWxpZGF0aW9uIGZvciBIRlMrIGNhdGFsb2cgdGhyZWFkIHJlY29yZHMsIGZpeGluZyBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kcyByZWFkcyBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gYnVncy4gVGhpcyBtb2RpZmllcyBjb3JlIGZpbGVzeXN0ZW0gbG9naWMgdGhhdCBpcyByZWFjaGFibGUgZnJvbSB1c2VyIHNwYWNlIHZpYSBmaWxlc3lzdGVtIG9wZXJhdGlvbnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYzJmYzdjNjQyZDkzNTg2YTI3NTlkNjk0ODJiMGI3NjdkZTE3YmJiY1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVsIDggMDU6MjM6MjkgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9mcy9oZnNwbHVzL2JmaW5kLmMgYi9mcy9oZnNwbHVzL2JmaW5kLmNcbmluZGV4IDlhNTVmYTZkNTI5NDI5Li40MTdjMzAxNGY0YzdkMCAxMDA2NDRcbi0tLSBhL2ZzL2hmc3BsdXMvYmZpbmQuY1xuKysrIGIvZnMvaGZzcGx1cy9iZmluZC5jXG5AQCAtMzIyLDYgKzMyMiwxMSBAQCBpbnQgaGZzcGx1c19icmVjX3JlYWRfY2F0KHN0cnVjdCBoZnNfZmluZF9kYXRhICpmZCwgaGZzcGx1c19jYXRfZW50cnkgKmVudHJ5KVxuIFx0XHRcdHByX2VycihcInRocmVhZCByZWNvcmQgdG9vIHNob3J0IChnb3QgJXUpXFxuXCIsIGZkLVx1MDAzZWVudHJ5bGVuZ3RoKTtcbiBcdFx0XHRyZXR1cm4gLUVJTztcbiBcdFx0fVxuK1x0XHRpZiAoYmUxNl90b19jcHUoZW50cnktXHUwMDNldGhyZWFkLm5vZGVOYW1lLmxlbmd0aCkgXHUwMDNlXG4rXHRcdCAgICBIRlNQTFVTX01BWF9TVFJMRU4pIHtcbitcdFx0XHRwcl9lcnIoXCJjYXRhbG9nIG5hbWUgbGVuZ3RoIGNvcnJ1cHRlZFxcblwiKTtcbitcdFx0XHRyZXR1cm4gLUVJTztcbitcdFx0fVxuIFx0XHRleHBlY3RlZF9zaXplID0gaGZzcGx1c19jYXRfdGhyZWFkX3NpemUoXHUwMDI2ZW50cnktXHUwMDNldGhyZWFkKTtcbiBcdFx0YnJlYWs7XG4gXHRkZWZhdWx0OlxuZGlmZiAtLWdpdCBhL2ZzL2hmc3BsdXMvY2F0YWxvZy5jIGIvZnMvaGZzcGx1cy9jYXRhbG9nLmNcbmluZGV4IDc3NmNlMzZjZjA3NmI0Li4xYTRiMGJlYWUxMzUwNiAxMDA2NDRcbi0tLSBhL2ZzL2hmc3BsdXMvY2F0YWxvZy5jXG4rKysgYi9mcy9oZnNwbHVzL2NhdGFsb2cuY1xuQEAgLTIwNCwxNiArMjA0LDExIEBAIGludCBoZnNwbHVzX2ZpbmRfY2F0KHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHUzMiBjbmlkLFxuIFx0XHRyZXR1cm4gZXJyO1xuIFxuIFx0dHlwZSA9IGJlMTZfdG9fY3B1KHRtcC50eXBlKTtcbi1cdGlmICh0eXBlICE9IEhGU1BMVVNfRk9MREVSX1RIUkVBRCBcdTAwMjZcdTAwMjYgdHlwZSAhPSBIRlNQTFVTX0ZJTEVfVEhSRUFEKSB7XG4rXHRpZiAoIWlzX2hmc190aHJlYWRfcmVjb3JkX3R5cGUodHlwZSkpIHtcbiBcdFx0cHJfZXJyKFwiZm91bmQgYmFkIHRocmVhZCByZWNvcmQgaW4gY2F0YWxvZ1xcblwiKTtcbiBcdFx0cmV0dXJuIC1FSU87XG4gXHR9XG4gXG4tXHRpZiAoYmUxNl90b19jcHUodG1wLnRocmVhZC5ub2RlTmFtZS5sZW5ndGgpIFx1MDAzZSAyNTUpIHtcbi1cdFx0cHJfZXJyKFwiY2F0YWxvZyBuYW1lIGxlbmd0aCBjb3JydXB0ZWRcXG5cIik7XG4tXHRcdHJldHVybiAtRUlPO1xuLVx0fVxuLVxuIFx0aGZzcGx1c19jYXRfYnVpbGRfa2V5X3VuaShmZC1cdTAwM2VzZWFyY2hfa2V5LFxuIFx0XHRiZTMyX3RvX2NwdSh0bXAudGhyZWFkLnBhcmVudElEKSxcbiBcdFx0XHUwMDI2dG1wLnRocmVhZC5ub2RlTmFtZSk7XG5AQCAtMzUwLDIzICszNDUsMjIgQEAgaW50IGhmc3BsdXNfZGVsZXRlX2NhdCh1MzIgY25pZCwgc3RydWN0IGlub2RlICpkaXIsIGNvbnN0IHN0cnVjdCBxc3RyICpzdHIpXG4gXHRcdGdvdG8gb3V0O1xuIFxuIFx0aWYgKCFzdHIpIHtcbi1cdFx0aW50IGxlbjtcbitcdFx0aGZzcGx1c19jYXRfZW50cnkgZW50cnkgPSB7MH07XG4gXG4gXHRcdGhmc3BsdXNfY2F0X2J1aWxkX2tleV93aXRoX2NuaWQoc2IsIGZkLnNlYXJjaF9rZXksIGNuaWQpO1xuLVx0XHRlcnIgPSBoZnNfYnJlY19maW5kKFx1MDAyNmZkLCBoZnNfZmluZF9yZWNfYnlfa2V5KTtcbitcdFx0ZXJyID0gaGZzcGx1c19icmVjX3JlYWRfY2F0KFx1MDAyNmZkLCBcdTAwMjZlbnRyeSk7XG4gXHRcdGlmIChlcnIpXG4gXHRcdFx0Z290byBvdXQ7XG4gXG4tXHRcdG9mZiA9IGZkLmVudHJ5b2Zmc2V0ICtcbi1cdFx0XHRvZmZzZXRvZihzdHJ1Y3QgaGZzcGx1c19jYXRfdGhyZWFkLCBub2RlTmFtZSk7XG4tXHRcdGZkLnNlYXJjaF9rZXktXHUwMDNlY2F0LnBhcmVudCA9IGNwdV90b19iZTMyKGRpci1cdTAwM2VpX2lubyk7XG4tXHRcdGhmc19ibm9kZV9yZWFkKGZkLmJub2RlLFxuLVx0XHRcdFx1MDAyNmZkLnNlYXJjaF9rZXktXHUwMDNlY2F0Lm5hbWUubGVuZ3RoLCBvZmYsIDIpO1xuLVx0XHRsZW4gPSBiZTE2X3RvX2NwdShmZC5zZWFyY2hfa2V5LVx1MDAzZWNhdC5uYW1lLmxlbmd0aCkgKiAyO1xuLVx0XHRoZnNfYm5vZGVfcmVhZChmZC5ibm9kZSxcbi1cdFx0XHRcdTAwMjZmZC5zZWFyY2hfa2V5LVx1MDAzZWNhdC5uYW1lLnVuaWNvZGUsXG4tXHRcdFx0b2ZmICsgMiwgbGVuKTtcbi1cdFx0ZmQuc2VhcmNoX2tleS1cdTAwM2VrZXlfbGVuID0gY3B1X3RvX2JlMTYoNiArIGxlbik7XG4rXHRcdHR5cGUgPSBiZTE2X3RvX2NwdShlbnRyeS50eXBlKTtcbitcdFx0aWYgKCFpc19oZnNfdGhyZWFkX3JlY29yZF90eXBlKHR5cGUpKSB7XG4rXHRcdFx0cHJfZXJyKFwiZm91bmQgYmFkIHRocmVhZCByZWNvcmQgaW4gY2F0YWxvZ1xcblwiKTtcbitcdFx0XHRlcnIgPSAtRUlPO1xuK1x0XHRcdGdvdG8gb3V0O1xuK1x0XHR9XG4rXG4rXHRcdGhmc3BsdXNfY2F0X2J1aWxkX2tleV91bmkoZmQuc2VhcmNoX2tleSwgZGlyLVx1MDAzZWlfaW5vLFxuK1x0XHRcdFx0XHQgIFx1MDAyNmVudHJ5LnRocmVhZC5ub2RlTmFtZSk7XG4gXHR9IGVsc2Uge1xuIFx0XHRlcnIgPSBoZnNwbHVzX2NhdF9idWlsZF9rZXkoc2IsIGZkLnNlYXJjaF9rZXksIGRpci1cdTAwM2VpX2lubywgc3RyKTtcbiBcdFx0aWYgKHVubGlrZWx5KGVycikpXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9oZnNfY29tbW9uLmggYi9pbmNsdWRlL2xpbnV4L2hmc19jb21tb24uaFxuaW5kZXggNDVmYjRjOWZmOWY1ZWUuLmM0ODYyMTY2ZWZjOTk0IDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9oZnNfY29tbW9uLmhcbisrKyBiL2luY2x1ZGUvbGludXgvaGZzX2NvbW1vbi5oXG5AQCAtOTIsNiArOTIsMTEgQEBcbiAjZGVmaW5lIEhGU19DRFJfVEhEXHRcdDB4MDNcdC8qIGZvbGRlciAoZGlyZWN0b3J5KSB0aHJlYWQgKi9cbiAjZGVmaW5lIEhGU19DRFJfRlRIXHRcdDB4MDRcdC8qIGZpbGUgdGhyZWFkICovXG4gXG4rc3RhdGljIGlubGluZSBib29sIGlzX2hmc190aHJlYWRfcmVjb3JkX3R5cGUodTE2IHR5cGUpXG4re1xuK1x0cmV0dXJuIHR5cGUgPT0gSEZTX0NEUl9USEQgfHwgdHlwZSA9PSBIRlNfQ0RSX0ZUSDtcbit9XG4rXG4gLyogbGVnYWwgdmFsdWVzIGZvciBoZnNfZXh0X2tleS5Ga1R5cGUgYW5kIGhmc19maWxlLmZvcmsgKi9cbiAjZGVmaW5lIEhGU19GS19EQVRBXHRcdDB4MDBcbiAjZGVmaW5lIEhGU19GS19SU1JDXHRcdDB4RkZcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDA1OjIzOjMxLjU4OTczMTQ0M1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUwODA0MTk4MDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBIRlMrIEZpbGVzeXN0ZW0gUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpdCdzIHRvdWNoaW5nIHNvbWUgY29yZSBhcmVhcyBvZiB0aGUgSEZTKyBmaWxlc3lzdGVtLiBTcGVjaWZpY2FsbHksIGBmcy9oZnNwbHVzL2JmaW5kLmNgLCBgZnMvaGZzcGx1cy9jYXRhbG9nLmNgLCBhbmQgYGluY2x1ZGUvbGludXgvaGZzX2NvbW1vbi5oYC4gVGhhdCBhbG9uZSB0ZWxscyBtZSB3ZSdyZSBkZWFsaW5nIHdpdGggcG90ZW50aWFsbHkgY3JpdGljYWwgbW9kaWZpY2F0aW9ucyB0byBob3cgdGhlIGZpbGVzeXN0ZW0gc3RydWN0dXJlcyBhcmUgaGFuZGxlZC5cblxuVGhlIGtleSBjaGFuZ2UgSSBzZWUgaXMgdGhlIGludHJvZHVjdGlvbiBvZiBhIGxlbmd0aCBjaGVjayB3aXRoaW4gYGhmc3BsdXNfYnJlY19yZWFkX2NhdCgpYC4gSXQgc2VlbXMgd2UncmUgZ3VhcmRpbmcgYWdhaW5zdCBhIHBvdGVudGlhbGx5IG1hbGljaW91cyBvciBjb3JydXB0IGNhdGFsb2cgZW50cnkgd2hlcmUgdGhlIHRocmVhZCdzIG5vZGUgbmFtZSBsZW5ndGggbWlnaHQgZXhjZWVkIGBIRlNQTFVTX01BWF9TVFJMRU5gLiBHb29kLCB0aGF0J3MgYSBjbGFzc2ljIGJ1ZmZlciBvdmVyZmxvdyBwcmV2ZW50aW9uIHN0cmF0ZWd5LiBQcmV2ZW50aW5nIGFuIGV4Y2Vzc2l2ZSBzdHJpbmcgbGVuZ3RoLCBjb3VsZCBtaXRpZ2F0ZSBhIHBvdGVudGlhbCBzZWN1cml0eSB2dWxuZXJhYmlsaXR5LlxuXG5JIGFsc28gbm90aWNlIHRoZSBpbnRyb2R1Y3Rpb24gb2YgYGlzX2hmc190aHJlYWRfcmVjb3JkX3R5cGUoKWAgYW5kIGl0cyB1c2UgaW4gYGhmc3BsdXNfZmluZF9jYXQoKWAgYW5kIGBoZnNwbHVzX2RlbGV0ZV9jYXQoKWAuIEknbSBhc3N1bWluZyB0aGlzIGlzIGEgdHlwZSBjaGVjayB3aGljaCB3aWxsIGVuc3VyZSB3ZSdyZSBkZWFsaW5nIHdpdGggdGhlIGNvcnJlY3QgcmVjb3JkIHR5cGUgYmVmb3JlIGF0dGVtcHRpbmcgdG8gb3BlcmF0ZSBvbiBpdC4gUHJldmVudHMgbWlzaW50ZXJwcmV0YXRpb25zLlxuXG5UaGUgcmVmYWN0b3Jpbmcgb2YgYGhmc3BsdXNfZGVsZXRlX2NhdCgpYCBpcyBpbnRlcmVzdGluZy4gVGhlIHBhdGNoIGlzIG5vdyB1c2luZyBgaGZzcGx1c19icmVjX3JlYWRfY2F0KClgIGluc3RlYWQgb2YgYGhmc19icmVjX2ZpbmQoKWAgZm9sbG93ZWQgYnkgbWFudWFsIHJlYWRpbmcgb2YgYG5vZGVOYW1lYC4gTG9va3MgbGlrZSB3ZSBhcmUgaW1wcm92aW5nIGNvZGUgcmV1c2FiaWxpdHkgYW5kIHNpbXBsaWZ5aW5nIGBoZnNwbHVzX2RlbGV0ZV9jYXQoKWAuIFRoYXQncyBhIGdvb2Qgc3RlcCB0b3dhcmQgbWFpbnRhaW5hYmlsaXR5LlxuXG5HaXZlbiB0aGF0IHRoaXMgaXMgZnVuY3Rpb25hbCBjb2RlLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgc3BlY2lmaWNzIG9mIGhvdyBIRlNQTFVTIGlzIGNvbmZpZ3VyZWQgaW4gdGhpcyBrZXJuZWwuIExldCBtZSBzZWFyY2ggdGhlIEtjb25maWcgZmlsZXMgZm9yIHRoZSBgSEZTUExVU2AgY29uZmlndXJhdGlvbiBvcHRpb24uIEkgbmVlZCB0byBrbm93IHVuZGVyIHdoYXQgY29uZGl0aW9ucyB0aGlzIGNvZGUgaXMgZW5hYmxlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjk5OCwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxNiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDA1OjIzOjM2LjY3MDE1MzMxM1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjg5Nzg3MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEhGU1BMVVNfRlNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvaGZzcGx1cy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2hmc3BsdXMvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmZzL2hmc3BsdXMvS2NvbmZpZzoyOmNvbmZpZyBIRlNQTFVTX0ZTXFxuZnMvaGZzcGx1cy9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIkFwcGxlIEV4dGVuZGVkIEhGUyBmaWxlIHN5c3RlbSBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQwNToyMzozNi43OTkxMzY5MTNaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjQzNzYwMjM3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYW5hbHlzaXMgb2YgdGhlIHNpdHVhdGlvbjpcblxuKipJbml0aWFsIEFzc2Vzc21lbnQgYW5kIEZvY3VzZWQgQXBwcm9hY2gqKlxuXG5Pa2F5LCBzbyB0aGUgaW5pdGlhbCBjb25maWcgd2UncmUgZGVhbGluZyB3aXRoIGlzIGBIRlNQTFVTX0ZTYC4gR29vZCwgdGhhdCBuYXJyb3dzIGRvd24gdGhlIHNjb3BlIGNvbnNpZGVyYWJseS4gQmFzZWQgb24gdGhlIG5hbWUsIEknbSBwcmV0dHkgc3VyZSB3ZSdyZSB0YWxraW5nIGFib3V0IHRoZSBIRlMgUGx1cyBmaWxlIHN5c3RlbS4gTm93LCB0byBtYWtlIHRoZSBtb3N0IG9mIG15IHRpbWUsIEkgbmVlZCB0byBmb2N1cyBvbiB0aGUga2V5IGZ1bmN0aW9ucyBhc3NvY2lhdGVkIHdpdGggdGhlIGNhdGFsb2d1ZSBmaWxlIG9wZXJhdGlvbnMuIFRoYXQgbWVhbnMgYGhmc3BsdXNfYnJlY19yZWFkX2NhdGAsIHdoaWNoIEknbSBhc3N1bWluZyBoYW5kbGVzIHJlYWRpbmcgZnJvbSB0aGUgQi10cmVlIHRoYXQgc3RvcmVzIHRoZSBkaXJlY3RvcnkgZW50cmllczsgYGhmc3BsdXNfZmluZF9jYXRgLCB3aGljaCBpcyBsaWtlbHkgcmVzcG9uc2libGUgZm9yIHNlYXJjaGluZyBmb3Igc3BlY2lmaWMgZW50cmllcyB3aXRoaW4gdGhhdCBCLXRyZWU7IGFuZCBgaGZzcGx1c19kZWxldGVfY2F0YCwgd2hpY2ggd2lsbCBiZSB0aGUgZnVuY3Rpb24gdG8gZGVsZXRlIGVudHJpZXMgZnJvbSB0aGUgY2F0YWxvZ3VlLiBUaG9zZSBhcmUgdGhlIG9uZXMgdG8gc2NydXRpbml6ZS4gQmVmb3JlIGRpZ2dpbmcgYW55IGRlZXBlciwgSSdsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGF0IHRoZXJlIGFyZW4ndCBhbnkgb3RoZXIgcmVsYXRlZCBjb25maWd1cmF0aW9ucyBvciBkZXBlbmRlbmNpZXMgSSBzaG91bGQgYmUgYXdhcmUgb2YgdG8gZW5zdXJlIEknbSBub3QgbWlzc2luZyBhbnl0aGluZyBjcnVjaWFsLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNzI2LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMDU6MjM6NDAuMDQyODk5NDZaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM4MzM2OTYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkhGU1BMVVNfRlNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvaGZzcGx1cy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvaGZzcGx1cy8ua3VuaXRjb25maWc9MT1DT05GSUdfS1VOSVQ9eVxcbmZzL2hmc3BsdXMvLmt1bml0Y29uZmlnOjI6Q09ORklHX0hGU1BMVVNfRlM9eVxcbmZzL2hmc3BsdXMvLmt1bml0Y29uZmlnLTMtQ09ORklHX0hGU1BMVVNfS1VOSVRfVEVTVD15XFxuLS1cXG5mcy9oZnNwbHVzL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5mcy9oZnNwbHVzL0tjb25maWc6Mjpjb25maWcgSEZTUExVU19GU1xcbmZzL2hmc3BsdXMvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJBcHBsZSBFeHRlbmRlZCBIRlMgZmlsZSBzeXN0ZW0gc3VwcG9ydFxcXCJcXG4tLVxcbmZzL2hmc3BsdXMvS2NvbmZpZz0xOD1jb25maWcgSEZTUExVU19LVU5JVF9URVNUXFxuZnMvaGZzcGx1cy9LY29uZmlnLTE5LVxcdHRyaXN0YXRlIFxcXCJLVW5pdCB0ZXN0cyBmb3IgSEZTKyBmaWxlc3lzdGVtXFxcIiBpZiAhS1VOSVRfQUxMX1RFU1RTXFxuZnMvaGZzcGx1cy9LY29uZmlnOjIwOlxcdGRlcGVuZHMgb24gSEZTUExVU19GUyBcXHUwMDI2XFx1MDAyNiBLVU5JVFxcbmZzL2hmc3BsdXMvS2NvbmZpZy0yMS1cXHRkZWZhdWx0IEtVTklUX0FMTF9URVNUU1xcbi0tXFxuZnMvaGZzcGx1cy9NYWtlZmlsZS01LVxcbmZzL2hmc3BsdXMvTWFrZWZpbGU6NjpvYmotJChDT05GSUdfSEZTUExVU19GUykgKz0gaGZzcGx1cy5vXFxuZnMvaGZzcGx1cy9NYWtlZmlsZS03LVxcbi0tXFxuZnMvaGZzcGx1cy9oZnNwbHVzX2ZzLmgtMTAtXFxuZnMvaGZzcGx1cy9oZnNwbHVzX2ZzLmg6MTE6I2lmbmRlZiBfTElOVVhfSEZTUExVU19GU19IXFxuZnMvaGZzcGx1cy9oZnNwbHVzX2ZzLmg6MTI6I2RlZmluZSBfTElOVVhfSEZTUExVU19GU19IXFxuZnMvaGZzcGx1cy9oZnNwbHVzX2ZzLmgtMTMtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDA1OjIzOjQwLjE4MTI0MTAyWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzgyNzg3ODM0MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEhGUysgQ29kZWJhc2UqKlxuXG5Pa2F5LCBzbyB0aGUgY29uZmlnIGluZGljYXRlcyB3ZSdyZSBkZWFsaW5nIHdpdGggYEhGU1BMVVNfRlNgLiBHb3QgaXQuIE5vdywgbG9va2luZyBhdCB0aGUgcmVjZW50IG1vZGlmaWNhdGlvbnMsIEkgc2VlIHRoZXkndmUgdG91Y2hlZCBgaGZzcGx1c19icmVjX3JlYWRfY2F0YCwgYGhmc3BsdXNfZmluZF9jYXRgLCBhbmQgYGhmc3BsdXNfZGVsZXRlX2NhdGAuIFRob3NlIGFyZSBhbGwgY2F0YWxvZyBmaWxlIGZ1bmN0aW9ucywgd2hpY2ggaXMgaW50ZXJlc3RpbmcuXG5cblJpZ2h0LCBgaGZzcGx1c19icmVjX3JlYWRfY2F0YCBmZWVscyBsaWtlIGEgc29saWQgc3RhcnRpbmcgcG9pbnQg4oCTIHJlYWRpbmcgY2F0YWxvZyBlbnRyaWVzIGlzIG9mdGVuIGEgdmVjdG9yLiBBbmQsIGRlZmluaXRlbHksIGBoZnNwbHVzX2RlbGV0ZV9jYXRgIGNvdWxkIGJlIGludGVyZXN0aW5nLiBNYW5pcHVsYXRpb24gb2YgdGhlIGNhdGFsb2cgc3RydWN0dXJlIGlzIGEgY2xhc3NpYyB0YXJnZXQuIE9oLCBhbmQgYGhmc3BsdXNfZmluZF9jYXRgIGFzIHdlbGwsIEkgc2hvdWxkbid0IGRpc21pc3MgdGhhdCBvbmUuXG5cbkJ1dCBiZWZvcmUgSSBkaWcgaW4sIGxldCdzIGp1c3QgY29uZmlybSB0aGVzZSBhcmUgcmVhY2hhYmxlLiBJJ20gcHJldHR5IHN1cmUgYGhmc3BsdXNfZmluZF9jYXRgIGlzIGNhbGxlZCBieSBgaGZzcGx1c19sb29rdXBgLCBvciBzb21ldGhpbmcgc2ltaWxhciwgcmlnaHQ/IE5lZWQgdG8gZW5zdXJlIHRoZXNlIGFyZW4ndCBqdXN0IGRlYWQgY29kZSBvciBpbmRpcmVjdGx5IGV4cG9zZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ0NDQsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMzMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMDU6MjM6NDQuMDA5MTIxNTMzWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk0Mzg4NDUzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImhmc3BsdXNfZmluZF9jYXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvaGZzcGx1cy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvaGZzcGx1cy9jYXRhbG9nLmM9MTc2PXN0YXRpYyBpbnQgaGZzcGx1c19maWxsX2NhdF90aHJlYWQoc3RydWN0IHN1cGVyX2Jsb2NrICpzYixcXG4tLVxcbmZzL2hmc3BsdXMvY2F0YWxvZy5jLTE5My0vKiBUcnkgdG8gZ2V0IGEgY2F0YWxvZyBlbnRyeSBmb3IgZ2l2ZW4gY2F0YWxvZyBpZCAqL1xcbmZzL2hmc3BsdXMvY2F0YWxvZy5jOjE5NDppbnQgaGZzcGx1c19maW5kX2NhdChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCB1MzIgY25pZCxcXG5mcy9oZnNwbHVzL2NhdGFsb2cuYy0xOTUtXFx0XFx0ICAgICBzdHJ1Y3QgaGZzX2ZpbmRfZGF0YSAqZmQpXFxuLS1cXG5mcy9oZnNwbHVzL2hmc3BsdXNfZnMuaD00MjA9dm9pZCBoZnNwbHVzX2NhdF9zZXRfcGVybXMoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGhmc3BsdXNfcGVybSAqcGVybXMpO1xcbmZzL2hmc3BsdXMvaGZzcGx1c19mcy5oOjQyMTppbnQgaGZzcGx1c19maW5kX2NhdChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCB1MzIgY25pZCxcXG5mcy9oZnNwbHVzL2hmc3BsdXNfZnMuaC00MjItXFx0XFx0ICAgICBzdHJ1Y3QgaGZzX2ZpbmRfZGF0YSAqZmQpO1xcbi0tXFxuZnMvaGZzcGx1cy9pbm9kZS5jPTY3Nz1pbnQgaGZzcGx1c19jYXRfd3JpdGVfaW5vZGUoc3RydWN0IGlub2RlICppbm9kZSlcXG4tLVxcbmZzL2hmc3BsdXMvaW5vZGUuYy02OTYtXFxuZnMvaGZzcGx1cy9pbm9kZS5jOjY5NzpcXHRpZiAoaGZzcGx1c19maW5kX2NhdChtYWluX2lub2RlLVxcdTAwM2VpX3NiLCBtYWluX2lub2RlLVxcdTAwM2VpX2lubywgXFx1MDAyNmZkKSlcXG5mcy9oZnNwbHVzL2lub2RlLmMtNjk4LVxcdFxcdC8qIHBhbmljPyAqL1xcbi0tXFxuZnMvaGZzcGx1cy9zdXBlci5jPTY1PXN0cnVjdCBpbm9kZSAqaGZzcGx1c19pZ2V0KHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHVuc2lnbmVkIGxvbmcgaW5vKVxcbi0tXFxuZnMvaGZzcGx1cy9zdXBlci5jLTk5LVxcdFxcdGlmICghZXJyKSB7XFxuZnMvaGZzcGx1cy9zdXBlci5jOjEwMDpcXHRcXHRcXHRlcnIgPSBoZnNwbHVzX2ZpbmRfY2F0KGlub2RlLVxcdTAwM2VpX3NiLCBpbm9kZS1cXHUwMDNlaV9pbm8sIFxcdTAwMjZmZCk7XFxuZnMvaGZzcGx1cy9zdXBlci5jLTEwMS1cXHRcXHRcXHRpZiAoIWVycilcXG4tLVxcbmZzL2hmc3BsdXMveGF0dHIuYz0zNTE9aW50IF9faGZzcGx1c19zZXR4YXR0cihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBjb25zdCBjaGFyICpuYW1lLFxcbi0tXFxuZnMvaGZzcGx1cy94YXR0ci5jLTM3Ni1cXG5mcy9oZnNwbHVzL3hhdHRyLmM6Mzc3OlxcdGVyciA9IGhmc3BsdXNfZmluZF9jYXQoaW5vZGUtXFx1MDAzZWlfc2IsIGlub2RlLVxcdTAwM2VpX2lubywgXFx1MDAyNmNhdF9mZCk7XFxuZnMvaGZzcGx1cy94YXR0ci5jLTM3OC1cXHRpZiAoZXJyKSB7XFxuLS1cXG5mcy9oZnNwbHVzL3hhdHRyLmM9NTYyPXN0YXRpYyBzc2l6ZV90IGhmc3BsdXNfZ2V0eGF0dHJfZmluZGVyX2luZm8oc3RydWN0IGlub2RlICppbm9kZSxcXG4tLVxcbmZzL2hmc3BsdXMveGF0dHIuYy01NzktXFx0XFx0fVxcbmZzL2hmc3BsdXMveGF0dHIuYzo1ODA6XFx0XFx0cmVzID0gaGZzcGx1c19maW5kX2NhdChpbm9kZS1cXHUwMDNlaV9zYiwgaW5vZGUtXFx1MDAzZWlfaW5vLCBcXHUwMDI2ZmQpO1xcbmZzL2hmc3BsdXMveGF0dHIuYy01ODEtXFx0XFx0aWYgKHJlcylcXG4tLVxcbmZzL2hmc3BsdXMveGF0dHIuYz03MzQ9c3RhdGljIHNzaXplX3QgaGZzcGx1c19saXN0eGF0dHJfZmluZGVyX2luZm8oc3RydWN0IGRlbnRyeSAqZGVudHJ5LFxcbi0tXFxuZnMvaGZzcGx1cy94YXR0ci5jLTc1MS1cXG5mcy9oZnNwbHVzL3hhdHRyLmM6NzUyOlxcdHJlcyA9IGhmc3BsdXNfZmluZF9jYXQoaW5vZGUtXFx1MDAzZWlfc2IsIGlub2RlLVxcdTAwM2VpX2lubywgXFx1MDAyNmZkKTtcXG5mcy9oZnNwbHVzL3hhdHRyLmMtNzUzLVxcdGlmIChyZXMpXFxuLS1cXG5mcy9oZnNwbHVzL3hhdHRyLmM9OTA2PXN0YXRpYyBpbnQgaGZzcGx1c19yZW1vdmV4YXR0cihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBjb25zdCBjaGFyICpuYW1lKVxcbi0tXFxuZnMvaGZzcGx1cy94YXR0ci5jLTkyOS1cXG5mcy9oZnNwbHVzL3hhdHRyLmM6OTMwOlxcdGVyciA9IGhmc3BsdXNfZmluZF9jYXQoaW5vZGUtXFx1MDAzZWlfc2IsIGlub2RlLVxcdTAwM2VpX2lubywgXFx1MDAyNmNhdF9mZCk7XFxuZnMvaGZzcGx1cy94YXR0ci5jLTkzMS1cXHRpZiAoZXJyKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDA1OjIzOjQ0LjEwMzUxNDQ3NloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ2MjEyODk1NzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgZnJvbSBteSBleHBlcnQgcGVyc3BlY3RpdmU6XG5cbioqSEZTKyBDYXRhbG9nIFJlY29yZCBPcGVyYXRpb25zOiBBIEZvY3VzZWQgQXNzZXNzbWVudCoqXG5cblJpZ2h0LCBzbyB3ZSdyZSB0YWxraW5nIGFib3V0IGEgcGF0Y2ggdGhhdCdzIGNsZWFybHkgYWRkcmVzc2luZyBpc3N1ZXMgd2l0aGluIHRoZSBIRlMrIGNhdGFsb2cgaGFuZGxpbmcuIFRoZSBrZXkgb3BlcmF0aW9ucywgYXMgZmFyIGFzIEkgY2FuIHNlZSwgYXJlIGBoZnNwbHVzX2RlbGV0ZV9jYXRgIGZvciBmaWxlL2RpcmVjdG9yeSBkZWxldGlvbiwgYW5kIGBoZnNwbHVzX2JyZWNfcmVhZF9jYXRgIGZvciByZWFkaW5nIHRob3NlIGNydWNpYWwgY2F0YWxvZyByZWNvcmRzLiBUaGUgZmFjdCB0aGF0IHRoZSBwYXRjaCBpcyAqZnVuY3Rpb25hbCogaXMgYSBnb29kIHNpZ24g4oCTIGl0IHN1Z2dlc3RzIGEgdGFuZ2libGUgaW1wcm92ZW1lbnQsIGFuZCB0aGF0IHRoZSBidWdzIGFyZSBnZXR0aW5nIGFkZHJlc3NlZC5cblxuVGhlIGBXb3J0aEZ1enppbmc6IHRydWVgIGZsYWcgYW5kIHRoZSBgRm9jdXNTeW1ib2xzYCBsaXN0LCB0aGF0J3Mgd2hhdCBwaXF1ZXMgbXkgaW50ZXJlc3QuIEl0IG1lYW5zIHdlJ3ZlIGlkZW50aWZpZWQgdGhlIHNwZWNpZmljIGFyZWFzIG1vc3QgbGlrZWx5IHRvIGJlbmVmaXQgZnJvbSByaWdvcm91cyB0ZXN0aW5nLiBUYXJnZXRpbmcgYGhmc3BsdXNfYnJlY19yZWFkX2NhdGAsIGBoZnNwbHVzX2ZpbmRfY2F0YCwgYW5kIGBoZnNwbHVzX2RlbGV0ZV9jYXRgIG1ha2VzIHBlcmZlY3Qgc2Vuc2UuIFRoZXNlIGFyZSB0aGUgY3JpdGljYWwgZnVuY3Rpb25zIHdoZXJlIGRhdGEgY29ycnVwdGlvbiBvciB1bmV4cGVjdGVkIGJlaGF2aW9yIGNvdWxkIGVhc2lseSBtYW5pZmVzdCwgZXNwZWNpYWxseSB3aXRoIGNvbXBsZXggb3IgbWFsZm9ybWVkIGNhdGFsb2cgZW50cmllcy4gRnV6emluZyB0aGVtIGlzIGEgZ3JlYXQgd2F5IHRvIGV4cG9zZSBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0aWVzLlxuXG5UaGUgYEVuYWJsZUNvbmZpZ3M6IEhGU1BMVVNfRlNgIGlzIGEgc2ltcGxlIGluY2x1c2lvbiB0YWcuXG5cbk15IGFzc2Vzc21lbnQgaXMgdGhhdCB0aGlzIGlzIGEgd2VsbC10YXJnZXRlZCBpbXByb3ZlbWVudCB0byBIRlMrIGhhbmRsaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1ODE3LCJPdXRwdXRUb2tlbnMiOjExNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQwNToyMzo0OC43MjQ4MDczNFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyMTI2ODUyMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSEZTUExVU19GU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImhmc3BsdXNfYnJlY19yZWFkX2NhdFwiLFxuICAgIFwiaGZzcGx1c19maW5kX2NhdFwiLFxuICAgIFwiaGZzcGx1c19kZWxldGVfY2F0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBib3VuZHMgY2hlY2tpbmcgYW5kIHR5cGUgdmFsaWRhdGlvbiBmb3IgSEZTKyBjYXRhbG9nIHRocmVhZCByZWNvcmRzLCBmaXhpbmcgcG90ZW50aWFsIG91dC1vZi1ib3VuZHMgcmVhZHMgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGJ1Z3MuIFRoaXMgbW9kaWZpZXMgY29yZSBmaWxlc3lzdGVtIGxvZ2ljIHRoYXQgaXMgcmVhY2hhYmxlIGZyb20gdXNlciBzcGFjZSB2aWEgZmlsZXN5c3RlbSBvcGVyYXRpb25zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkhGU1BMVVNfRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJoZnNwbHVzX2JyZWNfcmVhZF9jYXRcIixcbiAgICBcImhmc3BsdXNfZmluZF9jYXRcIixcbiAgICBcImhmc3BsdXNfZGVsZXRlX2NhdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYm91bmRzIGNoZWNraW5nIGFuZCB0eXBlIHZhbGlkYXRpb24gZm9yIEhGUysgY2F0YWxvZyB0aHJlYWQgcmVjb3JkcywgZml4aW5nIHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIHJlYWRzIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBidWdzLiBUaGlzIG1vZGlmaWVzIGNvcmUgZmlsZXN5c3RlbSBsb2dpYyB0aGF0IGlzIHJlYWNoYWJsZSBmcm9tIHVzZXIgc3BhY2UgdmlhIGZpbGVzeXN0ZW0gb3BlcmF0aW9ucy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow5q2ck[1] Phase: Succeeded StartedAt: 2026-07-08 05:24:00 +0000 UTC FinishedAt: 2026-07-08 05:24:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5q2ck[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-08 05:24:00 +0000 UTC FinishedAt: 2026-07-08 05:24:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5q2ck[2] Phase: Succeeded StartedAt: 2026-07-08 05:24:00 +0000 UTC FinishedAt: 2026-07-08 10:02:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5q2ck[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"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":["hfsplus_brec_read_cat","hfsplus_find_cat","hfsplus_delete_cat"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"series_id":"0f44a0db-ac7c-41e0-aad5-af36e5c93602","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-08 05:24:00 +0000 UTC FinishedAt: 2026-07-08 10:02:44 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"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":["hfsplus_brec_read_cat","hfsplus_find_cat","hfsplus_delete_cat"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"series_id":"0f44a0db-ac7c-41e0-aad5-af36e5c93602","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-workflow5q2ck[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"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":["hfsplus_brec_read_cat","hfsplus_find_cat","hfsplus_delete_cat"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"series_id":"0f44a0db-ac7c-41e0-aad5-af36e5c93602","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-07-08 05:24:00 +0000 UTC FinishedAt: 2026-07-08 05:24:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5q2ck[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"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":["hfsplus_brec_read_cat","hfsplus_find_cat","hfsplus_delete_cat"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"series_id":"0f44a0db-ac7c-41e0-aad5-af36e5c93602","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-07-08 05:24:00 +0000 UTC FinishedAt: 2026-07-08 05:24:14 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"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-workflow5q2ck/series-workflow5q2ck-convert-artifact-4033646469/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5q2ck[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"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":["hfsplus_brec_read_cat","hfsplus_find_cat","hfsplus_delete_cat"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"series_id":"0f44a0db-ac7c-41e0-aad5-af36e5c93602","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-07-08 05:24:22 +0000 UTC FinishedAt: 2026-07-08 06:06:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5q2ck[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"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":["hfsplus_brec_read_cat","hfsplus_find_cat","hfsplus_delete_cat"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"series_id":"0f44a0db-ac7c-41e0-aad5-af36e5c93602","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-07-08 05:24:22 +0000 UTC FinishedAt: 2026-07-08 06:06:13 +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:*ec09cbc2-4158-4698-ac5a-40b64de3c149,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-workflow5q2ck/series-workflow5q2ck-convert-artifact-4033646469/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": "5aa197d5-ef81-4340-b7d8-5f7ddc2f7625", "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-workflow5q2ck/series-workflow5q2ck-build-action-3777710891/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5q2ck[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"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":["hfsplus_brec_read_cat","hfsplus_find_cat","hfsplus_delete_cat"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"series_id":"0f44a0db-ac7c-41e0-aad5-af36e5c93602","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: Succeeded StartedAt: 2026-07-08 05:24:22 +0000 UTC FinishedAt: 2026-07-08 06:06:03 +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:*ec09cbc2-4158-4698-ac5a-40b64de3c149,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-workflow5q2ck/series-workflow5q2ck-convert-artifact-4033646469/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": "5aa197d5-ef81-4340-b7d8-5f7ddc2f7625", "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-workflow5q2ck/series-workflow5q2ck-build-action-3777710891/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5q2ck[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"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":["hfsplus_brec_read_cat","hfsplus_find_cat","hfsplus_delete_cat"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"series_id":"0f44a0db-ac7c-41e0-aad5-af36e5c93602","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-07-08 06:06:13 +0000 UTC FinishedAt: 2026-07-08 06:06:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5q2ck[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"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":["hfsplus_brec_read_cat","hfsplus_find_cat","hfsplus_delete_cat"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"series_id":"0f44a0db-ac7c-41e0-aad5-af36e5c93602","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-07-08 06:06:13 +0000 UTC FinishedAt: 2026-07-08 06:06:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5q2ck[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"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":["hfsplus_brec_read_cat","hfsplus_find_cat","hfsplus_delete_cat"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"series_id":"0f44a0db-ac7c-41e0-aad5-af36e5c93602","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-07-08 06:06:13 +0000 UTC FinishedAt: 2026-07-08 06:06:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5q2ck[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"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":["hfsplus_brec_read_cat","hfsplus_find_cat","hfsplus_delete_cat"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"series_id":"0f44a0db-ac7c-41e0-aad5-af36e5c93602","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-07-08 06:06:13 +0000 UTC FinishedAt: 2026-07-08 06:06:18 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"series_id":"0f44a0db-ac7c-41e0-aad5-af36e5c93602","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-workflow5q2ck/series-workflow5q2ck-convert-artifact-1540529248/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5q2ck[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"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":["hfsplus_brec_read_cat","hfsplus_find_cat","hfsplus_delete_cat"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"series_id":"0f44a0db-ac7c-41e0-aad5-af36e5c93602","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-07-08 06:06:24 +0000 UTC FinishedAt: 2026-07-08 06:08:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5q2ck[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"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":["hfsplus_brec_read_cat","hfsplus_find_cat","hfsplus_delete_cat"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"series_id":"0f44a0db-ac7c-41e0-aad5-af36e5c93602","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-07-08 06:06:24 +0000 UTC FinishedAt: 2026-07-08 06:08:26 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*5aa197d5-ef81-4340-b7d8-5f7ddc2f7625,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-workflow5q2ck/series-workflow5q2ck-build-action-3777710891/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-workflow5q2ck[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"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":["hfsplus_brec_read_cat","hfsplus_find_cat","hfsplus_delete_cat"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"series_id":"0f44a0db-ac7c-41e0-aad5-af36e5c93602","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-07-08 06:08:35 +0000 UTC FinishedAt: 2026-07-08 06:08:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5q2ck[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"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":["hfsplus_brec_read_cat","hfsplus_find_cat","hfsplus_delete_cat"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"series_id":"0f44a0db-ac7c-41e0-aad5-af36e5c93602","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-07-08 06:08:35 +0000 UTC FinishedAt: 2026-07-08 06:08:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5q2ck[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"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":["hfsplus_brec_read_cat","hfsplus_find_cat","hfsplus_delete_cat"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"series_id":"0f44a0db-ac7c-41e0-aad5-af36e5c93602","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-07-08 06:08:35 +0000 UTC FinishedAt: 2026-07-08 06:59:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5q2ck[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"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":["hfsplus_brec_read_cat","hfsplus_find_cat","hfsplus_delete_cat"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"series_id":"0f44a0db-ac7c-41e0-aad5-af36e5c93602","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-07-08 06:08:35 +0000 UTC FinishedAt: 2026-07-08 06:59:10 +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:*ec09cbc2-4158-4698-ac5a-40b64de3c149,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-workflow5q2ck/series-workflow5q2ck-convert-artifact-1540529248/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": "aba14383-c0d2-48fa-b79d-f53d43806f3c", "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-workflow5q2ck/series-workflow5q2ck-build-action-3057977628/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5q2ck[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"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":["hfsplus_brec_read_cat","hfsplus_find_cat","hfsplus_delete_cat"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"series_id":"0f44a0db-ac7c-41e0-aad5-af36e5c93602","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-07-08 06:08:35 +0000 UTC FinishedAt: 2026-07-08 06:59:00 +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:*ec09cbc2-4158-4698-ac5a-40b64de3c149,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-workflow5q2ck/series-workflow5q2ck-convert-artifact-1540529248/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": "aba14383-c0d2-48fa-b79d-f53d43806f3c", "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-workflow5q2ck/series-workflow5q2ck-build-action-3057977628/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5q2ck[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"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":["hfsplus_brec_read_cat","hfsplus_find_cat","hfsplus_delete_cat"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"series_id":"0f44a0db-ac7c-41e0-aad5-af36e5c93602","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-07-08 06:59:10 +0000 UTC FinishedAt: 2026-07-08 06:59:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5q2ck[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"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":["hfsplus_brec_read_cat","hfsplus_find_cat","hfsplus_delete_cat"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"series_id":"0f44a0db-ac7c-41e0-aad5-af36e5c93602","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-07-08 06:59:10 +0000 UTC FinishedAt: 2026-07-08 06:59:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5q2ck[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"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":["hfsplus_brec_read_cat","hfsplus_find_cat","hfsplus_delete_cat"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"series_id":"0f44a0db-ac7c-41e0-aad5-af36e5c93602","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-07-08 06:59:10 +0000 UTC FinishedAt: 2026-07-08 07:01:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5q2ck[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"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":["hfsplus_brec_read_cat","hfsplus_find_cat","hfsplus_delete_cat"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"series_id":"0f44a0db-ac7c-41e0-aad5-af36e5c93602","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-07-08 06:59:10 +0000 UTC FinishedAt: 2026-07-08 07:01:07 +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:*aba14383-c0d2-48fa-b79d-f53d43806f3c,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-workflow5q2ck/series-workflow5q2ck-build-action-3057977628/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-workflow5q2ck[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"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":["hfsplus_brec_read_cat","hfsplus_find_cat","hfsplus_delete_cat"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"series_id":"0f44a0db-ac7c-41e0-aad5-af36e5c93602","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-07-08 07:01:17 +0000 UTC FinishedAt: 2026-07-08 10:02:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5q2ck[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"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":["hfsplus_brec_read_cat","hfsplus_find_cat","hfsplus_delete_cat"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"series_id":"0f44a0db-ac7c-41e0-aad5-af36e5c93602","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-07-08 07:01:17 +0000 UTC FinishedAt: 2026-07-08 10:02:44 +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":["hfsplus_brec_read_cat","hfsplus_find_cat","hfsplus_delete_cat"],"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:*5aa197d5-ef81-4340-b7d8-5f7ddc2f7625,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*aba14383-c0d2-48fa-b79d-f53d43806f3c,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-workflow5q2ck/series-workflow5q2ck-build-action-3777710891/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-workflow5q2ck/series-workflow5q2ck-build-action-3057977628/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow5q2ck[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"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":["hfsplus_brec_read_cat","hfsplus_find_cat","hfsplus_delete_cat"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"series_id":"0f44a0db-ac7c-41e0-aad5-af36e5c93602","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-07-08 07:01:17 +0000 UTC FinishedAt: 2026-07-08 07:01:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5q2ck[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"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":["hfsplus_brec_read_cat","hfsplus_find_cat","hfsplus_delete_cat"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"series_id":"0f44a0db-ac7c-41e0-aad5-af36e5c93602","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-07-08 07:01:17 +0000 UTC FinishedAt: 2026-07-08 07:01:23 +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":["hfsplus_brec_read_cat","hfsplus_find_cat","hfsplus_delete_cat"],"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-workflow5q2ck/series-workflow5q2ck-convert-artifact-795400889/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5q2ck[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"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":["hfsplus_brec_read_cat","hfsplus_find_cat","hfsplus_delete_cat"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"series_id":"0f44a0db-ac7c-41e0-aad5-af36e5c93602","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-07-08 07:01:17 +0000 UTC FinishedAt: 2026-07-08 07:01:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5q2ck[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"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":["hfsplus_brec_read_cat","hfsplus_find_cat","hfsplus_delete_cat"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"series_id":"0f44a0db-ac7c-41e0-aad5-af36e5c93602","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-07-08 07:01:17 +0000 UTC FinishedAt: 2026-07-08 07:01:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5q2ck[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"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":["hfsplus_brec_read_cat","hfsplus_find_cat","hfsplus_delete_cat"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"series_id":"0f44a0db-ac7c-41e0-aad5-af36e5c93602","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-07-08 07:01:17 +0000 UTC FinishedAt: 2026-07-08 07:01:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5q2ck[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"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":["hfsplus_brec_read_cat","hfsplus_find_cat","hfsplus_delete_cat"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"series_id":"0f44a0db-ac7c-41e0-aad5-af36e5c93602","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-07-08 07:01:27 +0000 UTC FinishedAt: 2026-07-08 10:02:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5q2ck[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"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":["hfsplus_brec_read_cat","hfsplus_find_cat","hfsplus_delete_cat"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"series_id":"0f44a0db-ac7c-41e0-aad5-af36e5c93602","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-07-08 07:01:27 +0000 UTC FinishedAt: 2026-07-08 10:02:35 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*5aa197d5-ef81-4340-b7d8-5f7ddc2f7625,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*aba14383-c0d2-48fa-b79d-f53d43806f3c,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-workflow5q2ck/series-workflow5q2ck-build-action-3777710891/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-workflow5q2ck/series-workflow5q2ck-build-action-3057977628/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-workflow5q2ck/series-workflow5q2ck-convert-artifact-795400889/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,}