Name: series-workflowfl5wp Phase: Succeeded StartedAt: 2026-07-07 06:08:25 +0000 UTC FinishedAt: 2026-07-07 11:36:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfl5wp[0] Phase: Succeeded StartedAt: 2026-07-07 06:08:26 +0000 UTC FinishedAt: 2026-07-07 06:35:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfl5wp[0].run-triage Phase: Succeeded StartedAt: 2026-07-07 06:08:26 +0000 UTC FinishedAt: 2026-07-07 06:35:42 +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": "c6b0b9701fcef71ed7cabc0358bb18e15e8e8329", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "PTDUMP_DEBUGFS" ], "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": "c6b0b9701fcef71ed7cabc0358bb18e15e8e8329", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "PTDUMP_DEBUGFS" ], "series_id": "f21a389e-10ed-4d6d-8aa7-7654acb39d37" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "walk_page_range_debug", "ptdump_walk_pgd", "pagetable_free_kernel", "kernel_pgtable_free_rcu" ], "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+CgkJCTx0ZD4yMDI2LzA3LzA3IDA2OjIzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MTBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtQVERVTVBfREVCVUdGUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3dhbGtfcGFnZV9yYW5nZV9kZWJ1ZyYjMzQ7LAogICAgJiMzNDtwdGR1bXBfd2Fsa19wZ2QmIzM0OywKICAgICYjMzQ7cGFnZXRhYmxlX2ZyZWVfa2VybmVsJiMzNDssCiAgICAmIzM0O2tlcm5lbF9wZ3RhYmxlX2ZyZWVfcmN1JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBrZXJuZWwgcGFnZSB0YWJsZSB3YWxraW5nIGFuZCBmcmVlaW5nIGxvZ2ljLiBJdCBpbnRyb2R1Y2VzIFJDVS1kZWZlcnJlZCBmcmVlaW5nIGZvciBrZXJuZWwgcGFnZSB0YWJsZXMgYW5kIGNoYW5nZXMgdGhlIGRlYnVnIHBhZ2UgdGFibGUgd2Fsa2VyIChwdGR1bXApIHRvIHdhbGsga2VybmVsIHBhZ2UgdGFibGVzIGxvY2tsZXNzbHkgdW5kZXIgUkNVIGluIGJvdW5kZWQgY2h1bmtzLiBUaGlzIGlzIGEgY29yZSBtZW1vcnkgbWFuYWdlbWVudCBjaGFuZ2UgdGhhdCBhZmZlY3RzIGhvdyBrZXJuZWwgcGFnZSB0YWJsZXMgYXJlIHNhZmVseSBhY2Nlc3NlZCBhbmQgZnJlZWQgY29uY3VycmVudGx5LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDA2OjIzPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNDVlMWUzM2ExN2EzY2MzMzU1OGVkZjNiZjgzMTBhYWJkYzk2N2RjY1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgSnVsIDcgMDY6MjM6MDAgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL21tL3BndGFibGUtZnJhZy5jIGIvYXJjaC9wb3dlcnBjL21tL3BndGFibGUtZnJhZy5jXG5pbmRleCBhZTc0MjU2NGEzZDU2ZC4uMWUxZTg4ZjgzMWY3NjcgMTAwNjQ0XG4tLS0gYS9hcmNoL3Bvd2VycGMvbW0vcGd0YWJsZS1mcmFnLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvcG93ZXJwYy9tbS9wZ3RhYmxlLWZyYWcuY1xuQEAgLTEyMyw3ICYjNDM7MTIzLDEyIEBAIHZvaWQgcHRlX2ZyYWdtZW50X2ZyZWUodW5zaWduZWQgbG9uZyAqdGFibGUsIGludCBrZXJuZWwpXG4gXG4gXHRCVUdfT04oYXRvbWljX3JlYWQoXHUwMDI2cHRkZXNjLVx1MDAzZXB0X2ZyYWdfcmVmY291bnQpIFx1MDAzYz0gMCk7XG4gXHRpZiAoYXRvbWljX2RlY19hbmRfdGVzdChcdTAwMjZwdGRlc2MtXHUwMDNlcHRfZnJhZ19yZWZjb3VudCkpIHtcbi1cdFx0aWYgKGtlcm5lbCB8fCAhZm9saW9fdGVzdF9jbGVhcl9hY3RpdmUocHRkZXNjX2ZvbGlvKHB0ZGVzYykpKVxuJiM0MztcdFx0LypcbiYjNDM7XHRcdCAqIEtlcm5lbCBwYWdlIHRhYmxlcyBtYXkgYmUgd2Fsa2VkIGxvY2tsZXNzbHkgdW5kZXIgUkNVIGJ5XG4mIzQzO1x0XHQgKiBwdGR1bXAsIHNvIGRlZmVyIHRoZWlyIGZyZWUgYnkgYSBncmFjZSBwZXJpb2QgdG9vLCBsaWtlIHRoZVxuJiM0MztcdFx0ICogbG9ja2xlc3MtR1VQIGNhc2UgYmVsb3cgZm9yIHVzZXIgdGFibGVzLlxuJiM0MztcdFx0ICovXG4mIzQzO1x0XHRpZiAoIWtlcm5lbCBcdTAwMjZcdTAwMjYgIWZvbGlvX3Rlc3RfY2xlYXJfYWN0aXZlKHB0ZGVzY19mb2xpbyhwdGRlc2MpKSlcbiBcdFx0XHRwdGVfZnJlZV9ub3coXHUwMDI2cHRkZXNjLVx1MDAzZXB0X3JjdV9oZWFkKTtcbiBcdFx0ZWxzZVxuIFx0XHRcdGNhbGxfcmN1KFx1MDAyNnB0ZGVzYy1cdTAwM2VwdF9yY3VfaGVhZCwgcHRlX2ZyZWVfbm93KTtcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L21tLmggYi9pbmNsdWRlL2xpbnV4L21tLmhcbmluZGV4IDQ4NWRmOWMyZGJkZGIzLi43OTQwOGExN2ExYjBkYSAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvbW0uaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9tbS5oXG5AQCAtMzY5NSwxNCAmIzQzOzM2OTUsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgX19wYWdldGFibGVfZnJlZShzdHJ1Y3QgcHRkZXNjICpwdClcbiBcdF9fZnJlZV9wYWdlcyhwYWdlLCBjb21wb3VuZF9vcmRlcihwYWdlKSk7XG4gfVxuIFxuLSNpZmRlZiBDT05GSUdfQVNZTkNfS0VSTkVMX1BHVEFCTEVfRlJFRVxuIHZvaWQgcGFnZXRhYmxlX2ZyZWVfa2VybmVsKHN0cnVjdCBwdGRlc2MgKnB0KTtcbi0jZWxzZVxuLXN0YXRpYyBpbmxpbmUgdm9pZCBwYWdldGFibGVfZnJlZV9rZXJuZWwoc3RydWN0IHB0ZGVzYyAqcHQpXG4te1xuLVx0X19wYWdldGFibGVfZnJlZShwdCk7XG4tfVxuLSNlbmRpZlxuIC8qKlxuICAqIHBhZ2V0YWJsZV9mcmVlIC0gRnJlZSBwYWdldGFibGVzXG4gICogQHB0Olx0VGhlIHBhZ2UgdGFibGUgZGVzY3JpcHRvclxuZGlmZiAtLWdpdCBhL21tL3BhZ2V3YWxrLmMgYi9tbS9wYWdld2Fsay5jXG5pbmRleCAzYWUyNTg2ZmY0NWI0NC4uZmMyZmUwMTRhYzhjNjggMTAwNjQ0XG4tLS0gYS9tbS9wYWdld2Fsay5jXG4mIzQzOyYjNDM7JiM0MzsgYi9tbS9wYWdld2Fsay5jXG5AQCAtNjIwLDcgJiM0Mzs2MjAsNyBAQCBpbnQgd2Fsa19wYWdlX3JhbmdlKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCB1bnNpZ25lZCBsb25nIHN0YXJ0LFxuICAqIE5vdGU6IEJlIGNhcmVmdWwgdG8gd2FsayB0aGUga2VybmVsIHBhZ2VzIHRhYmxlcywgdGhlIGNhbGxlciBtYXkgYmUgbmVlZCB0b1xuICAqIHRha2Ugb3RoZXIgZWZmZWN0aXZlIGFwcHJvYWNoZXMgKG1tYXAgbG9jayBtYXkgYmUgaW5zdWZmaWNpZW50KSB0byBwcmV2ZW50XG4gICogdGhlIGludGVybWVkaWF0ZSBrZXJuZWwgcGFnZSB0YWJsZXMgYmVsb25naW5nIHRvIHRoZSBzcGVjaWZpZWQgYWRkcmVzcyByYW5nZVxuLSAqIGZyb20gYmVpbmcgZnJlZWQgKGUuZy4gbWVtb3J5IGhvdC1yZW1vdmUpLlxuJiM0MzsgKiBmcm9tIGJlaW5nIGZyZWVkIChlLmcuIG1lbW9yeSBob3QtcmVtb3ZlLCB2bWFwIGh1Z2UgcGFnZSBwcm9tb3Rpb24pLlxuICAqL1xuIGludCB3YWxrX2tlcm5lbF9wYWdlX3RhYmxlX3JhbmdlKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kLFxuIFx0XHRjb25zdCBzdHJ1Y3QgbW1fd2Fsa19vcHMgKm9wcywgcGdkX3QgKnBnZCwgdm9pZCAqcHJpdmF0ZSlcbkBAIC02NDMsNyAmIzQzOzY0Myw3IEBAIGludCB3YWxrX2tlcm5lbF9wYWdlX3RhYmxlX3JhbmdlKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kLFxuICAqIFVzZSB0aGlzIGZ1bmN0aW9uIHRvIHdhbGsgdGhlIGtlcm5lbCBwYWdlIHRhYmxlcyBsb2NrbGVzc2x5LiBJdCBzaG91bGQgYmVcbiAgKiBndWFyYW50ZWVkIHRoYXQgdGhlIGNhbGxlciBoYXMgZXhjbHVzaXZlIGFjY2VzcyBvdmVyIHRoZSByYW5nZSB0aGV5IGFyZVxuICAqIG9wZXJhdGluZyBvbiAtIHRoYXQgdGhlcmUgc2hvdWxkIGJlIG5vIGNvbmN1cnJlbnQgYWNjZXNzLCBmb3IgZXhhbXBsZSxcbi0gKiBjaGFuZ2luZyBwZXJtaXNzaW9ucyBmb3Igdm1hbGxvYyBvYmplY3RzLlxuJiM0MzsgKiBjaGFuZ2luZyBwZXJtaXNzaW9ucyBmb3Igdm1hbGxvYyBvYmplY3RzLCBvciB2bWFwIGh1Z2UgcGFnZSBwcm9tb3Rpb24uXG4gICovXG4gaW50IHdhbGtfa2VybmVsX3BhZ2VfdGFibGVfcmFuZ2VfbG9ja2xlc3ModW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQsXG4gXHRcdGNvbnN0IHN0cnVjdCBtbV93YWxrX29wcyAqb3BzLCBwZ2RfdCAqcGdkLCB2b2lkICpwcml2YXRlKVxuQEAgLTY5Miw5ICYjNDM7NjkyLDM1IEBAIGludCB3YWxrX3BhZ2VfcmFuZ2VfZGVidWcoc3RydWN0IG1tX3N0cnVjdCAqbW0sIHVuc2lnbmVkIGxvbmcgc3RhcnQsXG4gXHR9O1xuIFxuIFx0LyogRm9yIGNvbnZlbmllbmNlLCB3ZSBhbGxvdyB0cmF2ZXJzYWwgb2Yga2VybmVsIG1hcHBpbmdzLiAqL1xuLVx0aWYgKG1tID09IFx1MDAyNmluaXRfbW0pXG4tXHRcdHJldHVybiB3YWxrX2tlcm5lbF9wYWdlX3RhYmxlX3JhbmdlKHN0YXJ0LCBlbmQsIG9wcyxcbi1cdFx0XHRcdFx0XHQgICAgcGdkLCBwcml2YXRlKTtcbiYjNDM7XHRpZiAobW0gPT0gXHUwMDI2aW5pdF9tbSkge1xuJiM0MztcdFx0dW5zaWduZWQgbG9uZyBhZGRyID0gc3RhcnQ7XG4mIzQzO1xuJiM0MztcdFx0LypcbiYjNDM7XHRcdCAqIFdhbGsgaW4gYm91bmRlZCBjaHVua3Mgc28gdGhlIFJDVSByZWFkIGxvY2sgaXMgbmV2ZXIgaGVsZFxuJiM0MztcdFx0ICogYWNyb3NzIHRoZSB3aG9sZSBrZXJuZWwgYWRkcmVzcyBzcGFjZS4gIEEga2VybmVsIHBhZ2UgdGFibGVcbiYjNDM7XHRcdCAqIGZyZWVkIHZpYSBwYWdldGFibGVfZnJlZV9rZXJuZWwoKSBzdGF5cyB2YWxpZCB1bnRpbCB0aGUgd2Fsa1xuJiM0MztcdFx0ICogdGhhdCBtYXkgaGF2ZSBvYnNlcnZlZCBpdCBkcm9wcyB0aGUgbG9jazsgcmVsZWFzaW5nIHRoZSBsb2NrXG4mIzQzO1x0XHQgKiBiZXR3ZWVuIGNodW5rcyBpcyBzYWZlIGFzIG5vIHBhZ2UgdGFibGUgcG9pbnRlciBpcyBoZWxkXG4mIzQzO1x0XHQgKiBhY3Jvc3MgdGhlIGdhcC4gVGhlIG1tYXAgbG9jayBpcyBub3QgaGVsZCwgc28gdXNlIHRoZVxuJiM0MztcdFx0ICogbG9ja2xlc3Mgd2Fsa2VyOyBSQ1UsIG5vdCB0aGUgbG9jaywga2VlcHMgdGhlIHRhYmxlIGFsaXZlLlxuJiM0MztcdFx0ICovXG4mIzQzO1x0XHR3aGlsZSAoYWRkciBcdTAwM2MgZW5kKSB7XG4mIzQzO1x0XHRcdHVuc2lnbmVkIGxvbmcgbmV4dCA9IHBnZF9hZGRyX2VuZChhZGRyLCBlbmQpO1xuJiM0MztcdFx0XHRpbnQgZXJyO1xuJiM0MztcbiYjNDM7XHRcdFx0cmN1X3JlYWRfbG9jaygpO1xuJiM0MztcdFx0XHRlcnIgPSB3YWxrX2tlcm5lbF9wYWdlX3RhYmxlX3JhbmdlX2xvY2tsZXNzKGFkZHIsIG5leHQsIG9wcyxcbiYjNDM7XHRcdFx0XHRcdFx0XHRcdCAgICBwZ2QsIHByaXZhdGUpO1xuJiM0MztcdFx0XHRyY3VfcmVhZF91bmxvY2soKTtcbiYjNDM7XHRcdFx0aWYgKGVycilcbiYjNDM7XHRcdFx0XHRyZXR1cm4gZXJyO1xuJiM0MztcbiYjNDM7XHRcdFx0YWRkciA9IG5leHQ7XG4mIzQzO1x0XHRcdGNvbmRfcmVzY2hlZCgpO1xuJiM0MztcdFx0fVxuJiM0MztcdFx0cmV0dXJuIDA7XG4mIzQzO1x0fVxuJiM0MztcbiBcdGlmIChzdGFydCBcdTAwM2U9IGVuZCB8fCAhd2Fsay5tbSlcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXHRpZiAoIWNoZWNrX29wc19zYWZlKG9wcykpXG5kaWZmIC0tZ2l0IGEvbW0vcGd0YWJsZS1nZW5lcmljLmMgYi9tbS9wZ3RhYmxlLWdlbmVyaWMuY1xuaW5kZXggYjkxYjFhOTgwMjljN2YuLjdhMzJlNDgyMTk1N2NjIDEwMDY0NFxuLS0tIGEvbW0vcGd0YWJsZS1nZW5lcmljLmNcbiYjNDM7JiM0MzsmIzQzOyBiL21tL3BndGFibGUtZ2VuZXJpYy5jXG5AQCAtNDEwLDYgJiM0Mzs0MTAsMTMgQEAgcHRlX3QgKnB0ZV9vZmZzZXRfbWFwX2xvY2soc3RydWN0IG1tX3N0cnVjdCAqbW0sIHBtZF90ICpwbWQsXG4gXHRnb3RvIGFnYWluO1xuIH1cbiBcbiYjNDM7c3RhdGljIHZvaWQga2VybmVsX3BndGFibGVfZnJlZV9yY3Uoc3RydWN0IHJjdV9oZWFkICpoZWFkKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IHB0ZGVzYyAqcHQgPSBjb250YWluZXJfb2YoaGVhZCwgc3RydWN0IHB0ZGVzYywgcHRfcmN1X2hlYWQpO1xuJiM0MztcbiYjNDM7XHRfX3BhZ2V0YWJsZV9mcmVlKHB0KTtcbiYjNDM7fVxuJiM0MztcbiAjaWZkZWYgQ09ORklHX0FTWU5DX0tFUk5FTF9QR1RBQkxFX0ZSRUVcbiBzdGF0aWMgdm9pZCBrZXJuZWxfcGd0YWJsZV93b3JrX2Z1bmMoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKTtcbiBcbkBAIC00MzQsOCAmIzQzOzQ0MSwxNSBAQCBzdGF0aWMgdm9pZCBrZXJuZWxfcGd0YWJsZV93b3JrX2Z1bmMoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuIFx0c3Bpbl91bmxvY2soXHUwMDI2a2VybmVsX3BndGFibGVfd29yay5sb2NrKTtcbiBcbiBcdGlvbW11X3N2YV9pbnZhbGlkYXRlX2t2YV9yYW5nZShQQUdFX09GRlNFVCwgVExCX0ZMVVNIX0FMTCk7XG4mIzQzO1xuJiM0MztcdC8qXG4mIzQzO1x0ICogRGVidWcgd2Fsa2VycyAocHRkdW1wKSBtYXkgd2FsayByYW5nZXMgdGhleSBkbyBub3Qgb3duIGFuZCByYWNlIHRoaXNcbiYjNDM7XHQgKiBmcmVlLCBzbyB0aGV5IHdhbGsgdW5kZXIgcmN1X3JlYWRfbG9jaygpLiBGcmVlIGFmdGVyIGEgZ3JhY2UgcGVyaW9kOlxuJiM0MztcdCAqIGEgd2Fsa2VyIGVpdGhlciBhbHJlYWR5IHNhdyB0aGUgY2xlYXJlZCBQTUQsIG9yIGtlZXBzIHRoZSBwYWdlIGFsaXZlXG4mIzQzO1x0ICogdW50aWwgaXQgZHJvcHMgdGhlIFJDVSBsb2NrLlxuJiM0MztcdCAqL1xuIFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHB0LCBuZXh0LCBcdTAwMjZwYWdlX2xpc3QsIHB0X2xpc3QpXG4tXHRcdF9fcGFnZXRhYmxlX2ZyZWUocHQpO1xuJiM0MztcdFx0Y2FsbF9yY3UoXHUwMDI2cHQtXHUwMDNlcHRfcmN1X2hlYWQsIGtlcm5lbF9wZ3RhYmxlX2ZyZWVfcmN1KTtcbiB9XG4gXG4gdm9pZCBwYWdldGFibGVfZnJlZV9rZXJuZWwoc3RydWN0IHB0ZGVzYyAqcHQpXG5AQCAtNDQ2LDQgJiM0Mzs0NjAsMTAgQEAgdm9pZCBwYWdldGFibGVfZnJlZV9rZXJuZWwoc3RydWN0IHB0ZGVzYyAqcHQpXG4gXG4gXHRzY2hlZHVsZV93b3JrKFx1MDAyNmtlcm5lbF9wZ3RhYmxlX3dvcmsud29yayk7XG4gfVxuJiM0MzsjZWxzZVxuJiM0Mzt2b2lkIHBhZ2V0YWJsZV9mcmVlX2tlcm5lbChzdHJ1Y3QgcHRkZXNjICpwdClcbiYjNDM7e1xuJiM0MztcdC8qIERlZmVyIHRoZSBmcmVlIGJ5IGEgZ3JhY2UgcGVyaW9kOyBzZWUga2VybmVsX3BndGFibGVfd29ya19mdW5jKCkuICovXG4mIzQzO1x0Y2FsbF9yY3UoXHUwMDI2cHQtXHUwMDNlcHRfcmN1X2hlYWQsIGtlcm5lbF9wZ3RhYmxlX2ZyZWVfcmN1KTtcbiYjNDM7fVxuICNlbmRpZlxuZGlmZiAtLWdpdCBhL21tL3B0ZHVtcC5jIGIvbW0vcHRkdW1wLmNcbmluZGV4IDk3MzAyMDAwMDA5NmNmLi41MzdiZTk5OTVlMWEzYyAxMDA2NDRcbi0tLSBhL21tL3B0ZHVtcC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9tbS9wdGR1bXAuY1xuQEAgLTE3NywxMyAmIzQzOzE3NywyMCBAQCB2b2lkIHB0ZHVtcF93YWxrX3BnZChzdHJ1Y3QgcHRkdW1wX3N0YXRlICpzdCwgc3RydWN0IG1tX3N0cnVjdCAqbW0sIHBnZF90ICpwZ2QpXG4gXHRjb25zdCBzdHJ1Y3QgcHRkdW1wX3JhbmdlICpyYW5nZSA9IHN0LVx1MDAzZXJhbmdlO1xuIFxuIFx0Z2V0X29ubGluZV9tZW1zKCk7XG4tXHRtbWFwX3dyaXRlX2xvY2sobW0pO1xuJiM0MztcdC8qXG4mIzQzO1x0ICogaW5pdF9tbSBpcyB3YWxrZWQgbG9ja2xlc3NseSB1bmRlciBSQ1UgYnkgd2Fsa19wYWdlX3JhbmdlX2RlYnVnKCkuXG4mIzQzO1x0ICogZWZpX21tIC8gY3VycmVudC1cdTAwM2VtbSBwYWdlIHRhYmxlcyBhcmUgbm90IFJDVS1mcmVlZCwgc28gaG9sZCB0aGVcbiYjNDM7XHQgKiBtbWFwIHdyaXRlIGxvY2sgdG8ga2VlcCB0aGVtIHN0YWJsZSBhZ2FpbnN0IGNvbmN1cnJlbnQgdGVhcmRvd24uXG4mIzQzO1x0ICovXG4mIzQzO1x0aWYgKG1tICE9IFx1MDAyNmluaXRfbW0pXG4mIzQzO1x0XHRtbWFwX3dyaXRlX2xvY2sobW0pO1xuIFx0d2hpbGUgKHJhbmdlLVx1MDAzZXN0YXJ0ICE9IHJhbmdlLVx1MDAzZWVuZCkge1xuIFx0XHR3YWxrX3BhZ2VfcmFuZ2VfZGVidWcobW0sIHJhbmdlLVx1MDAzZXN0YXJ0LCByYW5nZS1cdTAwM2VlbmQsXG4gXHRcdFx0XHQgICAgICBcdTAwMjZwdGR1bXBfb3BzLCBwZ2QsIHN0KTtcbiBcdFx0cmFuZ2UmIzQzOyYjNDM7O1xuIFx0fVxuLVx0bW1hcF93cml0ZV91bmxvY2sobW0pO1xuJiM0MztcdGlmIChtbSAhPSBcdTAwMjZpbml0X21tKVxuJiM0MztcdFx0bW1hcF93cml0ZV91bmxvY2sobW0pO1xuIFx0cHV0X29ubGluZV9tZW1zKCk7XG4gXG4gXHQvKiBGbHVzaCBvdXQgdGhlIGxhc3QgcGFnZSAqL1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDA2OjIzPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjEwbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtQVERVTVBfREVCVUdGUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3dhbGtfcGFnZV9yYW5nZV9kZWJ1ZyYjMzQ7LAogICAgJiMzNDtwdGR1bXBfd2Fsa19wZ2QmIzM0OywKICAgICYjMzQ7cGFnZXRhYmxlX2ZyZWVfa2VybmVsJiMzNDssCiAgICAmIzM0O2tlcm5lbF9wZ3RhYmxlX2ZyZWVfcmN1JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBrZXJuZWwgcGFnZSB0YWJsZSB3YWxraW5nIGFuZCBmcmVlaW5nIGxvZ2ljLiBJdCBpbnRyb2R1Y2VzIFJDVS1kZWZlcnJlZCBmcmVlaW5nIGZvciBrZXJuZWwgcGFnZSB0YWJsZXMgYW5kIGNoYW5nZXMgdGhlIGRlYnVnIHBhZ2UgdGFibGUgd2Fsa2VyIChwdGR1bXApIHRvIHdhbGsga2VybmVsIHBhZ2UgdGFibGVzIGxvY2tsZXNzbHkgdW5kZXIgUkNVIGluIGJvdW5kZWQgY2h1bmtzLiBUaGlzIGlzIGEgY29yZSBtZW1vcnkgbWFuYWdlbWVudCBjaGFuZ2UgdGhhdCBhZmZlY3RzIGhvdyBrZXJuZWwgcGFnZSB0YWJsZXMgYXJlIHNhZmVseSBhY2Nlc3NlZCBhbmQgZnJlZWQgY29uY3VycmVudGx5LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA0NWUxZTMzYTE3YTNjYzMzNTU4ZWRmM2JmODMxMGFhYmRjOTY3ZGNjCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFR1ZSBKdWwgNyAwNjoyMzowMCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9tbS9wZ3RhYmxlLWZyYWcuYyBiL2FyY2gvcG93ZXJwYy9tbS9wZ3RhYmxlLWZyYWcuYwppbmRleCBhZTc0MjU2NGEzZDU2ZC4uMWUxZTg4ZjgzMWY3NjcgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9tbS9wZ3RhYmxlLWZyYWcuYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3Bvd2VycGMvbW0vcGd0YWJsZS1mcmFnLmMKQEAgLTEyMyw3ICYjNDM7MTIzLDEyIEBAIHZvaWQgcHRlX2ZyYWdtZW50X2ZyZWUodW5zaWduZWQgbG9uZyAqdGFibGUsIGludCBrZXJuZWwpCiAKIAlCVUdfT04oYXRvbWljX3JlYWQoJmFtcDtwdGRlc2MtJmd0O3B0X2ZyYWdfcmVmY291bnQpICZsdDs9IDApOwogCWlmIChhdG9taWNfZGVjX2FuZF90ZXN0KCZhbXA7cHRkZXNjLSZndDtwdF9mcmFnX3JlZmNvdW50KSkgewotCQlpZiAoa2VybmVsIHx8ICFmb2xpb190ZXN0X2NsZWFyX2FjdGl2ZShwdGRlc2NfZm9saW8ocHRkZXNjKSkpCiYjNDM7CQkvKgomIzQzOwkJICogS2VybmVsIHBhZ2UgdGFibGVzIG1heSBiZSB3YWxrZWQgbG9ja2xlc3NseSB1bmRlciBSQ1UgYnkKJiM0MzsJCSAqIHB0ZHVtcCwgc28gZGVmZXIgdGhlaXIgZnJlZSBieSBhIGdyYWNlIHBlcmlvZCB0b28sIGxpa2UgdGhlCiYjNDM7CQkgKiBsb2NrbGVzcy1HVVAgY2FzZSBiZWxvdyBmb3IgdXNlciB0YWJsZXMuCiYjNDM7CQkgKi8KJiM0MzsJCWlmICgha2VybmVsICZhbXA7JmFtcDsgIWZvbGlvX3Rlc3RfY2xlYXJfYWN0aXZlKHB0ZGVzY19mb2xpbyhwdGRlc2MpKSkKIAkJCXB0ZV9mcmVlX25vdygmYW1wO3B0ZGVzYy0mZ3Q7cHRfcmN1X2hlYWQpOwogCQllbHNlCiAJCQljYWxsX3JjdSgmYW1wO3B0ZGVzYy0mZ3Q7cHRfcmN1X2hlYWQsIHB0ZV9mcmVlX25vdyk7CmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L21tLmggYi9pbmNsdWRlL2xpbnV4L21tLmgKaW5kZXggNDg1ZGY5YzJkYmRkYjMuLjc5NDA4YTE3YTFiMGRhIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L21tLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9tbS5oCkBAIC0zNjk1LDE0ICYjNDM7MzY5NSw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBfX3BhZ2V0YWJsZV9mcmVlKHN0cnVjdCBwdGRlc2MgKnB0KQogCV9fZnJlZV9wYWdlcyhwYWdlLCBjb21wb3VuZF9vcmRlcihwYWdlKSk7CiB9CiAKLSNpZmRlZiBDT05GSUdfQVNZTkNfS0VSTkVMX1BHVEFCTEVfRlJFRQogdm9pZCBwYWdldGFibGVfZnJlZV9rZXJuZWwoc3RydWN0IHB0ZGVzYyAqcHQpOwotI2Vsc2UKLXN0YXRpYyBpbmxpbmUgdm9pZCBwYWdldGFibGVfZnJlZV9rZXJuZWwoc3RydWN0IHB0ZGVzYyAqcHQpCi17Ci0JX19wYWdldGFibGVfZnJlZShwdCk7Ci19Ci0jZW5kaWYKIC8qKgogICogcGFnZXRhYmxlX2ZyZWUgLSBGcmVlIHBhZ2V0YWJsZXMKICAqIEBwdDoJVGhlIHBhZ2UgdGFibGUgZGVzY3JpcHRvcgpkaWZmIC0tZ2l0IGEvbW0vcGFnZXdhbGsuYyBiL21tL3BhZ2V3YWxrLmMKaW5kZXggM2FlMjU4NmZmNDViNDQuLmZjMmZlMDE0YWM4YzY4IDEwMDY0NAotLS0gYS9tbS9wYWdld2Fsay5jCiYjNDM7JiM0MzsmIzQzOyBiL21tL3BhZ2V3YWxrLmMKQEAgLTYyMCw3ICYjNDM7NjIwLDcgQEAgaW50IHdhbGtfcGFnZV9yYW5nZShzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5zaWduZWQgbG9uZyBzdGFydCwKICAqIE5vdGU6IEJlIGNhcmVmdWwgdG8gd2FsayB0aGUga2VybmVsIHBhZ2VzIHRhYmxlcywgdGhlIGNhbGxlciBtYXkgYmUgbmVlZCB0bwogICogdGFrZSBvdGhlciBlZmZlY3RpdmUgYXBwcm9hY2hlcyAobW1hcCBsb2NrIG1heSBiZSBpbnN1ZmZpY2llbnQpIHRvIHByZXZlbnQKICAqIHRoZSBpbnRlcm1lZGlhdGUga2VybmVsIHBhZ2UgdGFibGVzIGJlbG9uZ2luZyB0byB0aGUgc3BlY2lmaWVkIGFkZHJlc3MgcmFuZ2UKLSAqIGZyb20gYmVpbmcgZnJlZWQgKGUuZy4gbWVtb3J5IGhvdC1yZW1vdmUpLgomIzQzOyAqIGZyb20gYmVpbmcgZnJlZWQgKGUuZy4gbWVtb3J5IGhvdC1yZW1vdmUsIHZtYXAgaHVnZSBwYWdlIHByb21vdGlvbikuCiAgKi8KIGludCB3YWxrX2tlcm5lbF9wYWdlX3RhYmxlX3JhbmdlKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kLAogCQljb25zdCBzdHJ1Y3QgbW1fd2Fsa19vcHMgKm9wcywgcGdkX3QgKnBnZCwgdm9pZCAqcHJpdmF0ZSkKQEAgLTY0Myw3ICYjNDM7NjQzLDcgQEAgaW50IHdhbGtfa2VybmVsX3BhZ2VfdGFibGVfcmFuZ2UodW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQsCiAgKiBVc2UgdGhpcyBmdW5jdGlvbiB0byB3YWxrIHRoZSBrZXJuZWwgcGFnZSB0YWJsZXMgbG9ja2xlc3NseS4gSXQgc2hvdWxkIGJlCiAgKiBndWFyYW50ZWVkIHRoYXQgdGhlIGNhbGxlciBoYXMgZXhjbHVzaXZlIGFjY2VzcyBvdmVyIHRoZSByYW5nZSB0aGV5IGFyZQogICogb3BlcmF0aW5nIG9uIC0gdGhhdCB0aGVyZSBzaG91bGQgYmUgbm8gY29uY3VycmVudCBhY2Nlc3MsIGZvciBleGFtcGxlLAotICogY2hhbmdpbmcgcGVybWlzc2lvbnMgZm9yIHZtYWxsb2Mgb2JqZWN0cy4KJiM0MzsgKiBjaGFuZ2luZyBwZXJtaXNzaW9ucyBmb3Igdm1hbGxvYyBvYmplY3RzLCBvciB2bWFwIGh1Z2UgcGFnZSBwcm9tb3Rpb24uCiAgKi8KIGludCB3YWxrX2tlcm5lbF9wYWdlX3RhYmxlX3JhbmdlX2xvY2tsZXNzKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kLAogCQljb25zdCBzdHJ1Y3QgbW1fd2Fsa19vcHMgKm9wcywgcGdkX3QgKnBnZCwgdm9pZCAqcHJpdmF0ZSkKQEAgLTY5Miw5ICYjNDM7NjkyLDM1IEBAIGludCB3YWxrX3BhZ2VfcmFuZ2VfZGVidWcoc3RydWN0IG1tX3N0cnVjdCAqbW0sIHVuc2lnbmVkIGxvbmcgc3RhcnQsCiAJfTsKIAogCS8qIEZvciBjb252ZW5pZW5jZSwgd2UgYWxsb3cgdHJhdmVyc2FsIG9mIGtlcm5lbCBtYXBwaW5ncy4gKi8KLQlpZiAobW0gPT0gJmFtcDtpbml0X21tKQotCQlyZXR1cm4gd2Fsa19rZXJuZWxfcGFnZV90YWJsZV9yYW5nZShzdGFydCwgZW5kLCBvcHMsCi0JCQkJCQkgICAgcGdkLCBwcml2YXRlKTsKJiM0MzsJaWYgKG1tID09ICZhbXA7aW5pdF9tbSkgewomIzQzOwkJdW5zaWduZWQgbG9uZyBhZGRyID0gc3RhcnQ7CiYjNDM7CiYjNDM7CQkvKgomIzQzOwkJICogV2FsayBpbiBib3VuZGVkIGNodW5rcyBzbyB0aGUgUkNVIHJlYWQgbG9jayBpcyBuZXZlciBoZWxkCiYjNDM7CQkgKiBhY3Jvc3MgdGhlIHdob2xlIGtlcm5lbCBhZGRyZXNzIHNwYWNlLiAgQSBrZXJuZWwgcGFnZSB0YWJsZQomIzQzOwkJICogZnJlZWQgdmlhIHBhZ2V0YWJsZV9mcmVlX2tlcm5lbCgpIHN0YXlzIHZhbGlkIHVudGlsIHRoZSB3YWxrCiYjNDM7CQkgKiB0aGF0IG1heSBoYXZlIG9ic2VydmVkIGl0IGRyb3BzIHRoZSBsb2NrOyByZWxlYXNpbmcgdGhlIGxvY2sKJiM0MzsJCSAqIGJldHdlZW4gY2h1bmtzIGlzIHNhZmUgYXMgbm8gcGFnZSB0YWJsZSBwb2ludGVyIGlzIGhlbGQKJiM0MzsJCSAqIGFjcm9zcyB0aGUgZ2FwLiBUaGUgbW1hcCBsb2NrIGlzIG5vdCBoZWxkLCBzbyB1c2UgdGhlCiYjNDM7CQkgKiBsb2NrbGVzcyB3YWxrZXI7IFJDVSwgbm90IHRoZSBsb2NrLCBrZWVwcyB0aGUgdGFibGUgYWxpdmUuCiYjNDM7CQkgKi8KJiM0MzsJCXdoaWxlIChhZGRyICZsdDsgZW5kKSB7CiYjNDM7CQkJdW5zaWduZWQgbG9uZyBuZXh0ID0gcGdkX2FkZHJfZW5kKGFkZHIsIGVuZCk7CiYjNDM7CQkJaW50IGVycjsKJiM0MzsKJiM0MzsJCQlyY3VfcmVhZF9sb2NrKCk7CiYjNDM7CQkJZXJyID0gd2Fsa19rZXJuZWxfcGFnZV90YWJsZV9yYW5nZV9sb2NrbGVzcyhhZGRyLCBuZXh0LCBvcHMsCiYjNDM7CQkJCQkJCQkgICAgcGdkLCBwcml2YXRlKTsKJiM0MzsJCQlyY3VfcmVhZF91bmxvY2soKTsKJiM0MzsJCQlpZiAoZXJyKQomIzQzOwkJCQlyZXR1cm4gZXJyOwomIzQzOwomIzQzOwkJCWFkZHIgPSBuZXh0OwomIzQzOwkJCWNvbmRfcmVzY2hlZCgpOwomIzQzOwkJfQomIzQzOwkJcmV0dXJuIDA7CiYjNDM7CX0KJiM0MzsKIAlpZiAoc3RhcnQgJmd0Oz0gZW5kIHx8ICF3YWxrLm1tKQogCQlyZXR1cm4gLUVJTlZBTDsKIAlpZiAoIWNoZWNrX29wc19zYWZlKG9wcykpCmRpZmYgLS1naXQgYS9tbS9wZ3RhYmxlLWdlbmVyaWMuYyBiL21tL3BndGFibGUtZ2VuZXJpYy5jCmluZGV4IGI5MWIxYTk4MDI5YzdmLi43YTMyZTQ4MjE5NTdjYyAxMDA2NDQKLS0tIGEvbW0vcGd0YWJsZS1nZW5lcmljLmMKJiM0MzsmIzQzOyYjNDM7IGIvbW0vcGd0YWJsZS1nZW5lcmljLmMKQEAgLTQxMCw2ICYjNDM7NDEwLDEzIEBAIHB0ZV90ICpwdGVfb2Zmc2V0X21hcF9sb2NrKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCBwbWRfdCAqcG1kLAogCWdvdG8gYWdhaW47CiB9CiAKJiM0MztzdGF0aWMgdm9pZCBrZXJuZWxfcGd0YWJsZV9mcmVlX3JjdShzdHJ1Y3QgcmN1X2hlYWQgKmhlYWQpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgcHRkZXNjICpwdCA9IGNvbnRhaW5lcl9vZihoZWFkLCBzdHJ1Y3QgcHRkZXNjLCBwdF9yY3VfaGVhZCk7CiYjNDM7CiYjNDM7CV9fcGFnZXRhYmxlX2ZyZWUocHQpOwomIzQzO30KJiM0MzsKICNpZmRlZiBDT05GSUdfQVNZTkNfS0VSTkVMX1BHVEFCTEVfRlJFRQogc3RhdGljIHZvaWQga2VybmVsX3BndGFibGVfd29ya19mdW5jKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yayk7CiAKQEAgLTQzNCw4ICYjNDM7NDQxLDE1IEBAIHN0YXRpYyB2b2lkIGtlcm5lbF9wZ3RhYmxlX3dvcmtfZnVuYyhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCiAJc3Bpbl91bmxvY2soJmFtcDtrZXJuZWxfcGd0YWJsZV93b3JrLmxvY2spOwogCiAJaW9tbXVfc3ZhX2ludmFsaWRhdGVfa3ZhX3JhbmdlKFBBR0VfT0ZGU0VULCBUTEJfRkxVU0hfQUxMKTsKJiM0MzsKJiM0MzsJLyoKJiM0MzsJICogRGVidWcgd2Fsa2VycyAocHRkdW1wKSBtYXkgd2FsayByYW5nZXMgdGhleSBkbyBub3Qgb3duIGFuZCByYWNlIHRoaXMKJiM0MzsJICogZnJlZSwgc28gdGhleSB3YWxrIHVuZGVyIHJjdV9yZWFkX2xvY2soKS4gRnJlZSBhZnRlciBhIGdyYWNlIHBlcmlvZDoKJiM0MzsJICogYSB3YWxrZXIgZWl0aGVyIGFscmVhZHkgc2F3IHRoZSBjbGVhcmVkIFBNRCwgb3Iga2VlcHMgdGhlIHBhZ2UgYWxpdmUKJiM0MzsJICogdW50aWwgaXQgZHJvcHMgdGhlIFJDVSBsb2NrLgomIzQzOwkgKi8KIAlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUocHQsIG5leHQsICZhbXA7cGFnZV9saXN0LCBwdF9saXN0KQotCQlfX3BhZ2V0YWJsZV9mcmVlKHB0KTsKJiM0MzsJCWNhbGxfcmN1KCZhbXA7cHQtJmd0O3B0X3JjdV9oZWFkLCBrZXJuZWxfcGd0YWJsZV9mcmVlX3JjdSk7CiB9CiAKIHZvaWQgcGFnZXRhYmxlX2ZyZWVfa2VybmVsKHN0cnVjdCBwdGRlc2MgKnB0KQpAQCAtNDQ2LDQgJiM0Mzs0NjAsMTAgQEAgdm9pZCBwYWdldGFibGVfZnJlZV9rZXJuZWwoc3RydWN0IHB0ZGVzYyAqcHQpCiAKIAlzY2hlZHVsZV93b3JrKCZhbXA7a2VybmVsX3BndGFibGVfd29yay53b3JrKTsKIH0KJiM0MzsjZWxzZQomIzQzO3ZvaWQgcGFnZXRhYmxlX2ZyZWVfa2VybmVsKHN0cnVjdCBwdGRlc2MgKnB0KQomIzQzO3sKJiM0MzsJLyogRGVmZXIgdGhlIGZyZWUgYnkgYSBncmFjZSBwZXJpb2Q7IHNlZSBrZXJuZWxfcGd0YWJsZV93b3JrX2Z1bmMoKS4gKi8KJiM0MzsJY2FsbF9yY3UoJmFtcDtwdC0mZ3Q7cHRfcmN1X2hlYWQsIGtlcm5lbF9wZ3RhYmxlX2ZyZWVfcmN1KTsKJiM0Mzt9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL21tL3B0ZHVtcC5jIGIvbW0vcHRkdW1wLmMKaW5kZXggOTczMDIwMDAwMDk2Y2YuLjUzN2JlOTk5NWUxYTNjIDEwMDY0NAotLS0gYS9tbS9wdGR1bXAuYwomIzQzOyYjNDM7JiM0MzsgYi9tbS9wdGR1bXAuYwpAQCAtMTc3LDEzICYjNDM7MTc3LDIwIEBAIHZvaWQgcHRkdW1wX3dhbGtfcGdkKHN0cnVjdCBwdGR1bXBfc3RhdGUgKnN0LCBzdHJ1Y3QgbW1fc3RydWN0ICptbSwgcGdkX3QgKnBnZCkKIAljb25zdCBzdHJ1Y3QgcHRkdW1wX3JhbmdlICpyYW5nZSA9IHN0LSZndDtyYW5nZTsKIAogCWdldF9vbmxpbmVfbWVtcygpOwotCW1tYXBfd3JpdGVfbG9jayhtbSk7CiYjNDM7CS8qCiYjNDM7CSAqIGluaXRfbW0gaXMgd2Fsa2VkIGxvY2tsZXNzbHkgdW5kZXIgUkNVIGJ5IHdhbGtfcGFnZV9yYW5nZV9kZWJ1ZygpLgomIzQzOwkgKiBlZmlfbW0gLyBjdXJyZW50LSZndDttbSBwYWdlIHRhYmxlcyBhcmUgbm90IFJDVS1mcmVlZCwgc28gaG9sZCB0aGUKJiM0MzsJICogbW1hcCB3cml0ZSBsb2NrIHRvIGtlZXAgdGhlbSBzdGFibGUgYWdhaW5zdCBjb25jdXJyZW50IHRlYXJkb3duLgomIzQzOwkgKi8KJiM0MzsJaWYgKG1tICE9ICZhbXA7aW5pdF9tbSkKJiM0MzsJCW1tYXBfd3JpdGVfbG9jayhtbSk7CiAJd2hpbGUgKHJhbmdlLSZndDtzdGFydCAhPSByYW5nZS0mZ3Q7ZW5kKSB7CiAJCXdhbGtfcGFnZV9yYW5nZV9kZWJ1ZyhtbSwgcmFuZ2UtJmd0O3N0YXJ0LCByYW5nZS0mZ3Q7ZW5kLAogCQkJCSAgICAgICZhbXA7cHRkdW1wX29wcywgcGdkLCBzdCk7CiAJCXJhbmdlJiM0MzsmIzQzOzsKIAl9Ci0JbW1hcF93cml0ZV91bmxvY2sobW0pOwomIzQzOwlpZiAobW0gIT0gJmFtcDtpbml0X21tKQomIzQzOwkJbW1hcF93cml0ZV91bmxvY2sobW0pOwogCXB1dF9vbmxpbmVfbWVtcygpOwogCiAJLyogRmx1c2ggb3V0IHRoZSBsYXN0IHBhZ2UgKi8KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMDY6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDAyMgoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDMzMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBGdXp6aW5nIFN0cmF0ZWd5OiBLZXJuZWwgUGFnZSBUYWJsZSBNb2RpZmljYXRpb25zKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoLiBJdCYjMzk7cyBhIHNpZ25pZmljYW50IG9uZSwgdG91Y2hpbmcgdGhlIHZlcnkgY29yZSBvZiBob3cgdGhlIGtlcm5lbCBtYW5hZ2VzIG1lbW9yeSwgc3BlY2lmaWNhbGx5IHBhZ2UgdGFibGUgd2Fsa2luZyBhbmQgZnJlZWluZy4gV2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQgY2hhbmdlcyB0byBgd2Fsa19wYWdlX3JhbmdlX2RlYnVnYCBpbiBgbW0vcGFnZXdhbGsuY2AsIG1ha2luZyBpdCBsb2NrbGVzcyB1bmRlciBSQ1Ugd2hpbGUgd2Fsa2luZyBrZXJuZWwgcGFnZSB0YWJsZXMuIFRoZW4gdGhlcmUmIzM5O3MgYHBhZ2V0YWJsZV9mcmVlX2tlcm5lbGAgaW4gYG1tL3BndGFibGUtZ2VuZXJpYy5jYCwgbm93IHVzaW5nIGBjYWxsX3JjdWAgZm9yIGtlcm5lbCBwYWdlIHRhYmxlIGZyZWVpbmcuIEFuZCBpbiB0aGUgUG93ZXJQQyBhcmNoaXRlY3R1cmUgc3BlY2lmaWNhbGx5IChhcmNoL3Bvd2VycGMvbW0vcGd0YWJsZS1mcmFnLmMpLCB0aGVyZSYjMzk7cyBhIGRlbGF5IGludHJvZHVjZWQsIGRlZmVycmluZyB0aGUgZnJlZWluZyBvZiB0aG9zZSBrZXJuZWwgcGFnZSB0YWJsZXMgYnkgYSBncmFjZSBwZXJpb2QuIEZpbmFsbHksIHRvIG1ha2UgdGhpcyBldmVuIG1vcmUgaW50ZXJlc3RpbmcsIGBtbS9wdGR1bXAuY2AgYXZvaWRzIGdyYWJiaW5nIHRoZSBgbW1hcF93cml0ZV9sb2NrYCBpZiBgbW1gIHBvaW50cyB0byBgJmFtcDtpbml0X21tYC4KCkdpdmVuIHRoZSBwb3RlbnRpYWwgaW1wYWN0LCBmdXp6aW5nIGlzIGFic29sdXRlbHkgZXNzZW50aWFsIGhlcmUuIEl0JiMzOTtzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIHNvIGl0JiMzOTtzIGEgcHJpbWUgdGFyZ2V0LiBUaW1lIHRvIGlkZW50aWZ5IHRoZSBrZXkgZnVuY3Rpb25zIHRvIGZvY3VzIG9uLgoKU28sIGxldCYjMzk7cyBzZWUsIHRoZSBwYXRjaCBtb2RpZmllZDoKCiogICBgd2Fsa19wYWdlX3JhbmdlX2RlYnVnYAoqICAgYGtlcm5lbF9wZ3RhYmxlX3dvcmtfZnVuY2AKKiAgIGBwYWdldGFibGVfZnJlZV9rZXJuZWxgCiogICBgcHRkdW1wX3dhbGtfcGdkYAoqICAgYHB0ZV9mcmFnbWVudF9mcmVlYCAoUG93ZXJQQyBzcGVjaWZpYykKCkkmIzM5O2xsIHN0YXJ0IHdpdGggYHdhbGtfcGFnZV9yYW5nZV9kZWJ1Z2AuIEl0JiMzOTtzIHVzZWQgYnkgYHB0ZHVtcF93YWxrX3BnZGAuIGBwdGR1bXBfd2Fsa19wZ2RgIGlzIHVzZWQgYnkgdGhlIGBwdGR1bXBgIGRyaXZlcnMsIHdoaWNoLCBpZiBtZW1vcnkgc2VydmVzLCBhcmUgcmVsYXRlZCB0byBgZGVidWdmc2AgZmlsZXMgZm9yIHBhZ2UgdGFibGVzLiBIbW0uIExvb2tzIGxpa2UgSSBzaG91bGQgZmluZCBhbGwgdGhlIGNhbGxlcnMgdG8gYHB0ZHVtcF93YWxrX3BnZGAgdG8gc3RhcnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMDY6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cHRkdW1wX3dhbGtfcGdkJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvYXJtL2luY2x1ZGUvYXNtL3B0ZHVtcC5oPTE2PXN0cnVjdCBwdGR1bXBfaW5mbyB7XG4tLVxuYXJjaC9hcm0vaW5jbHVkZS9hc20vcHRkdW1wLmgtMjEtXG5hcmNoL2FybS9pbmNsdWRlL2FzbS9wdGR1bXAuaDoyMjp2b2lkIHB0ZHVtcF93YWxrX3BnZChzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHN0cnVjdCBwdGR1bXBfaW5mbyAqaW5mbyk7XG5hcmNoL2FybS9pbmNsdWRlL2FzbS9wdGR1bXAuaC0yMy0jaWZkZWYgQ09ORklHX0FSTV9QVERVTVBfREVCVUdGU1xuLS1cbmFyY2gvYXJtL21tL2R1bXAuYz0zOTg9c3RhdGljIHZvaWQgd2Fsa19wZ2Qoc3RydWN0IHBnX3N0YXRlICpzdCwgc3RydWN0IG1tX3N0cnVjdCAqbW0sXG4tLVxuYXJjaC9hcm0vbW0vZHVtcC5jLTQxNC1cbmFyY2gvYXJtL21tL2R1bXAuYzo0MTU6dm9pZCBwdGR1bXBfd2Fsa19wZ2Qoc3RydWN0IHNlcV9maWxlICptLCBzdHJ1Y3QgcHRkdW1wX2luZm8gKmluZm8pXG5hcmNoL2FybS9tbS9kdW1wLmMtNDE2LXtcbi0tXG5hcmNoL2FybS9tbS9wdGR1bXBfZGVidWdmcy5jPTc9c3RhdGljIGludCBwdGR1bXBfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnYpXG4tLVxuYXJjaC9hcm0vbW0vcHRkdW1wX2RlYnVnZnMuYy0xMC1cbmFyY2gvYXJtL21tL3B0ZHVtcF9kZWJ1Z2ZzLmM6MTE6XHRwdGR1bXBfd2Fsa19wZ2QobSwgaW5mbyk7XG5hcmNoL2FybS9tbS9wdGR1bXBfZGVidWdmcy5jLTEyLVx0cmV0dXJuIDA7XG4tLVxuYXJjaC9hcm02NC9tbS9wdGR1bXAuYz0yNzk9dm9pZCBub3RlX3BhZ2VfZmx1c2goc3RydWN0IHB0ZHVtcF9zdGF0ZSAqcHRfc3QpXG4tLVxuYXJjaC9hcm02NC9tbS9wdGR1bXAuYy0yODUtXG5hcmNoL2FybTY0L21tL3B0ZHVtcC5jOjI4NjpzdGF0aWMgdm9pZCBhcm02NF9wdGR1bXBfd2Fsa19wZ2Qoc3RydWN0IHB0ZHVtcF9zdGF0ZSAqc3QsIHN0cnVjdCBtbV9zdHJ1Y3QgKm1tKVxuYXJjaC9hcm02NC9tbS9wdGR1bXAuYy0yODcte1xuYXJjaC9hcm02NC9tbS9wdGR1bXAuYy0yODgtXHRzdGF0aWNfYnJhbmNoX2luYyhcdTAwMjZhcm02NF9wdGR1bXBfbG9ja19rZXkpO1xuYXJjaC9hcm02NC9tbS9wdGR1bXAuYzoyODk6XHRwdGR1bXBfd2Fsa19wZ2Qoc3QsIG1tLCBOVUxMKTtcbmFyY2gvYXJtNjQvbW0vcHRkdW1wLmMtMjkwLVx0c3RhdGljX2JyYW5jaF9kZWMoXHUwMDI2YXJtNjRfcHRkdW1wX2xvY2tfa2V5KTtcbi0tXG5hcmNoL2FybTY0L21tL3B0ZHVtcC5jPTI5Mz12b2lkIHB0ZHVtcF93YWxrKHN0cnVjdCBzZXFfZmlsZSAqcywgc3RydWN0IHB0ZHVtcF9pbmZvICppbmZvKVxuLS1cbmFyY2gvYXJtNjQvbW0vcHRkdW1wLmMtMzIwLVxuYXJjaC9hcm02NC9tbS9wdGR1bXAuYzozMjE6XHRhcm02NF9wdGR1bXBfd2Fsa19wZ2QoXHUwMDI2c3QucHRkdW1wLCBpbmZvLVx1MDAzZW1tKTtcbmFyY2gvYXJtNjQvbW0vcHRkdW1wLmMtMzIyLX1cbi0tXG5hcmNoL2FybTY0L21tL3B0ZHVtcC5jPTMzOD1ib29sIHB0ZHVtcF9jaGVja193eCh2b2lkKVxuLS1cbmFyY2gvYXJtNjQvbW0vcHRkdW1wLmMtMzYyLVxuYXJjaC9hcm02NC9tbS9wdGR1bXAuYzozNjM6XHRhcm02NF9wdGR1bXBfd2Fsa19wZ2QoXHUwMDI2c3QucHRkdW1wLCBcdTAwMjZpbml0X21tKTtcbmFyY2gvYXJtNjQvbW0vcHRkdW1wLmMtMzY0LVxuLS1cbmFyY2gvcG93ZXJwYy9tbS9wdGR1bXAvcHRkdW1wLmM9MzM0PXN0YXRpYyBpbnQgcHRkdW1wX3Nob3coc3RydWN0IHNlcV9maWxlICptLCB2b2lkICp2KVxuLS1cbmFyY2gvcG93ZXJwYy9tbS9wdGR1bXAvcHRkdW1wLmMtMzUxLVx0LyogVHJhdmVyc2Uga2VybmVsIHBhZ2UgdGFibGVzICovXG5hcmNoL3Bvd2VycGMvbW0vcHRkdW1wL3B0ZHVtcC5jOjM1MjpcdHB0ZHVtcF93YWxrX3BnZChcdTAwMjZzdC5wdGR1bXAsIFx1MDAyNmluaXRfbW0sIE5VTEwpO1xuYXJjaC9wb3dlcnBjL21tL3B0ZHVtcC9wdGR1bXAuYy0zNTMtXHRyZXR1cm4gMDtcbi0tXG5hcmNoL3Bvd2VycGMvbW0vcHRkdW1wL3B0ZHVtcC5jPTM2OD1ib29sIHB0ZHVtcF9jaGVja193eCh2b2lkKVxuLS1cbmFyY2gvcG93ZXJwYy9tbS9wdGR1bXAvcHRkdW1wLmMtMzkxLVxuYXJjaC9wb3dlcnBjL21tL3B0ZHVtcC9wdGR1bXAuYzozOTI6XHRwdGR1bXBfd2Fsa19wZ2QoXHUwMDI2c3QucHRkdW1wLCBcdTAwMjZpbml0X21tLCBOVUxMKTtcbmFyY2gvcG93ZXJwYy9tbS9wdGR1bXAvcHRkdW1wLmMtMzkzLVxuLS1cbmFyY2gvcmlzY3YvbW0vcHRkdW1wLmM9MzUzPXN0YXRpYyB2b2lkIHB0ZHVtcF93YWxrKHN0cnVjdCBzZXFfZmlsZSAqcywgc3RydWN0IHB0ZF9tbV9pbmZvICpwaW5mbylcbi0tXG5hcmNoL3Jpc2N2L21tL3B0ZHVtcC5jLTM3Mi1cbmFyY2gvcmlzY3YvbW0vcHRkdW1wLmM6MzczOlx0cHRkdW1wX3dhbGtfcGdkKFx1MDAyNnN0LnB0ZHVtcCwgcGluZm8tXHUwMDNlbW0sIE5VTEwpO1xuYXJjaC9yaXNjdi9tbS9wdGR1bXAuYy0zNzQtfVxuLS1cbmFyY2gvcmlzY3YvbW0vcHRkdW1wLmM9Mzc2PWJvb2wgcHRkdW1wX2NoZWNrX3d4KHZvaWQpXG4tLVxuYXJjaC9yaXNjdi9tbS9wdGR1bXAuYy0zOTktXG5hcmNoL3Jpc2N2L21tL3B0ZHVtcC5jOjQwMDpcdHB0ZHVtcF93YWxrX3BnZChcdTAwMjZzdC5wdGR1bXAsIFx1MDAyNmluaXRfbW0sIE5VTEwpO1xuYXJjaC9yaXNjdi9tbS9wdGR1bXAuYy00MDEtXG4tLVxuYXJjaC9zMzkwL21tL2R1bXBfcGFnZXRhYmxlcy5jPTE4Mj1ib29sIHB0ZHVtcF9jaGVja193eCh2b2lkKVxuLS1cbmFyY2gvczM5MC9tbS9kdW1wX3BhZ2V0YWJsZXMuYy0yMTAtXHRcdHJldHVybiB0cnVlO1xuYXJjaC9zMzkwL21tL2R1bXBfcGFnZXRhYmxlcy5jOjIxMTpcdHB0ZHVtcF93YWxrX3BnZChcdTAwMjZzdC5wdGR1bXAsIFx1MDAyNmluaXRfbW0sIE5VTEwpO1xuYXJjaC9zMzkwL21tL2R1bXBfcGFnZXRhYmxlcy5jLTIxMi1cdGlmIChzdC53eF9wYWdlcykge1xuLS1cbmFyY2gvczM5MC9tbS9kdW1wX3BhZ2V0YWJsZXMuYz0yMjY9c3RhdGljIGludCBwdGR1bXBfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnYpXG4tLVxuYXJjaC9zMzkwL21tL2R1bXBfcGFnZXRhYmxlcy5jLTI1MC1cdG11dGV4X2xvY2soXHUwMDI2Y3BhX211dGV4KTtcbmFyY2gvczM5MC9tbS9kdW1wX3BhZ2V0YWJsZXMuYzoyNTE6XHRwdGR1bXBfd2Fsa19wZ2QoXHUwMDI2c3QucHRkdW1wLCBcdTAwMjZpbml0X21tLCBOVUxMKTtcbmFyY2gvczM5MC9tbS9kdW1wX3BhZ2V0YWJsZXMuYy0yNTItXHRtdXRleF91bmxvY2soXHUwMDI2Y3BhX211dGV4KTtcbi0tXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wZ3RhYmxlLmg9MzA9c3RydWN0IHNlcV9maWxlO1xuYXJjaC94ODYvaW5jbHVkZS9hc20vcGd0YWJsZS5oOjMxOnZvaWQgcHRkdW1wX3dhbGtfcGdkX2xldmVsKHN0cnVjdCBzZXFfZmlsZSAqbSwgc3RydWN0IG1tX3N0cnVjdCAqbW0pO1xuYXJjaC94ODYvaW5jbHVkZS9hc20vcGd0YWJsZS5oOjMyOnZvaWQgcHRkdW1wX3dhbGtfcGdkX2xldmVsX2RlYnVnZnMoc3RydWN0IHNlcV9maWxlICptLCBzdHJ1Y3QgbW1fc3RydWN0ICptbSxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL3BndGFibGUuaC0zMy1cdFx0XHRcdCAgIGJvb2wgdXNlcik7XG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wZ3RhYmxlLmg6MzQ6Ym9vbCBwdGR1bXBfd2Fsa19wZ2RfbGV2ZWxfY2hlY2t3eCh2b2lkKTtcbmFyY2gveDg2L2luY2x1ZGUvYXNtL3BndGFibGUuaDozNTojZGVmaW5lIHB0ZHVtcF9jaGVja193eCBwdGR1bXBfd2Fsa19wZ2RfbGV2ZWxfY2hlY2t3eFxuYXJjaC94ODYvaW5jbHVkZS9hc20vcGd0YWJsZS5oLTM2LXZvaWQgcHRkdW1wX3dhbGtfdXNlcl9wZ2RfbGV2ZWxfY2hlY2t3eCh2b2lkKTtcbi0tXG5hcmNoL3g4Ni9tbS9kZWJ1Z19wYWdldGFibGVzLmM9OD1zdGF0aWMgaW50IHB0ZHVtcF9zaG93KHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdilcbmFyY2gveDg2L21tL2RlYnVnX3BhZ2V0YWJsZXMuYy05LXtcbmFyY2gveDg2L21tL2RlYnVnX3BhZ2V0YWJsZXMuYzoxMDpcdHB0ZHVtcF93YWxrX3BnZF9sZXZlbF9kZWJ1Z2ZzKG0sIFx1MDAyNmluaXRfbW0sIGZhbHNlKTtcbmFyY2gveDg2L21tL2RlYnVnX3BhZ2V0YWJsZXMuYy0xMS1cdHJldHVybiAwO1xuLS1cbmFyY2gveDg2L21tL2RlYnVnX3BhZ2V0YWJsZXMuYz0xNj1zdGF0aWMgaW50IHB0ZHVtcF9jdXJrbmxfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnYpXG4tLVxuYXJjaC94ODYvbW0vZGVidWdfcGFnZXRhYmxlcy5jLTE4LVx0aWYgKGN1cnJlbnQtXHUwMDNlbW0tXHUwMDNlcGdkKVxuYXJjaC94ODYvbW0vZGVidWdfcGFnZXRhYmxlcy5jOjE5Olx0XHRwdGR1bXBfd2Fsa19wZ2RfbGV2ZWxfZGVidWdmcyhtLCBjdXJyZW50LVx1MDAzZW1tLCBmYWxzZSk7XG5hcmNoL3g4Ni9tbS9kZWJ1Z19wYWdldGFibGVzLmMtMjAtXHRyZXR1cm4gMDtcbi0tXG5hcmNoL3g4Ni9tbS9kZWJ1Z19wYWdldGFibGVzLmM9MjY9c3RhdGljIGludCBwdGR1bXBfY3VydXNyX3Nob3coc3RydWN0IHNlcV9maWxlICptLCB2b2lkICp2KVxuLS1cbmFyY2gveDg2L21tL2RlYnVnX3BhZ2V0YWJsZXMuYy0yOC1cdGlmIChjdXJyZW50LVx1MDAzZW1tLVx1MDAzZXBnZClcbmFyY2gveDg2L21tL2RlYnVnX3BhZ2V0YWJsZXMuYzoyOTpcdFx0cHRkdW1wX3dhbGtfcGdkX2xldmVsX2RlYnVnZnMobSwgY3VycmVudC1cdTAwM2VtbSwgdHJ1ZSk7XG5hcmNoL3g4Ni9tbS9kZWJ1Z19wYWdldGFibGVzLmMtMzAtXHRyZXR1cm4gMDtcbi0tXG5hcmNoL3g4Ni9tbS9kZWJ1Z19wYWdldGFibGVzLmM9Mzc9c3RhdGljIGludCBwdGR1bXBfZWZpX3Nob3coc3RydWN0IHNlcV9maWxlICptLCB2b2lkICp2KVxuLS1cbmFyY2gveDg2L21tL2RlYnVnX3BhZ2V0YWJsZXMuYy0zOS1cdGlmIChlZmlfbW0ucGdkKVxuYXJjaC94ODYvbW0vZGVidWdfcGFnZXRhYmxlcy5jOjQwOlx0XHRwdGR1bXBfd2Fsa19wZ2RfbGV2ZWxfZGVidWdmcyhtLCBcdTAwMjZlZmlfbW0sIGZhbHNlKTtcbmFyY2gveDg2L21tL2RlYnVnX3BhZ2V0YWJsZXMuYy00MS1cdHJldHVybiAwO1xuLS1cbmFyY2gveDg2L21tL2R1bXBfcGFnZXRhYmxlcy5jPTQxNj1zdGF0aWMgdm9pZCBub3RlX3BhZ2VfZmx1c2goc3RydWN0IHB0ZHVtcF9zdGF0ZSAqcHRfc3QpXG4tLVxuYXJjaC94ODYvbW0vZHVtcF9wYWdldGFibGVzLmMtNDIyLVxuYXJjaC94ODYvbW0vZHVtcF9wYWdldGFibGVzLmM6NDIzOmJvb2wgcHRkdW1wX3dhbGtfcGdkX2xldmVsX2NvcmUoc3RydWN0IHNlcV9maWxlICptLFxuYXJjaC94ODYvbW0vZHVtcF9wYWdldGFibGVzLmMtNDI0LVx0XHRcdFx0c3RydWN0IG1tX3N0cnVjdCAqbW0sIHBnZF90ICpwZ2QsXG4tLVxuYXJjaC94ODYvbW0vZHVtcF9wYWdldGFibGVzLmMtNDU3LVxuYXJjaC94ODYvbW0vZHVtcF9wYWdldGFibGVzLmM6NDU4Olx0cHRkdW1wX3dhbGtfcGdkKFx1MDAyNnN0LnB0ZHVtcCwgbW0sIHBnZCk7XG5hcmNoL3g4Ni9tbS9kdW1wX3BhZ2V0YWJsZXMuYy00NTktXG4tLVxuYXJjaC94ODYvbW0vZHVtcF9wYWdldGFibGVzLmMtNDczLVxuYXJjaC94ODYvbW0vZHVtcF9wYWdldGFibGVzLmM6NDc0OnZvaWQgcHRkdW1wX3dhbGtfcGdkX2xldmVsKHN0cnVjdCBzZXFfZmlsZSAqbSwgc3RydWN0IG1tX3N0cnVjdCAqbW0pXG5hcmNoL3g4Ni9tbS9kdW1wX3BhZ2V0YWJsZXMuYy00NzUte1xuYXJjaC94ODYvbW0vZHVtcF9wYWdldGFibGVzLmM6NDc2Olx0cHRkdW1wX3dhbGtfcGdkX2xldmVsX2NvcmUobSwgbW0sIG1tLVx1MDAzZXBnZCwgZmFsc2UsIHRydWUpO1xuYXJjaC94ODYvbW0vZHVtcF9wYWdldGFibGVzLmMtNDc3LX1cbmFyY2gveDg2L21tL2R1bXBfcGFnZXRhYmxlcy5jLTQ3OC1cbmFyY2gveDg2L21tL2R1bXBfcGFnZXRhYmxlcy5jOjQ3OTp2b2lkIHB0ZHVtcF93YWxrX3BnZF9sZXZlbF9kZWJ1Z2ZzKHN0cnVjdCBzZXFfZmlsZSAqbSwgc3RydWN0IG1tX3N0cnVjdCAqbW0sXG5hcmNoL3g4Ni9tbS9kdW1wX3BhZ2V0YWJsZXMuYy00ODAtXHRcdFx0XHQgICBib29sIHVzZXIpXG4tLVxuYXJjaC94ODYvbW0vZHVtcF9wYWdldGFibGVzLmMtNDg2LSNlbmRpZlxuYXJjaC94ODYvbW0vZHVtcF9wYWdldGFibGVzLmM6NDg3Olx0cHRkdW1wX3dhbGtfcGdkX2xldmVsX2NvcmUobSwgbW0sIHBnZCwgZmFsc2UsIGZhbHNlKTtcbmFyY2gveDg2L21tL2R1bXBfcGFnZXRhYmxlcy5jLTQ4OC19XG4tLVxuYXJjaC94ODYvbW0vZHVtcF9wYWdldGFibGVzLmM9NDkwPXZvaWQgcHRkdW1wX3dhbGtfdXNlcl9wZ2RfbGV2ZWxfY2hlY2t3eCh2b2lkKVxuLS1cbmFyY2gveDg2L21tL2R1bXBfcGFnZXRhYmxlcy5jLTUwMC1cdHBnZCA9IGtlcm5lbF90b191c2VyX3BnZHAocGdkKTtcbmFyY2gveDg2L21tL2R1bXBfcGFnZXRhYmxlcy5jOjUwMTpcdHB0ZHVtcF93YWxrX3BnZF9sZXZlbF9jb3JlKE5VTEwsIFx1MDAyNmluaXRfbW0sIHBnZCwgdHJ1ZSwgZmFsc2UpO1xuYXJjaC94ODYvbW0vZHVtcF9wYWdldGFibGVzLmMtNTAyLSNlbmRpZlxuLS1cbmFyY2gveDg2L21tL2R1bXBfcGFnZXRhYmxlcy5jLTUwNC1cbmFyY2gveDg2L21tL2R1bXBfcGFnZXRhYmxlcy5jOjUwNTpib29sIHB0ZHVtcF93YWxrX3BnZF9sZXZlbF9jaGVja3d4KHZvaWQpXG5hcmNoL3g4Ni9tbS9kdW1wX3BhZ2V0YWJsZXMuYy01MDYte1xuLS1cbmFyY2gveDg2L21tL2R1bXBfcGFnZXRhYmxlcy5jLTUwOS1cbmFyY2gveDg2L21tL2R1bXBfcGFnZXRhYmxlcy5jOjUxMDpcdHJldHVybiBwdGR1bXBfd2Fsa19wZ2RfbGV2ZWxfY29yZShOVUxMLCBcdTAwMjZpbml0X21tLCBJTklUX1BHRCwgdHJ1ZSwgZmFsc2UpO1xuYXJjaC94ODYvbW0vZHVtcF9wYWdldGFibGVzLmMtNTExLX1cbi0tXG5hcmNoL3g4Ni9wbGF0Zm9ybS9lZmkvZWZpXzMyLmM9NzU9dm9pZCBfX2luaXQgZWZpX2R1bXBfcGFnZXRhYmxlKHZvaWQpXG4tLVxuYXJjaC94ODYvcGxhdGZvcm0vZWZpL2VmaV8zMi5jLTc3LSNpZmRlZiBDT05GSUdfRUZJX1BHVF9EVU1QXG5hcmNoL3g4Ni9wbGF0Zm9ybS9lZmkvZWZpXzMyLmM6Nzg6XHRwdGR1bXBfd2Fsa19wZ2RfbGV2ZWwoTlVMTCwgXHUwMDI2aW5pdF9tbSk7XG5hcmNoL3g4Ni9wbGF0Zm9ybS9lZmkvZWZpXzMyLmMtNzktI2VuZGlmXG4tLVxuYXJjaC94ODYvcGxhdGZvcm0vZWZpL2VmaV82NC5jPTQyMz12b2lkIF9faW5pdCBlZmlfZHVtcF9wYWdldGFibGUodm9pZClcbi0tXG5hcmNoL3g4Ni9wbGF0Zm9ybS9lZmkvZWZpXzY0LmMtNDI1LSNpZmRlZiBDT05GSUdfRUZJX1BHVF9EVU1QXG5hcmNoL3g4Ni9wbGF0Zm9ybS9lZmkvZWZpXzY0LmM6NDI2Olx0cHRkdW1wX3dhbGtfcGdkX2xldmVsKE5VTEwsIFx1MDAyNmVmaV9tbSk7XG5hcmNoL3g4Ni9wbGF0Zm9ybS9lZmkvZWZpXzY0LmMtNDI3LSNlbmRpZlxuLS1cbmluY2x1ZGUvbGludXgvcHRkdW1wLmg9MTM9c3RydWN0IHB0ZHVtcF9zdGF0ZSB7XG4tLVxuaW5jbHVkZS9saW51eC9wdGR1bXAuaC0yNy1cbmluY2x1ZGUvbGludXgvcHRkdW1wLmg6Mjg6Ym9vbCBwdGR1bXBfd2Fsa19wZ2RfbGV2ZWxfY29yZShzdHJ1Y3Qgc2VxX2ZpbGUgKm0sXG5pbmNsdWRlL2xpbnV4L3B0ZHVtcC5oLTI5LVx0XHRcdFx0c3RydWN0IG1tX3N0cnVjdCAqbW0sIHBnZF90ICpwZ2QsXG5pbmNsdWRlL2xpbnV4L3B0ZHVtcC5oLTMwLVx0XHRcdFx0Ym9vbCBjaGVja3d4LCBib29sIGRtZXNnKTtcbmluY2x1ZGUvbGludXgvcHRkdW1wLmg6MzE6dm9pZCBwdGR1bXBfd2Fsa19wZ2Qoc3RydWN0IHB0ZHVtcF9zdGF0ZSAqc3QsIHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCBwZ2RfdCAqcGdkKTtcbmluY2x1ZGUvbGludXgvcHRkdW1wLmgtMzItYm9vbCBwdGR1bXBfY2hlY2tfd3godm9pZCk7XG4tLVxubW0vcHRkdW1wLmM9MTY2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbW1fd2Fsa19vcHMgcHRkdW1wX29wcyA9IHtcbi0tXG5tbS9wdGR1bXAuYy0xNzQtXG5tbS9wdGR1bXAuYzoxNzU6dm9pZCBwdGR1bXBfd2Fsa19wZ2Qoc3RydWN0IHB0ZHVtcF9zdGF0ZSAqc3QsIHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCBwZ2RfdCAqcGdkKVxubW0vcHRkdW1wLmMtMTc2LXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAwNjoyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NjMyCgkJCQkJCQlvdXRwdXQ6IDE5CgkJCQkJCQl0aG91Z2h0czogNzkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYW5hbHlzaXMgb2YgdGhlIHByb3ZpZGVkIGluZm9ybWF0aW9uLCBhcyBpZiB0aGVzZSB3ZXJlIG15IGludGVybmFsIHRob3VnaHRzOgoKKipEaXNzZWN0aW5nIHRoZSBQVER1bXAgV29ya2Zsb3cqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gVGhlIGBwdGR1bXBfd2Fsa19wZ2RgIGZ1bmN0aW9uIGlzIHRoZSBjb3JlIHBsYXllciBoZXJlLCBpbml0aWF0ZWQgYnkgYHB0ZHVtcF9zaG93YCwgd2hpY2ggaXRzZWxmIGxpdmVzIGluIGBhcmNoL3g4Ni9tbS9kZWJ1Z19wYWdldGFibGVzLmNgLiBBbmQgdGhhdCBpbml0aWFsIGNhbGwgaGFwcGVucyB2aWEgYHB0ZHVtcF93YWxrX3BnZF9sZXZlbF9kZWJ1Z2ZzYC4gQ2xlYXJseSwgdGhpcyBpcyBhbGwgcGFydCBvZiBhIHBhZ2V0YWJsZSBkZWJ1Z2dpbmcgaW5mcmFzdHJ1Y3R1cmUsIGxpa2VseSBleHBvc2VkIHRocm91Z2ggZGVidWdmcy4gTXkgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gcGlucG9pbnQgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9uIHRoYXQgYWN0aXZhdGVzIHRoZSBlbnRpcmUgYGFyY2gveDg2L21tL2RlYnVnX3BhZ2V0YWJsZXMuY2AgbW9kdWxlLiBLbm93aW5nIHRoZSBlbmFibGluZyBjb25maWcgd2lsbCBnaXZlIG1lIGNyaXRpY2FsIGNvbnRleHQgYWJvdXQgdGhlIHRhcmdldCBzeXN0ZW0mIzM5O3MgZGVidWdnaW5nIGZlYXR1cmVzLiBJdCB3aWxsIGFsc28gaGVscCB3aXRoIG15IG9uZ29pbmcgYW5hbHlzaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMDY6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGVidWdfcGFnZXRhYmxlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3g4Ni9tbS9NYWtlZmlsZT0zNz1vYmotJChDT05GSUdfUFREVU1QKVx0XHQmIzQzOz0gZHVtcF9wYWdldGFibGVzLm9cbmFyY2gveDg2L21tL01ha2VmaWxlOjM4Om9iai0kKENPTkZJR19QVERVTVBfREVCVUdGUylcdCYjNDM7PSBkZWJ1Z19wYWdldGFibGVzLm9cbmFyY2gveDg2L21tL01ha2VmaWxlLTM5LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDA2OjIzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkwMDcKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiA0MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIHJlYXNvbmluZzoKCioqQ2hlY2tpbmcgdGhlIFBURFVNUCBEZWJ1Z0ZTIENvbmZpZ3VyYXRpb24qKgoKUmlnaHQsIHNvIGBDT05GSUdfUFREVU1QX0RFQlVHRlNgIGlzIHRoZSBmbGFnIHRoYXQgYWN0aXZhdGVzIHRoZSBkZWJ1Z2ZzIGludGVyZmFjZSBmb3IgcGFnZSB0YWJsZSBkdW1waW5nLiBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIGhvdyB0aGlzIGlzIGNvbmZpZ3VyZWQuIExldCYjMzk7cyBkaWcgaW50byB0aGUga2VybmVsIGNvbmZpZyBmaWxlcy4gTXkgdXN1YWwgc3VzcGVjdCB3b3VsZCBiZSBgbW0vS2NvbmZpZy5kZWJ1Z2AsIG9yIHNvbWV0aGluZyBzaW1pbGFyIHdpdGhpbiB0aGUgbWVtb3J5IG1hbmFnZW1lbnQgc3Vic3lzdGVtJiMzOTtzIGNvbmZpZ3VyYXRpb24gZmlsZXMuIEkmIzM5O2xsIHN0YXJ0IHRoZXJlIGFuZCB2ZXJpZnkgd2hlcmUgdGhpcyBvcHRpb24gbGl2ZXMgYW5kIHdoYXQgZGVwZW5kZW5jaWVzIG9yIGNvbnN0cmFpbnRzIGl0IG1pZ2h0IGhhdmUuIFRoaXMgd2lsbCBnaXZlIG1lIGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2YgaG93IGFuZCB3aGVuIHRoaXMgZGVidWcgZmVhdHVyZSBpcyBhdmFpbGFibGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMDY6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFBURFVNUF9ERUJVR0ZTJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL0tjb25maWcuZGVidWc9MjE5PWNvbmZpZyBQVERVTVBcbi0tXG5tbS9LY29uZmlnLmRlYnVnLTIyMS1cbm1tL0tjb25maWcuZGVidWc6MjIyOmNvbmZpZyBQVERVTVBfREVCVUdGU1xubW0vS2NvbmZpZy5kZWJ1Zy0yMjMtXHRib29sIFwmIzM0O0V4cG9ydCBrZXJuZWwgcGFnZXRhYmxlIGxheW91dCB0byB1c2Vyc3BhY2UgdmlhIGRlYnVnZnNcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAwNjoyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5Mjk3CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIHRoZSBEZXBlbmRlbmN5IENoYWluIGZvciBgQ09ORklHX1BURFVNUF9ERUJVR0ZTYCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYENPTkZJR19QVERVTVBfREVCVUdGU2AuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAmIzM0O1doYXQmIzM5O3MgdGhlIGZ1bGwgZGVwZW5kZW5jeSB0cmVlIG9uIHRoaXM/JiMzNDsgSXQmIzM5O3Mgbm90IGVub3VnaCB0byBrbm93IGlmICp0aGlzKiBwYXJ0aWN1bGFyIGZlYXR1cmUgaXMgZW5hYmxlZCBvciBkaXNhYmxlZCBpbiB0aGUgY3VycmVudCBjb25maWd1cmF0aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IG90aGVyIGtlcm5lbCBjb21wb25lbnRzIGl0IHJlbGllcyBvbiwgYW5kLCBwZXJoYXBzIG1vcmUgY3JpdGljYWxseSwgd2hhdCAqaXQqIG1pZ2h0IGJlIHJlbGllZCB1cG9uIGJ5LiBEb2VzIGVuYWJsaW5nIHRoaXMgYWZmZWN0LCBzYXksIHRoZSBwZXJmb3JtYW5jZSBjaGFyYWN0ZXJpc3RpY3Mgb2YgdGhlIGtlcm5lbCBpbiBhIG1ham9yIHdheT8gQXJlIHRoZXJlIGFueSBzdWJ0bGUgaW50ZXJhY3Rpb25zIHdpdGggb3RoZXIgZGVidWcgZmFjaWxpdGllcz8gV2hhdOKAmXMgdGhlIGltcGxpY2F0aW9uIG9uIGNvZGUgc2l6ZT8gSSBuZWVkIHRvIHF1aWNrbHkgZXN0YWJsaXNoIGlmIGVuYWJsaW5nIHRoaXMgaXMgYSBsaWdodHdlaWdodCBvcGVyYXRpb24sIG9yIGlmIGl0IHJpcHBsZXMgb3V0IGludG8gYSBsYXJnZXIgYnVpbGQgY29uZmlndXJhdGlvbi4gQSBkZWVwIGRpdmUgaW50byB0aGUgS2NvbmZpZyBzdHJ1Y3R1cmUgaXMgcmVxdWlyZWQgYW5kIGEgcmV2aWV3IG9mIGFueSBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24uIE5lZWQgdG8gY29uc2lkZXIgcG90ZW50aWFsIHJlZ3Jlc3Npb25zLiBUaW1lIHRvIGRpZyBpbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMDY6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFBURFVNUF9ERUJVR0ZTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vS2NvbmZpZy5kZWJ1ZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9LY29uZmlnLmRlYnVnPTIxOT1jb25maWcgUFREVU1QXG4tLVxubW0vS2NvbmZpZy5kZWJ1Zy0yMjEtXG5tbS9LY29uZmlnLmRlYnVnOjIyMjpjb25maWcgUFREVU1QX0RFQlVHRlNcbm1tL0tjb25maWcuZGVidWctMjIzLVx0Ym9vbCBcJiMzNDtFeHBvcnQga2VybmVsIHBhZ2V0YWJsZSBsYXlvdXQgdG8gdXNlcnNwYWNlIHZpYSBkZWJ1Z2ZzXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDA2OjIzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT40bTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk2MzgKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAxOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRpdmluZyBpbnRvIERlYnVnZ2luZyBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gdGhpbmtpbmcsIHdoZXJlJiMzOTtzIHRoZSBiZXN0IHBsYWNlIHRvIHN0YXJ0IGxvb2tpbmcgaW50byB0aGVzZSBkZWJ1ZyBvcHRpb25zPyBNeSBpbnN0aW5jdCBpcyB0byBjaGVjayB0aGUgYG1tL0tjb25maWcuZGVidWdgIGZpbGUuIFNwZWNpZmljYWxseSwgSSYjMzk7bSBnb2luZyB0byBqdW1wIHRvIGFyb3VuZCBsaW5lIDIyMi4gSSYjMzk7bSBob3BpbmcgdGhhdCYjMzk7cyB3aGVyZSB0aGUgY29yZSBvZiB0aGVzZSBkZWJ1Z2dpbmctcmVsYXRlZCBjb25maWd1cmF0aW9ucyBpcyBkZWZpbmVkLiBUaGF0IHNlY3Rpb24gbGlrZWx5IGNvbnRhaW5zIHRoZSBkZXBlbmRlbmNpZXMsIGhlbHAgdGV4dCwgYW5kIGRlZmF1bHQgc2V0dGluZ3MgdGhhdCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0byBtYW5pcHVsYXRlIHRoZSBiZWhhdmlvciBJJiMzOTttIGFmdGVyLiBJdCYjMzk7cyB0aGUgdXN1YWwgcm91dGUgd2hlbiBjaGFzaW5nIGRvd24gdGhlc2Uga2luZHMgb2YgY29uZmlndXJhdGlvbnMsIHRoZSBLY29uZmlnIGZpbGVzIHVzdWFsbHkga2VlcCBhIGdvb2QgdHJhY2sgcmVjb3JkIG9mIGhvdyB0aGVzZSBhcmUgaW1wbGVtZW50ZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDA2OjI4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bW0vS2NvbmZpZy5kZWJ1ZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDIxNSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMjE1Olx0XG4gMjE2Olx0Y29uZmlnIEFSQ0hfSEFTX1BURFVNUFxuIDIxNzpcdFx0Ym9vbFxuIDIxODpcdFxuIDIxOTpcdGNvbmZpZyBQVERVTVBcbiAyMjA6XHRcdGJvb2xcbiAyMjE6XHRcbiAyMjI6XHRjb25maWcgUFREVU1QX0RFQlVHRlNcbiAyMjM6XHRcdGJvb2wgXCYjMzQ7RXhwb3J0IGtlcm5lbCBwYWdldGFibGUgbGF5b3V0IHRvIHVzZXJzcGFjZSB2aWEgZGVidWdmc1wmIzM0O1xuIDIyNDpcdFx0ZGVwZW5kcyBvbiBERUJVR19LRVJORUxcbiAyMjU6XHRcdGRlcGVuZHMgb24gREVCVUdfRlNcbiAyMjY6XHRcdGRlcGVuZHMgb24gQVJDSF9IQVNfUFREVU1QXG4gMjI3Olx0XHRzZWxlY3QgUFREVU1QXG4gMjI4Olx0XHRoZWxwXG4gMjI5Olx0XHQgIFNheSBZIGhlcmUgaWYgeW91IHdhbnQgdG8gc2hvdyB0aGUga2VybmVsIHBhZ2V0YWJsZSBsYXlvdXQgaW4gYVxuIDIzMDpcdFx0ICBkZWJ1Z2ZzIGZpbGUuIFRoaXMgaW5mb3JtYXRpb24gaXMgb25seSB1c2VmdWwgZm9yIGtlcm5lbCBkZXZlbG9wZXJzXG4gMjMxOlx0XHQgIHdobyBhcmUgd29ya2luZyBpbiBhcmNoaXRlY3R1cmUgc3BlY2lmaWMgYXJlYXMgb2YgdGhlIGtlcm5lbC5cbiAyMzI6XHRcdCAgSXQgaXMgcHJvYmFibHkgbm90IGEgZ29vZCBpZGVhIHRvIGVuYWJsZSB0aGlzIGZlYXR1cmUgaW4gYSBwcm9kdWN0aW9uXG4gMjMzOlx0XHQgIGtlcm5lbC5cbiAyMzQ6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMDY6Mjg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTAxMTkKCQkJCQkJCW91dHB1dDogMjUKCQkJCQkJCXRob3VnaHRzOiA0NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOgoKKipJbnZlc3RpZ2F0aW5nIFBvdGVudGlhbCBQZXJmb3JtYW5jZSBCb3R0bGVuZWNrcyBpbiBNZW1vcnkgTWFuYWdlbWVudCoqCgpBbHJpZ2h0LCBsZXQmIzM5O3Mgc2VlLi4uIHRoZSBmaXJzdCB0aGluZyBJIHdhbnQgdG8gemVybyBpbiBvbiBpcyBgUFREVU1QX0RFQlVHRlNgLiBUaGF0JiMzOTtzIHRoZSBjb25maWcgb3B0aW9uIEkmIzM5O20gcHJldHR5IHN1cmUgcmVsYXRlcyB0byBkZWJ1Z2dpbmcgcGFnZSB0YWJsZSBkdW1wcywgd2hpY2ggY291bGQgYmUgdXNlZnVsIGluIHVuZGVyc3RhbmRpbmcgcG90ZW50aWFsIG92ZXJoZWFkIGluIG1lbW9yeSBtYW5hZ2VtZW50LgoKTm93LCB0aGF0JiMzOTtzIG5vdCB0aGUgb25seSBhcmVhIG9mIGludGVyZXN0LCBvZiBjb3Vyc2UuIEkgc2hvdWxkIGFsc28gaW52ZXN0aWdhdGUgYENPTkZJR19BU1lOQ19LRVJORUxfUEdUQUJMRV9GUkVFYC4gSSYjMzk7bSBmYW1pbGlhciB3aXRoIGl0cyB1c2UgaW4gYG1tL3BndGFibGUtZ2VuZXJpYy5jYC4gRGVwZW5kaW5nIG9uIHdoYXQgaXQmIzM5O3MgZW5hYmxlZCBmb3IsIHRoaXMgY291bGQgYmUgYSBtYWpvciBmYWN0b3IgaW4gaW1wcm92aW5nIHBlcmZvcm1hbmNlIGJ5IHJlZHVjaW5nIGxhdGVuY3kgcmVsYXRlZCB0byBmcmVlaW5nIHBhZ2UgdGFibGVzLiBJIHNob3VsZCBjb3JyZWxhdGUgdGhlIGltcGFjdCBvZiBlYWNoIG9mIHRoZXNlIG9wdGlvbnMgb24gdGhyb3VnaHB1dC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMDY6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEFTWU5DX0tFUk5FTF9QR1RBQkxFX0ZSRUUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vS2NvbmZpZz0xMDIwPWNvbmZpZyBIQVZFX0dJR0FOVElDX0ZPTElPU1xuLS1cbm1tL0tjb25maWctMTAyMy1cbm1tL0tjb25maWc6MTAyNDpjb25maWcgQVNZTkNfS0VSTkVMX1BHVEFCTEVfRlJFRVxubW0vS2NvbmZpZy0xMDI1LVx0ZGVmX2Jvb2wgblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAwNjoyOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDQ1MAoJCQkJCQkJb3V0cHV0OiAyNQoJCQkJCQkJdGhvdWdodHM6IDE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgY29kZS4gSGVyZSYjMzk7cyBob3cgSSYjMzk7bSB0aGlua2luZyBhYm91dCBpdDoKCioqRGlnZ2luZyBpbnRvIGBBU1lOQ19LRVJORUxfUEdUQUJMRV9GUkVFYCoqCgpBbHJpZ2h0LCBJJiMzOTttIHN0YXJ0aW5nIHdpdGggYEFTWU5DX0tFUk5FTF9QR1RBQkxFX0ZSRUVgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgJiMzNDtXaGF0IGV4YWN0bHkgKnNlbGVjdHMqIHRoaXM/IFdoYXQgY29kZSBwYXRocyBsZWFkIHRvIGl0cyBhY3RpdmF0aW9uPyYjMzQ7IEkga25vdyBpdCYjMzk7cyBhIGtleSBmZWF0dXJlLCBwcm9iYWJseSByZWxhdGVkIHRvIGFzeW5jaHJvbm91cyBwYWdlIHRhYmxlIGZyZWVpbmcgaW4gdGhlIGtlcm5lbCwgYnV0IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGl0IGJlY29tZXMgcmVsZXZhbnQuIEkgbmVlZCB0byB0cmFjZSBiYWNrIGZyb20gd2hlcmUgaXQmIzM5O3MgdXNlZCB0byB1bmRlcnN0YW5kIHdoZXJlIHRoaXMgZmVhdHVyZSBpcyBiZWluZyBlbmFibGVkIG9yIGRpc2FibGVkLiBUaGlzIGludmVzdGlnYXRpb24gaXMga2V5IHRvIHVuZGVyc3RhbmRpbmcgaG93IHRoZXNlIGFzeW5jaHJvbm91cyBmcmVlcyBhcmUgdHJpZ2dlcmVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAwNjoyOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzZWxlY3QgQVNZTkNfS0VSTkVMX1BHVEFCTEVfRlJFRSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3g4Ni9LY29uZmlnPTU4PWNvbmZpZyBYODZcbi0tXG5hcmNoL3g4Ni9LY29uZmlnLTI4My1cdHNlbGVjdCBIQVZFX1BFUkZfVVNFUl9TVEFDS19EVU1QXG5hcmNoL3g4Ni9LY29uZmlnOjI4NDpcdHNlbGVjdCBBU1lOQ19LRVJORUxfUEdUQUJMRV9GUkVFXHRpZiBJT01NVV9TVkFcbmFyY2gveDg2L0tjb25maWctMjg1LVx0c2VsZWN0IE1NVV9HQVRIRVJfUkNVX1RBQkxFX0ZSRUVcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMDY6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA3NjAKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiA0MjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIEtlcm5lbCBQYWdlIFRhYmxlIEZyZWVpbmcgb24geDg2IHdpdGggSU9NTVVfU1ZBKioKCk9rYXksIHNvIGhlcmUmIzM5O3MgdGhlIGRlYWwuIE9uIHg4NiwgaWYgd2UmIzM5O3JlIHVzaW5nIGBJT01NVV9TVkFgLCB0aGUgYEFTWU5DX0tFUk5FTF9QR1RBQkxFX0ZSRUVgIG9wdGlvbiBnZXRzIGF1dG9tYXRpY2FsbHkgc2VsZWN0ZWQuIFRlY2huaWNhbGx5LCB3ZSBkb24mIzM5O3QgbmVlZCB0byBleHBsaWNpdGx5IGVuYWJsZSBpdC4gV2UgY291bGQgZWl0aGVyIGVuYWJsZSBgSU9NTVVfU1ZBYCwgb3IganVzdCBub3Qgd29ycnkgYWJvdXQgaXQsIGJlY2F1c2UgdGhlIGAjZWxzZWAgYnJhbmNoIGlzIGFsc28gbW9kaWZpZWQgYW5kIHVzZXMgYGNhbGxfcmN1KCZhbXA7cHQtJmd0O3B0X3JjdV9oZWFkLCBrZXJuZWxfcGd0YWJsZV9mcmVlX3JjdSlgLgoKTGV0JiMzOTtzIGRpZyBpbnRvIHRoZSBtZWF0IG9mIHRoaXMuIFRoZSBwYXRjaCB0b3VjaGVzIGEgZmV3IGtleSBmdW5jdGlvbnM6IGB3YWxrX3BhZ2VfcmFuZ2VfZGVidWdgLCBgcGFnZXRhYmxlX2ZyZWVfa2VybmVsYCwgYHB0ZV9mcmFnbWVudF9mcmVlYCAoZm9yIFBvd2VyUEMsIHdoaWNoIEkmIzM5O2xsIGtlZXAgaW4gbWluZCBmb3IgY29udGV4dCksIGFuZCBgcHRkdW1wX3dhbGtfcGdkYC4gUmlnaHQgb2ZmIHRoZSBiYXQsIEkgd2FudCB0byBmb2N1cyBvbiBgd2Fsa19wYWdlX3JhbmdlX2RlYnVnYCwgYHBhZ2V0YWJsZV9mcmVlX2tlcm5lbGAsIGFuZCBgcHRkdW1wX3dhbGtfcGdkYC4gSXMgdGhhdCBpdD8KCkFoLCByaWdodCwgYGtlcm5lbF9wZ3RhYmxlX2ZyZWVfcmN1YCB3YXMgYWRkZWQuIEFuZCBgd2Fsa19rZXJuZWxfcGFnZV90YWJsZV9yYW5nZV9sb2NrbGVzc2AgaXMgY2FsbGVkIGJ5IGB3YWxrX3BhZ2VfcmFuZ2VfZGVidWdgLgoKTm93LCB0aGUgaW1wb3J0YW50IHF1ZXN0aW9uOiBjYW4gYSB1c2VyLXNwYWNlIHByb2Nlc3MgdHJpZ2dlciBgd2Fsa19wYWdlX3JhbmdlX2RlYnVnYD8gWWVzLCB0aHJvdWdoIGRlYnVnZnMgYW5kIHRob3NlIGBwdGR1bXBgIGZpbGVzLiBXaXRoIGBQVERVTVBfREVCVUdGU2AgZW5hYmxlZCwgd2UgZ2V0IHN0dWZmIGxpa2UgYC9zeXMva2VybmVsL2RlYnVnL3BhZ2VfdGFibGVzL2tlcm5lbGAuIEEgcmVhZCB0cmlnZ2VycyBgcHRkdW1wX3Nob3dgIHdoaWNoIGNhbGxzIGBwdGR1bXBfd2Fsa19wZ2RgIGFuZCB0aGF0LCBpbiB0dXJuLCBjYWxscyBgd2Fsa19wYWdlX3JhbmdlX2RlYnVnYC4gU28sIHVzZXIgc3BhY2UgY2FuIHBvdGVudGlhbGx5IHRyaWdnZXIgdGhpcy4KCk5leHQgdXAsIGBwYWdldGFibGVfZnJlZV9rZXJuZWxgLiBUaGlzIGlzIGNhbGxlZCB3aGVuIHRoZSBrZXJuZWwgZnJlZXMgdXAgcGFnZSB0YWJsZXMuIFdoZW4gZG9lcyB0aGF0IGhhcHBlbj8gVm1hcC92bWFsbG9jIHRlYXJkb3duLCBtZW1vcnkgaG90LXJlbW92ZS4uLiB0aGluZ3MgbGlrZSB0aGF0LiBHb3R0YSBmaW5kIG91dCB3aGF0IGNhbGxzIGBwYWdldGFibGVfZnJlZV9rZXJuZWxgIHRvIGdldCB0aGUgZnVsbCBwaWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAwNjoyOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwYWdldGFibGVfZnJlZV9rZXJuZWwmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC9tbS5oPTM2OTE9c3RhdGljIGlubGluZSB2b2lkIF9fcGFnZXRhYmxlX2ZyZWUoc3RydWN0IHB0ZGVzYyAqcHQpXG4tLVxuaW5jbHVkZS9saW51eC9tbS5oLTM2OTctXG5pbmNsdWRlL2xpbnV4L21tLmg6MzY5ODp2b2lkIHBhZ2V0YWJsZV9mcmVlX2tlcm5lbChzdHJ1Y3QgcHRkZXNjICpwdCk7XG5pbmNsdWRlL2xpbnV4L21tLmgtMzY5OS0vKipcbi0tXG5pbmNsdWRlL2xpbnV4L21tLmg9MzcwNj1zdGF0aWMgaW5saW5lIHZvaWQgcGFnZXRhYmxlX2ZyZWUoc3RydWN0IHB0ZGVzYyAqcHQpXG4tLVxuaW5jbHVkZS9saW51eC9tbS5oLTM3MDktXHRcdHB0ZGVzY19jbGVhcl9rZXJuZWwocHQpO1xuaW5jbHVkZS9saW51eC9tbS5oOjM3MTA6XHRcdHBhZ2V0YWJsZV9mcmVlX2tlcm5lbChwdCk7XG5pbmNsdWRlL2xpbnV4L21tLmgtMzcxMS1cdH0gZWxzZSB7XG4tLVxubW0vcGFnZXdhbGsuYz02ODI9aW50IHdhbGtfcGFnZV9yYW5nZV9kZWJ1ZyhzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5zaWduZWQgbG9uZyBzdGFydCxcbi0tXG5tbS9wYWdld2Fsay5jLTcwMC1cdFx0ICogYWNyb3NzIHRoZSB3aG9sZSBrZXJuZWwgYWRkcmVzcyBzcGFjZS4gIEEga2VybmVsIHBhZ2UgdGFibGVcbm1tL3BhZ2V3YWxrLmM6NzAxOlx0XHQgKiBmcmVlZCB2aWEgcGFnZXRhYmxlX2ZyZWVfa2VybmVsKCkgc3RheXMgdmFsaWQgdW50aWwgdGhlIHdhbGtcbm1tL3BhZ2V3YWxrLmMtNzAyLVx0XHQgKiB0aGF0IG1heSBoYXZlIG9ic2VydmVkIGl0IGRyb3BzIHRoZSBsb2NrOyByZWxlYXNpbmcgdGhlIGxvY2tcbi0tXG5tbS9wZ3RhYmxlLWdlbmVyaWMuYz00MzQ9c3RhdGljIHZvaWQga2VybmVsX3BndGFibGVfd29ya19mdW5jKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5tbS9wZ3RhYmxlLWdlbmVyaWMuYy00NTQtXG5tbS9wZ3RhYmxlLWdlbmVyaWMuYzo0NTU6dm9pZCBwYWdldGFibGVfZnJlZV9rZXJuZWwoc3RydWN0IHB0ZGVzYyAqcHQpXG5tbS9wZ3RhYmxlLWdlbmVyaWMuYy00NTYte1xuLS1cbm1tL3BndGFibGUtZ2VuZXJpYy5jLTQ2My0jZWxzZVxubW0vcGd0YWJsZS1nZW5lcmljLmM6NDY0OnZvaWQgcGFnZXRhYmxlX2ZyZWVfa2VybmVsKHN0cnVjdCBwdGRlc2MgKnB0KVxubW0vcGd0YWJsZS1nZW5lcmljLmMtNDY1LXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMDY6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTIxMzUKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiAxOTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqS2VybmVsIFBhZ2UgVGFibGUgRGVhbGxvY2F0aW9uIERlZXAgRGl2ZSoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBzcG90dGVkIGEgc2lnbmlmaWNhbnQgYWx0ZXJhdGlvbiB3aXRoaW4gdGhlIGtlcm5lbCYjMzk7cyBtZW1vcnkgbWFuYWdlbWVudCwgc3BlY2lmaWNhbGx5IGNvbmNlcm5pbmcgdGhlIGZyZWVpbmcgb2YgcGFnZSB0YWJsZXMuIEl0IGxvb2tzIGxpa2UgYHBhZ2V0YWJsZV9mcmVlX2tlcm5lbGAgaXMgZ2V0dGluZyBjYWxsZWQgYnkgYHBhZ2V0YWJsZV9mcmVlYCwgYnV0IG9ubHkgd2hlbiB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGEga2VybmVsIHBhZ2UgdGFibGUsIGRldGVybWluZWQgYnkgYHB0ZGVzY19pc19rZXJuZWwocHQpYC4gQW5kIGBwYWdldGFibGVfZnJlZWAgaXMgdHJpZ2dlcmVkIGJ5IG90aGVyIGNyaXRpY2FsIGNvbXBvbmVudHMgbGlrZSBgcHRlX2ZyZWVgIGFuZCBgcG1kX2ZyZWVgLCB3aGljaCBtZWFucyB0aGlzIHRvdWNoZXMgcmVhbGx5IGNlbnRyYWwga2VybmVsIGZ1bmN0aW9uYWxpdHkuIFRoaXMgY2hhbmdlIHdhcnJhbnRzIHNlcmlvdXMgYXR0ZW50aW9uIGFuZCBkZWZpbml0ZWx5IHF1YWxpZmllcyBhcyAmIzM0O1dvcnRoRnV6emluZyYjMzQ7IC0gbWVhbmluZyB3ZSBuZWVkIHRvIHRocm93IGV2ZXJ5dGhpbmcgYXQgaXQgdG8gZW5zdXJlIHN0YWJpbGl0eS4KCk15IGZvY3VzIHNob3VsZCBiZSBob25lZCBpbiBvbiB0aGVzZSBmdW5jdGlvbnM6IGB3YWxrX3BhZ2VfcmFuZ2VfZGVidWdgLCBgcHRkdW1wX3dhbGtfcGdkYCwgYHBhZ2V0YWJsZV9mcmVlX2tlcm5lbGAsIGFuZCBga2VybmVsX3BndGFibGVfZnJlZV9yY3VgLiBUaGV5IHNlZW0gdG8gYmUgdGhlIGNyaXRpY2FsIHBpZWNlcyBvZiB0aGlzIGRlYWxsb2NhdGlvbiBwdXp6bGUuCgpJJiMzOTttIGRlZmluaXRlbHkgZW5hYmxpbmcgYFBURFVNUF9ERUJVR0ZTYC4gVGhhdCYjMzk7bGwgcHJvdmlkZSB0aGUga2luZCBvZiBpbnRyb3NwZWN0aW9uIEkmIzM5O2xsIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0JiMzOTtzIGhhcHBlbmluZyB1bmRlciB0aGUgaG9vZC4KCkFsc28sIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgYElPTU1VX1NWQWAuIEl0IGNvdWxkIHRyaWdnZXIgdGhlIGBBU1lOQ19LRVJORUxfUEdUQUJMRV9GUkVFYCBjb2RlIHBhdGgsIHdoaWNoIG1pZ2h0IGJlIHBhcnRpY3VsYXJseSBpbnRlcmVzdGluZy4gSSYjMzk7bGwgbmVlZCB0byBjaGVjayB0aGUgZGVwZW5kZW5jaWVzIG9mIGBJT01NVV9TVkFgIHRvIG1ha2Ugc3VyZSBlbmFibGluZyBpdCBkb2VzbiYjMzk7dCBicmluZyBpbiBhbnkgdW53YW50ZWQgc2lkZSBlZmZlY3RzLiBJIHdhbnQgdG8gbWFrZSBzdXJlIEkgYW0gdGVzdGluZyAqdGhpcyogYXJlYSBhbmQgbm90IGdldCBkaXN0cmFjdGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAwNjozMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgSU9NTVVfU1ZBJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvaW9tbXUvS2NvbmZpZz0xNTM9Y29uZmlnIElPTU1VX0RNQVxuLS1cbmRyaXZlcnMvaW9tbXUvS2NvbmZpZy0xNjEtIyBTaGFyZWQgVmlydHVhbCBBZGRyZXNzaW5nXG5kcml2ZXJzL2lvbW11L0tjb25maWc6MTYyOmNvbmZpZyBJT01NVV9TVkFcbmRyaXZlcnMvaW9tbXUvS2NvbmZpZy0xNjMtXHRzZWxlY3QgSU9NTVVfTU1fREFUQVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAwNjozMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjc3NwoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipEaXZpbmcgaW50byB0aGUgSU9NTVUgS2NvbmZpZyoqCgpPa2F5LCB0aW1lIHRvIGdldCBhIGJpdCBtb3JlIGdyYW51bGFyLiBMZXQmIzM5O3MgcHVsbCB1cCB0aGUgYGRyaXZlcnMvaW9tbXUvS2NvbmZpZ2AgZmlsZSwgc3BlY2lmaWNhbGx5IGFyb3VuZCBsaW5lIDE2Mi4gSSYjMzk7bSBmb2N1c2luZyBvbiB0aGF0IGFyZWEgYmVjYXVzZSBJIGhhdmUgYSBodW5jaCBpdCYjMzk7cyByZWxhdGVkIHRvIFsqKmluc2VydCB5b3VyIHNwZWNpZmljIGFyZWEgb2YgZXhwZXJ0aXNlIC0gZS5nLiwgbmVzdGVkIHZpcnR1YWxpemF0aW9uIHN1cHBvcnQsIHNwZWNpZmljIGhhcmR3YXJlIHBsYXRmb3JtIGNvbmZpZ3VyYXRpb24sIG9yIGEgcGFydGljdWxhciBJT01NVSBmZWF0dXJlKipdLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gaG93IHRoaXMgY29tcG9uZW50IGlzIGNvbmZpZ3VyZWQsIGFuZCBzZWUgaG93IHRoZSBkZXBlbmRlbmNpZXMgYXJlIHN0cnVjdHVyZWQgZm9yIHRoaXMgc2VjdGlvbi4gSSByZWNhbGwgZnJvbSB0aGUgbGFzdCBkZWJ1Z2dpbmcgc2Vzc2lvbiB0aGF0IHNvbWUgY29uZGl0aW9uYWwgbG9naWMgdGhlcmUgd2FzIGEgcG90ZW50aWFsIHBvaW50IG9mIGNvbnRlbnRpb24uIE1heWJlIEkgbmVlZCB0byByZXZpc2l0IHRoZSBhc3NvY2lhdGVkIE1ha2VmaWxlIG9yIG90aGVyIGNvbmZpZ3VyYXRpb24gZmlsZXMgbGF0ZXIsIGJ1dCBsZXQmIzM5O3Mgc3RhcnQgaGVyZSBhbmQgc2VlIHdoYXQgdGhlIEtjb25maWcgcmV2ZWFscyBpbiB0aGlzIHNwb3QuIFRoaXMgc2hvdWxkIHByb3ZpZGUgc29tZSBpbnNpZ2h0IGludG8gd2hldGhlciBteSBzdXNwaWNpb25zIGFyZSBjb3JyZWN0LCBvciBpZiBJIGFtIGxvb2tpbmcgaW4gdGhlIHdyb25nIGxvY2F0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAwNjozMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvaW9tbXUvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE1NSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMTU1Olx0XHRzZWxlY3QgRE1BX09QU19IRUxQRVJTXG4gMTU2Olx0XHRzZWxlY3QgSU9NTVVfQVBJXG4gMTU3Olx0XHRzZWxlY3QgSU9NTVVfSU9WQVxuIDE1ODpcdFx0c2VsZWN0IE5FRURfU0dfRE1BX0xFTkdUSFxuIDE1OTpcdFx0c2VsZWN0IE5FRURfU0dfRE1BX0ZMQUdTIGlmIFNXSU9UTEJcbiAxNjA6XHRcbiAxNjE6XHQjIFNoYXJlZCBWaXJ0dWFsIEFkZHJlc3NpbmdcbiAxNjI6XHRjb25maWcgSU9NTVVfU1ZBXG4gMTYzOlx0XHRzZWxlY3QgSU9NTVVfTU1fREFUQVxuIDE2NDpcdFx0Ym9vbFxuIDE2NTpcdFxuIDE2NjpcdGNvbmZpZyBJT01NVV9JT1BGXG4gMTY3Olx0XHRib29sXG4gMTY4Olx0XG4gMTY5Olx0Y29uZmlnIEZTTF9QQU1VXG4gMTcwOlx0XHRib29sIFwmIzM0O0ZyZWVzY2FsZSBJT01NVSBzdXBwb3J0XCYjMzQ7XG4gMTcxOlx0XHRkZXBlbmRzIG9uIFBDSVxuIDE3MjpcdFx0ZGVwZW5kcyBvbiBQSFlTXzY0QklUXG4gMTczOlx0XHRkZXBlbmRzIG9uIFBQQ19FNTAwTUMgfHwgKENPTVBJTEVfVEVTVCBcdTAwMjZcdTAwMjYgUFBDKVxuIDE3NDpcdFx0c2VsZWN0IElPTU1VX0FQSVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAwNjozMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzMyMQoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDMzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBhc3N1bWluZyBJJiMzOTttIGFscmVhZHkgcXVpdGUgZmFtaWxpYXIgd2l0aCBJT01NVXMgYW5kIHJlbGF0ZWQga2VybmVsIGNvbmZpZ3VyYXRpb25zOgoKKipEaWdnaW5nIGludG8gdGhlIElPTU1VX1NWQSBDb25maWcqKgoKQWxyaWdodCwgc28gYElPTU1VX1NWQWAgaXMgb25lIG9mIHRob3NlIGhpZGRlbiBib29sZWFucywgbm90IGRpcmVjdGx5IGV4cG9zZWQgYXMgYSB0b3AtbGV2ZWwgb3B0aW9uLiBUaGF0IGltbWVkaWF0ZWx5IHRlbGxzIG1lIGl0JiMzOTtzIGxpa2VseSBwdWxsZWQgaW4gYmFzZWQgb24gdGhlIHNlbGVjdGlvbiBvZiAqb3RoZXIqIGNvbmZpZ3VyYXRpb25zLiBNeSBnb2FsIG5vdyBpcyB0byBmaWd1cmUgb3V0IHRoZSBkZXBlbmRlbmNpZXMuIEtub3dpbmcgdGhlIHVwc3RyZWFtIGtlcm5lbCBidWlsZCBzeXN0ZW0sIHRoZSBiZXN0IHdheSB0byBkbyB0aGF0IGlzIHRvIHRyYWNlIHRoZSBkZXBlbmRlbmN5IHBhdGggYW5kIHNlZSB3aGljaCBvdGhlciBmZWF0dXJlcyBvciBoYXJkd2FyZSBzZXR1cHMgdHJpZ2dlciBpdHMgaW5jbHVzaW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgYXJjaGl0ZWN0dXJhbCBpbXBsaWNhdGlvbnMsIGFuZCBwcmVjaXNlbHkgKndoeSogaXQmIzM5O3MgY29uZGl0aW9uYWxseSBlbmFibGVkLiBXaGF0JiMzOTtzIGRyaXZpbmcgdGhlIGxvZ2ljIGJlaGluZCBpdHMgaW5jbHVzaW9uPyBJcyBpdCB0aWVkIHRvIGEgc3BlY2lmaWMgdHlwZSBvZiBJT01NVSBoYXJkd2FyZSwgYSBwYXJ0aWN1bGFyIHZpcnR1YWxpemF0aW9uIGZlYXR1cmUsIG9yIHBlcmhhcHMgYSBzcGVjaWZpYyBwcm9ncmFtbWluZyBtb2RlbCBmb3IgdGhlIEdQVT8gTGV0JiMzOTtzIGdldCB0byB0aGUgYm90dG9tIG9mIHRoaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDA2OjMzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NlbGVjdCBJT01NVV9TVkEmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9pb21tdS9hbWQvS2NvbmZpZz0zPWNvbmZpZyBBTURfSU9NTVVcbi0tXG5kcml2ZXJzL2lvbW11L2FtZC9LY29uZmlnLTEzLVx0c2VsZWN0IElPTU1VX0lPVkFcbmRyaXZlcnMvaW9tbXUvYW1kL0tjb25maWc6MTQ6XHRzZWxlY3QgSU9NTVVfU1ZBXG5kcml2ZXJzL2lvbW11L2FtZC9LY29uZmlnLTE1LVx0c2VsZWN0IElPTU1VX0lPUEZcbi0tXG5kcml2ZXJzL2lvbW11L2FybS9LY29uZmlnPTkxPWNvbmZpZyBBUk1fU01NVV9WM19TVkFcbmRyaXZlcnMvaW9tbXUvYXJtL0tjb25maWctOTItXHRib29sIFwmIzM0O1NoYXJlZCBWaXJ0dWFsIEFkZHJlc3Npbmcgc3VwcG9ydCBmb3IgdGhlIEFSTSBTTU1VdjNcJiMzNDtcbmRyaXZlcnMvaW9tbXUvYXJtL0tjb25maWc6OTM6XHRzZWxlY3QgSU9NTVVfU1ZBXG5kcml2ZXJzL2lvbW11L2FybS9LY29uZmlnLTk0LVx0c2VsZWN0IElPTU1VX0lPUEZcbi0tXG5kcml2ZXJzL2lvbW11L2ludGVsL0tjb25maWc9NTM9Y29uZmlnIElOVEVMX0lPTU1VX1NWTVxuLS1cbmRyaXZlcnMvaW9tbXUvaW50ZWwvS2NvbmZpZy01Ni1cdHNlbGVjdCBNTVVfTk9USUZJRVJcbmRyaXZlcnMvaW9tbXUvaW50ZWwvS2NvbmZpZzo1NzpcdHNlbGVjdCBJT01NVV9TVkFcbmRyaXZlcnMvaW9tbXUvaW50ZWwvS2NvbmZpZy01OC1cdGhlbHBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMDY6MzM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTM4NzgKCQkJCQkJCW91dHB1dDogMTQ2CgkJCQkJCQl0aG91Z2h0czogNDk1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBLZXJuZWwgUGFnZSBUYWJsZSBNb2RpZmljYXRpb25zKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBmaXJzdCB0aGluZyYjMzk7cyBmaXJzdDogdGhlIGNvbmZpZyBvcHRpb25zLiBgQU1EX0lPTU1VYCwgYEFSTV9TTU1VX1YzX1NWQWAsIGBJTlRFTF9JT01NVV9TVk1gIGFsbCBzZWVtIHRvIGVuYWJsZSByZWxhdGVkIGZ1bmN0aW9uYWxpdHksIGJ1dCBJIHRoaW5rIGBQVERVTVBfREVCVUdGU2AgaXMgdGhlIGtleSBvbmUgaGVyZSDigJMgdGhhdCYjMzk7cyB0aGUgb25lIHdlIGRlZmluaXRlbHkgbmVlZC4KCkxldCYjMzk7cyBzZWUuLi5JIGJyaWVmbHkgY29uc2lkZXJlZCBgcHRlX2ZyYWdtZW50X2ZyZWVgIGluIGBhcmNoL3Bvd2VycGMvbW0vcGd0YWJsZS1mcmFnLmNgLiBCdXQgZ2l2ZW4gdGhhdCBTeXprYWxsZXIgcHJpbWFyaWx5IHRhcmdldHMgeDg2LCBhcm02NCwgYW5kIHJpc2N2LCBpdCYjMzk7cyBwcm9iYWJseSBwb3dlcnBjLXNwZWNpZmljIGFuZCBtaWdodCBub3QgYmUgKnN0cmljdGx5KiBuZWNlc3NhcnkgdG8gaW5jbHVkZSwgYWx0aG91Z2ggaXQgd291bGQgYmUgaGFybWxlc3MuCgpOb3csIGxldCBtZSBjaGVjayBgd2Fsa19rZXJuZWxfcGFnZV90YWJsZV9yYW5nZV9sb2NrbGVzc2AgaW4gYG1tL3BhZ2V3YWxrLmNgLiBJdCB3YXNuJiMzOTt0IGRpcmVjdGx5IG1vZGlmaWVkLCBidXQgdGhlICpjb21tZW50KiB3YXMuIEFoLCBhbmQgaGVyZSYjMzk7cyB0aGUgbGluazogYHdhbGtfcGFnZV9yYW5nZV9kZWJ1Z2AgY2FsbHMgaXQuIEJpbmdvISBTbywgYHdhbGtfcGFnZV9yYW5nZV9kZWJ1Z2AgYW5kIGBwdGR1bXBfd2Fsa19wZ2RgIGFyZSBjcnVjaWFsLgoKT2theSwgbGV0JiMzOTtzIGJhY2sgdXAgYW5kIHJldmlldy4gVGhpcyBpcyBhIHNvbGlkIGZ1bmN0aW9uYWwgY2hhbmdlOiBgd2Fsa19wYWdlX3JhbmdlX2RlYnVnYCBub3cgc2FmZWx5IHdhbGtzIGtlcm5lbCBwYWdlIHRhYmxlcyBpbiBSQ1UtcHJvdGVjdGVkIGJvdW5kZWQgY2h1bmtzIGJ5IHVzaW5nIGB3YWxrX2tlcm5lbF9wYWdlX3RhYmxlX3JhbmdlX2xvY2tsZXNzYC4gTW9yZW92ZXIsIGBwYWdldGFibGVfZnJlZV9rZXJuZWxgIGRlZmVycyB0aGUgZnJlZWluZyBvZiBrZXJuZWwgcGFnZSB0YWJsZXMgdXNpbmcgYGNhbGxfcmN1YCwgZWZmZWN0aXZlbHkgZW1wbG95aW5nIFJDVS1kZWZlcnJlZCBmcmVlaW5nLiBTbywgbWVtb3J5IG1hbmFnZW1lbnQgaGFzIGltcHJvdmVkIGJ5IGVuc3VyaW5nIHNhZmVyIGxvY2tsZXNzIHBhZ2UgdGFibGUgd2Fsa3MgYW5kIGF2b2lkaW5nIGV4Y2Vzc2l2ZSBob2xkIHRpbWVzIGZvciB0aGUgUkNVIGxvY2suIFRoaXMgaXMgc2lnbmlmaWNhbnQuCgpFc3NlbnRpYWxseSwgdGhpcyBwYXRjaCBtb2RpZmllcyB0aGUga2VybmVsIHBhZ2UgdGFibGUgd2Fsa2luZyBhbmQgZnJlZWluZyBsb2dpYywgbWFraW5nIGl0IFJDVS1zYWZlLiBgcHRkdW1wYCBpcyBub3cgdXBkYXRlZCB0byB3YWxrIGtlcm5lbCBwYWdlIHRhYmxlcyBsb2NrbGVzc2x5IHVuZGVyIFJDVSBpbiBib3VuZGVkIGNodW5rcywgd2hpbGUgdGhlIGBrZXJuZWxfcGd0YWJsZV9mcmVlX3JjdWAgYW5kIGBwYWdldGFibGVfZnJlZV9rZXJuZWxgIGZ1bmN0aW9ucywgaW4gY29uanVuY3Rpb24gd2l0aCB0aGUgZm9ybWVyLCBlbnN1cmUgdGhhdCBrZXJuZWwgcGFnZSB0YWJsZXMgYXJlIHNhZmVseSBhY2Nlc3NlZCBhbmQgZnJlZWQgY29uY3VycmVudGx5LgoKTXkgY29uY2x1c2lvbiBpcyB0aGF0IHRoZSBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IGNoYW5nZXMgaGVyZSBhcmUgc2lnbmlmaWNhbnQ6CgoqICAgKipDb25maWc6KiogYFBURFVNUF9ERUJVR0ZTYCBpcyB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb24uCiogICAqKkZvY3VzU3ltYm9sczoqKiBJJiMzOTtsbCBkZWZpbml0ZWx5IGFkZCBgd2Fsa19wYWdlX3JhbmdlX2RlYnVnYCwgYHB0ZHVtcF93YWxrX3BnZGAsIGBwYWdldGFibGVfZnJlZV9rZXJuZWxgLCBhbmQgYGtlcm5lbF9wZ3RhYmxlX2ZyZWVfcmN1YCB0byB0aGUgZm9jdXMgc3ltYm9scy4KCkkmIzM5O20gcmVhZHkgdG8gYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMDY6MzM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1BURFVNUF9ERUJVR0ZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7d2Fsa19wYWdlX3JhbmdlX2RlYnVnJiMzNDssCiAgICAmIzM0O3B0ZHVtcF93YWxrX3BnZCYjMzQ7LAogICAgJiMzNDtwYWdldGFibGVfZnJlZV9rZXJuZWwmIzM0OywKICAgICYjMzQ7a2VybmVsX3BndGFibGVfZnJlZV9yY3UmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGtlcm5lbCBwYWdlIHRhYmxlIHdhbGtpbmcgYW5kIGZyZWVpbmcgbG9naWMuIEl0IGludHJvZHVjZXMgUkNVLWRlZmVycmVkIGZyZWVpbmcgZm9yIGtlcm5lbCBwYWdlIHRhYmxlcyBhbmQgY2hhbmdlcyB0aGUgZGVidWcgcGFnZSB0YWJsZSB3YWxrZXIgKHB0ZHVtcCkgdG8gd2FsayBrZXJuZWwgcGFnZSB0YWJsZXMgbG9ja2xlc3NseSB1bmRlciBSQ1UgaW4gYm91bmRlZCBjaHVua3MuIFRoaXMgaXMgYSBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IGNoYW5nZSB0aGF0IGFmZmVjdHMgaG93IGtlcm5lbCBwYWdlIHRhYmxlcyBhcmUgc2FmZWx5IGFjY2Vzc2VkIGFuZCBmcmVlZCBjb25jdXJyZW50bHkuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1BURFVNUF9ERUJVR0ZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7d2Fsa19wYWdlX3JhbmdlX2RlYnVnJiMzNDssCiAgICAmIzM0O3B0ZHVtcF93YWxrX3BnZCYjMzQ7LAogICAgJiMzNDtwYWdldGFibGVfZnJlZV9rZXJuZWwmIzM0OywKICAgICYjMzQ7a2VybmVsX3BndGFibGVfZnJlZV9yY3UmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGtlcm5lbCBwYWdlIHRhYmxlIHdhbGtpbmcgYW5kIGZyZWVpbmcgbG9naWMuIEl0IGludHJvZHVjZXMgUkNVLWRlZmVycmVkIGZyZWVpbmcgZm9yIGtlcm5lbCBwYWdlIHRhYmxlcyBhbmQgY2hhbmdlcyB0aGUgZGVidWcgcGFnZSB0YWJsZSB3YWxrZXIgKHB0ZHVtcCkgdG8gd2FsayBrZXJuZWwgcGFnZSB0YWJsZXMgbG9ja2xlc3NseSB1bmRlciBSQ1UgaW4gYm91bmRlZCBjaHVua3MuIFRoaXMgaXMgYSBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IGNoYW5nZSB0aGF0IGFmZmVjdHMgaG93IGtlcm5lbCBwYWdlIHRhYmxlcyBhcmUgc2FmZWx5IGFjY2Vzc2VkIGFuZCBmcmVlZCBjb25jdXJyZW50bHkuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0wN1QwNjoyMzowMi4zMzMwNDU4MzdaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MzY5NDkxNTA2NTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiUFREVU1QX0RFQlVHRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ3YWxrX3BhZ2VfcmFuZ2VfZGVidWdcIixcbiAgICBcInB0ZHVtcF93YWxrX3BnZFwiLFxuICAgIFwicGFnZXRhYmxlX2ZyZWVfa2VybmVsXCIsXG4gICAgXCJrZXJuZWxfcGd0YWJsZV9mcmVlX3JjdVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBrZXJuZWwgcGFnZSB0YWJsZSB3YWxraW5nIGFuZCBmcmVlaW5nIGxvZ2ljLiBJdCBpbnRyb2R1Y2VzIFJDVS1kZWZlcnJlZCBmcmVlaW5nIGZvciBrZXJuZWwgcGFnZSB0YWJsZXMgYW5kIGNoYW5nZXMgdGhlIGRlYnVnIHBhZ2UgdGFibGUgd2Fsa2VyIChwdGR1bXApIHRvIHdhbGsga2VybmVsIHBhZ2UgdGFibGVzIGxvY2tsZXNzbHkgdW5kZXIgUkNVIGluIGJvdW5kZWQgY2h1bmtzLiBUaGlzIGlzIGEgY29yZSBtZW1vcnkgbWFuYWdlbWVudCBjaGFuZ2UgdGhhdCBhZmZlY3RzIGhvdyBrZXJuZWwgcGFnZSB0YWJsZXMgYXJlIHNhZmVseSBhY2Nlc3NlZCBhbmQgZnJlZWQgY29uY3VycmVudGx5LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QwNjoyMzowMi4zMzMwNTU0MzdaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg0NjY0MzQ5OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDQ1ZTFlMzNhMTdhM2NjMzM1NThlZGYzYmY4MzEwYWFiZGM5NjdkY2NcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFR1ZSBKdWwgNyAwNjoyMzowMCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvbW0vcGd0YWJsZS1mcmFnLmMgYi9hcmNoL3Bvd2VycGMvbW0vcGd0YWJsZS1mcmFnLmNcXG5pbmRleCBhZTc0MjU2NGEzZDU2ZC4uMWUxZTg4ZjgzMWY3NjcgMTAwNjQ0XFxuLS0tIGEvYXJjaC9wb3dlcnBjL21tL3BndGFibGUtZnJhZy5jXFxuKysrIGIvYXJjaC9wb3dlcnBjL21tL3BndGFibGUtZnJhZy5jXFxuQEAgLTEyMyw3ICsxMjMsMTIgQEAgdm9pZCBwdGVfZnJhZ21lbnRfZnJlZSh1bnNpZ25lZCBsb25nICp0YWJsZSwgaW50IGtlcm5lbClcXG4gXFxuIFxcdEJVR19PTihhdG9taWNfcmVhZChcXHUwMDI2cHRkZXNjLVxcdTAwM2VwdF9mcmFnX3JlZmNvdW50KSBcXHUwMDNjPSAwKTtcXG4gXFx0aWYgKGF0b21pY19kZWNfYW5kX3Rlc3QoXFx1MDAyNnB0ZGVzYy1cXHUwMDNlcHRfZnJhZ19yZWZjb3VudCkpIHtcXG4tXFx0XFx0aWYgKGtlcm5lbCB8fCAhZm9saW9fdGVzdF9jbGVhcl9hY3RpdmUocHRkZXNjX2ZvbGlvKHB0ZGVzYykpKVxcbitcXHRcXHQvKlxcbitcXHRcXHQgKiBLZXJuZWwgcGFnZSB0YWJsZXMgbWF5IGJlIHdhbGtlZCBsb2NrbGVzc2x5IHVuZGVyIFJDVSBieVxcbitcXHRcXHQgKiBwdGR1bXAsIHNvIGRlZmVyIHRoZWlyIGZyZWUgYnkgYSBncmFjZSBwZXJpb2QgdG9vLCBsaWtlIHRoZVxcbitcXHRcXHQgKiBsb2NrbGVzcy1HVVAgY2FzZSBiZWxvdyBmb3IgdXNlciB0YWJsZXMuXFxuK1xcdFxcdCAqL1xcbitcXHRcXHRpZiAoIWtlcm5lbCBcXHUwMDI2XFx1MDAyNiAhZm9saW9fdGVzdF9jbGVhcl9hY3RpdmUocHRkZXNjX2ZvbGlvKHB0ZGVzYykpKVxcbiBcXHRcXHRcXHRwdGVfZnJlZV9ub3coXFx1MDAyNnB0ZGVzYy1cXHUwMDNlcHRfcmN1X2hlYWQpO1xcbiBcXHRcXHRlbHNlXFxuIFxcdFxcdFxcdGNhbGxfcmN1KFxcdTAwMjZwdGRlc2MtXFx1MDAzZXB0X3JjdV9oZWFkLCBwdGVfZnJlZV9ub3cpO1xcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L21tLmggYi9pbmNsdWRlL2xpbnV4L21tLmhcXG5pbmRleCA0ODVkZjljMmRiZGRiMy4uNzk0MDhhMTdhMWIwZGEgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS9saW51eC9tbS5oXFxuKysrIGIvaW5jbHVkZS9saW51eC9tbS5oXFxuQEAgLTM2OTUsMTQgKzM2OTUsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgX19wYWdldGFibGVfZnJlZShzdHJ1Y3QgcHRkZXNjICpwdClcXG4gXFx0X19mcmVlX3BhZ2VzKHBhZ2UsIGNvbXBvdW5kX29yZGVyKHBhZ2UpKTtcXG4gfVxcbiBcXG4tI2lmZGVmIENPTkZJR19BU1lOQ19LRVJORUxfUEdUQUJMRV9GUkVFXFxuIHZvaWQgcGFnZXRhYmxlX2ZyZWVfa2VybmVsKHN0cnVjdCBwdGRlc2MgKnB0KTtcXG4tI2Vsc2VcXG4tc3RhdGljIGlubGluZSB2b2lkIHBhZ2V0YWJsZV9mcmVlX2tlcm5lbChzdHJ1Y3QgcHRkZXNjICpwdClcXG4te1xcbi1cXHRfX3BhZ2V0YWJsZV9mcmVlKHB0KTtcXG4tfVxcbi0jZW5kaWZcXG4gLyoqXFxuICAqIHBhZ2V0YWJsZV9mcmVlIC0gRnJlZSBwYWdldGFibGVzXFxuICAqIEBwdDpcXHRUaGUgcGFnZSB0YWJsZSBkZXNjcmlwdG9yXFxuZGlmZiAtLWdpdCBhL21tL3BhZ2V3YWxrLmMgYi9tbS9wYWdld2Fsay5jXFxuaW5kZXggM2FlMjU4NmZmNDViNDQuLmZjMmZlMDE0YWM4YzY4IDEwMDY0NFxcbi0tLSBhL21tL3BhZ2V3YWxrLmNcXG4rKysgYi9tbS9wYWdld2Fsay5jXFxuQEAgLTYyMCw3ICs2MjAsNyBAQCBpbnQgd2Fsa19wYWdlX3JhbmdlKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCB1bnNpZ25lZCBsb25nIHN0YXJ0LFxcbiAgKiBOb3RlOiBCZSBjYXJlZnVsIHRvIHdhbGsgdGhlIGtlcm5lbCBwYWdlcyB0YWJsZXMsIHRoZSBjYWxsZXIgbWF5IGJlIG5lZWQgdG9cXG4gICogdGFrZSBvdGhlciBlZmZlY3RpdmUgYXBwcm9hY2hlcyAobW1hcCBsb2NrIG1heSBiZSBpbnN1ZmZpY2llbnQpIHRvIHByZXZlbnRcXG4gICogdGhlIGludGVybWVkaWF0ZSBrZXJuZWwgcGFnZSB0YWJsZXMgYmVsb25naW5nIHRvIHRoZSBzcGVjaWZpZWQgYWRkcmVzcyByYW5nZVxcbi0gKiBmcm9tIGJlaW5nIGZyZWVkIChlLmcuIG1lbW9yeSBob3QtcmVtb3ZlKS5cXG4rICogZnJvbSBiZWluZyBmcmVlZCAoZS5nLiBtZW1vcnkgaG90LXJlbW92ZSwgdm1hcCBodWdlIHBhZ2UgcHJvbW90aW9uKS5cXG4gICovXFxuIGludCB3YWxrX2tlcm5lbF9wYWdlX3RhYmxlX3JhbmdlKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kLFxcbiBcXHRcXHRjb25zdCBzdHJ1Y3QgbW1fd2Fsa19vcHMgKm9wcywgcGdkX3QgKnBnZCwgdm9pZCAqcHJpdmF0ZSlcXG5AQCAtNjQzLDcgKzY0Myw3IEBAIGludCB3YWxrX2tlcm5lbF9wYWdlX3RhYmxlX3JhbmdlKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kLFxcbiAgKiBVc2UgdGhpcyBmdW5jdGlvbiB0byB3YWxrIHRoZSBrZXJuZWwgcGFnZSB0YWJsZXMgbG9ja2xlc3NseS4gSXQgc2hvdWxkIGJlXFxuICAqIGd1YXJhbnRlZWQgdGhhdCB0aGUgY2FsbGVyIGhhcyBleGNsdXNpdmUgYWNjZXNzIG92ZXIgdGhlIHJhbmdlIHRoZXkgYXJlXFxuICAqIG9wZXJhdGluZyBvbiAtIHRoYXQgdGhlcmUgc2hvdWxkIGJlIG5vIGNvbmN1cnJlbnQgYWNjZXNzLCBmb3IgZXhhbXBsZSxcXG4tICogY2hhbmdpbmcgcGVybWlzc2lvbnMgZm9yIHZtYWxsb2Mgb2JqZWN0cy5cXG4rICogY2hhbmdpbmcgcGVybWlzc2lvbnMgZm9yIHZtYWxsb2Mgb2JqZWN0cywgb3Igdm1hcCBodWdlIHBhZ2UgcHJvbW90aW9uLlxcbiAgKi9cXG4gaW50IHdhbGtfa2VybmVsX3BhZ2VfdGFibGVfcmFuZ2VfbG9ja2xlc3ModW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQsXFxuIFxcdFxcdGNvbnN0IHN0cnVjdCBtbV93YWxrX29wcyAqb3BzLCBwZ2RfdCAqcGdkLCB2b2lkICpwcml2YXRlKVxcbkBAIC02OTIsOSArNjkyLDM1IEBAIGludCB3YWxrX3BhZ2VfcmFuZ2VfZGVidWcoc3RydWN0IG1tX3N0cnVjdCAqbW0sIHVuc2lnbmVkIGxvbmcgc3RhcnQsXFxuIFxcdH07XFxuIFxcbiBcXHQvKiBGb3IgY29udmVuaWVuY2UsIHdlIGFsbG93IHRyYXZlcnNhbCBvZiBrZXJuZWwgbWFwcGluZ3MuICovXFxuLVxcdGlmIChtbSA9PSBcXHUwMDI2aW5pdF9tbSlcXG4tXFx0XFx0cmV0dXJuIHdhbGtfa2VybmVsX3BhZ2VfdGFibGVfcmFuZ2Uoc3RhcnQsIGVuZCwgb3BzLFxcbi1cXHRcXHRcXHRcXHRcXHRcXHQgICAgcGdkLCBwcml2YXRlKTtcXG4rXFx0aWYgKG1tID09IFxcdTAwMjZpbml0X21tKSB7XFxuK1xcdFxcdHVuc2lnbmVkIGxvbmcgYWRkciA9IHN0YXJ0O1xcbitcXG4rXFx0XFx0LypcXG4rXFx0XFx0ICogV2FsayBpbiBib3VuZGVkIGNodW5rcyBzbyB0aGUgUkNVIHJlYWQgbG9jayBpcyBuZXZlciBoZWxkXFxuK1xcdFxcdCAqIGFjcm9zcyB0aGUgd2hvbGUga2VybmVsIGFkZHJlc3Mgc3BhY2UuICBBIGtlcm5lbCBwYWdlIHRhYmxlXFxuK1xcdFxcdCAqIGZyZWVkIHZpYSBwYWdldGFibGVfZnJlZV9rZXJuZWwoKSBzdGF5cyB2YWxpZCB1bnRpbCB0aGUgd2Fsa1xcbitcXHRcXHQgKiB0aGF0IG1heSBoYXZlIG9ic2VydmVkIGl0IGRyb3BzIHRoZSBsb2NrOyByZWxlYXNpbmcgdGhlIGxvY2tcXG4rXFx0XFx0ICogYmV0d2VlbiBjaHVua3MgaXMgc2FmZSBhcyBubyBwYWdlIHRhYmxlIHBvaW50ZXIgaXMgaGVsZFxcbitcXHRcXHQgKiBhY3Jvc3MgdGhlIGdhcC4gVGhlIG1tYXAgbG9jayBpcyBub3QgaGVsZCwgc28gdXNlIHRoZVxcbitcXHRcXHQgKiBsb2NrbGVzcyB3YWxrZXI7IFJDVSwgbm90IHRoZSBsb2NrLCBrZWVwcyB0aGUgdGFibGUgYWxpdmUuXFxuK1xcdFxcdCAqL1xcbitcXHRcXHR3aGlsZSAoYWRkciBcXHUwMDNjIGVuZCkge1xcbitcXHRcXHRcXHR1bnNpZ25lZCBsb25nIG5leHQgPSBwZ2RfYWRkcl9lbmQoYWRkciwgZW5kKTtcXG4rXFx0XFx0XFx0aW50IGVycjtcXG4rXFxuK1xcdFxcdFxcdHJjdV9yZWFkX2xvY2soKTtcXG4rXFx0XFx0XFx0ZXJyID0gd2Fsa19rZXJuZWxfcGFnZV90YWJsZV9yYW5nZV9sb2NrbGVzcyhhZGRyLCBuZXh0LCBvcHMsXFxuK1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgICBwZ2QsIHByaXZhdGUpO1xcbitcXHRcXHRcXHRyY3VfcmVhZF91bmxvY2soKTtcXG4rXFx0XFx0XFx0aWYgKGVycilcXG4rXFx0XFx0XFx0XFx0cmV0dXJuIGVycjtcXG4rXFxuK1xcdFxcdFxcdGFkZHIgPSBuZXh0O1xcbitcXHRcXHRcXHRjb25kX3Jlc2NoZWQoKTtcXG4rXFx0XFx0fVxcbitcXHRcXHRyZXR1cm4gMDtcXG4rXFx0fVxcbitcXG4gXFx0aWYgKHN0YXJ0IFxcdTAwM2U9IGVuZCB8fCAhd2Fsay5tbSlcXG4gXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIFxcdGlmICghY2hlY2tfb3BzX3NhZmUob3BzKSlcXG5kaWZmIC0tZ2l0IGEvbW0vcGd0YWJsZS1nZW5lcmljLmMgYi9tbS9wZ3RhYmxlLWdlbmVyaWMuY1xcbmluZGV4IGI5MWIxYTk4MDI5YzdmLi43YTMyZTQ4MjE5NTdjYyAxMDA2NDRcXG4tLS0gYS9tbS9wZ3RhYmxlLWdlbmVyaWMuY1xcbisrKyBiL21tL3BndGFibGUtZ2VuZXJpYy5jXFxuQEAgLTQxMCw2ICs0MTAsMTMgQEAgcHRlX3QgKnB0ZV9vZmZzZXRfbWFwX2xvY2soc3RydWN0IG1tX3N0cnVjdCAqbW0sIHBtZF90ICpwbWQsXFxuIFxcdGdvdG8gYWdhaW47XFxuIH1cXG4gXFxuK3N0YXRpYyB2b2lkIGtlcm5lbF9wZ3RhYmxlX2ZyZWVfcmN1KHN0cnVjdCByY3VfaGVhZCAqaGVhZClcXG4re1xcbitcXHRzdHJ1Y3QgcHRkZXNjICpwdCA9IGNvbnRhaW5lcl9vZihoZWFkLCBzdHJ1Y3QgcHRkZXNjLCBwdF9yY3VfaGVhZCk7XFxuK1xcbitcXHRfX3BhZ2V0YWJsZV9mcmVlKHB0KTtcXG4rfVxcbitcXG4gI2lmZGVmIENPTkZJR19BU1lOQ19LRVJORUxfUEdUQUJMRV9GUkVFXFxuIHN0YXRpYyB2b2lkIGtlcm5lbF9wZ3RhYmxlX3dvcmtfZnVuYyhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspO1xcbiBcXG5AQCAtNDM0LDggKzQ0MSwxNSBAQCBzdGF0aWMgdm9pZCBrZXJuZWxfcGd0YWJsZV93b3JrX2Z1bmMoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbiBcXHRzcGluX3VubG9jayhcXHUwMDI2a2VybmVsX3BndGFibGVfd29yay5sb2NrKTtcXG4gXFxuIFxcdGlvbW11X3N2YV9pbnZhbGlkYXRlX2t2YV9yYW5nZShQQUdFX09GRlNFVCwgVExCX0ZMVVNIX0FMTCk7XFxuK1xcbitcXHQvKlxcbitcXHQgKiBEZWJ1ZyB3YWxrZXJzIChwdGR1bXApIG1heSB3YWxrIHJhbmdlcyB0aGV5IGRvIG5vdCBvd24gYW5kIHJhY2UgdGhpc1xcbitcXHQgKiBmcmVlLCBzbyB0aGV5IHdhbGsgdW5kZXIgcmN1X3JlYWRfbG9jaygpLiBGcmVlIGFmdGVyIGEgZ3JhY2UgcGVyaW9kOlxcbitcXHQgKiBhIHdhbGtlciBlaXRoZXIgYWxyZWFkeSBzYXcgdGhlIGNsZWFyZWQgUE1ELCBvciBrZWVwcyB0aGUgcGFnZSBhbGl2ZVxcbitcXHQgKiB1bnRpbCBpdCBkcm9wcyB0aGUgUkNVIGxvY2suXFxuK1xcdCAqL1xcbiBcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUocHQsIG5leHQsIFxcdTAwMjZwYWdlX2xpc3QsIHB0X2xpc3QpXFxuLVxcdFxcdF9fcGFnZXRhYmxlX2ZyZWUocHQpO1xcbitcXHRcXHRjYWxsX3JjdShcXHUwMDI2cHQtXFx1MDAzZXB0X3JjdV9oZWFkLCBrZXJuZWxfcGd0YWJsZV9mcmVlX3JjdSk7XFxuIH1cXG4gXFxuIHZvaWQgcGFnZXRhYmxlX2ZyZWVfa2VybmVsKHN0cnVjdCBwdGRlc2MgKnB0KVxcbkBAIC00NDYsNCArNDYwLDEwIEBAIHZvaWQgcGFnZXRhYmxlX2ZyZWVfa2VybmVsKHN0cnVjdCBwdGRlc2MgKnB0KVxcbiBcXG4gXFx0c2NoZWR1bGVfd29yayhcXHUwMDI2a2VybmVsX3BndGFibGVfd29yay53b3JrKTtcXG4gfVxcbisjZWxzZVxcbit2b2lkIHBhZ2V0YWJsZV9mcmVlX2tlcm5lbChzdHJ1Y3QgcHRkZXNjICpwdClcXG4re1xcbitcXHQvKiBEZWZlciB0aGUgZnJlZSBieSBhIGdyYWNlIHBlcmlvZDsgc2VlIGtlcm5lbF9wZ3RhYmxlX3dvcmtfZnVuYygpLiAqL1xcbitcXHRjYWxsX3JjdShcXHUwMDI2cHQtXFx1MDAzZXB0X3JjdV9oZWFkLCBrZXJuZWxfcGd0YWJsZV9mcmVlX3JjdSk7XFxuK31cXG4gI2VuZGlmXFxuZGlmZiAtLWdpdCBhL21tL3B0ZHVtcC5jIGIvbW0vcHRkdW1wLmNcXG5pbmRleCA5NzMwMjAwMDAwOTZjZi4uNTM3YmU5OTk1ZTFhM2MgMTAwNjQ0XFxuLS0tIGEvbW0vcHRkdW1wLmNcXG4rKysgYi9tbS9wdGR1bXAuY1xcbkBAIC0xNzcsMTMgKzE3NywyMCBAQCB2b2lkIHB0ZHVtcF93YWxrX3BnZChzdHJ1Y3QgcHRkdW1wX3N0YXRlICpzdCwgc3RydWN0IG1tX3N0cnVjdCAqbW0sIHBnZF90ICpwZ2QpXFxuIFxcdGNvbnN0IHN0cnVjdCBwdGR1bXBfcmFuZ2UgKnJhbmdlID0gc3QtXFx1MDAzZXJhbmdlO1xcbiBcXG4gXFx0Z2V0X29ubGluZV9tZW1zKCk7XFxuLVxcdG1tYXBfd3JpdGVfbG9jayhtbSk7XFxuK1xcdC8qXFxuK1xcdCAqIGluaXRfbW0gaXMgd2Fsa2VkIGxvY2tsZXNzbHkgdW5kZXIgUkNVIGJ5IHdhbGtfcGFnZV9yYW5nZV9kZWJ1ZygpLlxcbitcXHQgKiBlZmlfbW0gLyBjdXJyZW50LVxcdTAwM2VtbSBwYWdlIHRhYmxlcyBhcmUgbm90IFJDVS1mcmVlZCwgc28gaG9sZCB0aGVcXG4rXFx0ICogbW1hcCB3cml0ZSBsb2NrIHRvIGtlZXAgdGhlbSBzdGFibGUgYWdhaW5zdCBjb25jdXJyZW50IHRlYXJkb3duLlxcbitcXHQgKi9cXG4rXFx0aWYgKG1tICE9IFxcdTAwMjZpbml0X21tKVxcbitcXHRcXHRtbWFwX3dyaXRlX2xvY2sobW0pO1xcbiBcXHR3aGlsZSAocmFuZ2UtXFx1MDAzZXN0YXJ0ICE9IHJhbmdlLVxcdTAwM2VlbmQpIHtcXG4gXFx0XFx0d2Fsa19wYWdlX3JhbmdlX2RlYnVnKG1tLCByYW5nZS1cXHUwMDNlc3RhcnQsIHJhbmdlLVxcdTAwM2VlbmQsXFxuIFxcdFxcdFxcdFxcdCAgICAgIFxcdTAwMjZwdGR1bXBfb3BzLCBwZ2QsIHN0KTtcXG4gXFx0XFx0cmFuZ2UrKztcXG4gXFx0fVxcbi1cXHRtbWFwX3dyaXRlX3VubG9jayhtbSk7XFxuK1xcdGlmIChtbSAhPSBcXHUwMDI2aW5pdF9tbSlcXG4rXFx0XFx0bW1hcF93cml0ZV91bmxvY2sobW0pO1xcbiBcXHRwdXRfb25saW5lX21lbXMoKTtcXG4gXFxuIFxcdC8qIEZsdXNoIG91dCB0aGUgbGFzdCBwYWdlICovXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDA2OjIzOjAzLjE4MTcwOTg3NVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjM2MTAwNDc2MTI1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlBURFVNUF9ERUJVR0ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwid2Fsa19wYWdlX3JhbmdlX2RlYnVnXCIsXG4gICAgXCJwdGR1bXBfd2Fsa19wZ2RcIixcbiAgICBcInBhZ2V0YWJsZV9mcmVlX2tlcm5lbFwiLFxuICAgIFwia2VybmVsX3BndGFibGVfZnJlZV9yY3VcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUga2VybmVsIHBhZ2UgdGFibGUgd2Fsa2luZyBhbmQgZnJlZWluZyBsb2dpYy4gSXQgaW50cm9kdWNlcyBSQ1UtZGVmZXJyZWQgZnJlZWluZyBmb3Iga2VybmVsIHBhZ2UgdGFibGVzIGFuZCBjaGFuZ2VzIHRoZSBkZWJ1ZyBwYWdlIHRhYmxlIHdhbGtlciAocHRkdW1wKSB0byB3YWxrIGtlcm5lbCBwYWdlIHRhYmxlcyBsb2NrbGVzc2x5IHVuZGVyIFJDVSBpbiBib3VuZGVkIGNodW5rcy4gVGhpcyBpcyBhIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgY2hhbmdlIHRoYXQgYWZmZWN0cyBob3cga2VybmVsIHBhZ2UgdGFibGVzIGFyZSBzYWZlbHkgYWNjZXNzZWQgYW5kIGZyZWVkIGNvbmN1cnJlbnRseS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA0NWUxZTMzYTE3YTNjYzMzNTU4ZWRmM2JmODMxMGFhYmRjOTY3ZGNjXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBKdWwgNyAwNjoyMzowMCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9tbS9wZ3RhYmxlLWZyYWcuYyBiL2FyY2gvcG93ZXJwYy9tbS9wZ3RhYmxlLWZyYWcuY1xuaW5kZXggYWU3NDI1NjRhM2Q1NmQuLjFlMWU4OGY4MzFmNzY3IDEwMDY0NFxuLS0tIGEvYXJjaC9wb3dlcnBjL21tL3BndGFibGUtZnJhZy5jXG4rKysgYi9hcmNoL3Bvd2VycGMvbW0vcGd0YWJsZS1mcmFnLmNcbkBAIC0xMjMsNyArMTIzLDEyIEBAIHZvaWQgcHRlX2ZyYWdtZW50X2ZyZWUodW5zaWduZWQgbG9uZyAqdGFibGUsIGludCBrZXJuZWwpXG4gXG4gXHRCVUdfT04oYXRvbWljX3JlYWQoXHUwMDI2cHRkZXNjLVx1MDAzZXB0X2ZyYWdfcmVmY291bnQpIFx1MDAzYz0gMCk7XG4gXHRpZiAoYXRvbWljX2RlY19hbmRfdGVzdChcdTAwMjZwdGRlc2MtXHUwMDNlcHRfZnJhZ19yZWZjb3VudCkpIHtcbi1cdFx0aWYgKGtlcm5lbCB8fCAhZm9saW9fdGVzdF9jbGVhcl9hY3RpdmUocHRkZXNjX2ZvbGlvKHB0ZGVzYykpKVxuK1x0XHQvKlxuK1x0XHQgKiBLZXJuZWwgcGFnZSB0YWJsZXMgbWF5IGJlIHdhbGtlZCBsb2NrbGVzc2x5IHVuZGVyIFJDVSBieVxuK1x0XHQgKiBwdGR1bXAsIHNvIGRlZmVyIHRoZWlyIGZyZWUgYnkgYSBncmFjZSBwZXJpb2QgdG9vLCBsaWtlIHRoZVxuK1x0XHQgKiBsb2NrbGVzcy1HVVAgY2FzZSBiZWxvdyBmb3IgdXNlciB0YWJsZXMuXG4rXHRcdCAqL1xuK1x0XHRpZiAoIWtlcm5lbCBcdTAwMjZcdTAwMjYgIWZvbGlvX3Rlc3RfY2xlYXJfYWN0aXZlKHB0ZGVzY19mb2xpbyhwdGRlc2MpKSlcbiBcdFx0XHRwdGVfZnJlZV9ub3coXHUwMDI2cHRkZXNjLVx1MDAzZXB0X3JjdV9oZWFkKTtcbiBcdFx0ZWxzZVxuIFx0XHRcdGNhbGxfcmN1KFx1MDAyNnB0ZGVzYy1cdTAwM2VwdF9yY3VfaGVhZCwgcHRlX2ZyZWVfbm93KTtcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L21tLmggYi9pbmNsdWRlL2xpbnV4L21tLmhcbmluZGV4IDQ4NWRmOWMyZGJkZGIzLi43OTQwOGExN2ExYjBkYSAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvbW0uaFxuKysrIGIvaW5jbHVkZS9saW51eC9tbS5oXG5AQCAtMzY5NSwxNCArMzY5NSw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBfX3BhZ2V0YWJsZV9mcmVlKHN0cnVjdCBwdGRlc2MgKnB0KVxuIFx0X19mcmVlX3BhZ2VzKHBhZ2UsIGNvbXBvdW5kX29yZGVyKHBhZ2UpKTtcbiB9XG4gXG4tI2lmZGVmIENPTkZJR19BU1lOQ19LRVJORUxfUEdUQUJMRV9GUkVFXG4gdm9pZCBwYWdldGFibGVfZnJlZV9rZXJuZWwoc3RydWN0IHB0ZGVzYyAqcHQpO1xuLSNlbHNlXG4tc3RhdGljIGlubGluZSB2b2lkIHBhZ2V0YWJsZV9mcmVlX2tlcm5lbChzdHJ1Y3QgcHRkZXNjICpwdClcbi17XG4tXHRfX3BhZ2V0YWJsZV9mcmVlKHB0KTtcbi19XG4tI2VuZGlmXG4gLyoqXG4gICogcGFnZXRhYmxlX2ZyZWUgLSBGcmVlIHBhZ2V0YWJsZXNcbiAgKiBAcHQ6XHRUaGUgcGFnZSB0YWJsZSBkZXNjcmlwdG9yXG5kaWZmIC0tZ2l0IGEvbW0vcGFnZXdhbGsuYyBiL21tL3BhZ2V3YWxrLmNcbmluZGV4IDNhZTI1ODZmZjQ1YjQ0Li5mYzJmZTAxNGFjOGM2OCAxMDA2NDRcbi0tLSBhL21tL3BhZ2V3YWxrLmNcbisrKyBiL21tL3BhZ2V3YWxrLmNcbkBAIC02MjAsNyArNjIwLDcgQEAgaW50IHdhbGtfcGFnZV9yYW5nZShzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5zaWduZWQgbG9uZyBzdGFydCxcbiAgKiBOb3RlOiBCZSBjYXJlZnVsIHRvIHdhbGsgdGhlIGtlcm5lbCBwYWdlcyB0YWJsZXMsIHRoZSBjYWxsZXIgbWF5IGJlIG5lZWQgdG9cbiAgKiB0YWtlIG90aGVyIGVmZmVjdGl2ZSBhcHByb2FjaGVzIChtbWFwIGxvY2sgbWF5IGJlIGluc3VmZmljaWVudCkgdG8gcHJldmVudFxuICAqIHRoZSBpbnRlcm1lZGlhdGUga2VybmVsIHBhZ2UgdGFibGVzIGJlbG9uZ2luZyB0byB0aGUgc3BlY2lmaWVkIGFkZHJlc3MgcmFuZ2Vcbi0gKiBmcm9tIGJlaW5nIGZyZWVkIChlLmcuIG1lbW9yeSBob3QtcmVtb3ZlKS5cbisgKiBmcm9tIGJlaW5nIGZyZWVkIChlLmcuIG1lbW9yeSBob3QtcmVtb3ZlLCB2bWFwIGh1Z2UgcGFnZSBwcm9tb3Rpb24pLlxuICAqL1xuIGludCB3YWxrX2tlcm5lbF9wYWdlX3RhYmxlX3JhbmdlKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kLFxuIFx0XHRjb25zdCBzdHJ1Y3QgbW1fd2Fsa19vcHMgKm9wcywgcGdkX3QgKnBnZCwgdm9pZCAqcHJpdmF0ZSlcbkBAIC02NDMsNyArNjQzLDcgQEAgaW50IHdhbGtfa2VybmVsX3BhZ2VfdGFibGVfcmFuZ2UodW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQsXG4gICogVXNlIHRoaXMgZnVuY3Rpb24gdG8gd2FsayB0aGUga2VybmVsIHBhZ2UgdGFibGVzIGxvY2tsZXNzbHkuIEl0IHNob3VsZCBiZVxuICAqIGd1YXJhbnRlZWQgdGhhdCB0aGUgY2FsbGVyIGhhcyBleGNsdXNpdmUgYWNjZXNzIG92ZXIgdGhlIHJhbmdlIHRoZXkgYXJlXG4gICogb3BlcmF0aW5nIG9uIC0gdGhhdCB0aGVyZSBzaG91bGQgYmUgbm8gY29uY3VycmVudCBhY2Nlc3MsIGZvciBleGFtcGxlLFxuLSAqIGNoYW5naW5nIHBlcm1pc3Npb25zIGZvciB2bWFsbG9jIG9iamVjdHMuXG4rICogY2hhbmdpbmcgcGVybWlzc2lvbnMgZm9yIHZtYWxsb2Mgb2JqZWN0cywgb3Igdm1hcCBodWdlIHBhZ2UgcHJvbW90aW9uLlxuICAqL1xuIGludCB3YWxrX2tlcm5lbF9wYWdlX3RhYmxlX3JhbmdlX2xvY2tsZXNzKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kLFxuIFx0XHRjb25zdCBzdHJ1Y3QgbW1fd2Fsa19vcHMgKm9wcywgcGdkX3QgKnBnZCwgdm9pZCAqcHJpdmF0ZSlcbkBAIC02OTIsOSArNjkyLDM1IEBAIGludCB3YWxrX3BhZ2VfcmFuZ2VfZGVidWcoc3RydWN0IG1tX3N0cnVjdCAqbW0sIHVuc2lnbmVkIGxvbmcgc3RhcnQsXG4gXHR9O1xuIFxuIFx0LyogRm9yIGNvbnZlbmllbmNlLCB3ZSBhbGxvdyB0cmF2ZXJzYWwgb2Yga2VybmVsIG1hcHBpbmdzLiAqL1xuLVx0aWYgKG1tID09IFx1MDAyNmluaXRfbW0pXG4tXHRcdHJldHVybiB3YWxrX2tlcm5lbF9wYWdlX3RhYmxlX3JhbmdlKHN0YXJ0LCBlbmQsIG9wcyxcbi1cdFx0XHRcdFx0XHQgICAgcGdkLCBwcml2YXRlKTtcbitcdGlmIChtbSA9PSBcdTAwMjZpbml0X21tKSB7XG4rXHRcdHVuc2lnbmVkIGxvbmcgYWRkciA9IHN0YXJ0O1xuK1xuK1x0XHQvKlxuK1x0XHQgKiBXYWxrIGluIGJvdW5kZWQgY2h1bmtzIHNvIHRoZSBSQ1UgcmVhZCBsb2NrIGlzIG5ldmVyIGhlbGRcbitcdFx0ICogYWNyb3NzIHRoZSB3aG9sZSBrZXJuZWwgYWRkcmVzcyBzcGFjZS4gIEEga2VybmVsIHBhZ2UgdGFibGVcbitcdFx0ICogZnJlZWQgdmlhIHBhZ2V0YWJsZV9mcmVlX2tlcm5lbCgpIHN0YXlzIHZhbGlkIHVudGlsIHRoZSB3YWxrXG4rXHRcdCAqIHRoYXQgbWF5IGhhdmUgb2JzZXJ2ZWQgaXQgZHJvcHMgdGhlIGxvY2s7IHJlbGVhc2luZyB0aGUgbG9ja1xuK1x0XHQgKiBiZXR3ZWVuIGNodW5rcyBpcyBzYWZlIGFzIG5vIHBhZ2UgdGFibGUgcG9pbnRlciBpcyBoZWxkXG4rXHRcdCAqIGFjcm9zcyB0aGUgZ2FwLiBUaGUgbW1hcCBsb2NrIGlzIG5vdCBoZWxkLCBzbyB1c2UgdGhlXG4rXHRcdCAqIGxvY2tsZXNzIHdhbGtlcjsgUkNVLCBub3QgdGhlIGxvY2ssIGtlZXBzIHRoZSB0YWJsZSBhbGl2ZS5cbitcdFx0ICovXG4rXHRcdHdoaWxlIChhZGRyIFx1MDAzYyBlbmQpIHtcbitcdFx0XHR1bnNpZ25lZCBsb25nIG5leHQgPSBwZ2RfYWRkcl9lbmQoYWRkciwgZW5kKTtcbitcdFx0XHRpbnQgZXJyO1xuK1xuK1x0XHRcdHJjdV9yZWFkX2xvY2soKTtcbitcdFx0XHRlcnIgPSB3YWxrX2tlcm5lbF9wYWdlX3RhYmxlX3JhbmdlX2xvY2tsZXNzKGFkZHIsIG5leHQsIG9wcyxcbitcdFx0XHRcdFx0XHRcdFx0ICAgIHBnZCwgcHJpdmF0ZSk7XG4rXHRcdFx0cmN1X3JlYWRfdW5sb2NrKCk7XG4rXHRcdFx0aWYgKGVycilcbitcdFx0XHRcdHJldHVybiBlcnI7XG4rXG4rXHRcdFx0YWRkciA9IG5leHQ7XG4rXHRcdFx0Y29uZF9yZXNjaGVkKCk7XG4rXHRcdH1cbitcdFx0cmV0dXJuIDA7XG4rXHR9XG4rXG4gXHRpZiAoc3RhcnQgXHUwMDNlPSBlbmQgfHwgIXdhbGsubW0pXG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFx0aWYgKCFjaGVja19vcHNfc2FmZShvcHMpKVxuZGlmZiAtLWdpdCBhL21tL3BndGFibGUtZ2VuZXJpYy5jIGIvbW0vcGd0YWJsZS1nZW5lcmljLmNcbmluZGV4IGI5MWIxYTk4MDI5YzdmLi43YTMyZTQ4MjE5NTdjYyAxMDA2NDRcbi0tLSBhL21tL3BndGFibGUtZ2VuZXJpYy5jXG4rKysgYi9tbS9wZ3RhYmxlLWdlbmVyaWMuY1xuQEAgLTQxMCw2ICs0MTAsMTMgQEAgcHRlX3QgKnB0ZV9vZmZzZXRfbWFwX2xvY2soc3RydWN0IG1tX3N0cnVjdCAqbW0sIHBtZF90ICpwbWQsXG4gXHRnb3RvIGFnYWluO1xuIH1cbiBcbitzdGF0aWMgdm9pZCBrZXJuZWxfcGd0YWJsZV9mcmVlX3JjdShzdHJ1Y3QgcmN1X2hlYWQgKmhlYWQpXG4re1xuK1x0c3RydWN0IHB0ZGVzYyAqcHQgPSBjb250YWluZXJfb2YoaGVhZCwgc3RydWN0IHB0ZGVzYywgcHRfcmN1X2hlYWQpO1xuK1xuK1x0X19wYWdldGFibGVfZnJlZShwdCk7XG4rfVxuK1xuICNpZmRlZiBDT05GSUdfQVNZTkNfS0VSTkVMX1BHVEFCTEVfRlJFRVxuIHN0YXRpYyB2b2lkIGtlcm5lbF9wZ3RhYmxlX3dvcmtfZnVuYyhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspO1xuIFxuQEAgLTQzNCw4ICs0NDEsMTUgQEAgc3RhdGljIHZvaWQga2VybmVsX3BndGFibGVfd29ya19mdW5jKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbiBcdHNwaW5fdW5sb2NrKFx1MDAyNmtlcm5lbF9wZ3RhYmxlX3dvcmsubG9jayk7XG4gXG4gXHRpb21tdV9zdmFfaW52YWxpZGF0ZV9rdmFfcmFuZ2UoUEFHRV9PRkZTRVQsIFRMQl9GTFVTSF9BTEwpO1xuK1xuK1x0LypcbitcdCAqIERlYnVnIHdhbGtlcnMgKHB0ZHVtcCkgbWF5IHdhbGsgcmFuZ2VzIHRoZXkgZG8gbm90IG93biBhbmQgcmFjZSB0aGlzXG4rXHQgKiBmcmVlLCBzbyB0aGV5IHdhbGsgdW5kZXIgcmN1X3JlYWRfbG9jaygpLiBGcmVlIGFmdGVyIGEgZ3JhY2UgcGVyaW9kOlxuK1x0ICogYSB3YWxrZXIgZWl0aGVyIGFscmVhZHkgc2F3IHRoZSBjbGVhcmVkIFBNRCwgb3Iga2VlcHMgdGhlIHBhZ2UgYWxpdmVcbitcdCAqIHVudGlsIGl0IGRyb3BzIHRoZSBSQ1UgbG9jay5cbitcdCAqL1xuIFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHB0LCBuZXh0LCBcdTAwMjZwYWdlX2xpc3QsIHB0X2xpc3QpXG4tXHRcdF9fcGFnZXRhYmxlX2ZyZWUocHQpO1xuK1x0XHRjYWxsX3JjdShcdTAwMjZwdC1cdTAwM2VwdF9yY3VfaGVhZCwga2VybmVsX3BndGFibGVfZnJlZV9yY3UpO1xuIH1cbiBcbiB2b2lkIHBhZ2V0YWJsZV9mcmVlX2tlcm5lbChzdHJ1Y3QgcHRkZXNjICpwdClcbkBAIC00NDYsNCArNDYwLDEwIEBAIHZvaWQgcGFnZXRhYmxlX2ZyZWVfa2VybmVsKHN0cnVjdCBwdGRlc2MgKnB0KVxuIFxuIFx0c2NoZWR1bGVfd29yayhcdTAwMjZrZXJuZWxfcGd0YWJsZV93b3JrLndvcmspO1xuIH1cbisjZWxzZVxuK3ZvaWQgcGFnZXRhYmxlX2ZyZWVfa2VybmVsKHN0cnVjdCBwdGRlc2MgKnB0KVxuK3tcbitcdC8qIERlZmVyIHRoZSBmcmVlIGJ5IGEgZ3JhY2UgcGVyaW9kOyBzZWUga2VybmVsX3BndGFibGVfd29ya19mdW5jKCkuICovXG4rXHRjYWxsX3JjdShcdTAwMjZwdC1cdTAwM2VwdF9yY3VfaGVhZCwga2VybmVsX3BndGFibGVfZnJlZV9yY3UpO1xuK31cbiAjZW5kaWZcbmRpZmYgLS1naXQgYS9tbS9wdGR1bXAuYyBiL21tL3B0ZHVtcC5jXG5pbmRleCA5NzMwMjAwMDAwOTZjZi4uNTM3YmU5OTk1ZTFhM2MgMTAwNjQ0XG4tLS0gYS9tbS9wdGR1bXAuY1xuKysrIGIvbW0vcHRkdW1wLmNcbkBAIC0xNzcsMTMgKzE3NywyMCBAQCB2b2lkIHB0ZHVtcF93YWxrX3BnZChzdHJ1Y3QgcHRkdW1wX3N0YXRlICpzdCwgc3RydWN0IG1tX3N0cnVjdCAqbW0sIHBnZF90ICpwZ2QpXG4gXHRjb25zdCBzdHJ1Y3QgcHRkdW1wX3JhbmdlICpyYW5nZSA9IHN0LVx1MDAzZXJhbmdlO1xuIFxuIFx0Z2V0X29ubGluZV9tZW1zKCk7XG4tXHRtbWFwX3dyaXRlX2xvY2sobW0pO1xuK1x0LypcbitcdCAqIGluaXRfbW0gaXMgd2Fsa2VkIGxvY2tsZXNzbHkgdW5kZXIgUkNVIGJ5IHdhbGtfcGFnZV9yYW5nZV9kZWJ1ZygpLlxuK1x0ICogZWZpX21tIC8gY3VycmVudC1cdTAwM2VtbSBwYWdlIHRhYmxlcyBhcmUgbm90IFJDVS1mcmVlZCwgc28gaG9sZCB0aGVcbitcdCAqIG1tYXAgd3JpdGUgbG9jayB0byBrZWVwIHRoZW0gc3RhYmxlIGFnYWluc3QgY29uY3VycmVudCB0ZWFyZG93bi5cbitcdCAqL1xuK1x0aWYgKG1tICE9IFx1MDAyNmluaXRfbW0pXG4rXHRcdG1tYXBfd3JpdGVfbG9jayhtbSk7XG4gXHR3aGlsZSAocmFuZ2UtXHUwMDNlc3RhcnQgIT0gcmFuZ2UtXHUwMDNlZW5kKSB7XG4gXHRcdHdhbGtfcGFnZV9yYW5nZV9kZWJ1ZyhtbSwgcmFuZ2UtXHUwMDNlc3RhcnQsIHJhbmdlLVx1MDAzZWVuZCxcbiBcdFx0XHRcdCAgICAgIFx1MDAyNnB0ZHVtcF9vcHMsIHBnZCwgc3QpO1xuIFx0XHRyYW5nZSsrO1xuIFx0fVxuLVx0bW1hcF93cml0ZV91bmxvY2sobW0pO1xuK1x0aWYgKG1tICE9IFx1MDAyNmluaXRfbW0pXG4rXHRcdG1tYXBfd3JpdGVfdW5sb2NrKG1tKTtcbiBcdHB1dF9vbmxpbmVfbWVtcygpO1xuIFxuIFx0LyogRmx1c2ggb3V0IHRoZSBsYXN0IHBhZ2UgKi9cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDA2OjIzOjAzLjE4MTcxMjg4NVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY0MzEzMjgyMzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgRnV6emluZyBTdHJhdGVneTogS2VybmVsIFBhZ2UgVGFibGUgTW9kaWZpY2F0aW9ucyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2guIEl0J3MgYSBzaWduaWZpY2FudCBvbmUsIHRvdWNoaW5nIHRoZSB2ZXJ5IGNvcmUgb2YgaG93IHRoZSBrZXJuZWwgbWFuYWdlcyBtZW1vcnksIHNwZWNpZmljYWxseSBwYWdlIHRhYmxlIHdhbGtpbmcgYW5kIGZyZWVpbmcuIFdlJ3JlIHRhbGtpbmcgYWJvdXQgY2hhbmdlcyB0byBgd2Fsa19wYWdlX3JhbmdlX2RlYnVnYCBpbiBgbW0vcGFnZXdhbGsuY2AsIG1ha2luZyBpdCBsb2NrbGVzcyB1bmRlciBSQ1Ugd2hpbGUgd2Fsa2luZyBrZXJuZWwgcGFnZSB0YWJsZXMuIFRoZW4gdGhlcmUncyBgcGFnZXRhYmxlX2ZyZWVfa2VybmVsYCBpbiBgbW0vcGd0YWJsZS1nZW5lcmljLmNgLCBub3cgdXNpbmcgYGNhbGxfcmN1YCBmb3Iga2VybmVsIHBhZ2UgdGFibGUgZnJlZWluZy4gQW5kIGluIHRoZSBQb3dlclBDIGFyY2hpdGVjdHVyZSBzcGVjaWZpY2FsbHkgKGFyY2gvcG93ZXJwYy9tbS9wZ3RhYmxlLWZyYWcuYyksIHRoZXJlJ3MgYSBkZWxheSBpbnRyb2R1Y2VkLCBkZWZlcnJpbmcgdGhlIGZyZWVpbmcgb2YgdGhvc2Uga2VybmVsIHBhZ2UgdGFibGVzIGJ5IGEgZ3JhY2UgcGVyaW9kLiBGaW5hbGx5LCB0byBtYWtlIHRoaXMgZXZlbiBtb3JlIGludGVyZXN0aW5nLCBgbW0vcHRkdW1wLmNgIGF2b2lkcyBncmFiYmluZyB0aGUgYG1tYXBfd3JpdGVfbG9ja2AgaWYgYG1tYCBwb2ludHMgdG8gYFx1MDAyNmluaXRfbW1gLlxuXG5HaXZlbiB0aGUgcG90ZW50aWFsIGltcGFjdCwgZnV6emluZyBpcyBhYnNvbHV0ZWx5IGVzc2VudGlhbCBoZXJlLiBJdCdzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIHNvIGl0J3MgYSBwcmltZSB0YXJnZXQuIFRpbWUgdG8gaWRlbnRpZnkgdGhlIGtleSBmdW5jdGlvbnMgdG8gZm9jdXMgb24uXG5cblNvLCBsZXQncyBzZWUsIHRoZSBwYXRjaCBtb2RpZmllZDpcblxuKiAgIGB3YWxrX3BhZ2VfcmFuZ2VfZGVidWdgXG4qICAgYGtlcm5lbF9wZ3RhYmxlX3dvcmtfZnVuY2BcbiogICBgcGFnZXRhYmxlX2ZyZWVfa2VybmVsYFxuKiAgIGBwdGR1bXBfd2Fsa19wZ2RgXG4qICAgYHB0ZV9mcmFnbWVudF9mcmVlYCAoUG93ZXJQQyBzcGVjaWZpYylcblxuSSdsbCBzdGFydCB3aXRoIGB3YWxrX3BhZ2VfcmFuZ2VfZGVidWdgLiBJdCdzIHVzZWQgYnkgYHB0ZHVtcF93YWxrX3BnZGAuIGBwdGR1bXBfd2Fsa19wZ2RgIGlzIHVzZWQgYnkgdGhlIGBwdGR1bXBgIGRyaXZlcnMsIHdoaWNoLCBpZiBtZW1vcnkgc2VydmVzLCBhcmUgcmVsYXRlZCB0byBgZGVidWdmc2AgZmlsZXMgZm9yIHBhZ2UgdGFibGVzLiBIbW0uIExvb2tzIGxpa2UgSSBzaG91bGQgZmluZCBhbGwgdGhlIGNhbGxlcnMgdG8gYHB0ZHVtcF93YWxrX3BnZGAgdG8gc3RhcnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQwMjIsIk91dHB1dFRva2VucyI6MjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMzAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QwNjoyMzowOS42MTMwNDM5MzJaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjA3MDc3NTg3MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwdGR1bXBfd2Fsa19wZ2RcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9hcm0vaW5jbHVkZS9hc20vcHRkdW1wLmg9MTY9c3RydWN0IHB0ZHVtcF9pbmZvIHtcXG4tLVxcbmFyY2gvYXJtL2luY2x1ZGUvYXNtL3B0ZHVtcC5oLTIxLVxcbmFyY2gvYXJtL2luY2x1ZGUvYXNtL3B0ZHVtcC5oOjIyOnZvaWQgcHRkdW1wX3dhbGtfcGdkKHN0cnVjdCBzZXFfZmlsZSAqcywgc3RydWN0IHB0ZHVtcF9pbmZvICppbmZvKTtcXG5hcmNoL2FybS9pbmNsdWRlL2FzbS9wdGR1bXAuaC0yMy0jaWZkZWYgQ09ORklHX0FSTV9QVERVTVBfREVCVUdGU1xcbi0tXFxuYXJjaC9hcm0vbW0vZHVtcC5jPTM5OD1zdGF0aWMgdm9pZCB3YWxrX3BnZChzdHJ1Y3QgcGdfc3RhdGUgKnN0LCBzdHJ1Y3QgbW1fc3RydWN0ICptbSxcXG4tLVxcbmFyY2gvYXJtL21tL2R1bXAuYy00MTQtXFxuYXJjaC9hcm0vbW0vZHVtcC5jOjQxNTp2b2lkIHB0ZHVtcF93YWxrX3BnZChzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHN0cnVjdCBwdGR1bXBfaW5mbyAqaW5mbylcXG5hcmNoL2FybS9tbS9kdW1wLmMtNDE2LXtcXG4tLVxcbmFyY2gvYXJtL21tL3B0ZHVtcF9kZWJ1Z2ZzLmM9Nz1zdGF0aWMgaW50IHB0ZHVtcF9zaG93KHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdilcXG4tLVxcbmFyY2gvYXJtL21tL3B0ZHVtcF9kZWJ1Z2ZzLmMtMTAtXFxuYXJjaC9hcm0vbW0vcHRkdW1wX2RlYnVnZnMuYzoxMTpcXHRwdGR1bXBfd2Fsa19wZ2QobSwgaW5mbyk7XFxuYXJjaC9hcm0vbW0vcHRkdW1wX2RlYnVnZnMuYy0xMi1cXHRyZXR1cm4gMDtcXG4tLVxcbmFyY2gvYXJtNjQvbW0vcHRkdW1wLmM9Mjc5PXZvaWQgbm90ZV9wYWdlX2ZsdXNoKHN0cnVjdCBwdGR1bXBfc3RhdGUgKnB0X3N0KVxcbi0tXFxuYXJjaC9hcm02NC9tbS9wdGR1bXAuYy0yODUtXFxuYXJjaC9hcm02NC9tbS9wdGR1bXAuYzoyODY6c3RhdGljIHZvaWQgYXJtNjRfcHRkdW1wX3dhbGtfcGdkKHN0cnVjdCBwdGR1bXBfc3RhdGUgKnN0LCBzdHJ1Y3QgbW1fc3RydWN0ICptbSlcXG5hcmNoL2FybTY0L21tL3B0ZHVtcC5jLTI4Ny17XFxuYXJjaC9hcm02NC9tbS9wdGR1bXAuYy0yODgtXFx0c3RhdGljX2JyYW5jaF9pbmMoXFx1MDAyNmFybTY0X3B0ZHVtcF9sb2NrX2tleSk7XFxuYXJjaC9hcm02NC9tbS9wdGR1bXAuYzoyODk6XFx0cHRkdW1wX3dhbGtfcGdkKHN0LCBtbSwgTlVMTCk7XFxuYXJjaC9hcm02NC9tbS9wdGR1bXAuYy0yOTAtXFx0c3RhdGljX2JyYW5jaF9kZWMoXFx1MDAyNmFybTY0X3B0ZHVtcF9sb2NrX2tleSk7XFxuLS1cXG5hcmNoL2FybTY0L21tL3B0ZHVtcC5jPTI5Mz12b2lkIHB0ZHVtcF93YWxrKHN0cnVjdCBzZXFfZmlsZSAqcywgc3RydWN0IHB0ZHVtcF9pbmZvICppbmZvKVxcbi0tXFxuYXJjaC9hcm02NC9tbS9wdGR1bXAuYy0zMjAtXFxuYXJjaC9hcm02NC9tbS9wdGR1bXAuYzozMjE6XFx0YXJtNjRfcHRkdW1wX3dhbGtfcGdkKFxcdTAwMjZzdC5wdGR1bXAsIGluZm8tXFx1MDAzZW1tKTtcXG5hcmNoL2FybTY0L21tL3B0ZHVtcC5jLTMyMi19XFxuLS1cXG5hcmNoL2FybTY0L21tL3B0ZHVtcC5jPTMzOD1ib29sIHB0ZHVtcF9jaGVja193eCh2b2lkKVxcbi0tXFxuYXJjaC9hcm02NC9tbS9wdGR1bXAuYy0zNjItXFxuYXJjaC9hcm02NC9tbS9wdGR1bXAuYzozNjM6XFx0YXJtNjRfcHRkdW1wX3dhbGtfcGdkKFxcdTAwMjZzdC5wdGR1bXAsIFxcdTAwMjZpbml0X21tKTtcXG5hcmNoL2FybTY0L21tL3B0ZHVtcC5jLTM2NC1cXG4tLVxcbmFyY2gvcG93ZXJwYy9tbS9wdGR1bXAvcHRkdW1wLmM9MzM0PXN0YXRpYyBpbnQgcHRkdW1wX3Nob3coc3RydWN0IHNlcV9maWxlICptLCB2b2lkICp2KVxcbi0tXFxuYXJjaC9wb3dlcnBjL21tL3B0ZHVtcC9wdGR1bXAuYy0zNTEtXFx0LyogVHJhdmVyc2Uga2VybmVsIHBhZ2UgdGFibGVzICovXFxuYXJjaC9wb3dlcnBjL21tL3B0ZHVtcC9wdGR1bXAuYzozNTI6XFx0cHRkdW1wX3dhbGtfcGdkKFxcdTAwMjZzdC5wdGR1bXAsIFxcdTAwMjZpbml0X21tLCBOVUxMKTtcXG5hcmNoL3Bvd2VycGMvbW0vcHRkdW1wL3B0ZHVtcC5jLTM1My1cXHRyZXR1cm4gMDtcXG4tLVxcbmFyY2gvcG93ZXJwYy9tbS9wdGR1bXAvcHRkdW1wLmM9MzY4PWJvb2wgcHRkdW1wX2NoZWNrX3d4KHZvaWQpXFxuLS1cXG5hcmNoL3Bvd2VycGMvbW0vcHRkdW1wL3B0ZHVtcC5jLTM5MS1cXG5hcmNoL3Bvd2VycGMvbW0vcHRkdW1wL3B0ZHVtcC5jOjM5MjpcXHRwdGR1bXBfd2Fsa19wZ2QoXFx1MDAyNnN0LnB0ZHVtcCwgXFx1MDAyNmluaXRfbW0sIE5VTEwpO1xcbmFyY2gvcG93ZXJwYy9tbS9wdGR1bXAvcHRkdW1wLmMtMzkzLVxcbi0tXFxuYXJjaC9yaXNjdi9tbS9wdGR1bXAuYz0zNTM9c3RhdGljIHZvaWQgcHRkdW1wX3dhbGsoc3RydWN0IHNlcV9maWxlICpzLCBzdHJ1Y3QgcHRkX21tX2luZm8gKnBpbmZvKVxcbi0tXFxuYXJjaC9yaXNjdi9tbS9wdGR1bXAuYy0zNzItXFxuYXJjaC9yaXNjdi9tbS9wdGR1bXAuYzozNzM6XFx0cHRkdW1wX3dhbGtfcGdkKFxcdTAwMjZzdC5wdGR1bXAsIHBpbmZvLVxcdTAwM2VtbSwgTlVMTCk7XFxuYXJjaC9yaXNjdi9tbS9wdGR1bXAuYy0zNzQtfVxcbi0tXFxuYXJjaC9yaXNjdi9tbS9wdGR1bXAuYz0zNzY9Ym9vbCBwdGR1bXBfY2hlY2tfd3godm9pZClcXG4tLVxcbmFyY2gvcmlzY3YvbW0vcHRkdW1wLmMtMzk5LVxcbmFyY2gvcmlzY3YvbW0vcHRkdW1wLmM6NDAwOlxcdHB0ZHVtcF93YWxrX3BnZChcXHUwMDI2c3QucHRkdW1wLCBcXHUwMDI2aW5pdF9tbSwgTlVMTCk7XFxuYXJjaC9yaXNjdi9tbS9wdGR1bXAuYy00MDEtXFxuLS1cXG5hcmNoL3MzOTAvbW0vZHVtcF9wYWdldGFibGVzLmM9MTgyPWJvb2wgcHRkdW1wX2NoZWNrX3d4KHZvaWQpXFxuLS1cXG5hcmNoL3MzOTAvbW0vZHVtcF9wYWdldGFibGVzLmMtMjEwLVxcdFxcdHJldHVybiB0cnVlO1xcbmFyY2gvczM5MC9tbS9kdW1wX3BhZ2V0YWJsZXMuYzoyMTE6XFx0cHRkdW1wX3dhbGtfcGdkKFxcdTAwMjZzdC5wdGR1bXAsIFxcdTAwMjZpbml0X21tLCBOVUxMKTtcXG5hcmNoL3MzOTAvbW0vZHVtcF9wYWdldGFibGVzLmMtMjEyLVxcdGlmIChzdC53eF9wYWdlcykge1xcbi0tXFxuYXJjaC9zMzkwL21tL2R1bXBfcGFnZXRhYmxlcy5jPTIyNj1zdGF0aWMgaW50IHB0ZHVtcF9zaG93KHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdilcXG4tLVxcbmFyY2gvczM5MC9tbS9kdW1wX3BhZ2V0YWJsZXMuYy0yNTAtXFx0bXV0ZXhfbG9jayhcXHUwMDI2Y3BhX211dGV4KTtcXG5hcmNoL3MzOTAvbW0vZHVtcF9wYWdldGFibGVzLmM6MjUxOlxcdHB0ZHVtcF93YWxrX3BnZChcXHUwMDI2c3QucHRkdW1wLCBcXHUwMDI2aW5pdF9tbSwgTlVMTCk7XFxuYXJjaC9zMzkwL21tL2R1bXBfcGFnZXRhYmxlcy5jLTI1Mi1cXHRtdXRleF91bmxvY2soXFx1MDAyNmNwYV9tdXRleCk7XFxuLS1cXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wZ3RhYmxlLmg9MzA9c3RydWN0IHNlcV9maWxlO1xcbmFyY2gveDg2L2luY2x1ZGUvYXNtL3BndGFibGUuaDozMTp2b2lkIHB0ZHVtcF93YWxrX3BnZF9sZXZlbChzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHN0cnVjdCBtbV9zdHJ1Y3QgKm1tKTtcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wZ3RhYmxlLmg6MzI6dm9pZCBwdGR1bXBfd2Fsa19wZ2RfbGV2ZWxfZGVidWdmcyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLFxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL3BndGFibGUuaC0zMy1cXHRcXHRcXHRcXHQgICBib29sIHVzZXIpO1xcbmFyY2gveDg2L2luY2x1ZGUvYXNtL3BndGFibGUuaDozNDpib29sIHB0ZHVtcF93YWxrX3BnZF9sZXZlbF9jaGVja3d4KHZvaWQpO1xcbmFyY2gveDg2L2luY2x1ZGUvYXNtL3BndGFibGUuaDozNTojZGVmaW5lIHB0ZHVtcF9jaGVja193eCBwdGR1bXBfd2Fsa19wZ2RfbGV2ZWxfY2hlY2t3eFxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL3BndGFibGUuaC0zNi12b2lkIHB0ZHVtcF93YWxrX3VzZXJfcGdkX2xldmVsX2NoZWNrd3godm9pZCk7XFxuLS1cXG5hcmNoL3g4Ni9tbS9kZWJ1Z19wYWdldGFibGVzLmM9OD1zdGF0aWMgaW50IHB0ZHVtcF9zaG93KHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdilcXG5hcmNoL3g4Ni9tbS9kZWJ1Z19wYWdldGFibGVzLmMtOS17XFxuYXJjaC94ODYvbW0vZGVidWdfcGFnZXRhYmxlcy5jOjEwOlxcdHB0ZHVtcF93YWxrX3BnZF9sZXZlbF9kZWJ1Z2ZzKG0sIFxcdTAwMjZpbml0X21tLCBmYWxzZSk7XFxuYXJjaC94ODYvbW0vZGVidWdfcGFnZXRhYmxlcy5jLTExLVxcdHJldHVybiAwO1xcbi0tXFxuYXJjaC94ODYvbW0vZGVidWdfcGFnZXRhYmxlcy5jPTE2PXN0YXRpYyBpbnQgcHRkdW1wX2N1cmtubF9zaG93KHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdilcXG4tLVxcbmFyY2gveDg2L21tL2RlYnVnX3BhZ2V0YWJsZXMuYy0xOC1cXHRpZiAoY3VycmVudC1cXHUwMDNlbW0tXFx1MDAzZXBnZClcXG5hcmNoL3g4Ni9tbS9kZWJ1Z19wYWdldGFibGVzLmM6MTk6XFx0XFx0cHRkdW1wX3dhbGtfcGdkX2xldmVsX2RlYnVnZnMobSwgY3VycmVudC1cXHUwMDNlbW0sIGZhbHNlKTtcXG5hcmNoL3g4Ni9tbS9kZWJ1Z19wYWdldGFibGVzLmMtMjAtXFx0cmV0dXJuIDA7XFxuLS1cXG5hcmNoL3g4Ni9tbS9kZWJ1Z19wYWdldGFibGVzLmM9MjY9c3RhdGljIGludCBwdGR1bXBfY3VydXNyX3Nob3coc3RydWN0IHNlcV9maWxlICptLCB2b2lkICp2KVxcbi0tXFxuYXJjaC94ODYvbW0vZGVidWdfcGFnZXRhYmxlcy5jLTI4LVxcdGlmIChjdXJyZW50LVxcdTAwM2VtbS1cXHUwMDNlcGdkKVxcbmFyY2gveDg2L21tL2RlYnVnX3BhZ2V0YWJsZXMuYzoyOTpcXHRcXHRwdGR1bXBfd2Fsa19wZ2RfbGV2ZWxfZGVidWdmcyhtLCBjdXJyZW50LVxcdTAwM2VtbSwgdHJ1ZSk7XFxuYXJjaC94ODYvbW0vZGVidWdfcGFnZXRhYmxlcy5jLTMwLVxcdHJldHVybiAwO1xcbi0tXFxuYXJjaC94ODYvbW0vZGVidWdfcGFnZXRhYmxlcy5jPTM3PXN0YXRpYyBpbnQgcHRkdW1wX2VmaV9zaG93KHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdilcXG4tLVxcbmFyY2gveDg2L21tL2RlYnVnX3BhZ2V0YWJsZXMuYy0zOS1cXHRpZiAoZWZpX21tLnBnZClcXG5hcmNoL3g4Ni9tbS9kZWJ1Z19wYWdldGFibGVzLmM6NDA6XFx0XFx0cHRkdW1wX3dhbGtfcGdkX2xldmVsX2RlYnVnZnMobSwgXFx1MDAyNmVmaV9tbSwgZmFsc2UpO1xcbmFyY2gveDg2L21tL2RlYnVnX3BhZ2V0YWJsZXMuYy00MS1cXHRyZXR1cm4gMDtcXG4tLVxcbmFyY2gveDg2L21tL2R1bXBfcGFnZXRhYmxlcy5jPTQxNj1zdGF0aWMgdm9pZCBub3RlX3BhZ2VfZmx1c2goc3RydWN0IHB0ZHVtcF9zdGF0ZSAqcHRfc3QpXFxuLS1cXG5hcmNoL3g4Ni9tbS9kdW1wX3BhZ2V0YWJsZXMuYy00MjItXFxuYXJjaC94ODYvbW0vZHVtcF9wYWdldGFibGVzLmM6NDIzOmJvb2wgcHRkdW1wX3dhbGtfcGdkX2xldmVsX2NvcmUoc3RydWN0IHNlcV9maWxlICptLFxcbmFyY2gveDg2L21tL2R1bXBfcGFnZXRhYmxlcy5jLTQyNC1cXHRcXHRcXHRcXHRzdHJ1Y3QgbW1fc3RydWN0ICptbSwgcGdkX3QgKnBnZCxcXG4tLVxcbmFyY2gveDg2L21tL2R1bXBfcGFnZXRhYmxlcy5jLTQ1Ny1cXG5hcmNoL3g4Ni9tbS9kdW1wX3BhZ2V0YWJsZXMuYzo0NTg6XFx0cHRkdW1wX3dhbGtfcGdkKFxcdTAwMjZzdC5wdGR1bXAsIG1tLCBwZ2QpO1xcbmFyY2gveDg2L21tL2R1bXBfcGFnZXRhYmxlcy5jLTQ1OS1cXG4tLVxcbmFyY2gveDg2L21tL2R1bXBfcGFnZXRhYmxlcy5jLTQ3My1cXG5hcmNoL3g4Ni9tbS9kdW1wX3BhZ2V0YWJsZXMuYzo0NzQ6dm9pZCBwdGR1bXBfd2Fsa19wZ2RfbGV2ZWwoc3RydWN0IHNlcV9maWxlICptLCBzdHJ1Y3QgbW1fc3RydWN0ICptbSlcXG5hcmNoL3g4Ni9tbS9kdW1wX3BhZ2V0YWJsZXMuYy00NzUte1xcbmFyY2gveDg2L21tL2R1bXBfcGFnZXRhYmxlcy5jOjQ3NjpcXHRwdGR1bXBfd2Fsa19wZ2RfbGV2ZWxfY29yZShtLCBtbSwgbW0tXFx1MDAzZXBnZCwgZmFsc2UsIHRydWUpO1xcbmFyY2gveDg2L21tL2R1bXBfcGFnZXRhYmxlcy5jLTQ3Ny19XFxuYXJjaC94ODYvbW0vZHVtcF9wYWdldGFibGVzLmMtNDc4LVxcbmFyY2gveDg2L21tL2R1bXBfcGFnZXRhYmxlcy5jOjQ3OTp2b2lkIHB0ZHVtcF93YWxrX3BnZF9sZXZlbF9kZWJ1Z2ZzKHN0cnVjdCBzZXFfZmlsZSAqbSwgc3RydWN0IG1tX3N0cnVjdCAqbW0sXFxuYXJjaC94ODYvbW0vZHVtcF9wYWdldGFibGVzLmMtNDgwLVxcdFxcdFxcdFxcdCAgIGJvb2wgdXNlcilcXG4tLVxcbmFyY2gveDg2L21tL2R1bXBfcGFnZXRhYmxlcy5jLTQ4Ni0jZW5kaWZcXG5hcmNoL3g4Ni9tbS9kdW1wX3BhZ2V0YWJsZXMuYzo0ODc6XFx0cHRkdW1wX3dhbGtfcGdkX2xldmVsX2NvcmUobSwgbW0sIHBnZCwgZmFsc2UsIGZhbHNlKTtcXG5hcmNoL3g4Ni9tbS9kdW1wX3BhZ2V0YWJsZXMuYy00ODgtfVxcbi0tXFxuYXJjaC94ODYvbW0vZHVtcF9wYWdldGFibGVzLmM9NDkwPXZvaWQgcHRkdW1wX3dhbGtfdXNlcl9wZ2RfbGV2ZWxfY2hlY2t3eCh2b2lkKVxcbi0tXFxuYXJjaC94ODYvbW0vZHVtcF9wYWdldGFibGVzLmMtNTAwLVxcdHBnZCA9IGtlcm5lbF90b191c2VyX3BnZHAocGdkKTtcXG5hcmNoL3g4Ni9tbS9kdW1wX3BhZ2V0YWJsZXMuYzo1MDE6XFx0cHRkdW1wX3dhbGtfcGdkX2xldmVsX2NvcmUoTlVMTCwgXFx1MDAyNmluaXRfbW0sIHBnZCwgdHJ1ZSwgZmFsc2UpO1xcbmFyY2gveDg2L21tL2R1bXBfcGFnZXRhYmxlcy5jLTUwMi0jZW5kaWZcXG4tLVxcbmFyY2gveDg2L21tL2R1bXBfcGFnZXRhYmxlcy5jLTUwNC1cXG5hcmNoL3g4Ni9tbS9kdW1wX3BhZ2V0YWJsZXMuYzo1MDU6Ym9vbCBwdGR1bXBfd2Fsa19wZ2RfbGV2ZWxfY2hlY2t3eCh2b2lkKVxcbmFyY2gveDg2L21tL2R1bXBfcGFnZXRhYmxlcy5jLTUwNi17XFxuLS1cXG5hcmNoL3g4Ni9tbS9kdW1wX3BhZ2V0YWJsZXMuYy01MDktXFxuYXJjaC94ODYvbW0vZHVtcF9wYWdldGFibGVzLmM6NTEwOlxcdHJldHVybiBwdGR1bXBfd2Fsa19wZ2RfbGV2ZWxfY29yZShOVUxMLCBcXHUwMDI2aW5pdF9tbSwgSU5JVF9QR0QsIHRydWUsIGZhbHNlKTtcXG5hcmNoL3g4Ni9tbS9kdW1wX3BhZ2V0YWJsZXMuYy01MTEtfVxcbi0tXFxuYXJjaC94ODYvcGxhdGZvcm0vZWZpL2VmaV8zMi5jPTc1PXZvaWQgX19pbml0IGVmaV9kdW1wX3BhZ2V0YWJsZSh2b2lkKVxcbi0tXFxuYXJjaC94ODYvcGxhdGZvcm0vZWZpL2VmaV8zMi5jLTc3LSNpZmRlZiBDT05GSUdfRUZJX1BHVF9EVU1QXFxuYXJjaC94ODYvcGxhdGZvcm0vZWZpL2VmaV8zMi5jOjc4OlxcdHB0ZHVtcF93YWxrX3BnZF9sZXZlbChOVUxMLCBcXHUwMDI2aW5pdF9tbSk7XFxuYXJjaC94ODYvcGxhdGZvcm0vZWZpL2VmaV8zMi5jLTc5LSNlbmRpZlxcbi0tXFxuYXJjaC94ODYvcGxhdGZvcm0vZWZpL2VmaV82NC5jPTQyMz12b2lkIF9faW5pdCBlZmlfZHVtcF9wYWdldGFibGUodm9pZClcXG4tLVxcbmFyY2gveDg2L3BsYXRmb3JtL2VmaS9lZmlfNjQuYy00MjUtI2lmZGVmIENPTkZJR19FRklfUEdUX0RVTVBcXG5hcmNoL3g4Ni9wbGF0Zm9ybS9lZmkvZWZpXzY0LmM6NDI2OlxcdHB0ZHVtcF93YWxrX3BnZF9sZXZlbChOVUxMLCBcXHUwMDI2ZWZpX21tKTtcXG5hcmNoL3g4Ni9wbGF0Zm9ybS9lZmkvZWZpXzY0LmMtNDI3LSNlbmRpZlxcbi0tXFxuaW5jbHVkZS9saW51eC9wdGR1bXAuaD0xMz1zdHJ1Y3QgcHRkdW1wX3N0YXRlIHtcXG4tLVxcbmluY2x1ZGUvbGludXgvcHRkdW1wLmgtMjctXFxuaW5jbHVkZS9saW51eC9wdGR1bXAuaDoyODpib29sIHB0ZHVtcF93YWxrX3BnZF9sZXZlbF9jb3JlKHN0cnVjdCBzZXFfZmlsZSAqbSxcXG5pbmNsdWRlL2xpbnV4L3B0ZHVtcC5oLTI5LVxcdFxcdFxcdFxcdHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCBwZ2RfdCAqcGdkLFxcbmluY2x1ZGUvbGludXgvcHRkdW1wLmgtMzAtXFx0XFx0XFx0XFx0Ym9vbCBjaGVja3d4LCBib29sIGRtZXNnKTtcXG5pbmNsdWRlL2xpbnV4L3B0ZHVtcC5oOjMxOnZvaWQgcHRkdW1wX3dhbGtfcGdkKHN0cnVjdCBwdGR1bXBfc3RhdGUgKnN0LCBzdHJ1Y3QgbW1fc3RydWN0ICptbSwgcGdkX3QgKnBnZCk7XFxuaW5jbHVkZS9saW51eC9wdGR1bXAuaC0zMi1ib29sIHB0ZHVtcF9jaGVja193eCh2b2lkKTtcXG4tLVxcbm1tL3B0ZHVtcC5jPTE2Nj1zdGF0aWMgY29uc3Qgc3RydWN0IG1tX3dhbGtfb3BzIHB0ZHVtcF9vcHMgPSB7XFxuLS1cXG5tbS9wdGR1bXAuYy0xNzQtXFxubW0vcHRkdW1wLmM6MTc1OnZvaWQgcHRkdW1wX3dhbGtfcGdkKHN0cnVjdCBwdGR1bXBfc3RhdGUgKnN0LCBzdHJ1Y3QgbW1fc3RydWN0ICptbSwgcGdkX3QgKnBnZClcXG5tbS9wdGR1bXAuYy0xNzYte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QwNjoyMzoxNS42ODM4MjczNDNaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MjE0NTE2ODQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYW5hbHlzaXMgb2YgdGhlIHByb3ZpZGVkIGluZm9ybWF0aW9uLCBhcyBpZiB0aGVzZSB3ZXJlIG15IGludGVybmFsIHRob3VnaHRzOlxuXG4qKkRpc3NlY3RpbmcgdGhlIFBURHVtcCBXb3JrZmxvdyoqXG5cbkFscmlnaHQsIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gVGhlIGBwdGR1bXBfd2Fsa19wZ2RgIGZ1bmN0aW9uIGlzIHRoZSBjb3JlIHBsYXllciBoZXJlLCBpbml0aWF0ZWQgYnkgYHB0ZHVtcF9zaG93YCwgd2hpY2ggaXRzZWxmIGxpdmVzIGluIGBhcmNoL3g4Ni9tbS9kZWJ1Z19wYWdldGFibGVzLmNgLiBBbmQgdGhhdCBpbml0aWFsIGNhbGwgaGFwcGVucyB2aWEgYHB0ZHVtcF93YWxrX3BnZF9sZXZlbF9kZWJ1Z2ZzYC4gQ2xlYXJseSwgdGhpcyBpcyBhbGwgcGFydCBvZiBhIHBhZ2V0YWJsZSBkZWJ1Z2dpbmcgaW5mcmFzdHJ1Y3R1cmUsIGxpa2VseSBleHBvc2VkIHRocm91Z2ggZGVidWdmcy4gTXkgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gcGlucG9pbnQgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9uIHRoYXQgYWN0aXZhdGVzIHRoZSBlbnRpcmUgYGFyY2gveDg2L21tL2RlYnVnX3BhZ2V0YWJsZXMuY2AgbW9kdWxlLiBLbm93aW5nIHRoZSBlbmFibGluZyBjb25maWcgd2lsbCBnaXZlIG1lIGNyaXRpY2FsIGNvbnRleHQgYWJvdXQgdGhlIHRhcmdldCBzeXN0ZW0ncyBkZWJ1Z2dpbmcgZmVhdHVyZXMuIEl0IHdpbGwgYWxzbyBoZWxwIHdpdGggbXkgb25nb2luZyBhbmFseXNpcy5cblxuXG4iLCJJbnB1dFRva2VucyI6ODYzMiwiT3V0cHV0VG9rZW5zIjoxOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDA2OjIzOjIwLjg5ODM0NzExOFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2Mjc2NDY3ODExLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRlYnVnX3BhZ2V0YWJsZXNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC94ODYvbW0vTWFrZWZpbGU9Mzc9b2JqLSQoQ09ORklHX1BURFVNUClcXHRcXHQrPSBkdW1wX3BhZ2V0YWJsZXMub1xcbmFyY2gveDg2L21tL01ha2VmaWxlOjM4Om9iai0kKENPTkZJR19QVERVTVBfREVCVUdGUylcXHQrPSBkZWJ1Z19wYWdldGFibGVzLm9cXG5hcmNoL3g4Ni9tbS9NYWtlZmlsZS0zOS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMDY6MjM6MjcuMTc0ODIwOTU5WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTcyNTc5MzA5NjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIHJlYXNvbmluZzpcblxuKipDaGVja2luZyB0aGUgUFREVU1QIERlYnVnRlMgQ29uZmlndXJhdGlvbioqXG5cblJpZ2h0LCBzbyBgQ09ORklHX1BURFVNUF9ERUJVR0ZTYCBpcyB0aGUgZmxhZyB0aGF0IGFjdGl2YXRlcyB0aGUgZGVidWdmcyBpbnRlcmZhY2UgZm9yIHBhZ2UgdGFibGUgZHVtcGluZy4gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiBob3cgdGhpcyBpcyBjb25maWd1cmVkLiBMZXQncyBkaWcgaW50byB0aGUga2VybmVsIGNvbmZpZyBmaWxlcy4gTXkgdXN1YWwgc3VzcGVjdCB3b3VsZCBiZSBgbW0vS2NvbmZpZy5kZWJ1Z2AsIG9yIHNvbWV0aGluZyBzaW1pbGFyIHdpdGhpbiB0aGUgbWVtb3J5IG1hbmFnZW1lbnQgc3Vic3lzdGVtJ3MgY29uZmlndXJhdGlvbiBmaWxlcy4gSSdsbCBzdGFydCB0aGVyZSBhbmQgdmVyaWZ5IHdoZXJlIHRoaXMgb3B0aW9uIGxpdmVzIGFuZCB3aGF0IGRlcGVuZGVuY2llcyBvciBjb25zdHJhaW50cyBpdCBtaWdodCBoYXZlLiBUaGlzIHdpbGwgZ2l2ZSBtZSBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIGhvdyBhbmQgd2hlbiB0aGlzIGRlYnVnIGZlYXR1cmUgaXMgYXZhaWxhYmxlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5MDA3LCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMDY6MjM6NDQuNDMyNzU0NTI2WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUzNDc0ODAzOTIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFBURFVNUF9ERUJVR0ZTXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL0tjb25maWcuZGVidWc9MjE5PWNvbmZpZyBQVERVTVBcXG4tLVxcbm1tL0tjb25maWcuZGVidWctMjIxLVxcbm1tL0tjb25maWcuZGVidWc6MjIyOmNvbmZpZyBQVERVTVBfREVCVUdGU1xcbm1tL0tjb25maWcuZGVidWctMjIzLVxcdGJvb2wgXFxcIkV4cG9ydCBrZXJuZWwgcGFnZXRhYmxlIGxheW91dCB0byB1c2Vyc3BhY2UgdmlhIGRlYnVnZnNcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDA2OjIzOjQ5Ljc4MDI0MDI3OFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2MTE3NjkyNTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyB0aGUgRGVwZW5kZW5jeSBDaGFpbiBmb3IgYENPTkZJR19QVERVTVBfREVCVUdGU2AqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBgQ09ORklHX1BURFVNUF9ERUJVR0ZTYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIFwiV2hhdCdzIHRoZSBmdWxsIGRlcGVuZGVuY3kgdHJlZSBvbiB0aGlzP1wiIEl0J3Mgbm90IGVub3VnaCB0byBrbm93IGlmICp0aGlzKiBwYXJ0aWN1bGFyIGZlYXR1cmUgaXMgZW5hYmxlZCBvciBkaXNhYmxlZCBpbiB0aGUgY3VycmVudCBjb25maWd1cmF0aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IG90aGVyIGtlcm5lbCBjb21wb25lbnRzIGl0IHJlbGllcyBvbiwgYW5kLCBwZXJoYXBzIG1vcmUgY3JpdGljYWxseSwgd2hhdCAqaXQqIG1pZ2h0IGJlIHJlbGllZCB1cG9uIGJ5LiBEb2VzIGVuYWJsaW5nIHRoaXMgYWZmZWN0LCBzYXksIHRoZSBwZXJmb3JtYW5jZSBjaGFyYWN0ZXJpc3RpY3Mgb2YgdGhlIGtlcm5lbCBpbiBhIG1ham9yIHdheT8gQXJlIHRoZXJlIGFueSBzdWJ0bGUgaW50ZXJhY3Rpb25zIHdpdGggb3RoZXIgZGVidWcgZmFjaWxpdGllcz8gV2hhdOKAmXMgdGhlIGltcGxpY2F0aW9uIG9uIGNvZGUgc2l6ZT8gSSBuZWVkIHRvIHF1aWNrbHkgZXN0YWJsaXNoIGlmIGVuYWJsaW5nIHRoaXMgaXMgYSBsaWdodHdlaWdodCBvcGVyYXRpb24sIG9yIGlmIGl0IHJpcHBsZXMgb3V0IGludG8gYSBsYXJnZXIgYnVpbGQgY29uZmlndXJhdGlvbi4gQSBkZWVwIGRpdmUgaW50byB0aGUgS2NvbmZpZyBzdHJ1Y3R1cmUgaXMgcmVxdWlyZWQgYW5kIGEgcmV2aWV3IG9mIGFueSBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24uIE5lZWQgdG8gY29uc2lkZXIgcG90ZW50aWFsIHJlZ3Jlc3Npb25zLiBUaW1lIHRvIGRpZyBpbi5cblxuXG4iLCJJbnB1dFRva2VucyI6OTI5NywiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDA2OjIzOjUzLjM5MjAxMzMyOFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjE2MDI3MzIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBQVERVTVBfREVCVUdGU1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9LY29uZmlnLmRlYnVnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL0tjb25maWcuZGVidWc9MjE5PWNvbmZpZyBQVERVTVBcXG4tLVxcbm1tL0tjb25maWcuZGVidWctMjIxLVxcbm1tL0tjb25maWcuZGVidWc6MjIyOmNvbmZpZyBQVERVTVBfREVCVUdGU1xcbm1tL0tjb25maWcuZGVidWctMjIzLVxcdGJvb2wgXFxcIkV4cG9ydCBrZXJuZWwgcGFnZXRhYmxlIGxheW91dCB0byB1c2Vyc3BhY2UgdmlhIGRlYnVnZnNcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDA2OjIzOjUzLjYwODE3NTkyN1oiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTcyMDQyODg3MTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGl2aW5nIGludG8gRGVidWdnaW5nIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gdGhpbmtpbmcsIHdoZXJlJ3MgdGhlIGJlc3QgcGxhY2UgdG8gc3RhcnQgbG9va2luZyBpbnRvIHRoZXNlIGRlYnVnIG9wdGlvbnM/IE15IGluc3RpbmN0IGlzIHRvIGNoZWNrIHRoZSBgbW0vS2NvbmZpZy5kZWJ1Z2AgZmlsZS4gU3BlY2lmaWNhbGx5LCBJJ20gZ29pbmcgdG8ganVtcCB0byBhcm91bmQgbGluZSAyMjIuIEknbSBob3BpbmcgdGhhdCdzIHdoZXJlIHRoZSBjb3JlIG9mIHRoZXNlIGRlYnVnZ2luZy1yZWxhdGVkIGNvbmZpZ3VyYXRpb25zIGlzIGRlZmluZWQuIFRoYXQgc2VjdGlvbiBsaWtlbHkgY29udGFpbnMgdGhlIGRlcGVuZGVuY2llcywgaGVscCB0ZXh0LCBhbmQgZGVmYXVsdCBzZXR0aW5ncyB0aGF0IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRvIG1hbmlwdWxhdGUgdGhlIGJlaGF2aW9yIEknbSBhZnRlci4gSXQncyB0aGUgdXN1YWwgcm91dGUgd2hlbiBjaGFzaW5nIGRvd24gdGhlc2Uga2luZHMgb2YgY29uZmlndXJhdGlvbnMsIHRoZSBLY29uZmlnIGZpbGVzIHVzdWFsbHkga2VlcCBhIGdvb2QgdHJhY2sgcmVjb3JkIG9mIGhvdyB0aGVzZSBhcmUgaW1wbGVtZW50ZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk2MzgsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QwNjoyODo1MC44MTI0Njg2MTVaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA0OTAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm1tL0tjb25maWcuZGVidWdcIixcbiAgXCJGaXJzdExpbmVcIjogMjE1LFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMjE1OlxcdFxcbiAyMTY6XFx0Y29uZmlnIEFSQ0hfSEFTX1BURFVNUFxcbiAyMTc6XFx0XFx0Ym9vbFxcbiAyMTg6XFx0XFxuIDIxOTpcXHRjb25maWcgUFREVU1QXFxuIDIyMDpcXHRcXHRib29sXFxuIDIyMTpcXHRcXG4gMjIyOlxcdGNvbmZpZyBQVERVTVBfREVCVUdGU1xcbiAyMjM6XFx0XFx0Ym9vbCBcXFwiRXhwb3J0IGtlcm5lbCBwYWdldGFibGUgbGF5b3V0IHRvIHVzZXJzcGFjZSB2aWEgZGVidWdmc1xcXCJcXG4gMjI0OlxcdFxcdGRlcGVuZHMgb24gREVCVUdfS0VSTkVMXFxuIDIyNTpcXHRcXHRkZXBlbmRzIG9uIERFQlVHX0ZTXFxuIDIyNjpcXHRcXHRkZXBlbmRzIG9uIEFSQ0hfSEFTX1BURFVNUFxcbiAyMjc6XFx0XFx0c2VsZWN0IFBURFVNUFxcbiAyMjg6XFx0XFx0aGVscFxcbiAyMjk6XFx0XFx0ICBTYXkgWSBoZXJlIGlmIHlvdSB3YW50IHRvIHNob3cgdGhlIGtlcm5lbCBwYWdldGFibGUgbGF5b3V0IGluIGFcXG4gMjMwOlxcdFxcdCAgZGVidWdmcyBmaWxlLiBUaGlzIGluZm9ybWF0aW9uIGlzIG9ubHkgdXNlZnVsIGZvciBrZXJuZWwgZGV2ZWxvcGVyc1xcbiAyMzE6XFx0XFx0ICB3aG8gYXJlIHdvcmtpbmcgaW4gYXJjaGl0ZWN0dXJlIHNwZWNpZmljIGFyZWFzIG9mIHRoZSBrZXJuZWwuXFxuIDIzMjpcXHRcXHQgIEl0IGlzIHByb2JhYmx5IG5vdCBhIGdvb2QgaWRlYSB0byBlbmFibGUgdGhpcyBmZWF0dXJlIGluIGEgcHJvZHVjdGlvblxcbiAyMzM6XFx0XFx0ICBrZXJuZWwuXFxuIDIzNDpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMDY6Mjg6NTAuODEyNTc1NDI1WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE4MTM2MTIzNzI3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjpcblxuKipJbnZlc3RpZ2F0aW5nIFBvdGVudGlhbCBQZXJmb3JtYW5jZSBCb3R0bGVuZWNrcyBpbiBNZW1vcnkgTWFuYWdlbWVudCoqXG5cbkFscmlnaHQsIGxldCdzIHNlZS4uLiB0aGUgZmlyc3QgdGhpbmcgSSB3YW50IHRvIHplcm8gaW4gb24gaXMgYFBURFVNUF9ERUJVR0ZTYC4gVGhhdCdzIHRoZSBjb25maWcgb3B0aW9uIEknbSBwcmV0dHkgc3VyZSByZWxhdGVzIHRvIGRlYnVnZ2luZyBwYWdlIHRhYmxlIGR1bXBzLCB3aGljaCBjb3VsZCBiZSB1c2VmdWwgaW4gdW5kZXJzdGFuZGluZyBwb3RlbnRpYWwgb3ZlcmhlYWQgaW4gbWVtb3J5IG1hbmFnZW1lbnQuXG5cbk5vdywgdGhhdCdzIG5vdCB0aGUgb25seSBhcmVhIG9mIGludGVyZXN0LCBvZiBjb3Vyc2UuIEkgc2hvdWxkIGFsc28gaW52ZXN0aWdhdGUgYENPTkZJR19BU1lOQ19LRVJORUxfUEdUQUJMRV9GUkVFYC4gSSdtIGZhbWlsaWFyIHdpdGggaXRzIHVzZSBpbiBgbW0vcGd0YWJsZS1nZW5lcmljLmNgLiBEZXBlbmRpbmcgb24gd2hhdCBpdCdzIGVuYWJsZWQgZm9yLCB0aGlzIGNvdWxkIGJlIGEgbWFqb3IgZmFjdG9yIGluIGltcHJvdmluZyBwZXJmb3JtYW5jZSBieSByZWR1Y2luZyBsYXRlbmN5IHJlbGF0ZWQgdG8gZnJlZWluZyBwYWdlIHRhYmxlcy4gSSBzaG91bGQgY29ycmVsYXRlIHRoZSBpbXBhY3Qgb2YgZWFjaCBvZiB0aGVzZSBvcHRpb25zIG9uIHRocm91Z2hwdXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwMTE5LCJPdXRwdXRUb2tlbnMiOjI1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QwNjoyOTowOC45NDg3MDI3NzJaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3ODAzMDkyNzUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEFTWU5DX0tFUk5FTF9QR1RBQkxFX0ZSRUVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vS2NvbmZpZz0xMDIwPWNvbmZpZyBIQVZFX0dJR0FOVElDX0ZPTElPU1xcbi0tXFxubW0vS2NvbmZpZy0xMDIzLVxcbm1tL0tjb25maWc6MTAyNDpjb25maWcgQVNZTkNfS0VSTkVMX1BHVEFCTEVfRlJFRVxcbm1tL0tjb25maWctMTAyNS1cXHRkZWZfYm9vbCBuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDA2OjI5OjE0LjcyOTA1OTg4NloiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTM5NDAzNTczLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcyBjb2RlLiBIZXJlJ3MgaG93IEknbSB0aGlua2luZyBhYm91dCBpdDpcblxuKipEaWdnaW5nIGludG8gYEFTWU5DX0tFUk5FTF9QR1RBQkxFX0ZSRUVgKipcblxuQWxyaWdodCwgSSdtIHN0YXJ0aW5nIHdpdGggYEFTWU5DX0tFUk5FTF9QR1RBQkxFX0ZSRUVgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJXaGF0IGV4YWN0bHkgKnNlbGVjdHMqIHRoaXM/IFdoYXQgY29kZSBwYXRocyBsZWFkIHRvIGl0cyBhY3RpdmF0aW9uP1wiIEkga25vdyBpdCdzIGEga2V5IGZlYXR1cmUsIHByb2JhYmx5IHJlbGF0ZWQgdG8gYXN5bmNocm9ub3VzIHBhZ2UgdGFibGUgZnJlZWluZyBpbiB0aGUga2VybmVsLCBidXQgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggaXQgYmVjb21lcyByZWxldmFudC4gSSBuZWVkIHRvIHRyYWNlIGJhY2sgZnJvbSB3aGVyZSBpdCdzIHVzZWQgdG8gdW5kZXJzdGFuZCB3aGVyZSB0aGlzIGZlYXR1cmUgaXMgYmVpbmcgZW5hYmxlZCBvciBkaXNhYmxlZC4gVGhpcyBpbnZlc3RpZ2F0aW9uIGlzIGtleSB0byB1bmRlcnN0YW5kaW5nIGhvdyB0aGVzZSBhc3luY2hyb25vdXMgZnJlZXMgYXJlIHRyaWdnZXJlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA0NTAsIk91dHB1dFRva2VucyI6MjUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QwNjoyOToxOC44Njg0NjYyMzlaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU0ODU1MDIxNTMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic2VsZWN0IEFTWU5DX0tFUk5FTF9QR1RBQkxFX0ZSRUVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC94ODYvS2NvbmZpZz01OD1jb25maWcgWDg2XFxuLS1cXG5hcmNoL3g4Ni9LY29uZmlnLTI4My1cXHRzZWxlY3QgSEFWRV9QRVJGX1VTRVJfU1RBQ0tfRFVNUFxcbmFyY2gveDg2L0tjb25maWc6Mjg0OlxcdHNlbGVjdCBBU1lOQ19LRVJORUxfUEdUQUJMRV9GUkVFXFx0aWYgSU9NTVVfU1ZBXFxuYXJjaC94ODYvS2NvbmZpZy0yODUtXFx0c2VsZWN0IE1NVV9HQVRIRVJfUkNVX1RBQkxFX0ZSRUVcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMDY6Mjk6MjQuMzUzOTc0OTQyWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjIyMjIxOTg0MjE0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBLZXJuZWwgUGFnZSBUYWJsZSBGcmVlaW5nIG9uIHg4NiB3aXRoIElPTU1VX1NWQSoqXG5cbk9rYXksIHNvIGhlcmUncyB0aGUgZGVhbC4gT24geDg2LCBpZiB3ZSdyZSB1c2luZyBgSU9NTVVfU1ZBYCwgdGhlIGBBU1lOQ19LRVJORUxfUEdUQUJMRV9GUkVFYCBvcHRpb24gZ2V0cyBhdXRvbWF0aWNhbGx5IHNlbGVjdGVkLiBUZWNobmljYWxseSwgd2UgZG9uJ3QgbmVlZCB0byBleHBsaWNpdGx5IGVuYWJsZSBpdC4gV2UgY291bGQgZWl0aGVyIGVuYWJsZSBgSU9NTVVfU1ZBYCwgb3IganVzdCBub3Qgd29ycnkgYWJvdXQgaXQsIGJlY2F1c2UgdGhlIGAjZWxzZWAgYnJhbmNoIGlzIGFsc28gbW9kaWZpZWQgYW5kIHVzZXMgYGNhbGxfcmN1KFx1MDAyNnB0LVx1MDAzZXB0X3JjdV9oZWFkLCBrZXJuZWxfcGd0YWJsZV9mcmVlX3JjdSlgLlxuXG5MZXQncyBkaWcgaW50byB0aGUgbWVhdCBvZiB0aGlzLiBUaGUgcGF0Y2ggdG91Y2hlcyBhIGZldyBrZXkgZnVuY3Rpb25zOiBgd2Fsa19wYWdlX3JhbmdlX2RlYnVnYCwgYHBhZ2V0YWJsZV9mcmVlX2tlcm5lbGAsIGBwdGVfZnJhZ21lbnRfZnJlZWAgKGZvciBQb3dlclBDLCB3aGljaCBJJ2xsIGtlZXAgaW4gbWluZCBmb3IgY29udGV4dCksIGFuZCBgcHRkdW1wX3dhbGtfcGdkYC4gUmlnaHQgb2ZmIHRoZSBiYXQsIEkgd2FudCB0byBmb2N1cyBvbiBgd2Fsa19wYWdlX3JhbmdlX2RlYnVnYCwgYHBhZ2V0YWJsZV9mcmVlX2tlcm5lbGAsIGFuZCBgcHRkdW1wX3dhbGtfcGdkYC4gSXMgdGhhdCBpdD9cblxuQWgsIHJpZ2h0LCBga2VybmVsX3BndGFibGVfZnJlZV9yY3VgIHdhcyBhZGRlZC4gQW5kIGB3YWxrX2tlcm5lbF9wYWdlX3RhYmxlX3JhbmdlX2xvY2tsZXNzYCBpcyBjYWxsZWQgYnkgYHdhbGtfcGFnZV9yYW5nZV9kZWJ1Z2AuXG5cbk5vdywgdGhlIGltcG9ydGFudCBxdWVzdGlvbjogY2FuIGEgdXNlci1zcGFjZSBwcm9jZXNzIHRyaWdnZXIgYHdhbGtfcGFnZV9yYW5nZV9kZWJ1Z2A/IFllcywgdGhyb3VnaCBkZWJ1Z2ZzIGFuZCB0aG9zZSBgcHRkdW1wYCBmaWxlcy4gV2l0aCBgUFREVU1QX0RFQlVHRlNgIGVuYWJsZWQsIHdlIGdldCBzdHVmZiBsaWtlIGAvc3lzL2tlcm5lbC9kZWJ1Zy9wYWdlX3RhYmxlcy9rZXJuZWxgLiBBIHJlYWQgdHJpZ2dlcnMgYHB0ZHVtcF9zaG93YCB3aGljaCBjYWxscyBgcHRkdW1wX3dhbGtfcGdkYCBhbmQgdGhhdCwgaW4gdHVybiwgY2FsbHMgYHdhbGtfcGFnZV9yYW5nZV9kZWJ1Z2AuIFNvLCB1c2VyIHNwYWNlIGNhbiBwb3RlbnRpYWxseSB0cmlnZ2VyIHRoaXMuXG5cbk5leHQgdXAsIGBwYWdldGFibGVfZnJlZV9rZXJuZWxgLiBUaGlzIGlzIGNhbGxlZCB3aGVuIHRoZSBrZXJuZWwgZnJlZXMgdXAgcGFnZSB0YWJsZXMuIFdoZW4gZG9lcyB0aGF0IGhhcHBlbj8gVm1hcC92bWFsbG9jIHRlYXJkb3duLCBtZW1vcnkgaG90LXJlbW92ZS4uLiB0aGluZ3MgbGlrZSB0aGF0LiBHb3R0YSBmaW5kIG91dCB3aGF0IGNhbGxzIGBwYWdldGFibGVfZnJlZV9rZXJuZWxgIHRvIGdldCB0aGUgZnVsbCBwaWN0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDc2MCwiT3V0cHV0VG9rZW5zIjoyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQyNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QwNjoyOTo0Ni41NzU5NjI5MDZaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4NDkxNTA3MjUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGFnZXRhYmxlX2ZyZWVfa2VybmVsXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbGludXgvbW0uaD0zNjkxPXN0YXRpYyBpbmxpbmUgdm9pZCBfX3BhZ2V0YWJsZV9mcmVlKHN0cnVjdCBwdGRlc2MgKnB0KVxcbi0tXFxuaW5jbHVkZS9saW51eC9tbS5oLTM2OTctXFxuaW5jbHVkZS9saW51eC9tbS5oOjM2OTg6dm9pZCBwYWdldGFibGVfZnJlZV9rZXJuZWwoc3RydWN0IHB0ZGVzYyAqcHQpO1xcbmluY2x1ZGUvbGludXgvbW0uaC0zNjk5LS8qKlxcbi0tXFxuaW5jbHVkZS9saW51eC9tbS5oPTM3MDY9c3RhdGljIGlubGluZSB2b2lkIHBhZ2V0YWJsZV9mcmVlKHN0cnVjdCBwdGRlc2MgKnB0KVxcbi0tXFxuaW5jbHVkZS9saW51eC9tbS5oLTM3MDktXFx0XFx0cHRkZXNjX2NsZWFyX2tlcm5lbChwdCk7XFxuaW5jbHVkZS9saW51eC9tbS5oOjM3MTA6XFx0XFx0cGFnZXRhYmxlX2ZyZWVfa2VybmVsKHB0KTtcXG5pbmNsdWRlL2xpbnV4L21tLmgtMzcxMS1cXHR9IGVsc2Uge1xcbi0tXFxubW0vcGFnZXdhbGsuYz02ODI9aW50IHdhbGtfcGFnZV9yYW5nZV9kZWJ1ZyhzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5zaWduZWQgbG9uZyBzdGFydCxcXG4tLVxcbm1tL3BhZ2V3YWxrLmMtNzAwLVxcdFxcdCAqIGFjcm9zcyB0aGUgd2hvbGUga2VybmVsIGFkZHJlc3Mgc3BhY2UuICBBIGtlcm5lbCBwYWdlIHRhYmxlXFxubW0vcGFnZXdhbGsuYzo3MDE6XFx0XFx0ICogZnJlZWQgdmlhIHBhZ2V0YWJsZV9mcmVlX2tlcm5lbCgpIHN0YXlzIHZhbGlkIHVudGlsIHRoZSB3YWxrXFxubW0vcGFnZXdhbGsuYy03MDItXFx0XFx0ICogdGhhdCBtYXkgaGF2ZSBvYnNlcnZlZCBpdCBkcm9wcyB0aGUgbG9jazsgcmVsZWFzaW5nIHRoZSBsb2NrXFxuLS1cXG5tbS9wZ3RhYmxlLWdlbmVyaWMuYz00MzQ9c3RhdGljIHZvaWQga2VybmVsX3BndGFibGVfd29ya19mdW5jKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbm1tL3BndGFibGUtZ2VuZXJpYy5jLTQ1NC1cXG5tbS9wZ3RhYmxlLWdlbmVyaWMuYzo0NTU6dm9pZCBwYWdldGFibGVfZnJlZV9rZXJuZWwoc3RydWN0IHB0ZGVzYyAqcHQpXFxubW0vcGd0YWJsZS1nZW5lcmljLmMtNDU2LXtcXG4tLVxcbm1tL3BndGFibGUtZ2VuZXJpYy5jLTQ2My0jZWxzZVxcbm1tL3BndGFibGUtZ2VuZXJpYy5jOjQ2NDp2b2lkIHBhZ2V0YWJsZV9mcmVlX2tlcm5lbChzdHJ1Y3QgcHRkZXNjICpwdClcXG5tbS9wZ3RhYmxlLWdlbmVyaWMuYy00NjUte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QwNjoyOTo1MS40MjUxNDc0NjFaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjg1MjU3MzkxNzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqS2VybmVsIFBhZ2UgVGFibGUgRGVhbGxvY2F0aW9uIERlZXAgRGl2ZSoqXG5cbk9rYXksIHNvIEkndmUgc3BvdHRlZCBhIHNpZ25pZmljYW50IGFsdGVyYXRpb24gd2l0aGluIHRoZSBrZXJuZWwncyBtZW1vcnkgbWFuYWdlbWVudCwgc3BlY2lmaWNhbGx5IGNvbmNlcm5pbmcgdGhlIGZyZWVpbmcgb2YgcGFnZSB0YWJsZXMuIEl0IGxvb2tzIGxpa2UgYHBhZ2V0YWJsZV9mcmVlX2tlcm5lbGAgaXMgZ2V0dGluZyBjYWxsZWQgYnkgYHBhZ2V0YWJsZV9mcmVlYCwgYnV0IG9ubHkgd2hlbiB3ZSdyZSBkZWFsaW5nIHdpdGggYSBrZXJuZWwgcGFnZSB0YWJsZSwgZGV0ZXJtaW5lZCBieSBgcHRkZXNjX2lzX2tlcm5lbChwdClgLiBBbmQgYHBhZ2V0YWJsZV9mcmVlYCBpcyB0cmlnZ2VyZWQgYnkgb3RoZXIgY3JpdGljYWwgY29tcG9uZW50cyBsaWtlIGBwdGVfZnJlZWAgYW5kIGBwbWRfZnJlZWAsIHdoaWNoIG1lYW5zIHRoaXMgdG91Y2hlcyByZWFsbHkgY2VudHJhbCBrZXJuZWwgZnVuY3Rpb25hbGl0eS4gVGhpcyBjaGFuZ2Ugd2FycmFudHMgc2VyaW91cyBhdHRlbnRpb24gYW5kIGRlZmluaXRlbHkgcXVhbGlmaWVzIGFzIFwiV29ydGhGdXp6aW5nXCIgLSBtZWFuaW5nIHdlIG5lZWQgdG8gdGhyb3cgZXZlcnl0aGluZyBhdCBpdCB0byBlbnN1cmUgc3RhYmlsaXR5LlxuXG5NeSBmb2N1cyBzaG91bGQgYmUgaG9uZWQgaW4gb24gdGhlc2UgZnVuY3Rpb25zOiBgd2Fsa19wYWdlX3JhbmdlX2RlYnVnYCwgYHB0ZHVtcF93YWxrX3BnZGAsIGBwYWdldGFibGVfZnJlZV9rZXJuZWxgLCBhbmQgYGtlcm5lbF9wZ3RhYmxlX2ZyZWVfcmN1YC4gVGhleSBzZWVtIHRvIGJlIHRoZSBjcml0aWNhbCBwaWVjZXMgb2YgdGhpcyBkZWFsbG9jYXRpb24gcHV6emxlLlxuXG5JJ20gZGVmaW5pdGVseSBlbmFibGluZyBgUFREVU1QX0RFQlVHRlNgLiBUaGF0J2xsIHByb3ZpZGUgdGhlIGtpbmQgb2YgaW50cm9zcGVjdGlvbiBJJ2xsIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0J3MgaGFwcGVuaW5nIHVuZGVyIHRoZSBob29kLlxuXG5BbHNvLCBJJ20gdGhpbmtpbmcgYWJvdXQgYElPTU1VX1NWQWAuIEl0IGNvdWxkIHRyaWdnZXIgdGhlIGBBU1lOQ19LRVJORUxfUEdUQUJMRV9GUkVFYCBjb2RlIHBhdGgsIHdoaWNoIG1pZ2h0IGJlIHBhcnRpY3VsYXJseSBpbnRlcmVzdGluZy4gSSdsbCBuZWVkIHRvIGNoZWNrIHRoZSBkZXBlbmRlbmNpZXMgb2YgYElPTU1VX1NWQWAgdG8gbWFrZSBzdXJlIGVuYWJsaW5nIGl0IGRvZXNuJ3QgYnJpbmcgaW4gYW55IHVud2FudGVkIHNpZGUgZWZmZWN0cy4gSSB3YW50IHRvIG1ha2Ugc3VyZSBJIGFtIHRlc3RpbmcgKnRoaXMqIGFyZWEgYW5kIG5vdCBnZXQgZGlzdHJhY3RlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTIxMzUsIk91dHB1dFRva2VucyI6MjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMDY6MzA6MTkuOTUwODkwNjU5WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MTg3Njc4Mzk2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBJT01NVV9TVkFcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9pb21tdS9LY29uZmlnPTE1Mz1jb25maWcgSU9NTVVfRE1BXFxuLS1cXG5kcml2ZXJzL2lvbW11L0tjb25maWctMTYxLSMgU2hhcmVkIFZpcnR1YWwgQWRkcmVzc2luZ1xcbmRyaXZlcnMvaW9tbXUvS2NvbmZpZzoxNjI6Y29uZmlnIElPTU1VX1NWQVxcbmRyaXZlcnMvaW9tbXUvS2NvbmZpZy0xNjMtXFx0c2VsZWN0IElPTU1VX01NX0RBVEFcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMDY6MzA6MjYuMTM4NTc1OTE1WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE1MjA0Nzk1MjM5NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBJT01NVSBLY29uZmlnKipcblxuT2theSwgdGltZSB0byBnZXQgYSBiaXQgbW9yZSBncmFudWxhci4gTGV0J3MgcHVsbCB1cCB0aGUgYGRyaXZlcnMvaW9tbXUvS2NvbmZpZ2AgZmlsZSwgc3BlY2lmaWNhbGx5IGFyb3VuZCBsaW5lIDE2Mi4gSSdtIGZvY3VzaW5nIG9uIHRoYXQgYXJlYSBiZWNhdXNlIEkgaGF2ZSBhIGh1bmNoIGl0J3MgcmVsYXRlZCB0byBbKippbnNlcnQgeW91ciBzcGVjaWZpYyBhcmVhIG9mIGV4cGVydGlzZSAtIGUuZy4sIG5lc3RlZCB2aXJ0dWFsaXphdGlvbiBzdXBwb3J0LCBzcGVjaWZpYyBoYXJkd2FyZSBwbGF0Zm9ybSBjb25maWd1cmF0aW9uLCBvciBhIHBhcnRpY3VsYXIgSU9NTVUgZmVhdHVyZSoqXS4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIGhvdyB0aGlzIGNvbXBvbmVudCBpcyBjb25maWd1cmVkLCBhbmQgc2VlIGhvdyB0aGUgZGVwZW5kZW5jaWVzIGFyZSBzdHJ1Y3R1cmVkIGZvciB0aGlzIHNlY3Rpb24uIEkgcmVjYWxsIGZyb20gdGhlIGxhc3QgZGVidWdnaW5nIHNlc3Npb24gdGhhdCBzb21lIGNvbmRpdGlvbmFsIGxvZ2ljIHRoZXJlIHdhcyBhIHBvdGVudGlhbCBwb2ludCBvZiBjb250ZW50aW9uLiBNYXliZSBJIG5lZWQgdG8gcmV2aXNpdCB0aGUgYXNzb2NpYXRlZCBNYWtlZmlsZSBvciBvdGhlciBjb25maWd1cmF0aW9uIGZpbGVzIGxhdGVyLCBidXQgbGV0J3Mgc3RhcnQgaGVyZSBhbmQgc2VlIHdoYXQgdGhlIEtjb25maWcgcmV2ZWFscyBpbiB0aGlzIHNwb3QuIFRoaXMgc2hvdWxkIHByb3ZpZGUgc29tZSBpbnNpZ2h0IGludG8gd2hldGhlciBteSBzdXNwaWNpb25zIGFyZSBjb3JyZWN0LCBvciBpZiBJIGFtIGxvb2tpbmcgaW4gdGhlIHdyb25nIGxvY2F0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjc3NywiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDA2OjMyOjU4LjE4NjUzODgyMloiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2OTk0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL2lvbW11L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMTU1LFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMTU1OlxcdFxcdHNlbGVjdCBETUFfT1BTX0hFTFBFUlNcXG4gMTU2OlxcdFxcdHNlbGVjdCBJT01NVV9BUElcXG4gMTU3OlxcdFxcdHNlbGVjdCBJT01NVV9JT1ZBXFxuIDE1ODpcXHRcXHRzZWxlY3QgTkVFRF9TR19ETUFfTEVOR1RIXFxuIDE1OTpcXHRcXHRzZWxlY3QgTkVFRF9TR19ETUFfRkxBR1MgaWYgU1dJT1RMQlxcbiAxNjA6XFx0XFxuIDE2MTpcXHQjIFNoYXJlZCBWaXJ0dWFsIEFkZHJlc3NpbmdcXG4gMTYyOlxcdGNvbmZpZyBJT01NVV9TVkFcXG4gMTYzOlxcdFxcdHNlbGVjdCBJT01NVV9NTV9EQVRBXFxuIDE2NDpcXHRcXHRib29sXFxuIDE2NTpcXHRcXG4gMTY2OlxcdGNvbmZpZyBJT01NVV9JT1BGXFxuIDE2NzpcXHRcXHRib29sXFxuIDE2ODpcXHRcXG4gMTY5OlxcdGNvbmZpZyBGU0xfUEFNVVxcbiAxNzA6XFx0XFx0Ym9vbCBcXFwiRnJlZXNjYWxlIElPTU1VIHN1cHBvcnRcXFwiXFxuIDE3MTpcXHRcXHRkZXBlbmRzIG9uIFBDSVxcbiAxNzI6XFx0XFx0ZGVwZW5kcyBvbiBQSFlTXzY0QklUXFxuIDE3MzpcXHRcXHRkZXBlbmRzIG9uIFBQQ19FNTAwTUMgfHwgKENPTVBJTEVfVEVTVCBcXHUwMDI2XFx1MDAyNiBQUEMpXFxuIDE3NDpcXHRcXHRzZWxlY3QgSU9NTVVfQVBJXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDA2OjMyOjU4LjE4NjYxMDE0MloiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODY4Mzg3MDEzMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBhc3N1bWluZyBJJ20gYWxyZWFkeSBxdWl0ZSBmYW1pbGlhciB3aXRoIElPTU1VcyBhbmQgcmVsYXRlZCBrZXJuZWwgY29uZmlndXJhdGlvbnM6XG5cbioqRGlnZ2luZyBpbnRvIHRoZSBJT01NVV9TVkEgQ29uZmlnKipcblxuQWxyaWdodCwgc28gYElPTU1VX1NWQWAgaXMgb25lIG9mIHRob3NlIGhpZGRlbiBib29sZWFucywgbm90IGRpcmVjdGx5IGV4cG9zZWQgYXMgYSB0b3AtbGV2ZWwgb3B0aW9uLiBUaGF0IGltbWVkaWF0ZWx5IHRlbGxzIG1lIGl0J3MgbGlrZWx5IHB1bGxlZCBpbiBiYXNlZCBvbiB0aGUgc2VsZWN0aW9uIG9mICpvdGhlciogY29uZmlndXJhdGlvbnMuIE15IGdvYWwgbm93IGlzIHRvIGZpZ3VyZSBvdXQgdGhlIGRlcGVuZGVuY2llcy4gS25vd2luZyB0aGUgdXBzdHJlYW0ga2VybmVsIGJ1aWxkIHN5c3RlbSwgdGhlIGJlc3Qgd2F5IHRvIGRvIHRoYXQgaXMgdG8gdHJhY2UgdGhlIGRlcGVuZGVuY3kgcGF0aCBhbmQgc2VlIHdoaWNoIG90aGVyIGZlYXR1cmVzIG9yIGhhcmR3YXJlIHNldHVwcyB0cmlnZ2VyIGl0cyBpbmNsdXNpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBhcmNoaXRlY3R1cmFsIGltcGxpY2F0aW9ucywgYW5kIHByZWNpc2VseSAqd2h5KiBpdCdzIGNvbmRpdGlvbmFsbHkgZW5hYmxlZC4gV2hhdCdzIGRyaXZpbmcgdGhlIGxvZ2ljIGJlaGluZCBpdHMgaW5jbHVzaW9uPyBJcyBpdCB0aWVkIHRvIGEgc3BlY2lmaWMgdHlwZSBvZiBJT01NVSBoYXJkd2FyZSwgYSBwYXJ0aWN1bGFyIHZpcnR1YWxpemF0aW9uIGZlYXR1cmUsIG9yIHBlcmhhcHMgYSBzcGVjaWZpYyBwcm9ncmFtbWluZyBtb2RlbCBmb3IgdGhlIEdQVT8gTGV0J3MgZ2V0IHRvIHRoZSBib3R0b20gb2YgdGhpcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTMzMjEsIk91dHB1dFRva2VucyI6MjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDA2OjMzOjI2Ljg3MDQ4MzMxNFoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzIxMTE5NDM1MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzZWxlY3QgSU9NTVVfU1ZBXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvaW9tbXUvYW1kL0tjb25maWc9Mz1jb25maWcgQU1EX0lPTU1VXFxuLS1cXG5kcml2ZXJzL2lvbW11L2FtZC9LY29uZmlnLTEzLVxcdHNlbGVjdCBJT01NVV9JT1ZBXFxuZHJpdmVycy9pb21tdS9hbWQvS2NvbmZpZzoxNDpcXHRzZWxlY3QgSU9NTVVfU1ZBXFxuZHJpdmVycy9pb21tdS9hbWQvS2NvbmZpZy0xNS1cXHRzZWxlY3QgSU9NTVVfSU9QRlxcbi0tXFxuZHJpdmVycy9pb21tdS9hcm0vS2NvbmZpZz05MT1jb25maWcgQVJNX1NNTVVfVjNfU1ZBXFxuZHJpdmVycy9pb21tdS9hcm0vS2NvbmZpZy05Mi1cXHRib29sIFxcXCJTaGFyZWQgVmlydHVhbCBBZGRyZXNzaW5nIHN1cHBvcnQgZm9yIHRoZSBBUk0gU01NVXYzXFxcIlxcbmRyaXZlcnMvaW9tbXUvYXJtL0tjb25maWc6OTM6XFx0c2VsZWN0IElPTU1VX1NWQVxcbmRyaXZlcnMvaW9tbXUvYXJtL0tjb25maWctOTQtXFx0c2VsZWN0IElPTU1VX0lPUEZcXG4tLVxcbmRyaXZlcnMvaW9tbXUvaW50ZWwvS2NvbmZpZz01Mz1jb25maWcgSU5URUxfSU9NTVVfU1ZNXFxuLS1cXG5kcml2ZXJzL2lvbW11L2ludGVsL0tjb25maWctNTYtXFx0c2VsZWN0IE1NVV9OT1RJRklFUlxcbmRyaXZlcnMvaW9tbXUvaW50ZWwvS2NvbmZpZzo1NzpcXHRzZWxlY3QgSU9NTVVfU1ZBXFxuZHJpdmVycy9pb21tdS9pbnRlbC9LY29uZmlnLTU4LVxcdGhlbHBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMDY6MzM6MzAuMDgxNjgzNTM1WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjkxMTc5NDM0OTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIEtlcm5lbCBQYWdlIFRhYmxlIE1vZGlmaWNhdGlvbnMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBmaXJzdCB0aGluZydzIGZpcnN0OiB0aGUgY29uZmlnIG9wdGlvbnMuIGBBTURfSU9NTVVgLCBgQVJNX1NNTVVfVjNfU1ZBYCwgYElOVEVMX0lPTU1VX1NWTWAgYWxsIHNlZW0gdG8gZW5hYmxlIHJlbGF0ZWQgZnVuY3Rpb25hbGl0eSwgYnV0IEkgdGhpbmsgYFBURFVNUF9ERUJVR0ZTYCBpcyB0aGUga2V5IG9uZSBoZXJlIOKAkyB0aGF0J3MgdGhlIG9uZSB3ZSBkZWZpbml0ZWx5IG5lZWQuXG5cbkxldCdzIHNlZS4uLkkgYnJpZWZseSBjb25zaWRlcmVkIGBwdGVfZnJhZ21lbnRfZnJlZWAgaW4gYGFyY2gvcG93ZXJwYy9tbS9wZ3RhYmxlLWZyYWcuY2AuIEJ1dCBnaXZlbiB0aGF0IFN5emthbGxlciBwcmltYXJpbHkgdGFyZ2V0cyB4ODYsIGFybTY0LCBhbmQgcmlzY3YsIGl0J3MgcHJvYmFibHkgcG93ZXJwYy1zcGVjaWZpYyBhbmQgbWlnaHQgbm90IGJlICpzdHJpY3RseSogbmVjZXNzYXJ5IHRvIGluY2x1ZGUsIGFsdGhvdWdoIGl0IHdvdWxkIGJlIGhhcm1sZXNzLlxuXG5Ob3csIGxldCBtZSBjaGVjayBgd2Fsa19rZXJuZWxfcGFnZV90YWJsZV9yYW5nZV9sb2NrbGVzc2AgaW4gYG1tL3BhZ2V3YWxrLmNgLiBJdCB3YXNuJ3QgZGlyZWN0bHkgbW9kaWZpZWQsIGJ1dCB0aGUgKmNvbW1lbnQqIHdhcy4gQWgsIGFuZCBoZXJlJ3MgdGhlIGxpbms6IGB3YWxrX3BhZ2VfcmFuZ2VfZGVidWdgIGNhbGxzIGl0LiBCaW5nbyEgU28sIGB3YWxrX3BhZ2VfcmFuZ2VfZGVidWdgIGFuZCBgcHRkdW1wX3dhbGtfcGdkYCBhcmUgY3J1Y2lhbC5cblxuT2theSwgbGV0J3MgYmFjayB1cCBhbmQgcmV2aWV3LiBUaGlzIGlzIGEgc29saWQgZnVuY3Rpb25hbCBjaGFuZ2U6IGB3YWxrX3BhZ2VfcmFuZ2VfZGVidWdgIG5vdyBzYWZlbHkgd2Fsa3Mga2VybmVsIHBhZ2UgdGFibGVzIGluIFJDVS1wcm90ZWN0ZWQgYm91bmRlZCBjaHVua3MgYnkgdXNpbmcgYHdhbGtfa2VybmVsX3BhZ2VfdGFibGVfcmFuZ2VfbG9ja2xlc3NgLiBNb3Jlb3ZlciwgYHBhZ2V0YWJsZV9mcmVlX2tlcm5lbGAgZGVmZXJzIHRoZSBmcmVlaW5nIG9mIGtlcm5lbCBwYWdlIHRhYmxlcyB1c2luZyBgY2FsbF9yY3VgLCBlZmZlY3RpdmVseSBlbXBsb3lpbmcgUkNVLWRlZmVycmVkIGZyZWVpbmcuIFNvLCBtZW1vcnkgbWFuYWdlbWVudCBoYXMgaW1wcm92ZWQgYnkgZW5zdXJpbmcgc2FmZXIgbG9ja2xlc3MgcGFnZSB0YWJsZSB3YWxrcyBhbmQgYXZvaWRpbmcgZXhjZXNzaXZlIGhvbGQgdGltZXMgZm9yIHRoZSBSQ1UgbG9jay4gVGhpcyBpcyBzaWduaWZpY2FudC5cblxuRXNzZW50aWFsbHksIHRoaXMgcGF0Y2ggbW9kaWZpZXMgdGhlIGtlcm5lbCBwYWdlIHRhYmxlIHdhbGtpbmcgYW5kIGZyZWVpbmcgbG9naWMsIG1ha2luZyBpdCBSQ1Utc2FmZS4gYHB0ZHVtcGAgaXMgbm93IHVwZGF0ZWQgdG8gd2FsayBrZXJuZWwgcGFnZSB0YWJsZXMgbG9ja2xlc3NseSB1bmRlciBSQ1UgaW4gYm91bmRlZCBjaHVua3MsIHdoaWxlIHRoZSBga2VybmVsX3BndGFibGVfZnJlZV9yY3VgIGFuZCBgcGFnZXRhYmxlX2ZyZWVfa2VybmVsYCBmdW5jdGlvbnMsIGluIGNvbmp1bmN0aW9uIHdpdGggdGhlIGZvcm1lciwgZW5zdXJlIHRoYXQga2VybmVsIHBhZ2UgdGFibGVzIGFyZSBzYWZlbHkgYWNjZXNzZWQgYW5kIGZyZWVkIGNvbmN1cnJlbnRseS5cblxuTXkgY29uY2x1c2lvbiBpcyB0aGF0IHRoZSBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IGNoYW5nZXMgaGVyZSBhcmUgc2lnbmlmaWNhbnQ6XG5cbiogICAqKkNvbmZpZzoqKiBgUFREVU1QX0RFQlVHRlNgIGlzIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbi5cbiogICAqKkZvY3VzU3ltYm9sczoqKiBJJ2xsIGRlZmluaXRlbHkgYWRkIGB3YWxrX3BhZ2VfcmFuZ2VfZGVidWdgLCBgcHRkdW1wX3dhbGtfcGdkYCwgYHBhZ2V0YWJsZV9mcmVlX2tlcm5lbGAsIGFuZCBga2VybmVsX3BndGFibGVfZnJlZV9yY3VgIHRvIHRoZSBmb2N1cyBzeW1ib2xzLlxuXG5JJ20gcmVhZHkgdG8gYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTM4NzgsIk91dHB1dFRva2VucyI6MTQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDk1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDA2OjMzOjM5LjE5OTY0NzAzOVoiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgyNTM0ODkyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJQVERVTVBfREVCVUdGU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIndhbGtfcGFnZV9yYW5nZV9kZWJ1Z1wiLFxuICAgIFwicHRkdW1wX3dhbGtfcGdkXCIsXG4gICAgXCJwYWdldGFibGVfZnJlZV9rZXJuZWxcIixcbiAgICBcImtlcm5lbF9wZ3RhYmxlX2ZyZWVfcmN1XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGtlcm5lbCBwYWdlIHRhYmxlIHdhbGtpbmcgYW5kIGZyZWVpbmcgbG9naWMuIEl0IGludHJvZHVjZXMgUkNVLWRlZmVycmVkIGZyZWVpbmcgZm9yIGtlcm5lbCBwYWdlIHRhYmxlcyBhbmQgY2hhbmdlcyB0aGUgZGVidWcgcGFnZSB0YWJsZSB3YWxrZXIgKHB0ZHVtcCkgdG8gd2FsayBrZXJuZWwgcGFnZSB0YWJsZXMgbG9ja2xlc3NseSB1bmRlciBSQ1UgaW4gYm91bmRlZCBjaHVua3MuIFRoaXMgaXMgYSBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IGNoYW5nZSB0aGF0IGFmZmVjdHMgaG93IGtlcm5lbCBwYWdlIHRhYmxlcyBhcmUgc2FmZWx5IGFjY2Vzc2VkIGFuZCBmcmVlZCBjb25jdXJyZW50bHkuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiUFREVU1QX0RFQlVHRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ3YWxrX3BhZ2VfcmFuZ2VfZGVidWdcIixcbiAgICBcInB0ZHVtcF93YWxrX3BnZFwiLFxuICAgIFwicGFnZXRhYmxlX2ZyZWVfa2VybmVsXCIsXG4gICAgXCJrZXJuZWxfcGd0YWJsZV9mcmVlX3JjdVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBrZXJuZWwgcGFnZSB0YWJsZSB3YWxraW5nIGFuZCBmcmVlaW5nIGxvZ2ljLiBJdCBpbnRyb2R1Y2VzIFJDVS1kZWZlcnJlZCBmcmVlaW5nIGZvciBrZXJuZWwgcGFnZSB0YWJsZXMgYW5kIGNoYW5nZXMgdGhlIGRlYnVnIHBhZ2UgdGFibGUgd2Fsa2VyIChwdGR1bXApIHRvIHdhbGsga2VybmVsIHBhZ2UgdGFibGVzIGxvY2tsZXNzbHkgdW5kZXIgUkNVIGluIGJvdW5kZWQgY2h1bmtzLiBUaGlzIGlzIGEgY29yZSBtZW1vcnkgbWFuYWdlbWVudCBjaGFuZ2UgdGhhdCBhZmZlY3RzIGhvdyBrZXJuZWwgcGFnZSB0YWJsZXMgYXJlIHNhZmVseSBhY2Nlc3NlZCBhbmQgZnJlZWQgY29uY3VycmVudGx5LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowfl5wp[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-07 06:08:26 +0000 UTC FinishedAt: 2026-07-07 06:33:40 +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": "c6b0b9701fcef71ed7cabc0358bb18e15e8e8329", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "PTDUMP_DEBUGFS" ], "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": "c6b0b9701fcef71ed7cabc0358bb18e15e8e8329", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "PTDUMP_DEBUGFS" ], "series_id": "f21a389e-10ed-4d6d-8aa7-7654acb39d37" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "walk_page_range_debug", "ptdump_walk_pgd", "pagetable_free_kernel", "kernel_pgtable_free_rcu" ], "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+CgkJCTx0ZD4yMDI2LzA3LzA3IDA2OjIzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MTBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtQVERVTVBfREVCVUdGUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3dhbGtfcGFnZV9yYW5nZV9kZWJ1ZyYjMzQ7LAogICAgJiMzNDtwdGR1bXBfd2Fsa19wZ2QmIzM0OywKICAgICYjMzQ7cGFnZXRhYmxlX2ZyZWVfa2VybmVsJiMzNDssCiAgICAmIzM0O2tlcm5lbF9wZ3RhYmxlX2ZyZWVfcmN1JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBrZXJuZWwgcGFnZSB0YWJsZSB3YWxraW5nIGFuZCBmcmVlaW5nIGxvZ2ljLiBJdCBpbnRyb2R1Y2VzIFJDVS1kZWZlcnJlZCBmcmVlaW5nIGZvciBrZXJuZWwgcGFnZSB0YWJsZXMgYW5kIGNoYW5nZXMgdGhlIGRlYnVnIHBhZ2UgdGFibGUgd2Fsa2VyIChwdGR1bXApIHRvIHdhbGsga2VybmVsIHBhZ2UgdGFibGVzIGxvY2tsZXNzbHkgdW5kZXIgUkNVIGluIGJvdW5kZWQgY2h1bmtzLiBUaGlzIGlzIGEgY29yZSBtZW1vcnkgbWFuYWdlbWVudCBjaGFuZ2UgdGhhdCBhZmZlY3RzIGhvdyBrZXJuZWwgcGFnZSB0YWJsZXMgYXJlIHNhZmVseSBhY2Nlc3NlZCBhbmQgZnJlZWQgY29uY3VycmVudGx5LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDA2OjIzPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNDVlMWUzM2ExN2EzY2MzMzU1OGVkZjNiZjgzMTBhYWJkYzk2N2RjY1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgSnVsIDcgMDY6MjM6MDAgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL21tL3BndGFibGUtZnJhZy5jIGIvYXJjaC9wb3dlcnBjL21tL3BndGFibGUtZnJhZy5jXG5pbmRleCBhZTc0MjU2NGEzZDU2ZC4uMWUxZTg4ZjgzMWY3NjcgMTAwNjQ0XG4tLS0gYS9hcmNoL3Bvd2VycGMvbW0vcGd0YWJsZS1mcmFnLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvcG93ZXJwYy9tbS9wZ3RhYmxlLWZyYWcuY1xuQEAgLTEyMyw3ICYjNDM7MTIzLDEyIEBAIHZvaWQgcHRlX2ZyYWdtZW50X2ZyZWUodW5zaWduZWQgbG9uZyAqdGFibGUsIGludCBrZXJuZWwpXG4gXG4gXHRCVUdfT04oYXRvbWljX3JlYWQoXHUwMDI2cHRkZXNjLVx1MDAzZXB0X2ZyYWdfcmVmY291bnQpIFx1MDAzYz0gMCk7XG4gXHRpZiAoYXRvbWljX2RlY19hbmRfdGVzdChcdTAwMjZwdGRlc2MtXHUwMDNlcHRfZnJhZ19yZWZjb3VudCkpIHtcbi1cdFx0aWYgKGtlcm5lbCB8fCAhZm9saW9fdGVzdF9jbGVhcl9hY3RpdmUocHRkZXNjX2ZvbGlvKHB0ZGVzYykpKVxuJiM0MztcdFx0LypcbiYjNDM7XHRcdCAqIEtlcm5lbCBwYWdlIHRhYmxlcyBtYXkgYmUgd2Fsa2VkIGxvY2tsZXNzbHkgdW5kZXIgUkNVIGJ5XG4mIzQzO1x0XHQgKiBwdGR1bXAsIHNvIGRlZmVyIHRoZWlyIGZyZWUgYnkgYSBncmFjZSBwZXJpb2QgdG9vLCBsaWtlIHRoZVxuJiM0MztcdFx0ICogbG9ja2xlc3MtR1VQIGNhc2UgYmVsb3cgZm9yIHVzZXIgdGFibGVzLlxuJiM0MztcdFx0ICovXG4mIzQzO1x0XHRpZiAoIWtlcm5lbCBcdTAwMjZcdTAwMjYgIWZvbGlvX3Rlc3RfY2xlYXJfYWN0aXZlKHB0ZGVzY19mb2xpbyhwdGRlc2MpKSlcbiBcdFx0XHRwdGVfZnJlZV9ub3coXHUwMDI2cHRkZXNjLVx1MDAzZXB0X3JjdV9oZWFkKTtcbiBcdFx0ZWxzZVxuIFx0XHRcdGNhbGxfcmN1KFx1MDAyNnB0ZGVzYy1cdTAwM2VwdF9yY3VfaGVhZCwgcHRlX2ZyZWVfbm93KTtcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L21tLmggYi9pbmNsdWRlL2xpbnV4L21tLmhcbmluZGV4IDQ4NWRmOWMyZGJkZGIzLi43OTQwOGExN2ExYjBkYSAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvbW0uaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9tbS5oXG5AQCAtMzY5NSwxNCAmIzQzOzM2OTUsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgX19wYWdldGFibGVfZnJlZShzdHJ1Y3QgcHRkZXNjICpwdClcbiBcdF9fZnJlZV9wYWdlcyhwYWdlLCBjb21wb3VuZF9vcmRlcihwYWdlKSk7XG4gfVxuIFxuLSNpZmRlZiBDT05GSUdfQVNZTkNfS0VSTkVMX1BHVEFCTEVfRlJFRVxuIHZvaWQgcGFnZXRhYmxlX2ZyZWVfa2VybmVsKHN0cnVjdCBwdGRlc2MgKnB0KTtcbi0jZWxzZVxuLXN0YXRpYyBpbmxpbmUgdm9pZCBwYWdldGFibGVfZnJlZV9rZXJuZWwoc3RydWN0IHB0ZGVzYyAqcHQpXG4te1xuLVx0X19wYWdldGFibGVfZnJlZShwdCk7XG4tfVxuLSNlbmRpZlxuIC8qKlxuICAqIHBhZ2V0YWJsZV9mcmVlIC0gRnJlZSBwYWdldGFibGVzXG4gICogQHB0Olx0VGhlIHBhZ2UgdGFibGUgZGVzY3JpcHRvclxuZGlmZiAtLWdpdCBhL21tL3BhZ2V3YWxrLmMgYi9tbS9wYWdld2Fsay5jXG5pbmRleCAzYWUyNTg2ZmY0NWI0NC4uZmMyZmUwMTRhYzhjNjggMTAwNjQ0XG4tLS0gYS9tbS9wYWdld2Fsay5jXG4mIzQzOyYjNDM7JiM0MzsgYi9tbS9wYWdld2Fsay5jXG5AQCAtNjIwLDcgJiM0Mzs2MjAsNyBAQCBpbnQgd2Fsa19wYWdlX3JhbmdlKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCB1bnNpZ25lZCBsb25nIHN0YXJ0LFxuICAqIE5vdGU6IEJlIGNhcmVmdWwgdG8gd2FsayB0aGUga2VybmVsIHBhZ2VzIHRhYmxlcywgdGhlIGNhbGxlciBtYXkgYmUgbmVlZCB0b1xuICAqIHRha2Ugb3RoZXIgZWZmZWN0aXZlIGFwcHJvYWNoZXMgKG1tYXAgbG9jayBtYXkgYmUgaW5zdWZmaWNpZW50KSB0byBwcmV2ZW50XG4gICogdGhlIGludGVybWVkaWF0ZSBrZXJuZWwgcGFnZSB0YWJsZXMgYmVsb25naW5nIHRvIHRoZSBzcGVjaWZpZWQgYWRkcmVzcyByYW5nZVxuLSAqIGZyb20gYmVpbmcgZnJlZWQgKGUuZy4gbWVtb3J5IGhvdC1yZW1vdmUpLlxuJiM0MzsgKiBmcm9tIGJlaW5nIGZyZWVkIChlLmcuIG1lbW9yeSBob3QtcmVtb3ZlLCB2bWFwIGh1Z2UgcGFnZSBwcm9tb3Rpb24pLlxuICAqL1xuIGludCB3YWxrX2tlcm5lbF9wYWdlX3RhYmxlX3JhbmdlKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kLFxuIFx0XHRjb25zdCBzdHJ1Y3QgbW1fd2Fsa19vcHMgKm9wcywgcGdkX3QgKnBnZCwgdm9pZCAqcHJpdmF0ZSlcbkBAIC02NDMsNyAmIzQzOzY0Myw3IEBAIGludCB3YWxrX2tlcm5lbF9wYWdlX3RhYmxlX3JhbmdlKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kLFxuICAqIFVzZSB0aGlzIGZ1bmN0aW9uIHRvIHdhbGsgdGhlIGtlcm5lbCBwYWdlIHRhYmxlcyBsb2NrbGVzc2x5LiBJdCBzaG91bGQgYmVcbiAgKiBndWFyYW50ZWVkIHRoYXQgdGhlIGNhbGxlciBoYXMgZXhjbHVzaXZlIGFjY2VzcyBvdmVyIHRoZSByYW5nZSB0aGV5IGFyZVxuICAqIG9wZXJhdGluZyBvbiAtIHRoYXQgdGhlcmUgc2hvdWxkIGJlIG5vIGNvbmN1cnJlbnQgYWNjZXNzLCBmb3IgZXhhbXBsZSxcbi0gKiBjaGFuZ2luZyBwZXJtaXNzaW9ucyBmb3Igdm1hbGxvYyBvYmplY3RzLlxuJiM0MzsgKiBjaGFuZ2luZyBwZXJtaXNzaW9ucyBmb3Igdm1hbGxvYyBvYmplY3RzLCBvciB2bWFwIGh1Z2UgcGFnZSBwcm9tb3Rpb24uXG4gICovXG4gaW50IHdhbGtfa2VybmVsX3BhZ2VfdGFibGVfcmFuZ2VfbG9ja2xlc3ModW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQsXG4gXHRcdGNvbnN0IHN0cnVjdCBtbV93YWxrX29wcyAqb3BzLCBwZ2RfdCAqcGdkLCB2b2lkICpwcml2YXRlKVxuQEAgLTY5Miw5ICYjNDM7NjkyLDM1IEBAIGludCB3YWxrX3BhZ2VfcmFuZ2VfZGVidWcoc3RydWN0IG1tX3N0cnVjdCAqbW0sIHVuc2lnbmVkIGxvbmcgc3RhcnQsXG4gXHR9O1xuIFxuIFx0LyogRm9yIGNvbnZlbmllbmNlLCB3ZSBhbGxvdyB0cmF2ZXJzYWwgb2Yga2VybmVsIG1hcHBpbmdzLiAqL1xuLVx0aWYgKG1tID09IFx1MDAyNmluaXRfbW0pXG4tXHRcdHJldHVybiB3YWxrX2tlcm5lbF9wYWdlX3RhYmxlX3JhbmdlKHN0YXJ0LCBlbmQsIG9wcyxcbi1cdFx0XHRcdFx0XHQgICAgcGdkLCBwcml2YXRlKTtcbiYjNDM7XHRpZiAobW0gPT0gXHUwMDI2aW5pdF9tbSkge1xuJiM0MztcdFx0dW5zaWduZWQgbG9uZyBhZGRyID0gc3RhcnQ7XG4mIzQzO1xuJiM0MztcdFx0LypcbiYjNDM7XHRcdCAqIFdhbGsgaW4gYm91bmRlZCBjaHVua3Mgc28gdGhlIFJDVSByZWFkIGxvY2sgaXMgbmV2ZXIgaGVsZFxuJiM0MztcdFx0ICogYWNyb3NzIHRoZSB3aG9sZSBrZXJuZWwgYWRkcmVzcyBzcGFjZS4gIEEga2VybmVsIHBhZ2UgdGFibGVcbiYjNDM7XHRcdCAqIGZyZWVkIHZpYSBwYWdldGFibGVfZnJlZV9rZXJuZWwoKSBzdGF5cyB2YWxpZCB1bnRpbCB0aGUgd2Fsa1xuJiM0MztcdFx0ICogdGhhdCBtYXkgaGF2ZSBvYnNlcnZlZCBpdCBkcm9wcyB0aGUgbG9jazsgcmVsZWFzaW5nIHRoZSBsb2NrXG4mIzQzO1x0XHQgKiBiZXR3ZWVuIGNodW5rcyBpcyBzYWZlIGFzIG5vIHBhZ2UgdGFibGUgcG9pbnRlciBpcyBoZWxkXG4mIzQzO1x0XHQgKiBhY3Jvc3MgdGhlIGdhcC4gVGhlIG1tYXAgbG9jayBpcyBub3QgaGVsZCwgc28gdXNlIHRoZVxuJiM0MztcdFx0ICogbG9ja2xlc3Mgd2Fsa2VyOyBSQ1UsIG5vdCB0aGUgbG9jaywga2VlcHMgdGhlIHRhYmxlIGFsaXZlLlxuJiM0MztcdFx0ICovXG4mIzQzO1x0XHR3aGlsZSAoYWRkciBcdTAwM2MgZW5kKSB7XG4mIzQzO1x0XHRcdHVuc2lnbmVkIGxvbmcgbmV4dCA9IHBnZF9hZGRyX2VuZChhZGRyLCBlbmQpO1xuJiM0MztcdFx0XHRpbnQgZXJyO1xuJiM0MztcbiYjNDM7XHRcdFx0cmN1X3JlYWRfbG9jaygpO1xuJiM0MztcdFx0XHRlcnIgPSB3YWxrX2tlcm5lbF9wYWdlX3RhYmxlX3JhbmdlX2xvY2tsZXNzKGFkZHIsIG5leHQsIG9wcyxcbiYjNDM7XHRcdFx0XHRcdFx0XHRcdCAgICBwZ2QsIHByaXZhdGUpO1xuJiM0MztcdFx0XHRyY3VfcmVhZF91bmxvY2soKTtcbiYjNDM7XHRcdFx0aWYgKGVycilcbiYjNDM7XHRcdFx0XHRyZXR1cm4gZXJyO1xuJiM0MztcbiYjNDM7XHRcdFx0YWRkciA9IG5leHQ7XG4mIzQzO1x0XHRcdGNvbmRfcmVzY2hlZCgpO1xuJiM0MztcdFx0fVxuJiM0MztcdFx0cmV0dXJuIDA7XG4mIzQzO1x0fVxuJiM0MztcbiBcdGlmIChzdGFydCBcdTAwM2U9IGVuZCB8fCAhd2Fsay5tbSlcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXHRpZiAoIWNoZWNrX29wc19zYWZlKG9wcykpXG5kaWZmIC0tZ2l0IGEvbW0vcGd0YWJsZS1nZW5lcmljLmMgYi9tbS9wZ3RhYmxlLWdlbmVyaWMuY1xuaW5kZXggYjkxYjFhOTgwMjljN2YuLjdhMzJlNDgyMTk1N2NjIDEwMDY0NFxuLS0tIGEvbW0vcGd0YWJsZS1nZW5lcmljLmNcbiYjNDM7JiM0MzsmIzQzOyBiL21tL3BndGFibGUtZ2VuZXJpYy5jXG5AQCAtNDEwLDYgJiM0Mzs0MTAsMTMgQEAgcHRlX3QgKnB0ZV9vZmZzZXRfbWFwX2xvY2soc3RydWN0IG1tX3N0cnVjdCAqbW0sIHBtZF90ICpwbWQsXG4gXHRnb3RvIGFnYWluO1xuIH1cbiBcbiYjNDM7c3RhdGljIHZvaWQga2VybmVsX3BndGFibGVfZnJlZV9yY3Uoc3RydWN0IHJjdV9oZWFkICpoZWFkKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IHB0ZGVzYyAqcHQgPSBjb250YWluZXJfb2YoaGVhZCwgc3RydWN0IHB0ZGVzYywgcHRfcmN1X2hlYWQpO1xuJiM0MztcbiYjNDM7XHRfX3BhZ2V0YWJsZV9mcmVlKHB0KTtcbiYjNDM7fVxuJiM0MztcbiAjaWZkZWYgQ09ORklHX0FTWU5DX0tFUk5FTF9QR1RBQkxFX0ZSRUVcbiBzdGF0aWMgdm9pZCBrZXJuZWxfcGd0YWJsZV93b3JrX2Z1bmMoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKTtcbiBcbkBAIC00MzQsOCAmIzQzOzQ0MSwxNSBAQCBzdGF0aWMgdm9pZCBrZXJuZWxfcGd0YWJsZV93b3JrX2Z1bmMoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuIFx0c3Bpbl91bmxvY2soXHUwMDI2a2VybmVsX3BndGFibGVfd29yay5sb2NrKTtcbiBcbiBcdGlvbW11X3N2YV9pbnZhbGlkYXRlX2t2YV9yYW5nZShQQUdFX09GRlNFVCwgVExCX0ZMVVNIX0FMTCk7XG4mIzQzO1xuJiM0MztcdC8qXG4mIzQzO1x0ICogRGVidWcgd2Fsa2VycyAocHRkdW1wKSBtYXkgd2FsayByYW5nZXMgdGhleSBkbyBub3Qgb3duIGFuZCByYWNlIHRoaXNcbiYjNDM7XHQgKiBmcmVlLCBzbyB0aGV5IHdhbGsgdW5kZXIgcmN1X3JlYWRfbG9jaygpLiBGcmVlIGFmdGVyIGEgZ3JhY2UgcGVyaW9kOlxuJiM0MztcdCAqIGEgd2Fsa2VyIGVpdGhlciBhbHJlYWR5IHNhdyB0aGUgY2xlYXJlZCBQTUQsIG9yIGtlZXBzIHRoZSBwYWdlIGFsaXZlXG4mIzQzO1x0ICogdW50aWwgaXQgZHJvcHMgdGhlIFJDVSBsb2NrLlxuJiM0MztcdCAqL1xuIFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHB0LCBuZXh0LCBcdTAwMjZwYWdlX2xpc3QsIHB0X2xpc3QpXG4tXHRcdF9fcGFnZXRhYmxlX2ZyZWUocHQpO1xuJiM0MztcdFx0Y2FsbF9yY3UoXHUwMDI2cHQtXHUwMDNlcHRfcmN1X2hlYWQsIGtlcm5lbF9wZ3RhYmxlX2ZyZWVfcmN1KTtcbiB9XG4gXG4gdm9pZCBwYWdldGFibGVfZnJlZV9rZXJuZWwoc3RydWN0IHB0ZGVzYyAqcHQpXG5AQCAtNDQ2LDQgJiM0Mzs0NjAsMTAgQEAgdm9pZCBwYWdldGFibGVfZnJlZV9rZXJuZWwoc3RydWN0IHB0ZGVzYyAqcHQpXG4gXG4gXHRzY2hlZHVsZV93b3JrKFx1MDAyNmtlcm5lbF9wZ3RhYmxlX3dvcmsud29yayk7XG4gfVxuJiM0MzsjZWxzZVxuJiM0Mzt2b2lkIHBhZ2V0YWJsZV9mcmVlX2tlcm5lbChzdHJ1Y3QgcHRkZXNjICpwdClcbiYjNDM7e1xuJiM0MztcdC8qIERlZmVyIHRoZSBmcmVlIGJ5IGEgZ3JhY2UgcGVyaW9kOyBzZWUga2VybmVsX3BndGFibGVfd29ya19mdW5jKCkuICovXG4mIzQzO1x0Y2FsbF9yY3UoXHUwMDI2cHQtXHUwMDNlcHRfcmN1X2hlYWQsIGtlcm5lbF9wZ3RhYmxlX2ZyZWVfcmN1KTtcbiYjNDM7fVxuICNlbmRpZlxuZGlmZiAtLWdpdCBhL21tL3B0ZHVtcC5jIGIvbW0vcHRkdW1wLmNcbmluZGV4IDk3MzAyMDAwMDA5NmNmLi41MzdiZTk5OTVlMWEzYyAxMDA2NDRcbi0tLSBhL21tL3B0ZHVtcC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9tbS9wdGR1bXAuY1xuQEAgLTE3NywxMyAmIzQzOzE3NywyMCBAQCB2b2lkIHB0ZHVtcF93YWxrX3BnZChzdHJ1Y3QgcHRkdW1wX3N0YXRlICpzdCwgc3RydWN0IG1tX3N0cnVjdCAqbW0sIHBnZF90ICpwZ2QpXG4gXHRjb25zdCBzdHJ1Y3QgcHRkdW1wX3JhbmdlICpyYW5nZSA9IHN0LVx1MDAzZXJhbmdlO1xuIFxuIFx0Z2V0X29ubGluZV9tZW1zKCk7XG4tXHRtbWFwX3dyaXRlX2xvY2sobW0pO1xuJiM0MztcdC8qXG4mIzQzO1x0ICogaW5pdF9tbSBpcyB3YWxrZWQgbG9ja2xlc3NseSB1bmRlciBSQ1UgYnkgd2Fsa19wYWdlX3JhbmdlX2RlYnVnKCkuXG4mIzQzO1x0ICogZWZpX21tIC8gY3VycmVudC1cdTAwM2VtbSBwYWdlIHRhYmxlcyBhcmUgbm90IFJDVS1mcmVlZCwgc28gaG9sZCB0aGVcbiYjNDM7XHQgKiBtbWFwIHdyaXRlIGxvY2sgdG8ga2VlcCB0aGVtIHN0YWJsZSBhZ2FpbnN0IGNvbmN1cnJlbnQgdGVhcmRvd24uXG4mIzQzO1x0ICovXG4mIzQzO1x0aWYgKG1tICE9IFx1MDAyNmluaXRfbW0pXG4mIzQzO1x0XHRtbWFwX3dyaXRlX2xvY2sobW0pO1xuIFx0d2hpbGUgKHJhbmdlLVx1MDAzZXN0YXJ0ICE9IHJhbmdlLVx1MDAzZWVuZCkge1xuIFx0XHR3YWxrX3BhZ2VfcmFuZ2VfZGVidWcobW0sIHJhbmdlLVx1MDAzZXN0YXJ0LCByYW5nZS1cdTAwM2VlbmQsXG4gXHRcdFx0XHQgICAgICBcdTAwMjZwdGR1bXBfb3BzLCBwZ2QsIHN0KTtcbiBcdFx0cmFuZ2UmIzQzOyYjNDM7O1xuIFx0fVxuLVx0bW1hcF93cml0ZV91bmxvY2sobW0pO1xuJiM0MztcdGlmIChtbSAhPSBcdTAwMjZpbml0X21tKVxuJiM0MztcdFx0bW1hcF93cml0ZV91bmxvY2sobW0pO1xuIFx0cHV0X29ubGluZV9tZW1zKCk7XG4gXG4gXHQvKiBGbHVzaCBvdXQgdGhlIGxhc3QgcGFnZSAqL1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDA2OjIzPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjEwbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtQVERVTVBfREVCVUdGUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3dhbGtfcGFnZV9yYW5nZV9kZWJ1ZyYjMzQ7LAogICAgJiMzNDtwdGR1bXBfd2Fsa19wZ2QmIzM0OywKICAgICYjMzQ7cGFnZXRhYmxlX2ZyZWVfa2VybmVsJiMzNDssCiAgICAmIzM0O2tlcm5lbF9wZ3RhYmxlX2ZyZWVfcmN1JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBrZXJuZWwgcGFnZSB0YWJsZSB3YWxraW5nIGFuZCBmcmVlaW5nIGxvZ2ljLiBJdCBpbnRyb2R1Y2VzIFJDVS1kZWZlcnJlZCBmcmVlaW5nIGZvciBrZXJuZWwgcGFnZSB0YWJsZXMgYW5kIGNoYW5nZXMgdGhlIGRlYnVnIHBhZ2UgdGFibGUgd2Fsa2VyIChwdGR1bXApIHRvIHdhbGsga2VybmVsIHBhZ2UgdGFibGVzIGxvY2tsZXNzbHkgdW5kZXIgUkNVIGluIGJvdW5kZWQgY2h1bmtzLiBUaGlzIGlzIGEgY29yZSBtZW1vcnkgbWFuYWdlbWVudCBjaGFuZ2UgdGhhdCBhZmZlY3RzIGhvdyBrZXJuZWwgcGFnZSB0YWJsZXMgYXJlIHNhZmVseSBhY2Nlc3NlZCBhbmQgZnJlZWQgY29uY3VycmVudGx5LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA0NWUxZTMzYTE3YTNjYzMzNTU4ZWRmM2JmODMxMGFhYmRjOTY3ZGNjCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFR1ZSBKdWwgNyAwNjoyMzowMCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9tbS9wZ3RhYmxlLWZyYWcuYyBiL2FyY2gvcG93ZXJwYy9tbS9wZ3RhYmxlLWZyYWcuYwppbmRleCBhZTc0MjU2NGEzZDU2ZC4uMWUxZTg4ZjgzMWY3NjcgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9tbS9wZ3RhYmxlLWZyYWcuYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3Bvd2VycGMvbW0vcGd0YWJsZS1mcmFnLmMKQEAgLTEyMyw3ICYjNDM7MTIzLDEyIEBAIHZvaWQgcHRlX2ZyYWdtZW50X2ZyZWUodW5zaWduZWQgbG9uZyAqdGFibGUsIGludCBrZXJuZWwpCiAKIAlCVUdfT04oYXRvbWljX3JlYWQoJmFtcDtwdGRlc2MtJmd0O3B0X2ZyYWdfcmVmY291bnQpICZsdDs9IDApOwogCWlmIChhdG9taWNfZGVjX2FuZF90ZXN0KCZhbXA7cHRkZXNjLSZndDtwdF9mcmFnX3JlZmNvdW50KSkgewotCQlpZiAoa2VybmVsIHx8ICFmb2xpb190ZXN0X2NsZWFyX2FjdGl2ZShwdGRlc2NfZm9saW8ocHRkZXNjKSkpCiYjNDM7CQkvKgomIzQzOwkJICogS2VybmVsIHBhZ2UgdGFibGVzIG1heSBiZSB3YWxrZWQgbG9ja2xlc3NseSB1bmRlciBSQ1UgYnkKJiM0MzsJCSAqIHB0ZHVtcCwgc28gZGVmZXIgdGhlaXIgZnJlZSBieSBhIGdyYWNlIHBlcmlvZCB0b28sIGxpa2UgdGhlCiYjNDM7CQkgKiBsb2NrbGVzcy1HVVAgY2FzZSBiZWxvdyBmb3IgdXNlciB0YWJsZXMuCiYjNDM7CQkgKi8KJiM0MzsJCWlmICgha2VybmVsICZhbXA7JmFtcDsgIWZvbGlvX3Rlc3RfY2xlYXJfYWN0aXZlKHB0ZGVzY19mb2xpbyhwdGRlc2MpKSkKIAkJCXB0ZV9mcmVlX25vdygmYW1wO3B0ZGVzYy0mZ3Q7cHRfcmN1X2hlYWQpOwogCQllbHNlCiAJCQljYWxsX3JjdSgmYW1wO3B0ZGVzYy0mZ3Q7cHRfcmN1X2hlYWQsIHB0ZV9mcmVlX25vdyk7CmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L21tLmggYi9pbmNsdWRlL2xpbnV4L21tLmgKaW5kZXggNDg1ZGY5YzJkYmRkYjMuLjc5NDA4YTE3YTFiMGRhIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L21tLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9tbS5oCkBAIC0zNjk1LDE0ICYjNDM7MzY5NSw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBfX3BhZ2V0YWJsZV9mcmVlKHN0cnVjdCBwdGRlc2MgKnB0KQogCV9fZnJlZV9wYWdlcyhwYWdlLCBjb21wb3VuZF9vcmRlcihwYWdlKSk7CiB9CiAKLSNpZmRlZiBDT05GSUdfQVNZTkNfS0VSTkVMX1BHVEFCTEVfRlJFRQogdm9pZCBwYWdldGFibGVfZnJlZV9rZXJuZWwoc3RydWN0IHB0ZGVzYyAqcHQpOwotI2Vsc2UKLXN0YXRpYyBpbmxpbmUgdm9pZCBwYWdldGFibGVfZnJlZV9rZXJuZWwoc3RydWN0IHB0ZGVzYyAqcHQpCi17Ci0JX19wYWdldGFibGVfZnJlZShwdCk7Ci19Ci0jZW5kaWYKIC8qKgogICogcGFnZXRhYmxlX2ZyZWUgLSBGcmVlIHBhZ2V0YWJsZXMKICAqIEBwdDoJVGhlIHBhZ2UgdGFibGUgZGVzY3JpcHRvcgpkaWZmIC0tZ2l0IGEvbW0vcGFnZXdhbGsuYyBiL21tL3BhZ2V3YWxrLmMKaW5kZXggM2FlMjU4NmZmNDViNDQuLmZjMmZlMDE0YWM4YzY4IDEwMDY0NAotLS0gYS9tbS9wYWdld2Fsay5jCiYjNDM7JiM0MzsmIzQzOyBiL21tL3BhZ2V3YWxrLmMKQEAgLTYyMCw3ICYjNDM7NjIwLDcgQEAgaW50IHdhbGtfcGFnZV9yYW5nZShzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5zaWduZWQgbG9uZyBzdGFydCwKICAqIE5vdGU6IEJlIGNhcmVmdWwgdG8gd2FsayB0aGUga2VybmVsIHBhZ2VzIHRhYmxlcywgdGhlIGNhbGxlciBtYXkgYmUgbmVlZCB0bwogICogdGFrZSBvdGhlciBlZmZlY3RpdmUgYXBwcm9hY2hlcyAobW1hcCBsb2NrIG1heSBiZSBpbnN1ZmZpY2llbnQpIHRvIHByZXZlbnQKICAqIHRoZSBpbnRlcm1lZGlhdGUga2VybmVsIHBhZ2UgdGFibGVzIGJlbG9uZ2luZyB0byB0aGUgc3BlY2lmaWVkIGFkZHJlc3MgcmFuZ2UKLSAqIGZyb20gYmVpbmcgZnJlZWQgKGUuZy4gbWVtb3J5IGhvdC1yZW1vdmUpLgomIzQzOyAqIGZyb20gYmVpbmcgZnJlZWQgKGUuZy4gbWVtb3J5IGhvdC1yZW1vdmUsIHZtYXAgaHVnZSBwYWdlIHByb21vdGlvbikuCiAgKi8KIGludCB3YWxrX2tlcm5lbF9wYWdlX3RhYmxlX3JhbmdlKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kLAogCQljb25zdCBzdHJ1Y3QgbW1fd2Fsa19vcHMgKm9wcywgcGdkX3QgKnBnZCwgdm9pZCAqcHJpdmF0ZSkKQEAgLTY0Myw3ICYjNDM7NjQzLDcgQEAgaW50IHdhbGtfa2VybmVsX3BhZ2VfdGFibGVfcmFuZ2UodW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQsCiAgKiBVc2UgdGhpcyBmdW5jdGlvbiB0byB3YWxrIHRoZSBrZXJuZWwgcGFnZSB0YWJsZXMgbG9ja2xlc3NseS4gSXQgc2hvdWxkIGJlCiAgKiBndWFyYW50ZWVkIHRoYXQgdGhlIGNhbGxlciBoYXMgZXhjbHVzaXZlIGFjY2VzcyBvdmVyIHRoZSByYW5nZSB0aGV5IGFyZQogICogb3BlcmF0aW5nIG9uIC0gdGhhdCB0aGVyZSBzaG91bGQgYmUgbm8gY29uY3VycmVudCBhY2Nlc3MsIGZvciBleGFtcGxlLAotICogY2hhbmdpbmcgcGVybWlzc2lvbnMgZm9yIHZtYWxsb2Mgb2JqZWN0cy4KJiM0MzsgKiBjaGFuZ2luZyBwZXJtaXNzaW9ucyBmb3Igdm1hbGxvYyBvYmplY3RzLCBvciB2bWFwIGh1Z2UgcGFnZSBwcm9tb3Rpb24uCiAgKi8KIGludCB3YWxrX2tlcm5lbF9wYWdlX3RhYmxlX3JhbmdlX2xvY2tsZXNzKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kLAogCQljb25zdCBzdHJ1Y3QgbW1fd2Fsa19vcHMgKm9wcywgcGdkX3QgKnBnZCwgdm9pZCAqcHJpdmF0ZSkKQEAgLTY5Miw5ICYjNDM7NjkyLDM1IEBAIGludCB3YWxrX3BhZ2VfcmFuZ2VfZGVidWcoc3RydWN0IG1tX3N0cnVjdCAqbW0sIHVuc2lnbmVkIGxvbmcgc3RhcnQsCiAJfTsKIAogCS8qIEZvciBjb252ZW5pZW5jZSwgd2UgYWxsb3cgdHJhdmVyc2FsIG9mIGtlcm5lbCBtYXBwaW5ncy4gKi8KLQlpZiAobW0gPT0gJmFtcDtpbml0X21tKQotCQlyZXR1cm4gd2Fsa19rZXJuZWxfcGFnZV90YWJsZV9yYW5nZShzdGFydCwgZW5kLCBvcHMsCi0JCQkJCQkgICAgcGdkLCBwcml2YXRlKTsKJiM0MzsJaWYgKG1tID09ICZhbXA7aW5pdF9tbSkgewomIzQzOwkJdW5zaWduZWQgbG9uZyBhZGRyID0gc3RhcnQ7CiYjNDM7CiYjNDM7CQkvKgomIzQzOwkJICogV2FsayBpbiBib3VuZGVkIGNodW5rcyBzbyB0aGUgUkNVIHJlYWQgbG9jayBpcyBuZXZlciBoZWxkCiYjNDM7CQkgKiBhY3Jvc3MgdGhlIHdob2xlIGtlcm5lbCBhZGRyZXNzIHNwYWNlLiAgQSBrZXJuZWwgcGFnZSB0YWJsZQomIzQzOwkJICogZnJlZWQgdmlhIHBhZ2V0YWJsZV9mcmVlX2tlcm5lbCgpIHN0YXlzIHZhbGlkIHVudGlsIHRoZSB3YWxrCiYjNDM7CQkgKiB0aGF0IG1heSBoYXZlIG9ic2VydmVkIGl0IGRyb3BzIHRoZSBsb2NrOyByZWxlYXNpbmcgdGhlIGxvY2sKJiM0MzsJCSAqIGJldHdlZW4gY2h1bmtzIGlzIHNhZmUgYXMgbm8gcGFnZSB0YWJsZSBwb2ludGVyIGlzIGhlbGQKJiM0MzsJCSAqIGFjcm9zcyB0aGUgZ2FwLiBUaGUgbW1hcCBsb2NrIGlzIG5vdCBoZWxkLCBzbyB1c2UgdGhlCiYjNDM7CQkgKiBsb2NrbGVzcyB3YWxrZXI7IFJDVSwgbm90IHRoZSBsb2NrLCBrZWVwcyB0aGUgdGFibGUgYWxpdmUuCiYjNDM7CQkgKi8KJiM0MzsJCXdoaWxlIChhZGRyICZsdDsgZW5kKSB7CiYjNDM7CQkJdW5zaWduZWQgbG9uZyBuZXh0ID0gcGdkX2FkZHJfZW5kKGFkZHIsIGVuZCk7CiYjNDM7CQkJaW50IGVycjsKJiM0MzsKJiM0MzsJCQlyY3VfcmVhZF9sb2NrKCk7CiYjNDM7CQkJZXJyID0gd2Fsa19rZXJuZWxfcGFnZV90YWJsZV9yYW5nZV9sb2NrbGVzcyhhZGRyLCBuZXh0LCBvcHMsCiYjNDM7CQkJCQkJCQkgICAgcGdkLCBwcml2YXRlKTsKJiM0MzsJCQlyY3VfcmVhZF91bmxvY2soKTsKJiM0MzsJCQlpZiAoZXJyKQomIzQzOwkJCQlyZXR1cm4gZXJyOwomIzQzOwomIzQzOwkJCWFkZHIgPSBuZXh0OwomIzQzOwkJCWNvbmRfcmVzY2hlZCgpOwomIzQzOwkJfQomIzQzOwkJcmV0dXJuIDA7CiYjNDM7CX0KJiM0MzsKIAlpZiAoc3RhcnQgJmd0Oz0gZW5kIHx8ICF3YWxrLm1tKQogCQlyZXR1cm4gLUVJTlZBTDsKIAlpZiAoIWNoZWNrX29wc19zYWZlKG9wcykpCmRpZmYgLS1naXQgYS9tbS9wZ3RhYmxlLWdlbmVyaWMuYyBiL21tL3BndGFibGUtZ2VuZXJpYy5jCmluZGV4IGI5MWIxYTk4MDI5YzdmLi43YTMyZTQ4MjE5NTdjYyAxMDA2NDQKLS0tIGEvbW0vcGd0YWJsZS1nZW5lcmljLmMKJiM0MzsmIzQzOyYjNDM7IGIvbW0vcGd0YWJsZS1nZW5lcmljLmMKQEAgLTQxMCw2ICYjNDM7NDEwLDEzIEBAIHB0ZV90ICpwdGVfb2Zmc2V0X21hcF9sb2NrKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCBwbWRfdCAqcG1kLAogCWdvdG8gYWdhaW47CiB9CiAKJiM0MztzdGF0aWMgdm9pZCBrZXJuZWxfcGd0YWJsZV9mcmVlX3JjdShzdHJ1Y3QgcmN1X2hlYWQgKmhlYWQpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgcHRkZXNjICpwdCA9IGNvbnRhaW5lcl9vZihoZWFkLCBzdHJ1Y3QgcHRkZXNjLCBwdF9yY3VfaGVhZCk7CiYjNDM7CiYjNDM7CV9fcGFnZXRhYmxlX2ZyZWUocHQpOwomIzQzO30KJiM0MzsKICNpZmRlZiBDT05GSUdfQVNZTkNfS0VSTkVMX1BHVEFCTEVfRlJFRQogc3RhdGljIHZvaWQga2VybmVsX3BndGFibGVfd29ya19mdW5jKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yayk7CiAKQEAgLTQzNCw4ICYjNDM7NDQxLDE1IEBAIHN0YXRpYyB2b2lkIGtlcm5lbF9wZ3RhYmxlX3dvcmtfZnVuYyhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCiAJc3Bpbl91bmxvY2soJmFtcDtrZXJuZWxfcGd0YWJsZV93b3JrLmxvY2spOwogCiAJaW9tbXVfc3ZhX2ludmFsaWRhdGVfa3ZhX3JhbmdlKFBBR0VfT0ZGU0VULCBUTEJfRkxVU0hfQUxMKTsKJiM0MzsKJiM0MzsJLyoKJiM0MzsJICogRGVidWcgd2Fsa2VycyAocHRkdW1wKSBtYXkgd2FsayByYW5nZXMgdGhleSBkbyBub3Qgb3duIGFuZCByYWNlIHRoaXMKJiM0MzsJICogZnJlZSwgc28gdGhleSB3YWxrIHVuZGVyIHJjdV9yZWFkX2xvY2soKS4gRnJlZSBhZnRlciBhIGdyYWNlIHBlcmlvZDoKJiM0MzsJICogYSB3YWxrZXIgZWl0aGVyIGFscmVhZHkgc2F3IHRoZSBjbGVhcmVkIFBNRCwgb3Iga2VlcHMgdGhlIHBhZ2UgYWxpdmUKJiM0MzsJICogdW50aWwgaXQgZHJvcHMgdGhlIFJDVSBsb2NrLgomIzQzOwkgKi8KIAlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUocHQsIG5leHQsICZhbXA7cGFnZV9saXN0LCBwdF9saXN0KQotCQlfX3BhZ2V0YWJsZV9mcmVlKHB0KTsKJiM0MzsJCWNhbGxfcmN1KCZhbXA7cHQtJmd0O3B0X3JjdV9oZWFkLCBrZXJuZWxfcGd0YWJsZV9mcmVlX3JjdSk7CiB9CiAKIHZvaWQgcGFnZXRhYmxlX2ZyZWVfa2VybmVsKHN0cnVjdCBwdGRlc2MgKnB0KQpAQCAtNDQ2LDQgJiM0Mzs0NjAsMTAgQEAgdm9pZCBwYWdldGFibGVfZnJlZV9rZXJuZWwoc3RydWN0IHB0ZGVzYyAqcHQpCiAKIAlzY2hlZHVsZV93b3JrKCZhbXA7a2VybmVsX3BndGFibGVfd29yay53b3JrKTsKIH0KJiM0MzsjZWxzZQomIzQzO3ZvaWQgcGFnZXRhYmxlX2ZyZWVfa2VybmVsKHN0cnVjdCBwdGRlc2MgKnB0KQomIzQzO3sKJiM0MzsJLyogRGVmZXIgdGhlIGZyZWUgYnkgYSBncmFjZSBwZXJpb2Q7IHNlZSBrZXJuZWxfcGd0YWJsZV93b3JrX2Z1bmMoKS4gKi8KJiM0MzsJY2FsbF9yY3UoJmFtcDtwdC0mZ3Q7cHRfcmN1X2hlYWQsIGtlcm5lbF9wZ3RhYmxlX2ZyZWVfcmN1KTsKJiM0Mzt9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL21tL3B0ZHVtcC5jIGIvbW0vcHRkdW1wLmMKaW5kZXggOTczMDIwMDAwMDk2Y2YuLjUzN2JlOTk5NWUxYTNjIDEwMDY0NAotLS0gYS9tbS9wdGR1bXAuYwomIzQzOyYjNDM7JiM0MzsgYi9tbS9wdGR1bXAuYwpAQCAtMTc3LDEzICYjNDM7MTc3LDIwIEBAIHZvaWQgcHRkdW1wX3dhbGtfcGdkKHN0cnVjdCBwdGR1bXBfc3RhdGUgKnN0LCBzdHJ1Y3QgbW1fc3RydWN0ICptbSwgcGdkX3QgKnBnZCkKIAljb25zdCBzdHJ1Y3QgcHRkdW1wX3JhbmdlICpyYW5nZSA9IHN0LSZndDtyYW5nZTsKIAogCWdldF9vbmxpbmVfbWVtcygpOwotCW1tYXBfd3JpdGVfbG9jayhtbSk7CiYjNDM7CS8qCiYjNDM7CSAqIGluaXRfbW0gaXMgd2Fsa2VkIGxvY2tsZXNzbHkgdW5kZXIgUkNVIGJ5IHdhbGtfcGFnZV9yYW5nZV9kZWJ1ZygpLgomIzQzOwkgKiBlZmlfbW0gLyBjdXJyZW50LSZndDttbSBwYWdlIHRhYmxlcyBhcmUgbm90IFJDVS1mcmVlZCwgc28gaG9sZCB0aGUKJiM0MzsJICogbW1hcCB3cml0ZSBsb2NrIHRvIGtlZXAgdGhlbSBzdGFibGUgYWdhaW5zdCBjb25jdXJyZW50IHRlYXJkb3duLgomIzQzOwkgKi8KJiM0MzsJaWYgKG1tICE9ICZhbXA7aW5pdF9tbSkKJiM0MzsJCW1tYXBfd3JpdGVfbG9jayhtbSk7CiAJd2hpbGUgKHJhbmdlLSZndDtzdGFydCAhPSByYW5nZS0mZ3Q7ZW5kKSB7CiAJCXdhbGtfcGFnZV9yYW5nZV9kZWJ1ZyhtbSwgcmFuZ2UtJmd0O3N0YXJ0LCByYW5nZS0mZ3Q7ZW5kLAogCQkJCSAgICAgICZhbXA7cHRkdW1wX29wcywgcGdkLCBzdCk7CiAJCXJhbmdlJiM0MzsmIzQzOzsKIAl9Ci0JbW1hcF93cml0ZV91bmxvY2sobW0pOwomIzQzOwlpZiAobW0gIT0gJmFtcDtpbml0X21tKQomIzQzOwkJbW1hcF93cml0ZV91bmxvY2sobW0pOwogCXB1dF9vbmxpbmVfbWVtcygpOwogCiAJLyogRmx1c2ggb3V0IHRoZSBsYXN0IHBhZ2UgKi8KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMDY6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDAyMgoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDMzMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBGdXp6aW5nIFN0cmF0ZWd5OiBLZXJuZWwgUGFnZSBUYWJsZSBNb2RpZmljYXRpb25zKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoLiBJdCYjMzk7cyBhIHNpZ25pZmljYW50IG9uZSwgdG91Y2hpbmcgdGhlIHZlcnkgY29yZSBvZiBob3cgdGhlIGtlcm5lbCBtYW5hZ2VzIG1lbW9yeSwgc3BlY2lmaWNhbGx5IHBhZ2UgdGFibGUgd2Fsa2luZyBhbmQgZnJlZWluZy4gV2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQgY2hhbmdlcyB0byBgd2Fsa19wYWdlX3JhbmdlX2RlYnVnYCBpbiBgbW0vcGFnZXdhbGsuY2AsIG1ha2luZyBpdCBsb2NrbGVzcyB1bmRlciBSQ1Ugd2hpbGUgd2Fsa2luZyBrZXJuZWwgcGFnZSB0YWJsZXMuIFRoZW4gdGhlcmUmIzM5O3MgYHBhZ2V0YWJsZV9mcmVlX2tlcm5lbGAgaW4gYG1tL3BndGFibGUtZ2VuZXJpYy5jYCwgbm93IHVzaW5nIGBjYWxsX3JjdWAgZm9yIGtlcm5lbCBwYWdlIHRhYmxlIGZyZWVpbmcuIEFuZCBpbiB0aGUgUG93ZXJQQyBhcmNoaXRlY3R1cmUgc3BlY2lmaWNhbGx5IChhcmNoL3Bvd2VycGMvbW0vcGd0YWJsZS1mcmFnLmMpLCB0aGVyZSYjMzk7cyBhIGRlbGF5IGludHJvZHVjZWQsIGRlZmVycmluZyB0aGUgZnJlZWluZyBvZiB0aG9zZSBrZXJuZWwgcGFnZSB0YWJsZXMgYnkgYSBncmFjZSBwZXJpb2QuIEZpbmFsbHksIHRvIG1ha2UgdGhpcyBldmVuIG1vcmUgaW50ZXJlc3RpbmcsIGBtbS9wdGR1bXAuY2AgYXZvaWRzIGdyYWJiaW5nIHRoZSBgbW1hcF93cml0ZV9sb2NrYCBpZiBgbW1gIHBvaW50cyB0byBgJmFtcDtpbml0X21tYC4KCkdpdmVuIHRoZSBwb3RlbnRpYWwgaW1wYWN0LCBmdXp6aW5nIGlzIGFic29sdXRlbHkgZXNzZW50aWFsIGhlcmUuIEl0JiMzOTtzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIHNvIGl0JiMzOTtzIGEgcHJpbWUgdGFyZ2V0LiBUaW1lIHRvIGlkZW50aWZ5IHRoZSBrZXkgZnVuY3Rpb25zIHRvIGZvY3VzIG9uLgoKU28sIGxldCYjMzk7cyBzZWUsIHRoZSBwYXRjaCBtb2RpZmllZDoKCiogICBgd2Fsa19wYWdlX3JhbmdlX2RlYnVnYAoqICAgYGtlcm5lbF9wZ3RhYmxlX3dvcmtfZnVuY2AKKiAgIGBwYWdldGFibGVfZnJlZV9rZXJuZWxgCiogICBgcHRkdW1wX3dhbGtfcGdkYAoqICAgYHB0ZV9mcmFnbWVudF9mcmVlYCAoUG93ZXJQQyBzcGVjaWZpYykKCkkmIzM5O2xsIHN0YXJ0IHdpdGggYHdhbGtfcGFnZV9yYW5nZV9kZWJ1Z2AuIEl0JiMzOTtzIHVzZWQgYnkgYHB0ZHVtcF93YWxrX3BnZGAuIGBwdGR1bXBfd2Fsa19wZ2RgIGlzIHVzZWQgYnkgdGhlIGBwdGR1bXBgIGRyaXZlcnMsIHdoaWNoLCBpZiBtZW1vcnkgc2VydmVzLCBhcmUgcmVsYXRlZCB0byBgZGVidWdmc2AgZmlsZXMgZm9yIHBhZ2UgdGFibGVzLiBIbW0uIExvb2tzIGxpa2UgSSBzaG91bGQgZmluZCBhbGwgdGhlIGNhbGxlcnMgdG8gYHB0ZHVtcF93YWxrX3BnZGAgdG8gc3RhcnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMDY6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cHRkdW1wX3dhbGtfcGdkJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvYXJtL2luY2x1ZGUvYXNtL3B0ZHVtcC5oPTE2PXN0cnVjdCBwdGR1bXBfaW5mbyB7XG4tLVxuYXJjaC9hcm0vaW5jbHVkZS9hc20vcHRkdW1wLmgtMjEtXG5hcmNoL2FybS9pbmNsdWRlL2FzbS9wdGR1bXAuaDoyMjp2b2lkIHB0ZHVtcF93YWxrX3BnZChzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHN0cnVjdCBwdGR1bXBfaW5mbyAqaW5mbyk7XG5hcmNoL2FybS9pbmNsdWRlL2FzbS9wdGR1bXAuaC0yMy0jaWZkZWYgQ09ORklHX0FSTV9QVERVTVBfREVCVUdGU1xuLS1cbmFyY2gvYXJtL21tL2R1bXAuYz0zOTg9c3RhdGljIHZvaWQgd2Fsa19wZ2Qoc3RydWN0IHBnX3N0YXRlICpzdCwgc3RydWN0IG1tX3N0cnVjdCAqbW0sXG4tLVxuYXJjaC9hcm0vbW0vZHVtcC5jLTQxNC1cbmFyY2gvYXJtL21tL2R1bXAuYzo0MTU6dm9pZCBwdGR1bXBfd2Fsa19wZ2Qoc3RydWN0IHNlcV9maWxlICptLCBzdHJ1Y3QgcHRkdW1wX2luZm8gKmluZm8pXG5hcmNoL2FybS9tbS9kdW1wLmMtNDE2LXtcbi0tXG5hcmNoL2FybS9tbS9wdGR1bXBfZGVidWdmcy5jPTc9c3RhdGljIGludCBwdGR1bXBfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnYpXG4tLVxuYXJjaC9hcm0vbW0vcHRkdW1wX2RlYnVnZnMuYy0xMC1cbmFyY2gvYXJtL21tL3B0ZHVtcF9kZWJ1Z2ZzLmM6MTE6XHRwdGR1bXBfd2Fsa19wZ2QobSwgaW5mbyk7XG5hcmNoL2FybS9tbS9wdGR1bXBfZGVidWdmcy5jLTEyLVx0cmV0dXJuIDA7XG4tLVxuYXJjaC9hcm02NC9tbS9wdGR1bXAuYz0yNzk9dm9pZCBub3RlX3BhZ2VfZmx1c2goc3RydWN0IHB0ZHVtcF9zdGF0ZSAqcHRfc3QpXG4tLVxuYXJjaC9hcm02NC9tbS9wdGR1bXAuYy0yODUtXG5hcmNoL2FybTY0L21tL3B0ZHVtcC5jOjI4NjpzdGF0aWMgdm9pZCBhcm02NF9wdGR1bXBfd2Fsa19wZ2Qoc3RydWN0IHB0ZHVtcF9zdGF0ZSAqc3QsIHN0cnVjdCBtbV9zdHJ1Y3QgKm1tKVxuYXJjaC9hcm02NC9tbS9wdGR1bXAuYy0yODcte1xuYXJjaC9hcm02NC9tbS9wdGR1bXAuYy0yODgtXHRzdGF0aWNfYnJhbmNoX2luYyhcdTAwMjZhcm02NF9wdGR1bXBfbG9ja19rZXkpO1xuYXJjaC9hcm02NC9tbS9wdGR1bXAuYzoyODk6XHRwdGR1bXBfd2Fsa19wZ2Qoc3QsIG1tLCBOVUxMKTtcbmFyY2gvYXJtNjQvbW0vcHRkdW1wLmMtMjkwLVx0c3RhdGljX2JyYW5jaF9kZWMoXHUwMDI2YXJtNjRfcHRkdW1wX2xvY2tfa2V5KTtcbi0tXG5hcmNoL2FybTY0L21tL3B0ZHVtcC5jPTI5Mz12b2lkIHB0ZHVtcF93YWxrKHN0cnVjdCBzZXFfZmlsZSAqcywgc3RydWN0IHB0ZHVtcF9pbmZvICppbmZvKVxuLS1cbmFyY2gvYXJtNjQvbW0vcHRkdW1wLmMtMzIwLVxuYXJjaC9hcm02NC9tbS9wdGR1bXAuYzozMjE6XHRhcm02NF9wdGR1bXBfd2Fsa19wZ2QoXHUwMDI2c3QucHRkdW1wLCBpbmZvLVx1MDAzZW1tKTtcbmFyY2gvYXJtNjQvbW0vcHRkdW1wLmMtMzIyLX1cbi0tXG5hcmNoL2FybTY0L21tL3B0ZHVtcC5jPTMzOD1ib29sIHB0ZHVtcF9jaGVja193eCh2b2lkKVxuLS1cbmFyY2gvYXJtNjQvbW0vcHRkdW1wLmMtMzYyLVxuYXJjaC9hcm02NC9tbS9wdGR1bXAuYzozNjM6XHRhcm02NF9wdGR1bXBfd2Fsa19wZ2QoXHUwMDI2c3QucHRkdW1wLCBcdTAwMjZpbml0X21tKTtcbmFyY2gvYXJtNjQvbW0vcHRkdW1wLmMtMzY0LVxuLS1cbmFyY2gvcG93ZXJwYy9tbS9wdGR1bXAvcHRkdW1wLmM9MzM0PXN0YXRpYyBpbnQgcHRkdW1wX3Nob3coc3RydWN0IHNlcV9maWxlICptLCB2b2lkICp2KVxuLS1cbmFyY2gvcG93ZXJwYy9tbS9wdGR1bXAvcHRkdW1wLmMtMzUxLVx0LyogVHJhdmVyc2Uga2VybmVsIHBhZ2UgdGFibGVzICovXG5hcmNoL3Bvd2VycGMvbW0vcHRkdW1wL3B0ZHVtcC5jOjM1MjpcdHB0ZHVtcF93YWxrX3BnZChcdTAwMjZzdC5wdGR1bXAsIFx1MDAyNmluaXRfbW0sIE5VTEwpO1xuYXJjaC9wb3dlcnBjL21tL3B0ZHVtcC9wdGR1bXAuYy0zNTMtXHRyZXR1cm4gMDtcbi0tXG5hcmNoL3Bvd2VycGMvbW0vcHRkdW1wL3B0ZHVtcC5jPTM2OD1ib29sIHB0ZHVtcF9jaGVja193eCh2b2lkKVxuLS1cbmFyY2gvcG93ZXJwYy9tbS9wdGR1bXAvcHRkdW1wLmMtMzkxLVxuYXJjaC9wb3dlcnBjL21tL3B0ZHVtcC9wdGR1bXAuYzozOTI6XHRwdGR1bXBfd2Fsa19wZ2QoXHUwMDI2c3QucHRkdW1wLCBcdTAwMjZpbml0X21tLCBOVUxMKTtcbmFyY2gvcG93ZXJwYy9tbS9wdGR1bXAvcHRkdW1wLmMtMzkzLVxuLS1cbmFyY2gvcmlzY3YvbW0vcHRkdW1wLmM9MzUzPXN0YXRpYyB2b2lkIHB0ZHVtcF93YWxrKHN0cnVjdCBzZXFfZmlsZSAqcywgc3RydWN0IHB0ZF9tbV9pbmZvICpwaW5mbylcbi0tXG5hcmNoL3Jpc2N2L21tL3B0ZHVtcC5jLTM3Mi1cbmFyY2gvcmlzY3YvbW0vcHRkdW1wLmM6MzczOlx0cHRkdW1wX3dhbGtfcGdkKFx1MDAyNnN0LnB0ZHVtcCwgcGluZm8tXHUwMDNlbW0sIE5VTEwpO1xuYXJjaC9yaXNjdi9tbS9wdGR1bXAuYy0zNzQtfVxuLS1cbmFyY2gvcmlzY3YvbW0vcHRkdW1wLmM9Mzc2PWJvb2wgcHRkdW1wX2NoZWNrX3d4KHZvaWQpXG4tLVxuYXJjaC9yaXNjdi9tbS9wdGR1bXAuYy0zOTktXG5hcmNoL3Jpc2N2L21tL3B0ZHVtcC5jOjQwMDpcdHB0ZHVtcF93YWxrX3BnZChcdTAwMjZzdC5wdGR1bXAsIFx1MDAyNmluaXRfbW0sIE5VTEwpO1xuYXJjaC9yaXNjdi9tbS9wdGR1bXAuYy00MDEtXG4tLVxuYXJjaC9zMzkwL21tL2R1bXBfcGFnZXRhYmxlcy5jPTE4Mj1ib29sIHB0ZHVtcF9jaGVja193eCh2b2lkKVxuLS1cbmFyY2gvczM5MC9tbS9kdW1wX3BhZ2V0YWJsZXMuYy0yMTAtXHRcdHJldHVybiB0cnVlO1xuYXJjaC9zMzkwL21tL2R1bXBfcGFnZXRhYmxlcy5jOjIxMTpcdHB0ZHVtcF93YWxrX3BnZChcdTAwMjZzdC5wdGR1bXAsIFx1MDAyNmluaXRfbW0sIE5VTEwpO1xuYXJjaC9zMzkwL21tL2R1bXBfcGFnZXRhYmxlcy5jLTIxMi1cdGlmIChzdC53eF9wYWdlcykge1xuLS1cbmFyY2gvczM5MC9tbS9kdW1wX3BhZ2V0YWJsZXMuYz0yMjY9c3RhdGljIGludCBwdGR1bXBfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnYpXG4tLVxuYXJjaC9zMzkwL21tL2R1bXBfcGFnZXRhYmxlcy5jLTI1MC1cdG11dGV4X2xvY2soXHUwMDI2Y3BhX211dGV4KTtcbmFyY2gvczM5MC9tbS9kdW1wX3BhZ2V0YWJsZXMuYzoyNTE6XHRwdGR1bXBfd2Fsa19wZ2QoXHUwMDI2c3QucHRkdW1wLCBcdTAwMjZpbml0X21tLCBOVUxMKTtcbmFyY2gvczM5MC9tbS9kdW1wX3BhZ2V0YWJsZXMuYy0yNTItXHRtdXRleF91bmxvY2soXHUwMDI2Y3BhX211dGV4KTtcbi0tXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wZ3RhYmxlLmg9MzA9c3RydWN0IHNlcV9maWxlO1xuYXJjaC94ODYvaW5jbHVkZS9hc20vcGd0YWJsZS5oOjMxOnZvaWQgcHRkdW1wX3dhbGtfcGdkX2xldmVsKHN0cnVjdCBzZXFfZmlsZSAqbSwgc3RydWN0IG1tX3N0cnVjdCAqbW0pO1xuYXJjaC94ODYvaW5jbHVkZS9hc20vcGd0YWJsZS5oOjMyOnZvaWQgcHRkdW1wX3dhbGtfcGdkX2xldmVsX2RlYnVnZnMoc3RydWN0IHNlcV9maWxlICptLCBzdHJ1Y3QgbW1fc3RydWN0ICptbSxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL3BndGFibGUuaC0zMy1cdFx0XHRcdCAgIGJvb2wgdXNlcik7XG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wZ3RhYmxlLmg6MzQ6Ym9vbCBwdGR1bXBfd2Fsa19wZ2RfbGV2ZWxfY2hlY2t3eCh2b2lkKTtcbmFyY2gveDg2L2luY2x1ZGUvYXNtL3BndGFibGUuaDozNTojZGVmaW5lIHB0ZHVtcF9jaGVja193eCBwdGR1bXBfd2Fsa19wZ2RfbGV2ZWxfY2hlY2t3eFxuYXJjaC94ODYvaW5jbHVkZS9hc20vcGd0YWJsZS5oLTM2LXZvaWQgcHRkdW1wX3dhbGtfdXNlcl9wZ2RfbGV2ZWxfY2hlY2t3eCh2b2lkKTtcbi0tXG5hcmNoL3g4Ni9tbS9kZWJ1Z19wYWdldGFibGVzLmM9OD1zdGF0aWMgaW50IHB0ZHVtcF9zaG93KHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdilcbmFyY2gveDg2L21tL2RlYnVnX3BhZ2V0YWJsZXMuYy05LXtcbmFyY2gveDg2L21tL2RlYnVnX3BhZ2V0YWJsZXMuYzoxMDpcdHB0ZHVtcF93YWxrX3BnZF9sZXZlbF9kZWJ1Z2ZzKG0sIFx1MDAyNmluaXRfbW0sIGZhbHNlKTtcbmFyY2gveDg2L21tL2RlYnVnX3BhZ2V0YWJsZXMuYy0xMS1cdHJldHVybiAwO1xuLS1cbmFyY2gveDg2L21tL2RlYnVnX3BhZ2V0YWJsZXMuYz0xNj1zdGF0aWMgaW50IHB0ZHVtcF9jdXJrbmxfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnYpXG4tLVxuYXJjaC94ODYvbW0vZGVidWdfcGFnZXRhYmxlcy5jLTE4LVx0aWYgKGN1cnJlbnQtXHUwMDNlbW0tXHUwMDNlcGdkKVxuYXJjaC94ODYvbW0vZGVidWdfcGFnZXRhYmxlcy5jOjE5Olx0XHRwdGR1bXBfd2Fsa19wZ2RfbGV2ZWxfZGVidWdmcyhtLCBjdXJyZW50LVx1MDAzZW1tLCBmYWxzZSk7XG5hcmNoL3g4Ni9tbS9kZWJ1Z19wYWdldGFibGVzLmMtMjAtXHRyZXR1cm4gMDtcbi0tXG5hcmNoL3g4Ni9tbS9kZWJ1Z19wYWdldGFibGVzLmM9MjY9c3RhdGljIGludCBwdGR1bXBfY3VydXNyX3Nob3coc3RydWN0IHNlcV9maWxlICptLCB2b2lkICp2KVxuLS1cbmFyY2gveDg2L21tL2RlYnVnX3BhZ2V0YWJsZXMuYy0yOC1cdGlmIChjdXJyZW50LVx1MDAzZW1tLVx1MDAzZXBnZClcbmFyY2gveDg2L21tL2RlYnVnX3BhZ2V0YWJsZXMuYzoyOTpcdFx0cHRkdW1wX3dhbGtfcGdkX2xldmVsX2RlYnVnZnMobSwgY3VycmVudC1cdTAwM2VtbSwgdHJ1ZSk7XG5hcmNoL3g4Ni9tbS9kZWJ1Z19wYWdldGFibGVzLmMtMzAtXHRyZXR1cm4gMDtcbi0tXG5hcmNoL3g4Ni9tbS9kZWJ1Z19wYWdldGFibGVzLmM9Mzc9c3RhdGljIGludCBwdGR1bXBfZWZpX3Nob3coc3RydWN0IHNlcV9maWxlICptLCB2b2lkICp2KVxuLS1cbmFyY2gveDg2L21tL2RlYnVnX3BhZ2V0YWJsZXMuYy0zOS1cdGlmIChlZmlfbW0ucGdkKVxuYXJjaC94ODYvbW0vZGVidWdfcGFnZXRhYmxlcy5jOjQwOlx0XHRwdGR1bXBfd2Fsa19wZ2RfbGV2ZWxfZGVidWdmcyhtLCBcdTAwMjZlZmlfbW0sIGZhbHNlKTtcbmFyY2gveDg2L21tL2RlYnVnX3BhZ2V0YWJsZXMuYy00MS1cdHJldHVybiAwO1xuLS1cbmFyY2gveDg2L21tL2R1bXBfcGFnZXRhYmxlcy5jPTQxNj1zdGF0aWMgdm9pZCBub3RlX3BhZ2VfZmx1c2goc3RydWN0IHB0ZHVtcF9zdGF0ZSAqcHRfc3QpXG4tLVxuYXJjaC94ODYvbW0vZHVtcF9wYWdldGFibGVzLmMtNDIyLVxuYXJjaC94ODYvbW0vZHVtcF9wYWdldGFibGVzLmM6NDIzOmJvb2wgcHRkdW1wX3dhbGtfcGdkX2xldmVsX2NvcmUoc3RydWN0IHNlcV9maWxlICptLFxuYXJjaC94ODYvbW0vZHVtcF9wYWdldGFibGVzLmMtNDI0LVx0XHRcdFx0c3RydWN0IG1tX3N0cnVjdCAqbW0sIHBnZF90ICpwZ2QsXG4tLVxuYXJjaC94ODYvbW0vZHVtcF9wYWdldGFibGVzLmMtNDU3LVxuYXJjaC94ODYvbW0vZHVtcF9wYWdldGFibGVzLmM6NDU4Olx0cHRkdW1wX3dhbGtfcGdkKFx1MDAyNnN0LnB0ZHVtcCwgbW0sIHBnZCk7XG5hcmNoL3g4Ni9tbS9kdW1wX3BhZ2V0YWJsZXMuYy00NTktXG4tLVxuYXJjaC94ODYvbW0vZHVtcF9wYWdldGFibGVzLmMtNDczLVxuYXJjaC94ODYvbW0vZHVtcF9wYWdldGFibGVzLmM6NDc0OnZvaWQgcHRkdW1wX3dhbGtfcGdkX2xldmVsKHN0cnVjdCBzZXFfZmlsZSAqbSwgc3RydWN0IG1tX3N0cnVjdCAqbW0pXG5hcmNoL3g4Ni9tbS9kdW1wX3BhZ2V0YWJsZXMuYy00NzUte1xuYXJjaC94ODYvbW0vZHVtcF9wYWdldGFibGVzLmM6NDc2Olx0cHRkdW1wX3dhbGtfcGdkX2xldmVsX2NvcmUobSwgbW0sIG1tLVx1MDAzZXBnZCwgZmFsc2UsIHRydWUpO1xuYXJjaC94ODYvbW0vZHVtcF9wYWdldGFibGVzLmMtNDc3LX1cbmFyY2gveDg2L21tL2R1bXBfcGFnZXRhYmxlcy5jLTQ3OC1cbmFyY2gveDg2L21tL2R1bXBfcGFnZXRhYmxlcy5jOjQ3OTp2b2lkIHB0ZHVtcF93YWxrX3BnZF9sZXZlbF9kZWJ1Z2ZzKHN0cnVjdCBzZXFfZmlsZSAqbSwgc3RydWN0IG1tX3N0cnVjdCAqbW0sXG5hcmNoL3g4Ni9tbS9kdW1wX3BhZ2V0YWJsZXMuYy00ODAtXHRcdFx0XHQgICBib29sIHVzZXIpXG4tLVxuYXJjaC94ODYvbW0vZHVtcF9wYWdldGFibGVzLmMtNDg2LSNlbmRpZlxuYXJjaC94ODYvbW0vZHVtcF9wYWdldGFibGVzLmM6NDg3Olx0cHRkdW1wX3dhbGtfcGdkX2xldmVsX2NvcmUobSwgbW0sIHBnZCwgZmFsc2UsIGZhbHNlKTtcbmFyY2gveDg2L21tL2R1bXBfcGFnZXRhYmxlcy5jLTQ4OC19XG4tLVxuYXJjaC94ODYvbW0vZHVtcF9wYWdldGFibGVzLmM9NDkwPXZvaWQgcHRkdW1wX3dhbGtfdXNlcl9wZ2RfbGV2ZWxfY2hlY2t3eCh2b2lkKVxuLS1cbmFyY2gveDg2L21tL2R1bXBfcGFnZXRhYmxlcy5jLTUwMC1cdHBnZCA9IGtlcm5lbF90b191c2VyX3BnZHAocGdkKTtcbmFyY2gveDg2L21tL2R1bXBfcGFnZXRhYmxlcy5jOjUwMTpcdHB0ZHVtcF93YWxrX3BnZF9sZXZlbF9jb3JlKE5VTEwsIFx1MDAyNmluaXRfbW0sIHBnZCwgdHJ1ZSwgZmFsc2UpO1xuYXJjaC94ODYvbW0vZHVtcF9wYWdldGFibGVzLmMtNTAyLSNlbmRpZlxuLS1cbmFyY2gveDg2L21tL2R1bXBfcGFnZXRhYmxlcy5jLTUwNC1cbmFyY2gveDg2L21tL2R1bXBfcGFnZXRhYmxlcy5jOjUwNTpib29sIHB0ZHVtcF93YWxrX3BnZF9sZXZlbF9jaGVja3d4KHZvaWQpXG5hcmNoL3g4Ni9tbS9kdW1wX3BhZ2V0YWJsZXMuYy01MDYte1xuLS1cbmFyY2gveDg2L21tL2R1bXBfcGFnZXRhYmxlcy5jLTUwOS1cbmFyY2gveDg2L21tL2R1bXBfcGFnZXRhYmxlcy5jOjUxMDpcdHJldHVybiBwdGR1bXBfd2Fsa19wZ2RfbGV2ZWxfY29yZShOVUxMLCBcdTAwMjZpbml0X21tLCBJTklUX1BHRCwgdHJ1ZSwgZmFsc2UpO1xuYXJjaC94ODYvbW0vZHVtcF9wYWdldGFibGVzLmMtNTExLX1cbi0tXG5hcmNoL3g4Ni9wbGF0Zm9ybS9lZmkvZWZpXzMyLmM9NzU9dm9pZCBfX2luaXQgZWZpX2R1bXBfcGFnZXRhYmxlKHZvaWQpXG4tLVxuYXJjaC94ODYvcGxhdGZvcm0vZWZpL2VmaV8zMi5jLTc3LSNpZmRlZiBDT05GSUdfRUZJX1BHVF9EVU1QXG5hcmNoL3g4Ni9wbGF0Zm9ybS9lZmkvZWZpXzMyLmM6Nzg6XHRwdGR1bXBfd2Fsa19wZ2RfbGV2ZWwoTlVMTCwgXHUwMDI2aW5pdF9tbSk7XG5hcmNoL3g4Ni9wbGF0Zm9ybS9lZmkvZWZpXzMyLmMtNzktI2VuZGlmXG4tLVxuYXJjaC94ODYvcGxhdGZvcm0vZWZpL2VmaV82NC5jPTQyMz12b2lkIF9faW5pdCBlZmlfZHVtcF9wYWdldGFibGUodm9pZClcbi0tXG5hcmNoL3g4Ni9wbGF0Zm9ybS9lZmkvZWZpXzY0LmMtNDI1LSNpZmRlZiBDT05GSUdfRUZJX1BHVF9EVU1QXG5hcmNoL3g4Ni9wbGF0Zm9ybS9lZmkvZWZpXzY0LmM6NDI2Olx0cHRkdW1wX3dhbGtfcGdkX2xldmVsKE5VTEwsIFx1MDAyNmVmaV9tbSk7XG5hcmNoL3g4Ni9wbGF0Zm9ybS9lZmkvZWZpXzY0LmMtNDI3LSNlbmRpZlxuLS1cbmluY2x1ZGUvbGludXgvcHRkdW1wLmg9MTM9c3RydWN0IHB0ZHVtcF9zdGF0ZSB7XG4tLVxuaW5jbHVkZS9saW51eC9wdGR1bXAuaC0yNy1cbmluY2x1ZGUvbGludXgvcHRkdW1wLmg6Mjg6Ym9vbCBwdGR1bXBfd2Fsa19wZ2RfbGV2ZWxfY29yZShzdHJ1Y3Qgc2VxX2ZpbGUgKm0sXG5pbmNsdWRlL2xpbnV4L3B0ZHVtcC5oLTI5LVx0XHRcdFx0c3RydWN0IG1tX3N0cnVjdCAqbW0sIHBnZF90ICpwZ2QsXG5pbmNsdWRlL2xpbnV4L3B0ZHVtcC5oLTMwLVx0XHRcdFx0Ym9vbCBjaGVja3d4LCBib29sIGRtZXNnKTtcbmluY2x1ZGUvbGludXgvcHRkdW1wLmg6MzE6dm9pZCBwdGR1bXBfd2Fsa19wZ2Qoc3RydWN0IHB0ZHVtcF9zdGF0ZSAqc3QsIHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCBwZ2RfdCAqcGdkKTtcbmluY2x1ZGUvbGludXgvcHRkdW1wLmgtMzItYm9vbCBwdGR1bXBfY2hlY2tfd3godm9pZCk7XG4tLVxubW0vcHRkdW1wLmM9MTY2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbW1fd2Fsa19vcHMgcHRkdW1wX29wcyA9IHtcbi0tXG5tbS9wdGR1bXAuYy0xNzQtXG5tbS9wdGR1bXAuYzoxNzU6dm9pZCBwdGR1bXBfd2Fsa19wZ2Qoc3RydWN0IHB0ZHVtcF9zdGF0ZSAqc3QsIHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCBwZ2RfdCAqcGdkKVxubW0vcHRkdW1wLmMtMTc2LXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAwNjoyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NjMyCgkJCQkJCQlvdXRwdXQ6IDE5CgkJCQkJCQl0aG91Z2h0czogNzkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYW5hbHlzaXMgb2YgdGhlIHByb3ZpZGVkIGluZm9ybWF0aW9uLCBhcyBpZiB0aGVzZSB3ZXJlIG15IGludGVybmFsIHRob3VnaHRzOgoKKipEaXNzZWN0aW5nIHRoZSBQVER1bXAgV29ya2Zsb3cqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gVGhlIGBwdGR1bXBfd2Fsa19wZ2RgIGZ1bmN0aW9uIGlzIHRoZSBjb3JlIHBsYXllciBoZXJlLCBpbml0aWF0ZWQgYnkgYHB0ZHVtcF9zaG93YCwgd2hpY2ggaXRzZWxmIGxpdmVzIGluIGBhcmNoL3g4Ni9tbS9kZWJ1Z19wYWdldGFibGVzLmNgLiBBbmQgdGhhdCBpbml0aWFsIGNhbGwgaGFwcGVucyB2aWEgYHB0ZHVtcF93YWxrX3BnZF9sZXZlbF9kZWJ1Z2ZzYC4gQ2xlYXJseSwgdGhpcyBpcyBhbGwgcGFydCBvZiBhIHBhZ2V0YWJsZSBkZWJ1Z2dpbmcgaW5mcmFzdHJ1Y3R1cmUsIGxpa2VseSBleHBvc2VkIHRocm91Z2ggZGVidWdmcy4gTXkgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gcGlucG9pbnQgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9uIHRoYXQgYWN0aXZhdGVzIHRoZSBlbnRpcmUgYGFyY2gveDg2L21tL2RlYnVnX3BhZ2V0YWJsZXMuY2AgbW9kdWxlLiBLbm93aW5nIHRoZSBlbmFibGluZyBjb25maWcgd2lsbCBnaXZlIG1lIGNyaXRpY2FsIGNvbnRleHQgYWJvdXQgdGhlIHRhcmdldCBzeXN0ZW0mIzM5O3MgZGVidWdnaW5nIGZlYXR1cmVzLiBJdCB3aWxsIGFsc28gaGVscCB3aXRoIG15IG9uZ29pbmcgYW5hbHlzaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMDY6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGVidWdfcGFnZXRhYmxlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3g4Ni9tbS9NYWtlZmlsZT0zNz1vYmotJChDT05GSUdfUFREVU1QKVx0XHQmIzQzOz0gZHVtcF9wYWdldGFibGVzLm9cbmFyY2gveDg2L21tL01ha2VmaWxlOjM4Om9iai0kKENPTkZJR19QVERVTVBfREVCVUdGUylcdCYjNDM7PSBkZWJ1Z19wYWdldGFibGVzLm9cbmFyY2gveDg2L21tL01ha2VmaWxlLTM5LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDA2OjIzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkwMDcKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiA0MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIHJlYXNvbmluZzoKCioqQ2hlY2tpbmcgdGhlIFBURFVNUCBEZWJ1Z0ZTIENvbmZpZ3VyYXRpb24qKgoKUmlnaHQsIHNvIGBDT05GSUdfUFREVU1QX0RFQlVHRlNgIGlzIHRoZSBmbGFnIHRoYXQgYWN0aXZhdGVzIHRoZSBkZWJ1Z2ZzIGludGVyZmFjZSBmb3IgcGFnZSB0YWJsZSBkdW1waW5nLiBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIGhvdyB0aGlzIGlzIGNvbmZpZ3VyZWQuIExldCYjMzk7cyBkaWcgaW50byB0aGUga2VybmVsIGNvbmZpZyBmaWxlcy4gTXkgdXN1YWwgc3VzcGVjdCB3b3VsZCBiZSBgbW0vS2NvbmZpZy5kZWJ1Z2AsIG9yIHNvbWV0aGluZyBzaW1pbGFyIHdpdGhpbiB0aGUgbWVtb3J5IG1hbmFnZW1lbnQgc3Vic3lzdGVtJiMzOTtzIGNvbmZpZ3VyYXRpb24gZmlsZXMuIEkmIzM5O2xsIHN0YXJ0IHRoZXJlIGFuZCB2ZXJpZnkgd2hlcmUgdGhpcyBvcHRpb24gbGl2ZXMgYW5kIHdoYXQgZGVwZW5kZW5jaWVzIG9yIGNvbnN0cmFpbnRzIGl0IG1pZ2h0IGhhdmUuIFRoaXMgd2lsbCBnaXZlIG1lIGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2YgaG93IGFuZCB3aGVuIHRoaXMgZGVidWcgZmVhdHVyZSBpcyBhdmFpbGFibGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMDY6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFBURFVNUF9ERUJVR0ZTJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL0tjb25maWcuZGVidWc9MjE5PWNvbmZpZyBQVERVTVBcbi0tXG5tbS9LY29uZmlnLmRlYnVnLTIyMS1cbm1tL0tjb25maWcuZGVidWc6MjIyOmNvbmZpZyBQVERVTVBfREVCVUdGU1xubW0vS2NvbmZpZy5kZWJ1Zy0yMjMtXHRib29sIFwmIzM0O0V4cG9ydCBrZXJuZWwgcGFnZXRhYmxlIGxheW91dCB0byB1c2Vyc3BhY2UgdmlhIGRlYnVnZnNcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAwNjoyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5Mjk3CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIHRoZSBEZXBlbmRlbmN5IENoYWluIGZvciBgQ09ORklHX1BURFVNUF9ERUJVR0ZTYCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYENPTkZJR19QVERVTVBfREVCVUdGU2AuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAmIzM0O1doYXQmIzM5O3MgdGhlIGZ1bGwgZGVwZW5kZW5jeSB0cmVlIG9uIHRoaXM/JiMzNDsgSXQmIzM5O3Mgbm90IGVub3VnaCB0byBrbm93IGlmICp0aGlzKiBwYXJ0aWN1bGFyIGZlYXR1cmUgaXMgZW5hYmxlZCBvciBkaXNhYmxlZCBpbiB0aGUgY3VycmVudCBjb25maWd1cmF0aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IG90aGVyIGtlcm5lbCBjb21wb25lbnRzIGl0IHJlbGllcyBvbiwgYW5kLCBwZXJoYXBzIG1vcmUgY3JpdGljYWxseSwgd2hhdCAqaXQqIG1pZ2h0IGJlIHJlbGllZCB1cG9uIGJ5LiBEb2VzIGVuYWJsaW5nIHRoaXMgYWZmZWN0LCBzYXksIHRoZSBwZXJmb3JtYW5jZSBjaGFyYWN0ZXJpc3RpY3Mgb2YgdGhlIGtlcm5lbCBpbiBhIG1ham9yIHdheT8gQXJlIHRoZXJlIGFueSBzdWJ0bGUgaW50ZXJhY3Rpb25zIHdpdGggb3RoZXIgZGVidWcgZmFjaWxpdGllcz8gV2hhdOKAmXMgdGhlIGltcGxpY2F0aW9uIG9uIGNvZGUgc2l6ZT8gSSBuZWVkIHRvIHF1aWNrbHkgZXN0YWJsaXNoIGlmIGVuYWJsaW5nIHRoaXMgaXMgYSBsaWdodHdlaWdodCBvcGVyYXRpb24sIG9yIGlmIGl0IHJpcHBsZXMgb3V0IGludG8gYSBsYXJnZXIgYnVpbGQgY29uZmlndXJhdGlvbi4gQSBkZWVwIGRpdmUgaW50byB0aGUgS2NvbmZpZyBzdHJ1Y3R1cmUgaXMgcmVxdWlyZWQgYW5kIGEgcmV2aWV3IG9mIGFueSBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24uIE5lZWQgdG8gY29uc2lkZXIgcG90ZW50aWFsIHJlZ3Jlc3Npb25zLiBUaW1lIHRvIGRpZyBpbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMDY6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFBURFVNUF9ERUJVR0ZTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vS2NvbmZpZy5kZWJ1ZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9LY29uZmlnLmRlYnVnPTIxOT1jb25maWcgUFREVU1QXG4tLVxubW0vS2NvbmZpZy5kZWJ1Zy0yMjEtXG5tbS9LY29uZmlnLmRlYnVnOjIyMjpjb25maWcgUFREVU1QX0RFQlVHRlNcbm1tL0tjb25maWcuZGVidWctMjIzLVx0Ym9vbCBcJiMzNDtFeHBvcnQga2VybmVsIHBhZ2V0YWJsZSBsYXlvdXQgdG8gdXNlcnNwYWNlIHZpYSBkZWJ1Z2ZzXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDA2OjIzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT40bTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk2MzgKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAxOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRpdmluZyBpbnRvIERlYnVnZ2luZyBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gdGhpbmtpbmcsIHdoZXJlJiMzOTtzIHRoZSBiZXN0IHBsYWNlIHRvIHN0YXJ0IGxvb2tpbmcgaW50byB0aGVzZSBkZWJ1ZyBvcHRpb25zPyBNeSBpbnN0aW5jdCBpcyB0byBjaGVjayB0aGUgYG1tL0tjb25maWcuZGVidWdgIGZpbGUuIFNwZWNpZmljYWxseSwgSSYjMzk7bSBnb2luZyB0byBqdW1wIHRvIGFyb3VuZCBsaW5lIDIyMi4gSSYjMzk7bSBob3BpbmcgdGhhdCYjMzk7cyB3aGVyZSB0aGUgY29yZSBvZiB0aGVzZSBkZWJ1Z2dpbmctcmVsYXRlZCBjb25maWd1cmF0aW9ucyBpcyBkZWZpbmVkLiBUaGF0IHNlY3Rpb24gbGlrZWx5IGNvbnRhaW5zIHRoZSBkZXBlbmRlbmNpZXMsIGhlbHAgdGV4dCwgYW5kIGRlZmF1bHQgc2V0dGluZ3MgdGhhdCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0byBtYW5pcHVsYXRlIHRoZSBiZWhhdmlvciBJJiMzOTttIGFmdGVyLiBJdCYjMzk7cyB0aGUgdXN1YWwgcm91dGUgd2hlbiBjaGFzaW5nIGRvd24gdGhlc2Uga2luZHMgb2YgY29uZmlndXJhdGlvbnMsIHRoZSBLY29uZmlnIGZpbGVzIHVzdWFsbHkga2VlcCBhIGdvb2QgdHJhY2sgcmVjb3JkIG9mIGhvdyB0aGVzZSBhcmUgaW1wbGVtZW50ZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDA2OjI4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bW0vS2NvbmZpZy5kZWJ1ZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDIxNSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMjE1Olx0XG4gMjE2Olx0Y29uZmlnIEFSQ0hfSEFTX1BURFVNUFxuIDIxNzpcdFx0Ym9vbFxuIDIxODpcdFxuIDIxOTpcdGNvbmZpZyBQVERVTVBcbiAyMjA6XHRcdGJvb2xcbiAyMjE6XHRcbiAyMjI6XHRjb25maWcgUFREVU1QX0RFQlVHRlNcbiAyMjM6XHRcdGJvb2wgXCYjMzQ7RXhwb3J0IGtlcm5lbCBwYWdldGFibGUgbGF5b3V0IHRvIHVzZXJzcGFjZSB2aWEgZGVidWdmc1wmIzM0O1xuIDIyNDpcdFx0ZGVwZW5kcyBvbiBERUJVR19LRVJORUxcbiAyMjU6XHRcdGRlcGVuZHMgb24gREVCVUdfRlNcbiAyMjY6XHRcdGRlcGVuZHMgb24gQVJDSF9IQVNfUFREVU1QXG4gMjI3Olx0XHRzZWxlY3QgUFREVU1QXG4gMjI4Olx0XHRoZWxwXG4gMjI5Olx0XHQgIFNheSBZIGhlcmUgaWYgeW91IHdhbnQgdG8gc2hvdyB0aGUga2VybmVsIHBhZ2V0YWJsZSBsYXlvdXQgaW4gYVxuIDIzMDpcdFx0ICBkZWJ1Z2ZzIGZpbGUuIFRoaXMgaW5mb3JtYXRpb24gaXMgb25seSB1c2VmdWwgZm9yIGtlcm5lbCBkZXZlbG9wZXJzXG4gMjMxOlx0XHQgIHdobyBhcmUgd29ya2luZyBpbiBhcmNoaXRlY3R1cmUgc3BlY2lmaWMgYXJlYXMgb2YgdGhlIGtlcm5lbC5cbiAyMzI6XHRcdCAgSXQgaXMgcHJvYmFibHkgbm90IGEgZ29vZCBpZGVhIHRvIGVuYWJsZSB0aGlzIGZlYXR1cmUgaW4gYSBwcm9kdWN0aW9uXG4gMjMzOlx0XHQgIGtlcm5lbC5cbiAyMzQ6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMDY6Mjg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTAxMTkKCQkJCQkJCW91dHB1dDogMjUKCQkJCQkJCXRob3VnaHRzOiA0NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOgoKKipJbnZlc3RpZ2F0aW5nIFBvdGVudGlhbCBQZXJmb3JtYW5jZSBCb3R0bGVuZWNrcyBpbiBNZW1vcnkgTWFuYWdlbWVudCoqCgpBbHJpZ2h0LCBsZXQmIzM5O3Mgc2VlLi4uIHRoZSBmaXJzdCB0aGluZyBJIHdhbnQgdG8gemVybyBpbiBvbiBpcyBgUFREVU1QX0RFQlVHRlNgLiBUaGF0JiMzOTtzIHRoZSBjb25maWcgb3B0aW9uIEkmIzM5O20gcHJldHR5IHN1cmUgcmVsYXRlcyB0byBkZWJ1Z2dpbmcgcGFnZSB0YWJsZSBkdW1wcywgd2hpY2ggY291bGQgYmUgdXNlZnVsIGluIHVuZGVyc3RhbmRpbmcgcG90ZW50aWFsIG92ZXJoZWFkIGluIG1lbW9yeSBtYW5hZ2VtZW50LgoKTm93LCB0aGF0JiMzOTtzIG5vdCB0aGUgb25seSBhcmVhIG9mIGludGVyZXN0LCBvZiBjb3Vyc2UuIEkgc2hvdWxkIGFsc28gaW52ZXN0aWdhdGUgYENPTkZJR19BU1lOQ19LRVJORUxfUEdUQUJMRV9GUkVFYC4gSSYjMzk7bSBmYW1pbGlhciB3aXRoIGl0cyB1c2UgaW4gYG1tL3BndGFibGUtZ2VuZXJpYy5jYC4gRGVwZW5kaW5nIG9uIHdoYXQgaXQmIzM5O3MgZW5hYmxlZCBmb3IsIHRoaXMgY291bGQgYmUgYSBtYWpvciBmYWN0b3IgaW4gaW1wcm92aW5nIHBlcmZvcm1hbmNlIGJ5IHJlZHVjaW5nIGxhdGVuY3kgcmVsYXRlZCB0byBmcmVlaW5nIHBhZ2UgdGFibGVzLiBJIHNob3VsZCBjb3JyZWxhdGUgdGhlIGltcGFjdCBvZiBlYWNoIG9mIHRoZXNlIG9wdGlvbnMgb24gdGhyb3VnaHB1dC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMDY6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEFTWU5DX0tFUk5FTF9QR1RBQkxFX0ZSRUUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vS2NvbmZpZz0xMDIwPWNvbmZpZyBIQVZFX0dJR0FOVElDX0ZPTElPU1xuLS1cbm1tL0tjb25maWctMTAyMy1cbm1tL0tjb25maWc6MTAyNDpjb25maWcgQVNZTkNfS0VSTkVMX1BHVEFCTEVfRlJFRVxubW0vS2NvbmZpZy0xMDI1LVx0ZGVmX2Jvb2wgblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAwNjoyOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDQ1MAoJCQkJCQkJb3V0cHV0OiAyNQoJCQkJCQkJdGhvdWdodHM6IDE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgY29kZS4gSGVyZSYjMzk7cyBob3cgSSYjMzk7bSB0aGlua2luZyBhYm91dCBpdDoKCioqRGlnZ2luZyBpbnRvIGBBU1lOQ19LRVJORUxfUEdUQUJMRV9GUkVFYCoqCgpBbHJpZ2h0LCBJJiMzOTttIHN0YXJ0aW5nIHdpdGggYEFTWU5DX0tFUk5FTF9QR1RBQkxFX0ZSRUVgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgJiMzNDtXaGF0IGV4YWN0bHkgKnNlbGVjdHMqIHRoaXM/IFdoYXQgY29kZSBwYXRocyBsZWFkIHRvIGl0cyBhY3RpdmF0aW9uPyYjMzQ7IEkga25vdyBpdCYjMzk7cyBhIGtleSBmZWF0dXJlLCBwcm9iYWJseSByZWxhdGVkIHRvIGFzeW5jaHJvbm91cyBwYWdlIHRhYmxlIGZyZWVpbmcgaW4gdGhlIGtlcm5lbCwgYnV0IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGl0IGJlY29tZXMgcmVsZXZhbnQuIEkgbmVlZCB0byB0cmFjZSBiYWNrIGZyb20gd2hlcmUgaXQmIzM5O3MgdXNlZCB0byB1bmRlcnN0YW5kIHdoZXJlIHRoaXMgZmVhdHVyZSBpcyBiZWluZyBlbmFibGVkIG9yIGRpc2FibGVkLiBUaGlzIGludmVzdGlnYXRpb24gaXMga2V5IHRvIHVuZGVyc3RhbmRpbmcgaG93IHRoZXNlIGFzeW5jaHJvbm91cyBmcmVlcyBhcmUgdHJpZ2dlcmVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAwNjoyOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzZWxlY3QgQVNZTkNfS0VSTkVMX1BHVEFCTEVfRlJFRSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3g4Ni9LY29uZmlnPTU4PWNvbmZpZyBYODZcbi0tXG5hcmNoL3g4Ni9LY29uZmlnLTI4My1cdHNlbGVjdCBIQVZFX1BFUkZfVVNFUl9TVEFDS19EVU1QXG5hcmNoL3g4Ni9LY29uZmlnOjI4NDpcdHNlbGVjdCBBU1lOQ19LRVJORUxfUEdUQUJMRV9GUkVFXHRpZiBJT01NVV9TVkFcbmFyY2gveDg2L0tjb25maWctMjg1LVx0c2VsZWN0IE1NVV9HQVRIRVJfUkNVX1RBQkxFX0ZSRUVcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMDY6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA3NjAKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiA0MjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIEtlcm5lbCBQYWdlIFRhYmxlIEZyZWVpbmcgb24geDg2IHdpdGggSU9NTVVfU1ZBKioKCk9rYXksIHNvIGhlcmUmIzM5O3MgdGhlIGRlYWwuIE9uIHg4NiwgaWYgd2UmIzM5O3JlIHVzaW5nIGBJT01NVV9TVkFgLCB0aGUgYEFTWU5DX0tFUk5FTF9QR1RBQkxFX0ZSRUVgIG9wdGlvbiBnZXRzIGF1dG9tYXRpY2FsbHkgc2VsZWN0ZWQuIFRlY2huaWNhbGx5LCB3ZSBkb24mIzM5O3QgbmVlZCB0byBleHBsaWNpdGx5IGVuYWJsZSBpdC4gV2UgY291bGQgZWl0aGVyIGVuYWJsZSBgSU9NTVVfU1ZBYCwgb3IganVzdCBub3Qgd29ycnkgYWJvdXQgaXQsIGJlY2F1c2UgdGhlIGAjZWxzZWAgYnJhbmNoIGlzIGFsc28gbW9kaWZpZWQgYW5kIHVzZXMgYGNhbGxfcmN1KCZhbXA7cHQtJmd0O3B0X3JjdV9oZWFkLCBrZXJuZWxfcGd0YWJsZV9mcmVlX3JjdSlgLgoKTGV0JiMzOTtzIGRpZyBpbnRvIHRoZSBtZWF0IG9mIHRoaXMuIFRoZSBwYXRjaCB0b3VjaGVzIGEgZmV3IGtleSBmdW5jdGlvbnM6IGB3YWxrX3BhZ2VfcmFuZ2VfZGVidWdgLCBgcGFnZXRhYmxlX2ZyZWVfa2VybmVsYCwgYHB0ZV9mcmFnbWVudF9mcmVlYCAoZm9yIFBvd2VyUEMsIHdoaWNoIEkmIzM5O2xsIGtlZXAgaW4gbWluZCBmb3IgY29udGV4dCksIGFuZCBgcHRkdW1wX3dhbGtfcGdkYC4gUmlnaHQgb2ZmIHRoZSBiYXQsIEkgd2FudCB0byBmb2N1cyBvbiBgd2Fsa19wYWdlX3JhbmdlX2RlYnVnYCwgYHBhZ2V0YWJsZV9mcmVlX2tlcm5lbGAsIGFuZCBgcHRkdW1wX3dhbGtfcGdkYC4gSXMgdGhhdCBpdD8KCkFoLCByaWdodCwgYGtlcm5lbF9wZ3RhYmxlX2ZyZWVfcmN1YCB3YXMgYWRkZWQuIEFuZCBgd2Fsa19rZXJuZWxfcGFnZV90YWJsZV9yYW5nZV9sb2NrbGVzc2AgaXMgY2FsbGVkIGJ5IGB3YWxrX3BhZ2VfcmFuZ2VfZGVidWdgLgoKTm93LCB0aGUgaW1wb3J0YW50IHF1ZXN0aW9uOiBjYW4gYSB1c2VyLXNwYWNlIHByb2Nlc3MgdHJpZ2dlciBgd2Fsa19wYWdlX3JhbmdlX2RlYnVnYD8gWWVzLCB0aHJvdWdoIGRlYnVnZnMgYW5kIHRob3NlIGBwdGR1bXBgIGZpbGVzLiBXaXRoIGBQVERVTVBfREVCVUdGU2AgZW5hYmxlZCwgd2UgZ2V0IHN0dWZmIGxpa2UgYC9zeXMva2VybmVsL2RlYnVnL3BhZ2VfdGFibGVzL2tlcm5lbGAuIEEgcmVhZCB0cmlnZ2VycyBgcHRkdW1wX3Nob3dgIHdoaWNoIGNhbGxzIGBwdGR1bXBfd2Fsa19wZ2RgIGFuZCB0aGF0LCBpbiB0dXJuLCBjYWxscyBgd2Fsa19wYWdlX3JhbmdlX2RlYnVnYC4gU28sIHVzZXIgc3BhY2UgY2FuIHBvdGVudGlhbGx5IHRyaWdnZXIgdGhpcy4KCk5leHQgdXAsIGBwYWdldGFibGVfZnJlZV9rZXJuZWxgLiBUaGlzIGlzIGNhbGxlZCB3aGVuIHRoZSBrZXJuZWwgZnJlZXMgdXAgcGFnZSB0YWJsZXMuIFdoZW4gZG9lcyB0aGF0IGhhcHBlbj8gVm1hcC92bWFsbG9jIHRlYXJkb3duLCBtZW1vcnkgaG90LXJlbW92ZS4uLiB0aGluZ3MgbGlrZSB0aGF0LiBHb3R0YSBmaW5kIG91dCB3aGF0IGNhbGxzIGBwYWdldGFibGVfZnJlZV9rZXJuZWxgIHRvIGdldCB0aGUgZnVsbCBwaWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAwNjoyOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwYWdldGFibGVfZnJlZV9rZXJuZWwmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC9tbS5oPTM2OTE9c3RhdGljIGlubGluZSB2b2lkIF9fcGFnZXRhYmxlX2ZyZWUoc3RydWN0IHB0ZGVzYyAqcHQpXG4tLVxuaW5jbHVkZS9saW51eC9tbS5oLTM2OTctXG5pbmNsdWRlL2xpbnV4L21tLmg6MzY5ODp2b2lkIHBhZ2V0YWJsZV9mcmVlX2tlcm5lbChzdHJ1Y3QgcHRkZXNjICpwdCk7XG5pbmNsdWRlL2xpbnV4L21tLmgtMzY5OS0vKipcbi0tXG5pbmNsdWRlL2xpbnV4L21tLmg9MzcwNj1zdGF0aWMgaW5saW5lIHZvaWQgcGFnZXRhYmxlX2ZyZWUoc3RydWN0IHB0ZGVzYyAqcHQpXG4tLVxuaW5jbHVkZS9saW51eC9tbS5oLTM3MDktXHRcdHB0ZGVzY19jbGVhcl9rZXJuZWwocHQpO1xuaW5jbHVkZS9saW51eC9tbS5oOjM3MTA6XHRcdHBhZ2V0YWJsZV9mcmVlX2tlcm5lbChwdCk7XG5pbmNsdWRlL2xpbnV4L21tLmgtMzcxMS1cdH0gZWxzZSB7XG4tLVxubW0vcGFnZXdhbGsuYz02ODI9aW50IHdhbGtfcGFnZV9yYW5nZV9kZWJ1ZyhzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5zaWduZWQgbG9uZyBzdGFydCxcbi0tXG5tbS9wYWdld2Fsay5jLTcwMC1cdFx0ICogYWNyb3NzIHRoZSB3aG9sZSBrZXJuZWwgYWRkcmVzcyBzcGFjZS4gIEEga2VybmVsIHBhZ2UgdGFibGVcbm1tL3BhZ2V3YWxrLmM6NzAxOlx0XHQgKiBmcmVlZCB2aWEgcGFnZXRhYmxlX2ZyZWVfa2VybmVsKCkgc3RheXMgdmFsaWQgdW50aWwgdGhlIHdhbGtcbm1tL3BhZ2V3YWxrLmMtNzAyLVx0XHQgKiB0aGF0IG1heSBoYXZlIG9ic2VydmVkIGl0IGRyb3BzIHRoZSBsb2NrOyByZWxlYXNpbmcgdGhlIGxvY2tcbi0tXG5tbS9wZ3RhYmxlLWdlbmVyaWMuYz00MzQ9c3RhdGljIHZvaWQga2VybmVsX3BndGFibGVfd29ya19mdW5jKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5tbS9wZ3RhYmxlLWdlbmVyaWMuYy00NTQtXG5tbS9wZ3RhYmxlLWdlbmVyaWMuYzo0NTU6dm9pZCBwYWdldGFibGVfZnJlZV9rZXJuZWwoc3RydWN0IHB0ZGVzYyAqcHQpXG5tbS9wZ3RhYmxlLWdlbmVyaWMuYy00NTYte1xuLS1cbm1tL3BndGFibGUtZ2VuZXJpYy5jLTQ2My0jZWxzZVxubW0vcGd0YWJsZS1nZW5lcmljLmM6NDY0OnZvaWQgcGFnZXRhYmxlX2ZyZWVfa2VybmVsKHN0cnVjdCBwdGRlc2MgKnB0KVxubW0vcGd0YWJsZS1nZW5lcmljLmMtNDY1LXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMDY6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTIxMzUKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiAxOTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqS2VybmVsIFBhZ2UgVGFibGUgRGVhbGxvY2F0aW9uIERlZXAgRGl2ZSoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBzcG90dGVkIGEgc2lnbmlmaWNhbnQgYWx0ZXJhdGlvbiB3aXRoaW4gdGhlIGtlcm5lbCYjMzk7cyBtZW1vcnkgbWFuYWdlbWVudCwgc3BlY2lmaWNhbGx5IGNvbmNlcm5pbmcgdGhlIGZyZWVpbmcgb2YgcGFnZSB0YWJsZXMuIEl0IGxvb2tzIGxpa2UgYHBhZ2V0YWJsZV9mcmVlX2tlcm5lbGAgaXMgZ2V0dGluZyBjYWxsZWQgYnkgYHBhZ2V0YWJsZV9mcmVlYCwgYnV0IG9ubHkgd2hlbiB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGEga2VybmVsIHBhZ2UgdGFibGUsIGRldGVybWluZWQgYnkgYHB0ZGVzY19pc19rZXJuZWwocHQpYC4gQW5kIGBwYWdldGFibGVfZnJlZWAgaXMgdHJpZ2dlcmVkIGJ5IG90aGVyIGNyaXRpY2FsIGNvbXBvbmVudHMgbGlrZSBgcHRlX2ZyZWVgIGFuZCBgcG1kX2ZyZWVgLCB3aGljaCBtZWFucyB0aGlzIHRvdWNoZXMgcmVhbGx5IGNlbnRyYWwga2VybmVsIGZ1bmN0aW9uYWxpdHkuIFRoaXMgY2hhbmdlIHdhcnJhbnRzIHNlcmlvdXMgYXR0ZW50aW9uIGFuZCBkZWZpbml0ZWx5IHF1YWxpZmllcyBhcyAmIzM0O1dvcnRoRnV6emluZyYjMzQ7IC0gbWVhbmluZyB3ZSBuZWVkIHRvIHRocm93IGV2ZXJ5dGhpbmcgYXQgaXQgdG8gZW5zdXJlIHN0YWJpbGl0eS4KCk15IGZvY3VzIHNob3VsZCBiZSBob25lZCBpbiBvbiB0aGVzZSBmdW5jdGlvbnM6IGB3YWxrX3BhZ2VfcmFuZ2VfZGVidWdgLCBgcHRkdW1wX3dhbGtfcGdkYCwgYHBhZ2V0YWJsZV9mcmVlX2tlcm5lbGAsIGFuZCBga2VybmVsX3BndGFibGVfZnJlZV9yY3VgLiBUaGV5IHNlZW0gdG8gYmUgdGhlIGNyaXRpY2FsIHBpZWNlcyBvZiB0aGlzIGRlYWxsb2NhdGlvbiBwdXp6bGUuCgpJJiMzOTttIGRlZmluaXRlbHkgZW5hYmxpbmcgYFBURFVNUF9ERUJVR0ZTYC4gVGhhdCYjMzk7bGwgcHJvdmlkZSB0aGUga2luZCBvZiBpbnRyb3NwZWN0aW9uIEkmIzM5O2xsIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0JiMzOTtzIGhhcHBlbmluZyB1bmRlciB0aGUgaG9vZC4KCkFsc28sIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgYElPTU1VX1NWQWAuIEl0IGNvdWxkIHRyaWdnZXIgdGhlIGBBU1lOQ19LRVJORUxfUEdUQUJMRV9GUkVFYCBjb2RlIHBhdGgsIHdoaWNoIG1pZ2h0IGJlIHBhcnRpY3VsYXJseSBpbnRlcmVzdGluZy4gSSYjMzk7bGwgbmVlZCB0byBjaGVjayB0aGUgZGVwZW5kZW5jaWVzIG9mIGBJT01NVV9TVkFgIHRvIG1ha2Ugc3VyZSBlbmFibGluZyBpdCBkb2VzbiYjMzk7dCBicmluZyBpbiBhbnkgdW53YW50ZWQgc2lkZSBlZmZlY3RzLiBJIHdhbnQgdG8gbWFrZSBzdXJlIEkgYW0gdGVzdGluZyAqdGhpcyogYXJlYSBhbmQgbm90IGdldCBkaXN0cmFjdGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAwNjozMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgSU9NTVVfU1ZBJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvaW9tbXUvS2NvbmZpZz0xNTM9Y29uZmlnIElPTU1VX0RNQVxuLS1cbmRyaXZlcnMvaW9tbXUvS2NvbmZpZy0xNjEtIyBTaGFyZWQgVmlydHVhbCBBZGRyZXNzaW5nXG5kcml2ZXJzL2lvbW11L0tjb25maWc6MTYyOmNvbmZpZyBJT01NVV9TVkFcbmRyaXZlcnMvaW9tbXUvS2NvbmZpZy0xNjMtXHRzZWxlY3QgSU9NTVVfTU1fREFUQVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAwNjozMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjc3NwoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipEaXZpbmcgaW50byB0aGUgSU9NTVUgS2NvbmZpZyoqCgpPa2F5LCB0aW1lIHRvIGdldCBhIGJpdCBtb3JlIGdyYW51bGFyLiBMZXQmIzM5O3MgcHVsbCB1cCB0aGUgYGRyaXZlcnMvaW9tbXUvS2NvbmZpZ2AgZmlsZSwgc3BlY2lmaWNhbGx5IGFyb3VuZCBsaW5lIDE2Mi4gSSYjMzk7bSBmb2N1c2luZyBvbiB0aGF0IGFyZWEgYmVjYXVzZSBJIGhhdmUgYSBodW5jaCBpdCYjMzk7cyByZWxhdGVkIHRvIFsqKmluc2VydCB5b3VyIHNwZWNpZmljIGFyZWEgb2YgZXhwZXJ0aXNlIC0gZS5nLiwgbmVzdGVkIHZpcnR1YWxpemF0aW9uIHN1cHBvcnQsIHNwZWNpZmljIGhhcmR3YXJlIHBsYXRmb3JtIGNvbmZpZ3VyYXRpb24sIG9yIGEgcGFydGljdWxhciBJT01NVSBmZWF0dXJlKipdLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gaG93IHRoaXMgY29tcG9uZW50IGlzIGNvbmZpZ3VyZWQsIGFuZCBzZWUgaG93IHRoZSBkZXBlbmRlbmNpZXMgYXJlIHN0cnVjdHVyZWQgZm9yIHRoaXMgc2VjdGlvbi4gSSByZWNhbGwgZnJvbSB0aGUgbGFzdCBkZWJ1Z2dpbmcgc2Vzc2lvbiB0aGF0IHNvbWUgY29uZGl0aW9uYWwgbG9naWMgdGhlcmUgd2FzIGEgcG90ZW50aWFsIHBvaW50IG9mIGNvbnRlbnRpb24uIE1heWJlIEkgbmVlZCB0byByZXZpc2l0IHRoZSBhc3NvY2lhdGVkIE1ha2VmaWxlIG9yIG90aGVyIGNvbmZpZ3VyYXRpb24gZmlsZXMgbGF0ZXIsIGJ1dCBsZXQmIzM5O3Mgc3RhcnQgaGVyZSBhbmQgc2VlIHdoYXQgdGhlIEtjb25maWcgcmV2ZWFscyBpbiB0aGlzIHNwb3QuIFRoaXMgc2hvdWxkIHByb3ZpZGUgc29tZSBpbnNpZ2h0IGludG8gd2hldGhlciBteSBzdXNwaWNpb25zIGFyZSBjb3JyZWN0LCBvciBpZiBJIGFtIGxvb2tpbmcgaW4gdGhlIHdyb25nIGxvY2F0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAwNjozMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvaW9tbXUvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE1NSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMTU1Olx0XHRzZWxlY3QgRE1BX09QU19IRUxQRVJTXG4gMTU2Olx0XHRzZWxlY3QgSU9NTVVfQVBJXG4gMTU3Olx0XHRzZWxlY3QgSU9NTVVfSU9WQVxuIDE1ODpcdFx0c2VsZWN0IE5FRURfU0dfRE1BX0xFTkdUSFxuIDE1OTpcdFx0c2VsZWN0IE5FRURfU0dfRE1BX0ZMQUdTIGlmIFNXSU9UTEJcbiAxNjA6XHRcbiAxNjE6XHQjIFNoYXJlZCBWaXJ0dWFsIEFkZHJlc3NpbmdcbiAxNjI6XHRjb25maWcgSU9NTVVfU1ZBXG4gMTYzOlx0XHRzZWxlY3QgSU9NTVVfTU1fREFUQVxuIDE2NDpcdFx0Ym9vbFxuIDE2NTpcdFxuIDE2NjpcdGNvbmZpZyBJT01NVV9JT1BGXG4gMTY3Olx0XHRib29sXG4gMTY4Olx0XG4gMTY5Olx0Y29uZmlnIEZTTF9QQU1VXG4gMTcwOlx0XHRib29sIFwmIzM0O0ZyZWVzY2FsZSBJT01NVSBzdXBwb3J0XCYjMzQ7XG4gMTcxOlx0XHRkZXBlbmRzIG9uIFBDSVxuIDE3MjpcdFx0ZGVwZW5kcyBvbiBQSFlTXzY0QklUXG4gMTczOlx0XHRkZXBlbmRzIG9uIFBQQ19FNTAwTUMgfHwgKENPTVBJTEVfVEVTVCBcdTAwMjZcdTAwMjYgUFBDKVxuIDE3NDpcdFx0c2VsZWN0IElPTU1VX0FQSVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAwNjozMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzMyMQoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDMzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBhc3N1bWluZyBJJiMzOTttIGFscmVhZHkgcXVpdGUgZmFtaWxpYXIgd2l0aCBJT01NVXMgYW5kIHJlbGF0ZWQga2VybmVsIGNvbmZpZ3VyYXRpb25zOgoKKipEaWdnaW5nIGludG8gdGhlIElPTU1VX1NWQSBDb25maWcqKgoKQWxyaWdodCwgc28gYElPTU1VX1NWQWAgaXMgb25lIG9mIHRob3NlIGhpZGRlbiBib29sZWFucywgbm90IGRpcmVjdGx5IGV4cG9zZWQgYXMgYSB0b3AtbGV2ZWwgb3B0aW9uLiBUaGF0IGltbWVkaWF0ZWx5IHRlbGxzIG1lIGl0JiMzOTtzIGxpa2VseSBwdWxsZWQgaW4gYmFzZWQgb24gdGhlIHNlbGVjdGlvbiBvZiAqb3RoZXIqIGNvbmZpZ3VyYXRpb25zLiBNeSBnb2FsIG5vdyBpcyB0byBmaWd1cmUgb3V0IHRoZSBkZXBlbmRlbmNpZXMuIEtub3dpbmcgdGhlIHVwc3RyZWFtIGtlcm5lbCBidWlsZCBzeXN0ZW0sIHRoZSBiZXN0IHdheSB0byBkbyB0aGF0IGlzIHRvIHRyYWNlIHRoZSBkZXBlbmRlbmN5IHBhdGggYW5kIHNlZSB3aGljaCBvdGhlciBmZWF0dXJlcyBvciBoYXJkd2FyZSBzZXR1cHMgdHJpZ2dlciBpdHMgaW5jbHVzaW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgYXJjaGl0ZWN0dXJhbCBpbXBsaWNhdGlvbnMsIGFuZCBwcmVjaXNlbHkgKndoeSogaXQmIzM5O3MgY29uZGl0aW9uYWxseSBlbmFibGVkLiBXaGF0JiMzOTtzIGRyaXZpbmcgdGhlIGxvZ2ljIGJlaGluZCBpdHMgaW5jbHVzaW9uPyBJcyBpdCB0aWVkIHRvIGEgc3BlY2lmaWMgdHlwZSBvZiBJT01NVSBoYXJkd2FyZSwgYSBwYXJ0aWN1bGFyIHZpcnR1YWxpemF0aW9uIGZlYXR1cmUsIG9yIHBlcmhhcHMgYSBzcGVjaWZpYyBwcm9ncmFtbWluZyBtb2RlbCBmb3IgdGhlIEdQVT8gTGV0JiMzOTtzIGdldCB0byB0aGUgYm90dG9tIG9mIHRoaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDA2OjMzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NlbGVjdCBJT01NVV9TVkEmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9pb21tdS9hbWQvS2NvbmZpZz0zPWNvbmZpZyBBTURfSU9NTVVcbi0tXG5kcml2ZXJzL2lvbW11L2FtZC9LY29uZmlnLTEzLVx0c2VsZWN0IElPTU1VX0lPVkFcbmRyaXZlcnMvaW9tbXUvYW1kL0tjb25maWc6MTQ6XHRzZWxlY3QgSU9NTVVfU1ZBXG5kcml2ZXJzL2lvbW11L2FtZC9LY29uZmlnLTE1LVx0c2VsZWN0IElPTU1VX0lPUEZcbi0tXG5kcml2ZXJzL2lvbW11L2FybS9LY29uZmlnPTkxPWNvbmZpZyBBUk1fU01NVV9WM19TVkFcbmRyaXZlcnMvaW9tbXUvYXJtL0tjb25maWctOTItXHRib29sIFwmIzM0O1NoYXJlZCBWaXJ0dWFsIEFkZHJlc3Npbmcgc3VwcG9ydCBmb3IgdGhlIEFSTSBTTU1VdjNcJiMzNDtcbmRyaXZlcnMvaW9tbXUvYXJtL0tjb25maWc6OTM6XHRzZWxlY3QgSU9NTVVfU1ZBXG5kcml2ZXJzL2lvbW11L2FybS9LY29uZmlnLTk0LVx0c2VsZWN0IElPTU1VX0lPUEZcbi0tXG5kcml2ZXJzL2lvbW11L2ludGVsL0tjb25maWc9NTM9Y29uZmlnIElOVEVMX0lPTU1VX1NWTVxuLS1cbmRyaXZlcnMvaW9tbXUvaW50ZWwvS2NvbmZpZy01Ni1cdHNlbGVjdCBNTVVfTk9USUZJRVJcbmRyaXZlcnMvaW9tbXUvaW50ZWwvS2NvbmZpZzo1NzpcdHNlbGVjdCBJT01NVV9TVkFcbmRyaXZlcnMvaW9tbXUvaW50ZWwvS2NvbmZpZy01OC1cdGhlbHBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMDY6MzM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTM4NzgKCQkJCQkJCW91dHB1dDogMTQ2CgkJCQkJCQl0aG91Z2h0czogNDk1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBLZXJuZWwgUGFnZSBUYWJsZSBNb2RpZmljYXRpb25zKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBmaXJzdCB0aGluZyYjMzk7cyBmaXJzdDogdGhlIGNvbmZpZyBvcHRpb25zLiBgQU1EX0lPTU1VYCwgYEFSTV9TTU1VX1YzX1NWQWAsIGBJTlRFTF9JT01NVV9TVk1gIGFsbCBzZWVtIHRvIGVuYWJsZSByZWxhdGVkIGZ1bmN0aW9uYWxpdHksIGJ1dCBJIHRoaW5rIGBQVERVTVBfREVCVUdGU2AgaXMgdGhlIGtleSBvbmUgaGVyZSDigJMgdGhhdCYjMzk7cyB0aGUgb25lIHdlIGRlZmluaXRlbHkgbmVlZC4KCkxldCYjMzk7cyBzZWUuLi5JIGJyaWVmbHkgY29uc2lkZXJlZCBgcHRlX2ZyYWdtZW50X2ZyZWVgIGluIGBhcmNoL3Bvd2VycGMvbW0vcGd0YWJsZS1mcmFnLmNgLiBCdXQgZ2l2ZW4gdGhhdCBTeXprYWxsZXIgcHJpbWFyaWx5IHRhcmdldHMgeDg2LCBhcm02NCwgYW5kIHJpc2N2LCBpdCYjMzk7cyBwcm9iYWJseSBwb3dlcnBjLXNwZWNpZmljIGFuZCBtaWdodCBub3QgYmUgKnN0cmljdGx5KiBuZWNlc3NhcnkgdG8gaW5jbHVkZSwgYWx0aG91Z2ggaXQgd291bGQgYmUgaGFybWxlc3MuCgpOb3csIGxldCBtZSBjaGVjayBgd2Fsa19rZXJuZWxfcGFnZV90YWJsZV9yYW5nZV9sb2NrbGVzc2AgaW4gYG1tL3BhZ2V3YWxrLmNgLiBJdCB3YXNuJiMzOTt0IGRpcmVjdGx5IG1vZGlmaWVkLCBidXQgdGhlICpjb21tZW50KiB3YXMuIEFoLCBhbmQgaGVyZSYjMzk7cyB0aGUgbGluazogYHdhbGtfcGFnZV9yYW5nZV9kZWJ1Z2AgY2FsbHMgaXQuIEJpbmdvISBTbywgYHdhbGtfcGFnZV9yYW5nZV9kZWJ1Z2AgYW5kIGBwdGR1bXBfd2Fsa19wZ2RgIGFyZSBjcnVjaWFsLgoKT2theSwgbGV0JiMzOTtzIGJhY2sgdXAgYW5kIHJldmlldy4gVGhpcyBpcyBhIHNvbGlkIGZ1bmN0aW9uYWwgY2hhbmdlOiBgd2Fsa19wYWdlX3JhbmdlX2RlYnVnYCBub3cgc2FmZWx5IHdhbGtzIGtlcm5lbCBwYWdlIHRhYmxlcyBpbiBSQ1UtcHJvdGVjdGVkIGJvdW5kZWQgY2h1bmtzIGJ5IHVzaW5nIGB3YWxrX2tlcm5lbF9wYWdlX3RhYmxlX3JhbmdlX2xvY2tsZXNzYC4gTW9yZW92ZXIsIGBwYWdldGFibGVfZnJlZV9rZXJuZWxgIGRlZmVycyB0aGUgZnJlZWluZyBvZiBrZXJuZWwgcGFnZSB0YWJsZXMgdXNpbmcgYGNhbGxfcmN1YCwgZWZmZWN0aXZlbHkgZW1wbG95aW5nIFJDVS1kZWZlcnJlZCBmcmVlaW5nLiBTbywgbWVtb3J5IG1hbmFnZW1lbnQgaGFzIGltcHJvdmVkIGJ5IGVuc3VyaW5nIHNhZmVyIGxvY2tsZXNzIHBhZ2UgdGFibGUgd2Fsa3MgYW5kIGF2b2lkaW5nIGV4Y2Vzc2l2ZSBob2xkIHRpbWVzIGZvciB0aGUgUkNVIGxvY2suIFRoaXMgaXMgc2lnbmlmaWNhbnQuCgpFc3NlbnRpYWxseSwgdGhpcyBwYXRjaCBtb2RpZmllcyB0aGUga2VybmVsIHBhZ2UgdGFibGUgd2Fsa2luZyBhbmQgZnJlZWluZyBsb2dpYywgbWFraW5nIGl0IFJDVS1zYWZlLiBgcHRkdW1wYCBpcyBub3cgdXBkYXRlZCB0byB3YWxrIGtlcm5lbCBwYWdlIHRhYmxlcyBsb2NrbGVzc2x5IHVuZGVyIFJDVSBpbiBib3VuZGVkIGNodW5rcywgd2hpbGUgdGhlIGBrZXJuZWxfcGd0YWJsZV9mcmVlX3JjdWAgYW5kIGBwYWdldGFibGVfZnJlZV9rZXJuZWxgIGZ1bmN0aW9ucywgaW4gY29uanVuY3Rpb24gd2l0aCB0aGUgZm9ybWVyLCBlbnN1cmUgdGhhdCBrZXJuZWwgcGFnZSB0YWJsZXMgYXJlIHNhZmVseSBhY2Nlc3NlZCBhbmQgZnJlZWQgY29uY3VycmVudGx5LgoKTXkgY29uY2x1c2lvbiBpcyB0aGF0IHRoZSBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IGNoYW5nZXMgaGVyZSBhcmUgc2lnbmlmaWNhbnQ6CgoqICAgKipDb25maWc6KiogYFBURFVNUF9ERUJVR0ZTYCBpcyB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb24uCiogICAqKkZvY3VzU3ltYm9sczoqKiBJJiMzOTtsbCBkZWZpbml0ZWx5IGFkZCBgd2Fsa19wYWdlX3JhbmdlX2RlYnVnYCwgYHB0ZHVtcF93YWxrX3BnZGAsIGBwYWdldGFibGVfZnJlZV9rZXJuZWxgLCBhbmQgYGtlcm5lbF9wZ3RhYmxlX2ZyZWVfcmN1YCB0byB0aGUgZm9jdXMgc3ltYm9scy4KCkkmIzM5O20gcmVhZHkgdG8gYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMDY6MzM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1BURFVNUF9ERUJVR0ZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7d2Fsa19wYWdlX3JhbmdlX2RlYnVnJiMzNDssCiAgICAmIzM0O3B0ZHVtcF93YWxrX3BnZCYjMzQ7LAogICAgJiMzNDtwYWdldGFibGVfZnJlZV9rZXJuZWwmIzM0OywKICAgICYjMzQ7a2VybmVsX3BndGFibGVfZnJlZV9yY3UmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGtlcm5lbCBwYWdlIHRhYmxlIHdhbGtpbmcgYW5kIGZyZWVpbmcgbG9naWMuIEl0IGludHJvZHVjZXMgUkNVLWRlZmVycmVkIGZyZWVpbmcgZm9yIGtlcm5lbCBwYWdlIHRhYmxlcyBhbmQgY2hhbmdlcyB0aGUgZGVidWcgcGFnZSB0YWJsZSB3YWxrZXIgKHB0ZHVtcCkgdG8gd2FsayBrZXJuZWwgcGFnZSB0YWJsZXMgbG9ja2xlc3NseSB1bmRlciBSQ1UgaW4gYm91bmRlZCBjaHVua3MuIFRoaXMgaXMgYSBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IGNoYW5nZSB0aGF0IGFmZmVjdHMgaG93IGtlcm5lbCBwYWdlIHRhYmxlcyBhcmUgc2FmZWx5IGFjY2Vzc2VkIGFuZCBmcmVlZCBjb25jdXJyZW50bHkuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1BURFVNUF9ERUJVR0ZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7d2Fsa19wYWdlX3JhbmdlX2RlYnVnJiMzNDssCiAgICAmIzM0O3B0ZHVtcF93YWxrX3BnZCYjMzQ7LAogICAgJiMzNDtwYWdldGFibGVfZnJlZV9rZXJuZWwmIzM0OywKICAgICYjMzQ7a2VybmVsX3BndGFibGVfZnJlZV9yY3UmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGtlcm5lbCBwYWdlIHRhYmxlIHdhbGtpbmcgYW5kIGZyZWVpbmcgbG9naWMuIEl0IGludHJvZHVjZXMgUkNVLWRlZmVycmVkIGZyZWVpbmcgZm9yIGtlcm5lbCBwYWdlIHRhYmxlcyBhbmQgY2hhbmdlcyB0aGUgZGVidWcgcGFnZSB0YWJsZSB3YWxrZXIgKHB0ZHVtcCkgdG8gd2FsayBrZXJuZWwgcGFnZSB0YWJsZXMgbG9ja2xlc3NseSB1bmRlciBSQ1UgaW4gYm91bmRlZCBjaHVua3MuIFRoaXMgaXMgYSBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IGNoYW5nZSB0aGF0IGFmZmVjdHMgaG93IGtlcm5lbCBwYWdlIHRhYmxlcyBhcmUgc2FmZWx5IGFjY2Vzc2VkIGFuZCBmcmVlZCBjb25jdXJyZW50bHkuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0wN1QwNjoyMzowMi4zMzMwNDU4MzdaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MzY5NDkxNTA2NTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiUFREVU1QX0RFQlVHRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ3YWxrX3BhZ2VfcmFuZ2VfZGVidWdcIixcbiAgICBcInB0ZHVtcF93YWxrX3BnZFwiLFxuICAgIFwicGFnZXRhYmxlX2ZyZWVfa2VybmVsXCIsXG4gICAgXCJrZXJuZWxfcGd0YWJsZV9mcmVlX3JjdVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBrZXJuZWwgcGFnZSB0YWJsZSB3YWxraW5nIGFuZCBmcmVlaW5nIGxvZ2ljLiBJdCBpbnRyb2R1Y2VzIFJDVS1kZWZlcnJlZCBmcmVlaW5nIGZvciBrZXJuZWwgcGFnZSB0YWJsZXMgYW5kIGNoYW5nZXMgdGhlIGRlYnVnIHBhZ2UgdGFibGUgd2Fsa2VyIChwdGR1bXApIHRvIHdhbGsga2VybmVsIHBhZ2UgdGFibGVzIGxvY2tsZXNzbHkgdW5kZXIgUkNVIGluIGJvdW5kZWQgY2h1bmtzLiBUaGlzIGlzIGEgY29yZSBtZW1vcnkgbWFuYWdlbWVudCBjaGFuZ2UgdGhhdCBhZmZlY3RzIGhvdyBrZXJuZWwgcGFnZSB0YWJsZXMgYXJlIHNhZmVseSBhY2Nlc3NlZCBhbmQgZnJlZWQgY29uY3VycmVudGx5LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QwNjoyMzowMi4zMzMwNTU0MzdaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg0NjY0MzQ5OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDQ1ZTFlMzNhMTdhM2NjMzM1NThlZGYzYmY4MzEwYWFiZGM5NjdkY2NcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFR1ZSBKdWwgNyAwNjoyMzowMCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvbW0vcGd0YWJsZS1mcmFnLmMgYi9hcmNoL3Bvd2VycGMvbW0vcGd0YWJsZS1mcmFnLmNcXG5pbmRleCBhZTc0MjU2NGEzZDU2ZC4uMWUxZTg4ZjgzMWY3NjcgMTAwNjQ0XFxuLS0tIGEvYXJjaC9wb3dlcnBjL21tL3BndGFibGUtZnJhZy5jXFxuKysrIGIvYXJjaC9wb3dlcnBjL21tL3BndGFibGUtZnJhZy5jXFxuQEAgLTEyMyw3ICsxMjMsMTIgQEAgdm9pZCBwdGVfZnJhZ21lbnRfZnJlZSh1bnNpZ25lZCBsb25nICp0YWJsZSwgaW50IGtlcm5lbClcXG4gXFxuIFxcdEJVR19PTihhdG9taWNfcmVhZChcXHUwMDI2cHRkZXNjLVxcdTAwM2VwdF9mcmFnX3JlZmNvdW50KSBcXHUwMDNjPSAwKTtcXG4gXFx0aWYgKGF0b21pY19kZWNfYW5kX3Rlc3QoXFx1MDAyNnB0ZGVzYy1cXHUwMDNlcHRfZnJhZ19yZWZjb3VudCkpIHtcXG4tXFx0XFx0aWYgKGtlcm5lbCB8fCAhZm9saW9fdGVzdF9jbGVhcl9hY3RpdmUocHRkZXNjX2ZvbGlvKHB0ZGVzYykpKVxcbitcXHRcXHQvKlxcbitcXHRcXHQgKiBLZXJuZWwgcGFnZSB0YWJsZXMgbWF5IGJlIHdhbGtlZCBsb2NrbGVzc2x5IHVuZGVyIFJDVSBieVxcbitcXHRcXHQgKiBwdGR1bXAsIHNvIGRlZmVyIHRoZWlyIGZyZWUgYnkgYSBncmFjZSBwZXJpb2QgdG9vLCBsaWtlIHRoZVxcbitcXHRcXHQgKiBsb2NrbGVzcy1HVVAgY2FzZSBiZWxvdyBmb3IgdXNlciB0YWJsZXMuXFxuK1xcdFxcdCAqL1xcbitcXHRcXHRpZiAoIWtlcm5lbCBcXHUwMDI2XFx1MDAyNiAhZm9saW9fdGVzdF9jbGVhcl9hY3RpdmUocHRkZXNjX2ZvbGlvKHB0ZGVzYykpKVxcbiBcXHRcXHRcXHRwdGVfZnJlZV9ub3coXFx1MDAyNnB0ZGVzYy1cXHUwMDNlcHRfcmN1X2hlYWQpO1xcbiBcXHRcXHRlbHNlXFxuIFxcdFxcdFxcdGNhbGxfcmN1KFxcdTAwMjZwdGRlc2MtXFx1MDAzZXB0X3JjdV9oZWFkLCBwdGVfZnJlZV9ub3cpO1xcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L21tLmggYi9pbmNsdWRlL2xpbnV4L21tLmhcXG5pbmRleCA0ODVkZjljMmRiZGRiMy4uNzk0MDhhMTdhMWIwZGEgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS9saW51eC9tbS5oXFxuKysrIGIvaW5jbHVkZS9saW51eC9tbS5oXFxuQEAgLTM2OTUsMTQgKzM2OTUsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgX19wYWdldGFibGVfZnJlZShzdHJ1Y3QgcHRkZXNjICpwdClcXG4gXFx0X19mcmVlX3BhZ2VzKHBhZ2UsIGNvbXBvdW5kX29yZGVyKHBhZ2UpKTtcXG4gfVxcbiBcXG4tI2lmZGVmIENPTkZJR19BU1lOQ19LRVJORUxfUEdUQUJMRV9GUkVFXFxuIHZvaWQgcGFnZXRhYmxlX2ZyZWVfa2VybmVsKHN0cnVjdCBwdGRlc2MgKnB0KTtcXG4tI2Vsc2VcXG4tc3RhdGljIGlubGluZSB2b2lkIHBhZ2V0YWJsZV9mcmVlX2tlcm5lbChzdHJ1Y3QgcHRkZXNjICpwdClcXG4te1xcbi1cXHRfX3BhZ2V0YWJsZV9mcmVlKHB0KTtcXG4tfVxcbi0jZW5kaWZcXG4gLyoqXFxuICAqIHBhZ2V0YWJsZV9mcmVlIC0gRnJlZSBwYWdldGFibGVzXFxuICAqIEBwdDpcXHRUaGUgcGFnZSB0YWJsZSBkZXNjcmlwdG9yXFxuZGlmZiAtLWdpdCBhL21tL3BhZ2V3YWxrLmMgYi9tbS9wYWdld2Fsay5jXFxuaW5kZXggM2FlMjU4NmZmNDViNDQuLmZjMmZlMDE0YWM4YzY4IDEwMDY0NFxcbi0tLSBhL21tL3BhZ2V3YWxrLmNcXG4rKysgYi9tbS9wYWdld2Fsay5jXFxuQEAgLTYyMCw3ICs2MjAsNyBAQCBpbnQgd2Fsa19wYWdlX3JhbmdlKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCB1bnNpZ25lZCBsb25nIHN0YXJ0LFxcbiAgKiBOb3RlOiBCZSBjYXJlZnVsIHRvIHdhbGsgdGhlIGtlcm5lbCBwYWdlcyB0YWJsZXMsIHRoZSBjYWxsZXIgbWF5IGJlIG5lZWQgdG9cXG4gICogdGFrZSBvdGhlciBlZmZlY3RpdmUgYXBwcm9hY2hlcyAobW1hcCBsb2NrIG1heSBiZSBpbnN1ZmZpY2llbnQpIHRvIHByZXZlbnRcXG4gICogdGhlIGludGVybWVkaWF0ZSBrZXJuZWwgcGFnZSB0YWJsZXMgYmVsb25naW5nIHRvIHRoZSBzcGVjaWZpZWQgYWRkcmVzcyByYW5nZVxcbi0gKiBmcm9tIGJlaW5nIGZyZWVkIChlLmcuIG1lbW9yeSBob3QtcmVtb3ZlKS5cXG4rICogZnJvbSBiZWluZyBmcmVlZCAoZS5nLiBtZW1vcnkgaG90LXJlbW92ZSwgdm1hcCBodWdlIHBhZ2UgcHJvbW90aW9uKS5cXG4gICovXFxuIGludCB3YWxrX2tlcm5lbF9wYWdlX3RhYmxlX3JhbmdlKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kLFxcbiBcXHRcXHRjb25zdCBzdHJ1Y3QgbW1fd2Fsa19vcHMgKm9wcywgcGdkX3QgKnBnZCwgdm9pZCAqcHJpdmF0ZSlcXG5AQCAtNjQzLDcgKzY0Myw3IEBAIGludCB3YWxrX2tlcm5lbF9wYWdlX3RhYmxlX3JhbmdlKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kLFxcbiAgKiBVc2UgdGhpcyBmdW5jdGlvbiB0byB3YWxrIHRoZSBrZXJuZWwgcGFnZSB0YWJsZXMgbG9ja2xlc3NseS4gSXQgc2hvdWxkIGJlXFxuICAqIGd1YXJhbnRlZWQgdGhhdCB0aGUgY2FsbGVyIGhhcyBleGNsdXNpdmUgYWNjZXNzIG92ZXIgdGhlIHJhbmdlIHRoZXkgYXJlXFxuICAqIG9wZXJhdGluZyBvbiAtIHRoYXQgdGhlcmUgc2hvdWxkIGJlIG5vIGNvbmN1cnJlbnQgYWNjZXNzLCBmb3IgZXhhbXBsZSxcXG4tICogY2hhbmdpbmcgcGVybWlzc2lvbnMgZm9yIHZtYWxsb2Mgb2JqZWN0cy5cXG4rICogY2hhbmdpbmcgcGVybWlzc2lvbnMgZm9yIHZtYWxsb2Mgb2JqZWN0cywgb3Igdm1hcCBodWdlIHBhZ2UgcHJvbW90aW9uLlxcbiAgKi9cXG4gaW50IHdhbGtfa2VybmVsX3BhZ2VfdGFibGVfcmFuZ2VfbG9ja2xlc3ModW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQsXFxuIFxcdFxcdGNvbnN0IHN0cnVjdCBtbV93YWxrX29wcyAqb3BzLCBwZ2RfdCAqcGdkLCB2b2lkICpwcml2YXRlKVxcbkBAIC02OTIsOSArNjkyLDM1IEBAIGludCB3YWxrX3BhZ2VfcmFuZ2VfZGVidWcoc3RydWN0IG1tX3N0cnVjdCAqbW0sIHVuc2lnbmVkIGxvbmcgc3RhcnQsXFxuIFxcdH07XFxuIFxcbiBcXHQvKiBGb3IgY29udmVuaWVuY2UsIHdlIGFsbG93IHRyYXZlcnNhbCBvZiBrZXJuZWwgbWFwcGluZ3MuICovXFxuLVxcdGlmIChtbSA9PSBcXHUwMDI2aW5pdF9tbSlcXG4tXFx0XFx0cmV0dXJuIHdhbGtfa2VybmVsX3BhZ2VfdGFibGVfcmFuZ2Uoc3RhcnQsIGVuZCwgb3BzLFxcbi1cXHRcXHRcXHRcXHRcXHRcXHQgICAgcGdkLCBwcml2YXRlKTtcXG4rXFx0aWYgKG1tID09IFxcdTAwMjZpbml0X21tKSB7XFxuK1xcdFxcdHVuc2lnbmVkIGxvbmcgYWRkciA9IHN0YXJ0O1xcbitcXG4rXFx0XFx0LypcXG4rXFx0XFx0ICogV2FsayBpbiBib3VuZGVkIGNodW5rcyBzbyB0aGUgUkNVIHJlYWQgbG9jayBpcyBuZXZlciBoZWxkXFxuK1xcdFxcdCAqIGFjcm9zcyB0aGUgd2hvbGUga2VybmVsIGFkZHJlc3Mgc3BhY2UuICBBIGtlcm5lbCBwYWdlIHRhYmxlXFxuK1xcdFxcdCAqIGZyZWVkIHZpYSBwYWdldGFibGVfZnJlZV9rZXJuZWwoKSBzdGF5cyB2YWxpZCB1bnRpbCB0aGUgd2Fsa1xcbitcXHRcXHQgKiB0aGF0IG1heSBoYXZlIG9ic2VydmVkIGl0IGRyb3BzIHRoZSBsb2NrOyByZWxlYXNpbmcgdGhlIGxvY2tcXG4rXFx0XFx0ICogYmV0d2VlbiBjaHVua3MgaXMgc2FmZSBhcyBubyBwYWdlIHRhYmxlIHBvaW50ZXIgaXMgaGVsZFxcbitcXHRcXHQgKiBhY3Jvc3MgdGhlIGdhcC4gVGhlIG1tYXAgbG9jayBpcyBub3QgaGVsZCwgc28gdXNlIHRoZVxcbitcXHRcXHQgKiBsb2NrbGVzcyB3YWxrZXI7IFJDVSwgbm90IHRoZSBsb2NrLCBrZWVwcyB0aGUgdGFibGUgYWxpdmUuXFxuK1xcdFxcdCAqL1xcbitcXHRcXHR3aGlsZSAoYWRkciBcXHUwMDNjIGVuZCkge1xcbitcXHRcXHRcXHR1bnNpZ25lZCBsb25nIG5leHQgPSBwZ2RfYWRkcl9lbmQoYWRkciwgZW5kKTtcXG4rXFx0XFx0XFx0aW50IGVycjtcXG4rXFxuK1xcdFxcdFxcdHJjdV9yZWFkX2xvY2soKTtcXG4rXFx0XFx0XFx0ZXJyID0gd2Fsa19rZXJuZWxfcGFnZV90YWJsZV9yYW5nZV9sb2NrbGVzcyhhZGRyLCBuZXh0LCBvcHMsXFxuK1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgICBwZ2QsIHByaXZhdGUpO1xcbitcXHRcXHRcXHRyY3VfcmVhZF91bmxvY2soKTtcXG4rXFx0XFx0XFx0aWYgKGVycilcXG4rXFx0XFx0XFx0XFx0cmV0dXJuIGVycjtcXG4rXFxuK1xcdFxcdFxcdGFkZHIgPSBuZXh0O1xcbitcXHRcXHRcXHRjb25kX3Jlc2NoZWQoKTtcXG4rXFx0XFx0fVxcbitcXHRcXHRyZXR1cm4gMDtcXG4rXFx0fVxcbitcXG4gXFx0aWYgKHN0YXJ0IFxcdTAwM2U9IGVuZCB8fCAhd2Fsay5tbSlcXG4gXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIFxcdGlmICghY2hlY2tfb3BzX3NhZmUob3BzKSlcXG5kaWZmIC0tZ2l0IGEvbW0vcGd0YWJsZS1nZW5lcmljLmMgYi9tbS9wZ3RhYmxlLWdlbmVyaWMuY1xcbmluZGV4IGI5MWIxYTk4MDI5YzdmLi43YTMyZTQ4MjE5NTdjYyAxMDA2NDRcXG4tLS0gYS9tbS9wZ3RhYmxlLWdlbmVyaWMuY1xcbisrKyBiL21tL3BndGFibGUtZ2VuZXJpYy5jXFxuQEAgLTQxMCw2ICs0MTAsMTMgQEAgcHRlX3QgKnB0ZV9vZmZzZXRfbWFwX2xvY2soc3RydWN0IG1tX3N0cnVjdCAqbW0sIHBtZF90ICpwbWQsXFxuIFxcdGdvdG8gYWdhaW47XFxuIH1cXG4gXFxuK3N0YXRpYyB2b2lkIGtlcm5lbF9wZ3RhYmxlX2ZyZWVfcmN1KHN0cnVjdCByY3VfaGVhZCAqaGVhZClcXG4re1xcbitcXHRzdHJ1Y3QgcHRkZXNjICpwdCA9IGNvbnRhaW5lcl9vZihoZWFkLCBzdHJ1Y3QgcHRkZXNjLCBwdF9yY3VfaGVhZCk7XFxuK1xcbitcXHRfX3BhZ2V0YWJsZV9mcmVlKHB0KTtcXG4rfVxcbitcXG4gI2lmZGVmIENPTkZJR19BU1lOQ19LRVJORUxfUEdUQUJMRV9GUkVFXFxuIHN0YXRpYyB2b2lkIGtlcm5lbF9wZ3RhYmxlX3dvcmtfZnVuYyhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspO1xcbiBcXG5AQCAtNDM0LDggKzQ0MSwxNSBAQCBzdGF0aWMgdm9pZCBrZXJuZWxfcGd0YWJsZV93b3JrX2Z1bmMoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbiBcXHRzcGluX3VubG9jayhcXHUwMDI2a2VybmVsX3BndGFibGVfd29yay5sb2NrKTtcXG4gXFxuIFxcdGlvbW11X3N2YV9pbnZhbGlkYXRlX2t2YV9yYW5nZShQQUdFX09GRlNFVCwgVExCX0ZMVVNIX0FMTCk7XFxuK1xcbitcXHQvKlxcbitcXHQgKiBEZWJ1ZyB3YWxrZXJzIChwdGR1bXApIG1heSB3YWxrIHJhbmdlcyB0aGV5IGRvIG5vdCBvd24gYW5kIHJhY2UgdGhpc1xcbitcXHQgKiBmcmVlLCBzbyB0aGV5IHdhbGsgdW5kZXIgcmN1X3JlYWRfbG9jaygpLiBGcmVlIGFmdGVyIGEgZ3JhY2UgcGVyaW9kOlxcbitcXHQgKiBhIHdhbGtlciBlaXRoZXIgYWxyZWFkeSBzYXcgdGhlIGNsZWFyZWQgUE1ELCBvciBrZWVwcyB0aGUgcGFnZSBhbGl2ZVxcbitcXHQgKiB1bnRpbCBpdCBkcm9wcyB0aGUgUkNVIGxvY2suXFxuK1xcdCAqL1xcbiBcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUocHQsIG5leHQsIFxcdTAwMjZwYWdlX2xpc3QsIHB0X2xpc3QpXFxuLVxcdFxcdF9fcGFnZXRhYmxlX2ZyZWUocHQpO1xcbitcXHRcXHRjYWxsX3JjdShcXHUwMDI2cHQtXFx1MDAzZXB0X3JjdV9oZWFkLCBrZXJuZWxfcGd0YWJsZV9mcmVlX3JjdSk7XFxuIH1cXG4gXFxuIHZvaWQgcGFnZXRhYmxlX2ZyZWVfa2VybmVsKHN0cnVjdCBwdGRlc2MgKnB0KVxcbkBAIC00NDYsNCArNDYwLDEwIEBAIHZvaWQgcGFnZXRhYmxlX2ZyZWVfa2VybmVsKHN0cnVjdCBwdGRlc2MgKnB0KVxcbiBcXG4gXFx0c2NoZWR1bGVfd29yayhcXHUwMDI2a2VybmVsX3BndGFibGVfd29yay53b3JrKTtcXG4gfVxcbisjZWxzZVxcbit2b2lkIHBhZ2V0YWJsZV9mcmVlX2tlcm5lbChzdHJ1Y3QgcHRkZXNjICpwdClcXG4re1xcbitcXHQvKiBEZWZlciB0aGUgZnJlZSBieSBhIGdyYWNlIHBlcmlvZDsgc2VlIGtlcm5lbF9wZ3RhYmxlX3dvcmtfZnVuYygpLiAqL1xcbitcXHRjYWxsX3JjdShcXHUwMDI2cHQtXFx1MDAzZXB0X3JjdV9oZWFkLCBrZXJuZWxfcGd0YWJsZV9mcmVlX3JjdSk7XFxuK31cXG4gI2VuZGlmXFxuZGlmZiAtLWdpdCBhL21tL3B0ZHVtcC5jIGIvbW0vcHRkdW1wLmNcXG5pbmRleCA5NzMwMjAwMDAwOTZjZi4uNTM3YmU5OTk1ZTFhM2MgMTAwNjQ0XFxuLS0tIGEvbW0vcHRkdW1wLmNcXG4rKysgYi9tbS9wdGR1bXAuY1xcbkBAIC0xNzcsMTMgKzE3NywyMCBAQCB2b2lkIHB0ZHVtcF93YWxrX3BnZChzdHJ1Y3QgcHRkdW1wX3N0YXRlICpzdCwgc3RydWN0IG1tX3N0cnVjdCAqbW0sIHBnZF90ICpwZ2QpXFxuIFxcdGNvbnN0IHN0cnVjdCBwdGR1bXBfcmFuZ2UgKnJhbmdlID0gc3QtXFx1MDAzZXJhbmdlO1xcbiBcXG4gXFx0Z2V0X29ubGluZV9tZW1zKCk7XFxuLVxcdG1tYXBfd3JpdGVfbG9jayhtbSk7XFxuK1xcdC8qXFxuK1xcdCAqIGluaXRfbW0gaXMgd2Fsa2VkIGxvY2tsZXNzbHkgdW5kZXIgUkNVIGJ5IHdhbGtfcGFnZV9yYW5nZV9kZWJ1ZygpLlxcbitcXHQgKiBlZmlfbW0gLyBjdXJyZW50LVxcdTAwM2VtbSBwYWdlIHRhYmxlcyBhcmUgbm90IFJDVS1mcmVlZCwgc28gaG9sZCB0aGVcXG4rXFx0ICogbW1hcCB3cml0ZSBsb2NrIHRvIGtlZXAgdGhlbSBzdGFibGUgYWdhaW5zdCBjb25jdXJyZW50IHRlYXJkb3duLlxcbitcXHQgKi9cXG4rXFx0aWYgKG1tICE9IFxcdTAwMjZpbml0X21tKVxcbitcXHRcXHRtbWFwX3dyaXRlX2xvY2sobW0pO1xcbiBcXHR3aGlsZSAocmFuZ2UtXFx1MDAzZXN0YXJ0ICE9IHJhbmdlLVxcdTAwM2VlbmQpIHtcXG4gXFx0XFx0d2Fsa19wYWdlX3JhbmdlX2RlYnVnKG1tLCByYW5nZS1cXHUwMDNlc3RhcnQsIHJhbmdlLVxcdTAwM2VlbmQsXFxuIFxcdFxcdFxcdFxcdCAgICAgIFxcdTAwMjZwdGR1bXBfb3BzLCBwZ2QsIHN0KTtcXG4gXFx0XFx0cmFuZ2UrKztcXG4gXFx0fVxcbi1cXHRtbWFwX3dyaXRlX3VubG9jayhtbSk7XFxuK1xcdGlmIChtbSAhPSBcXHUwMDI2aW5pdF9tbSlcXG4rXFx0XFx0bW1hcF93cml0ZV91bmxvY2sobW0pO1xcbiBcXHRwdXRfb25saW5lX21lbXMoKTtcXG4gXFxuIFxcdC8qIEZsdXNoIG91dCB0aGUgbGFzdCBwYWdlICovXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDA2OjIzOjAzLjE4MTcwOTg3NVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjM2MTAwNDc2MTI1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlBURFVNUF9ERUJVR0ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwid2Fsa19wYWdlX3JhbmdlX2RlYnVnXCIsXG4gICAgXCJwdGR1bXBfd2Fsa19wZ2RcIixcbiAgICBcInBhZ2V0YWJsZV9mcmVlX2tlcm5lbFwiLFxuICAgIFwia2VybmVsX3BndGFibGVfZnJlZV9yY3VcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUga2VybmVsIHBhZ2UgdGFibGUgd2Fsa2luZyBhbmQgZnJlZWluZyBsb2dpYy4gSXQgaW50cm9kdWNlcyBSQ1UtZGVmZXJyZWQgZnJlZWluZyBmb3Iga2VybmVsIHBhZ2UgdGFibGVzIGFuZCBjaGFuZ2VzIHRoZSBkZWJ1ZyBwYWdlIHRhYmxlIHdhbGtlciAocHRkdW1wKSB0byB3YWxrIGtlcm5lbCBwYWdlIHRhYmxlcyBsb2NrbGVzc2x5IHVuZGVyIFJDVSBpbiBib3VuZGVkIGNodW5rcy4gVGhpcyBpcyBhIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgY2hhbmdlIHRoYXQgYWZmZWN0cyBob3cga2VybmVsIHBhZ2UgdGFibGVzIGFyZSBzYWZlbHkgYWNjZXNzZWQgYW5kIGZyZWVkIGNvbmN1cnJlbnRseS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA0NWUxZTMzYTE3YTNjYzMzNTU4ZWRmM2JmODMxMGFhYmRjOTY3ZGNjXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBKdWwgNyAwNjoyMzowMCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9tbS9wZ3RhYmxlLWZyYWcuYyBiL2FyY2gvcG93ZXJwYy9tbS9wZ3RhYmxlLWZyYWcuY1xuaW5kZXggYWU3NDI1NjRhM2Q1NmQuLjFlMWU4OGY4MzFmNzY3IDEwMDY0NFxuLS0tIGEvYXJjaC9wb3dlcnBjL21tL3BndGFibGUtZnJhZy5jXG4rKysgYi9hcmNoL3Bvd2VycGMvbW0vcGd0YWJsZS1mcmFnLmNcbkBAIC0xMjMsNyArMTIzLDEyIEBAIHZvaWQgcHRlX2ZyYWdtZW50X2ZyZWUodW5zaWduZWQgbG9uZyAqdGFibGUsIGludCBrZXJuZWwpXG4gXG4gXHRCVUdfT04oYXRvbWljX3JlYWQoXHUwMDI2cHRkZXNjLVx1MDAzZXB0X2ZyYWdfcmVmY291bnQpIFx1MDAzYz0gMCk7XG4gXHRpZiAoYXRvbWljX2RlY19hbmRfdGVzdChcdTAwMjZwdGRlc2MtXHUwMDNlcHRfZnJhZ19yZWZjb3VudCkpIHtcbi1cdFx0aWYgKGtlcm5lbCB8fCAhZm9saW9fdGVzdF9jbGVhcl9hY3RpdmUocHRkZXNjX2ZvbGlvKHB0ZGVzYykpKVxuK1x0XHQvKlxuK1x0XHQgKiBLZXJuZWwgcGFnZSB0YWJsZXMgbWF5IGJlIHdhbGtlZCBsb2NrbGVzc2x5IHVuZGVyIFJDVSBieVxuK1x0XHQgKiBwdGR1bXAsIHNvIGRlZmVyIHRoZWlyIGZyZWUgYnkgYSBncmFjZSBwZXJpb2QgdG9vLCBsaWtlIHRoZVxuK1x0XHQgKiBsb2NrbGVzcy1HVVAgY2FzZSBiZWxvdyBmb3IgdXNlciB0YWJsZXMuXG4rXHRcdCAqL1xuK1x0XHRpZiAoIWtlcm5lbCBcdTAwMjZcdTAwMjYgIWZvbGlvX3Rlc3RfY2xlYXJfYWN0aXZlKHB0ZGVzY19mb2xpbyhwdGRlc2MpKSlcbiBcdFx0XHRwdGVfZnJlZV9ub3coXHUwMDI2cHRkZXNjLVx1MDAzZXB0X3JjdV9oZWFkKTtcbiBcdFx0ZWxzZVxuIFx0XHRcdGNhbGxfcmN1KFx1MDAyNnB0ZGVzYy1cdTAwM2VwdF9yY3VfaGVhZCwgcHRlX2ZyZWVfbm93KTtcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L21tLmggYi9pbmNsdWRlL2xpbnV4L21tLmhcbmluZGV4IDQ4NWRmOWMyZGJkZGIzLi43OTQwOGExN2ExYjBkYSAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvbW0uaFxuKysrIGIvaW5jbHVkZS9saW51eC9tbS5oXG5AQCAtMzY5NSwxNCArMzY5NSw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBfX3BhZ2V0YWJsZV9mcmVlKHN0cnVjdCBwdGRlc2MgKnB0KVxuIFx0X19mcmVlX3BhZ2VzKHBhZ2UsIGNvbXBvdW5kX29yZGVyKHBhZ2UpKTtcbiB9XG4gXG4tI2lmZGVmIENPTkZJR19BU1lOQ19LRVJORUxfUEdUQUJMRV9GUkVFXG4gdm9pZCBwYWdldGFibGVfZnJlZV9rZXJuZWwoc3RydWN0IHB0ZGVzYyAqcHQpO1xuLSNlbHNlXG4tc3RhdGljIGlubGluZSB2b2lkIHBhZ2V0YWJsZV9mcmVlX2tlcm5lbChzdHJ1Y3QgcHRkZXNjICpwdClcbi17XG4tXHRfX3BhZ2V0YWJsZV9mcmVlKHB0KTtcbi19XG4tI2VuZGlmXG4gLyoqXG4gICogcGFnZXRhYmxlX2ZyZWUgLSBGcmVlIHBhZ2V0YWJsZXNcbiAgKiBAcHQ6XHRUaGUgcGFnZSB0YWJsZSBkZXNjcmlwdG9yXG5kaWZmIC0tZ2l0IGEvbW0vcGFnZXdhbGsuYyBiL21tL3BhZ2V3YWxrLmNcbmluZGV4IDNhZTI1ODZmZjQ1YjQ0Li5mYzJmZTAxNGFjOGM2OCAxMDA2NDRcbi0tLSBhL21tL3BhZ2V3YWxrLmNcbisrKyBiL21tL3BhZ2V3YWxrLmNcbkBAIC02MjAsNyArNjIwLDcgQEAgaW50IHdhbGtfcGFnZV9yYW5nZShzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5zaWduZWQgbG9uZyBzdGFydCxcbiAgKiBOb3RlOiBCZSBjYXJlZnVsIHRvIHdhbGsgdGhlIGtlcm5lbCBwYWdlcyB0YWJsZXMsIHRoZSBjYWxsZXIgbWF5IGJlIG5lZWQgdG9cbiAgKiB0YWtlIG90aGVyIGVmZmVjdGl2ZSBhcHByb2FjaGVzIChtbWFwIGxvY2sgbWF5IGJlIGluc3VmZmljaWVudCkgdG8gcHJldmVudFxuICAqIHRoZSBpbnRlcm1lZGlhdGUga2VybmVsIHBhZ2UgdGFibGVzIGJlbG9uZ2luZyB0byB0aGUgc3BlY2lmaWVkIGFkZHJlc3MgcmFuZ2Vcbi0gKiBmcm9tIGJlaW5nIGZyZWVkIChlLmcuIG1lbW9yeSBob3QtcmVtb3ZlKS5cbisgKiBmcm9tIGJlaW5nIGZyZWVkIChlLmcuIG1lbW9yeSBob3QtcmVtb3ZlLCB2bWFwIGh1Z2UgcGFnZSBwcm9tb3Rpb24pLlxuICAqL1xuIGludCB3YWxrX2tlcm5lbF9wYWdlX3RhYmxlX3JhbmdlKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kLFxuIFx0XHRjb25zdCBzdHJ1Y3QgbW1fd2Fsa19vcHMgKm9wcywgcGdkX3QgKnBnZCwgdm9pZCAqcHJpdmF0ZSlcbkBAIC02NDMsNyArNjQzLDcgQEAgaW50IHdhbGtfa2VybmVsX3BhZ2VfdGFibGVfcmFuZ2UodW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQsXG4gICogVXNlIHRoaXMgZnVuY3Rpb24gdG8gd2FsayB0aGUga2VybmVsIHBhZ2UgdGFibGVzIGxvY2tsZXNzbHkuIEl0IHNob3VsZCBiZVxuICAqIGd1YXJhbnRlZWQgdGhhdCB0aGUgY2FsbGVyIGhhcyBleGNsdXNpdmUgYWNjZXNzIG92ZXIgdGhlIHJhbmdlIHRoZXkgYXJlXG4gICogb3BlcmF0aW5nIG9uIC0gdGhhdCB0aGVyZSBzaG91bGQgYmUgbm8gY29uY3VycmVudCBhY2Nlc3MsIGZvciBleGFtcGxlLFxuLSAqIGNoYW5naW5nIHBlcm1pc3Npb25zIGZvciB2bWFsbG9jIG9iamVjdHMuXG4rICogY2hhbmdpbmcgcGVybWlzc2lvbnMgZm9yIHZtYWxsb2Mgb2JqZWN0cywgb3Igdm1hcCBodWdlIHBhZ2UgcHJvbW90aW9uLlxuICAqL1xuIGludCB3YWxrX2tlcm5lbF9wYWdlX3RhYmxlX3JhbmdlX2xvY2tsZXNzKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kLFxuIFx0XHRjb25zdCBzdHJ1Y3QgbW1fd2Fsa19vcHMgKm9wcywgcGdkX3QgKnBnZCwgdm9pZCAqcHJpdmF0ZSlcbkBAIC02OTIsOSArNjkyLDM1IEBAIGludCB3YWxrX3BhZ2VfcmFuZ2VfZGVidWcoc3RydWN0IG1tX3N0cnVjdCAqbW0sIHVuc2lnbmVkIGxvbmcgc3RhcnQsXG4gXHR9O1xuIFxuIFx0LyogRm9yIGNvbnZlbmllbmNlLCB3ZSBhbGxvdyB0cmF2ZXJzYWwgb2Yga2VybmVsIG1hcHBpbmdzLiAqL1xuLVx0aWYgKG1tID09IFx1MDAyNmluaXRfbW0pXG4tXHRcdHJldHVybiB3YWxrX2tlcm5lbF9wYWdlX3RhYmxlX3JhbmdlKHN0YXJ0LCBlbmQsIG9wcyxcbi1cdFx0XHRcdFx0XHQgICAgcGdkLCBwcml2YXRlKTtcbitcdGlmIChtbSA9PSBcdTAwMjZpbml0X21tKSB7XG4rXHRcdHVuc2lnbmVkIGxvbmcgYWRkciA9IHN0YXJ0O1xuK1xuK1x0XHQvKlxuK1x0XHQgKiBXYWxrIGluIGJvdW5kZWQgY2h1bmtzIHNvIHRoZSBSQ1UgcmVhZCBsb2NrIGlzIG5ldmVyIGhlbGRcbitcdFx0ICogYWNyb3NzIHRoZSB3aG9sZSBrZXJuZWwgYWRkcmVzcyBzcGFjZS4gIEEga2VybmVsIHBhZ2UgdGFibGVcbitcdFx0ICogZnJlZWQgdmlhIHBhZ2V0YWJsZV9mcmVlX2tlcm5lbCgpIHN0YXlzIHZhbGlkIHVudGlsIHRoZSB3YWxrXG4rXHRcdCAqIHRoYXQgbWF5IGhhdmUgb2JzZXJ2ZWQgaXQgZHJvcHMgdGhlIGxvY2s7IHJlbGVhc2luZyB0aGUgbG9ja1xuK1x0XHQgKiBiZXR3ZWVuIGNodW5rcyBpcyBzYWZlIGFzIG5vIHBhZ2UgdGFibGUgcG9pbnRlciBpcyBoZWxkXG4rXHRcdCAqIGFjcm9zcyB0aGUgZ2FwLiBUaGUgbW1hcCBsb2NrIGlzIG5vdCBoZWxkLCBzbyB1c2UgdGhlXG4rXHRcdCAqIGxvY2tsZXNzIHdhbGtlcjsgUkNVLCBub3QgdGhlIGxvY2ssIGtlZXBzIHRoZSB0YWJsZSBhbGl2ZS5cbitcdFx0ICovXG4rXHRcdHdoaWxlIChhZGRyIFx1MDAzYyBlbmQpIHtcbitcdFx0XHR1bnNpZ25lZCBsb25nIG5leHQgPSBwZ2RfYWRkcl9lbmQoYWRkciwgZW5kKTtcbitcdFx0XHRpbnQgZXJyO1xuK1xuK1x0XHRcdHJjdV9yZWFkX2xvY2soKTtcbitcdFx0XHRlcnIgPSB3YWxrX2tlcm5lbF9wYWdlX3RhYmxlX3JhbmdlX2xvY2tsZXNzKGFkZHIsIG5leHQsIG9wcyxcbitcdFx0XHRcdFx0XHRcdFx0ICAgIHBnZCwgcHJpdmF0ZSk7XG4rXHRcdFx0cmN1X3JlYWRfdW5sb2NrKCk7XG4rXHRcdFx0aWYgKGVycilcbitcdFx0XHRcdHJldHVybiBlcnI7XG4rXG4rXHRcdFx0YWRkciA9IG5leHQ7XG4rXHRcdFx0Y29uZF9yZXNjaGVkKCk7XG4rXHRcdH1cbitcdFx0cmV0dXJuIDA7XG4rXHR9XG4rXG4gXHRpZiAoc3RhcnQgXHUwMDNlPSBlbmQgfHwgIXdhbGsubW0pXG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFx0aWYgKCFjaGVja19vcHNfc2FmZShvcHMpKVxuZGlmZiAtLWdpdCBhL21tL3BndGFibGUtZ2VuZXJpYy5jIGIvbW0vcGd0YWJsZS1nZW5lcmljLmNcbmluZGV4IGI5MWIxYTk4MDI5YzdmLi43YTMyZTQ4MjE5NTdjYyAxMDA2NDRcbi0tLSBhL21tL3BndGFibGUtZ2VuZXJpYy5jXG4rKysgYi9tbS9wZ3RhYmxlLWdlbmVyaWMuY1xuQEAgLTQxMCw2ICs0MTAsMTMgQEAgcHRlX3QgKnB0ZV9vZmZzZXRfbWFwX2xvY2soc3RydWN0IG1tX3N0cnVjdCAqbW0sIHBtZF90ICpwbWQsXG4gXHRnb3RvIGFnYWluO1xuIH1cbiBcbitzdGF0aWMgdm9pZCBrZXJuZWxfcGd0YWJsZV9mcmVlX3JjdShzdHJ1Y3QgcmN1X2hlYWQgKmhlYWQpXG4re1xuK1x0c3RydWN0IHB0ZGVzYyAqcHQgPSBjb250YWluZXJfb2YoaGVhZCwgc3RydWN0IHB0ZGVzYywgcHRfcmN1X2hlYWQpO1xuK1xuK1x0X19wYWdldGFibGVfZnJlZShwdCk7XG4rfVxuK1xuICNpZmRlZiBDT05GSUdfQVNZTkNfS0VSTkVMX1BHVEFCTEVfRlJFRVxuIHN0YXRpYyB2b2lkIGtlcm5lbF9wZ3RhYmxlX3dvcmtfZnVuYyhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspO1xuIFxuQEAgLTQzNCw4ICs0NDEsMTUgQEAgc3RhdGljIHZvaWQga2VybmVsX3BndGFibGVfd29ya19mdW5jKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbiBcdHNwaW5fdW5sb2NrKFx1MDAyNmtlcm5lbF9wZ3RhYmxlX3dvcmsubG9jayk7XG4gXG4gXHRpb21tdV9zdmFfaW52YWxpZGF0ZV9rdmFfcmFuZ2UoUEFHRV9PRkZTRVQsIFRMQl9GTFVTSF9BTEwpO1xuK1xuK1x0LypcbitcdCAqIERlYnVnIHdhbGtlcnMgKHB0ZHVtcCkgbWF5IHdhbGsgcmFuZ2VzIHRoZXkgZG8gbm90IG93biBhbmQgcmFjZSB0aGlzXG4rXHQgKiBmcmVlLCBzbyB0aGV5IHdhbGsgdW5kZXIgcmN1X3JlYWRfbG9jaygpLiBGcmVlIGFmdGVyIGEgZ3JhY2UgcGVyaW9kOlxuK1x0ICogYSB3YWxrZXIgZWl0aGVyIGFscmVhZHkgc2F3IHRoZSBjbGVhcmVkIFBNRCwgb3Iga2VlcHMgdGhlIHBhZ2UgYWxpdmVcbitcdCAqIHVudGlsIGl0IGRyb3BzIHRoZSBSQ1UgbG9jay5cbitcdCAqL1xuIFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHB0LCBuZXh0LCBcdTAwMjZwYWdlX2xpc3QsIHB0X2xpc3QpXG4tXHRcdF9fcGFnZXRhYmxlX2ZyZWUocHQpO1xuK1x0XHRjYWxsX3JjdShcdTAwMjZwdC1cdTAwM2VwdF9yY3VfaGVhZCwga2VybmVsX3BndGFibGVfZnJlZV9yY3UpO1xuIH1cbiBcbiB2b2lkIHBhZ2V0YWJsZV9mcmVlX2tlcm5lbChzdHJ1Y3QgcHRkZXNjICpwdClcbkBAIC00NDYsNCArNDYwLDEwIEBAIHZvaWQgcGFnZXRhYmxlX2ZyZWVfa2VybmVsKHN0cnVjdCBwdGRlc2MgKnB0KVxuIFxuIFx0c2NoZWR1bGVfd29yayhcdTAwMjZrZXJuZWxfcGd0YWJsZV93b3JrLndvcmspO1xuIH1cbisjZWxzZVxuK3ZvaWQgcGFnZXRhYmxlX2ZyZWVfa2VybmVsKHN0cnVjdCBwdGRlc2MgKnB0KVxuK3tcbitcdC8qIERlZmVyIHRoZSBmcmVlIGJ5IGEgZ3JhY2UgcGVyaW9kOyBzZWUga2VybmVsX3BndGFibGVfd29ya19mdW5jKCkuICovXG4rXHRjYWxsX3JjdShcdTAwMjZwdC1cdTAwM2VwdF9yY3VfaGVhZCwga2VybmVsX3BndGFibGVfZnJlZV9yY3UpO1xuK31cbiAjZW5kaWZcbmRpZmYgLS1naXQgYS9tbS9wdGR1bXAuYyBiL21tL3B0ZHVtcC5jXG5pbmRleCA5NzMwMjAwMDAwOTZjZi4uNTM3YmU5OTk1ZTFhM2MgMTAwNjQ0XG4tLS0gYS9tbS9wdGR1bXAuY1xuKysrIGIvbW0vcHRkdW1wLmNcbkBAIC0xNzcsMTMgKzE3NywyMCBAQCB2b2lkIHB0ZHVtcF93YWxrX3BnZChzdHJ1Y3QgcHRkdW1wX3N0YXRlICpzdCwgc3RydWN0IG1tX3N0cnVjdCAqbW0sIHBnZF90ICpwZ2QpXG4gXHRjb25zdCBzdHJ1Y3QgcHRkdW1wX3JhbmdlICpyYW5nZSA9IHN0LVx1MDAzZXJhbmdlO1xuIFxuIFx0Z2V0X29ubGluZV9tZW1zKCk7XG4tXHRtbWFwX3dyaXRlX2xvY2sobW0pO1xuK1x0LypcbitcdCAqIGluaXRfbW0gaXMgd2Fsa2VkIGxvY2tsZXNzbHkgdW5kZXIgUkNVIGJ5IHdhbGtfcGFnZV9yYW5nZV9kZWJ1ZygpLlxuK1x0ICogZWZpX21tIC8gY3VycmVudC1cdTAwM2VtbSBwYWdlIHRhYmxlcyBhcmUgbm90IFJDVS1mcmVlZCwgc28gaG9sZCB0aGVcbitcdCAqIG1tYXAgd3JpdGUgbG9jayB0byBrZWVwIHRoZW0gc3RhYmxlIGFnYWluc3QgY29uY3VycmVudCB0ZWFyZG93bi5cbitcdCAqL1xuK1x0aWYgKG1tICE9IFx1MDAyNmluaXRfbW0pXG4rXHRcdG1tYXBfd3JpdGVfbG9jayhtbSk7XG4gXHR3aGlsZSAocmFuZ2UtXHUwMDNlc3RhcnQgIT0gcmFuZ2UtXHUwMDNlZW5kKSB7XG4gXHRcdHdhbGtfcGFnZV9yYW5nZV9kZWJ1ZyhtbSwgcmFuZ2UtXHUwMDNlc3RhcnQsIHJhbmdlLVx1MDAzZWVuZCxcbiBcdFx0XHRcdCAgICAgIFx1MDAyNnB0ZHVtcF9vcHMsIHBnZCwgc3QpO1xuIFx0XHRyYW5nZSsrO1xuIFx0fVxuLVx0bW1hcF93cml0ZV91bmxvY2sobW0pO1xuK1x0aWYgKG1tICE9IFx1MDAyNmluaXRfbW0pXG4rXHRcdG1tYXBfd3JpdGVfdW5sb2NrKG1tKTtcbiBcdHB1dF9vbmxpbmVfbWVtcygpO1xuIFxuIFx0LyogRmx1c2ggb3V0IHRoZSBsYXN0IHBhZ2UgKi9cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDA2OjIzOjAzLjE4MTcxMjg4NVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY0MzEzMjgyMzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgRnV6emluZyBTdHJhdGVneTogS2VybmVsIFBhZ2UgVGFibGUgTW9kaWZpY2F0aW9ucyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2guIEl0J3MgYSBzaWduaWZpY2FudCBvbmUsIHRvdWNoaW5nIHRoZSB2ZXJ5IGNvcmUgb2YgaG93IHRoZSBrZXJuZWwgbWFuYWdlcyBtZW1vcnksIHNwZWNpZmljYWxseSBwYWdlIHRhYmxlIHdhbGtpbmcgYW5kIGZyZWVpbmcuIFdlJ3JlIHRhbGtpbmcgYWJvdXQgY2hhbmdlcyB0byBgd2Fsa19wYWdlX3JhbmdlX2RlYnVnYCBpbiBgbW0vcGFnZXdhbGsuY2AsIG1ha2luZyBpdCBsb2NrbGVzcyB1bmRlciBSQ1Ugd2hpbGUgd2Fsa2luZyBrZXJuZWwgcGFnZSB0YWJsZXMuIFRoZW4gdGhlcmUncyBgcGFnZXRhYmxlX2ZyZWVfa2VybmVsYCBpbiBgbW0vcGd0YWJsZS1nZW5lcmljLmNgLCBub3cgdXNpbmcgYGNhbGxfcmN1YCBmb3Iga2VybmVsIHBhZ2UgdGFibGUgZnJlZWluZy4gQW5kIGluIHRoZSBQb3dlclBDIGFyY2hpdGVjdHVyZSBzcGVjaWZpY2FsbHkgKGFyY2gvcG93ZXJwYy9tbS9wZ3RhYmxlLWZyYWcuYyksIHRoZXJlJ3MgYSBkZWxheSBpbnRyb2R1Y2VkLCBkZWZlcnJpbmcgdGhlIGZyZWVpbmcgb2YgdGhvc2Uga2VybmVsIHBhZ2UgdGFibGVzIGJ5IGEgZ3JhY2UgcGVyaW9kLiBGaW5hbGx5LCB0byBtYWtlIHRoaXMgZXZlbiBtb3JlIGludGVyZXN0aW5nLCBgbW0vcHRkdW1wLmNgIGF2b2lkcyBncmFiYmluZyB0aGUgYG1tYXBfd3JpdGVfbG9ja2AgaWYgYG1tYCBwb2ludHMgdG8gYFx1MDAyNmluaXRfbW1gLlxuXG5HaXZlbiB0aGUgcG90ZW50aWFsIGltcGFjdCwgZnV6emluZyBpcyBhYnNvbHV0ZWx5IGVzc2VudGlhbCBoZXJlLiBJdCdzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIHNvIGl0J3MgYSBwcmltZSB0YXJnZXQuIFRpbWUgdG8gaWRlbnRpZnkgdGhlIGtleSBmdW5jdGlvbnMgdG8gZm9jdXMgb24uXG5cblNvLCBsZXQncyBzZWUsIHRoZSBwYXRjaCBtb2RpZmllZDpcblxuKiAgIGB3YWxrX3BhZ2VfcmFuZ2VfZGVidWdgXG4qICAgYGtlcm5lbF9wZ3RhYmxlX3dvcmtfZnVuY2BcbiogICBgcGFnZXRhYmxlX2ZyZWVfa2VybmVsYFxuKiAgIGBwdGR1bXBfd2Fsa19wZ2RgXG4qICAgYHB0ZV9mcmFnbWVudF9mcmVlYCAoUG93ZXJQQyBzcGVjaWZpYylcblxuSSdsbCBzdGFydCB3aXRoIGB3YWxrX3BhZ2VfcmFuZ2VfZGVidWdgLiBJdCdzIHVzZWQgYnkgYHB0ZHVtcF93YWxrX3BnZGAuIGBwdGR1bXBfd2Fsa19wZ2RgIGlzIHVzZWQgYnkgdGhlIGBwdGR1bXBgIGRyaXZlcnMsIHdoaWNoLCBpZiBtZW1vcnkgc2VydmVzLCBhcmUgcmVsYXRlZCB0byBgZGVidWdmc2AgZmlsZXMgZm9yIHBhZ2UgdGFibGVzLiBIbW0uIExvb2tzIGxpa2UgSSBzaG91bGQgZmluZCBhbGwgdGhlIGNhbGxlcnMgdG8gYHB0ZHVtcF93YWxrX3BnZGAgdG8gc3RhcnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQwMjIsIk91dHB1dFRva2VucyI6MjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMzAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QwNjoyMzowOS42MTMwNDM5MzJaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjA3MDc3NTg3MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwdGR1bXBfd2Fsa19wZ2RcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9hcm0vaW5jbHVkZS9hc20vcHRkdW1wLmg9MTY9c3RydWN0IHB0ZHVtcF9pbmZvIHtcXG4tLVxcbmFyY2gvYXJtL2luY2x1ZGUvYXNtL3B0ZHVtcC5oLTIxLVxcbmFyY2gvYXJtL2luY2x1ZGUvYXNtL3B0ZHVtcC5oOjIyOnZvaWQgcHRkdW1wX3dhbGtfcGdkKHN0cnVjdCBzZXFfZmlsZSAqcywgc3RydWN0IHB0ZHVtcF9pbmZvICppbmZvKTtcXG5hcmNoL2FybS9pbmNsdWRlL2FzbS9wdGR1bXAuaC0yMy0jaWZkZWYgQ09ORklHX0FSTV9QVERVTVBfREVCVUdGU1xcbi0tXFxuYXJjaC9hcm0vbW0vZHVtcC5jPTM5OD1zdGF0aWMgdm9pZCB3YWxrX3BnZChzdHJ1Y3QgcGdfc3RhdGUgKnN0LCBzdHJ1Y3QgbW1fc3RydWN0ICptbSxcXG4tLVxcbmFyY2gvYXJtL21tL2R1bXAuYy00MTQtXFxuYXJjaC9hcm0vbW0vZHVtcC5jOjQxNTp2b2lkIHB0ZHVtcF93YWxrX3BnZChzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHN0cnVjdCBwdGR1bXBfaW5mbyAqaW5mbylcXG5hcmNoL2FybS9tbS9kdW1wLmMtNDE2LXtcXG4tLVxcbmFyY2gvYXJtL21tL3B0ZHVtcF9kZWJ1Z2ZzLmM9Nz1zdGF0aWMgaW50IHB0ZHVtcF9zaG93KHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdilcXG4tLVxcbmFyY2gvYXJtL21tL3B0ZHVtcF9kZWJ1Z2ZzLmMtMTAtXFxuYXJjaC9hcm0vbW0vcHRkdW1wX2RlYnVnZnMuYzoxMTpcXHRwdGR1bXBfd2Fsa19wZ2QobSwgaW5mbyk7XFxuYXJjaC9hcm0vbW0vcHRkdW1wX2RlYnVnZnMuYy0xMi1cXHRyZXR1cm4gMDtcXG4tLVxcbmFyY2gvYXJtNjQvbW0vcHRkdW1wLmM9Mjc5PXZvaWQgbm90ZV9wYWdlX2ZsdXNoKHN0cnVjdCBwdGR1bXBfc3RhdGUgKnB0X3N0KVxcbi0tXFxuYXJjaC9hcm02NC9tbS9wdGR1bXAuYy0yODUtXFxuYXJjaC9hcm02NC9tbS9wdGR1bXAuYzoyODY6c3RhdGljIHZvaWQgYXJtNjRfcHRkdW1wX3dhbGtfcGdkKHN0cnVjdCBwdGR1bXBfc3RhdGUgKnN0LCBzdHJ1Y3QgbW1fc3RydWN0ICptbSlcXG5hcmNoL2FybTY0L21tL3B0ZHVtcC5jLTI4Ny17XFxuYXJjaC9hcm02NC9tbS9wdGR1bXAuYy0yODgtXFx0c3RhdGljX2JyYW5jaF9pbmMoXFx1MDAyNmFybTY0X3B0ZHVtcF9sb2NrX2tleSk7XFxuYXJjaC9hcm02NC9tbS9wdGR1bXAuYzoyODk6XFx0cHRkdW1wX3dhbGtfcGdkKHN0LCBtbSwgTlVMTCk7XFxuYXJjaC9hcm02NC9tbS9wdGR1bXAuYy0yOTAtXFx0c3RhdGljX2JyYW5jaF9kZWMoXFx1MDAyNmFybTY0X3B0ZHVtcF9sb2NrX2tleSk7XFxuLS1cXG5hcmNoL2FybTY0L21tL3B0ZHVtcC5jPTI5Mz12b2lkIHB0ZHVtcF93YWxrKHN0cnVjdCBzZXFfZmlsZSAqcywgc3RydWN0IHB0ZHVtcF9pbmZvICppbmZvKVxcbi0tXFxuYXJjaC9hcm02NC9tbS9wdGR1bXAuYy0zMjAtXFxuYXJjaC9hcm02NC9tbS9wdGR1bXAuYzozMjE6XFx0YXJtNjRfcHRkdW1wX3dhbGtfcGdkKFxcdTAwMjZzdC5wdGR1bXAsIGluZm8tXFx1MDAzZW1tKTtcXG5hcmNoL2FybTY0L21tL3B0ZHVtcC5jLTMyMi19XFxuLS1cXG5hcmNoL2FybTY0L21tL3B0ZHVtcC5jPTMzOD1ib29sIHB0ZHVtcF9jaGVja193eCh2b2lkKVxcbi0tXFxuYXJjaC9hcm02NC9tbS9wdGR1bXAuYy0zNjItXFxuYXJjaC9hcm02NC9tbS9wdGR1bXAuYzozNjM6XFx0YXJtNjRfcHRkdW1wX3dhbGtfcGdkKFxcdTAwMjZzdC5wdGR1bXAsIFxcdTAwMjZpbml0X21tKTtcXG5hcmNoL2FybTY0L21tL3B0ZHVtcC5jLTM2NC1cXG4tLVxcbmFyY2gvcG93ZXJwYy9tbS9wdGR1bXAvcHRkdW1wLmM9MzM0PXN0YXRpYyBpbnQgcHRkdW1wX3Nob3coc3RydWN0IHNlcV9maWxlICptLCB2b2lkICp2KVxcbi0tXFxuYXJjaC9wb3dlcnBjL21tL3B0ZHVtcC9wdGR1bXAuYy0zNTEtXFx0LyogVHJhdmVyc2Uga2VybmVsIHBhZ2UgdGFibGVzICovXFxuYXJjaC9wb3dlcnBjL21tL3B0ZHVtcC9wdGR1bXAuYzozNTI6XFx0cHRkdW1wX3dhbGtfcGdkKFxcdTAwMjZzdC5wdGR1bXAsIFxcdTAwMjZpbml0X21tLCBOVUxMKTtcXG5hcmNoL3Bvd2VycGMvbW0vcHRkdW1wL3B0ZHVtcC5jLTM1My1cXHRyZXR1cm4gMDtcXG4tLVxcbmFyY2gvcG93ZXJwYy9tbS9wdGR1bXAvcHRkdW1wLmM9MzY4PWJvb2wgcHRkdW1wX2NoZWNrX3d4KHZvaWQpXFxuLS1cXG5hcmNoL3Bvd2VycGMvbW0vcHRkdW1wL3B0ZHVtcC5jLTM5MS1cXG5hcmNoL3Bvd2VycGMvbW0vcHRkdW1wL3B0ZHVtcC5jOjM5MjpcXHRwdGR1bXBfd2Fsa19wZ2QoXFx1MDAyNnN0LnB0ZHVtcCwgXFx1MDAyNmluaXRfbW0sIE5VTEwpO1xcbmFyY2gvcG93ZXJwYy9tbS9wdGR1bXAvcHRkdW1wLmMtMzkzLVxcbi0tXFxuYXJjaC9yaXNjdi9tbS9wdGR1bXAuYz0zNTM9c3RhdGljIHZvaWQgcHRkdW1wX3dhbGsoc3RydWN0IHNlcV9maWxlICpzLCBzdHJ1Y3QgcHRkX21tX2luZm8gKnBpbmZvKVxcbi0tXFxuYXJjaC9yaXNjdi9tbS9wdGR1bXAuYy0zNzItXFxuYXJjaC9yaXNjdi9tbS9wdGR1bXAuYzozNzM6XFx0cHRkdW1wX3dhbGtfcGdkKFxcdTAwMjZzdC5wdGR1bXAsIHBpbmZvLVxcdTAwM2VtbSwgTlVMTCk7XFxuYXJjaC9yaXNjdi9tbS9wdGR1bXAuYy0zNzQtfVxcbi0tXFxuYXJjaC9yaXNjdi9tbS9wdGR1bXAuYz0zNzY9Ym9vbCBwdGR1bXBfY2hlY2tfd3godm9pZClcXG4tLVxcbmFyY2gvcmlzY3YvbW0vcHRkdW1wLmMtMzk5LVxcbmFyY2gvcmlzY3YvbW0vcHRkdW1wLmM6NDAwOlxcdHB0ZHVtcF93YWxrX3BnZChcXHUwMDI2c3QucHRkdW1wLCBcXHUwMDI2aW5pdF9tbSwgTlVMTCk7XFxuYXJjaC9yaXNjdi9tbS9wdGR1bXAuYy00MDEtXFxuLS1cXG5hcmNoL3MzOTAvbW0vZHVtcF9wYWdldGFibGVzLmM9MTgyPWJvb2wgcHRkdW1wX2NoZWNrX3d4KHZvaWQpXFxuLS1cXG5hcmNoL3MzOTAvbW0vZHVtcF9wYWdldGFibGVzLmMtMjEwLVxcdFxcdHJldHVybiB0cnVlO1xcbmFyY2gvczM5MC9tbS9kdW1wX3BhZ2V0YWJsZXMuYzoyMTE6XFx0cHRkdW1wX3dhbGtfcGdkKFxcdTAwMjZzdC5wdGR1bXAsIFxcdTAwMjZpbml0X21tLCBOVUxMKTtcXG5hcmNoL3MzOTAvbW0vZHVtcF9wYWdldGFibGVzLmMtMjEyLVxcdGlmIChzdC53eF9wYWdlcykge1xcbi0tXFxuYXJjaC9zMzkwL21tL2R1bXBfcGFnZXRhYmxlcy5jPTIyNj1zdGF0aWMgaW50IHB0ZHVtcF9zaG93KHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdilcXG4tLVxcbmFyY2gvczM5MC9tbS9kdW1wX3BhZ2V0YWJsZXMuYy0yNTAtXFx0bXV0ZXhfbG9jayhcXHUwMDI2Y3BhX211dGV4KTtcXG5hcmNoL3MzOTAvbW0vZHVtcF9wYWdldGFibGVzLmM6MjUxOlxcdHB0ZHVtcF93YWxrX3BnZChcXHUwMDI2c3QucHRkdW1wLCBcXHUwMDI2aW5pdF9tbSwgTlVMTCk7XFxuYXJjaC9zMzkwL21tL2R1bXBfcGFnZXRhYmxlcy5jLTI1Mi1cXHRtdXRleF91bmxvY2soXFx1MDAyNmNwYV9tdXRleCk7XFxuLS1cXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wZ3RhYmxlLmg9MzA9c3RydWN0IHNlcV9maWxlO1xcbmFyY2gveDg2L2luY2x1ZGUvYXNtL3BndGFibGUuaDozMTp2b2lkIHB0ZHVtcF93YWxrX3BnZF9sZXZlbChzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHN0cnVjdCBtbV9zdHJ1Y3QgKm1tKTtcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wZ3RhYmxlLmg6MzI6dm9pZCBwdGR1bXBfd2Fsa19wZ2RfbGV2ZWxfZGVidWdmcyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLFxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL3BndGFibGUuaC0zMy1cXHRcXHRcXHRcXHQgICBib29sIHVzZXIpO1xcbmFyY2gveDg2L2luY2x1ZGUvYXNtL3BndGFibGUuaDozNDpib29sIHB0ZHVtcF93YWxrX3BnZF9sZXZlbF9jaGVja3d4KHZvaWQpO1xcbmFyY2gveDg2L2luY2x1ZGUvYXNtL3BndGFibGUuaDozNTojZGVmaW5lIHB0ZHVtcF9jaGVja193eCBwdGR1bXBfd2Fsa19wZ2RfbGV2ZWxfY2hlY2t3eFxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL3BndGFibGUuaC0zNi12b2lkIHB0ZHVtcF93YWxrX3VzZXJfcGdkX2xldmVsX2NoZWNrd3godm9pZCk7XFxuLS1cXG5hcmNoL3g4Ni9tbS9kZWJ1Z19wYWdldGFibGVzLmM9OD1zdGF0aWMgaW50IHB0ZHVtcF9zaG93KHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdilcXG5hcmNoL3g4Ni9tbS9kZWJ1Z19wYWdldGFibGVzLmMtOS17XFxuYXJjaC94ODYvbW0vZGVidWdfcGFnZXRhYmxlcy5jOjEwOlxcdHB0ZHVtcF93YWxrX3BnZF9sZXZlbF9kZWJ1Z2ZzKG0sIFxcdTAwMjZpbml0X21tLCBmYWxzZSk7XFxuYXJjaC94ODYvbW0vZGVidWdfcGFnZXRhYmxlcy5jLTExLVxcdHJldHVybiAwO1xcbi0tXFxuYXJjaC94ODYvbW0vZGVidWdfcGFnZXRhYmxlcy5jPTE2PXN0YXRpYyBpbnQgcHRkdW1wX2N1cmtubF9zaG93KHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdilcXG4tLVxcbmFyY2gveDg2L21tL2RlYnVnX3BhZ2V0YWJsZXMuYy0xOC1cXHRpZiAoY3VycmVudC1cXHUwMDNlbW0tXFx1MDAzZXBnZClcXG5hcmNoL3g4Ni9tbS9kZWJ1Z19wYWdldGFibGVzLmM6MTk6XFx0XFx0cHRkdW1wX3dhbGtfcGdkX2xldmVsX2RlYnVnZnMobSwgY3VycmVudC1cXHUwMDNlbW0sIGZhbHNlKTtcXG5hcmNoL3g4Ni9tbS9kZWJ1Z19wYWdldGFibGVzLmMtMjAtXFx0cmV0dXJuIDA7XFxuLS1cXG5hcmNoL3g4Ni9tbS9kZWJ1Z19wYWdldGFibGVzLmM9MjY9c3RhdGljIGludCBwdGR1bXBfY3VydXNyX3Nob3coc3RydWN0IHNlcV9maWxlICptLCB2b2lkICp2KVxcbi0tXFxuYXJjaC94ODYvbW0vZGVidWdfcGFnZXRhYmxlcy5jLTI4LVxcdGlmIChjdXJyZW50LVxcdTAwM2VtbS1cXHUwMDNlcGdkKVxcbmFyY2gveDg2L21tL2RlYnVnX3BhZ2V0YWJsZXMuYzoyOTpcXHRcXHRwdGR1bXBfd2Fsa19wZ2RfbGV2ZWxfZGVidWdmcyhtLCBjdXJyZW50LVxcdTAwM2VtbSwgdHJ1ZSk7XFxuYXJjaC94ODYvbW0vZGVidWdfcGFnZXRhYmxlcy5jLTMwLVxcdHJldHVybiAwO1xcbi0tXFxuYXJjaC94ODYvbW0vZGVidWdfcGFnZXRhYmxlcy5jPTM3PXN0YXRpYyBpbnQgcHRkdW1wX2VmaV9zaG93KHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdilcXG4tLVxcbmFyY2gveDg2L21tL2RlYnVnX3BhZ2V0YWJsZXMuYy0zOS1cXHRpZiAoZWZpX21tLnBnZClcXG5hcmNoL3g4Ni9tbS9kZWJ1Z19wYWdldGFibGVzLmM6NDA6XFx0XFx0cHRkdW1wX3dhbGtfcGdkX2xldmVsX2RlYnVnZnMobSwgXFx1MDAyNmVmaV9tbSwgZmFsc2UpO1xcbmFyY2gveDg2L21tL2RlYnVnX3BhZ2V0YWJsZXMuYy00MS1cXHRyZXR1cm4gMDtcXG4tLVxcbmFyY2gveDg2L21tL2R1bXBfcGFnZXRhYmxlcy5jPTQxNj1zdGF0aWMgdm9pZCBub3RlX3BhZ2VfZmx1c2goc3RydWN0IHB0ZHVtcF9zdGF0ZSAqcHRfc3QpXFxuLS1cXG5hcmNoL3g4Ni9tbS9kdW1wX3BhZ2V0YWJsZXMuYy00MjItXFxuYXJjaC94ODYvbW0vZHVtcF9wYWdldGFibGVzLmM6NDIzOmJvb2wgcHRkdW1wX3dhbGtfcGdkX2xldmVsX2NvcmUoc3RydWN0IHNlcV9maWxlICptLFxcbmFyY2gveDg2L21tL2R1bXBfcGFnZXRhYmxlcy5jLTQyNC1cXHRcXHRcXHRcXHRzdHJ1Y3QgbW1fc3RydWN0ICptbSwgcGdkX3QgKnBnZCxcXG4tLVxcbmFyY2gveDg2L21tL2R1bXBfcGFnZXRhYmxlcy5jLTQ1Ny1cXG5hcmNoL3g4Ni9tbS9kdW1wX3BhZ2V0YWJsZXMuYzo0NTg6XFx0cHRkdW1wX3dhbGtfcGdkKFxcdTAwMjZzdC5wdGR1bXAsIG1tLCBwZ2QpO1xcbmFyY2gveDg2L21tL2R1bXBfcGFnZXRhYmxlcy5jLTQ1OS1cXG4tLVxcbmFyY2gveDg2L21tL2R1bXBfcGFnZXRhYmxlcy5jLTQ3My1cXG5hcmNoL3g4Ni9tbS9kdW1wX3BhZ2V0YWJsZXMuYzo0NzQ6dm9pZCBwdGR1bXBfd2Fsa19wZ2RfbGV2ZWwoc3RydWN0IHNlcV9maWxlICptLCBzdHJ1Y3QgbW1fc3RydWN0ICptbSlcXG5hcmNoL3g4Ni9tbS9kdW1wX3BhZ2V0YWJsZXMuYy00NzUte1xcbmFyY2gveDg2L21tL2R1bXBfcGFnZXRhYmxlcy5jOjQ3NjpcXHRwdGR1bXBfd2Fsa19wZ2RfbGV2ZWxfY29yZShtLCBtbSwgbW0tXFx1MDAzZXBnZCwgZmFsc2UsIHRydWUpO1xcbmFyY2gveDg2L21tL2R1bXBfcGFnZXRhYmxlcy5jLTQ3Ny19XFxuYXJjaC94ODYvbW0vZHVtcF9wYWdldGFibGVzLmMtNDc4LVxcbmFyY2gveDg2L21tL2R1bXBfcGFnZXRhYmxlcy5jOjQ3OTp2b2lkIHB0ZHVtcF93YWxrX3BnZF9sZXZlbF9kZWJ1Z2ZzKHN0cnVjdCBzZXFfZmlsZSAqbSwgc3RydWN0IG1tX3N0cnVjdCAqbW0sXFxuYXJjaC94ODYvbW0vZHVtcF9wYWdldGFibGVzLmMtNDgwLVxcdFxcdFxcdFxcdCAgIGJvb2wgdXNlcilcXG4tLVxcbmFyY2gveDg2L21tL2R1bXBfcGFnZXRhYmxlcy5jLTQ4Ni0jZW5kaWZcXG5hcmNoL3g4Ni9tbS9kdW1wX3BhZ2V0YWJsZXMuYzo0ODc6XFx0cHRkdW1wX3dhbGtfcGdkX2xldmVsX2NvcmUobSwgbW0sIHBnZCwgZmFsc2UsIGZhbHNlKTtcXG5hcmNoL3g4Ni9tbS9kdW1wX3BhZ2V0YWJsZXMuYy00ODgtfVxcbi0tXFxuYXJjaC94ODYvbW0vZHVtcF9wYWdldGFibGVzLmM9NDkwPXZvaWQgcHRkdW1wX3dhbGtfdXNlcl9wZ2RfbGV2ZWxfY2hlY2t3eCh2b2lkKVxcbi0tXFxuYXJjaC94ODYvbW0vZHVtcF9wYWdldGFibGVzLmMtNTAwLVxcdHBnZCA9IGtlcm5lbF90b191c2VyX3BnZHAocGdkKTtcXG5hcmNoL3g4Ni9tbS9kdW1wX3BhZ2V0YWJsZXMuYzo1MDE6XFx0cHRkdW1wX3dhbGtfcGdkX2xldmVsX2NvcmUoTlVMTCwgXFx1MDAyNmluaXRfbW0sIHBnZCwgdHJ1ZSwgZmFsc2UpO1xcbmFyY2gveDg2L21tL2R1bXBfcGFnZXRhYmxlcy5jLTUwMi0jZW5kaWZcXG4tLVxcbmFyY2gveDg2L21tL2R1bXBfcGFnZXRhYmxlcy5jLTUwNC1cXG5hcmNoL3g4Ni9tbS9kdW1wX3BhZ2V0YWJsZXMuYzo1MDU6Ym9vbCBwdGR1bXBfd2Fsa19wZ2RfbGV2ZWxfY2hlY2t3eCh2b2lkKVxcbmFyY2gveDg2L21tL2R1bXBfcGFnZXRhYmxlcy5jLTUwNi17XFxuLS1cXG5hcmNoL3g4Ni9tbS9kdW1wX3BhZ2V0YWJsZXMuYy01MDktXFxuYXJjaC94ODYvbW0vZHVtcF9wYWdldGFibGVzLmM6NTEwOlxcdHJldHVybiBwdGR1bXBfd2Fsa19wZ2RfbGV2ZWxfY29yZShOVUxMLCBcXHUwMDI2aW5pdF9tbSwgSU5JVF9QR0QsIHRydWUsIGZhbHNlKTtcXG5hcmNoL3g4Ni9tbS9kdW1wX3BhZ2V0YWJsZXMuYy01MTEtfVxcbi0tXFxuYXJjaC94ODYvcGxhdGZvcm0vZWZpL2VmaV8zMi5jPTc1PXZvaWQgX19pbml0IGVmaV9kdW1wX3BhZ2V0YWJsZSh2b2lkKVxcbi0tXFxuYXJjaC94ODYvcGxhdGZvcm0vZWZpL2VmaV8zMi5jLTc3LSNpZmRlZiBDT05GSUdfRUZJX1BHVF9EVU1QXFxuYXJjaC94ODYvcGxhdGZvcm0vZWZpL2VmaV8zMi5jOjc4OlxcdHB0ZHVtcF93YWxrX3BnZF9sZXZlbChOVUxMLCBcXHUwMDI2aW5pdF9tbSk7XFxuYXJjaC94ODYvcGxhdGZvcm0vZWZpL2VmaV8zMi5jLTc5LSNlbmRpZlxcbi0tXFxuYXJjaC94ODYvcGxhdGZvcm0vZWZpL2VmaV82NC5jPTQyMz12b2lkIF9faW5pdCBlZmlfZHVtcF9wYWdldGFibGUodm9pZClcXG4tLVxcbmFyY2gveDg2L3BsYXRmb3JtL2VmaS9lZmlfNjQuYy00MjUtI2lmZGVmIENPTkZJR19FRklfUEdUX0RVTVBcXG5hcmNoL3g4Ni9wbGF0Zm9ybS9lZmkvZWZpXzY0LmM6NDI2OlxcdHB0ZHVtcF93YWxrX3BnZF9sZXZlbChOVUxMLCBcXHUwMDI2ZWZpX21tKTtcXG5hcmNoL3g4Ni9wbGF0Zm9ybS9lZmkvZWZpXzY0LmMtNDI3LSNlbmRpZlxcbi0tXFxuaW5jbHVkZS9saW51eC9wdGR1bXAuaD0xMz1zdHJ1Y3QgcHRkdW1wX3N0YXRlIHtcXG4tLVxcbmluY2x1ZGUvbGludXgvcHRkdW1wLmgtMjctXFxuaW5jbHVkZS9saW51eC9wdGR1bXAuaDoyODpib29sIHB0ZHVtcF93YWxrX3BnZF9sZXZlbF9jb3JlKHN0cnVjdCBzZXFfZmlsZSAqbSxcXG5pbmNsdWRlL2xpbnV4L3B0ZHVtcC5oLTI5LVxcdFxcdFxcdFxcdHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCBwZ2RfdCAqcGdkLFxcbmluY2x1ZGUvbGludXgvcHRkdW1wLmgtMzAtXFx0XFx0XFx0XFx0Ym9vbCBjaGVja3d4LCBib29sIGRtZXNnKTtcXG5pbmNsdWRlL2xpbnV4L3B0ZHVtcC5oOjMxOnZvaWQgcHRkdW1wX3dhbGtfcGdkKHN0cnVjdCBwdGR1bXBfc3RhdGUgKnN0LCBzdHJ1Y3QgbW1fc3RydWN0ICptbSwgcGdkX3QgKnBnZCk7XFxuaW5jbHVkZS9saW51eC9wdGR1bXAuaC0zMi1ib29sIHB0ZHVtcF9jaGVja193eCh2b2lkKTtcXG4tLVxcbm1tL3B0ZHVtcC5jPTE2Nj1zdGF0aWMgY29uc3Qgc3RydWN0IG1tX3dhbGtfb3BzIHB0ZHVtcF9vcHMgPSB7XFxuLS1cXG5tbS9wdGR1bXAuYy0xNzQtXFxubW0vcHRkdW1wLmM6MTc1OnZvaWQgcHRkdW1wX3dhbGtfcGdkKHN0cnVjdCBwdGR1bXBfc3RhdGUgKnN0LCBzdHJ1Y3QgbW1fc3RydWN0ICptbSwgcGdkX3QgKnBnZClcXG5tbS9wdGR1bXAuYy0xNzYte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QwNjoyMzoxNS42ODM4MjczNDNaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MjE0NTE2ODQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYW5hbHlzaXMgb2YgdGhlIHByb3ZpZGVkIGluZm9ybWF0aW9uLCBhcyBpZiB0aGVzZSB3ZXJlIG15IGludGVybmFsIHRob3VnaHRzOlxuXG4qKkRpc3NlY3RpbmcgdGhlIFBURHVtcCBXb3JrZmxvdyoqXG5cbkFscmlnaHQsIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gVGhlIGBwdGR1bXBfd2Fsa19wZ2RgIGZ1bmN0aW9uIGlzIHRoZSBjb3JlIHBsYXllciBoZXJlLCBpbml0aWF0ZWQgYnkgYHB0ZHVtcF9zaG93YCwgd2hpY2ggaXRzZWxmIGxpdmVzIGluIGBhcmNoL3g4Ni9tbS9kZWJ1Z19wYWdldGFibGVzLmNgLiBBbmQgdGhhdCBpbml0aWFsIGNhbGwgaGFwcGVucyB2aWEgYHB0ZHVtcF93YWxrX3BnZF9sZXZlbF9kZWJ1Z2ZzYC4gQ2xlYXJseSwgdGhpcyBpcyBhbGwgcGFydCBvZiBhIHBhZ2V0YWJsZSBkZWJ1Z2dpbmcgaW5mcmFzdHJ1Y3R1cmUsIGxpa2VseSBleHBvc2VkIHRocm91Z2ggZGVidWdmcy4gTXkgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gcGlucG9pbnQgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9uIHRoYXQgYWN0aXZhdGVzIHRoZSBlbnRpcmUgYGFyY2gveDg2L21tL2RlYnVnX3BhZ2V0YWJsZXMuY2AgbW9kdWxlLiBLbm93aW5nIHRoZSBlbmFibGluZyBjb25maWcgd2lsbCBnaXZlIG1lIGNyaXRpY2FsIGNvbnRleHQgYWJvdXQgdGhlIHRhcmdldCBzeXN0ZW0ncyBkZWJ1Z2dpbmcgZmVhdHVyZXMuIEl0IHdpbGwgYWxzbyBoZWxwIHdpdGggbXkgb25nb2luZyBhbmFseXNpcy5cblxuXG4iLCJJbnB1dFRva2VucyI6ODYzMiwiT3V0cHV0VG9rZW5zIjoxOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDA2OjIzOjIwLjg5ODM0NzExOFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2Mjc2NDY3ODExLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRlYnVnX3BhZ2V0YWJsZXNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC94ODYvbW0vTWFrZWZpbGU9Mzc9b2JqLSQoQ09ORklHX1BURFVNUClcXHRcXHQrPSBkdW1wX3BhZ2V0YWJsZXMub1xcbmFyY2gveDg2L21tL01ha2VmaWxlOjM4Om9iai0kKENPTkZJR19QVERVTVBfREVCVUdGUylcXHQrPSBkZWJ1Z19wYWdldGFibGVzLm9cXG5hcmNoL3g4Ni9tbS9NYWtlZmlsZS0zOS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMDY6MjM6MjcuMTc0ODIwOTU5WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTcyNTc5MzA5NjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIHJlYXNvbmluZzpcblxuKipDaGVja2luZyB0aGUgUFREVU1QIERlYnVnRlMgQ29uZmlndXJhdGlvbioqXG5cblJpZ2h0LCBzbyBgQ09ORklHX1BURFVNUF9ERUJVR0ZTYCBpcyB0aGUgZmxhZyB0aGF0IGFjdGl2YXRlcyB0aGUgZGVidWdmcyBpbnRlcmZhY2UgZm9yIHBhZ2UgdGFibGUgZHVtcGluZy4gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiBob3cgdGhpcyBpcyBjb25maWd1cmVkLiBMZXQncyBkaWcgaW50byB0aGUga2VybmVsIGNvbmZpZyBmaWxlcy4gTXkgdXN1YWwgc3VzcGVjdCB3b3VsZCBiZSBgbW0vS2NvbmZpZy5kZWJ1Z2AsIG9yIHNvbWV0aGluZyBzaW1pbGFyIHdpdGhpbiB0aGUgbWVtb3J5IG1hbmFnZW1lbnQgc3Vic3lzdGVtJ3MgY29uZmlndXJhdGlvbiBmaWxlcy4gSSdsbCBzdGFydCB0aGVyZSBhbmQgdmVyaWZ5IHdoZXJlIHRoaXMgb3B0aW9uIGxpdmVzIGFuZCB3aGF0IGRlcGVuZGVuY2llcyBvciBjb25zdHJhaW50cyBpdCBtaWdodCBoYXZlLiBUaGlzIHdpbGwgZ2l2ZSBtZSBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIGhvdyBhbmQgd2hlbiB0aGlzIGRlYnVnIGZlYXR1cmUgaXMgYXZhaWxhYmxlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5MDA3LCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMDY6MjM6NDQuNDMyNzU0NTI2WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUzNDc0ODAzOTIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFBURFVNUF9ERUJVR0ZTXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL0tjb25maWcuZGVidWc9MjE5PWNvbmZpZyBQVERVTVBcXG4tLVxcbm1tL0tjb25maWcuZGVidWctMjIxLVxcbm1tL0tjb25maWcuZGVidWc6MjIyOmNvbmZpZyBQVERVTVBfREVCVUdGU1xcbm1tL0tjb25maWcuZGVidWctMjIzLVxcdGJvb2wgXFxcIkV4cG9ydCBrZXJuZWwgcGFnZXRhYmxlIGxheW91dCB0byB1c2Vyc3BhY2UgdmlhIGRlYnVnZnNcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDA2OjIzOjQ5Ljc4MDI0MDI3OFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2MTE3NjkyNTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyB0aGUgRGVwZW5kZW5jeSBDaGFpbiBmb3IgYENPTkZJR19QVERVTVBfREVCVUdGU2AqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBgQ09ORklHX1BURFVNUF9ERUJVR0ZTYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIFwiV2hhdCdzIHRoZSBmdWxsIGRlcGVuZGVuY3kgdHJlZSBvbiB0aGlzP1wiIEl0J3Mgbm90IGVub3VnaCB0byBrbm93IGlmICp0aGlzKiBwYXJ0aWN1bGFyIGZlYXR1cmUgaXMgZW5hYmxlZCBvciBkaXNhYmxlZCBpbiB0aGUgY3VycmVudCBjb25maWd1cmF0aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IG90aGVyIGtlcm5lbCBjb21wb25lbnRzIGl0IHJlbGllcyBvbiwgYW5kLCBwZXJoYXBzIG1vcmUgY3JpdGljYWxseSwgd2hhdCAqaXQqIG1pZ2h0IGJlIHJlbGllZCB1cG9uIGJ5LiBEb2VzIGVuYWJsaW5nIHRoaXMgYWZmZWN0LCBzYXksIHRoZSBwZXJmb3JtYW5jZSBjaGFyYWN0ZXJpc3RpY3Mgb2YgdGhlIGtlcm5lbCBpbiBhIG1ham9yIHdheT8gQXJlIHRoZXJlIGFueSBzdWJ0bGUgaW50ZXJhY3Rpb25zIHdpdGggb3RoZXIgZGVidWcgZmFjaWxpdGllcz8gV2hhdOKAmXMgdGhlIGltcGxpY2F0aW9uIG9uIGNvZGUgc2l6ZT8gSSBuZWVkIHRvIHF1aWNrbHkgZXN0YWJsaXNoIGlmIGVuYWJsaW5nIHRoaXMgaXMgYSBsaWdodHdlaWdodCBvcGVyYXRpb24sIG9yIGlmIGl0IHJpcHBsZXMgb3V0IGludG8gYSBsYXJnZXIgYnVpbGQgY29uZmlndXJhdGlvbi4gQSBkZWVwIGRpdmUgaW50byB0aGUgS2NvbmZpZyBzdHJ1Y3R1cmUgaXMgcmVxdWlyZWQgYW5kIGEgcmV2aWV3IG9mIGFueSBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24uIE5lZWQgdG8gY29uc2lkZXIgcG90ZW50aWFsIHJlZ3Jlc3Npb25zLiBUaW1lIHRvIGRpZyBpbi5cblxuXG4iLCJJbnB1dFRva2VucyI6OTI5NywiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDA2OjIzOjUzLjM5MjAxMzMyOFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjE2MDI3MzIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBQVERVTVBfREVCVUdGU1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9LY29uZmlnLmRlYnVnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL0tjb25maWcuZGVidWc9MjE5PWNvbmZpZyBQVERVTVBcXG4tLVxcbm1tL0tjb25maWcuZGVidWctMjIxLVxcbm1tL0tjb25maWcuZGVidWc6MjIyOmNvbmZpZyBQVERVTVBfREVCVUdGU1xcbm1tL0tjb25maWcuZGVidWctMjIzLVxcdGJvb2wgXFxcIkV4cG9ydCBrZXJuZWwgcGFnZXRhYmxlIGxheW91dCB0byB1c2Vyc3BhY2UgdmlhIGRlYnVnZnNcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDA2OjIzOjUzLjYwODE3NTkyN1oiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTcyMDQyODg3MTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGl2aW5nIGludG8gRGVidWdnaW5nIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gdGhpbmtpbmcsIHdoZXJlJ3MgdGhlIGJlc3QgcGxhY2UgdG8gc3RhcnQgbG9va2luZyBpbnRvIHRoZXNlIGRlYnVnIG9wdGlvbnM/IE15IGluc3RpbmN0IGlzIHRvIGNoZWNrIHRoZSBgbW0vS2NvbmZpZy5kZWJ1Z2AgZmlsZS4gU3BlY2lmaWNhbGx5LCBJJ20gZ29pbmcgdG8ganVtcCB0byBhcm91bmQgbGluZSAyMjIuIEknbSBob3BpbmcgdGhhdCdzIHdoZXJlIHRoZSBjb3JlIG9mIHRoZXNlIGRlYnVnZ2luZy1yZWxhdGVkIGNvbmZpZ3VyYXRpb25zIGlzIGRlZmluZWQuIFRoYXQgc2VjdGlvbiBsaWtlbHkgY29udGFpbnMgdGhlIGRlcGVuZGVuY2llcywgaGVscCB0ZXh0LCBhbmQgZGVmYXVsdCBzZXR0aW5ncyB0aGF0IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRvIG1hbmlwdWxhdGUgdGhlIGJlaGF2aW9yIEknbSBhZnRlci4gSXQncyB0aGUgdXN1YWwgcm91dGUgd2hlbiBjaGFzaW5nIGRvd24gdGhlc2Uga2luZHMgb2YgY29uZmlndXJhdGlvbnMsIHRoZSBLY29uZmlnIGZpbGVzIHVzdWFsbHkga2VlcCBhIGdvb2QgdHJhY2sgcmVjb3JkIG9mIGhvdyB0aGVzZSBhcmUgaW1wbGVtZW50ZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk2MzgsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QwNjoyODo1MC44MTI0Njg2MTVaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA0OTAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm1tL0tjb25maWcuZGVidWdcIixcbiAgXCJGaXJzdExpbmVcIjogMjE1LFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMjE1OlxcdFxcbiAyMTY6XFx0Y29uZmlnIEFSQ0hfSEFTX1BURFVNUFxcbiAyMTc6XFx0XFx0Ym9vbFxcbiAyMTg6XFx0XFxuIDIxOTpcXHRjb25maWcgUFREVU1QXFxuIDIyMDpcXHRcXHRib29sXFxuIDIyMTpcXHRcXG4gMjIyOlxcdGNvbmZpZyBQVERVTVBfREVCVUdGU1xcbiAyMjM6XFx0XFx0Ym9vbCBcXFwiRXhwb3J0IGtlcm5lbCBwYWdldGFibGUgbGF5b3V0IHRvIHVzZXJzcGFjZSB2aWEgZGVidWdmc1xcXCJcXG4gMjI0OlxcdFxcdGRlcGVuZHMgb24gREVCVUdfS0VSTkVMXFxuIDIyNTpcXHRcXHRkZXBlbmRzIG9uIERFQlVHX0ZTXFxuIDIyNjpcXHRcXHRkZXBlbmRzIG9uIEFSQ0hfSEFTX1BURFVNUFxcbiAyMjc6XFx0XFx0c2VsZWN0IFBURFVNUFxcbiAyMjg6XFx0XFx0aGVscFxcbiAyMjk6XFx0XFx0ICBTYXkgWSBoZXJlIGlmIHlvdSB3YW50IHRvIHNob3cgdGhlIGtlcm5lbCBwYWdldGFibGUgbGF5b3V0IGluIGFcXG4gMjMwOlxcdFxcdCAgZGVidWdmcyBmaWxlLiBUaGlzIGluZm9ybWF0aW9uIGlzIG9ubHkgdXNlZnVsIGZvciBrZXJuZWwgZGV2ZWxvcGVyc1xcbiAyMzE6XFx0XFx0ICB3aG8gYXJlIHdvcmtpbmcgaW4gYXJjaGl0ZWN0dXJlIHNwZWNpZmljIGFyZWFzIG9mIHRoZSBrZXJuZWwuXFxuIDIzMjpcXHRcXHQgIEl0IGlzIHByb2JhYmx5IG5vdCBhIGdvb2QgaWRlYSB0byBlbmFibGUgdGhpcyBmZWF0dXJlIGluIGEgcHJvZHVjdGlvblxcbiAyMzM6XFx0XFx0ICBrZXJuZWwuXFxuIDIzNDpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMDY6Mjg6NTAuODEyNTc1NDI1WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE4MTM2MTIzNzI3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjpcblxuKipJbnZlc3RpZ2F0aW5nIFBvdGVudGlhbCBQZXJmb3JtYW5jZSBCb3R0bGVuZWNrcyBpbiBNZW1vcnkgTWFuYWdlbWVudCoqXG5cbkFscmlnaHQsIGxldCdzIHNlZS4uLiB0aGUgZmlyc3QgdGhpbmcgSSB3YW50IHRvIHplcm8gaW4gb24gaXMgYFBURFVNUF9ERUJVR0ZTYC4gVGhhdCdzIHRoZSBjb25maWcgb3B0aW9uIEknbSBwcmV0dHkgc3VyZSByZWxhdGVzIHRvIGRlYnVnZ2luZyBwYWdlIHRhYmxlIGR1bXBzLCB3aGljaCBjb3VsZCBiZSB1c2VmdWwgaW4gdW5kZXJzdGFuZGluZyBwb3RlbnRpYWwgb3ZlcmhlYWQgaW4gbWVtb3J5IG1hbmFnZW1lbnQuXG5cbk5vdywgdGhhdCdzIG5vdCB0aGUgb25seSBhcmVhIG9mIGludGVyZXN0LCBvZiBjb3Vyc2UuIEkgc2hvdWxkIGFsc28gaW52ZXN0aWdhdGUgYENPTkZJR19BU1lOQ19LRVJORUxfUEdUQUJMRV9GUkVFYC4gSSdtIGZhbWlsaWFyIHdpdGggaXRzIHVzZSBpbiBgbW0vcGd0YWJsZS1nZW5lcmljLmNgLiBEZXBlbmRpbmcgb24gd2hhdCBpdCdzIGVuYWJsZWQgZm9yLCB0aGlzIGNvdWxkIGJlIGEgbWFqb3IgZmFjdG9yIGluIGltcHJvdmluZyBwZXJmb3JtYW5jZSBieSByZWR1Y2luZyBsYXRlbmN5IHJlbGF0ZWQgdG8gZnJlZWluZyBwYWdlIHRhYmxlcy4gSSBzaG91bGQgY29ycmVsYXRlIHRoZSBpbXBhY3Qgb2YgZWFjaCBvZiB0aGVzZSBvcHRpb25zIG9uIHRocm91Z2hwdXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwMTE5LCJPdXRwdXRUb2tlbnMiOjI1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QwNjoyOTowOC45NDg3MDI3NzJaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3ODAzMDkyNzUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEFTWU5DX0tFUk5FTF9QR1RBQkxFX0ZSRUVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vS2NvbmZpZz0xMDIwPWNvbmZpZyBIQVZFX0dJR0FOVElDX0ZPTElPU1xcbi0tXFxubW0vS2NvbmZpZy0xMDIzLVxcbm1tL0tjb25maWc6MTAyNDpjb25maWcgQVNZTkNfS0VSTkVMX1BHVEFCTEVfRlJFRVxcbm1tL0tjb25maWctMTAyNS1cXHRkZWZfYm9vbCBuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDA2OjI5OjE0LjcyOTA1OTg4NloiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTM5NDAzNTczLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcyBjb2RlLiBIZXJlJ3MgaG93IEknbSB0aGlua2luZyBhYm91dCBpdDpcblxuKipEaWdnaW5nIGludG8gYEFTWU5DX0tFUk5FTF9QR1RBQkxFX0ZSRUVgKipcblxuQWxyaWdodCwgSSdtIHN0YXJ0aW5nIHdpdGggYEFTWU5DX0tFUk5FTF9QR1RBQkxFX0ZSRUVgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJXaGF0IGV4YWN0bHkgKnNlbGVjdHMqIHRoaXM/IFdoYXQgY29kZSBwYXRocyBsZWFkIHRvIGl0cyBhY3RpdmF0aW9uP1wiIEkga25vdyBpdCdzIGEga2V5IGZlYXR1cmUsIHByb2JhYmx5IHJlbGF0ZWQgdG8gYXN5bmNocm9ub3VzIHBhZ2UgdGFibGUgZnJlZWluZyBpbiB0aGUga2VybmVsLCBidXQgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggaXQgYmVjb21lcyByZWxldmFudC4gSSBuZWVkIHRvIHRyYWNlIGJhY2sgZnJvbSB3aGVyZSBpdCdzIHVzZWQgdG8gdW5kZXJzdGFuZCB3aGVyZSB0aGlzIGZlYXR1cmUgaXMgYmVpbmcgZW5hYmxlZCBvciBkaXNhYmxlZC4gVGhpcyBpbnZlc3RpZ2F0aW9uIGlzIGtleSB0byB1bmRlcnN0YW5kaW5nIGhvdyB0aGVzZSBhc3luY2hyb25vdXMgZnJlZXMgYXJlIHRyaWdnZXJlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA0NTAsIk91dHB1dFRva2VucyI6MjUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QwNjoyOToxOC44Njg0NjYyMzlaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU0ODU1MDIxNTMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic2VsZWN0IEFTWU5DX0tFUk5FTF9QR1RBQkxFX0ZSRUVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC94ODYvS2NvbmZpZz01OD1jb25maWcgWDg2XFxuLS1cXG5hcmNoL3g4Ni9LY29uZmlnLTI4My1cXHRzZWxlY3QgSEFWRV9QRVJGX1VTRVJfU1RBQ0tfRFVNUFxcbmFyY2gveDg2L0tjb25maWc6Mjg0OlxcdHNlbGVjdCBBU1lOQ19LRVJORUxfUEdUQUJMRV9GUkVFXFx0aWYgSU9NTVVfU1ZBXFxuYXJjaC94ODYvS2NvbmZpZy0yODUtXFx0c2VsZWN0IE1NVV9HQVRIRVJfUkNVX1RBQkxFX0ZSRUVcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMDY6Mjk6MjQuMzUzOTc0OTQyWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjIyMjIxOTg0MjE0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBLZXJuZWwgUGFnZSBUYWJsZSBGcmVlaW5nIG9uIHg4NiB3aXRoIElPTU1VX1NWQSoqXG5cbk9rYXksIHNvIGhlcmUncyB0aGUgZGVhbC4gT24geDg2LCBpZiB3ZSdyZSB1c2luZyBgSU9NTVVfU1ZBYCwgdGhlIGBBU1lOQ19LRVJORUxfUEdUQUJMRV9GUkVFYCBvcHRpb24gZ2V0cyBhdXRvbWF0aWNhbGx5IHNlbGVjdGVkLiBUZWNobmljYWxseSwgd2UgZG9uJ3QgbmVlZCB0byBleHBsaWNpdGx5IGVuYWJsZSBpdC4gV2UgY291bGQgZWl0aGVyIGVuYWJsZSBgSU9NTVVfU1ZBYCwgb3IganVzdCBub3Qgd29ycnkgYWJvdXQgaXQsIGJlY2F1c2UgdGhlIGAjZWxzZWAgYnJhbmNoIGlzIGFsc28gbW9kaWZpZWQgYW5kIHVzZXMgYGNhbGxfcmN1KFx1MDAyNnB0LVx1MDAzZXB0X3JjdV9oZWFkLCBrZXJuZWxfcGd0YWJsZV9mcmVlX3JjdSlgLlxuXG5MZXQncyBkaWcgaW50byB0aGUgbWVhdCBvZiB0aGlzLiBUaGUgcGF0Y2ggdG91Y2hlcyBhIGZldyBrZXkgZnVuY3Rpb25zOiBgd2Fsa19wYWdlX3JhbmdlX2RlYnVnYCwgYHBhZ2V0YWJsZV9mcmVlX2tlcm5lbGAsIGBwdGVfZnJhZ21lbnRfZnJlZWAgKGZvciBQb3dlclBDLCB3aGljaCBJJ2xsIGtlZXAgaW4gbWluZCBmb3IgY29udGV4dCksIGFuZCBgcHRkdW1wX3dhbGtfcGdkYC4gUmlnaHQgb2ZmIHRoZSBiYXQsIEkgd2FudCB0byBmb2N1cyBvbiBgd2Fsa19wYWdlX3JhbmdlX2RlYnVnYCwgYHBhZ2V0YWJsZV9mcmVlX2tlcm5lbGAsIGFuZCBgcHRkdW1wX3dhbGtfcGdkYC4gSXMgdGhhdCBpdD9cblxuQWgsIHJpZ2h0LCBga2VybmVsX3BndGFibGVfZnJlZV9yY3VgIHdhcyBhZGRlZC4gQW5kIGB3YWxrX2tlcm5lbF9wYWdlX3RhYmxlX3JhbmdlX2xvY2tsZXNzYCBpcyBjYWxsZWQgYnkgYHdhbGtfcGFnZV9yYW5nZV9kZWJ1Z2AuXG5cbk5vdywgdGhlIGltcG9ydGFudCBxdWVzdGlvbjogY2FuIGEgdXNlci1zcGFjZSBwcm9jZXNzIHRyaWdnZXIgYHdhbGtfcGFnZV9yYW5nZV9kZWJ1Z2A/IFllcywgdGhyb3VnaCBkZWJ1Z2ZzIGFuZCB0aG9zZSBgcHRkdW1wYCBmaWxlcy4gV2l0aCBgUFREVU1QX0RFQlVHRlNgIGVuYWJsZWQsIHdlIGdldCBzdHVmZiBsaWtlIGAvc3lzL2tlcm5lbC9kZWJ1Zy9wYWdlX3RhYmxlcy9rZXJuZWxgLiBBIHJlYWQgdHJpZ2dlcnMgYHB0ZHVtcF9zaG93YCB3aGljaCBjYWxscyBgcHRkdW1wX3dhbGtfcGdkYCBhbmQgdGhhdCwgaW4gdHVybiwgY2FsbHMgYHdhbGtfcGFnZV9yYW5nZV9kZWJ1Z2AuIFNvLCB1c2VyIHNwYWNlIGNhbiBwb3RlbnRpYWxseSB0cmlnZ2VyIHRoaXMuXG5cbk5leHQgdXAsIGBwYWdldGFibGVfZnJlZV9rZXJuZWxgLiBUaGlzIGlzIGNhbGxlZCB3aGVuIHRoZSBrZXJuZWwgZnJlZXMgdXAgcGFnZSB0YWJsZXMuIFdoZW4gZG9lcyB0aGF0IGhhcHBlbj8gVm1hcC92bWFsbG9jIHRlYXJkb3duLCBtZW1vcnkgaG90LXJlbW92ZS4uLiB0aGluZ3MgbGlrZSB0aGF0LiBHb3R0YSBmaW5kIG91dCB3aGF0IGNhbGxzIGBwYWdldGFibGVfZnJlZV9rZXJuZWxgIHRvIGdldCB0aGUgZnVsbCBwaWN0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDc2MCwiT3V0cHV0VG9rZW5zIjoyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQyNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QwNjoyOTo0Ni41NzU5NjI5MDZaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4NDkxNTA3MjUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGFnZXRhYmxlX2ZyZWVfa2VybmVsXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbGludXgvbW0uaD0zNjkxPXN0YXRpYyBpbmxpbmUgdm9pZCBfX3BhZ2V0YWJsZV9mcmVlKHN0cnVjdCBwdGRlc2MgKnB0KVxcbi0tXFxuaW5jbHVkZS9saW51eC9tbS5oLTM2OTctXFxuaW5jbHVkZS9saW51eC9tbS5oOjM2OTg6dm9pZCBwYWdldGFibGVfZnJlZV9rZXJuZWwoc3RydWN0IHB0ZGVzYyAqcHQpO1xcbmluY2x1ZGUvbGludXgvbW0uaC0zNjk5LS8qKlxcbi0tXFxuaW5jbHVkZS9saW51eC9tbS5oPTM3MDY9c3RhdGljIGlubGluZSB2b2lkIHBhZ2V0YWJsZV9mcmVlKHN0cnVjdCBwdGRlc2MgKnB0KVxcbi0tXFxuaW5jbHVkZS9saW51eC9tbS5oLTM3MDktXFx0XFx0cHRkZXNjX2NsZWFyX2tlcm5lbChwdCk7XFxuaW5jbHVkZS9saW51eC9tbS5oOjM3MTA6XFx0XFx0cGFnZXRhYmxlX2ZyZWVfa2VybmVsKHB0KTtcXG5pbmNsdWRlL2xpbnV4L21tLmgtMzcxMS1cXHR9IGVsc2Uge1xcbi0tXFxubW0vcGFnZXdhbGsuYz02ODI9aW50IHdhbGtfcGFnZV9yYW5nZV9kZWJ1ZyhzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5zaWduZWQgbG9uZyBzdGFydCxcXG4tLVxcbm1tL3BhZ2V3YWxrLmMtNzAwLVxcdFxcdCAqIGFjcm9zcyB0aGUgd2hvbGUga2VybmVsIGFkZHJlc3Mgc3BhY2UuICBBIGtlcm5lbCBwYWdlIHRhYmxlXFxubW0vcGFnZXdhbGsuYzo3MDE6XFx0XFx0ICogZnJlZWQgdmlhIHBhZ2V0YWJsZV9mcmVlX2tlcm5lbCgpIHN0YXlzIHZhbGlkIHVudGlsIHRoZSB3YWxrXFxubW0vcGFnZXdhbGsuYy03MDItXFx0XFx0ICogdGhhdCBtYXkgaGF2ZSBvYnNlcnZlZCBpdCBkcm9wcyB0aGUgbG9jazsgcmVsZWFzaW5nIHRoZSBsb2NrXFxuLS1cXG5tbS9wZ3RhYmxlLWdlbmVyaWMuYz00MzQ9c3RhdGljIHZvaWQga2VybmVsX3BndGFibGVfd29ya19mdW5jKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbm1tL3BndGFibGUtZ2VuZXJpYy5jLTQ1NC1cXG5tbS9wZ3RhYmxlLWdlbmVyaWMuYzo0NTU6dm9pZCBwYWdldGFibGVfZnJlZV9rZXJuZWwoc3RydWN0IHB0ZGVzYyAqcHQpXFxubW0vcGd0YWJsZS1nZW5lcmljLmMtNDU2LXtcXG4tLVxcbm1tL3BndGFibGUtZ2VuZXJpYy5jLTQ2My0jZWxzZVxcbm1tL3BndGFibGUtZ2VuZXJpYy5jOjQ2NDp2b2lkIHBhZ2V0YWJsZV9mcmVlX2tlcm5lbChzdHJ1Y3QgcHRkZXNjICpwdClcXG5tbS9wZ3RhYmxlLWdlbmVyaWMuYy00NjUte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QwNjoyOTo1MS40MjUxNDc0NjFaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjg1MjU3MzkxNzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqS2VybmVsIFBhZ2UgVGFibGUgRGVhbGxvY2F0aW9uIERlZXAgRGl2ZSoqXG5cbk9rYXksIHNvIEkndmUgc3BvdHRlZCBhIHNpZ25pZmljYW50IGFsdGVyYXRpb24gd2l0aGluIHRoZSBrZXJuZWwncyBtZW1vcnkgbWFuYWdlbWVudCwgc3BlY2lmaWNhbGx5IGNvbmNlcm5pbmcgdGhlIGZyZWVpbmcgb2YgcGFnZSB0YWJsZXMuIEl0IGxvb2tzIGxpa2UgYHBhZ2V0YWJsZV9mcmVlX2tlcm5lbGAgaXMgZ2V0dGluZyBjYWxsZWQgYnkgYHBhZ2V0YWJsZV9mcmVlYCwgYnV0IG9ubHkgd2hlbiB3ZSdyZSBkZWFsaW5nIHdpdGggYSBrZXJuZWwgcGFnZSB0YWJsZSwgZGV0ZXJtaW5lZCBieSBgcHRkZXNjX2lzX2tlcm5lbChwdClgLiBBbmQgYHBhZ2V0YWJsZV9mcmVlYCBpcyB0cmlnZ2VyZWQgYnkgb3RoZXIgY3JpdGljYWwgY29tcG9uZW50cyBsaWtlIGBwdGVfZnJlZWAgYW5kIGBwbWRfZnJlZWAsIHdoaWNoIG1lYW5zIHRoaXMgdG91Y2hlcyByZWFsbHkgY2VudHJhbCBrZXJuZWwgZnVuY3Rpb25hbGl0eS4gVGhpcyBjaGFuZ2Ugd2FycmFudHMgc2VyaW91cyBhdHRlbnRpb24gYW5kIGRlZmluaXRlbHkgcXVhbGlmaWVzIGFzIFwiV29ydGhGdXp6aW5nXCIgLSBtZWFuaW5nIHdlIG5lZWQgdG8gdGhyb3cgZXZlcnl0aGluZyBhdCBpdCB0byBlbnN1cmUgc3RhYmlsaXR5LlxuXG5NeSBmb2N1cyBzaG91bGQgYmUgaG9uZWQgaW4gb24gdGhlc2UgZnVuY3Rpb25zOiBgd2Fsa19wYWdlX3JhbmdlX2RlYnVnYCwgYHB0ZHVtcF93YWxrX3BnZGAsIGBwYWdldGFibGVfZnJlZV9rZXJuZWxgLCBhbmQgYGtlcm5lbF9wZ3RhYmxlX2ZyZWVfcmN1YC4gVGhleSBzZWVtIHRvIGJlIHRoZSBjcml0aWNhbCBwaWVjZXMgb2YgdGhpcyBkZWFsbG9jYXRpb24gcHV6emxlLlxuXG5JJ20gZGVmaW5pdGVseSBlbmFibGluZyBgUFREVU1QX0RFQlVHRlNgLiBUaGF0J2xsIHByb3ZpZGUgdGhlIGtpbmQgb2YgaW50cm9zcGVjdGlvbiBJJ2xsIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0J3MgaGFwcGVuaW5nIHVuZGVyIHRoZSBob29kLlxuXG5BbHNvLCBJJ20gdGhpbmtpbmcgYWJvdXQgYElPTU1VX1NWQWAuIEl0IGNvdWxkIHRyaWdnZXIgdGhlIGBBU1lOQ19LRVJORUxfUEdUQUJMRV9GUkVFYCBjb2RlIHBhdGgsIHdoaWNoIG1pZ2h0IGJlIHBhcnRpY3VsYXJseSBpbnRlcmVzdGluZy4gSSdsbCBuZWVkIHRvIGNoZWNrIHRoZSBkZXBlbmRlbmNpZXMgb2YgYElPTU1VX1NWQWAgdG8gbWFrZSBzdXJlIGVuYWJsaW5nIGl0IGRvZXNuJ3QgYnJpbmcgaW4gYW55IHVud2FudGVkIHNpZGUgZWZmZWN0cy4gSSB3YW50IHRvIG1ha2Ugc3VyZSBJIGFtIHRlc3RpbmcgKnRoaXMqIGFyZWEgYW5kIG5vdCBnZXQgZGlzdHJhY3RlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTIxMzUsIk91dHB1dFRva2VucyI6MjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMDY6MzA6MTkuOTUwODkwNjU5WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MTg3Njc4Mzk2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBJT01NVV9TVkFcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9pb21tdS9LY29uZmlnPTE1Mz1jb25maWcgSU9NTVVfRE1BXFxuLS1cXG5kcml2ZXJzL2lvbW11L0tjb25maWctMTYxLSMgU2hhcmVkIFZpcnR1YWwgQWRkcmVzc2luZ1xcbmRyaXZlcnMvaW9tbXUvS2NvbmZpZzoxNjI6Y29uZmlnIElPTU1VX1NWQVxcbmRyaXZlcnMvaW9tbXUvS2NvbmZpZy0xNjMtXFx0c2VsZWN0IElPTU1VX01NX0RBVEFcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMDY6MzA6MjYuMTM4NTc1OTE1WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE1MjA0Nzk1MjM5NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBJT01NVSBLY29uZmlnKipcblxuT2theSwgdGltZSB0byBnZXQgYSBiaXQgbW9yZSBncmFudWxhci4gTGV0J3MgcHVsbCB1cCB0aGUgYGRyaXZlcnMvaW9tbXUvS2NvbmZpZ2AgZmlsZSwgc3BlY2lmaWNhbGx5IGFyb3VuZCBsaW5lIDE2Mi4gSSdtIGZvY3VzaW5nIG9uIHRoYXQgYXJlYSBiZWNhdXNlIEkgaGF2ZSBhIGh1bmNoIGl0J3MgcmVsYXRlZCB0byBbKippbnNlcnQgeW91ciBzcGVjaWZpYyBhcmVhIG9mIGV4cGVydGlzZSAtIGUuZy4sIG5lc3RlZCB2aXJ0dWFsaXphdGlvbiBzdXBwb3J0LCBzcGVjaWZpYyBoYXJkd2FyZSBwbGF0Zm9ybSBjb25maWd1cmF0aW9uLCBvciBhIHBhcnRpY3VsYXIgSU9NTVUgZmVhdHVyZSoqXS4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIGhvdyB0aGlzIGNvbXBvbmVudCBpcyBjb25maWd1cmVkLCBhbmQgc2VlIGhvdyB0aGUgZGVwZW5kZW5jaWVzIGFyZSBzdHJ1Y3R1cmVkIGZvciB0aGlzIHNlY3Rpb24uIEkgcmVjYWxsIGZyb20gdGhlIGxhc3QgZGVidWdnaW5nIHNlc3Npb24gdGhhdCBzb21lIGNvbmRpdGlvbmFsIGxvZ2ljIHRoZXJlIHdhcyBhIHBvdGVudGlhbCBwb2ludCBvZiBjb250ZW50aW9uLiBNYXliZSBJIG5lZWQgdG8gcmV2aXNpdCB0aGUgYXNzb2NpYXRlZCBNYWtlZmlsZSBvciBvdGhlciBjb25maWd1cmF0aW9uIGZpbGVzIGxhdGVyLCBidXQgbGV0J3Mgc3RhcnQgaGVyZSBhbmQgc2VlIHdoYXQgdGhlIEtjb25maWcgcmV2ZWFscyBpbiB0aGlzIHNwb3QuIFRoaXMgc2hvdWxkIHByb3ZpZGUgc29tZSBpbnNpZ2h0IGludG8gd2hldGhlciBteSBzdXNwaWNpb25zIGFyZSBjb3JyZWN0LCBvciBpZiBJIGFtIGxvb2tpbmcgaW4gdGhlIHdyb25nIGxvY2F0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjc3NywiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDA2OjMyOjU4LjE4NjUzODgyMloiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2OTk0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL2lvbW11L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMTU1LFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMTU1OlxcdFxcdHNlbGVjdCBETUFfT1BTX0hFTFBFUlNcXG4gMTU2OlxcdFxcdHNlbGVjdCBJT01NVV9BUElcXG4gMTU3OlxcdFxcdHNlbGVjdCBJT01NVV9JT1ZBXFxuIDE1ODpcXHRcXHRzZWxlY3QgTkVFRF9TR19ETUFfTEVOR1RIXFxuIDE1OTpcXHRcXHRzZWxlY3QgTkVFRF9TR19ETUFfRkxBR1MgaWYgU1dJT1RMQlxcbiAxNjA6XFx0XFxuIDE2MTpcXHQjIFNoYXJlZCBWaXJ0dWFsIEFkZHJlc3NpbmdcXG4gMTYyOlxcdGNvbmZpZyBJT01NVV9TVkFcXG4gMTYzOlxcdFxcdHNlbGVjdCBJT01NVV9NTV9EQVRBXFxuIDE2NDpcXHRcXHRib29sXFxuIDE2NTpcXHRcXG4gMTY2OlxcdGNvbmZpZyBJT01NVV9JT1BGXFxuIDE2NzpcXHRcXHRib29sXFxuIDE2ODpcXHRcXG4gMTY5OlxcdGNvbmZpZyBGU0xfUEFNVVxcbiAxNzA6XFx0XFx0Ym9vbCBcXFwiRnJlZXNjYWxlIElPTU1VIHN1cHBvcnRcXFwiXFxuIDE3MTpcXHRcXHRkZXBlbmRzIG9uIFBDSVxcbiAxNzI6XFx0XFx0ZGVwZW5kcyBvbiBQSFlTXzY0QklUXFxuIDE3MzpcXHRcXHRkZXBlbmRzIG9uIFBQQ19FNTAwTUMgfHwgKENPTVBJTEVfVEVTVCBcXHUwMDI2XFx1MDAyNiBQUEMpXFxuIDE3NDpcXHRcXHRzZWxlY3QgSU9NTVVfQVBJXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDA2OjMyOjU4LjE4NjYxMDE0MloiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODY4Mzg3MDEzMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBhc3N1bWluZyBJJ20gYWxyZWFkeSBxdWl0ZSBmYW1pbGlhciB3aXRoIElPTU1VcyBhbmQgcmVsYXRlZCBrZXJuZWwgY29uZmlndXJhdGlvbnM6XG5cbioqRGlnZ2luZyBpbnRvIHRoZSBJT01NVV9TVkEgQ29uZmlnKipcblxuQWxyaWdodCwgc28gYElPTU1VX1NWQWAgaXMgb25lIG9mIHRob3NlIGhpZGRlbiBib29sZWFucywgbm90IGRpcmVjdGx5IGV4cG9zZWQgYXMgYSB0b3AtbGV2ZWwgb3B0aW9uLiBUaGF0IGltbWVkaWF0ZWx5IHRlbGxzIG1lIGl0J3MgbGlrZWx5IHB1bGxlZCBpbiBiYXNlZCBvbiB0aGUgc2VsZWN0aW9uIG9mICpvdGhlciogY29uZmlndXJhdGlvbnMuIE15IGdvYWwgbm93IGlzIHRvIGZpZ3VyZSBvdXQgdGhlIGRlcGVuZGVuY2llcy4gS25vd2luZyB0aGUgdXBzdHJlYW0ga2VybmVsIGJ1aWxkIHN5c3RlbSwgdGhlIGJlc3Qgd2F5IHRvIGRvIHRoYXQgaXMgdG8gdHJhY2UgdGhlIGRlcGVuZGVuY3kgcGF0aCBhbmQgc2VlIHdoaWNoIG90aGVyIGZlYXR1cmVzIG9yIGhhcmR3YXJlIHNldHVwcyB0cmlnZ2VyIGl0cyBpbmNsdXNpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBhcmNoaXRlY3R1cmFsIGltcGxpY2F0aW9ucywgYW5kIHByZWNpc2VseSAqd2h5KiBpdCdzIGNvbmRpdGlvbmFsbHkgZW5hYmxlZC4gV2hhdCdzIGRyaXZpbmcgdGhlIGxvZ2ljIGJlaGluZCBpdHMgaW5jbHVzaW9uPyBJcyBpdCB0aWVkIHRvIGEgc3BlY2lmaWMgdHlwZSBvZiBJT01NVSBoYXJkd2FyZSwgYSBwYXJ0aWN1bGFyIHZpcnR1YWxpemF0aW9uIGZlYXR1cmUsIG9yIHBlcmhhcHMgYSBzcGVjaWZpYyBwcm9ncmFtbWluZyBtb2RlbCBmb3IgdGhlIEdQVT8gTGV0J3MgZ2V0IHRvIHRoZSBib3R0b20gb2YgdGhpcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTMzMjEsIk91dHB1dFRva2VucyI6MjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDA2OjMzOjI2Ljg3MDQ4MzMxNFoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzIxMTE5NDM1MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzZWxlY3QgSU9NTVVfU1ZBXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvaW9tbXUvYW1kL0tjb25maWc9Mz1jb25maWcgQU1EX0lPTU1VXFxuLS1cXG5kcml2ZXJzL2lvbW11L2FtZC9LY29uZmlnLTEzLVxcdHNlbGVjdCBJT01NVV9JT1ZBXFxuZHJpdmVycy9pb21tdS9hbWQvS2NvbmZpZzoxNDpcXHRzZWxlY3QgSU9NTVVfU1ZBXFxuZHJpdmVycy9pb21tdS9hbWQvS2NvbmZpZy0xNS1cXHRzZWxlY3QgSU9NTVVfSU9QRlxcbi0tXFxuZHJpdmVycy9pb21tdS9hcm0vS2NvbmZpZz05MT1jb25maWcgQVJNX1NNTVVfVjNfU1ZBXFxuZHJpdmVycy9pb21tdS9hcm0vS2NvbmZpZy05Mi1cXHRib29sIFxcXCJTaGFyZWQgVmlydHVhbCBBZGRyZXNzaW5nIHN1cHBvcnQgZm9yIHRoZSBBUk0gU01NVXYzXFxcIlxcbmRyaXZlcnMvaW9tbXUvYXJtL0tjb25maWc6OTM6XFx0c2VsZWN0IElPTU1VX1NWQVxcbmRyaXZlcnMvaW9tbXUvYXJtL0tjb25maWctOTQtXFx0c2VsZWN0IElPTU1VX0lPUEZcXG4tLVxcbmRyaXZlcnMvaW9tbXUvaW50ZWwvS2NvbmZpZz01Mz1jb25maWcgSU5URUxfSU9NTVVfU1ZNXFxuLS1cXG5kcml2ZXJzL2lvbW11L2ludGVsL0tjb25maWctNTYtXFx0c2VsZWN0IE1NVV9OT1RJRklFUlxcbmRyaXZlcnMvaW9tbXUvaW50ZWwvS2NvbmZpZzo1NzpcXHRzZWxlY3QgSU9NTVVfU1ZBXFxuZHJpdmVycy9pb21tdS9pbnRlbC9LY29uZmlnLTU4LVxcdGhlbHBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMDY6MzM6MzAuMDgxNjgzNTM1WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjkxMTc5NDM0OTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIEtlcm5lbCBQYWdlIFRhYmxlIE1vZGlmaWNhdGlvbnMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBmaXJzdCB0aGluZydzIGZpcnN0OiB0aGUgY29uZmlnIG9wdGlvbnMuIGBBTURfSU9NTVVgLCBgQVJNX1NNTVVfVjNfU1ZBYCwgYElOVEVMX0lPTU1VX1NWTWAgYWxsIHNlZW0gdG8gZW5hYmxlIHJlbGF0ZWQgZnVuY3Rpb25hbGl0eSwgYnV0IEkgdGhpbmsgYFBURFVNUF9ERUJVR0ZTYCBpcyB0aGUga2V5IG9uZSBoZXJlIOKAkyB0aGF0J3MgdGhlIG9uZSB3ZSBkZWZpbml0ZWx5IG5lZWQuXG5cbkxldCdzIHNlZS4uLkkgYnJpZWZseSBjb25zaWRlcmVkIGBwdGVfZnJhZ21lbnRfZnJlZWAgaW4gYGFyY2gvcG93ZXJwYy9tbS9wZ3RhYmxlLWZyYWcuY2AuIEJ1dCBnaXZlbiB0aGF0IFN5emthbGxlciBwcmltYXJpbHkgdGFyZ2V0cyB4ODYsIGFybTY0LCBhbmQgcmlzY3YsIGl0J3MgcHJvYmFibHkgcG93ZXJwYy1zcGVjaWZpYyBhbmQgbWlnaHQgbm90IGJlICpzdHJpY3RseSogbmVjZXNzYXJ5IHRvIGluY2x1ZGUsIGFsdGhvdWdoIGl0IHdvdWxkIGJlIGhhcm1sZXNzLlxuXG5Ob3csIGxldCBtZSBjaGVjayBgd2Fsa19rZXJuZWxfcGFnZV90YWJsZV9yYW5nZV9sb2NrbGVzc2AgaW4gYG1tL3BhZ2V3YWxrLmNgLiBJdCB3YXNuJ3QgZGlyZWN0bHkgbW9kaWZpZWQsIGJ1dCB0aGUgKmNvbW1lbnQqIHdhcy4gQWgsIGFuZCBoZXJlJ3MgdGhlIGxpbms6IGB3YWxrX3BhZ2VfcmFuZ2VfZGVidWdgIGNhbGxzIGl0LiBCaW5nbyEgU28sIGB3YWxrX3BhZ2VfcmFuZ2VfZGVidWdgIGFuZCBgcHRkdW1wX3dhbGtfcGdkYCBhcmUgY3J1Y2lhbC5cblxuT2theSwgbGV0J3MgYmFjayB1cCBhbmQgcmV2aWV3LiBUaGlzIGlzIGEgc29saWQgZnVuY3Rpb25hbCBjaGFuZ2U6IGB3YWxrX3BhZ2VfcmFuZ2VfZGVidWdgIG5vdyBzYWZlbHkgd2Fsa3Mga2VybmVsIHBhZ2UgdGFibGVzIGluIFJDVS1wcm90ZWN0ZWQgYm91bmRlZCBjaHVua3MgYnkgdXNpbmcgYHdhbGtfa2VybmVsX3BhZ2VfdGFibGVfcmFuZ2VfbG9ja2xlc3NgLiBNb3Jlb3ZlciwgYHBhZ2V0YWJsZV9mcmVlX2tlcm5lbGAgZGVmZXJzIHRoZSBmcmVlaW5nIG9mIGtlcm5lbCBwYWdlIHRhYmxlcyB1c2luZyBgY2FsbF9yY3VgLCBlZmZlY3RpdmVseSBlbXBsb3lpbmcgUkNVLWRlZmVycmVkIGZyZWVpbmcuIFNvLCBtZW1vcnkgbWFuYWdlbWVudCBoYXMgaW1wcm92ZWQgYnkgZW5zdXJpbmcgc2FmZXIgbG9ja2xlc3MgcGFnZSB0YWJsZSB3YWxrcyBhbmQgYXZvaWRpbmcgZXhjZXNzaXZlIGhvbGQgdGltZXMgZm9yIHRoZSBSQ1UgbG9jay4gVGhpcyBpcyBzaWduaWZpY2FudC5cblxuRXNzZW50aWFsbHksIHRoaXMgcGF0Y2ggbW9kaWZpZXMgdGhlIGtlcm5lbCBwYWdlIHRhYmxlIHdhbGtpbmcgYW5kIGZyZWVpbmcgbG9naWMsIG1ha2luZyBpdCBSQ1Utc2FmZS4gYHB0ZHVtcGAgaXMgbm93IHVwZGF0ZWQgdG8gd2FsayBrZXJuZWwgcGFnZSB0YWJsZXMgbG9ja2xlc3NseSB1bmRlciBSQ1UgaW4gYm91bmRlZCBjaHVua3MsIHdoaWxlIHRoZSBga2VybmVsX3BndGFibGVfZnJlZV9yY3VgIGFuZCBgcGFnZXRhYmxlX2ZyZWVfa2VybmVsYCBmdW5jdGlvbnMsIGluIGNvbmp1bmN0aW9uIHdpdGggdGhlIGZvcm1lciwgZW5zdXJlIHRoYXQga2VybmVsIHBhZ2UgdGFibGVzIGFyZSBzYWZlbHkgYWNjZXNzZWQgYW5kIGZyZWVkIGNvbmN1cnJlbnRseS5cblxuTXkgY29uY2x1c2lvbiBpcyB0aGF0IHRoZSBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IGNoYW5nZXMgaGVyZSBhcmUgc2lnbmlmaWNhbnQ6XG5cbiogICAqKkNvbmZpZzoqKiBgUFREVU1QX0RFQlVHRlNgIGlzIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbi5cbiogICAqKkZvY3VzU3ltYm9sczoqKiBJJ2xsIGRlZmluaXRlbHkgYWRkIGB3YWxrX3BhZ2VfcmFuZ2VfZGVidWdgLCBgcHRkdW1wX3dhbGtfcGdkYCwgYHBhZ2V0YWJsZV9mcmVlX2tlcm5lbGAsIGFuZCBga2VybmVsX3BndGFibGVfZnJlZV9yY3VgIHRvIHRoZSBmb2N1cyBzeW1ib2xzLlxuXG5JJ20gcmVhZHkgdG8gYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTM4NzgsIk91dHB1dFRva2VucyI6MTQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDk1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDA2OjMzOjM5LjE5OTY0NzAzOVoiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgyNTM0ODkyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJQVERVTVBfREVCVUdGU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIndhbGtfcGFnZV9yYW5nZV9kZWJ1Z1wiLFxuICAgIFwicHRkdW1wX3dhbGtfcGdkXCIsXG4gICAgXCJwYWdldGFibGVfZnJlZV9rZXJuZWxcIixcbiAgICBcImtlcm5lbF9wZ3RhYmxlX2ZyZWVfcmN1XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGtlcm5lbCBwYWdlIHRhYmxlIHdhbGtpbmcgYW5kIGZyZWVpbmcgbG9naWMuIEl0IGludHJvZHVjZXMgUkNVLWRlZmVycmVkIGZyZWVpbmcgZm9yIGtlcm5lbCBwYWdlIHRhYmxlcyBhbmQgY2hhbmdlcyB0aGUgZGVidWcgcGFnZSB0YWJsZSB3YWxrZXIgKHB0ZHVtcCkgdG8gd2FsayBrZXJuZWwgcGFnZSB0YWJsZXMgbG9ja2xlc3NseSB1bmRlciBSQ1UgaW4gYm91bmRlZCBjaHVua3MuIFRoaXMgaXMgYSBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IGNoYW5nZSB0aGF0IGFmZmVjdHMgaG93IGtlcm5lbCBwYWdlIHRhYmxlcyBhcmUgc2FmZWx5IGFjY2Vzc2VkIGFuZCBmcmVlZCBjb25jdXJyZW50bHkuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiUFREVU1QX0RFQlVHRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ3YWxrX3BhZ2VfcmFuZ2VfZGVidWdcIixcbiAgICBcInB0ZHVtcF93YWxrX3BnZFwiLFxuICAgIFwicGFnZXRhYmxlX2ZyZWVfa2VybmVsXCIsXG4gICAgXCJrZXJuZWxfcGd0YWJsZV9mcmVlX3JjdVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBrZXJuZWwgcGFnZSB0YWJsZSB3YWxraW5nIGFuZCBmcmVlaW5nIGxvZ2ljLiBJdCBpbnRyb2R1Y2VzIFJDVS1kZWZlcnJlZCBmcmVlaW5nIGZvciBrZXJuZWwgcGFnZSB0YWJsZXMgYW5kIGNoYW5nZXMgdGhlIGRlYnVnIHBhZ2UgdGFibGUgd2Fsa2VyIChwdGR1bXApIHRvIHdhbGsga2VybmVsIHBhZ2UgdGFibGVzIGxvY2tsZXNzbHkgdW5kZXIgUkNVIGluIGJvdW5kZWQgY2h1bmtzLiBUaGlzIGlzIGEgY29yZSBtZW1vcnkgbWFuYWdlbWVudCBjaGFuZ2UgdGhhdCBhZmZlY3RzIGhvdyBrZXJuZWwgcGFnZSB0YWJsZXMgYXJlIHNhZmVseSBhY2Nlc3NlZCBhbmQgZnJlZWQgY29uY3VycmVudGx5LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowfl5wp[1] Phase: Succeeded StartedAt: 2026-07-07 06:35:42 +0000 UTC FinishedAt: 2026-07-07 06:35:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfl5wp[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-07 06:35:42 +0000 UTC FinishedAt: 2026-07-07 06:35:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfl5wp[2] Phase: Succeeded StartedAt: 2026-07-07 06:35:42 +0000 UTC FinishedAt: 2026-07-07 11:36:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfl5wp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c6b0b9701fcef71ed7cabc0358bb18e15e8e8329","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTDUMP_DEBUGFS"],"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":["walk_page_range_debug","ptdump_walk_pgd","pagetable_free_kernel","kernel_pgtable_free_rcu"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"c6b0b9701fcef71ed7cabc0358bb18e15e8e8329","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTDUMP_DEBUGFS"],"series_id":"f21a389e-10ed-4d6d-8aa7-7654acb39d37","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-07 06:35:42 +0000 UTC FinishedAt: 2026-07-07 11:36:49 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"c6b0b9701fcef71ed7cabc0358bb18e15e8e8329","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTDUMP_DEBUGFS"],"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":["walk_page_range_debug","ptdump_walk_pgd","pagetable_free_kernel","kernel_pgtable_free_rcu"],"skip_cover_check":true},"patched":{"arch":"amd64","commit_hash":"c6b0b9701fcef71ed7cabc0358bb18e15e8e8329","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTDUMP_DEBUGFS"],"series_id":"f21a389e-10ed-4d6d-8aa7-7654acb39d37","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-workflowfl5wp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c6b0b9701fcef71ed7cabc0358bb18e15e8e8329","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTDUMP_DEBUGFS"],"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":["walk_page_range_debug","ptdump_walk_pgd","pagetable_free_kernel","kernel_pgtable_free_rcu"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"c6b0b9701fcef71ed7cabc0358bb18e15e8e8329","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTDUMP_DEBUGFS"],"series_id":"f21a389e-10ed-4d6d-8aa7-7654acb39d37","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-07 06:35:42 +0000 UTC FinishedAt: 2026-07-07 06:36:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfl5wp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c6b0b9701fcef71ed7cabc0358bb18e15e8e8329","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTDUMP_DEBUGFS"],"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":["walk_page_range_debug","ptdump_walk_pgd","pagetable_free_kernel","kernel_pgtable_free_rcu"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"c6b0b9701fcef71ed7cabc0358bb18e15e8e8329","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTDUMP_DEBUGFS"],"series_id":"f21a389e-10ed-4d6d-8aa7-7654acb39d37","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-07 06:35:42 +0000 UTC FinishedAt: 2026-07-07 06:35:51 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"c6b0b9701fcef71ed7cabc0358bb18e15e8e8329","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTDUMP_DEBUGFS"],"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-workflowfl5wp/series-workflowfl5wp-convert-artifact-917610167/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfl5wp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c6b0b9701fcef71ed7cabc0358bb18e15e8e8329","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTDUMP_DEBUGFS"],"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":["walk_page_range_debug","ptdump_walk_pgd","pagetable_free_kernel","kernel_pgtable_free_rcu"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"c6b0b9701fcef71ed7cabc0358bb18e15e8e8329","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTDUMP_DEBUGFS"],"series_id":"f21a389e-10ed-4d6d-8aa7-7654acb39d37","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-07 06:36:03 +0000 UTC FinishedAt: 2026-07-07 07:42:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfl5wp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c6b0b9701fcef71ed7cabc0358bb18e15e8e8329","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTDUMP_DEBUGFS"],"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":["walk_page_range_debug","ptdump_walk_pgd","pagetable_free_kernel","kernel_pgtable_free_rcu"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"c6b0b9701fcef71ed7cabc0358bb18e15e8e8329","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTDUMP_DEBUGFS"],"series_id":"f21a389e-10ed-4d6d-8aa7-7654acb39d37","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-07 06:36:03 +0000 UTC FinishedAt: 2026-07-07 07:42:49 +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:*59712ece-60fc-4b54-bc85-8d3598d20d44,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-workflowfl5wp/series-workflowfl5wp-convert-artifact-917610167/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": "1f3eb5f0-e7a8-475c-a5f3-0c46657e17cb", "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-workflowfl5wp/series-workflowfl5wp-build-action-1607925261/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfl5wp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c6b0b9701fcef71ed7cabc0358bb18e15e8e8329","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTDUMP_DEBUGFS"],"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":["walk_page_range_debug","ptdump_walk_pgd","pagetable_free_kernel","kernel_pgtable_free_rcu"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"c6b0b9701fcef71ed7cabc0358bb18e15e8e8329","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTDUMP_DEBUGFS"],"series_id":"f21a389e-10ed-4d6d-8aa7-7654acb39d37","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-07 06:36:03 +0000 UTC FinishedAt: 2026-07-07 07:42:39 +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:*59712ece-60fc-4b54-bc85-8d3598d20d44,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-workflowfl5wp/series-workflowfl5wp-convert-artifact-917610167/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": "1f3eb5f0-e7a8-475c-a5f3-0c46657e17cb", "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-workflowfl5wp/series-workflowfl5wp-build-action-1607925261/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfl5wp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c6b0b9701fcef71ed7cabc0358bb18e15e8e8329","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTDUMP_DEBUGFS"],"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":["walk_page_range_debug","ptdump_walk_pgd","pagetable_free_kernel","kernel_pgtable_free_rcu"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"c6b0b9701fcef71ed7cabc0358bb18e15e8e8329","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTDUMP_DEBUGFS"],"series_id":"f21a389e-10ed-4d6d-8aa7-7654acb39d37","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-07 07:42:49 +0000 UTC FinishedAt: 2026-07-07 07:42:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfl5wp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c6b0b9701fcef71ed7cabc0358bb18e15e8e8329","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTDUMP_DEBUGFS"],"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":["walk_page_range_debug","ptdump_walk_pgd","pagetable_free_kernel","kernel_pgtable_free_rcu"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"c6b0b9701fcef71ed7cabc0358bb18e15e8e8329","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTDUMP_DEBUGFS"],"series_id":"f21a389e-10ed-4d6d-8aa7-7654acb39d37","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-07 07:42:49 +0000 UTC FinishedAt: 2026-07-07 07:42:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfl5wp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c6b0b9701fcef71ed7cabc0358bb18e15e8e8329","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTDUMP_DEBUGFS"],"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":["walk_page_range_debug","ptdump_walk_pgd","pagetable_free_kernel","kernel_pgtable_free_rcu"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"c6b0b9701fcef71ed7cabc0358bb18e15e8e8329","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTDUMP_DEBUGFS"],"series_id":"f21a389e-10ed-4d6d-8aa7-7654acb39d37","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-07 07:42:49 +0000 UTC FinishedAt: 2026-07-07 07:44:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfl5wp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c6b0b9701fcef71ed7cabc0358bb18e15e8e8329","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTDUMP_DEBUGFS"],"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":["walk_page_range_debug","ptdump_walk_pgd","pagetable_free_kernel","kernel_pgtable_free_rcu"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"c6b0b9701fcef71ed7cabc0358bb18e15e8e8329","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTDUMP_DEBUGFS"],"series_id":"f21a389e-10ed-4d6d-8aa7-7654acb39d37","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-07 07:42:49 +0000 UTC FinishedAt: 2026-07-07 07:44:08 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"c6b0b9701fcef71ed7cabc0358bb18e15e8e8329","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTDUMP_DEBUGFS"],"series_id":"f21a389e-10ed-4d6d-8aa7-7654acb39d37","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-workflowfl5wp/series-workflowfl5wp-convert-artifact-3893544422/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfl5wp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c6b0b9701fcef71ed7cabc0358bb18e15e8e8329","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTDUMP_DEBUGFS"],"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":["walk_page_range_debug","ptdump_walk_pgd","pagetable_free_kernel","kernel_pgtable_free_rcu"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"c6b0b9701fcef71ed7cabc0358bb18e15e8e8329","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTDUMP_DEBUGFS"],"series_id":"f21a389e-10ed-4d6d-8aa7-7654acb39d37","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-07 07:44:16 +0000 UTC FinishedAt: 2026-07-07 07:46:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfl5wp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c6b0b9701fcef71ed7cabc0358bb18e15e8e8329","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTDUMP_DEBUGFS"],"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":["walk_page_range_debug","ptdump_walk_pgd","pagetable_free_kernel","kernel_pgtable_free_rcu"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"c6b0b9701fcef71ed7cabc0358bb18e15e8e8329","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTDUMP_DEBUGFS"],"series_id":"f21a389e-10ed-4d6d-8aa7-7654acb39d37","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-07 07:44:16 +0000 UTC FinishedAt: 2026-07-07 07:46:29 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*1f3eb5f0-e7a8-475c-a5f3-0c46657e17cb,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-workflowfl5wp/series-workflowfl5wp-build-action-1607925261/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-workflowfl5wp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c6b0b9701fcef71ed7cabc0358bb18e15e8e8329","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTDUMP_DEBUGFS"],"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":["walk_page_range_debug","ptdump_walk_pgd","pagetable_free_kernel","kernel_pgtable_free_rcu"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"c6b0b9701fcef71ed7cabc0358bb18e15e8e8329","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTDUMP_DEBUGFS"],"series_id":"f21a389e-10ed-4d6d-8aa7-7654acb39d37","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-07 07:46:39 +0000 UTC FinishedAt: 2026-07-07 07:46:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfl5wp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c6b0b9701fcef71ed7cabc0358bb18e15e8e8329","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTDUMP_DEBUGFS"],"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":["walk_page_range_debug","ptdump_walk_pgd","pagetable_free_kernel","kernel_pgtable_free_rcu"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"c6b0b9701fcef71ed7cabc0358bb18e15e8e8329","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTDUMP_DEBUGFS"],"series_id":"f21a389e-10ed-4d6d-8aa7-7654acb39d37","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-07 07:46:39 +0000 UTC FinishedAt: 2026-07-07 07:46:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfl5wp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c6b0b9701fcef71ed7cabc0358bb18e15e8e8329","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTDUMP_DEBUGFS"],"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":["walk_page_range_debug","ptdump_walk_pgd","pagetable_free_kernel","kernel_pgtable_free_rcu"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"c6b0b9701fcef71ed7cabc0358bb18e15e8e8329","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTDUMP_DEBUGFS"],"series_id":"f21a389e-10ed-4d6d-8aa7-7654acb39d37","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-07 07:46:39 +0000 UTC FinishedAt: 2026-07-07 08:30:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfl5wp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c6b0b9701fcef71ed7cabc0358bb18e15e8e8329","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTDUMP_DEBUGFS"],"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":["walk_page_range_debug","ptdump_walk_pgd","pagetable_free_kernel","kernel_pgtable_free_rcu"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"c6b0b9701fcef71ed7cabc0358bb18e15e8e8329","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTDUMP_DEBUGFS"],"series_id":"f21a389e-10ed-4d6d-8aa7-7654acb39d37","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-07 07:46:39 +0000 UTC FinishedAt: 2026-07-07 08:30:43 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*59712ece-60fc-4b54-bc85-8d3598d20d44,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-workflowfl5wp/series-workflowfl5wp-convert-artifact-3893544422/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": "249ead81-cf44-4356-8067-3c54d02dc378", "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-workflowfl5wp/series-workflowfl5wp-build-action-3639311274/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfl5wp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c6b0b9701fcef71ed7cabc0358bb18e15e8e8329","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTDUMP_DEBUGFS"],"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":["walk_page_range_debug","ptdump_walk_pgd","pagetable_free_kernel","kernel_pgtable_free_rcu"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"c6b0b9701fcef71ed7cabc0358bb18e15e8e8329","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTDUMP_DEBUGFS"],"series_id":"f21a389e-10ed-4d6d-8aa7-7654acb39d37","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-07 07:46:39 +0000 UTC FinishedAt: 2026-07-07 08:29:42 +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:*59712ece-60fc-4b54-bc85-8d3598d20d44,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-workflowfl5wp/series-workflowfl5wp-convert-artifact-3893544422/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": "249ead81-cf44-4356-8067-3c54d02dc378", "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-workflowfl5wp/series-workflowfl5wp-build-action-3639311274/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfl5wp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c6b0b9701fcef71ed7cabc0358bb18e15e8e8329","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTDUMP_DEBUGFS"],"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":["walk_page_range_debug","ptdump_walk_pgd","pagetable_free_kernel","kernel_pgtable_free_rcu"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"c6b0b9701fcef71ed7cabc0358bb18e15e8e8329","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTDUMP_DEBUGFS"],"series_id":"f21a389e-10ed-4d6d-8aa7-7654acb39d37","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-07 08:30:43 +0000 UTC FinishedAt: 2026-07-07 08:30:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfl5wp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c6b0b9701fcef71ed7cabc0358bb18e15e8e8329","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTDUMP_DEBUGFS"],"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":["walk_page_range_debug","ptdump_walk_pgd","pagetable_free_kernel","kernel_pgtable_free_rcu"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"c6b0b9701fcef71ed7cabc0358bb18e15e8e8329","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTDUMP_DEBUGFS"],"series_id":"f21a389e-10ed-4d6d-8aa7-7654acb39d37","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-07 08:30:43 +0000 UTC FinishedAt: 2026-07-07 08:30:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfl5wp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c6b0b9701fcef71ed7cabc0358bb18e15e8e8329","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTDUMP_DEBUGFS"],"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":["walk_page_range_debug","ptdump_walk_pgd","pagetable_free_kernel","kernel_pgtable_free_rcu"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"c6b0b9701fcef71ed7cabc0358bb18e15e8e8329","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTDUMP_DEBUGFS"],"series_id":"f21a389e-10ed-4d6d-8aa7-7654acb39d37","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-07 08:30:43 +0000 UTC FinishedAt: 2026-07-07 08:33:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfl5wp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c6b0b9701fcef71ed7cabc0358bb18e15e8e8329","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTDUMP_DEBUGFS"],"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":["walk_page_range_debug","ptdump_walk_pgd","pagetable_free_kernel","kernel_pgtable_free_rcu"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"c6b0b9701fcef71ed7cabc0358bb18e15e8e8329","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTDUMP_DEBUGFS"],"series_id":"f21a389e-10ed-4d6d-8aa7-7654acb39d37","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-07 08:30:43 +0000 UTC FinishedAt: 2026-07-07 08:32:50 +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:*249ead81-cf44-4356-8067-3c54d02dc378,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-workflowfl5wp/series-workflowfl5wp-build-action-3639311274/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-workflowfl5wp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c6b0b9701fcef71ed7cabc0358bb18e15e8e8329","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTDUMP_DEBUGFS"],"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":["walk_page_range_debug","ptdump_walk_pgd","pagetable_free_kernel","kernel_pgtable_free_rcu"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"c6b0b9701fcef71ed7cabc0358bb18e15e8e8329","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTDUMP_DEBUGFS"],"series_id":"f21a389e-10ed-4d6d-8aa7-7654acb39d37","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-07 08:33:12 +0000 UTC FinishedAt: 2026-07-07 08:33:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfl5wp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c6b0b9701fcef71ed7cabc0358bb18e15e8e8329","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTDUMP_DEBUGFS"],"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":["walk_page_range_debug","ptdump_walk_pgd","pagetable_free_kernel","kernel_pgtable_free_rcu"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"c6b0b9701fcef71ed7cabc0358bb18e15e8e8329","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTDUMP_DEBUGFS"],"series_id":"f21a389e-10ed-4d6d-8aa7-7654acb39d37","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-07 08:33:13 +0000 UTC FinishedAt: 2026-07-07 08:33:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfl5wp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c6b0b9701fcef71ed7cabc0358bb18e15e8e8329","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTDUMP_DEBUGFS"],"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":["walk_page_range_debug","ptdump_walk_pgd","pagetable_free_kernel","kernel_pgtable_free_rcu"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"c6b0b9701fcef71ed7cabc0358bb18e15e8e8329","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTDUMP_DEBUGFS"],"series_id":"f21a389e-10ed-4d6d-8aa7-7654acb39d37","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-07 08:33:14 +0000 UTC FinishedAt: 2026-07-07 11:36:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfl5wp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c6b0b9701fcef71ed7cabc0358bb18e15e8e8329","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTDUMP_DEBUGFS"],"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":["walk_page_range_debug","ptdump_walk_pgd","pagetable_free_kernel","kernel_pgtable_free_rcu"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"c6b0b9701fcef71ed7cabc0358bb18e15e8e8329","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTDUMP_DEBUGFS"],"series_id":"f21a389e-10ed-4d6d-8aa7-7654acb39d37","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-07 08:33:14 +0000 UTC FinishedAt: 2026-07-07 11:36:49 +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":["walk_page_range_debug","ptdump_walk_pgd","pagetable_free_kernel","kernel_pgtable_free_rcu"],"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:*1f3eb5f0-e7a8-475c-a5f3-0c46657e17cb,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*249ead81-cf44-4356-8067-3c54d02dc378,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-workflowfl5wp/series-workflowfl5wp-build-action-1607925261/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-workflowfl5wp/series-workflowfl5wp-build-action-3639311274/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowfl5wp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c6b0b9701fcef71ed7cabc0358bb18e15e8e8329","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTDUMP_DEBUGFS"],"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":["walk_page_range_debug","ptdump_walk_pgd","pagetable_free_kernel","kernel_pgtable_free_rcu"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"c6b0b9701fcef71ed7cabc0358bb18e15e8e8329","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTDUMP_DEBUGFS"],"series_id":"f21a389e-10ed-4d6d-8aa7-7654acb39d37","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-07 08:33:14 +0000 UTC FinishedAt: 2026-07-07 08:33:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfl5wp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c6b0b9701fcef71ed7cabc0358bb18e15e8e8329","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTDUMP_DEBUGFS"],"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":["walk_page_range_debug","ptdump_walk_pgd","pagetable_free_kernel","kernel_pgtable_free_rcu"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"c6b0b9701fcef71ed7cabc0358bb18e15e8e8329","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTDUMP_DEBUGFS"],"series_id":"f21a389e-10ed-4d6d-8aa7-7654acb39d37","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-07 08:33:14 +0000 UTC FinishedAt: 2026-07-07 08:33:25 +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":["walk_page_range_debug","ptdump_walk_pgd","pagetable_free_kernel","kernel_pgtable_free_rcu"],"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-workflowfl5wp/series-workflowfl5wp-convert-artifact-1518933803/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfl5wp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c6b0b9701fcef71ed7cabc0358bb18e15e8e8329","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTDUMP_DEBUGFS"],"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":["walk_page_range_debug","ptdump_walk_pgd","pagetable_free_kernel","kernel_pgtable_free_rcu"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"c6b0b9701fcef71ed7cabc0358bb18e15e8e8329","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTDUMP_DEBUGFS"],"series_id":"f21a389e-10ed-4d6d-8aa7-7654acb39d37","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-07 08:33:18 +0000 UTC FinishedAt: 2026-07-07 08:33:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfl5wp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c6b0b9701fcef71ed7cabc0358bb18e15e8e8329","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTDUMP_DEBUGFS"],"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":["walk_page_range_debug","ptdump_walk_pgd","pagetable_free_kernel","kernel_pgtable_free_rcu"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"c6b0b9701fcef71ed7cabc0358bb18e15e8e8329","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTDUMP_DEBUGFS"],"series_id":"f21a389e-10ed-4d6d-8aa7-7654acb39d37","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-07 08:33:49 +0000 UTC FinishedAt: 2026-07-07 11:36:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfl5wp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c6b0b9701fcef71ed7cabc0358bb18e15e8e8329","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTDUMP_DEBUGFS"],"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":["walk_page_range_debug","ptdump_walk_pgd","pagetable_free_kernel","kernel_pgtable_free_rcu"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"c6b0b9701fcef71ed7cabc0358bb18e15e8e8329","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTDUMP_DEBUGFS"],"series_id":"f21a389e-10ed-4d6d-8aa7-7654acb39d37","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-07 08:33:49 +0000 UTC FinishedAt: 2026-07-07 11:36:39 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*1f3eb5f0-e7a8-475c-a5f3-0c46657e17cb,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*249ead81-cf44-4356-8067-3c54d02dc378,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-workflowfl5wp/series-workflowfl5wp-build-action-1607925261/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-workflowfl5wp/series-workflowfl5wp-build-action-3639311274/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-workflowfl5wp/series-workflowfl5wp-convert-artifact-1518933803/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,}