Name: series-workflow6llhn Phase: Succeeded StartedAt: 2026-08-02 09:57:14 +0000 UTC FinishedAt: 2026-08-02 14:16:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6llhn[0] Phase: Succeeded StartedAt: 2026-08-02 09:57:14 +0000 UTC FinishedAt: 2026-08-02 10:15:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6llhn[0].run-triage Phase: Succeeded StartedAt: 2026-08-02 09:57:14 +0000 UTC FinishedAt: 2026-08-02 10:15:17 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "vfs", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git", "commit_hash": "62a41b4503151758972bb7715891477fe21f9dee", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "UFS_FS", "UFS_FS_WRITE" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "vfs", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git", "commit_hash": "62a41b4503151758972bb7715891477fe21f9dee", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "UFS_FS", "UFS_FS_WRITE" ], "series_id": "f2c60f9f-61d2-4f54-9abb-09b16c2f7747" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "ufs_get_tree", "ufs_load_cylinder" ], "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+CgkJCTx0ZD4yMDI2LzA4LzAyIDEwOjE0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1VGU19GUyYjMzQ7LAogICAgJiMzNDtVRlNfRlNfV1JJVEUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt1ZnNfZ2V0X3RyZWUmIzM0OywKICAgICYjMzQ7dWZzX2xvYWRfY3lsaW5kZXImIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgbWlzc2luZyBib3VuZHMgY2hlY2tpbmcgZm9yIGN5bGluZGVyIGdyb3VwIG1ldGFkYXRhIGluIHRoZSBVRlMgZmlsZXN5c3RlbSBhbmQgcmVvcmRlcnMgdGhlIHJlYWRpbmcgb2YgY3lsaW5kZXIgZ3JvdXAgc3RydWN0dXJlcyBkdXJpbmcgc3VwZXJibG9jayBmaWxsaW5nIHRvIGF2b2lkIHJlYWRpbmcgdGhlbSBhZnRlciB0aGUgcm9vdCBpbm9kZSBpcyBmZXRjaGVkLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBVRlMgZmlsZXN5c3RlbSBtb3VudGluZyBhbmQgY3lsaW5kZXIgbG9hZGluZyBsb2dpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMDoxNDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDg0NTU0MDgxZjAxODJkNjM2NDBmYmJjMTUzYzE5YWY5Njg4YWNmNTBcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIEF1ZyAyIDEwOjE0OjI3IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2ZzL3Vmcy9jeWxpbmRlci5jIGIvZnMvdWZzL2N5bGluZGVyLmNcbmluZGV4IGEyODEzMjcwYzMwM2UuLmI5MzBlZTFjZjg1MzAgMTAwNjQ0XG4tLS0gYS9mcy91ZnMvY3lsaW5kZXIuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZnMvdWZzL2N5bGluZGVyLmNcbkBAIC02OCw2ICYjNDM7NjgsMTYgQEAgc3RhdGljIGJvb2wgdWZzX3JlYWRfY3lsaW5kZXIoc3RydWN0IHN1cGVyX2Jsb2NrICpzYixcbiBcdHVjcGktXHUwMDNlY19jbHVzdGVyc3Vtb2ZmID0gZnMzMl90b19jcHUoc2IsIHVjZy1cdTAwM2VjZ191LmNnXzQ0LmNnX2NsdXN0ZXJzdW1vZmYpO1xuIFx0dWNwaS1cdTAwM2VjX2NsdXN0ZXJvZmYgPSBmczMyX3RvX2NwdShzYiwgdWNnLVx1MDAzZWNnX3UuY2dfNDQuY2dfY2x1c3Rlcm9mZik7XG4gXHR1Y3BpLVx1MDAzZWNfbmNsdXN0ZXJibGtzID0gZnMzMl90b19jcHUoc2IsIHVjZy1cdTAwM2VjZ191LmNnXzQ0LmNnX25jbHVzdGVyYmxrcyk7XG4mIzQzO1xuJiM0MztcdC8qIHRoZXNlIG9uLWRpc2sgdmFsdWVzIGJlY29tZSBhcnJheSBhbmQgYml0bWFwIGluZGljZXMgKi9cbiYjNDM7XHRpZiAodWNwaS1cdTAwM2VjX2NneCAhPSBjZ25vIHx8XG4mIzQzO1x0ICAgIHVjcGktXHUwMDNlY19yb3RvciBcdTAwM2U9IHVzcGktXHUwMDNlc19mcGcgfHxcbiYjNDM7XHQgICAgdWNwaS1cdTAwM2VjX2Zyb3RvciBcdTAwM2U9IHVzcGktXHUwMDNlc19mcGcgfHxcbiYjNDM7XHQgICAgdWNwaS1cdTAwM2VjX2lyb3RvciBcdTAwM2U9IHVzcGktXHUwMDNlc19pcGcpIHtcbiYjNDM7XHRcdHVmc19lcnJvcihzYiwgX19mdW5jX18sXG4mIzQzO1x0XHRcdCAgXCYjMzQ7aW5jb25zaXN0ZW50IG1ldGFkYXRhIGluIGN5bGluZGVyIGdyb3VwICV1XFxuXCYjMzQ7LCBjZ25vKTtcbiYjNDM7XHRcdGdvdG8gZmFpbGVkO1xuJiM0MztcdH1cbiBcdFVGU0QoXCYjMzQ7RVhJVFxcblwmIzM0Oyk7XG4gXHRyZXR1cm4gdHJ1ZTtcbiBcdFxuZGlmZiAtLWdpdCBhL2ZzL3Vmcy9zdXBlci5jIGIvZnMvdWZzL3N1cGVyLmNcbmluZGV4IGM0ODMxYThiOWIzZmIuLjdkZWVjYjM5NTRlMjMgMTAwNjQ0XG4tLS0gYS9mcy91ZnMvc3VwZXIuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZnMvdWZzL3N1cGVyLmNcbkBAIC0xMTk5LDYgJiM0MzsxMTk5LDE1IEBAIHN0YXRpYyBpbnQgdWZzX2ZpbGxfc3VwZXIoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgc3RydWN0IGZzX2NvbnRleHQgKmZjKVxuIFx0c2ItXHUwMDNlc19tYXhieXRlcyA9IHVmc19tYXhfYnl0ZXMoc2IpO1xuIFx0c2ItXHUwMDNlc19tYXhfbGlua3MgPSBVRlNfTElOS19NQVg7XG4gXG4mIzQzO1x0dWZzX3NldHVwX2NzdG90YWwoc2IpO1xuJiM0MztcdC8qXG4mIzQzO1x0ICogUmVhZCBjeWxpbmRlciBncm91cCBzdHJ1Y3R1cmVzXG4mIzQzO1x0ICovXG4mIzQzO1x0aWYgKCFzYl9yZG9ubHkoc2IpKVxuJiM0MztcdFx0aWYgKCF1ZnNfcmVhZF9jeWxpbmRlcl9zdHJ1Y3R1cmVzKHNiKSlcbiYjNDM7XHRcdFx0Z290byBmYWlsZWQ7XG4mIzQzO1xuJiM0MztcdC8qIGNyZWF0ZSB0aGUgcm9vdCBkZW50cnkgbGFzdCwgb25jZSBVRlNfU0Ioc2IpIGlzIGZ1bGx5IHNldCB1cCAqL1xuIFx0aW5vZGUgPSB1ZnNfaWdldChzYiwgVUZTX1JPT1RJTk8pO1xuIFx0aWYgKElTX0VSUihpbm9kZSkpIHtcbiBcdFx0cmV0ID0gUFRSX0VSUihpbm9kZSk7XG5AQCAtMTIxMCwxNCAmIzQzOzEyMTksNiBAQCBzdGF0aWMgaW50IHVmc19maWxsX3N1cGVyKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHN0cnVjdCBmc19jb250ZXh0ICpmYylcbiBcdFx0Z290byBmYWlsZWQ7XG4gXHR9XG4gXG4tXHR1ZnNfc2V0dXBfY3N0b3RhbChzYik7XG4tXHQvKlxuLVx0ICogUmVhZCBjeWxpbmRlciBncm91cCBzdHJ1Y3R1cmVzXG4tXHQgKi9cbi1cdGlmICghc2JfcmRvbmx5KHNiKSlcbi1cdFx0aWYgKCF1ZnNfcmVhZF9jeWxpbmRlcl9zdHJ1Y3R1cmVzKHNiKSlcbi1cdFx0XHRnb3RvIGZhaWxlZDtcbi1cbiBcdFVGU0QoXCYjMzQ7RVhJVFxcblwmIzM0Oyk7XG4gXHRyZXR1cm4gMDtcbiBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMDoxNDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7VUZTX0ZTJiMzNDssCiAgICAmIzM0O1VGU19GU19XUklURSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3Vmc19nZXRfdHJlZSYjMzQ7LAogICAgJiMzNDt1ZnNfbG9hZF9jeWxpbmRlciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBtaXNzaW5nIGJvdW5kcyBjaGVja2luZyBmb3IgY3lsaW5kZXIgZ3JvdXAgbWV0YWRhdGEgaW4gdGhlIFVGUyBmaWxlc3lzdGVtIGFuZCByZW9yZGVycyB0aGUgcmVhZGluZyBvZiBjeWxpbmRlciBncm91cCBzdHJ1Y3R1cmVzIGR1cmluZyBzdXBlcmJsb2NrIGZpbGxpbmcgdG8gYXZvaWQgcmVhZGluZyB0aGVtIGFmdGVyIHRoZSByb290IGlub2RlIGlzIGZldGNoZWQuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIFVGUyBmaWxlc3lzdGVtIG1vdW50aW5nIGFuZCBjeWxpbmRlciBsb2FkaW5nIGxvZ2ljLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgODQ1NTQwODFmMDE4MmQ2MzY0MGZiYmMxNTNjMTlhZjk2ODhhY2Y1MApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTdW4gQXVnIDIgMTA6MTQ6MjcgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9mcy91ZnMvY3lsaW5kZXIuYyBiL2ZzL3Vmcy9jeWxpbmRlci5jCmluZGV4IGEyODEzMjcwYzMwM2UuLmI5MzBlZTFjZjg1MzAgMTAwNjQ0Ci0tLSBhL2ZzL3Vmcy9jeWxpbmRlci5jCiYjNDM7JiM0MzsmIzQzOyBiL2ZzL3Vmcy9jeWxpbmRlci5jCkBAIC02OCw2ICYjNDM7NjgsMTYgQEAgc3RhdGljIGJvb2wgdWZzX3JlYWRfY3lsaW5kZXIoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwKIAl1Y3BpLSZndDtjX2NsdXN0ZXJzdW1vZmYgPSBmczMyX3RvX2NwdShzYiwgdWNnLSZndDtjZ191LmNnXzQ0LmNnX2NsdXN0ZXJzdW1vZmYpOwogCXVjcGktJmd0O2NfY2x1c3Rlcm9mZiA9IGZzMzJfdG9fY3B1KHNiLCB1Y2ctJmd0O2NnX3UuY2dfNDQuY2dfY2x1c3Rlcm9mZik7CiAJdWNwaS0mZ3Q7Y19uY2x1c3RlcmJsa3MgPSBmczMyX3RvX2NwdShzYiwgdWNnLSZndDtjZ191LmNnXzQ0LmNnX25jbHVzdGVyYmxrcyk7CiYjNDM7CiYjNDM7CS8qIHRoZXNlIG9uLWRpc2sgdmFsdWVzIGJlY29tZSBhcnJheSBhbmQgYml0bWFwIGluZGljZXMgKi8KJiM0MzsJaWYgKHVjcGktJmd0O2NfY2d4ICE9IGNnbm8gfHwKJiM0MzsJICAgIHVjcGktJmd0O2Nfcm90b3IgJmd0Oz0gdXNwaS0mZ3Q7c19mcGcgfHwKJiM0MzsJICAgIHVjcGktJmd0O2NfZnJvdG9yICZndDs9IHVzcGktJmd0O3NfZnBnIHx8CiYjNDM7CSAgICB1Y3BpLSZndDtjX2lyb3RvciAmZ3Q7PSB1c3BpLSZndDtzX2lwZykgewomIzQzOwkJdWZzX2Vycm9yKHNiLCBfX2Z1bmNfXywKJiM0MzsJCQkgICYjMzQ7aW5jb25zaXN0ZW50IG1ldGFkYXRhIGluIGN5bGluZGVyIGdyb3VwICV1XG4mIzM0OywgY2dubyk7CiYjNDM7CQlnb3RvIGZhaWxlZDsKJiM0MzsJfQogCVVGU0QoJiMzNDtFWElUXG4mIzM0Oyk7CiAJcmV0dXJuIHRydWU7CiAJCmRpZmYgLS1naXQgYS9mcy91ZnMvc3VwZXIuYyBiL2ZzL3Vmcy9zdXBlci5jCmluZGV4IGM0ODMxYThiOWIzZmIuLjdkZWVjYjM5NTRlMjMgMTAwNjQ0Ci0tLSBhL2ZzL3Vmcy9zdXBlci5jCiYjNDM7JiM0MzsmIzQzOyBiL2ZzL3Vmcy9zdXBlci5jCkBAIC0xMTk5LDYgJiM0MzsxMTk5LDE1IEBAIHN0YXRpYyBpbnQgdWZzX2ZpbGxfc3VwZXIoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgc3RydWN0IGZzX2NvbnRleHQgKmZjKQogCXNiLSZndDtzX21heGJ5dGVzID0gdWZzX21heF9ieXRlcyhzYik7CiAJc2ItJmd0O3NfbWF4X2xpbmtzID0gVUZTX0xJTktfTUFYOwogCiYjNDM7CXVmc19zZXR1cF9jc3RvdGFsKHNiKTsKJiM0MzsJLyoKJiM0MzsJICogUmVhZCBjeWxpbmRlciBncm91cCBzdHJ1Y3R1cmVzCiYjNDM7CSAqLwomIzQzOwlpZiAoIXNiX3Jkb25seShzYikpCiYjNDM7CQlpZiAoIXVmc19yZWFkX2N5bGluZGVyX3N0cnVjdHVyZXMoc2IpKQomIzQzOwkJCWdvdG8gZmFpbGVkOwomIzQzOwomIzQzOwkvKiBjcmVhdGUgdGhlIHJvb3QgZGVudHJ5IGxhc3QsIG9uY2UgVUZTX1NCKHNiKSBpcyBmdWxseSBzZXQgdXAgKi8KIAlpbm9kZSA9IHVmc19pZ2V0KHNiLCBVRlNfUk9PVElOTyk7CiAJaWYgKElTX0VSUihpbm9kZSkpIHsKIAkJcmV0ID0gUFRSX0VSUihpbm9kZSk7CkBAIC0xMjEwLDE0ICYjNDM7MTIxOSw2IEBAIHN0YXRpYyBpbnQgdWZzX2ZpbGxfc3VwZXIoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgc3RydWN0IGZzX2NvbnRleHQgKmZjKQogCQlnb3RvIGZhaWxlZDsKIAl9CiAKLQl1ZnNfc2V0dXBfY3N0b3RhbChzYik7Ci0JLyoKLQkgKiBSZWFkIGN5bGluZGVyIGdyb3VwIHN0cnVjdHVyZXMKLQkgKi8KLQlpZiAoIXNiX3Jkb25seShzYikpCi0JCWlmICghdWZzX3JlYWRfY3lsaW5kZXJfc3RydWN0dXJlcyhzYikpCi0JCQlnb3RvIGZhaWxlZDsKLQogCVVGU0QoJiMzNDtFWElUXG4mIzM0Oyk7CiAJcmV0dXJuIDA7CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTA6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjY0OQoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDIyNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBVRlMgRmlsZSBTeXN0ZW0gUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IHRoaXMgcGF0Y2ggaGVyZSB0aGF0JiMzOTtzIG1ha2luZyBjaGFuZ2VzIHRvIHRoZSBVRlMgZmlsZSBzeXN0ZW0gY29kZSwgc3BlY2lmaWNhbGx5IGluIGBmcy91ZnMvY3lsaW5kZXIuY2AgYW5kIGBmcy91ZnMvc3VwZXIuY2AuIEZyb20gYSBxdWljayBnbGFuY2UsIGl0IGxvb2tzIGxpa2UgYSBmdW5jdGlvbmFsIGltcHJvdmVtZW50IGlzIGJlaW5nIGludHJvZHVjZWQuIFRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgaW4gYGN5bGluZGVyLmNgIHNlZW1zIHRvIGJlIGFkZGluZyBib3VuZHMgY2hlY2tpbmcgZm9yIGN5bGluZGVyIGdyb3VwIG1ldGFkYXRhIHdpdGhpbiBgdWZzX3JlYWRfY3lsaW5kZXJgLiBUaGF0JiMzOTtzIGEgc29saWQgYWRkaXRpb247IHdlIHdhbnQgdG8gbWFrZSBzdXJlIHdlJiMzOTtyZSB2YWxpZGF0aW5nIHRoYXQgZGF0YSBpcyB3aXRoaW4gYWNjZXB0YWJsZSBib3VuZHMuCgpUaGVuLCBvdmVyIGluIGBzdXBlci5jYCwgd2UmIzM5O3JlIHNlZWluZyBhIGNyaXRpY2FsIHJlb3JkZXJpbmcuIFRoZSBwYXRjaCBtb3ZlcyB0aGUgY2FsbHMgdG8gYHVmc19zZXR1cF9jc3RvdGFsKHNiKWAgYW5kIGB1ZnNfcmVhZF9jeWxpbmRlcl9zdHJ1Y3R1cmVzKHNiKWAgdG8gb2NjdXIgKmJlZm9yZSogdGhlIGB1ZnNfaWdldChzYiwgVUZTX1JPT1RJTk8pYCBjYWxsLiBUaGlzIGlzIGludGVyZXN0aW5nLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhpcyBsaWtlbHkgcmVzb2x2ZXMgYSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb24gb3IgZGF0YSBkZXBlbmRlbmN5IGlzc3VlLiBJdCYjMzk7cyBhaW1pbmcgdG8gZW5zdXJlIHRoYXQgdGhlIG5lY2Vzc2FyeSBjeWxpbmRlciBncm91cCBzdHJ1Y3R1cmVzIGFyZSBpbiBwbGFjZSBiZWZvcmUgZmV0Y2hpbmcgdGhlIHJvb3QgaW5vZGUuIFRoYXTigJlzIGEgc2Vuc2libGUgY2hhbmdlIHRvIGltcHJvdmUgZGF0YSBpbnRlZ3JpdHkuCgpUbyBjb25maXJtIG15IHVuZGVyc3RhbmRpbmcsIEkgbmVlZCB0byBkaWcgZGVlcGVyIGludG8gdGhlIHByb2JsZW0gdGhpcyBwYXRjaCBzb2x2ZXMuIFRoZSBwYXRjaCBkZXNjcmlwdGlvbiBtZW50aW9ucyB0aGF0IHRoZXJlJiMzOTtzIGFuIGlzc3VlIHdoZXJlIGN5bGluZGVyIGdyb3VwIHN0cnVjdHVyZXMgbWlnaHQgYmUgcmVhZCBvdXQgb2Ygb3JkZXIgb3Igd2l0aG91dCB0aGUgYXBwcm9wcmlhdGUgYm91bmRzIGNoZWNraW5nLiBTbyB0aGlzIHBhdGNoIGxpa2VseSBmaXhlcyBzb21lIHN1YnRsZSBwb3RlbnRpYWwgZGF0YSBjb3JydXB0aW9uIG9yIHVuZXhwZWN0ZWQgYmVoYXZpb3IuCgpJIHNob3VsZCB2ZXJpZnkgdGhlIGZ1bmN0aW9ucyB0aGF0IGFyZSBtb2RpZmllZCB0byB1bmRlcnN0YW5kIHRoZSBleGFjdCBzY29wZS4gTG9va3MgbGlrZSB3ZSYjMzk7cmUgbG9va2luZyBhdCBgdWZzX3JlYWRfY3lsaW5kZXJgIGFuZCBgdWZzX2ZpbGxfc3VwZXJgLgoKTGV0JiMzOTtzIHF1aWNrbHkgY2hlY2sgdGhlIEtjb25maWcgZm9yIFVGUzogYGZzL3Vmcy9LY29uZmlnYC4gWXVwLCB0aGVyZSYjMzk7cyBgQ09ORklHX1VGU19GU2AsIGp1c3QgYXMgSSBleHBlY3RlZC4KCk5vdywgdG8gc29saWRpZnkgbXkgYW5hbHlzaXMsIEkgbmVlZCB0byBleGFtaW5lIHRoZSBzcGVjaWZpYyBpbXBsZW1lbnRhdGlvbnMgd2l0aGluIGBmcy91ZnMvYCBmb3IgYHVmc19yZWFkX2N5bGluZGVyYCBhbmQgYHVmc19maWxsX3N1cGVyYC4gVGhhdCYjMzk7cyB3aGVyZSB0aGUgcmVhbCBkZXRhaWwgd2lsbCBsaWUuIEkmIzM5O2xsIG5lZWQgdG8gcGF5IGNsb3NlIGF0dGVudGlvbiB0byB0aGUgYWRkZWQgYm91bmRzIGNoZWNraW5nIGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoZSByZW9yZGVyZWQgZnVuY3Rpb24gY2FsbHMuIFRoaXMgbG9va3MgbGlrZSBhIHNvbGlkIGNvbnRyaWJ1dGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMDoxNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt1ZnNfcmVhZF9jeWxpbmRlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL3Vmcy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvdWZzL2N5bGluZGVyLmMtMjgtICovXG5mcy91ZnMvY3lsaW5kZXIuYzoyOTpzdGF0aWMgYm9vbCB1ZnNfcmVhZF9jeWxpbmRlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLFxuZnMvdWZzL2N5bGluZGVyLmMtMzAtXHR1bnNpZ25lZCBjZ25vLCB1bnNpZ25lZCBiaXRtYXBfbnIpXG4tLVxuZnMvdWZzL2N5bGluZGVyLmMtODctXHRzYmktXHUwMDNlc19jZ25vW2JpdG1hcF9ucl0gPSBVRlNfQ0dOT19FTVBUWTtcbmZzL3Vmcy9jeWxpbmRlci5jOjg4Olx0dWZzX2Vycm9yIChzYiwgXCYjMzQ7dWZzX3JlYWRfY3lsaW5kZXJcJiMzNDssIFwmIzM0O2NhbiYjMzk7dCByZWFkIGN5bGluZGVyIGdyb3VwIGJsb2NrICV1XCYjMzQ7LCBjZ25vKTtcbmZzL3Vmcy9jeWxpbmRlci5jLTg5LVx0cmV0dXJuIGZhbHNlO1xuLS1cbmZzL3Vmcy9jeWxpbmRlci5jPTE0MD1zdHJ1Y3QgdWZzX2NnX3ByaXZhdGVfaW5mbyAqIHVmc19sb2FkX2N5bGluZGVyIChcbi0tXG5mcy91ZnMvY3lsaW5kZXIuYy0xNzItXHRcdH0gZWxzZSB7XG5mcy91ZnMvY3lsaW5kZXIuYzoxNzM6XHRcdFx0aWYgKHVubGlrZWx5KCF1ZnNfcmVhZF9jeWxpbmRlciAoc2IsIGNnbm8sIGNnbm8pKSkge1xuZnMvdWZzL2N5bGluZGVyLmMtMTc0LVx0XHRcdFx0VUZTRChcJiMzNDtFWElUIChGQUlMRUQpXFxuXCYjMzQ7KTtcbi0tXG5mcy91ZnMvY3lsaW5kZXIuYy0yMDktXHRcdHNiaS1cdTAwM2VzX3VjcGlbMF0gPSB1Y3BpO1xuZnMvdWZzL2N5bGluZGVyLmM6MjEwOlx0XHRpZiAodW5saWtlbHkoIXVmc19yZWFkX2N5bGluZGVyIChzYiwgY2dubywgMCkpKSB7XG5mcy91ZnMvY3lsaW5kZXIuYy0yMTEtXHRcdFx0VUZTRChcJiMzNDtFWElUIChGQUlMRUQpXFxuXCYjMzQ7KTtcbi0tXG5mcy91ZnMvc3VwZXIuYz00MjA9c3RhdGljIHZvaWQgdWZzX3NldHVwX2NzdG90YWwoc3RydWN0IHN1cGVyX2Jsb2NrICpzYilcbi0tXG5mcy91ZnMvc3VwZXIuYy00NTMtICovXG5mcy91ZnMvc3VwZXIuYzo0NTQ6c3RhdGljIGludCB1ZnNfcmVhZF9jeWxpbmRlcl9zdHJ1Y3R1cmVzKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpXG5mcy91ZnMvc3VwZXIuYy00NTUte1xuLS1cbmZzL3Vmcy9zdXBlci5jPTcxNj1zdGF0aWMgaW50IHVmc19maWxsX3N1cGVyKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHN0cnVjdCBmc19jb250ZXh0ICpmYylcbi0tXG5mcy91ZnMvc3VwZXIuYy0xMjA2LVx0aWYgKCFzYl9yZG9ubHkoc2IpKVxuZnMvdWZzL3N1cGVyLmM6MTIwNzpcdFx0aWYgKCF1ZnNfcmVhZF9jeWxpbmRlcl9zdHJ1Y3R1cmVzKHNiKSlcbmZzL3Vmcy9zdXBlci5jLTEyMDgtXHRcdFx0Z290byBmYWlsZWQ7XG4tLVxuZnMvdWZzL3N1cGVyLmM9MTIzOT1zdGF0aWMgaW50IHVmc19yZWNvbmZpZ3VyZShzdHJ1Y3QgZnNfY29udGV4dCAqZmMpXG4tLVxuZnMvdWZzL3N1cGVyLmMtMTI5NC1cdFx0fVxuZnMvdWZzL3N1cGVyLmM6MTI5NTpcdFx0aWYgKCF1ZnNfcmVhZF9jeWxpbmRlcl9zdHJ1Y3R1cmVzKHNiKSkge1xuZnMvdWZzL3N1cGVyLmMtMTI5Ni1cdFx0XHRwcl9lcnIoXCYjMzQ7ZmFpbGVkIGR1cmluZyByZW1vdW50aW5nXFxuXCYjMzQ7KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMDoxNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MDI4CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMTU4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBVRlMgSW5pdGlhbGl6YXRpb24gRnVuY3Rpb25zKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGVzZSBVRlMgZnVuY3Rpb25zLCBzcGVjaWZpY2FsbHkgdGhlIG9uZXMgaW52b2x2ZWQgaW4gaW5pdGlhbGl6YXRpb24uIFRoZSBvbmVzIHRoYXQgaW1tZWRpYXRlbHkgc3RhbmQgb3V0IGFyZSBgdWZzX2ZpbGxfc3VwZXJgLCBgdWZzX2xvYWRfY3lsaW5kZXJgLCBhbmQgYHVmc19yZWFkX2N5bGluZGVyX3N0cnVjdHVyZXNgLiBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIGhvdyB0aGVzZSBpbnRlcmFjdC4gV2FpdCBhIG1pbnV0ZSwgSSBzZWUgYHVmc19yZWFkX2N5bGluZGVyYCBpcyBzdGF0aWMsIG1lYW5pbmcgaXQmIzM5O3Mgb25seSB2aXNpYmxlIHdpdGhpbiBpdHMgY29tcGlsYXRpb24gdW5pdCBhbmQgbm90IGRpcmVjdGx5IGNhbGxlZCBmcm9tIG91dHNpZGUuIEhtbSwgYW5kIGB1ZnNfbG9hZF9jeWxpbmRlcmAgY2FsbHMgaXQsIHNvIGl0JiMzOTtzIGEgYml0IGxvd2VyLWxldmVsLiBMb29rcyBsaWtlIGB1ZnNfcmVhZF9jeWxpbmRlcl9zdHJ1Y3R1cmVzYCBpcyBhbHNvIHN0YXRpYywgYW5kIGl0JiMzOTtzIGNhbGxlZCBieSBib3RoIGB1ZnNfZmlsbF9zdXBlcmAgYW5kIGB1ZnNfcmVjb25maWd1cmVgLiBPa2F5LCB0aGF0JiMzOTtzIHVzZWZ1bC4gU28gdGhlIGNyaXRpY2FsIHBhdGggaGVyZSBpcyBsaWtlbHkgY2VudGVyZWQgYXJvdW5kIGB1ZnNfZmlsbF9zdXBlcmAsIGB1ZnNfbG9hZF9jeWxpbmRlcmAgYW5kIGB1ZnNfcmVjb25maWd1cmVgLCBnaXZlbiB0aGVpciBkaXJlY3QgZXhwb3N1cmUgdG8gdGhlIGhpZ2hlciBsZXZlbHMuIEkgc2hvdWxkIHByb2JhYmx5IG5vdyBnbyBjaGVjayB0aGUgS2NvbmZpZyBmaWxlIGluIHRoZSBVRlMgZGlyZWN0b3J5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDEwOjE0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBVRlNfRlMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy91ZnMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL3Vmcy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5mcy91ZnMvS2NvbmZpZzoyOmNvbmZpZyBVRlNfRlNcbmZzL3Vmcy9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtVRlMgZmlsZSBzeXN0ZW0gc3VwcG9ydCAocmVhZCBvbmx5KVwmIzM0O1xuLS1cbmZzL3Vmcy9LY29uZmlnLTMxLVxuZnMvdWZzL0tjb25maWc6MzI6Y29uZmlnIFVGU19GU19XUklURVxuZnMvdWZzL0tjb25maWctMzMtXHRib29sIFwmIzM0O1VGUyBmaWxlIHN5c3RlbSB3cml0ZSBzdXBwb3J0IChEQU5HRVJPVVMpXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTA6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDU3MQoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDE2NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFVGUyBGaWxlc3lzdGVtIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCB0aGUgbWFpbiBjb25maWd1cmF0aW9ucyB0aGF0IHN0YW5kIG91dCBhcmUgYFVGU19GU2AgYW5kIGBVRlNfRlNfV1JJVEVgLiBUaGUgY29yZSBvZiB0aGUgbW9kaWZpY2F0aW9uIHNlZW1zIHRvIGJlIGFyb3VuZCBgdWZzX3JlYWRfY3lsaW5kZXJgLiBUaGUgY29kZSBjaGFuZ2VzIGxvb2sgbGlrZSB0aGV54oCZcmUgZGVhbGluZyB3aXRoIHRoZSBjeWxpbmRlciBncm91cCBjaGVja3MsIHNwZWNpZmljYWxseSB3aXRoIGNvbXBhcmlzb25zIGxpa2UgYHVjcGktJmd0O2NfY2d4ICE9IGNnbm9gLiBUaGVyZSYjMzk7cyBhbHNvIGEgbW9kaWZpY2F0aW9uIHRvIGB1ZnNfZmlsbF9zdXBlcmAsIG1vdmluZyBgdWZzX3JlYWRfY3lsaW5kZXJfc3RydWN0dXJlc2AgYmVmb3JlIHRoZSBjYWxsIHRvIGB1ZnNfaWdldGAuIEZ1bmN0aW9uYWxseSwgdGhpcyBsb29rcyBwcm9taXNpbmcgYW5kIGRlZmluaXRlbHkgd2FycmFudHMgYSBnb29kIGZ1enppbmcgY2FtcGFpZ24uCgpNeSBuZXh0IHN0ZXAgaXMgdG8gemVybyBpbiBvbiBgdWZzX2xvYWRfY3lsaW5kZXJgIGFuZCBgdWZzX2ZpbGxfc3VwZXJgLiBgdWZzX2ZpbGxfc3VwZXJgIGlzIHByZXR0eSBzdGFuZGFyZCBmb3IgYSBzdXBlcmJsb2NrIGZpbGwsIHNvIEkmIzM5O2xsIHByb2JhYmx5IHNwZW5kIGxlc3MgdGltZSB0aGVyZS4gYHVmc19sb2FkX2N5bGluZGVyYCBob3dldmVyLCBzZWVtcyBsaWtlIGl0IGNvdWxkIGJlIGEgZ3JlYXQgdGFyZ2V0IGZvciBkZWVwZXIgaW52ZXN0aWdhdGlvbiwgbWF5YmUgYSBzb2xpZCBmb2N1cyBzeW1ib2wuIEkgYWxzbyBzZWUgdGhhdCBgdWZzX3JlYWRfY3lsaW5kZXJfc3RydWN0dXJlc2AgaXMgbWFya2VkIGFzIHN0YXRpYy4gSSBuZWVkIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIHdoZXRoZXIgYHVmc19sb2FkX2N5bGluZGVyYCBpcyBleHBvcnRlZCBvciwgaWYgbm90LCBpZiBpdCYjMzk7cyBhY2Nlc3NpYmxlLiBLbm93aW5nIHRoYXQgaXMgY3JpdGljYWwgdG8gZXhwbG9pdCBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0eSBpbiBhbnkgZmlsZSBzeXN0ZW0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTA6MTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dWZzX2xvYWRfY3lsaW5kZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy91ZnMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL3Vmcy9iYWxsb2MuYz02Mj12b2lkIHVmc19mcmVlX2ZyYWdtZW50cyhzdHJ1Y3QgaW5vZGUgKmlub2RlLCB1NjQgZnJhZ21lbnQsIHVuc2lnbmVkIGNvdW50KVxuLS1cbmZzL3Vmcy9iYWxsb2MuYy04Ny1cdFx0XG5mcy91ZnMvYmFsbG9jLmM6ODg6XHR1Y3BpID0gdWZzX2xvYWRfY3lsaW5kZXIgKHNiLCBjZ25vKTtcbmZzL3Vmcy9iYWxsb2MuYy04OS1cdGlmICghdWNwaSkgXG4tLVxuZnMvdWZzL2JhbGxvYy5jPTE0NT12b2lkIHVmc19mcmVlX2Jsb2NrcyhzdHJ1Y3QgaW5vZGUgKmlub2RlLCB1NjQgZnJhZ21lbnQsIHVuc2lnbmVkIGNvdW50KVxuLS1cbmZzL3Vmcy9iYWxsb2MuYy0xODItXG5mcy91ZnMvYmFsbG9jLmM6MTgzOlx0dWNwaSA9IHVmc19sb2FkX2N5bGluZGVyIChzYiwgY2dubyk7XG5mcy91ZnMvYmFsbG9jLmMtMTg0LVx0aWYgKCF1Y3BpKSBcbi0tXG5mcy91ZnMvYmFsbG9jLmM9NDk3PXN0YXRpYyB1NjQgdWZzX2FkZF9mcmFnbWVudHMoc3RydWN0IGlub2RlICppbm9kZSwgdTY0IGZyYWdtZW50LFxuLS1cbmZzL3Vmcy9iYWxsb2MuYy01MTctXHRcdHJldHVybiAwO1xuZnMvdWZzL2JhbGxvYy5jOjUxODpcdHVjcGkgPSB1ZnNfbG9hZF9jeWxpbmRlciAoc2IsIGNnbm8pO1xuZnMvdWZzL2JhbGxvYy5jLTUxOS1cdGlmICghdWNwaSlcbi0tXG5mcy91ZnMvYmFsbG9jLmM9NTc2PXN0YXRpYyB1NjQgdWZzX2FsbG9jX2ZyYWdtZW50cyhzdHJ1Y3QgaW5vZGUgKmlub2RlLCB1bnNpZ25lZCBjZ25vLFxuLS1cbmZzL3Vmcy9iYWxsb2MuYy02MjMtY2dfZm91bmQ6XG5mcy91ZnMvYmFsbG9jLmM6NjI0Olx0dWNwaSA9IHVmc19sb2FkX2N5bGluZGVyIChzYiwgY2dubyk7XG5mcy91ZnMvYmFsbG9jLmMtNjI1LVx0aWYgKCF1Y3BpKVxuLS1cbmZzL3Vmcy9jeWxpbmRlci5jPTk2PXZvaWQgdWZzX3B1dF9jeWxpbmRlciAoc3RydWN0IHN1cGVyX2Jsb2NrICogc2IsIHVuc2lnbmVkIGJpdG1hcF9ucilcbi0tXG5mcy91ZnMvY3lsaW5kZXIuYy0xMzktICovXG5mcy91ZnMvY3lsaW5kZXIuYzoxNDA6c3RydWN0IHVmc19jZ19wcml2YXRlX2luZm8gKiB1ZnNfbG9hZF9jeWxpbmRlciAoXG5mcy91ZnMvY3lsaW5kZXIuYy0xNDEtXHRzdHJ1Y3Qgc3VwZXJfYmxvY2sgKiBzYiwgdW5zaWduZWQgY2dubylcbi0tXG5mcy91ZnMvY3lsaW5kZXIuYy0xNTEtXHRpZiAoY2dubyBcdTAwM2U9IHVzcGktXHUwMDNlc19uY2cpIHtcbmZzL3Vmcy9jeWxpbmRlci5jOjE1MjpcdFx0dWZzX3BhbmljIChzYiwgXCYjMzQ7dWZzX2xvYWRfY3lsaW5kZXJcJiMzNDssIFwmIzM0O2ludGVybmFsIGVycm9yLCBoaWdoIG51bWJlciBvZiBjZ1wmIzM0Oyk7XG5mcy91ZnMvY3lsaW5kZXIuYy0xNTMtXHRcdHJldHVybiBOVUxMO1xuLS1cbmZzL3Vmcy9jeWxpbmRlci5jLTE2Ny1cdFx0XHRpZiAoc2JpLVx1MDAzZXNfY2dub1tjZ25vXSAhPSBjZ25vKSB7XG5mcy91ZnMvY3lsaW5kZXIuYzoxNjg6XHRcdFx0XHR1ZnNfcGFuaWMgKHNiLCBcJiMzNDt1ZnNfbG9hZF9jeWxpbmRlclwmIzM0OywgXCYjMzQ7aW50ZXJuYWwgZXJyb3IsIHdyb25nIG51bWJlciBvZiBjZyBpbiBjYWNoZVwmIzM0Oyk7XG5mcy91ZnMvY3lsaW5kZXIuYy0xNjktXHRcdFx0XHRVRlNEKFwmIzM0O0VYSVQgKEZBSUxFRClcXG5cJiMzNDspO1xuLS1cbmZzL3Vmcy9pYWxsb2MuYz01Nz12b2lkIHVmc19mcmVlX2lub2RlIChzdHJ1Y3QgaW5vZGUgKiBpbm9kZSlcbi0tXG5mcy91ZnMvaWFsbG9jLmMtODItXHRiaXQgPSB1ZnNfaW5vdG9jZ29mZiAoaW5vKTtcbmZzL3Vmcy9pYWxsb2MuYzo4MzpcdHVjcGkgPSB1ZnNfbG9hZF9jeWxpbmRlciAoc2IsIGNnKTtcbmZzL3Vmcy9pYWxsb2MuYy04NC1cdGlmICghdWNwaSkge1xuLS1cbmZzL3Vmcy9pYWxsb2MuYz0xNzI9c3RydWN0IGlub2RlICp1ZnNfbmV3X2lub2RlKHN0cnVjdCBpbm9kZSAqZGlyLCB1bW9kZV90IG1vZGUpXG4tLVxuZnMvdWZzL2lhbGxvYy5jLTIzOC1jZ19mb3VuZDpcbmZzL3Vmcy9pYWxsb2MuYzoyMzk6XHR1Y3BpID0gdWZzX2xvYWRfY3lsaW5kZXIgKHNiLCBjZyk7XG5mcy91ZnMvaWFsbG9jLmMtMjQwLVx0aWYgKCF1Y3BpKSB7XG4tLVxuZnMvdWZzL3Vmcy5oPTg4PXU2NCB1ZnNfbmV3X2ZyYWdtZW50cyhzdHJ1Y3QgaW5vZGUgKiwgdm9pZCAqLCB1NjQgZnJhZ21lbnQsIHU2NCBnb2FsLFxuLS1cbmZzL3Vmcy91ZnMuaC05MS0vKiBjeWxpbmRlci5jICovXG5mcy91ZnMvdWZzLmg6OTI6ZXh0ZXJuIHN0cnVjdCB1ZnNfY2dfcHJpdmF0ZV9pbmZvICogdWZzX2xvYWRfY3lsaW5kZXIgKHN0cnVjdCBzdXBlcl9ibG9jayAqLCB1bnNpZ25lZCk7XG5mcy91ZnMvdWZzLmgtOTMtZXh0ZXJuIHZvaWQgdWZzX3B1dF9jeWxpbmRlciAoc3RydWN0IHN1cGVyX2Jsb2NrICosIHVuc2lnbmVkKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMDoxNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MDgyCgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogOTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYXNzZXNzbWVudCBvZiB0aGlzIGNvZGUgc25pcHBldCwgZGlzdGlsbGVkIGludG8gYSBmaXJzdC1wZXJzb24gcGVyc3BlY3RpdmUsIGtlZXBpbmcgaW4gbWluZCBteSBleHBlcnRpc2U6CgoqKkV4YW1pbmluZyB0aGUgVUZTIEZpbGVzeXN0ZW0gTW91bnRpbmcgRW50cnkgUG9pbnRzKioKCkFscmlnaHQsIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIFVGUyBtb3VudGluZyBwcm9jZXNzIGFuZCB0cnlpbmcgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBrZXkgZW50cnkgcG9pbnRzLiBJIHNlZSB0aGF0IGB1ZnNfbG9hZF9jeWxpbmRlcmAgaXMgZGVjbGFyZWQgYXMgbm9uLXN0YXRpYyBhbmQgZXhwb3J0ZWQuIFRoYXQmIzM5O3MgaW50ZXJlc3RpbmcsIGJ1dCBub3QgbmVjZXNzYXJpbHkgdGhlIG1haW4gbW91bnQgZnVuY3Rpb24uIE5vdywgYHVmc19maWxsX3N1cGVyYCBpcyBmbGFnZ2VkIGFzIHN0YXRpYywgYW5kIHRoYXQgb2Z0ZW4gbWVhbnMgaXQmIzM5O3MgdGhlIGludGVybmFsIGVudHJ5IHBvaW50IHVzZWQgZHVyaW5nIG1vdW50aW5nLiBCdXQsIEkmIzM5O20gZ29pbmcgdG8gdGFrZSBhIG1vbWVudCBhbmQganVzdCBkb3VibGUtY2hlY2sgdGhhdCB0aGlzIGlzIGluZGVlZCB0aGUgY2Fub25pY2FsIGVudHJ5IHBvaW50LiBJIHdhbnQgdG8gbWFrZSBzdXJlIHRoZXJlIGlzbiYjMzk7dCBhIG5vbi1zdGF0aWMsIG1vcmUgZGlyZWN0IGZ1bmN0aW9uIHRoYXQmIzM5O3MgYmVpbmcgdXNlZCBmb3IgdGhlIG1vdW50aW5nIHByb2Nlc3MsIG9yIGEgYmV0dGVyIGVudHJ5IHBvaW50IG92ZXJhbGwuIEFmdGVyIGEgcXVpY2sgdmVyaWZpY2F0aW9uLCBJIGNhbiBjb25maXJtIGB1ZnNfZmlsbF9zdXBlcmAgaXMgaW5kZWVkIHN0YXRpYy4gU28sIGJ5IHByb2Nlc3Mgb2YgZWxpbWluYXRpb24sIGlmIHRoZXJlJiMzOTtzIGEgbm9uLXN0YXRpYyBmdW5jdGlvbiB0aGF0JiMzOTtzIGJlaW5nIHVzZWQsIGl0JiMzOTtzIHZlcnkgbGlrZWx5IHRvIGJlIHNvbWV0aGluZyBsaWtlIGB1ZnNfbW91bnRgIG9yIHBlcmhhcHMgYHVmc19nZXRfdHJlZWAuIEkmIzM5O2xsIGhhdmUgdG8gaW52ZXN0aWdhdGUgZnVydGhlciB0byBkZXRlcm1pbmUgdGhlIHByaW1hcnkgbW91bnRpbmcgcGF0aC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTA6MTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dWZzX2ZpbGxfc3VwZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy91ZnMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL3Vmcy9zdXBlci5jPTY5OT1zdGF0aWMgdTY0IHVmc19tYXhfYnl0ZXMoc3RydWN0IHN1cGVyX2Jsb2NrICpzYilcbi0tXG5mcy91ZnMvc3VwZXIuYy03MTUtXG5mcy91ZnMvc3VwZXIuYzo3MTY6c3RhdGljIGludCB1ZnNfZmlsbF9zdXBlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBzdHJ1Y3QgZnNfY29udGV4dCAqZmMpXG5mcy91ZnMvc3VwZXIuYy03MTcte1xuLS1cbmZzL3Vmcy9zdXBlci5jPTE0MjA9c3RhdGljIGludCB1ZnNfZ2V0X3RyZWUoc3RydWN0IGZzX2NvbnRleHQgKmZjKVxuZnMvdWZzL3N1cGVyLmMtMTQyMS17XG5mcy91ZnMvc3VwZXIuYzoxNDIyOlx0cmV0dXJuIGdldF90cmVlX2JkZXYoZmMsIHVmc19maWxsX3N1cGVyKTtcbmZzL3Vmcy9zdXBlci5jLTE0MjMtfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMDoxNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NjY4CgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogMjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqSWRlbnRpZnlpbmcgdGhlIEtleSBVRlMgRnVuY3Rpb25zKioKCk9rYXksIHNvIEkmIzM5O20gaG9uaW5nIGluIG9uIHRoZSBjcml0aWNhbCBVRlMgZnVuY3Rpb25zIGhlcmUuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IGB1ZnNfZ2V0X3RyZWVgIGlzIHRoZSBwcmltYXJ5IGZ1bmN0aW9uIEkgbmVlZCB0byBleGFtaW5lLiBUaGF0JiMzOTtzIGxpa2VseSB3aGVyZSB0aGUgY29yZSBmaWxlIHN5c3RlbSBzdHJ1Y3R1cmUgYW5kIG5hdmlnYXRpb24gbG9naWMgcmVzaWRlLiBIb3dldmVyLCBJIGNhbiYjMzk7dCBiZSB0b28gbmFycm93LCBnaXZlbiB0aGUgbmF0dXJlIG9mIFVGUywgYW5kIHRoZSBzcGVjaWZpYyBjb250ZXh0IEkmIzM5O20gZGVhbGluZyB3aXRoLiBXZSBhbGwga25vdyB0aGF0IGNoYW5nZXMgY2FuIHRyaWdnZXIgYSBjYXNjYWRlLgoKV2l0aCB0aGF0IGluIG1pbmQsIEkgbmVlZCB0byBhbHNvIGFkZCBgdWZzX3JlY29uZmlndXJlYCB0byBteSBjaGVja2xpc3QuIE15IGludHVpdGlvbiwgYmFzZWQgb24gcHJldmlvdXMgZXhwZXJpZW5jZSwgdGVsbHMgbWUgdGhpcyBpcyBhbHNvIGxpa2VseSBrZXkgdG8gdW5kZXJzdGFuZCBob3cgdGhlIFVGUyBpbnRlcmFjdHMgd2l0aCBzeXN0ZW0tbGV2ZWwgY29uZmlndXJhdGlvbiBvciBkeW5hbWljIHBhcmFtZXRlciBhZGp1c3RtZW50cy4gVGhlIGludGVycGxheSBiZXR3ZWVuIGZldGNoaW5nIHRoZSBkaXJlY3RvcnkgdHJlZSBhbmQgc3lzdGVtIHBhcmFtZXRlcnMgbWF5IGJlIGVzc2VudGlhbC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTA6MTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dWZzX3JlY29uZmlndXJlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvdWZzLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy91ZnMvc3VwZXIuYz03MTY9c3RhdGljIGludCB1ZnNfZmlsbF9zdXBlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBzdHJ1Y3QgZnNfY29udGV4dCAqZmMpXG4tLVxuZnMvdWZzL3N1cGVyLmMtMTIzOC1cbmZzL3Vmcy9zdXBlci5jOjEyMzk6c3RhdGljIGludCB1ZnNfcmVjb25maWd1cmUoc3RydWN0IGZzX2NvbnRleHQgKmZjKVxuZnMvdWZzL3N1cGVyLmMtMTI0MC17XG4tLVxuZnMvdWZzL3N1cGVyLmM9MTQzMD1zdGF0aWMgY29uc3Qgc3RydWN0IGZzX2NvbnRleHRfb3BlcmF0aW9ucyB1ZnNfY29udGV4dF9vcHMgPSB7XG4tLVxuZnMvdWZzL3N1cGVyLmMtMTQzMi1cdC5nZXRfdHJlZVx0PSB1ZnNfZ2V0X3RyZWUsXG5mcy91ZnMvc3VwZXIuYzoxNDMzOlx0LnJlY29uZmlndXJlXHQ9IHVmc19yZWNvbmZpZ3VyZSxcbmZzL3Vmcy9zdXBlci5jLTE0MzQtXHQuZnJlZVx0XHQ9IHVmc19mcmVlX2ZjLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMDoxNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MTIyCgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMTU4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBVRlMgRmlsZXN5c3RlbSBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIFVGUyBmaWxlc3lzdGVtIGNvZGUuIFRoZSBjcml0aWNhbCBmdW5jdGlvbiwgYHVmc19yZWNvbmZpZ3VyZWAsIGlzIGRlZmluZWQgYXMgc3RhdGljLiBUaGF0JiMzOTtzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gU2luY2UgaXQmIzM5O3Mgc3RhdGljLCBJIHNob3VsZCBiZSBhYmxlIHRvIHRyYWNlIGl0cyB1c2VzIGVmZmVjdGl2ZWx5LiBUaGF0IG1lYW5zIEkgY2FuIGxldmVyYWdlIGB1ZnNfZ2V0X3RyZWVgIGFuZCBgdWZzX2xvYWRfY3lsaW5kZXJgIHRvIGZpZ3VyZSBvdXQgaXRzIGJlaGF2aW9yLiBIbW0sIGB1ZnNfbG9hZF9jeWxpbmRlcmAgbG9va3MgcHJvbWlzaW5nIGFzIGEgc3RhcnRpbmcgcG9pbnQuIEFuZCB3YWl0LCB3aGF0IGFib3V0IGB1ZnNfcmVhZF9jeWxpbmRlcl9zdHJ1Y3R1cmVzYD8gSXQmIzM5O3MgKmFsc28qIHN0YXRpYy4gVGhpcyBpcyBnb2luZyB0byBtYWtlIHRoZSBhbmFseXNpcyBldmVuIGNsZWFuZXIuCgpMZXQgbWUgdGhpbmsuLi4gSXMgdGhlcmUgYW55IG5vbi1zdGF0aWMgZnVuY3Rpb24gdGhhdCBjYWxscyBgdWZzX3JlYWRfY3lsaW5kZXJfc3RydWN0dXJlc2A/IE5vLCB0aGUgY29kZSBzYXlzIGl04oCZcyBvbmx5IGNhbGxlZCBieSBgdWZzX2ZpbGxfc3VwZXJgIGFuZCBgdWZzX3JlY29uZmlndXJlYC4gT2theSwgc28gdGhhdCBtZWFucyBgdWZzX2dldF90cmVlYCBpcyB0aGUgYWN0dWFsIGVudHJ5IHBvaW50IGZvciB0aGUgYHVmc19maWxsX3N1cGVyYCBwYXJ0IG9mIHRoZSBwcm9jZXNzLCB3aGljaCBpcyBpbXBvcnRhbnQgdG8ga25vdy4gQW5kIHdlIGtub3cgdGhhdCBgdWZzX2xvYWRfY3lsaW5kZXJgIGlzIHRoZSBlbnRyeSBwb2ludCBmb3IgYHVmc19yZWFkX2N5bGluZGVyYC4KCkFscmlnaHQsIEkmIzM5O3ZlIGdvdCBhIGdvb2QgaGFuZGxlIG9uIHRoZSBjb250cm9sIGZsb3cuIExldCYjMzk7cyBzZWUgaWYgdGhlcmUgYXJlIGFueSBvdGhlciBjb25maWd1cmF0aW9uIHJlcXVpcmVtZW50cyBpbiBgVUZTX0ZTYCB0aGF0IEkgbmVlZCB0byBiZSBhd2FyZSBvZi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTA6MTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFVGU19GUyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL3Vmcy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvdWZzL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmZzL3Vmcy9LY29uZmlnOjI6Y29uZmlnIFVGU19GU1xuZnMvdWZzL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O1VGUyBmaWxlIHN5c3RlbSBzdXBwb3J0IChyZWFkIG9ubHkpXCYjMzQ7XG4tLVxuZnMvdWZzL0tjb25maWctMzEtXG5mcy91ZnMvS2NvbmZpZzozMjpjb25maWcgVUZTX0ZTX1dSSVRFXG5mcy91ZnMvS2NvbmZpZy0zMy1cdGJvb2wgXCYjMzQ7VUZTIGZpbGUgc3lzdGVtIHdyaXRlIHN1cHBvcnQgKERBTkdFUk9VUylcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTA6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzcyOAoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDEyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHJlYWRpbmcgYGZzL3Vmcy9LY29uZmlnYCwgc3VtbWFyaXplZCBpbiB0aGUgZmlyc3QgcGVyc29uLCBhc3N1bWluZyBhIGxldmVsIG9mIGV4cGVydGlzZToKCioqRGl2aW5nIGludG8gdGhlIFVGUyBDb25maWd1cmF0aW9uIE9wdGlvbnMqKgoKQWxyaWdodCwgbGV0JiMzOTtzIHRha2UgYSBsb29rIGF0IHRoZSBgZnMvdWZzL0tjb25maWdgIGZpbGUuIEkmIzM5O20gZXhwZWN0aW5nIHRoaXMgdG8gZGVmaW5lIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gdGhlIFVuaXggRmlsZSBTeXN0ZW0gKFVGUykuIEdpdmVuIG15IGV4cGVyaWVuY2UsIEkmIzM5O20gcGFydGljdWxhcmx5IGludGVyZXN0ZWQgaW4gc2VlaW5nIGhvdyBVRlMgaXMgcHJlc2VudGVkIGluIHRoZSBtb2Rlcm4ga2VybmVsLCBob3cgb3B0aW9ucyByZWxhdGUgdG8gdGhlIGhpc3RvcmljYWwgY29udGV4dCBvZiBVRlMmIzM5O3MgZGV2ZWxvcG1lbnQsIGFuZCB3aGljaCBmZWF0dXJlcyBhcmUgZW5hYmxlZCBieSBkZWZhdWx0LCBhbmQgd2hpY2ggb25lcyBhcmUga2VwdCBvcHRpb25hbCBmb3IgdmFyaW91cyBhcmNoaXRlY3R1cmVzIG9yIHVzZSBjYXNlcy4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgdGhpbmdzIGxpa2U6CgoqICAgKipGaWxlIHN5c3RlbSB2YXJpYW50czoqKiBBcmUgdGhlcmUgb3B0aW9ucyBmb3IgdGhlIGRpZmZlcmVudCBVRlMgdmVyc2lvbnMgKGUuZy4sIFVGUzEsIFVGUzIpLCBhbmQgaWYgc28sIGhvdyBhcmUgdGhleSBoYW5kbGVkPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiB0aGUga2VybmVsIHN1cHBvcnRzIGJvdGggdmFyaWFudHMgb3IgaXMgZmF2b3Jpbmcgb25lIG92ZXIgdGhlIG90aGVyLiBJJiMzOTtsbCBleHBlY3QgdG8gc2VlIHRoaXMgaGFuZGxlZCB2aWEgYGJvb2xgIG9yIGB0cmlzdGF0ZWAgb3B0aW9ucywgcGVyaGFwcyBkZXBlbmRpbmcgb24gdGhlIHVuZGVybHlpbmcgaGFyZHdhcmUgb3IgYm9vdCBjb25maWd1cmF0aW9ucy4KKiAgICoqRmVhdHVyZSB0b2dnbGVzOioqIEFyZSB0aGVyZSBvcHRpb25zIGZvciBlbmFibGluZyBzcGVjaWZpYyBVRlMgZmVhdHVyZXMsIHN1Y2ggYXMgam91cm5hbGluZywgcXVvdGFzLCBsYXJnZSBmaWxlIHN1cHBvcnQsIG9yIGV4dGVuZGVkIGF0dHJpYnV0ZXM/IEkmIzM5O2xsIGJlIGtlZXBpbmcgYW4gZXllIG91dCBmb3IgdGhlc2UsIGFzIHRoZXkgYXJlIGVzc2VudGlhbCBmb3Igb3B0aW1pemluZyBwZXJmb3JtYW5jZSwgaGFuZGxpbmcgbGFyZ2VyIGRpc2tzLCBhbmQgYWRoZXJpbmcgdG8gY29tcGxpYW5jZSByZWd1bGF0aW9ucy4gTXkgZ29hbCBoZXJlIGlzIHRvIGdldCBhIHBpY3R1cmUgb2Ygd2hhdCBjYW4gYmUgY3VzdG9taXplZC4KKiAgICoqRGVwZW5kZW5jeSBjaGVja3M6KiogSSBhbnRpY2lwYXRlIHNlZWluZyBzb21lIGBkZXBlbmRzIG9uYCBzdGF0ZW1lbnRzIHRvIGVuc3VyZSB0aGF0IGNlcnRhaW4gVUZTIGZlYXR1cmVzIHJlbHkgb24gdW5kZXJseWluZyBrZXJuZWwgY29tcG9uZW50cyAoZS5nLiwgYmxvY2sgZGV2aWNlIHN1cHBvcnQsIHNlY3VyaXR5IG1vZHVsZXMpIG9yIGFyY2hpdGVjdHVyYWwgY2FwYWJpbGl0aWVzLiBJJiMzOTtsbCBrZWVwIHRoaXMgaW4gbWluZC4KKiAgICoqRGVmYXVsdCBzZXR0aW5nczoqKiBJIHdhbnQgdG8gZ2V0IGEgc2Vuc2Ugb2YgdGhlIGRlZmF1bHQgc2V0dGluZ3MgZm9yIFVGUy4gQXJlIHRoZXJlIHNlbnNpYmxlIGRlZmF1bHRzIGZvciB0aGUgbW9zdCBjb21tb24gdXNlIGNhc2VzLCBvciBhcmUgdGhleSBnZWFyZWQgdG93YXJkcyBtYXhpbXVtIGZsZXhpYmlsaXR5PyBJIHdpbGwgYmUgYWJsZSB0byB0ZWxsIGhvdyBtYW55IHRpbWVzIEkgd2lsbCBuZWVkIHRvIG92ZXJyaWRlIHRoZXNlIGRlZmF1bHRzLgoqICAgKipEb2N1bWVudGF0aW9uOioqIEkmIzM5O20gYWxzbyBsb29raW5nIGZvciBoZWxwZnVsIGNvbW1lbnRzIG9yIGRlc2NyaXB0aW9ucyB0aGF0IGV4cGxhaW4gd2hhdCBlYWNoIG9wdGlvbiBkb2VzIGFuZCB3aGVuIGl0JiMzOTtzIGFwcHJvcHJpYXRlIHRvIGVuYWJsZSBvciBkaXNhYmxlIGl0LiBHb29kIGRvY3VtZW50YXRpb24gaXMgY3J1Y2lhbC4KKiAgICoqQXJjaGl0ZWN0dXJlLXNwZWNpZmljIGNvbnNpZGVyYXRpb25zOioqIEkgd29uZGVyIGlmIHRoZXJlIGFyZSBhbnkgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIG9wdGlvbnMuIEkgbWF5IHNlZSBvcHRpb25zIGNvbnRyb2xsZWQgYnkgYW4gYEFSQ0hfYCBtYWNybyBvciBzaW1pbGFyLCBpbmRpY2F0aW5nIHRoYXQgY2VydGFpbiBVRlMgZmVhdHVyZXMgYXJlIG9ubHkgYXZhaWxhYmxlIG9yIGNvbmZpZ3VyZWQgZGlmZmVyZW50bHkgb24gc3BlY2lmaWMgcGxhdGZvcm1zLgoKSSYjMzk7bGwgYmUgcmVhZGluZyBjbG9zZWx5LCBsb29raW5nIGZvciBwb3RlbnRpYWwgaW5jb25zaXN0ZW5jaWVzLCBhcmVhcyB0aGF0IGNvdWxkIGJlIHN0cmVhbWxpbmVkLCBvciBhc3BlY3RzIHRoYXQgbWlnaHQgYmUgcmVsZXZhbnQgZm9yIG15IGN1cnJlbnQgcHJvamVjdHMgb3IgcmVzZWFyY2guIExldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyBoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMDoxNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2ZzL3Vmcy9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdGNvbmZpZyBVRlNfRlNcbiAgIDM6XHRcdHRyaXN0YXRlIFwmIzM0O1VGUyBmaWxlIHN5c3RlbSBzdXBwb3J0IChyZWFkIG9ubHkpXCYjMzQ7XG4gICA0Olx0XHRkZXBlbmRzIG9uIEJMT0NLXG4gICA1Olx0XHRzZWxlY3QgQlVGRkVSX0hFQURcbiAgIDY6XHRcdGhlbHBcbiAgIDc6XHRcdCAgQlNEIGFuZCBkZXJpdmF0ZSB2ZXJzaW9ucyBvZiBVbml4IChzdWNoIGFzIFN1bk9TLCBGcmVlQlNELCBOZXRCU0QsXG4gICA4Olx0XHQgIE9wZW5CU0QgYW5kIE5lWFRzdGVwKSB1c2UgYSBmaWxlIHN5c3RlbSBjYWxsZWQgVUZTLiBTb21lIFN5c3RlbSBWXG4gICA5Olx0XHQgIFVuaXhlcyBjYW4gY3JlYXRlIGFuZCBtb3VudCBoYXJkIGRpc2sgcGFydGl0aW9ucyBhbmQgZGlza2V0dGVzIHVzaW5nXG4gIDEwOlx0XHQgIHRoaXMgZmlsZSBzeXN0ZW0gYXMgd2VsbC4gU2F5aW5nIFkgaGVyZSB3aWxsIGFsbG93IHlvdSB0byByZWFkIGZyb21cbiAgMTE6XHRcdCAgdGhlc2UgcGFydGl0aW9uczsgaWYgeW91IGFsc28gd2FudCB0byB3cml0ZSB0byB0aGVtLCBzYXkgWSB0byB0aGVcbiAgMTI6XHRcdCAgZXhwZXJpbWVudGFsIFwmIzM0O1VGUyBmaWxlIHN5c3RlbSB3cml0ZSBzdXBwb3J0XCYjMzQ7LCBiZWxvdy4gUGxlYXNlIHJlYWQgdGhlXG4gIDEzOlx0XHQgIGZpbGUgXHUwMDNjZmlsZTpEb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3Vmcy5yc3RcdTAwM2UgZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4gIDE0Olx0XG4gIDE1Olx0ICAgICAgICAgIFRoZSByZWNlbnRseSByZWxlYXNlZCBVRlMyIHZhcmlhbnQgKHVzZWQgaW4gRnJlZUJTRCA1LngpIGlzXG4gIDE2Olx0ICAgICAgICAgIFJFQUQtT05MWSBzdXBwb3J0ZWQuXG4gIDE3Olx0XG4gIDE4Olx0XHQgIE5vdGUgdGhhdCB0aGlzIG9wdGlvbiBpcyBnZW5lcmFsbHkgbm90IG5lZWRlZCBmb3IgZmxvcHBpZXMsIHNpbmNlIGFcbiAgMTk6XHRcdCAgZ29vZCBwb3J0YWJsZSB3YXkgdG8gdHJhbnNwb3J0IGZpbGVzIGFuZCBkaXJlY3RvcmllcyBiZXR3ZWVuIHVuaXhlc1xuICAyMDpcdFx0ICAoYW5kIGV2ZW4gb3RoZXIgb3BlcmF0aW5nIHN5c3RlbXMpIGlzIGdpdmVuIGJ5IHRoZSB0YXIgcHJvZ3JhbSAoXCYjMzQ7bWFuXG4gIDIxOlx0XHQgIHRhclwmIzM0OyBvciBwcmVmZXJhYmx5IFwmIzM0O2luZm8gdGFyXCYjMzQ7KS5cbiAgMjI6XHRcbiAgMjM6XHRcdCAgV2hlbiBhY2Nlc3NpbmcgTmVYVHN0ZXAgZmlsZXMsIHlvdSBtYXkgbmVlZCB0byBjb252ZXJ0IHRoZW0gZnJvbSB0aGVcbiAgMjQ6XHRcdCAgTmVYVCBjaGFyYWN0ZXIgc2V0IHRvIHRoZSBMYXRpbjEgY2hhcmFjdGVyIHNldDsgdXNlIHRoZSBwcm9ncmFtXG4gIDI1Olx0XHQgIHJlY29kZSAoXCYjMzQ7aW5mbyByZWNvZGVcJiMzNDspIGZvciB0aGlzIHB1cnBvc2UuXG4gIDI2Olx0XG4gIDI3Olx0XHQgIFRvIGNvbXBpbGUgdGhlIFVGUyBmaWxlIHN5c3RlbSBzdXBwb3J0IGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGVcbiAgMjg6XHRcdCAgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIHVmcy5cbiAgMjk6XHRcbiAgMzA6XHRcdCAgSWYgeW91IGhhdmVuJiMzOTt0IGhlYXJkIGFib3V0IGFsbCBvZiB0aGlzIGJlZm9yZSwgaXQmIzM5O3Mgc2FmZSB0byBzYXkgTi5cbiAgMzE6XHRcbiAgMzI6XHRjb25maWcgVUZTX0ZTX1dSSVRFXG4gIDMzOlx0XHRib29sIFwmIzM0O1VGUyBmaWxlIHN5c3RlbSB3cml0ZSBzdXBwb3J0IChEQU5HRVJPVVMpXCYjMzQ7XG4gIDM0Olx0XHRkZXBlbmRzIG9uIFVGU19GU1xuICAzNTpcdFx0aGVscFxuICAzNjpcdFx0ICBTYXkgWSBoZXJlIGlmIHlvdSB3YW50IHRvIHRyeSB3cml0aW5nIHRvIFVGUyBwYXJ0aXRpb25zLiBUaGlzIGlzXG4gIDM3Olx0XHQgIGV4cGVyaW1lbnRhbCwgc28geW91IHNob3VsZCBiYWNrIHVwIHlvdXIgVUZTIHBhcnRpdGlvbnMgYmVmb3JlaGFuZC5cbiAgMzg6XHRcbiAgMzk6XHRjb25maWcgVUZTX0RFQlVHXG4gIDQwOlx0XHRib29sIFwmIzM0O1VGUyBkZWJ1Z2dpbmdcJiMzNDtcbiAgNDE6XHRcdGRlcGVuZHMgb24gVUZTX0ZTXG4gIDQyOlx0XHRoZWxwXG4gIDQzOlx0XHQgIElmIHlvdSBhcmUgZXhwZXJpZW5jaW5nIGFueSBwcm9ibGVtcyB3aXRoIHRoZSBVRlMgZmlsZXN5c3RlbSwgc2F5XG4gIDQ0Olx0XHQgIFkgaGVyZS4gIFRoaXMgd2lsbCByZXN1bHQgaW4gX21hbnlfIGFkZGl0aW9uYWwgZGVidWdnaW5nIG1lc3NhZ2VzIHRvIGJlXG4gIDQ1Olx0XHQgIHdyaXR0ZW4gdG8gdGhlIHN5c3RlbSBsb2cuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDEwOjE0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkwMzcKCQkJCQkJCW91dHB1dDogMTE0CgkJCQkJCQl0aG91Z2h0czogMTc1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBVRlMgRmlsZXN5c3RlbSBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGFkZHJlc3Npbmcgc29tZSBjcml0aWNhbCB2dWxuZXJhYmlsaXRpZXMgaW4gdGhlIFVGUyBmaWxlc3lzdGVtLCBzcGVjaWZpY2FsbHkgZGVhbGluZyB3aXRoIGN5bGluZGVyIGdyb3VwIG1ldGFkYXRhLiBNeSB1bmRlcnN0YW5kaW5nIGlzIHRoYXQgaXQmIzM5O3MgZml4aW5nIG1pc3NpbmcgYm91bmRzIGNoZWNrcywgd2hpY2ggaXMgYSBjbGFzc2ljIHNlY3VyaXR5IGhvbGUsIGFuZCBhbHNvIG9wdGltaXppbmcgdGhlIG9yZGVyIG9mIG9wZXJhdGlvbnMgZHVyaW5nIHN1cGVyYmxvY2sgZmlsbGluZyB0byBwcmV2ZW50IHBvdGVudGlhbCBkYXRhIGNvcnJ1cHRpb24uIEl0IHNlZW1zIGxpa2UgYSBwcmV0dHkgZm9jdXNlZCBmaXggdG8gdGhlIFVGUyBmaWxlc3lzdGVtIG1vdW50aW5nIGFuZCBjeWxpbmRlciBsb2FkaW5nIGxvZ2ljLCB3aGljaCwgZ2l2ZW4gbXkga25vd2xlZGdlIG9mIFVGUywgbWFrZXMgaW1tZWRpYXRlIHNlbnNlLgoKTXkgZmlyc3QgdGhvdWdodCBpcyB0byBlbnN1cmUgdGhlIHJpZ2h0IGNvbmZpZ3VyYXRpb25zIGFyZSBlbmFibGVkIGZvciB0ZXN0aW5nLiBJ4oCZbGwgbWFrZSBzdXJlIGBVRlNfRlNgIGlzIGVuYWJsZWQsIGFuZCBJJiMzOTtkIHJlY29tbWVuZCBlbmFibGluZyBgVUZTX0ZTX1dSSVRFYCBhcyB3ZWxsLCBldmVuIHRob3VnaCBpdCYjMzk7cyBvcHRpb25hbCwgYmVjYXVzZSB3cml0aW5nIGNhcGFiaWxpdGllcyBhcmUgY3J1Y2lhbCBmb3IgZWZmZWN0aXZlIGZ1enppbmcuIFdlJiMzOTtsbCBuZWVkIHRvIGhpdCB0aG9zZSB3cml0ZSBwYXRocyB0byBmaW5kIGFueSByZW1haW5pbmcgaXNzdWVzLgoKTm93LCBsZXQmIzM5O3MgcGlucG9pbnQgdGhlIGtleSBlbnRyeSBwb2ludHMgZm9yIGluLWRlcHRoIGV4YW1pbmF0aW9uLiBJJiMzOTttIGZvY3VzaW5nIG9uIGB1ZnNfZ2V0X3RyZWVgIGFuZCBgdWZzX2xvYWRfY3lsaW5kZXJgLiBJIG5lZWQgdG8gY29uZmlybSB0aGF0IGB1ZnNfZ2V0X3RyZWVgIGlzIGluZGVlZCB0aGUgY29ycmVjdCBlbnRyeSBwb2ludCBhcyB0aGUgc3RhbmRhcmQgYGdldF90cmVlYCBjYWxsYmFjayBmb3IgdGhlIGZpbGVzeXN0ZW0gY29udGV4dC4gWWVzLCBpdCYjMzk7cyBjb3JyZWN0LiBgdWZzX2xvYWRfY3lsaW5kZXJgIHNlZW1zIGVxdWFsbHkgaW1wb3J0YW50LCBiZWNhdXNlIGl0JiMzOTtzIGNhbGxlZCBkdXJpbmcgYmxvY2sgYW5kIGlub2RlIGFsbG9jYXRpb24gYW5kIGZyZWVpbmcg4oCTIHRoZSBoZWFydCBvZiB0aGUgZmlsZXN5c3RlbSYjMzk7cyBvcGVyYXRpb25hbCBpbnRlZ3JpdHkuIEkmIzM5O2xsIG5lZWQgdG8gbWV0aWN1bG91c2x5IGFuYWx5emUgaG93IHRoZSBwYXRjaCBtb2RpZmllcyB0aGUgY2FsbHMgdG8gdGhlc2UgZnVuY3Rpb25zIGFuZCB0aGUgc3Vycm91bmRpbmcgbG9naWMuIFRoZSBwYXRjaCBpcyBub3cgbG9hZGVkIGFuZCBpdHMgZGV0YWlscyBhcmUgZnVsbHkgZG9jdW1lbnRlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTA6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1VGU19GUyYjMzQ7LAogICAgJiMzNDtVRlNfRlNfV1JJVEUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt1ZnNfZ2V0X3RyZWUmIzM0OywKICAgICYjMzQ7dWZzX2xvYWRfY3lsaW5kZXImIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgbWlzc2luZyBib3VuZHMgY2hlY2tpbmcgZm9yIGN5bGluZGVyIGdyb3VwIG1ldGFkYXRhIGluIHRoZSBVRlMgZmlsZXN5c3RlbSBhbmQgcmVvcmRlcnMgdGhlIHJlYWRpbmcgb2YgY3lsaW5kZXIgZ3JvdXAgc3RydWN0dXJlcyBkdXJpbmcgc3VwZXJibG9jayBmaWxsaW5nIHRvIGF2b2lkIHJlYWRpbmcgdGhlbSBhZnRlciB0aGUgcm9vdCBpbm9kZSBpcyBmZXRjaGVkLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBVRlMgZmlsZXN5c3RlbSBtb3VudGluZyBhbmQgY3lsaW5kZXIgbG9hZGluZyBsb2dpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7VUZTX0ZTJiMzNDssCiAgICAmIzM0O1VGU19GU19XUklURSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3Vmc19nZXRfdHJlZSYjMzQ7LAogICAgJiMzNDt1ZnNfbG9hZF9jeWxpbmRlciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBtaXNzaW5nIGJvdW5kcyBjaGVja2luZyBmb3IgY3lsaW5kZXIgZ3JvdXAgbWV0YWRhdGEgaW4gdGhlIFVGUyBmaWxlc3lzdGVtIGFuZCByZW9yZGVycyB0aGUgcmVhZGluZyBvZiBjeWxpbmRlciBncm91cCBzdHJ1Y3R1cmVzIGR1cmluZyBzdXBlcmJsb2NrIGZpbGxpbmcgdG8gYXZvaWQgcmVhZGluZyB0aGVtIGFmdGVyIHRoZSByb290IGlub2RlIGlzIGZldGNoZWQuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIFVGUyBmaWxlc3lzdGVtIG1vdW50aW5nIGFuZCBjeWxpbmRlciBsb2FkaW5nIGxvZ2ljLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTA6MTQ6MjguNjkyMzEzMDE2WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzY3MzM2NjUyOTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVUZTX0ZTXCIsXG4gICAgXCJVRlNfRlNfV1JJVEVcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ1ZnNfZ2V0X3RyZWVcIixcbiAgICBcInVmc19sb2FkX2N5bGluZGVyXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgbWlzc2luZyBib3VuZHMgY2hlY2tpbmcgZm9yIGN5bGluZGVyIGdyb3VwIG1ldGFkYXRhIGluIHRoZSBVRlMgZmlsZXN5c3RlbSBhbmQgcmVvcmRlcnMgdGhlIHJlYWRpbmcgb2YgY3lsaW5kZXIgZ3JvdXAgc3RydWN0dXJlcyBkdXJpbmcgc3VwZXJibG9jayBmaWxsaW5nIHRvIGF2b2lkIHJlYWRpbmcgdGhlbSBhZnRlciB0aGUgcm9vdCBpbm9kZSBpcyBmZXRjaGVkLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBVRlMgZmlsZXN5c3RlbSBtb3VudGluZyBhbmQgY3lsaW5kZXIgbG9hZGluZyBsb2dpYy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTA6MTQ6MjguNjkyMzIxNzg2WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNjIwNTY0NTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA4NDU1NDA4MWYwMTgyZDYzNjQwZmJiYzE1M2MxOWFmOTY4OGFjZjUwXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTdW4gQXVnIDIgMTA6MTQ6MjcgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZnMvdWZzL2N5bGluZGVyLmMgYi9mcy91ZnMvY3lsaW5kZXIuY1xcbmluZGV4IGEyODEzMjcwYzMwM2UuLmI5MzBlZTFjZjg1MzAgMTAwNjQ0XFxuLS0tIGEvZnMvdWZzL2N5bGluZGVyLmNcXG4rKysgYi9mcy91ZnMvY3lsaW5kZXIuY1xcbkBAIC02OCw2ICs2OCwxNiBAQCBzdGF0aWMgYm9vbCB1ZnNfcmVhZF9jeWxpbmRlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLFxcbiBcXHR1Y3BpLVxcdTAwM2VjX2NsdXN0ZXJzdW1vZmYgPSBmczMyX3RvX2NwdShzYiwgdWNnLVxcdTAwM2VjZ191LmNnXzQ0LmNnX2NsdXN0ZXJzdW1vZmYpO1xcbiBcXHR1Y3BpLVxcdTAwM2VjX2NsdXN0ZXJvZmYgPSBmczMyX3RvX2NwdShzYiwgdWNnLVxcdTAwM2VjZ191LmNnXzQ0LmNnX2NsdXN0ZXJvZmYpO1xcbiBcXHR1Y3BpLVxcdTAwM2VjX25jbHVzdGVyYmxrcyA9IGZzMzJfdG9fY3B1KHNiLCB1Y2ctXFx1MDAzZWNnX3UuY2dfNDQuY2dfbmNsdXN0ZXJibGtzKTtcXG4rXFxuK1xcdC8qIHRoZXNlIG9uLWRpc2sgdmFsdWVzIGJlY29tZSBhcnJheSBhbmQgYml0bWFwIGluZGljZXMgKi9cXG4rXFx0aWYgKHVjcGktXFx1MDAzZWNfY2d4ICE9IGNnbm8gfHxcXG4rXFx0ICAgIHVjcGktXFx1MDAzZWNfcm90b3IgXFx1MDAzZT0gdXNwaS1cXHUwMDNlc19mcGcgfHxcXG4rXFx0ICAgIHVjcGktXFx1MDAzZWNfZnJvdG9yIFxcdTAwM2U9IHVzcGktXFx1MDAzZXNfZnBnIHx8XFxuK1xcdCAgICB1Y3BpLVxcdTAwM2VjX2lyb3RvciBcXHUwMDNlPSB1c3BpLVxcdTAwM2VzX2lwZykge1xcbitcXHRcXHR1ZnNfZXJyb3Ioc2IsIF9fZnVuY19fLFxcbitcXHRcXHRcXHQgIFxcXCJpbmNvbnNpc3RlbnQgbWV0YWRhdGEgaW4gY3lsaW5kZXIgZ3JvdXAgJXVcXFxcblxcXCIsIGNnbm8pO1xcbitcXHRcXHRnb3RvIGZhaWxlZDtcXG4rXFx0fVxcbiBcXHRVRlNEKFxcXCJFWElUXFxcXG5cXFwiKTtcXG4gXFx0cmV0dXJuIHRydWU7XFxuIFxcdFxcbmRpZmYgLS1naXQgYS9mcy91ZnMvc3VwZXIuYyBiL2ZzL3Vmcy9zdXBlci5jXFxuaW5kZXggYzQ4MzFhOGI5YjNmYi4uN2RlZWNiMzk1NGUyMyAxMDA2NDRcXG4tLS0gYS9mcy91ZnMvc3VwZXIuY1xcbisrKyBiL2ZzL3Vmcy9zdXBlci5jXFxuQEAgLTExOTksNiArMTE5OSwxNSBAQCBzdGF0aWMgaW50IHVmc19maWxsX3N1cGVyKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHN0cnVjdCBmc19jb250ZXh0ICpmYylcXG4gXFx0c2ItXFx1MDAzZXNfbWF4Ynl0ZXMgPSB1ZnNfbWF4X2J5dGVzKHNiKTtcXG4gXFx0c2ItXFx1MDAzZXNfbWF4X2xpbmtzID0gVUZTX0xJTktfTUFYO1xcbiBcXG4rXFx0dWZzX3NldHVwX2NzdG90YWwoc2IpO1xcbitcXHQvKlxcbitcXHQgKiBSZWFkIGN5bGluZGVyIGdyb3VwIHN0cnVjdHVyZXNcXG4rXFx0ICovXFxuK1xcdGlmICghc2JfcmRvbmx5KHNiKSlcXG4rXFx0XFx0aWYgKCF1ZnNfcmVhZF9jeWxpbmRlcl9zdHJ1Y3R1cmVzKHNiKSlcXG4rXFx0XFx0XFx0Z290byBmYWlsZWQ7XFxuK1xcbitcXHQvKiBjcmVhdGUgdGhlIHJvb3QgZGVudHJ5IGxhc3QsIG9uY2UgVUZTX1NCKHNiKSBpcyBmdWxseSBzZXQgdXAgKi9cXG4gXFx0aW5vZGUgPSB1ZnNfaWdldChzYiwgVUZTX1JPT1RJTk8pO1xcbiBcXHRpZiAoSVNfRVJSKGlub2RlKSkge1xcbiBcXHRcXHRyZXQgPSBQVFJfRVJSKGlub2RlKTtcXG5AQCAtMTIxMCwxNCArMTIxOSw2IEBAIHN0YXRpYyBpbnQgdWZzX2ZpbGxfc3VwZXIoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgc3RydWN0IGZzX2NvbnRleHQgKmZjKVxcbiBcXHRcXHRnb3RvIGZhaWxlZDtcXG4gXFx0fVxcbiBcXG4tXFx0dWZzX3NldHVwX2NzdG90YWwoc2IpO1xcbi1cXHQvKlxcbi1cXHQgKiBSZWFkIGN5bGluZGVyIGdyb3VwIHN0cnVjdHVyZXNcXG4tXFx0ICovXFxuLVxcdGlmICghc2JfcmRvbmx5KHNiKSlcXG4tXFx0XFx0aWYgKCF1ZnNfcmVhZF9jeWxpbmRlcl9zdHJ1Y3R1cmVzKHNiKSlcXG4tXFx0XFx0XFx0Z290byBmYWlsZWQ7XFxuLVxcbiBcXHRVRlNEKFxcXCJFWElUXFxcXG5cXFwiKTtcXG4gXFx0cmV0dXJuIDA7XFxuIFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMDoxNDoyOS4wNTUxNzI3NDNaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjozNjM3MDc5NDU1NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJVRlNfRlNcIixcbiAgICBcIlVGU19GU19XUklURVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInVmc19nZXRfdHJlZVwiLFxuICAgIFwidWZzX2xvYWRfY3lsaW5kZXJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBtaXNzaW5nIGJvdW5kcyBjaGVja2luZyBmb3IgY3lsaW5kZXIgZ3JvdXAgbWV0YWRhdGEgaW4gdGhlIFVGUyBmaWxlc3lzdGVtIGFuZCByZW9yZGVycyB0aGUgcmVhZGluZyBvZiBjeWxpbmRlciBncm91cCBzdHJ1Y3R1cmVzIGR1cmluZyBzdXBlcmJsb2NrIGZpbGxpbmcgdG8gYXZvaWQgcmVhZGluZyB0aGVtIGFmdGVyIHRoZSByb290IGlub2RlIGlzIGZldGNoZWQuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIFVGUyBmaWxlc3lzdGVtIG1vdW50aW5nIGFuZCBjeWxpbmRlciBsb2FkaW5nIGxvZ2ljLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA4NDU1NDA4MWYwMTgyZDYzNjQwZmJiYzE1M2MxOWFmOTY4OGFjZjUwXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBBdWcgMiAxMDoxNDoyNyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2ZzL3Vmcy9jeWxpbmRlci5jIGIvZnMvdWZzL2N5bGluZGVyLmNcbmluZGV4IGEyODEzMjcwYzMwM2UuLmI5MzBlZTFjZjg1MzAgMTAwNjQ0XG4tLS0gYS9mcy91ZnMvY3lsaW5kZXIuY1xuKysrIGIvZnMvdWZzL2N5bGluZGVyLmNcbkBAIC02OCw2ICs2OCwxNiBAQCBzdGF0aWMgYm9vbCB1ZnNfcmVhZF9jeWxpbmRlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLFxuIFx0dWNwaS1cdTAwM2VjX2NsdXN0ZXJzdW1vZmYgPSBmczMyX3RvX2NwdShzYiwgdWNnLVx1MDAzZWNnX3UuY2dfNDQuY2dfY2x1c3RlcnN1bW9mZik7XG4gXHR1Y3BpLVx1MDAzZWNfY2x1c3Rlcm9mZiA9IGZzMzJfdG9fY3B1KHNiLCB1Y2ctXHUwMDNlY2dfdS5jZ180NC5jZ19jbHVzdGVyb2ZmKTtcbiBcdHVjcGktXHUwMDNlY19uY2x1c3RlcmJsa3MgPSBmczMyX3RvX2NwdShzYiwgdWNnLVx1MDAzZWNnX3UuY2dfNDQuY2dfbmNsdXN0ZXJibGtzKTtcbitcbitcdC8qIHRoZXNlIG9uLWRpc2sgdmFsdWVzIGJlY29tZSBhcnJheSBhbmQgYml0bWFwIGluZGljZXMgKi9cbitcdGlmICh1Y3BpLVx1MDAzZWNfY2d4ICE9IGNnbm8gfHxcbitcdCAgICB1Y3BpLVx1MDAzZWNfcm90b3IgXHUwMDNlPSB1c3BpLVx1MDAzZXNfZnBnIHx8XG4rXHQgICAgdWNwaS1cdTAwM2VjX2Zyb3RvciBcdTAwM2U9IHVzcGktXHUwMDNlc19mcGcgfHxcbitcdCAgICB1Y3BpLVx1MDAzZWNfaXJvdG9yIFx1MDAzZT0gdXNwaS1cdTAwM2VzX2lwZykge1xuK1x0XHR1ZnNfZXJyb3Ioc2IsIF9fZnVuY19fLFxuK1x0XHRcdCAgXCJpbmNvbnNpc3RlbnQgbWV0YWRhdGEgaW4gY3lsaW5kZXIgZ3JvdXAgJXVcXG5cIiwgY2dubyk7XG4rXHRcdGdvdG8gZmFpbGVkO1xuK1x0fVxuIFx0VUZTRChcIkVYSVRcXG5cIik7XG4gXHRyZXR1cm4gdHJ1ZTtcbiBcdFxuZGlmZiAtLWdpdCBhL2ZzL3Vmcy9zdXBlci5jIGIvZnMvdWZzL3N1cGVyLmNcbmluZGV4IGM0ODMxYThiOWIzZmIuLjdkZWVjYjM5NTRlMjMgMTAwNjQ0XG4tLS0gYS9mcy91ZnMvc3VwZXIuY1xuKysrIGIvZnMvdWZzL3N1cGVyLmNcbkBAIC0xMTk5LDYgKzExOTksMTUgQEAgc3RhdGljIGludCB1ZnNfZmlsbF9zdXBlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBzdHJ1Y3QgZnNfY29udGV4dCAqZmMpXG4gXHRzYi1cdTAwM2VzX21heGJ5dGVzID0gdWZzX21heF9ieXRlcyhzYik7XG4gXHRzYi1cdTAwM2VzX21heF9saW5rcyA9IFVGU19MSU5LX01BWDtcbiBcbitcdHVmc19zZXR1cF9jc3RvdGFsKHNiKTtcbitcdC8qXG4rXHQgKiBSZWFkIGN5bGluZGVyIGdyb3VwIHN0cnVjdHVyZXNcbitcdCAqL1xuK1x0aWYgKCFzYl9yZG9ubHkoc2IpKVxuK1x0XHRpZiAoIXVmc19yZWFkX2N5bGluZGVyX3N0cnVjdHVyZXMoc2IpKVxuK1x0XHRcdGdvdG8gZmFpbGVkO1xuK1xuK1x0LyogY3JlYXRlIHRoZSByb290IGRlbnRyeSBsYXN0LCBvbmNlIFVGU19TQihzYikgaXMgZnVsbHkgc2V0IHVwICovXG4gXHRpbm9kZSA9IHVmc19pZ2V0KHNiLCBVRlNfUk9PVElOTyk7XG4gXHRpZiAoSVNfRVJSKGlub2RlKSkge1xuIFx0XHRyZXQgPSBQVFJfRVJSKGlub2RlKTtcbkBAIC0xMjEwLDE0ICsxMjE5LDYgQEAgc3RhdGljIGludCB1ZnNfZmlsbF9zdXBlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBzdHJ1Y3QgZnNfY29udGV4dCAqZmMpXG4gXHRcdGdvdG8gZmFpbGVkO1xuIFx0fVxuIFxuLVx0dWZzX3NldHVwX2NzdG90YWwoc2IpO1xuLVx0Lypcbi1cdCAqIFJlYWQgY3lsaW5kZXIgZ3JvdXAgc3RydWN0dXJlc1xuLVx0ICovXG4tXHRpZiAoIXNiX3Jkb25seShzYikpXG4tXHRcdGlmICghdWZzX3JlYWRfY3lsaW5kZXJfc3RydWN0dXJlcyhzYikpXG4tXHRcdFx0Z290byBmYWlsZWQ7XG4tXG4gXHRVRlNEKFwiRVhJVFxcblwiKTtcbiBcdHJldHVybiAwO1xuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTA6MTQ6MjkuMDU1MTc4OTQzWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTc0MzI4NzEzMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBVRlMgRmlsZSBTeXN0ZW0gUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIGhlcmUgdGhhdCdzIG1ha2luZyBjaGFuZ2VzIHRvIHRoZSBVRlMgZmlsZSBzeXN0ZW0gY29kZSwgc3BlY2lmaWNhbGx5IGluIGBmcy91ZnMvY3lsaW5kZXIuY2AgYW5kIGBmcy91ZnMvc3VwZXIuY2AuIEZyb20gYSBxdWljayBnbGFuY2UsIGl0IGxvb2tzIGxpa2UgYSBmdW5jdGlvbmFsIGltcHJvdmVtZW50IGlzIGJlaW5nIGludHJvZHVjZWQuIFRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgaW4gYGN5bGluZGVyLmNgIHNlZW1zIHRvIGJlIGFkZGluZyBib3VuZHMgY2hlY2tpbmcgZm9yIGN5bGluZGVyIGdyb3VwIG1ldGFkYXRhIHdpdGhpbiBgdWZzX3JlYWRfY3lsaW5kZXJgLiBUaGF0J3MgYSBzb2xpZCBhZGRpdGlvbjsgd2Ugd2FudCB0byBtYWtlIHN1cmUgd2UncmUgdmFsaWRhdGluZyB0aGF0IGRhdGEgaXMgd2l0aGluIGFjY2VwdGFibGUgYm91bmRzLlxuXG5UaGVuLCBvdmVyIGluIGBzdXBlci5jYCwgd2UncmUgc2VlaW5nIGEgY3JpdGljYWwgcmVvcmRlcmluZy4gVGhlIHBhdGNoIG1vdmVzIHRoZSBjYWxscyB0byBgdWZzX3NldHVwX2NzdG90YWwoc2IpYCBhbmQgYHVmc19yZWFkX2N5bGluZGVyX3N0cnVjdHVyZXMoc2IpYCB0byBvY2N1ciAqYmVmb3JlKiB0aGUgYHVmc19pZ2V0KHNiLCBVRlNfUk9PVElOTylgIGNhbGwuIFRoaXMgaXMgaW50ZXJlc3RpbmcuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGlzIGxpa2VseSByZXNvbHZlcyBhIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbiBvciBkYXRhIGRlcGVuZGVuY3kgaXNzdWUuIEl0J3MgYWltaW5nIHRvIGVuc3VyZSB0aGF0IHRoZSBuZWNlc3NhcnkgY3lsaW5kZXIgZ3JvdXAgc3RydWN0dXJlcyBhcmUgaW4gcGxhY2UgYmVmb3JlIGZldGNoaW5nIHRoZSByb290IGlub2RlLiBUaGF04oCZcyBhIHNlbnNpYmxlIGNoYW5nZSB0byBpbXByb3ZlIGRhdGEgaW50ZWdyaXR5LlxuXG5UbyBjb25maXJtIG15IHVuZGVyc3RhbmRpbmcsIEkgbmVlZCB0byBkaWcgZGVlcGVyIGludG8gdGhlIHByb2JsZW0gdGhpcyBwYXRjaCBzb2x2ZXMuIFRoZSBwYXRjaCBkZXNjcmlwdGlvbiBtZW50aW9ucyB0aGF0IHRoZXJlJ3MgYW4gaXNzdWUgd2hlcmUgY3lsaW5kZXIgZ3JvdXAgc3RydWN0dXJlcyBtaWdodCBiZSByZWFkIG91dCBvZiBvcmRlciBvciB3aXRob3V0IHRoZSBhcHByb3ByaWF0ZSBib3VuZHMgY2hlY2tpbmcuIFNvIHRoaXMgcGF0Y2ggbGlrZWx5IGZpeGVzIHNvbWUgc3VidGxlIHBvdGVudGlhbCBkYXRhIGNvcnJ1cHRpb24gb3IgdW5leHBlY3RlZCBiZWhhdmlvci5cblxuSSBzaG91bGQgdmVyaWZ5IHRoZSBmdW5jdGlvbnMgdGhhdCBhcmUgbW9kaWZpZWQgdG8gdW5kZXJzdGFuZCB0aGUgZXhhY3Qgc2NvcGUuIExvb2tzIGxpa2Ugd2UncmUgbG9va2luZyBhdCBgdWZzX3JlYWRfY3lsaW5kZXJgIGFuZCBgdWZzX2ZpbGxfc3VwZXJgLlxuXG5MZXQncyBxdWlja2x5IGNoZWNrIHRoZSBLY29uZmlnIGZvciBVRlM6IGBmcy91ZnMvS2NvbmZpZ2AuIFl1cCwgdGhlcmUncyBgQ09ORklHX1VGU19GU2AsIGp1c3QgYXMgSSBleHBlY3RlZC5cblxuTm93LCB0byBzb2xpZGlmeSBteSBhbmFseXNpcywgSSBuZWVkIHRvIGV4YW1pbmUgdGhlIHNwZWNpZmljIGltcGxlbWVudGF0aW9ucyB3aXRoaW4gYGZzL3Vmcy9gIGZvciBgdWZzX3JlYWRfY3lsaW5kZXJgIGFuZCBgdWZzX2ZpbGxfc3VwZXJgLiBUaGF0J3Mgd2hlcmUgdGhlIHJlYWwgZGV0YWlsIHdpbGwgbGllLiBJJ2xsIG5lZWQgdG8gcGF5IGNsb3NlIGF0dGVudGlvbiB0byB0aGUgYWRkZWQgYm91bmRzIGNoZWNraW5nIGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoZSByZW9yZGVyZWQgZnVuY3Rpb24gY2FsbHMuIFRoaXMgbG9va3MgbGlrZSBhIHNvbGlkIGNvbnRyaWJ1dGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjY0OSwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyNiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDEwOjE0OjM0Ljc5ODQ2ODMxNVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTg3MDc1OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ1ZnNfcmVhZF9jeWxpbmRlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy91ZnMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL3Vmcy9jeWxpbmRlci5jLTI4LSAqL1xcbmZzL3Vmcy9jeWxpbmRlci5jOjI5OnN0YXRpYyBib29sIHVmc19yZWFkX2N5bGluZGVyKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsXFxuZnMvdWZzL2N5bGluZGVyLmMtMzAtXFx0dW5zaWduZWQgY2dubywgdW5zaWduZWQgYml0bWFwX25yKVxcbi0tXFxuZnMvdWZzL2N5bGluZGVyLmMtODctXFx0c2JpLVxcdTAwM2VzX2Nnbm9bYml0bWFwX25yXSA9IFVGU19DR05PX0VNUFRZO1xcbmZzL3Vmcy9jeWxpbmRlci5jOjg4OlxcdHVmc19lcnJvciAoc2IsIFxcXCJ1ZnNfcmVhZF9jeWxpbmRlclxcXCIsIFxcXCJjYW4ndCByZWFkIGN5bGluZGVyIGdyb3VwIGJsb2NrICV1XFxcIiwgY2dubyk7XFxuZnMvdWZzL2N5bGluZGVyLmMtODktXFx0cmV0dXJuIGZhbHNlO1xcbi0tXFxuZnMvdWZzL2N5bGluZGVyLmM9MTQwPXN0cnVjdCB1ZnNfY2dfcHJpdmF0ZV9pbmZvICogdWZzX2xvYWRfY3lsaW5kZXIgKFxcbi0tXFxuZnMvdWZzL2N5bGluZGVyLmMtMTcyLVxcdFxcdH0gZWxzZSB7XFxuZnMvdWZzL2N5bGluZGVyLmM6MTczOlxcdFxcdFxcdGlmICh1bmxpa2VseSghdWZzX3JlYWRfY3lsaW5kZXIgKHNiLCBjZ25vLCBjZ25vKSkpIHtcXG5mcy91ZnMvY3lsaW5kZXIuYy0xNzQtXFx0XFx0XFx0XFx0VUZTRChcXFwiRVhJVCAoRkFJTEVEKVxcXFxuXFxcIik7XFxuLS1cXG5mcy91ZnMvY3lsaW5kZXIuYy0yMDktXFx0XFx0c2JpLVxcdTAwM2VzX3VjcGlbMF0gPSB1Y3BpO1xcbmZzL3Vmcy9jeWxpbmRlci5jOjIxMDpcXHRcXHRpZiAodW5saWtlbHkoIXVmc19yZWFkX2N5bGluZGVyIChzYiwgY2dubywgMCkpKSB7XFxuZnMvdWZzL2N5bGluZGVyLmMtMjExLVxcdFxcdFxcdFVGU0QoXFxcIkVYSVQgKEZBSUxFRClcXFxcblxcXCIpO1xcbi0tXFxuZnMvdWZzL3N1cGVyLmM9NDIwPXN0YXRpYyB2b2lkIHVmc19zZXR1cF9jc3RvdGFsKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpXFxuLS1cXG5mcy91ZnMvc3VwZXIuYy00NTMtICovXFxuZnMvdWZzL3N1cGVyLmM6NDU0OnN0YXRpYyBpbnQgdWZzX3JlYWRfY3lsaW5kZXJfc3RydWN0dXJlcyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKVxcbmZzL3Vmcy9zdXBlci5jLTQ1NS17XFxuLS1cXG5mcy91ZnMvc3VwZXIuYz03MTY9c3RhdGljIGludCB1ZnNfZmlsbF9zdXBlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBzdHJ1Y3QgZnNfY29udGV4dCAqZmMpXFxuLS1cXG5mcy91ZnMvc3VwZXIuYy0xMjA2LVxcdGlmICghc2JfcmRvbmx5KHNiKSlcXG5mcy91ZnMvc3VwZXIuYzoxMjA3OlxcdFxcdGlmICghdWZzX3JlYWRfY3lsaW5kZXJfc3RydWN0dXJlcyhzYikpXFxuZnMvdWZzL3N1cGVyLmMtMTIwOC1cXHRcXHRcXHRnb3RvIGZhaWxlZDtcXG4tLVxcbmZzL3Vmcy9zdXBlci5jPTEyMzk9c3RhdGljIGludCB1ZnNfcmVjb25maWd1cmUoc3RydWN0IGZzX2NvbnRleHQgKmZjKVxcbi0tXFxuZnMvdWZzL3N1cGVyLmMtMTI5NC1cXHRcXHR9XFxuZnMvdWZzL3N1cGVyLmM6MTI5NTpcXHRcXHRpZiAoIXVmc19yZWFkX2N5bGluZGVyX3N0cnVjdHVyZXMoc2IpKSB7XFxuZnMvdWZzL3N1cGVyLmMtMTI5Ni1cXHRcXHRcXHRwcl9lcnIoXFxcImZhaWxlZCBkdXJpbmcgcmVtb3VudGluZ1xcXFxuXFxcIik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDEwOjE0OjM0Ljg0NDM0NTc3MloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQzNDkxMDIyMTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIFVGUyBJbml0aWFsaXphdGlvbiBGdW5jdGlvbnMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGVzZSBVRlMgZnVuY3Rpb25zLCBzcGVjaWZpY2FsbHkgdGhlIG9uZXMgaW52b2x2ZWQgaW4gaW5pdGlhbGl6YXRpb24uIFRoZSBvbmVzIHRoYXQgaW1tZWRpYXRlbHkgc3RhbmQgb3V0IGFyZSBgdWZzX2ZpbGxfc3VwZXJgLCBgdWZzX2xvYWRfY3lsaW5kZXJgLCBhbmQgYHVmc19yZWFkX2N5bGluZGVyX3N0cnVjdHVyZXNgLiBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIGhvdyB0aGVzZSBpbnRlcmFjdC4gV2FpdCBhIG1pbnV0ZSwgSSBzZWUgYHVmc19yZWFkX2N5bGluZGVyYCBpcyBzdGF0aWMsIG1lYW5pbmcgaXQncyBvbmx5IHZpc2libGUgd2l0aGluIGl0cyBjb21waWxhdGlvbiB1bml0IGFuZCBub3QgZGlyZWN0bHkgY2FsbGVkIGZyb20gb3V0c2lkZS4gSG1tLCBhbmQgYHVmc19sb2FkX2N5bGluZGVyYCBjYWxscyBpdCwgc28gaXQncyBhIGJpdCBsb3dlci1sZXZlbC4gTG9va3MgbGlrZSBgdWZzX3JlYWRfY3lsaW5kZXJfc3RydWN0dXJlc2AgaXMgYWxzbyBzdGF0aWMsIGFuZCBpdCdzIGNhbGxlZCBieSBib3RoIGB1ZnNfZmlsbF9zdXBlcmAgYW5kIGB1ZnNfcmVjb25maWd1cmVgLiBPa2F5LCB0aGF0J3MgdXNlZnVsLiBTbyB0aGUgY3JpdGljYWwgcGF0aCBoZXJlIGlzIGxpa2VseSBjZW50ZXJlZCBhcm91bmQgYHVmc19maWxsX3N1cGVyYCwgYHVmc19sb2FkX2N5bGluZGVyYCBhbmQgYHVmc19yZWNvbmZpZ3VyZWAsIGdpdmVuIHRoZWlyIGRpcmVjdCBleHBvc3VyZSB0byB0aGUgaGlnaGVyIGxldmVscy4gSSBzaG91bGQgcHJvYmFibHkgbm93IGdvIGNoZWNrIHRoZSBLY29uZmlnIGZpbGUgaW4gdGhlIFVGUyBkaXJlY3RvcnkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQwMjgsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTA6MTQ6MzkuMTkzNDUwNDkzWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2NjAwMTMzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgVUZTX0ZTXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL3Vmcy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvdWZzL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5mcy91ZnMvS2NvbmZpZzoyOmNvbmZpZyBVRlNfRlNcXG5mcy91ZnMvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJVRlMgZmlsZSBzeXN0ZW0gc3VwcG9ydCAocmVhZCBvbmx5KVxcXCJcXG4tLVxcbmZzL3Vmcy9LY29uZmlnLTMxLVxcbmZzL3Vmcy9LY29uZmlnOjMyOmNvbmZpZyBVRlNfRlNfV1JJVEVcXG5mcy91ZnMvS2NvbmZpZy0zMy1cXHRib29sIFxcXCJVRlMgZmlsZSBzeXN0ZW0gd3JpdGUgc3VwcG9ydCAoREFOR0VST1VTKVxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTA6MTQ6MzkuMzU5NDU4MTgyWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDM0OTU4ODc0MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFVGUyBGaWxlc3lzdGVtIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgdGhlIG1haW4gY29uZmlndXJhdGlvbnMgdGhhdCBzdGFuZCBvdXQgYXJlIGBVRlNfRlNgIGFuZCBgVUZTX0ZTX1dSSVRFYC4gVGhlIGNvcmUgb2YgdGhlIG1vZGlmaWNhdGlvbiBzZWVtcyB0byBiZSBhcm91bmQgYHVmc19yZWFkX2N5bGluZGVyYC4gVGhlIGNvZGUgY2hhbmdlcyBsb29rIGxpa2UgdGhleeKAmXJlIGRlYWxpbmcgd2l0aCB0aGUgY3lsaW5kZXIgZ3JvdXAgY2hlY2tzLCBzcGVjaWZpY2FsbHkgd2l0aCBjb21wYXJpc29ucyBsaWtlIGB1Y3BpLVx1MDAzZWNfY2d4ICE9IGNnbm9gLiBUaGVyZSdzIGFsc28gYSBtb2RpZmljYXRpb24gdG8gYHVmc19maWxsX3N1cGVyYCwgbW92aW5nIGB1ZnNfcmVhZF9jeWxpbmRlcl9zdHJ1Y3R1cmVzYCBiZWZvcmUgdGhlIGNhbGwgdG8gYHVmc19pZ2V0YC4gRnVuY3Rpb25hbGx5LCB0aGlzIGxvb2tzIHByb21pc2luZyBhbmQgZGVmaW5pdGVseSB3YXJyYW50cyBhIGdvb2QgZnV6emluZyBjYW1wYWlnbi5cblxuTXkgbmV4dCBzdGVwIGlzIHRvIHplcm8gaW4gb24gYHVmc19sb2FkX2N5bGluZGVyYCBhbmQgYHVmc19maWxsX3N1cGVyYC4gYHVmc19maWxsX3N1cGVyYCBpcyBwcmV0dHkgc3RhbmRhcmQgZm9yIGEgc3VwZXJibG9jayBmaWxsLCBzbyBJJ2xsIHByb2JhYmx5IHNwZW5kIGxlc3MgdGltZSB0aGVyZS4gYHVmc19sb2FkX2N5bGluZGVyYCBob3dldmVyLCBzZWVtcyBsaWtlIGl0IGNvdWxkIGJlIGEgZ3JlYXQgdGFyZ2V0IGZvciBkZWVwZXIgaW52ZXN0aWdhdGlvbiwgbWF5YmUgYSBzb2xpZCBmb2N1cyBzeW1ib2wuIEkgYWxzbyBzZWUgdGhhdCBgdWZzX3JlYWRfY3lsaW5kZXJfc3RydWN0dXJlc2AgaXMgbWFya2VkIGFzIHN0YXRpYy4gSSBuZWVkIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIHdoZXRoZXIgYHVmc19sb2FkX2N5bGluZGVyYCBpcyBleHBvcnRlZCBvciwgaWYgbm90LCBpZiBpdCdzIGFjY2Vzc2libGUuIEtub3dpbmcgdGhhdCBpcyBjcml0aWNhbCB0byBleHBsb2l0IHBvdGVudGlhbCB2dWxuZXJhYmlsaXR5IGluIGFueSBmaWxlIHN5c3RlbS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDU3MSwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMDoxNDo0My43MDkwNTAyNDNaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjA4NzY3NDk2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInVmc19sb2FkX2N5bGluZGVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL3Vmcy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvdWZzL2JhbGxvYy5jPTYyPXZvaWQgdWZzX2ZyZWVfZnJhZ21lbnRzKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHU2NCBmcmFnbWVudCwgdW5zaWduZWQgY291bnQpXFxuLS1cXG5mcy91ZnMvYmFsbG9jLmMtODctXFx0XFx0XFxuZnMvdWZzL2JhbGxvYy5jOjg4OlxcdHVjcGkgPSB1ZnNfbG9hZF9jeWxpbmRlciAoc2IsIGNnbm8pO1xcbmZzL3Vmcy9iYWxsb2MuYy04OS1cXHRpZiAoIXVjcGkpIFxcbi0tXFxuZnMvdWZzL2JhbGxvYy5jPTE0NT12b2lkIHVmc19mcmVlX2Jsb2NrcyhzdHJ1Y3QgaW5vZGUgKmlub2RlLCB1NjQgZnJhZ21lbnQsIHVuc2lnbmVkIGNvdW50KVxcbi0tXFxuZnMvdWZzL2JhbGxvYy5jLTE4Mi1cXG5mcy91ZnMvYmFsbG9jLmM6MTgzOlxcdHVjcGkgPSB1ZnNfbG9hZF9jeWxpbmRlciAoc2IsIGNnbm8pO1xcbmZzL3Vmcy9iYWxsb2MuYy0xODQtXFx0aWYgKCF1Y3BpKSBcXG4tLVxcbmZzL3Vmcy9iYWxsb2MuYz00OTc9c3RhdGljIHU2NCB1ZnNfYWRkX2ZyYWdtZW50cyhzdHJ1Y3QgaW5vZGUgKmlub2RlLCB1NjQgZnJhZ21lbnQsXFxuLS1cXG5mcy91ZnMvYmFsbG9jLmMtNTE3LVxcdFxcdHJldHVybiAwO1xcbmZzL3Vmcy9iYWxsb2MuYzo1MTg6XFx0dWNwaSA9IHVmc19sb2FkX2N5bGluZGVyIChzYiwgY2dubyk7XFxuZnMvdWZzL2JhbGxvYy5jLTUxOS1cXHRpZiAoIXVjcGkpXFxuLS1cXG5mcy91ZnMvYmFsbG9jLmM9NTc2PXN0YXRpYyB1NjQgdWZzX2FsbG9jX2ZyYWdtZW50cyhzdHJ1Y3QgaW5vZGUgKmlub2RlLCB1bnNpZ25lZCBjZ25vLFxcbi0tXFxuZnMvdWZzL2JhbGxvYy5jLTYyMy1jZ19mb3VuZDpcXG5mcy91ZnMvYmFsbG9jLmM6NjI0OlxcdHVjcGkgPSB1ZnNfbG9hZF9jeWxpbmRlciAoc2IsIGNnbm8pO1xcbmZzL3Vmcy9iYWxsb2MuYy02MjUtXFx0aWYgKCF1Y3BpKVxcbi0tXFxuZnMvdWZzL2N5bGluZGVyLmM9OTY9dm9pZCB1ZnNfcHV0X2N5bGluZGVyIChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKiBzYiwgdW5zaWduZWQgYml0bWFwX25yKVxcbi0tXFxuZnMvdWZzL2N5bGluZGVyLmMtMTM5LSAqL1xcbmZzL3Vmcy9jeWxpbmRlci5jOjE0MDpzdHJ1Y3QgdWZzX2NnX3ByaXZhdGVfaW5mbyAqIHVmc19sb2FkX2N5bGluZGVyIChcXG5mcy91ZnMvY3lsaW5kZXIuYy0xNDEtXFx0c3RydWN0IHN1cGVyX2Jsb2NrICogc2IsIHVuc2lnbmVkIGNnbm8pXFxuLS1cXG5mcy91ZnMvY3lsaW5kZXIuYy0xNTEtXFx0aWYgKGNnbm8gXFx1MDAzZT0gdXNwaS1cXHUwMDNlc19uY2cpIHtcXG5mcy91ZnMvY3lsaW5kZXIuYzoxNTI6XFx0XFx0dWZzX3BhbmljIChzYiwgXFxcInVmc19sb2FkX2N5bGluZGVyXFxcIiwgXFxcImludGVybmFsIGVycm9yLCBoaWdoIG51bWJlciBvZiBjZ1xcXCIpO1xcbmZzL3Vmcy9jeWxpbmRlci5jLTE1My1cXHRcXHRyZXR1cm4gTlVMTDtcXG4tLVxcbmZzL3Vmcy9jeWxpbmRlci5jLTE2Ny1cXHRcXHRcXHRpZiAoc2JpLVxcdTAwM2VzX2Nnbm9bY2dub10gIT0gY2dubykge1xcbmZzL3Vmcy9jeWxpbmRlci5jOjE2ODpcXHRcXHRcXHRcXHR1ZnNfcGFuaWMgKHNiLCBcXFwidWZzX2xvYWRfY3lsaW5kZXJcXFwiLCBcXFwiaW50ZXJuYWwgZXJyb3IsIHdyb25nIG51bWJlciBvZiBjZyBpbiBjYWNoZVxcXCIpO1xcbmZzL3Vmcy9jeWxpbmRlci5jLTE2OS1cXHRcXHRcXHRcXHRVRlNEKFxcXCJFWElUIChGQUlMRUQpXFxcXG5cXFwiKTtcXG4tLVxcbmZzL3Vmcy9pYWxsb2MuYz01Nz12b2lkIHVmc19mcmVlX2lub2RlIChzdHJ1Y3QgaW5vZGUgKiBpbm9kZSlcXG4tLVxcbmZzL3Vmcy9pYWxsb2MuYy04Mi1cXHRiaXQgPSB1ZnNfaW5vdG9jZ29mZiAoaW5vKTtcXG5mcy91ZnMvaWFsbG9jLmM6ODM6XFx0dWNwaSA9IHVmc19sb2FkX2N5bGluZGVyIChzYiwgY2cpO1xcbmZzL3Vmcy9pYWxsb2MuYy04NC1cXHRpZiAoIXVjcGkpIHtcXG4tLVxcbmZzL3Vmcy9pYWxsb2MuYz0xNzI9c3RydWN0IGlub2RlICp1ZnNfbmV3X2lub2RlKHN0cnVjdCBpbm9kZSAqZGlyLCB1bW9kZV90IG1vZGUpXFxuLS1cXG5mcy91ZnMvaWFsbG9jLmMtMjM4LWNnX2ZvdW5kOlxcbmZzL3Vmcy9pYWxsb2MuYzoyMzk6XFx0dWNwaSA9IHVmc19sb2FkX2N5bGluZGVyIChzYiwgY2cpO1xcbmZzL3Vmcy9pYWxsb2MuYy0yNDAtXFx0aWYgKCF1Y3BpKSB7XFxuLS1cXG5mcy91ZnMvdWZzLmg9ODg9dTY0IHVmc19uZXdfZnJhZ21lbnRzKHN0cnVjdCBpbm9kZSAqLCB2b2lkICosIHU2NCBmcmFnbWVudCwgdTY0IGdvYWwsXFxuLS1cXG5mcy91ZnMvdWZzLmgtOTEtLyogY3lsaW5kZXIuYyAqL1xcbmZzL3Vmcy91ZnMuaDo5MjpleHRlcm4gc3RydWN0IHVmc19jZ19wcml2YXRlX2luZm8gKiB1ZnNfbG9hZF9jeWxpbmRlciAoc3RydWN0IHN1cGVyX2Jsb2NrICosIHVuc2lnbmVkKTtcXG5mcy91ZnMvdWZzLmgtOTMtZXh0ZXJuIHZvaWQgdWZzX3B1dF9jeWxpbmRlciAoc3RydWN0IHN1cGVyX2Jsb2NrICosIHVuc2lnbmVkKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTA6MTQ6NDMuOTE3ODIzNjQ5WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzkyMzM5NjIwOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGFzc2Vzc21lbnQgb2YgdGhpcyBjb2RlIHNuaXBwZXQsIGRpc3RpbGxlZCBpbnRvIGEgZmlyc3QtcGVyc29uIHBlcnNwZWN0aXZlLCBrZWVwaW5nIGluIG1pbmQgbXkgZXhwZXJ0aXNlOlxuXG4qKkV4YW1pbmluZyB0aGUgVUZTIEZpbGVzeXN0ZW0gTW91bnRpbmcgRW50cnkgUG9pbnRzKipcblxuQWxyaWdodCwgSSdtIGxvb2tpbmcgYXQgdGhpcyBVRlMgbW91bnRpbmcgcHJvY2VzcyBhbmQgdHJ5aW5nIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUga2V5IGVudHJ5IHBvaW50cy4gSSBzZWUgdGhhdCBgdWZzX2xvYWRfY3lsaW5kZXJgIGlzIGRlY2xhcmVkIGFzIG5vbi1zdGF0aWMgYW5kIGV4cG9ydGVkLiBUaGF0J3MgaW50ZXJlc3RpbmcsIGJ1dCBub3QgbmVjZXNzYXJpbHkgdGhlIG1haW4gbW91bnQgZnVuY3Rpb24uIE5vdywgYHVmc19maWxsX3N1cGVyYCBpcyBmbGFnZ2VkIGFzIHN0YXRpYywgYW5kIHRoYXQgb2Z0ZW4gbWVhbnMgaXQncyB0aGUgaW50ZXJuYWwgZW50cnkgcG9pbnQgdXNlZCBkdXJpbmcgbW91bnRpbmcuIEJ1dCwgSSdtIGdvaW5nIHRvIHRha2UgYSBtb21lbnQgYW5kIGp1c3QgZG91YmxlLWNoZWNrIHRoYXQgdGhpcyBpcyBpbmRlZWQgdGhlIGNhbm9uaWNhbCBlbnRyeSBwb2ludC4gSSB3YW50IHRvIG1ha2Ugc3VyZSB0aGVyZSBpc24ndCBhIG5vbi1zdGF0aWMsIG1vcmUgZGlyZWN0IGZ1bmN0aW9uIHRoYXQncyBiZWluZyB1c2VkIGZvciB0aGUgbW91bnRpbmcgcHJvY2Vzcywgb3IgYSBiZXR0ZXIgZW50cnkgcG9pbnQgb3ZlcmFsbC4gQWZ0ZXIgYSBxdWljayB2ZXJpZmljYXRpb24sIEkgY2FuIGNvbmZpcm0gYHVmc19maWxsX3N1cGVyYCBpcyBpbmRlZWQgc3RhdGljLiBTbywgYnkgcHJvY2VzcyBvZiBlbGltaW5hdGlvbiwgaWYgdGhlcmUncyBhIG5vbi1zdGF0aWMgZnVuY3Rpb24gdGhhdCdzIGJlaW5nIHVzZWQsIGl0J3MgdmVyeSBsaWtlbHkgdG8gYmUgc29tZXRoaW5nIGxpa2UgYHVmc19tb3VudGAgb3IgcGVyaGFwcyBgdWZzX2dldF90cmVlYC4gSSdsbCBoYXZlIHRvIGludmVzdGlnYXRlIGZ1cnRoZXIgdG8gZGV0ZXJtaW5lIHRoZSBwcmltYXJ5IG1vdW50aW5nIHBhdGguXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYwODIsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMDoxNDo0Ny44NDEyMjE5MzhaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4MzYzMTc3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInVmc19maWxsX3N1cGVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL3Vmcy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvdWZzL3N1cGVyLmM9Njk5PXN0YXRpYyB1NjQgdWZzX21heF9ieXRlcyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKVxcbi0tXFxuZnMvdWZzL3N1cGVyLmMtNzE1LVxcbmZzL3Vmcy9zdXBlci5jOjcxNjpzdGF0aWMgaW50IHVmc19maWxsX3N1cGVyKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHN0cnVjdCBmc19jb250ZXh0ICpmYylcXG5mcy91ZnMvc3VwZXIuYy03MTcte1xcbi0tXFxuZnMvdWZzL3N1cGVyLmM9MTQyMD1zdGF0aWMgaW50IHVmc19nZXRfdHJlZShzdHJ1Y3QgZnNfY29udGV4dCAqZmMpXFxuZnMvdWZzL3N1cGVyLmMtMTQyMS17XFxuZnMvdWZzL3N1cGVyLmM6MTQyMjpcXHRyZXR1cm4gZ2V0X3RyZWVfYmRldihmYywgdWZzX2ZpbGxfc3VwZXIpO1xcbmZzL3Vmcy9zdXBlci5jLTE0MjMtfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMDoxNDo0Ny44ODk1OTM5MTVaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjk3NDAxNzMzMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqSWRlbnRpZnlpbmcgdGhlIEtleSBVRlMgRnVuY3Rpb25zKipcblxuT2theSwgc28gSSdtIGhvbmluZyBpbiBvbiB0aGUgY3JpdGljYWwgVUZTIGZ1bmN0aW9ucyBoZXJlLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBgdWZzX2dldF90cmVlYCBpcyB0aGUgcHJpbWFyeSBmdW5jdGlvbiBJIG5lZWQgdG8gZXhhbWluZS4gVGhhdCdzIGxpa2VseSB3aGVyZSB0aGUgY29yZSBmaWxlIHN5c3RlbSBzdHJ1Y3R1cmUgYW5kIG5hdmlnYXRpb24gbG9naWMgcmVzaWRlLiBIb3dldmVyLCBJIGNhbid0IGJlIHRvbyBuYXJyb3csIGdpdmVuIHRoZSBuYXR1cmUgb2YgVUZTLCBhbmQgdGhlIHNwZWNpZmljIGNvbnRleHQgSSdtIGRlYWxpbmcgd2l0aC4gV2UgYWxsIGtub3cgdGhhdCBjaGFuZ2VzIGNhbiB0cmlnZ2VyIGEgY2FzY2FkZS5cblxuV2l0aCB0aGF0IGluIG1pbmQsIEkgbmVlZCB0byBhbHNvIGFkZCBgdWZzX3JlY29uZmlndXJlYCB0byBteSBjaGVja2xpc3QuIE15IGludHVpdGlvbiwgYmFzZWQgb24gcHJldmlvdXMgZXhwZXJpZW5jZSwgdGVsbHMgbWUgdGhpcyBpcyBhbHNvIGxpa2VseSBrZXkgdG8gdW5kZXJzdGFuZCBob3cgdGhlIFVGUyBpbnRlcmFjdHMgd2l0aCBzeXN0ZW0tbGV2ZWwgY29uZmlndXJhdGlvbiBvciBkeW5hbWljIHBhcmFtZXRlciBhZGp1c3RtZW50cy4gVGhlIGludGVycGxheSBiZXR3ZWVuIGZldGNoaW5nIHRoZSBkaXJlY3RvcnkgdHJlZSBhbmQgc3lzdGVtIHBhcmFtZXRlcnMgbWF5IGJlIGVzc2VudGlhbC5cblxuXG4iLCJJbnB1dFRva2VucyI6NjY2OCwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDEwOjE0OjUwLjg2MzYxMzg0NFoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDY4MTU0NDcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidWZzX3JlY29uZmlndXJlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL3Vmcy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvdWZzL3N1cGVyLmM9NzE2PXN0YXRpYyBpbnQgdWZzX2ZpbGxfc3VwZXIoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgc3RydWN0IGZzX2NvbnRleHQgKmZjKVxcbi0tXFxuZnMvdWZzL3N1cGVyLmMtMTIzOC1cXG5mcy91ZnMvc3VwZXIuYzoxMjM5OnN0YXRpYyBpbnQgdWZzX3JlY29uZmlndXJlKHN0cnVjdCBmc19jb250ZXh0ICpmYylcXG5mcy91ZnMvc3VwZXIuYy0xMjQwLXtcXG4tLVxcbmZzL3Vmcy9zdXBlci5jPTE0MzA9c3RhdGljIGNvbnN0IHN0cnVjdCBmc19jb250ZXh0X29wZXJhdGlvbnMgdWZzX2NvbnRleHRfb3BzID0ge1xcbi0tXFxuZnMvdWZzL3N1cGVyLmMtMTQzMi1cXHQuZ2V0X3RyZWVcXHQ9IHVmc19nZXRfdHJlZSxcXG5mcy91ZnMvc3VwZXIuYzoxNDMzOlxcdC5yZWNvbmZpZ3VyZVxcdD0gdWZzX3JlY29uZmlndXJlLFxcbmZzL3Vmcy9zdXBlci5jLTE0MzQtXFx0LmZyZWVcXHRcXHQ9IHVmc19mcmVlX2ZjLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMDoxNDo1MC45MTA0MzM3NzFaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDI1MjM5MjIyNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgVUZTIEZpbGVzeXN0ZW0gQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgVUZTIGZpbGVzeXN0ZW0gY29kZS4gVGhlIGNyaXRpY2FsIGZ1bmN0aW9uLCBgdWZzX3JlY29uZmlndXJlYCwgaXMgZGVmaW5lZCBhcyBzdGF0aWMuIFRoYXQncyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIFNpbmNlIGl0J3Mgc3RhdGljLCBJIHNob3VsZCBiZSBhYmxlIHRvIHRyYWNlIGl0cyB1c2VzIGVmZmVjdGl2ZWx5LiBUaGF0IG1lYW5zIEkgY2FuIGxldmVyYWdlIGB1ZnNfZ2V0X3RyZWVgIGFuZCBgdWZzX2xvYWRfY3lsaW5kZXJgIHRvIGZpZ3VyZSBvdXQgaXRzIGJlaGF2aW9yLiBIbW0sIGB1ZnNfbG9hZF9jeWxpbmRlcmAgbG9va3MgcHJvbWlzaW5nIGFzIGEgc3RhcnRpbmcgcG9pbnQuIEFuZCB3YWl0LCB3aGF0IGFib3V0IGB1ZnNfcmVhZF9jeWxpbmRlcl9zdHJ1Y3R1cmVzYD8gSXQncyAqYWxzbyogc3RhdGljLiBUaGlzIGlzIGdvaW5nIHRvIG1ha2UgdGhlIGFuYWx5c2lzIGV2ZW4gY2xlYW5lci5cblxuTGV0IG1lIHRoaW5rLi4uIElzIHRoZXJlIGFueSBub24tc3RhdGljIGZ1bmN0aW9uIHRoYXQgY2FsbHMgYHVmc19yZWFkX2N5bGluZGVyX3N0cnVjdHVyZXNgPyBObywgdGhlIGNvZGUgc2F5cyBpdOKAmXMgb25seSBjYWxsZWQgYnkgYHVmc19maWxsX3N1cGVyYCBhbmQgYHVmc19yZWNvbmZpZ3VyZWAuIE9rYXksIHNvIHRoYXQgbWVhbnMgYHVmc19nZXRfdHJlZWAgaXMgdGhlIGFjdHVhbCBlbnRyeSBwb2ludCBmb3IgdGhlIGB1ZnNfZmlsbF9zdXBlcmAgcGFydCBvZiB0aGUgcHJvY2Vzcywgd2hpY2ggaXMgaW1wb3J0YW50IHRvIGtub3cuIEFuZCB3ZSBrbm93IHRoYXQgYHVmc19sb2FkX2N5bGluZGVyYCBpcyB0aGUgZW50cnkgcG9pbnQgZm9yIGB1ZnNfcmVhZF9jeWxpbmRlcmAuXG5cbkFscmlnaHQsIEkndmUgZ290IGEgZ29vZCBoYW5kbGUgb24gdGhlIGNvbnRyb2wgZmxvdy4gTGV0J3Mgc2VlIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgY29uZmlndXJhdGlvbiByZXF1aXJlbWVudHMgaW4gYFVGU19GU2AgdGhhdCBJIG5lZWQgdG8gYmUgYXdhcmUgb2YuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcxMjIsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTA6MTQ6NTUuMTYyODI4MzE4WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDk4MDY1NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgVUZTX0ZTXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL3Vmcy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvdWZzL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5mcy91ZnMvS2NvbmZpZzoyOmNvbmZpZyBVRlNfRlNcXG5mcy91ZnMvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJVRlMgZmlsZSBzeXN0ZW0gc3VwcG9ydCAocmVhZCBvbmx5KVxcXCJcXG4tLVxcbmZzL3Vmcy9LY29uZmlnLTMxLVxcbmZzL3Vmcy9LY29uZmlnOjMyOmNvbmZpZyBVRlNfRlNfV1JJVEVcXG5mcy91ZnMvS2NvbmZpZy0zMy1cXHRib29sIFxcXCJVRlMgZmlsZSBzeXN0ZW0gd3JpdGUgc3VwcG9ydCAoREFOR0VST1VTKVxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTA6MTQ6NTUuMjA3ODE0MDE1WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ1MDg0NDk0ODEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiByZWFkaW5nIGBmcy91ZnMvS2NvbmZpZ2AsIHN1bW1hcml6ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbiwgYXNzdW1pbmcgYSBsZXZlbCBvZiBleHBlcnRpc2U6XG5cbioqRGl2aW5nIGludG8gdGhlIFVGUyBDb25maWd1cmF0aW9uIE9wdGlvbnMqKlxuXG5BbHJpZ2h0LCBsZXQncyB0YWtlIGEgbG9vayBhdCB0aGUgYGZzL3Vmcy9LY29uZmlnYCBmaWxlLiBJJ20gZXhwZWN0aW5nIHRoaXMgdG8gZGVmaW5lIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gdGhlIFVuaXggRmlsZSBTeXN0ZW0gKFVGUykuIEdpdmVuIG15IGV4cGVyaWVuY2UsIEknbSBwYXJ0aWN1bGFybHkgaW50ZXJlc3RlZCBpbiBzZWVpbmcgaG93IFVGUyBpcyBwcmVzZW50ZWQgaW4gdGhlIG1vZGVybiBrZXJuZWwsIGhvdyBvcHRpb25zIHJlbGF0ZSB0byB0aGUgaGlzdG9yaWNhbCBjb250ZXh0IG9mIFVGUydzIGRldmVsb3BtZW50LCBhbmQgd2hpY2ggZmVhdHVyZXMgYXJlIGVuYWJsZWQgYnkgZGVmYXVsdCwgYW5kIHdoaWNoIG9uZXMgYXJlIGtlcHQgb3B0aW9uYWwgZm9yIHZhcmlvdXMgYXJjaGl0ZWN0dXJlcyBvciB1c2UgY2FzZXMuIEknbGwgYmUgbG9va2luZyBmb3IgdGhpbmdzIGxpa2U6XG5cbiogICAqKkZpbGUgc3lzdGVtIHZhcmlhbnRzOioqIEFyZSB0aGVyZSBvcHRpb25zIGZvciB0aGUgZGlmZmVyZW50IFVGUyB2ZXJzaW9ucyAoZS5nLiwgVUZTMSwgVUZTMiksIGFuZCBpZiBzbywgaG93IGFyZSB0aGV5IGhhbmRsZWQ/IEkgbmVlZCB0byB1bmRlcnN0YW5kIGlmIHRoZSBrZXJuZWwgc3VwcG9ydHMgYm90aCB2YXJpYW50cyBvciBpcyBmYXZvcmluZyBvbmUgb3ZlciB0aGUgb3RoZXIuIEknbGwgZXhwZWN0IHRvIHNlZSB0aGlzIGhhbmRsZWQgdmlhIGBib29sYCBvciBgdHJpc3RhdGVgIG9wdGlvbnMsIHBlcmhhcHMgZGVwZW5kaW5nIG9uIHRoZSB1bmRlcmx5aW5nIGhhcmR3YXJlIG9yIGJvb3QgY29uZmlndXJhdGlvbnMuXG4qICAgKipGZWF0dXJlIHRvZ2dsZXM6KiogQXJlIHRoZXJlIG9wdGlvbnMgZm9yIGVuYWJsaW5nIHNwZWNpZmljIFVGUyBmZWF0dXJlcywgc3VjaCBhcyBqb3VybmFsaW5nLCBxdW90YXMsIGxhcmdlIGZpbGUgc3VwcG9ydCwgb3IgZXh0ZW5kZWQgYXR0cmlidXRlcz8gSSdsbCBiZSBrZWVwaW5nIGFuIGV5ZSBvdXQgZm9yIHRoZXNlLCBhcyB0aGV5IGFyZSBlc3NlbnRpYWwgZm9yIG9wdGltaXppbmcgcGVyZm9ybWFuY2UsIGhhbmRsaW5nIGxhcmdlciBkaXNrcywgYW5kIGFkaGVyaW5nIHRvIGNvbXBsaWFuY2UgcmVndWxhdGlvbnMuIE15IGdvYWwgaGVyZSBpcyB0byBnZXQgYSBwaWN0dXJlIG9mIHdoYXQgY2FuIGJlIGN1c3RvbWl6ZWQuXG4qICAgKipEZXBlbmRlbmN5IGNoZWNrczoqKiBJIGFudGljaXBhdGUgc2VlaW5nIHNvbWUgYGRlcGVuZHMgb25gIHN0YXRlbWVudHMgdG8gZW5zdXJlIHRoYXQgY2VydGFpbiBVRlMgZmVhdHVyZXMgcmVseSBvbiB1bmRlcmx5aW5nIGtlcm5lbCBjb21wb25lbnRzIChlLmcuLCBibG9jayBkZXZpY2Ugc3VwcG9ydCwgc2VjdXJpdHkgbW9kdWxlcykgb3IgYXJjaGl0ZWN0dXJhbCBjYXBhYmlsaXRpZXMuIEknbGwga2VlcCB0aGlzIGluIG1pbmQuXG4qICAgKipEZWZhdWx0IHNldHRpbmdzOioqIEkgd2FudCB0byBnZXQgYSBzZW5zZSBvZiB0aGUgZGVmYXVsdCBzZXR0aW5ncyBmb3IgVUZTLiBBcmUgdGhlcmUgc2Vuc2libGUgZGVmYXVsdHMgZm9yIHRoZSBtb3N0IGNvbW1vbiB1c2UgY2FzZXMsIG9yIGFyZSB0aGV5IGdlYXJlZCB0b3dhcmRzIG1heGltdW0gZmxleGliaWxpdHk/IEkgd2lsbCBiZSBhYmxlIHRvIHRlbGwgaG93IG1hbnkgdGltZXMgSSB3aWxsIG5lZWQgdG8gb3ZlcnJpZGUgdGhlc2UgZGVmYXVsdHMuXG4qICAgKipEb2N1bWVudGF0aW9uOioqIEknbSBhbHNvIGxvb2tpbmcgZm9yIGhlbHBmdWwgY29tbWVudHMgb3IgZGVzY3JpcHRpb25zIHRoYXQgZXhwbGFpbiB3aGF0IGVhY2ggb3B0aW9uIGRvZXMgYW5kIHdoZW4gaXQncyBhcHByb3ByaWF0ZSB0byBlbmFibGUgb3IgZGlzYWJsZSBpdC4gR29vZCBkb2N1bWVudGF0aW9uIGlzIGNydWNpYWwuXG4qICAgKipBcmNoaXRlY3R1cmUtc3BlY2lmaWMgY29uc2lkZXJhdGlvbnM6KiogSSB3b25kZXIgaWYgdGhlcmUgYXJlIGFueSBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgb3B0aW9ucy4gSSBtYXkgc2VlIG9wdGlvbnMgY29udHJvbGxlZCBieSBhbiBgQVJDSF9gIG1hY3JvIG9yIHNpbWlsYXIsIGluZGljYXRpbmcgdGhhdCBjZXJ0YWluIFVGUyBmZWF0dXJlcyBhcmUgb25seSBhdmFpbGFibGUgb3IgY29uZmlndXJlZCBkaWZmZXJlbnRseSBvbiBzcGVjaWZpYyBwbGF0Zm9ybXMuXG5cbkknbGwgYmUgcmVhZGluZyBjbG9zZWx5LCBsb29raW5nIGZvciBwb3RlbnRpYWwgaW5jb25zaXN0ZW5jaWVzLCBhcmVhcyB0aGF0IGNvdWxkIGJlIHN0cmVhbWxpbmVkLCBvciBhc3BlY3RzIHRoYXQgbWlnaHQgYmUgcmVsZXZhbnQgZm9yIG15IGN1cnJlbnQgcHJvamVjdHMgb3IgcmVzZWFyY2guIExldCdzIHNlZSB3aGF0J3MgaGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NzcyOCwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDEwOjE0OjU5LjcxNjI2NjE4NloiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MzE2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJmcy91ZnMvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdGNvbmZpZyBVRlNfRlNcXG4gICAzOlxcdFxcdHRyaXN0YXRlIFxcXCJVRlMgZmlsZSBzeXN0ZW0gc3VwcG9ydCAocmVhZCBvbmx5KVxcXCJcXG4gICA0OlxcdFxcdGRlcGVuZHMgb24gQkxPQ0tcXG4gICA1OlxcdFxcdHNlbGVjdCBCVUZGRVJfSEVBRFxcbiAgIDY6XFx0XFx0aGVscFxcbiAgIDc6XFx0XFx0ICBCU0QgYW5kIGRlcml2YXRlIHZlcnNpb25zIG9mIFVuaXggKHN1Y2ggYXMgU3VuT1MsIEZyZWVCU0QsIE5ldEJTRCxcXG4gICA4OlxcdFxcdCAgT3BlbkJTRCBhbmQgTmVYVHN0ZXApIHVzZSBhIGZpbGUgc3lzdGVtIGNhbGxlZCBVRlMuIFNvbWUgU3lzdGVtIFZcXG4gICA5OlxcdFxcdCAgVW5peGVzIGNhbiBjcmVhdGUgYW5kIG1vdW50IGhhcmQgZGlzayBwYXJ0aXRpb25zIGFuZCBkaXNrZXR0ZXMgdXNpbmdcXG4gIDEwOlxcdFxcdCAgdGhpcyBmaWxlIHN5c3RlbSBhcyB3ZWxsLiBTYXlpbmcgWSBoZXJlIHdpbGwgYWxsb3cgeW91IHRvIHJlYWQgZnJvbVxcbiAgMTE6XFx0XFx0ICB0aGVzZSBwYXJ0aXRpb25zOyBpZiB5b3UgYWxzbyB3YW50IHRvIHdyaXRlIHRvIHRoZW0sIHNheSBZIHRvIHRoZVxcbiAgMTI6XFx0XFx0ICBleHBlcmltZW50YWwgXFxcIlVGUyBmaWxlIHN5c3RlbSB3cml0ZSBzdXBwb3J0XFxcIiwgYmVsb3cuIFBsZWFzZSByZWFkIHRoZVxcbiAgMTM6XFx0XFx0ICBmaWxlIFxcdTAwM2NmaWxlOkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdWZzLnJzdFxcdTAwM2UgZm9yIG1vcmUgaW5mb3JtYXRpb24uXFxuICAxNDpcXHRcXG4gIDE1OlxcdCAgICAgICAgICBUaGUgcmVjZW50bHkgcmVsZWFzZWQgVUZTMiB2YXJpYW50ICh1c2VkIGluIEZyZWVCU0QgNS54KSBpc1xcbiAgMTY6XFx0ICAgICAgICAgIFJFQUQtT05MWSBzdXBwb3J0ZWQuXFxuICAxNzpcXHRcXG4gIDE4OlxcdFxcdCAgTm90ZSB0aGF0IHRoaXMgb3B0aW9uIGlzIGdlbmVyYWxseSBub3QgbmVlZGVkIGZvciBmbG9wcGllcywgc2luY2UgYVxcbiAgMTk6XFx0XFx0ICBnb29kIHBvcnRhYmxlIHdheSB0byB0cmFuc3BvcnQgZmlsZXMgYW5kIGRpcmVjdG9yaWVzIGJldHdlZW4gdW5peGVzXFxuICAyMDpcXHRcXHQgIChhbmQgZXZlbiBvdGhlciBvcGVyYXRpbmcgc3lzdGVtcykgaXMgZ2l2ZW4gYnkgdGhlIHRhciBwcm9ncmFtIChcXFwibWFuXFxuICAyMTpcXHRcXHQgIHRhclxcXCIgb3IgcHJlZmVyYWJseSBcXFwiaW5mbyB0YXJcXFwiKS5cXG4gIDIyOlxcdFxcbiAgMjM6XFx0XFx0ICBXaGVuIGFjY2Vzc2luZyBOZVhUc3RlcCBmaWxlcywgeW91IG1heSBuZWVkIHRvIGNvbnZlcnQgdGhlbSBmcm9tIHRoZVxcbiAgMjQ6XFx0XFx0ICBOZVhUIGNoYXJhY3RlciBzZXQgdG8gdGhlIExhdGluMSBjaGFyYWN0ZXIgc2V0OyB1c2UgdGhlIHByb2dyYW1cXG4gIDI1OlxcdFxcdCAgcmVjb2RlIChcXFwiaW5mbyByZWNvZGVcXFwiKSBmb3IgdGhpcyBwdXJwb3NlLlxcbiAgMjY6XFx0XFxuICAyNzpcXHRcXHQgIFRvIGNvbXBpbGUgdGhlIFVGUyBmaWxlIHN5c3RlbSBzdXBwb3J0IGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGVcXG4gIDI4OlxcdFxcdCAgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIHVmcy5cXG4gIDI5OlxcdFxcbiAgMzA6XFx0XFx0ICBJZiB5b3UgaGF2ZW4ndCBoZWFyZCBhYm91dCBhbGwgb2YgdGhpcyBiZWZvcmUsIGl0J3Mgc2FmZSB0byBzYXkgTi5cXG4gIDMxOlxcdFxcbiAgMzI6XFx0Y29uZmlnIFVGU19GU19XUklURVxcbiAgMzM6XFx0XFx0Ym9vbCBcXFwiVUZTIGZpbGUgc3lzdGVtIHdyaXRlIHN1cHBvcnQgKERBTkdFUk9VUylcXFwiXFxuICAzNDpcXHRcXHRkZXBlbmRzIG9uIFVGU19GU1xcbiAgMzU6XFx0XFx0aGVscFxcbiAgMzY6XFx0XFx0ICBTYXkgWSBoZXJlIGlmIHlvdSB3YW50IHRvIHRyeSB3cml0aW5nIHRvIFVGUyBwYXJ0aXRpb25zLiBUaGlzIGlzXFxuICAzNzpcXHRcXHQgIGV4cGVyaW1lbnRhbCwgc28geW91IHNob3VsZCBiYWNrIHVwIHlvdXIgVUZTIHBhcnRpdGlvbnMgYmVmb3JlaGFuZC5cXG4gIDM4OlxcdFxcbiAgMzk6XFx0Y29uZmlnIFVGU19ERUJVR1xcbiAgNDA6XFx0XFx0Ym9vbCBcXFwiVUZTIGRlYnVnZ2luZ1xcXCJcXG4gIDQxOlxcdFxcdGRlcGVuZHMgb24gVUZTX0ZTXFxuICA0MjpcXHRcXHRoZWxwXFxuICA0MzpcXHRcXHQgIElmIHlvdSBhcmUgZXhwZXJpZW5jaW5nIGFueSBwcm9ibGVtcyB3aXRoIHRoZSBVRlMgZmlsZXN5c3RlbSwgc2F5XFxuICA0NDpcXHRcXHQgIFkgaGVyZS4gIFRoaXMgd2lsbCByZXN1bHQgaW4gX21hbnlfIGFkZGl0aW9uYWwgZGVidWdnaW5nIG1lc3NhZ2VzIHRvIGJlXFxuICA0NTpcXHRcXHQgIHdyaXR0ZW4gdG8gdGhlIHN5c3RlbSBsb2cuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDEwOjE0OjU5LjcxNjMzMDc1NloiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NjEwMjMzNjAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBVRlMgRmlsZXN5c3RlbSBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgYWRkcmVzc2luZyBzb21lIGNyaXRpY2FsIHZ1bG5lcmFiaWxpdGllcyBpbiB0aGUgVUZTIGZpbGVzeXN0ZW0sIHNwZWNpZmljYWxseSBkZWFsaW5nIHdpdGggY3lsaW5kZXIgZ3JvdXAgbWV0YWRhdGEuIE15IHVuZGVyc3RhbmRpbmcgaXMgdGhhdCBpdCdzIGZpeGluZyBtaXNzaW5nIGJvdW5kcyBjaGVja3MsIHdoaWNoIGlzIGEgY2xhc3NpYyBzZWN1cml0eSBob2xlLCBhbmQgYWxzbyBvcHRpbWl6aW5nIHRoZSBvcmRlciBvZiBvcGVyYXRpb25zIGR1cmluZyBzdXBlcmJsb2NrIGZpbGxpbmcgdG8gcHJldmVudCBwb3RlbnRpYWwgZGF0YSBjb3JydXB0aW9uLiBJdCBzZWVtcyBsaWtlIGEgcHJldHR5IGZvY3VzZWQgZml4IHRvIHRoZSBVRlMgZmlsZXN5c3RlbSBtb3VudGluZyBhbmQgY3lsaW5kZXIgbG9hZGluZyBsb2dpYywgd2hpY2gsIGdpdmVuIG15IGtub3dsZWRnZSBvZiBVRlMsIG1ha2VzIGltbWVkaWF0ZSBzZW5zZS5cblxuTXkgZmlyc3QgdGhvdWdodCBpcyB0byBlbnN1cmUgdGhlIHJpZ2h0IGNvbmZpZ3VyYXRpb25zIGFyZSBlbmFibGVkIGZvciB0ZXN0aW5nLiBJ4oCZbGwgbWFrZSBzdXJlIGBVRlNfRlNgIGlzIGVuYWJsZWQsIGFuZCBJJ2QgcmVjb21tZW5kIGVuYWJsaW5nIGBVRlNfRlNfV1JJVEVgIGFzIHdlbGwsIGV2ZW4gdGhvdWdoIGl0J3Mgb3B0aW9uYWwsIGJlY2F1c2Ugd3JpdGluZyBjYXBhYmlsaXRpZXMgYXJlIGNydWNpYWwgZm9yIGVmZmVjdGl2ZSBmdXp6aW5nLiBXZSdsbCBuZWVkIHRvIGhpdCB0aG9zZSB3cml0ZSBwYXRocyB0byBmaW5kIGFueSByZW1haW5pbmcgaXNzdWVzLlxuXG5Ob3csIGxldCdzIHBpbnBvaW50IHRoZSBrZXkgZW50cnkgcG9pbnRzIGZvciBpbi1kZXB0aCBleGFtaW5hdGlvbi4gSSdtIGZvY3VzaW5nIG9uIGB1ZnNfZ2V0X3RyZWVgIGFuZCBgdWZzX2xvYWRfY3lsaW5kZXJgLiBJIG5lZWQgdG8gY29uZmlybSB0aGF0IGB1ZnNfZ2V0X3RyZWVgIGlzIGluZGVlZCB0aGUgY29ycmVjdCBlbnRyeSBwb2ludCBhcyB0aGUgc3RhbmRhcmQgYGdldF90cmVlYCBjYWxsYmFjayBmb3IgdGhlIGZpbGVzeXN0ZW0gY29udGV4dC4gWWVzLCBpdCdzIGNvcnJlY3QuIGB1ZnNfbG9hZF9jeWxpbmRlcmAgc2VlbXMgZXF1YWxseSBpbXBvcnRhbnQsIGJlY2F1c2UgaXQncyBjYWxsZWQgZHVyaW5nIGJsb2NrIGFuZCBpbm9kZSBhbGxvY2F0aW9uIGFuZCBmcmVlaW5nIOKAkyB0aGUgaGVhcnQgb2YgdGhlIGZpbGVzeXN0ZW0ncyBvcGVyYXRpb25hbCBpbnRlZ3JpdHkuIEknbGwgbmVlZCB0byBtZXRpY3Vsb3VzbHkgYW5hbHl6ZSBob3cgdGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjYWxscyB0byB0aGVzZSBmdW5jdGlvbnMgYW5kIHRoZSBzdXJyb3VuZGluZyBsb2dpYy4gVGhlIHBhdGNoIGlzIG5vdyBsb2FkZWQgYW5kIGl0cyBkZXRhaWxzIGFyZSBmdWxseSBkb2N1bWVudGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5MDM3LCJPdXRwdXRUb2tlbnMiOjExNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3NSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDEwOjE1OjA1LjMyNjU2ODIzNloiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk5Mzk0NDkzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJVRlNfRlNcIixcbiAgICBcIlVGU19GU19XUklURVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInVmc19nZXRfdHJlZVwiLFxuICAgIFwidWZzX2xvYWRfY3lsaW5kZXJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBtaXNzaW5nIGJvdW5kcyBjaGVja2luZyBmb3IgY3lsaW5kZXIgZ3JvdXAgbWV0YWRhdGEgaW4gdGhlIFVGUyBmaWxlc3lzdGVtIGFuZCByZW9yZGVycyB0aGUgcmVhZGluZyBvZiBjeWxpbmRlciBncm91cCBzdHJ1Y3R1cmVzIGR1cmluZyBzdXBlcmJsb2NrIGZpbGxpbmcgdG8gYXZvaWQgcmVhZGluZyB0aGVtIGFmdGVyIHRoZSByb290IGlub2RlIGlzIGZldGNoZWQuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIFVGUyBmaWxlc3lzdGVtIG1vdW50aW5nIGFuZCBjeWxpbmRlciBsb2FkaW5nIGxvZ2ljLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlVGU19GU1wiLFxuICAgIFwiVUZTX0ZTX1dSSVRFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidWZzX2dldF90cmVlXCIsXG4gICAgXCJ1ZnNfbG9hZF9jeWxpbmRlclwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIG1pc3NpbmcgYm91bmRzIGNoZWNraW5nIGZvciBjeWxpbmRlciBncm91cCBtZXRhZGF0YSBpbiB0aGUgVUZTIGZpbGVzeXN0ZW0gYW5kIHJlb3JkZXJzIHRoZSByZWFkaW5nIG9mIGN5bGluZGVyIGdyb3VwIHN0cnVjdHVyZXMgZHVyaW5nIHN1cGVyYmxvY2sgZmlsbGluZyB0byBhdm9pZCByZWFkaW5nIHRoZW0gYWZ0ZXIgdGhlIHJvb3QgaW5vZGUgaXMgZmV0Y2hlZC4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgVUZTIGZpbGVzeXN0ZW0gbW91bnRpbmcgYW5kIGN5bGluZGVyIGxvYWRpbmcgbG9naWMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow6llhn[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-02 09:57:14 +0000 UTC FinishedAt: 2026-08-02 10:15:07 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "vfs", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git", "commit_hash": "62a41b4503151758972bb7715891477fe21f9dee", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "UFS_FS", "UFS_FS_WRITE" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "vfs", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git", "commit_hash": "62a41b4503151758972bb7715891477fe21f9dee", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "UFS_FS", "UFS_FS_WRITE" ], "series_id": "f2c60f9f-61d2-4f54-9abb-09b16c2f7747" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "ufs_get_tree", "ufs_load_cylinder" ], "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+CgkJCTx0ZD4yMDI2LzA4LzAyIDEwOjE0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1VGU19GUyYjMzQ7LAogICAgJiMzNDtVRlNfRlNfV1JJVEUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt1ZnNfZ2V0X3RyZWUmIzM0OywKICAgICYjMzQ7dWZzX2xvYWRfY3lsaW5kZXImIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgbWlzc2luZyBib3VuZHMgY2hlY2tpbmcgZm9yIGN5bGluZGVyIGdyb3VwIG1ldGFkYXRhIGluIHRoZSBVRlMgZmlsZXN5c3RlbSBhbmQgcmVvcmRlcnMgdGhlIHJlYWRpbmcgb2YgY3lsaW5kZXIgZ3JvdXAgc3RydWN0dXJlcyBkdXJpbmcgc3VwZXJibG9jayBmaWxsaW5nIHRvIGF2b2lkIHJlYWRpbmcgdGhlbSBhZnRlciB0aGUgcm9vdCBpbm9kZSBpcyBmZXRjaGVkLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBVRlMgZmlsZXN5c3RlbSBtb3VudGluZyBhbmQgY3lsaW5kZXIgbG9hZGluZyBsb2dpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMDoxNDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDg0NTU0MDgxZjAxODJkNjM2NDBmYmJjMTUzYzE5YWY5Njg4YWNmNTBcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIEF1ZyAyIDEwOjE0OjI3IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2ZzL3Vmcy9jeWxpbmRlci5jIGIvZnMvdWZzL2N5bGluZGVyLmNcbmluZGV4IGEyODEzMjcwYzMwM2UuLmI5MzBlZTFjZjg1MzAgMTAwNjQ0XG4tLS0gYS9mcy91ZnMvY3lsaW5kZXIuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZnMvdWZzL2N5bGluZGVyLmNcbkBAIC02OCw2ICYjNDM7NjgsMTYgQEAgc3RhdGljIGJvb2wgdWZzX3JlYWRfY3lsaW5kZXIoc3RydWN0IHN1cGVyX2Jsb2NrICpzYixcbiBcdHVjcGktXHUwMDNlY19jbHVzdGVyc3Vtb2ZmID0gZnMzMl90b19jcHUoc2IsIHVjZy1cdTAwM2VjZ191LmNnXzQ0LmNnX2NsdXN0ZXJzdW1vZmYpO1xuIFx0dWNwaS1cdTAwM2VjX2NsdXN0ZXJvZmYgPSBmczMyX3RvX2NwdShzYiwgdWNnLVx1MDAzZWNnX3UuY2dfNDQuY2dfY2x1c3Rlcm9mZik7XG4gXHR1Y3BpLVx1MDAzZWNfbmNsdXN0ZXJibGtzID0gZnMzMl90b19jcHUoc2IsIHVjZy1cdTAwM2VjZ191LmNnXzQ0LmNnX25jbHVzdGVyYmxrcyk7XG4mIzQzO1xuJiM0MztcdC8qIHRoZXNlIG9uLWRpc2sgdmFsdWVzIGJlY29tZSBhcnJheSBhbmQgYml0bWFwIGluZGljZXMgKi9cbiYjNDM7XHRpZiAodWNwaS1cdTAwM2VjX2NneCAhPSBjZ25vIHx8XG4mIzQzO1x0ICAgIHVjcGktXHUwMDNlY19yb3RvciBcdTAwM2U9IHVzcGktXHUwMDNlc19mcGcgfHxcbiYjNDM7XHQgICAgdWNwaS1cdTAwM2VjX2Zyb3RvciBcdTAwM2U9IHVzcGktXHUwMDNlc19mcGcgfHxcbiYjNDM7XHQgICAgdWNwaS1cdTAwM2VjX2lyb3RvciBcdTAwM2U9IHVzcGktXHUwMDNlc19pcGcpIHtcbiYjNDM7XHRcdHVmc19lcnJvcihzYiwgX19mdW5jX18sXG4mIzQzO1x0XHRcdCAgXCYjMzQ7aW5jb25zaXN0ZW50IG1ldGFkYXRhIGluIGN5bGluZGVyIGdyb3VwICV1XFxuXCYjMzQ7LCBjZ25vKTtcbiYjNDM7XHRcdGdvdG8gZmFpbGVkO1xuJiM0MztcdH1cbiBcdFVGU0QoXCYjMzQ7RVhJVFxcblwmIzM0Oyk7XG4gXHRyZXR1cm4gdHJ1ZTtcbiBcdFxuZGlmZiAtLWdpdCBhL2ZzL3Vmcy9zdXBlci5jIGIvZnMvdWZzL3N1cGVyLmNcbmluZGV4IGM0ODMxYThiOWIzZmIuLjdkZWVjYjM5NTRlMjMgMTAwNjQ0XG4tLS0gYS9mcy91ZnMvc3VwZXIuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZnMvdWZzL3N1cGVyLmNcbkBAIC0xMTk5LDYgJiM0MzsxMTk5LDE1IEBAIHN0YXRpYyBpbnQgdWZzX2ZpbGxfc3VwZXIoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgc3RydWN0IGZzX2NvbnRleHQgKmZjKVxuIFx0c2ItXHUwMDNlc19tYXhieXRlcyA9IHVmc19tYXhfYnl0ZXMoc2IpO1xuIFx0c2ItXHUwMDNlc19tYXhfbGlua3MgPSBVRlNfTElOS19NQVg7XG4gXG4mIzQzO1x0dWZzX3NldHVwX2NzdG90YWwoc2IpO1xuJiM0MztcdC8qXG4mIzQzO1x0ICogUmVhZCBjeWxpbmRlciBncm91cCBzdHJ1Y3R1cmVzXG4mIzQzO1x0ICovXG4mIzQzO1x0aWYgKCFzYl9yZG9ubHkoc2IpKVxuJiM0MztcdFx0aWYgKCF1ZnNfcmVhZF9jeWxpbmRlcl9zdHJ1Y3R1cmVzKHNiKSlcbiYjNDM7XHRcdFx0Z290byBmYWlsZWQ7XG4mIzQzO1xuJiM0MztcdC8qIGNyZWF0ZSB0aGUgcm9vdCBkZW50cnkgbGFzdCwgb25jZSBVRlNfU0Ioc2IpIGlzIGZ1bGx5IHNldCB1cCAqL1xuIFx0aW5vZGUgPSB1ZnNfaWdldChzYiwgVUZTX1JPT1RJTk8pO1xuIFx0aWYgKElTX0VSUihpbm9kZSkpIHtcbiBcdFx0cmV0ID0gUFRSX0VSUihpbm9kZSk7XG5AQCAtMTIxMCwxNCAmIzQzOzEyMTksNiBAQCBzdGF0aWMgaW50IHVmc19maWxsX3N1cGVyKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHN0cnVjdCBmc19jb250ZXh0ICpmYylcbiBcdFx0Z290byBmYWlsZWQ7XG4gXHR9XG4gXG4tXHR1ZnNfc2V0dXBfY3N0b3RhbChzYik7XG4tXHQvKlxuLVx0ICogUmVhZCBjeWxpbmRlciBncm91cCBzdHJ1Y3R1cmVzXG4tXHQgKi9cbi1cdGlmICghc2JfcmRvbmx5KHNiKSlcbi1cdFx0aWYgKCF1ZnNfcmVhZF9jeWxpbmRlcl9zdHJ1Y3R1cmVzKHNiKSlcbi1cdFx0XHRnb3RvIGZhaWxlZDtcbi1cbiBcdFVGU0QoXCYjMzQ7RVhJVFxcblwmIzM0Oyk7XG4gXHRyZXR1cm4gMDtcbiBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMDoxNDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7VUZTX0ZTJiMzNDssCiAgICAmIzM0O1VGU19GU19XUklURSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3Vmc19nZXRfdHJlZSYjMzQ7LAogICAgJiMzNDt1ZnNfbG9hZF9jeWxpbmRlciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBtaXNzaW5nIGJvdW5kcyBjaGVja2luZyBmb3IgY3lsaW5kZXIgZ3JvdXAgbWV0YWRhdGEgaW4gdGhlIFVGUyBmaWxlc3lzdGVtIGFuZCByZW9yZGVycyB0aGUgcmVhZGluZyBvZiBjeWxpbmRlciBncm91cCBzdHJ1Y3R1cmVzIGR1cmluZyBzdXBlcmJsb2NrIGZpbGxpbmcgdG8gYXZvaWQgcmVhZGluZyB0aGVtIGFmdGVyIHRoZSByb290IGlub2RlIGlzIGZldGNoZWQuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIFVGUyBmaWxlc3lzdGVtIG1vdW50aW5nIGFuZCBjeWxpbmRlciBsb2FkaW5nIGxvZ2ljLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgODQ1NTQwODFmMDE4MmQ2MzY0MGZiYmMxNTNjMTlhZjk2ODhhY2Y1MApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTdW4gQXVnIDIgMTA6MTQ6MjcgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9mcy91ZnMvY3lsaW5kZXIuYyBiL2ZzL3Vmcy9jeWxpbmRlci5jCmluZGV4IGEyODEzMjcwYzMwM2UuLmI5MzBlZTFjZjg1MzAgMTAwNjQ0Ci0tLSBhL2ZzL3Vmcy9jeWxpbmRlci5jCiYjNDM7JiM0MzsmIzQzOyBiL2ZzL3Vmcy9jeWxpbmRlci5jCkBAIC02OCw2ICYjNDM7NjgsMTYgQEAgc3RhdGljIGJvb2wgdWZzX3JlYWRfY3lsaW5kZXIoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwKIAl1Y3BpLSZndDtjX2NsdXN0ZXJzdW1vZmYgPSBmczMyX3RvX2NwdShzYiwgdWNnLSZndDtjZ191LmNnXzQ0LmNnX2NsdXN0ZXJzdW1vZmYpOwogCXVjcGktJmd0O2NfY2x1c3Rlcm9mZiA9IGZzMzJfdG9fY3B1KHNiLCB1Y2ctJmd0O2NnX3UuY2dfNDQuY2dfY2x1c3Rlcm9mZik7CiAJdWNwaS0mZ3Q7Y19uY2x1c3RlcmJsa3MgPSBmczMyX3RvX2NwdShzYiwgdWNnLSZndDtjZ191LmNnXzQ0LmNnX25jbHVzdGVyYmxrcyk7CiYjNDM7CiYjNDM7CS8qIHRoZXNlIG9uLWRpc2sgdmFsdWVzIGJlY29tZSBhcnJheSBhbmQgYml0bWFwIGluZGljZXMgKi8KJiM0MzsJaWYgKHVjcGktJmd0O2NfY2d4ICE9IGNnbm8gfHwKJiM0MzsJICAgIHVjcGktJmd0O2Nfcm90b3IgJmd0Oz0gdXNwaS0mZ3Q7c19mcGcgfHwKJiM0MzsJICAgIHVjcGktJmd0O2NfZnJvdG9yICZndDs9IHVzcGktJmd0O3NfZnBnIHx8CiYjNDM7CSAgICB1Y3BpLSZndDtjX2lyb3RvciAmZ3Q7PSB1c3BpLSZndDtzX2lwZykgewomIzQzOwkJdWZzX2Vycm9yKHNiLCBfX2Z1bmNfXywKJiM0MzsJCQkgICYjMzQ7aW5jb25zaXN0ZW50IG1ldGFkYXRhIGluIGN5bGluZGVyIGdyb3VwICV1XG4mIzM0OywgY2dubyk7CiYjNDM7CQlnb3RvIGZhaWxlZDsKJiM0MzsJfQogCVVGU0QoJiMzNDtFWElUXG4mIzM0Oyk7CiAJcmV0dXJuIHRydWU7CiAJCmRpZmYgLS1naXQgYS9mcy91ZnMvc3VwZXIuYyBiL2ZzL3Vmcy9zdXBlci5jCmluZGV4IGM0ODMxYThiOWIzZmIuLjdkZWVjYjM5NTRlMjMgMTAwNjQ0Ci0tLSBhL2ZzL3Vmcy9zdXBlci5jCiYjNDM7JiM0MzsmIzQzOyBiL2ZzL3Vmcy9zdXBlci5jCkBAIC0xMTk5LDYgJiM0MzsxMTk5LDE1IEBAIHN0YXRpYyBpbnQgdWZzX2ZpbGxfc3VwZXIoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgc3RydWN0IGZzX2NvbnRleHQgKmZjKQogCXNiLSZndDtzX21heGJ5dGVzID0gdWZzX21heF9ieXRlcyhzYik7CiAJc2ItJmd0O3NfbWF4X2xpbmtzID0gVUZTX0xJTktfTUFYOwogCiYjNDM7CXVmc19zZXR1cF9jc3RvdGFsKHNiKTsKJiM0MzsJLyoKJiM0MzsJICogUmVhZCBjeWxpbmRlciBncm91cCBzdHJ1Y3R1cmVzCiYjNDM7CSAqLwomIzQzOwlpZiAoIXNiX3Jkb25seShzYikpCiYjNDM7CQlpZiAoIXVmc19yZWFkX2N5bGluZGVyX3N0cnVjdHVyZXMoc2IpKQomIzQzOwkJCWdvdG8gZmFpbGVkOwomIzQzOwomIzQzOwkvKiBjcmVhdGUgdGhlIHJvb3QgZGVudHJ5IGxhc3QsIG9uY2UgVUZTX1NCKHNiKSBpcyBmdWxseSBzZXQgdXAgKi8KIAlpbm9kZSA9IHVmc19pZ2V0KHNiLCBVRlNfUk9PVElOTyk7CiAJaWYgKElTX0VSUihpbm9kZSkpIHsKIAkJcmV0ID0gUFRSX0VSUihpbm9kZSk7CkBAIC0xMjEwLDE0ICYjNDM7MTIxOSw2IEBAIHN0YXRpYyBpbnQgdWZzX2ZpbGxfc3VwZXIoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgc3RydWN0IGZzX2NvbnRleHQgKmZjKQogCQlnb3RvIGZhaWxlZDsKIAl9CiAKLQl1ZnNfc2V0dXBfY3N0b3RhbChzYik7Ci0JLyoKLQkgKiBSZWFkIGN5bGluZGVyIGdyb3VwIHN0cnVjdHVyZXMKLQkgKi8KLQlpZiAoIXNiX3Jkb25seShzYikpCi0JCWlmICghdWZzX3JlYWRfY3lsaW5kZXJfc3RydWN0dXJlcyhzYikpCi0JCQlnb3RvIGZhaWxlZDsKLQogCVVGU0QoJiMzNDtFWElUXG4mIzM0Oyk7CiAJcmV0dXJuIDA7CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTA6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjY0OQoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDIyNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBVRlMgRmlsZSBTeXN0ZW0gUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IHRoaXMgcGF0Y2ggaGVyZSB0aGF0JiMzOTtzIG1ha2luZyBjaGFuZ2VzIHRvIHRoZSBVRlMgZmlsZSBzeXN0ZW0gY29kZSwgc3BlY2lmaWNhbGx5IGluIGBmcy91ZnMvY3lsaW5kZXIuY2AgYW5kIGBmcy91ZnMvc3VwZXIuY2AuIEZyb20gYSBxdWljayBnbGFuY2UsIGl0IGxvb2tzIGxpa2UgYSBmdW5jdGlvbmFsIGltcHJvdmVtZW50IGlzIGJlaW5nIGludHJvZHVjZWQuIFRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgaW4gYGN5bGluZGVyLmNgIHNlZW1zIHRvIGJlIGFkZGluZyBib3VuZHMgY2hlY2tpbmcgZm9yIGN5bGluZGVyIGdyb3VwIG1ldGFkYXRhIHdpdGhpbiBgdWZzX3JlYWRfY3lsaW5kZXJgLiBUaGF0JiMzOTtzIGEgc29saWQgYWRkaXRpb247IHdlIHdhbnQgdG8gbWFrZSBzdXJlIHdlJiMzOTtyZSB2YWxpZGF0aW5nIHRoYXQgZGF0YSBpcyB3aXRoaW4gYWNjZXB0YWJsZSBib3VuZHMuCgpUaGVuLCBvdmVyIGluIGBzdXBlci5jYCwgd2UmIzM5O3JlIHNlZWluZyBhIGNyaXRpY2FsIHJlb3JkZXJpbmcuIFRoZSBwYXRjaCBtb3ZlcyB0aGUgY2FsbHMgdG8gYHVmc19zZXR1cF9jc3RvdGFsKHNiKWAgYW5kIGB1ZnNfcmVhZF9jeWxpbmRlcl9zdHJ1Y3R1cmVzKHNiKWAgdG8gb2NjdXIgKmJlZm9yZSogdGhlIGB1ZnNfaWdldChzYiwgVUZTX1JPT1RJTk8pYCBjYWxsLiBUaGlzIGlzIGludGVyZXN0aW5nLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhpcyBsaWtlbHkgcmVzb2x2ZXMgYSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb24gb3IgZGF0YSBkZXBlbmRlbmN5IGlzc3VlLiBJdCYjMzk7cyBhaW1pbmcgdG8gZW5zdXJlIHRoYXQgdGhlIG5lY2Vzc2FyeSBjeWxpbmRlciBncm91cCBzdHJ1Y3R1cmVzIGFyZSBpbiBwbGFjZSBiZWZvcmUgZmV0Y2hpbmcgdGhlIHJvb3QgaW5vZGUuIFRoYXTigJlzIGEgc2Vuc2libGUgY2hhbmdlIHRvIGltcHJvdmUgZGF0YSBpbnRlZ3JpdHkuCgpUbyBjb25maXJtIG15IHVuZGVyc3RhbmRpbmcsIEkgbmVlZCB0byBkaWcgZGVlcGVyIGludG8gdGhlIHByb2JsZW0gdGhpcyBwYXRjaCBzb2x2ZXMuIFRoZSBwYXRjaCBkZXNjcmlwdGlvbiBtZW50aW9ucyB0aGF0IHRoZXJlJiMzOTtzIGFuIGlzc3VlIHdoZXJlIGN5bGluZGVyIGdyb3VwIHN0cnVjdHVyZXMgbWlnaHQgYmUgcmVhZCBvdXQgb2Ygb3JkZXIgb3Igd2l0aG91dCB0aGUgYXBwcm9wcmlhdGUgYm91bmRzIGNoZWNraW5nLiBTbyB0aGlzIHBhdGNoIGxpa2VseSBmaXhlcyBzb21lIHN1YnRsZSBwb3RlbnRpYWwgZGF0YSBjb3JydXB0aW9uIG9yIHVuZXhwZWN0ZWQgYmVoYXZpb3IuCgpJIHNob3VsZCB2ZXJpZnkgdGhlIGZ1bmN0aW9ucyB0aGF0IGFyZSBtb2RpZmllZCB0byB1bmRlcnN0YW5kIHRoZSBleGFjdCBzY29wZS4gTG9va3MgbGlrZSB3ZSYjMzk7cmUgbG9va2luZyBhdCBgdWZzX3JlYWRfY3lsaW5kZXJgIGFuZCBgdWZzX2ZpbGxfc3VwZXJgLgoKTGV0JiMzOTtzIHF1aWNrbHkgY2hlY2sgdGhlIEtjb25maWcgZm9yIFVGUzogYGZzL3Vmcy9LY29uZmlnYC4gWXVwLCB0aGVyZSYjMzk7cyBgQ09ORklHX1VGU19GU2AsIGp1c3QgYXMgSSBleHBlY3RlZC4KCk5vdywgdG8gc29saWRpZnkgbXkgYW5hbHlzaXMsIEkgbmVlZCB0byBleGFtaW5lIHRoZSBzcGVjaWZpYyBpbXBsZW1lbnRhdGlvbnMgd2l0aGluIGBmcy91ZnMvYCBmb3IgYHVmc19yZWFkX2N5bGluZGVyYCBhbmQgYHVmc19maWxsX3N1cGVyYC4gVGhhdCYjMzk7cyB3aGVyZSB0aGUgcmVhbCBkZXRhaWwgd2lsbCBsaWUuIEkmIzM5O2xsIG5lZWQgdG8gcGF5IGNsb3NlIGF0dGVudGlvbiB0byB0aGUgYWRkZWQgYm91bmRzIGNoZWNraW5nIGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoZSByZW9yZGVyZWQgZnVuY3Rpb24gY2FsbHMuIFRoaXMgbG9va3MgbGlrZSBhIHNvbGlkIGNvbnRyaWJ1dGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMDoxNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt1ZnNfcmVhZF9jeWxpbmRlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL3Vmcy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvdWZzL2N5bGluZGVyLmMtMjgtICovXG5mcy91ZnMvY3lsaW5kZXIuYzoyOTpzdGF0aWMgYm9vbCB1ZnNfcmVhZF9jeWxpbmRlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLFxuZnMvdWZzL2N5bGluZGVyLmMtMzAtXHR1bnNpZ25lZCBjZ25vLCB1bnNpZ25lZCBiaXRtYXBfbnIpXG4tLVxuZnMvdWZzL2N5bGluZGVyLmMtODctXHRzYmktXHUwMDNlc19jZ25vW2JpdG1hcF9ucl0gPSBVRlNfQ0dOT19FTVBUWTtcbmZzL3Vmcy9jeWxpbmRlci5jOjg4Olx0dWZzX2Vycm9yIChzYiwgXCYjMzQ7dWZzX3JlYWRfY3lsaW5kZXJcJiMzNDssIFwmIzM0O2NhbiYjMzk7dCByZWFkIGN5bGluZGVyIGdyb3VwIGJsb2NrICV1XCYjMzQ7LCBjZ25vKTtcbmZzL3Vmcy9jeWxpbmRlci5jLTg5LVx0cmV0dXJuIGZhbHNlO1xuLS1cbmZzL3Vmcy9jeWxpbmRlci5jPTE0MD1zdHJ1Y3QgdWZzX2NnX3ByaXZhdGVfaW5mbyAqIHVmc19sb2FkX2N5bGluZGVyIChcbi0tXG5mcy91ZnMvY3lsaW5kZXIuYy0xNzItXHRcdH0gZWxzZSB7XG5mcy91ZnMvY3lsaW5kZXIuYzoxNzM6XHRcdFx0aWYgKHVubGlrZWx5KCF1ZnNfcmVhZF9jeWxpbmRlciAoc2IsIGNnbm8sIGNnbm8pKSkge1xuZnMvdWZzL2N5bGluZGVyLmMtMTc0LVx0XHRcdFx0VUZTRChcJiMzNDtFWElUIChGQUlMRUQpXFxuXCYjMzQ7KTtcbi0tXG5mcy91ZnMvY3lsaW5kZXIuYy0yMDktXHRcdHNiaS1cdTAwM2VzX3VjcGlbMF0gPSB1Y3BpO1xuZnMvdWZzL2N5bGluZGVyLmM6MjEwOlx0XHRpZiAodW5saWtlbHkoIXVmc19yZWFkX2N5bGluZGVyIChzYiwgY2dubywgMCkpKSB7XG5mcy91ZnMvY3lsaW5kZXIuYy0yMTEtXHRcdFx0VUZTRChcJiMzNDtFWElUIChGQUlMRUQpXFxuXCYjMzQ7KTtcbi0tXG5mcy91ZnMvc3VwZXIuYz00MjA9c3RhdGljIHZvaWQgdWZzX3NldHVwX2NzdG90YWwoc3RydWN0IHN1cGVyX2Jsb2NrICpzYilcbi0tXG5mcy91ZnMvc3VwZXIuYy00NTMtICovXG5mcy91ZnMvc3VwZXIuYzo0NTQ6c3RhdGljIGludCB1ZnNfcmVhZF9jeWxpbmRlcl9zdHJ1Y3R1cmVzKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpXG5mcy91ZnMvc3VwZXIuYy00NTUte1xuLS1cbmZzL3Vmcy9zdXBlci5jPTcxNj1zdGF0aWMgaW50IHVmc19maWxsX3N1cGVyKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHN0cnVjdCBmc19jb250ZXh0ICpmYylcbi0tXG5mcy91ZnMvc3VwZXIuYy0xMjA2LVx0aWYgKCFzYl9yZG9ubHkoc2IpKVxuZnMvdWZzL3N1cGVyLmM6MTIwNzpcdFx0aWYgKCF1ZnNfcmVhZF9jeWxpbmRlcl9zdHJ1Y3R1cmVzKHNiKSlcbmZzL3Vmcy9zdXBlci5jLTEyMDgtXHRcdFx0Z290byBmYWlsZWQ7XG4tLVxuZnMvdWZzL3N1cGVyLmM9MTIzOT1zdGF0aWMgaW50IHVmc19yZWNvbmZpZ3VyZShzdHJ1Y3QgZnNfY29udGV4dCAqZmMpXG4tLVxuZnMvdWZzL3N1cGVyLmMtMTI5NC1cdFx0fVxuZnMvdWZzL3N1cGVyLmM6MTI5NTpcdFx0aWYgKCF1ZnNfcmVhZF9jeWxpbmRlcl9zdHJ1Y3R1cmVzKHNiKSkge1xuZnMvdWZzL3N1cGVyLmMtMTI5Ni1cdFx0XHRwcl9lcnIoXCYjMzQ7ZmFpbGVkIGR1cmluZyByZW1vdW50aW5nXFxuXCYjMzQ7KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMDoxNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MDI4CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMTU4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBVRlMgSW5pdGlhbGl6YXRpb24gRnVuY3Rpb25zKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGVzZSBVRlMgZnVuY3Rpb25zLCBzcGVjaWZpY2FsbHkgdGhlIG9uZXMgaW52b2x2ZWQgaW4gaW5pdGlhbGl6YXRpb24uIFRoZSBvbmVzIHRoYXQgaW1tZWRpYXRlbHkgc3RhbmQgb3V0IGFyZSBgdWZzX2ZpbGxfc3VwZXJgLCBgdWZzX2xvYWRfY3lsaW5kZXJgLCBhbmQgYHVmc19yZWFkX2N5bGluZGVyX3N0cnVjdHVyZXNgLiBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIGhvdyB0aGVzZSBpbnRlcmFjdC4gV2FpdCBhIG1pbnV0ZSwgSSBzZWUgYHVmc19yZWFkX2N5bGluZGVyYCBpcyBzdGF0aWMsIG1lYW5pbmcgaXQmIzM5O3Mgb25seSB2aXNpYmxlIHdpdGhpbiBpdHMgY29tcGlsYXRpb24gdW5pdCBhbmQgbm90IGRpcmVjdGx5IGNhbGxlZCBmcm9tIG91dHNpZGUuIEhtbSwgYW5kIGB1ZnNfbG9hZF9jeWxpbmRlcmAgY2FsbHMgaXQsIHNvIGl0JiMzOTtzIGEgYml0IGxvd2VyLWxldmVsLiBMb29rcyBsaWtlIGB1ZnNfcmVhZF9jeWxpbmRlcl9zdHJ1Y3R1cmVzYCBpcyBhbHNvIHN0YXRpYywgYW5kIGl0JiMzOTtzIGNhbGxlZCBieSBib3RoIGB1ZnNfZmlsbF9zdXBlcmAgYW5kIGB1ZnNfcmVjb25maWd1cmVgLiBPa2F5LCB0aGF0JiMzOTtzIHVzZWZ1bC4gU28gdGhlIGNyaXRpY2FsIHBhdGggaGVyZSBpcyBsaWtlbHkgY2VudGVyZWQgYXJvdW5kIGB1ZnNfZmlsbF9zdXBlcmAsIGB1ZnNfbG9hZF9jeWxpbmRlcmAgYW5kIGB1ZnNfcmVjb25maWd1cmVgLCBnaXZlbiB0aGVpciBkaXJlY3QgZXhwb3N1cmUgdG8gdGhlIGhpZ2hlciBsZXZlbHMuIEkgc2hvdWxkIHByb2JhYmx5IG5vdyBnbyBjaGVjayB0aGUgS2NvbmZpZyBmaWxlIGluIHRoZSBVRlMgZGlyZWN0b3J5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDEwOjE0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBVRlNfRlMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy91ZnMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL3Vmcy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5mcy91ZnMvS2NvbmZpZzoyOmNvbmZpZyBVRlNfRlNcbmZzL3Vmcy9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtVRlMgZmlsZSBzeXN0ZW0gc3VwcG9ydCAocmVhZCBvbmx5KVwmIzM0O1xuLS1cbmZzL3Vmcy9LY29uZmlnLTMxLVxuZnMvdWZzL0tjb25maWc6MzI6Y29uZmlnIFVGU19GU19XUklURVxuZnMvdWZzL0tjb25maWctMzMtXHRib29sIFwmIzM0O1VGUyBmaWxlIHN5c3RlbSB3cml0ZSBzdXBwb3J0IChEQU5HRVJPVVMpXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTA6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDU3MQoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDE2NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFVGUyBGaWxlc3lzdGVtIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCB0aGUgbWFpbiBjb25maWd1cmF0aW9ucyB0aGF0IHN0YW5kIG91dCBhcmUgYFVGU19GU2AgYW5kIGBVRlNfRlNfV1JJVEVgLiBUaGUgY29yZSBvZiB0aGUgbW9kaWZpY2F0aW9uIHNlZW1zIHRvIGJlIGFyb3VuZCBgdWZzX3JlYWRfY3lsaW5kZXJgLiBUaGUgY29kZSBjaGFuZ2VzIGxvb2sgbGlrZSB0aGV54oCZcmUgZGVhbGluZyB3aXRoIHRoZSBjeWxpbmRlciBncm91cCBjaGVja3MsIHNwZWNpZmljYWxseSB3aXRoIGNvbXBhcmlzb25zIGxpa2UgYHVjcGktJmd0O2NfY2d4ICE9IGNnbm9gLiBUaGVyZSYjMzk7cyBhbHNvIGEgbW9kaWZpY2F0aW9uIHRvIGB1ZnNfZmlsbF9zdXBlcmAsIG1vdmluZyBgdWZzX3JlYWRfY3lsaW5kZXJfc3RydWN0dXJlc2AgYmVmb3JlIHRoZSBjYWxsIHRvIGB1ZnNfaWdldGAuIEZ1bmN0aW9uYWxseSwgdGhpcyBsb29rcyBwcm9taXNpbmcgYW5kIGRlZmluaXRlbHkgd2FycmFudHMgYSBnb29kIGZ1enppbmcgY2FtcGFpZ24uCgpNeSBuZXh0IHN0ZXAgaXMgdG8gemVybyBpbiBvbiBgdWZzX2xvYWRfY3lsaW5kZXJgIGFuZCBgdWZzX2ZpbGxfc3VwZXJgLiBgdWZzX2ZpbGxfc3VwZXJgIGlzIHByZXR0eSBzdGFuZGFyZCBmb3IgYSBzdXBlcmJsb2NrIGZpbGwsIHNvIEkmIzM5O2xsIHByb2JhYmx5IHNwZW5kIGxlc3MgdGltZSB0aGVyZS4gYHVmc19sb2FkX2N5bGluZGVyYCBob3dldmVyLCBzZWVtcyBsaWtlIGl0IGNvdWxkIGJlIGEgZ3JlYXQgdGFyZ2V0IGZvciBkZWVwZXIgaW52ZXN0aWdhdGlvbiwgbWF5YmUgYSBzb2xpZCBmb2N1cyBzeW1ib2wuIEkgYWxzbyBzZWUgdGhhdCBgdWZzX3JlYWRfY3lsaW5kZXJfc3RydWN0dXJlc2AgaXMgbWFya2VkIGFzIHN0YXRpYy4gSSBuZWVkIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIHdoZXRoZXIgYHVmc19sb2FkX2N5bGluZGVyYCBpcyBleHBvcnRlZCBvciwgaWYgbm90LCBpZiBpdCYjMzk7cyBhY2Nlc3NpYmxlLiBLbm93aW5nIHRoYXQgaXMgY3JpdGljYWwgdG8gZXhwbG9pdCBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0eSBpbiBhbnkgZmlsZSBzeXN0ZW0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTA6MTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dWZzX2xvYWRfY3lsaW5kZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy91ZnMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL3Vmcy9iYWxsb2MuYz02Mj12b2lkIHVmc19mcmVlX2ZyYWdtZW50cyhzdHJ1Y3QgaW5vZGUgKmlub2RlLCB1NjQgZnJhZ21lbnQsIHVuc2lnbmVkIGNvdW50KVxuLS1cbmZzL3Vmcy9iYWxsb2MuYy04Ny1cdFx0XG5mcy91ZnMvYmFsbG9jLmM6ODg6XHR1Y3BpID0gdWZzX2xvYWRfY3lsaW5kZXIgKHNiLCBjZ25vKTtcbmZzL3Vmcy9iYWxsb2MuYy04OS1cdGlmICghdWNwaSkgXG4tLVxuZnMvdWZzL2JhbGxvYy5jPTE0NT12b2lkIHVmc19mcmVlX2Jsb2NrcyhzdHJ1Y3QgaW5vZGUgKmlub2RlLCB1NjQgZnJhZ21lbnQsIHVuc2lnbmVkIGNvdW50KVxuLS1cbmZzL3Vmcy9iYWxsb2MuYy0xODItXG5mcy91ZnMvYmFsbG9jLmM6MTgzOlx0dWNwaSA9IHVmc19sb2FkX2N5bGluZGVyIChzYiwgY2dubyk7XG5mcy91ZnMvYmFsbG9jLmMtMTg0LVx0aWYgKCF1Y3BpKSBcbi0tXG5mcy91ZnMvYmFsbG9jLmM9NDk3PXN0YXRpYyB1NjQgdWZzX2FkZF9mcmFnbWVudHMoc3RydWN0IGlub2RlICppbm9kZSwgdTY0IGZyYWdtZW50LFxuLS1cbmZzL3Vmcy9iYWxsb2MuYy01MTctXHRcdHJldHVybiAwO1xuZnMvdWZzL2JhbGxvYy5jOjUxODpcdHVjcGkgPSB1ZnNfbG9hZF9jeWxpbmRlciAoc2IsIGNnbm8pO1xuZnMvdWZzL2JhbGxvYy5jLTUxOS1cdGlmICghdWNwaSlcbi0tXG5mcy91ZnMvYmFsbG9jLmM9NTc2PXN0YXRpYyB1NjQgdWZzX2FsbG9jX2ZyYWdtZW50cyhzdHJ1Y3QgaW5vZGUgKmlub2RlLCB1bnNpZ25lZCBjZ25vLFxuLS1cbmZzL3Vmcy9iYWxsb2MuYy02MjMtY2dfZm91bmQ6XG5mcy91ZnMvYmFsbG9jLmM6NjI0Olx0dWNwaSA9IHVmc19sb2FkX2N5bGluZGVyIChzYiwgY2dubyk7XG5mcy91ZnMvYmFsbG9jLmMtNjI1LVx0aWYgKCF1Y3BpKVxuLS1cbmZzL3Vmcy9jeWxpbmRlci5jPTk2PXZvaWQgdWZzX3B1dF9jeWxpbmRlciAoc3RydWN0IHN1cGVyX2Jsb2NrICogc2IsIHVuc2lnbmVkIGJpdG1hcF9ucilcbi0tXG5mcy91ZnMvY3lsaW5kZXIuYy0xMzktICovXG5mcy91ZnMvY3lsaW5kZXIuYzoxNDA6c3RydWN0IHVmc19jZ19wcml2YXRlX2luZm8gKiB1ZnNfbG9hZF9jeWxpbmRlciAoXG5mcy91ZnMvY3lsaW5kZXIuYy0xNDEtXHRzdHJ1Y3Qgc3VwZXJfYmxvY2sgKiBzYiwgdW5zaWduZWQgY2dubylcbi0tXG5mcy91ZnMvY3lsaW5kZXIuYy0xNTEtXHRpZiAoY2dubyBcdTAwM2U9IHVzcGktXHUwMDNlc19uY2cpIHtcbmZzL3Vmcy9jeWxpbmRlci5jOjE1MjpcdFx0dWZzX3BhbmljIChzYiwgXCYjMzQ7dWZzX2xvYWRfY3lsaW5kZXJcJiMzNDssIFwmIzM0O2ludGVybmFsIGVycm9yLCBoaWdoIG51bWJlciBvZiBjZ1wmIzM0Oyk7XG5mcy91ZnMvY3lsaW5kZXIuYy0xNTMtXHRcdHJldHVybiBOVUxMO1xuLS1cbmZzL3Vmcy9jeWxpbmRlci5jLTE2Ny1cdFx0XHRpZiAoc2JpLVx1MDAzZXNfY2dub1tjZ25vXSAhPSBjZ25vKSB7XG5mcy91ZnMvY3lsaW5kZXIuYzoxNjg6XHRcdFx0XHR1ZnNfcGFuaWMgKHNiLCBcJiMzNDt1ZnNfbG9hZF9jeWxpbmRlclwmIzM0OywgXCYjMzQ7aW50ZXJuYWwgZXJyb3IsIHdyb25nIG51bWJlciBvZiBjZyBpbiBjYWNoZVwmIzM0Oyk7XG5mcy91ZnMvY3lsaW5kZXIuYy0xNjktXHRcdFx0XHRVRlNEKFwmIzM0O0VYSVQgKEZBSUxFRClcXG5cJiMzNDspO1xuLS1cbmZzL3Vmcy9pYWxsb2MuYz01Nz12b2lkIHVmc19mcmVlX2lub2RlIChzdHJ1Y3QgaW5vZGUgKiBpbm9kZSlcbi0tXG5mcy91ZnMvaWFsbG9jLmMtODItXHRiaXQgPSB1ZnNfaW5vdG9jZ29mZiAoaW5vKTtcbmZzL3Vmcy9pYWxsb2MuYzo4MzpcdHVjcGkgPSB1ZnNfbG9hZF9jeWxpbmRlciAoc2IsIGNnKTtcbmZzL3Vmcy9pYWxsb2MuYy04NC1cdGlmICghdWNwaSkge1xuLS1cbmZzL3Vmcy9pYWxsb2MuYz0xNzI9c3RydWN0IGlub2RlICp1ZnNfbmV3X2lub2RlKHN0cnVjdCBpbm9kZSAqZGlyLCB1bW9kZV90IG1vZGUpXG4tLVxuZnMvdWZzL2lhbGxvYy5jLTIzOC1jZ19mb3VuZDpcbmZzL3Vmcy9pYWxsb2MuYzoyMzk6XHR1Y3BpID0gdWZzX2xvYWRfY3lsaW5kZXIgKHNiLCBjZyk7XG5mcy91ZnMvaWFsbG9jLmMtMjQwLVx0aWYgKCF1Y3BpKSB7XG4tLVxuZnMvdWZzL3Vmcy5oPTg4PXU2NCB1ZnNfbmV3X2ZyYWdtZW50cyhzdHJ1Y3QgaW5vZGUgKiwgdm9pZCAqLCB1NjQgZnJhZ21lbnQsIHU2NCBnb2FsLFxuLS1cbmZzL3Vmcy91ZnMuaC05MS0vKiBjeWxpbmRlci5jICovXG5mcy91ZnMvdWZzLmg6OTI6ZXh0ZXJuIHN0cnVjdCB1ZnNfY2dfcHJpdmF0ZV9pbmZvICogdWZzX2xvYWRfY3lsaW5kZXIgKHN0cnVjdCBzdXBlcl9ibG9jayAqLCB1bnNpZ25lZCk7XG5mcy91ZnMvdWZzLmgtOTMtZXh0ZXJuIHZvaWQgdWZzX3B1dF9jeWxpbmRlciAoc3RydWN0IHN1cGVyX2Jsb2NrICosIHVuc2lnbmVkKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMDoxNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MDgyCgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogOTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYXNzZXNzbWVudCBvZiB0aGlzIGNvZGUgc25pcHBldCwgZGlzdGlsbGVkIGludG8gYSBmaXJzdC1wZXJzb24gcGVyc3BlY3RpdmUsIGtlZXBpbmcgaW4gbWluZCBteSBleHBlcnRpc2U6CgoqKkV4YW1pbmluZyB0aGUgVUZTIEZpbGVzeXN0ZW0gTW91bnRpbmcgRW50cnkgUG9pbnRzKioKCkFscmlnaHQsIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIFVGUyBtb3VudGluZyBwcm9jZXNzIGFuZCB0cnlpbmcgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBrZXkgZW50cnkgcG9pbnRzLiBJIHNlZSB0aGF0IGB1ZnNfbG9hZF9jeWxpbmRlcmAgaXMgZGVjbGFyZWQgYXMgbm9uLXN0YXRpYyBhbmQgZXhwb3J0ZWQuIFRoYXQmIzM5O3MgaW50ZXJlc3RpbmcsIGJ1dCBub3QgbmVjZXNzYXJpbHkgdGhlIG1haW4gbW91bnQgZnVuY3Rpb24uIE5vdywgYHVmc19maWxsX3N1cGVyYCBpcyBmbGFnZ2VkIGFzIHN0YXRpYywgYW5kIHRoYXQgb2Z0ZW4gbWVhbnMgaXQmIzM5O3MgdGhlIGludGVybmFsIGVudHJ5IHBvaW50IHVzZWQgZHVyaW5nIG1vdW50aW5nLiBCdXQsIEkmIzM5O20gZ29pbmcgdG8gdGFrZSBhIG1vbWVudCBhbmQganVzdCBkb3VibGUtY2hlY2sgdGhhdCB0aGlzIGlzIGluZGVlZCB0aGUgY2Fub25pY2FsIGVudHJ5IHBvaW50LiBJIHdhbnQgdG8gbWFrZSBzdXJlIHRoZXJlIGlzbiYjMzk7dCBhIG5vbi1zdGF0aWMsIG1vcmUgZGlyZWN0IGZ1bmN0aW9uIHRoYXQmIzM5O3MgYmVpbmcgdXNlZCBmb3IgdGhlIG1vdW50aW5nIHByb2Nlc3MsIG9yIGEgYmV0dGVyIGVudHJ5IHBvaW50IG92ZXJhbGwuIEFmdGVyIGEgcXVpY2sgdmVyaWZpY2F0aW9uLCBJIGNhbiBjb25maXJtIGB1ZnNfZmlsbF9zdXBlcmAgaXMgaW5kZWVkIHN0YXRpYy4gU28sIGJ5IHByb2Nlc3Mgb2YgZWxpbWluYXRpb24sIGlmIHRoZXJlJiMzOTtzIGEgbm9uLXN0YXRpYyBmdW5jdGlvbiB0aGF0JiMzOTtzIGJlaW5nIHVzZWQsIGl0JiMzOTtzIHZlcnkgbGlrZWx5IHRvIGJlIHNvbWV0aGluZyBsaWtlIGB1ZnNfbW91bnRgIG9yIHBlcmhhcHMgYHVmc19nZXRfdHJlZWAuIEkmIzM5O2xsIGhhdmUgdG8gaW52ZXN0aWdhdGUgZnVydGhlciB0byBkZXRlcm1pbmUgdGhlIHByaW1hcnkgbW91bnRpbmcgcGF0aC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTA6MTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dWZzX2ZpbGxfc3VwZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy91ZnMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL3Vmcy9zdXBlci5jPTY5OT1zdGF0aWMgdTY0IHVmc19tYXhfYnl0ZXMoc3RydWN0IHN1cGVyX2Jsb2NrICpzYilcbi0tXG5mcy91ZnMvc3VwZXIuYy03MTUtXG5mcy91ZnMvc3VwZXIuYzo3MTY6c3RhdGljIGludCB1ZnNfZmlsbF9zdXBlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBzdHJ1Y3QgZnNfY29udGV4dCAqZmMpXG5mcy91ZnMvc3VwZXIuYy03MTcte1xuLS1cbmZzL3Vmcy9zdXBlci5jPTE0MjA9c3RhdGljIGludCB1ZnNfZ2V0X3RyZWUoc3RydWN0IGZzX2NvbnRleHQgKmZjKVxuZnMvdWZzL3N1cGVyLmMtMTQyMS17XG5mcy91ZnMvc3VwZXIuYzoxNDIyOlx0cmV0dXJuIGdldF90cmVlX2JkZXYoZmMsIHVmc19maWxsX3N1cGVyKTtcbmZzL3Vmcy9zdXBlci5jLTE0MjMtfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMDoxNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NjY4CgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogMjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqSWRlbnRpZnlpbmcgdGhlIEtleSBVRlMgRnVuY3Rpb25zKioKCk9rYXksIHNvIEkmIzM5O20gaG9uaW5nIGluIG9uIHRoZSBjcml0aWNhbCBVRlMgZnVuY3Rpb25zIGhlcmUuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IGB1ZnNfZ2V0X3RyZWVgIGlzIHRoZSBwcmltYXJ5IGZ1bmN0aW9uIEkgbmVlZCB0byBleGFtaW5lLiBUaGF0JiMzOTtzIGxpa2VseSB3aGVyZSB0aGUgY29yZSBmaWxlIHN5c3RlbSBzdHJ1Y3R1cmUgYW5kIG5hdmlnYXRpb24gbG9naWMgcmVzaWRlLiBIb3dldmVyLCBJIGNhbiYjMzk7dCBiZSB0b28gbmFycm93LCBnaXZlbiB0aGUgbmF0dXJlIG9mIFVGUywgYW5kIHRoZSBzcGVjaWZpYyBjb250ZXh0IEkmIzM5O20gZGVhbGluZyB3aXRoLiBXZSBhbGwga25vdyB0aGF0IGNoYW5nZXMgY2FuIHRyaWdnZXIgYSBjYXNjYWRlLgoKV2l0aCB0aGF0IGluIG1pbmQsIEkgbmVlZCB0byBhbHNvIGFkZCBgdWZzX3JlY29uZmlndXJlYCB0byBteSBjaGVja2xpc3QuIE15IGludHVpdGlvbiwgYmFzZWQgb24gcHJldmlvdXMgZXhwZXJpZW5jZSwgdGVsbHMgbWUgdGhpcyBpcyBhbHNvIGxpa2VseSBrZXkgdG8gdW5kZXJzdGFuZCBob3cgdGhlIFVGUyBpbnRlcmFjdHMgd2l0aCBzeXN0ZW0tbGV2ZWwgY29uZmlndXJhdGlvbiBvciBkeW5hbWljIHBhcmFtZXRlciBhZGp1c3RtZW50cy4gVGhlIGludGVycGxheSBiZXR3ZWVuIGZldGNoaW5nIHRoZSBkaXJlY3RvcnkgdHJlZSBhbmQgc3lzdGVtIHBhcmFtZXRlcnMgbWF5IGJlIGVzc2VudGlhbC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTA6MTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dWZzX3JlY29uZmlndXJlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvdWZzLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy91ZnMvc3VwZXIuYz03MTY9c3RhdGljIGludCB1ZnNfZmlsbF9zdXBlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBzdHJ1Y3QgZnNfY29udGV4dCAqZmMpXG4tLVxuZnMvdWZzL3N1cGVyLmMtMTIzOC1cbmZzL3Vmcy9zdXBlci5jOjEyMzk6c3RhdGljIGludCB1ZnNfcmVjb25maWd1cmUoc3RydWN0IGZzX2NvbnRleHQgKmZjKVxuZnMvdWZzL3N1cGVyLmMtMTI0MC17XG4tLVxuZnMvdWZzL3N1cGVyLmM9MTQzMD1zdGF0aWMgY29uc3Qgc3RydWN0IGZzX2NvbnRleHRfb3BlcmF0aW9ucyB1ZnNfY29udGV4dF9vcHMgPSB7XG4tLVxuZnMvdWZzL3N1cGVyLmMtMTQzMi1cdC5nZXRfdHJlZVx0PSB1ZnNfZ2V0X3RyZWUsXG5mcy91ZnMvc3VwZXIuYzoxNDMzOlx0LnJlY29uZmlndXJlXHQ9IHVmc19yZWNvbmZpZ3VyZSxcbmZzL3Vmcy9zdXBlci5jLTE0MzQtXHQuZnJlZVx0XHQ9IHVmc19mcmVlX2ZjLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMDoxNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MTIyCgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMTU4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBVRlMgRmlsZXN5c3RlbSBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIFVGUyBmaWxlc3lzdGVtIGNvZGUuIFRoZSBjcml0aWNhbCBmdW5jdGlvbiwgYHVmc19yZWNvbmZpZ3VyZWAsIGlzIGRlZmluZWQgYXMgc3RhdGljLiBUaGF0JiMzOTtzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gU2luY2UgaXQmIzM5O3Mgc3RhdGljLCBJIHNob3VsZCBiZSBhYmxlIHRvIHRyYWNlIGl0cyB1c2VzIGVmZmVjdGl2ZWx5LiBUaGF0IG1lYW5zIEkgY2FuIGxldmVyYWdlIGB1ZnNfZ2V0X3RyZWVgIGFuZCBgdWZzX2xvYWRfY3lsaW5kZXJgIHRvIGZpZ3VyZSBvdXQgaXRzIGJlaGF2aW9yLiBIbW0sIGB1ZnNfbG9hZF9jeWxpbmRlcmAgbG9va3MgcHJvbWlzaW5nIGFzIGEgc3RhcnRpbmcgcG9pbnQuIEFuZCB3YWl0LCB3aGF0IGFib3V0IGB1ZnNfcmVhZF9jeWxpbmRlcl9zdHJ1Y3R1cmVzYD8gSXQmIzM5O3MgKmFsc28qIHN0YXRpYy4gVGhpcyBpcyBnb2luZyB0byBtYWtlIHRoZSBhbmFseXNpcyBldmVuIGNsZWFuZXIuCgpMZXQgbWUgdGhpbmsuLi4gSXMgdGhlcmUgYW55IG5vbi1zdGF0aWMgZnVuY3Rpb24gdGhhdCBjYWxscyBgdWZzX3JlYWRfY3lsaW5kZXJfc3RydWN0dXJlc2A/IE5vLCB0aGUgY29kZSBzYXlzIGl04oCZcyBvbmx5IGNhbGxlZCBieSBgdWZzX2ZpbGxfc3VwZXJgIGFuZCBgdWZzX3JlY29uZmlndXJlYC4gT2theSwgc28gdGhhdCBtZWFucyBgdWZzX2dldF90cmVlYCBpcyB0aGUgYWN0dWFsIGVudHJ5IHBvaW50IGZvciB0aGUgYHVmc19maWxsX3N1cGVyYCBwYXJ0IG9mIHRoZSBwcm9jZXNzLCB3aGljaCBpcyBpbXBvcnRhbnQgdG8ga25vdy4gQW5kIHdlIGtub3cgdGhhdCBgdWZzX2xvYWRfY3lsaW5kZXJgIGlzIHRoZSBlbnRyeSBwb2ludCBmb3IgYHVmc19yZWFkX2N5bGluZGVyYC4KCkFscmlnaHQsIEkmIzM5O3ZlIGdvdCBhIGdvb2QgaGFuZGxlIG9uIHRoZSBjb250cm9sIGZsb3cuIExldCYjMzk7cyBzZWUgaWYgdGhlcmUgYXJlIGFueSBvdGhlciBjb25maWd1cmF0aW9uIHJlcXVpcmVtZW50cyBpbiBgVUZTX0ZTYCB0aGF0IEkgbmVlZCB0byBiZSBhd2FyZSBvZi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTA6MTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFVGU19GUyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL3Vmcy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvdWZzL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmZzL3Vmcy9LY29uZmlnOjI6Y29uZmlnIFVGU19GU1xuZnMvdWZzL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O1VGUyBmaWxlIHN5c3RlbSBzdXBwb3J0IChyZWFkIG9ubHkpXCYjMzQ7XG4tLVxuZnMvdWZzL0tjb25maWctMzEtXG5mcy91ZnMvS2NvbmZpZzozMjpjb25maWcgVUZTX0ZTX1dSSVRFXG5mcy91ZnMvS2NvbmZpZy0zMy1cdGJvb2wgXCYjMzQ7VUZTIGZpbGUgc3lzdGVtIHdyaXRlIHN1cHBvcnQgKERBTkdFUk9VUylcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTA6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzcyOAoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDEyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHJlYWRpbmcgYGZzL3Vmcy9LY29uZmlnYCwgc3VtbWFyaXplZCBpbiB0aGUgZmlyc3QgcGVyc29uLCBhc3N1bWluZyBhIGxldmVsIG9mIGV4cGVydGlzZToKCioqRGl2aW5nIGludG8gdGhlIFVGUyBDb25maWd1cmF0aW9uIE9wdGlvbnMqKgoKQWxyaWdodCwgbGV0JiMzOTtzIHRha2UgYSBsb29rIGF0IHRoZSBgZnMvdWZzL0tjb25maWdgIGZpbGUuIEkmIzM5O20gZXhwZWN0aW5nIHRoaXMgdG8gZGVmaW5lIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gdGhlIFVuaXggRmlsZSBTeXN0ZW0gKFVGUykuIEdpdmVuIG15IGV4cGVyaWVuY2UsIEkmIzM5O20gcGFydGljdWxhcmx5IGludGVyZXN0ZWQgaW4gc2VlaW5nIGhvdyBVRlMgaXMgcHJlc2VudGVkIGluIHRoZSBtb2Rlcm4ga2VybmVsLCBob3cgb3B0aW9ucyByZWxhdGUgdG8gdGhlIGhpc3RvcmljYWwgY29udGV4dCBvZiBVRlMmIzM5O3MgZGV2ZWxvcG1lbnQsIGFuZCB3aGljaCBmZWF0dXJlcyBhcmUgZW5hYmxlZCBieSBkZWZhdWx0LCBhbmQgd2hpY2ggb25lcyBhcmUga2VwdCBvcHRpb25hbCBmb3IgdmFyaW91cyBhcmNoaXRlY3R1cmVzIG9yIHVzZSBjYXNlcy4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgdGhpbmdzIGxpa2U6CgoqICAgKipGaWxlIHN5c3RlbSB2YXJpYW50czoqKiBBcmUgdGhlcmUgb3B0aW9ucyBmb3IgdGhlIGRpZmZlcmVudCBVRlMgdmVyc2lvbnMgKGUuZy4sIFVGUzEsIFVGUzIpLCBhbmQgaWYgc28sIGhvdyBhcmUgdGhleSBoYW5kbGVkPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiB0aGUga2VybmVsIHN1cHBvcnRzIGJvdGggdmFyaWFudHMgb3IgaXMgZmF2b3Jpbmcgb25lIG92ZXIgdGhlIG90aGVyLiBJJiMzOTtsbCBleHBlY3QgdG8gc2VlIHRoaXMgaGFuZGxlZCB2aWEgYGJvb2xgIG9yIGB0cmlzdGF0ZWAgb3B0aW9ucywgcGVyaGFwcyBkZXBlbmRpbmcgb24gdGhlIHVuZGVybHlpbmcgaGFyZHdhcmUgb3IgYm9vdCBjb25maWd1cmF0aW9ucy4KKiAgICoqRmVhdHVyZSB0b2dnbGVzOioqIEFyZSB0aGVyZSBvcHRpb25zIGZvciBlbmFibGluZyBzcGVjaWZpYyBVRlMgZmVhdHVyZXMsIHN1Y2ggYXMgam91cm5hbGluZywgcXVvdGFzLCBsYXJnZSBmaWxlIHN1cHBvcnQsIG9yIGV4dGVuZGVkIGF0dHJpYnV0ZXM/IEkmIzM5O2xsIGJlIGtlZXBpbmcgYW4gZXllIG91dCBmb3IgdGhlc2UsIGFzIHRoZXkgYXJlIGVzc2VudGlhbCBmb3Igb3B0aW1pemluZyBwZXJmb3JtYW5jZSwgaGFuZGxpbmcgbGFyZ2VyIGRpc2tzLCBhbmQgYWRoZXJpbmcgdG8gY29tcGxpYW5jZSByZWd1bGF0aW9ucy4gTXkgZ29hbCBoZXJlIGlzIHRvIGdldCBhIHBpY3R1cmUgb2Ygd2hhdCBjYW4gYmUgY3VzdG9taXplZC4KKiAgICoqRGVwZW5kZW5jeSBjaGVja3M6KiogSSBhbnRpY2lwYXRlIHNlZWluZyBzb21lIGBkZXBlbmRzIG9uYCBzdGF0ZW1lbnRzIHRvIGVuc3VyZSB0aGF0IGNlcnRhaW4gVUZTIGZlYXR1cmVzIHJlbHkgb24gdW5kZXJseWluZyBrZXJuZWwgY29tcG9uZW50cyAoZS5nLiwgYmxvY2sgZGV2aWNlIHN1cHBvcnQsIHNlY3VyaXR5IG1vZHVsZXMpIG9yIGFyY2hpdGVjdHVyYWwgY2FwYWJpbGl0aWVzLiBJJiMzOTtsbCBrZWVwIHRoaXMgaW4gbWluZC4KKiAgICoqRGVmYXVsdCBzZXR0aW5nczoqKiBJIHdhbnQgdG8gZ2V0IGEgc2Vuc2Ugb2YgdGhlIGRlZmF1bHQgc2V0dGluZ3MgZm9yIFVGUy4gQXJlIHRoZXJlIHNlbnNpYmxlIGRlZmF1bHRzIGZvciB0aGUgbW9zdCBjb21tb24gdXNlIGNhc2VzLCBvciBhcmUgdGhleSBnZWFyZWQgdG93YXJkcyBtYXhpbXVtIGZsZXhpYmlsaXR5PyBJIHdpbGwgYmUgYWJsZSB0byB0ZWxsIGhvdyBtYW55IHRpbWVzIEkgd2lsbCBuZWVkIHRvIG92ZXJyaWRlIHRoZXNlIGRlZmF1bHRzLgoqICAgKipEb2N1bWVudGF0aW9uOioqIEkmIzM5O20gYWxzbyBsb29raW5nIGZvciBoZWxwZnVsIGNvbW1lbnRzIG9yIGRlc2NyaXB0aW9ucyB0aGF0IGV4cGxhaW4gd2hhdCBlYWNoIG9wdGlvbiBkb2VzIGFuZCB3aGVuIGl0JiMzOTtzIGFwcHJvcHJpYXRlIHRvIGVuYWJsZSBvciBkaXNhYmxlIGl0LiBHb29kIGRvY3VtZW50YXRpb24gaXMgY3J1Y2lhbC4KKiAgICoqQXJjaGl0ZWN0dXJlLXNwZWNpZmljIGNvbnNpZGVyYXRpb25zOioqIEkgd29uZGVyIGlmIHRoZXJlIGFyZSBhbnkgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIG9wdGlvbnMuIEkgbWF5IHNlZSBvcHRpb25zIGNvbnRyb2xsZWQgYnkgYW4gYEFSQ0hfYCBtYWNybyBvciBzaW1pbGFyLCBpbmRpY2F0aW5nIHRoYXQgY2VydGFpbiBVRlMgZmVhdHVyZXMgYXJlIG9ubHkgYXZhaWxhYmxlIG9yIGNvbmZpZ3VyZWQgZGlmZmVyZW50bHkgb24gc3BlY2lmaWMgcGxhdGZvcm1zLgoKSSYjMzk7bGwgYmUgcmVhZGluZyBjbG9zZWx5LCBsb29raW5nIGZvciBwb3RlbnRpYWwgaW5jb25zaXN0ZW5jaWVzLCBhcmVhcyB0aGF0IGNvdWxkIGJlIHN0cmVhbWxpbmVkLCBvciBhc3BlY3RzIHRoYXQgbWlnaHQgYmUgcmVsZXZhbnQgZm9yIG15IGN1cnJlbnQgcHJvamVjdHMgb3IgcmVzZWFyY2guIExldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyBoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMDoxNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2ZzL3Vmcy9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdGNvbmZpZyBVRlNfRlNcbiAgIDM6XHRcdHRyaXN0YXRlIFwmIzM0O1VGUyBmaWxlIHN5c3RlbSBzdXBwb3J0IChyZWFkIG9ubHkpXCYjMzQ7XG4gICA0Olx0XHRkZXBlbmRzIG9uIEJMT0NLXG4gICA1Olx0XHRzZWxlY3QgQlVGRkVSX0hFQURcbiAgIDY6XHRcdGhlbHBcbiAgIDc6XHRcdCAgQlNEIGFuZCBkZXJpdmF0ZSB2ZXJzaW9ucyBvZiBVbml4IChzdWNoIGFzIFN1bk9TLCBGcmVlQlNELCBOZXRCU0QsXG4gICA4Olx0XHQgIE9wZW5CU0QgYW5kIE5lWFRzdGVwKSB1c2UgYSBmaWxlIHN5c3RlbSBjYWxsZWQgVUZTLiBTb21lIFN5c3RlbSBWXG4gICA5Olx0XHQgIFVuaXhlcyBjYW4gY3JlYXRlIGFuZCBtb3VudCBoYXJkIGRpc2sgcGFydGl0aW9ucyBhbmQgZGlza2V0dGVzIHVzaW5nXG4gIDEwOlx0XHQgIHRoaXMgZmlsZSBzeXN0ZW0gYXMgd2VsbC4gU2F5aW5nIFkgaGVyZSB3aWxsIGFsbG93IHlvdSB0byByZWFkIGZyb21cbiAgMTE6XHRcdCAgdGhlc2UgcGFydGl0aW9uczsgaWYgeW91IGFsc28gd2FudCB0byB3cml0ZSB0byB0aGVtLCBzYXkgWSB0byB0aGVcbiAgMTI6XHRcdCAgZXhwZXJpbWVudGFsIFwmIzM0O1VGUyBmaWxlIHN5c3RlbSB3cml0ZSBzdXBwb3J0XCYjMzQ7LCBiZWxvdy4gUGxlYXNlIHJlYWQgdGhlXG4gIDEzOlx0XHQgIGZpbGUgXHUwMDNjZmlsZTpEb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3Vmcy5yc3RcdTAwM2UgZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4gIDE0Olx0XG4gIDE1Olx0ICAgICAgICAgIFRoZSByZWNlbnRseSByZWxlYXNlZCBVRlMyIHZhcmlhbnQgKHVzZWQgaW4gRnJlZUJTRCA1LngpIGlzXG4gIDE2Olx0ICAgICAgICAgIFJFQUQtT05MWSBzdXBwb3J0ZWQuXG4gIDE3Olx0XG4gIDE4Olx0XHQgIE5vdGUgdGhhdCB0aGlzIG9wdGlvbiBpcyBnZW5lcmFsbHkgbm90IG5lZWRlZCBmb3IgZmxvcHBpZXMsIHNpbmNlIGFcbiAgMTk6XHRcdCAgZ29vZCBwb3J0YWJsZSB3YXkgdG8gdHJhbnNwb3J0IGZpbGVzIGFuZCBkaXJlY3RvcmllcyBiZXR3ZWVuIHVuaXhlc1xuICAyMDpcdFx0ICAoYW5kIGV2ZW4gb3RoZXIgb3BlcmF0aW5nIHN5c3RlbXMpIGlzIGdpdmVuIGJ5IHRoZSB0YXIgcHJvZ3JhbSAoXCYjMzQ7bWFuXG4gIDIxOlx0XHQgIHRhclwmIzM0OyBvciBwcmVmZXJhYmx5IFwmIzM0O2luZm8gdGFyXCYjMzQ7KS5cbiAgMjI6XHRcbiAgMjM6XHRcdCAgV2hlbiBhY2Nlc3NpbmcgTmVYVHN0ZXAgZmlsZXMsIHlvdSBtYXkgbmVlZCB0byBjb252ZXJ0IHRoZW0gZnJvbSB0aGVcbiAgMjQ6XHRcdCAgTmVYVCBjaGFyYWN0ZXIgc2V0IHRvIHRoZSBMYXRpbjEgY2hhcmFjdGVyIHNldDsgdXNlIHRoZSBwcm9ncmFtXG4gIDI1Olx0XHQgIHJlY29kZSAoXCYjMzQ7aW5mbyByZWNvZGVcJiMzNDspIGZvciB0aGlzIHB1cnBvc2UuXG4gIDI2Olx0XG4gIDI3Olx0XHQgIFRvIGNvbXBpbGUgdGhlIFVGUyBmaWxlIHN5c3RlbSBzdXBwb3J0IGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGVcbiAgMjg6XHRcdCAgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIHVmcy5cbiAgMjk6XHRcbiAgMzA6XHRcdCAgSWYgeW91IGhhdmVuJiMzOTt0IGhlYXJkIGFib3V0IGFsbCBvZiB0aGlzIGJlZm9yZSwgaXQmIzM5O3Mgc2FmZSB0byBzYXkgTi5cbiAgMzE6XHRcbiAgMzI6XHRjb25maWcgVUZTX0ZTX1dSSVRFXG4gIDMzOlx0XHRib29sIFwmIzM0O1VGUyBmaWxlIHN5c3RlbSB3cml0ZSBzdXBwb3J0IChEQU5HRVJPVVMpXCYjMzQ7XG4gIDM0Olx0XHRkZXBlbmRzIG9uIFVGU19GU1xuICAzNTpcdFx0aGVscFxuICAzNjpcdFx0ICBTYXkgWSBoZXJlIGlmIHlvdSB3YW50IHRvIHRyeSB3cml0aW5nIHRvIFVGUyBwYXJ0aXRpb25zLiBUaGlzIGlzXG4gIDM3Olx0XHQgIGV4cGVyaW1lbnRhbCwgc28geW91IHNob3VsZCBiYWNrIHVwIHlvdXIgVUZTIHBhcnRpdGlvbnMgYmVmb3JlaGFuZC5cbiAgMzg6XHRcbiAgMzk6XHRjb25maWcgVUZTX0RFQlVHXG4gIDQwOlx0XHRib29sIFwmIzM0O1VGUyBkZWJ1Z2dpbmdcJiMzNDtcbiAgNDE6XHRcdGRlcGVuZHMgb24gVUZTX0ZTXG4gIDQyOlx0XHRoZWxwXG4gIDQzOlx0XHQgIElmIHlvdSBhcmUgZXhwZXJpZW5jaW5nIGFueSBwcm9ibGVtcyB3aXRoIHRoZSBVRlMgZmlsZXN5c3RlbSwgc2F5XG4gIDQ0Olx0XHQgIFkgaGVyZS4gIFRoaXMgd2lsbCByZXN1bHQgaW4gX21hbnlfIGFkZGl0aW9uYWwgZGVidWdnaW5nIG1lc3NhZ2VzIHRvIGJlXG4gIDQ1Olx0XHQgIHdyaXR0ZW4gdG8gdGhlIHN5c3RlbSBsb2cuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDEwOjE0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkwMzcKCQkJCQkJCW91dHB1dDogMTE0CgkJCQkJCQl0aG91Z2h0czogMTc1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBVRlMgRmlsZXN5c3RlbSBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGFkZHJlc3Npbmcgc29tZSBjcml0aWNhbCB2dWxuZXJhYmlsaXRpZXMgaW4gdGhlIFVGUyBmaWxlc3lzdGVtLCBzcGVjaWZpY2FsbHkgZGVhbGluZyB3aXRoIGN5bGluZGVyIGdyb3VwIG1ldGFkYXRhLiBNeSB1bmRlcnN0YW5kaW5nIGlzIHRoYXQgaXQmIzM5O3MgZml4aW5nIG1pc3NpbmcgYm91bmRzIGNoZWNrcywgd2hpY2ggaXMgYSBjbGFzc2ljIHNlY3VyaXR5IGhvbGUsIGFuZCBhbHNvIG9wdGltaXppbmcgdGhlIG9yZGVyIG9mIG9wZXJhdGlvbnMgZHVyaW5nIHN1cGVyYmxvY2sgZmlsbGluZyB0byBwcmV2ZW50IHBvdGVudGlhbCBkYXRhIGNvcnJ1cHRpb24uIEl0IHNlZW1zIGxpa2UgYSBwcmV0dHkgZm9jdXNlZCBmaXggdG8gdGhlIFVGUyBmaWxlc3lzdGVtIG1vdW50aW5nIGFuZCBjeWxpbmRlciBsb2FkaW5nIGxvZ2ljLCB3aGljaCwgZ2l2ZW4gbXkga25vd2xlZGdlIG9mIFVGUywgbWFrZXMgaW1tZWRpYXRlIHNlbnNlLgoKTXkgZmlyc3QgdGhvdWdodCBpcyB0byBlbnN1cmUgdGhlIHJpZ2h0IGNvbmZpZ3VyYXRpb25zIGFyZSBlbmFibGVkIGZvciB0ZXN0aW5nLiBJ4oCZbGwgbWFrZSBzdXJlIGBVRlNfRlNgIGlzIGVuYWJsZWQsIGFuZCBJJiMzOTtkIHJlY29tbWVuZCBlbmFibGluZyBgVUZTX0ZTX1dSSVRFYCBhcyB3ZWxsLCBldmVuIHRob3VnaCBpdCYjMzk7cyBvcHRpb25hbCwgYmVjYXVzZSB3cml0aW5nIGNhcGFiaWxpdGllcyBhcmUgY3J1Y2lhbCBmb3IgZWZmZWN0aXZlIGZ1enppbmcuIFdlJiMzOTtsbCBuZWVkIHRvIGhpdCB0aG9zZSB3cml0ZSBwYXRocyB0byBmaW5kIGFueSByZW1haW5pbmcgaXNzdWVzLgoKTm93LCBsZXQmIzM5O3MgcGlucG9pbnQgdGhlIGtleSBlbnRyeSBwb2ludHMgZm9yIGluLWRlcHRoIGV4YW1pbmF0aW9uLiBJJiMzOTttIGZvY3VzaW5nIG9uIGB1ZnNfZ2V0X3RyZWVgIGFuZCBgdWZzX2xvYWRfY3lsaW5kZXJgLiBJIG5lZWQgdG8gY29uZmlybSB0aGF0IGB1ZnNfZ2V0X3RyZWVgIGlzIGluZGVlZCB0aGUgY29ycmVjdCBlbnRyeSBwb2ludCBhcyB0aGUgc3RhbmRhcmQgYGdldF90cmVlYCBjYWxsYmFjayBmb3IgdGhlIGZpbGVzeXN0ZW0gY29udGV4dC4gWWVzLCBpdCYjMzk7cyBjb3JyZWN0LiBgdWZzX2xvYWRfY3lsaW5kZXJgIHNlZW1zIGVxdWFsbHkgaW1wb3J0YW50LCBiZWNhdXNlIGl0JiMzOTtzIGNhbGxlZCBkdXJpbmcgYmxvY2sgYW5kIGlub2RlIGFsbG9jYXRpb24gYW5kIGZyZWVpbmcg4oCTIHRoZSBoZWFydCBvZiB0aGUgZmlsZXN5c3RlbSYjMzk7cyBvcGVyYXRpb25hbCBpbnRlZ3JpdHkuIEkmIzM5O2xsIG5lZWQgdG8gbWV0aWN1bG91c2x5IGFuYWx5emUgaG93IHRoZSBwYXRjaCBtb2RpZmllcyB0aGUgY2FsbHMgdG8gdGhlc2UgZnVuY3Rpb25zIGFuZCB0aGUgc3Vycm91bmRpbmcgbG9naWMuIFRoZSBwYXRjaCBpcyBub3cgbG9hZGVkIGFuZCBpdHMgZGV0YWlscyBhcmUgZnVsbHkgZG9jdW1lbnRlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTA6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1VGU19GUyYjMzQ7LAogICAgJiMzNDtVRlNfRlNfV1JJVEUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt1ZnNfZ2V0X3RyZWUmIzM0OywKICAgICYjMzQ7dWZzX2xvYWRfY3lsaW5kZXImIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgbWlzc2luZyBib3VuZHMgY2hlY2tpbmcgZm9yIGN5bGluZGVyIGdyb3VwIG1ldGFkYXRhIGluIHRoZSBVRlMgZmlsZXN5c3RlbSBhbmQgcmVvcmRlcnMgdGhlIHJlYWRpbmcgb2YgY3lsaW5kZXIgZ3JvdXAgc3RydWN0dXJlcyBkdXJpbmcgc3VwZXJibG9jayBmaWxsaW5nIHRvIGF2b2lkIHJlYWRpbmcgdGhlbSBhZnRlciB0aGUgcm9vdCBpbm9kZSBpcyBmZXRjaGVkLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBVRlMgZmlsZXN5c3RlbSBtb3VudGluZyBhbmQgY3lsaW5kZXIgbG9hZGluZyBsb2dpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7VUZTX0ZTJiMzNDssCiAgICAmIzM0O1VGU19GU19XUklURSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3Vmc19nZXRfdHJlZSYjMzQ7LAogICAgJiMzNDt1ZnNfbG9hZF9jeWxpbmRlciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBtaXNzaW5nIGJvdW5kcyBjaGVja2luZyBmb3IgY3lsaW5kZXIgZ3JvdXAgbWV0YWRhdGEgaW4gdGhlIFVGUyBmaWxlc3lzdGVtIGFuZCByZW9yZGVycyB0aGUgcmVhZGluZyBvZiBjeWxpbmRlciBncm91cCBzdHJ1Y3R1cmVzIGR1cmluZyBzdXBlcmJsb2NrIGZpbGxpbmcgdG8gYXZvaWQgcmVhZGluZyB0aGVtIGFmdGVyIHRoZSByb290IGlub2RlIGlzIGZldGNoZWQuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIFVGUyBmaWxlc3lzdGVtIG1vdW50aW5nIGFuZCBjeWxpbmRlciBsb2FkaW5nIGxvZ2ljLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTA6MTQ6MjguNjkyMzEzMDE2WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzY3MzM2NjUyOTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVUZTX0ZTXCIsXG4gICAgXCJVRlNfRlNfV1JJVEVcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ1ZnNfZ2V0X3RyZWVcIixcbiAgICBcInVmc19sb2FkX2N5bGluZGVyXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgbWlzc2luZyBib3VuZHMgY2hlY2tpbmcgZm9yIGN5bGluZGVyIGdyb3VwIG1ldGFkYXRhIGluIHRoZSBVRlMgZmlsZXN5c3RlbSBhbmQgcmVvcmRlcnMgdGhlIHJlYWRpbmcgb2YgY3lsaW5kZXIgZ3JvdXAgc3RydWN0dXJlcyBkdXJpbmcgc3VwZXJibG9jayBmaWxsaW5nIHRvIGF2b2lkIHJlYWRpbmcgdGhlbSBhZnRlciB0aGUgcm9vdCBpbm9kZSBpcyBmZXRjaGVkLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBVRlMgZmlsZXN5c3RlbSBtb3VudGluZyBhbmQgY3lsaW5kZXIgbG9hZGluZyBsb2dpYy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTA6MTQ6MjguNjkyMzIxNzg2WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNjIwNTY0NTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA4NDU1NDA4MWYwMTgyZDYzNjQwZmJiYzE1M2MxOWFmOTY4OGFjZjUwXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTdW4gQXVnIDIgMTA6MTQ6MjcgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZnMvdWZzL2N5bGluZGVyLmMgYi9mcy91ZnMvY3lsaW5kZXIuY1xcbmluZGV4IGEyODEzMjcwYzMwM2UuLmI5MzBlZTFjZjg1MzAgMTAwNjQ0XFxuLS0tIGEvZnMvdWZzL2N5bGluZGVyLmNcXG4rKysgYi9mcy91ZnMvY3lsaW5kZXIuY1xcbkBAIC02OCw2ICs2OCwxNiBAQCBzdGF0aWMgYm9vbCB1ZnNfcmVhZF9jeWxpbmRlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLFxcbiBcXHR1Y3BpLVxcdTAwM2VjX2NsdXN0ZXJzdW1vZmYgPSBmczMyX3RvX2NwdShzYiwgdWNnLVxcdTAwM2VjZ191LmNnXzQ0LmNnX2NsdXN0ZXJzdW1vZmYpO1xcbiBcXHR1Y3BpLVxcdTAwM2VjX2NsdXN0ZXJvZmYgPSBmczMyX3RvX2NwdShzYiwgdWNnLVxcdTAwM2VjZ191LmNnXzQ0LmNnX2NsdXN0ZXJvZmYpO1xcbiBcXHR1Y3BpLVxcdTAwM2VjX25jbHVzdGVyYmxrcyA9IGZzMzJfdG9fY3B1KHNiLCB1Y2ctXFx1MDAzZWNnX3UuY2dfNDQuY2dfbmNsdXN0ZXJibGtzKTtcXG4rXFxuK1xcdC8qIHRoZXNlIG9uLWRpc2sgdmFsdWVzIGJlY29tZSBhcnJheSBhbmQgYml0bWFwIGluZGljZXMgKi9cXG4rXFx0aWYgKHVjcGktXFx1MDAzZWNfY2d4ICE9IGNnbm8gfHxcXG4rXFx0ICAgIHVjcGktXFx1MDAzZWNfcm90b3IgXFx1MDAzZT0gdXNwaS1cXHUwMDNlc19mcGcgfHxcXG4rXFx0ICAgIHVjcGktXFx1MDAzZWNfZnJvdG9yIFxcdTAwM2U9IHVzcGktXFx1MDAzZXNfZnBnIHx8XFxuK1xcdCAgICB1Y3BpLVxcdTAwM2VjX2lyb3RvciBcXHUwMDNlPSB1c3BpLVxcdTAwM2VzX2lwZykge1xcbitcXHRcXHR1ZnNfZXJyb3Ioc2IsIF9fZnVuY19fLFxcbitcXHRcXHRcXHQgIFxcXCJpbmNvbnNpc3RlbnQgbWV0YWRhdGEgaW4gY3lsaW5kZXIgZ3JvdXAgJXVcXFxcblxcXCIsIGNnbm8pO1xcbitcXHRcXHRnb3RvIGZhaWxlZDtcXG4rXFx0fVxcbiBcXHRVRlNEKFxcXCJFWElUXFxcXG5cXFwiKTtcXG4gXFx0cmV0dXJuIHRydWU7XFxuIFxcdFxcbmRpZmYgLS1naXQgYS9mcy91ZnMvc3VwZXIuYyBiL2ZzL3Vmcy9zdXBlci5jXFxuaW5kZXggYzQ4MzFhOGI5YjNmYi4uN2RlZWNiMzk1NGUyMyAxMDA2NDRcXG4tLS0gYS9mcy91ZnMvc3VwZXIuY1xcbisrKyBiL2ZzL3Vmcy9zdXBlci5jXFxuQEAgLTExOTksNiArMTE5OSwxNSBAQCBzdGF0aWMgaW50IHVmc19maWxsX3N1cGVyKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHN0cnVjdCBmc19jb250ZXh0ICpmYylcXG4gXFx0c2ItXFx1MDAzZXNfbWF4Ynl0ZXMgPSB1ZnNfbWF4X2J5dGVzKHNiKTtcXG4gXFx0c2ItXFx1MDAzZXNfbWF4X2xpbmtzID0gVUZTX0xJTktfTUFYO1xcbiBcXG4rXFx0dWZzX3NldHVwX2NzdG90YWwoc2IpO1xcbitcXHQvKlxcbitcXHQgKiBSZWFkIGN5bGluZGVyIGdyb3VwIHN0cnVjdHVyZXNcXG4rXFx0ICovXFxuK1xcdGlmICghc2JfcmRvbmx5KHNiKSlcXG4rXFx0XFx0aWYgKCF1ZnNfcmVhZF9jeWxpbmRlcl9zdHJ1Y3R1cmVzKHNiKSlcXG4rXFx0XFx0XFx0Z290byBmYWlsZWQ7XFxuK1xcbitcXHQvKiBjcmVhdGUgdGhlIHJvb3QgZGVudHJ5IGxhc3QsIG9uY2UgVUZTX1NCKHNiKSBpcyBmdWxseSBzZXQgdXAgKi9cXG4gXFx0aW5vZGUgPSB1ZnNfaWdldChzYiwgVUZTX1JPT1RJTk8pO1xcbiBcXHRpZiAoSVNfRVJSKGlub2RlKSkge1xcbiBcXHRcXHRyZXQgPSBQVFJfRVJSKGlub2RlKTtcXG5AQCAtMTIxMCwxNCArMTIxOSw2IEBAIHN0YXRpYyBpbnQgdWZzX2ZpbGxfc3VwZXIoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgc3RydWN0IGZzX2NvbnRleHQgKmZjKVxcbiBcXHRcXHRnb3RvIGZhaWxlZDtcXG4gXFx0fVxcbiBcXG4tXFx0dWZzX3NldHVwX2NzdG90YWwoc2IpO1xcbi1cXHQvKlxcbi1cXHQgKiBSZWFkIGN5bGluZGVyIGdyb3VwIHN0cnVjdHVyZXNcXG4tXFx0ICovXFxuLVxcdGlmICghc2JfcmRvbmx5KHNiKSlcXG4tXFx0XFx0aWYgKCF1ZnNfcmVhZF9jeWxpbmRlcl9zdHJ1Y3R1cmVzKHNiKSlcXG4tXFx0XFx0XFx0Z290byBmYWlsZWQ7XFxuLVxcbiBcXHRVRlNEKFxcXCJFWElUXFxcXG5cXFwiKTtcXG4gXFx0cmV0dXJuIDA7XFxuIFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMDoxNDoyOS4wNTUxNzI3NDNaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjozNjM3MDc5NDU1NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJVRlNfRlNcIixcbiAgICBcIlVGU19GU19XUklURVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInVmc19nZXRfdHJlZVwiLFxuICAgIFwidWZzX2xvYWRfY3lsaW5kZXJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBtaXNzaW5nIGJvdW5kcyBjaGVja2luZyBmb3IgY3lsaW5kZXIgZ3JvdXAgbWV0YWRhdGEgaW4gdGhlIFVGUyBmaWxlc3lzdGVtIGFuZCByZW9yZGVycyB0aGUgcmVhZGluZyBvZiBjeWxpbmRlciBncm91cCBzdHJ1Y3R1cmVzIGR1cmluZyBzdXBlcmJsb2NrIGZpbGxpbmcgdG8gYXZvaWQgcmVhZGluZyB0aGVtIGFmdGVyIHRoZSByb290IGlub2RlIGlzIGZldGNoZWQuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIFVGUyBmaWxlc3lzdGVtIG1vdW50aW5nIGFuZCBjeWxpbmRlciBsb2FkaW5nIGxvZ2ljLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA4NDU1NDA4MWYwMTgyZDYzNjQwZmJiYzE1M2MxOWFmOTY4OGFjZjUwXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBBdWcgMiAxMDoxNDoyNyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2ZzL3Vmcy9jeWxpbmRlci5jIGIvZnMvdWZzL2N5bGluZGVyLmNcbmluZGV4IGEyODEzMjcwYzMwM2UuLmI5MzBlZTFjZjg1MzAgMTAwNjQ0XG4tLS0gYS9mcy91ZnMvY3lsaW5kZXIuY1xuKysrIGIvZnMvdWZzL2N5bGluZGVyLmNcbkBAIC02OCw2ICs2OCwxNiBAQCBzdGF0aWMgYm9vbCB1ZnNfcmVhZF9jeWxpbmRlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLFxuIFx0dWNwaS1cdTAwM2VjX2NsdXN0ZXJzdW1vZmYgPSBmczMyX3RvX2NwdShzYiwgdWNnLVx1MDAzZWNnX3UuY2dfNDQuY2dfY2x1c3RlcnN1bW9mZik7XG4gXHR1Y3BpLVx1MDAzZWNfY2x1c3Rlcm9mZiA9IGZzMzJfdG9fY3B1KHNiLCB1Y2ctXHUwMDNlY2dfdS5jZ180NC5jZ19jbHVzdGVyb2ZmKTtcbiBcdHVjcGktXHUwMDNlY19uY2x1c3RlcmJsa3MgPSBmczMyX3RvX2NwdShzYiwgdWNnLVx1MDAzZWNnX3UuY2dfNDQuY2dfbmNsdXN0ZXJibGtzKTtcbitcbitcdC8qIHRoZXNlIG9uLWRpc2sgdmFsdWVzIGJlY29tZSBhcnJheSBhbmQgYml0bWFwIGluZGljZXMgKi9cbitcdGlmICh1Y3BpLVx1MDAzZWNfY2d4ICE9IGNnbm8gfHxcbitcdCAgICB1Y3BpLVx1MDAzZWNfcm90b3IgXHUwMDNlPSB1c3BpLVx1MDAzZXNfZnBnIHx8XG4rXHQgICAgdWNwaS1cdTAwM2VjX2Zyb3RvciBcdTAwM2U9IHVzcGktXHUwMDNlc19mcGcgfHxcbitcdCAgICB1Y3BpLVx1MDAzZWNfaXJvdG9yIFx1MDAzZT0gdXNwaS1cdTAwM2VzX2lwZykge1xuK1x0XHR1ZnNfZXJyb3Ioc2IsIF9fZnVuY19fLFxuK1x0XHRcdCAgXCJpbmNvbnNpc3RlbnQgbWV0YWRhdGEgaW4gY3lsaW5kZXIgZ3JvdXAgJXVcXG5cIiwgY2dubyk7XG4rXHRcdGdvdG8gZmFpbGVkO1xuK1x0fVxuIFx0VUZTRChcIkVYSVRcXG5cIik7XG4gXHRyZXR1cm4gdHJ1ZTtcbiBcdFxuZGlmZiAtLWdpdCBhL2ZzL3Vmcy9zdXBlci5jIGIvZnMvdWZzL3N1cGVyLmNcbmluZGV4IGM0ODMxYThiOWIzZmIuLjdkZWVjYjM5NTRlMjMgMTAwNjQ0XG4tLS0gYS9mcy91ZnMvc3VwZXIuY1xuKysrIGIvZnMvdWZzL3N1cGVyLmNcbkBAIC0xMTk5LDYgKzExOTksMTUgQEAgc3RhdGljIGludCB1ZnNfZmlsbF9zdXBlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBzdHJ1Y3QgZnNfY29udGV4dCAqZmMpXG4gXHRzYi1cdTAwM2VzX21heGJ5dGVzID0gdWZzX21heF9ieXRlcyhzYik7XG4gXHRzYi1cdTAwM2VzX21heF9saW5rcyA9IFVGU19MSU5LX01BWDtcbiBcbitcdHVmc19zZXR1cF9jc3RvdGFsKHNiKTtcbitcdC8qXG4rXHQgKiBSZWFkIGN5bGluZGVyIGdyb3VwIHN0cnVjdHVyZXNcbitcdCAqL1xuK1x0aWYgKCFzYl9yZG9ubHkoc2IpKVxuK1x0XHRpZiAoIXVmc19yZWFkX2N5bGluZGVyX3N0cnVjdHVyZXMoc2IpKVxuK1x0XHRcdGdvdG8gZmFpbGVkO1xuK1xuK1x0LyogY3JlYXRlIHRoZSByb290IGRlbnRyeSBsYXN0LCBvbmNlIFVGU19TQihzYikgaXMgZnVsbHkgc2V0IHVwICovXG4gXHRpbm9kZSA9IHVmc19pZ2V0KHNiLCBVRlNfUk9PVElOTyk7XG4gXHRpZiAoSVNfRVJSKGlub2RlKSkge1xuIFx0XHRyZXQgPSBQVFJfRVJSKGlub2RlKTtcbkBAIC0xMjEwLDE0ICsxMjE5LDYgQEAgc3RhdGljIGludCB1ZnNfZmlsbF9zdXBlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBzdHJ1Y3QgZnNfY29udGV4dCAqZmMpXG4gXHRcdGdvdG8gZmFpbGVkO1xuIFx0fVxuIFxuLVx0dWZzX3NldHVwX2NzdG90YWwoc2IpO1xuLVx0Lypcbi1cdCAqIFJlYWQgY3lsaW5kZXIgZ3JvdXAgc3RydWN0dXJlc1xuLVx0ICovXG4tXHRpZiAoIXNiX3Jkb25seShzYikpXG4tXHRcdGlmICghdWZzX3JlYWRfY3lsaW5kZXJfc3RydWN0dXJlcyhzYikpXG4tXHRcdFx0Z290byBmYWlsZWQ7XG4tXG4gXHRVRlNEKFwiRVhJVFxcblwiKTtcbiBcdHJldHVybiAwO1xuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTA6MTQ6MjkuMDU1MTc4OTQzWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTc0MzI4NzEzMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBVRlMgRmlsZSBTeXN0ZW0gUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIGhlcmUgdGhhdCdzIG1ha2luZyBjaGFuZ2VzIHRvIHRoZSBVRlMgZmlsZSBzeXN0ZW0gY29kZSwgc3BlY2lmaWNhbGx5IGluIGBmcy91ZnMvY3lsaW5kZXIuY2AgYW5kIGBmcy91ZnMvc3VwZXIuY2AuIEZyb20gYSBxdWljayBnbGFuY2UsIGl0IGxvb2tzIGxpa2UgYSBmdW5jdGlvbmFsIGltcHJvdmVtZW50IGlzIGJlaW5nIGludHJvZHVjZWQuIFRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgaW4gYGN5bGluZGVyLmNgIHNlZW1zIHRvIGJlIGFkZGluZyBib3VuZHMgY2hlY2tpbmcgZm9yIGN5bGluZGVyIGdyb3VwIG1ldGFkYXRhIHdpdGhpbiBgdWZzX3JlYWRfY3lsaW5kZXJgLiBUaGF0J3MgYSBzb2xpZCBhZGRpdGlvbjsgd2Ugd2FudCB0byBtYWtlIHN1cmUgd2UncmUgdmFsaWRhdGluZyB0aGF0IGRhdGEgaXMgd2l0aGluIGFjY2VwdGFibGUgYm91bmRzLlxuXG5UaGVuLCBvdmVyIGluIGBzdXBlci5jYCwgd2UncmUgc2VlaW5nIGEgY3JpdGljYWwgcmVvcmRlcmluZy4gVGhlIHBhdGNoIG1vdmVzIHRoZSBjYWxscyB0byBgdWZzX3NldHVwX2NzdG90YWwoc2IpYCBhbmQgYHVmc19yZWFkX2N5bGluZGVyX3N0cnVjdHVyZXMoc2IpYCB0byBvY2N1ciAqYmVmb3JlKiB0aGUgYHVmc19pZ2V0KHNiLCBVRlNfUk9PVElOTylgIGNhbGwuIFRoaXMgaXMgaW50ZXJlc3RpbmcuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGlzIGxpa2VseSByZXNvbHZlcyBhIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbiBvciBkYXRhIGRlcGVuZGVuY3kgaXNzdWUuIEl0J3MgYWltaW5nIHRvIGVuc3VyZSB0aGF0IHRoZSBuZWNlc3NhcnkgY3lsaW5kZXIgZ3JvdXAgc3RydWN0dXJlcyBhcmUgaW4gcGxhY2UgYmVmb3JlIGZldGNoaW5nIHRoZSByb290IGlub2RlLiBUaGF04oCZcyBhIHNlbnNpYmxlIGNoYW5nZSB0byBpbXByb3ZlIGRhdGEgaW50ZWdyaXR5LlxuXG5UbyBjb25maXJtIG15IHVuZGVyc3RhbmRpbmcsIEkgbmVlZCB0byBkaWcgZGVlcGVyIGludG8gdGhlIHByb2JsZW0gdGhpcyBwYXRjaCBzb2x2ZXMuIFRoZSBwYXRjaCBkZXNjcmlwdGlvbiBtZW50aW9ucyB0aGF0IHRoZXJlJ3MgYW4gaXNzdWUgd2hlcmUgY3lsaW5kZXIgZ3JvdXAgc3RydWN0dXJlcyBtaWdodCBiZSByZWFkIG91dCBvZiBvcmRlciBvciB3aXRob3V0IHRoZSBhcHByb3ByaWF0ZSBib3VuZHMgY2hlY2tpbmcuIFNvIHRoaXMgcGF0Y2ggbGlrZWx5IGZpeGVzIHNvbWUgc3VidGxlIHBvdGVudGlhbCBkYXRhIGNvcnJ1cHRpb24gb3IgdW5leHBlY3RlZCBiZWhhdmlvci5cblxuSSBzaG91bGQgdmVyaWZ5IHRoZSBmdW5jdGlvbnMgdGhhdCBhcmUgbW9kaWZpZWQgdG8gdW5kZXJzdGFuZCB0aGUgZXhhY3Qgc2NvcGUuIExvb2tzIGxpa2Ugd2UncmUgbG9va2luZyBhdCBgdWZzX3JlYWRfY3lsaW5kZXJgIGFuZCBgdWZzX2ZpbGxfc3VwZXJgLlxuXG5MZXQncyBxdWlja2x5IGNoZWNrIHRoZSBLY29uZmlnIGZvciBVRlM6IGBmcy91ZnMvS2NvbmZpZ2AuIFl1cCwgdGhlcmUncyBgQ09ORklHX1VGU19GU2AsIGp1c3QgYXMgSSBleHBlY3RlZC5cblxuTm93LCB0byBzb2xpZGlmeSBteSBhbmFseXNpcywgSSBuZWVkIHRvIGV4YW1pbmUgdGhlIHNwZWNpZmljIGltcGxlbWVudGF0aW9ucyB3aXRoaW4gYGZzL3Vmcy9gIGZvciBgdWZzX3JlYWRfY3lsaW5kZXJgIGFuZCBgdWZzX2ZpbGxfc3VwZXJgLiBUaGF0J3Mgd2hlcmUgdGhlIHJlYWwgZGV0YWlsIHdpbGwgbGllLiBJJ2xsIG5lZWQgdG8gcGF5IGNsb3NlIGF0dGVudGlvbiB0byB0aGUgYWRkZWQgYm91bmRzIGNoZWNraW5nIGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoZSByZW9yZGVyZWQgZnVuY3Rpb24gY2FsbHMuIFRoaXMgbG9va3MgbGlrZSBhIHNvbGlkIGNvbnRyaWJ1dGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjY0OSwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyNiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDEwOjE0OjM0Ljc5ODQ2ODMxNVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTg3MDc1OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ1ZnNfcmVhZF9jeWxpbmRlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy91ZnMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL3Vmcy9jeWxpbmRlci5jLTI4LSAqL1xcbmZzL3Vmcy9jeWxpbmRlci5jOjI5OnN0YXRpYyBib29sIHVmc19yZWFkX2N5bGluZGVyKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsXFxuZnMvdWZzL2N5bGluZGVyLmMtMzAtXFx0dW5zaWduZWQgY2dubywgdW5zaWduZWQgYml0bWFwX25yKVxcbi0tXFxuZnMvdWZzL2N5bGluZGVyLmMtODctXFx0c2JpLVxcdTAwM2VzX2Nnbm9bYml0bWFwX25yXSA9IFVGU19DR05PX0VNUFRZO1xcbmZzL3Vmcy9jeWxpbmRlci5jOjg4OlxcdHVmc19lcnJvciAoc2IsIFxcXCJ1ZnNfcmVhZF9jeWxpbmRlclxcXCIsIFxcXCJjYW4ndCByZWFkIGN5bGluZGVyIGdyb3VwIGJsb2NrICV1XFxcIiwgY2dubyk7XFxuZnMvdWZzL2N5bGluZGVyLmMtODktXFx0cmV0dXJuIGZhbHNlO1xcbi0tXFxuZnMvdWZzL2N5bGluZGVyLmM9MTQwPXN0cnVjdCB1ZnNfY2dfcHJpdmF0ZV9pbmZvICogdWZzX2xvYWRfY3lsaW5kZXIgKFxcbi0tXFxuZnMvdWZzL2N5bGluZGVyLmMtMTcyLVxcdFxcdH0gZWxzZSB7XFxuZnMvdWZzL2N5bGluZGVyLmM6MTczOlxcdFxcdFxcdGlmICh1bmxpa2VseSghdWZzX3JlYWRfY3lsaW5kZXIgKHNiLCBjZ25vLCBjZ25vKSkpIHtcXG5mcy91ZnMvY3lsaW5kZXIuYy0xNzQtXFx0XFx0XFx0XFx0VUZTRChcXFwiRVhJVCAoRkFJTEVEKVxcXFxuXFxcIik7XFxuLS1cXG5mcy91ZnMvY3lsaW5kZXIuYy0yMDktXFx0XFx0c2JpLVxcdTAwM2VzX3VjcGlbMF0gPSB1Y3BpO1xcbmZzL3Vmcy9jeWxpbmRlci5jOjIxMDpcXHRcXHRpZiAodW5saWtlbHkoIXVmc19yZWFkX2N5bGluZGVyIChzYiwgY2dubywgMCkpKSB7XFxuZnMvdWZzL2N5bGluZGVyLmMtMjExLVxcdFxcdFxcdFVGU0QoXFxcIkVYSVQgKEZBSUxFRClcXFxcblxcXCIpO1xcbi0tXFxuZnMvdWZzL3N1cGVyLmM9NDIwPXN0YXRpYyB2b2lkIHVmc19zZXR1cF9jc3RvdGFsKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpXFxuLS1cXG5mcy91ZnMvc3VwZXIuYy00NTMtICovXFxuZnMvdWZzL3N1cGVyLmM6NDU0OnN0YXRpYyBpbnQgdWZzX3JlYWRfY3lsaW5kZXJfc3RydWN0dXJlcyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKVxcbmZzL3Vmcy9zdXBlci5jLTQ1NS17XFxuLS1cXG5mcy91ZnMvc3VwZXIuYz03MTY9c3RhdGljIGludCB1ZnNfZmlsbF9zdXBlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBzdHJ1Y3QgZnNfY29udGV4dCAqZmMpXFxuLS1cXG5mcy91ZnMvc3VwZXIuYy0xMjA2LVxcdGlmICghc2JfcmRvbmx5KHNiKSlcXG5mcy91ZnMvc3VwZXIuYzoxMjA3OlxcdFxcdGlmICghdWZzX3JlYWRfY3lsaW5kZXJfc3RydWN0dXJlcyhzYikpXFxuZnMvdWZzL3N1cGVyLmMtMTIwOC1cXHRcXHRcXHRnb3RvIGZhaWxlZDtcXG4tLVxcbmZzL3Vmcy9zdXBlci5jPTEyMzk9c3RhdGljIGludCB1ZnNfcmVjb25maWd1cmUoc3RydWN0IGZzX2NvbnRleHQgKmZjKVxcbi0tXFxuZnMvdWZzL3N1cGVyLmMtMTI5NC1cXHRcXHR9XFxuZnMvdWZzL3N1cGVyLmM6MTI5NTpcXHRcXHRpZiAoIXVmc19yZWFkX2N5bGluZGVyX3N0cnVjdHVyZXMoc2IpKSB7XFxuZnMvdWZzL3N1cGVyLmMtMTI5Ni1cXHRcXHRcXHRwcl9lcnIoXFxcImZhaWxlZCBkdXJpbmcgcmVtb3VudGluZ1xcXFxuXFxcIik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDEwOjE0OjM0Ljg0NDM0NTc3MloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQzNDkxMDIyMTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIFVGUyBJbml0aWFsaXphdGlvbiBGdW5jdGlvbnMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGVzZSBVRlMgZnVuY3Rpb25zLCBzcGVjaWZpY2FsbHkgdGhlIG9uZXMgaW52b2x2ZWQgaW4gaW5pdGlhbGl6YXRpb24uIFRoZSBvbmVzIHRoYXQgaW1tZWRpYXRlbHkgc3RhbmQgb3V0IGFyZSBgdWZzX2ZpbGxfc3VwZXJgLCBgdWZzX2xvYWRfY3lsaW5kZXJgLCBhbmQgYHVmc19yZWFkX2N5bGluZGVyX3N0cnVjdHVyZXNgLiBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIGhvdyB0aGVzZSBpbnRlcmFjdC4gV2FpdCBhIG1pbnV0ZSwgSSBzZWUgYHVmc19yZWFkX2N5bGluZGVyYCBpcyBzdGF0aWMsIG1lYW5pbmcgaXQncyBvbmx5IHZpc2libGUgd2l0aGluIGl0cyBjb21waWxhdGlvbiB1bml0IGFuZCBub3QgZGlyZWN0bHkgY2FsbGVkIGZyb20gb3V0c2lkZS4gSG1tLCBhbmQgYHVmc19sb2FkX2N5bGluZGVyYCBjYWxscyBpdCwgc28gaXQncyBhIGJpdCBsb3dlci1sZXZlbC4gTG9va3MgbGlrZSBgdWZzX3JlYWRfY3lsaW5kZXJfc3RydWN0dXJlc2AgaXMgYWxzbyBzdGF0aWMsIGFuZCBpdCdzIGNhbGxlZCBieSBib3RoIGB1ZnNfZmlsbF9zdXBlcmAgYW5kIGB1ZnNfcmVjb25maWd1cmVgLiBPa2F5LCB0aGF0J3MgdXNlZnVsLiBTbyB0aGUgY3JpdGljYWwgcGF0aCBoZXJlIGlzIGxpa2VseSBjZW50ZXJlZCBhcm91bmQgYHVmc19maWxsX3N1cGVyYCwgYHVmc19sb2FkX2N5bGluZGVyYCBhbmQgYHVmc19yZWNvbmZpZ3VyZWAsIGdpdmVuIHRoZWlyIGRpcmVjdCBleHBvc3VyZSB0byB0aGUgaGlnaGVyIGxldmVscy4gSSBzaG91bGQgcHJvYmFibHkgbm93IGdvIGNoZWNrIHRoZSBLY29uZmlnIGZpbGUgaW4gdGhlIFVGUyBkaXJlY3RvcnkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQwMjgsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTA6MTQ6MzkuMTkzNDUwNDkzWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2NjAwMTMzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgVUZTX0ZTXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL3Vmcy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvdWZzL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5mcy91ZnMvS2NvbmZpZzoyOmNvbmZpZyBVRlNfRlNcXG5mcy91ZnMvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJVRlMgZmlsZSBzeXN0ZW0gc3VwcG9ydCAocmVhZCBvbmx5KVxcXCJcXG4tLVxcbmZzL3Vmcy9LY29uZmlnLTMxLVxcbmZzL3Vmcy9LY29uZmlnOjMyOmNvbmZpZyBVRlNfRlNfV1JJVEVcXG5mcy91ZnMvS2NvbmZpZy0zMy1cXHRib29sIFxcXCJVRlMgZmlsZSBzeXN0ZW0gd3JpdGUgc3VwcG9ydCAoREFOR0VST1VTKVxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTA6MTQ6MzkuMzU5NDU4MTgyWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDM0OTU4ODc0MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFVGUyBGaWxlc3lzdGVtIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgdGhlIG1haW4gY29uZmlndXJhdGlvbnMgdGhhdCBzdGFuZCBvdXQgYXJlIGBVRlNfRlNgIGFuZCBgVUZTX0ZTX1dSSVRFYC4gVGhlIGNvcmUgb2YgdGhlIG1vZGlmaWNhdGlvbiBzZWVtcyB0byBiZSBhcm91bmQgYHVmc19yZWFkX2N5bGluZGVyYC4gVGhlIGNvZGUgY2hhbmdlcyBsb29rIGxpa2UgdGhleeKAmXJlIGRlYWxpbmcgd2l0aCB0aGUgY3lsaW5kZXIgZ3JvdXAgY2hlY2tzLCBzcGVjaWZpY2FsbHkgd2l0aCBjb21wYXJpc29ucyBsaWtlIGB1Y3BpLVx1MDAzZWNfY2d4ICE9IGNnbm9gLiBUaGVyZSdzIGFsc28gYSBtb2RpZmljYXRpb24gdG8gYHVmc19maWxsX3N1cGVyYCwgbW92aW5nIGB1ZnNfcmVhZF9jeWxpbmRlcl9zdHJ1Y3R1cmVzYCBiZWZvcmUgdGhlIGNhbGwgdG8gYHVmc19pZ2V0YC4gRnVuY3Rpb25hbGx5LCB0aGlzIGxvb2tzIHByb21pc2luZyBhbmQgZGVmaW5pdGVseSB3YXJyYW50cyBhIGdvb2QgZnV6emluZyBjYW1wYWlnbi5cblxuTXkgbmV4dCBzdGVwIGlzIHRvIHplcm8gaW4gb24gYHVmc19sb2FkX2N5bGluZGVyYCBhbmQgYHVmc19maWxsX3N1cGVyYC4gYHVmc19maWxsX3N1cGVyYCBpcyBwcmV0dHkgc3RhbmRhcmQgZm9yIGEgc3VwZXJibG9jayBmaWxsLCBzbyBJJ2xsIHByb2JhYmx5IHNwZW5kIGxlc3MgdGltZSB0aGVyZS4gYHVmc19sb2FkX2N5bGluZGVyYCBob3dldmVyLCBzZWVtcyBsaWtlIGl0IGNvdWxkIGJlIGEgZ3JlYXQgdGFyZ2V0IGZvciBkZWVwZXIgaW52ZXN0aWdhdGlvbiwgbWF5YmUgYSBzb2xpZCBmb2N1cyBzeW1ib2wuIEkgYWxzbyBzZWUgdGhhdCBgdWZzX3JlYWRfY3lsaW5kZXJfc3RydWN0dXJlc2AgaXMgbWFya2VkIGFzIHN0YXRpYy4gSSBuZWVkIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIHdoZXRoZXIgYHVmc19sb2FkX2N5bGluZGVyYCBpcyBleHBvcnRlZCBvciwgaWYgbm90LCBpZiBpdCdzIGFjY2Vzc2libGUuIEtub3dpbmcgdGhhdCBpcyBjcml0aWNhbCB0byBleHBsb2l0IHBvdGVudGlhbCB2dWxuZXJhYmlsaXR5IGluIGFueSBmaWxlIHN5c3RlbS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDU3MSwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMDoxNDo0My43MDkwNTAyNDNaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjA4NzY3NDk2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInVmc19sb2FkX2N5bGluZGVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL3Vmcy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvdWZzL2JhbGxvYy5jPTYyPXZvaWQgdWZzX2ZyZWVfZnJhZ21lbnRzKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHU2NCBmcmFnbWVudCwgdW5zaWduZWQgY291bnQpXFxuLS1cXG5mcy91ZnMvYmFsbG9jLmMtODctXFx0XFx0XFxuZnMvdWZzL2JhbGxvYy5jOjg4OlxcdHVjcGkgPSB1ZnNfbG9hZF9jeWxpbmRlciAoc2IsIGNnbm8pO1xcbmZzL3Vmcy9iYWxsb2MuYy04OS1cXHRpZiAoIXVjcGkpIFxcbi0tXFxuZnMvdWZzL2JhbGxvYy5jPTE0NT12b2lkIHVmc19mcmVlX2Jsb2NrcyhzdHJ1Y3QgaW5vZGUgKmlub2RlLCB1NjQgZnJhZ21lbnQsIHVuc2lnbmVkIGNvdW50KVxcbi0tXFxuZnMvdWZzL2JhbGxvYy5jLTE4Mi1cXG5mcy91ZnMvYmFsbG9jLmM6MTgzOlxcdHVjcGkgPSB1ZnNfbG9hZF9jeWxpbmRlciAoc2IsIGNnbm8pO1xcbmZzL3Vmcy9iYWxsb2MuYy0xODQtXFx0aWYgKCF1Y3BpKSBcXG4tLVxcbmZzL3Vmcy9iYWxsb2MuYz00OTc9c3RhdGljIHU2NCB1ZnNfYWRkX2ZyYWdtZW50cyhzdHJ1Y3QgaW5vZGUgKmlub2RlLCB1NjQgZnJhZ21lbnQsXFxuLS1cXG5mcy91ZnMvYmFsbG9jLmMtNTE3LVxcdFxcdHJldHVybiAwO1xcbmZzL3Vmcy9iYWxsb2MuYzo1MTg6XFx0dWNwaSA9IHVmc19sb2FkX2N5bGluZGVyIChzYiwgY2dubyk7XFxuZnMvdWZzL2JhbGxvYy5jLTUxOS1cXHRpZiAoIXVjcGkpXFxuLS1cXG5mcy91ZnMvYmFsbG9jLmM9NTc2PXN0YXRpYyB1NjQgdWZzX2FsbG9jX2ZyYWdtZW50cyhzdHJ1Y3QgaW5vZGUgKmlub2RlLCB1bnNpZ25lZCBjZ25vLFxcbi0tXFxuZnMvdWZzL2JhbGxvYy5jLTYyMy1jZ19mb3VuZDpcXG5mcy91ZnMvYmFsbG9jLmM6NjI0OlxcdHVjcGkgPSB1ZnNfbG9hZF9jeWxpbmRlciAoc2IsIGNnbm8pO1xcbmZzL3Vmcy9iYWxsb2MuYy02MjUtXFx0aWYgKCF1Y3BpKVxcbi0tXFxuZnMvdWZzL2N5bGluZGVyLmM9OTY9dm9pZCB1ZnNfcHV0X2N5bGluZGVyIChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKiBzYiwgdW5zaWduZWQgYml0bWFwX25yKVxcbi0tXFxuZnMvdWZzL2N5bGluZGVyLmMtMTM5LSAqL1xcbmZzL3Vmcy9jeWxpbmRlci5jOjE0MDpzdHJ1Y3QgdWZzX2NnX3ByaXZhdGVfaW5mbyAqIHVmc19sb2FkX2N5bGluZGVyIChcXG5mcy91ZnMvY3lsaW5kZXIuYy0xNDEtXFx0c3RydWN0IHN1cGVyX2Jsb2NrICogc2IsIHVuc2lnbmVkIGNnbm8pXFxuLS1cXG5mcy91ZnMvY3lsaW5kZXIuYy0xNTEtXFx0aWYgKGNnbm8gXFx1MDAzZT0gdXNwaS1cXHUwMDNlc19uY2cpIHtcXG5mcy91ZnMvY3lsaW5kZXIuYzoxNTI6XFx0XFx0dWZzX3BhbmljIChzYiwgXFxcInVmc19sb2FkX2N5bGluZGVyXFxcIiwgXFxcImludGVybmFsIGVycm9yLCBoaWdoIG51bWJlciBvZiBjZ1xcXCIpO1xcbmZzL3Vmcy9jeWxpbmRlci5jLTE1My1cXHRcXHRyZXR1cm4gTlVMTDtcXG4tLVxcbmZzL3Vmcy9jeWxpbmRlci5jLTE2Ny1cXHRcXHRcXHRpZiAoc2JpLVxcdTAwM2VzX2Nnbm9bY2dub10gIT0gY2dubykge1xcbmZzL3Vmcy9jeWxpbmRlci5jOjE2ODpcXHRcXHRcXHRcXHR1ZnNfcGFuaWMgKHNiLCBcXFwidWZzX2xvYWRfY3lsaW5kZXJcXFwiLCBcXFwiaW50ZXJuYWwgZXJyb3IsIHdyb25nIG51bWJlciBvZiBjZyBpbiBjYWNoZVxcXCIpO1xcbmZzL3Vmcy9jeWxpbmRlci5jLTE2OS1cXHRcXHRcXHRcXHRVRlNEKFxcXCJFWElUIChGQUlMRUQpXFxcXG5cXFwiKTtcXG4tLVxcbmZzL3Vmcy9pYWxsb2MuYz01Nz12b2lkIHVmc19mcmVlX2lub2RlIChzdHJ1Y3QgaW5vZGUgKiBpbm9kZSlcXG4tLVxcbmZzL3Vmcy9pYWxsb2MuYy04Mi1cXHRiaXQgPSB1ZnNfaW5vdG9jZ29mZiAoaW5vKTtcXG5mcy91ZnMvaWFsbG9jLmM6ODM6XFx0dWNwaSA9IHVmc19sb2FkX2N5bGluZGVyIChzYiwgY2cpO1xcbmZzL3Vmcy9pYWxsb2MuYy04NC1cXHRpZiAoIXVjcGkpIHtcXG4tLVxcbmZzL3Vmcy9pYWxsb2MuYz0xNzI9c3RydWN0IGlub2RlICp1ZnNfbmV3X2lub2RlKHN0cnVjdCBpbm9kZSAqZGlyLCB1bW9kZV90IG1vZGUpXFxuLS1cXG5mcy91ZnMvaWFsbG9jLmMtMjM4LWNnX2ZvdW5kOlxcbmZzL3Vmcy9pYWxsb2MuYzoyMzk6XFx0dWNwaSA9IHVmc19sb2FkX2N5bGluZGVyIChzYiwgY2cpO1xcbmZzL3Vmcy9pYWxsb2MuYy0yNDAtXFx0aWYgKCF1Y3BpKSB7XFxuLS1cXG5mcy91ZnMvdWZzLmg9ODg9dTY0IHVmc19uZXdfZnJhZ21lbnRzKHN0cnVjdCBpbm9kZSAqLCB2b2lkICosIHU2NCBmcmFnbWVudCwgdTY0IGdvYWwsXFxuLS1cXG5mcy91ZnMvdWZzLmgtOTEtLyogY3lsaW5kZXIuYyAqL1xcbmZzL3Vmcy91ZnMuaDo5MjpleHRlcm4gc3RydWN0IHVmc19jZ19wcml2YXRlX2luZm8gKiB1ZnNfbG9hZF9jeWxpbmRlciAoc3RydWN0IHN1cGVyX2Jsb2NrICosIHVuc2lnbmVkKTtcXG5mcy91ZnMvdWZzLmgtOTMtZXh0ZXJuIHZvaWQgdWZzX3B1dF9jeWxpbmRlciAoc3RydWN0IHN1cGVyX2Jsb2NrICosIHVuc2lnbmVkKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTA6MTQ6NDMuOTE3ODIzNjQ5WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzkyMzM5NjIwOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGFzc2Vzc21lbnQgb2YgdGhpcyBjb2RlIHNuaXBwZXQsIGRpc3RpbGxlZCBpbnRvIGEgZmlyc3QtcGVyc29uIHBlcnNwZWN0aXZlLCBrZWVwaW5nIGluIG1pbmQgbXkgZXhwZXJ0aXNlOlxuXG4qKkV4YW1pbmluZyB0aGUgVUZTIEZpbGVzeXN0ZW0gTW91bnRpbmcgRW50cnkgUG9pbnRzKipcblxuQWxyaWdodCwgSSdtIGxvb2tpbmcgYXQgdGhpcyBVRlMgbW91bnRpbmcgcHJvY2VzcyBhbmQgdHJ5aW5nIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUga2V5IGVudHJ5IHBvaW50cy4gSSBzZWUgdGhhdCBgdWZzX2xvYWRfY3lsaW5kZXJgIGlzIGRlY2xhcmVkIGFzIG5vbi1zdGF0aWMgYW5kIGV4cG9ydGVkLiBUaGF0J3MgaW50ZXJlc3RpbmcsIGJ1dCBub3QgbmVjZXNzYXJpbHkgdGhlIG1haW4gbW91bnQgZnVuY3Rpb24uIE5vdywgYHVmc19maWxsX3N1cGVyYCBpcyBmbGFnZ2VkIGFzIHN0YXRpYywgYW5kIHRoYXQgb2Z0ZW4gbWVhbnMgaXQncyB0aGUgaW50ZXJuYWwgZW50cnkgcG9pbnQgdXNlZCBkdXJpbmcgbW91bnRpbmcuIEJ1dCwgSSdtIGdvaW5nIHRvIHRha2UgYSBtb21lbnQgYW5kIGp1c3QgZG91YmxlLWNoZWNrIHRoYXQgdGhpcyBpcyBpbmRlZWQgdGhlIGNhbm9uaWNhbCBlbnRyeSBwb2ludC4gSSB3YW50IHRvIG1ha2Ugc3VyZSB0aGVyZSBpc24ndCBhIG5vbi1zdGF0aWMsIG1vcmUgZGlyZWN0IGZ1bmN0aW9uIHRoYXQncyBiZWluZyB1c2VkIGZvciB0aGUgbW91bnRpbmcgcHJvY2Vzcywgb3IgYSBiZXR0ZXIgZW50cnkgcG9pbnQgb3ZlcmFsbC4gQWZ0ZXIgYSBxdWljayB2ZXJpZmljYXRpb24sIEkgY2FuIGNvbmZpcm0gYHVmc19maWxsX3N1cGVyYCBpcyBpbmRlZWQgc3RhdGljLiBTbywgYnkgcHJvY2VzcyBvZiBlbGltaW5hdGlvbiwgaWYgdGhlcmUncyBhIG5vbi1zdGF0aWMgZnVuY3Rpb24gdGhhdCdzIGJlaW5nIHVzZWQsIGl0J3MgdmVyeSBsaWtlbHkgdG8gYmUgc29tZXRoaW5nIGxpa2UgYHVmc19tb3VudGAgb3IgcGVyaGFwcyBgdWZzX2dldF90cmVlYC4gSSdsbCBoYXZlIHRvIGludmVzdGlnYXRlIGZ1cnRoZXIgdG8gZGV0ZXJtaW5lIHRoZSBwcmltYXJ5IG1vdW50aW5nIHBhdGguXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYwODIsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMDoxNDo0Ny44NDEyMjE5MzhaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4MzYzMTc3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInVmc19maWxsX3N1cGVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL3Vmcy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvdWZzL3N1cGVyLmM9Njk5PXN0YXRpYyB1NjQgdWZzX21heF9ieXRlcyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKVxcbi0tXFxuZnMvdWZzL3N1cGVyLmMtNzE1LVxcbmZzL3Vmcy9zdXBlci5jOjcxNjpzdGF0aWMgaW50IHVmc19maWxsX3N1cGVyKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHN0cnVjdCBmc19jb250ZXh0ICpmYylcXG5mcy91ZnMvc3VwZXIuYy03MTcte1xcbi0tXFxuZnMvdWZzL3N1cGVyLmM9MTQyMD1zdGF0aWMgaW50IHVmc19nZXRfdHJlZShzdHJ1Y3QgZnNfY29udGV4dCAqZmMpXFxuZnMvdWZzL3N1cGVyLmMtMTQyMS17XFxuZnMvdWZzL3N1cGVyLmM6MTQyMjpcXHRyZXR1cm4gZ2V0X3RyZWVfYmRldihmYywgdWZzX2ZpbGxfc3VwZXIpO1xcbmZzL3Vmcy9zdXBlci5jLTE0MjMtfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMDoxNDo0Ny44ODk1OTM5MTVaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjk3NDAxNzMzMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqSWRlbnRpZnlpbmcgdGhlIEtleSBVRlMgRnVuY3Rpb25zKipcblxuT2theSwgc28gSSdtIGhvbmluZyBpbiBvbiB0aGUgY3JpdGljYWwgVUZTIGZ1bmN0aW9ucyBoZXJlLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBgdWZzX2dldF90cmVlYCBpcyB0aGUgcHJpbWFyeSBmdW5jdGlvbiBJIG5lZWQgdG8gZXhhbWluZS4gVGhhdCdzIGxpa2VseSB3aGVyZSB0aGUgY29yZSBmaWxlIHN5c3RlbSBzdHJ1Y3R1cmUgYW5kIG5hdmlnYXRpb24gbG9naWMgcmVzaWRlLiBIb3dldmVyLCBJIGNhbid0IGJlIHRvbyBuYXJyb3csIGdpdmVuIHRoZSBuYXR1cmUgb2YgVUZTLCBhbmQgdGhlIHNwZWNpZmljIGNvbnRleHQgSSdtIGRlYWxpbmcgd2l0aC4gV2UgYWxsIGtub3cgdGhhdCBjaGFuZ2VzIGNhbiB0cmlnZ2VyIGEgY2FzY2FkZS5cblxuV2l0aCB0aGF0IGluIG1pbmQsIEkgbmVlZCB0byBhbHNvIGFkZCBgdWZzX3JlY29uZmlndXJlYCB0byBteSBjaGVja2xpc3QuIE15IGludHVpdGlvbiwgYmFzZWQgb24gcHJldmlvdXMgZXhwZXJpZW5jZSwgdGVsbHMgbWUgdGhpcyBpcyBhbHNvIGxpa2VseSBrZXkgdG8gdW5kZXJzdGFuZCBob3cgdGhlIFVGUyBpbnRlcmFjdHMgd2l0aCBzeXN0ZW0tbGV2ZWwgY29uZmlndXJhdGlvbiBvciBkeW5hbWljIHBhcmFtZXRlciBhZGp1c3RtZW50cy4gVGhlIGludGVycGxheSBiZXR3ZWVuIGZldGNoaW5nIHRoZSBkaXJlY3RvcnkgdHJlZSBhbmQgc3lzdGVtIHBhcmFtZXRlcnMgbWF5IGJlIGVzc2VudGlhbC5cblxuXG4iLCJJbnB1dFRva2VucyI6NjY2OCwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDEwOjE0OjUwLjg2MzYxMzg0NFoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDY4MTU0NDcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidWZzX3JlY29uZmlndXJlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL3Vmcy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvdWZzL3N1cGVyLmM9NzE2PXN0YXRpYyBpbnQgdWZzX2ZpbGxfc3VwZXIoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgc3RydWN0IGZzX2NvbnRleHQgKmZjKVxcbi0tXFxuZnMvdWZzL3N1cGVyLmMtMTIzOC1cXG5mcy91ZnMvc3VwZXIuYzoxMjM5OnN0YXRpYyBpbnQgdWZzX3JlY29uZmlndXJlKHN0cnVjdCBmc19jb250ZXh0ICpmYylcXG5mcy91ZnMvc3VwZXIuYy0xMjQwLXtcXG4tLVxcbmZzL3Vmcy9zdXBlci5jPTE0MzA9c3RhdGljIGNvbnN0IHN0cnVjdCBmc19jb250ZXh0X29wZXJhdGlvbnMgdWZzX2NvbnRleHRfb3BzID0ge1xcbi0tXFxuZnMvdWZzL3N1cGVyLmMtMTQzMi1cXHQuZ2V0X3RyZWVcXHQ9IHVmc19nZXRfdHJlZSxcXG5mcy91ZnMvc3VwZXIuYzoxNDMzOlxcdC5yZWNvbmZpZ3VyZVxcdD0gdWZzX3JlY29uZmlndXJlLFxcbmZzL3Vmcy9zdXBlci5jLTE0MzQtXFx0LmZyZWVcXHRcXHQ9IHVmc19mcmVlX2ZjLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMDoxNDo1MC45MTA0MzM3NzFaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDI1MjM5MjIyNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgVUZTIEZpbGVzeXN0ZW0gQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgVUZTIGZpbGVzeXN0ZW0gY29kZS4gVGhlIGNyaXRpY2FsIGZ1bmN0aW9uLCBgdWZzX3JlY29uZmlndXJlYCwgaXMgZGVmaW5lZCBhcyBzdGF0aWMuIFRoYXQncyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIFNpbmNlIGl0J3Mgc3RhdGljLCBJIHNob3VsZCBiZSBhYmxlIHRvIHRyYWNlIGl0cyB1c2VzIGVmZmVjdGl2ZWx5LiBUaGF0IG1lYW5zIEkgY2FuIGxldmVyYWdlIGB1ZnNfZ2V0X3RyZWVgIGFuZCBgdWZzX2xvYWRfY3lsaW5kZXJgIHRvIGZpZ3VyZSBvdXQgaXRzIGJlaGF2aW9yLiBIbW0sIGB1ZnNfbG9hZF9jeWxpbmRlcmAgbG9va3MgcHJvbWlzaW5nIGFzIGEgc3RhcnRpbmcgcG9pbnQuIEFuZCB3YWl0LCB3aGF0IGFib3V0IGB1ZnNfcmVhZF9jeWxpbmRlcl9zdHJ1Y3R1cmVzYD8gSXQncyAqYWxzbyogc3RhdGljLiBUaGlzIGlzIGdvaW5nIHRvIG1ha2UgdGhlIGFuYWx5c2lzIGV2ZW4gY2xlYW5lci5cblxuTGV0IG1lIHRoaW5rLi4uIElzIHRoZXJlIGFueSBub24tc3RhdGljIGZ1bmN0aW9uIHRoYXQgY2FsbHMgYHVmc19yZWFkX2N5bGluZGVyX3N0cnVjdHVyZXNgPyBObywgdGhlIGNvZGUgc2F5cyBpdOKAmXMgb25seSBjYWxsZWQgYnkgYHVmc19maWxsX3N1cGVyYCBhbmQgYHVmc19yZWNvbmZpZ3VyZWAuIE9rYXksIHNvIHRoYXQgbWVhbnMgYHVmc19nZXRfdHJlZWAgaXMgdGhlIGFjdHVhbCBlbnRyeSBwb2ludCBmb3IgdGhlIGB1ZnNfZmlsbF9zdXBlcmAgcGFydCBvZiB0aGUgcHJvY2Vzcywgd2hpY2ggaXMgaW1wb3J0YW50IHRvIGtub3cuIEFuZCB3ZSBrbm93IHRoYXQgYHVmc19sb2FkX2N5bGluZGVyYCBpcyB0aGUgZW50cnkgcG9pbnQgZm9yIGB1ZnNfcmVhZF9jeWxpbmRlcmAuXG5cbkFscmlnaHQsIEkndmUgZ290IGEgZ29vZCBoYW5kbGUgb24gdGhlIGNvbnRyb2wgZmxvdy4gTGV0J3Mgc2VlIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgY29uZmlndXJhdGlvbiByZXF1aXJlbWVudHMgaW4gYFVGU19GU2AgdGhhdCBJIG5lZWQgdG8gYmUgYXdhcmUgb2YuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcxMjIsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTA6MTQ6NTUuMTYyODI4MzE4WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDk4MDY1NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgVUZTX0ZTXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL3Vmcy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvdWZzL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5mcy91ZnMvS2NvbmZpZzoyOmNvbmZpZyBVRlNfRlNcXG5mcy91ZnMvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJVRlMgZmlsZSBzeXN0ZW0gc3VwcG9ydCAocmVhZCBvbmx5KVxcXCJcXG4tLVxcbmZzL3Vmcy9LY29uZmlnLTMxLVxcbmZzL3Vmcy9LY29uZmlnOjMyOmNvbmZpZyBVRlNfRlNfV1JJVEVcXG5mcy91ZnMvS2NvbmZpZy0zMy1cXHRib29sIFxcXCJVRlMgZmlsZSBzeXN0ZW0gd3JpdGUgc3VwcG9ydCAoREFOR0VST1VTKVxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTA6MTQ6NTUuMjA3ODE0MDE1WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ1MDg0NDk0ODEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiByZWFkaW5nIGBmcy91ZnMvS2NvbmZpZ2AsIHN1bW1hcml6ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbiwgYXNzdW1pbmcgYSBsZXZlbCBvZiBleHBlcnRpc2U6XG5cbioqRGl2aW5nIGludG8gdGhlIFVGUyBDb25maWd1cmF0aW9uIE9wdGlvbnMqKlxuXG5BbHJpZ2h0LCBsZXQncyB0YWtlIGEgbG9vayBhdCB0aGUgYGZzL3Vmcy9LY29uZmlnYCBmaWxlLiBJJ20gZXhwZWN0aW5nIHRoaXMgdG8gZGVmaW5lIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gdGhlIFVuaXggRmlsZSBTeXN0ZW0gKFVGUykuIEdpdmVuIG15IGV4cGVyaWVuY2UsIEknbSBwYXJ0aWN1bGFybHkgaW50ZXJlc3RlZCBpbiBzZWVpbmcgaG93IFVGUyBpcyBwcmVzZW50ZWQgaW4gdGhlIG1vZGVybiBrZXJuZWwsIGhvdyBvcHRpb25zIHJlbGF0ZSB0byB0aGUgaGlzdG9yaWNhbCBjb250ZXh0IG9mIFVGUydzIGRldmVsb3BtZW50LCBhbmQgd2hpY2ggZmVhdHVyZXMgYXJlIGVuYWJsZWQgYnkgZGVmYXVsdCwgYW5kIHdoaWNoIG9uZXMgYXJlIGtlcHQgb3B0aW9uYWwgZm9yIHZhcmlvdXMgYXJjaGl0ZWN0dXJlcyBvciB1c2UgY2FzZXMuIEknbGwgYmUgbG9va2luZyBmb3IgdGhpbmdzIGxpa2U6XG5cbiogICAqKkZpbGUgc3lzdGVtIHZhcmlhbnRzOioqIEFyZSB0aGVyZSBvcHRpb25zIGZvciB0aGUgZGlmZmVyZW50IFVGUyB2ZXJzaW9ucyAoZS5nLiwgVUZTMSwgVUZTMiksIGFuZCBpZiBzbywgaG93IGFyZSB0aGV5IGhhbmRsZWQ/IEkgbmVlZCB0byB1bmRlcnN0YW5kIGlmIHRoZSBrZXJuZWwgc3VwcG9ydHMgYm90aCB2YXJpYW50cyBvciBpcyBmYXZvcmluZyBvbmUgb3ZlciB0aGUgb3RoZXIuIEknbGwgZXhwZWN0IHRvIHNlZSB0aGlzIGhhbmRsZWQgdmlhIGBib29sYCBvciBgdHJpc3RhdGVgIG9wdGlvbnMsIHBlcmhhcHMgZGVwZW5kaW5nIG9uIHRoZSB1bmRlcmx5aW5nIGhhcmR3YXJlIG9yIGJvb3QgY29uZmlndXJhdGlvbnMuXG4qICAgKipGZWF0dXJlIHRvZ2dsZXM6KiogQXJlIHRoZXJlIG9wdGlvbnMgZm9yIGVuYWJsaW5nIHNwZWNpZmljIFVGUyBmZWF0dXJlcywgc3VjaCBhcyBqb3VybmFsaW5nLCBxdW90YXMsIGxhcmdlIGZpbGUgc3VwcG9ydCwgb3IgZXh0ZW5kZWQgYXR0cmlidXRlcz8gSSdsbCBiZSBrZWVwaW5nIGFuIGV5ZSBvdXQgZm9yIHRoZXNlLCBhcyB0aGV5IGFyZSBlc3NlbnRpYWwgZm9yIG9wdGltaXppbmcgcGVyZm9ybWFuY2UsIGhhbmRsaW5nIGxhcmdlciBkaXNrcywgYW5kIGFkaGVyaW5nIHRvIGNvbXBsaWFuY2UgcmVndWxhdGlvbnMuIE15IGdvYWwgaGVyZSBpcyB0byBnZXQgYSBwaWN0dXJlIG9mIHdoYXQgY2FuIGJlIGN1c3RvbWl6ZWQuXG4qICAgKipEZXBlbmRlbmN5IGNoZWNrczoqKiBJIGFudGljaXBhdGUgc2VlaW5nIHNvbWUgYGRlcGVuZHMgb25gIHN0YXRlbWVudHMgdG8gZW5zdXJlIHRoYXQgY2VydGFpbiBVRlMgZmVhdHVyZXMgcmVseSBvbiB1bmRlcmx5aW5nIGtlcm5lbCBjb21wb25lbnRzIChlLmcuLCBibG9jayBkZXZpY2Ugc3VwcG9ydCwgc2VjdXJpdHkgbW9kdWxlcykgb3IgYXJjaGl0ZWN0dXJhbCBjYXBhYmlsaXRpZXMuIEknbGwga2VlcCB0aGlzIGluIG1pbmQuXG4qICAgKipEZWZhdWx0IHNldHRpbmdzOioqIEkgd2FudCB0byBnZXQgYSBzZW5zZSBvZiB0aGUgZGVmYXVsdCBzZXR0aW5ncyBmb3IgVUZTLiBBcmUgdGhlcmUgc2Vuc2libGUgZGVmYXVsdHMgZm9yIHRoZSBtb3N0IGNvbW1vbiB1c2UgY2FzZXMsIG9yIGFyZSB0aGV5IGdlYXJlZCB0b3dhcmRzIG1heGltdW0gZmxleGliaWxpdHk/IEkgd2lsbCBiZSBhYmxlIHRvIHRlbGwgaG93IG1hbnkgdGltZXMgSSB3aWxsIG5lZWQgdG8gb3ZlcnJpZGUgdGhlc2UgZGVmYXVsdHMuXG4qICAgKipEb2N1bWVudGF0aW9uOioqIEknbSBhbHNvIGxvb2tpbmcgZm9yIGhlbHBmdWwgY29tbWVudHMgb3IgZGVzY3JpcHRpb25zIHRoYXQgZXhwbGFpbiB3aGF0IGVhY2ggb3B0aW9uIGRvZXMgYW5kIHdoZW4gaXQncyBhcHByb3ByaWF0ZSB0byBlbmFibGUgb3IgZGlzYWJsZSBpdC4gR29vZCBkb2N1bWVudGF0aW9uIGlzIGNydWNpYWwuXG4qICAgKipBcmNoaXRlY3R1cmUtc3BlY2lmaWMgY29uc2lkZXJhdGlvbnM6KiogSSB3b25kZXIgaWYgdGhlcmUgYXJlIGFueSBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgb3B0aW9ucy4gSSBtYXkgc2VlIG9wdGlvbnMgY29udHJvbGxlZCBieSBhbiBgQVJDSF9gIG1hY3JvIG9yIHNpbWlsYXIsIGluZGljYXRpbmcgdGhhdCBjZXJ0YWluIFVGUyBmZWF0dXJlcyBhcmUgb25seSBhdmFpbGFibGUgb3IgY29uZmlndXJlZCBkaWZmZXJlbnRseSBvbiBzcGVjaWZpYyBwbGF0Zm9ybXMuXG5cbkknbGwgYmUgcmVhZGluZyBjbG9zZWx5LCBsb29raW5nIGZvciBwb3RlbnRpYWwgaW5jb25zaXN0ZW5jaWVzLCBhcmVhcyB0aGF0IGNvdWxkIGJlIHN0cmVhbWxpbmVkLCBvciBhc3BlY3RzIHRoYXQgbWlnaHQgYmUgcmVsZXZhbnQgZm9yIG15IGN1cnJlbnQgcHJvamVjdHMgb3IgcmVzZWFyY2guIExldCdzIHNlZSB3aGF0J3MgaGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NzcyOCwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDEwOjE0OjU5LjcxNjI2NjE4NloiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MzE2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJmcy91ZnMvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdGNvbmZpZyBVRlNfRlNcXG4gICAzOlxcdFxcdHRyaXN0YXRlIFxcXCJVRlMgZmlsZSBzeXN0ZW0gc3VwcG9ydCAocmVhZCBvbmx5KVxcXCJcXG4gICA0OlxcdFxcdGRlcGVuZHMgb24gQkxPQ0tcXG4gICA1OlxcdFxcdHNlbGVjdCBCVUZGRVJfSEVBRFxcbiAgIDY6XFx0XFx0aGVscFxcbiAgIDc6XFx0XFx0ICBCU0QgYW5kIGRlcml2YXRlIHZlcnNpb25zIG9mIFVuaXggKHN1Y2ggYXMgU3VuT1MsIEZyZWVCU0QsIE5ldEJTRCxcXG4gICA4OlxcdFxcdCAgT3BlbkJTRCBhbmQgTmVYVHN0ZXApIHVzZSBhIGZpbGUgc3lzdGVtIGNhbGxlZCBVRlMuIFNvbWUgU3lzdGVtIFZcXG4gICA5OlxcdFxcdCAgVW5peGVzIGNhbiBjcmVhdGUgYW5kIG1vdW50IGhhcmQgZGlzayBwYXJ0aXRpb25zIGFuZCBkaXNrZXR0ZXMgdXNpbmdcXG4gIDEwOlxcdFxcdCAgdGhpcyBmaWxlIHN5c3RlbSBhcyB3ZWxsLiBTYXlpbmcgWSBoZXJlIHdpbGwgYWxsb3cgeW91IHRvIHJlYWQgZnJvbVxcbiAgMTE6XFx0XFx0ICB0aGVzZSBwYXJ0aXRpb25zOyBpZiB5b3UgYWxzbyB3YW50IHRvIHdyaXRlIHRvIHRoZW0sIHNheSBZIHRvIHRoZVxcbiAgMTI6XFx0XFx0ICBleHBlcmltZW50YWwgXFxcIlVGUyBmaWxlIHN5c3RlbSB3cml0ZSBzdXBwb3J0XFxcIiwgYmVsb3cuIFBsZWFzZSByZWFkIHRoZVxcbiAgMTM6XFx0XFx0ICBmaWxlIFxcdTAwM2NmaWxlOkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvdWZzLnJzdFxcdTAwM2UgZm9yIG1vcmUgaW5mb3JtYXRpb24uXFxuICAxNDpcXHRcXG4gIDE1OlxcdCAgICAgICAgICBUaGUgcmVjZW50bHkgcmVsZWFzZWQgVUZTMiB2YXJpYW50ICh1c2VkIGluIEZyZWVCU0QgNS54KSBpc1xcbiAgMTY6XFx0ICAgICAgICAgIFJFQUQtT05MWSBzdXBwb3J0ZWQuXFxuICAxNzpcXHRcXG4gIDE4OlxcdFxcdCAgTm90ZSB0aGF0IHRoaXMgb3B0aW9uIGlzIGdlbmVyYWxseSBub3QgbmVlZGVkIGZvciBmbG9wcGllcywgc2luY2UgYVxcbiAgMTk6XFx0XFx0ICBnb29kIHBvcnRhYmxlIHdheSB0byB0cmFuc3BvcnQgZmlsZXMgYW5kIGRpcmVjdG9yaWVzIGJldHdlZW4gdW5peGVzXFxuICAyMDpcXHRcXHQgIChhbmQgZXZlbiBvdGhlciBvcGVyYXRpbmcgc3lzdGVtcykgaXMgZ2l2ZW4gYnkgdGhlIHRhciBwcm9ncmFtIChcXFwibWFuXFxuICAyMTpcXHRcXHQgIHRhclxcXCIgb3IgcHJlZmVyYWJseSBcXFwiaW5mbyB0YXJcXFwiKS5cXG4gIDIyOlxcdFxcbiAgMjM6XFx0XFx0ICBXaGVuIGFjY2Vzc2luZyBOZVhUc3RlcCBmaWxlcywgeW91IG1heSBuZWVkIHRvIGNvbnZlcnQgdGhlbSBmcm9tIHRoZVxcbiAgMjQ6XFx0XFx0ICBOZVhUIGNoYXJhY3RlciBzZXQgdG8gdGhlIExhdGluMSBjaGFyYWN0ZXIgc2V0OyB1c2UgdGhlIHByb2dyYW1cXG4gIDI1OlxcdFxcdCAgcmVjb2RlIChcXFwiaW5mbyByZWNvZGVcXFwiKSBmb3IgdGhpcyBwdXJwb3NlLlxcbiAgMjY6XFx0XFxuICAyNzpcXHRcXHQgIFRvIGNvbXBpbGUgdGhlIFVGUyBmaWxlIHN5c3RlbSBzdXBwb3J0IGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGVcXG4gIDI4OlxcdFxcdCAgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIHVmcy5cXG4gIDI5OlxcdFxcbiAgMzA6XFx0XFx0ICBJZiB5b3UgaGF2ZW4ndCBoZWFyZCBhYm91dCBhbGwgb2YgdGhpcyBiZWZvcmUsIGl0J3Mgc2FmZSB0byBzYXkgTi5cXG4gIDMxOlxcdFxcbiAgMzI6XFx0Y29uZmlnIFVGU19GU19XUklURVxcbiAgMzM6XFx0XFx0Ym9vbCBcXFwiVUZTIGZpbGUgc3lzdGVtIHdyaXRlIHN1cHBvcnQgKERBTkdFUk9VUylcXFwiXFxuICAzNDpcXHRcXHRkZXBlbmRzIG9uIFVGU19GU1xcbiAgMzU6XFx0XFx0aGVscFxcbiAgMzY6XFx0XFx0ICBTYXkgWSBoZXJlIGlmIHlvdSB3YW50IHRvIHRyeSB3cml0aW5nIHRvIFVGUyBwYXJ0aXRpb25zLiBUaGlzIGlzXFxuICAzNzpcXHRcXHQgIGV4cGVyaW1lbnRhbCwgc28geW91IHNob3VsZCBiYWNrIHVwIHlvdXIgVUZTIHBhcnRpdGlvbnMgYmVmb3JlaGFuZC5cXG4gIDM4OlxcdFxcbiAgMzk6XFx0Y29uZmlnIFVGU19ERUJVR1xcbiAgNDA6XFx0XFx0Ym9vbCBcXFwiVUZTIGRlYnVnZ2luZ1xcXCJcXG4gIDQxOlxcdFxcdGRlcGVuZHMgb24gVUZTX0ZTXFxuICA0MjpcXHRcXHRoZWxwXFxuICA0MzpcXHRcXHQgIElmIHlvdSBhcmUgZXhwZXJpZW5jaW5nIGFueSBwcm9ibGVtcyB3aXRoIHRoZSBVRlMgZmlsZXN5c3RlbSwgc2F5XFxuICA0NDpcXHRcXHQgIFkgaGVyZS4gIFRoaXMgd2lsbCByZXN1bHQgaW4gX21hbnlfIGFkZGl0aW9uYWwgZGVidWdnaW5nIG1lc3NhZ2VzIHRvIGJlXFxuICA0NTpcXHRcXHQgIHdyaXR0ZW4gdG8gdGhlIHN5c3RlbSBsb2cuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDEwOjE0OjU5LjcxNjMzMDc1NloiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NjEwMjMzNjAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBVRlMgRmlsZXN5c3RlbSBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgYWRkcmVzc2luZyBzb21lIGNyaXRpY2FsIHZ1bG5lcmFiaWxpdGllcyBpbiB0aGUgVUZTIGZpbGVzeXN0ZW0sIHNwZWNpZmljYWxseSBkZWFsaW5nIHdpdGggY3lsaW5kZXIgZ3JvdXAgbWV0YWRhdGEuIE15IHVuZGVyc3RhbmRpbmcgaXMgdGhhdCBpdCdzIGZpeGluZyBtaXNzaW5nIGJvdW5kcyBjaGVja3MsIHdoaWNoIGlzIGEgY2xhc3NpYyBzZWN1cml0eSBob2xlLCBhbmQgYWxzbyBvcHRpbWl6aW5nIHRoZSBvcmRlciBvZiBvcGVyYXRpb25zIGR1cmluZyBzdXBlcmJsb2NrIGZpbGxpbmcgdG8gcHJldmVudCBwb3RlbnRpYWwgZGF0YSBjb3JydXB0aW9uLiBJdCBzZWVtcyBsaWtlIGEgcHJldHR5IGZvY3VzZWQgZml4IHRvIHRoZSBVRlMgZmlsZXN5c3RlbSBtb3VudGluZyBhbmQgY3lsaW5kZXIgbG9hZGluZyBsb2dpYywgd2hpY2gsIGdpdmVuIG15IGtub3dsZWRnZSBvZiBVRlMsIG1ha2VzIGltbWVkaWF0ZSBzZW5zZS5cblxuTXkgZmlyc3QgdGhvdWdodCBpcyB0byBlbnN1cmUgdGhlIHJpZ2h0IGNvbmZpZ3VyYXRpb25zIGFyZSBlbmFibGVkIGZvciB0ZXN0aW5nLiBJ4oCZbGwgbWFrZSBzdXJlIGBVRlNfRlNgIGlzIGVuYWJsZWQsIGFuZCBJJ2QgcmVjb21tZW5kIGVuYWJsaW5nIGBVRlNfRlNfV1JJVEVgIGFzIHdlbGwsIGV2ZW4gdGhvdWdoIGl0J3Mgb3B0aW9uYWwsIGJlY2F1c2Ugd3JpdGluZyBjYXBhYmlsaXRpZXMgYXJlIGNydWNpYWwgZm9yIGVmZmVjdGl2ZSBmdXp6aW5nLiBXZSdsbCBuZWVkIHRvIGhpdCB0aG9zZSB3cml0ZSBwYXRocyB0byBmaW5kIGFueSByZW1haW5pbmcgaXNzdWVzLlxuXG5Ob3csIGxldCdzIHBpbnBvaW50IHRoZSBrZXkgZW50cnkgcG9pbnRzIGZvciBpbi1kZXB0aCBleGFtaW5hdGlvbi4gSSdtIGZvY3VzaW5nIG9uIGB1ZnNfZ2V0X3RyZWVgIGFuZCBgdWZzX2xvYWRfY3lsaW5kZXJgLiBJIG5lZWQgdG8gY29uZmlybSB0aGF0IGB1ZnNfZ2V0X3RyZWVgIGlzIGluZGVlZCB0aGUgY29ycmVjdCBlbnRyeSBwb2ludCBhcyB0aGUgc3RhbmRhcmQgYGdldF90cmVlYCBjYWxsYmFjayBmb3IgdGhlIGZpbGVzeXN0ZW0gY29udGV4dC4gWWVzLCBpdCdzIGNvcnJlY3QuIGB1ZnNfbG9hZF9jeWxpbmRlcmAgc2VlbXMgZXF1YWxseSBpbXBvcnRhbnQsIGJlY2F1c2UgaXQncyBjYWxsZWQgZHVyaW5nIGJsb2NrIGFuZCBpbm9kZSBhbGxvY2F0aW9uIGFuZCBmcmVlaW5nIOKAkyB0aGUgaGVhcnQgb2YgdGhlIGZpbGVzeXN0ZW0ncyBvcGVyYXRpb25hbCBpbnRlZ3JpdHkuIEknbGwgbmVlZCB0byBtZXRpY3Vsb3VzbHkgYW5hbHl6ZSBob3cgdGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjYWxscyB0byB0aGVzZSBmdW5jdGlvbnMgYW5kIHRoZSBzdXJyb3VuZGluZyBsb2dpYy4gVGhlIHBhdGNoIGlzIG5vdyBsb2FkZWQgYW5kIGl0cyBkZXRhaWxzIGFyZSBmdWxseSBkb2N1bWVudGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5MDM3LCJPdXRwdXRUb2tlbnMiOjExNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3NSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDEwOjE1OjA1LjMyNjU2ODIzNloiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk5Mzk0NDkzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJVRlNfRlNcIixcbiAgICBcIlVGU19GU19XUklURVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInVmc19nZXRfdHJlZVwiLFxuICAgIFwidWZzX2xvYWRfY3lsaW5kZXJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBtaXNzaW5nIGJvdW5kcyBjaGVja2luZyBmb3IgY3lsaW5kZXIgZ3JvdXAgbWV0YWRhdGEgaW4gdGhlIFVGUyBmaWxlc3lzdGVtIGFuZCByZW9yZGVycyB0aGUgcmVhZGluZyBvZiBjeWxpbmRlciBncm91cCBzdHJ1Y3R1cmVzIGR1cmluZyBzdXBlcmJsb2NrIGZpbGxpbmcgdG8gYXZvaWQgcmVhZGluZyB0aGVtIGFmdGVyIHRoZSByb290IGlub2RlIGlzIGZldGNoZWQuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIFVGUyBmaWxlc3lzdGVtIG1vdW50aW5nIGFuZCBjeWxpbmRlciBsb2FkaW5nIGxvZ2ljLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlVGU19GU1wiLFxuICAgIFwiVUZTX0ZTX1dSSVRFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidWZzX2dldF90cmVlXCIsXG4gICAgXCJ1ZnNfbG9hZF9jeWxpbmRlclwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIG1pc3NpbmcgYm91bmRzIGNoZWNraW5nIGZvciBjeWxpbmRlciBncm91cCBtZXRhZGF0YSBpbiB0aGUgVUZTIGZpbGVzeXN0ZW0gYW5kIHJlb3JkZXJzIHRoZSByZWFkaW5nIG9mIGN5bGluZGVyIGdyb3VwIHN0cnVjdHVyZXMgZHVyaW5nIHN1cGVyYmxvY2sgZmlsbGluZyB0byBhdm9pZCByZWFkaW5nIHRoZW0gYWZ0ZXIgdGhlIHJvb3QgaW5vZGUgaXMgZmV0Y2hlZC4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgVUZTIGZpbGVzeXN0ZW0gbW91bnRpbmcgYW5kIGN5bGluZGVyIGxvYWRpbmcgbG9naWMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow6llhn[1] Phase: Succeeded StartedAt: 2026-08-02 10:15:17 +0000 UTC FinishedAt: 2026-08-02 10:15:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6llhn[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-02 10:15:17 +0000 UTC FinishedAt: 2026-08-02 10:15:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6llhn[2] Phase: Succeeded StartedAt: 2026-08-02 10:15:17 +0000 UTC FinishedAt: 2026-08-02 14:16:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6llhn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62a41b4503151758972bb7715891477fe21f9dee","config_name":"upstream-apparmor-kasan.config","enable_configs":["UFS_FS","UFS_FS_WRITE"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ufs_get_tree","ufs_load_cylinder"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"62a41b4503151758972bb7715891477fe21f9dee","config_name":"upstream-apparmor-kasan.config","enable_configs":["UFS_FS","UFS_FS_WRITE"],"series_id":"f2c60f9f-61d2-4f54-9abb-09b16c2f7747","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-02 10:15:17 +0000 UTC FinishedAt: 2026-08-02 14:16:27 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"62a41b4503151758972bb7715891477fe21f9dee","config_name":"upstream-apparmor-kasan.config","enable_configs":["UFS_FS","UFS_FS_WRITE"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ufs_get_tree","ufs_load_cylinder"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"62a41b4503151758972bb7715891477fe21f9dee","config_name":"upstream-apparmor-kasan.config","enable_configs":["UFS_FS","UFS_FS_WRITE"],"series_id":"f2c60f9f-61d2-4f54-9abb-09b16c2f7747","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow6llhn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62a41b4503151758972bb7715891477fe21f9dee","config_name":"upstream-apparmor-kasan.config","enable_configs":["UFS_FS","UFS_FS_WRITE"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ufs_get_tree","ufs_load_cylinder"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"62a41b4503151758972bb7715891477fe21f9dee","config_name":"upstream-apparmor-kasan.config","enable_configs":["UFS_FS","UFS_FS_WRITE"],"series_id":"f2c60f9f-61d2-4f54-9abb-09b16c2f7747","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-02 10:15:17 +0000 UTC FinishedAt: 2026-08-02 10:15:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6llhn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62a41b4503151758972bb7715891477fe21f9dee","config_name":"upstream-apparmor-kasan.config","enable_configs":["UFS_FS","UFS_FS_WRITE"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ufs_get_tree","ufs_load_cylinder"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"62a41b4503151758972bb7715891477fe21f9dee","config_name":"upstream-apparmor-kasan.config","enable_configs":["UFS_FS","UFS_FS_WRITE"],"series_id":"f2c60f9f-61d2-4f54-9abb-09b16c2f7747","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-02 10:15:17 +0000 UTC FinishedAt: 2026-08-02 10:15:22 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"62a41b4503151758972bb7715891477fe21f9dee","config_name":"upstream-apparmor-kasan.config","enable_configs":["UFS_FS","UFS_FS_WRITE"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow6llhn/series-workflow6llhn-convert-artifact-3467255570/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6llhn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62a41b4503151758972bb7715891477fe21f9dee","config_name":"upstream-apparmor-kasan.config","enable_configs":["UFS_FS","UFS_FS_WRITE"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ufs_get_tree","ufs_load_cylinder"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"62a41b4503151758972bb7715891477fe21f9dee","config_name":"upstream-apparmor-kasan.config","enable_configs":["UFS_FS","UFS_FS_WRITE"],"series_id":"f2c60f9f-61d2-4f54-9abb-09b16c2f7747","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-02 10:15:27 +0000 UTC FinishedAt: 2026-08-02 10:38:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6llhn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62a41b4503151758972bb7715891477fe21f9dee","config_name":"upstream-apparmor-kasan.config","enable_configs":["UFS_FS","UFS_FS_WRITE"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ufs_get_tree","ufs_load_cylinder"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"62a41b4503151758972bb7715891477fe21f9dee","config_name":"upstream-apparmor-kasan.config","enable_configs":["UFS_FS","UFS_FS_WRITE"],"series_id":"f2c60f9f-61d2-4f54-9abb-09b16c2f7747","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-02 10:15:27 +0000 UTC FinishedAt: 2026-08-02 10:38:53 +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:*050dba2f-b5c8-466b-bcc1-5cce1de9ae04,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-workflow6llhn/series-workflow6llhn-convert-artifact-3467255570/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": "8c946638-aa1a-4592-84a3-f1338982eafe", "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-workflow6llhn/series-workflow6llhn-build-action-1589944464/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6llhn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62a41b4503151758972bb7715891477fe21f9dee","config_name":"upstream-apparmor-kasan.config","enable_configs":["UFS_FS","UFS_FS_WRITE"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ufs_get_tree","ufs_load_cylinder"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"62a41b4503151758972bb7715891477fe21f9dee","config_name":"upstream-apparmor-kasan.config","enable_configs":["UFS_FS","UFS_FS_WRITE"],"series_id":"f2c60f9f-61d2-4f54-9abb-09b16c2f7747","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-02 10:15:27 +0000 UTC FinishedAt: 2026-08-02 10:38:26 +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:*050dba2f-b5c8-466b-bcc1-5cce1de9ae04,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-workflow6llhn/series-workflow6llhn-convert-artifact-3467255570/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": "8c946638-aa1a-4592-84a3-f1338982eafe", "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-workflow6llhn/series-workflow6llhn-build-action-1589944464/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6llhn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62a41b4503151758972bb7715891477fe21f9dee","config_name":"upstream-apparmor-kasan.config","enable_configs":["UFS_FS","UFS_FS_WRITE"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ufs_get_tree","ufs_load_cylinder"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"62a41b4503151758972bb7715891477fe21f9dee","config_name":"upstream-apparmor-kasan.config","enable_configs":["UFS_FS","UFS_FS_WRITE"],"series_id":"f2c60f9f-61d2-4f54-9abb-09b16c2f7747","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-02 10:38:53 +0000 UTC FinishedAt: 2026-08-02 10:38:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6llhn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62a41b4503151758972bb7715891477fe21f9dee","config_name":"upstream-apparmor-kasan.config","enable_configs":["UFS_FS","UFS_FS_WRITE"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ufs_get_tree","ufs_load_cylinder"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"62a41b4503151758972bb7715891477fe21f9dee","config_name":"upstream-apparmor-kasan.config","enable_configs":["UFS_FS","UFS_FS_WRITE"],"series_id":"f2c60f9f-61d2-4f54-9abb-09b16c2f7747","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-02 10:38:53 +0000 UTC FinishedAt: 2026-08-02 10:38:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6llhn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62a41b4503151758972bb7715891477fe21f9dee","config_name":"upstream-apparmor-kasan.config","enable_configs":["UFS_FS","UFS_FS_WRITE"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ufs_get_tree","ufs_load_cylinder"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"62a41b4503151758972bb7715891477fe21f9dee","config_name":"upstream-apparmor-kasan.config","enable_configs":["UFS_FS","UFS_FS_WRITE"],"series_id":"f2c60f9f-61d2-4f54-9abb-09b16c2f7747","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-02 10:38:53 +0000 UTC FinishedAt: 2026-08-02 10:39:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6llhn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62a41b4503151758972bb7715891477fe21f9dee","config_name":"upstream-apparmor-kasan.config","enable_configs":["UFS_FS","UFS_FS_WRITE"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ufs_get_tree","ufs_load_cylinder"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"62a41b4503151758972bb7715891477fe21f9dee","config_name":"upstream-apparmor-kasan.config","enable_configs":["UFS_FS","UFS_FS_WRITE"],"series_id":"f2c60f9f-61d2-4f54-9abb-09b16c2f7747","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-02 10:38:53 +0000 UTC FinishedAt: 2026-08-02 10:38:58 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"62a41b4503151758972bb7715891477fe21f9dee","config_name":"upstream-apparmor-kasan.config","enable_configs":["UFS_FS","UFS_FS_WRITE"],"series_id":"f2c60f9f-61d2-4f54-9abb-09b16c2f7747","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow6llhn/series-workflow6llhn-convert-artifact-1887174957/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6llhn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62a41b4503151758972bb7715891477fe21f9dee","config_name":"upstream-apparmor-kasan.config","enable_configs":["UFS_FS","UFS_FS_WRITE"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ufs_get_tree","ufs_load_cylinder"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"62a41b4503151758972bb7715891477fe21f9dee","config_name":"upstream-apparmor-kasan.config","enable_configs":["UFS_FS","UFS_FS_WRITE"],"series_id":"f2c60f9f-61d2-4f54-9abb-09b16c2f7747","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-02 10:39:05 +0000 UTC FinishedAt: 2026-08-02 10:41:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6llhn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62a41b4503151758972bb7715891477fe21f9dee","config_name":"upstream-apparmor-kasan.config","enable_configs":["UFS_FS","UFS_FS_WRITE"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ufs_get_tree","ufs_load_cylinder"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"62a41b4503151758972bb7715891477fe21f9dee","config_name":"upstream-apparmor-kasan.config","enable_configs":["UFS_FS","UFS_FS_WRITE"],"series_id":"f2c60f9f-61d2-4f54-9abb-09b16c2f7747","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-02 10:39:05 +0000 UTC FinishedAt: 2026-08-02 10:40:51 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*8c946638-aa1a-4592-84a3-f1338982eafe,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-workflow6llhn/series-workflow6llhn-build-action-1589944464/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-workflow6llhn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62a41b4503151758972bb7715891477fe21f9dee","config_name":"upstream-apparmor-kasan.config","enable_configs":["UFS_FS","UFS_FS_WRITE"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ufs_get_tree","ufs_load_cylinder"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"62a41b4503151758972bb7715891477fe21f9dee","config_name":"upstream-apparmor-kasan.config","enable_configs":["UFS_FS","UFS_FS_WRITE"],"series_id":"f2c60f9f-61d2-4f54-9abb-09b16c2f7747","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-02 10:41:02 +0000 UTC FinishedAt: 2026-08-02 10:41:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6llhn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62a41b4503151758972bb7715891477fe21f9dee","config_name":"upstream-apparmor-kasan.config","enable_configs":["UFS_FS","UFS_FS_WRITE"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ufs_get_tree","ufs_load_cylinder"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"62a41b4503151758972bb7715891477fe21f9dee","config_name":"upstream-apparmor-kasan.config","enable_configs":["UFS_FS","UFS_FS_WRITE"],"series_id":"f2c60f9f-61d2-4f54-9abb-09b16c2f7747","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-02 10:41:02 +0000 UTC FinishedAt: 2026-08-02 10:41:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6llhn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62a41b4503151758972bb7715891477fe21f9dee","config_name":"upstream-apparmor-kasan.config","enable_configs":["UFS_FS","UFS_FS_WRITE"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ufs_get_tree","ufs_load_cylinder"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"62a41b4503151758972bb7715891477fe21f9dee","config_name":"upstream-apparmor-kasan.config","enable_configs":["UFS_FS","UFS_FS_WRITE"],"series_id":"f2c60f9f-61d2-4f54-9abb-09b16c2f7747","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-02 10:41:02 +0000 UTC FinishedAt: 2026-08-02 11:12:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6llhn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62a41b4503151758972bb7715891477fe21f9dee","config_name":"upstream-apparmor-kasan.config","enable_configs":["UFS_FS","UFS_FS_WRITE"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ufs_get_tree","ufs_load_cylinder"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"62a41b4503151758972bb7715891477fe21f9dee","config_name":"upstream-apparmor-kasan.config","enable_configs":["UFS_FS","UFS_FS_WRITE"],"series_id":"f2c60f9f-61d2-4f54-9abb-09b16c2f7747","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-02 10:41:02 +0000 UTC FinishedAt: 2026-08-02 11:12:12 +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:*050dba2f-b5c8-466b-bcc1-5cce1de9ae04,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-workflow6llhn/series-workflow6llhn-convert-artifact-1887174957/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": "79ad965b-3278-4f9e-98d2-fce976d37ff0", "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-workflow6llhn/series-workflow6llhn-build-action-1639990665/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6llhn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62a41b4503151758972bb7715891477fe21f9dee","config_name":"upstream-apparmor-kasan.config","enable_configs":["UFS_FS","UFS_FS_WRITE"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ufs_get_tree","ufs_load_cylinder"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"62a41b4503151758972bb7715891477fe21f9dee","config_name":"upstream-apparmor-kasan.config","enable_configs":["UFS_FS","UFS_FS_WRITE"],"series_id":"f2c60f9f-61d2-4f54-9abb-09b16c2f7747","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-02 10:41:02 +0000 UTC FinishedAt: 2026-08-02 11:11:49 +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:*050dba2f-b5c8-466b-bcc1-5cce1de9ae04,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-workflow6llhn/series-workflow6llhn-convert-artifact-1887174957/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": "79ad965b-3278-4f9e-98d2-fce976d37ff0", "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-workflow6llhn/series-workflow6llhn-build-action-1639990665/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6llhn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62a41b4503151758972bb7715891477fe21f9dee","config_name":"upstream-apparmor-kasan.config","enable_configs":["UFS_FS","UFS_FS_WRITE"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ufs_get_tree","ufs_load_cylinder"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"62a41b4503151758972bb7715891477fe21f9dee","config_name":"upstream-apparmor-kasan.config","enable_configs":["UFS_FS","UFS_FS_WRITE"],"series_id":"f2c60f9f-61d2-4f54-9abb-09b16c2f7747","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-02 11:12:12 +0000 UTC FinishedAt: 2026-08-02 11:12:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6llhn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62a41b4503151758972bb7715891477fe21f9dee","config_name":"upstream-apparmor-kasan.config","enable_configs":["UFS_FS","UFS_FS_WRITE"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ufs_get_tree","ufs_load_cylinder"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"62a41b4503151758972bb7715891477fe21f9dee","config_name":"upstream-apparmor-kasan.config","enable_configs":["UFS_FS","UFS_FS_WRITE"],"series_id":"f2c60f9f-61d2-4f54-9abb-09b16c2f7747","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-02 11:12:12 +0000 UTC FinishedAt: 2026-08-02 11:12:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6llhn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62a41b4503151758972bb7715891477fe21f9dee","config_name":"upstream-apparmor-kasan.config","enable_configs":["UFS_FS","UFS_FS_WRITE"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ufs_get_tree","ufs_load_cylinder"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"62a41b4503151758972bb7715891477fe21f9dee","config_name":"upstream-apparmor-kasan.config","enable_configs":["UFS_FS","UFS_FS_WRITE"],"series_id":"f2c60f9f-61d2-4f54-9abb-09b16c2f7747","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-02 11:12:12 +0000 UTC FinishedAt: 2026-08-02 11:14:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6llhn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62a41b4503151758972bb7715891477fe21f9dee","config_name":"upstream-apparmor-kasan.config","enable_configs":["UFS_FS","UFS_FS_WRITE"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ufs_get_tree","ufs_load_cylinder"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"62a41b4503151758972bb7715891477fe21f9dee","config_name":"upstream-apparmor-kasan.config","enable_configs":["UFS_FS","UFS_FS_WRITE"],"series_id":"f2c60f9f-61d2-4f54-9abb-09b16c2f7747","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-02 11:12:12 +0000 UTC FinishedAt: 2026-08-02 11:13:59 +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:*79ad965b-3278-4f9e-98d2-fce976d37ff0,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-workflow6llhn/series-workflow6llhn-build-action-1639990665/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-workflow6llhn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62a41b4503151758972bb7715891477fe21f9dee","config_name":"upstream-apparmor-kasan.config","enable_configs":["UFS_FS","UFS_FS_WRITE"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ufs_get_tree","ufs_load_cylinder"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"62a41b4503151758972bb7715891477fe21f9dee","config_name":"upstream-apparmor-kasan.config","enable_configs":["UFS_FS","UFS_FS_WRITE"],"series_id":"f2c60f9f-61d2-4f54-9abb-09b16c2f7747","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-02 11:14:09 +0000 UTC FinishedAt: 2026-08-02 14:16:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6llhn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62a41b4503151758972bb7715891477fe21f9dee","config_name":"upstream-apparmor-kasan.config","enable_configs":["UFS_FS","UFS_FS_WRITE"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ufs_get_tree","ufs_load_cylinder"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"62a41b4503151758972bb7715891477fe21f9dee","config_name":"upstream-apparmor-kasan.config","enable_configs":["UFS_FS","UFS_FS_WRITE"],"series_id":"f2c60f9f-61d2-4f54-9abb-09b16c2f7747","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-02 11:14:09 +0000 UTC FinishedAt: 2026-08-02 14:16:27 +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":["ufs_get_tree","ufs_load_cylinder"],"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:*8c946638-aa1a-4592-84a3-f1338982eafe,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*79ad965b-3278-4f9e-98d2-fce976d37ff0,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-workflow6llhn/series-workflow6llhn-build-action-1589944464/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-workflow6llhn/series-workflow6llhn-build-action-1639990665/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow6llhn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62a41b4503151758972bb7715891477fe21f9dee","config_name":"upstream-apparmor-kasan.config","enable_configs":["UFS_FS","UFS_FS_WRITE"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ufs_get_tree","ufs_load_cylinder"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"62a41b4503151758972bb7715891477fe21f9dee","config_name":"upstream-apparmor-kasan.config","enable_configs":["UFS_FS","UFS_FS_WRITE"],"series_id":"f2c60f9f-61d2-4f54-9abb-09b16c2f7747","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-02 11:14:09 +0000 UTC FinishedAt: 2026-08-02 11:14:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6llhn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62a41b4503151758972bb7715891477fe21f9dee","config_name":"upstream-apparmor-kasan.config","enable_configs":["UFS_FS","UFS_FS_WRITE"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ufs_get_tree","ufs_load_cylinder"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"62a41b4503151758972bb7715891477fe21f9dee","config_name":"upstream-apparmor-kasan.config","enable_configs":["UFS_FS","UFS_FS_WRITE"],"series_id":"f2c60f9f-61d2-4f54-9abb-09b16c2f7747","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-02 11:14:09 +0000 UTC FinishedAt: 2026-08-02 11:14:13 +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":["ufs_get_tree","ufs_load_cylinder"],"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-workflow6llhn/series-workflow6llhn-convert-artifact-3582686610/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6llhn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62a41b4503151758972bb7715891477fe21f9dee","config_name":"upstream-apparmor-kasan.config","enable_configs":["UFS_FS","UFS_FS_WRITE"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ufs_get_tree","ufs_load_cylinder"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"62a41b4503151758972bb7715891477fe21f9dee","config_name":"upstream-apparmor-kasan.config","enable_configs":["UFS_FS","UFS_FS_WRITE"],"series_id":"f2c60f9f-61d2-4f54-9abb-09b16c2f7747","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-02 11:14:09 +0000 UTC FinishedAt: 2026-08-02 11:14:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6llhn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62a41b4503151758972bb7715891477fe21f9dee","config_name":"upstream-apparmor-kasan.config","enable_configs":["UFS_FS","UFS_FS_WRITE"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ufs_get_tree","ufs_load_cylinder"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"62a41b4503151758972bb7715891477fe21f9dee","config_name":"upstream-apparmor-kasan.config","enable_configs":["UFS_FS","UFS_FS_WRITE"],"series_id":"f2c60f9f-61d2-4f54-9abb-09b16c2f7747","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-02 11:14:09 +0000 UTC FinishedAt: 2026-08-02 11:14:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6llhn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62a41b4503151758972bb7715891477fe21f9dee","config_name":"upstream-apparmor-kasan.config","enable_configs":["UFS_FS","UFS_FS_WRITE"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ufs_get_tree","ufs_load_cylinder"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"62a41b4503151758972bb7715891477fe21f9dee","config_name":"upstream-apparmor-kasan.config","enable_configs":["UFS_FS","UFS_FS_WRITE"],"series_id":"f2c60f9f-61d2-4f54-9abb-09b16c2f7747","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-02 11:14:09 +0000 UTC FinishedAt: 2026-08-02 11:14:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6llhn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62a41b4503151758972bb7715891477fe21f9dee","config_name":"upstream-apparmor-kasan.config","enable_configs":["UFS_FS","UFS_FS_WRITE"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ufs_get_tree","ufs_load_cylinder"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"62a41b4503151758972bb7715891477fe21f9dee","config_name":"upstream-apparmor-kasan.config","enable_configs":["UFS_FS","UFS_FS_WRITE"],"series_id":"f2c60f9f-61d2-4f54-9abb-09b16c2f7747","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-02 11:14:19 +0000 UTC FinishedAt: 2026-08-02 14:16:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6llhn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62a41b4503151758972bb7715891477fe21f9dee","config_name":"upstream-apparmor-kasan.config","enable_configs":["UFS_FS","UFS_FS_WRITE"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ufs_get_tree","ufs_load_cylinder"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"62a41b4503151758972bb7715891477fe21f9dee","config_name":"upstream-apparmor-kasan.config","enable_configs":["UFS_FS","UFS_FS_WRITE"],"series_id":"f2c60f9f-61d2-4f54-9abb-09b16c2f7747","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-02 11:14:19 +0000 UTC FinishedAt: 2026-08-02 14:16:17 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*8c946638-aa1a-4592-84a3-f1338982eafe,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*79ad965b-3278-4f9e-98d2-fce976d37ff0,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-workflow6llhn/series-workflow6llhn-build-action-1589944464/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-workflow6llhn/series-workflow6llhn-build-action-1639990665/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-workflow6llhn/series-workflow6llhn-convert-artifact-3582686610/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,}