Name: series-workflowtb5dc Phase: Succeeded StartedAt: 2026-07-18 04:36:12 +0000 UTC FinishedAt: 2026-07-18 09:36:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtb5dc[0] Phase: Succeeded StartedAt: 2026-07-18 04:36:12 +0000 UTC FinishedAt: 2026-07-18 05:11:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtb5dc[0].run-triage Phase: Succeeded StartedAt: 2026-07-18 04:36:12 +0000 UTC FinishedAt: 2026-07-18 05:11:27 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "cdf364ca2496d44343e72043457ebac92e1458ba", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "PAGE_TABLE_CHECK", "PAGE_TABLE_CHECK_ENFORCED" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "cdf364ca2496d44343e72043457ebac92e1458ba", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "PAGE_TABLE_CHECK", "PAGE_TABLE_CHECK_ENFORCED" ], "series_id": "9f11e0c5-e273-4d5a-a981-d06ac4560bb5" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "__page_table_check_pte_clear", "__page_table_check_pmd_clear", "__page_table_check_pud_clear", "__page_table_check_ptes_set", "__page_table_check_pmds_set", "__page_table_check_puds_set", "__page_table_check_zero" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": true, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE4IDA1OjEwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1BBR0VfVEFCTEVfQ0hFQ0smIzM0OywKICAgICYjMzQ7UEFHRV9UQUJMRV9DSEVDS19FTkZPUkNFRCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O19fcGFnZV90YWJsZV9jaGVja19wdGVfY2xlYXImIzM0OywKICAgICYjMzQ7X19wYWdlX3RhYmxlX2NoZWNrX3BtZF9jbGVhciYjMzQ7LAogICAgJiMzNDtfX3BhZ2VfdGFibGVfY2hlY2tfcHVkX2NsZWFyJiMzNDssCiAgICAmIzM0O19fcGFnZV90YWJsZV9jaGVja19wdGVzX3NldCYjMzQ7LAogICAgJiMzNDtfX3BhZ2VfdGFibGVfY2hlY2tfcG1kc19zZXQmIzM0OywKICAgICYjMzQ7X19wYWdlX3RhYmxlX2NoZWNrX3B1ZHNfc2V0JiMzNDssCiAgICAmIzM0O19fcGFnZV90YWJsZV9jaGVja196ZXJvJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGNoYW5nZXMgdGhlIHR5cGUgb2YgYW5vbl9tYXBfY291bnQgYW5kIGZpbGVfbWFwX2NvdW50IGluIHN0cnVjdCBwYWdlX3RhYmxlX2NoZWNrIGZyb20gYXRvbWljX3QgdG8gYXRvbWljNjRfdCB0byBwcmV2ZW50IHBvdGVudGlhbCBvdmVyZmxvd3MuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgcGFnZSB0YWJsZSBjaGVjayBsb2dpYywgd2hpY2ggY2FuIGJlIHJlYWNoZWQgZHVyaW5nIHBhZ2UgdGFibGUgbW9kaWZpY2F0aW9ucyAoZS5nLiwgbW1hcCwgbXVubWFwKS4gRnV6emluZyBpcyBuZWVkZWQgdG8gZW5zdXJlIHRoZSA2NC1iaXQgYXRvbWljIG9wZXJhdGlvbnMgd29yayBjb3JyZWN0bHkgYW5kIGRvIG5vdCBpbnRyb2R1Y2UgcmVncmVzc2lvbnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTggMDU6MTA8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA1YThjYzg5NWZmMmY5YjdjMzM0NGU1NDkwNDIyNWU4MjY1MWY0ZTNkXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBKdWwgMTggMDU6MTA6MTUgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbW0vcGFnZV90YWJsZV9jaGVjay5jIGIvbW0vcGFnZV90YWJsZV9jaGVjay5jXG5pbmRleCA1M2E4OTk3ZWMwNDNlYS4uZWRkOWQ5ZWRmNmZjZWUgMTAwNjQ0XG4tLS0gYS9tbS9wYWdlX3RhYmxlX2NoZWNrLmNcbiYjNDM7JiM0MzsmIzQzOyBiL21tL3BhZ2VfdGFibGVfY2hlY2suY1xuQEAgLTE0LDggJiM0MzsxNCw4IEBAXG4gI2RlZmluZSBwcl9mbXQoZm10KVx0XCYjMzQ7cGFnZV90YWJsZV9jaGVjazogXCYjMzQ7IGZtdFxuIFxuIHN0cnVjdCBwYWdlX3RhYmxlX2NoZWNrIHtcbi1cdGF0b21pY190IGFub25fbWFwX2NvdW50O1xuLVx0YXRvbWljX3QgZmlsZV9tYXBfY291bnQ7XG4mIzQzO1x0YXRvbWljNjRfdCBhbm9uX21hcF9jb3VudDtcbiYjNDM7XHRhdG9taWM2NF90IGZpbGVfbWFwX2NvdW50O1xuIH07XG4gXG4gc3RhdGljIGJvb2wgX19wYWdlX3RhYmxlX2NoZWNrX2VuYWJsZWQgX19pbml0ZGF0YSA9XG5AQCAtNzksMTEgJiM0Mzs3OSwxMSBAQCBzdGF0aWMgdm9pZCBwYWdlX3RhYmxlX2NoZWNrX2NsZWFyKHVuc2lnbmVkIGxvbmcgcGZuLCB1bnNpZ25lZCBsb25nIHBnY250KVxuIFx0XHRzdHJ1Y3QgcGFnZV90YWJsZV9jaGVjayAqcHRjID0gZ2V0X3BhZ2VfdGFibGVfY2hlY2socGFnZV9leHQpO1xuIFxuIFx0XHRpZiAoYW5vbikge1xuLVx0XHRcdEJVR19PTihhdG9taWNfcmVhZChcdTAwMjZwdGMtXHUwMDNlZmlsZV9tYXBfY291bnQpKTtcbi1cdFx0XHRCVUdfT04oYXRvbWljX2RlY19yZXR1cm4oXHUwMDI2cHRjLVx1MDAzZWFub25fbWFwX2NvdW50KSBcdTAwM2MgMCk7XG4mIzQzO1x0XHRcdEJVR19PTihhdG9taWM2NF9yZWFkKFx1MDAyNnB0Yy1cdTAwM2VmaWxlX21hcF9jb3VudCkpO1xuJiM0MztcdFx0XHRCVUdfT04oYXRvbWljNjRfZGVjX3JldHVybihcdTAwMjZwdGMtXHUwMDNlYW5vbl9tYXBfY291bnQpIFx1MDAzYyAwKTtcbiBcdFx0fSBlbHNlIHtcbi1cdFx0XHRCVUdfT04oYXRvbWljX3JlYWQoXHUwMDI2cHRjLVx1MDAzZWFub25fbWFwX2NvdW50KSk7XG4tXHRcdFx0QlVHX09OKGF0b21pY19kZWNfcmV0dXJuKFx1MDAyNnB0Yy1cdTAwM2VmaWxlX21hcF9jb3VudCkgXHUwMDNjIDApO1xuJiM0MztcdFx0XHRCVUdfT04oYXRvbWljNjRfcmVhZChcdTAwMjZwdGMtXHUwMDNlYW5vbl9tYXBfY291bnQpKTtcbiYjNDM7XHRcdFx0QlVHX09OKGF0b21pYzY0X2RlY19yZXR1cm4oXHUwMDI2cHRjLVx1MDAzZWZpbGVfbWFwX2NvdW50KSBcdTAwM2MgMCk7XG4gXHRcdH1cbiBcdH1cbiBcdHJjdV9yZWFkX3VubG9jaygpO1xuQEAgLTExNCwxMSAmIzQzOzExNCwxMSBAQCBzdGF0aWMgdm9pZCBwYWdlX3RhYmxlX2NoZWNrX3NldCh1bnNpZ25lZCBsb25nIHBmbiwgdW5zaWduZWQgbG9uZyBwZ2NudCxcbiBcdFx0c3RydWN0IHBhZ2VfdGFibGVfY2hlY2sgKnB0YyA9IGdldF9wYWdlX3RhYmxlX2NoZWNrKHBhZ2VfZXh0KTtcbiBcbiBcdFx0aWYgKGFub24pIHtcbi1cdFx0XHRCVUdfT04oYXRvbWljX3JlYWQoXHUwMDI2cHRjLVx1MDAzZWZpbGVfbWFwX2NvdW50KSk7XG4tXHRcdFx0QlVHX09OKGF0b21pY19pbmNfcmV0dXJuKFx1MDAyNnB0Yy1cdTAwM2Vhbm9uX21hcF9jb3VudCkgXHUwMDNlIDEgXHUwMDI2XHUwMDI2IHJ3KTtcbiYjNDM7XHRcdFx0QlVHX09OKGF0b21pYzY0X3JlYWQoXHUwMDI2cHRjLVx1MDAzZWZpbGVfbWFwX2NvdW50KSk7XG4mIzQzO1x0XHRcdEJVR19PTihhdG9taWM2NF9pbmNfcmV0dXJuKFx1MDAyNnB0Yy1cdTAwM2Vhbm9uX21hcF9jb3VudCkgXHUwMDNlIDEgXHUwMDI2XHUwMDI2IHJ3KTtcbiBcdFx0fSBlbHNlIHtcbi1cdFx0XHRCVUdfT04oYXRvbWljX3JlYWQoXHUwMDI2cHRjLVx1MDAzZWFub25fbWFwX2NvdW50KSk7XG4tXHRcdFx0QlVHX09OKGF0b21pY19pbmNfcmV0dXJuKFx1MDAyNnB0Yy1cdTAwM2VmaWxlX21hcF9jb3VudCkgXHUwMDNjIDApO1xuJiM0MztcdFx0XHRCVUdfT04oYXRvbWljNjRfcmVhZChcdTAwMjZwdGMtXHUwMDNlYW5vbl9tYXBfY291bnQpKTtcbiYjNDM7XHRcdFx0QlVHX09OKGF0b21pYzY0X2luY19yZXR1cm4oXHUwMDI2cHRjLVx1MDAzZWZpbGVfbWFwX2NvdW50KSBcdTAwM2MgMCk7XG4gXHRcdH1cbiBcdH1cbiBcdHJjdV9yZWFkX3VubG9jaygpO1xuQEAgLTEzOSw4ICYjNDM7MTM5LDggQEAgdm9pZCBfX3BhZ2VfdGFibGVfY2hlY2tfemVybyhzdHJ1Y3QgcGFnZSAqcGFnZSwgdW5zaWduZWQgaW50IG9yZGVyKVxuIFx0Zm9yX2VhY2hfcGFnZV9leHQocGFnZSwgMSBcdTAwM2NcdTAwM2Mgb3JkZXIsIHBhZ2VfZXh0LCBpdGVyKSB7XG4gXHRcdHN0cnVjdCBwYWdlX3RhYmxlX2NoZWNrICpwdGMgPSBnZXRfcGFnZV90YWJsZV9jaGVjayhwYWdlX2V4dCk7XG4gXG4tXHRcdEJVR19PTihhdG9taWNfcmVhZChcdTAwMjZwdGMtXHUwMDNlYW5vbl9tYXBfY291bnQpKTtcbi1cdFx0QlVHX09OKGF0b21pY19yZWFkKFx1MDAyNnB0Yy1cdTAwM2VmaWxlX21hcF9jb3VudCkpO1xuJiM0MztcdFx0QlVHX09OKGF0b21pYzY0X3JlYWQoXHUwMDI2cHRjLVx1MDAzZWFub25fbWFwX2NvdW50KSk7XG4mIzQzO1x0XHRCVUdfT04oYXRvbWljNjRfcmVhZChcdTAwMjZwdGMtXHUwMDNlZmlsZV9tYXBfY291bnQpKTtcbiBcdH1cbiBcdHJjdV9yZWFkX3VubG9jaygpO1xuIH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOCAwNToxMDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtQQUdFX1RBQkxFX0NIRUNLJiMzNDssCiAgICAmIzM0O1BBR0VfVEFCTEVfQ0hFQ0tfRU5GT1JDRUQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtfX3BhZ2VfdGFibGVfY2hlY2tfcHRlX2NsZWFyJiMzNDssCiAgICAmIzM0O19fcGFnZV90YWJsZV9jaGVja19wbWRfY2xlYXImIzM0OywKICAgICYjMzQ7X19wYWdlX3RhYmxlX2NoZWNrX3B1ZF9jbGVhciYjMzQ7LAogICAgJiMzNDtfX3BhZ2VfdGFibGVfY2hlY2tfcHRlc19zZXQmIzM0OywKICAgICYjMzQ7X19wYWdlX3RhYmxlX2NoZWNrX3BtZHNfc2V0JiMzNDssCiAgICAmIzM0O19fcGFnZV90YWJsZV9jaGVja19wdWRzX3NldCYjMzQ7LAogICAgJiMzNDtfX3BhZ2VfdGFibGVfY2hlY2tfemVybyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBjaGFuZ2VzIHRoZSB0eXBlIG9mIGFub25fbWFwX2NvdW50IGFuZCBmaWxlX21hcF9jb3VudCBpbiBzdHJ1Y3QgcGFnZV90YWJsZV9jaGVjayBmcm9tIGF0b21pY190IHRvIGF0b21pYzY0X3QgdG8gcHJldmVudCBwb3RlbnRpYWwgb3ZlcmZsb3dzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIHBhZ2UgdGFibGUgY2hlY2sgbG9naWMsIHdoaWNoIGNhbiBiZSByZWFjaGVkIGR1cmluZyBwYWdlIHRhYmxlIG1vZGlmaWNhdGlvbnMgKGUuZy4sIG1tYXAsIG11bm1hcCkuIEZ1enppbmcgaXMgbmVlZGVkIHRvIGVuc3VyZSB0aGUgNjQtYml0IGF0b21pYyBvcGVyYXRpb25zIHdvcmsgY29ycmVjdGx5IGFuZCBkbyBub3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA1YThjYzg5NWZmMmY5YjdjMzM0NGU1NDkwNDIyNWU4MjY1MWY0ZTNkCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFNhdCBKdWwgMTggMDU6MTA6MTUgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9tbS9wYWdlX3RhYmxlX2NoZWNrLmMgYi9tbS9wYWdlX3RhYmxlX2NoZWNrLmMKaW5kZXggNTNhODk5N2VjMDQzZWEuLmVkZDlkOWVkZjZmY2VlIDEwMDY0NAotLS0gYS9tbS9wYWdlX3RhYmxlX2NoZWNrLmMKJiM0MzsmIzQzOyYjNDM7IGIvbW0vcGFnZV90YWJsZV9jaGVjay5jCkBAIC0xNCw4ICYjNDM7MTQsOCBAQAogI2RlZmluZSBwcl9mbXQoZm10KQkmIzM0O3BhZ2VfdGFibGVfY2hlY2s6ICYjMzQ7IGZtdAogCiBzdHJ1Y3QgcGFnZV90YWJsZV9jaGVjayB7Ci0JYXRvbWljX3QgYW5vbl9tYXBfY291bnQ7Ci0JYXRvbWljX3QgZmlsZV9tYXBfY291bnQ7CiYjNDM7CWF0b21pYzY0X3QgYW5vbl9tYXBfY291bnQ7CiYjNDM7CWF0b21pYzY0X3QgZmlsZV9tYXBfY291bnQ7CiB9OwogCiBzdGF0aWMgYm9vbCBfX3BhZ2VfdGFibGVfY2hlY2tfZW5hYmxlZCBfX2luaXRkYXRhID0KQEAgLTc5LDExICYjNDM7NzksMTEgQEAgc3RhdGljIHZvaWQgcGFnZV90YWJsZV9jaGVja19jbGVhcih1bnNpZ25lZCBsb25nIHBmbiwgdW5zaWduZWQgbG9uZyBwZ2NudCkKIAkJc3RydWN0IHBhZ2VfdGFibGVfY2hlY2sgKnB0YyA9IGdldF9wYWdlX3RhYmxlX2NoZWNrKHBhZ2VfZXh0KTsKIAogCQlpZiAoYW5vbikgewotCQkJQlVHX09OKGF0b21pY19yZWFkKCZhbXA7cHRjLSZndDtmaWxlX21hcF9jb3VudCkpOwotCQkJQlVHX09OKGF0b21pY19kZWNfcmV0dXJuKCZhbXA7cHRjLSZndDthbm9uX21hcF9jb3VudCkgJmx0OyAwKTsKJiM0MzsJCQlCVUdfT04oYXRvbWljNjRfcmVhZCgmYW1wO3B0Yy0mZ3Q7ZmlsZV9tYXBfY291bnQpKTsKJiM0MzsJCQlCVUdfT04oYXRvbWljNjRfZGVjX3JldHVybigmYW1wO3B0Yy0mZ3Q7YW5vbl9tYXBfY291bnQpICZsdDsgMCk7CiAJCX0gZWxzZSB7Ci0JCQlCVUdfT04oYXRvbWljX3JlYWQoJmFtcDtwdGMtJmd0O2Fub25fbWFwX2NvdW50KSk7Ci0JCQlCVUdfT04oYXRvbWljX2RlY19yZXR1cm4oJmFtcDtwdGMtJmd0O2ZpbGVfbWFwX2NvdW50KSAmbHQ7IDApOwomIzQzOwkJCUJVR19PTihhdG9taWM2NF9yZWFkKCZhbXA7cHRjLSZndDthbm9uX21hcF9jb3VudCkpOwomIzQzOwkJCUJVR19PTihhdG9taWM2NF9kZWNfcmV0dXJuKCZhbXA7cHRjLSZndDtmaWxlX21hcF9jb3VudCkgJmx0OyAwKTsKIAkJfQogCX0KIAlyY3VfcmVhZF91bmxvY2soKTsKQEAgLTExNCwxMSAmIzQzOzExNCwxMSBAQCBzdGF0aWMgdm9pZCBwYWdlX3RhYmxlX2NoZWNrX3NldCh1bnNpZ25lZCBsb25nIHBmbiwgdW5zaWduZWQgbG9uZyBwZ2NudCwKIAkJc3RydWN0IHBhZ2VfdGFibGVfY2hlY2sgKnB0YyA9IGdldF9wYWdlX3RhYmxlX2NoZWNrKHBhZ2VfZXh0KTsKIAogCQlpZiAoYW5vbikgewotCQkJQlVHX09OKGF0b21pY19yZWFkKCZhbXA7cHRjLSZndDtmaWxlX21hcF9jb3VudCkpOwotCQkJQlVHX09OKGF0b21pY19pbmNfcmV0dXJuKCZhbXA7cHRjLSZndDthbm9uX21hcF9jb3VudCkgJmd0OyAxICZhbXA7JmFtcDsgcncpOwomIzQzOwkJCUJVR19PTihhdG9taWM2NF9yZWFkKCZhbXA7cHRjLSZndDtmaWxlX21hcF9jb3VudCkpOwomIzQzOwkJCUJVR19PTihhdG9taWM2NF9pbmNfcmV0dXJuKCZhbXA7cHRjLSZndDthbm9uX21hcF9jb3VudCkgJmd0OyAxICZhbXA7JmFtcDsgcncpOwogCQl9IGVsc2UgewotCQkJQlVHX09OKGF0b21pY19yZWFkKCZhbXA7cHRjLSZndDthbm9uX21hcF9jb3VudCkpOwotCQkJQlVHX09OKGF0b21pY19pbmNfcmV0dXJuKCZhbXA7cHRjLSZndDtmaWxlX21hcF9jb3VudCkgJmx0OyAwKTsKJiM0MzsJCQlCVUdfT04oYXRvbWljNjRfcmVhZCgmYW1wO3B0Yy0mZ3Q7YW5vbl9tYXBfY291bnQpKTsKJiM0MzsJCQlCVUdfT04oYXRvbWljNjRfaW5jX3JldHVybigmYW1wO3B0Yy0mZ3Q7ZmlsZV9tYXBfY291bnQpICZsdDsgMCk7CiAJCX0KIAl9CiAJcmN1X3JlYWRfdW5sb2NrKCk7CkBAIC0xMzksOCAmIzQzOzEzOSw4IEBAIHZvaWQgX19wYWdlX3RhYmxlX2NoZWNrX3plcm8oc3RydWN0IHBhZ2UgKnBhZ2UsIHVuc2lnbmVkIGludCBvcmRlcikKIAlmb3JfZWFjaF9wYWdlX2V4dChwYWdlLCAxICZsdDsmbHQ7IG9yZGVyLCBwYWdlX2V4dCwgaXRlcikgewogCQlzdHJ1Y3QgcGFnZV90YWJsZV9jaGVjayAqcHRjID0gZ2V0X3BhZ2VfdGFibGVfY2hlY2socGFnZV9leHQpOwogCi0JCUJVR19PTihhdG9taWNfcmVhZCgmYW1wO3B0Yy0mZ3Q7YW5vbl9tYXBfY291bnQpKTsKLQkJQlVHX09OKGF0b21pY19yZWFkKCZhbXA7cHRjLSZndDtmaWxlX21hcF9jb3VudCkpOwomIzQzOwkJQlVHX09OKGF0b21pYzY0X3JlYWQoJmFtcDtwdGMtJmd0O2Fub25fbWFwX2NvdW50KSk7CiYjNDM7CQlCVUdfT04oYXRvbWljNjRfcmVhZCgmYW1wO3B0Yy0mZ3Q7ZmlsZV9tYXBfY291bnQpKTsKIAl9CiAJcmN1X3JlYWRfdW5sb2NrKCk7CiB9CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE4IDA1OjEwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1ODYKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiAxMTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgQ3JpdGljYWwgTWVtb3J5IE1hbmFnZW1lbnQgT3B0aW1pemF0aW9uKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdGFyZ2V0aW5nIGBtbS9wYWdlX3RhYmxlX2NoZWNrLmNgLiBXaGF0IGltbWVkaWF0ZWx5IGdyYWJzIG15IGF0dGVudGlvbiBpcyB0aGUgc2hpZnQgZnJvbSBgYXRvbWljX3RgIHRvIGBhdG9taWM2NF90YCB3aXRoaW4gdGhlIGBzdHJ1Y3QgcGFnZV90YWJsZV9jaGVja2AuIFRoaXMgaXNuJiMzOTt0IGp1c3QgYSBjb3NtZXRpYyB0d2VhazsgaXQmIzM5O3MgYSBmdW5kYW1lbnRhbCBjaGFuZ2UgdGhhdCBpbXBhY3RzIHRoZSBzaXplIG9mIHRob3NlIGF0b21pYyB2YXJpYWJsZXMgYW5kLCBjb25zZXF1ZW50bHksIHRoZSBmdW5jdGlvbnMgdXNlZCB0byBpbnRlcmFjdCB3aXRoIHRoZW0uIFRoaXMgc2lnbmFscyBhIGRlbGliZXJhdGUgZWZmb3J0IHRvIGFkZHJlc3MgYSBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0eSDigJMgdGhlIHJpc2sgb2YgYGFub25fbWFwX2NvdW50YCBhbmQgYGZpbGVfbWFwX2NvdW50YCBvdmVyZmxvd2luZywgc3BlY2lmaWNhbGx5IG9uIDMyLWJpdCBhcmNoaXRlY3R1cmVzLiBDbGVhcmx5LCB0aGV5JiMzOTtyZSBhbnRpY2lwYXRpbmcgc2lnbmlmaWNhbnRseSBsYXJnZXIgbWVtb3J5IG1hcHBpbmdzIG9yIGhpZ2hlciBjb25jdXJyZW5jeSBpbiB0aGVzZSBhcmVhcywgd2FycmFudGluZyB0aGUgaW5jcmVhc2VkIGJpdC13aWR0aCB0byBlbnN1cmUgdGhlIGNvdW50ZXJzIHJlbWFpbiBhY2N1cmF0ZS4KCk15IG5leHQgc3RlcCBpcyB0byBkcmlsbCBkb3duIGludG8gYG1tL3BhZ2VfdGFibGVfY2hlY2suY2AgaXRzZWxmLCBhbmQgdGhlbiB1bmRlcnN0YW5kIGhvdyBpdHMgY29uZmlndXJhdGlvbiBpcyBjb250cm9sbGVkLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgYXJjaGl0ZWN0dXJhbCBpbXBsaWNhdGlvbnMsIHRoZSBzcGVjaWZpYyB3b3JrbG9hZHMgb3Igc2NlbmFyaW9zIHRoYXQgdHJpZ2dlcmVkIHRoaXMgY2hhbmdlLCBhbmQgaG93IHRoaXMgcmVsYXRlcyB0byBhbnkgb3RoZXIgcGVyZm9ybWFuY2Ugb3Igc3RhYmlsaXR5IHdvcmsgd2l0aGluIHRoZSBtZW1vcnkgbWFuYWdlbWVudCBzdWJzeXN0ZW0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTggMDU6MTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwYWdlX3RhYmxlX2NoZWNrJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTggMDU6MTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjk3MgoJCQkJCQkJb3V0cHV0OiAyNwoJCQkJCQkJdGhvdWdodHM6IDIxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqTmF2aWdhdGluZyB0aGUgRGVidWcgQ29uZmlndXJhdGlvbiBMYW5kc2NhcGUqKgoKUmlnaHQsIGxldCYjMzk7cyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gV2hlcmUmIzM5O3MgdGhlIHNlbnNpYmxlIHBsYWNlIHRvIGxvb2sgZm9yIGRlYnVnZ2luZy1yZWxhdGVkIGNvbmZpZ3VyYXRpb24gb3B0aW9ucz8gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gemVybyBpbiBvbiBgbW0vS2NvbmZpZy5kZWJ1Z2AgYW5kIGBsaWIvS2NvbmZpZy5kZWJ1Z2AuIEdpdmVuIHRoZSBuYXR1cmUgb2YgbXkgZXhwZXJ0aXNlLCB0aGVzZSBzZWVtIGxpa2UgdGhlIG1vc3QgbG9naWNhbCBzdGFydGluZyBwb2ludHMuIFRoZSBtZW1vcnkgbWFuYWdlbWVudCBzdWJzeXN0ZW0gYW5kIHRoZSBjb3JlIGxpYnJhcnkgcm91dGluZXMgYXJlIG9mdGVuIGtleSBhcmVhcyBmb3IgZGV0YWlsZWQgaW5zdHJ1bWVudGF0aW9uIGFuZCBkaWFnbm9zdGljcywgc28gdGhlIGFzc29jaWF0ZWQgS2NvbmZpZyBmaWxlcyBhcmUgdGhlIG1vc3QgbGlrZWx5IHBsYWNlcyB0byBmaW5kIGRlYnVnIGZsYWdzIHNwZWNpZmljIHRvIHRoZXNlIGFyZWFzLiBJIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgdGhlIHNjb3BlIG9mIGF2YWlsYWJsZSBvcHRpb25zIGhlcmUuIFRoZSBpbnRlbnQgaXMgdG8gc2VlIHdoYXQgYWxyZWFkeSBleGlzdHMgYmVmb3JlIEkgZGVjaWRlIGlmIEkgbXVzdCBhZGQgbmV3IG9wdGlvbnMsIG9yIGlmIEkgY2FuIHV0aWxpemUgd2hhdCBpcyBhbHJlYWR5IHByb3ZpZGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE4IDA1OjEwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O1BBR0VfVEFCTEVfQ0hFQ0smIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vS2NvbmZpZy5kZWJ1Zz0xMDU9Y29uZmlnIFBBR0VfT1dORVJcbi0tXG5tbS9LY29uZmlnLmRlYnVnLTEyMS1cbm1tL0tjb25maWcuZGVidWc6MTIyOmNvbmZpZyBQQUdFX1RBQkxFX0NIRUNLXG5tbS9LY29uZmlnLmRlYnVnLTEyMy1cdGJvb2wgXCYjMzQ7Q2hlY2sgZm9yIGludmFsaWQgbWFwcGluZ3MgaW4gdXNlciBwYWdlIHRhYmxlc1wmIzM0O1xubW0vS2NvbmZpZy5kZWJ1ZzoxMjQ6XHRkZXBlbmRzIG9uIEFSQ0hfU1VQUE9SVFNfUEFHRV9UQUJMRV9DSEVDS1xubW0vS2NvbmZpZy5kZWJ1Zy0xMjUtXHRkZXBlbmRzIG9uIEVYQ0xVU0lWRV9TWVNURU1fUkFNXG4tLVxubW0vS2NvbmZpZy5kZWJ1Zy0xMzUtXG5tbS9LY29uZmlnLmRlYnVnOjEzNjpjb25maWcgUEFHRV9UQUJMRV9DSEVDS19FTkZPUkNFRFxubW0vS2NvbmZpZy5kZWJ1Zy0xMzctXHRib29sIFwmIzM0O0VuZm9yY2UgdGhlIHBhZ2UgdGFibGUgY2hlY2tpbmcgYnkgZGVmYXVsdFwmIzM0O1xubW0vS2NvbmZpZy5kZWJ1ZzoxMzg6XHRkZXBlbmRzIG9uIFBBR0VfVEFCTEVfQ0hFQ0tcbm1tL0tjb25maWcuZGVidWctMTM5LVx0aGVscFxuLS1cbm1tL01ha2VmaWxlPTEyNj1vYmotJChDT05GSUdfUEFHRV9FWFRFTlNJT04pICYjNDM7PSBwYWdlX2V4dC5vXG5tbS9NYWtlZmlsZToxMjc6b2JqLSQoQ09ORklHX1BBR0VfVEFCTEVfQ0hFQ0spICYjNDM7PSBwYWdlX3RhYmxlX2NoZWNrLm9cbm1tL01ha2VmaWxlLTEyOC1vYmotJChDT05GSUdfQ01BX0RFQlVHRlMpICYjNDM7PSBjbWFfZGVidWcub1xuLS1cbm1tL3BhZ2VfZXh0LmM9ODA9c3RhdGljIHN0cnVjdCBwYWdlX2V4dF9vcGVyYXRpb25zICpwYWdlX2V4dF9vcHNbXSBfX2luaXRkYXRhID0ge1xuLS1cbm1tL3BhZ2VfZXh0LmMtODktI2VuZGlmXG5tbS9wYWdlX2V4dC5jOjkwOiNpZmRlZiBDT05GSUdfUEFHRV9UQUJMRV9DSEVDS1xubW0vcGFnZV9leHQuYy05MS1cdFx1MDAyNnBhZ2VfdGFibGVfY2hlY2tfb3BzLFxuLS1cbm1tL3BhZ2VfdGFibGVfY2hlY2suYz0yMT1zdGF0aWMgYm9vbCBfX3BhZ2VfdGFibGVfY2hlY2tfZW5hYmxlZCBfX2luaXRkYXRhID1cbm1tL3BhZ2VfdGFibGVfY2hlY2suYzoyMjpcdFx0XHRcdElTX0VOQUJMRUQoQ09ORklHX1BBR0VfVEFCTEVfQ0hFQ0tfRU5GT1JDRUQpO1xubW0vcGFnZV90YWJsZV9jaGVjay5jLTIzLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE4IDA1OjEwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM2NzEKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiA4NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhbmFseXNpcyBvZiB0aGUgc2l0dWF0aW9uOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBQYWdlIFRhYmxlIENoZWNrIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gdGhlIGBQQUdFX1RBQkxFX0NIRUNLYCBjb25maWcgb3B0aW9uIGlzIHdoYXQmIzM5O3MgZHJpdmluZyB0aGlzIHBhcnRpY3VsYXIgY29kZSBwYXRoLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgaW1wbGljYXRpb25zLiBJIHNlZSB0aGF0IHRoZSBtb2RpZmllZCBmdW5jdGlvbnMgYXJlIGBwYWdlX3RhYmxlX2NoZWNrX2NsZWFyYCwgYHBhZ2VfdGFibGVfY2hlY2tfc2V0YCwgYW5kIGBfX3BhZ2VfdGFibGVfY2hlY2tfemVyb2AuIFRoZXNlIGFyZSBwcmV0dHkgbG93LWxldmVsLCBpbmRpY2F0aW5nIHRoZXkgbGlrZWx5IGludGVyYWN0IGRpcmVjdGx5IHdpdGggcGFnZSB0YWJsZSBzdHJ1Y3R1cmVzLiBXaGF0JiMzOTtzIGludGVyZXN0aW5nIGlzIHRoYXQgdGhleSBhcmUgaW52b2tlZCB0aHJvdWdoIG1hY3JvcyBvciBpbmxpbmUgZnVuY3Rpb25zLCBhbmQgdGhhdCB0aGUgZGVmaW5pdGlvbnMgcmVzaWRlIHdpdGhpbiBgaW5jbHVkZS9saW51eC9wYWdlX3RhYmxlX2NoZWNrLmhgLiAgTXkgaW1tZWRpYXRlIG5leHQgc3RlcCBpcyBjbGVhcjogSSBuZWVkIHRvIG9wZW4gYW5kIG1ldGljdWxvdXNseSBleGFtaW5lIHRoYXQgaGVhZGVyIGZpbGUgdG8gdW5kZXJzdGFuZCBob3cgdGhlc2UgZnVuY3Rpb25zIGFyZSBiZWluZyB1c2VkIGFuZCB3aGF0IHRoZSBgUEFHRV9UQUJMRV9DSEVDS2AgY29uZmlnIG9wdGlvbiBhY3R1YWxseSAqZG9lcyogdG8gdGhlIHBhZ2UgdGFibGUgbWFuYWdlbWVudC4gVGhpcyBzaG91bGQgcHJvdmlkZSBhIGdvb2Qgb3ZlcnZpZXcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTggMDU6MTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwYWdlX3RhYmxlX2NoZWNrX2NsZWFyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC9wYWdlX3RhYmxlX2NoZWNrLmgmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE4IDA1OjEwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQwMDEKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiAyOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIHNlZS4gTXkgbWluZCBpbW1lZGlhdGVseSBqdW1wcyB0byBhIGZ1bmRhbWVudGFsIHBvaW50IGJlZm9yZSBJIGdvIGFueSBmdXJ0aGVyLgoKKipDaGVja2luZyB0aGUgUGFnZSBUYWJsZSBDbGVhciBGdW5jdGlvbioqCgpCZWZvcmUgZGl2aW5nIGluLCBJIG5lZWQgdG8gdmVyaWZ5IGEgY29yZSBlbGVtZW50LiBJJiMzOTtsbCBuZWVkIHRvIGdvIHRvIGBpbmNsdWRlL2xpbnV4L3BhZ2VfdGFibGVfY2hlY2suaGAuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIGNoZWNrIHRoZSBkZWZpbml0aW9uIGFuZCB1c2FnZSBvZiBgcGFnZV90YWJsZV9jaGVja19jbGVhcmAuIFRoYXQmIzM5O3MgdGhlIGZ1bmN0aW9uIHRoYXQmIzM5O3MgZ29pbmcgdG8gYmUgZXNzZW50aWFsIGZvciB1bmRlcnN0YW5kaW5nIGhvdyB0aGUgc3lzdGVtIGNsZWFycyBvciBpbnZhbGlkYXRlcyBlbnRyaWVzIHJlbGF0ZWQgdG8gdGhlIHBhZ2UgdGFibGVzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgYmVoYXZpb3IgdGhvcm91Z2hseSB0byBjb25maXJtIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgdW5kZXJseWluZyBtZW1vcnkgbWFuYWdlbWVudCBzdHJ1Y3R1cmUuIEtub3dpbmcgdGhpcyBpcyBjcml0aWNhbCwgc2luY2UgYSBmYWlsdXJlIGhlcmUgY2FuIGxlYWQgdG8gYSBwbGV0aG9yYSBvZiBwcm9ibGVtcyBkb3duIHRoZSBsaW5lLiBJIG11c3QgY2hlY2sgdGhpcyBiZWZvcmUgSSBtb3ZlIGZvcndhcmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE4IDA1OjEwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGFnZV90YWJsZV9jaGVja19jbGVhciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2luY2x1ZGUvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTggMDU6MTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDIzMwoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDI1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRpdmluZyBpbnRvIGBwYWdlX3RhYmxlX2NoZWNrX2NsZWFyYCoqCgpPa2F5LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gTGV0JiMzOTtzIHNlZSB3aGF0JiMzOTtzIGdvaW5nIG9uIHdpdGggYG1tL3BhZ2VfdGFibGVfY2hlY2suY2AsIHNwZWNpZmljYWxseSB0aGUgYHBhZ2VfdGFibGVfY2hlY2tfY2xlYXJgIGZ1bmN0aW9uLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIGNsZWFyaW5nIHByb2Nlc3MgaGVyZS4gSSYjMzk7bSBhc3N1bWluZyB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGNsZWFyaW5nIGNoZWNrcy9mbGFncyByZWxhdGVkIHRvIHBhZ2UgdGFibGUgZW50cmllcywgcHJvYmFibHkgcmVsYXRlZCB0byBzb21lIGtpbmQgb2YgY29uc2lzdGVuY3kgY2hlY2sgb3IgcGVyaGFwcyBhIGRlYnVnZ2luZyBtZWNoYW5pc20uIEkmIzM5O2xsIGJldCBpdCYjMzk7cyBjYWxsZWQgZHVyaW5nIHBhZ2UgdGFibGUgZGVhbGxvY2F0aW9uLCBvciBtYXliZSBhZnRlciBhIHpvbmUgaXMgY2xlYXJlZC4gSSYjMzk7bSBjdXJpb3VzIGlmIGl0JiMzOTtzIG9wZXJhdGluZyBvbiBpbmRpdmlkdWFsIHBhZ2UgdGFibGUgZW50cmllcyAoUFRFcyksIHBhZ2UgZGlyZWN0b3J5IGVudHJpZXMgKFBERXMpLCBvciBwZXJoYXBzIGV2ZW4gaGlnaGVyLWxldmVsIHN0cnVjdHVyZXMsIGFuZCB3aGF0IHRoZSBvdmVyYWxsIGFwcHJvYWNoIGlzIHRvIHN5bmNocm9uaXphdGlvbiBpZiB0aGVyZSBhcmUgYW55IGNvbmN1cnJlbmN5IGlzc3VlcywgZXNwZWNpYWxseSBpZiB0aGUgY29kZSB1c2VzIHNwaW5sb2NrcyBvciBhdG9taWMgb3BlcmF0aW9ucy4gSSYjMzk7bGwgcGF5IGNsb3NlIGF0dGVudGlvbiB0byB0aGUgZGF0YSBzdHJ1Y3R1cmVzIGl0JiMzOTtzIHRvdWNoaW5nLCBhbmQgaG93IGl0IGhhbmRsZXMgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucy4gSSYjMzk7bSByZWFsbHkgbG9va2luZyBmb3IgaG93IGl0IGRldGVybWluZXMgKndoaWNoKiBlbnRyaWVzIG5lZWQgY2xlYXJpbmcsIGFuZCBob3cgdGhvcm91Z2ggdGhlIHByb2Nlc3MgaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE4IDA1OjEwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BhZ2VfdGFibGVfY2hlY2tfY2xlYXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS9wYWdlX3RhYmxlX2NoZWNrLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vcGFnZV90YWJsZV9jaGVjay5jPTUzPXN0YXRpYyBzdHJ1Y3QgcGFnZV90YWJsZV9jaGVjayAqZ2V0X3BhZ2VfdGFibGVfY2hlY2soc3RydWN0IHBhZ2VfZXh0ICpwYWdlX2V4dClcbi0tXG5tbS9wYWdlX3RhYmxlX2NoZWNrLmMtNjItICovXG5tbS9wYWdlX3RhYmxlX2NoZWNrLmM6NjM6c3RhdGljIHZvaWQgcGFnZV90YWJsZV9jaGVja19jbGVhcih1bnNpZ25lZCBsb25nIHBmbiwgdW5zaWduZWQgbG9uZyBwZ2NudClcbm1tL3BhZ2VfdGFibGVfY2hlY2suYy02NC17XG4tLVxubW0vcGFnZV90YWJsZV9jaGVjay5jPTE0OD12b2lkIF9fcGFnZV90YWJsZV9jaGVja19wdGVfY2xlYXIoc3RydWN0IG1tX3N0cnVjdCAqbW0sIHVuc2lnbmVkIGxvbmcgYWRkcixcbi0tXG5tbS9wYWdlX3RhYmxlX2NoZWNrLmMtMTU0LVx0aWYgKHB0ZV91c2VyX2FjY2Vzc2libGVfcGFnZShtbSwgYWRkciwgcHRlKSlcbm1tL3BhZ2VfdGFibGVfY2hlY2suYzoxNTU6XHRcdHBhZ2VfdGFibGVfY2hlY2tfY2xlYXIocHRlX3BmbihwdGUpLCBQQUdFX1NJWkUgXHUwMDNlXHUwMDNlIFBBR0VfU0hJRlQpO1xubW0vcGFnZV90YWJsZV9jaGVjay5jLTE1Ni19XG4tLVxubW0vcGFnZV90YWJsZV9jaGVjay5jPTE1OT12b2lkIF9fcGFnZV90YWJsZV9jaGVja19wbWRfY2xlYXIoc3RydWN0IG1tX3N0cnVjdCAqbW0sIHVuc2lnbmVkIGxvbmcgYWRkcixcbi0tXG5tbS9wYWdlX3RhYmxlX2NoZWNrLmMtMTY1LVx0aWYgKHBtZF91c2VyX2FjY2Vzc2libGVfcGFnZShtbSwgYWRkciwgcG1kKSlcbm1tL3BhZ2VfdGFibGVfY2hlY2suYzoxNjY6XHRcdHBhZ2VfdGFibGVfY2hlY2tfY2xlYXIocG1kX3BmbihwbWQpLCBQTURfU0laRSBcdTAwM2VcdTAwM2UgUEFHRV9TSElGVCk7XG5tbS9wYWdlX3RhYmxlX2NoZWNrLmMtMTY3LX1cbi0tXG5tbS9wYWdlX3RhYmxlX2NoZWNrLmM9MTcwPXZvaWQgX19wYWdlX3RhYmxlX2NoZWNrX3B1ZF9jbGVhcihzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5zaWduZWQgbG9uZyBhZGRyLFxuLS1cbm1tL3BhZ2VfdGFibGVfY2hlY2suYy0xNzYtXHRpZiAocHVkX3VzZXJfYWNjZXNzaWJsZV9wYWdlKG1tLCBhZGRyLCBwdWQpKVxubW0vcGFnZV90YWJsZV9jaGVjay5jOjE3NzpcdFx0cGFnZV90YWJsZV9jaGVja19jbGVhcihwdWRfcGZuKHB1ZCksIFBVRF9TSVpFIFx1MDAzZVx1MDAzZSBQQUdFX1NISUZUKTtcbm1tL3BhZ2VfdGFibGVfY2hlY2suYy0xNzgtfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOCAwNToxMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MDU0CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMTI0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBQYWdlIFRhYmxlIENoZWNrIEZ1bmN0aW9ucyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCBpbW1lZGlhdGVseSBub3RpY2UgdGhhdCBgcGFnZV90YWJsZV9jaGVja19jbGVhcmAgaXMgZGVjbGFyZWQgYXMgYHN0YXRpY2AuIFJpZ2h0LCB0aGF0IG1lYW5zIGl0JiMzOTtzIGFuIGludGVybmFsIGZ1bmN0aW9uIGFuZCBub3QgZGlyZWN0bHkgZXhwb3NlZC4gSW5zdGVhZCwgd2UgaGF2ZSB0aGVzZSBleHBvcnRlZCBmdW5jdGlvbnMgdGhhdCBzZWVtIHRvIGJlIHRoZSBwdWJsaWMgaW50ZXJmYWNlOiBgX19wYWdlX3RhYmxlX2NoZWNrX3B0ZV9jbGVhcmAsIGBfX3BhZ2VfdGFibGVfY2hlY2tfcG1kX2NsZWFyYCwgYF9fcGFnZV90YWJsZV9jaGVja19wdWRfY2xlYXJgLCBhbmQgdGhlaXIgJiMzNDtzZXQmIzM0OyBjb3VudGVycGFydHMgYWxvbmcgd2l0aCBgX19wYWdlX3RhYmxlX2NoZWNrX3plcm9gLiBNYWtlcyBzZW5zZS4gTm93IEkgd2FudCB0byB1bmRlcnN0YW5kIHRoZWlyIGludGVyYWN0aW9ucyBhbmQgaG93IHRoZSBzdGF0aWMgZnVuY3Rpb24gZml0cyBpbi4gVGltZSB0byBkaXZlIGludG8gYG1tL3BhZ2VfdGFibGVfY2hlY2suY2AgYW5kIHNlZSBob3cgdGhlc2UgZXhwb3J0ZWQgZnVuY3Rpb25zIGFyZSBpbXBsZW1lbnRlZCBhbmQgaG93IHRoZXkgdXRpbGl6ZSB0aGF0IGludGVybmFsIGBwYWdlX3RhYmxlX2NoZWNrX2NsZWFyYCBmdW5jdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRyb2wgZmxvdywgdGhlIGRhdGEgc3RydWN0dXJlcyB1c2VkLCBhbmQgdGhlIG92ZXJhbGwgcHVycG9zZSBvZiB0aGlzIG1vZHVsZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTggMDU6MTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7RVhQT1JUX1NZTUJPTCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL3BhZ2VfdGFibGVfY2hlY2suYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9wYWdlX3RhYmxlX2NoZWNrLmM9MjQ9REVGSU5FX1NUQVRJQ19LRVlfVFJVRShwYWdlX3RhYmxlX2NoZWNrX2Rpc2FibGVkKTtcbm1tL3BhZ2VfdGFibGVfY2hlY2suYzoyNTpFWFBPUlRfU1lNQk9MKHBhZ2VfdGFibGVfY2hlY2tfZGlzYWJsZWQpO1xubW0vcGFnZV90YWJsZV9jaGVjay5jLTI2LVxuLS1cbm1tL3BhZ2VfdGFibGVfY2hlY2suYz0xNDg9dm9pZCBfX3BhZ2VfdGFibGVfY2hlY2tfcHRlX2NsZWFyKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCB1bnNpZ25lZCBsb25nIGFkZHIsXG4tLVxubW0vcGFnZV90YWJsZV9jaGVjay5jLTE1Ni19XG5tbS9wYWdlX3RhYmxlX2NoZWNrLmM6MTU3OkVYUE9SVF9TWU1CT0woX19wYWdlX3RhYmxlX2NoZWNrX3B0ZV9jbGVhcik7XG5tbS9wYWdlX3RhYmxlX2NoZWNrLmMtMTU4LVxubW0vcGFnZV90YWJsZV9jaGVjay5jPTE1OT12b2lkIF9fcGFnZV90YWJsZV9jaGVja19wbWRfY2xlYXIoc3RydWN0IG1tX3N0cnVjdCAqbW0sIHVuc2lnbmVkIGxvbmcgYWRkcixcbi0tXG5tbS9wYWdlX3RhYmxlX2NoZWNrLmMtMTY3LX1cbm1tL3BhZ2VfdGFibGVfY2hlY2suYzoxNjg6RVhQT1JUX1NZTUJPTChfX3BhZ2VfdGFibGVfY2hlY2tfcG1kX2NsZWFyKTtcbm1tL3BhZ2VfdGFibGVfY2hlY2suYy0xNjktXG5tbS9wYWdlX3RhYmxlX2NoZWNrLmM9MTcwPXZvaWQgX19wYWdlX3RhYmxlX2NoZWNrX3B1ZF9jbGVhcihzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5zaWduZWQgbG9uZyBhZGRyLFxuLS1cbm1tL3BhZ2VfdGFibGVfY2hlY2suYy0xNzgtfVxubW0vcGFnZV90YWJsZV9jaGVjay5jOjE3OTpFWFBPUlRfU1lNQk9MKF9fcGFnZV90YWJsZV9jaGVja19wdWRfY2xlYXIpO1xubW0vcGFnZV90YWJsZV9jaGVjay5jLTE4MC1cbi0tXG5tbS9wYWdlX3RhYmxlX2NoZWNrLmM9MTk5PXZvaWQgX19wYWdlX3RhYmxlX2NoZWNrX3B0ZXNfc2V0KHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCB1bnNpZ25lZCBsb25nIGFkZHIsXG4tLVxubW0vcGFnZV90YWJsZV9jaGVjay5jLTIxMy19XG5tbS9wYWdlX3RhYmxlX2NoZWNrLmM6MjE0OkVYUE9SVF9TWU1CT0woX19wYWdlX3RhYmxlX2NoZWNrX3B0ZXNfc2V0KTtcbm1tL3BhZ2VfdGFibGVfY2hlY2suYy0yMTUtXG4tLVxubW0vcGFnZV90YWJsZV9jaGVjay5jPTIyOD12b2lkIF9fcGFnZV90YWJsZV9jaGVja19wbWRzX3NldChzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5zaWduZWQgbG9uZyBhZGRyLFxuLS1cbm1tL3BhZ2VfdGFibGVfY2hlY2suYy0yNDMtfVxubW0vcGFnZV90YWJsZV9jaGVjay5jOjI0NDpFWFBPUlRfU1lNQk9MKF9fcGFnZV90YWJsZV9jaGVja19wbWRzX3NldCk7XG5tbS9wYWdlX3RhYmxlX2NoZWNrLmMtMjQ1LVxubW0vcGFnZV90YWJsZV9jaGVjay5jPTI0Nj12b2lkIF9fcGFnZV90YWJsZV9jaGVja19wdWRzX3NldChzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5zaWduZWQgbG9uZyBhZGRyLFxuLS1cbm1tL3BhZ2VfdGFibGVfY2hlY2suYy0yNTktfVxubW0vcGFnZV90YWJsZV9jaGVjay5jOjI2MDpFWFBPUlRfU1lNQk9MKF9fcGFnZV90YWJsZV9jaGVja19wdWRzX3NldCk7XG5tbS9wYWdlX3RhYmxlX2NoZWNrLmMtMjYxLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOCAwNToxMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MTA1CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogOTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQYWdlIFRhYmxlIENoZWNrIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gdGhlIGZ1bmN0aW9ucyByZWxhdGVkIHRvIHRoaXMgYXJlIGJlaW5nIGV4cG9ydGVkLCB0aGF0JiMzOTtzIHRoZSBzdGFydGluZyBwb2ludC4gTXkgY29uZmlnIGlzIGBQQUdFX1RBQkxFX0NIRUNLYCwgcmlnaHQ/IEFoLCBob2xkIG9uLCBJIHNlZSBgUEFHRV9UQUJMRV9DSEVDS19FTkZPUkNFRGAgYXMgd2VsbC4gTm93IHRoaW5ncyBhcmUgZ2V0dGluZyBpbnRlcmVzdGluZy4gSWYgYFBBR0VfVEFCTEVfQ0hFQ0tfRU5GT1JDRURgIGlzbiYjMzk7dCBlbmFibGVkLCB0aGVuIHdlJiMzOTtsbCBsaWtlbHkgbmVlZCBhIGJvb3QgcGFyYW1ldGVyIOKAkyBzb21ldGhpbmcgbGlrZSBgcGFnZV90YWJsZV9jaGVjaz1vbmAg4oCTIHRvIGFjdHVhbGx5IGFjdGl2YXRlIHRoZSBjaGVja3MuIFRpbWUgdG8gZGlnIGludG8gdGhlIGltcGxlbWVudGF0aW9uIGl0c2VsZiwgc28gSSYjMzk7bGwgY2hlY2sgYG1tL3BhZ2VfdGFibGVfY2hlY2suY2AgdG8gc2VlIGhvdyB0aGF0IGBwYWdlX3RhYmxlX2NoZWNrPW9uYCBib290IHBhcmFtZXRlciBpcyBoYW5kbGVkIGFuZCBob3cgdGhlIGZlYXR1cmUgaXMgZW5hYmxlZC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGZ1bGwgZmxvdyBoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOCAwNToxMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BhZ2VfdGFibGVfY2hlY2s9JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vcGFnZV90YWJsZV9jaGVjay5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTggMDU6MTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjQxNQoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDI2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipJbnZlc3RpZ2F0aW5nIFBvdGVudGlhbCBJbml0aWFsaXphdGlvbiBJc3N1ZXMgaW4gdGhlIFBhZ2UgVGFibGUgQ2hlY2sqKgoKQWxyaWdodCwgSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZSBmb3IgdGhpcyBwYWdlIHRhYmxlIGNoZWNrIHJvdXRpbmUuIFdoZXJlJiMzOTtzIHRoZSBiZXN0IHBsYWNlIHRvIHN0YXJ0PyBNeSBpbml0aWFsIGh1bmNoIGlzIHRvIGxvb2sgY2xvc2VseSBhdCB0aGUgYF9fc2V0dXBgIG9yIHRoZSBgZWFybHlfcGFyYW1gIGZ1bmN0aW9ucyB3aXRoaW4gYG1tL3BhZ2VfdGFibGVfY2hlY2suY2AuIFRoZXNlIGFyZSB0aGUgdHlwaWNhbCBlbnRyeSBwb2ludHMgZm9yIGVhcmx5IGNvbmZpZ3VyYXRpb24gYW5kIGluaXRpYWxpemF0aW9uIHdpdGhpbiB0aGlzIGFyZWEgb2YgdGhlIG1lbW9yeSBtYW5hZ2VtZW50IGNvZGUuIFRoYXQgc2VlbXMgbGlrZSB0aGUgbW9zdCBsb2dpY2FsIHBsYWNlIHRvIGJlZ2luIG15IGludmVzdGlnYXRpb24gdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBpcyBoYW5kbGVkLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiB0aGUgaXNzdWUgc3RlbXMgZnJvbSBhbiBpbmNvcnJlY3QgaW5pdGlhbCBwYXJhbWV0ZXIsIG9yIHBlcmhhcHMgYSBjb25mbGljdCBkdXJpbmcgZWFybHkgc2V0dXAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE4IDA1OjEwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2Vhcmx5X3BhcmFtJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vcGFnZV90YWJsZV9jaGVjay5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL3BhZ2VfdGFibGVfY2hlY2suYz0yNz1zdGF0aWMgaW50IF9faW5pdCBlYXJseV9wYWdlX3RhYmxlX2NoZWNrX3BhcmFtKGNoYXIgKmJ1Zilcbi0tXG5tbS9wYWdlX3RhYmxlX2NoZWNrLmMtMzEtXG5tbS9wYWdlX3RhYmxlX2NoZWNrLmM6MzI6ZWFybHlfcGFyYW0oXCYjMzQ7cGFnZV90YWJsZV9jaGVja1wmIzM0OywgZWFybHlfcGFnZV90YWJsZV9jaGVja19wYXJhbSk7XG5tbS9wYWdlX3RhYmxlX2NoZWNrLmMtMzMtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE4IDA1OjEwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY3MzUKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiA2MDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRW5hYmxpbmcgUGFnZSBUYWJsZSBDaGVja3MgZm9yIEZ1enppbmcqKgoKT2theSwgc28gaWYgYFBBR0VfVEFCTEVfQ0hFQ0tfRU5GT1JDRURgIGlzIHNldCwgaXQgZGVmYXVsdHMgdG8gZW5hYmxlZC4gVGhhdCBtYWtlcyBzZW5zZSwgc28gbGV0JiMzOTtzIGVuYWJsZSBib3RoIGBQQUdFX1RBQkxFX0NIRUNLYCBhbmQgYFBBR0VfVEFCTEVfQ0hFQ0tfRU5GT1JDRURgLiBOb3csIGJlZm9yZSBnb2luZyBmdXJ0aGVyLCBJIG5lZWQgdG8gY2hlY2sgdGhlIGRlcGVuZGVuY2llcyBmb3IgYFBBR0VfVEFCTEVfQ0hFQ0tgLiBIbW0sIGl0IGRlcGVuZHMgb24gYEFSQ0hfU1VQUE9SVFNfUEFHRV9UQUJMRV9DSEVDS2AgYW5kIGBFWENMVVNJVkVfU1lTVEVNX1JBTWAuIEdvb2QsIHRoYXQmIzM5O3Mgc3RyYWlnaHRmb3J3YXJkLiBJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgdmVyaWZ5IGBQQUdFX1RBQkxFX0NIRUNLX0VORk9SQ0VEYCBkb2VzbiYjMzk7dCBoYXZlIGFueSBoaWRkZW4gZGVwZW5kZW5jaWVzLgoKTm93LCBmb3IgdGhlIGZ1enppbmcgdGFyZ2V0cy4gTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyB0byBoaXQgdGhlc2UgZnVuY3Rpb25zIGRpcmVjdGx5OiBgX19wYWdlX3RhYmxlX2NoZWNrX3B0ZV9jbGVhcmAsIGBfX3BhZ2VfdGFibGVfY2hlY2tfcG1kX2NsZWFyYCwgYF9fcGFnZV90YWJsZV9jaGVja19wdWRfY2xlYXJgLCBgX19wYWdlX3RhYmxlX2NoZWNrX3B0ZXNfc2V0YCwgYF9fcGFnZV90YWJsZV9jaGVja19wbWRzX3NldGAsIGBfX3BhZ2VfdGFibGVfY2hlY2tfcHVkc19zZXRgLCBhbmQgYF9fcGFnZV90YWJsZV9jaGVja196ZXJvYC4KCkJ1dCB3YWl0IGEgbWludXRlLCBJIHNlZSB0aG9zZSBhcmUgY2FsbGVkIGZyb20gb3RoZXIgZnVuY3Rpb25zIOKAkyBgX19wYWdlX3RhYmxlX2NoZWNrX3B0ZXNfc2V0YCBhbmQgc3VjaCBhcmUgY2FsbGVkIGJ5IGBwYWdlX3RhYmxlX2NoZWNrX3NldGAsIGBwYWdlX3RhYmxlX2NoZWNrX2NsZWFyYCwgYF9fcGFnZV90YWJsZV9jaGVja196ZXJvYC4gQXJlIHRoZXNlIGhvdC1wYXRoIGZ1bmN0aW9ucz8gUGFnZSB0YWJsZSBtb2RpZmljYXRpb25zIGFyZSBjb21tb24sIGVzcGVjaWFsbHkgb24gZXZlcnkgcGFnZSBmYXVsdCwgYW5kIG11bm1hcC9leGl0LiBCdXQgdGhlIHByb21wdCBzcGVjaWZpY2FsbHkgc2F5cyB0byBhdm9pZCBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucy4gSG93ZXZlciwgdGhlc2UgYXJlICpleGFjdGx5KiB3aGVyZSB0aGUgbW9kaWZpZWQgY29kZSBpcyBleGVjdXRlZC4gVGhhdCBtYWtlcyB0aGVtIHBlcmZlY3QgdGFyZ2V0cy4gQmV0dGVyIHRvIGZvY3VzIG9uIHRob3NlIGV4cG9ydGVkIHdyYXBwZXIgZnVuY3Rpb25zLgoKU28sIGxldCYjMzk7cyBrZWVwIGl0IGNsZWFuLiBMZXQmIzM5O3MgbWFrZSBzdXJlIHRoZXJlIGFyZW4mIzM5O3QgYW55IG90aGVyIHJlbGF0ZWQgY29uZmlncywgZG91YmxlLWNoZWNraW5nIGBQQUdFX1RBQkxFX0NIRUNLX0VORk9SQ0VEYCBpbiBgbW0vS2NvbmZpZy5kZWJ1Z2AgYW5kIG1vdmUgZm9yd2FyZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTggMDU6MTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFBBR0VfVEFCTEVfQ0hFQ0tfRU5GT1JDRUQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS9LY29uZmlnLmRlYnVnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL0tjb25maWcuZGVidWc9MTIyPWNvbmZpZyBQQUdFX1RBQkxFX0NIRUNLXG4tLVxubW0vS2NvbmZpZy5kZWJ1Zy0xMzUtXG5tbS9LY29uZmlnLmRlYnVnOjEzNjpjb25maWcgUEFHRV9UQUJMRV9DSEVDS19FTkZPUkNFRFxubW0vS2NvbmZpZy5kZWJ1Zy0xMzctXHRib29sIFwmIzM0O0VuZm9yY2UgdGhlIHBhZ2UgdGFibGUgY2hlY2tpbmcgYnkgZGVmYXVsdFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOCAwNToxMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3ODkxCgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogODQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYW5hbHlzaXMgb2YgdGhlIHNpdHVhdGlvbjoKCioqUGFnZSBUYWJsZSBDaGVjayBFbmZvcmNlbWVudCAmYW1wOyBQb3RlbnRpYWwgT3ZlcmZsb3cqKgoKT2theSwgdGhlIGtleSBjb25maWd1cmF0aW9uIG9wdGlvbiBoZXJlIGlzIGBQQUdFX1RBQkxFX0NIRUNLX0VORk9SQ0VEYC4gR290IGl0LgoKVGhpcyBwYXRjaCBpcyBtb2RpZnlpbmcgdGhlIGBzdHJ1Y3QgcGFnZV90YWJsZV9jaGVja2AgYnkgc3dpdGNoaW5nIGZyb20gYGF0b21pY190YCB0byBgYXRvbWljNjRfdGAuIFRoYXQmIzM5O3MgYSBmdW5jdGlvbmFsIGNoYW5nZSwgYSBiaXQgbW9yZSBzaWduaWZpY2FudCB0aGFuIGEgcHVyZWx5IGNvc21ldGljIGFsdGVyYXRpb24uIFRoZSByZWFzb24/IEl0JiMzOTtzIGRpcmVjdGx5IGFkZHJlc3NpbmcgYSBwb3RlbnRpYWwgb3ZlcmZsb3cgaXNzdWUuIE1ha2VzIHNlbnNlOyBndWFyZGluZyBhZ2FpbnN0IHRoYXQgaXMgYWx3YXlzIGEgZ29vZCBwcmFjdGljZSwgZXNwZWNpYWxseSBpbiBzb21ldGhpbmcgYXMgY3JpdGljYWwgYXMgcGFnZSB0YWJsZSBtYW5hZ2VtZW50LgoKTm93LCBhIGZ1bmN0aW9uYWwgY2hhbmdlIGxpa2UgdGhpcz8gVGhhdCBhYnNvbHV0ZWx5IHdhcnJhbnRzIHNvbWUgZnV6emluZy4gTmVlZCB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBzdWJ0bGUgaW50ZXJhY3Rpb25zIG9yIHVuZXhwZWN0ZWQgYmVoYXZpb3JzIHRoYXQgc3VyZmFjZSB1bmRlciBsb2FkLiBJdCYjMzk7cyBiZXN0IHRvIGJlIGRpbGlnZW50LgoKQW5kIG9uZSBtb3JlIHRoaW5nLCBsZXQgbWUganVzdCBxdWlja2x5IGNvbmZpcm0gdGhhdCB0aGUgd2hvbGUgYFBBR0VfVEFCTEVfQ0hFQ0tgIGZlYXR1cmUgaXMgc3VwcG9ydGVkIG9uIHg4NiwganVzdCB0byBlbnN1cmUgdGhpcyBjaGFuZ2UgaXMgZXZlbiByZWxldmFudCBmb3IgdGhlIHRhcmdldCBwbGF0Zm9ybS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTggMDU6MTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7QVJDSF9TVVBQT1JUU19QQUdFX1RBQkxFX0NIRUNLJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC94ODYvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gveDg2L0tjb25maWc9NTg9Y29uZmlnIFg4NlxuLS1cbmFyY2gveDg2L0tjb25maWctMTI1LVx0c2VsZWN0IEFSQ0hfU1VQUE9SVFNfSFVHRVRMQkZTXG5hcmNoL3g4Ni9LY29uZmlnOjEyNjpcdHNlbGVjdCBBUkNIX1NVUFBPUlRTX1BBR0VfVEFCTEVfQ0hFQ0tcdGlmIFg4Nl82NFxuYXJjaC94ODYvS2NvbmZpZy0xMjctXHRzZWxlY3QgQVJDSF9IQVNfUFRFX1BST1ROT05FXHRcdGlmIFg4Nl82NFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOCAwNToxMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4MzQzCgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQ3VycmVudCBMaW5lIG9mIFJlYXNvbmluZyoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBjb25maXJtZWQgeDg2XzY0IHN1cHBvcnQg4oCTIHRoYXQmIzM5O3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBOb3csIHRoZSBjcml0aWNhbCBuZXh0IHN0ZXAgaXMgdG8gZGV0ZXJtaW5lIGlmIGBFWENMVVNJVkVfU1lTVEVNX1JBTWAgaXMgc3VwcG9ydGVkIG9uIHg4NiBhcmNoaXRlY3R1cmUgZ2VuZXJhbGx5LiBUaGlzIGlzIGEgY3J1Y2lhbCBwaWVjZSBvZiBpbmZvcm1hdGlvbiBmb3IgdGhlIGN1cnJlbnQgdGFzaywgYW5kIHVuZGVyc3RhbmRpbmcgaXRzIGF2YWlsYWJpbGl0eSAob3IgbGFjayB0aGVyZW9mKSB3aWxsIGRpY3RhdGUgdGhlIGRpcmVjdGlvbiBvZiBteSBuZXh0IGludmVzdGlnYXRpb24uIEkgbmVlZCB0byBiZSBjZXJ0YWluIGFib3V0IHRoaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE4IDA1OjEwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7RVhDTFVTSVZFX1NZU1RFTV9SQU0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3g4Ni8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOCAwNToxMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NTE3CgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogMTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSGVyZSYjMzk7cyBob3cgSSYjMzk7ZCBhcHByb2FjaCB0aGlzIHRhc2ssIGFzIGlmIHRoZXNlIHdlcmUgbXkgaW50ZXJuYWwgdGhvdWdodHM6CgoqKkxvY2F0aW5nIHRoZSBEZWZpbml0aW9uIG9mIEVYQ0xVU0lWRV9TWVNURU1fUkFNKioKCkFscmlnaHQsIHRoZSBmaXJzdCB0aGluZyBJIG5lZWQgdG8gZG8gaXMgcGlucG9pbnQgdGhlIGRlZmluaXRpb24gb2YgdGhpcyBgRVhDTFVTSVZFX1NZU1RFTV9SQU1gIHZhcmlhYmxlLiBUaGlzIGlzIGNyaXRpY2FsIGJlY2F1c2Ugd2l0aG91dCBrbm93aW5nICp3aGF0KiBpdCBpcywgdW5kZXJzdGFuZGluZyBpdHMgY29udGV4dCBpcyBpbXBvc3NpYmxlLiBJdCYjMzk7cyBhbG1vc3QgY2VydGFpbmx5IGEgbWFjcm8sIGEgY29uc3RhbnQsIG9yIG1heWJlIGV2ZW4gYSB2YXJpYWJsZSBkZWZpbmVkIHNvbWV3aGVyZSBpbiB0aGUgcHJvamVjdCYjMzk7cyBjb2RlYmFzZSBvciBhIGxpbmtlZCBsaWJyYXJ5LCBidXQgSSBjYW4mIzM5O3QgYmUgc3VyZSB1bnRpbCBJIGZpbmQgaXQuIFNvIEkgbmVlZCB0byB0cmFjZSB0aGlzIGJhY2sgdG8gaXRzIGRlY2xhcmF0aW9uLiBJJiMzOTtsbCBuZWVkIHRvIGtub3cgd2hlcmUgdGhpcyBpcyBkZWZpbmVkLCBiZWNhdXNlIHRoYXQmIzM5O2xsIHRlbGwgbWUgd2hhdCBpdCYjMzk7cyBmb3IsIGFuZCBob3cgaXQgaXMgc3VwcG9zZWQgdG8gYmUgaGFuZGxlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTggMDU6MTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEVYQ0xVU0lWRV9TWVNURU1fUkFNJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL0tjb25maWc9NTAyPWNvbmZpZyBNRU1PUllfSVNPTEFUSU9OXG4tLVxubW0vS2NvbmZpZy01MDctIyAvZGV2L21lbS5cbm1tL0tjb25maWc6NTA4OmNvbmZpZyBFWENMVVNJVkVfU1lTVEVNX1JBTVxubW0vS2NvbmZpZy01MDktXHRkZWZfYm9vbCB5XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE4IDA1OjExPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg4MDcKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiAzOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgc3VtbWFyaXplZCBpbiB0aGUgZmlyc3QgcGVyc29uLCBhc3N1bWluZyBhbiBleHBlcnQtbGV2ZWwgdW5kZXJzdGFuZGluZzoKCioqS2NvbmZpZyBEZXBlbmRlbmN5IERlZXAgRGl2ZSoqCgpBbHJpZ2h0LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYSBgZGVmX2Jvb2wgeWAgaW4gdGhlIGBtbS9LY29uZmlnYCBmaWxlLiBJbnN0YW50bHksIG15IG1pbmQganVtcHMgdG8gdGhlIGRlcGVuZGVuY2llcy4gSXQmIzM5O3Mgbm90IGEgc3RhbmRhbG9uZSBvcHRpb247IGl0JiMzOTtzIGNvbnRpbmdlbnQgb24gZWl0aGVyIGBTVFJJQ1RfREVWTUVNYCBvciBgSU9fU1RSSUNUX0RFVk1FTWAgYmVpbmcgZGVmaW5lZC4gVGhpcyBsaWtlbHkgbWVhbnMgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBhIGJvb2xlYW4gb3B0aW9uIGNvbnRyb2xsZWQgYnkgbWVtb3J5IHJlc3RyaWN0aW9ucywgYW5kIGl0cyBkZWZhdWx0IHN0YXRlIGlzICYjMzk7eWVzJiMzOTsgb25seSB1bmRlciBzcGVjaWZpYyBjaXJjdW1zdGFuY2VzLiBNeSBpbml0aWFsIHF1ZXN0aW9ucyBhcmU6IHdoYXQgaXMgdGhlIG1lYW5pbmcgb2YgeT8gRG9lcyB0aGUgbmFtZSBvZiB0aGUgZGVmaW5pdGlvbiBnaXZlIHVzIGEgY2x1ZT8gQXJlIHRoZXJlIG90aGVyIGluc3RhbmNlcyBvZiB0aGlzLCBhbmQgaG93IGNhbiB0aGV5IGJlIHVzZWQgb3IgY29tcGFyZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW50ZW50IGJldHRlcj8KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTggMDU6MTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7RVhDTFVTSVZFX1NZU1RFTV9SQU0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL0tjb25maWc9NTAyPWNvbmZpZyBNRU1PUllfSVNPTEFUSU9OXG4tLVxubW0vS2NvbmZpZy01MDctIyAvZGV2L21lbS5cbm1tL0tjb25maWc6NTA4OmNvbmZpZyBFWENMVVNJVkVfU1lTVEVNX1JBTVxubW0vS2NvbmZpZy01MDktXHRkZWZfYm9vbCB5XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE4IDA1OjExPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkxMzAKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAxOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGF0IGRpcmVjdGl2ZToKCioqQW5hbHl6aW5nIHRoZSBLY29uZmlnIEZpbGUgZm9yIEd1aWRhbmNlKioKCk9rYXksIGhvbGQgb24gYSBzZWNvbmQsIGJlZm9yZSBJIGRpdmUgdG9vIGRlZXAgaW50byB0aGlzIHByb2JsZW0uIExldCYjMzk7cyBnZXQgYSBtb3JlIGdyYW51bGFyIHZpZXcgb2YgdGhlIHNpdHVhdGlvbi4gSSBzaG91bGQgcmVhbGx5IHRha2UgYSBsb29rIGF0IHRoZSBgbW0vS2NvbmZpZ2AgZmlsZSwgc3BlY2lmaWNhbGx5IGFyb3VuZCBsaW5lIDUwOC4gVGhhdCBhcmVhIGlzIGxpa2VseSB0byBjb250YWluIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byBtZW1vcnkgbWFuYWdlbWVudC4gSXQmIzM5O3MgcHJvYmFibHkgd2hlcmUgdGhlIHJlbGV2YW50IHN5bWJvbHMgYW5kIHRoZWlyIGRlcGVuZGVuY2llcyBhcmUgZGVmaW5lZC4gQW5hbHl6aW5nIHRoYXQgc2VjdGlvbiBjYXJlZnVsbHkgd2lsbCBnaXZlIG1lIGEgY2xlYXIgcGljdHVyZSBvZiB3aGF0IG9wdGlvbnMgYXJlIGF2YWlsYWJsZSwgaG93IHRoZXkmIzM5O3JlIGludGVuZGVkIHRvIGJlIHVzZWQsIGFuZCBpZiB0aGVyZSBhcmUgYW55IHN1YnRsZSBjb25maWd1cmF0aW9ucyBJIG1pZ2h0IGJlIG1pc3NpbmcuIFRoaXMgaXMgYSBjcml0aWNhbCBzdGVwIGJlZm9yZSBtYWtpbmcgYW55IGZ1cnRoZXIgYXNzdW1wdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE4IDA1OjExPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bW0vS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDUwMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNTAwOlx0XHRib29sXG4gNTAxOlx0XG4gNTAyOlx0Y29uZmlnIE1FTU9SWV9JU09MQVRJT05cbiA1MDM6XHRcdGJvb2xcbiA1MDQ6XHRcbiA1MDU6XHQjIElPUkVTT1VSQ0VfU1lTVEVNX1JBTSByZWdpb25zIGluIHRoZSBrZXJuZWwgcmVzb3VyY2UgdHJlZSB0aGF0IGFyZSBtYXJrZWRcbiA1MDY6XHQjIElPUkVTT1VSQ0VfRVhDTFVTSVZFIGNhbm5vdCBiZSBtYXBwZWQgdG8gdXNlciBzcGFjZSwgZm9yIGV4YW1wbGUsIHZpYVxuIDUwNzpcdCMgL2Rldi9tZW0uXG4gNTA4Olx0Y29uZmlnIEVYQ0xVU0lWRV9TWVNURU1fUkFNXG4gNTA5Olx0XHRkZWZfYm9vbCB5XG4gNTEwOlx0XHRkZXBlbmRzIG9uICFERVZNRU0gfHwgU1RSSUNUX0RFVk1FTVxuIDUxMTpcdFxuIDUxMjpcdCNcbiA1MTM6XHQjIE9ubHkgYmUgc2V0IG9uIGFyY2hpdGVjdHVyZXMgdGhhdCBoYXZlIGNvbXBsZXRlbHkgaW1wbGVtZW50ZWQgbWVtb3J5IGhvdHBsdWdcbiA1MTQ6XHQjIGZlYXR1cmUuIElmIHlvdSBhcmUgbm90IHN1cmUsIGRvbiYjMzk7dCB0b3VjaCBpdC5cbiA1MTU6XHQjXG4gNTE2Olx0Y29uZmlnIEhBVkVfQk9PVE1FTV9JTkZPX05PREVcbiA1MTc6XHRcdGRlZl9ib29sIG5cbiA1MTg6XHRcbiA1MTk6XHRjb25maWcgQVJDSF9FTkFCTEVfTUVNT1JZX0hPVFBMVUdcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTggMDU6MTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTYxNAoJCQkJCQkJb3V0cHV0OiAyMzYKCQkJCQkJCXRob3VnaHRzOiA0ODUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQQUdFX1RBQkxFX0NIRUNLIEhvdCBQYXRoIGZvciBGdXp6aW5nKioKCk9rYXksIHNvIGxvb2tpbmcgYXQgdGhpcywgYEVYQ0xVU0lWRV9TWVNURU1fUkFNYCBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgdW5kZXIgdGhlIGNvbmRpdGlvbnMgYCFERVZNRU0gfHwgU1RSSUNUX0RFVk1FTWAuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoaWNoIGZ1bmN0aW9ucyBhcmUgdGhlICYjMzQ7aG90IHBhdGgmIzM0OyBmb3IgZnV6emluZywgc3BlY2lmaWNhbGx5IHRob3NlIGZ1bmN0aW9ucyB0aGF0IGltcGxlbWVudCB0aGUgY29kZSBtb2RpZmljYXRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoLiBUaGUgcHJvbXB0IGluc3RydWN0cyBtZSB0byBhdm9pZCAqZ2VuZXJpYyogaG90LXBhdGggZnVuY3Rpb25zLCB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCgpNeSBmb2N1cyBzaG91bGQgYmUgb246CgoqICAgYF9fcGFnZV90YWJsZV9jaGVja19wdGVfY2xlYXJgCiogICBgX19wYWdlX3RhYmxlX2NoZWNrX3BtZF9jbGVhcmAKKiAgIGBfX3BhZ2VfdGFibGVfY2hlY2tfcHVkX2NsZWFyYAoqICAgYF9fcGFnZV90YWJsZV9jaGVja19wdGVzX3NldGAKKiAgIGBfX3BhZ2VfdGFibGVfY2hlY2tfcG1kc19zZXRgCiogICBgX19wYWdlX3RhYmxlX2NoZWNrX3B1ZHNfc2V0YAoqICAgYF9fcGFnZV90YWJsZV9jaGVja196ZXJvYAoKVGhlc2UgZnVuY3Rpb25zIGFyZSBjYWxsZWQgb24gKmV2ZXJ5KiBwYWdlIHRhYmxlIG1vZGlmaWNhdGlvbiwgc28gdGhleSBhcmUgdW5kZW5pYWJseSBob3QgYW5kIHdoZXJlIHRoZSBuZXcgbG9naWMgaXMgZXhlY3V0ZWQuIFRoZSBxdWVzdGlvbiBpcywgYXJlIHRoZXkgY29uc2lkZXJlZCBnZW5lcmljPyBJJiMzOTtkIGFyZ3VlIG5vdC4gVGhleSYjMzk7cmUgc3BlY2lmaWMgdG8gdGhlIGBQQUdFX1RBQkxFX0NIRUNLYCBmZWF0dXJlLiBJJiMzOTtsbCBpbmNsdWRlIHRoZW0uCgpJIGp1c3QgZG91YmxlLWNoZWNrZWQgYW5kIGBwYWdlX3RhYmxlX2NoZWNrX3NldGAgYW5kIGBwYWdlX3RhYmxlX2NoZWNrX2NsZWFyYCBhcmUgc3RhdGljLCBhcyBJIGV4cGVjdGVkLCBtZWFuaW5nIHRoZXNlIHdpbGwgYmUgdGhlIHN5bWJvbHMgdG8gZm9jdXMgb24uCgpTbyB0aGUgbWFpbiBjb25maWcgb3B0aW9ucyBpbiBwbGF5IGhlcmUgYXJlOgoqICAgYFBBR0VfVEFCTEVfQ0hFQ0tgCiogICBgUEFHRV9UQUJMRV9DSEVDS19FTkZPUkNFRGAKClRoZSBwYXRjaCBpcyBhYm91dCBjaGFuZ2luZyB0aGUgYGFub25fbWFwX2NvdW50YCBhbmQgYGZpbGVfbWFwX2NvdW50YCBmcm9tIGBhdG9taWNfdGAgdG8gYGF0b21pYzY0X3RgIHdpdGhpbiB0aGUgYHN0cnVjdCBwYWdlX3RhYmxlX2NoZWNrYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGFuZCB0aGUgbWFpbiBhcmVhIHRoYXQgcmVxdWlyZXMgZnV6emluZy4gVGhlIHBhdGNoIGlzIHRvIHByZXZlbnQgb3ZlcmZsb3dzLCBpdCB3aWxsIGJlIHJlYWNoZWQgZHVyaW5nIHRoZSB0eXBpY2FsIHBhZ2UgdGFibGUgbW9kaWZpY2F0aW9ucywgc3VjaCBhcyBtbWFwIGFuZCBtdW5tYXAuIFdlIG5lZWQgdG8gZnV6eiB0aGVzZSBmdW5jdGlvbnMgdG8gbWFrZSBzdXJlIHRoZSA2NC1iaXQgYXRvbWljIG9wZXJhdGlvbnMgd29yayBjb3JyZWN0bHkgYW5kIGRvbiYjMzk7dCBpbnRyb2R1Y2UgYW55IHJlZ3Jlc3Npb25zLgoKTm93LCBsZXQmIzM5O3MgY2FsbCBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOCAwNToxMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7UEFHRV9UQUJMRV9DSEVDSyYjMzQ7LAogICAgJiMzNDtQQUdFX1RBQkxFX0NIRUNLX0VORk9SQ0VEJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7X19wYWdlX3RhYmxlX2NoZWNrX3B0ZV9jbGVhciYjMzQ7LAogICAgJiMzNDtfX3BhZ2VfdGFibGVfY2hlY2tfcG1kX2NsZWFyJiMzNDssCiAgICAmIzM0O19fcGFnZV90YWJsZV9jaGVja19wdWRfY2xlYXImIzM0OywKICAgICYjMzQ7X19wYWdlX3RhYmxlX2NoZWNrX3B0ZXNfc2V0JiMzNDssCiAgICAmIzM0O19fcGFnZV90YWJsZV9jaGVja19wbWRzX3NldCYjMzQ7LAogICAgJiMzNDtfX3BhZ2VfdGFibGVfY2hlY2tfcHVkc19zZXQmIzM0OywKICAgICYjMzQ7X19wYWdlX3RhYmxlX2NoZWNrX3plcm8mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggY2hhbmdlcyB0aGUgdHlwZSBvZiBhbm9uX21hcF9jb3VudCBhbmQgZmlsZV9tYXBfY291bnQgaW4gc3RydWN0IHBhZ2VfdGFibGVfY2hlY2sgZnJvbSBhdG9taWNfdCB0byBhdG9taWM2NF90IHRvIHByZXZlbnQgcG90ZW50aWFsIG92ZXJmbG93cy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBwYWdlIHRhYmxlIGNoZWNrIGxvZ2ljLCB3aGljaCBjYW4gYmUgcmVhY2hlZCBkdXJpbmcgcGFnZSB0YWJsZSBtb2RpZmljYXRpb25zIChlLmcuLCBtbWFwLCBtdW5tYXApLiBGdXp6aW5nIGlzIG5lZWRlZCB0byBlbnN1cmUgdGhlIDY0LWJpdCBhdG9taWMgb3BlcmF0aW9ucyB3b3JrIGNvcnJlY3RseSBhbmQgZG8gbm90IGludHJvZHVjZSByZWdyZXNzaW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7UEFHRV9UQUJMRV9DSEVDSyYjMzQ7LAogICAgJiMzNDtQQUdFX1RBQkxFX0NIRUNLX0VORk9SQ0VEJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7X19wYWdlX3RhYmxlX2NoZWNrX3B0ZV9jbGVhciYjMzQ7LAogICAgJiMzNDtfX3BhZ2VfdGFibGVfY2hlY2tfcG1kX2NsZWFyJiMzNDssCiAgICAmIzM0O19fcGFnZV90YWJsZV9jaGVja19wdWRfY2xlYXImIzM0OywKICAgICYjMzQ7X19wYWdlX3RhYmxlX2NoZWNrX3B0ZXNfc2V0JiMzNDssCiAgICAmIzM0O19fcGFnZV90YWJsZV9jaGVja19wbWRzX3NldCYjMzQ7LAogICAgJiMzNDtfX3BhZ2VfdGFibGVfY2hlY2tfcHVkc19zZXQmIzM0OywKICAgICYjMzQ7X19wYWdlX3RhYmxlX2NoZWNrX3plcm8mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggY2hhbmdlcyB0aGUgdHlwZSBvZiBhbm9uX21hcF9jb3VudCBhbmQgZmlsZV9tYXBfY291bnQgaW4gc3RydWN0IHBhZ2VfdGFibGVfY2hlY2sgZnJvbSBhdG9taWNfdCB0byBhdG9taWM2NF90IHRvIHByZXZlbnQgcG90ZW50aWFsIG92ZXJmbG93cy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBwYWdlIHRhYmxlIGNoZWNrIGxvZ2ljLCB3aGljaCBjYW4gYmUgcmVhY2hlZCBkdXJpbmcgcGFnZSB0YWJsZSBtb2RpZmljYXRpb25zIChlLmcuLCBtbWFwLCBtdW5tYXApLiBGdXp6aW5nIGlzIG5lZWRlZCB0byBlbnN1cmUgdGhlIDY0LWJpdCBhdG9taWMgb3BlcmF0aW9ucyB3b3JrIGNvcnJlY3RseSBhbmQgZG8gbm90IGludHJvZHVjZSByZWdyZXNzaW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE4VDA1OjEwOjE3LjIxOTU2OTY3NloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU5NDAzNTk3ODI3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlBBR0VfVEFCTEVfQ0hFQ0tcIixcbiAgICBcIlBBR0VfVEFCTEVfQ0hFQ0tfRU5GT1JDRURcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJfX3BhZ2VfdGFibGVfY2hlY2tfcHRlX2NsZWFyXCIsXG4gICAgXCJfX3BhZ2VfdGFibGVfY2hlY2tfcG1kX2NsZWFyXCIsXG4gICAgXCJfX3BhZ2VfdGFibGVfY2hlY2tfcHVkX2NsZWFyXCIsXG4gICAgXCJfX3BhZ2VfdGFibGVfY2hlY2tfcHRlc19zZXRcIixcbiAgICBcIl9fcGFnZV90YWJsZV9jaGVja19wbWRzX3NldFwiLFxuICAgIFwiX19wYWdlX3RhYmxlX2NoZWNrX3B1ZHNfc2V0XCIsXG4gICAgXCJfX3BhZ2VfdGFibGVfY2hlY2tfemVyb1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGNoYW5nZXMgdGhlIHR5cGUgb2YgYW5vbl9tYXBfY291bnQgYW5kIGZpbGVfbWFwX2NvdW50IGluIHN0cnVjdCBwYWdlX3RhYmxlX2NoZWNrIGZyb20gYXRvbWljX3QgdG8gYXRvbWljNjRfdCB0byBwcmV2ZW50IHBvdGVudGlhbCBvdmVyZmxvd3MuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgcGFnZSB0YWJsZSBjaGVjayBsb2dpYywgd2hpY2ggY2FuIGJlIHJlYWNoZWQgZHVyaW5nIHBhZ2UgdGFibGUgbW9kaWZpY2F0aW9ucyAoZS5nLiwgbW1hcCwgbXVubWFwKS4gRnV6emluZyBpcyBuZWVkZWQgdG8gZW5zdXJlIHRoZSA2NC1iaXQgYXRvbWljIG9wZXJhdGlvbnMgd29yayBjb3JyZWN0bHkgYW5kIGRvIG5vdCBpbnRyb2R1Y2UgcmVncmVzc2lvbnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE4VDA1OjEwOjE3LjIxOTU3NDYyNloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjIwMjg5NjM0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNWE4Y2M4OTVmZjJmOWI3YzMzNDRlNTQ5MDQyMjVlODI2NTFmNGUzZFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU2F0IEp1bCAxOCAwNToxMDoxNSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9tbS9wYWdlX3RhYmxlX2NoZWNrLmMgYi9tbS9wYWdlX3RhYmxlX2NoZWNrLmNcXG5pbmRleCA1M2E4OTk3ZWMwNDNlYS4uZWRkOWQ5ZWRmNmZjZWUgMTAwNjQ0XFxuLS0tIGEvbW0vcGFnZV90YWJsZV9jaGVjay5jXFxuKysrIGIvbW0vcGFnZV90YWJsZV9jaGVjay5jXFxuQEAgLTE0LDggKzE0LDggQEBcXG4gI2RlZmluZSBwcl9mbXQoZm10KVxcdFxcXCJwYWdlX3RhYmxlX2NoZWNrOiBcXFwiIGZtdFxcbiBcXG4gc3RydWN0IHBhZ2VfdGFibGVfY2hlY2sge1xcbi1cXHRhdG9taWNfdCBhbm9uX21hcF9jb3VudDtcXG4tXFx0YXRvbWljX3QgZmlsZV9tYXBfY291bnQ7XFxuK1xcdGF0b21pYzY0X3QgYW5vbl9tYXBfY291bnQ7XFxuK1xcdGF0b21pYzY0X3QgZmlsZV9tYXBfY291bnQ7XFxuIH07XFxuIFxcbiBzdGF0aWMgYm9vbCBfX3BhZ2VfdGFibGVfY2hlY2tfZW5hYmxlZCBfX2luaXRkYXRhID1cXG5AQCAtNzksMTEgKzc5LDExIEBAIHN0YXRpYyB2b2lkIHBhZ2VfdGFibGVfY2hlY2tfY2xlYXIodW5zaWduZWQgbG9uZyBwZm4sIHVuc2lnbmVkIGxvbmcgcGdjbnQpXFxuIFxcdFxcdHN0cnVjdCBwYWdlX3RhYmxlX2NoZWNrICpwdGMgPSBnZXRfcGFnZV90YWJsZV9jaGVjayhwYWdlX2V4dCk7XFxuIFxcbiBcXHRcXHRpZiAoYW5vbikge1xcbi1cXHRcXHRcXHRCVUdfT04oYXRvbWljX3JlYWQoXFx1MDAyNnB0Yy1cXHUwMDNlZmlsZV9tYXBfY291bnQpKTtcXG4tXFx0XFx0XFx0QlVHX09OKGF0b21pY19kZWNfcmV0dXJuKFxcdTAwMjZwdGMtXFx1MDAzZWFub25fbWFwX2NvdW50KSBcXHUwMDNjIDApO1xcbitcXHRcXHRcXHRCVUdfT04oYXRvbWljNjRfcmVhZChcXHUwMDI2cHRjLVxcdTAwM2VmaWxlX21hcF9jb3VudCkpO1xcbitcXHRcXHRcXHRCVUdfT04oYXRvbWljNjRfZGVjX3JldHVybihcXHUwMDI2cHRjLVxcdTAwM2Vhbm9uX21hcF9jb3VudCkgXFx1MDAzYyAwKTtcXG4gXFx0XFx0fSBlbHNlIHtcXG4tXFx0XFx0XFx0QlVHX09OKGF0b21pY19yZWFkKFxcdTAwMjZwdGMtXFx1MDAzZWFub25fbWFwX2NvdW50KSk7XFxuLVxcdFxcdFxcdEJVR19PTihhdG9taWNfZGVjX3JldHVybihcXHUwMDI2cHRjLVxcdTAwM2VmaWxlX21hcF9jb3VudCkgXFx1MDAzYyAwKTtcXG4rXFx0XFx0XFx0QlVHX09OKGF0b21pYzY0X3JlYWQoXFx1MDAyNnB0Yy1cXHUwMDNlYW5vbl9tYXBfY291bnQpKTtcXG4rXFx0XFx0XFx0QlVHX09OKGF0b21pYzY0X2RlY19yZXR1cm4oXFx1MDAyNnB0Yy1cXHUwMDNlZmlsZV9tYXBfY291bnQpIFxcdTAwM2MgMCk7XFxuIFxcdFxcdH1cXG4gXFx0fVxcbiBcXHRyY3VfcmVhZF91bmxvY2soKTtcXG5AQCAtMTE0LDExICsxMTQsMTEgQEAgc3RhdGljIHZvaWQgcGFnZV90YWJsZV9jaGVja19zZXQodW5zaWduZWQgbG9uZyBwZm4sIHVuc2lnbmVkIGxvbmcgcGdjbnQsXFxuIFxcdFxcdHN0cnVjdCBwYWdlX3RhYmxlX2NoZWNrICpwdGMgPSBnZXRfcGFnZV90YWJsZV9jaGVjayhwYWdlX2V4dCk7XFxuIFxcbiBcXHRcXHRpZiAoYW5vbikge1xcbi1cXHRcXHRcXHRCVUdfT04oYXRvbWljX3JlYWQoXFx1MDAyNnB0Yy1cXHUwMDNlZmlsZV9tYXBfY291bnQpKTtcXG4tXFx0XFx0XFx0QlVHX09OKGF0b21pY19pbmNfcmV0dXJuKFxcdTAwMjZwdGMtXFx1MDAzZWFub25fbWFwX2NvdW50KSBcXHUwMDNlIDEgXFx1MDAyNlxcdTAwMjYgcncpO1xcbitcXHRcXHRcXHRCVUdfT04oYXRvbWljNjRfcmVhZChcXHUwMDI2cHRjLVxcdTAwM2VmaWxlX21hcF9jb3VudCkpO1xcbitcXHRcXHRcXHRCVUdfT04oYXRvbWljNjRfaW5jX3JldHVybihcXHUwMDI2cHRjLVxcdTAwM2Vhbm9uX21hcF9jb3VudCkgXFx1MDAzZSAxIFxcdTAwMjZcXHUwMDI2IHJ3KTtcXG4gXFx0XFx0fSBlbHNlIHtcXG4tXFx0XFx0XFx0QlVHX09OKGF0b21pY19yZWFkKFxcdTAwMjZwdGMtXFx1MDAzZWFub25fbWFwX2NvdW50KSk7XFxuLVxcdFxcdFxcdEJVR19PTihhdG9taWNfaW5jX3JldHVybihcXHUwMDI2cHRjLVxcdTAwM2VmaWxlX21hcF9jb3VudCkgXFx1MDAzYyAwKTtcXG4rXFx0XFx0XFx0QlVHX09OKGF0b21pYzY0X3JlYWQoXFx1MDAyNnB0Yy1cXHUwMDNlYW5vbl9tYXBfY291bnQpKTtcXG4rXFx0XFx0XFx0QlVHX09OKGF0b21pYzY0X2luY19yZXR1cm4oXFx1MDAyNnB0Yy1cXHUwMDNlZmlsZV9tYXBfY291bnQpIFxcdTAwM2MgMCk7XFxuIFxcdFxcdH1cXG4gXFx0fVxcbiBcXHRyY3VfcmVhZF91bmxvY2soKTtcXG5AQCAtMTM5LDggKzEzOSw4IEBAIHZvaWQgX19wYWdlX3RhYmxlX2NoZWNrX3plcm8oc3RydWN0IHBhZ2UgKnBhZ2UsIHVuc2lnbmVkIGludCBvcmRlcilcXG4gXFx0Zm9yX2VhY2hfcGFnZV9leHQocGFnZSwgMSBcXHUwMDNjXFx1MDAzYyBvcmRlciwgcGFnZV9leHQsIGl0ZXIpIHtcXG4gXFx0XFx0c3RydWN0IHBhZ2VfdGFibGVfY2hlY2sgKnB0YyA9IGdldF9wYWdlX3RhYmxlX2NoZWNrKHBhZ2VfZXh0KTtcXG4gXFxuLVxcdFxcdEJVR19PTihhdG9taWNfcmVhZChcXHUwMDI2cHRjLVxcdTAwM2Vhbm9uX21hcF9jb3VudCkpO1xcbi1cXHRcXHRCVUdfT04oYXRvbWljX3JlYWQoXFx1MDAyNnB0Yy1cXHUwMDNlZmlsZV9tYXBfY291bnQpKTtcXG4rXFx0XFx0QlVHX09OKGF0b21pYzY0X3JlYWQoXFx1MDAyNnB0Yy1cXHUwMDNlYW5vbl9tYXBfY291bnQpKTtcXG4rXFx0XFx0QlVHX09OKGF0b21pYzY0X3JlYWQoXFx1MDAyNnB0Yy1cXHUwMDNlZmlsZV9tYXBfY291bnQpKTtcXG4gXFx0fVxcbiBcXHRyY3VfcmVhZF91bmxvY2soKTtcXG4gfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xOFQwNToxMDoxNy44NDA0NTkwNVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTg3ODI3MDA1MzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiUEFHRV9UQUJMRV9DSEVDS1wiLFxuICAgIFwiUEFHRV9UQUJMRV9DSEVDS19FTkZPUkNFRFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIl9fcGFnZV90YWJsZV9jaGVja19wdGVfY2xlYXJcIixcbiAgICBcIl9fcGFnZV90YWJsZV9jaGVja19wbWRfY2xlYXJcIixcbiAgICBcIl9fcGFnZV90YWJsZV9jaGVja19wdWRfY2xlYXJcIixcbiAgICBcIl9fcGFnZV90YWJsZV9jaGVja19wdGVzX3NldFwiLFxuICAgIFwiX19wYWdlX3RhYmxlX2NoZWNrX3BtZHNfc2V0XCIsXG4gICAgXCJfX3BhZ2VfdGFibGVfY2hlY2tfcHVkc19zZXRcIixcbiAgICBcIl9fcGFnZV90YWJsZV9jaGVja196ZXJvXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggY2hhbmdlcyB0aGUgdHlwZSBvZiBhbm9uX21hcF9jb3VudCBhbmQgZmlsZV9tYXBfY291bnQgaW4gc3RydWN0IHBhZ2VfdGFibGVfY2hlY2sgZnJvbSBhdG9taWNfdCB0byBhdG9taWM2NF90IHRvIHByZXZlbnQgcG90ZW50aWFsIG92ZXJmbG93cy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBwYWdlIHRhYmxlIGNoZWNrIGxvZ2ljLCB3aGljaCBjYW4gYmUgcmVhY2hlZCBkdXJpbmcgcGFnZSB0YWJsZSBtb2RpZmljYXRpb25zIChlLmcuLCBtbWFwLCBtdW5tYXApLiBGdXp6aW5nIGlzIG5lZWRlZCB0byBlbnN1cmUgdGhlIDY0LWJpdCBhdG9taWMgb3BlcmF0aW9ucyB3b3JrIGNvcnJlY3RseSBhbmQgZG8gbm90IGludHJvZHVjZSByZWdyZXNzaW9ucy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA1YThjYzg5NWZmMmY5YjdjMzM0NGU1NDkwNDIyNWU4MjY1MWY0ZTNkXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBKdWwgMTggMDU6MTA6MTUgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9tbS9wYWdlX3RhYmxlX2NoZWNrLmMgYi9tbS9wYWdlX3RhYmxlX2NoZWNrLmNcbmluZGV4IDUzYTg5OTdlYzA0M2VhLi5lZGQ5ZDllZGY2ZmNlZSAxMDA2NDRcbi0tLSBhL21tL3BhZ2VfdGFibGVfY2hlY2suY1xuKysrIGIvbW0vcGFnZV90YWJsZV9jaGVjay5jXG5AQCAtMTQsOCArMTQsOCBAQFxuICNkZWZpbmUgcHJfZm10KGZtdClcdFwicGFnZV90YWJsZV9jaGVjazogXCIgZm10XG4gXG4gc3RydWN0IHBhZ2VfdGFibGVfY2hlY2sge1xuLVx0YXRvbWljX3QgYW5vbl9tYXBfY291bnQ7XG4tXHRhdG9taWNfdCBmaWxlX21hcF9jb3VudDtcbitcdGF0b21pYzY0X3QgYW5vbl9tYXBfY291bnQ7XG4rXHRhdG9taWM2NF90IGZpbGVfbWFwX2NvdW50O1xuIH07XG4gXG4gc3RhdGljIGJvb2wgX19wYWdlX3RhYmxlX2NoZWNrX2VuYWJsZWQgX19pbml0ZGF0YSA9XG5AQCAtNzksMTEgKzc5LDExIEBAIHN0YXRpYyB2b2lkIHBhZ2VfdGFibGVfY2hlY2tfY2xlYXIodW5zaWduZWQgbG9uZyBwZm4sIHVuc2lnbmVkIGxvbmcgcGdjbnQpXG4gXHRcdHN0cnVjdCBwYWdlX3RhYmxlX2NoZWNrICpwdGMgPSBnZXRfcGFnZV90YWJsZV9jaGVjayhwYWdlX2V4dCk7XG4gXG4gXHRcdGlmIChhbm9uKSB7XG4tXHRcdFx0QlVHX09OKGF0b21pY19yZWFkKFx1MDAyNnB0Yy1cdTAwM2VmaWxlX21hcF9jb3VudCkpO1xuLVx0XHRcdEJVR19PTihhdG9taWNfZGVjX3JldHVybihcdTAwMjZwdGMtXHUwMDNlYW5vbl9tYXBfY291bnQpIFx1MDAzYyAwKTtcbitcdFx0XHRCVUdfT04oYXRvbWljNjRfcmVhZChcdTAwMjZwdGMtXHUwMDNlZmlsZV9tYXBfY291bnQpKTtcbitcdFx0XHRCVUdfT04oYXRvbWljNjRfZGVjX3JldHVybihcdTAwMjZwdGMtXHUwMDNlYW5vbl9tYXBfY291bnQpIFx1MDAzYyAwKTtcbiBcdFx0fSBlbHNlIHtcbi1cdFx0XHRCVUdfT04oYXRvbWljX3JlYWQoXHUwMDI2cHRjLVx1MDAzZWFub25fbWFwX2NvdW50KSk7XG4tXHRcdFx0QlVHX09OKGF0b21pY19kZWNfcmV0dXJuKFx1MDAyNnB0Yy1cdTAwM2VmaWxlX21hcF9jb3VudCkgXHUwMDNjIDApO1xuK1x0XHRcdEJVR19PTihhdG9taWM2NF9yZWFkKFx1MDAyNnB0Yy1cdTAwM2Vhbm9uX21hcF9jb3VudCkpO1xuK1x0XHRcdEJVR19PTihhdG9taWM2NF9kZWNfcmV0dXJuKFx1MDAyNnB0Yy1cdTAwM2VmaWxlX21hcF9jb3VudCkgXHUwMDNjIDApO1xuIFx0XHR9XG4gXHR9XG4gXHRyY3VfcmVhZF91bmxvY2soKTtcbkBAIC0xMTQsMTEgKzExNCwxMSBAQCBzdGF0aWMgdm9pZCBwYWdlX3RhYmxlX2NoZWNrX3NldCh1bnNpZ25lZCBsb25nIHBmbiwgdW5zaWduZWQgbG9uZyBwZ2NudCxcbiBcdFx0c3RydWN0IHBhZ2VfdGFibGVfY2hlY2sgKnB0YyA9IGdldF9wYWdlX3RhYmxlX2NoZWNrKHBhZ2VfZXh0KTtcbiBcbiBcdFx0aWYgKGFub24pIHtcbi1cdFx0XHRCVUdfT04oYXRvbWljX3JlYWQoXHUwMDI2cHRjLVx1MDAzZWZpbGVfbWFwX2NvdW50KSk7XG4tXHRcdFx0QlVHX09OKGF0b21pY19pbmNfcmV0dXJuKFx1MDAyNnB0Yy1cdTAwM2Vhbm9uX21hcF9jb3VudCkgXHUwMDNlIDEgXHUwMDI2XHUwMDI2IHJ3KTtcbitcdFx0XHRCVUdfT04oYXRvbWljNjRfcmVhZChcdTAwMjZwdGMtXHUwMDNlZmlsZV9tYXBfY291bnQpKTtcbitcdFx0XHRCVUdfT04oYXRvbWljNjRfaW5jX3JldHVybihcdTAwMjZwdGMtXHUwMDNlYW5vbl9tYXBfY291bnQpIFx1MDAzZSAxIFx1MDAyNlx1MDAyNiBydyk7XG4gXHRcdH0gZWxzZSB7XG4tXHRcdFx0QlVHX09OKGF0b21pY19yZWFkKFx1MDAyNnB0Yy1cdTAwM2Vhbm9uX21hcF9jb3VudCkpO1xuLVx0XHRcdEJVR19PTihhdG9taWNfaW5jX3JldHVybihcdTAwMjZwdGMtXHUwMDNlZmlsZV9tYXBfY291bnQpIFx1MDAzYyAwKTtcbitcdFx0XHRCVUdfT04oYXRvbWljNjRfcmVhZChcdTAwMjZwdGMtXHUwMDNlYW5vbl9tYXBfY291bnQpKTtcbitcdFx0XHRCVUdfT04oYXRvbWljNjRfaW5jX3JldHVybihcdTAwMjZwdGMtXHUwMDNlZmlsZV9tYXBfY291bnQpIFx1MDAzYyAwKTtcbiBcdFx0fVxuIFx0fVxuIFx0cmN1X3JlYWRfdW5sb2NrKCk7XG5AQCAtMTM5LDggKzEzOSw4IEBAIHZvaWQgX19wYWdlX3RhYmxlX2NoZWNrX3plcm8oc3RydWN0IHBhZ2UgKnBhZ2UsIHVuc2lnbmVkIGludCBvcmRlcilcbiBcdGZvcl9lYWNoX3BhZ2VfZXh0KHBhZ2UsIDEgXHUwMDNjXHUwMDNjIG9yZGVyLCBwYWdlX2V4dCwgaXRlcikge1xuIFx0XHRzdHJ1Y3QgcGFnZV90YWJsZV9jaGVjayAqcHRjID0gZ2V0X3BhZ2VfdGFibGVfY2hlY2socGFnZV9leHQpO1xuIFxuLVx0XHRCVUdfT04oYXRvbWljX3JlYWQoXHUwMDI2cHRjLVx1MDAzZWFub25fbWFwX2NvdW50KSk7XG4tXHRcdEJVR19PTihhdG9taWNfcmVhZChcdTAwMjZwdGMtXHUwMDNlZmlsZV9tYXBfY291bnQpKTtcbitcdFx0QlVHX09OKGF0b21pYzY0X3JlYWQoXHUwMDI2cHRjLVx1MDAzZWFub25fbWFwX2NvdW50KSk7XG4rXHRcdEJVR19PTihhdG9taWM2NF9yZWFkKFx1MDAyNnB0Yy1cdTAwM2VmaWxlX21hcF9jb3VudCkpO1xuIFx0fVxuIFx0cmN1X3JlYWRfdW5sb2NrKCk7XG4gfVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMThUMDU6MTA6MTcuODQwNDYwNTdaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjM2MTYyNDI3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIENyaXRpY2FsIE1lbW9yeSBNYW5hZ2VtZW50IE9wdGltaXphdGlvbioqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdGFyZ2V0aW5nIGBtbS9wYWdlX3RhYmxlX2NoZWNrLmNgLiBXaGF0IGltbWVkaWF0ZWx5IGdyYWJzIG15IGF0dGVudGlvbiBpcyB0aGUgc2hpZnQgZnJvbSBgYXRvbWljX3RgIHRvIGBhdG9taWM2NF90YCB3aXRoaW4gdGhlIGBzdHJ1Y3QgcGFnZV90YWJsZV9jaGVja2AuIFRoaXMgaXNuJ3QganVzdCBhIGNvc21ldGljIHR3ZWFrOyBpdCdzIGEgZnVuZGFtZW50YWwgY2hhbmdlIHRoYXQgaW1wYWN0cyB0aGUgc2l6ZSBvZiB0aG9zZSBhdG9taWMgdmFyaWFibGVzIGFuZCwgY29uc2VxdWVudGx5LCB0aGUgZnVuY3Rpb25zIHVzZWQgdG8gaW50ZXJhY3Qgd2l0aCB0aGVtLiBUaGlzIHNpZ25hbHMgYSBkZWxpYmVyYXRlIGVmZm9ydCB0byBhZGRyZXNzIGEgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdHkg4oCTIHRoZSByaXNrIG9mIGBhbm9uX21hcF9jb3VudGAgYW5kIGBmaWxlX21hcF9jb3VudGAgb3ZlcmZsb3dpbmcsIHNwZWNpZmljYWxseSBvbiAzMi1iaXQgYXJjaGl0ZWN0dXJlcy4gQ2xlYXJseSwgdGhleSdyZSBhbnRpY2lwYXRpbmcgc2lnbmlmaWNhbnRseSBsYXJnZXIgbWVtb3J5IG1hcHBpbmdzIG9yIGhpZ2hlciBjb25jdXJyZW5jeSBpbiB0aGVzZSBhcmVhcywgd2FycmFudGluZyB0aGUgaW5jcmVhc2VkIGJpdC13aWR0aCB0byBlbnN1cmUgdGhlIGNvdW50ZXJzIHJlbWFpbiBhY2N1cmF0ZS5cblxuTXkgbmV4dCBzdGVwIGlzIHRvIGRyaWxsIGRvd24gaW50byBgbW0vcGFnZV90YWJsZV9jaGVjay5jYCBpdHNlbGYsIGFuZCB0aGVuIHVuZGVyc3RhbmQgaG93IGl0cyBjb25maWd1cmF0aW9uIGlzIGNvbnRyb2xsZWQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBhcmNoaXRlY3R1cmFsIGltcGxpY2F0aW9ucywgdGhlIHNwZWNpZmljIHdvcmtsb2FkcyBvciBzY2VuYXJpb3MgdGhhdCB0cmlnZ2VyZWQgdGhpcyBjaGFuZ2UsIGFuZCBob3cgdGhpcyByZWxhdGVzIHRvIGFueSBvdGhlciBwZXJmb3JtYW5jZSBvciBzdGFiaWxpdHkgd29yayB3aXRoaW4gdGhlIG1lbW9yeSBtYW5hZ2VtZW50IHN1YnN5c3RlbS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjU4NiwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExMSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE4VDA1OjEwOjIxLjQ3NjYyNDk2OFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2OTMwMzI1OCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGFnZV90YWJsZV9jaGVja1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xOFQwNToxMDoyMS41NDU5MzgyMzZaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNjI5NjA4NzgzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKk5hdmlnYXRpbmcgdGhlIERlYnVnIENvbmZpZ3VyYXRpb24gTGFuZHNjYXBlKipcblxuUmlnaHQsIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBXaGVyZSdzIHRoZSBzZW5zaWJsZSBwbGFjZSB0byBsb29rIGZvciBkZWJ1Z2dpbmctcmVsYXRlZCBjb25maWd1cmF0aW9uIG9wdGlvbnM/IE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIHplcm8gaW4gb24gYG1tL0tjb25maWcuZGVidWdgIGFuZCBgbGliL0tjb25maWcuZGVidWdgLiBHaXZlbiB0aGUgbmF0dXJlIG9mIG15IGV4cGVydGlzZSwgdGhlc2Ugc2VlbSBsaWtlIHRoZSBtb3N0IGxvZ2ljYWwgc3RhcnRpbmcgcG9pbnRzLiBUaGUgbWVtb3J5IG1hbmFnZW1lbnQgc3Vic3lzdGVtIGFuZCB0aGUgY29yZSBsaWJyYXJ5IHJvdXRpbmVzIGFyZSBvZnRlbiBrZXkgYXJlYXMgZm9yIGRldGFpbGVkIGluc3RydW1lbnRhdGlvbiBhbmQgZGlhZ25vc3RpY3MsIHNvIHRoZSBhc3NvY2lhdGVkIEtjb25maWcgZmlsZXMgYXJlIHRoZSBtb3N0IGxpa2VseSBwbGFjZXMgdG8gZmluZCBkZWJ1ZyBmbGFncyBzcGVjaWZpYyB0byB0aGVzZSBhcmVhcy4gSSBuZWVkIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIHRoZSBzY29wZSBvZiBhdmFpbGFibGUgb3B0aW9ucyBoZXJlLiBUaGUgaW50ZW50IGlzIHRvIHNlZSB3aGF0IGFscmVhZHkgZXhpc3RzIGJlZm9yZSBJIGRlY2lkZSBpZiBJIG11c3QgYWRkIG5ldyBvcHRpb25zLCBvciBpZiBJIGNhbiB1dGlsaXplIHdoYXQgaXMgYWxyZWFkeSBwcm92aWRlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjk3MiwiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE4VDA1OjEwOjI0LjE3NTU0ODc1OVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NzU0NTk5OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJQQUdFX1RBQkxFX0NIRUNLXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9LY29uZmlnLmRlYnVnPTEwNT1jb25maWcgUEFHRV9PV05FUlxcbi0tXFxubW0vS2NvbmZpZy5kZWJ1Zy0xMjEtXFxubW0vS2NvbmZpZy5kZWJ1ZzoxMjI6Y29uZmlnIFBBR0VfVEFCTEVfQ0hFQ0tcXG5tbS9LY29uZmlnLmRlYnVnLTEyMy1cXHRib29sIFxcXCJDaGVjayBmb3IgaW52YWxpZCBtYXBwaW5ncyBpbiB1c2VyIHBhZ2UgdGFibGVzXFxcIlxcbm1tL0tjb25maWcuZGVidWc6MTI0OlxcdGRlcGVuZHMgb24gQVJDSF9TVVBQT1JUU19QQUdFX1RBQkxFX0NIRUNLXFxubW0vS2NvbmZpZy5kZWJ1Zy0xMjUtXFx0ZGVwZW5kcyBvbiBFWENMVVNJVkVfU1lTVEVNX1JBTVxcbi0tXFxubW0vS2NvbmZpZy5kZWJ1Zy0xMzUtXFxubW0vS2NvbmZpZy5kZWJ1ZzoxMzY6Y29uZmlnIFBBR0VfVEFCTEVfQ0hFQ0tfRU5GT1JDRURcXG5tbS9LY29uZmlnLmRlYnVnLTEzNy1cXHRib29sIFxcXCJFbmZvcmNlIHRoZSBwYWdlIHRhYmxlIGNoZWNraW5nIGJ5IGRlZmF1bHRcXFwiXFxubW0vS2NvbmZpZy5kZWJ1ZzoxMzg6XFx0ZGVwZW5kcyBvbiBQQUdFX1RBQkxFX0NIRUNLXFxubW0vS2NvbmZpZy5kZWJ1Zy0xMzktXFx0aGVscFxcbi0tXFxubW0vTWFrZWZpbGU9MTI2PW9iai0kKENPTkZJR19QQUdFX0VYVEVOU0lPTikgKz0gcGFnZV9leHQub1xcbm1tL01ha2VmaWxlOjEyNzpvYmotJChDT05GSUdfUEFHRV9UQUJMRV9DSEVDSykgKz0gcGFnZV90YWJsZV9jaGVjay5vXFxubW0vTWFrZWZpbGUtMTI4LW9iai0kKENPTkZJR19DTUFfREVCVUdGUykgKz0gY21hX2RlYnVnLm9cXG4tLVxcbm1tL3BhZ2VfZXh0LmM9ODA9c3RhdGljIHN0cnVjdCBwYWdlX2V4dF9vcGVyYXRpb25zICpwYWdlX2V4dF9vcHNbXSBfX2luaXRkYXRhID0ge1xcbi0tXFxubW0vcGFnZV9leHQuYy04OS0jZW5kaWZcXG5tbS9wYWdlX2V4dC5jOjkwOiNpZmRlZiBDT05GSUdfUEFHRV9UQUJMRV9DSEVDS1xcbm1tL3BhZ2VfZXh0LmMtOTEtXFx0XFx1MDAyNnBhZ2VfdGFibGVfY2hlY2tfb3BzLFxcbi0tXFxubW0vcGFnZV90YWJsZV9jaGVjay5jPTIxPXN0YXRpYyBib29sIF9fcGFnZV90YWJsZV9jaGVja19lbmFibGVkIF9faW5pdGRhdGEgPVxcbm1tL3BhZ2VfdGFibGVfY2hlY2suYzoyMjpcXHRcXHRcXHRcXHRJU19FTkFCTEVEKENPTkZJR19QQUdFX1RBQkxFX0NIRUNLX0VORk9SQ0VEKTtcXG5tbS9wYWdlX3RhYmxlX2NoZWNrLmMtMjMtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE4VDA1OjEwOjI0LjIzMzEwMDYyOFoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyNzM4OTE1MzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhbmFseXNpcyBvZiB0aGUgc2l0dWF0aW9uOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIFBhZ2UgVGFibGUgQ2hlY2sgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIHRoZSBgUEFHRV9UQUJMRV9DSEVDS2AgY29uZmlnIG9wdGlvbiBpcyB3aGF0J3MgZHJpdmluZyB0aGlzIHBhcnRpY3VsYXIgY29kZSBwYXRoLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgaW1wbGljYXRpb25zLiBJIHNlZSB0aGF0IHRoZSBtb2RpZmllZCBmdW5jdGlvbnMgYXJlIGBwYWdlX3RhYmxlX2NoZWNrX2NsZWFyYCwgYHBhZ2VfdGFibGVfY2hlY2tfc2V0YCwgYW5kIGBfX3BhZ2VfdGFibGVfY2hlY2tfemVyb2AuIFRoZXNlIGFyZSBwcmV0dHkgbG93LWxldmVsLCBpbmRpY2F0aW5nIHRoZXkgbGlrZWx5IGludGVyYWN0IGRpcmVjdGx5IHdpdGggcGFnZSB0YWJsZSBzdHJ1Y3R1cmVzLiBXaGF0J3MgaW50ZXJlc3RpbmcgaXMgdGhhdCB0aGV5IGFyZSBpbnZva2VkIHRocm91Z2ggbWFjcm9zIG9yIGlubGluZSBmdW5jdGlvbnMsIGFuZCB0aGF0IHRoZSBkZWZpbml0aW9ucyByZXNpZGUgd2l0aGluIGBpbmNsdWRlL2xpbnV4L3BhZ2VfdGFibGVfY2hlY2suaGAuICBNeSBpbW1lZGlhdGUgbmV4dCBzdGVwIGlzIGNsZWFyOiBJIG5lZWQgdG8gb3BlbiBhbmQgbWV0aWN1bG91c2x5IGV4YW1pbmUgdGhhdCBoZWFkZXIgZmlsZSB0byB1bmRlcnN0YW5kIGhvdyB0aGVzZSBmdW5jdGlvbnMgYXJlIGJlaW5nIHVzZWQgYW5kIHdoYXQgdGhlIGBQQUdFX1RBQkxFX0NIRUNLYCBjb25maWcgb3B0aW9uIGFjdHVhbGx5ICpkb2VzKiB0byB0aGUgcGFnZSB0YWJsZSBtYW5hZ2VtZW50LiBUaGlzIHNob3VsZCBwcm92aWRlIGEgZ29vZCBvdmVydmlldy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzY3MSwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE4VDA1OjEwOjI3LjUwNjk5Mzg2NFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MjMzNTg2OSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGFnZV90YWJsZV9jaGVja19jbGVhclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJpbmNsdWRlL2xpbnV4L3BhZ2VfdGFibGVfY2hlY2suaFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMThUMDU6MTA6MjcuNTY5MzM2ODkzWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjgyMzQyNTgxOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3Mgc2VlLiBNeSBtaW5kIGltbWVkaWF0ZWx5IGp1bXBzIHRvIGEgZnVuZGFtZW50YWwgcG9pbnQgYmVmb3JlIEkgZ28gYW55IGZ1cnRoZXIuXG5cbioqQ2hlY2tpbmcgdGhlIFBhZ2UgVGFibGUgQ2xlYXIgRnVuY3Rpb24qKlxuXG5CZWZvcmUgZGl2aW5nIGluLCBJIG5lZWQgdG8gdmVyaWZ5IGEgY29yZSBlbGVtZW50LiBJJ2xsIG5lZWQgdG8gZ28gdG8gYGluY2x1ZGUvbGludXgvcGFnZV90YWJsZV9jaGVjay5oYC4gU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8gY2hlY2sgdGhlIGRlZmluaXRpb24gYW5kIHVzYWdlIG9mIGBwYWdlX3RhYmxlX2NoZWNrX2NsZWFyYC4gVGhhdCdzIHRoZSBmdW5jdGlvbiB0aGF0J3MgZ29pbmcgdG8gYmUgZXNzZW50aWFsIGZvciB1bmRlcnN0YW5kaW5nIGhvdyB0aGUgc3lzdGVtIGNsZWFycyBvciBpbnZhbGlkYXRlcyBlbnRyaWVzIHJlbGF0ZWQgdG8gdGhlIHBhZ2UgdGFibGVzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgYmVoYXZpb3IgdGhvcm91Z2hseSB0byBjb25maXJtIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgdW5kZXJseWluZyBtZW1vcnkgbWFuYWdlbWVudCBzdHJ1Y3R1cmUuIEtub3dpbmcgdGhpcyBpcyBjcml0aWNhbCwgc2luY2UgYSBmYWlsdXJlIGhlcmUgY2FuIGxlYWQgdG8gYSBwbGV0aG9yYSBvZiBwcm9ibGVtcyBkb3duIHRoZSBsaW5lLiBJIG11c3QgY2hlY2sgdGhpcyBiZWZvcmUgSSBtb3ZlIGZvcndhcmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQwMDEsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xOFQwNToxMDozMC4zOTI3NjQ2MDFaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0MDExOTExNiwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGFnZV90YWJsZV9jaGVja19jbGVhclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJpbmNsdWRlL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMThUMDU6MTA6MzAuNTMyODkwMjM3WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxMjczOTUzNjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRpdmluZyBpbnRvIGBwYWdlX3RhYmxlX2NoZWNrX2NsZWFyYCoqXG5cbk9rYXksIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBMZXQncyBzZWUgd2hhdCdzIGdvaW5nIG9uIHdpdGggYG1tL3BhZ2VfdGFibGVfY2hlY2suY2AsIHNwZWNpZmljYWxseSB0aGUgYHBhZ2VfdGFibGVfY2hlY2tfY2xlYXJgIGZ1bmN0aW9uLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIGNsZWFyaW5nIHByb2Nlc3MgaGVyZS4gSSdtIGFzc3VtaW5nIHdlJ3JlIGRlYWxpbmcgd2l0aCBjbGVhcmluZyBjaGVja3MvZmxhZ3MgcmVsYXRlZCB0byBwYWdlIHRhYmxlIGVudHJpZXMsIHByb2JhYmx5IHJlbGF0ZWQgdG8gc29tZSBraW5kIG9mIGNvbnNpc3RlbmN5IGNoZWNrIG9yIHBlcmhhcHMgYSBkZWJ1Z2dpbmcgbWVjaGFuaXNtLiBJJ2xsIGJldCBpdCdzIGNhbGxlZCBkdXJpbmcgcGFnZSB0YWJsZSBkZWFsbG9jYXRpb24sIG9yIG1heWJlIGFmdGVyIGEgem9uZSBpcyBjbGVhcmVkLiBJJ20gY3VyaW91cyBpZiBpdCdzIG9wZXJhdGluZyBvbiBpbmRpdmlkdWFsIHBhZ2UgdGFibGUgZW50cmllcyAoUFRFcyksIHBhZ2UgZGlyZWN0b3J5IGVudHJpZXMgKFBERXMpLCBvciBwZXJoYXBzIGV2ZW4gaGlnaGVyLWxldmVsIHN0cnVjdHVyZXMsIGFuZCB3aGF0IHRoZSBvdmVyYWxsIGFwcHJvYWNoIGlzIHRvIHN5bmNocm9uaXphdGlvbiBpZiB0aGVyZSBhcmUgYW55IGNvbmN1cnJlbmN5IGlzc3VlcywgZXNwZWNpYWxseSBpZiB0aGUgY29kZSB1c2VzIHNwaW5sb2NrcyBvciBhdG9taWMgb3BlcmF0aW9ucy4gSSdsbCBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBkYXRhIHN0cnVjdHVyZXMgaXQncyB0b3VjaGluZywgYW5kIGhvdyBpdCBoYW5kbGVzIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMuIEknbSByZWFsbHkgbG9va2luZyBmb3IgaG93IGl0IGRldGVybWluZXMgKndoaWNoKiBlbnRyaWVzIG5lZWQgY2xlYXJpbmcsIGFuZCBob3cgdGhvcm91Z2ggdGhlIHByb2Nlc3MgaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQyMzMsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xOFQwNToxMDozMy42NjAyODc2MThaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU2MjkzODc4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBhZ2VfdGFibGVfY2hlY2tfY2xlYXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vcGFnZV90YWJsZV9jaGVjay5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL3BhZ2VfdGFibGVfY2hlY2suYz01Mz1zdGF0aWMgc3RydWN0IHBhZ2VfdGFibGVfY2hlY2sgKmdldF9wYWdlX3RhYmxlX2NoZWNrKHN0cnVjdCBwYWdlX2V4dCAqcGFnZV9leHQpXFxuLS1cXG5tbS9wYWdlX3RhYmxlX2NoZWNrLmMtNjItICovXFxubW0vcGFnZV90YWJsZV9jaGVjay5jOjYzOnN0YXRpYyB2b2lkIHBhZ2VfdGFibGVfY2hlY2tfY2xlYXIodW5zaWduZWQgbG9uZyBwZm4sIHVuc2lnbmVkIGxvbmcgcGdjbnQpXFxubW0vcGFnZV90YWJsZV9jaGVjay5jLTY0LXtcXG4tLVxcbm1tL3BhZ2VfdGFibGVfY2hlY2suYz0xNDg9dm9pZCBfX3BhZ2VfdGFibGVfY2hlY2tfcHRlX2NsZWFyKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCB1bnNpZ25lZCBsb25nIGFkZHIsXFxuLS1cXG5tbS9wYWdlX3RhYmxlX2NoZWNrLmMtMTU0LVxcdGlmIChwdGVfdXNlcl9hY2Nlc3NpYmxlX3BhZ2UobW0sIGFkZHIsIHB0ZSkpXFxubW0vcGFnZV90YWJsZV9jaGVjay5jOjE1NTpcXHRcXHRwYWdlX3RhYmxlX2NoZWNrX2NsZWFyKHB0ZV9wZm4ocHRlKSwgUEFHRV9TSVpFIFxcdTAwM2VcXHUwMDNlIFBBR0VfU0hJRlQpO1xcbm1tL3BhZ2VfdGFibGVfY2hlY2suYy0xNTYtfVxcbi0tXFxubW0vcGFnZV90YWJsZV9jaGVjay5jPTE1OT12b2lkIF9fcGFnZV90YWJsZV9jaGVja19wbWRfY2xlYXIoc3RydWN0IG1tX3N0cnVjdCAqbW0sIHVuc2lnbmVkIGxvbmcgYWRkcixcXG4tLVxcbm1tL3BhZ2VfdGFibGVfY2hlY2suYy0xNjUtXFx0aWYgKHBtZF91c2VyX2FjY2Vzc2libGVfcGFnZShtbSwgYWRkciwgcG1kKSlcXG5tbS9wYWdlX3RhYmxlX2NoZWNrLmM6MTY2OlxcdFxcdHBhZ2VfdGFibGVfY2hlY2tfY2xlYXIocG1kX3BmbihwbWQpLCBQTURfU0laRSBcXHUwMDNlXFx1MDAzZSBQQUdFX1NISUZUKTtcXG5tbS9wYWdlX3RhYmxlX2NoZWNrLmMtMTY3LX1cXG4tLVxcbm1tL3BhZ2VfdGFibGVfY2hlY2suYz0xNzA9dm9pZCBfX3BhZ2VfdGFibGVfY2hlY2tfcHVkX2NsZWFyKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCB1bnNpZ25lZCBsb25nIGFkZHIsXFxuLS1cXG5tbS9wYWdlX3RhYmxlX2NoZWNrLmMtMTc2LVxcdGlmIChwdWRfdXNlcl9hY2Nlc3NpYmxlX3BhZ2UobW0sIGFkZHIsIHB1ZCkpXFxubW0vcGFnZV90YWJsZV9jaGVjay5jOjE3NzpcXHRcXHRwYWdlX3RhYmxlX2NoZWNrX2NsZWFyKHB1ZF9wZm4ocHVkKSwgUFVEX1NJWkUgXFx1MDAzZVxcdTAwM2UgUEFHRV9TSElGVCk7XFxubW0vcGFnZV90YWJsZV9jaGVjay5jLTE3OC19XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE4VDA1OjEwOjMzLjcxNjU4NTg3NloiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjE4NzQ1Nzc4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBQYWdlIFRhYmxlIENoZWNrIEZ1bmN0aW9ucyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgY29kZSBhbmQgaW1tZWRpYXRlbHkgbm90aWNlIHRoYXQgYHBhZ2VfdGFibGVfY2hlY2tfY2xlYXJgIGlzIGRlY2xhcmVkIGFzIGBzdGF0aWNgLiBSaWdodCwgdGhhdCBtZWFucyBpdCdzIGFuIGludGVybmFsIGZ1bmN0aW9uIGFuZCBub3QgZGlyZWN0bHkgZXhwb3NlZC4gSW5zdGVhZCwgd2UgaGF2ZSB0aGVzZSBleHBvcnRlZCBmdW5jdGlvbnMgdGhhdCBzZWVtIHRvIGJlIHRoZSBwdWJsaWMgaW50ZXJmYWNlOiBgX19wYWdlX3RhYmxlX2NoZWNrX3B0ZV9jbGVhcmAsIGBfX3BhZ2VfdGFibGVfY2hlY2tfcG1kX2NsZWFyYCwgYF9fcGFnZV90YWJsZV9jaGVja19wdWRfY2xlYXJgLCBhbmQgdGhlaXIgXCJzZXRcIiBjb3VudGVycGFydHMgYWxvbmcgd2l0aCBgX19wYWdlX3RhYmxlX2NoZWNrX3plcm9gLiBNYWtlcyBzZW5zZS4gTm93IEkgd2FudCB0byB1bmRlcnN0YW5kIHRoZWlyIGludGVyYWN0aW9ucyBhbmQgaG93IHRoZSBzdGF0aWMgZnVuY3Rpb24gZml0cyBpbi4gVGltZSB0byBkaXZlIGludG8gYG1tL3BhZ2VfdGFibGVfY2hlY2suY2AgYW5kIHNlZSBob3cgdGhlc2UgZXhwb3J0ZWQgZnVuY3Rpb25zIGFyZSBpbXBsZW1lbnRlZCBhbmQgaG93IHRoZXkgdXRpbGl6ZSB0aGF0IGludGVybmFsIGBwYWdlX3RhYmxlX2NoZWNrX2NsZWFyYCBmdW5jdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRyb2wgZmxvdywgdGhlIGRhdGEgc3RydWN0dXJlcyB1c2VkLCBhbmQgdGhlIG92ZXJhbGwgcHVycG9zZSBvZiB0aGlzIG1vZHVsZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTA1NCwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xOFQwNToxMDozNi45MzUzMzM3NzRaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU0OTMwOTA5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkVYUE9SVF9TWU1CT0xcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vcGFnZV90YWJsZV9jaGVjay5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL3BhZ2VfdGFibGVfY2hlY2suYz0yND1ERUZJTkVfU1RBVElDX0tFWV9UUlVFKHBhZ2VfdGFibGVfY2hlY2tfZGlzYWJsZWQpO1xcbm1tL3BhZ2VfdGFibGVfY2hlY2suYzoyNTpFWFBPUlRfU1lNQk9MKHBhZ2VfdGFibGVfY2hlY2tfZGlzYWJsZWQpO1xcbm1tL3BhZ2VfdGFibGVfY2hlY2suYy0yNi1cXG4tLVxcbm1tL3BhZ2VfdGFibGVfY2hlY2suYz0xNDg9dm9pZCBfX3BhZ2VfdGFibGVfY2hlY2tfcHRlX2NsZWFyKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCB1bnNpZ25lZCBsb25nIGFkZHIsXFxuLS1cXG5tbS9wYWdlX3RhYmxlX2NoZWNrLmMtMTU2LX1cXG5tbS9wYWdlX3RhYmxlX2NoZWNrLmM6MTU3OkVYUE9SVF9TWU1CT0woX19wYWdlX3RhYmxlX2NoZWNrX3B0ZV9jbGVhcik7XFxubW0vcGFnZV90YWJsZV9jaGVjay5jLTE1OC1cXG5tbS9wYWdlX3RhYmxlX2NoZWNrLmM9MTU5PXZvaWQgX19wYWdlX3RhYmxlX2NoZWNrX3BtZF9jbGVhcihzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5zaWduZWQgbG9uZyBhZGRyLFxcbi0tXFxubW0vcGFnZV90YWJsZV9jaGVjay5jLTE2Ny19XFxubW0vcGFnZV90YWJsZV9jaGVjay5jOjE2ODpFWFBPUlRfU1lNQk9MKF9fcGFnZV90YWJsZV9jaGVja19wbWRfY2xlYXIpO1xcbm1tL3BhZ2VfdGFibGVfY2hlY2suYy0xNjktXFxubW0vcGFnZV90YWJsZV9jaGVjay5jPTE3MD12b2lkIF9fcGFnZV90YWJsZV9jaGVja19wdWRfY2xlYXIoc3RydWN0IG1tX3N0cnVjdCAqbW0sIHVuc2lnbmVkIGxvbmcgYWRkcixcXG4tLVxcbm1tL3BhZ2VfdGFibGVfY2hlY2suYy0xNzgtfVxcbm1tL3BhZ2VfdGFibGVfY2hlY2suYzoxNzk6RVhQT1JUX1NZTUJPTChfX3BhZ2VfdGFibGVfY2hlY2tfcHVkX2NsZWFyKTtcXG5tbS9wYWdlX3RhYmxlX2NoZWNrLmMtMTgwLVxcbi0tXFxubW0vcGFnZV90YWJsZV9jaGVjay5jPTE5OT12b2lkIF9fcGFnZV90YWJsZV9jaGVja19wdGVzX3NldChzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5zaWduZWQgbG9uZyBhZGRyLFxcbi0tXFxubW0vcGFnZV90YWJsZV9jaGVjay5jLTIxMy19XFxubW0vcGFnZV90YWJsZV9jaGVjay5jOjIxNDpFWFBPUlRfU1lNQk9MKF9fcGFnZV90YWJsZV9jaGVja19wdGVzX3NldCk7XFxubW0vcGFnZV90YWJsZV9jaGVjay5jLTIxNS1cXG4tLVxcbm1tL3BhZ2VfdGFibGVfY2hlY2suYz0yMjg9dm9pZCBfX3BhZ2VfdGFibGVfY2hlY2tfcG1kc19zZXQoc3RydWN0IG1tX3N0cnVjdCAqbW0sIHVuc2lnbmVkIGxvbmcgYWRkcixcXG4tLVxcbm1tL3BhZ2VfdGFibGVfY2hlY2suYy0yNDMtfVxcbm1tL3BhZ2VfdGFibGVfY2hlY2suYzoyNDQ6RVhQT1JUX1NZTUJPTChfX3BhZ2VfdGFibGVfY2hlY2tfcG1kc19zZXQpO1xcbm1tL3BhZ2VfdGFibGVfY2hlY2suYy0yNDUtXFxubW0vcGFnZV90YWJsZV9jaGVjay5jPTI0Nj12b2lkIF9fcGFnZV90YWJsZV9jaGVja19wdWRzX3NldChzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5zaWduZWQgbG9uZyBhZGRyLFxcbi0tXFxubW0vcGFnZV90YWJsZV9jaGVjay5jLTI1OS19XFxubW0vcGFnZV90YWJsZV9jaGVjay5jOjI2MDpFWFBPUlRfU1lNQk9MKF9fcGFnZV90YWJsZV9jaGVja19wdWRzX3NldCk7XFxubW0vcGFnZV90YWJsZV9jaGVjay5jLTI2MS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMThUMDU6MTA6MzYuOTkwMjY5MzUzWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxMjM4MTAxMTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBQYWdlIFRhYmxlIENoZWNrIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyB0aGUgZnVuY3Rpb25zIHJlbGF0ZWQgdG8gdGhpcyBhcmUgYmVpbmcgZXhwb3J0ZWQsIHRoYXQncyB0aGUgc3RhcnRpbmcgcG9pbnQuIE15IGNvbmZpZyBpcyBgUEFHRV9UQUJMRV9DSEVDS2AsIHJpZ2h0PyBBaCwgaG9sZCBvbiwgSSBzZWUgYFBBR0VfVEFCTEVfQ0hFQ0tfRU5GT1JDRURgIGFzIHdlbGwuIE5vdyB0aGluZ3MgYXJlIGdldHRpbmcgaW50ZXJlc3RpbmcuIElmIGBQQUdFX1RBQkxFX0NIRUNLX0VORk9SQ0VEYCBpc24ndCBlbmFibGVkLCB0aGVuIHdlJ2xsIGxpa2VseSBuZWVkIGEgYm9vdCBwYXJhbWV0ZXIg4oCTIHNvbWV0aGluZyBsaWtlIGBwYWdlX3RhYmxlX2NoZWNrPW9uYCDigJMgdG8gYWN0dWFsbHkgYWN0aXZhdGUgdGhlIGNoZWNrcy4gVGltZSB0byBkaWcgaW50byB0aGUgaW1wbGVtZW50YXRpb24gaXRzZWxmLCBzbyBJJ2xsIGNoZWNrIGBtbS9wYWdlX3RhYmxlX2NoZWNrLmNgIHRvIHNlZSBob3cgdGhhdCBgcGFnZV90YWJsZV9jaGVjaz1vbmAgYm9vdCBwYXJhbWV0ZXIgaXMgaGFuZGxlZCBhbmQgaG93IHRoZSBmZWF0dXJlIGlzIGVuYWJsZWQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBmdWxsIGZsb3cgaGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NjEwNSwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjkxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE4VDA1OjEwOjQwLjExNDA4MTU3M1oiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTY0ODI4NzksIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBhZ2VfdGFibGVfY2hlY2s9XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL3BhZ2VfdGFibGVfY2hlY2suY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMThUMDU6MTA6NDAuMTcwNTc0OTIyWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI2MjA5MDE1OTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkludmVzdGlnYXRpbmcgUG90ZW50aWFsIEluaXRpYWxpemF0aW9uIElzc3VlcyBpbiB0aGUgUGFnZSBUYWJsZSBDaGVjayoqXG5cbkFscmlnaHQsIEkgbmVlZCB0byBkaWcgaW50byB0aGUgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UgZm9yIHRoaXMgcGFnZSB0YWJsZSBjaGVjayByb3V0aW5lLiBXaGVyZSdzIHRoZSBiZXN0IHBsYWNlIHRvIHN0YXJ0PyBNeSBpbml0aWFsIGh1bmNoIGlzIHRvIGxvb2sgY2xvc2VseSBhdCB0aGUgYF9fc2V0dXBgIG9yIHRoZSBgZWFybHlfcGFyYW1gIGZ1bmN0aW9ucyB3aXRoaW4gYG1tL3BhZ2VfdGFibGVfY2hlY2suY2AuIFRoZXNlIGFyZSB0aGUgdHlwaWNhbCBlbnRyeSBwb2ludHMgZm9yIGVhcmx5IGNvbmZpZ3VyYXRpb24gYW5kIGluaXRpYWxpemF0aW9uIHdpdGhpbiB0aGlzIGFyZWEgb2YgdGhlIG1lbW9yeSBtYW5hZ2VtZW50IGNvZGUuIFRoYXQgc2VlbXMgbGlrZSB0aGUgbW9zdCBsb2dpY2FsIHBsYWNlIHRvIGJlZ2luIG15IGludmVzdGlnYXRpb24gdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBpcyBoYW5kbGVkLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiB0aGUgaXNzdWUgc3RlbXMgZnJvbSBhbiBpbmNvcnJlY3QgaW5pdGlhbCBwYXJhbWV0ZXIsIG9yIHBlcmhhcHMgYSBjb25mbGljdCBkdXJpbmcgZWFybHkgc2V0dXAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY0MTUsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xOFQwNToxMDo0Mi43OTE0Nzg3MDVaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU2MzY2Mjc5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImVhcmx5X3BhcmFtXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL3BhZ2VfdGFibGVfY2hlY2suY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9wYWdlX3RhYmxlX2NoZWNrLmM9Mjc9c3RhdGljIGludCBfX2luaXQgZWFybHlfcGFnZV90YWJsZV9jaGVja19wYXJhbShjaGFyICpidWYpXFxuLS1cXG5tbS9wYWdlX3RhYmxlX2NoZWNrLmMtMzEtXFxubW0vcGFnZV90YWJsZV9jaGVjay5jOjMyOmVhcmx5X3BhcmFtKFxcXCJwYWdlX3RhYmxlX2NoZWNrXFxcIiwgZWFybHlfcGFnZV90YWJsZV9jaGVja19wYXJhbSk7XFxubW0vcGFnZV90YWJsZV9jaGVjay5jLTMzLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xOFQwNToxMDo0Mi44NDc4NTA4ODRaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzQ2ODkwMTM4OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipFbmFibGluZyBQYWdlIFRhYmxlIENoZWNrcyBmb3IgRnV6emluZyoqXG5cbk9rYXksIHNvIGlmIGBQQUdFX1RBQkxFX0NIRUNLX0VORk9SQ0VEYCBpcyBzZXQsIGl0IGRlZmF1bHRzIHRvIGVuYWJsZWQuIFRoYXQgbWFrZXMgc2Vuc2UsIHNvIGxldCdzIGVuYWJsZSBib3RoIGBQQUdFX1RBQkxFX0NIRUNLYCBhbmQgYFBBR0VfVEFCTEVfQ0hFQ0tfRU5GT1JDRURgLiBOb3csIGJlZm9yZSBnb2luZyBmdXJ0aGVyLCBJIG5lZWQgdG8gY2hlY2sgdGhlIGRlcGVuZGVuY2llcyBmb3IgYFBBR0VfVEFCTEVfQ0hFQ0tgLiBIbW0sIGl0IGRlcGVuZHMgb24gYEFSQ0hfU1VQUE9SVFNfUEFHRV9UQUJMRV9DSEVDS2AgYW5kIGBFWENMVVNJVkVfU1lTVEVNX1JBTWAuIEdvb2QsIHRoYXQncyBzdHJhaWdodGZvcndhcmQuIEknbSBnb2luZyB0byBxdWlja2x5IHZlcmlmeSBgUEFHRV9UQUJMRV9DSEVDS19FTkZPUkNFRGAgZG9lc24ndCBoYXZlIGFueSBoaWRkZW4gZGVwZW5kZW5jaWVzLlxuXG5Ob3csIGZvciB0aGUgZnV6emluZyB0YXJnZXRzLiBNeSBpbml0aWFsIHRob3VnaHQgd2FzIHRvIGhpdCB0aGVzZSBmdW5jdGlvbnMgZGlyZWN0bHk6IGBfX3BhZ2VfdGFibGVfY2hlY2tfcHRlX2NsZWFyYCwgYF9fcGFnZV90YWJsZV9jaGVja19wbWRfY2xlYXJgLCBgX19wYWdlX3RhYmxlX2NoZWNrX3B1ZF9jbGVhcmAsIGBfX3BhZ2VfdGFibGVfY2hlY2tfcHRlc19zZXRgLCBgX19wYWdlX3RhYmxlX2NoZWNrX3BtZHNfc2V0YCwgYF9fcGFnZV90YWJsZV9jaGVja19wdWRzX3NldGAsIGFuZCBgX19wYWdlX3RhYmxlX2NoZWNrX3plcm9gLlxuXG5CdXQgd2FpdCBhIG1pbnV0ZSwgSSBzZWUgdGhvc2UgYXJlIGNhbGxlZCBmcm9tIG90aGVyIGZ1bmN0aW9ucyDigJMgYF9fcGFnZV90YWJsZV9jaGVja19wdGVzX3NldGAgYW5kIHN1Y2ggYXJlIGNhbGxlZCBieSBgcGFnZV90YWJsZV9jaGVja19zZXRgLCBgcGFnZV90YWJsZV9jaGVja19jbGVhcmAsIGBfX3BhZ2VfdGFibGVfY2hlY2tfemVyb2AuIEFyZSB0aGVzZSBob3QtcGF0aCBmdW5jdGlvbnM/IFBhZ2UgdGFibGUgbW9kaWZpY2F0aW9ucyBhcmUgY29tbW9uLCBlc3BlY2lhbGx5IG9uIGV2ZXJ5IHBhZ2UgZmF1bHQsIGFuZCBtdW5tYXAvZXhpdC4gQnV0IHRoZSBwcm9tcHQgc3BlY2lmaWNhbGx5IHNheXMgdG8gYXZvaWQgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMuIEhvd2V2ZXIsIHRoZXNlIGFyZSAqZXhhY3RseSogd2hlcmUgdGhlIG1vZGlmaWVkIGNvZGUgaXMgZXhlY3V0ZWQuIFRoYXQgbWFrZXMgdGhlbSBwZXJmZWN0IHRhcmdldHMuIEJldHRlciB0byBmb2N1cyBvbiB0aG9zZSBleHBvcnRlZCB3cmFwcGVyIGZ1bmN0aW9ucy5cblxuU28sIGxldCdzIGtlZXAgaXQgY2xlYW4uIExldCdzIG1ha2Ugc3VyZSB0aGVyZSBhcmVuJ3QgYW55IG90aGVyIHJlbGF0ZWQgY29uZmlncywgZG91YmxlLWNoZWNraW5nIGBQQUdFX1RBQkxFX0NIRUNLX0VORk9SQ0VEYCBpbiBgbW0vS2NvbmZpZy5kZWJ1Z2AgYW5kIG1vdmUgZm9yd2FyZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NjczNSwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYwMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xOFQwNToxMDo1MC4zMTY3NTQwNzNaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3NDczMjg5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBQQUdFX1RBQkxFX0NIRUNLX0VORk9SQ0VEXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL0tjb25maWcuZGVidWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vS2NvbmZpZy5kZWJ1Zz0xMjI9Y29uZmlnIFBBR0VfVEFCTEVfQ0hFQ0tcXG4tLVxcbm1tL0tjb25maWcuZGVidWctMTM1LVxcbm1tL0tjb25maWcuZGVidWc6MTM2OmNvbmZpZyBQQUdFX1RBQkxFX0NIRUNLX0VORk9SQ0VEXFxubW0vS2NvbmZpZy5kZWJ1Zy0xMzctXFx0Ym9vbCBcXFwiRW5mb3JjZSB0aGUgcGFnZSB0YWJsZSBjaGVja2luZyBieSBkZWZhdWx0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xOFQwNToxMDo1MC4zNzQyMzM1MzJaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzMzMzk2MjE3NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGFuYWx5c2lzIG9mIHRoZSBzaXR1YXRpb246XG5cbioqUGFnZSBUYWJsZSBDaGVjayBFbmZvcmNlbWVudCBcdTAwMjYgUG90ZW50aWFsIE92ZXJmbG93KipcblxuT2theSwgdGhlIGtleSBjb25maWd1cmF0aW9uIG9wdGlvbiBoZXJlIGlzIGBQQUdFX1RBQkxFX0NIRUNLX0VORk9SQ0VEYC4gR290IGl0LlxuXG5UaGlzIHBhdGNoIGlzIG1vZGlmeWluZyB0aGUgYHN0cnVjdCBwYWdlX3RhYmxlX2NoZWNrYCBieSBzd2l0Y2hpbmcgZnJvbSBgYXRvbWljX3RgIHRvIGBhdG9taWM2NF90YC4gVGhhdCdzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIGEgYml0IG1vcmUgc2lnbmlmaWNhbnQgdGhhbiBhIHB1cmVseSBjb3NtZXRpYyBhbHRlcmF0aW9uLiBUaGUgcmVhc29uPyBJdCdzIGRpcmVjdGx5IGFkZHJlc3NpbmcgYSBwb3RlbnRpYWwgb3ZlcmZsb3cgaXNzdWUuIE1ha2VzIHNlbnNlOyBndWFyZGluZyBhZ2FpbnN0IHRoYXQgaXMgYWx3YXlzIGEgZ29vZCBwcmFjdGljZSwgZXNwZWNpYWxseSBpbiBzb21ldGhpbmcgYXMgY3JpdGljYWwgYXMgcGFnZSB0YWJsZSBtYW5hZ2VtZW50LlxuXG5Ob3csIGEgZnVuY3Rpb25hbCBjaGFuZ2UgbGlrZSB0aGlzPyBUaGF0IGFic29sdXRlbHkgd2FycmFudHMgc29tZSBmdXp6aW5nLiBOZWVkIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IHN1YnRsZSBpbnRlcmFjdGlvbnMgb3IgdW5leHBlY3RlZCBiZWhhdmlvcnMgdGhhdCBzdXJmYWNlIHVuZGVyIGxvYWQuIEl0J3MgYmVzdCB0byBiZSBkaWxpZ2VudC5cblxuQW5kIG9uZSBtb3JlIHRoaW5nLCBsZXQgbWUganVzdCBxdWlja2x5IGNvbmZpcm0gdGhhdCB0aGUgd2hvbGUgYFBBR0VfVEFCTEVfQ0hFQ0tgIGZlYXR1cmUgaXMgc3VwcG9ydGVkIG9uIHg4NiwganVzdCB0byBlbnN1cmUgdGhpcyBjaGFuZ2UgaXMgZXZlbiByZWxldmFudCBmb3IgdGhlIHRhcmdldCBwbGF0Zm9ybS5cblxuXG4iLCJJbnB1dFRva2VucyI6Nzg5MSwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE4VDA1OjEwOjUzLjcwODE5ODA0N1oiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA0MjA1MDk3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkFSQ0hfU1VQUE9SVFNfUEFHRV9UQUJMRV9DSEVDS1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3g4Ni9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC94ODYvS2NvbmZpZz01OD1jb25maWcgWDg2XFxuLS1cXG5hcmNoL3g4Ni9LY29uZmlnLTEyNS1cXHRzZWxlY3QgQVJDSF9TVVBQT1JUU19IVUdFVExCRlNcXG5hcmNoL3g4Ni9LY29uZmlnOjEyNjpcXHRzZWxlY3QgQVJDSF9TVVBQT1JUU19QQUdFX1RBQkxFX0NIRUNLXFx0aWYgWDg2XzY0XFxuYXJjaC94ODYvS2NvbmZpZy0xMjctXFx0c2VsZWN0IEFSQ0hfSEFTX1BURV9QUk9UTk9ORVxcdFxcdGlmIFg4Nl82NFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xOFQwNToxMDo1My44MTI0MDc5NzRaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjMxNzk1NTQyMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBDdXJyZW50IExpbmUgb2YgUmVhc29uaW5nKipcblxuT2theSwgc28gSSd2ZSBjb25maXJtZWQgeDg2XzY0IHN1cHBvcnQg4oCTIHRoYXQncyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIE5vdywgdGhlIGNyaXRpY2FsIG5leHQgc3RlcCBpcyB0byBkZXRlcm1pbmUgaWYgYEVYQ0xVU0lWRV9TWVNURU1fUkFNYCBpcyBzdXBwb3J0ZWQgb24geDg2IGFyY2hpdGVjdHVyZSBnZW5lcmFsbHkuIFRoaXMgaXMgYSBjcnVjaWFsIHBpZWNlIG9mIGluZm9ybWF0aW9uIGZvciB0aGUgY3VycmVudCB0YXNrLCBhbmQgdW5kZXJzdGFuZGluZyBpdHMgYXZhaWxhYmlsaXR5IChvciBsYWNrIHRoZXJlb2YpIHdpbGwgZGljdGF0ZSB0aGUgZGlyZWN0aW9uIG9mIG15IG5leHQgaW52ZXN0aWdhdGlvbi4gSSBuZWVkIHRvIGJlIGNlcnRhaW4gYWJvdXQgdGhpcy5cblxuXG4iLCJJbnB1dFRva2VucyI6ODM0MywiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE4VDA1OjEwOjU2LjEzMDM2NTQ1NVoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzMyMjI3NTgsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkVYQ0xVU0lWRV9TWVNURU1fUkFNXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gveDg2L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMThUMDU6MTA6NTYuMjAzNTk2NDczWiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI4Nzc3Mzc5MTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBIZXJlJ3MgaG93IEknZCBhcHByb2FjaCB0aGlzIHRhc2ssIGFzIGlmIHRoZXNlIHdlcmUgbXkgaW50ZXJuYWwgdGhvdWdodHM6XG5cbioqTG9jYXRpbmcgdGhlIERlZmluaXRpb24gb2YgRVhDTFVTSVZFX1NZU1RFTV9SQU0qKlxuXG5BbHJpZ2h0LCB0aGUgZmlyc3QgdGhpbmcgSSBuZWVkIHRvIGRvIGlzIHBpbnBvaW50IHRoZSBkZWZpbml0aW9uIG9mIHRoaXMgYEVYQ0xVU0lWRV9TWVNURU1fUkFNYCB2YXJpYWJsZS4gVGhpcyBpcyBjcml0aWNhbCBiZWNhdXNlIHdpdGhvdXQga25vd2luZyAqd2hhdCogaXQgaXMsIHVuZGVyc3RhbmRpbmcgaXRzIGNvbnRleHQgaXMgaW1wb3NzaWJsZS4gSXQncyBhbG1vc3QgY2VydGFpbmx5IGEgbWFjcm8sIGEgY29uc3RhbnQsIG9yIG1heWJlIGV2ZW4gYSB2YXJpYWJsZSBkZWZpbmVkIHNvbWV3aGVyZSBpbiB0aGUgcHJvamVjdCdzIGNvZGViYXNlIG9yIGEgbGlua2VkIGxpYnJhcnksIGJ1dCBJIGNhbid0IGJlIHN1cmUgdW50aWwgSSBmaW5kIGl0LiBTbyBJIG5lZWQgdG8gdHJhY2UgdGhpcyBiYWNrIHRvIGl0cyBkZWNsYXJhdGlvbi4gSSdsbCBuZWVkIHRvIGtub3cgd2hlcmUgdGhpcyBpcyBkZWZpbmVkLCBiZWNhdXNlIHRoYXQnbGwgdGVsbCBtZSB3aGF0IGl0J3MgZm9yLCBhbmQgaG93IGl0IGlzIHN1cHBvc2VkIHRvIGJlIGhhbmRsZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg1MTcsIk91dHB1dFRva2VucyI6MjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xOFQwNToxMDo1OS4wODEzMzYzM1oiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDE5OTQ3NTY4MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgRVhDTFVTSVZFX1NZU1RFTV9SQU1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL0tjb25maWc9NTAyPWNvbmZpZyBNRU1PUllfSVNPTEFUSU9OXFxuLS1cXG5tbS9LY29uZmlnLTUwNy0jIC9kZXYvbWVtLlxcbm1tL0tjb25maWc6NTA4OmNvbmZpZyBFWENMVVNJVkVfU1lTVEVNX1JBTVxcbm1tL0tjb25maWctNTA5LVxcdGRlZl9ib29sIHlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMThUMDU6MTE6MDMuMjgwODE2MzkzWiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwNjUyODM3OTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgc3VtbWFyaXplZCBpbiB0aGUgZmlyc3QgcGVyc29uLCBhc3N1bWluZyBhbiBleHBlcnQtbGV2ZWwgdW5kZXJzdGFuZGluZzpcblxuKipLY29uZmlnIERlcGVuZGVuY3kgRGVlcCBEaXZlKipcblxuQWxyaWdodCwgc28gSSdtIGxvb2tpbmcgYXQgYSBgZGVmX2Jvb2wgeWAgaW4gdGhlIGBtbS9LY29uZmlnYCBmaWxlLiBJbnN0YW50bHksIG15IG1pbmQganVtcHMgdG8gdGhlIGRlcGVuZGVuY2llcy4gSXQncyBub3QgYSBzdGFuZGFsb25lIG9wdGlvbjsgaXQncyBjb250aW5nZW50IG9uIGVpdGhlciBgU1RSSUNUX0RFVk1FTWAgb3IgYElPX1NUUklDVF9ERVZNRU1gIGJlaW5nIGRlZmluZWQuIFRoaXMgbGlrZWx5IG1lYW5zIHdlJ3JlIGRlYWxpbmcgd2l0aCBhIGJvb2xlYW4gb3B0aW9uIGNvbnRyb2xsZWQgYnkgbWVtb3J5IHJlc3RyaWN0aW9ucywgYW5kIGl0cyBkZWZhdWx0IHN0YXRlIGlzICd5ZXMnIG9ubHkgdW5kZXIgc3BlY2lmaWMgY2lyY3Vtc3RhbmNlcy4gTXkgaW5pdGlhbCBxdWVzdGlvbnMgYXJlOiB3aGF0IGlzIHRoZSBtZWFuaW5nIG9mIHk/IERvZXMgdGhlIG5hbWUgb2YgdGhlIGRlZmluaXRpb24gZ2l2ZSB1cyBhIGNsdWU/IEFyZSB0aGVyZSBvdGhlciBpbnN0YW5jZXMgb2YgdGhpcywgYW5kIGhvdyBjYW4gdGhleSBiZSB1c2VkIG9yIGNvbXBhcmVkIHRvIHVuZGVyc3RhbmQgdGhlIGludGVudCBiZXR0ZXI/XG5cblxuIiwiSW5wdXRUb2tlbnMiOjg4MDcsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjozOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xOFQwNToxMTowNi4zNDYxMDIwNDVaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU4MDkxNjk4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkVYQ0xVU0lWRV9TWVNURU1fUkFNXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vS2NvbmZpZz01MDI9Y29uZmlnIE1FTU9SWV9JU09MQVRJT05cXG4tLVxcbm1tL0tjb25maWctNTA3LSMgL2Rldi9tZW0uXFxubW0vS2NvbmZpZzo1MDg6Y29uZmlnIEVYQ0xVU0lWRV9TWVNURU1fUkFNXFxubW0vS2NvbmZpZy01MDktXFx0ZGVmX2Jvb2wgeVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xOFQwNToxMTowNi40MDQxOTgxNDNaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjUxMjQ3MzA3NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoYXQgZGlyZWN0aXZlOlxuXG4qKkFuYWx5emluZyB0aGUgS2NvbmZpZyBGaWxlIGZvciBHdWlkYW5jZSoqXG5cbk9rYXksIGhvbGQgb24gYSBzZWNvbmQsIGJlZm9yZSBJIGRpdmUgdG9vIGRlZXAgaW50byB0aGlzIHByb2JsZW0uIExldCdzIGdldCBhIG1vcmUgZ3JhbnVsYXIgdmlldyBvZiB0aGUgc2l0dWF0aW9uLiBJIHNob3VsZCByZWFsbHkgdGFrZSBhIGxvb2sgYXQgdGhlIGBtbS9LY29uZmlnYCBmaWxlLCBzcGVjaWZpY2FsbHkgYXJvdW5kIGxpbmUgNTA4LiBUaGF0IGFyZWEgaXMgbGlrZWx5IHRvIGNvbnRhaW4gdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIG1lbW9yeSBtYW5hZ2VtZW50LiBJdCdzIHByb2JhYmx5IHdoZXJlIHRoZSByZWxldmFudCBzeW1ib2xzIGFuZCB0aGVpciBkZXBlbmRlbmNpZXMgYXJlIGRlZmluZWQuIEFuYWx5emluZyB0aGF0IHNlY3Rpb24gY2FyZWZ1bGx5IHdpbGwgZ2l2ZSBtZSBhIGNsZWFyIHBpY3R1cmUgb2Ygd2hhdCBvcHRpb25zIGFyZSBhdmFpbGFibGUsIGhvdyB0aGV5J3JlIGludGVuZGVkIHRvIGJlIHVzZWQsIGFuZCBpZiB0aGVyZSBhcmUgYW55IHN1YnRsZSBjb25maWd1cmF0aW9ucyBJIG1pZ2h0IGJlIG1pc3NpbmcuIFRoaXMgaXMgYSBjcml0aWNhbCBzdGVwIGJlZm9yZSBtYWtpbmcgYW55IGZ1cnRoZXIgYXNzdW1wdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjkxMzAsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xOFQwNToxMTowOC45MTY2NzMxMDlaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTIxNDIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm1tL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogNTAwLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNTAwOlxcdFxcdGJvb2xcXG4gNTAxOlxcdFxcbiA1MDI6XFx0Y29uZmlnIE1FTU9SWV9JU09MQVRJT05cXG4gNTAzOlxcdFxcdGJvb2xcXG4gNTA0OlxcdFxcbiA1MDU6XFx0IyBJT1JFU09VUkNFX1NZU1RFTV9SQU0gcmVnaW9ucyBpbiB0aGUga2VybmVsIHJlc291cmNlIHRyZWUgdGhhdCBhcmUgbWFya2VkXFxuIDUwNjpcXHQjIElPUkVTT1VSQ0VfRVhDTFVTSVZFIGNhbm5vdCBiZSBtYXBwZWQgdG8gdXNlciBzcGFjZSwgZm9yIGV4YW1wbGUsIHZpYVxcbiA1MDc6XFx0IyAvZGV2L21lbS5cXG4gNTA4OlxcdGNvbmZpZyBFWENMVVNJVkVfU1lTVEVNX1JBTVxcbiA1MDk6XFx0XFx0ZGVmX2Jvb2wgeVxcbiA1MTA6XFx0XFx0ZGVwZW5kcyBvbiAhREVWTUVNIHx8IFNUUklDVF9ERVZNRU1cXG4gNTExOlxcdFxcbiA1MTI6XFx0I1xcbiA1MTM6XFx0IyBPbmx5IGJlIHNldCBvbiBhcmNoaXRlY3R1cmVzIHRoYXQgaGF2ZSBjb21wbGV0ZWx5IGltcGxlbWVudGVkIG1lbW9yeSBob3RwbHVnXFxuIDUxNDpcXHQjIGZlYXR1cmUuIElmIHlvdSBhcmUgbm90IHN1cmUsIGRvbid0IHRvdWNoIGl0LlxcbiA1MTU6XFx0I1xcbiA1MTY6XFx0Y29uZmlnIEhBVkVfQk9PVE1FTV9JTkZPX05PREVcXG4gNTE3OlxcdFxcdGRlZl9ib29sIG5cXG4gNTE4OlxcdFxcbiA1MTk6XFx0Y29uZmlnIEFSQ0hfRU5BQkxFX01FTU9SWV9IT1RQTFVHXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE4VDA1OjExOjA4LjkxNjc5NTcyWiIsIlNlcSI6MzEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc2MjgwNDE2MzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBQQUdFX1RBQkxFX0NIRUNLIEhvdCBQYXRoIGZvciBGdXp6aW5nKipcblxuT2theSwgc28gbG9va2luZyBhdCB0aGlzLCBgRVhDTFVTSVZFX1NZU1RFTV9SQU1gIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCB1bmRlciB0aGUgY29uZGl0aW9ucyBgIURFVk1FTSB8fCBTVFJJQ1RfREVWTUVNYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hpY2ggZnVuY3Rpb25zIGFyZSB0aGUgXCJob3QgcGF0aFwiIGZvciBmdXp6aW5nLCBzcGVjaWZpY2FsbHkgdGhvc2UgZnVuY3Rpb25zIHRoYXQgaW1wbGVtZW50IHRoZSBjb2RlIG1vZGlmaWNhdGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2guIFRoZSBwcm9tcHQgaW5zdHJ1Y3RzIG1lIHRvIGF2b2lkICpnZW5lcmljKiBob3QtcGF0aCBmdW5jdGlvbnMsIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cblxuTXkgZm9jdXMgc2hvdWxkIGJlIG9uOlxuXG4qICAgYF9fcGFnZV90YWJsZV9jaGVja19wdGVfY2xlYXJgXG4qICAgYF9fcGFnZV90YWJsZV9jaGVja19wbWRfY2xlYXJgXG4qICAgYF9fcGFnZV90YWJsZV9jaGVja19wdWRfY2xlYXJgXG4qICAgYF9fcGFnZV90YWJsZV9jaGVja19wdGVzX3NldGBcbiogICBgX19wYWdlX3RhYmxlX2NoZWNrX3BtZHNfc2V0YFxuKiAgIGBfX3BhZ2VfdGFibGVfY2hlY2tfcHVkc19zZXRgXG4qICAgYF9fcGFnZV90YWJsZV9jaGVja196ZXJvYFxuXG5UaGVzZSBmdW5jdGlvbnMgYXJlIGNhbGxlZCBvbiAqZXZlcnkqIHBhZ2UgdGFibGUgbW9kaWZpY2F0aW9uLCBzbyB0aGV5IGFyZSB1bmRlbmlhYmx5IGhvdCBhbmQgd2hlcmUgdGhlIG5ldyBsb2dpYyBpcyBleGVjdXRlZC4gVGhlIHF1ZXN0aW9uIGlzLCBhcmUgdGhleSBjb25zaWRlcmVkIGdlbmVyaWM/IEknZCBhcmd1ZSBub3QuIFRoZXkncmUgc3BlY2lmaWMgdG8gdGhlIGBQQUdFX1RBQkxFX0NIRUNLYCBmZWF0dXJlLiBJJ2xsIGluY2x1ZGUgdGhlbS5cblxuSSBqdXN0IGRvdWJsZS1jaGVja2VkIGFuZCBgcGFnZV90YWJsZV9jaGVja19zZXRgIGFuZCBgcGFnZV90YWJsZV9jaGVja19jbGVhcmAgYXJlIHN0YXRpYywgYXMgSSBleHBlY3RlZCwgbWVhbmluZyB0aGVzZSB3aWxsIGJlIHRoZSBzeW1ib2xzIHRvIGZvY3VzIG9uLlxuXG5TbyB0aGUgbWFpbiBjb25maWcgb3B0aW9ucyBpbiBwbGF5IGhlcmUgYXJlOlxuKiAgIGBQQUdFX1RBQkxFX0NIRUNLYFxuKiAgIGBQQUdFX1RBQkxFX0NIRUNLX0VORk9SQ0VEYFxuXG5UaGUgcGF0Y2ggaXMgYWJvdXQgY2hhbmdpbmcgdGhlIGBhbm9uX21hcF9jb3VudGAgYW5kIGBmaWxlX21hcF9jb3VudGAgZnJvbSBgYXRvbWljX3RgIHRvIGBhdG9taWM2NF90YCB3aXRoaW4gdGhlIGBzdHJ1Y3QgcGFnZV90YWJsZV9jaGVja2AuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBhbmQgdGhlIG1haW4gYXJlYSB0aGF0IHJlcXVpcmVzIGZ1enppbmcuIFRoZSBwYXRjaCBpcyB0byBwcmV2ZW50IG92ZXJmbG93cywgaXQgd2lsbCBiZSByZWFjaGVkIGR1cmluZyB0aGUgdHlwaWNhbCBwYWdlIHRhYmxlIG1vZGlmaWNhdGlvbnMsIHN1Y2ggYXMgbW1hcCBhbmQgbXVubWFwLiBXZSBuZWVkIHRvIGZ1enogdGhlc2UgZnVuY3Rpb25zIHRvIG1ha2Ugc3VyZSB0aGUgNjQtYml0IGF0b21pYyBvcGVyYXRpb25zIHdvcmsgY29ycmVjdGx5IGFuZCBkb24ndCBpbnRyb2R1Y2UgYW55IHJlZ3Jlc3Npb25zLlxuXG5Ob3csIGxldCdzIGNhbGwgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6OTYxNCwiT3V0cHV0VG9rZW5zIjoyMzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0ODUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xOFQwNToxMToxNi41NDQ4MzkyNDVaIiwiU2VxIjozMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3ODMxNzI5OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiUEFHRV9UQUJMRV9DSEVDS1wiLFxuICAgIFwiUEFHRV9UQUJMRV9DSEVDS19FTkZPUkNFRFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIl9fcGFnZV90YWJsZV9jaGVja19wdGVfY2xlYXJcIixcbiAgICBcIl9fcGFnZV90YWJsZV9jaGVja19wbWRfY2xlYXJcIixcbiAgICBcIl9fcGFnZV90YWJsZV9jaGVja19wdWRfY2xlYXJcIixcbiAgICBcIl9fcGFnZV90YWJsZV9jaGVja19wdGVzX3NldFwiLFxuICAgIFwiX19wYWdlX3RhYmxlX2NoZWNrX3BtZHNfc2V0XCIsXG4gICAgXCJfX3BhZ2VfdGFibGVfY2hlY2tfcHVkc19zZXRcIixcbiAgICBcIl9fcGFnZV90YWJsZV9jaGVja196ZXJvXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggY2hhbmdlcyB0aGUgdHlwZSBvZiBhbm9uX21hcF9jb3VudCBhbmQgZmlsZV9tYXBfY291bnQgaW4gc3RydWN0IHBhZ2VfdGFibGVfY2hlY2sgZnJvbSBhdG9taWNfdCB0byBhdG9taWM2NF90IHRvIHByZXZlbnQgcG90ZW50aWFsIG92ZXJmbG93cy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBwYWdlIHRhYmxlIGNoZWNrIGxvZ2ljLCB3aGljaCBjYW4gYmUgcmVhY2hlZCBkdXJpbmcgcGFnZSB0YWJsZSBtb2RpZmljYXRpb25zIChlLmcuLCBtbWFwLCBtdW5tYXApLiBGdXp6aW5nIGlzIG5lZWRlZCB0byBlbnN1cmUgdGhlIDY0LWJpdCBhdG9taWMgb3BlcmF0aW9ucyB3b3JrIGNvcnJlY3RseSBhbmQgZG8gbm90IGludHJvZHVjZSByZWdyZXNzaW9ucy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJQQUdFX1RBQkxFX0NIRUNLXCIsXG4gICAgXCJQQUdFX1RBQkxFX0NIRUNLX0VORk9SQ0VEXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiX19wYWdlX3RhYmxlX2NoZWNrX3B0ZV9jbGVhclwiLFxuICAgIFwiX19wYWdlX3RhYmxlX2NoZWNrX3BtZF9jbGVhclwiLFxuICAgIFwiX19wYWdlX3RhYmxlX2NoZWNrX3B1ZF9jbGVhclwiLFxuICAgIFwiX19wYWdlX3RhYmxlX2NoZWNrX3B0ZXNfc2V0XCIsXG4gICAgXCJfX3BhZ2VfdGFibGVfY2hlY2tfcG1kc19zZXRcIixcbiAgICBcIl9fcGFnZV90YWJsZV9jaGVja19wdWRzX3NldFwiLFxuICAgIFwiX19wYWdlX3RhYmxlX2NoZWNrX3plcm9cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBjaGFuZ2VzIHRoZSB0eXBlIG9mIGFub25fbWFwX2NvdW50IGFuZCBmaWxlX21hcF9jb3VudCBpbiBzdHJ1Y3QgcGFnZV90YWJsZV9jaGVjayBmcm9tIGF0b21pY190IHRvIGF0b21pYzY0X3QgdG8gcHJldmVudCBwb3RlbnRpYWwgb3ZlcmZsb3dzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIHBhZ2UgdGFibGUgY2hlY2sgbG9naWMsIHdoaWNoIGNhbiBiZSByZWFjaGVkIGR1cmluZyBwYWdlIHRhYmxlIG1vZGlmaWNhdGlvbnMgKGUuZy4sIG1tYXAsIG11bm1hcCkuIEZ1enppbmcgaXMgbmVlZGVkIHRvIGVuc3VyZSB0aGUgNjQtYml0IGF0b21pYyBvcGVyYXRpb25zIHdvcmsgY29ycmVjdGx5IGFuZCBkbyBub3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowtb5dc[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-18 04:36:12 +0000 UTC FinishedAt: 2026-07-18 05:11:18 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "cdf364ca2496d44343e72043457ebac92e1458ba", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "PAGE_TABLE_CHECK", "PAGE_TABLE_CHECK_ENFORCED" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "cdf364ca2496d44343e72043457ebac92e1458ba", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "PAGE_TABLE_CHECK", "PAGE_TABLE_CHECK_ENFORCED" ], "series_id": "9f11e0c5-e273-4d5a-a981-d06ac4560bb5" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "__page_table_check_pte_clear", "__page_table_check_pmd_clear", "__page_table_check_pud_clear", "__page_table_check_ptes_set", "__page_table_check_pmds_set", "__page_table_check_puds_set", "__page_table_check_zero" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": true, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE4IDA1OjEwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1BBR0VfVEFCTEVfQ0hFQ0smIzM0OywKICAgICYjMzQ7UEFHRV9UQUJMRV9DSEVDS19FTkZPUkNFRCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O19fcGFnZV90YWJsZV9jaGVja19wdGVfY2xlYXImIzM0OywKICAgICYjMzQ7X19wYWdlX3RhYmxlX2NoZWNrX3BtZF9jbGVhciYjMzQ7LAogICAgJiMzNDtfX3BhZ2VfdGFibGVfY2hlY2tfcHVkX2NsZWFyJiMzNDssCiAgICAmIzM0O19fcGFnZV90YWJsZV9jaGVja19wdGVzX3NldCYjMzQ7LAogICAgJiMzNDtfX3BhZ2VfdGFibGVfY2hlY2tfcG1kc19zZXQmIzM0OywKICAgICYjMzQ7X19wYWdlX3RhYmxlX2NoZWNrX3B1ZHNfc2V0JiMzNDssCiAgICAmIzM0O19fcGFnZV90YWJsZV9jaGVja196ZXJvJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGNoYW5nZXMgdGhlIHR5cGUgb2YgYW5vbl9tYXBfY291bnQgYW5kIGZpbGVfbWFwX2NvdW50IGluIHN0cnVjdCBwYWdlX3RhYmxlX2NoZWNrIGZyb20gYXRvbWljX3QgdG8gYXRvbWljNjRfdCB0byBwcmV2ZW50IHBvdGVudGlhbCBvdmVyZmxvd3MuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgcGFnZSB0YWJsZSBjaGVjayBsb2dpYywgd2hpY2ggY2FuIGJlIHJlYWNoZWQgZHVyaW5nIHBhZ2UgdGFibGUgbW9kaWZpY2F0aW9ucyAoZS5nLiwgbW1hcCwgbXVubWFwKS4gRnV6emluZyBpcyBuZWVkZWQgdG8gZW5zdXJlIHRoZSA2NC1iaXQgYXRvbWljIG9wZXJhdGlvbnMgd29yayBjb3JyZWN0bHkgYW5kIGRvIG5vdCBpbnRyb2R1Y2UgcmVncmVzc2lvbnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTggMDU6MTA8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA1YThjYzg5NWZmMmY5YjdjMzM0NGU1NDkwNDIyNWU4MjY1MWY0ZTNkXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBKdWwgMTggMDU6MTA6MTUgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbW0vcGFnZV90YWJsZV9jaGVjay5jIGIvbW0vcGFnZV90YWJsZV9jaGVjay5jXG5pbmRleCA1M2E4OTk3ZWMwNDNlYS4uZWRkOWQ5ZWRmNmZjZWUgMTAwNjQ0XG4tLS0gYS9tbS9wYWdlX3RhYmxlX2NoZWNrLmNcbiYjNDM7JiM0MzsmIzQzOyBiL21tL3BhZ2VfdGFibGVfY2hlY2suY1xuQEAgLTE0LDggJiM0MzsxNCw4IEBAXG4gI2RlZmluZSBwcl9mbXQoZm10KVx0XCYjMzQ7cGFnZV90YWJsZV9jaGVjazogXCYjMzQ7IGZtdFxuIFxuIHN0cnVjdCBwYWdlX3RhYmxlX2NoZWNrIHtcbi1cdGF0b21pY190IGFub25fbWFwX2NvdW50O1xuLVx0YXRvbWljX3QgZmlsZV9tYXBfY291bnQ7XG4mIzQzO1x0YXRvbWljNjRfdCBhbm9uX21hcF9jb3VudDtcbiYjNDM7XHRhdG9taWM2NF90IGZpbGVfbWFwX2NvdW50O1xuIH07XG4gXG4gc3RhdGljIGJvb2wgX19wYWdlX3RhYmxlX2NoZWNrX2VuYWJsZWQgX19pbml0ZGF0YSA9XG5AQCAtNzksMTEgJiM0Mzs3OSwxMSBAQCBzdGF0aWMgdm9pZCBwYWdlX3RhYmxlX2NoZWNrX2NsZWFyKHVuc2lnbmVkIGxvbmcgcGZuLCB1bnNpZ25lZCBsb25nIHBnY250KVxuIFx0XHRzdHJ1Y3QgcGFnZV90YWJsZV9jaGVjayAqcHRjID0gZ2V0X3BhZ2VfdGFibGVfY2hlY2socGFnZV9leHQpO1xuIFxuIFx0XHRpZiAoYW5vbikge1xuLVx0XHRcdEJVR19PTihhdG9taWNfcmVhZChcdTAwMjZwdGMtXHUwMDNlZmlsZV9tYXBfY291bnQpKTtcbi1cdFx0XHRCVUdfT04oYXRvbWljX2RlY19yZXR1cm4oXHUwMDI2cHRjLVx1MDAzZWFub25fbWFwX2NvdW50KSBcdTAwM2MgMCk7XG4mIzQzO1x0XHRcdEJVR19PTihhdG9taWM2NF9yZWFkKFx1MDAyNnB0Yy1cdTAwM2VmaWxlX21hcF9jb3VudCkpO1xuJiM0MztcdFx0XHRCVUdfT04oYXRvbWljNjRfZGVjX3JldHVybihcdTAwMjZwdGMtXHUwMDNlYW5vbl9tYXBfY291bnQpIFx1MDAzYyAwKTtcbiBcdFx0fSBlbHNlIHtcbi1cdFx0XHRCVUdfT04oYXRvbWljX3JlYWQoXHUwMDI2cHRjLVx1MDAzZWFub25fbWFwX2NvdW50KSk7XG4tXHRcdFx0QlVHX09OKGF0b21pY19kZWNfcmV0dXJuKFx1MDAyNnB0Yy1cdTAwM2VmaWxlX21hcF9jb3VudCkgXHUwMDNjIDApO1xuJiM0MztcdFx0XHRCVUdfT04oYXRvbWljNjRfcmVhZChcdTAwMjZwdGMtXHUwMDNlYW5vbl9tYXBfY291bnQpKTtcbiYjNDM7XHRcdFx0QlVHX09OKGF0b21pYzY0X2RlY19yZXR1cm4oXHUwMDI2cHRjLVx1MDAzZWZpbGVfbWFwX2NvdW50KSBcdTAwM2MgMCk7XG4gXHRcdH1cbiBcdH1cbiBcdHJjdV9yZWFkX3VubG9jaygpO1xuQEAgLTExNCwxMSAmIzQzOzExNCwxMSBAQCBzdGF0aWMgdm9pZCBwYWdlX3RhYmxlX2NoZWNrX3NldCh1bnNpZ25lZCBsb25nIHBmbiwgdW5zaWduZWQgbG9uZyBwZ2NudCxcbiBcdFx0c3RydWN0IHBhZ2VfdGFibGVfY2hlY2sgKnB0YyA9IGdldF9wYWdlX3RhYmxlX2NoZWNrKHBhZ2VfZXh0KTtcbiBcbiBcdFx0aWYgKGFub24pIHtcbi1cdFx0XHRCVUdfT04oYXRvbWljX3JlYWQoXHUwMDI2cHRjLVx1MDAzZWZpbGVfbWFwX2NvdW50KSk7XG4tXHRcdFx0QlVHX09OKGF0b21pY19pbmNfcmV0dXJuKFx1MDAyNnB0Yy1cdTAwM2Vhbm9uX21hcF9jb3VudCkgXHUwMDNlIDEgXHUwMDI2XHUwMDI2IHJ3KTtcbiYjNDM7XHRcdFx0QlVHX09OKGF0b21pYzY0X3JlYWQoXHUwMDI2cHRjLVx1MDAzZWZpbGVfbWFwX2NvdW50KSk7XG4mIzQzO1x0XHRcdEJVR19PTihhdG9taWM2NF9pbmNfcmV0dXJuKFx1MDAyNnB0Yy1cdTAwM2Vhbm9uX21hcF9jb3VudCkgXHUwMDNlIDEgXHUwMDI2XHUwMDI2IHJ3KTtcbiBcdFx0fSBlbHNlIHtcbi1cdFx0XHRCVUdfT04oYXRvbWljX3JlYWQoXHUwMDI2cHRjLVx1MDAzZWFub25fbWFwX2NvdW50KSk7XG4tXHRcdFx0QlVHX09OKGF0b21pY19pbmNfcmV0dXJuKFx1MDAyNnB0Yy1cdTAwM2VmaWxlX21hcF9jb3VudCkgXHUwMDNjIDApO1xuJiM0MztcdFx0XHRCVUdfT04oYXRvbWljNjRfcmVhZChcdTAwMjZwdGMtXHUwMDNlYW5vbl9tYXBfY291bnQpKTtcbiYjNDM7XHRcdFx0QlVHX09OKGF0b21pYzY0X2luY19yZXR1cm4oXHUwMDI2cHRjLVx1MDAzZWZpbGVfbWFwX2NvdW50KSBcdTAwM2MgMCk7XG4gXHRcdH1cbiBcdH1cbiBcdHJjdV9yZWFkX3VubG9jaygpO1xuQEAgLTEzOSw4ICYjNDM7MTM5LDggQEAgdm9pZCBfX3BhZ2VfdGFibGVfY2hlY2tfemVybyhzdHJ1Y3QgcGFnZSAqcGFnZSwgdW5zaWduZWQgaW50IG9yZGVyKVxuIFx0Zm9yX2VhY2hfcGFnZV9leHQocGFnZSwgMSBcdTAwM2NcdTAwM2Mgb3JkZXIsIHBhZ2VfZXh0LCBpdGVyKSB7XG4gXHRcdHN0cnVjdCBwYWdlX3RhYmxlX2NoZWNrICpwdGMgPSBnZXRfcGFnZV90YWJsZV9jaGVjayhwYWdlX2V4dCk7XG4gXG4tXHRcdEJVR19PTihhdG9taWNfcmVhZChcdTAwMjZwdGMtXHUwMDNlYW5vbl9tYXBfY291bnQpKTtcbi1cdFx0QlVHX09OKGF0b21pY19yZWFkKFx1MDAyNnB0Yy1cdTAwM2VmaWxlX21hcF9jb3VudCkpO1xuJiM0MztcdFx0QlVHX09OKGF0b21pYzY0X3JlYWQoXHUwMDI2cHRjLVx1MDAzZWFub25fbWFwX2NvdW50KSk7XG4mIzQzO1x0XHRCVUdfT04oYXRvbWljNjRfcmVhZChcdTAwMjZwdGMtXHUwMDNlZmlsZV9tYXBfY291bnQpKTtcbiBcdH1cbiBcdHJjdV9yZWFkX3VubG9jaygpO1xuIH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOCAwNToxMDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtQQUdFX1RBQkxFX0NIRUNLJiMzNDssCiAgICAmIzM0O1BBR0VfVEFCTEVfQ0hFQ0tfRU5GT1JDRUQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtfX3BhZ2VfdGFibGVfY2hlY2tfcHRlX2NsZWFyJiMzNDssCiAgICAmIzM0O19fcGFnZV90YWJsZV9jaGVja19wbWRfY2xlYXImIzM0OywKICAgICYjMzQ7X19wYWdlX3RhYmxlX2NoZWNrX3B1ZF9jbGVhciYjMzQ7LAogICAgJiMzNDtfX3BhZ2VfdGFibGVfY2hlY2tfcHRlc19zZXQmIzM0OywKICAgICYjMzQ7X19wYWdlX3RhYmxlX2NoZWNrX3BtZHNfc2V0JiMzNDssCiAgICAmIzM0O19fcGFnZV90YWJsZV9jaGVja19wdWRzX3NldCYjMzQ7LAogICAgJiMzNDtfX3BhZ2VfdGFibGVfY2hlY2tfemVybyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBjaGFuZ2VzIHRoZSB0eXBlIG9mIGFub25fbWFwX2NvdW50IGFuZCBmaWxlX21hcF9jb3VudCBpbiBzdHJ1Y3QgcGFnZV90YWJsZV9jaGVjayBmcm9tIGF0b21pY190IHRvIGF0b21pYzY0X3QgdG8gcHJldmVudCBwb3RlbnRpYWwgb3ZlcmZsb3dzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIHBhZ2UgdGFibGUgY2hlY2sgbG9naWMsIHdoaWNoIGNhbiBiZSByZWFjaGVkIGR1cmluZyBwYWdlIHRhYmxlIG1vZGlmaWNhdGlvbnMgKGUuZy4sIG1tYXAsIG11bm1hcCkuIEZ1enppbmcgaXMgbmVlZGVkIHRvIGVuc3VyZSB0aGUgNjQtYml0IGF0b21pYyBvcGVyYXRpb25zIHdvcmsgY29ycmVjdGx5IGFuZCBkbyBub3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA1YThjYzg5NWZmMmY5YjdjMzM0NGU1NDkwNDIyNWU4MjY1MWY0ZTNkCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFNhdCBKdWwgMTggMDU6MTA6MTUgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9tbS9wYWdlX3RhYmxlX2NoZWNrLmMgYi9tbS9wYWdlX3RhYmxlX2NoZWNrLmMKaW5kZXggNTNhODk5N2VjMDQzZWEuLmVkZDlkOWVkZjZmY2VlIDEwMDY0NAotLS0gYS9tbS9wYWdlX3RhYmxlX2NoZWNrLmMKJiM0MzsmIzQzOyYjNDM7IGIvbW0vcGFnZV90YWJsZV9jaGVjay5jCkBAIC0xNCw4ICYjNDM7MTQsOCBAQAogI2RlZmluZSBwcl9mbXQoZm10KQkmIzM0O3BhZ2VfdGFibGVfY2hlY2s6ICYjMzQ7IGZtdAogCiBzdHJ1Y3QgcGFnZV90YWJsZV9jaGVjayB7Ci0JYXRvbWljX3QgYW5vbl9tYXBfY291bnQ7Ci0JYXRvbWljX3QgZmlsZV9tYXBfY291bnQ7CiYjNDM7CWF0b21pYzY0X3QgYW5vbl9tYXBfY291bnQ7CiYjNDM7CWF0b21pYzY0X3QgZmlsZV9tYXBfY291bnQ7CiB9OwogCiBzdGF0aWMgYm9vbCBfX3BhZ2VfdGFibGVfY2hlY2tfZW5hYmxlZCBfX2luaXRkYXRhID0KQEAgLTc5LDExICYjNDM7NzksMTEgQEAgc3RhdGljIHZvaWQgcGFnZV90YWJsZV9jaGVja19jbGVhcih1bnNpZ25lZCBsb25nIHBmbiwgdW5zaWduZWQgbG9uZyBwZ2NudCkKIAkJc3RydWN0IHBhZ2VfdGFibGVfY2hlY2sgKnB0YyA9IGdldF9wYWdlX3RhYmxlX2NoZWNrKHBhZ2VfZXh0KTsKIAogCQlpZiAoYW5vbikgewotCQkJQlVHX09OKGF0b21pY19yZWFkKCZhbXA7cHRjLSZndDtmaWxlX21hcF9jb3VudCkpOwotCQkJQlVHX09OKGF0b21pY19kZWNfcmV0dXJuKCZhbXA7cHRjLSZndDthbm9uX21hcF9jb3VudCkgJmx0OyAwKTsKJiM0MzsJCQlCVUdfT04oYXRvbWljNjRfcmVhZCgmYW1wO3B0Yy0mZ3Q7ZmlsZV9tYXBfY291bnQpKTsKJiM0MzsJCQlCVUdfT04oYXRvbWljNjRfZGVjX3JldHVybigmYW1wO3B0Yy0mZ3Q7YW5vbl9tYXBfY291bnQpICZsdDsgMCk7CiAJCX0gZWxzZSB7Ci0JCQlCVUdfT04oYXRvbWljX3JlYWQoJmFtcDtwdGMtJmd0O2Fub25fbWFwX2NvdW50KSk7Ci0JCQlCVUdfT04oYXRvbWljX2RlY19yZXR1cm4oJmFtcDtwdGMtJmd0O2ZpbGVfbWFwX2NvdW50KSAmbHQ7IDApOwomIzQzOwkJCUJVR19PTihhdG9taWM2NF9yZWFkKCZhbXA7cHRjLSZndDthbm9uX21hcF9jb3VudCkpOwomIzQzOwkJCUJVR19PTihhdG9taWM2NF9kZWNfcmV0dXJuKCZhbXA7cHRjLSZndDtmaWxlX21hcF9jb3VudCkgJmx0OyAwKTsKIAkJfQogCX0KIAlyY3VfcmVhZF91bmxvY2soKTsKQEAgLTExNCwxMSAmIzQzOzExNCwxMSBAQCBzdGF0aWMgdm9pZCBwYWdlX3RhYmxlX2NoZWNrX3NldCh1bnNpZ25lZCBsb25nIHBmbiwgdW5zaWduZWQgbG9uZyBwZ2NudCwKIAkJc3RydWN0IHBhZ2VfdGFibGVfY2hlY2sgKnB0YyA9IGdldF9wYWdlX3RhYmxlX2NoZWNrKHBhZ2VfZXh0KTsKIAogCQlpZiAoYW5vbikgewotCQkJQlVHX09OKGF0b21pY19yZWFkKCZhbXA7cHRjLSZndDtmaWxlX21hcF9jb3VudCkpOwotCQkJQlVHX09OKGF0b21pY19pbmNfcmV0dXJuKCZhbXA7cHRjLSZndDthbm9uX21hcF9jb3VudCkgJmd0OyAxICZhbXA7JmFtcDsgcncpOwomIzQzOwkJCUJVR19PTihhdG9taWM2NF9yZWFkKCZhbXA7cHRjLSZndDtmaWxlX21hcF9jb3VudCkpOwomIzQzOwkJCUJVR19PTihhdG9taWM2NF9pbmNfcmV0dXJuKCZhbXA7cHRjLSZndDthbm9uX21hcF9jb3VudCkgJmd0OyAxICZhbXA7JmFtcDsgcncpOwogCQl9IGVsc2UgewotCQkJQlVHX09OKGF0b21pY19yZWFkKCZhbXA7cHRjLSZndDthbm9uX21hcF9jb3VudCkpOwotCQkJQlVHX09OKGF0b21pY19pbmNfcmV0dXJuKCZhbXA7cHRjLSZndDtmaWxlX21hcF9jb3VudCkgJmx0OyAwKTsKJiM0MzsJCQlCVUdfT04oYXRvbWljNjRfcmVhZCgmYW1wO3B0Yy0mZ3Q7YW5vbl9tYXBfY291bnQpKTsKJiM0MzsJCQlCVUdfT04oYXRvbWljNjRfaW5jX3JldHVybigmYW1wO3B0Yy0mZ3Q7ZmlsZV9tYXBfY291bnQpICZsdDsgMCk7CiAJCX0KIAl9CiAJcmN1X3JlYWRfdW5sb2NrKCk7CkBAIC0xMzksOCAmIzQzOzEzOSw4IEBAIHZvaWQgX19wYWdlX3RhYmxlX2NoZWNrX3plcm8oc3RydWN0IHBhZ2UgKnBhZ2UsIHVuc2lnbmVkIGludCBvcmRlcikKIAlmb3JfZWFjaF9wYWdlX2V4dChwYWdlLCAxICZsdDsmbHQ7IG9yZGVyLCBwYWdlX2V4dCwgaXRlcikgewogCQlzdHJ1Y3QgcGFnZV90YWJsZV9jaGVjayAqcHRjID0gZ2V0X3BhZ2VfdGFibGVfY2hlY2socGFnZV9leHQpOwogCi0JCUJVR19PTihhdG9taWNfcmVhZCgmYW1wO3B0Yy0mZ3Q7YW5vbl9tYXBfY291bnQpKTsKLQkJQlVHX09OKGF0b21pY19yZWFkKCZhbXA7cHRjLSZndDtmaWxlX21hcF9jb3VudCkpOwomIzQzOwkJQlVHX09OKGF0b21pYzY0X3JlYWQoJmFtcDtwdGMtJmd0O2Fub25fbWFwX2NvdW50KSk7CiYjNDM7CQlCVUdfT04oYXRvbWljNjRfcmVhZCgmYW1wO3B0Yy0mZ3Q7ZmlsZV9tYXBfY291bnQpKTsKIAl9CiAJcmN1X3JlYWRfdW5sb2NrKCk7CiB9CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE4IDA1OjEwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1ODYKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiAxMTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgQ3JpdGljYWwgTWVtb3J5IE1hbmFnZW1lbnQgT3B0aW1pemF0aW9uKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdGFyZ2V0aW5nIGBtbS9wYWdlX3RhYmxlX2NoZWNrLmNgLiBXaGF0IGltbWVkaWF0ZWx5IGdyYWJzIG15IGF0dGVudGlvbiBpcyB0aGUgc2hpZnQgZnJvbSBgYXRvbWljX3RgIHRvIGBhdG9taWM2NF90YCB3aXRoaW4gdGhlIGBzdHJ1Y3QgcGFnZV90YWJsZV9jaGVja2AuIFRoaXMgaXNuJiMzOTt0IGp1c3QgYSBjb3NtZXRpYyB0d2VhazsgaXQmIzM5O3MgYSBmdW5kYW1lbnRhbCBjaGFuZ2UgdGhhdCBpbXBhY3RzIHRoZSBzaXplIG9mIHRob3NlIGF0b21pYyB2YXJpYWJsZXMgYW5kLCBjb25zZXF1ZW50bHksIHRoZSBmdW5jdGlvbnMgdXNlZCB0byBpbnRlcmFjdCB3aXRoIHRoZW0uIFRoaXMgc2lnbmFscyBhIGRlbGliZXJhdGUgZWZmb3J0IHRvIGFkZHJlc3MgYSBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0eSDigJMgdGhlIHJpc2sgb2YgYGFub25fbWFwX2NvdW50YCBhbmQgYGZpbGVfbWFwX2NvdW50YCBvdmVyZmxvd2luZywgc3BlY2lmaWNhbGx5IG9uIDMyLWJpdCBhcmNoaXRlY3R1cmVzLiBDbGVhcmx5LCB0aGV5JiMzOTtyZSBhbnRpY2lwYXRpbmcgc2lnbmlmaWNhbnRseSBsYXJnZXIgbWVtb3J5IG1hcHBpbmdzIG9yIGhpZ2hlciBjb25jdXJyZW5jeSBpbiB0aGVzZSBhcmVhcywgd2FycmFudGluZyB0aGUgaW5jcmVhc2VkIGJpdC13aWR0aCB0byBlbnN1cmUgdGhlIGNvdW50ZXJzIHJlbWFpbiBhY2N1cmF0ZS4KCk15IG5leHQgc3RlcCBpcyB0byBkcmlsbCBkb3duIGludG8gYG1tL3BhZ2VfdGFibGVfY2hlY2suY2AgaXRzZWxmLCBhbmQgdGhlbiB1bmRlcnN0YW5kIGhvdyBpdHMgY29uZmlndXJhdGlvbiBpcyBjb250cm9sbGVkLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgYXJjaGl0ZWN0dXJhbCBpbXBsaWNhdGlvbnMsIHRoZSBzcGVjaWZpYyB3b3JrbG9hZHMgb3Igc2NlbmFyaW9zIHRoYXQgdHJpZ2dlcmVkIHRoaXMgY2hhbmdlLCBhbmQgaG93IHRoaXMgcmVsYXRlcyB0byBhbnkgb3RoZXIgcGVyZm9ybWFuY2Ugb3Igc3RhYmlsaXR5IHdvcmsgd2l0aGluIHRoZSBtZW1vcnkgbWFuYWdlbWVudCBzdWJzeXN0ZW0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTggMDU6MTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwYWdlX3RhYmxlX2NoZWNrJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTggMDU6MTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjk3MgoJCQkJCQkJb3V0cHV0OiAyNwoJCQkJCQkJdGhvdWdodHM6IDIxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqTmF2aWdhdGluZyB0aGUgRGVidWcgQ29uZmlndXJhdGlvbiBMYW5kc2NhcGUqKgoKUmlnaHQsIGxldCYjMzk7cyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gV2hlcmUmIzM5O3MgdGhlIHNlbnNpYmxlIHBsYWNlIHRvIGxvb2sgZm9yIGRlYnVnZ2luZy1yZWxhdGVkIGNvbmZpZ3VyYXRpb24gb3B0aW9ucz8gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gemVybyBpbiBvbiBgbW0vS2NvbmZpZy5kZWJ1Z2AgYW5kIGBsaWIvS2NvbmZpZy5kZWJ1Z2AuIEdpdmVuIHRoZSBuYXR1cmUgb2YgbXkgZXhwZXJ0aXNlLCB0aGVzZSBzZWVtIGxpa2UgdGhlIG1vc3QgbG9naWNhbCBzdGFydGluZyBwb2ludHMuIFRoZSBtZW1vcnkgbWFuYWdlbWVudCBzdWJzeXN0ZW0gYW5kIHRoZSBjb3JlIGxpYnJhcnkgcm91dGluZXMgYXJlIG9mdGVuIGtleSBhcmVhcyBmb3IgZGV0YWlsZWQgaW5zdHJ1bWVudGF0aW9uIGFuZCBkaWFnbm9zdGljcywgc28gdGhlIGFzc29jaWF0ZWQgS2NvbmZpZyBmaWxlcyBhcmUgdGhlIG1vc3QgbGlrZWx5IHBsYWNlcyB0byBmaW5kIGRlYnVnIGZsYWdzIHNwZWNpZmljIHRvIHRoZXNlIGFyZWFzLiBJIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgdGhlIHNjb3BlIG9mIGF2YWlsYWJsZSBvcHRpb25zIGhlcmUuIFRoZSBpbnRlbnQgaXMgdG8gc2VlIHdoYXQgYWxyZWFkeSBleGlzdHMgYmVmb3JlIEkgZGVjaWRlIGlmIEkgbXVzdCBhZGQgbmV3IG9wdGlvbnMsIG9yIGlmIEkgY2FuIHV0aWxpemUgd2hhdCBpcyBhbHJlYWR5IHByb3ZpZGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE4IDA1OjEwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O1BBR0VfVEFCTEVfQ0hFQ0smIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vS2NvbmZpZy5kZWJ1Zz0xMDU9Y29uZmlnIFBBR0VfT1dORVJcbi0tXG5tbS9LY29uZmlnLmRlYnVnLTEyMS1cbm1tL0tjb25maWcuZGVidWc6MTIyOmNvbmZpZyBQQUdFX1RBQkxFX0NIRUNLXG5tbS9LY29uZmlnLmRlYnVnLTEyMy1cdGJvb2wgXCYjMzQ7Q2hlY2sgZm9yIGludmFsaWQgbWFwcGluZ3MgaW4gdXNlciBwYWdlIHRhYmxlc1wmIzM0O1xubW0vS2NvbmZpZy5kZWJ1ZzoxMjQ6XHRkZXBlbmRzIG9uIEFSQ0hfU1VQUE9SVFNfUEFHRV9UQUJMRV9DSEVDS1xubW0vS2NvbmZpZy5kZWJ1Zy0xMjUtXHRkZXBlbmRzIG9uIEVYQ0xVU0lWRV9TWVNURU1fUkFNXG4tLVxubW0vS2NvbmZpZy5kZWJ1Zy0xMzUtXG5tbS9LY29uZmlnLmRlYnVnOjEzNjpjb25maWcgUEFHRV9UQUJMRV9DSEVDS19FTkZPUkNFRFxubW0vS2NvbmZpZy5kZWJ1Zy0xMzctXHRib29sIFwmIzM0O0VuZm9yY2UgdGhlIHBhZ2UgdGFibGUgY2hlY2tpbmcgYnkgZGVmYXVsdFwmIzM0O1xubW0vS2NvbmZpZy5kZWJ1ZzoxMzg6XHRkZXBlbmRzIG9uIFBBR0VfVEFCTEVfQ0hFQ0tcbm1tL0tjb25maWcuZGVidWctMTM5LVx0aGVscFxuLS1cbm1tL01ha2VmaWxlPTEyNj1vYmotJChDT05GSUdfUEFHRV9FWFRFTlNJT04pICYjNDM7PSBwYWdlX2V4dC5vXG5tbS9NYWtlZmlsZToxMjc6b2JqLSQoQ09ORklHX1BBR0VfVEFCTEVfQ0hFQ0spICYjNDM7PSBwYWdlX3RhYmxlX2NoZWNrLm9cbm1tL01ha2VmaWxlLTEyOC1vYmotJChDT05GSUdfQ01BX0RFQlVHRlMpICYjNDM7PSBjbWFfZGVidWcub1xuLS1cbm1tL3BhZ2VfZXh0LmM9ODA9c3RhdGljIHN0cnVjdCBwYWdlX2V4dF9vcGVyYXRpb25zICpwYWdlX2V4dF9vcHNbXSBfX2luaXRkYXRhID0ge1xuLS1cbm1tL3BhZ2VfZXh0LmMtODktI2VuZGlmXG5tbS9wYWdlX2V4dC5jOjkwOiNpZmRlZiBDT05GSUdfUEFHRV9UQUJMRV9DSEVDS1xubW0vcGFnZV9leHQuYy05MS1cdFx1MDAyNnBhZ2VfdGFibGVfY2hlY2tfb3BzLFxuLS1cbm1tL3BhZ2VfdGFibGVfY2hlY2suYz0yMT1zdGF0aWMgYm9vbCBfX3BhZ2VfdGFibGVfY2hlY2tfZW5hYmxlZCBfX2luaXRkYXRhID1cbm1tL3BhZ2VfdGFibGVfY2hlY2suYzoyMjpcdFx0XHRcdElTX0VOQUJMRUQoQ09ORklHX1BBR0VfVEFCTEVfQ0hFQ0tfRU5GT1JDRUQpO1xubW0vcGFnZV90YWJsZV9jaGVjay5jLTIzLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE4IDA1OjEwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM2NzEKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiA4NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhbmFseXNpcyBvZiB0aGUgc2l0dWF0aW9uOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBQYWdlIFRhYmxlIENoZWNrIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gdGhlIGBQQUdFX1RBQkxFX0NIRUNLYCBjb25maWcgb3B0aW9uIGlzIHdoYXQmIzM5O3MgZHJpdmluZyB0aGlzIHBhcnRpY3VsYXIgY29kZSBwYXRoLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgaW1wbGljYXRpb25zLiBJIHNlZSB0aGF0IHRoZSBtb2RpZmllZCBmdW5jdGlvbnMgYXJlIGBwYWdlX3RhYmxlX2NoZWNrX2NsZWFyYCwgYHBhZ2VfdGFibGVfY2hlY2tfc2V0YCwgYW5kIGBfX3BhZ2VfdGFibGVfY2hlY2tfemVyb2AuIFRoZXNlIGFyZSBwcmV0dHkgbG93LWxldmVsLCBpbmRpY2F0aW5nIHRoZXkgbGlrZWx5IGludGVyYWN0IGRpcmVjdGx5IHdpdGggcGFnZSB0YWJsZSBzdHJ1Y3R1cmVzLiBXaGF0JiMzOTtzIGludGVyZXN0aW5nIGlzIHRoYXQgdGhleSBhcmUgaW52b2tlZCB0aHJvdWdoIG1hY3JvcyBvciBpbmxpbmUgZnVuY3Rpb25zLCBhbmQgdGhhdCB0aGUgZGVmaW5pdGlvbnMgcmVzaWRlIHdpdGhpbiBgaW5jbHVkZS9saW51eC9wYWdlX3RhYmxlX2NoZWNrLmhgLiAgTXkgaW1tZWRpYXRlIG5leHQgc3RlcCBpcyBjbGVhcjogSSBuZWVkIHRvIG9wZW4gYW5kIG1ldGljdWxvdXNseSBleGFtaW5lIHRoYXQgaGVhZGVyIGZpbGUgdG8gdW5kZXJzdGFuZCBob3cgdGhlc2UgZnVuY3Rpb25zIGFyZSBiZWluZyB1c2VkIGFuZCB3aGF0IHRoZSBgUEFHRV9UQUJMRV9DSEVDS2AgY29uZmlnIG9wdGlvbiBhY3R1YWxseSAqZG9lcyogdG8gdGhlIHBhZ2UgdGFibGUgbWFuYWdlbWVudC4gVGhpcyBzaG91bGQgcHJvdmlkZSBhIGdvb2Qgb3ZlcnZpZXcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTggMDU6MTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwYWdlX3RhYmxlX2NoZWNrX2NsZWFyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC9wYWdlX3RhYmxlX2NoZWNrLmgmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE4IDA1OjEwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQwMDEKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiAyOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIHNlZS4gTXkgbWluZCBpbW1lZGlhdGVseSBqdW1wcyB0byBhIGZ1bmRhbWVudGFsIHBvaW50IGJlZm9yZSBJIGdvIGFueSBmdXJ0aGVyLgoKKipDaGVja2luZyB0aGUgUGFnZSBUYWJsZSBDbGVhciBGdW5jdGlvbioqCgpCZWZvcmUgZGl2aW5nIGluLCBJIG5lZWQgdG8gdmVyaWZ5IGEgY29yZSBlbGVtZW50LiBJJiMzOTtsbCBuZWVkIHRvIGdvIHRvIGBpbmNsdWRlL2xpbnV4L3BhZ2VfdGFibGVfY2hlY2suaGAuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIGNoZWNrIHRoZSBkZWZpbml0aW9uIGFuZCB1c2FnZSBvZiBgcGFnZV90YWJsZV9jaGVja19jbGVhcmAuIFRoYXQmIzM5O3MgdGhlIGZ1bmN0aW9uIHRoYXQmIzM5O3MgZ29pbmcgdG8gYmUgZXNzZW50aWFsIGZvciB1bmRlcnN0YW5kaW5nIGhvdyB0aGUgc3lzdGVtIGNsZWFycyBvciBpbnZhbGlkYXRlcyBlbnRyaWVzIHJlbGF0ZWQgdG8gdGhlIHBhZ2UgdGFibGVzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgYmVoYXZpb3IgdGhvcm91Z2hseSB0byBjb25maXJtIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgdW5kZXJseWluZyBtZW1vcnkgbWFuYWdlbWVudCBzdHJ1Y3R1cmUuIEtub3dpbmcgdGhpcyBpcyBjcml0aWNhbCwgc2luY2UgYSBmYWlsdXJlIGhlcmUgY2FuIGxlYWQgdG8gYSBwbGV0aG9yYSBvZiBwcm9ibGVtcyBkb3duIHRoZSBsaW5lLiBJIG11c3QgY2hlY2sgdGhpcyBiZWZvcmUgSSBtb3ZlIGZvcndhcmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE4IDA1OjEwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGFnZV90YWJsZV9jaGVja19jbGVhciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2luY2x1ZGUvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTggMDU6MTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDIzMwoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDI1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRpdmluZyBpbnRvIGBwYWdlX3RhYmxlX2NoZWNrX2NsZWFyYCoqCgpPa2F5LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gTGV0JiMzOTtzIHNlZSB3aGF0JiMzOTtzIGdvaW5nIG9uIHdpdGggYG1tL3BhZ2VfdGFibGVfY2hlY2suY2AsIHNwZWNpZmljYWxseSB0aGUgYHBhZ2VfdGFibGVfY2hlY2tfY2xlYXJgIGZ1bmN0aW9uLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIGNsZWFyaW5nIHByb2Nlc3MgaGVyZS4gSSYjMzk7bSBhc3N1bWluZyB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGNsZWFyaW5nIGNoZWNrcy9mbGFncyByZWxhdGVkIHRvIHBhZ2UgdGFibGUgZW50cmllcywgcHJvYmFibHkgcmVsYXRlZCB0byBzb21lIGtpbmQgb2YgY29uc2lzdGVuY3kgY2hlY2sgb3IgcGVyaGFwcyBhIGRlYnVnZ2luZyBtZWNoYW5pc20uIEkmIzM5O2xsIGJldCBpdCYjMzk7cyBjYWxsZWQgZHVyaW5nIHBhZ2UgdGFibGUgZGVhbGxvY2F0aW9uLCBvciBtYXliZSBhZnRlciBhIHpvbmUgaXMgY2xlYXJlZC4gSSYjMzk7bSBjdXJpb3VzIGlmIGl0JiMzOTtzIG9wZXJhdGluZyBvbiBpbmRpdmlkdWFsIHBhZ2UgdGFibGUgZW50cmllcyAoUFRFcyksIHBhZ2UgZGlyZWN0b3J5IGVudHJpZXMgKFBERXMpLCBvciBwZXJoYXBzIGV2ZW4gaGlnaGVyLWxldmVsIHN0cnVjdHVyZXMsIGFuZCB3aGF0IHRoZSBvdmVyYWxsIGFwcHJvYWNoIGlzIHRvIHN5bmNocm9uaXphdGlvbiBpZiB0aGVyZSBhcmUgYW55IGNvbmN1cnJlbmN5IGlzc3VlcywgZXNwZWNpYWxseSBpZiB0aGUgY29kZSB1c2VzIHNwaW5sb2NrcyBvciBhdG9taWMgb3BlcmF0aW9ucy4gSSYjMzk7bGwgcGF5IGNsb3NlIGF0dGVudGlvbiB0byB0aGUgZGF0YSBzdHJ1Y3R1cmVzIGl0JiMzOTtzIHRvdWNoaW5nLCBhbmQgaG93IGl0IGhhbmRsZXMgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucy4gSSYjMzk7bSByZWFsbHkgbG9va2luZyBmb3IgaG93IGl0IGRldGVybWluZXMgKndoaWNoKiBlbnRyaWVzIG5lZWQgY2xlYXJpbmcsIGFuZCBob3cgdGhvcm91Z2ggdGhlIHByb2Nlc3MgaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE4IDA1OjEwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BhZ2VfdGFibGVfY2hlY2tfY2xlYXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS9wYWdlX3RhYmxlX2NoZWNrLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vcGFnZV90YWJsZV9jaGVjay5jPTUzPXN0YXRpYyBzdHJ1Y3QgcGFnZV90YWJsZV9jaGVjayAqZ2V0X3BhZ2VfdGFibGVfY2hlY2soc3RydWN0IHBhZ2VfZXh0ICpwYWdlX2V4dClcbi0tXG5tbS9wYWdlX3RhYmxlX2NoZWNrLmMtNjItICovXG5tbS9wYWdlX3RhYmxlX2NoZWNrLmM6NjM6c3RhdGljIHZvaWQgcGFnZV90YWJsZV9jaGVja19jbGVhcih1bnNpZ25lZCBsb25nIHBmbiwgdW5zaWduZWQgbG9uZyBwZ2NudClcbm1tL3BhZ2VfdGFibGVfY2hlY2suYy02NC17XG4tLVxubW0vcGFnZV90YWJsZV9jaGVjay5jPTE0OD12b2lkIF9fcGFnZV90YWJsZV9jaGVja19wdGVfY2xlYXIoc3RydWN0IG1tX3N0cnVjdCAqbW0sIHVuc2lnbmVkIGxvbmcgYWRkcixcbi0tXG5tbS9wYWdlX3RhYmxlX2NoZWNrLmMtMTU0LVx0aWYgKHB0ZV91c2VyX2FjY2Vzc2libGVfcGFnZShtbSwgYWRkciwgcHRlKSlcbm1tL3BhZ2VfdGFibGVfY2hlY2suYzoxNTU6XHRcdHBhZ2VfdGFibGVfY2hlY2tfY2xlYXIocHRlX3BmbihwdGUpLCBQQUdFX1NJWkUgXHUwMDNlXHUwMDNlIFBBR0VfU0hJRlQpO1xubW0vcGFnZV90YWJsZV9jaGVjay5jLTE1Ni19XG4tLVxubW0vcGFnZV90YWJsZV9jaGVjay5jPTE1OT12b2lkIF9fcGFnZV90YWJsZV9jaGVja19wbWRfY2xlYXIoc3RydWN0IG1tX3N0cnVjdCAqbW0sIHVuc2lnbmVkIGxvbmcgYWRkcixcbi0tXG5tbS9wYWdlX3RhYmxlX2NoZWNrLmMtMTY1LVx0aWYgKHBtZF91c2VyX2FjY2Vzc2libGVfcGFnZShtbSwgYWRkciwgcG1kKSlcbm1tL3BhZ2VfdGFibGVfY2hlY2suYzoxNjY6XHRcdHBhZ2VfdGFibGVfY2hlY2tfY2xlYXIocG1kX3BmbihwbWQpLCBQTURfU0laRSBcdTAwM2VcdTAwM2UgUEFHRV9TSElGVCk7XG5tbS9wYWdlX3RhYmxlX2NoZWNrLmMtMTY3LX1cbi0tXG5tbS9wYWdlX3RhYmxlX2NoZWNrLmM9MTcwPXZvaWQgX19wYWdlX3RhYmxlX2NoZWNrX3B1ZF9jbGVhcihzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5zaWduZWQgbG9uZyBhZGRyLFxuLS1cbm1tL3BhZ2VfdGFibGVfY2hlY2suYy0xNzYtXHRpZiAocHVkX3VzZXJfYWNjZXNzaWJsZV9wYWdlKG1tLCBhZGRyLCBwdWQpKVxubW0vcGFnZV90YWJsZV9jaGVjay5jOjE3NzpcdFx0cGFnZV90YWJsZV9jaGVja19jbGVhcihwdWRfcGZuKHB1ZCksIFBVRF9TSVpFIFx1MDAzZVx1MDAzZSBQQUdFX1NISUZUKTtcbm1tL3BhZ2VfdGFibGVfY2hlY2suYy0xNzgtfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOCAwNToxMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MDU0CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMTI0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBQYWdlIFRhYmxlIENoZWNrIEZ1bmN0aW9ucyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCBpbW1lZGlhdGVseSBub3RpY2UgdGhhdCBgcGFnZV90YWJsZV9jaGVja19jbGVhcmAgaXMgZGVjbGFyZWQgYXMgYHN0YXRpY2AuIFJpZ2h0LCB0aGF0IG1lYW5zIGl0JiMzOTtzIGFuIGludGVybmFsIGZ1bmN0aW9uIGFuZCBub3QgZGlyZWN0bHkgZXhwb3NlZC4gSW5zdGVhZCwgd2UgaGF2ZSB0aGVzZSBleHBvcnRlZCBmdW5jdGlvbnMgdGhhdCBzZWVtIHRvIGJlIHRoZSBwdWJsaWMgaW50ZXJmYWNlOiBgX19wYWdlX3RhYmxlX2NoZWNrX3B0ZV9jbGVhcmAsIGBfX3BhZ2VfdGFibGVfY2hlY2tfcG1kX2NsZWFyYCwgYF9fcGFnZV90YWJsZV9jaGVja19wdWRfY2xlYXJgLCBhbmQgdGhlaXIgJiMzNDtzZXQmIzM0OyBjb3VudGVycGFydHMgYWxvbmcgd2l0aCBgX19wYWdlX3RhYmxlX2NoZWNrX3plcm9gLiBNYWtlcyBzZW5zZS4gTm93IEkgd2FudCB0byB1bmRlcnN0YW5kIHRoZWlyIGludGVyYWN0aW9ucyBhbmQgaG93IHRoZSBzdGF0aWMgZnVuY3Rpb24gZml0cyBpbi4gVGltZSB0byBkaXZlIGludG8gYG1tL3BhZ2VfdGFibGVfY2hlY2suY2AgYW5kIHNlZSBob3cgdGhlc2UgZXhwb3J0ZWQgZnVuY3Rpb25zIGFyZSBpbXBsZW1lbnRlZCBhbmQgaG93IHRoZXkgdXRpbGl6ZSB0aGF0IGludGVybmFsIGBwYWdlX3RhYmxlX2NoZWNrX2NsZWFyYCBmdW5jdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRyb2wgZmxvdywgdGhlIGRhdGEgc3RydWN0dXJlcyB1c2VkLCBhbmQgdGhlIG92ZXJhbGwgcHVycG9zZSBvZiB0aGlzIG1vZHVsZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTggMDU6MTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7RVhQT1JUX1NZTUJPTCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL3BhZ2VfdGFibGVfY2hlY2suYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9wYWdlX3RhYmxlX2NoZWNrLmM9MjQ9REVGSU5FX1NUQVRJQ19LRVlfVFJVRShwYWdlX3RhYmxlX2NoZWNrX2Rpc2FibGVkKTtcbm1tL3BhZ2VfdGFibGVfY2hlY2suYzoyNTpFWFBPUlRfU1lNQk9MKHBhZ2VfdGFibGVfY2hlY2tfZGlzYWJsZWQpO1xubW0vcGFnZV90YWJsZV9jaGVjay5jLTI2LVxuLS1cbm1tL3BhZ2VfdGFibGVfY2hlY2suYz0xNDg9dm9pZCBfX3BhZ2VfdGFibGVfY2hlY2tfcHRlX2NsZWFyKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCB1bnNpZ25lZCBsb25nIGFkZHIsXG4tLVxubW0vcGFnZV90YWJsZV9jaGVjay5jLTE1Ni19XG5tbS9wYWdlX3RhYmxlX2NoZWNrLmM6MTU3OkVYUE9SVF9TWU1CT0woX19wYWdlX3RhYmxlX2NoZWNrX3B0ZV9jbGVhcik7XG5tbS9wYWdlX3RhYmxlX2NoZWNrLmMtMTU4LVxubW0vcGFnZV90YWJsZV9jaGVjay5jPTE1OT12b2lkIF9fcGFnZV90YWJsZV9jaGVja19wbWRfY2xlYXIoc3RydWN0IG1tX3N0cnVjdCAqbW0sIHVuc2lnbmVkIGxvbmcgYWRkcixcbi0tXG5tbS9wYWdlX3RhYmxlX2NoZWNrLmMtMTY3LX1cbm1tL3BhZ2VfdGFibGVfY2hlY2suYzoxNjg6RVhQT1JUX1NZTUJPTChfX3BhZ2VfdGFibGVfY2hlY2tfcG1kX2NsZWFyKTtcbm1tL3BhZ2VfdGFibGVfY2hlY2suYy0xNjktXG5tbS9wYWdlX3RhYmxlX2NoZWNrLmM9MTcwPXZvaWQgX19wYWdlX3RhYmxlX2NoZWNrX3B1ZF9jbGVhcihzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5zaWduZWQgbG9uZyBhZGRyLFxuLS1cbm1tL3BhZ2VfdGFibGVfY2hlY2suYy0xNzgtfVxubW0vcGFnZV90YWJsZV9jaGVjay5jOjE3OTpFWFBPUlRfU1lNQk9MKF9fcGFnZV90YWJsZV9jaGVja19wdWRfY2xlYXIpO1xubW0vcGFnZV90YWJsZV9jaGVjay5jLTE4MC1cbi0tXG5tbS9wYWdlX3RhYmxlX2NoZWNrLmM9MTk5PXZvaWQgX19wYWdlX3RhYmxlX2NoZWNrX3B0ZXNfc2V0KHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCB1bnNpZ25lZCBsb25nIGFkZHIsXG4tLVxubW0vcGFnZV90YWJsZV9jaGVjay5jLTIxMy19XG5tbS9wYWdlX3RhYmxlX2NoZWNrLmM6MjE0OkVYUE9SVF9TWU1CT0woX19wYWdlX3RhYmxlX2NoZWNrX3B0ZXNfc2V0KTtcbm1tL3BhZ2VfdGFibGVfY2hlY2suYy0yMTUtXG4tLVxubW0vcGFnZV90YWJsZV9jaGVjay5jPTIyOD12b2lkIF9fcGFnZV90YWJsZV9jaGVja19wbWRzX3NldChzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5zaWduZWQgbG9uZyBhZGRyLFxuLS1cbm1tL3BhZ2VfdGFibGVfY2hlY2suYy0yNDMtfVxubW0vcGFnZV90YWJsZV9jaGVjay5jOjI0NDpFWFBPUlRfU1lNQk9MKF9fcGFnZV90YWJsZV9jaGVja19wbWRzX3NldCk7XG5tbS9wYWdlX3RhYmxlX2NoZWNrLmMtMjQ1LVxubW0vcGFnZV90YWJsZV9jaGVjay5jPTI0Nj12b2lkIF9fcGFnZV90YWJsZV9jaGVja19wdWRzX3NldChzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5zaWduZWQgbG9uZyBhZGRyLFxuLS1cbm1tL3BhZ2VfdGFibGVfY2hlY2suYy0yNTktfVxubW0vcGFnZV90YWJsZV9jaGVjay5jOjI2MDpFWFBPUlRfU1lNQk9MKF9fcGFnZV90YWJsZV9jaGVja19wdWRzX3NldCk7XG5tbS9wYWdlX3RhYmxlX2NoZWNrLmMtMjYxLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOCAwNToxMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MTA1CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogOTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQYWdlIFRhYmxlIENoZWNrIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gdGhlIGZ1bmN0aW9ucyByZWxhdGVkIHRvIHRoaXMgYXJlIGJlaW5nIGV4cG9ydGVkLCB0aGF0JiMzOTtzIHRoZSBzdGFydGluZyBwb2ludC4gTXkgY29uZmlnIGlzIGBQQUdFX1RBQkxFX0NIRUNLYCwgcmlnaHQ/IEFoLCBob2xkIG9uLCBJIHNlZSBgUEFHRV9UQUJMRV9DSEVDS19FTkZPUkNFRGAgYXMgd2VsbC4gTm93IHRoaW5ncyBhcmUgZ2V0dGluZyBpbnRlcmVzdGluZy4gSWYgYFBBR0VfVEFCTEVfQ0hFQ0tfRU5GT1JDRURgIGlzbiYjMzk7dCBlbmFibGVkLCB0aGVuIHdlJiMzOTtsbCBsaWtlbHkgbmVlZCBhIGJvb3QgcGFyYW1ldGVyIOKAkyBzb21ldGhpbmcgbGlrZSBgcGFnZV90YWJsZV9jaGVjaz1vbmAg4oCTIHRvIGFjdHVhbGx5IGFjdGl2YXRlIHRoZSBjaGVja3MuIFRpbWUgdG8gZGlnIGludG8gdGhlIGltcGxlbWVudGF0aW9uIGl0c2VsZiwgc28gSSYjMzk7bGwgY2hlY2sgYG1tL3BhZ2VfdGFibGVfY2hlY2suY2AgdG8gc2VlIGhvdyB0aGF0IGBwYWdlX3RhYmxlX2NoZWNrPW9uYCBib290IHBhcmFtZXRlciBpcyBoYW5kbGVkIGFuZCBob3cgdGhlIGZlYXR1cmUgaXMgZW5hYmxlZC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGZ1bGwgZmxvdyBoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOCAwNToxMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BhZ2VfdGFibGVfY2hlY2s9JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vcGFnZV90YWJsZV9jaGVjay5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTggMDU6MTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjQxNQoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDI2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipJbnZlc3RpZ2F0aW5nIFBvdGVudGlhbCBJbml0aWFsaXphdGlvbiBJc3N1ZXMgaW4gdGhlIFBhZ2UgVGFibGUgQ2hlY2sqKgoKQWxyaWdodCwgSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZSBmb3IgdGhpcyBwYWdlIHRhYmxlIGNoZWNrIHJvdXRpbmUuIFdoZXJlJiMzOTtzIHRoZSBiZXN0IHBsYWNlIHRvIHN0YXJ0PyBNeSBpbml0aWFsIGh1bmNoIGlzIHRvIGxvb2sgY2xvc2VseSBhdCB0aGUgYF9fc2V0dXBgIG9yIHRoZSBgZWFybHlfcGFyYW1gIGZ1bmN0aW9ucyB3aXRoaW4gYG1tL3BhZ2VfdGFibGVfY2hlY2suY2AuIFRoZXNlIGFyZSB0aGUgdHlwaWNhbCBlbnRyeSBwb2ludHMgZm9yIGVhcmx5IGNvbmZpZ3VyYXRpb24gYW5kIGluaXRpYWxpemF0aW9uIHdpdGhpbiB0aGlzIGFyZWEgb2YgdGhlIG1lbW9yeSBtYW5hZ2VtZW50IGNvZGUuIFRoYXQgc2VlbXMgbGlrZSB0aGUgbW9zdCBsb2dpY2FsIHBsYWNlIHRvIGJlZ2luIG15IGludmVzdGlnYXRpb24gdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBpcyBoYW5kbGVkLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiB0aGUgaXNzdWUgc3RlbXMgZnJvbSBhbiBpbmNvcnJlY3QgaW5pdGlhbCBwYXJhbWV0ZXIsIG9yIHBlcmhhcHMgYSBjb25mbGljdCBkdXJpbmcgZWFybHkgc2V0dXAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE4IDA1OjEwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2Vhcmx5X3BhcmFtJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vcGFnZV90YWJsZV9jaGVjay5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL3BhZ2VfdGFibGVfY2hlY2suYz0yNz1zdGF0aWMgaW50IF9faW5pdCBlYXJseV9wYWdlX3RhYmxlX2NoZWNrX3BhcmFtKGNoYXIgKmJ1Zilcbi0tXG5tbS9wYWdlX3RhYmxlX2NoZWNrLmMtMzEtXG5tbS9wYWdlX3RhYmxlX2NoZWNrLmM6MzI6ZWFybHlfcGFyYW0oXCYjMzQ7cGFnZV90YWJsZV9jaGVja1wmIzM0OywgZWFybHlfcGFnZV90YWJsZV9jaGVja19wYXJhbSk7XG5tbS9wYWdlX3RhYmxlX2NoZWNrLmMtMzMtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE4IDA1OjEwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY3MzUKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiA2MDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRW5hYmxpbmcgUGFnZSBUYWJsZSBDaGVja3MgZm9yIEZ1enppbmcqKgoKT2theSwgc28gaWYgYFBBR0VfVEFCTEVfQ0hFQ0tfRU5GT1JDRURgIGlzIHNldCwgaXQgZGVmYXVsdHMgdG8gZW5hYmxlZC4gVGhhdCBtYWtlcyBzZW5zZSwgc28gbGV0JiMzOTtzIGVuYWJsZSBib3RoIGBQQUdFX1RBQkxFX0NIRUNLYCBhbmQgYFBBR0VfVEFCTEVfQ0hFQ0tfRU5GT1JDRURgLiBOb3csIGJlZm9yZSBnb2luZyBmdXJ0aGVyLCBJIG5lZWQgdG8gY2hlY2sgdGhlIGRlcGVuZGVuY2llcyBmb3IgYFBBR0VfVEFCTEVfQ0hFQ0tgLiBIbW0sIGl0IGRlcGVuZHMgb24gYEFSQ0hfU1VQUE9SVFNfUEFHRV9UQUJMRV9DSEVDS2AgYW5kIGBFWENMVVNJVkVfU1lTVEVNX1JBTWAuIEdvb2QsIHRoYXQmIzM5O3Mgc3RyYWlnaHRmb3J3YXJkLiBJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgdmVyaWZ5IGBQQUdFX1RBQkxFX0NIRUNLX0VORk9SQ0VEYCBkb2VzbiYjMzk7dCBoYXZlIGFueSBoaWRkZW4gZGVwZW5kZW5jaWVzLgoKTm93LCBmb3IgdGhlIGZ1enppbmcgdGFyZ2V0cy4gTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyB0byBoaXQgdGhlc2UgZnVuY3Rpb25zIGRpcmVjdGx5OiBgX19wYWdlX3RhYmxlX2NoZWNrX3B0ZV9jbGVhcmAsIGBfX3BhZ2VfdGFibGVfY2hlY2tfcG1kX2NsZWFyYCwgYF9fcGFnZV90YWJsZV9jaGVja19wdWRfY2xlYXJgLCBgX19wYWdlX3RhYmxlX2NoZWNrX3B0ZXNfc2V0YCwgYF9fcGFnZV90YWJsZV9jaGVja19wbWRzX3NldGAsIGBfX3BhZ2VfdGFibGVfY2hlY2tfcHVkc19zZXRgLCBhbmQgYF9fcGFnZV90YWJsZV9jaGVja196ZXJvYC4KCkJ1dCB3YWl0IGEgbWludXRlLCBJIHNlZSB0aG9zZSBhcmUgY2FsbGVkIGZyb20gb3RoZXIgZnVuY3Rpb25zIOKAkyBgX19wYWdlX3RhYmxlX2NoZWNrX3B0ZXNfc2V0YCBhbmQgc3VjaCBhcmUgY2FsbGVkIGJ5IGBwYWdlX3RhYmxlX2NoZWNrX3NldGAsIGBwYWdlX3RhYmxlX2NoZWNrX2NsZWFyYCwgYF9fcGFnZV90YWJsZV9jaGVja196ZXJvYC4gQXJlIHRoZXNlIGhvdC1wYXRoIGZ1bmN0aW9ucz8gUGFnZSB0YWJsZSBtb2RpZmljYXRpb25zIGFyZSBjb21tb24sIGVzcGVjaWFsbHkgb24gZXZlcnkgcGFnZSBmYXVsdCwgYW5kIG11bm1hcC9leGl0LiBCdXQgdGhlIHByb21wdCBzcGVjaWZpY2FsbHkgc2F5cyB0byBhdm9pZCBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucy4gSG93ZXZlciwgdGhlc2UgYXJlICpleGFjdGx5KiB3aGVyZSB0aGUgbW9kaWZpZWQgY29kZSBpcyBleGVjdXRlZC4gVGhhdCBtYWtlcyB0aGVtIHBlcmZlY3QgdGFyZ2V0cy4gQmV0dGVyIHRvIGZvY3VzIG9uIHRob3NlIGV4cG9ydGVkIHdyYXBwZXIgZnVuY3Rpb25zLgoKU28sIGxldCYjMzk7cyBrZWVwIGl0IGNsZWFuLiBMZXQmIzM5O3MgbWFrZSBzdXJlIHRoZXJlIGFyZW4mIzM5O3QgYW55IG90aGVyIHJlbGF0ZWQgY29uZmlncywgZG91YmxlLWNoZWNraW5nIGBQQUdFX1RBQkxFX0NIRUNLX0VORk9SQ0VEYCBpbiBgbW0vS2NvbmZpZy5kZWJ1Z2AgYW5kIG1vdmUgZm9yd2FyZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTggMDU6MTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFBBR0VfVEFCTEVfQ0hFQ0tfRU5GT1JDRUQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS9LY29uZmlnLmRlYnVnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL0tjb25maWcuZGVidWc9MTIyPWNvbmZpZyBQQUdFX1RBQkxFX0NIRUNLXG4tLVxubW0vS2NvbmZpZy5kZWJ1Zy0xMzUtXG5tbS9LY29uZmlnLmRlYnVnOjEzNjpjb25maWcgUEFHRV9UQUJMRV9DSEVDS19FTkZPUkNFRFxubW0vS2NvbmZpZy5kZWJ1Zy0xMzctXHRib29sIFwmIzM0O0VuZm9yY2UgdGhlIHBhZ2UgdGFibGUgY2hlY2tpbmcgYnkgZGVmYXVsdFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOCAwNToxMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3ODkxCgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogODQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYW5hbHlzaXMgb2YgdGhlIHNpdHVhdGlvbjoKCioqUGFnZSBUYWJsZSBDaGVjayBFbmZvcmNlbWVudCAmYW1wOyBQb3RlbnRpYWwgT3ZlcmZsb3cqKgoKT2theSwgdGhlIGtleSBjb25maWd1cmF0aW9uIG9wdGlvbiBoZXJlIGlzIGBQQUdFX1RBQkxFX0NIRUNLX0VORk9SQ0VEYC4gR290IGl0LgoKVGhpcyBwYXRjaCBpcyBtb2RpZnlpbmcgdGhlIGBzdHJ1Y3QgcGFnZV90YWJsZV9jaGVja2AgYnkgc3dpdGNoaW5nIGZyb20gYGF0b21pY190YCB0byBgYXRvbWljNjRfdGAuIFRoYXQmIzM5O3MgYSBmdW5jdGlvbmFsIGNoYW5nZSwgYSBiaXQgbW9yZSBzaWduaWZpY2FudCB0aGFuIGEgcHVyZWx5IGNvc21ldGljIGFsdGVyYXRpb24uIFRoZSByZWFzb24/IEl0JiMzOTtzIGRpcmVjdGx5IGFkZHJlc3NpbmcgYSBwb3RlbnRpYWwgb3ZlcmZsb3cgaXNzdWUuIE1ha2VzIHNlbnNlOyBndWFyZGluZyBhZ2FpbnN0IHRoYXQgaXMgYWx3YXlzIGEgZ29vZCBwcmFjdGljZSwgZXNwZWNpYWxseSBpbiBzb21ldGhpbmcgYXMgY3JpdGljYWwgYXMgcGFnZSB0YWJsZSBtYW5hZ2VtZW50LgoKTm93LCBhIGZ1bmN0aW9uYWwgY2hhbmdlIGxpa2UgdGhpcz8gVGhhdCBhYnNvbHV0ZWx5IHdhcnJhbnRzIHNvbWUgZnV6emluZy4gTmVlZCB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBzdWJ0bGUgaW50ZXJhY3Rpb25zIG9yIHVuZXhwZWN0ZWQgYmVoYXZpb3JzIHRoYXQgc3VyZmFjZSB1bmRlciBsb2FkLiBJdCYjMzk7cyBiZXN0IHRvIGJlIGRpbGlnZW50LgoKQW5kIG9uZSBtb3JlIHRoaW5nLCBsZXQgbWUganVzdCBxdWlja2x5IGNvbmZpcm0gdGhhdCB0aGUgd2hvbGUgYFBBR0VfVEFCTEVfQ0hFQ0tgIGZlYXR1cmUgaXMgc3VwcG9ydGVkIG9uIHg4NiwganVzdCB0byBlbnN1cmUgdGhpcyBjaGFuZ2UgaXMgZXZlbiByZWxldmFudCBmb3IgdGhlIHRhcmdldCBwbGF0Zm9ybS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTggMDU6MTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7QVJDSF9TVVBQT1JUU19QQUdFX1RBQkxFX0NIRUNLJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC94ODYvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gveDg2L0tjb25maWc9NTg9Y29uZmlnIFg4NlxuLS1cbmFyY2gveDg2L0tjb25maWctMTI1LVx0c2VsZWN0IEFSQ0hfU1VQUE9SVFNfSFVHRVRMQkZTXG5hcmNoL3g4Ni9LY29uZmlnOjEyNjpcdHNlbGVjdCBBUkNIX1NVUFBPUlRTX1BBR0VfVEFCTEVfQ0hFQ0tcdGlmIFg4Nl82NFxuYXJjaC94ODYvS2NvbmZpZy0xMjctXHRzZWxlY3QgQVJDSF9IQVNfUFRFX1BST1ROT05FXHRcdGlmIFg4Nl82NFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOCAwNToxMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4MzQzCgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQ3VycmVudCBMaW5lIG9mIFJlYXNvbmluZyoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBjb25maXJtZWQgeDg2XzY0IHN1cHBvcnQg4oCTIHRoYXQmIzM5O3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBOb3csIHRoZSBjcml0aWNhbCBuZXh0IHN0ZXAgaXMgdG8gZGV0ZXJtaW5lIGlmIGBFWENMVVNJVkVfU1lTVEVNX1JBTWAgaXMgc3VwcG9ydGVkIG9uIHg4NiBhcmNoaXRlY3R1cmUgZ2VuZXJhbGx5LiBUaGlzIGlzIGEgY3J1Y2lhbCBwaWVjZSBvZiBpbmZvcm1hdGlvbiBmb3IgdGhlIGN1cnJlbnQgdGFzaywgYW5kIHVuZGVyc3RhbmRpbmcgaXRzIGF2YWlsYWJpbGl0eSAob3IgbGFjayB0aGVyZW9mKSB3aWxsIGRpY3RhdGUgdGhlIGRpcmVjdGlvbiBvZiBteSBuZXh0IGludmVzdGlnYXRpb24uIEkgbmVlZCB0byBiZSBjZXJ0YWluIGFib3V0IHRoaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE4IDA1OjEwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7RVhDTFVTSVZFX1NZU1RFTV9SQU0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3g4Ni8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOCAwNToxMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NTE3CgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogMTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSGVyZSYjMzk7cyBob3cgSSYjMzk7ZCBhcHByb2FjaCB0aGlzIHRhc2ssIGFzIGlmIHRoZXNlIHdlcmUgbXkgaW50ZXJuYWwgdGhvdWdodHM6CgoqKkxvY2F0aW5nIHRoZSBEZWZpbml0aW9uIG9mIEVYQ0xVU0lWRV9TWVNURU1fUkFNKioKCkFscmlnaHQsIHRoZSBmaXJzdCB0aGluZyBJIG5lZWQgdG8gZG8gaXMgcGlucG9pbnQgdGhlIGRlZmluaXRpb24gb2YgdGhpcyBgRVhDTFVTSVZFX1NZU1RFTV9SQU1gIHZhcmlhYmxlLiBUaGlzIGlzIGNyaXRpY2FsIGJlY2F1c2Ugd2l0aG91dCBrbm93aW5nICp3aGF0KiBpdCBpcywgdW5kZXJzdGFuZGluZyBpdHMgY29udGV4dCBpcyBpbXBvc3NpYmxlLiBJdCYjMzk7cyBhbG1vc3QgY2VydGFpbmx5IGEgbWFjcm8sIGEgY29uc3RhbnQsIG9yIG1heWJlIGV2ZW4gYSB2YXJpYWJsZSBkZWZpbmVkIHNvbWV3aGVyZSBpbiB0aGUgcHJvamVjdCYjMzk7cyBjb2RlYmFzZSBvciBhIGxpbmtlZCBsaWJyYXJ5LCBidXQgSSBjYW4mIzM5O3QgYmUgc3VyZSB1bnRpbCBJIGZpbmQgaXQuIFNvIEkgbmVlZCB0byB0cmFjZSB0aGlzIGJhY2sgdG8gaXRzIGRlY2xhcmF0aW9uLiBJJiMzOTtsbCBuZWVkIHRvIGtub3cgd2hlcmUgdGhpcyBpcyBkZWZpbmVkLCBiZWNhdXNlIHRoYXQmIzM5O2xsIHRlbGwgbWUgd2hhdCBpdCYjMzk7cyBmb3IsIGFuZCBob3cgaXQgaXMgc3VwcG9zZWQgdG8gYmUgaGFuZGxlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTggMDU6MTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEVYQ0xVU0lWRV9TWVNURU1fUkFNJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL0tjb25maWc9NTAyPWNvbmZpZyBNRU1PUllfSVNPTEFUSU9OXG4tLVxubW0vS2NvbmZpZy01MDctIyAvZGV2L21lbS5cbm1tL0tjb25maWc6NTA4OmNvbmZpZyBFWENMVVNJVkVfU1lTVEVNX1JBTVxubW0vS2NvbmZpZy01MDktXHRkZWZfYm9vbCB5XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE4IDA1OjExPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg4MDcKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiAzOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgc3VtbWFyaXplZCBpbiB0aGUgZmlyc3QgcGVyc29uLCBhc3N1bWluZyBhbiBleHBlcnQtbGV2ZWwgdW5kZXJzdGFuZGluZzoKCioqS2NvbmZpZyBEZXBlbmRlbmN5IERlZXAgRGl2ZSoqCgpBbHJpZ2h0LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYSBgZGVmX2Jvb2wgeWAgaW4gdGhlIGBtbS9LY29uZmlnYCBmaWxlLiBJbnN0YW50bHksIG15IG1pbmQganVtcHMgdG8gdGhlIGRlcGVuZGVuY2llcy4gSXQmIzM5O3Mgbm90IGEgc3RhbmRhbG9uZSBvcHRpb247IGl0JiMzOTtzIGNvbnRpbmdlbnQgb24gZWl0aGVyIGBTVFJJQ1RfREVWTUVNYCBvciBgSU9fU1RSSUNUX0RFVk1FTWAgYmVpbmcgZGVmaW5lZC4gVGhpcyBsaWtlbHkgbWVhbnMgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBhIGJvb2xlYW4gb3B0aW9uIGNvbnRyb2xsZWQgYnkgbWVtb3J5IHJlc3RyaWN0aW9ucywgYW5kIGl0cyBkZWZhdWx0IHN0YXRlIGlzICYjMzk7eWVzJiMzOTsgb25seSB1bmRlciBzcGVjaWZpYyBjaXJjdW1zdGFuY2VzLiBNeSBpbml0aWFsIHF1ZXN0aW9ucyBhcmU6IHdoYXQgaXMgdGhlIG1lYW5pbmcgb2YgeT8gRG9lcyB0aGUgbmFtZSBvZiB0aGUgZGVmaW5pdGlvbiBnaXZlIHVzIGEgY2x1ZT8gQXJlIHRoZXJlIG90aGVyIGluc3RhbmNlcyBvZiB0aGlzLCBhbmQgaG93IGNhbiB0aGV5IGJlIHVzZWQgb3IgY29tcGFyZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW50ZW50IGJldHRlcj8KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTggMDU6MTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7RVhDTFVTSVZFX1NZU1RFTV9SQU0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL0tjb25maWc9NTAyPWNvbmZpZyBNRU1PUllfSVNPTEFUSU9OXG4tLVxubW0vS2NvbmZpZy01MDctIyAvZGV2L21lbS5cbm1tL0tjb25maWc6NTA4OmNvbmZpZyBFWENMVVNJVkVfU1lTVEVNX1JBTVxubW0vS2NvbmZpZy01MDktXHRkZWZfYm9vbCB5XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE4IDA1OjExPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkxMzAKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAxOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGF0IGRpcmVjdGl2ZToKCioqQW5hbHl6aW5nIHRoZSBLY29uZmlnIEZpbGUgZm9yIEd1aWRhbmNlKioKCk9rYXksIGhvbGQgb24gYSBzZWNvbmQsIGJlZm9yZSBJIGRpdmUgdG9vIGRlZXAgaW50byB0aGlzIHByb2JsZW0uIExldCYjMzk7cyBnZXQgYSBtb3JlIGdyYW51bGFyIHZpZXcgb2YgdGhlIHNpdHVhdGlvbi4gSSBzaG91bGQgcmVhbGx5IHRha2UgYSBsb29rIGF0IHRoZSBgbW0vS2NvbmZpZ2AgZmlsZSwgc3BlY2lmaWNhbGx5IGFyb3VuZCBsaW5lIDUwOC4gVGhhdCBhcmVhIGlzIGxpa2VseSB0byBjb250YWluIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byBtZW1vcnkgbWFuYWdlbWVudC4gSXQmIzM5O3MgcHJvYmFibHkgd2hlcmUgdGhlIHJlbGV2YW50IHN5bWJvbHMgYW5kIHRoZWlyIGRlcGVuZGVuY2llcyBhcmUgZGVmaW5lZC4gQW5hbHl6aW5nIHRoYXQgc2VjdGlvbiBjYXJlZnVsbHkgd2lsbCBnaXZlIG1lIGEgY2xlYXIgcGljdHVyZSBvZiB3aGF0IG9wdGlvbnMgYXJlIGF2YWlsYWJsZSwgaG93IHRoZXkmIzM5O3JlIGludGVuZGVkIHRvIGJlIHVzZWQsIGFuZCBpZiB0aGVyZSBhcmUgYW55IHN1YnRsZSBjb25maWd1cmF0aW9ucyBJIG1pZ2h0IGJlIG1pc3NpbmcuIFRoaXMgaXMgYSBjcml0aWNhbCBzdGVwIGJlZm9yZSBtYWtpbmcgYW55IGZ1cnRoZXIgYXNzdW1wdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE4IDA1OjExPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bW0vS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDUwMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNTAwOlx0XHRib29sXG4gNTAxOlx0XG4gNTAyOlx0Y29uZmlnIE1FTU9SWV9JU09MQVRJT05cbiA1MDM6XHRcdGJvb2xcbiA1MDQ6XHRcbiA1MDU6XHQjIElPUkVTT1VSQ0VfU1lTVEVNX1JBTSByZWdpb25zIGluIHRoZSBrZXJuZWwgcmVzb3VyY2UgdHJlZSB0aGF0IGFyZSBtYXJrZWRcbiA1MDY6XHQjIElPUkVTT1VSQ0VfRVhDTFVTSVZFIGNhbm5vdCBiZSBtYXBwZWQgdG8gdXNlciBzcGFjZSwgZm9yIGV4YW1wbGUsIHZpYVxuIDUwNzpcdCMgL2Rldi9tZW0uXG4gNTA4Olx0Y29uZmlnIEVYQ0xVU0lWRV9TWVNURU1fUkFNXG4gNTA5Olx0XHRkZWZfYm9vbCB5XG4gNTEwOlx0XHRkZXBlbmRzIG9uICFERVZNRU0gfHwgU1RSSUNUX0RFVk1FTVxuIDUxMTpcdFxuIDUxMjpcdCNcbiA1MTM6XHQjIE9ubHkgYmUgc2V0IG9uIGFyY2hpdGVjdHVyZXMgdGhhdCBoYXZlIGNvbXBsZXRlbHkgaW1wbGVtZW50ZWQgbWVtb3J5IGhvdHBsdWdcbiA1MTQ6XHQjIGZlYXR1cmUuIElmIHlvdSBhcmUgbm90IHN1cmUsIGRvbiYjMzk7dCB0b3VjaCBpdC5cbiA1MTU6XHQjXG4gNTE2Olx0Y29uZmlnIEhBVkVfQk9PVE1FTV9JTkZPX05PREVcbiA1MTc6XHRcdGRlZl9ib29sIG5cbiA1MTg6XHRcbiA1MTk6XHRjb25maWcgQVJDSF9FTkFCTEVfTUVNT1JZX0hPVFBMVUdcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTggMDU6MTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTYxNAoJCQkJCQkJb3V0cHV0OiAyMzYKCQkJCQkJCXRob3VnaHRzOiA0ODUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQQUdFX1RBQkxFX0NIRUNLIEhvdCBQYXRoIGZvciBGdXp6aW5nKioKCk9rYXksIHNvIGxvb2tpbmcgYXQgdGhpcywgYEVYQ0xVU0lWRV9TWVNURU1fUkFNYCBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgdW5kZXIgdGhlIGNvbmRpdGlvbnMgYCFERVZNRU0gfHwgU1RSSUNUX0RFVk1FTWAuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoaWNoIGZ1bmN0aW9ucyBhcmUgdGhlICYjMzQ7aG90IHBhdGgmIzM0OyBmb3IgZnV6emluZywgc3BlY2lmaWNhbGx5IHRob3NlIGZ1bmN0aW9ucyB0aGF0IGltcGxlbWVudCB0aGUgY29kZSBtb2RpZmljYXRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoLiBUaGUgcHJvbXB0IGluc3RydWN0cyBtZSB0byBhdm9pZCAqZ2VuZXJpYyogaG90LXBhdGggZnVuY3Rpb25zLCB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCgpNeSBmb2N1cyBzaG91bGQgYmUgb246CgoqICAgYF9fcGFnZV90YWJsZV9jaGVja19wdGVfY2xlYXJgCiogICBgX19wYWdlX3RhYmxlX2NoZWNrX3BtZF9jbGVhcmAKKiAgIGBfX3BhZ2VfdGFibGVfY2hlY2tfcHVkX2NsZWFyYAoqICAgYF9fcGFnZV90YWJsZV9jaGVja19wdGVzX3NldGAKKiAgIGBfX3BhZ2VfdGFibGVfY2hlY2tfcG1kc19zZXRgCiogICBgX19wYWdlX3RhYmxlX2NoZWNrX3B1ZHNfc2V0YAoqICAgYF9fcGFnZV90YWJsZV9jaGVja196ZXJvYAoKVGhlc2UgZnVuY3Rpb25zIGFyZSBjYWxsZWQgb24gKmV2ZXJ5KiBwYWdlIHRhYmxlIG1vZGlmaWNhdGlvbiwgc28gdGhleSBhcmUgdW5kZW5pYWJseSBob3QgYW5kIHdoZXJlIHRoZSBuZXcgbG9naWMgaXMgZXhlY3V0ZWQuIFRoZSBxdWVzdGlvbiBpcywgYXJlIHRoZXkgY29uc2lkZXJlZCBnZW5lcmljPyBJJiMzOTtkIGFyZ3VlIG5vdC4gVGhleSYjMzk7cmUgc3BlY2lmaWMgdG8gdGhlIGBQQUdFX1RBQkxFX0NIRUNLYCBmZWF0dXJlLiBJJiMzOTtsbCBpbmNsdWRlIHRoZW0uCgpJIGp1c3QgZG91YmxlLWNoZWNrZWQgYW5kIGBwYWdlX3RhYmxlX2NoZWNrX3NldGAgYW5kIGBwYWdlX3RhYmxlX2NoZWNrX2NsZWFyYCBhcmUgc3RhdGljLCBhcyBJIGV4cGVjdGVkLCBtZWFuaW5nIHRoZXNlIHdpbGwgYmUgdGhlIHN5bWJvbHMgdG8gZm9jdXMgb24uCgpTbyB0aGUgbWFpbiBjb25maWcgb3B0aW9ucyBpbiBwbGF5IGhlcmUgYXJlOgoqICAgYFBBR0VfVEFCTEVfQ0hFQ0tgCiogICBgUEFHRV9UQUJMRV9DSEVDS19FTkZPUkNFRGAKClRoZSBwYXRjaCBpcyBhYm91dCBjaGFuZ2luZyB0aGUgYGFub25fbWFwX2NvdW50YCBhbmQgYGZpbGVfbWFwX2NvdW50YCBmcm9tIGBhdG9taWNfdGAgdG8gYGF0b21pYzY0X3RgIHdpdGhpbiB0aGUgYHN0cnVjdCBwYWdlX3RhYmxlX2NoZWNrYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGFuZCB0aGUgbWFpbiBhcmVhIHRoYXQgcmVxdWlyZXMgZnV6emluZy4gVGhlIHBhdGNoIGlzIHRvIHByZXZlbnQgb3ZlcmZsb3dzLCBpdCB3aWxsIGJlIHJlYWNoZWQgZHVyaW5nIHRoZSB0eXBpY2FsIHBhZ2UgdGFibGUgbW9kaWZpY2F0aW9ucywgc3VjaCBhcyBtbWFwIGFuZCBtdW5tYXAuIFdlIG5lZWQgdG8gZnV6eiB0aGVzZSBmdW5jdGlvbnMgdG8gbWFrZSBzdXJlIHRoZSA2NC1iaXQgYXRvbWljIG9wZXJhdGlvbnMgd29yayBjb3JyZWN0bHkgYW5kIGRvbiYjMzk7dCBpbnRyb2R1Y2UgYW55IHJlZ3Jlc3Npb25zLgoKTm93LCBsZXQmIzM5O3MgY2FsbCBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOCAwNToxMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7UEFHRV9UQUJMRV9DSEVDSyYjMzQ7LAogICAgJiMzNDtQQUdFX1RBQkxFX0NIRUNLX0VORk9SQ0VEJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7X19wYWdlX3RhYmxlX2NoZWNrX3B0ZV9jbGVhciYjMzQ7LAogICAgJiMzNDtfX3BhZ2VfdGFibGVfY2hlY2tfcG1kX2NsZWFyJiMzNDssCiAgICAmIzM0O19fcGFnZV90YWJsZV9jaGVja19wdWRfY2xlYXImIzM0OywKICAgICYjMzQ7X19wYWdlX3RhYmxlX2NoZWNrX3B0ZXNfc2V0JiMzNDssCiAgICAmIzM0O19fcGFnZV90YWJsZV9jaGVja19wbWRzX3NldCYjMzQ7LAogICAgJiMzNDtfX3BhZ2VfdGFibGVfY2hlY2tfcHVkc19zZXQmIzM0OywKICAgICYjMzQ7X19wYWdlX3RhYmxlX2NoZWNrX3plcm8mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggY2hhbmdlcyB0aGUgdHlwZSBvZiBhbm9uX21hcF9jb3VudCBhbmQgZmlsZV9tYXBfY291bnQgaW4gc3RydWN0IHBhZ2VfdGFibGVfY2hlY2sgZnJvbSBhdG9taWNfdCB0byBhdG9taWM2NF90IHRvIHByZXZlbnQgcG90ZW50aWFsIG92ZXJmbG93cy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBwYWdlIHRhYmxlIGNoZWNrIGxvZ2ljLCB3aGljaCBjYW4gYmUgcmVhY2hlZCBkdXJpbmcgcGFnZSB0YWJsZSBtb2RpZmljYXRpb25zIChlLmcuLCBtbWFwLCBtdW5tYXApLiBGdXp6aW5nIGlzIG5lZWRlZCB0byBlbnN1cmUgdGhlIDY0LWJpdCBhdG9taWMgb3BlcmF0aW9ucyB3b3JrIGNvcnJlY3RseSBhbmQgZG8gbm90IGludHJvZHVjZSByZWdyZXNzaW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7UEFHRV9UQUJMRV9DSEVDSyYjMzQ7LAogICAgJiMzNDtQQUdFX1RBQkxFX0NIRUNLX0VORk9SQ0VEJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7X19wYWdlX3RhYmxlX2NoZWNrX3B0ZV9jbGVhciYjMzQ7LAogICAgJiMzNDtfX3BhZ2VfdGFibGVfY2hlY2tfcG1kX2NsZWFyJiMzNDssCiAgICAmIzM0O19fcGFnZV90YWJsZV9jaGVja19wdWRfY2xlYXImIzM0OywKICAgICYjMzQ7X19wYWdlX3RhYmxlX2NoZWNrX3B0ZXNfc2V0JiMzNDssCiAgICAmIzM0O19fcGFnZV90YWJsZV9jaGVja19wbWRzX3NldCYjMzQ7LAogICAgJiMzNDtfX3BhZ2VfdGFibGVfY2hlY2tfcHVkc19zZXQmIzM0OywKICAgICYjMzQ7X19wYWdlX3RhYmxlX2NoZWNrX3plcm8mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggY2hhbmdlcyB0aGUgdHlwZSBvZiBhbm9uX21hcF9jb3VudCBhbmQgZmlsZV9tYXBfY291bnQgaW4gc3RydWN0IHBhZ2VfdGFibGVfY2hlY2sgZnJvbSBhdG9taWNfdCB0byBhdG9taWM2NF90IHRvIHByZXZlbnQgcG90ZW50aWFsIG92ZXJmbG93cy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBwYWdlIHRhYmxlIGNoZWNrIGxvZ2ljLCB3aGljaCBjYW4gYmUgcmVhY2hlZCBkdXJpbmcgcGFnZSB0YWJsZSBtb2RpZmljYXRpb25zIChlLmcuLCBtbWFwLCBtdW5tYXApLiBGdXp6aW5nIGlzIG5lZWRlZCB0byBlbnN1cmUgdGhlIDY0LWJpdCBhdG9taWMgb3BlcmF0aW9ucyB3b3JrIGNvcnJlY3RseSBhbmQgZG8gbm90IGludHJvZHVjZSByZWdyZXNzaW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE4VDA1OjEwOjE3LjIxOTU2OTY3NloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU5NDAzNTk3ODI3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlBBR0VfVEFCTEVfQ0hFQ0tcIixcbiAgICBcIlBBR0VfVEFCTEVfQ0hFQ0tfRU5GT1JDRURcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJfX3BhZ2VfdGFibGVfY2hlY2tfcHRlX2NsZWFyXCIsXG4gICAgXCJfX3BhZ2VfdGFibGVfY2hlY2tfcG1kX2NsZWFyXCIsXG4gICAgXCJfX3BhZ2VfdGFibGVfY2hlY2tfcHVkX2NsZWFyXCIsXG4gICAgXCJfX3BhZ2VfdGFibGVfY2hlY2tfcHRlc19zZXRcIixcbiAgICBcIl9fcGFnZV90YWJsZV9jaGVja19wbWRzX3NldFwiLFxuICAgIFwiX19wYWdlX3RhYmxlX2NoZWNrX3B1ZHNfc2V0XCIsXG4gICAgXCJfX3BhZ2VfdGFibGVfY2hlY2tfemVyb1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGNoYW5nZXMgdGhlIHR5cGUgb2YgYW5vbl9tYXBfY291bnQgYW5kIGZpbGVfbWFwX2NvdW50IGluIHN0cnVjdCBwYWdlX3RhYmxlX2NoZWNrIGZyb20gYXRvbWljX3QgdG8gYXRvbWljNjRfdCB0byBwcmV2ZW50IHBvdGVudGlhbCBvdmVyZmxvd3MuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgcGFnZSB0YWJsZSBjaGVjayBsb2dpYywgd2hpY2ggY2FuIGJlIHJlYWNoZWQgZHVyaW5nIHBhZ2UgdGFibGUgbW9kaWZpY2F0aW9ucyAoZS5nLiwgbW1hcCwgbXVubWFwKS4gRnV6emluZyBpcyBuZWVkZWQgdG8gZW5zdXJlIHRoZSA2NC1iaXQgYXRvbWljIG9wZXJhdGlvbnMgd29yayBjb3JyZWN0bHkgYW5kIGRvIG5vdCBpbnRyb2R1Y2UgcmVncmVzc2lvbnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE4VDA1OjEwOjE3LjIxOTU3NDYyNloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjIwMjg5NjM0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNWE4Y2M4OTVmZjJmOWI3YzMzNDRlNTQ5MDQyMjVlODI2NTFmNGUzZFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU2F0IEp1bCAxOCAwNToxMDoxNSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9tbS9wYWdlX3RhYmxlX2NoZWNrLmMgYi9tbS9wYWdlX3RhYmxlX2NoZWNrLmNcXG5pbmRleCA1M2E4OTk3ZWMwNDNlYS4uZWRkOWQ5ZWRmNmZjZWUgMTAwNjQ0XFxuLS0tIGEvbW0vcGFnZV90YWJsZV9jaGVjay5jXFxuKysrIGIvbW0vcGFnZV90YWJsZV9jaGVjay5jXFxuQEAgLTE0LDggKzE0LDggQEBcXG4gI2RlZmluZSBwcl9mbXQoZm10KVxcdFxcXCJwYWdlX3RhYmxlX2NoZWNrOiBcXFwiIGZtdFxcbiBcXG4gc3RydWN0IHBhZ2VfdGFibGVfY2hlY2sge1xcbi1cXHRhdG9taWNfdCBhbm9uX21hcF9jb3VudDtcXG4tXFx0YXRvbWljX3QgZmlsZV9tYXBfY291bnQ7XFxuK1xcdGF0b21pYzY0X3QgYW5vbl9tYXBfY291bnQ7XFxuK1xcdGF0b21pYzY0X3QgZmlsZV9tYXBfY291bnQ7XFxuIH07XFxuIFxcbiBzdGF0aWMgYm9vbCBfX3BhZ2VfdGFibGVfY2hlY2tfZW5hYmxlZCBfX2luaXRkYXRhID1cXG5AQCAtNzksMTEgKzc5LDExIEBAIHN0YXRpYyB2b2lkIHBhZ2VfdGFibGVfY2hlY2tfY2xlYXIodW5zaWduZWQgbG9uZyBwZm4sIHVuc2lnbmVkIGxvbmcgcGdjbnQpXFxuIFxcdFxcdHN0cnVjdCBwYWdlX3RhYmxlX2NoZWNrICpwdGMgPSBnZXRfcGFnZV90YWJsZV9jaGVjayhwYWdlX2V4dCk7XFxuIFxcbiBcXHRcXHRpZiAoYW5vbikge1xcbi1cXHRcXHRcXHRCVUdfT04oYXRvbWljX3JlYWQoXFx1MDAyNnB0Yy1cXHUwMDNlZmlsZV9tYXBfY291bnQpKTtcXG4tXFx0XFx0XFx0QlVHX09OKGF0b21pY19kZWNfcmV0dXJuKFxcdTAwMjZwdGMtXFx1MDAzZWFub25fbWFwX2NvdW50KSBcXHUwMDNjIDApO1xcbitcXHRcXHRcXHRCVUdfT04oYXRvbWljNjRfcmVhZChcXHUwMDI2cHRjLVxcdTAwM2VmaWxlX21hcF9jb3VudCkpO1xcbitcXHRcXHRcXHRCVUdfT04oYXRvbWljNjRfZGVjX3JldHVybihcXHUwMDI2cHRjLVxcdTAwM2Vhbm9uX21hcF9jb3VudCkgXFx1MDAzYyAwKTtcXG4gXFx0XFx0fSBlbHNlIHtcXG4tXFx0XFx0XFx0QlVHX09OKGF0b21pY19yZWFkKFxcdTAwMjZwdGMtXFx1MDAzZWFub25fbWFwX2NvdW50KSk7XFxuLVxcdFxcdFxcdEJVR19PTihhdG9taWNfZGVjX3JldHVybihcXHUwMDI2cHRjLVxcdTAwM2VmaWxlX21hcF9jb3VudCkgXFx1MDAzYyAwKTtcXG4rXFx0XFx0XFx0QlVHX09OKGF0b21pYzY0X3JlYWQoXFx1MDAyNnB0Yy1cXHUwMDNlYW5vbl9tYXBfY291bnQpKTtcXG4rXFx0XFx0XFx0QlVHX09OKGF0b21pYzY0X2RlY19yZXR1cm4oXFx1MDAyNnB0Yy1cXHUwMDNlZmlsZV9tYXBfY291bnQpIFxcdTAwM2MgMCk7XFxuIFxcdFxcdH1cXG4gXFx0fVxcbiBcXHRyY3VfcmVhZF91bmxvY2soKTtcXG5AQCAtMTE0LDExICsxMTQsMTEgQEAgc3RhdGljIHZvaWQgcGFnZV90YWJsZV9jaGVja19zZXQodW5zaWduZWQgbG9uZyBwZm4sIHVuc2lnbmVkIGxvbmcgcGdjbnQsXFxuIFxcdFxcdHN0cnVjdCBwYWdlX3RhYmxlX2NoZWNrICpwdGMgPSBnZXRfcGFnZV90YWJsZV9jaGVjayhwYWdlX2V4dCk7XFxuIFxcbiBcXHRcXHRpZiAoYW5vbikge1xcbi1cXHRcXHRcXHRCVUdfT04oYXRvbWljX3JlYWQoXFx1MDAyNnB0Yy1cXHUwMDNlZmlsZV9tYXBfY291bnQpKTtcXG4tXFx0XFx0XFx0QlVHX09OKGF0b21pY19pbmNfcmV0dXJuKFxcdTAwMjZwdGMtXFx1MDAzZWFub25fbWFwX2NvdW50KSBcXHUwMDNlIDEgXFx1MDAyNlxcdTAwMjYgcncpO1xcbitcXHRcXHRcXHRCVUdfT04oYXRvbWljNjRfcmVhZChcXHUwMDI2cHRjLVxcdTAwM2VmaWxlX21hcF9jb3VudCkpO1xcbitcXHRcXHRcXHRCVUdfT04oYXRvbWljNjRfaW5jX3JldHVybihcXHUwMDI2cHRjLVxcdTAwM2Vhbm9uX21hcF9jb3VudCkgXFx1MDAzZSAxIFxcdTAwMjZcXHUwMDI2IHJ3KTtcXG4gXFx0XFx0fSBlbHNlIHtcXG4tXFx0XFx0XFx0QlVHX09OKGF0b21pY19yZWFkKFxcdTAwMjZwdGMtXFx1MDAzZWFub25fbWFwX2NvdW50KSk7XFxuLVxcdFxcdFxcdEJVR19PTihhdG9taWNfaW5jX3JldHVybihcXHUwMDI2cHRjLVxcdTAwM2VmaWxlX21hcF9jb3VudCkgXFx1MDAzYyAwKTtcXG4rXFx0XFx0XFx0QlVHX09OKGF0b21pYzY0X3JlYWQoXFx1MDAyNnB0Yy1cXHUwMDNlYW5vbl9tYXBfY291bnQpKTtcXG4rXFx0XFx0XFx0QlVHX09OKGF0b21pYzY0X2luY19yZXR1cm4oXFx1MDAyNnB0Yy1cXHUwMDNlZmlsZV9tYXBfY291bnQpIFxcdTAwM2MgMCk7XFxuIFxcdFxcdH1cXG4gXFx0fVxcbiBcXHRyY3VfcmVhZF91bmxvY2soKTtcXG5AQCAtMTM5LDggKzEzOSw4IEBAIHZvaWQgX19wYWdlX3RhYmxlX2NoZWNrX3plcm8oc3RydWN0IHBhZ2UgKnBhZ2UsIHVuc2lnbmVkIGludCBvcmRlcilcXG4gXFx0Zm9yX2VhY2hfcGFnZV9leHQocGFnZSwgMSBcXHUwMDNjXFx1MDAzYyBvcmRlciwgcGFnZV9leHQsIGl0ZXIpIHtcXG4gXFx0XFx0c3RydWN0IHBhZ2VfdGFibGVfY2hlY2sgKnB0YyA9IGdldF9wYWdlX3RhYmxlX2NoZWNrKHBhZ2VfZXh0KTtcXG4gXFxuLVxcdFxcdEJVR19PTihhdG9taWNfcmVhZChcXHUwMDI2cHRjLVxcdTAwM2Vhbm9uX21hcF9jb3VudCkpO1xcbi1cXHRcXHRCVUdfT04oYXRvbWljX3JlYWQoXFx1MDAyNnB0Yy1cXHUwMDNlZmlsZV9tYXBfY291bnQpKTtcXG4rXFx0XFx0QlVHX09OKGF0b21pYzY0X3JlYWQoXFx1MDAyNnB0Yy1cXHUwMDNlYW5vbl9tYXBfY291bnQpKTtcXG4rXFx0XFx0QlVHX09OKGF0b21pYzY0X3JlYWQoXFx1MDAyNnB0Yy1cXHUwMDNlZmlsZV9tYXBfY291bnQpKTtcXG4gXFx0fVxcbiBcXHRyY3VfcmVhZF91bmxvY2soKTtcXG4gfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xOFQwNToxMDoxNy44NDA0NTkwNVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTg3ODI3MDA1MzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiUEFHRV9UQUJMRV9DSEVDS1wiLFxuICAgIFwiUEFHRV9UQUJMRV9DSEVDS19FTkZPUkNFRFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIl9fcGFnZV90YWJsZV9jaGVja19wdGVfY2xlYXJcIixcbiAgICBcIl9fcGFnZV90YWJsZV9jaGVja19wbWRfY2xlYXJcIixcbiAgICBcIl9fcGFnZV90YWJsZV9jaGVja19wdWRfY2xlYXJcIixcbiAgICBcIl9fcGFnZV90YWJsZV9jaGVja19wdGVzX3NldFwiLFxuICAgIFwiX19wYWdlX3RhYmxlX2NoZWNrX3BtZHNfc2V0XCIsXG4gICAgXCJfX3BhZ2VfdGFibGVfY2hlY2tfcHVkc19zZXRcIixcbiAgICBcIl9fcGFnZV90YWJsZV9jaGVja196ZXJvXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggY2hhbmdlcyB0aGUgdHlwZSBvZiBhbm9uX21hcF9jb3VudCBhbmQgZmlsZV9tYXBfY291bnQgaW4gc3RydWN0IHBhZ2VfdGFibGVfY2hlY2sgZnJvbSBhdG9taWNfdCB0byBhdG9taWM2NF90IHRvIHByZXZlbnQgcG90ZW50aWFsIG92ZXJmbG93cy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBwYWdlIHRhYmxlIGNoZWNrIGxvZ2ljLCB3aGljaCBjYW4gYmUgcmVhY2hlZCBkdXJpbmcgcGFnZSB0YWJsZSBtb2RpZmljYXRpb25zIChlLmcuLCBtbWFwLCBtdW5tYXApLiBGdXp6aW5nIGlzIG5lZWRlZCB0byBlbnN1cmUgdGhlIDY0LWJpdCBhdG9taWMgb3BlcmF0aW9ucyB3b3JrIGNvcnJlY3RseSBhbmQgZG8gbm90IGludHJvZHVjZSByZWdyZXNzaW9ucy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA1YThjYzg5NWZmMmY5YjdjMzM0NGU1NDkwNDIyNWU4MjY1MWY0ZTNkXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBKdWwgMTggMDU6MTA6MTUgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9tbS9wYWdlX3RhYmxlX2NoZWNrLmMgYi9tbS9wYWdlX3RhYmxlX2NoZWNrLmNcbmluZGV4IDUzYTg5OTdlYzA0M2VhLi5lZGQ5ZDllZGY2ZmNlZSAxMDA2NDRcbi0tLSBhL21tL3BhZ2VfdGFibGVfY2hlY2suY1xuKysrIGIvbW0vcGFnZV90YWJsZV9jaGVjay5jXG5AQCAtMTQsOCArMTQsOCBAQFxuICNkZWZpbmUgcHJfZm10KGZtdClcdFwicGFnZV90YWJsZV9jaGVjazogXCIgZm10XG4gXG4gc3RydWN0IHBhZ2VfdGFibGVfY2hlY2sge1xuLVx0YXRvbWljX3QgYW5vbl9tYXBfY291bnQ7XG4tXHRhdG9taWNfdCBmaWxlX21hcF9jb3VudDtcbitcdGF0b21pYzY0X3QgYW5vbl9tYXBfY291bnQ7XG4rXHRhdG9taWM2NF90IGZpbGVfbWFwX2NvdW50O1xuIH07XG4gXG4gc3RhdGljIGJvb2wgX19wYWdlX3RhYmxlX2NoZWNrX2VuYWJsZWQgX19pbml0ZGF0YSA9XG5AQCAtNzksMTEgKzc5LDExIEBAIHN0YXRpYyB2b2lkIHBhZ2VfdGFibGVfY2hlY2tfY2xlYXIodW5zaWduZWQgbG9uZyBwZm4sIHVuc2lnbmVkIGxvbmcgcGdjbnQpXG4gXHRcdHN0cnVjdCBwYWdlX3RhYmxlX2NoZWNrICpwdGMgPSBnZXRfcGFnZV90YWJsZV9jaGVjayhwYWdlX2V4dCk7XG4gXG4gXHRcdGlmIChhbm9uKSB7XG4tXHRcdFx0QlVHX09OKGF0b21pY19yZWFkKFx1MDAyNnB0Yy1cdTAwM2VmaWxlX21hcF9jb3VudCkpO1xuLVx0XHRcdEJVR19PTihhdG9taWNfZGVjX3JldHVybihcdTAwMjZwdGMtXHUwMDNlYW5vbl9tYXBfY291bnQpIFx1MDAzYyAwKTtcbitcdFx0XHRCVUdfT04oYXRvbWljNjRfcmVhZChcdTAwMjZwdGMtXHUwMDNlZmlsZV9tYXBfY291bnQpKTtcbitcdFx0XHRCVUdfT04oYXRvbWljNjRfZGVjX3JldHVybihcdTAwMjZwdGMtXHUwMDNlYW5vbl9tYXBfY291bnQpIFx1MDAzYyAwKTtcbiBcdFx0fSBlbHNlIHtcbi1cdFx0XHRCVUdfT04oYXRvbWljX3JlYWQoXHUwMDI2cHRjLVx1MDAzZWFub25fbWFwX2NvdW50KSk7XG4tXHRcdFx0QlVHX09OKGF0b21pY19kZWNfcmV0dXJuKFx1MDAyNnB0Yy1cdTAwM2VmaWxlX21hcF9jb3VudCkgXHUwMDNjIDApO1xuK1x0XHRcdEJVR19PTihhdG9taWM2NF9yZWFkKFx1MDAyNnB0Yy1cdTAwM2Vhbm9uX21hcF9jb3VudCkpO1xuK1x0XHRcdEJVR19PTihhdG9taWM2NF9kZWNfcmV0dXJuKFx1MDAyNnB0Yy1cdTAwM2VmaWxlX21hcF9jb3VudCkgXHUwMDNjIDApO1xuIFx0XHR9XG4gXHR9XG4gXHRyY3VfcmVhZF91bmxvY2soKTtcbkBAIC0xMTQsMTEgKzExNCwxMSBAQCBzdGF0aWMgdm9pZCBwYWdlX3RhYmxlX2NoZWNrX3NldCh1bnNpZ25lZCBsb25nIHBmbiwgdW5zaWduZWQgbG9uZyBwZ2NudCxcbiBcdFx0c3RydWN0IHBhZ2VfdGFibGVfY2hlY2sgKnB0YyA9IGdldF9wYWdlX3RhYmxlX2NoZWNrKHBhZ2VfZXh0KTtcbiBcbiBcdFx0aWYgKGFub24pIHtcbi1cdFx0XHRCVUdfT04oYXRvbWljX3JlYWQoXHUwMDI2cHRjLVx1MDAzZWZpbGVfbWFwX2NvdW50KSk7XG4tXHRcdFx0QlVHX09OKGF0b21pY19pbmNfcmV0dXJuKFx1MDAyNnB0Yy1cdTAwM2Vhbm9uX21hcF9jb3VudCkgXHUwMDNlIDEgXHUwMDI2XHUwMDI2IHJ3KTtcbitcdFx0XHRCVUdfT04oYXRvbWljNjRfcmVhZChcdTAwMjZwdGMtXHUwMDNlZmlsZV9tYXBfY291bnQpKTtcbitcdFx0XHRCVUdfT04oYXRvbWljNjRfaW5jX3JldHVybihcdTAwMjZwdGMtXHUwMDNlYW5vbl9tYXBfY291bnQpIFx1MDAzZSAxIFx1MDAyNlx1MDAyNiBydyk7XG4gXHRcdH0gZWxzZSB7XG4tXHRcdFx0QlVHX09OKGF0b21pY19yZWFkKFx1MDAyNnB0Yy1cdTAwM2Vhbm9uX21hcF9jb3VudCkpO1xuLVx0XHRcdEJVR19PTihhdG9taWNfaW5jX3JldHVybihcdTAwMjZwdGMtXHUwMDNlZmlsZV9tYXBfY291bnQpIFx1MDAzYyAwKTtcbitcdFx0XHRCVUdfT04oYXRvbWljNjRfcmVhZChcdTAwMjZwdGMtXHUwMDNlYW5vbl9tYXBfY291bnQpKTtcbitcdFx0XHRCVUdfT04oYXRvbWljNjRfaW5jX3JldHVybihcdTAwMjZwdGMtXHUwMDNlZmlsZV9tYXBfY291bnQpIFx1MDAzYyAwKTtcbiBcdFx0fVxuIFx0fVxuIFx0cmN1X3JlYWRfdW5sb2NrKCk7XG5AQCAtMTM5LDggKzEzOSw4IEBAIHZvaWQgX19wYWdlX3RhYmxlX2NoZWNrX3plcm8oc3RydWN0IHBhZ2UgKnBhZ2UsIHVuc2lnbmVkIGludCBvcmRlcilcbiBcdGZvcl9lYWNoX3BhZ2VfZXh0KHBhZ2UsIDEgXHUwMDNjXHUwMDNjIG9yZGVyLCBwYWdlX2V4dCwgaXRlcikge1xuIFx0XHRzdHJ1Y3QgcGFnZV90YWJsZV9jaGVjayAqcHRjID0gZ2V0X3BhZ2VfdGFibGVfY2hlY2socGFnZV9leHQpO1xuIFxuLVx0XHRCVUdfT04oYXRvbWljX3JlYWQoXHUwMDI2cHRjLVx1MDAzZWFub25fbWFwX2NvdW50KSk7XG4tXHRcdEJVR19PTihhdG9taWNfcmVhZChcdTAwMjZwdGMtXHUwMDNlZmlsZV9tYXBfY291bnQpKTtcbitcdFx0QlVHX09OKGF0b21pYzY0X3JlYWQoXHUwMDI2cHRjLVx1MDAzZWFub25fbWFwX2NvdW50KSk7XG4rXHRcdEJVR19PTihhdG9taWM2NF9yZWFkKFx1MDAyNnB0Yy1cdTAwM2VmaWxlX21hcF9jb3VudCkpO1xuIFx0fVxuIFx0cmN1X3JlYWRfdW5sb2NrKCk7XG4gfVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMThUMDU6MTA6MTcuODQwNDYwNTdaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjM2MTYyNDI3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIENyaXRpY2FsIE1lbW9yeSBNYW5hZ2VtZW50IE9wdGltaXphdGlvbioqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdGFyZ2V0aW5nIGBtbS9wYWdlX3RhYmxlX2NoZWNrLmNgLiBXaGF0IGltbWVkaWF0ZWx5IGdyYWJzIG15IGF0dGVudGlvbiBpcyB0aGUgc2hpZnQgZnJvbSBgYXRvbWljX3RgIHRvIGBhdG9taWM2NF90YCB3aXRoaW4gdGhlIGBzdHJ1Y3QgcGFnZV90YWJsZV9jaGVja2AuIFRoaXMgaXNuJ3QganVzdCBhIGNvc21ldGljIHR3ZWFrOyBpdCdzIGEgZnVuZGFtZW50YWwgY2hhbmdlIHRoYXQgaW1wYWN0cyB0aGUgc2l6ZSBvZiB0aG9zZSBhdG9taWMgdmFyaWFibGVzIGFuZCwgY29uc2VxdWVudGx5LCB0aGUgZnVuY3Rpb25zIHVzZWQgdG8gaW50ZXJhY3Qgd2l0aCB0aGVtLiBUaGlzIHNpZ25hbHMgYSBkZWxpYmVyYXRlIGVmZm9ydCB0byBhZGRyZXNzIGEgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdHkg4oCTIHRoZSByaXNrIG9mIGBhbm9uX21hcF9jb3VudGAgYW5kIGBmaWxlX21hcF9jb3VudGAgb3ZlcmZsb3dpbmcsIHNwZWNpZmljYWxseSBvbiAzMi1iaXQgYXJjaGl0ZWN0dXJlcy4gQ2xlYXJseSwgdGhleSdyZSBhbnRpY2lwYXRpbmcgc2lnbmlmaWNhbnRseSBsYXJnZXIgbWVtb3J5IG1hcHBpbmdzIG9yIGhpZ2hlciBjb25jdXJyZW5jeSBpbiB0aGVzZSBhcmVhcywgd2FycmFudGluZyB0aGUgaW5jcmVhc2VkIGJpdC13aWR0aCB0byBlbnN1cmUgdGhlIGNvdW50ZXJzIHJlbWFpbiBhY2N1cmF0ZS5cblxuTXkgbmV4dCBzdGVwIGlzIHRvIGRyaWxsIGRvd24gaW50byBgbW0vcGFnZV90YWJsZV9jaGVjay5jYCBpdHNlbGYsIGFuZCB0aGVuIHVuZGVyc3RhbmQgaG93IGl0cyBjb25maWd1cmF0aW9uIGlzIGNvbnRyb2xsZWQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBhcmNoaXRlY3R1cmFsIGltcGxpY2F0aW9ucywgdGhlIHNwZWNpZmljIHdvcmtsb2FkcyBvciBzY2VuYXJpb3MgdGhhdCB0cmlnZ2VyZWQgdGhpcyBjaGFuZ2UsIGFuZCBob3cgdGhpcyByZWxhdGVzIHRvIGFueSBvdGhlciBwZXJmb3JtYW5jZSBvciBzdGFiaWxpdHkgd29yayB3aXRoaW4gdGhlIG1lbW9yeSBtYW5hZ2VtZW50IHN1YnN5c3RlbS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjU4NiwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExMSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE4VDA1OjEwOjIxLjQ3NjYyNDk2OFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2OTMwMzI1OCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGFnZV90YWJsZV9jaGVja1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xOFQwNToxMDoyMS41NDU5MzgyMzZaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNjI5NjA4NzgzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKk5hdmlnYXRpbmcgdGhlIERlYnVnIENvbmZpZ3VyYXRpb24gTGFuZHNjYXBlKipcblxuUmlnaHQsIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBXaGVyZSdzIHRoZSBzZW5zaWJsZSBwbGFjZSB0byBsb29rIGZvciBkZWJ1Z2dpbmctcmVsYXRlZCBjb25maWd1cmF0aW9uIG9wdGlvbnM/IE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIHplcm8gaW4gb24gYG1tL0tjb25maWcuZGVidWdgIGFuZCBgbGliL0tjb25maWcuZGVidWdgLiBHaXZlbiB0aGUgbmF0dXJlIG9mIG15IGV4cGVydGlzZSwgdGhlc2Ugc2VlbSBsaWtlIHRoZSBtb3N0IGxvZ2ljYWwgc3RhcnRpbmcgcG9pbnRzLiBUaGUgbWVtb3J5IG1hbmFnZW1lbnQgc3Vic3lzdGVtIGFuZCB0aGUgY29yZSBsaWJyYXJ5IHJvdXRpbmVzIGFyZSBvZnRlbiBrZXkgYXJlYXMgZm9yIGRldGFpbGVkIGluc3RydW1lbnRhdGlvbiBhbmQgZGlhZ25vc3RpY3MsIHNvIHRoZSBhc3NvY2lhdGVkIEtjb25maWcgZmlsZXMgYXJlIHRoZSBtb3N0IGxpa2VseSBwbGFjZXMgdG8gZmluZCBkZWJ1ZyBmbGFncyBzcGVjaWZpYyB0byB0aGVzZSBhcmVhcy4gSSBuZWVkIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIHRoZSBzY29wZSBvZiBhdmFpbGFibGUgb3B0aW9ucyBoZXJlLiBUaGUgaW50ZW50IGlzIHRvIHNlZSB3aGF0IGFscmVhZHkgZXhpc3RzIGJlZm9yZSBJIGRlY2lkZSBpZiBJIG11c3QgYWRkIG5ldyBvcHRpb25zLCBvciBpZiBJIGNhbiB1dGlsaXplIHdoYXQgaXMgYWxyZWFkeSBwcm92aWRlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjk3MiwiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE4VDA1OjEwOjI0LjE3NTU0ODc1OVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NzU0NTk5OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJQQUdFX1RBQkxFX0NIRUNLXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9LY29uZmlnLmRlYnVnPTEwNT1jb25maWcgUEFHRV9PV05FUlxcbi0tXFxubW0vS2NvbmZpZy5kZWJ1Zy0xMjEtXFxubW0vS2NvbmZpZy5kZWJ1ZzoxMjI6Y29uZmlnIFBBR0VfVEFCTEVfQ0hFQ0tcXG5tbS9LY29uZmlnLmRlYnVnLTEyMy1cXHRib29sIFxcXCJDaGVjayBmb3IgaW52YWxpZCBtYXBwaW5ncyBpbiB1c2VyIHBhZ2UgdGFibGVzXFxcIlxcbm1tL0tjb25maWcuZGVidWc6MTI0OlxcdGRlcGVuZHMgb24gQVJDSF9TVVBQT1JUU19QQUdFX1RBQkxFX0NIRUNLXFxubW0vS2NvbmZpZy5kZWJ1Zy0xMjUtXFx0ZGVwZW5kcyBvbiBFWENMVVNJVkVfU1lTVEVNX1JBTVxcbi0tXFxubW0vS2NvbmZpZy5kZWJ1Zy0xMzUtXFxubW0vS2NvbmZpZy5kZWJ1ZzoxMzY6Y29uZmlnIFBBR0VfVEFCTEVfQ0hFQ0tfRU5GT1JDRURcXG5tbS9LY29uZmlnLmRlYnVnLTEzNy1cXHRib29sIFxcXCJFbmZvcmNlIHRoZSBwYWdlIHRhYmxlIGNoZWNraW5nIGJ5IGRlZmF1bHRcXFwiXFxubW0vS2NvbmZpZy5kZWJ1ZzoxMzg6XFx0ZGVwZW5kcyBvbiBQQUdFX1RBQkxFX0NIRUNLXFxubW0vS2NvbmZpZy5kZWJ1Zy0xMzktXFx0aGVscFxcbi0tXFxubW0vTWFrZWZpbGU9MTI2PW9iai0kKENPTkZJR19QQUdFX0VYVEVOU0lPTikgKz0gcGFnZV9leHQub1xcbm1tL01ha2VmaWxlOjEyNzpvYmotJChDT05GSUdfUEFHRV9UQUJMRV9DSEVDSykgKz0gcGFnZV90YWJsZV9jaGVjay5vXFxubW0vTWFrZWZpbGUtMTI4LW9iai0kKENPTkZJR19DTUFfREVCVUdGUykgKz0gY21hX2RlYnVnLm9cXG4tLVxcbm1tL3BhZ2VfZXh0LmM9ODA9c3RhdGljIHN0cnVjdCBwYWdlX2V4dF9vcGVyYXRpb25zICpwYWdlX2V4dF9vcHNbXSBfX2luaXRkYXRhID0ge1xcbi0tXFxubW0vcGFnZV9leHQuYy04OS0jZW5kaWZcXG5tbS9wYWdlX2V4dC5jOjkwOiNpZmRlZiBDT05GSUdfUEFHRV9UQUJMRV9DSEVDS1xcbm1tL3BhZ2VfZXh0LmMtOTEtXFx0XFx1MDAyNnBhZ2VfdGFibGVfY2hlY2tfb3BzLFxcbi0tXFxubW0vcGFnZV90YWJsZV9jaGVjay5jPTIxPXN0YXRpYyBib29sIF9fcGFnZV90YWJsZV9jaGVja19lbmFibGVkIF9faW5pdGRhdGEgPVxcbm1tL3BhZ2VfdGFibGVfY2hlY2suYzoyMjpcXHRcXHRcXHRcXHRJU19FTkFCTEVEKENPTkZJR19QQUdFX1RBQkxFX0NIRUNLX0VORk9SQ0VEKTtcXG5tbS9wYWdlX3RhYmxlX2NoZWNrLmMtMjMtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE4VDA1OjEwOjI0LjIzMzEwMDYyOFoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyNzM4OTE1MzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhbmFseXNpcyBvZiB0aGUgc2l0dWF0aW9uOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIFBhZ2UgVGFibGUgQ2hlY2sgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIHRoZSBgUEFHRV9UQUJMRV9DSEVDS2AgY29uZmlnIG9wdGlvbiBpcyB3aGF0J3MgZHJpdmluZyB0aGlzIHBhcnRpY3VsYXIgY29kZSBwYXRoLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgaW1wbGljYXRpb25zLiBJIHNlZSB0aGF0IHRoZSBtb2RpZmllZCBmdW5jdGlvbnMgYXJlIGBwYWdlX3RhYmxlX2NoZWNrX2NsZWFyYCwgYHBhZ2VfdGFibGVfY2hlY2tfc2V0YCwgYW5kIGBfX3BhZ2VfdGFibGVfY2hlY2tfemVyb2AuIFRoZXNlIGFyZSBwcmV0dHkgbG93LWxldmVsLCBpbmRpY2F0aW5nIHRoZXkgbGlrZWx5IGludGVyYWN0IGRpcmVjdGx5IHdpdGggcGFnZSB0YWJsZSBzdHJ1Y3R1cmVzLiBXaGF0J3MgaW50ZXJlc3RpbmcgaXMgdGhhdCB0aGV5IGFyZSBpbnZva2VkIHRocm91Z2ggbWFjcm9zIG9yIGlubGluZSBmdW5jdGlvbnMsIGFuZCB0aGF0IHRoZSBkZWZpbml0aW9ucyByZXNpZGUgd2l0aGluIGBpbmNsdWRlL2xpbnV4L3BhZ2VfdGFibGVfY2hlY2suaGAuICBNeSBpbW1lZGlhdGUgbmV4dCBzdGVwIGlzIGNsZWFyOiBJIG5lZWQgdG8gb3BlbiBhbmQgbWV0aWN1bG91c2x5IGV4YW1pbmUgdGhhdCBoZWFkZXIgZmlsZSB0byB1bmRlcnN0YW5kIGhvdyB0aGVzZSBmdW5jdGlvbnMgYXJlIGJlaW5nIHVzZWQgYW5kIHdoYXQgdGhlIGBQQUdFX1RBQkxFX0NIRUNLYCBjb25maWcgb3B0aW9uIGFjdHVhbGx5ICpkb2VzKiB0byB0aGUgcGFnZSB0YWJsZSBtYW5hZ2VtZW50LiBUaGlzIHNob3VsZCBwcm92aWRlIGEgZ29vZCBvdmVydmlldy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzY3MSwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE4VDA1OjEwOjI3LjUwNjk5Mzg2NFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MjMzNTg2OSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGFnZV90YWJsZV9jaGVja19jbGVhclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJpbmNsdWRlL2xpbnV4L3BhZ2VfdGFibGVfY2hlY2suaFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMThUMDU6MTA6MjcuNTY5MzM2ODkzWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjgyMzQyNTgxOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3Mgc2VlLiBNeSBtaW5kIGltbWVkaWF0ZWx5IGp1bXBzIHRvIGEgZnVuZGFtZW50YWwgcG9pbnQgYmVmb3JlIEkgZ28gYW55IGZ1cnRoZXIuXG5cbioqQ2hlY2tpbmcgdGhlIFBhZ2UgVGFibGUgQ2xlYXIgRnVuY3Rpb24qKlxuXG5CZWZvcmUgZGl2aW5nIGluLCBJIG5lZWQgdG8gdmVyaWZ5IGEgY29yZSBlbGVtZW50LiBJJ2xsIG5lZWQgdG8gZ28gdG8gYGluY2x1ZGUvbGludXgvcGFnZV90YWJsZV9jaGVjay5oYC4gU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8gY2hlY2sgdGhlIGRlZmluaXRpb24gYW5kIHVzYWdlIG9mIGBwYWdlX3RhYmxlX2NoZWNrX2NsZWFyYC4gVGhhdCdzIHRoZSBmdW5jdGlvbiB0aGF0J3MgZ29pbmcgdG8gYmUgZXNzZW50aWFsIGZvciB1bmRlcnN0YW5kaW5nIGhvdyB0aGUgc3lzdGVtIGNsZWFycyBvciBpbnZhbGlkYXRlcyBlbnRyaWVzIHJlbGF0ZWQgdG8gdGhlIHBhZ2UgdGFibGVzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgYmVoYXZpb3IgdGhvcm91Z2hseSB0byBjb25maXJtIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgdW5kZXJseWluZyBtZW1vcnkgbWFuYWdlbWVudCBzdHJ1Y3R1cmUuIEtub3dpbmcgdGhpcyBpcyBjcml0aWNhbCwgc2luY2UgYSBmYWlsdXJlIGhlcmUgY2FuIGxlYWQgdG8gYSBwbGV0aG9yYSBvZiBwcm9ibGVtcyBkb3duIHRoZSBsaW5lLiBJIG11c3QgY2hlY2sgdGhpcyBiZWZvcmUgSSBtb3ZlIGZvcndhcmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQwMDEsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xOFQwNToxMDozMC4zOTI3NjQ2MDFaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0MDExOTExNiwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGFnZV90YWJsZV9jaGVja19jbGVhclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJpbmNsdWRlL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMThUMDU6MTA6MzAuNTMyODkwMjM3WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxMjczOTUzNjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRpdmluZyBpbnRvIGBwYWdlX3RhYmxlX2NoZWNrX2NsZWFyYCoqXG5cbk9rYXksIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBMZXQncyBzZWUgd2hhdCdzIGdvaW5nIG9uIHdpdGggYG1tL3BhZ2VfdGFibGVfY2hlY2suY2AsIHNwZWNpZmljYWxseSB0aGUgYHBhZ2VfdGFibGVfY2hlY2tfY2xlYXJgIGZ1bmN0aW9uLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIGNsZWFyaW5nIHByb2Nlc3MgaGVyZS4gSSdtIGFzc3VtaW5nIHdlJ3JlIGRlYWxpbmcgd2l0aCBjbGVhcmluZyBjaGVja3MvZmxhZ3MgcmVsYXRlZCB0byBwYWdlIHRhYmxlIGVudHJpZXMsIHByb2JhYmx5IHJlbGF0ZWQgdG8gc29tZSBraW5kIG9mIGNvbnNpc3RlbmN5IGNoZWNrIG9yIHBlcmhhcHMgYSBkZWJ1Z2dpbmcgbWVjaGFuaXNtLiBJJ2xsIGJldCBpdCdzIGNhbGxlZCBkdXJpbmcgcGFnZSB0YWJsZSBkZWFsbG9jYXRpb24sIG9yIG1heWJlIGFmdGVyIGEgem9uZSBpcyBjbGVhcmVkLiBJJ20gY3VyaW91cyBpZiBpdCdzIG9wZXJhdGluZyBvbiBpbmRpdmlkdWFsIHBhZ2UgdGFibGUgZW50cmllcyAoUFRFcyksIHBhZ2UgZGlyZWN0b3J5IGVudHJpZXMgKFBERXMpLCBvciBwZXJoYXBzIGV2ZW4gaGlnaGVyLWxldmVsIHN0cnVjdHVyZXMsIGFuZCB3aGF0IHRoZSBvdmVyYWxsIGFwcHJvYWNoIGlzIHRvIHN5bmNocm9uaXphdGlvbiBpZiB0aGVyZSBhcmUgYW55IGNvbmN1cnJlbmN5IGlzc3VlcywgZXNwZWNpYWxseSBpZiB0aGUgY29kZSB1c2VzIHNwaW5sb2NrcyBvciBhdG9taWMgb3BlcmF0aW9ucy4gSSdsbCBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBkYXRhIHN0cnVjdHVyZXMgaXQncyB0b3VjaGluZywgYW5kIGhvdyBpdCBoYW5kbGVzIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMuIEknbSByZWFsbHkgbG9va2luZyBmb3IgaG93IGl0IGRldGVybWluZXMgKndoaWNoKiBlbnRyaWVzIG5lZWQgY2xlYXJpbmcsIGFuZCBob3cgdGhvcm91Z2ggdGhlIHByb2Nlc3MgaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQyMzMsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xOFQwNToxMDozMy42NjAyODc2MThaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU2MjkzODc4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBhZ2VfdGFibGVfY2hlY2tfY2xlYXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vcGFnZV90YWJsZV9jaGVjay5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL3BhZ2VfdGFibGVfY2hlY2suYz01Mz1zdGF0aWMgc3RydWN0IHBhZ2VfdGFibGVfY2hlY2sgKmdldF9wYWdlX3RhYmxlX2NoZWNrKHN0cnVjdCBwYWdlX2V4dCAqcGFnZV9leHQpXFxuLS1cXG5tbS9wYWdlX3RhYmxlX2NoZWNrLmMtNjItICovXFxubW0vcGFnZV90YWJsZV9jaGVjay5jOjYzOnN0YXRpYyB2b2lkIHBhZ2VfdGFibGVfY2hlY2tfY2xlYXIodW5zaWduZWQgbG9uZyBwZm4sIHVuc2lnbmVkIGxvbmcgcGdjbnQpXFxubW0vcGFnZV90YWJsZV9jaGVjay5jLTY0LXtcXG4tLVxcbm1tL3BhZ2VfdGFibGVfY2hlY2suYz0xNDg9dm9pZCBfX3BhZ2VfdGFibGVfY2hlY2tfcHRlX2NsZWFyKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCB1bnNpZ25lZCBsb25nIGFkZHIsXFxuLS1cXG5tbS9wYWdlX3RhYmxlX2NoZWNrLmMtMTU0LVxcdGlmIChwdGVfdXNlcl9hY2Nlc3NpYmxlX3BhZ2UobW0sIGFkZHIsIHB0ZSkpXFxubW0vcGFnZV90YWJsZV9jaGVjay5jOjE1NTpcXHRcXHRwYWdlX3RhYmxlX2NoZWNrX2NsZWFyKHB0ZV9wZm4ocHRlKSwgUEFHRV9TSVpFIFxcdTAwM2VcXHUwMDNlIFBBR0VfU0hJRlQpO1xcbm1tL3BhZ2VfdGFibGVfY2hlY2suYy0xNTYtfVxcbi0tXFxubW0vcGFnZV90YWJsZV9jaGVjay5jPTE1OT12b2lkIF9fcGFnZV90YWJsZV9jaGVja19wbWRfY2xlYXIoc3RydWN0IG1tX3N0cnVjdCAqbW0sIHVuc2lnbmVkIGxvbmcgYWRkcixcXG4tLVxcbm1tL3BhZ2VfdGFibGVfY2hlY2suYy0xNjUtXFx0aWYgKHBtZF91c2VyX2FjY2Vzc2libGVfcGFnZShtbSwgYWRkciwgcG1kKSlcXG5tbS9wYWdlX3RhYmxlX2NoZWNrLmM6MTY2OlxcdFxcdHBhZ2VfdGFibGVfY2hlY2tfY2xlYXIocG1kX3BmbihwbWQpLCBQTURfU0laRSBcXHUwMDNlXFx1MDAzZSBQQUdFX1NISUZUKTtcXG5tbS9wYWdlX3RhYmxlX2NoZWNrLmMtMTY3LX1cXG4tLVxcbm1tL3BhZ2VfdGFibGVfY2hlY2suYz0xNzA9dm9pZCBfX3BhZ2VfdGFibGVfY2hlY2tfcHVkX2NsZWFyKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCB1bnNpZ25lZCBsb25nIGFkZHIsXFxuLS1cXG5tbS9wYWdlX3RhYmxlX2NoZWNrLmMtMTc2LVxcdGlmIChwdWRfdXNlcl9hY2Nlc3NpYmxlX3BhZ2UobW0sIGFkZHIsIHB1ZCkpXFxubW0vcGFnZV90YWJsZV9jaGVjay5jOjE3NzpcXHRcXHRwYWdlX3RhYmxlX2NoZWNrX2NsZWFyKHB1ZF9wZm4ocHVkKSwgUFVEX1NJWkUgXFx1MDAzZVxcdTAwM2UgUEFHRV9TSElGVCk7XFxubW0vcGFnZV90YWJsZV9jaGVjay5jLTE3OC19XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE4VDA1OjEwOjMzLjcxNjU4NTg3NloiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjE4NzQ1Nzc4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBQYWdlIFRhYmxlIENoZWNrIEZ1bmN0aW9ucyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgY29kZSBhbmQgaW1tZWRpYXRlbHkgbm90aWNlIHRoYXQgYHBhZ2VfdGFibGVfY2hlY2tfY2xlYXJgIGlzIGRlY2xhcmVkIGFzIGBzdGF0aWNgLiBSaWdodCwgdGhhdCBtZWFucyBpdCdzIGFuIGludGVybmFsIGZ1bmN0aW9uIGFuZCBub3QgZGlyZWN0bHkgZXhwb3NlZC4gSW5zdGVhZCwgd2UgaGF2ZSB0aGVzZSBleHBvcnRlZCBmdW5jdGlvbnMgdGhhdCBzZWVtIHRvIGJlIHRoZSBwdWJsaWMgaW50ZXJmYWNlOiBgX19wYWdlX3RhYmxlX2NoZWNrX3B0ZV9jbGVhcmAsIGBfX3BhZ2VfdGFibGVfY2hlY2tfcG1kX2NsZWFyYCwgYF9fcGFnZV90YWJsZV9jaGVja19wdWRfY2xlYXJgLCBhbmQgdGhlaXIgXCJzZXRcIiBjb3VudGVycGFydHMgYWxvbmcgd2l0aCBgX19wYWdlX3RhYmxlX2NoZWNrX3plcm9gLiBNYWtlcyBzZW5zZS4gTm93IEkgd2FudCB0byB1bmRlcnN0YW5kIHRoZWlyIGludGVyYWN0aW9ucyBhbmQgaG93IHRoZSBzdGF0aWMgZnVuY3Rpb24gZml0cyBpbi4gVGltZSB0byBkaXZlIGludG8gYG1tL3BhZ2VfdGFibGVfY2hlY2suY2AgYW5kIHNlZSBob3cgdGhlc2UgZXhwb3J0ZWQgZnVuY3Rpb25zIGFyZSBpbXBsZW1lbnRlZCBhbmQgaG93IHRoZXkgdXRpbGl6ZSB0aGF0IGludGVybmFsIGBwYWdlX3RhYmxlX2NoZWNrX2NsZWFyYCBmdW5jdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRyb2wgZmxvdywgdGhlIGRhdGEgc3RydWN0dXJlcyB1c2VkLCBhbmQgdGhlIG92ZXJhbGwgcHVycG9zZSBvZiB0aGlzIG1vZHVsZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTA1NCwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xOFQwNToxMDozNi45MzUzMzM3NzRaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU0OTMwOTA5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkVYUE9SVF9TWU1CT0xcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vcGFnZV90YWJsZV9jaGVjay5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL3BhZ2VfdGFibGVfY2hlY2suYz0yND1ERUZJTkVfU1RBVElDX0tFWV9UUlVFKHBhZ2VfdGFibGVfY2hlY2tfZGlzYWJsZWQpO1xcbm1tL3BhZ2VfdGFibGVfY2hlY2suYzoyNTpFWFBPUlRfU1lNQk9MKHBhZ2VfdGFibGVfY2hlY2tfZGlzYWJsZWQpO1xcbm1tL3BhZ2VfdGFibGVfY2hlY2suYy0yNi1cXG4tLVxcbm1tL3BhZ2VfdGFibGVfY2hlY2suYz0xNDg9dm9pZCBfX3BhZ2VfdGFibGVfY2hlY2tfcHRlX2NsZWFyKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCB1bnNpZ25lZCBsb25nIGFkZHIsXFxuLS1cXG5tbS9wYWdlX3RhYmxlX2NoZWNrLmMtMTU2LX1cXG5tbS9wYWdlX3RhYmxlX2NoZWNrLmM6MTU3OkVYUE9SVF9TWU1CT0woX19wYWdlX3RhYmxlX2NoZWNrX3B0ZV9jbGVhcik7XFxubW0vcGFnZV90YWJsZV9jaGVjay5jLTE1OC1cXG5tbS9wYWdlX3RhYmxlX2NoZWNrLmM9MTU5PXZvaWQgX19wYWdlX3RhYmxlX2NoZWNrX3BtZF9jbGVhcihzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5zaWduZWQgbG9uZyBhZGRyLFxcbi0tXFxubW0vcGFnZV90YWJsZV9jaGVjay5jLTE2Ny19XFxubW0vcGFnZV90YWJsZV9jaGVjay5jOjE2ODpFWFBPUlRfU1lNQk9MKF9fcGFnZV90YWJsZV9jaGVja19wbWRfY2xlYXIpO1xcbm1tL3BhZ2VfdGFibGVfY2hlY2suYy0xNjktXFxubW0vcGFnZV90YWJsZV9jaGVjay5jPTE3MD12b2lkIF9fcGFnZV90YWJsZV9jaGVja19wdWRfY2xlYXIoc3RydWN0IG1tX3N0cnVjdCAqbW0sIHVuc2lnbmVkIGxvbmcgYWRkcixcXG4tLVxcbm1tL3BhZ2VfdGFibGVfY2hlY2suYy0xNzgtfVxcbm1tL3BhZ2VfdGFibGVfY2hlY2suYzoxNzk6RVhQT1JUX1NZTUJPTChfX3BhZ2VfdGFibGVfY2hlY2tfcHVkX2NsZWFyKTtcXG5tbS9wYWdlX3RhYmxlX2NoZWNrLmMtMTgwLVxcbi0tXFxubW0vcGFnZV90YWJsZV9jaGVjay5jPTE5OT12b2lkIF9fcGFnZV90YWJsZV9jaGVja19wdGVzX3NldChzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5zaWduZWQgbG9uZyBhZGRyLFxcbi0tXFxubW0vcGFnZV90YWJsZV9jaGVjay5jLTIxMy19XFxubW0vcGFnZV90YWJsZV9jaGVjay5jOjIxNDpFWFBPUlRfU1lNQk9MKF9fcGFnZV90YWJsZV9jaGVja19wdGVzX3NldCk7XFxubW0vcGFnZV90YWJsZV9jaGVjay5jLTIxNS1cXG4tLVxcbm1tL3BhZ2VfdGFibGVfY2hlY2suYz0yMjg9dm9pZCBfX3BhZ2VfdGFibGVfY2hlY2tfcG1kc19zZXQoc3RydWN0IG1tX3N0cnVjdCAqbW0sIHVuc2lnbmVkIGxvbmcgYWRkcixcXG4tLVxcbm1tL3BhZ2VfdGFibGVfY2hlY2suYy0yNDMtfVxcbm1tL3BhZ2VfdGFibGVfY2hlY2suYzoyNDQ6RVhQT1JUX1NZTUJPTChfX3BhZ2VfdGFibGVfY2hlY2tfcG1kc19zZXQpO1xcbm1tL3BhZ2VfdGFibGVfY2hlY2suYy0yNDUtXFxubW0vcGFnZV90YWJsZV9jaGVjay5jPTI0Nj12b2lkIF9fcGFnZV90YWJsZV9jaGVja19wdWRzX3NldChzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5zaWduZWQgbG9uZyBhZGRyLFxcbi0tXFxubW0vcGFnZV90YWJsZV9jaGVjay5jLTI1OS19XFxubW0vcGFnZV90YWJsZV9jaGVjay5jOjI2MDpFWFBPUlRfU1lNQk9MKF9fcGFnZV90YWJsZV9jaGVja19wdWRzX3NldCk7XFxubW0vcGFnZV90YWJsZV9jaGVjay5jLTI2MS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMThUMDU6MTA6MzYuOTkwMjY5MzUzWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxMjM4MTAxMTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBQYWdlIFRhYmxlIENoZWNrIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyB0aGUgZnVuY3Rpb25zIHJlbGF0ZWQgdG8gdGhpcyBhcmUgYmVpbmcgZXhwb3J0ZWQsIHRoYXQncyB0aGUgc3RhcnRpbmcgcG9pbnQuIE15IGNvbmZpZyBpcyBgUEFHRV9UQUJMRV9DSEVDS2AsIHJpZ2h0PyBBaCwgaG9sZCBvbiwgSSBzZWUgYFBBR0VfVEFCTEVfQ0hFQ0tfRU5GT1JDRURgIGFzIHdlbGwuIE5vdyB0aGluZ3MgYXJlIGdldHRpbmcgaW50ZXJlc3RpbmcuIElmIGBQQUdFX1RBQkxFX0NIRUNLX0VORk9SQ0VEYCBpc24ndCBlbmFibGVkLCB0aGVuIHdlJ2xsIGxpa2VseSBuZWVkIGEgYm9vdCBwYXJhbWV0ZXIg4oCTIHNvbWV0aGluZyBsaWtlIGBwYWdlX3RhYmxlX2NoZWNrPW9uYCDigJMgdG8gYWN0dWFsbHkgYWN0aXZhdGUgdGhlIGNoZWNrcy4gVGltZSB0byBkaWcgaW50byB0aGUgaW1wbGVtZW50YXRpb24gaXRzZWxmLCBzbyBJJ2xsIGNoZWNrIGBtbS9wYWdlX3RhYmxlX2NoZWNrLmNgIHRvIHNlZSBob3cgdGhhdCBgcGFnZV90YWJsZV9jaGVjaz1vbmAgYm9vdCBwYXJhbWV0ZXIgaXMgaGFuZGxlZCBhbmQgaG93IHRoZSBmZWF0dXJlIGlzIGVuYWJsZWQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBmdWxsIGZsb3cgaGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NjEwNSwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjkxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE4VDA1OjEwOjQwLjExNDA4MTU3M1oiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTY0ODI4NzksIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBhZ2VfdGFibGVfY2hlY2s9XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL3BhZ2VfdGFibGVfY2hlY2suY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMThUMDU6MTA6NDAuMTcwNTc0OTIyWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI2MjA5MDE1OTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkludmVzdGlnYXRpbmcgUG90ZW50aWFsIEluaXRpYWxpemF0aW9uIElzc3VlcyBpbiB0aGUgUGFnZSBUYWJsZSBDaGVjayoqXG5cbkFscmlnaHQsIEkgbmVlZCB0byBkaWcgaW50byB0aGUgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UgZm9yIHRoaXMgcGFnZSB0YWJsZSBjaGVjayByb3V0aW5lLiBXaGVyZSdzIHRoZSBiZXN0IHBsYWNlIHRvIHN0YXJ0PyBNeSBpbml0aWFsIGh1bmNoIGlzIHRvIGxvb2sgY2xvc2VseSBhdCB0aGUgYF9fc2V0dXBgIG9yIHRoZSBgZWFybHlfcGFyYW1gIGZ1bmN0aW9ucyB3aXRoaW4gYG1tL3BhZ2VfdGFibGVfY2hlY2suY2AuIFRoZXNlIGFyZSB0aGUgdHlwaWNhbCBlbnRyeSBwb2ludHMgZm9yIGVhcmx5IGNvbmZpZ3VyYXRpb24gYW5kIGluaXRpYWxpemF0aW9uIHdpdGhpbiB0aGlzIGFyZWEgb2YgdGhlIG1lbW9yeSBtYW5hZ2VtZW50IGNvZGUuIFRoYXQgc2VlbXMgbGlrZSB0aGUgbW9zdCBsb2dpY2FsIHBsYWNlIHRvIGJlZ2luIG15IGludmVzdGlnYXRpb24gdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBpcyBoYW5kbGVkLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiB0aGUgaXNzdWUgc3RlbXMgZnJvbSBhbiBpbmNvcnJlY3QgaW5pdGlhbCBwYXJhbWV0ZXIsIG9yIHBlcmhhcHMgYSBjb25mbGljdCBkdXJpbmcgZWFybHkgc2V0dXAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY0MTUsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xOFQwNToxMDo0Mi43OTE0Nzg3MDVaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU2MzY2Mjc5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImVhcmx5X3BhcmFtXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL3BhZ2VfdGFibGVfY2hlY2suY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9wYWdlX3RhYmxlX2NoZWNrLmM9Mjc9c3RhdGljIGludCBfX2luaXQgZWFybHlfcGFnZV90YWJsZV9jaGVja19wYXJhbShjaGFyICpidWYpXFxuLS1cXG5tbS9wYWdlX3RhYmxlX2NoZWNrLmMtMzEtXFxubW0vcGFnZV90YWJsZV9jaGVjay5jOjMyOmVhcmx5X3BhcmFtKFxcXCJwYWdlX3RhYmxlX2NoZWNrXFxcIiwgZWFybHlfcGFnZV90YWJsZV9jaGVja19wYXJhbSk7XFxubW0vcGFnZV90YWJsZV9jaGVjay5jLTMzLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xOFQwNToxMDo0Mi44NDc4NTA4ODRaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzQ2ODkwMTM4OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipFbmFibGluZyBQYWdlIFRhYmxlIENoZWNrcyBmb3IgRnV6emluZyoqXG5cbk9rYXksIHNvIGlmIGBQQUdFX1RBQkxFX0NIRUNLX0VORk9SQ0VEYCBpcyBzZXQsIGl0IGRlZmF1bHRzIHRvIGVuYWJsZWQuIFRoYXQgbWFrZXMgc2Vuc2UsIHNvIGxldCdzIGVuYWJsZSBib3RoIGBQQUdFX1RBQkxFX0NIRUNLYCBhbmQgYFBBR0VfVEFCTEVfQ0hFQ0tfRU5GT1JDRURgLiBOb3csIGJlZm9yZSBnb2luZyBmdXJ0aGVyLCBJIG5lZWQgdG8gY2hlY2sgdGhlIGRlcGVuZGVuY2llcyBmb3IgYFBBR0VfVEFCTEVfQ0hFQ0tgLiBIbW0sIGl0IGRlcGVuZHMgb24gYEFSQ0hfU1VQUE9SVFNfUEFHRV9UQUJMRV9DSEVDS2AgYW5kIGBFWENMVVNJVkVfU1lTVEVNX1JBTWAuIEdvb2QsIHRoYXQncyBzdHJhaWdodGZvcndhcmQuIEknbSBnb2luZyB0byBxdWlja2x5IHZlcmlmeSBgUEFHRV9UQUJMRV9DSEVDS19FTkZPUkNFRGAgZG9lc24ndCBoYXZlIGFueSBoaWRkZW4gZGVwZW5kZW5jaWVzLlxuXG5Ob3csIGZvciB0aGUgZnV6emluZyB0YXJnZXRzLiBNeSBpbml0aWFsIHRob3VnaHQgd2FzIHRvIGhpdCB0aGVzZSBmdW5jdGlvbnMgZGlyZWN0bHk6IGBfX3BhZ2VfdGFibGVfY2hlY2tfcHRlX2NsZWFyYCwgYF9fcGFnZV90YWJsZV9jaGVja19wbWRfY2xlYXJgLCBgX19wYWdlX3RhYmxlX2NoZWNrX3B1ZF9jbGVhcmAsIGBfX3BhZ2VfdGFibGVfY2hlY2tfcHRlc19zZXRgLCBgX19wYWdlX3RhYmxlX2NoZWNrX3BtZHNfc2V0YCwgYF9fcGFnZV90YWJsZV9jaGVja19wdWRzX3NldGAsIGFuZCBgX19wYWdlX3RhYmxlX2NoZWNrX3plcm9gLlxuXG5CdXQgd2FpdCBhIG1pbnV0ZSwgSSBzZWUgdGhvc2UgYXJlIGNhbGxlZCBmcm9tIG90aGVyIGZ1bmN0aW9ucyDigJMgYF9fcGFnZV90YWJsZV9jaGVja19wdGVzX3NldGAgYW5kIHN1Y2ggYXJlIGNhbGxlZCBieSBgcGFnZV90YWJsZV9jaGVja19zZXRgLCBgcGFnZV90YWJsZV9jaGVja19jbGVhcmAsIGBfX3BhZ2VfdGFibGVfY2hlY2tfemVyb2AuIEFyZSB0aGVzZSBob3QtcGF0aCBmdW5jdGlvbnM/IFBhZ2UgdGFibGUgbW9kaWZpY2F0aW9ucyBhcmUgY29tbW9uLCBlc3BlY2lhbGx5IG9uIGV2ZXJ5IHBhZ2UgZmF1bHQsIGFuZCBtdW5tYXAvZXhpdC4gQnV0IHRoZSBwcm9tcHQgc3BlY2lmaWNhbGx5IHNheXMgdG8gYXZvaWQgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMuIEhvd2V2ZXIsIHRoZXNlIGFyZSAqZXhhY3RseSogd2hlcmUgdGhlIG1vZGlmaWVkIGNvZGUgaXMgZXhlY3V0ZWQuIFRoYXQgbWFrZXMgdGhlbSBwZXJmZWN0IHRhcmdldHMuIEJldHRlciB0byBmb2N1cyBvbiB0aG9zZSBleHBvcnRlZCB3cmFwcGVyIGZ1bmN0aW9ucy5cblxuU28sIGxldCdzIGtlZXAgaXQgY2xlYW4uIExldCdzIG1ha2Ugc3VyZSB0aGVyZSBhcmVuJ3QgYW55IG90aGVyIHJlbGF0ZWQgY29uZmlncywgZG91YmxlLWNoZWNraW5nIGBQQUdFX1RBQkxFX0NIRUNLX0VORk9SQ0VEYCBpbiBgbW0vS2NvbmZpZy5kZWJ1Z2AgYW5kIG1vdmUgZm9yd2FyZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NjczNSwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYwMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xOFQwNToxMDo1MC4zMTY3NTQwNzNaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3NDczMjg5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBQQUdFX1RBQkxFX0NIRUNLX0VORk9SQ0VEXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL0tjb25maWcuZGVidWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vS2NvbmZpZy5kZWJ1Zz0xMjI9Y29uZmlnIFBBR0VfVEFCTEVfQ0hFQ0tcXG4tLVxcbm1tL0tjb25maWcuZGVidWctMTM1LVxcbm1tL0tjb25maWcuZGVidWc6MTM2OmNvbmZpZyBQQUdFX1RBQkxFX0NIRUNLX0VORk9SQ0VEXFxubW0vS2NvbmZpZy5kZWJ1Zy0xMzctXFx0Ym9vbCBcXFwiRW5mb3JjZSB0aGUgcGFnZSB0YWJsZSBjaGVja2luZyBieSBkZWZhdWx0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xOFQwNToxMDo1MC4zNzQyMzM1MzJaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzMzMzk2MjE3NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGFuYWx5c2lzIG9mIHRoZSBzaXR1YXRpb246XG5cbioqUGFnZSBUYWJsZSBDaGVjayBFbmZvcmNlbWVudCBcdTAwMjYgUG90ZW50aWFsIE92ZXJmbG93KipcblxuT2theSwgdGhlIGtleSBjb25maWd1cmF0aW9uIG9wdGlvbiBoZXJlIGlzIGBQQUdFX1RBQkxFX0NIRUNLX0VORk9SQ0VEYC4gR290IGl0LlxuXG5UaGlzIHBhdGNoIGlzIG1vZGlmeWluZyB0aGUgYHN0cnVjdCBwYWdlX3RhYmxlX2NoZWNrYCBieSBzd2l0Y2hpbmcgZnJvbSBgYXRvbWljX3RgIHRvIGBhdG9taWM2NF90YC4gVGhhdCdzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIGEgYml0IG1vcmUgc2lnbmlmaWNhbnQgdGhhbiBhIHB1cmVseSBjb3NtZXRpYyBhbHRlcmF0aW9uLiBUaGUgcmVhc29uPyBJdCdzIGRpcmVjdGx5IGFkZHJlc3NpbmcgYSBwb3RlbnRpYWwgb3ZlcmZsb3cgaXNzdWUuIE1ha2VzIHNlbnNlOyBndWFyZGluZyBhZ2FpbnN0IHRoYXQgaXMgYWx3YXlzIGEgZ29vZCBwcmFjdGljZSwgZXNwZWNpYWxseSBpbiBzb21ldGhpbmcgYXMgY3JpdGljYWwgYXMgcGFnZSB0YWJsZSBtYW5hZ2VtZW50LlxuXG5Ob3csIGEgZnVuY3Rpb25hbCBjaGFuZ2UgbGlrZSB0aGlzPyBUaGF0IGFic29sdXRlbHkgd2FycmFudHMgc29tZSBmdXp6aW5nLiBOZWVkIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IHN1YnRsZSBpbnRlcmFjdGlvbnMgb3IgdW5leHBlY3RlZCBiZWhhdmlvcnMgdGhhdCBzdXJmYWNlIHVuZGVyIGxvYWQuIEl0J3MgYmVzdCB0byBiZSBkaWxpZ2VudC5cblxuQW5kIG9uZSBtb3JlIHRoaW5nLCBsZXQgbWUganVzdCBxdWlja2x5IGNvbmZpcm0gdGhhdCB0aGUgd2hvbGUgYFBBR0VfVEFCTEVfQ0hFQ0tgIGZlYXR1cmUgaXMgc3VwcG9ydGVkIG9uIHg4NiwganVzdCB0byBlbnN1cmUgdGhpcyBjaGFuZ2UgaXMgZXZlbiByZWxldmFudCBmb3IgdGhlIHRhcmdldCBwbGF0Zm9ybS5cblxuXG4iLCJJbnB1dFRva2VucyI6Nzg5MSwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE4VDA1OjEwOjUzLjcwODE5ODA0N1oiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA0MjA1MDk3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkFSQ0hfU1VQUE9SVFNfUEFHRV9UQUJMRV9DSEVDS1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3g4Ni9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC94ODYvS2NvbmZpZz01OD1jb25maWcgWDg2XFxuLS1cXG5hcmNoL3g4Ni9LY29uZmlnLTEyNS1cXHRzZWxlY3QgQVJDSF9TVVBQT1JUU19IVUdFVExCRlNcXG5hcmNoL3g4Ni9LY29uZmlnOjEyNjpcXHRzZWxlY3QgQVJDSF9TVVBQT1JUU19QQUdFX1RBQkxFX0NIRUNLXFx0aWYgWDg2XzY0XFxuYXJjaC94ODYvS2NvbmZpZy0xMjctXFx0c2VsZWN0IEFSQ0hfSEFTX1BURV9QUk9UTk9ORVxcdFxcdGlmIFg4Nl82NFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xOFQwNToxMDo1My44MTI0MDc5NzRaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjMxNzk1NTQyMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBDdXJyZW50IExpbmUgb2YgUmVhc29uaW5nKipcblxuT2theSwgc28gSSd2ZSBjb25maXJtZWQgeDg2XzY0IHN1cHBvcnQg4oCTIHRoYXQncyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIE5vdywgdGhlIGNyaXRpY2FsIG5leHQgc3RlcCBpcyB0byBkZXRlcm1pbmUgaWYgYEVYQ0xVU0lWRV9TWVNURU1fUkFNYCBpcyBzdXBwb3J0ZWQgb24geDg2IGFyY2hpdGVjdHVyZSBnZW5lcmFsbHkuIFRoaXMgaXMgYSBjcnVjaWFsIHBpZWNlIG9mIGluZm9ybWF0aW9uIGZvciB0aGUgY3VycmVudCB0YXNrLCBhbmQgdW5kZXJzdGFuZGluZyBpdHMgYXZhaWxhYmlsaXR5IChvciBsYWNrIHRoZXJlb2YpIHdpbGwgZGljdGF0ZSB0aGUgZGlyZWN0aW9uIG9mIG15IG5leHQgaW52ZXN0aWdhdGlvbi4gSSBuZWVkIHRvIGJlIGNlcnRhaW4gYWJvdXQgdGhpcy5cblxuXG4iLCJJbnB1dFRva2VucyI6ODM0MywiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE4VDA1OjEwOjU2LjEzMDM2NTQ1NVoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzMyMjI3NTgsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkVYQ0xVU0lWRV9TWVNURU1fUkFNXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gveDg2L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMThUMDU6MTA6NTYuMjAzNTk2NDczWiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI4Nzc3Mzc5MTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBIZXJlJ3MgaG93IEknZCBhcHByb2FjaCB0aGlzIHRhc2ssIGFzIGlmIHRoZXNlIHdlcmUgbXkgaW50ZXJuYWwgdGhvdWdodHM6XG5cbioqTG9jYXRpbmcgdGhlIERlZmluaXRpb24gb2YgRVhDTFVTSVZFX1NZU1RFTV9SQU0qKlxuXG5BbHJpZ2h0LCB0aGUgZmlyc3QgdGhpbmcgSSBuZWVkIHRvIGRvIGlzIHBpbnBvaW50IHRoZSBkZWZpbml0aW9uIG9mIHRoaXMgYEVYQ0xVU0lWRV9TWVNURU1fUkFNYCB2YXJpYWJsZS4gVGhpcyBpcyBjcml0aWNhbCBiZWNhdXNlIHdpdGhvdXQga25vd2luZyAqd2hhdCogaXQgaXMsIHVuZGVyc3RhbmRpbmcgaXRzIGNvbnRleHQgaXMgaW1wb3NzaWJsZS4gSXQncyBhbG1vc3QgY2VydGFpbmx5IGEgbWFjcm8sIGEgY29uc3RhbnQsIG9yIG1heWJlIGV2ZW4gYSB2YXJpYWJsZSBkZWZpbmVkIHNvbWV3aGVyZSBpbiB0aGUgcHJvamVjdCdzIGNvZGViYXNlIG9yIGEgbGlua2VkIGxpYnJhcnksIGJ1dCBJIGNhbid0IGJlIHN1cmUgdW50aWwgSSBmaW5kIGl0LiBTbyBJIG5lZWQgdG8gdHJhY2UgdGhpcyBiYWNrIHRvIGl0cyBkZWNsYXJhdGlvbi4gSSdsbCBuZWVkIHRvIGtub3cgd2hlcmUgdGhpcyBpcyBkZWZpbmVkLCBiZWNhdXNlIHRoYXQnbGwgdGVsbCBtZSB3aGF0IGl0J3MgZm9yLCBhbmQgaG93IGl0IGlzIHN1cHBvc2VkIHRvIGJlIGhhbmRsZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg1MTcsIk91dHB1dFRva2VucyI6MjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xOFQwNToxMDo1OS4wODEzMzYzM1oiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDE5OTQ3NTY4MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgRVhDTFVTSVZFX1NZU1RFTV9SQU1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL0tjb25maWc9NTAyPWNvbmZpZyBNRU1PUllfSVNPTEFUSU9OXFxuLS1cXG5tbS9LY29uZmlnLTUwNy0jIC9kZXYvbWVtLlxcbm1tL0tjb25maWc6NTA4OmNvbmZpZyBFWENMVVNJVkVfU1lTVEVNX1JBTVxcbm1tL0tjb25maWctNTA5LVxcdGRlZl9ib29sIHlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMThUMDU6MTE6MDMuMjgwODE2MzkzWiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwNjUyODM3OTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgc3VtbWFyaXplZCBpbiB0aGUgZmlyc3QgcGVyc29uLCBhc3N1bWluZyBhbiBleHBlcnQtbGV2ZWwgdW5kZXJzdGFuZGluZzpcblxuKipLY29uZmlnIERlcGVuZGVuY3kgRGVlcCBEaXZlKipcblxuQWxyaWdodCwgc28gSSdtIGxvb2tpbmcgYXQgYSBgZGVmX2Jvb2wgeWAgaW4gdGhlIGBtbS9LY29uZmlnYCBmaWxlLiBJbnN0YW50bHksIG15IG1pbmQganVtcHMgdG8gdGhlIGRlcGVuZGVuY2llcy4gSXQncyBub3QgYSBzdGFuZGFsb25lIG9wdGlvbjsgaXQncyBjb250aW5nZW50IG9uIGVpdGhlciBgU1RSSUNUX0RFVk1FTWAgb3IgYElPX1NUUklDVF9ERVZNRU1gIGJlaW5nIGRlZmluZWQuIFRoaXMgbGlrZWx5IG1lYW5zIHdlJ3JlIGRlYWxpbmcgd2l0aCBhIGJvb2xlYW4gb3B0aW9uIGNvbnRyb2xsZWQgYnkgbWVtb3J5IHJlc3RyaWN0aW9ucywgYW5kIGl0cyBkZWZhdWx0IHN0YXRlIGlzICd5ZXMnIG9ubHkgdW5kZXIgc3BlY2lmaWMgY2lyY3Vtc3RhbmNlcy4gTXkgaW5pdGlhbCBxdWVzdGlvbnMgYXJlOiB3aGF0IGlzIHRoZSBtZWFuaW5nIG9mIHk/IERvZXMgdGhlIG5hbWUgb2YgdGhlIGRlZmluaXRpb24gZ2l2ZSB1cyBhIGNsdWU/IEFyZSB0aGVyZSBvdGhlciBpbnN0YW5jZXMgb2YgdGhpcywgYW5kIGhvdyBjYW4gdGhleSBiZSB1c2VkIG9yIGNvbXBhcmVkIHRvIHVuZGVyc3RhbmQgdGhlIGludGVudCBiZXR0ZXI/XG5cblxuIiwiSW5wdXRUb2tlbnMiOjg4MDcsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjozOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xOFQwNToxMTowNi4zNDYxMDIwNDVaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU4MDkxNjk4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkVYQ0xVU0lWRV9TWVNURU1fUkFNXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vS2NvbmZpZz01MDI9Y29uZmlnIE1FTU9SWV9JU09MQVRJT05cXG4tLVxcbm1tL0tjb25maWctNTA3LSMgL2Rldi9tZW0uXFxubW0vS2NvbmZpZzo1MDg6Y29uZmlnIEVYQ0xVU0lWRV9TWVNURU1fUkFNXFxubW0vS2NvbmZpZy01MDktXFx0ZGVmX2Jvb2wgeVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xOFQwNToxMTowNi40MDQxOTgxNDNaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjUxMjQ3MzA3NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoYXQgZGlyZWN0aXZlOlxuXG4qKkFuYWx5emluZyB0aGUgS2NvbmZpZyBGaWxlIGZvciBHdWlkYW5jZSoqXG5cbk9rYXksIGhvbGQgb24gYSBzZWNvbmQsIGJlZm9yZSBJIGRpdmUgdG9vIGRlZXAgaW50byB0aGlzIHByb2JsZW0uIExldCdzIGdldCBhIG1vcmUgZ3JhbnVsYXIgdmlldyBvZiB0aGUgc2l0dWF0aW9uLiBJIHNob3VsZCByZWFsbHkgdGFrZSBhIGxvb2sgYXQgdGhlIGBtbS9LY29uZmlnYCBmaWxlLCBzcGVjaWZpY2FsbHkgYXJvdW5kIGxpbmUgNTA4LiBUaGF0IGFyZWEgaXMgbGlrZWx5IHRvIGNvbnRhaW4gdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIG1lbW9yeSBtYW5hZ2VtZW50LiBJdCdzIHByb2JhYmx5IHdoZXJlIHRoZSByZWxldmFudCBzeW1ib2xzIGFuZCB0aGVpciBkZXBlbmRlbmNpZXMgYXJlIGRlZmluZWQuIEFuYWx5emluZyB0aGF0IHNlY3Rpb24gY2FyZWZ1bGx5IHdpbGwgZ2l2ZSBtZSBhIGNsZWFyIHBpY3R1cmUgb2Ygd2hhdCBvcHRpb25zIGFyZSBhdmFpbGFibGUsIGhvdyB0aGV5J3JlIGludGVuZGVkIHRvIGJlIHVzZWQsIGFuZCBpZiB0aGVyZSBhcmUgYW55IHN1YnRsZSBjb25maWd1cmF0aW9ucyBJIG1pZ2h0IGJlIG1pc3NpbmcuIFRoaXMgaXMgYSBjcml0aWNhbCBzdGVwIGJlZm9yZSBtYWtpbmcgYW55IGZ1cnRoZXIgYXNzdW1wdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjkxMzAsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xOFQwNToxMTowOC45MTY2NzMxMDlaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTIxNDIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm1tL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogNTAwLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNTAwOlxcdFxcdGJvb2xcXG4gNTAxOlxcdFxcbiA1MDI6XFx0Y29uZmlnIE1FTU9SWV9JU09MQVRJT05cXG4gNTAzOlxcdFxcdGJvb2xcXG4gNTA0OlxcdFxcbiA1MDU6XFx0IyBJT1JFU09VUkNFX1NZU1RFTV9SQU0gcmVnaW9ucyBpbiB0aGUga2VybmVsIHJlc291cmNlIHRyZWUgdGhhdCBhcmUgbWFya2VkXFxuIDUwNjpcXHQjIElPUkVTT1VSQ0VfRVhDTFVTSVZFIGNhbm5vdCBiZSBtYXBwZWQgdG8gdXNlciBzcGFjZSwgZm9yIGV4YW1wbGUsIHZpYVxcbiA1MDc6XFx0IyAvZGV2L21lbS5cXG4gNTA4OlxcdGNvbmZpZyBFWENMVVNJVkVfU1lTVEVNX1JBTVxcbiA1MDk6XFx0XFx0ZGVmX2Jvb2wgeVxcbiA1MTA6XFx0XFx0ZGVwZW5kcyBvbiAhREVWTUVNIHx8IFNUUklDVF9ERVZNRU1cXG4gNTExOlxcdFxcbiA1MTI6XFx0I1xcbiA1MTM6XFx0IyBPbmx5IGJlIHNldCBvbiBhcmNoaXRlY3R1cmVzIHRoYXQgaGF2ZSBjb21wbGV0ZWx5IGltcGxlbWVudGVkIG1lbW9yeSBob3RwbHVnXFxuIDUxNDpcXHQjIGZlYXR1cmUuIElmIHlvdSBhcmUgbm90IHN1cmUsIGRvbid0IHRvdWNoIGl0LlxcbiA1MTU6XFx0I1xcbiA1MTY6XFx0Y29uZmlnIEhBVkVfQk9PVE1FTV9JTkZPX05PREVcXG4gNTE3OlxcdFxcdGRlZl9ib29sIG5cXG4gNTE4OlxcdFxcbiA1MTk6XFx0Y29uZmlnIEFSQ0hfRU5BQkxFX01FTU9SWV9IT1RQTFVHXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE4VDA1OjExOjA4LjkxNjc5NTcyWiIsIlNlcSI6MzEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc2MjgwNDE2MzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBQQUdFX1RBQkxFX0NIRUNLIEhvdCBQYXRoIGZvciBGdXp6aW5nKipcblxuT2theSwgc28gbG9va2luZyBhdCB0aGlzLCBgRVhDTFVTSVZFX1NZU1RFTV9SQU1gIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCB1bmRlciB0aGUgY29uZGl0aW9ucyBgIURFVk1FTSB8fCBTVFJJQ1RfREVWTUVNYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hpY2ggZnVuY3Rpb25zIGFyZSB0aGUgXCJob3QgcGF0aFwiIGZvciBmdXp6aW5nLCBzcGVjaWZpY2FsbHkgdGhvc2UgZnVuY3Rpb25zIHRoYXQgaW1wbGVtZW50IHRoZSBjb2RlIG1vZGlmaWNhdGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2guIFRoZSBwcm9tcHQgaW5zdHJ1Y3RzIG1lIHRvIGF2b2lkICpnZW5lcmljKiBob3QtcGF0aCBmdW5jdGlvbnMsIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cblxuTXkgZm9jdXMgc2hvdWxkIGJlIG9uOlxuXG4qICAgYF9fcGFnZV90YWJsZV9jaGVja19wdGVfY2xlYXJgXG4qICAgYF9fcGFnZV90YWJsZV9jaGVja19wbWRfY2xlYXJgXG4qICAgYF9fcGFnZV90YWJsZV9jaGVja19wdWRfY2xlYXJgXG4qICAgYF9fcGFnZV90YWJsZV9jaGVja19wdGVzX3NldGBcbiogICBgX19wYWdlX3RhYmxlX2NoZWNrX3BtZHNfc2V0YFxuKiAgIGBfX3BhZ2VfdGFibGVfY2hlY2tfcHVkc19zZXRgXG4qICAgYF9fcGFnZV90YWJsZV9jaGVja196ZXJvYFxuXG5UaGVzZSBmdW5jdGlvbnMgYXJlIGNhbGxlZCBvbiAqZXZlcnkqIHBhZ2UgdGFibGUgbW9kaWZpY2F0aW9uLCBzbyB0aGV5IGFyZSB1bmRlbmlhYmx5IGhvdCBhbmQgd2hlcmUgdGhlIG5ldyBsb2dpYyBpcyBleGVjdXRlZC4gVGhlIHF1ZXN0aW9uIGlzLCBhcmUgdGhleSBjb25zaWRlcmVkIGdlbmVyaWM/IEknZCBhcmd1ZSBub3QuIFRoZXkncmUgc3BlY2lmaWMgdG8gdGhlIGBQQUdFX1RBQkxFX0NIRUNLYCBmZWF0dXJlLiBJJ2xsIGluY2x1ZGUgdGhlbS5cblxuSSBqdXN0IGRvdWJsZS1jaGVja2VkIGFuZCBgcGFnZV90YWJsZV9jaGVja19zZXRgIGFuZCBgcGFnZV90YWJsZV9jaGVja19jbGVhcmAgYXJlIHN0YXRpYywgYXMgSSBleHBlY3RlZCwgbWVhbmluZyB0aGVzZSB3aWxsIGJlIHRoZSBzeW1ib2xzIHRvIGZvY3VzIG9uLlxuXG5TbyB0aGUgbWFpbiBjb25maWcgb3B0aW9ucyBpbiBwbGF5IGhlcmUgYXJlOlxuKiAgIGBQQUdFX1RBQkxFX0NIRUNLYFxuKiAgIGBQQUdFX1RBQkxFX0NIRUNLX0VORk9SQ0VEYFxuXG5UaGUgcGF0Y2ggaXMgYWJvdXQgY2hhbmdpbmcgdGhlIGBhbm9uX21hcF9jb3VudGAgYW5kIGBmaWxlX21hcF9jb3VudGAgZnJvbSBgYXRvbWljX3RgIHRvIGBhdG9taWM2NF90YCB3aXRoaW4gdGhlIGBzdHJ1Y3QgcGFnZV90YWJsZV9jaGVja2AuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBhbmQgdGhlIG1haW4gYXJlYSB0aGF0IHJlcXVpcmVzIGZ1enppbmcuIFRoZSBwYXRjaCBpcyB0byBwcmV2ZW50IG92ZXJmbG93cywgaXQgd2lsbCBiZSByZWFjaGVkIGR1cmluZyB0aGUgdHlwaWNhbCBwYWdlIHRhYmxlIG1vZGlmaWNhdGlvbnMsIHN1Y2ggYXMgbW1hcCBhbmQgbXVubWFwLiBXZSBuZWVkIHRvIGZ1enogdGhlc2UgZnVuY3Rpb25zIHRvIG1ha2Ugc3VyZSB0aGUgNjQtYml0IGF0b21pYyBvcGVyYXRpb25zIHdvcmsgY29ycmVjdGx5IGFuZCBkb24ndCBpbnRyb2R1Y2UgYW55IHJlZ3Jlc3Npb25zLlxuXG5Ob3csIGxldCdzIGNhbGwgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6OTYxNCwiT3V0cHV0VG9rZW5zIjoyMzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0ODUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xOFQwNToxMToxNi41NDQ4MzkyNDVaIiwiU2VxIjozMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3ODMxNzI5OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiUEFHRV9UQUJMRV9DSEVDS1wiLFxuICAgIFwiUEFHRV9UQUJMRV9DSEVDS19FTkZPUkNFRFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIl9fcGFnZV90YWJsZV9jaGVja19wdGVfY2xlYXJcIixcbiAgICBcIl9fcGFnZV90YWJsZV9jaGVja19wbWRfY2xlYXJcIixcbiAgICBcIl9fcGFnZV90YWJsZV9jaGVja19wdWRfY2xlYXJcIixcbiAgICBcIl9fcGFnZV90YWJsZV9jaGVja19wdGVzX3NldFwiLFxuICAgIFwiX19wYWdlX3RhYmxlX2NoZWNrX3BtZHNfc2V0XCIsXG4gICAgXCJfX3BhZ2VfdGFibGVfY2hlY2tfcHVkc19zZXRcIixcbiAgICBcIl9fcGFnZV90YWJsZV9jaGVja196ZXJvXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggY2hhbmdlcyB0aGUgdHlwZSBvZiBhbm9uX21hcF9jb3VudCBhbmQgZmlsZV9tYXBfY291bnQgaW4gc3RydWN0IHBhZ2VfdGFibGVfY2hlY2sgZnJvbSBhdG9taWNfdCB0byBhdG9taWM2NF90IHRvIHByZXZlbnQgcG90ZW50aWFsIG92ZXJmbG93cy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBwYWdlIHRhYmxlIGNoZWNrIGxvZ2ljLCB3aGljaCBjYW4gYmUgcmVhY2hlZCBkdXJpbmcgcGFnZSB0YWJsZSBtb2RpZmljYXRpb25zIChlLmcuLCBtbWFwLCBtdW5tYXApLiBGdXp6aW5nIGlzIG5lZWRlZCB0byBlbnN1cmUgdGhlIDY0LWJpdCBhdG9taWMgb3BlcmF0aW9ucyB3b3JrIGNvcnJlY3RseSBhbmQgZG8gbm90IGludHJvZHVjZSByZWdyZXNzaW9ucy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJQQUdFX1RBQkxFX0NIRUNLXCIsXG4gICAgXCJQQUdFX1RBQkxFX0NIRUNLX0VORk9SQ0VEXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiX19wYWdlX3RhYmxlX2NoZWNrX3B0ZV9jbGVhclwiLFxuICAgIFwiX19wYWdlX3RhYmxlX2NoZWNrX3BtZF9jbGVhclwiLFxuICAgIFwiX19wYWdlX3RhYmxlX2NoZWNrX3B1ZF9jbGVhclwiLFxuICAgIFwiX19wYWdlX3RhYmxlX2NoZWNrX3B0ZXNfc2V0XCIsXG4gICAgXCJfX3BhZ2VfdGFibGVfY2hlY2tfcG1kc19zZXRcIixcbiAgICBcIl9fcGFnZV90YWJsZV9jaGVja19wdWRzX3NldFwiLFxuICAgIFwiX19wYWdlX3RhYmxlX2NoZWNrX3plcm9cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBjaGFuZ2VzIHRoZSB0eXBlIG9mIGFub25fbWFwX2NvdW50IGFuZCBmaWxlX21hcF9jb3VudCBpbiBzdHJ1Y3QgcGFnZV90YWJsZV9jaGVjayBmcm9tIGF0b21pY190IHRvIGF0b21pYzY0X3QgdG8gcHJldmVudCBwb3RlbnRpYWwgb3ZlcmZsb3dzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIHBhZ2UgdGFibGUgY2hlY2sgbG9naWMsIHdoaWNoIGNhbiBiZSByZWFjaGVkIGR1cmluZyBwYWdlIHRhYmxlIG1vZGlmaWNhdGlvbnMgKGUuZy4sIG1tYXAsIG11bm1hcCkuIEZ1enppbmcgaXMgbmVlZGVkIHRvIGVuc3VyZSB0aGUgNjQtYml0IGF0b21pYyBvcGVyYXRpb25zIHdvcmsgY29ycmVjdGx5IGFuZCBkbyBub3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowtb5dc[1] Phase: Succeeded StartedAt: 2026-07-18 05:11:27 +0000 UTC FinishedAt: 2026-07-18 05:11:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtb5dc[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-18 05:11:27 +0000 UTC FinishedAt: 2026-07-18 05:11:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtb5dc[2] Phase: Succeeded StartedAt: 2026-07-18 05:11:27 +0000 UTC FinishedAt: 2026-07-18 09:36:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtb5dc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cdf364ca2496d44343e72043457ebac92e1458ba","config_name":"upstream-apparmor-kasan.config","enable_configs":["PAGE_TABLE_CHECK","PAGE_TABLE_CHECK_ENFORCED"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__page_table_check_pte_clear","__page_table_check_pmd_clear","__page_table_check_pud_clear","__page_table_check_ptes_set","__page_table_check_pmds_set","__page_table_check_puds_set","__page_table_check_zero"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"cdf364ca2496d44343e72043457ebac92e1458ba","config_name":"upstream-apparmor-kasan.config","enable_configs":["PAGE_TABLE_CHECK","PAGE_TABLE_CHECK_ENFORCED"],"series_id":"9f11e0c5-e273-4d5a-a981-d06ac4560bb5","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-18 05:11:27 +0000 UTC FinishedAt: 2026-07-18 09:36:10 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"cdf364ca2496d44343e72043457ebac92e1458ba","config_name":"upstream-apparmor-kasan.config","enable_configs":["PAGE_TABLE_CHECK","PAGE_TABLE_CHECK_ENFORCED"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__page_table_check_pte_clear","__page_table_check_pmd_clear","__page_table_check_pud_clear","__page_table_check_ptes_set","__page_table_check_pmds_set","__page_table_check_puds_set","__page_table_check_zero"],"skip_cover_check":true},"patched":{"arch":"amd64","commit_hash":"cdf364ca2496d44343e72043457ebac92e1458ba","config_name":"upstream-apparmor-kasan.config","enable_configs":["PAGE_TABLE_CHECK","PAGE_TABLE_CHECK_ENFORCED"],"series_id":"9f11e0c5-e273-4d5a-a981-d06ac4560bb5","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowtb5dc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cdf364ca2496d44343e72043457ebac92e1458ba","config_name":"upstream-apparmor-kasan.config","enable_configs":["PAGE_TABLE_CHECK","PAGE_TABLE_CHECK_ENFORCED"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__page_table_check_pte_clear","__page_table_check_pmd_clear","__page_table_check_pud_clear","__page_table_check_ptes_set","__page_table_check_pmds_set","__page_table_check_puds_set","__page_table_check_zero"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"cdf364ca2496d44343e72043457ebac92e1458ba","config_name":"upstream-apparmor-kasan.config","enable_configs":["PAGE_TABLE_CHECK","PAGE_TABLE_CHECK_ENFORCED"],"series_id":"9f11e0c5-e273-4d5a-a981-d06ac4560bb5","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-18 05:11:27 +0000 UTC FinishedAt: 2026-07-18 05:11:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtb5dc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cdf364ca2496d44343e72043457ebac92e1458ba","config_name":"upstream-apparmor-kasan.config","enable_configs":["PAGE_TABLE_CHECK","PAGE_TABLE_CHECK_ENFORCED"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__page_table_check_pte_clear","__page_table_check_pmd_clear","__page_table_check_pud_clear","__page_table_check_ptes_set","__page_table_check_pmds_set","__page_table_check_puds_set","__page_table_check_zero"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"cdf364ca2496d44343e72043457ebac92e1458ba","config_name":"upstream-apparmor-kasan.config","enable_configs":["PAGE_TABLE_CHECK","PAGE_TABLE_CHECK_ENFORCED"],"series_id":"9f11e0c5-e273-4d5a-a981-d06ac4560bb5","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-18 05:11:27 +0000 UTC FinishedAt: 2026-07-18 05:11:33 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"cdf364ca2496d44343e72043457ebac92e1458ba","config_name":"upstream-apparmor-kasan.config","enable_configs":["PAGE_TABLE_CHECK","PAGE_TABLE_CHECK_ENFORCED"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.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-workflowtb5dc/series-workflowtb5dc-convert-artifact-1403522547/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowtb5dc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cdf364ca2496d44343e72043457ebac92e1458ba","config_name":"upstream-apparmor-kasan.config","enable_configs":["PAGE_TABLE_CHECK","PAGE_TABLE_CHECK_ENFORCED"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__page_table_check_pte_clear","__page_table_check_pmd_clear","__page_table_check_pud_clear","__page_table_check_ptes_set","__page_table_check_pmds_set","__page_table_check_puds_set","__page_table_check_zero"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"cdf364ca2496d44343e72043457ebac92e1458ba","config_name":"upstream-apparmor-kasan.config","enable_configs":["PAGE_TABLE_CHECK","PAGE_TABLE_CHECK_ENFORCED"],"series_id":"9f11e0c5-e273-4d5a-a981-d06ac4560bb5","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-18 05:11:37 +0000 UTC FinishedAt: 2026-07-18 05:49:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtb5dc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cdf364ca2496d44343e72043457ebac92e1458ba","config_name":"upstream-apparmor-kasan.config","enable_configs":["PAGE_TABLE_CHECK","PAGE_TABLE_CHECK_ENFORCED"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__page_table_check_pte_clear","__page_table_check_pmd_clear","__page_table_check_pud_clear","__page_table_check_ptes_set","__page_table_check_pmds_set","__page_table_check_puds_set","__page_table_check_zero"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"cdf364ca2496d44343e72043457ebac92e1458ba","config_name":"upstream-apparmor-kasan.config","enable_configs":["PAGE_TABLE_CHECK","PAGE_TABLE_CHECK_ENFORCED"],"series_id":"9f11e0c5-e273-4d5a-a981-d06ac4560bb5","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-18 05:11:37 +0000 UTC FinishedAt: 2026-07-18 05:49:10 +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:*a4bfa72f-6c63-4cb6-9651-5be2df9ce677,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-workflowtb5dc/series-workflowtb5dc-convert-artifact-1403522547/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": "e80dcf46-2c04-474f-b594-e21e1437f5c5", "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-workflowtb5dc/series-workflowtb5dc-build-action-2319610017/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowtb5dc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cdf364ca2496d44343e72043457ebac92e1458ba","config_name":"upstream-apparmor-kasan.config","enable_configs":["PAGE_TABLE_CHECK","PAGE_TABLE_CHECK_ENFORCED"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__page_table_check_pte_clear","__page_table_check_pmd_clear","__page_table_check_pud_clear","__page_table_check_ptes_set","__page_table_check_pmds_set","__page_table_check_puds_set","__page_table_check_zero"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"cdf364ca2496d44343e72043457ebac92e1458ba","config_name":"upstream-apparmor-kasan.config","enable_configs":["PAGE_TABLE_CHECK","PAGE_TABLE_CHECK_ENFORCED"],"series_id":"9f11e0c5-e273-4d5a-a981-d06ac4560bb5","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-18 05:11:37 +0000 UTC FinishedAt: 2026-07-18 05:49:00 +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:*a4bfa72f-6c63-4cb6-9651-5be2df9ce677,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-workflowtb5dc/series-workflowtb5dc-convert-artifact-1403522547/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": "e80dcf46-2c04-474f-b594-e21e1437f5c5", "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-workflowtb5dc/series-workflowtb5dc-build-action-2319610017/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowtb5dc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cdf364ca2496d44343e72043457ebac92e1458ba","config_name":"upstream-apparmor-kasan.config","enable_configs":["PAGE_TABLE_CHECK","PAGE_TABLE_CHECK_ENFORCED"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__page_table_check_pte_clear","__page_table_check_pmd_clear","__page_table_check_pud_clear","__page_table_check_ptes_set","__page_table_check_pmds_set","__page_table_check_puds_set","__page_table_check_zero"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"cdf364ca2496d44343e72043457ebac92e1458ba","config_name":"upstream-apparmor-kasan.config","enable_configs":["PAGE_TABLE_CHECK","PAGE_TABLE_CHECK_ENFORCED"],"series_id":"9f11e0c5-e273-4d5a-a981-d06ac4560bb5","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-18 05:49:10 +0000 UTC FinishedAt: 2026-07-18 05:49:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtb5dc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cdf364ca2496d44343e72043457ebac92e1458ba","config_name":"upstream-apparmor-kasan.config","enable_configs":["PAGE_TABLE_CHECK","PAGE_TABLE_CHECK_ENFORCED"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__page_table_check_pte_clear","__page_table_check_pmd_clear","__page_table_check_pud_clear","__page_table_check_ptes_set","__page_table_check_pmds_set","__page_table_check_puds_set","__page_table_check_zero"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"cdf364ca2496d44343e72043457ebac92e1458ba","config_name":"upstream-apparmor-kasan.config","enable_configs":["PAGE_TABLE_CHECK","PAGE_TABLE_CHECK_ENFORCED"],"series_id":"9f11e0c5-e273-4d5a-a981-d06ac4560bb5","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-18 05:49:10 +0000 UTC FinishedAt: 2026-07-18 05:49:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtb5dc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cdf364ca2496d44343e72043457ebac92e1458ba","config_name":"upstream-apparmor-kasan.config","enable_configs":["PAGE_TABLE_CHECK","PAGE_TABLE_CHECK_ENFORCED"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__page_table_check_pte_clear","__page_table_check_pmd_clear","__page_table_check_pud_clear","__page_table_check_ptes_set","__page_table_check_pmds_set","__page_table_check_puds_set","__page_table_check_zero"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"cdf364ca2496d44343e72043457ebac92e1458ba","config_name":"upstream-apparmor-kasan.config","enable_configs":["PAGE_TABLE_CHECK","PAGE_TABLE_CHECK_ENFORCED"],"series_id":"9f11e0c5-e273-4d5a-a981-d06ac4560bb5","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-18 05:49:10 +0000 UTC FinishedAt: 2026-07-18 05:49:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtb5dc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cdf364ca2496d44343e72043457ebac92e1458ba","config_name":"upstream-apparmor-kasan.config","enable_configs":["PAGE_TABLE_CHECK","PAGE_TABLE_CHECK_ENFORCED"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__page_table_check_pte_clear","__page_table_check_pmd_clear","__page_table_check_pud_clear","__page_table_check_ptes_set","__page_table_check_pmds_set","__page_table_check_puds_set","__page_table_check_zero"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"cdf364ca2496d44343e72043457ebac92e1458ba","config_name":"upstream-apparmor-kasan.config","enable_configs":["PAGE_TABLE_CHECK","PAGE_TABLE_CHECK_ENFORCED"],"series_id":"9f11e0c5-e273-4d5a-a981-d06ac4560bb5","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-18 05:49:10 +0000 UTC FinishedAt: 2026-07-18 05:49:16 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"cdf364ca2496d44343e72043457ebac92e1458ba","config_name":"upstream-apparmor-kasan.config","enable_configs":["PAGE_TABLE_CHECK","PAGE_TABLE_CHECK_ENFORCED"],"series_id":"9f11e0c5-e273-4d5a-a981-d06ac4560bb5","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.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-workflowtb5dc/series-workflowtb5dc-convert-artifact-3276575722/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowtb5dc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cdf364ca2496d44343e72043457ebac92e1458ba","config_name":"upstream-apparmor-kasan.config","enable_configs":["PAGE_TABLE_CHECK","PAGE_TABLE_CHECK_ENFORCED"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__page_table_check_pte_clear","__page_table_check_pmd_clear","__page_table_check_pud_clear","__page_table_check_ptes_set","__page_table_check_pmds_set","__page_table_check_puds_set","__page_table_check_zero"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"cdf364ca2496d44343e72043457ebac92e1458ba","config_name":"upstream-apparmor-kasan.config","enable_configs":["PAGE_TABLE_CHECK","PAGE_TABLE_CHECK_ENFORCED"],"series_id":"9f11e0c5-e273-4d5a-a981-d06ac4560bb5","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-18 05:49:20 +0000 UTC FinishedAt: 2026-07-18 05:51:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtb5dc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cdf364ca2496d44343e72043457ebac92e1458ba","config_name":"upstream-apparmor-kasan.config","enable_configs":["PAGE_TABLE_CHECK","PAGE_TABLE_CHECK_ENFORCED"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__page_table_check_pte_clear","__page_table_check_pmd_clear","__page_table_check_pud_clear","__page_table_check_ptes_set","__page_table_check_pmds_set","__page_table_check_puds_set","__page_table_check_zero"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"cdf364ca2496d44343e72043457ebac92e1458ba","config_name":"upstream-apparmor-kasan.config","enable_configs":["PAGE_TABLE_CHECK","PAGE_TABLE_CHECK_ENFORCED"],"series_id":"9f11e0c5-e273-4d5a-a981-d06ac4560bb5","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-18 05:49:20 +0000 UTC FinishedAt: 2026-07-18 05:50:56 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*e80dcf46-2c04-474f-b594-e21e1437f5c5,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-workflowtb5dc/series-workflowtb5dc-build-action-2319610017/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-workflowtb5dc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cdf364ca2496d44343e72043457ebac92e1458ba","config_name":"upstream-apparmor-kasan.config","enable_configs":["PAGE_TABLE_CHECK","PAGE_TABLE_CHECK_ENFORCED"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__page_table_check_pte_clear","__page_table_check_pmd_clear","__page_table_check_pud_clear","__page_table_check_ptes_set","__page_table_check_pmds_set","__page_table_check_puds_set","__page_table_check_zero"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"cdf364ca2496d44343e72043457ebac92e1458ba","config_name":"upstream-apparmor-kasan.config","enable_configs":["PAGE_TABLE_CHECK","PAGE_TABLE_CHECK_ENFORCED"],"series_id":"9f11e0c5-e273-4d5a-a981-d06ac4560bb5","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-18 05:51:06 +0000 UTC FinishedAt: 2026-07-18 05:51:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtb5dc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cdf364ca2496d44343e72043457ebac92e1458ba","config_name":"upstream-apparmor-kasan.config","enable_configs":["PAGE_TABLE_CHECK","PAGE_TABLE_CHECK_ENFORCED"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__page_table_check_pte_clear","__page_table_check_pmd_clear","__page_table_check_pud_clear","__page_table_check_ptes_set","__page_table_check_pmds_set","__page_table_check_puds_set","__page_table_check_zero"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"cdf364ca2496d44343e72043457ebac92e1458ba","config_name":"upstream-apparmor-kasan.config","enable_configs":["PAGE_TABLE_CHECK","PAGE_TABLE_CHECK_ENFORCED"],"series_id":"9f11e0c5-e273-4d5a-a981-d06ac4560bb5","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-18 05:51:06 +0000 UTC FinishedAt: 2026-07-18 05:51:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtb5dc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cdf364ca2496d44343e72043457ebac92e1458ba","config_name":"upstream-apparmor-kasan.config","enable_configs":["PAGE_TABLE_CHECK","PAGE_TABLE_CHECK_ENFORCED"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__page_table_check_pte_clear","__page_table_check_pmd_clear","__page_table_check_pud_clear","__page_table_check_ptes_set","__page_table_check_pmds_set","__page_table_check_puds_set","__page_table_check_zero"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"cdf364ca2496d44343e72043457ebac92e1458ba","config_name":"upstream-apparmor-kasan.config","enable_configs":["PAGE_TABLE_CHECK","PAGE_TABLE_CHECK_ENFORCED"],"series_id":"9f11e0c5-e273-4d5a-a981-d06ac4560bb5","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-18 05:51:06 +0000 UTC FinishedAt: 2026-07-18 06:32:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtb5dc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cdf364ca2496d44343e72043457ebac92e1458ba","config_name":"upstream-apparmor-kasan.config","enable_configs":["PAGE_TABLE_CHECK","PAGE_TABLE_CHECK_ENFORCED"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__page_table_check_pte_clear","__page_table_check_pmd_clear","__page_table_check_pud_clear","__page_table_check_ptes_set","__page_table_check_pmds_set","__page_table_check_puds_set","__page_table_check_zero"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"cdf364ca2496d44343e72043457ebac92e1458ba","config_name":"upstream-apparmor-kasan.config","enable_configs":["PAGE_TABLE_CHECK","PAGE_TABLE_CHECK_ENFORCED"],"series_id":"9f11e0c5-e273-4d5a-a981-d06ac4560bb5","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-18 05:51:06 +0000 UTC FinishedAt: 2026-07-18 06:32:19 +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:*a4bfa72f-6c63-4cb6-9651-5be2df9ce677,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-workflowtb5dc/series-workflowtb5dc-convert-artifact-3276575722/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": "ae8c6628-0cc4-41c3-b04e-1d51400b0399", "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-workflowtb5dc/series-workflowtb5dc-build-action-903135246/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowtb5dc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cdf364ca2496d44343e72043457ebac92e1458ba","config_name":"upstream-apparmor-kasan.config","enable_configs":["PAGE_TABLE_CHECK","PAGE_TABLE_CHECK_ENFORCED"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__page_table_check_pte_clear","__page_table_check_pmd_clear","__page_table_check_pud_clear","__page_table_check_ptes_set","__page_table_check_pmds_set","__page_table_check_puds_set","__page_table_check_zero"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"cdf364ca2496d44343e72043457ebac92e1458ba","config_name":"upstream-apparmor-kasan.config","enable_configs":["PAGE_TABLE_CHECK","PAGE_TABLE_CHECK_ENFORCED"],"series_id":"9f11e0c5-e273-4d5a-a981-d06ac4560bb5","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-18 05:51:06 +0000 UTC FinishedAt: 2026-07-18 06:32:09 +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:*a4bfa72f-6c63-4cb6-9651-5be2df9ce677,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-workflowtb5dc/series-workflowtb5dc-convert-artifact-3276575722/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": "ae8c6628-0cc4-41c3-b04e-1d51400b0399", "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-workflowtb5dc/series-workflowtb5dc-build-action-903135246/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowtb5dc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cdf364ca2496d44343e72043457ebac92e1458ba","config_name":"upstream-apparmor-kasan.config","enable_configs":["PAGE_TABLE_CHECK","PAGE_TABLE_CHECK_ENFORCED"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__page_table_check_pte_clear","__page_table_check_pmd_clear","__page_table_check_pud_clear","__page_table_check_ptes_set","__page_table_check_pmds_set","__page_table_check_puds_set","__page_table_check_zero"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"cdf364ca2496d44343e72043457ebac92e1458ba","config_name":"upstream-apparmor-kasan.config","enable_configs":["PAGE_TABLE_CHECK","PAGE_TABLE_CHECK_ENFORCED"],"series_id":"9f11e0c5-e273-4d5a-a981-d06ac4560bb5","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-18 06:32:19 +0000 UTC FinishedAt: 2026-07-18 06:32:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtb5dc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cdf364ca2496d44343e72043457ebac92e1458ba","config_name":"upstream-apparmor-kasan.config","enable_configs":["PAGE_TABLE_CHECK","PAGE_TABLE_CHECK_ENFORCED"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__page_table_check_pte_clear","__page_table_check_pmd_clear","__page_table_check_pud_clear","__page_table_check_ptes_set","__page_table_check_pmds_set","__page_table_check_puds_set","__page_table_check_zero"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"cdf364ca2496d44343e72043457ebac92e1458ba","config_name":"upstream-apparmor-kasan.config","enable_configs":["PAGE_TABLE_CHECK","PAGE_TABLE_CHECK_ENFORCED"],"series_id":"9f11e0c5-e273-4d5a-a981-d06ac4560bb5","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-18 06:32:19 +0000 UTC FinishedAt: 2026-07-18 06:32:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtb5dc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cdf364ca2496d44343e72043457ebac92e1458ba","config_name":"upstream-apparmor-kasan.config","enable_configs":["PAGE_TABLE_CHECK","PAGE_TABLE_CHECK_ENFORCED"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__page_table_check_pte_clear","__page_table_check_pmd_clear","__page_table_check_pud_clear","__page_table_check_ptes_set","__page_table_check_pmds_set","__page_table_check_puds_set","__page_table_check_zero"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"cdf364ca2496d44343e72043457ebac92e1458ba","config_name":"upstream-apparmor-kasan.config","enable_configs":["PAGE_TABLE_CHECK","PAGE_TABLE_CHECK_ENFORCED"],"series_id":"9f11e0c5-e273-4d5a-a981-d06ac4560bb5","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-18 06:32:19 +0000 UTC FinishedAt: 2026-07-18 06:34:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtb5dc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cdf364ca2496d44343e72043457ebac92e1458ba","config_name":"upstream-apparmor-kasan.config","enable_configs":["PAGE_TABLE_CHECK","PAGE_TABLE_CHECK_ENFORCED"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__page_table_check_pte_clear","__page_table_check_pmd_clear","__page_table_check_pud_clear","__page_table_check_ptes_set","__page_table_check_pmds_set","__page_table_check_puds_set","__page_table_check_zero"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"cdf364ca2496d44343e72043457ebac92e1458ba","config_name":"upstream-apparmor-kasan.config","enable_configs":["PAGE_TABLE_CHECK","PAGE_TABLE_CHECK_ENFORCED"],"series_id":"9f11e0c5-e273-4d5a-a981-d06ac4560bb5","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-18 06:32:19 +0000 UTC FinishedAt: 2026-07-18 06:33:56 +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:*ae8c6628-0cc4-41c3-b04e-1d51400b0399,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-workflowtb5dc/series-workflowtb5dc-build-action-903135246/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-workflowtb5dc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cdf364ca2496d44343e72043457ebac92e1458ba","config_name":"upstream-apparmor-kasan.config","enable_configs":["PAGE_TABLE_CHECK","PAGE_TABLE_CHECK_ENFORCED"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__page_table_check_pte_clear","__page_table_check_pmd_clear","__page_table_check_pud_clear","__page_table_check_ptes_set","__page_table_check_pmds_set","__page_table_check_puds_set","__page_table_check_zero"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"cdf364ca2496d44343e72043457ebac92e1458ba","config_name":"upstream-apparmor-kasan.config","enable_configs":["PAGE_TABLE_CHECK","PAGE_TABLE_CHECK_ENFORCED"],"series_id":"9f11e0c5-e273-4d5a-a981-d06ac4560bb5","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-18 06:34:06 +0000 UTC FinishedAt: 2026-07-18 09:36:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtb5dc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cdf364ca2496d44343e72043457ebac92e1458ba","config_name":"upstream-apparmor-kasan.config","enable_configs":["PAGE_TABLE_CHECK","PAGE_TABLE_CHECK_ENFORCED"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__page_table_check_pte_clear","__page_table_check_pmd_clear","__page_table_check_pud_clear","__page_table_check_ptes_set","__page_table_check_pmds_set","__page_table_check_puds_set","__page_table_check_zero"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"cdf364ca2496d44343e72043457ebac92e1458ba","config_name":"upstream-apparmor-kasan.config","enable_configs":["PAGE_TABLE_CHECK","PAGE_TABLE_CHECK_ENFORCED"],"series_id":"9f11e0c5-e273-4d5a-a981-d06ac4560bb5","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-18 06:34:06 +0000 UTC FinishedAt: 2026-07-18 09:36:10 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__page_table_check_pte_clear","__page_table_check_pmd_clear","__page_table_check_pud_clear","__page_table_check_ptes_set","__page_table_check_pmds_set","__page_table_check_puds_set","__page_table_check_zero"],"skip_cover_check":true},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:*e80dcf46-2c04-474f-b594-e21e1437f5c5,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*ae8c6628-0cc4-41c3-b04e-1d51400b0399,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-workflowtb5dc/series-workflowtb5dc-build-action-2319610017/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-workflowtb5dc/series-workflowtb5dc-build-action-903135246/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowtb5dc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cdf364ca2496d44343e72043457ebac92e1458ba","config_name":"upstream-apparmor-kasan.config","enable_configs":["PAGE_TABLE_CHECK","PAGE_TABLE_CHECK_ENFORCED"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__page_table_check_pte_clear","__page_table_check_pmd_clear","__page_table_check_pud_clear","__page_table_check_ptes_set","__page_table_check_pmds_set","__page_table_check_puds_set","__page_table_check_zero"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"cdf364ca2496d44343e72043457ebac92e1458ba","config_name":"upstream-apparmor-kasan.config","enable_configs":["PAGE_TABLE_CHECK","PAGE_TABLE_CHECK_ENFORCED"],"series_id":"9f11e0c5-e273-4d5a-a981-d06ac4560bb5","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-18 06:34:06 +0000 UTC FinishedAt: 2026-07-18 06:34:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtb5dc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cdf364ca2496d44343e72043457ebac92e1458ba","config_name":"upstream-apparmor-kasan.config","enable_configs":["PAGE_TABLE_CHECK","PAGE_TABLE_CHECK_ENFORCED"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__page_table_check_pte_clear","__page_table_check_pmd_clear","__page_table_check_pud_clear","__page_table_check_ptes_set","__page_table_check_pmds_set","__page_table_check_puds_set","__page_table_check_zero"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"cdf364ca2496d44343e72043457ebac92e1458ba","config_name":"upstream-apparmor-kasan.config","enable_configs":["PAGE_TABLE_CHECK","PAGE_TABLE_CHECK_ENFORCED"],"series_id":"9f11e0c5-e273-4d5a-a981-d06ac4560bb5","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-18 06:34:06 +0000 UTC FinishedAt: 2026-07-18 06:34:11 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__page_table_check_pte_clear","__page_table_check_pmd_clear","__page_table_check_pud_clear","__page_table_check_ptes_set","__page_table_check_pmds_set","__page_table_check_puds_set","__page_table_check_zero"],"skip_cover_check":true},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-workflowtb5dc/series-workflowtb5dc-convert-artifact-4005152383/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowtb5dc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cdf364ca2496d44343e72043457ebac92e1458ba","config_name":"upstream-apparmor-kasan.config","enable_configs":["PAGE_TABLE_CHECK","PAGE_TABLE_CHECK_ENFORCED"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__page_table_check_pte_clear","__page_table_check_pmd_clear","__page_table_check_pud_clear","__page_table_check_ptes_set","__page_table_check_pmds_set","__page_table_check_puds_set","__page_table_check_zero"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"cdf364ca2496d44343e72043457ebac92e1458ba","config_name":"upstream-apparmor-kasan.config","enable_configs":["PAGE_TABLE_CHECK","PAGE_TABLE_CHECK_ENFORCED"],"series_id":"9f11e0c5-e273-4d5a-a981-d06ac4560bb5","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-18 06:34:06 +0000 UTC FinishedAt: 2026-07-18 06:34:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtb5dc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cdf364ca2496d44343e72043457ebac92e1458ba","config_name":"upstream-apparmor-kasan.config","enable_configs":["PAGE_TABLE_CHECK","PAGE_TABLE_CHECK_ENFORCED"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__page_table_check_pte_clear","__page_table_check_pmd_clear","__page_table_check_pud_clear","__page_table_check_ptes_set","__page_table_check_pmds_set","__page_table_check_puds_set","__page_table_check_zero"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"cdf364ca2496d44343e72043457ebac92e1458ba","config_name":"upstream-apparmor-kasan.config","enable_configs":["PAGE_TABLE_CHECK","PAGE_TABLE_CHECK_ENFORCED"],"series_id":"9f11e0c5-e273-4d5a-a981-d06ac4560bb5","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-18 06:34:06 +0000 UTC FinishedAt: 2026-07-18 06:34:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtb5dc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cdf364ca2496d44343e72043457ebac92e1458ba","config_name":"upstream-apparmor-kasan.config","enable_configs":["PAGE_TABLE_CHECK","PAGE_TABLE_CHECK_ENFORCED"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__page_table_check_pte_clear","__page_table_check_pmd_clear","__page_table_check_pud_clear","__page_table_check_ptes_set","__page_table_check_pmds_set","__page_table_check_puds_set","__page_table_check_zero"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"cdf364ca2496d44343e72043457ebac92e1458ba","config_name":"upstream-apparmor-kasan.config","enable_configs":["PAGE_TABLE_CHECK","PAGE_TABLE_CHECK_ENFORCED"],"series_id":"9f11e0c5-e273-4d5a-a981-d06ac4560bb5","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-18 06:34:06 +0000 UTC FinishedAt: 2026-07-18 06:34:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtb5dc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cdf364ca2496d44343e72043457ebac92e1458ba","config_name":"upstream-apparmor-kasan.config","enable_configs":["PAGE_TABLE_CHECK","PAGE_TABLE_CHECK_ENFORCED"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__page_table_check_pte_clear","__page_table_check_pmd_clear","__page_table_check_pud_clear","__page_table_check_ptes_set","__page_table_check_pmds_set","__page_table_check_puds_set","__page_table_check_zero"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"cdf364ca2496d44343e72043457ebac92e1458ba","config_name":"upstream-apparmor-kasan.config","enable_configs":["PAGE_TABLE_CHECK","PAGE_TABLE_CHECK_ENFORCED"],"series_id":"9f11e0c5-e273-4d5a-a981-d06ac4560bb5","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-18 06:34:16 +0000 UTC FinishedAt: 2026-07-18 09:36:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtb5dc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cdf364ca2496d44343e72043457ebac92e1458ba","config_name":"upstream-apparmor-kasan.config","enable_configs":["PAGE_TABLE_CHECK","PAGE_TABLE_CHECK_ENFORCED"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__page_table_check_pte_clear","__page_table_check_pmd_clear","__page_table_check_pud_clear","__page_table_check_ptes_set","__page_table_check_pmds_set","__page_table_check_puds_set","__page_table_check_zero"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"cdf364ca2496d44343e72043457ebac92e1458ba","config_name":"upstream-apparmor-kasan.config","enable_configs":["PAGE_TABLE_CHECK","PAGE_TABLE_CHECK_ENFORCED"],"series_id":"9f11e0c5-e273-4d5a-a981-d06ac4560bb5","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-18 06:34:16 +0000 UTC FinishedAt: 2026-07-18 09:36:01 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*e80dcf46-2c04-474f-b594-e21e1437f5c5,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*ae8c6628-0cc4-41c3-b04e-1d51400b0399,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-workflowtb5dc/series-workflowtb5dc-build-action-2319610017/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-workflowtb5dc/series-workflowtb5dc-build-action-903135246/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-workflowtb5dc/series-workflowtb5dc-convert-artifact-4005152383/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,}