Name: series-workflow49wsg Phase: Succeeded StartedAt: 2026-07-23 15:01:28 +0000 UTC FinishedAt: 2026-07-23 20:11:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflow49wsg[0] Phase: Succeeded StartedAt: 2026-07-23 15:01:28 +0000 UTC FinishedAt: 2026-07-23 15:30:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflow49wsg[0].run-triage Phase: Succeeded StartedAt: 2026-07-23 15:01:28 +0000 UTC FinishedAt: 2026-07-23 15:30:09 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "a13c140cc289c0b7b3770bce5b3ad42ab35074aa", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM", "MMU_NOTIFIER" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "a13c140cc289c0b7b3770bce5b3ad42ab35074aa", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM", "MMU_NOTIFIER" ], "series_id": "24743a6e-9ab8-4338-bf66-de1c0d9df207" }, "track": "KASAN", "fuzz": { "focus": [ "kvm" ], "focus_symbols": [ "mmu_notifier_oom_enter", "mmu_notifier_barrier", "mmu_notifier_oom_callback_fn", "kvm_mmu_notifier_after_oom_unregister", "kvm_destroy_vm", "process_mrelease" ], "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+CgkJCTx0ZD4yMDI2LzA3LzIzIDE1OjI5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7LAogICAgJiMzNDtNTVVfTk9USUZJRVImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttbXVfbm90aWZpZXJfb29tX2VudGVyJiMzNDssCiAgICAmIzM0O21tdV9ub3RpZmllcl9iYXJyaWVyJiMzNDssCiAgICAmIzM0O21tdV9ub3RpZmllcl9vb21fY2FsbGJhY2tfZm4mIzM0OywKICAgICYjMzQ7a3ZtX21tdV9ub3RpZmllcl9hZnRlcl9vb21fdW5yZWdpc3RlciYjMzQ7LAogICAgJiMzNDtrdm1fZGVzdHJveV92bSYjMzQ7LAogICAgJiMzNDtwcm9jZXNzX21yZWxlYXNlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgTU1VIG5vdGlmaWVyIGNhbGxiYWNrIGBhZnRlcl9vb21fdW5yZWdpc3RlcmAgYW5kIGEgbWVjaGFuaXNtIHRvIGludm9rZSBpdCBhc3luY2hyb25vdXNseSB3aGVuIGFuIE9PTSBldmVudCBvY2N1cnMgKGBtbXVfbm90aWZpZXJfb29tX2VudGVyYCkuIEl0IGFsc28gaW1wbGVtZW50cyB0aGlzIGNhbGxiYWNrIGZvciBLVk0gYW5kIG1vZGlmaWVzIGBrdm1fZGVzdHJveV92bWAgdG8gaGFuZGxlIHRoZSBhc3luY2hyb25vdXMgY2xlYW51cC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgYW5kIEtWTSwgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIHRoZXJlIGFyZSBubyB1c2UtYWZ0ZXItZnJlZSBvciBkZWFkbG9jayBpc3N1ZXMgZHVyaW5nIE9PTSBoYW5kbGluZyBvZiBWTXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMTU6Mjk8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAwMjMxMWQxODVkYmNiNmQ5ZGExNjBhOWM3MDNiYTg2Zjc3OGE0Y2ViXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdWwgMjMgMTU6Mjg6NTggMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9tbXVfbm90aWZpZXIuaCBiL2luY2x1ZGUvbGludXgvbW11X25vdGlmaWVyLmhcbmluZGV4IGExMWE0NGVlZjUyMWU5Li5hMTgyMGE0ODc4NTRkZCAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvbW11X25vdGlmaWVyLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvbW11X25vdGlmaWVyLmhcbkBAIC04OCw2ICYjNDM7ODgsMTQgQEAgc3RydWN0IG1tdV9ub3RpZmllcl9vcHMge1xuIFx0dm9pZCAoKnJlbGVhc2UpKHN0cnVjdCBtbXVfbm90aWZpZXIgKnN1YnNjcmlwdGlvbixcbiBcdFx0XHRzdHJ1Y3QgbW1fc3RydWN0ICptbSk7XG4gXG4mIzQzO1x0LypcbiYjNDM7XHQgKiBBbnkgbW11IG5vdGlmaWVyIHRoYXQgZGVmaW5lcyB0aGlzIGlzIGF1dG9tYXRpY2FsbHkgdW5yZWdpc3RlcmVkXG4mIzQzO1x0ICogd2hlbiBpdHMgbW0gaXMgdGhlIHN1YmplY3Qgb2YgYW4gT09NIGtpbGwuICBhZnRlcl9vb21fdW5yZWdpc3RlcigpXG4mIzQzO1x0ICogaXMgaW52b2tlZCBhZnRlciBhbGwgb3RoZXIgb3V0c3RhbmRpbmcgY2FsbGJhY2tzIGhhdmUgdGVybWluYXRlZC5cbiYjNDM7XHQgKi9cbiYjNDM7XHR2b2lkICgqYWZ0ZXJfb29tX3VucmVnaXN0ZXIpKHN0cnVjdCBtbXVfbm90aWZpZXIgKnN1YnNjcmlwdGlvbixcbiYjNDM7XHRcdFx0XHQgICAgIHN0cnVjdCBtbV9zdHJ1Y3QgKm1tKTtcbiYjNDM7XG4gXHQvKlxuIFx0ICogY2xlYXJfZmx1c2hfeW91bmcgaXMgY2FsbGVkIGFmdGVyIHRoZSBWTSBpc1xuIFx0ICogdGVzdC1hbmQtY2xlYXJpbmcgdGhlIHlvdW5nL2FjY2Vzc2VkIGJpdGZsYWcgaW4gdGhlXG5AQCAtNDI0LDYgJiM0Mzs0MzIsOCBAQCBib29sIF9fbW11X25vdGlmaWVyX2NsZWFyX3lvdW5nKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLFxuIFx0XHR1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCk7XG4gYm9vbCBfX21tdV9ub3RpZmllcl90ZXN0X3lvdW5nKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLFxuIFx0XHR1bnNpZ25lZCBsb25nIGFkZHJlc3MpO1xuJiM0Mzt2b2lkIG1tdV9ub3RpZmllcl9vb21fZW50ZXIoc3RydWN0IG1tX3N0cnVjdCAqbW0pO1xuJiM0Mzt2b2lkIG1tdV9ub3RpZmllcl9iYXJyaWVyKHZvaWQpO1xuIGV4dGVybiBpbnQgX19tbXVfbm90aWZpZXJfaW52YWxpZGF0ZV9yYW5nZV9zdGFydChzdHJ1Y3QgbW11X25vdGlmaWVyX3JhbmdlICpyKTtcbiBleHRlcm4gdm9pZCBfX21tdV9ub3RpZmllcl9pbnZhbGlkYXRlX3JhbmdlX2VuZChzdHJ1Y3QgbW11X25vdGlmaWVyX3JhbmdlICpyKTtcbiBleHRlcm4gdm9pZCBfX21tdV9ub3RpZmllcl9hcmNoX2ludmFsaWRhdGVfc2Vjb25kYXJ5X3RsYnMoc3RydWN0IG1tX3N0cnVjdCAqbW0sXG5AQCAtNjQzLDYgJiM0Mzs2NTMsMTAgQEAgc3RhdGljIGlubGluZSB2b2lkIG1tdV9ub3RpZmllcl9zeW5jaHJvbml6ZSh2b2lkKVxuIHtcbiB9XG4gXG4mIzQzO3N0YXRpYyBpbmxpbmUgdm9pZCBtbXVfbm90aWZpZXJfb29tX2VudGVyKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tKVxuJiM0Mzt7XG4mIzQzO31cbiYjNDM7XG4gI2VuZGlmIC8qIENPTkZJR19NTVVfTk9USUZJRVIgKi9cbiBcbiAjZW5kaWYgLyogX0xJTlVYX01NVV9OT1RJRklFUl9IICovXG5kaWZmIC0tZ2l0IGEvbW0vbW11X25vdGlmaWVyLmMgYi9tbS9tbXVfbm90aWZpZXIuY1xuaW5kZXggMjQ1Yjc0ZjM5ZjkxMjIuLmYzMGJmOTVmMTdjN2FhIDEwMDY0NFxuLS0tIGEvbW0vbW11X25vdGlmaWVyLmNcbiYjNDM7JiM0MzsmIzQzOyBiL21tL21tdV9ub3RpZmllci5jXG5AQCAtNDksNiAmIzQzOzQ5LDM3IEBAIHN0cnVjdCBtbXVfbm90aWZpZXJfc3Vic2NyaXB0aW9ucyB7XG4gXHRzdHJ1Y3QgaGxpc3RfaGVhZCBkZWZlcnJlZF9saXN0O1xuIH07XG4gXG4mIzQzOy8qXG4mIzQzOyAqIENhbGxiYWNrIHN0cnVjdHVyZSBmb3IgYXN5bmNocm9ub3VzIE9PTSBjbGVhbnVwLlxuJiM0MzsgKiBVc2VkIHdpdGggY2FsbF9zcmN1KCkgdG8gZGVmZXIgYWZ0ZXJfb29tX3VucmVnaXN0ZXIgY2FsbGJhY2tzXG4mIzQzOyAqIHVudGlsIGFmdGVyIFNSQ1UgZ3JhY2UgcGVyaW9kIGNvbXBsZXRlcy5cbiYjNDM7ICovXG4mIzQzO3N0cnVjdCBtbXVfbm90aWZpZXJfb29tX2NhbGxiYWNrIHtcbiYjNDM7XHRzdHJ1Y3QgcmN1X2hlYWQgcmN1O1xuJiM0MztcdHN0cnVjdCBtbXVfbm90aWZpZXIgKnN1YnNjcmlwdGlvbjtcbiYjNDM7XHRzdHJ1Y3QgbW1fc3RydWN0ICptbTtcbiYjNDM7fTtcbiYjNDM7XG4mIzQzOy8qXG4mIzQzOyAqIENhbGxiYWNrIGZ1bmN0aW9uIGludm9rZWQgYWZ0ZXIgU1JDVSBncmFjZSBwZXJpb2QuXG4mIzQzOyAqIFNhZmVseSBjYWxscyBhZnRlcl9vb21fdW5yZWdpc3RlciBvbmNlIGFsbCByZWFkZXJzIGhhdmUgZmluaXNoZWQuXG4mIzQzOyAqL1xuJiM0MztzdGF0aWMgdm9pZCBtbXVfbm90aWZpZXJfb29tX2NhbGxiYWNrX2ZuKHN0cnVjdCByY3VfaGVhZCAqcmN1KVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IG1tdV9ub3RpZmllcl9vb21fY2FsbGJhY2sgKmNiID1cbiYjNDM7XHRcdGNvbnRhaW5lcl9vZihyY3UsIHN0cnVjdCBtbXVfbm90aWZpZXJfb29tX2NhbGxiYWNrLCByY3UpO1xuJiM0MztcbiYjNDM7XHQvKiBTYWZlIC0gYWxsIFNSQ1UgcmVhZGVycyBoYXZlIGZpbmlzaGVkICovXG4mIzQzO1x0Y2ItXHUwMDNlc3Vic2NyaXB0aW9uLVx1MDAzZW9wcy1cdTAwM2VhZnRlcl9vb21fdW5yZWdpc3RlcihjYi1cdTAwM2VzdWJzY3JpcHRpb24sIGNiLVx1MDAzZW1tKTtcbiYjNDM7XG4mIzQzO1x0LyogUmVsZWFzZSBtbSByZWZlcmVuY2UgdGFrZW4gd2hlbiBjYWxsYmFjayB3YXMgc2NoZWR1bGVkICovXG4mIzQzO1x0V0FSTl9PTl9PTkNFKGF0b21pY19yZWFkKFx1MDAyNmNiLVx1MDAzZW1tLVx1MDAzZW1tX2NvdW50KSBcdTAwM2M9IDApO1xuJiM0MztcdG1tZHJvcChjYi1cdTAwM2VtbSk7XG4mIzQzO1xuJiM0MztcdC8qIEZyZWUgY2FsbGJhY2sgc3RydWN0dXJlICovXG4mIzQzO1x0a2ZyZWUoY2IpO1xuJiM0Mzt9XG4mIzQzO1xuIC8qXG4gICogVGhpcyBpcyBhIGNvbGxpc2lvbi1yZXRyeSByZWFkLXNpZGUvd3JpdGUtc2lkZSAmIzM5O2xvY2smIzM5OywgYSBsb3QgbGlrZSBhXG4gICogc2VxY291bnQsIGhvd2V2ZXIgdGhpcyBhbGxvd3MgbXVsdGlwbGUgd3JpdGUtc2lkZXMgdG8gaG9sZCBpdCBhdFxuQEAgLTM4NSw2ICYjNDM7NDE2LDg0IEBAIHZvaWQgX19tbXVfbm90aWZpZXJfcmVsZWFzZShzdHJ1Y3QgbW1fc3RydWN0ICptbSlcbiBcdFx0bW5faGxpc3RfcmVsZWFzZShzdWJzY3JpcHRpb25zLCBtbSk7XG4gfVxuIFxuJiM0Mzt2b2lkIG1tdV9ub3RpZmllcl9vb21fZW50ZXIoc3RydWN0IG1tX3N0cnVjdCAqbW0pXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgbW11X25vdGlmaWVyX3N1YnNjcmlwdGlvbnMgKnN1YnNjcmlwdGlvbnMgPVxuJiM0MztcdFx0XHRcdFx0XHRtbS1cdTAwM2Vub3RpZmllcl9zdWJzY3JpcHRpb25zO1xuJiM0MztcdHN0cnVjdCBtbXVfbm90aWZpZXIgKnN1YnNjcmlwdGlvbjtcbiYjNDM7XHRzdHJ1Y3QgaGxpc3Rfbm9kZSAqdG1wO1xuJiM0MztcdEhMSVNUX0hFQUQob29tX2xpc3QpO1xuJiM0MztcdGludCBpZDtcbiYjNDM7XG4mIzQzO1x0aWYgKCFzdWJzY3JpcHRpb25zKVxuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcbiYjNDM7XHRpZCA9IHNyY3VfcmVhZF9sb2NrKFx1MDAyNnNyY3UpO1xuJiM0MztcbiYjNDM7XHQvKlxuJiM0MztcdCAqIFByZXZlbnQgZnVydGhlciBjYWxscyB0byB0aGUgTU1VIG5vdGlmaWVyLCBleGNlcHQgZm9yXG4mIzQzO1x0ICogcmVsZWFzZSBhbmQgYWZ0ZXJfb29tX3VucmVnaXN0ZXIuXG4mIzQzO1x0ICovXG4mIzQzO1x0c3Bpbl9sb2NrKFx1MDAyNnN1YnNjcmlwdGlvbnMtXHUwMDNlbG9jayk7XG4mIzQzO1x0aGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShzdWJzY3JpcHRpb24sIHRtcCxcbiYjNDM7XHRcdFx0XHQgIFx1MDAyNnN1YnNjcmlwdGlvbnMtXHUwMDNlbGlzdCwgaGxpc3QpIHtcbiYjNDM7XHRcdGlmICghc3Vic2NyaXB0aW9uLVx1MDAzZW9wcy1cdTAwM2VhZnRlcl9vb21fdW5yZWdpc3RlcilcbiYjNDM7XHRcdFx0Y29udGludWU7XG4mIzQzO1xuJiM0MztcdFx0LypcbiYjNDM7XHRcdCAqIGFmdGVyX29vbV91bnJlZ2lzdGVyIGFuZCBhbGxvY19ub3RpZmllciBhcmUgaW5jb21wYXRpYmxlLFxuJiM0MztcdFx0ICogYmVjYXVzZSB0aGVyZSBjb3VsZCBiZSBvdGhlciByZWZlcmVuY2VzIHRvIGFsbG9jYXRlZFxuJiM0MztcdFx0ICogbm90aWZpZXJzLlxuJiM0MztcdFx0ICovXG4mIzQzO1x0XHRpZiAoV0FSTl9PTihzdWJzY3JpcHRpb24tXHUwMDNlb3BzLVx1MDAzZWFsbG9jX25vdGlmaWVyKSlcbiYjNDM7XHRcdFx0Y29udGludWU7XG4mIzQzO1xuJiM0MztcdFx0aGxpc3RfZGVsX2luaXRfcmN1KFx1MDAyNnN1YnNjcmlwdGlvbi1cdTAwM2VobGlzdCk7XG4mIzQzO1x0XHRobGlzdF9hZGRfaGVhZChcdTAwMjZzdWJzY3JpcHRpb24tXHUwMDNlaGxpc3QsIFx1MDAyNm9vbV9saXN0KTtcbiYjNDM7XHR9XG4mIzQzO1x0c3Bpbl91bmxvY2soXHUwMDI2c3Vic2NyaXB0aW9ucy1cdTAwM2Vsb2NrKTtcbiYjNDM7XHRobGlzdF9mb3JfZWFjaF9lbnRyeShzdWJzY3JpcHRpb24sIFx1MDAyNm9vbV9saXN0LCBobGlzdClcbiYjNDM7XHRcdGlmIChzdWJzY3JpcHRpb24tXHUwMDNlb3BzLVx1MDAzZXJlbGVhc2UpXG4mIzQzO1x0XHRcdHN1YnNjcmlwdGlvbi1cdTAwM2VvcHMtXHUwMDNlcmVsZWFzZShzdWJzY3JpcHRpb24sIG1tKTtcbiYjNDM7XG4mIzQzO1x0c3JjdV9yZWFkX3VubG9jayhcdTAwMjZzcmN1LCBpZCk7XG4mIzQzO1xuJiM0MztcdGlmIChobGlzdF9lbXB0eShcdTAwMjZvb21fbGlzdCkpXG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1xuJiM0MztcdGhsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoc3Vic2NyaXB0aW9uLCB0bXAsXG4mIzQzO1x0XHRcdFx0ICBcdTAwMjZvb21fbGlzdCwgaGxpc3QpIHtcbiYjNDM7XHRcdHN0cnVjdCBtbXVfbm90aWZpZXJfb29tX2NhbGxiYWNrICpjYjtcbiYjNDM7XHRcdC8qXG4mIzQzO1x0XHQgKiBSZW1vdmUgZnJvbSBzdGFjay1iYXNlZCBvb21fbGlzdCBhbmQgcmVzZXQgaGxpc3QgdG8gdW5oYXNoZWQgc3RhdGUuXG4mIzQzO1x0XHQgKiBUaGlzIHNldHMgc3Vic2NyaXB0aW9uLVx1MDAzZWhsaXN0LnBwcmV2ID0gTlVMTCwgc28gZnV0dXJlIGNhbGxlcnMgb2ZcbiYjNDM7XHRcdCAqIG1tdV9ub3RpZmllcl91bnJlZ2lzdGVyKCkgKGUuZy4ga3ZtX2Rlc3Ryb3lfdm0pIHdpbGwgc2VlXG4mIzQzO1x0XHQgKiBobGlzdF91bmhhc2hlZCgpID09IHRydWUgYW5kIHRha2UgdGhlIHNhZmUgcGF0aCwgYXZvaWRpbmdcbiYjNDM7XHRcdCAqIHVzZS1hZnRlci1mcmVlIG9uIHRoZSBzdGFjay1hbGxvY2F0ZWQgb29tX2xpc3QgaGVhZC5cbiYjNDM7XHRcdCAqL1xuJiM0MztcdFx0aGxpc3RfZGVsX2luaXQoXHUwMDI2c3Vic2NyaXB0aW9uLVx1MDAzZWhsaXN0KTtcbiYjNDM7XG4mIzQzO1x0XHQvKlxuJiM0MztcdFx0ICogR0ZQX0FUT01JQyBmYWlsdXJlIGlzIGV4Y2VlZGluZ2x5IHJhcmUuIFdlIGNhbm5vdCBzbGVlcFxuJiM0MztcdFx0ICogaGVyZSAod291bGQgcmVpbnRyb2R1Y2UgdGhlIGRlYWRsb2NrIHRoaXMgcGF0Y2ggZml4ZXMpXG4mIzQzO1x0XHQgKiBhbmQgY2Fubm90IGNhbGwgYWZ0ZXJfb29tX3VucmVnaXN0ZXIgc3luY2hyb25vdXNseVxuJiM0MztcdFx0ICogd2l0aG91dCBmaXJzdCB3YWl0aW5nIGZvciBTUkNVIHJlYWRlcnMuIFRoZSBzdWJzY3JpYmVyXG4mIzQzO1x0XHQgKiB3aWxsIG5vdCByZWNlaXZlIGFmdGVyX29vbV91bnJlZ2lzdGVyIGJ1dCBjbGVhbnVwIHdpbGxcbiYjNDM7XHRcdCAqIGV2ZW50dWFsbHkgaGFwcGVuIHZpYSB0aGUgdW5yZWdpc3RlciBwYXRoLlxuJiM0MztcdFx0ICovXG4mIzQzO1x0XHRjYiA9IGttYWxsb2Nfb2JqKCpjYiwgR0ZQX0FUT01JQyk7XG4mIzQzO1x0XHRpZiAoIWNiKVxuJiM0MztcdFx0XHRjb250aW51ZTtcbiYjNDM7XG4mIzQzO1x0XHRjYi1cdTAwM2VzdWJzY3JpcHRpb24gPSBzdWJzY3JpcHRpb247XG4mIzQzO1x0XHRjYi1cdTAwM2VtbSA9IG1tO1xuJiM0MztcdFx0bW1ncmFiKG1tKTtcbiYjNDM7XG4mIzQzO1x0XHQvKiBTY2hlZHVsZSBjYWxsYmFjayAtIHJldHVybnMgaW1tZWRpYXRlbHkgKi9cbiYjNDM7XHRcdGNhbGxfc3JjdShcdTAwMjZzcmN1LCBcdTAwMjZjYi1cdTAwM2VyY3UsIG1tdV9ub3RpZmllcl9vb21fY2FsbGJhY2tfZm4pO1xuJiM0MztcdH1cbiYjNDM7fVxuJiM0MztcbiAvKlxuICAqIElmIG5vIHlvdW5nIGJpdGZsYWcgaXMgc3VwcG9ydGVkIGJ5IHRoZSBoYXJkd2FyZSwgLVx1MDAzZWNsZWFyX2ZsdXNoX3lvdW5nIGNhblxuICAqIHVubWFwIHRoZSBhZGRyZXNzIGFuZCByZXR1cm4gMSBvciAwIGRlcGVuZGluZyBpZiB0aGUgbWFwcGluZyBwcmV2aW91c2x5XG5AQCAtMTE0NCwzICYjNDM7MTI1MywxNiBAQCB2b2lkIG1tdV9ub3RpZmllcl9zeW5jaHJvbml6ZSh2b2lkKVxuIFx0c3luY2hyb25pemVfc3JjdShcdTAwMjZzcmN1KTtcbiB9XG4gRVhQT1JUX1NZTUJPTF9HUEwobW11X25vdGlmaWVyX3N5bmNocm9uaXplKTtcbiYjNDM7XG4mIzQzOy8qKlxuJiM0MzsgKiBtbXVfbm90aWZpZXJfYmFycmllciAtIFdhaXQgZm9yIGFsbCBwZW5kaW5nIE1NVSBub3RpZmllciBjYWxsYmFja3NcbiYjNDM7ICpcbiYjNDM7ICogV2FpdHMgZm9yIGFsbCBjYWxsX3NyY3UoKSBjYWxsYmFja3Mgc2NoZWR1bGVkIGJ5IG1tdV9ub3RpZmllcl9vb21fZW50ZXIoKVxuJiM0MzsgKiB0byBjb21wbGV0ZS4gVXNlZCBieSBzdWJzeXN0ZW1zIGR1cmluZyBjbGVhbnVwIHRvIHByZXZlbnQgdXNlLWFmdGVyLWZyZWVcbiYjNDM7ICogd2hlbiBkZXN0cm95aW5nIHN0cnVjdHVyZXMgYWNjZXNzZWQgYnkgdGhlIGNhbGxiYWNrcy5cbiYjNDM7ICovXG4mIzQzO3ZvaWQgbW11X25vdGlmaWVyX2JhcnJpZXIodm9pZClcbiYjNDM7e1xuJiM0MztcdHNyY3VfYmFycmllcihcdTAwMjZzcmN1KTtcbiYjNDM7fVxuJiM0MztFWFBPUlRfU1lNQk9MX0dQTChtbXVfbm90aWZpZXJfYmFycmllcik7XG5kaWZmIC0tZ2l0IGEvbW0vb29tX2tpbGwuYyBiL21tL29vbV9raWxsLmNcbmluZGV4IDVmMzcyZjZlMjZmYTMyLi42NmFkY2QwM2YzNmE4ZSAxMDA2NDRcbi0tLSBhL21tL29vbV9raWxsLmNcbiYjNDM7JiM0MzsmIzQzOyBiL21tL29vbV9raWxsLmNcbkBAIC01MTYsNiAmIzQzOzUxNiw5IEBAIHN0YXRpYyBib29sIF9fb29tX3JlYXBfdGFza19tbShzdHJ1Y3QgbW1fc3RydWN0ICptbSlcbiBcdGJvb2wgcmV0ID0gdHJ1ZTtcbiBcdE1BX1NUQVRFKG1hcywgXHUwMDI2bW0tXHUwMDNlbW1fbXQsIFVMT05HX01BWCwgVUxPTkdfTUFYKTtcbiBcbiYjNDM7XHQvKiBOb3RpZnkgTU1VIG5vdGlmaWVycyBhYm91dCB0aGUgT09NIGV2ZW50ICovXG4mIzQzO1x0bW11X25vdGlmaWVyX29vbV9lbnRlcihtbSk7XG4mIzQzO1xuIFx0LypcbiBcdCAqIFRlbGwgYWxsIHVzZXJzIG9mIGdldF91c2VyL2NvcHlfZnJvbV91c2VyIGV0Yy4uLiB0aGF0IHRoZSBjb250ZW50XG4gXHQgKiBpcyBubyBsb25nZXIgc3RhYmxlLiBObyBiYXJyaWVycyByZWFsbHkgbmVlZGVkIGJlY2F1c2UgdW5tYXBwaW5nXG5kaWZmIC0tZ2l0IGEvdmlydC9rdm0va3ZtX21haW4uYyBiL3ZpcnQva3ZtL2t2bV9tYWluLmNcbmluZGV4IGU0NGMyMGMwNDk2MTBkLi43OWE0ZGY4YTMzN2EyZCAxMDA2NDRcbi0tLSBhL3ZpcnQva3ZtL2t2bV9tYWluLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3ZpcnQva3ZtL2t2bV9tYWluLmNcbkBAIC04NzUsNiAmIzQzOzg3NSwyNCBAQCBzdGF0aWMgdm9pZCBrdm1fbW11X25vdGlmaWVyX3JlbGVhc2Uoc3RydWN0IG1tdV9ub3RpZmllciAqbW4sXG4gXHRzcmN1X3JlYWRfdW5sb2NrKFx1MDAyNmt2bS1cdTAwM2VzcmN1LCBpZHgpO1xuIH1cbiBcbiYjNDM7c3RhdGljIHZvaWQga3ZtX21tdV9ub3RpZmllcl9hZnRlcl9vb21fdW5yZWdpc3RlcihzdHJ1Y3QgbW11X25vdGlmaWVyICptbixcbiYjNDM7XHRcdFx0XHRcdFx0ICBzdHJ1Y3QgbW1fc3RydWN0ICptbSlcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBrdm0gKmt2bTtcbiYjNDM7XG4mIzQzO1x0a3ZtID0gbW11X25vdGlmaWVyX3RvX2t2bShtbik7XG4mIzQzO1xuJiM0MztcdC8qXG4mIzQzO1x0ICogQXQgdGhpcyBwb2ludCB0aGUgdW5yZWdpc3RlciBoYXMgY29tcGxldGVkIGFuZCBhbGwgb3RoZXIgY2FsbGJhY2tzXG4mIzQzO1x0ICogaGF2ZSB0ZXJtaW5hdGVkLiBDbGVhbiB1cCBhbnkgdW5iYWxhbmNlZCBpbnZhbGlkYXRpb24gY291bnRzLlxuJiM0MztcdCAqL1xuJiM0MztcdFdBUk5fT04ocmN1d2FpdF9hY3RpdmUoXHUwMDI2a3ZtLVx1MDAzZW1uX21lbXNsb3RzX3VwZGF0ZV9yY3V3YWl0KSk7XG4mIzQzO1x0aWYgKGt2bS1cdTAwM2Vtbl9hY3RpdmVfaW52YWxpZGF0ZV9jb3VudClcbiYjNDM7XHRcdGt2bS1cdTAwM2Vtbl9hY3RpdmVfaW52YWxpZGF0ZV9jb3VudCA9IDA7XG4mIzQzO1x0ZWxzZVxuJiM0MztcdFx0V0FSTl9PTihrdm0tXHUwMDNlbW11X2ludmFsaWRhdGVfaW5fcHJvZ3Jlc3MpO1xuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbW11X25vdGlmaWVyX29wcyBrdm1fbW11X25vdGlmaWVyX29wcyA9IHtcbiBcdC5pbnZhbGlkYXRlX3JhbmdlX3N0YXJ0XHQ9IGt2bV9tbXVfbm90aWZpZXJfaW52YWxpZGF0ZV9yYW5nZV9zdGFydCxcbiBcdC5pbnZhbGlkYXRlX3JhbmdlX2VuZFx0PSBrdm1fbW11X25vdGlmaWVyX2ludmFsaWRhdGVfcmFuZ2VfZW5kLFxuQEAgLTg4Miw2ICYjNDM7OTAwLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBtbXVfbm90aWZpZXJfb3BzIGt2bV9tbXVfbm90aWZpZXJfb3BzID0ge1xuIFx0LmNsZWFyX3lvdW5nXHRcdD0ga3ZtX21tdV9ub3RpZmllcl9jbGVhcl95b3VuZyxcbiBcdC50ZXN0X3lvdW5nXHRcdD0ga3ZtX21tdV9ub3RpZmllcl90ZXN0X3lvdW5nLFxuIFx0LnJlbGVhc2VcdFx0PSBrdm1fbW11X25vdGlmaWVyX3JlbGVhc2UsXG4mIzQzO1x0LmFmdGVyX29vbV91bnJlZ2lzdGVyXHQ9IGt2bV9tbXVfbm90aWZpZXJfYWZ0ZXJfb29tX3VucmVnaXN0ZXIsXG4gfTtcbiBcbiBzdGF0aWMgaW50IGt2bV9pbml0X21tdV9ub3RpZmllcihzdHJ1Y3Qga3ZtICprdm0pXG5AQCAtMTI3Myw3ICYjNDM7MTI5MiwxMyBAQCBzdGF0aWMgdm9pZCBrdm1fZGVzdHJveV92bShzdHJ1Y3Qga3ZtICprdm0pXG4gXHRcdGt2bS1cdTAwM2VidXNlc1tpXSA9IE5VTEw7XG4gXHR9XG4gXHRrdm1fY29hbGVzY2VkX21taW9fZnJlZShrdm0pO1xuLVx0bW11X25vdGlmaWVyX3VucmVnaXN0ZXIoXHUwMDI2a3ZtLVx1MDAzZW1tdV9ub3RpZmllciwga3ZtLVx1MDAzZW1tKTtcbiYjNDM7XHRpZiAoaGxpc3RfdW5oYXNoZWQoXHUwMDI2a3ZtLVx1MDAzZW1tdV9ub3RpZmllci5obGlzdCkpIHtcbiYjNDM7XHRcdC8qIFN1YnNjcmlwdGlvbiByZW1vdmVkIGJ5IE9PTS4gV2FpdCBmb3IgYXN5bmMgY2FsbGJhY2suICovXG4mIzQzO1x0XHRtbXVfbm90aWZpZXJfYmFycmllcigpO1xuJiM0MztcdFx0bW1kcm9wKGt2bS1cdTAwM2VtbSk7XG4mIzQzO1x0fSBlbHNlIHtcbiYjNDM7XHRcdG1tdV9ub3RpZmllcl91bnJlZ2lzdGVyKFx1MDAyNmt2bS1cdTAwM2VtbXVfbm90aWZpZXIsIGt2bS1cdTAwM2VtbSk7XG4mIzQzO1x0fVxuIFx0LypcbiBcdCAqIEF0IHRoaXMgcG9pbnQsIHBlbmRpbmcgY2FsbHMgdG8gaW52YWxpZGF0ZV9yYW5nZV9zdGFydCgpXG4gXHQgKiBoYXZlIGNvbXBsZXRlZCBidXQgbm8gbW9yZSBNTVUgbm90aWZpZXJzIHdpbGwgcnVuLCBzb1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIzIDE1OjI5PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtLVk0mIzM0OywKICAgICYjMzQ7TU1VX05PVElGSUVSJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bW11X25vdGlmaWVyX29vbV9lbnRlciYjMzQ7LAogICAgJiMzNDttbXVfbm90aWZpZXJfYmFycmllciYjMzQ7LAogICAgJiMzNDttbXVfbm90aWZpZXJfb29tX2NhbGxiYWNrX2ZuJiMzNDssCiAgICAmIzM0O2t2bV9tbXVfbm90aWZpZXJfYWZ0ZXJfb29tX3VucmVnaXN0ZXImIzM0OywKICAgICYjMzQ7a3ZtX2Rlc3Ryb3lfdm0mIzM0OywKICAgICYjMzQ7cHJvY2Vzc19tcmVsZWFzZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IE1NVSBub3RpZmllciBjYWxsYmFjayBgYWZ0ZXJfb29tX3VucmVnaXN0ZXJgIGFuZCBhIG1lY2hhbmlzbSB0byBpbnZva2UgaXQgYXN5bmNocm9ub3VzbHkgd2hlbiBhbiBPT00gZXZlbnQgb2NjdXJzIChgbW11X25vdGlmaWVyX29vbV9lbnRlcmApLiBJdCBhbHNvIGltcGxlbWVudHMgdGhpcyBjYWxsYmFjayBmb3IgS1ZNIGFuZCBtb2RpZmllcyBga3ZtX2Rlc3Ryb3lfdm1gIHRvIGhhbmRsZSB0aGUgYXN5bmNocm9ub3VzIGNsZWFudXAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IGFuZCBLVk0sIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSB0aGVyZSBhcmUgbm8gdXNlLWFmdGVyLWZyZWUgb3IgZGVhZGxvY2sgaXNzdWVzIGR1cmluZyBPT00gaGFuZGxpbmcgb2YgVk1zLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAwMjMxMWQxODVkYmNiNmQ5ZGExNjBhOWM3MDNiYTg2Zjc3OGE0Y2ViCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBKdWwgMjMgMTU6Mjg6NTggMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L21tdV9ub3RpZmllci5oIGIvaW5jbHVkZS9saW51eC9tbXVfbm90aWZpZXIuaAppbmRleCBhMTFhNDRlZWY1MjFlOS4uYTE4MjBhNDg3ODU0ZGQgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvbW11X25vdGlmaWVyLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9tbXVfbm90aWZpZXIuaApAQCAtODgsNiAmIzQzOzg4LDE0IEBAIHN0cnVjdCBtbXVfbm90aWZpZXJfb3BzIHsKIAl2b2lkICgqcmVsZWFzZSkoc3RydWN0IG1tdV9ub3RpZmllciAqc3Vic2NyaXB0aW9uLAogCQkJc3RydWN0IG1tX3N0cnVjdCAqbW0pOwogCiYjNDM7CS8qCiYjNDM7CSAqIEFueSBtbXUgbm90aWZpZXIgdGhhdCBkZWZpbmVzIHRoaXMgaXMgYXV0b21hdGljYWxseSB1bnJlZ2lzdGVyZWQKJiM0MzsJICogd2hlbiBpdHMgbW0gaXMgdGhlIHN1YmplY3Qgb2YgYW4gT09NIGtpbGwuICBhZnRlcl9vb21fdW5yZWdpc3RlcigpCiYjNDM7CSAqIGlzIGludm9rZWQgYWZ0ZXIgYWxsIG90aGVyIG91dHN0YW5kaW5nIGNhbGxiYWNrcyBoYXZlIHRlcm1pbmF0ZWQuCiYjNDM7CSAqLwomIzQzOwl2b2lkICgqYWZ0ZXJfb29tX3VucmVnaXN0ZXIpKHN0cnVjdCBtbXVfbm90aWZpZXIgKnN1YnNjcmlwdGlvbiwKJiM0MzsJCQkJICAgICBzdHJ1Y3QgbW1fc3RydWN0ICptbSk7CiYjNDM7CiAJLyoKIAkgKiBjbGVhcl9mbHVzaF95b3VuZyBpcyBjYWxsZWQgYWZ0ZXIgdGhlIFZNIGlzCiAJICogdGVzdC1hbmQtY2xlYXJpbmcgdGhlIHlvdW5nL2FjY2Vzc2VkIGJpdGZsYWcgaW4gdGhlCkBAIC00MjQsNiAmIzQzOzQzMiw4IEBAIGJvb2wgX19tbXVfbm90aWZpZXJfY2xlYXJfeW91bmcoc3RydWN0IG1tX3N0cnVjdCAqbW0sCiAJCXVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kKTsKIGJvb2wgX19tbXVfbm90aWZpZXJfdGVzdF95b3VuZyhzdHJ1Y3QgbW1fc3RydWN0ICptbSwKIAkJdW5zaWduZWQgbG9uZyBhZGRyZXNzKTsKJiM0Mzt2b2lkIG1tdV9ub3RpZmllcl9vb21fZW50ZXIoc3RydWN0IG1tX3N0cnVjdCAqbW0pOwomIzQzO3ZvaWQgbW11X25vdGlmaWVyX2JhcnJpZXIodm9pZCk7CiBleHRlcm4gaW50IF9fbW11X25vdGlmaWVyX2ludmFsaWRhdGVfcmFuZ2Vfc3RhcnQoc3RydWN0IG1tdV9ub3RpZmllcl9yYW5nZSAqcik7CiBleHRlcm4gdm9pZCBfX21tdV9ub3RpZmllcl9pbnZhbGlkYXRlX3JhbmdlX2VuZChzdHJ1Y3QgbW11X25vdGlmaWVyX3JhbmdlICpyKTsKIGV4dGVybiB2b2lkIF9fbW11X25vdGlmaWVyX2FyY2hfaW52YWxpZGF0ZV9zZWNvbmRhcnlfdGxicyhzdHJ1Y3QgbW1fc3RydWN0ICptbSwKQEAgLTY0Myw2ICYjNDM7NjUzLDEwIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBtbXVfbm90aWZpZXJfc3luY2hyb25pemUodm9pZCkKIHsKIH0KIAomIzQzO3N0YXRpYyBpbmxpbmUgdm9pZCBtbXVfbm90aWZpZXJfb29tX2VudGVyKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tKQomIzQzO3sKJiM0Mzt9CiYjNDM7CiAjZW5kaWYgLyogQ09ORklHX01NVV9OT1RJRklFUiAqLwogCiAjZW5kaWYgLyogX0xJTlVYX01NVV9OT1RJRklFUl9IICovCmRpZmYgLS1naXQgYS9tbS9tbXVfbm90aWZpZXIuYyBiL21tL21tdV9ub3RpZmllci5jCmluZGV4IDI0NWI3NGYzOWY5MTIyLi5mMzBiZjk1ZjE3YzdhYSAxMDA2NDQKLS0tIGEvbW0vbW11X25vdGlmaWVyLmMKJiM0MzsmIzQzOyYjNDM7IGIvbW0vbW11X25vdGlmaWVyLmMKQEAgLTQ5LDYgJiM0Mzs0OSwzNyBAQCBzdHJ1Y3QgbW11X25vdGlmaWVyX3N1YnNjcmlwdGlvbnMgewogCXN0cnVjdCBobGlzdF9oZWFkIGRlZmVycmVkX2xpc3Q7CiB9OwogCiYjNDM7LyoKJiM0MzsgKiBDYWxsYmFjayBzdHJ1Y3R1cmUgZm9yIGFzeW5jaHJvbm91cyBPT00gY2xlYW51cC4KJiM0MzsgKiBVc2VkIHdpdGggY2FsbF9zcmN1KCkgdG8gZGVmZXIgYWZ0ZXJfb29tX3VucmVnaXN0ZXIgY2FsbGJhY2tzCiYjNDM7ICogdW50aWwgYWZ0ZXIgU1JDVSBncmFjZSBwZXJpb2QgY29tcGxldGVzLgomIzQzOyAqLwomIzQzO3N0cnVjdCBtbXVfbm90aWZpZXJfb29tX2NhbGxiYWNrIHsKJiM0MzsJc3RydWN0IHJjdV9oZWFkIHJjdTsKJiM0MzsJc3RydWN0IG1tdV9ub3RpZmllciAqc3Vic2NyaXB0aW9uOwomIzQzOwlzdHJ1Y3QgbW1fc3RydWN0ICptbTsKJiM0Mzt9OwomIzQzOwomIzQzOy8qCiYjNDM7ICogQ2FsbGJhY2sgZnVuY3Rpb24gaW52b2tlZCBhZnRlciBTUkNVIGdyYWNlIHBlcmlvZC4KJiM0MzsgKiBTYWZlbHkgY2FsbHMgYWZ0ZXJfb29tX3VucmVnaXN0ZXIgb25jZSBhbGwgcmVhZGVycyBoYXZlIGZpbmlzaGVkLgomIzQzOyAqLwomIzQzO3N0YXRpYyB2b2lkIG1tdV9ub3RpZmllcl9vb21fY2FsbGJhY2tfZm4oc3RydWN0IHJjdV9oZWFkICpyY3UpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgbW11X25vdGlmaWVyX29vbV9jYWxsYmFjayAqY2IgPQomIzQzOwkJY29udGFpbmVyX29mKHJjdSwgc3RydWN0IG1tdV9ub3RpZmllcl9vb21fY2FsbGJhY2ssIHJjdSk7CiYjNDM7CiYjNDM7CS8qIFNhZmUgLSBhbGwgU1JDVSByZWFkZXJzIGhhdmUgZmluaXNoZWQgKi8KJiM0MzsJY2ItJmd0O3N1YnNjcmlwdGlvbi0mZ3Q7b3BzLSZndDthZnRlcl9vb21fdW5yZWdpc3RlcihjYi0mZ3Q7c3Vic2NyaXB0aW9uLCBjYi0mZ3Q7bW0pOwomIzQzOwomIzQzOwkvKiBSZWxlYXNlIG1tIHJlZmVyZW5jZSB0YWtlbiB3aGVuIGNhbGxiYWNrIHdhcyBzY2hlZHVsZWQgKi8KJiM0MzsJV0FSTl9PTl9PTkNFKGF0b21pY19yZWFkKCZhbXA7Y2ItJmd0O21tLSZndDttbV9jb3VudCkgJmx0Oz0gMCk7CiYjNDM7CW1tZHJvcChjYi0mZ3Q7bW0pOwomIzQzOwomIzQzOwkvKiBGcmVlIGNhbGxiYWNrIHN0cnVjdHVyZSAqLwomIzQzOwlrZnJlZShjYik7CiYjNDM7fQomIzQzOwogLyoKICAqIFRoaXMgaXMgYSBjb2xsaXNpb24tcmV0cnkgcmVhZC1zaWRlL3dyaXRlLXNpZGUgJiMzOTtsb2NrJiMzOTssIGEgbG90IGxpa2UgYQogICogc2VxY291bnQsIGhvd2V2ZXIgdGhpcyBhbGxvd3MgbXVsdGlwbGUgd3JpdGUtc2lkZXMgdG8gaG9sZCBpdCBhdApAQCAtMzg1LDYgJiM0Mzs0MTYsODQgQEAgdm9pZCBfX21tdV9ub3RpZmllcl9yZWxlYXNlKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tKQogCQltbl9obGlzdF9yZWxlYXNlKHN1YnNjcmlwdGlvbnMsIG1tKTsKIH0KIAomIzQzO3ZvaWQgbW11X25vdGlmaWVyX29vbV9lbnRlcihzdHJ1Y3QgbW1fc3RydWN0ICptbSkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBtbXVfbm90aWZpZXJfc3Vic2NyaXB0aW9ucyAqc3Vic2NyaXB0aW9ucyA9CiYjNDM7CQkJCQkJbW0tJmd0O25vdGlmaWVyX3N1YnNjcmlwdGlvbnM7CiYjNDM7CXN0cnVjdCBtbXVfbm90aWZpZXIgKnN1YnNjcmlwdGlvbjsKJiM0MzsJc3RydWN0IGhsaXN0X25vZGUgKnRtcDsKJiM0MzsJSExJU1RfSEVBRChvb21fbGlzdCk7CiYjNDM7CWludCBpZDsKJiM0MzsKJiM0MzsJaWYgKCFzdWJzY3JpcHRpb25zKQomIzQzOwkJcmV0dXJuOwomIzQzOwomIzQzOwlpZCA9IHNyY3VfcmVhZF9sb2NrKCZhbXA7c3JjdSk7CiYjNDM7CiYjNDM7CS8qCiYjNDM7CSAqIFByZXZlbnQgZnVydGhlciBjYWxscyB0byB0aGUgTU1VIG5vdGlmaWVyLCBleGNlcHQgZm9yCiYjNDM7CSAqIHJlbGVhc2UgYW5kIGFmdGVyX29vbV91bnJlZ2lzdGVyLgomIzQzOwkgKi8KJiM0MzsJc3Bpbl9sb2NrKCZhbXA7c3Vic2NyaXB0aW9ucy0mZ3Q7bG9jayk7CiYjNDM7CWhsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoc3Vic2NyaXB0aW9uLCB0bXAsCiYjNDM7CQkJCSAgJmFtcDtzdWJzY3JpcHRpb25zLSZndDtsaXN0LCBobGlzdCkgewomIzQzOwkJaWYgKCFzdWJzY3JpcHRpb24tJmd0O29wcy0mZ3Q7YWZ0ZXJfb29tX3VucmVnaXN0ZXIpCiYjNDM7CQkJY29udGludWU7CiYjNDM7CiYjNDM7CQkvKgomIzQzOwkJICogYWZ0ZXJfb29tX3VucmVnaXN0ZXIgYW5kIGFsbG9jX25vdGlmaWVyIGFyZSBpbmNvbXBhdGlibGUsCiYjNDM7CQkgKiBiZWNhdXNlIHRoZXJlIGNvdWxkIGJlIG90aGVyIHJlZmVyZW5jZXMgdG8gYWxsb2NhdGVkCiYjNDM7CQkgKiBub3RpZmllcnMuCiYjNDM7CQkgKi8KJiM0MzsJCWlmIChXQVJOX09OKHN1YnNjcmlwdGlvbi0mZ3Q7b3BzLSZndDthbGxvY19ub3RpZmllcikpCiYjNDM7CQkJY29udGludWU7CiYjNDM7CiYjNDM7CQlobGlzdF9kZWxfaW5pdF9yY3UoJmFtcDtzdWJzY3JpcHRpb24tJmd0O2hsaXN0KTsKJiM0MzsJCWhsaXN0X2FkZF9oZWFkKCZhbXA7c3Vic2NyaXB0aW9uLSZndDtobGlzdCwgJmFtcDtvb21fbGlzdCk7CiYjNDM7CX0KJiM0MzsJc3Bpbl91bmxvY2soJmFtcDtzdWJzY3JpcHRpb25zLSZndDtsb2NrKTsKJiM0MzsJaGxpc3RfZm9yX2VhY2hfZW50cnkoc3Vic2NyaXB0aW9uLCAmYW1wO29vbV9saXN0LCBobGlzdCkKJiM0MzsJCWlmIChzdWJzY3JpcHRpb24tJmd0O29wcy0mZ3Q7cmVsZWFzZSkKJiM0MzsJCQlzdWJzY3JpcHRpb24tJmd0O29wcy0mZ3Q7cmVsZWFzZShzdWJzY3JpcHRpb24sIG1tKTsKJiM0MzsKJiM0MzsJc3JjdV9yZWFkX3VubG9jaygmYW1wO3NyY3UsIGlkKTsKJiM0MzsKJiM0MzsJaWYgKGhsaXN0X2VtcHR5KCZhbXA7b29tX2xpc3QpKQomIzQzOwkJcmV0dXJuOwomIzQzOwomIzQzOwlobGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHN1YnNjcmlwdGlvbiwgdG1wLAomIzQzOwkJCQkgICZhbXA7b29tX2xpc3QsIGhsaXN0KSB7CiYjNDM7CQlzdHJ1Y3QgbW11X25vdGlmaWVyX29vbV9jYWxsYmFjayAqY2I7CiYjNDM7CQkvKgomIzQzOwkJICogUmVtb3ZlIGZyb20gc3RhY2stYmFzZWQgb29tX2xpc3QgYW5kIHJlc2V0IGhsaXN0IHRvIHVuaGFzaGVkIHN0YXRlLgomIzQzOwkJICogVGhpcyBzZXRzIHN1YnNjcmlwdGlvbi0mZ3Q7aGxpc3QucHByZXYgPSBOVUxMLCBzbyBmdXR1cmUgY2FsbGVycyBvZgomIzQzOwkJICogbW11X25vdGlmaWVyX3VucmVnaXN0ZXIoKSAoZS5nLiBrdm1fZGVzdHJveV92bSkgd2lsbCBzZWUKJiM0MzsJCSAqIGhsaXN0X3VuaGFzaGVkKCkgPT0gdHJ1ZSBhbmQgdGFrZSB0aGUgc2FmZSBwYXRoLCBhdm9pZGluZwomIzQzOwkJICogdXNlLWFmdGVyLWZyZWUgb24gdGhlIHN0YWNrLWFsbG9jYXRlZCBvb21fbGlzdCBoZWFkLgomIzQzOwkJICovCiYjNDM7CQlobGlzdF9kZWxfaW5pdCgmYW1wO3N1YnNjcmlwdGlvbi0mZ3Q7aGxpc3QpOwomIzQzOwomIzQzOwkJLyoKJiM0MzsJCSAqIEdGUF9BVE9NSUMgZmFpbHVyZSBpcyBleGNlZWRpbmdseSByYXJlLiBXZSBjYW5ub3Qgc2xlZXAKJiM0MzsJCSAqIGhlcmUgKHdvdWxkIHJlaW50cm9kdWNlIHRoZSBkZWFkbG9jayB0aGlzIHBhdGNoIGZpeGVzKQomIzQzOwkJICogYW5kIGNhbm5vdCBjYWxsIGFmdGVyX29vbV91bnJlZ2lzdGVyIHN5bmNocm9ub3VzbHkKJiM0MzsJCSAqIHdpdGhvdXQgZmlyc3Qgd2FpdGluZyBmb3IgU1JDVSByZWFkZXJzLiBUaGUgc3Vic2NyaWJlcgomIzQzOwkJICogd2lsbCBub3QgcmVjZWl2ZSBhZnRlcl9vb21fdW5yZWdpc3RlciBidXQgY2xlYW51cCB3aWxsCiYjNDM7CQkgKiBldmVudHVhbGx5IGhhcHBlbiB2aWEgdGhlIHVucmVnaXN0ZXIgcGF0aC4KJiM0MzsJCSAqLwomIzQzOwkJY2IgPSBrbWFsbG9jX29iaigqY2IsIEdGUF9BVE9NSUMpOwomIzQzOwkJaWYgKCFjYikKJiM0MzsJCQljb250aW51ZTsKJiM0MzsKJiM0MzsJCWNiLSZndDtzdWJzY3JpcHRpb24gPSBzdWJzY3JpcHRpb247CiYjNDM7CQljYi0mZ3Q7bW0gPSBtbTsKJiM0MzsJCW1tZ3JhYihtbSk7CiYjNDM7CiYjNDM7CQkvKiBTY2hlZHVsZSBjYWxsYmFjayAtIHJldHVybnMgaW1tZWRpYXRlbHkgKi8KJiM0MzsJCWNhbGxfc3JjdSgmYW1wO3NyY3UsICZhbXA7Y2ItJmd0O3JjdSwgbW11X25vdGlmaWVyX29vbV9jYWxsYmFja19mbik7CiYjNDM7CX0KJiM0Mzt9CiYjNDM7CiAvKgogICogSWYgbm8geW91bmcgYml0ZmxhZyBpcyBzdXBwb3J0ZWQgYnkgdGhlIGhhcmR3YXJlLCAtJmd0O2NsZWFyX2ZsdXNoX3lvdW5nIGNhbgogICogdW5tYXAgdGhlIGFkZHJlc3MgYW5kIHJldHVybiAxIG9yIDAgZGVwZW5kaW5nIGlmIHRoZSBtYXBwaW5nIHByZXZpb3VzbHkKQEAgLTExNDQsMyAmIzQzOzEyNTMsMTYgQEAgdm9pZCBtbXVfbm90aWZpZXJfc3luY2hyb25pemUodm9pZCkKIAlzeW5jaHJvbml6ZV9zcmN1KCZhbXA7c3JjdSk7CiB9CiBFWFBPUlRfU1lNQk9MX0dQTChtbXVfbm90aWZpZXJfc3luY2hyb25pemUpOwomIzQzOwomIzQzOy8qKgomIzQzOyAqIG1tdV9ub3RpZmllcl9iYXJyaWVyIC0gV2FpdCBmb3IgYWxsIHBlbmRpbmcgTU1VIG5vdGlmaWVyIGNhbGxiYWNrcwomIzQzOyAqCiYjNDM7ICogV2FpdHMgZm9yIGFsbCBjYWxsX3NyY3UoKSBjYWxsYmFja3Mgc2NoZWR1bGVkIGJ5IG1tdV9ub3RpZmllcl9vb21fZW50ZXIoKQomIzQzOyAqIHRvIGNvbXBsZXRlLiBVc2VkIGJ5IHN1YnN5c3RlbXMgZHVyaW5nIGNsZWFudXAgdG8gcHJldmVudCB1c2UtYWZ0ZXItZnJlZQomIzQzOyAqIHdoZW4gZGVzdHJveWluZyBzdHJ1Y3R1cmVzIGFjY2Vzc2VkIGJ5IHRoZSBjYWxsYmFja3MuCiYjNDM7ICovCiYjNDM7dm9pZCBtbXVfbm90aWZpZXJfYmFycmllcih2b2lkKQomIzQzO3sKJiM0MzsJc3JjdV9iYXJyaWVyKCZhbXA7c3JjdSk7CiYjNDM7fQomIzQzO0VYUE9SVF9TWU1CT0xfR1BMKG1tdV9ub3RpZmllcl9iYXJyaWVyKTsKZGlmZiAtLWdpdCBhL21tL29vbV9raWxsLmMgYi9tbS9vb21fa2lsbC5jCmluZGV4IDVmMzcyZjZlMjZmYTMyLi42NmFkY2QwM2YzNmE4ZSAxMDA2NDQKLS0tIGEvbW0vb29tX2tpbGwuYwomIzQzOyYjNDM7JiM0MzsgYi9tbS9vb21fa2lsbC5jCkBAIC01MTYsNiAmIzQzOzUxNiw5IEBAIHN0YXRpYyBib29sIF9fb29tX3JlYXBfdGFza19tbShzdHJ1Y3QgbW1fc3RydWN0ICptbSkKIAlib29sIHJldCA9IHRydWU7CiAJTUFfU1RBVEUobWFzLCAmYW1wO21tLSZndDttbV9tdCwgVUxPTkdfTUFYLCBVTE9OR19NQVgpOwogCiYjNDM7CS8qIE5vdGlmeSBNTVUgbm90aWZpZXJzIGFib3V0IHRoZSBPT00gZXZlbnQgKi8KJiM0MzsJbW11X25vdGlmaWVyX29vbV9lbnRlcihtbSk7CiYjNDM7CiAJLyoKIAkgKiBUZWxsIGFsbCB1c2VycyBvZiBnZXRfdXNlci9jb3B5X2Zyb21fdXNlciBldGMuLi4gdGhhdCB0aGUgY29udGVudAogCSAqIGlzIG5vIGxvbmdlciBzdGFibGUuIE5vIGJhcnJpZXJzIHJlYWxseSBuZWVkZWQgYmVjYXVzZSB1bm1hcHBpbmcKZGlmZiAtLWdpdCBhL3ZpcnQva3ZtL2t2bV9tYWluLmMgYi92aXJ0L2t2bS9rdm1fbWFpbi5jCmluZGV4IGU0NGMyMGMwNDk2MTBkLi43OWE0ZGY4YTMzN2EyZCAxMDA2NDQKLS0tIGEvdmlydC9rdm0va3ZtX21haW4uYwomIzQzOyYjNDM7JiM0MzsgYi92aXJ0L2t2bS9rdm1fbWFpbi5jCkBAIC04NzUsNiAmIzQzOzg3NSwyNCBAQCBzdGF0aWMgdm9pZCBrdm1fbW11X25vdGlmaWVyX3JlbGVhc2Uoc3RydWN0IG1tdV9ub3RpZmllciAqbW4sCiAJc3JjdV9yZWFkX3VubG9jaygmYW1wO2t2bS0mZ3Q7c3JjdSwgaWR4KTsKIH0KIAomIzQzO3N0YXRpYyB2b2lkIGt2bV9tbXVfbm90aWZpZXJfYWZ0ZXJfb29tX3VucmVnaXN0ZXIoc3RydWN0IG1tdV9ub3RpZmllciAqbW4sCiYjNDM7CQkJCQkJICBzdHJ1Y3QgbW1fc3RydWN0ICptbSkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBrdm0gKmt2bTsKJiM0MzsKJiM0MzsJa3ZtID0gbW11X25vdGlmaWVyX3RvX2t2bShtbik7CiYjNDM7CiYjNDM7CS8qCiYjNDM7CSAqIEF0IHRoaXMgcG9pbnQgdGhlIHVucmVnaXN0ZXIgaGFzIGNvbXBsZXRlZCBhbmQgYWxsIG90aGVyIGNhbGxiYWNrcwomIzQzOwkgKiBoYXZlIHRlcm1pbmF0ZWQuIENsZWFuIHVwIGFueSB1bmJhbGFuY2VkIGludmFsaWRhdGlvbiBjb3VudHMuCiYjNDM7CSAqLwomIzQzOwlXQVJOX09OKHJjdXdhaXRfYWN0aXZlKCZhbXA7a3ZtLSZndDttbl9tZW1zbG90c191cGRhdGVfcmN1d2FpdCkpOwomIzQzOwlpZiAoa3ZtLSZndDttbl9hY3RpdmVfaW52YWxpZGF0ZV9jb3VudCkKJiM0MzsJCWt2bS0mZ3Q7bW5fYWN0aXZlX2ludmFsaWRhdGVfY291bnQgPSAwOwomIzQzOwllbHNlCiYjNDM7CQlXQVJOX09OKGt2bS0mZ3Q7bW11X2ludmFsaWRhdGVfaW5fcHJvZ3Jlc3MpOwomIzQzO30KJiM0MzsKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbW11X25vdGlmaWVyX29wcyBrdm1fbW11X25vdGlmaWVyX29wcyA9IHsKIAkuaW52YWxpZGF0ZV9yYW5nZV9zdGFydAk9IGt2bV9tbXVfbm90aWZpZXJfaW52YWxpZGF0ZV9yYW5nZV9zdGFydCwKIAkuaW52YWxpZGF0ZV9yYW5nZV9lbmQJPSBrdm1fbW11X25vdGlmaWVyX2ludmFsaWRhdGVfcmFuZ2VfZW5kLApAQCAtODgyLDYgJiM0Mzs5MDAsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG1tdV9ub3RpZmllcl9vcHMga3ZtX21tdV9ub3RpZmllcl9vcHMgPSB7CiAJLmNsZWFyX3lvdW5nCQk9IGt2bV9tbXVfbm90aWZpZXJfY2xlYXJfeW91bmcsCiAJLnRlc3RfeW91bmcJCT0ga3ZtX21tdV9ub3RpZmllcl90ZXN0X3lvdW5nLAogCS5yZWxlYXNlCQk9IGt2bV9tbXVfbm90aWZpZXJfcmVsZWFzZSwKJiM0MzsJLmFmdGVyX29vbV91bnJlZ2lzdGVyCT0ga3ZtX21tdV9ub3RpZmllcl9hZnRlcl9vb21fdW5yZWdpc3RlciwKIH07CiAKIHN0YXRpYyBpbnQga3ZtX2luaXRfbW11X25vdGlmaWVyKHN0cnVjdCBrdm0gKmt2bSkKQEAgLTEyNzMsNyAmIzQzOzEyOTIsMTMgQEAgc3RhdGljIHZvaWQga3ZtX2Rlc3Ryb3lfdm0oc3RydWN0IGt2bSAqa3ZtKQogCQlrdm0tJmd0O2J1c2VzW2ldID0gTlVMTDsKIAl9CiAJa3ZtX2NvYWxlc2NlZF9tbWlvX2ZyZWUoa3ZtKTsKLQltbXVfbm90aWZpZXJfdW5yZWdpc3RlcigmYW1wO2t2bS0mZ3Q7bW11X25vdGlmaWVyLCBrdm0tJmd0O21tKTsKJiM0MzsJaWYgKGhsaXN0X3VuaGFzaGVkKCZhbXA7a3ZtLSZndDttbXVfbm90aWZpZXIuaGxpc3QpKSB7CiYjNDM7CQkvKiBTdWJzY3JpcHRpb24gcmVtb3ZlZCBieSBPT00uIFdhaXQgZm9yIGFzeW5jIGNhbGxiYWNrLiAqLwomIzQzOwkJbW11X25vdGlmaWVyX2JhcnJpZXIoKTsKJiM0MzsJCW1tZHJvcChrdm0tJmd0O21tKTsKJiM0MzsJfSBlbHNlIHsKJiM0MzsJCW1tdV9ub3RpZmllcl91bnJlZ2lzdGVyKCZhbXA7a3ZtLSZndDttbXVfbm90aWZpZXIsIGt2bS0mZ3Q7bW0pOwomIzQzOwl9CiAJLyoKIAkgKiBBdCB0aGlzIHBvaW50LCBwZW5kaW5nIGNhbGxzIHRvIGludmFsaWRhdGVfcmFuZ2Vfc3RhcnQoKQogCSAqIGhhdmUgY29tcGxldGVkIGJ1dCBubyBtb3JlIE1NVSBub3RpZmllcnMgd2lsbCBydW4sIHNvCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIzIDE1OjI5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ3NzkKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiAzMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqUGF0Y2ggU2VyaWVzIEV2YWx1YXRpb246IEEgS1ZNIGFuZCBPT00gS2lsbGVyIEludGVncmF0aW9uKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcyBwYXRjaCBzZXJpZXMuIE15IGluaXRpYWwgaW1wcmVzc2lvbiBpcyB0aGF0IHRoaXMgaXMgYSBwb3RlbnRpYWxseSBzaWduaWZpY2FudCBmdW5jdGlvbmFsIGNoYW5nZSB0b3VjaGluZyB1cG9uIHRoZSBjb3JlIGtlcm5lbCBjb21wb25lbnRzOiBNTVUgbm90aWZpZXJzLCB0aGUgT09NIGtpbGxlciwgYW5kLCBpbXBvcnRhbnRseSwgS1ZNLiBUaGUgbW9kaWZpY2F0aW9ucyBzcGFuIHNldmVyYWwga2V5IGZpbGVzIOKAkyBgaW5jbHVkZS9saW51eC9tbXVfbm90aWZpZXIuaGAsIGBtbS9tbXVfbm90aWZpZXIuY2AsIGBtbS9vb21fa2lsbC5jYCwgYW5kIGB2aXJ0L2t2bS9rdm1fbWFpbi5jYCDigJMgd2hpY2ggaW1tZWRpYXRlbHkgZmxhZ3MgdGhpcyBhcyBzb21ldGhpbmcgd2FycmFudGluZyBhIHRob3JvdWdoIHJldmlldy4KClNwZWNpZmljYWxseSwgaXQgbG9va3MgbGlrZSBhIG5ldyBgbW11X25vdGlmaWVyYCBjYWxsYmFjaywgYGFmdGVyX29vbV91bnJlZ2lzdGVyYCwgaGFzIGJlZW4gaW50cm9kdWNlZC4gVGhpcyBpbXBsaWVzIGEgbmV3IGludGVyYWN0aW9uIHBvaW50IHdpdGhpbiB0aGUgTU1VIG5vdGlmaWVyIGZyYW1ld29yaywgdHJpZ2dlcmVkIGFmdGVyIGFuIE9PTSBzY2VuYXJpby4gQWRkaXRpb25hbGx5LCB0aGUgbmV3IGZ1bmN0aW9uIGBtbXVfbm90aWZpZXJfb29tX2VudGVyKClgIGlzIGNhbGxlZCB3aXRoaW4gYF9fb29tX3JlYXBfdGFza19tbSgpYCwgaW5kaWNhdGluZyBhIHRpZ2h0ZXIgaW50ZWdyYXRpb24gYmV0d2VlbiB0aGUgT09NIGtpbGxlciBhbmQgdGhlIE1NVSBub3RpZmllciBpbmZyYXN0cnVjdHVyZS4gVGhlIGluY2x1c2lvbiBvZiBgbW11X25vdGlmaWVyX2JhcnJpZXIoKWAgZnVydGhlciBzdWdnZXN0cyBzeW5jaHJvbml6YXRpb24gY29uY2VybnMgdGhhdCB3aWxsIG5lZWQgY2FyZWZ1bCBzY3J1dGlueS4KCkZvciBLVk0sIHRoZSBwYXRjaCBpbXBsZW1lbnRzIGBhZnRlcl9vb21fdW5yZWdpc3RlcmAgd2l0aGluIGBrdm1fbWFpbi5jYC4gVGhpcyBpcyBwYXJ0aWN1bGFybHkgaW50ZXJlc3RpbmcgYmVjYXVzZSBpdCBzdWdnZXN0cyBhIHdheSBmb3IgS1ZNIHRvIGJlIGluZm9ybWVkIGFmdGVyIGFuIE9PTSBldmVudCBhbmQgcG90ZW50aWFsbHkgcGVyZm9ybSBjbGVhbnVwIG9yIHJlY292ZXJ5IG9wZXJhdGlvbnMgcmVsYXRlZCB0byBpdHMgdmlydHVhbCBtYWNoaW5lcy4KCkdpdmVuIHRoZSBzY29wZSBvZiB0aGVzZSBjaGFuZ2VzLCBJJiMzOTttIGFscmVhZHkgdGhpbmtpbmcgYWJvdXQgZnV6emluZyB0aGlzIHRob3JvdWdobHkuIFRoZSBpbnRlcnBsYXkgYmV0d2VlbiB0aGUgT09NIGtpbGxlciBhbmQgS1ZNIGlzIGNvbXBsZXgsIGFuZCB1bmV4cGVjdGVkIGludGVyYWN0aW9ucyBjb3VsZCBsZWFkIHRvIHN0YWJpbGl0eSBpc3N1ZXMuCgpOb3csIGxldCYjMzk7cyBtb3ZlIG9udG8gdGhlIGNvbmZpZ3VyYXRpb24gcmVxdWlyZW1lbnRzLiBUaGUgcmVsZXZhbnQgY29kZSBpbiBgbW0vbW11X25vdGlmaWVyLmNgIHdpbGwgbmF0dXJhbGx5IG9ubHkgYmUgY29tcGlsZWQgaWYgYENPTkZJR19NTVVfTk9USUZJRVJgIGlzIGVuYWJsZWQuIFRoZSBLVk0tc3BlY2lmaWMgY29kZSBpbiBgdmlydC9rdm0va3ZtX21haW4uY2Agb2J2aW91c2x5IHJlcXVpcmVzIGBDT05GSUdfS1ZNYC4gVGhlIGNvZGUgaW4gYG1tL29vbV9raWxsLmNgLCBob3dldmVyLCBzZWVtcyB0byBhbHdheXMgYmUgY29tcGlsZWQgKG9yIHBlcmhhcHMgaGFzIHNvbWUgaW1wbGljaXQgZGVwZW5kZW5jeSBvbiBgQ09ORklHX01NVWApLiBMZXQmIzM5O3MgZG91YmxlIGNoZWNrIHRoYXQgYXNzdW1wdGlvbnMgYXJlIGNvcnJlY3Q7IEkmIzM5O2xsIHVzZSBgZ3JlcHBlcmAgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgc3VidGxlIGNvbmZpZ3VyYXRpb25zIHRoYXQgd2UgbmVlZCB0byBiZSBhd2FyZSBvZi4gSSYjMzk7bGwgZm9jdXMgb24gYENPTkZJR19NTVVfTk9USUZJRVJgIGFuZCBgQ09ORklHX0tWTWAgZm9yIHRoZSBpbml0aWFsIHNlYXJjaCB0byBzZWUgaWYgYW55IG90aGVyIGRlcGVuZGVuY2llcyBjb21lIHVwLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIzIDE1OjI5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0NPTkZJR19NTVVfTk9USUZJRVImIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9kbWEtYnVmL2RtYS1yZXN2LmM9Nzc1PXN0YXRpYyBpbnQgX19pbml0IGRtYV9yZXN2X2xvY2tkZXAodm9pZClcbi0tXG5kcml2ZXJzL2RtYS1idWYvZG1hLXJlc3YuYy04MDAtXHRpX21tYXBfdW5sb2NrX3dyaXRlKFx1MDAyNm1hcHBpbmcpO1xuZHJpdmVycy9kbWEtYnVmL2RtYS1yZXN2LmM6ODAxOiNpZmRlZiBDT05GSUdfTU1VX05PVElGSUVSXG5kcml2ZXJzL2RtYS1idWYvZG1hLXJlc3YuYy04MDItXHRsb2NrX21hcF9hY3F1aXJlKFx1MDAyNl9fbW11X25vdGlmaWVyX2ludmFsaWRhdGVfcmFuZ2Vfc3RhcnRfbWFwKTtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfb2JqZWN0LmgtMzQtXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfb2JqZWN0Lmg6MzU6I2lmZGVmIENPTkZJR19NTVVfTk9USUZJRVJcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9vYmplY3QuaC0zNi0jaW5jbHVkZSBcdTAwM2NsaW51eC9tbXVfbm90aWZpZXIuaFx1MDAzZVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9vYmplY3QuaD0xMDM9c3RydWN0IGFtZGdwdV9ibyB7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X29iamVjdC5oLTExNi1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9vYmplY3QuaDoxMTc6I2lmZGVmIENPTkZJR19NTVVfTk9USUZJRVJcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9vYmplY3QuaC0xMTgtXHRzdHJ1Y3QgbW11X2ludGVydmFsX25vdGlmaWVyXHRub3RpZmllcjtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9LY29uZmlnPTExND1jb25maWcgRFJNX0k5MTVfVVNFUlBUUlxuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L0tjb25maWctMTE5LVx0aGVscFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvS2NvbmZpZzoxMjA6XHQgIFRoaXMgb3B0aW9uIHNlbGVjdHMgQ09ORklHX01NVV9OT1RJRklFUiBpZiBpdCBpc24mIzM5O3QgYWxyZWFkeVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvS2NvbmZpZy0xMjEtXHQgIHNlbGVjdGVkIHRvIGVuYWJsZWQgZnVsbCB1c2VycHRyIHN1cHBvcnQuXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2V4ZWNidWZmZXIuYz0yMDgwPXN0YXRpYyBpbnQgZWJfbW92ZV90b19ncHUoc3RydWN0IGk5MTVfZXhlY2J1ZmZlciAqZWIpXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2V4ZWNidWZmZXIuYy0yMTQ0LVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2V4ZWNidWZmZXIuYzoyMTQ1OiNpZmRlZiBDT05GSUdfTU1VX05PVElGSUVSXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fZXhlY2J1ZmZlci5jLTIxNDYtXHRpZiAoIWVyciBcdTAwMjZcdTAwMjYgKGViLVx1MDAzZWFyZ3MtXHUwMDNlZmxhZ3MgXHUwMDI2IF9fRVhFQ19VU0VSUFRSX1VTRUQpKSB7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX29iamVjdC5oPTg1Mz12b2lkIF9fc2htZW1fd3JpdGViYWNrKHNpemVfdCBzaXplLCBzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZyk7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fb2JqZWN0LmgtODU0LVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX29iamVjdC5oOjg1NTojaWZkZWYgQ09ORklHX01NVV9OT1RJRklFUlxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX29iamVjdC5oLTg1Ni1zdGF0aWMgaW5saW5lIGJvb2xcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fb2JqZWN0X3R5cGVzLmg9MjM5PXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0IHtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fb2JqZWN0X3R5cGVzLmgtNzEzLVx0dW5pb24ge1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX29iamVjdF90eXBlcy5oOjcxNDojaWZkZWYgQ09ORklHX01NVV9OT1RJRklFUlxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX29iamVjdF90eXBlcy5oLTcxNS1cdFx0c3RydWN0IGk5MTVfZ2VtX3VzZXJwdHIge1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV91c2VycHRyLmMtNDctXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fdXNlcnB0ci5jOjQ4OiNpZmRlZiBDT05GSUdfTU1VX05PVElGSUVSXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fdXNlcnB0ci5jLTQ5LVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV91c2VycHRyLmM9NDYyPWk5MTVfZ2VtX3VzZXJwdHJfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fdXNlcnB0ci5jLTUxOC1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV91c2VycHRyLmM6NTE5OiNpZmRlZiBDT05GSUdfTU1VX05PVElGSUVSXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fdXNlcnB0ci5jLTUyMC1cdG9iaiA9IGk5MTVfZ2VtX29iamVjdF9hbGxvYygpO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9yYWRlb24vS2NvbmZpZz0zOD1jb25maWcgRFJNX1JBREVPTl9VU0VSUFRSXG4tLVxuZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9LY29uZmlnLTQyLVx0aGVscFxuZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9LY29uZmlnOjQzOlx0ICBUaGlzIG9wdGlvbiBzZWxlY3RzIENPTkZJR19NTVVfTk9USUZJRVIgaWYgaXQgaXNuJiMzOTt0IGFscmVhZHlcbmRyaXZlcnMvZ3B1L2RybS9yYWRlb24vS2NvbmZpZy00NC1cdCAgc2VsZWN0ZWQgdG8gZW5hYmxlZCBmdWxsIHVzZXJwdHIgc3VwcG9ydC5cbi0tXG5kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL01ha2VmaWxlPTM0PXJhZGVvbi15ICYjNDM7PSByYWRlb25fZGV2aWNlLm8gcmFkZW9uX2FzaWMubyByYWRlb25fa21zLm8gXFxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL01ha2VmaWxlLTUzLVxuZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9NYWtlZmlsZTo1NDpyYWRlb24tJChDT05GSUdfTU1VX05PVElGSUVSKSAmIzQzOz0gcmFkZW9uX21uLm9cbmRyaXZlcnMvZ3B1L2RybS9yYWRlb24vTWFrZWZpbGUtNTUtXG4tLVxuZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb24uaC03MS1cbmRyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uLmg6NzI6I2lmZGVmIENPTkZJR19NTVVfTk9USUZJRVJcbmRyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uLmgtNzMtI2luY2x1ZGUgXHUwMDNjbGludXgvbW11X25vdGlmaWVyLmhcdTAwM2Vcbi0tXG5kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbi5oPTQ4Mz1zdHJ1Y3QgcmFkZW9uX2JvIHtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbi5oLTUwNi1cbmRyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uLmg6NTA3OiNpZmRlZiBDT05GSUdfTU1VX05PVElGSUVSXG5kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbi5oLTUwOC1cdHN0cnVjdCBtbXVfaW50ZXJ2YWxfbm90aWZpZXJcdG5vdGlmaWVyO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uLmg9MTc3Nj12b2lkIHJhZGVvbl90ZXN0X3N5bmNpbmcoc3RydWN0IHJhZGVvbl9kZXZpY2UgKnJkZXYpO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uLmgtMTc4MC0gKi9cbmRyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uLmg6MTc4MTojaWYgZGVmaW5lZChDT05GSUdfTU1VX05PVElGSUVSKVxuZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb24uaC0xNzgyLWludCByYWRlb25fbW5fcmVnaXN0ZXIoc3RydWN0IHJhZGVvbl9ibyAqYm8sIHVuc2lnbmVkIGxvbmcgYWRkcik7XG4tLVxuaW5jbHVkZS9saW51eC9tbV90eXBlcy5oPTExNjA9c3RydWN0IG1tX3N0cnVjdCB7XG4tLVxuaW5jbHVkZS9saW51eC9tbV90eXBlcy5oLTEzMjgtXHRcdHN0cnVjdCBmaWxlIF9fcmN1ICpleGVfZmlsZTtcbmluY2x1ZGUvbGludXgvbW1fdHlwZXMuaDoxMzI5OiNpZmRlZiBDT05GSUdfTU1VX05PVElGSUVSXG5pbmNsdWRlL2xpbnV4L21tX3R5cGVzLmgtMTMzMC1cdFx0c3RydWN0IG1tdV9ub3RpZmllcl9zdWJzY3JpcHRpb25zICpub3RpZmllcl9zdWJzY3JpcHRpb25zO1xuLS1cbmluY2x1ZGUvbGludXgvbW11X25vdGlmaWVyLmg9Mjk4PXN0cnVjdCBtbXVfaW50ZXJ2YWxfbm90aWZpZXIge1xuLS1cbmluY2x1ZGUvbGludXgvbW11X25vdGlmaWVyLmgtMzA1LVxuaW5jbHVkZS9saW51eC9tbXVfbm90aWZpZXIuaDozMDY6I2lmZGVmIENPTkZJR19NTVVfTk9USUZJRVJcbmluY2x1ZGUvbGludXgvbW11X25vdGlmaWVyLmgtMzA3LVxuLS1cbmluY2x1ZGUvbGludXgvbW11X25vdGlmaWVyLmg9NTU3PXN0YXRpYyBpbmxpbmUgdm9pZCBtbXVfbm90aWZpZXJfcmFuZ2VfaW5pdF9vd25lcihcbi0tXG5pbmNsdWRlL2xpbnV4L21tdV9ub3RpZmllci5oLTU2Ni1cbmluY2x1ZGUvbGludXgvbW11X25vdGlmaWVyLmg6NTY3OiNlbHNlIC8qIENPTkZJR19NTVVfTk9USUZJRVIgKi9cbmluY2x1ZGUvbGludXgvbW11X25vdGlmaWVyLmgtNTY4LVxuLS1cbmluY2x1ZGUvbGludXgvbW11X25vdGlmaWVyLmg9NjU2PXN0YXRpYyBpbmxpbmUgdm9pZCBtbXVfbm90aWZpZXJfb29tX2VudGVyKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tKVxuLS1cbmluY2x1ZGUvbGludXgvbW11X25vdGlmaWVyLmgtNjU5LVxuaW5jbHVkZS9saW51eC9tbXVfbm90aWZpZXIuaDo2NjA6I2VuZGlmIC8qIENPTkZJR19NTVVfTk9USUZJRVIgKi9cbmluY2x1ZGUvbGludXgvbW11X25vdGlmaWVyLmgtNjYxLVxuLS1cbm1tL01ha2VmaWxlPTg4PW9iai0kKENPTkZJR19TUEFSU0VNRU1fVk1FTU1BUCkgJiM0Mzs9IHNwYXJzZS12bWVtbWFwLm9cbm1tL01ha2VmaWxlOjg5Om9iai0kKENPTkZJR19NTVVfTk9USUZJRVIpICYjNDM7PSBtbXVfbm90aWZpZXIub1xubW0vTWFrZWZpbGUtOTAtb2JqLSQoQ09ORklHX0tTTSkgJiM0Mzs9IGtzbS5vXG4tLVxubW0vZGVidWcuYz0xNzU9dm9pZCBkdW1wX21tKGNvbnN0IHN0cnVjdCBtbV9zdHJ1Y3QgKm1tKVxuLS1cbm1tL2RlYnVnLmMtMTkyLVx0XHRcJiMzNDtleGVfZmlsZSAlcHhcXG5cJiMzNDtcbm1tL2RlYnVnLmM6MTkzOiNpZmRlZiBDT05GSUdfTU1VX05PVElGSUVSXG5tbS9kZWJ1Zy5jLTE5NC1cdFx0XCYjMzQ7bm90aWZpZXJfc3Vic2NyaXB0aW9ucyAlcHhcXG5cJiMzNDtcbi0tXG5tbS9kZWJ1Zy5jLTIyMS1cdFx0bW0tXHUwMDNlZXhlX2ZpbGUsXG5tbS9kZWJ1Zy5jOjIyMjojaWZkZWYgQ09ORklHX01NVV9OT1RJRklFUlxubW0vZGVidWcuYy0yMjMtXHRcdG1tLVx1MDAzZW5vdGlmaWVyX3N1YnNjcmlwdGlvbnMsXG4tLVxubW0vaW50ZXJuYWwuaD0xODgwPXN0YXRpYyBpbmxpbmUgdm9pZCBtYXliZV9ybWFwX3VubG9ja19hY3Rpb24oc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsXG4tLVxubW0vaW50ZXJuYWwuaC0xODkzLVxubW0vaW50ZXJuYWwuaDoxODk0OiNpZmRlZiBDT05GSUdfTU1VX05PVElGSUVSXG5tbS9pbnRlcm5hbC5oLTE4OTUtc3RhdGljIGlubGluZSBib29sIGNsZWFyX2ZsdXNoX3lvdW5nX3B0ZXNfbm90aWZ5KHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLFxuLS1cbm1tL2ludGVybmFsLmg9MTkyNj1zdGF0aWMgaW5saW5lIGJvb2wgcG1kcF90ZXN0X2FuZF9jbGVhcl95b3VuZ19ub3RpZnkoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsXG4tLVxubW0vaW50ZXJuYWwuaC0xOTM1LVxubW0vaW50ZXJuYWwuaDoxOTM2OiNlbHNlIC8qIENPTkZJR19NTVVfTk9USUZJRVIgKi9cbm1tL2ludGVybmFsLmgtMTkzNy1cbi0tXG5tbS9pbnRlcm5hbC5oLTE5NDItXG5tbS9pbnRlcm5hbC5oOjE5NDM6I2VuZGlmIC8qIENPTkZJR19NTVVfTk9USUZJRVIgKi9cbm1tL2ludGVybmFsLmgtMTk0NC1cbi0tXG5tbS9wYWdlX2FsbG9jLmM9NDMzNz12b2lkIGZzX3JlY2xhaW1fYWNxdWlyZShnZnBfdCBnZnBfbWFzaylcbi0tXG5tbS9wYWdlX2FsbG9jLmMtNDM0NC1cbm1tL3BhZ2VfYWxsb2MuYzo0MzQ1OiNpZmRlZiBDT05GSUdfTU1VX05PVElGSUVSXG5tbS9wYWdlX2FsbG9jLmMtNDM0Ni1cdFx0bG9ja19tYXBfYWNxdWlyZShcdTAwMjZfX21tdV9ub3RpZmllcl9pbnZhbGlkYXRlX3JhbmdlX3N0YXJ0X21hcCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMTU6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODMxMQoJCQkJCQkJb3V0cHV0OiAxOAoJCQkJCQkJdGhvdWdodHM6IDM0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBSb2xlIG9mIGBDT05GSUdfTU1VX05PVElGSUVSYCoqCgpSaWdodCwgbGV0JiMzOTtzIHNlZS4uLiBJJiMzOTttIG5vdGljaW5nIGBDT05GSUdfTU1VX05PVElGSUVSYCBpcyBhIGRlcGVuZGVuY3ksIG9yIGF0IGxlYXN0IHVzZWQsIGJ5IHF1aXRlIGEgZmV3IHNpZ25pZmljYW50IGRyaXZlcnMuIERSTSwgS1ZNLi4uIHRoYXQmIzM5O3MgYSBrZXkgYXJlYSB0byBiZSBhd2FyZSBvZi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBiZXR0ZXIuIE5vdywgd2hhdCYjMzk7cyBkcml2aW5nIHRoaXM/IExldCYjMzk7cyBkcmlsbCBkb3duIGludG8gYENPTkZJR19LVk1gIHNwZWNpZmljYWxseSBhbmQgZmlndXJlIG91dCB3aHkgS1ZNIG5lZWRzIHRoaXMuIEl0JiMzOTtzIGFsbW9zdCBjZXJ0YWluIHRvIGJlIHJlbGF0ZWQgdG8gbWVtb3J5IG1hbmFnZW1lbnQgYW5kIHZpcnR1YWxpemF0aW9uLiBMZXQgbWUgZXhhbWluZSB0aGUgS1ZNIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhbmQgcmVsYXRlZCBjb2RlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIE1NVSBub3RpZmllciBwbGF5cyBpbnRvIG1lbW9yeSBtYW5hZ2VtZW50IGZvciB2aXJ0dWFsIG1hY2hpbmVzIGFuZCB3aGF0IHRoZSBpbXBsaWNhdGlvbnMgYXJlIGZvciBwZXJmb3JtYW5jZSBhbmQgc3RhYmlsaXR5LiBPa2F5LCBsZXQmIzM5O3Mgc3RhcnQgZGlnZ2luZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMyAxNToyOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtDT05GSUdfS1ZNJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAzMzc1IGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5hcmNoL2FybTY0L0tidWlsZD02PW9iai15XHRcdFx0JiM0Mzs9IGtlcm5lbC8gbW0vIG5ldC9cbmFyY2gvYXJtNjQvS2J1aWxkOjc6b2JqLSQoQ09ORklHX0tWTSlcdCYjNDM7PSBrdm0vXG5hcmNoL2FybTY0L0tidWlsZC04LW9iai0kKENPTkZJR19YRU4pXHQmIzQzOz0geGVuL1xuLS1cbmFyY2gvYXJtNjQvY29uZmlncy9kZWZjb25maWc9MTI0PUNPTkZJR19WSVJUVUFMSVpBVElPTj15XG5hcmNoL2FybTY0L2NvbmZpZ3MvZGVmY29uZmlnOjEyNTpDT05GSUdfS1ZNPXlcbmFyY2gvYXJtNjQvY29uZmlncy9kZWZjb25maWctMTI2LUNPTkZJR19KVU1QX0xBQkVMPXlcbi0tXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2ZpeG1hcC5oPTM2PWVudW0gZml4ZWRfYWRkcmVzc2VzIHtcbi0tXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2ZpeG1hcC5oLTUwLVxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9maXhtYXAuaDo1MTojaWZkZWYgQ09ORklHX0tWTVxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9maXhtYXAuaC01Mi1cdC8qIE9uZSBzbG90IHBlciBDUFUsIG1hcHBpbmcgdGhlIGd1ZXN0JiMzOTtzIFZOQ1IgcGFnZSBhdCBFTDIuICovXG4tLVxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9rdm1faG9zdC5oPTY4PWVudW0ga3ZtX21vZGUge1xuLS1cbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20va3ZtX2hvc3QuaC03My19O1xuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9rdm1faG9zdC5oOjc0OiNpZmRlZiBDT05GSUdfS1ZNXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmgtNzUtZW51bSBrdm1fbW9kZSBrdm1fZ2V0X21vZGUodm9pZCk7XG4tLVxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9rdm1faG9zdC5oPTE0NjQ9c3RhdGljIGlubGluZSBib29sIGt2bV9wbXVfY291bnRlcl9kZWZlcnJlZChzdHJ1Y3QgcGVyZl9ldmVudF9hdHRyICphdHRyKVxuLS1cbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20va3ZtX2hvc3QuaC0xNDY4LVxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9rdm1faG9zdC5oOjE0Njk6I2lmZGVmIENPTkZJR19LVk1cbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20va3ZtX2hvc3QuaC0xNDcwLXZvaWQga3ZtX3NldF9wbXVfZXZlbnRzKHU2NCBzZXQsIHN0cnVjdCBwZXJmX2V2ZW50X2F0dHIgKmF0dHIpO1xuLS1cbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20va3ZtX2hvc3QuaD0xNTMxPWludCBrdm1fdHJuZ19jYWxsKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7XG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2t2bV9ob3N0Lmg6MTUzMjojaWZkZWYgQ09ORklHX0tWTVxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9rdm1faG9zdC5oLTE1MzMtZXh0ZXJuIHBoeXNfYWRkcl90IGh5cF9tZW1fYmFzZTtcbi0tXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3ZpcnQuaD05MT1zdGF0aWMgaW5saW5lIGJvb2wgaXNfcGt2bV9pbml0aWFsaXplZCh2b2lkKVxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS92aXJ0LmgtOTIte1xuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS92aXJ0Lmg6OTM6XHRyZXR1cm4gSVNfRU5BQkxFRChDT05GSUdfS1ZNKSBcdTAwMjZcdTAwMjZcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vdmlydC5oLTk0LVx0ICAgICAgIHN0YXRpY19icmFuY2hfbGlrZWx5KFx1MDAyNmt2bV9wcm90ZWN0ZWRfbW9kZV9pbml0aWFsaXplZCk7XG4tLVxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS92aXJ0LmgtOTYtXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3ZpcnQuaDo5NzojaWZkZWYgQ09ORklHX0tWTVxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS92aXJ0LmgtOTgtYm9vbCBwa3ZtX2ZvcmNlX3JlY2xhaW1fZ3Vlc3RfcGFnZShwaHlzX2FkZHJfdCBwaHlzKTtcbi0tXG5hcmNoL2FybTY0L2tlcm5lbC9hc20tb2Zmc2V0cy5jPTI3PWludCBtYWluKHZvaWQpXG4tLVxuYXJjaC9hcm02NC9rZXJuZWwvYXNtLW9mZnNldHMuYy0xMDMtICBCTEFOSygpO1xuYXJjaC9hcm02NC9rZXJuZWwvYXNtLW9mZnNldHMuYzoxMDQ6I2lmZGVmIENPTkZJR19LVk1cbmFyY2gvYXJtNjQva2VybmVsL2FzbS1vZmZzZXRzLmMtMTA1LSAgREVGSU5FKFZDUFVfQ09OVEVYVCxcdFx0b2Zmc2V0b2Yoc3RydWN0IGt2bV92Y3B1LCBhcmNoLmN0eHQpKTtcbi0tXG5hcmNoL2FybTY0L2tlcm5lbC9jcHVmZWF0dXJlLmM9MjQzMz1zdGF0aWMgdm9pZCBlbGZfaHdjYXBfZml4dXAodm9pZClcbi0tXG5hcmNoL2FybTY0L2tlcm5lbC9jcHVmZWF0dXJlLmMtMjQ0MC1cbmFyY2gvYXJtNjQva2VybmVsL2NwdWZlYXR1cmUuYzoyNDQxOiNpZmRlZiBDT05GSUdfS1ZNXG5hcmNoL2FybTY0L2tlcm5lbC9jcHVmZWF0dXJlLmMtMjQ0Mi1zdGF0aWMgYm9vbCBpc19rdm1fcHJvdGVjdGVkX21vZGUoY29uc3Qgc3RydWN0IGFybTY0X2NwdV9jYXBhYmlsaXRpZXMgKmVudHJ5LCBpbnQgX191bnVzZWQpXG4tLVxuYXJjaC9hcm02NC9rZXJuZWwvY3B1ZmVhdHVyZS5jLTI0NDUtfVxuYXJjaC9hcm02NC9rZXJuZWwvY3B1ZmVhdHVyZS5jOjI0NDY6I2VuZGlmIC8qIENPTkZJR19LVk0gKi9cbmFyY2gvYXJtNjQva2VybmVsL2NwdWZlYXR1cmUuYy0yNDQ3LVxuLS1cbmFyY2gvYXJtNjQva2VybmVsL2NwdWZlYXR1cmUuYz0yNTQzPXN0YXRpYyBjb25zdCBzdHJ1Y3QgYXJtNjRfY3B1X2NhcGFiaWxpdGllcyBhcm02NF9mZWF0dXJlc1tdID0ge1xuLS1cbmFyY2gvYXJtNjQva2VybmVsL2NwdWZlYXR1cmUuYy0yNjI4LVx0fSxcbmFyY2gvYXJtNjQva2VybmVsL2NwdWZlYXR1cmUuYzoyNjI5OiNpZmRlZiBDT05GSUdfS1ZNXG5hcmNoL2FybTY0L2tlcm5lbC9jcHVmZWF0dXJlLmMtMjYzMC1cdHtcbi0tXG5hcmNoL2FybTY0L2tlcm5lbC9jcHVmZWF0dXJlLmM9Mzc1OT1zdGF0aWMgdm9pZCB2ZXJpZnlfaHlwX2NhcGFiaWxpdGllcyh2b2lkKVxuLS1cbmFyY2gvYXJtNjQva2VybmVsL2NwdWZlYXR1cmUuYy0zNzY0LVxuYXJjaC9hcm02NC9rZXJuZWwvY3B1ZmVhdHVyZS5jOjM3NjU6XHRpZiAoIUlTX0VOQUJMRUQoQ09ORklHX0tWTSkpXG5hcmNoL2FybTY0L2tlcm5lbC9jcHVmZWF0dXJlLmMtMzc2Ni1cdFx0cmV0dXJuO1xuLS1cbmFyY2gvYXJtNjQva2VybmVsL2Zwc2ltZC5jPTEwNTA9aW50IHZlY192ZXJpZnlfdnFfbWFwKGVudW0gdmVjX3R5cGUgdHlwZSlcbi0tXG5hcmNoL2FybTY0L2tlcm5lbC9mcHNpbWQuYy0xMDY0LVxuYXJjaC9hcm02NC9rZXJuZWwvZnBzaW1kLmM6MTA2NTpcdGlmICghSVNfRU5BQkxFRChDT05GSUdfS1ZNKSB8fCAhaXNfaHlwX21vZGVfYXZhaWxhYmxlKCkpXG5hcmNoL2FybTY0L2tlcm5lbC9mcHNpbWQuYy0xMDY2LVx0XHRyZXR1cm4gMDtcbi0tXG5hcmNoL2FybTY0L2tlcm5lbC9pbWFnZS12YXJzLmg9NzI9UElfRVhQT1JUX1NZTShfZGF0YSk7XG5hcmNoL2FybTY0L2tlcm5lbC9pbWFnZS12YXJzLmgtNzMtXG5hcmNoL2FybTY0L2tlcm5lbC9pbWFnZS12YXJzLmg6NzQ6I2lmZGVmIENPTkZJR19LVk1cbmFyY2gvYXJtNjQva2VybmVsL2ltYWdlLXZhcnMuaC03NS1cbi0tXG5hcmNoL2FybTY0L2tlcm5lbC9pbWFnZS12YXJzLmg9MTQ3PUtWTV9OVkhFX0FMSUFTKGt2bV9wcm90ZWN0ZWRfbW9kZV9pbml0aWFsaXplZCk7XG5hcmNoL2FybTY0L2tlcm5lbC9pbWFnZS12YXJzLmgtMTQ4LVxuYXJjaC9hcm02NC9rZXJuZWwvaW1hZ2UtdmFycy5oOjE0OTojZW5kaWYgLyogQ09ORklHX0tWTSAqL1xuYXJjaC9hcm02NC9rZXJuZWwvaW1hZ2UtdmFycy5oLTE1MC1cbi0tXG5hcmNoL2FybTY0L2tlcm5lbC9zbXAuYz00MjM9c3RhdGljIHZvaWQgX19pbml0IGh5cF9tb2RlX2NoZWNrKHZvaWQpXG4tLVxuYXJjaC9hcm02NC9rZXJuZWwvc21wLmMtNDMxLVx0XHRwcl9pbmZvKFwmIzM0O0NQVTogQWxsIENQVShzKSBzdGFydGVkIGF0IEVMMVxcblwmIzM0Oyk7XG5hcmNoL2FybTY0L2tlcm5lbC9zbXAuYzo0MzI6XHRpZiAoSVNfRU5BQkxFRChDT05GSUdfS1ZNKSBcdTAwMjZcdTAwMjYgIWlzX2tlcm5lbF9pbl9oeXBfbW9kZSgpKSB7XG5hcmNoL2FybTY0L2tlcm5lbC9zbXAuYy00MzMtXHRcdGt2bV9jb21wdXRlX2xheW91dCgpO1xuLS1cbmFyY2gvYXJtNjQva2VybmVsL3ZtbGludXgubGRzLlMtOC0jaW5jbHVkZSBcdTAwM2Nhc20vaHlwX2ltYWdlLmhcdTAwM2VcbmFyY2gvYXJtNjQva2VybmVsL3ZtbGludXgubGRzLlM6OTojaWZkZWYgQ09ORklHX0tWTVxuYXJjaC9hcm02NC9rZXJuZWwvdm1saW51eC5sZHMuUy0xMC0jZGVmaW5lIEhZUEVSVklTT1JfRVhUQUJMRVx0XHRcdFx0XHRcXFxuLS1cbmFyY2gvYXJtNjQva2VybmVsL3ZtbGludXgubGRzLlMtNzEtI2RlZmluZSBTQlNTX0FMSUdOXHRcdFx0UEFHRV9TSVpFXG5hcmNoL2FybTY0L2tlcm5lbC92bWxpbnV4Lmxkcy5TOjcyOiNlbHNlIC8qIENPTkZJR19LVk0gKi9cbmFyY2gvYXJtNjQva2VybmVsL3ZtbGludXgubGRzLlMtNzMtI2RlZmluZSBIWVBFUlZJU09SX0VYVEFCTEVcbi0tXG5hcmNoL2FybTY0L2tlcm5lbC92bWxpbnV4Lmxkcy5TPTQxMT1BU1NFUlQoKF9fZW50cnlfdHJhbXBfdGV4dF9lbmQgLSBfX2VudHJ5X3RyYW1wX3RleHRfc3RhcnQpIFx1MDAzYz0gMypQQUdFX1NJWkUsXG4tLVxuYXJjaC9hcm02NC9rZXJuZWwvdm1saW51eC5sZHMuUy00MTMtI2VuZGlmXG5hcmNoL2FybTY0L2tlcm5lbC92bWxpbnV4Lmxkcy5TOjQxNDojaWZkZWYgQ09ORklHX0tWTVxuYXJjaC9hcm02NC9rZXJuZWwvdm1saW51eC5sZHMuUy00MTUtQVNTRVJUKF9faHlwX2Jzc19zdGFydCA9PSBfX2Jzc19zdGFydCwgXCYjMzQ7SFlQIGFuZCBIb3N0IEJTUyBhcmUgbWlzYWxpZ25lZFwmIzM0Oylcbi0tXG5hcmNoL2FybTY0L2t2bS9NYWtlZmlsZT04PWluY2x1ZGUgJChzcmN0cmVlKS92aXJ0L2t2bS9NYWtlZmlsZS5rdm1cbmFyY2gvYXJtNjQva3ZtL01ha2VmaWxlLTktXG5hcmNoL2FybTY0L2t2bS9NYWtlZmlsZToxMDpvYmotJChDT05GSUdfS1ZNKSAmIzQzOz0ga3ZtLm9cbmFyY2gvYXJtNjQva3ZtL01ha2VmaWxlOjExOm9iai0kKENPTkZJR19LVk0pICYjNDM7PSBoeXAvXG5hcmNoL2FybTY0L2t2bS9NYWtlZmlsZS0xMi1cbi0tXG5hcmNoL2FybTY0L2t2bS9oeXAvTWFrZWZpbGU9OD1zdWJkaXItY2NmbGFncy15IDo9IC1JJChpbmNkaXIpXG5hcmNoL2FybTY0L2t2bS9oeXAvTWFrZWZpbGUtOS1cbmFyY2gvYXJtNjQva3ZtL2h5cC9NYWtlZmlsZToxMDpvYmotJChDT05GSUdfS1ZNKSAmIzQzOz0gdmhlLyBudmhlLyBwZ3RhYmxlLm9cbi0tXG5hcmNoL2FybTY0L2t2bS9oeXAvbnZoZS9ob3N0LlM9MTY4PVNZTV9GVU5DX0VORChfX2hvc3RfaHZjKVxuLS1cbmFyY2gvYXJtNjQva3ZtL2h5cC9udmhlL2hvc3QuUy0yMjgtICpcbmFyY2gvYXJtNjQva3ZtL2h5cC9udmhlL2hvc3QuUzoyMjk6ICogQ09ORklHX0tWTV9JTkRJUkVDVF9WRUNUT1JTIGlzIG5vdCBhcHBsaWVkIHRvIHRoZSBob3N0IHZlY3RvcnMgYmVjYXVzZSB0aGVcbmFyY2gvYXJtNjQva3ZtL2h5cC9udmhlL2hvc3QuUy0yMzAtICogaG9zdCBrbm93cyBhYm91dCB0aGUgRUwyIHZlY3RvcnMgYWxyZWFkeSwgYW5kIHRoZXJlIGlzIG5vIHBvaW50IGluIGhpZGluZ1xuLS1cbmFyY2gvYXJtNjQvbW0vaW5pdC5jPTE5Mz12b2lkIF9faW5pdCBhcm02NF9tZW1ibG9ja19pbml0KHZvaWQpXG4tLVxuYXJjaC9hcm02NC9tbS9pbml0LmMtMjA0LVx0ICovXG5hcmNoL2FybTY0L21tL2luaXQuYzoyMDU6XHRpZiAoSVNfRU5BQkxFRChDT05GSUdfS1ZNKSBcdTAwMjZcdTAwMjYgdmFiaXRzX2FjdHVhbCA9PSA1MiBcdTAwMjZcdTAwMjZcbmFyY2gvYXJtNjQvbW0vaW5pdC5jLTIwNi1cdCAgICBpc19oeXBfbW9kZV9hdmFpbGFibGUoKSBcdTAwMjZcdTAwMjYgIWlzX2tlcm5lbF9pbl9oeXBfbW9kZSgpKSB7XG4tLVxuYXJjaC9sb29uZ2FyY2gvS2J1aWxkPTQ9b2JqLXkgJiM0Mzs9IHZkc28vXG5hcmNoL2xvb25nYXJjaC9LYnVpbGQtNS1cbmFyY2gvbG9vbmdhcmNoL0tidWlsZDo2Om9iai0kKHN1YnN0IG0seSwkKENPTkZJR19LVk0pKSAmIzQzOz0ga3ZtL1xuYXJjaC9sb29uZ2FyY2gvS2J1aWxkLTctXG4tLVxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjY0X2RlZmNvbmZpZz04Mz1DT05GSUdfVklSVFVBTElaQVRJT049eVxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjY0X2RlZmNvbmZpZzo4NDpDT05GSUdfS1ZNPW1cbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb242NF9kZWZjb25maWctODUtQ09ORklHX0pVTVBfTEFCRUw9eVxuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS9NYWtlZmlsZT02PWluY2x1ZGUgJChzcmN0cmVlKS92aXJ0L2t2bS9NYWtlZmlsZS5rdm1cbmFyY2gvbG9vbmdhcmNoL2t2bS9NYWtlZmlsZS03LVxuYXJjaC9sb29uZ2FyY2gva3ZtL01ha2VmaWxlOjg6b2JqLSQoQ09ORklHX0tWTSkgJiM0Mzs9IGt2bS5vXG5hcmNoL2xvb25nYXJjaC9rdm0vTWFrZWZpbGUtOS1cbi0tXG5hcmNoL21pcHMvS2J1aWxkPTE4PW9iai15ICYjNDM7PSB2ZHNvL1xuYXJjaC9taXBzL0tidWlsZC0xOS1cbmFyY2gvbWlwcy9LYnVpbGQ6MjA6aWZkZWYgQ09ORklHX0tWTVxuYXJjaC9taXBzL0tidWlsZC0yMS1vYmoteSAmIzQzOz0ga3ZtL1xuLS1cbmFyY2gvbWlwcy9jb25maWdzL2xvb25nc29uM19kZWZjb25maWc9Mzk9Q09ORklHX1ZJUlRVQUxJWkFUSU9OPXlcbmFyY2gvbWlwcy9jb25maWdzL2xvb25nc29uM19kZWZjb25maWc6NDA6Q09ORklHX0tWTT1tXG5hcmNoL21pcHMvY29uZmlncy9sb29uZ3NvbjNfZGVmY29uZmlnLTQxLUNPTkZJR19LUFJPQkVTPXlcbi0tXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YV9rdm1fZGVmY29uZmlnPTE3PUNPTkZJR19WSVJUVUFMSVpBVElPTj15XG5hcmNoL21pcHMvY29uZmlncy9tYWx0YV9rdm1fZGVmY29uZmlnOjE4OkNPTkZJR19LVk09bVxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFfa3ZtX2RlZmNvbmZpZzoxOTpDT05GSUdfS1ZNX01JUFNfREVCVUdfQ09QMF9DT1VOVEVSUz15XG5hcmNoL21pcHMvY29uZmlncy9tYWx0YV9rdm1fZGVmY29uZmlnLTIwLUNPTkZJR19WSE9TVF9ORVQ9bVxuLS1cbmFyY2gvbWlwcy9pbmNsdWRlL2FzbS9rdm1faG9zdC5oPTE4OD1zdHJ1Y3QgbWlwc19jb3Byb2Mge1xuYXJjaC9taXBzL2luY2x1ZGUvYXNtL2t2bV9ob3N0LmgtMTg5LVx0dW5zaWduZWQgbG9uZyByZWdbTl9NSVBTX0NPUFJPQ19SRUdTXVtOX01JUFNfQ09QUk9DX1NFTF07XG5hcmNoL21pcHMvaW5jbHVkZS9hc20va3ZtX2hvc3QuaDoxOTA6I2lmZGVmIENPTkZJR19LVk1fTUlQU19ERUJVR19DT1AwX0NPVU5URVJTXG5hcmNoL21pcHMvaW5jbHVkZS9hc20va3ZtX2hvc3QuaC0xOTEtXHR1bnNpZ25lZCBsb25nIHN0YXRbTl9NSVBTX0NPUFJPQ19SRUdTXVtOX01JUFNfQ09QUk9DX1NFTF07XG4tLVxuYXJjaC9taXBzL2t2bS9NYWtlZmlsZT0xOD1rdm0teVx0XHQmIzQzOz0gdnoub1xuYXJjaC9taXBzL2t2bS9NYWtlZmlsZToxOTpvYmotJChDT05GSUdfS1ZNKVx0JiM0Mzs9IGt2bS5vXG5hcmNoL21pcHMva3ZtL01ha2VmaWxlLTIwLW9iai15XHRcdFx0JiM0Mzs9IHRsYi5vXG4tLVxuYXJjaC9taXBzL2t2bS9zdGF0cy5jPTQ5PXZvaWQga3ZtX21pcHNfZHVtcF9zdGF0cyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG5hcmNoL21pcHMva3ZtL3N0YXRzLmMtNTAte1xuYXJjaC9taXBzL2t2bS9zdGF0cy5jOjUxOiNpZmRlZiBDT05GSUdfS1ZNX01JUFNfREVCVUdfQ09QMF9DT1VOVEVSU1xuYXJjaC9taXBzL2t2bS9zdGF0cy5jLTUyLVx0aW50IGksIGo7XG4tLVxuYXJjaC9taXBzL2t2bS92ei5jPTg3NT1zdGF0aWMgZW51bSBlbXVsYXRpb25fcmVzdWx0IGt2bV92el9ncHNpX2NvcDAodW5pb24gbWlwc19pbnN0cnVjdGlvbiBpbnN0LFxuLS1cbmFyY2gvbWlwcy9rdm0vdnouYy05MDktXHRcdGNhc2UgbWZjX29wOlxuYXJjaC9taXBzL2t2bS92ei5jOjkxMDojaWZkZWYgQ09ORklHX0tWTV9NSVBTX0RFQlVHX0NPUDBfQ09VTlRFUlNcbmFyY2gvbWlwcy9rdm0vdnouYy05MTEtXHRcdFx0Y29wMC1cdTAwM2VzdGF0W3JkXVtzZWxdJiM0MzsmIzQzOztcbi0tXG5hcmNoL21pcHMva3ZtL3Z6LmMtOTc1LVx0XHRjYXNlIG10Y19vcDpcbmFyY2gvbWlwcy9rdm0vdnouYzo5NzY6I2lmZGVmIENPTkZJR19LVk1fTUlQU19ERUJVR19DT1AwX0NPVU5URVJTXG5hcmNoL21pcHMva3ZtL3Z6LmMtOTc3LVx0XHRcdGNvcDAtXHUwMDNlc3RhdFtyZF1bc2VsXSYjNDM7JiM0Mzs7XG4tLVxuYXJjaC9wb3dlcnBjL0tidWlsZD0xND1vYmotJChDT05GSUdfWE1PTikgJiM0Mzs9IHhtb24vXG5hcmNoL3Bvd2VycGMvS2J1aWxkOjE1Om9iai0kKENPTkZJR19LVk0pICAmIzQzOz0ga3ZtL1xuYXJjaC9wb3dlcnBjL0tidWlsZC0xNi1cbi0tXG5hcmNoL3Bvd2VycGMvY29uZmlncy9ndWVzdC5jb25maWc9Nz1DT05GSUdfVklSVElPX1BDST15XG5hcmNoL3Bvd2VycGMvY29uZmlncy9ndWVzdC5jb25maWc6ODpDT05GSUdfS1ZNX0dVRVNUPXlcbmFyY2gvcG93ZXJwYy9jb25maWdzL2d1ZXN0LmNvbmZpZy05LUNPTkZJR19FUEFQUl9QQVJBVklSVD15XG4tLVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvbXZtZTUxMDBfZGVmY29uZmlnPTIwPUNPTkZJR19NVk1FNTEwMD15XG5hcmNoL3Bvd2VycGMvY29uZmlncy9tdm1lNTEwMF9kZWZjb25maWc6MjE6Q09ORklHX0tWTV9HVUVTVD15XG5hcmNoL3Bvd2VycGMvY29uZmlncy9tdm1lNTEwMF9kZWZjb25maWctMjItQ09ORklHX0haXzEwMD15XG4tLVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcG93ZXJudl9kZWZjb25maWc9MzMwPUNPTkZJR19WSVJUVUFMSVpBVElPTj15XG5hcmNoL3Bvd2VycGMvY29uZmlncy9wb3dlcm52X2RlZmNvbmZpZzozMzE6Q09ORklHX0tWTV9CT09LM1NfNjQ9bVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcG93ZXJudl9kZWZjb25maWc6MzMyOkNPTkZJR19LVk1fQk9PSzNTXzY0X0hWPW1cbmFyY2gvcG93ZXJwYy9jb25maWdzL3Bvd2VybnZfZGVmY29uZmlnLTMzMy1DT05GSUdfVkhPU1RfTkVUPW1cbi0tXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wcGM2NF9kZWZjb25maWc9Njk9Q09ORklHX1ZJUlRVQUxJWkFUSU9OPXlcbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzY0X2RlZmNvbmZpZzo3MDpDT05GSUdfS1ZNX0JPT0szU182ND1tXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wcGM2NF9kZWZjb25maWc6NzE6Q09ORklHX0tWTV9CT09LM1NfNjRfSFY9bVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHBjNjRfZGVmY29uZmlnLTcyLUNPTkZJR19LUFJPQkVTPXlcbi0tXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vaG1pLmgtMTEtXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vaG1pLmg6MTI6I2lmZGVmIENPTkZJR19LVk1fQk9PSzNTX0hWX1BPU1NJQkxFXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vaG1pLmgtMTMtXG4tLVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ib29rM3MuaD0zMjA9dm9pZCBrdm1wcGNfZ2l2ZXVwX2ZhYyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHVsb25nIGZhYyk7XG4tLVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ib29rM3MuaC0zMjItXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX2Jvb2szcy5oOjMyMzojaWZkZWYgQ09ORklHX0tWTV9CT09LM1NfSFZfUE9TU0lCTEVcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fYm9vazNzLmgtMzI0LVxuLS1cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fYm9vazNzLmg9Mzg3PXN0YXRpYyBpbmxpbmUgc3RydWN0IGt2bXBwY192Y3B1X2Jvb2szcyAqdG9fYm9vazNzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX2Jvb2szcy5oLTM5My1cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fYm9vazNzLmg6Mzk0OiNpZmRlZiBDT05GSUdfS1ZNX0JPT0szU18zMl9IQU5ETEVSXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX2Jvb2szcy5oLTM5NS0jaW5jbHVkZSBcdTAwM2Nhc20va3ZtX2Jvb2szc18zMi5oXHUwMDNlXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX2Jvb2szcy5oLTM5Ni0jZW5kaWZcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fYm9vazNzLmg6Mzk3OiNpZmRlZiBDT05GSUdfS1ZNX0JPT0szU182NF9IQU5ETEVSXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX2Jvb2szcy5oLTM5OC0jaW5jbHVkZSBcdTAwM2Nhc20va3ZtX2Jvb2szc182NC5oXHUwMDNlXG4tLVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ib29rM3NfNjQuaD0xMDE9aW50IGt2bWh2X25lc3RlZF9uZXh0X2xwaWQoc3RydWN0IGt2bSAqa3ZtLCBpbnQgbHBpZCk7XG4tLVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ib29rM3NfNjQuaC0xMTAtXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX2Jvb2szc182NC5oOjExMTojaWZkZWYgQ09ORklHX0tWTV9CT09LM1NfUFJfUE9TU0lCTEVcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fYm9vazNzXzY0LmgtMTEyLXN0YXRpYyBpbmxpbmUgc3RydWN0IGt2bXBwY19ib29rM3Nfc2hhZG93X3ZjcHUgKnN2Y3B1X2dldChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ib29rM3NfNjQuaD0xMTg9c3RhdGljIGlubGluZSB2b2lkIHN2Y3B1X3B1dChzdHJ1Y3Qga3ZtcHBjX2Jvb2szc19zaGFkb3dfdmNwdSAqc3ZjcHUpXG4tLVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ib29rM3NfNjQuaC0xMjMtXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX2Jvb2szc182NC5oOjEyNDojaWZkZWYgQ09ORklHX0tWTV9CT09LM1NfSFZfUE9TU0lCTEVcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fYm9vazNzXzY0LmgtMTI1LVxuLS1cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fYm9vazNzXzY0Lmg9NTE0PXN0YXRpYyBpbmxpbmUgaW50IGlzX3ZybWFfaHB0ZSh1bnNpZ25lZCBsb25nIGhwdGVfdilcbi0tXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX2Jvb2szc182NC5oLTUxOS1cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fYm9vazNzXzY0Lmg6NTIwOiNpZmRlZiBDT05GSUdfS1ZNX0JPT0szU19IVl9QT1NTSUJMRVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ib29rM3NfNjQuaC01MjEtLypcbi0tXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX2Jvb2szc182NC5oPTY5Nj11NjQga3ZtaHZfZ2V0X2wyX3J1bnRpbWVfYWdnX3ZjcHUodm9pZCk7XG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX2Jvb2szc182NC5oLTY5Ny1cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fYm9vazNzXzY0Lmg6Njk4OiNlbmRpZiAvKiBDT05GSUdfS1ZNX0JPT0szU19IVl9QT1NTSUJMRSAqL1xuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ib29rM3NfNjQuaC02OTktXG4tLVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ib29rM3NfYXNtLmgtMjQtXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX2Jvb2szc19hc20uaDoyNTojaWZkZWYgQ09ORklHX0tWTV9CT09LM1NfSEFORExFUlxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ib29rM3NfYXNtLmgtMjYtXG4tLVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ib29rM3NfYXNtLmg9NDk9a3ZtcHBjX3Jlc3VtZV9cXGludG5vOlxuLS1cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fYm9vazNzX2FzbS5oLTU4LVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ib29rM3NfYXNtLmg6NTk6I2VuZGlmIC8qIENPTkZJR19LVk1fQk9PSzNTX0hBTkRMRVIgKi9cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fYm9vazNzX2FzbS5oLTYwLVxuLS1cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fYm9vazNzX2FzbS5oPTgzPXN0cnVjdCBrdm1wcGNfaG9zdF9zdGF0ZSB7XG4tLVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ib29rM3NfYXNtLmgtOTQtXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX2Jvb2szc19hc20uaDo5NTojaWZkZWYgQ09ORklHX0tWTV9CT09LM1NfSFZfUE9TU0lCTEVcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fYm9vazNzX2FzbS5oLTk2LVx0dTggaHd0aHJlYWRfcmVxO1xuLS1cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fYm9va2UuaD0xMDk9c3RhdGljIGlubGluZSBib29sIGt2bXBwY19zdXBwb3J0c19tYWdpY19wYWdlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX2Jvb2tlLmgtMTExLVx0LyogTWFnaWMgcGFnZSBpcyBvbmx5IHN1cHBvcnRlZCBvbiBlNTAwdjIgKi9cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fYm9va2UuaDoxMTI6I2lmZGVmIENPTkZJR19LVk1fRTUwMFYyXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX2Jvb2tlLmgtMTEzLVx0cmV0dXJuIHRydWU7XG4tLVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ib29rZV9odl9hc20uaC01Ni0ubWFjcm8gRE9fS1ZNIGludG5vIHNycjFcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fYm9va2VfaHZfYXNtLmg6NTc6I2lmZGVmIENPTkZJR19LVk1fQk9PS0VfSFZcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fYm9va2VfaHZfYXNtLmgtNTgtQkVHSU5fRlRSX1NFQ1RJT05cbi0tXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX2d1ZXN0LmgtOC1cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fZ3Vlc3QuaDo5OiNpZiBkZWZpbmVkKENPTkZJR19QUENfUFNFUklFUykgfHwgZGVmaW5lZChDT05GSUdfS1ZNX0dVRVNUKVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ndWVzdC5oLTEwLSNpbmNsdWRlIFx1MDAzY2xpbnV4L2p1bXBfbGFiZWwuaFx1MDAzZVxuLS1cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1faG9zdC5oLTM2LVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ob3N0Lmg6Mzc6I2lmZGVmIENPTkZJR19LVk1fQk9PSzNTX0hWX1BPU1NJQkxFXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX2hvc3QuaC0zOC0jaW5jbHVkZSBcdTAwM2Nhc20va3ZtX2Jvb2szc19hc20uaFx1MDAzZVx0XHQvKiBmb3IgTUFYX1NNVF9USFJFQURTICovXG4tLVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ob3N0LmgtNDgtI2RlZmluZSBLVk1fTUFYX1ZDUFVfSURTXHRLVk1fTUFYX1ZDUFVTXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX2hvc3QuaDo0OTojZW5kaWYgLyogQ09ORklHX0tWTV9CT09LM1NfSFZfUE9TU0lCTEUgKi9cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1faG9zdC5oLTUwLVxuLS1cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1faG9zdC5oPTI1Mz1zdHJ1Y3Qga3ZtX2FyY2hfbWVtb3J5X3Nsb3Qge1xuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ob3N0Lmg6MjU0OiNpZmRlZiBDT05GSUdfS1ZNX0JPT0szU19IVl9QT1NTSUJMRVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ob3N0LmgtMjU1LVx0dW5zaWduZWQgbG9uZyAqcm1hcDtcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1faG9zdC5oOjI1NjojZW5kaWYgLyogQ09ORklHX0tWTV9CT09LM1NfSFZfUE9TU0lCTEUgKi9cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1faG9zdC5oLTI1Ny19O1xuLS1cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1faG9zdC5oPTI3Nz1zdHJ1Y3Qga3ZtX2FyY2gge1xuLS1cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1faG9zdC5oLTI4MC1cdHVuc2lnbmVkIGludCBlbXVsX3NtdF9tb2RlO1x0LyogZW11YWx0ZWQgU01UIG1vZGUsIG9uIFA5ICovXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX2hvc3QuaDoyODE6I2lmZGVmIENPTkZJR19LVk1fQk9PSzNTX0hWX1BPU1NJQkxFXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX2hvc3QuaC0yODItXHR1bnNpZ25lZCBpbnQgdGxiX3NldHM7XG4tLVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ob3N0LmgtMzA0LVx0c3RydWN0IGt2bV9yZXNpemVfaHB0ICpyZXNpemVfaHB0OyAvKiBwcm90ZWN0ZWQgYnkga3ZtLVx1MDAzZWxvY2sgKi9cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1faG9zdC5oOjMwNTojZW5kaWYgLyogQ09ORklHX0tWTV9CT09LM1NfSFZfUE9TU0lCTEUgKi9cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1faG9zdC5oOjMwNjojaWZkZWYgQ09ORklHX0tWTV9CT09LM1NfUFJfUE9TU0lCTEVcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1faG9zdC5oLTMwNy1cdHN0cnVjdCBtdXRleCBocHRfbXV0ZXg7XG4tLVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ob3N0LmgtMzE0LSNlbmRpZlxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ob3N0Lmg6MzE1OiNpZmRlZiBDT05GSUdfS1ZNX01QSUNcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1faG9zdC5oLTMxNi1cdHN0cnVjdCBvcGVucGljICptcGljO1xuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ob3N0LmgtMzE3LSNlbmRpZlxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ob3N0Lmg6MzE4OiNpZmRlZiBDT05GSUdfS1ZNX1hJQ1NcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1faG9zdC5oLTMxOS1cdHN0cnVjdCBrdm1wcGNfeGljcyAqeGljcztcbi0tXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX2hvc3QuaC0zMjgtXHRzdHJ1Y3Qga3ZtcHBjX29wcyAqa3ZtX29wcztcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1faG9zdC5oOjMyOTojaWZkZWYgQ09ORklHX0tWTV9CT09LM1NfSFZfUE9TU0lCTEVcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1faG9zdC5oLTMzMC1cdHN0cnVjdCBtdXRleCB1dm1lbV9sb2NrO1xuLS1cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1faG9zdC5oPTUyOD1zdHJ1Y3Qga3ZtX3ZjcHVfYXJjaCB7XG4tLVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ob3N0LmgtNTU5LVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ob3N0Lmg6NTYwOiNpZmRlZiBDT05GSUdfS1ZNX0JPT0tFX0hWXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX2hvc3QuaC01NjEtXHR1MzIgaG9zdF9tYXM0O1xuLS1cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1faG9zdC5oLTU3MC0jaWYgZGVmaW5lZChDT05GSUdfQk9PS0UpXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX2hvc3QuaDo1NzE6I2lmIGRlZmluZWQoQ09ORklHX0tWTV9CT09LRV9IVikgfHwgZGVmaW5lZChDT05GSUdfNjRCSVQpXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX2hvc3QuaC01NzItXHR1MzIgZXBjcjtcbi0tXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX2hvc3QuaC02OTItXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX2hvc3QuaDo2OTM6I2lmZGVmIENPTkZJR19LVk1fRVhJVF9USU1JTkdcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1faG9zdC5oLTY5NC1cdHN0cnVjdCBtdXRleCBleGl0X3RpbWluZ19sb2NrO1xuLS1cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1faG9zdC5oLTc5NS1cdHN0cnVjdCBrdm1fdmNwdV9hcmNoX3NoYXJlZCAqc2hhcmVkO1xuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ob3N0Lmg6Nzk2OiNpZiBkZWZpbmVkKENPTkZJR19QUENfQk9PSzNTXzY0KSBcdTAwMjZcdTAwMjYgZGVmaW5lZChDT05GSUdfS1ZNX0JPT0szU19QUl9QT1NTSUJMRSlcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1faG9zdC5oLTc5Ny1cdGJvb2wgc2hhcmVkX2JpZ19lbmRpYW47XG4tLVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ob3N0LmgtODA1LVx0c3RydWN0IG9wZW5waWMgKm1waWM7XHQvKiBLVk1fSVJRX01QSUMgKi9cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1faG9zdC5oOjgwNjojaWZkZWYgQ09ORklHX0tWTV9YSUNTXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX2hvc3QuaC04MDctXHRzdHJ1Y3Qga3ZtcHBjX2ljcCAqaWNwOyAvKiBYSUNTIHByZXNlbnRhdGlvbiBjb250cm9sbGVyICovXG4tLVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ob3N0LmgtODE2LVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ob3N0Lmg6ODE3OiNpZmRlZiBDT05GSUdfS1ZNX0JPT0szU19IVl9QT1NTSUJMRVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ob3N0LmgtODE4LVx0c3RydWN0IGt2bV92Y3B1X2FyY2hfc2hhcmVkIHNocmVncztcbi0tXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX2hvc3QuaC04NTQtXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX2hvc3QuaDo4NTU6I2lmZGVmIENPTkZJR19LVk1fQk9PSzNTX0hWX0VYSVRfVElNSU5HXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX2hvc3QuaC04NTYtXHRzdHJ1Y3Qga3ZtaHZfdGJfYWNjdW11bGF0b3IgKmN1cl9hY3Rpdml0eTtcdC8qIFdoYXQgd2UmIzM5O3JlIHRpbWluZyAqL1xuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ob3N0LmgtODU3LVx0dTY0XHRjdXJfdGJfc3RhcnQ7XHRcdFx0Lyogd2hlbiBpdCBzdGFydGVkICovXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX2hvc3QuaDo4NTg6I2lmZGVmIENPTkZJR19LVk1fQk9PSzNTX0hWX1A5X1RJTUlOR1xuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ob3N0LmgtODU5LVx0c3RydWN0IGt2bWh2X3RiX2FjY3VtdWxhdG9yIHZjcHVfZW50cnk7XG4tLVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ob3N0LmgtODcyLSNlbmRpZlxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ob3N0Lmg6ODczOiNlbmRpZiAvKiBDT05GSUdfS1ZNX0JPT0szU19IVl9FWElUX1RJTUlORyAqL1xuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ob3N0Lmg6ODc0OiNpZmRlZiBDT05GSUdfS1ZNX0JPT0szU19IVl9QT1NTSUJMRVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ob3N0LmgtODc1LVx0dTY0IGwxX3RvX2wyX2NzO1xuLS1cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fcGFyYS5oPTE1PXN0YXRpYyBpbmxpbmUgaW50IGt2bV9wYXJhX2F2YWlsYWJsZSh2b2lkKVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9wYXJhLmgtMTYte1xuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9wYXJhLmg6MTc6XHRyZXR1cm4gSVNfRU5BQkxFRChDT05GSUdfS1ZNX0dVRVNUKSBcdTAwMjZcdTAwMjYgaXNfa3ZtX2d1ZXN0KCk7XG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX3BhcmEuaC0xOC19XG4tLVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9wcGMuaC0yNS0jZW5kaWZcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fcHBjLmg6MjY6I2lmZGVmIENPTkZJR19LVk1fQk9PSzNTXzY0X0hBTkRMRVJcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fcHBjLmgtMjctI2luY2x1ZGUgXHUwMDNjYXNtL3BhY2EuaFx1MDAzZVxuLS1cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fcHBjLmg9NDQyPXN0cnVjdCBvcGVucGljO1xuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9wcGMuaC00NDMtXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX3BwYy5oOjQ0NDojaWZkZWYgQ09ORklHX0tWTV9CT09LM1NfSFZfUE9TU0lCTEVcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fcHBjLmgtNDQ1LWV4dGVybiB2b2lkIGt2bV9jbWFfcmVzZXJ2ZSh2b2lkKSBfX2luaXQ7XG4tLVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9wcGMuaD02NDg9c3RhdGljIGlubGluZSBpbnQga3ZtaHZfbmVzdGVkdjJfY2FjaGVkX3JlbG9hZChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUxNiBpZGVuKVxuLS1cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fcHBjLmgtNjU0LVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9wcGMuaDo2NTU6I2lmZGVmIENPTkZJR19LVk1fWElDU1xuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9wcGMuaC02NTYtc3RhdGljIGlubGluZSBpbnQga3ZtcHBjX3hpY3NfZW5hYmxlZChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9wcGMuaD03MDg9c3RhdGljIGlubGluZSBpbnQga3ZtcHBjX3hpdmVfeGljc19oY2FsbChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUzMiByZXEpXG4tLVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9wcGMuaC03MTEtXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX3BwYy5oOjcxMjojaWZkZWYgQ09ORklHX0tWTV9YSVZFXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX3BwYy5oLTcxMy0vKlxuLS1cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fcHBjLmg9NzkwPXN0YXRpYyBpbmxpbmUgaW50IGt2bXBwY194aXZlX25hdGl2ZV9zZXRfdnAoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuLS1cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fcHBjLmgtNzkzLVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9wcGMuaDo3OTQ6I2VuZGlmIC8qIENPTkZJR19LVk1fWElWRSAqL1xuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9wcGMuaC03OTUtXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX3BwYy5oOjc5NjojaWYgZGVmaW5lZChDT05GSUdfUFBDX1BPV0VSTlYpIFx1MDAyNlx1MDAyNiBkZWZpbmVkKENPTkZJR19LVk1fQk9PSzNTXzY0X0hBTkRMRVIpXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX3BwYy5oLTc5Ny1zdGF0aWMgaW5saW5lIGJvb2wgeGljc19vbl94aXZlKHZvaWQpXG4tLVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9wcGMuaD04NzU9c3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIGt2bXBwY19nZXRfZXByKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fcHBjLmgtODc2LXtcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fcHBjLmg6ODc3OiNpZmRlZiBDT05GSUdfS1ZNX0JPT0tFX0hWXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX3BwYy5oLTg3OC1cdHJldHVybiBtZnNwcihTUFJOX0dFUFIpO1xuLS1cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fcHBjLmg9ODg2PXN0YXRpYyBpbmxpbmUgdm9pZCBrdm1wcGNfc2V0X2VwcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUzMiBlcHIpXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX3BwYy5oLTg4Ny17XG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX3BwYy5oOjg4ODojaWZkZWYgQ09ORklHX0tWTV9CT09LRV9IVlxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9wcGMuaC04ODktXHRtdHNwcihTUFJOX0dFUFIsIGVwcik7XG4tLVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9wcGMuaC04OTQtXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX3BwYy5oOjg5NTojaWZkZWYgQ09ORklHX0tWTV9NUElDXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX3BwYy5oLTg5Ni1cbi0tXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX3BwYy5oPTkxND1zdGF0aWMgaW5saW5lIHZvaWQga3ZtcHBjX21waWNfZGlzY29ubmVjdF92Y3B1KHN0cnVjdCBvcGVucGljICpvcHAsXG4tLVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9wcGMuaC05MTgtXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX3BwYy5oOjkxOTojZW5kaWYgLyogQ09ORklHX0tWTV9NUElDICovXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX3BwYy5oLTkyMC1cbi0tXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX3BwYy5oPTk1Mj1zdGF0aWMgaW5saW5lIGJvb2wga3ZtcHBjX3NoYXJlZF9iaWdfZW5kaWFuKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fcHBjLmgtOTUzLXtcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fcHBjLmg6OTU0OiNpZiBkZWZpbmVkKENPTkZJR19QUENfQk9PSzNTXzY0KSBcdTAwMjZcdTAwMjYgZGVmaW5lZChDT05GSUdfS1ZNX0JPT0szU19QUl9QT1NTSUJMRSlcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fcHBjLmgtOTU1LVx0LyogT25seSBCb29rM1NfNjQgUFIgc3VwcG9ydHMgYmktZW5kaWFuIGZvciBub3cgKi9cbi0tXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX3BwYy5oPTk4OT1zdGF0aWMgaW5saW5lIHZvaWQga3ZtcHBjX3NldF8jI3JlZyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUjI3NpemUgdmFsKVx0XFxcbi0tXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX3BwYy5oLTEwMDctXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX3BwYy5oOjEwMDg6I2lmZGVmIENPTkZJR19LVk1fQk9PS0VfSFZcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fcHBjLmgtMTAwOS1cbi0tXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX3R5cGVzLmgtNC1cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fdHlwZXMuaDo1OiNpZiBJU19NT0RVTEUoQ09ORklHX0tWTV9CT09LM1NfNjRfUFIpIFx1MDAyNlx1MDAyNiBJU19NT0RVTEUoQ09ORklHX0tWTV9CT09LM1NfNjRfSFYpXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX3R5cGVzLmgtNi0jZGVmaW5lIEtWTV9TVUJfTU9EVUxFUyBrdm0tcHIsa3ZtLWh2XG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX3R5cGVzLmg6NzojZWxpZiBJU19NT0RVTEUoQ09ORklHX0tWTV9CT09LM1NfNjRfUFIpXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX3R5cGVzLmgtOC0jZGVmaW5lIEtWTV9TVUJfTU9EVUxFUyBrdm0tcHJcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fdHlwZXMuaDo5OiNlbGlmIElTX01PRFVMRShDT05GSUdfS1ZNX0JPT0szU182NF9IVilcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fdHlwZXMuaC0xMC0jZGVmaW5lIEtWTV9TVUJfTU9EVUxFUyBrdm0taHZcbi0tXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vbW11X2NvbnRleHQuaD0yMDc9c3RhdGljIGlubGluZSB2b2lkIG1tX2NvbnRleHRfcmVtb3ZlX2NvcHJvKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tKSB7IH1cbi0tXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vbW11X2NvbnRleHQuaC0yMDktXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vbW11X2NvbnRleHQuaDoyMTA6I2lmIGRlZmluZWQoQ09ORklHX0tWTV9CT09LM1NfSFZfUE9TU0lCTEUpIFx1MDAyNlx1MDAyNiBkZWZpbmVkKENPTkZJR19QUENfUkFESVhfTU1VKVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL21tdV9jb250ZXh0LmgtMjExLXZvaWQgZG9faF9ycHRfaW52YWxpZGF0ZV9wcnQodW5zaWduZWQgbG9uZyBwaWQsIHVuc2lnbmVkIGxvbmcgbHBpZCxcbi0tXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vcGFjYS5oLTI0LSNlbmRpZlxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3BhY2EuaDoyNTojaWZkZWYgQ09ORklHX0tWTV9CT09LM1NfNjRfSEFORExFUlxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3BhY2EuaC0yNi0jaW5jbHVkZSBcdTAwM2Nhc20va3ZtX2Jvb2szc19hc20uaFx1MDAzZVxuLS1cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9wYWNhLmg9NjE9c3RydWN0IHBhY2Ffc3RydWN0IHtcbi0tXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vcGFjYS5oLTE3Ni1cdHU4IGlycV93b3JrX3BlbmRpbmc7XHRcdC8qIElSUV9XT1JLIGludGVycnVwdCB3aGlsZSBzb2Z0LWRpc2FibGUgKi9cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9wYWNhLmg6MTc3OiNpZmRlZiBDT05GSUdfS1ZNX0JPT0szU19IVl9QT1NTSUJMRVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3BhY2EuaC0xNzgtXHR1OCBwbWNyZWdzX2luX3VzZTtcdFx0LyogcHNlcmllcyBwdXRzIHRoaXMgaW4gbHBwYWNhICovXG4tLVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3BhY2EuaC0yMDAtXHRcdHN0cnVjdCB7XG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vcGFjYS5oOjIwMTojaWZkZWYgQ09ORklHX0tWTV9CT09LM1NfSFZfUE9TU0lCTEVcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9wYWNhLmgtMjAyLVx0XHRcdC8qIFRoZSBQU1NDUiB2YWx1ZSB0aGF0IHRoZSBrZXJuZWwgcmVxdWVzdGVkIGJlZm9yZSBnb2luZyB0byBzdG9wICovXG4tLVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3BhY2EuaC0yMzYtXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vcGFjYS5oOjIzNzojaWZkZWYgQ09ORklHX0tWTV9CT09LM1NfSEFORExFUlxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3BhY2EuaDoyMzg6I2lmZGVmIENPTkZJR19LVk1fQk9PSzNTX1BSX1BPU1NJQkxFXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vcGFjYS5oLTIzOS1cdC8qIFdlIHVzZSB0aGlzIHRvIHN0b3JlIGd1ZXN0IHN0YXRlIGluICovXG4tLVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3BhY2EuaC0yNDItXHRzdHJ1Y3Qga3ZtcHBjX2hvc3Rfc3RhdGUga3ZtX2hzdGF0ZTtcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9wYWNhLmg6MjQzOiNpZmRlZiBDT05GSUdfS1ZNX0JPT0szU19IVl9QT1NTSUJMRVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3BhY2EuaC0yNDQtXHQvKlxuLS1cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9wbWMuaD0yMz1zdGF0aWMgaW5saW5lIHZvaWQgcHBjX3NldF9wbXVfaW51c2UoaW50IGludXNlKVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3BtYy5oLTI0LXtcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9wbWMuaDoyNTojaWYgZGVmaW5lZChDT05GSUdfUFBDX1BTRVJJRVMpIHx8IGRlZmluZWQoQ09ORklHX0tWTV9CT09LM1NfSFZfUE9TU0lCTEUpXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vcG1jLmgtMjYtXHRpZiAoZmlybXdhcmVfaGFzX2ZlYXR1cmUoRldfRkVBVFVSRV9MUEFSKSkge1xuLS1cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9wbWMuaC0zMC1cdH1cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9wbWMuaDozMTojaWZkZWYgQ09ORklHX0tWTV9CT09LM1NfSFZfUE9TU0lCTEVcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9wbWMuaC0zMi1cdGdldF9wYWNhKCktXHUwMDNlcG1jcmVnc19pbl91c2UgPSBpbnVzZTtcbi0tXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vcG1jLmgtMzYtXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vcG1jLmg6Mzc6I2lmZGVmIENPTkZJR19LVk1fQk9PSzNTX0hWX1BPU1NJQkxFXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vcG1jLmgtMzgtc3RhdGljIGlubGluZSBpbnQgcHBjX2dldF9wbXVfaW51c2Uodm9pZClcbi0tXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vcHJvY2Vzc29yLmg9MTMzPXN0cnVjdCB0aHJlYWRfc3RydWN0IHtcbi0tXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vcHJvY2Vzc29yLmgtMjI1LSNlbmRpZiAvKiBDT05GSUdfUFBDX1RSQU5TQUNUSU9OQUxfTUVNICovXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vcHJvY2Vzc29yLmg6MjI2OiNpZmRlZiBDT05GSUdfS1ZNX0JPT0szU18zMl9IQU5ETEVSXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vcHJvY2Vzc29yLmgtMjI3LVx0dm9pZCpcdFx0a3ZtX3NoYWRvd192Y3B1OyAvKiBLVk0gaW50ZXJuYWwgZGF0YSAqL1xuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3Byb2Nlc3Nvci5oOjIyODojZW5kaWYgLyogQ09ORklHX0tWTV9CT09LM1NfMzJfSEFORExFUiAqL1xuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3Byb2Nlc3Nvci5oOjIyOTojaWYgZGVmaW5lZChDT05GSUdfS1ZNKSBcdTAwMjZcdTAwMjYgZGVmaW5lZChDT05GSUdfQk9PS0UpXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vcHJvY2Vzc29yLmgtMjMwLVx0c3RydWN0IGt2bV92Y3B1XHQqa3ZtX3ZjcHU7XG4tLVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3RpbWUuaD0xMDE9c3RhdGljIGlubGluZSB1NjQgdGltZXJfZ2V0X25leHRfdGIodm9pZClcbi0tXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vdGltZS5oLTEwNS1cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS90aW1lLmg6MTA2OiNpZmRlZiBDT05GSUdfS1ZNX0JPT0szU19IVl9QT1NTSUJMRVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3RpbWUuaC0xMDctdm9pZCB0aW1lcl9yZWFybV9ob3N0X2RlYyh1NjQgbm93KTtcbi0tXG5hcmNoL3Bvd2VycGMva2VybmVsL01ha2VmaWxlPTE2Mj1vYmotJChDT05GSUdfRVBBUFJfUEFSQVZJUlQpXHQmIzQzOz0gZXBhcHJfcGFyYXZpcnQubyBlcGFwcl9oY2FsbHMub1xuYXJjaC9wb3dlcnBjL2tlcm5lbC9NYWtlZmlsZToxNjM6b2JqLSQoQ09ORklHX0tWTV9HVUVTVClcdFx0JiM0Mzs9IGt2bS5vIGt2bV9lbXVsLm9cbmFyY2gvcG93ZXJwYy9rZXJuZWwvTWFrZWZpbGUtMTY0LWlmbmVxICgkKENPTkZJR19QUENfUE9XRVJOVikkKENPTkZJR19QUENfU1ZNKSwpXG4tLVxuYXJjaC9wb3dlcnBjL2tlcm5lbC9hc20tb2Zmc2V0cy5jLTQ4LSNlbmRpZlxuYXJjaC9wb3dlcnBjL2tlcm5lbC9hc20tb2Zmc2V0cy5jOjQ5OiNpZiBkZWZpbmVkKENPTkZJR19LVk0pIHx8IGRlZmluZWQoQ09ORklHX0tWTV9HVUVTVClcbmFyY2gvcG93ZXJwYy9rZXJuZWwvYXNtLW9mZnNldHMuYy01MC0jaW5jbHVkZSBcdTAwM2NsaW51eC9rdm1faG9zdC5oXHUwMDNlXG5hcmNoL3Bvd2VycGMva2VybmVsL2FzbS1vZmZzZXRzLmMtNTEtI2VuZGlmXG5hcmNoL3Bvd2VycGMva2VybmVsL2FzbS1vZmZzZXRzLmM6NTI6I2lmIGRlZmluZWQoQ09ORklHX0tWTSkgXHUwMDI2XHUwMDI2IGRlZmluZWQoQ09ORklHX1BQQ19CT09LM1MpXG5hcmNoL3Bvd2VycGMva2VybmVsL2FzbS1vZmZzZXRzLmMtNTMtI2luY2x1ZGUgXHUwMDNjYXNtL2t2bV9ib29rM3MuaFx1MDAzZVxuLS1cbmFyY2gvcG93ZXJwYy9rZXJuZWwvYXNtLW9mZnNldHMuYz03OD1pbnQgbWFpbih2b2lkKVxuLS1cbmFyY2gvcG93ZXJwYy9rZXJuZWwvYXNtLW9mZnNldHMuYy0xNTAtI2VuZGlmIC8qIENPTkZJR19QUEM2NCAqL1xuYXJjaC9wb3dlcnBjL2tlcm5lbC9hc20tb2Zmc2V0cy5jOjE1MTojaWZkZWYgQ09ORklHX0tWTV9CT09LM1NfMzJfSEFORExFUlxuYXJjaC9wb3dlcnBjL2tlcm5lbC9hc20tb2Zmc2V0cy5jLTE1Mi1cdE9GRlNFVChUSFJFQURfS1ZNX1NWQ1BVLCB0aHJlYWRfc3RydWN0LCBrdm1fc2hhZG93X3ZjcHUpO1xuYXJjaC9wb3dlcnBjL2tlcm5lbC9hc20tb2Zmc2V0cy5jLTE1My0jZW5kaWZcbmFyY2gvcG93ZXJwYy9rZXJuZWwvYXNtLW9mZnNldHMuYzoxNTQ6I2lmIGRlZmluZWQoQ09ORklHX0tWTSkgXHUwMDI2XHUwMDI2IGRlZmluZWQoQ09ORklHX0JPT0tFKVxuYXJjaC9wb3dlcnBjL2tlcm5lbC9hc20tb2Zmc2V0cy5jLTE1NS1cdE9GRlNFVChUSFJFQURfS1ZNX1ZDUFUsIHRocmVhZF9zdHJ1Y3QsIGt2bV92Y3B1KTtcbi0tXG5hcmNoL3Bvd2VycGMva2VybmVsL2FzbS1vZmZzZXRzLmMtMjMwLVx0T0ZGU0VUKExQUEFDQV9QTUNJTlVTRSwgbHBwYWNhLCBwbWNyZWdzX2luX3VzZSk7XG5hcmNoL3Bvd2VycGMva2VybmVsL2FzbS1vZmZzZXRzLmM6MjMxOiNpZmRlZiBDT05GSUdfS1ZNX0JPT0szU19IVl9QT1NTSUJMRVxuYXJjaC9wb3dlcnBjL2tlcm5lbC9hc20tb2Zmc2V0cy5jLTIzMi1cdE9GRlNFVChQQUNBX1BNQ0lOVVNFLCBwYWNhX3N0cnVjdCwgcG1jcmVnc19pbl91c2UpO1xuLS1cbmFyY2gvcG93ZXJwYy9rZXJuZWwvYXNtLW9mZnNldHMuYy0zNTMtXG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMyAxNToyOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDE5OAoJCQkJCQkJb3V0cHV0OiAyMwoJCQkJCQkJdGhvdWdodHM6IDY1MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEtWTSBPT00gTm90aWZpZXIgUGF0Y2ggZm9yIEZ1enppbmcqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93biBmb3IgZnV6emluZyBwdXJwb3Nlcy4gRmlyc3QsIHRoZSBjb3JlIG9mIHRoaXMgcGF0Y2ggcmV2b2x2ZXMgYXJvdW5kIGBtbXVfbm90aWZpZXJgIGludGVncmF0aW9uLCBzcGVjaWZpY2FsbHkgaW4gdGhlIGNvbnRleHQgb2YgT3V0LU9mLU1lbW9yeSAoT09NKSBzaXR1YXRpb25zLCB3aXRoIGEgS1ZNLXNwZWNpZmljIGltcGxlbWVudGF0aW9uLiBJIHNlZSB0aGF0IGBDT05GSUdfS1ZNYCBpcywgb2YgY291cnNlLCBhIGdpdmVuLCBhbmQgdGhpcyBwYXRjaCByZWxpZXMgb24gYG1tdV9ub3RpZmllcmAgZnVuY3Rpb25hbGl0eSwgcmVxdWlyaW5nIGBDT05GSUdfTU1VX05PVElGSUVSYC4gIFNpbmNlIGBfX29vbV9yZWFwX3Rhc2tfbW1gIGNhbGxzIGBtbXVfbm90aWZpZXJfb29tX2VudGVyYCB3aGljaCByZXF1aXJlcyBgQ09ORklHX01NVWAsIGFuZCBgQ09ORklHX01NVWAgaXMgbmVhcmx5IHViaXF1aXRvdXMsIHdlJiMzOTtyZSBsaWtlbHkgZ29vZCBvbiB0aGUgYmFzZSBjb25maWdzLgoKTXkgZm9jdXMgaGFzIHRvIGJlIG9uIHRoZSBuZXcgYW5kIG1vZGlmaWVkIGZ1bmN0aW9ucy4gU28sIHRoZSBrZXkgZnVuY3Rpb25zIHRoYXQgYXJlIGFkZGVkIG9yIGhhdmUgY2hhbmdlZCB3aXRoaW4gdGhpcyBwYXRjaCBhcmU6IGBtbXVfbm90aWZpZXJfb29tX2VudGVyYCwgYG1tdV9ub3RpZmllcl9iYXJyaWVyYCwgYG1tdV9ub3RpZmllcl9vb21fY2FsbGJhY2tfZm5gLCBga3ZtX21tdV9ub3RpZmllcl9hZnRlcl9vb21fdW5yZWdpc3RlcmAsIGBrdm1fZGVzdHJveV92bWAgKG1vZGlmaWVkKSwgYW5kIGBfX29vbV9yZWFwX3Rhc2tfbW1gIChtb2RpZmllZCkuCgpOb3csIHRvIGRldGVybWluZSB0aGUgbW9zdCBlZmZlY3RpdmUgZnV6emluZyB0YXJnZXRzLCBJIG5lZWQgdG8gbWFwIHRoZWlyIGNhbGwgcGF0aHMuIGBtbXVfbm90aWZpZXJfb29tX2VudGVyYCBpcyBjYWxsZWQgYnkgYF9fb29tX3JlYXBfdGFza19tbWAuIGBrdm1fbW11X25vdGlmaWVyX2FmdGVyX29vbV91bnJlZ2lzdGVyYCBpcyBjYWxsZWQgYnkgYG1tdV9ub3RpZmllcl9vb21fY2FsbGJhY2tfZm5gLiBBbmQgYG1tdV9ub3RpZmllcl9iYXJyaWVyYCBpcyBjYWxsZWQgYnkgYGt2bV9kZXN0cm95X3ZtYC4gVGhhdCYjMzk7cyBhIGdvb2Qgc3RhcnQuIEkgY2FuIGFsc28gZm9jdXMgb24gYF9fb29tX3JlYXBfdGFza19tbWAgYmVjYXVzZSBpdCYjMzk7cyB0aGUgZW50cnkgcG9pbnQgdG8gdGhlIG5ldyBPT00gbG9naWMsIGV2ZW4gdGhvdWdoIGBtbXVfbm90aWZpZXJfb29tX2VudGVyYCBpcyBhIG1vcmUgc3BlY2lmaWMgdGFyZ2V0LiBTaW1pbGFybHksIGBrdm1fZGVzdHJveV92bWAgaXMgaW50ZXJlc3RpbmcgYmVjYXVzZSBvZiB0aGUgbW9kaWZpY2F0aW9ucyB0byBoYW5kbGUgdGhlIHVuaGFzaGVkIGhsaXN0LgoKU28sIHRha2luZyBhbGwgb2YgdGhpcyBpbnRvIGFjY291bnQsIEkmIzM5O20gZ29pbmcgdG8gcHJpb3JpdGl6ZSB0aGVzZSBzeW1ib2xzIGZvciBmdXp6aW5nOiBgbW11X25vdGlmaWVyX29vbV9lbnRlcmAsIGBtbXVfbm90aWZpZXJfYmFycmllcmAsIGBtbXVfbm90aWZpZXJfb29tX2NhbGxiYWNrX2ZuYCwgYGt2bV9tbXVfbm90aWZpZXJfYWZ0ZXJfb29tX3VucmVnaXN0ZXJgLCBhbmQgYGt2bV9kZXN0cm95X3ZtYC4gSSYjMzk7bSBjb25maWRlbnQgaW4gdGhvc2UgbmFtZXMgYXMgdGhleSBhcHBlYXIuCgpGaW5hbGx5LCBsZXQgbWUganVzdCB2ZXJpZnkgdGhhdCBgX19vb21fcmVhcF90YXNrX21tYCBkb2VzbiYjMzk7dCBoYXZlIGFueSBjb25kaXRpb25hbCBjb21waWxhdGlvbiBkaXJlY3RpdmVzIHRoYXQgd291bGQgbWFrZSBpdCB1bmF2YWlsYWJsZSB1bmRlciBjZXJ0YWluIGNvbmZpZ3VyYXRpb25zLiBTaW5jZSBpdCBsaXZlcyBpbiBgbW0vb29tX2tpbGwuY2AsIEkmIzM5O2xsIHF1aWNrbHkgY2hlY2sgZm9yIHRoYXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMTU6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7X19vb21fcmVhcF90YXNrX21tJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL29vbV9raWxsLmM9NTExPXN0YXRpYyBERUZJTkVfU1BJTkxPQ0sob29tX3JlYXBlcl9sb2NrKTtcbm1tL29vbV9raWxsLmMtNTEyLVxubW0vb29tX2tpbGwuYzo1MTM6c3RhdGljIGJvb2wgX19vb21fcmVhcF90YXNrX21tKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tKVxubW0vb29tX2tpbGwuYy01MTQte1xuLS1cbm1tL29vbV9raWxsLmM9NTY1PXN0YXRpYyBib29sIG9vbV9yZWFwX3Rhc2tfbW0oc3RydWN0IHRhc2tfc3RydWN0ICp0c2ssIHN0cnVjdCBtbV9zdHJ1Y3QgKm1tKVxuLS1cbm1tL29vbV9raWxsLmMtNTg3LVx0LyogZmFpbGVkIHRvIHJlYXAgcGFydCBvZiB0aGUgYWRkcmVzcyBzcGFjZS4gVHJ5IGFnYWluIGxhdGVyICovXG5tbS9vb21fa2lsbC5jOjU4ODpcdHJldCA9IF9fb29tX3JlYXBfdGFza19tbShtbSk7XG5tbS9vb21fa2lsbC5jLTU4OS1cdGlmICghcmV0KVxuLS1cbm1tL29vbV9raWxsLmM9MTE5OD1TWVNDQUxMX0RFRklORTIocHJvY2Vzc19tcmVsZWFzZSwgaW50LCBwaWRmZCwgdW5zaWduZWQgaW50LCBmbGFncylcbi0tXG5tbS9vb21fa2lsbC5jLTEyNDctXHQgKi9cbm1tL29vbV9raWxsLmM6MTI0ODpcdGlmICghbW1fZmxhZ3NfdGVzdChNTUZfT09NX1NLSVAsIG1tKSBcdTAwMjZcdTAwMjYgIV9fb29tX3JlYXBfdGFza19tbShtbSkpXG5tbS9vb21fa2lsbC5jLTEyNDktXHRcdHJldCA9IC1FQUdBSU47XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMTU6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjE3OTUKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiA5NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFJvbGUgb2YgYF9fb29tX3JlYXBfdGFza19tbWAqKgoKT2theSwgc28gYF9fb29tX3JlYXBfdGFza19tbWAgbGl2ZXMgd2l0aGluIGBtbS9vb21fa2lsbC5jYCwgd2hpY2gsIGlmIEkgcmVjYWxsIGNvcnJlY3RseSwgaXMgYWx3YXlzIGNvbXBpbGVkIG9yIGF0IGxlYXN0IGRlcGVuZHMgb24gdGhlIE1NVS4gVGhhdCBtYWtlcyBzZW5zZSwgZ2l2ZW4gdGhlIGZ1bmN0aW9uJiMzOTtzIG5hbWUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBjb250ZXh0IHdpdGhpbiB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24uIEkgcmVtZW1iZXIgdGhlIGVuYWJsaW5nIGNvbmZpZ3MgYXJlIGBNTVVfTk9USUZJRVJgIGFuZCBgS1ZNYCwgc3BlY2lmaWNhbGx5LgoKTm93LCBteSBsaW5lIG9mIGlucXVpcnkgaXMgY2xlYXI6IElzIGBNTVVfTk9USUZJRVJgIGRpcmVjdGx5IHVzZXItc2VsZWN0YWJsZSwgb3IgaXMgaXQgYSBkZXBlbmRlbmN5IG9mIGFub3RoZXIgY29uZmlnPyBJJiMzOTtsbCBoZWFkIG92ZXIgdG8gYG1tL0tjb25maWdgIG9yIGEgc2ltaWxhciBjb25maWd1cmF0aW9uIGZpbGUgaW4gdGhlIG1lbW9yeSBtYW5hZ2VtZW50IHN1YnRyZWUuIFRoYXQgc2hvdWxkIGJlIHRoZSBkZWZpbml0aXZlIHBsYWNlIHRvIHRyYWNrIGRvd24gdGhlIHJlbGF0aW9uc2hpcCBhbmQgZW5zdXJlIEkgdW5kZXJzdGFuZCBob3cgdGhpcyBjb21wb25lbnQgaXMgYWN0dWFsbHkgZW5hYmxlZCBpbiBkaWZmZXJlbnQgYnVpbGRzLiBJIG5lZWQgYSBjbGVhciBwaWN0dXJlIG9mIGl0cyBjb25maWd1cmFiaWxpdHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIzIDE1OjI5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBNTVVfTk9USUZJRVImIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vS2NvbmZpZz03MzM9Y29uZmlnIFBIWVNfQUREUl9UXzY0QklUXG4tLVxubW0vS2NvbmZpZy03MzUtXG5tbS9LY29uZmlnOjczNjpjb25maWcgTU1VX05PVElGSUVSXG5tbS9LY29uZmlnLTczNy1cdGJvb2xcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMTU6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjIxNzYKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiA3NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIHNlZSwgSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYE1NVV9OT1RJRklFUmAgb3B0aW9uLiBJdCYjMzk7cyBhIGBib29sYCBhbmQgSSBkb24mIzM5O3Qgc2VlIGFueSBhc3NvY2lhdGVkIHByb21wdCB3aXRoIGl0LCB3aGljaCBtZWFucyBpdCYjMzk7cyBsaWtlbHkgYmVpbmcgc2VsZWN0ZWQgYnkgb3RoZXIgY29uZmlndXJhdGlvbnMuIFJpZ2h0LCB0aGF0IG1ha2VzIHNlbnNlLgoKKipBbmFseXppbmcgdGhlIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jeSoqCgpUaGUgc3RyYXRlZ3kgaGVyZSBpcyB0byBqdXN0IGxpc3QgYE1NVV9OT1RJRklFUmAgaW4gdGhlIGNvbmZpZ3VyYXRpb24uIFRoZSBzeXprYWxsZXIgY29uZmlnIHN5c3RlbSBzaG91bGQgaGFuZGxlIHRoZSByZXN0IC0gaXQgd2lsbCBlaXRoZXIgZW5hYmxlIGBNTVVfTk9USUZJRVJgIGRpcmVjdGx5IG9yIGVuYWJsZSBhbm90aGVyIGNvbmZpZ3VyYXRpb24gb3B0aW9uIHRoYXQgc2VsZWN0cyBpdCwgYmFzZWQgb24gdGhlIGRlcGVuZGVuY2llcy4gTm93LCBoYW5nIG9uIGEgc2Vjb25kLi4uIGlzIGBLVk1gIGFjdHVhbGx5IG9uZSBvZiB0aGUgb3B0aW9ucyB0aGF0IHNlbGVjdHMgYE1NVV9OT1RJRklFUmA/IFRoYXQmIzM5O3MgYSByZWFzb25hYmxlIGFzc3VtcHRpb24sIGJ1dCBJIHNob3VsZCBwcm9iYWJseSBjb25maXJtIGl0IHRvIGJlIGNlcnRhaW4uIExldCYjMzk7cyBkaWcgZGVlcGVyIGFuZCB2ZXJpZnkgdGhhdC4gSXQmIzM5O3MgYWx3YXlzIGJlc3QgdG8gYmUgcHJlY2lzZSB3aGVuIGRlYWxpbmcgd2l0aCBrZXJuZWwgY29uZmlndXJhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMTU6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2VsZWN0IE1NVV9OT1RJRklFUiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3Bvd2VybnYvS2NvbmZpZz0yPWNvbmZpZyBQUENfUE9XRVJOVlxuLS1cbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcG93ZXJudi9LY29uZmlnLTE3LVx0c2VsZWN0IFBQQ19ET09SQkVMTFxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wb3dlcm52L0tjb25maWc6MTg6XHRzZWxlY3QgTU1VX05PVElGSUVSXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3Bvd2VybnYvS2NvbmZpZy0xOS1cdHNlbGVjdCBGT1JDRV9TTVBcbi0tXG5hcmNoL3g4Ni9LY29uZmlnPTE4Mjc9Y29uZmlnIFg4Nl9TR1hcbi0tXG5hcmNoL3g4Ni9LY29uZmlnLTE4MzAtXHRzZWxlY3QgQ1JZUFRPX0xJQl9TSEEyNTZcbmFyY2gveDg2L0tjb25maWc6MTgzMTpcdHNlbGVjdCBNTVVfTk9USUZJRVJcbmFyY2gveDg2L0tjb25maWctMTgzMi1cdHNlbGVjdCBOVU1BX0tFRVBfTUVNSU5GTyBpZiBOVU1BXG4tLVxuZHJpdmVycy9ncHUvZHJtL0tjb25maWc9MjI4PWNvbmZpZyBEUk1fR1BVU1ZNXG4tLVxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMjMxLVx0c2VsZWN0IEhNTV9NSVJST1JcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnOjIzMjpcdHNlbGVjdCBNTVVfTk9USUZJRVJcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTIzMy1cdGhlbHBcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9LY29uZmlnPTc1PWNvbmZpZyBEUk1fQU1ER1BVX1VTRVJQVFJcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9LY29uZmlnLTc4LVx0c2VsZWN0IEhNTV9NSVJST1JcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L0tjb25maWc6Nzk6XHRzZWxlY3QgTU1VX05PVElGSUVSXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9LY29uZmlnLTgwLVx0aGVscFxuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL0tjb25maWc9Nj1jb25maWcgSFNBX0FNRFxuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL0tjb25maWctOS1cdHNlbGVjdCBITU1fTUlSUk9SXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9LY29uZmlnOjEwOlx0c2VsZWN0IE1NVV9OT1RJRklFUlxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQvS2NvbmZpZy0xMS1cdHNlbGVjdCBEUk1fQU1ER1BVX1VTRVJQVFJcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9LY29uZmlnPTE1PWNvbmZpZyBIU0FfQU1EX1NWTVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL0tjb25maWctMTktXHRzZWxlY3QgSE1NX01JUlJPUlxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQvS2NvbmZpZzoyMDpcdHNlbGVjdCBNTVVfTk9USUZJRVJcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL0tjb25maWctMjEtXHRoZWxwXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvS2NvbmZpZz0xMTQ9Y29uZmlnIERSTV9JOTE1X1VTRVJQVFJcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9LY29uZmlnLTExNi1cdGRlcGVuZHMgb24gRFJNX0k5MTVcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L0tjb25maWc6MTE3Olx0c2VsZWN0IE1NVV9OT1RJRklFUlxuZHJpdmVycy9ncHUvZHJtL2k5MTUvS2NvbmZpZy0xMTgtXHRkZWZhdWx0IHlcbi0tXG5kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9LY29uZmlnPTk0PWNvbmZpZyBEUk1fTk9VVkVBVV9TVk1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9LY29uZmlnLTk5LVx0c2VsZWN0IEhNTV9NSVJST1JcbmRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L0tjb25maWc6MTAwOlx0c2VsZWN0IE1NVV9OT1RJRklFUlxuZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvS2NvbmZpZy0xMDEtXHRkZWZhdWx0IG5cbi0tXG5kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL0tjb25maWc9Mzg9Y29uZmlnIERSTV9SQURFT05fVVNFUlBUUlxuLS1cbmRyaXZlcnMvZ3B1L2RybS9yYWRlb24vS2NvbmZpZy00MC1cdGRlcGVuZHMgb24gRFJNX1JBREVPTlxuZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9LY29uZmlnOjQxOlx0c2VsZWN0IE1NVV9OT1RJRklFUlxuZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9LY29uZmlnLTQyLVx0aGVscFxuLS1cbmRyaXZlcnMvZ3B1L2RybS94ZS9LY29uZmlnPTI9Y29uZmlnIERSTV9YRVxuLS1cbmRyaXZlcnMvZ3B1L2RybS94ZS9LY29uZmlnLTQ0LVx0c2VsZWN0IERSTV9TQ0hFRFxuZHJpdmVycy9ncHUvZHJtL3hlL0tjb25maWc6NDU6XHRzZWxlY3QgTU1VX05PVElGSUVSXG5kcml2ZXJzL2dwdS9kcm0veGUvS2NvbmZpZy00Ni1cdHNlbGVjdCBXQU5UX0RFVl9DT1JFRFVNUFxuLS1cbmRyaXZlcnMvaHYvS2NvbmZpZz02OD1jb25maWcgTVNIVl9ST09UXG4tLVxuZHJpdmVycy9odi9LY29uZmlnLTgwLVx0c2VsZWN0IEhNTV9NSVJST1JcbmRyaXZlcnMvaHYvS2NvbmZpZzo4MTpcdHNlbGVjdCBNTVVfTk9USUZJRVJcbmRyaXZlcnMvaHYvS2NvbmZpZy04Mi1cdGRlZmF1bHQgblxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnPTUxPWNvbmZpZyBJTkZJTklCQU5EX09OX0RFTUFORF9QQUdJTkdcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZy01My1cdGRlcGVuZHMgb24gSU5GSU5JQkFORF9VU0VSX01FTVxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWc6NTQ6XHRzZWxlY3QgTU1VX05PVElGSUVSXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZy01NS1cdHNlbGVjdCBJTlRFUlZBTF9UUkVFXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2hmaTEvS2NvbmZpZz0yPWNvbmZpZyBJTkZJTklCQU5EX0hGSTFcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvaGZpMS9LY29uZmlnLTQtXHRkZXBlbmRzIG9uIFg4Nl82NCBcdTAwMjZcdTAwMjYgSU5GSU5JQkFORF9SRE1BVlQgXHUwMDI2XHUwMDI2IEkyQyBcdTAwMjZcdTAwMjYgIVVNTFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2hmaTEvS2NvbmZpZzo1Olx0c2VsZWN0IE1NVV9OT1RJRklFUlxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2hmaTEvS2NvbmZpZy02LVx0c2VsZWN0IENSQzMyXG4tLVxuZHJpdmVycy9pb21tdS9hbWQvS2NvbmZpZz0zPWNvbmZpZyBBTURfSU9NTVVcbi0tXG5kcml2ZXJzL2lvbW11L2FtZC9LY29uZmlnLTEwLVx0c2VsZWN0IElSUV9NU0lfTElCXG5kcml2ZXJzL2lvbW11L2FtZC9LY29uZmlnOjExOlx0c2VsZWN0IE1NVV9OT1RJRklFUlxuZHJpdmVycy9pb21tdS9hbWQvS2NvbmZpZy0xMi1cdHNlbGVjdCBJT01NVV9BUElcbi0tXG5kcml2ZXJzL2lvbW11L2FybS9LY29uZmlnPTkxPWNvbmZpZyBBUk1fU01NVV9WM19TVkFcbi0tXG5kcml2ZXJzL2lvbW11L2FybS9LY29uZmlnLTk0LVx0c2VsZWN0IElPTU1VX0lPUEZcbmRyaXZlcnMvaW9tbXUvYXJtL0tjb25maWc6OTU6XHRzZWxlY3QgTU1VX05PVElGSUVSXG5kcml2ZXJzL2lvbW11L2FybS9LY29uZmlnLTk2LVx0aGVscFxuLS1cbmRyaXZlcnMvaW9tbXUvaW50ZWwvS2NvbmZpZz01Mz1jb25maWcgSU5URUxfSU9NTVVfU1ZNXG4tLVxuZHJpdmVycy9pb21tdS9pbnRlbC9LY29uZmlnLTU1LVx0ZGVwZW5kcyBvbiBYODZfNjRcbmRyaXZlcnMvaW9tbXUvaW50ZWwvS2NvbmZpZzo1NjpcdHNlbGVjdCBNTVVfTk9USUZJRVJcbmRyaXZlcnMvaW9tbXUvaW50ZWwvS2NvbmZpZy01Ny1cdHNlbGVjdCBJT01NVV9TVkFcbi0tXG5kcml2ZXJzL21pc2MvS2NvbmZpZz0zMTM9Y29uZmlnIFNHSV9HUlVcbi0tXG5kcml2ZXJzL21pc2MvS2NvbmZpZy0zMTUtXHRkZXBlbmRzIG9uIFg4Nl9VViBcdTAwMjZcdTAwMjYgU01QXG5kcml2ZXJzL21pc2MvS2NvbmZpZzozMTY6XHRzZWxlY3QgTU1VX05PVElGSUVSXG5kcml2ZXJzL21pc2MvS2NvbmZpZy0zMTctXHRoZWxwXG4tLVxuZHJpdmVycy94ZW4vS2NvbmZpZz0xMzY9Y29uZmlnIFhFTl9HTlRERVZcbi0tXG5kcml2ZXJzL3hlbi9LY29uZmlnLTEzOS1cdGRlZmF1bHQgbVxuZHJpdmVycy94ZW4vS2NvbmZpZzoxNDA6XHRzZWxlY3QgTU1VX05PVElGSUVSXG5kcml2ZXJzL3hlbi9LY29uZmlnLTE0MS1cdHNlbGVjdCBGSU5EX05PUk1BTF9QQUdFXG4tLVxubGliL0tjb25maWcuZGVidWc9MzM1ND1jb25maWcgVEVTVF9ITU1cbi0tXG5saWIvS2NvbmZpZy5kZWJ1Zy0zMzU4LVx0c2VsZWN0IEhNTV9NSVJST1JcbmxpYi9LY29uZmlnLmRlYnVnOjMzNTk6XHRzZWxlY3QgTU1VX05PVElGSUVSXG5saWIvS2NvbmZpZy5kZWJ1Zy0zMzYwLVx0aGVscFxuLS1cbnZpcnQva3ZtL0tjb25maWc9ND1jb25maWcgS1ZNX0NPTU1PTlxuLS1cbnZpcnQva3ZtL0tjb25maWctNy0gICAgICAgc2VsZWN0IElOVEVSVkFMX1RSRUVcbnZpcnQva3ZtL0tjb25maWc6ODogICAgICAgc2VsZWN0IE1NVV9OT1RJRklFUlxudmlydC9rdm0vS2NvbmZpZy05LSAgICAgICBzZWxlY3QgUFJFRU1QVF9OT1RJRklFUlNcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMTU6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjQzMjUKCQkJCQkJCW91dHB1dDogMjA5CgkJCQkJCQl0aG91Z2h0czogOTk0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZvY3VzaW5nIHRoZSBGdXp6OiBLVk0gYW5kIE9PTSBDbGVhbnVwKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24gZm9yIGZ1enppbmcuIEl0IGxvb2tzIGxpa2UgYEtWTV9DT01NT05gIHNlbGVjdHMgYE1NVV9OT1RJRklFUmAsIGFuZCBgS1ZNYCBzZWxlY3RzIGBLVk1fQ09NTU9OYC4gVGhlcmVmb3JlLCBlbmFibGluZyBgS1ZNYCBpcyBkZWZpbml0ZWx5IHRoZSByaWdodCBjb25maWcgdG8gZ2V0IGV2ZXJ5dGhpbmcgcmVsYXRlZCB0byB0aGUgcGF0Y2ggZW5hYmxlZC4gIGBLVk1gIGlzIHByZXR0eSBzdGFuZGFyZCwgc28gd2UgY2FuIGp1c3QgbGlzdCB0aGF0LgoKVGhlIHBhdGNoIGl0c2VsZiB0b3VjaGVzIGB2aXJ0L2t2bS9rdm1fbWFpbi5jYCwgd2hpY2ggdGVsbHMgbWUgdGhhdCBgS1ZNYCBpcyBuZWNlc3NhcnkgdG8gdGVzdCB0aGUgS1ZNLXNwZWNpZmljIGltcGxlbWVudGF0aW9uIG9mIGBhZnRlcl9vb21fdW5yZWdpc3RlcmAuIFRoZSBjZW50cmFsIGxvZ2ljIGlzIGluIGBtbS9tbXVfbm90aWZpZXIuY2AgYW5kIGBtbS9vb21fa2lsbC5jYCwgc28gYEtWTWAgc2hvdWxkIGJlIHN1ZmZpY2llbnQgdG8gZW5hYmxlIGBNTVVfTk9USUZJRVJgIGFuZCB0ZXN0IHRoZSB3aG9sZSBmbG93LgoKTm93LCBsZXQmIzM5O3MgbmFpbCBkb3duIHRoZSBrZXkgc3ltYm9scy4gV2UgaGF2ZTogYG1tdV9ub3RpZmllcl9vb21fZW50ZXJgLCBgbW11X25vdGlmaWVyX2JhcnJpZXJgLCBgbW11X25vdGlmaWVyX29vbV9jYWxsYmFja19mbmAsIGBrdm1fbW11X25vdGlmaWVyX2FmdGVyX29vbV91bnJlZ2lzdGVyYCwgYW5kIGBrdm1fZGVzdHJveV92bWAuCgpPa2F5LCBkaWdnaW5nIGEgYml0IGRlZXBlciwgYG1tdV9ub3RpZmllcl9vb21fZW50ZXJgIGlzIGNhbGxlZCBmcm9tIGBfX29vbV9yZWFwX3Rhc2tfbW1gLiBgX19vb21fcmVhcF90YXNrX21tYCBpcyBpbiB0dXJuIGNhbGxlZCBmcm9tIGBvb21fcmVhcF90YXNrX21tYCBhbmQgYHByb2Nlc3NfbXJlbGVhc2VgLiAgYHByb2Nlc3NfbXJlbGVhc2VgIGlzIGEgc3lzY2FsbC4gIEludGVyZXN0aW5nLiBTbywgZnV6emluZyBgcHJvY2Vzc19tcmVsZWFzZWAgc2hvdWxkIGJlIGEgcGF0aCB0byB0cmlnZ2VyIGBtbXVfbm90aWZpZXJfb29tX2VudGVyYC4gU3l6a2FsbGVyIHdpbGwgYWxyZWFkeSBmdXp6IGBwcm9jZXNzX21yZWxlYXNlYCBzaW5jZSBpdCYjMzk7cyBhIHN5c2NhbGwsIGJ1dCBsZXQmIzM5O3MgYWRkIGl0IHRvIHRoZSBmb2N1cyBzeW1ib2xzIHRvIGVuY291cmFnZSB0aGUgZnV6emVyIHRvIGdpdmUgaXQgc29tZSBleHRyYSBhdHRlbnRpb24uIFllcCwgYHByb2Nlc3NfbXJlbGVhc2VgIGxvb2tzIGxpa2UgYSBnb29kIGVudHJ5IHBvaW50IHNpbmNlIGl0JiMzOTtzIGEgc3lzY2FsbC4gTGV0JiMzOTtzIGFkZCB0aGF0IHRvIHRoZSBsaXN0LgoKTGV0JiMzOTtzIGRvdWJsZS1jaGVjayBob3cgYF9fb29tX3JlYXBfdGFza19tbWAgaXMgY2FsbGVkLiBJdCYjMzk7cyBjYWxsZWQgZnJvbSBgb29tX3JlYXBfdGFza19tbWAsIHdoaWNoIGlzIGNhbGxlZCBieSB0aGUgb29tX3JlYXBlciBrdGhyZWFkLiBBbHNvIGZyb20gdGhlIGBwcm9jZXNzX21yZWxlYXNlYCBzeXNjYWxsLiBUaGlzIHJlaW5mb3JjZXMgdGhlIGlkZWEgdGhhdCBgcHJvY2Vzc19tcmVsZWFzZWAgaXMgdGhlIGtleSB0byB0cmlnZ2VyIHRoaXMgZnJvbSB1c2Vyc3BhY2UuCgpga3ZtX2Rlc3Ryb3lfdm1gIGlzIGNhbGxlZCB3aGVuIGEgS1ZNIFZNIGlzIGRlc3Ryb3llZC4gQ3JlYXRpbmcgYW5kIGRlc3Ryb3lpbmcgVk1zIHdpbGwgbGlrZWx5IHRyaWdnZXIgdGhpcy4KClNvIHRoZSBjb21wbGV0ZSBzZXQgb2YgZm9jdXMgc3ltYm9scyBpczoKKiAgIGBtbXVfbm90aWZpZXJfb29tX2VudGVyYAoqICAgYG1tdV9ub3RpZmllcl9iYXJyaWVyYAoqICAgYG1tdV9ub3RpZmllcl9vb21fY2FsbGJhY2tfZm5gCiogICBga3ZtX21tdV9ub3RpZmllcl9hZnRlcl9vb21fdW5yZWdpc3RlcmAKKiAgIGBrdm1fZGVzdHJveV92bWAKKiAgIGBwcm9jZXNzX21yZWxlYXNlYAoKYG1tdV9ub3RpZmllcl9vb21fY2FsbGJhY2tfZm5gIGlzIHN0YXRpYywgYW5kIGNhbGxlZCB2aWEgYGNhbGxfc3JjdWAsIGJ1dCBpdCBzaG91bGQgc3RpbGwgYmUgaW5jbHVkZWQgc2luY2UgaXQmIzM5O3Mgb24gdGhlIGNhbGwgc3RhY2ssIGV2ZW4gaWYgaXQmIzM5O3MgY2FsbGVkIGFzeW5jaHJvbm91c2x5LgoKYGt2bV9kZXN0cm95X3ZtYCBpcyBzdGF0aWMgaW4gYHZpcnQva3ZtL2t2bV9tYWluLmNgIGFuZCBjYWxsZWQgZnJvbSBga3ZtX3B1dF9rdm1gLiBgbW11X25vdGlmaWVyX2JhcnJpZXJgIGlzIGV4cG9ydGVkLCBhbmQgYG1tdV9ub3RpZmllcl9vb21fZW50ZXJgIGlzIG5vdCBleHBvcnRlZCwgYnV0IGl0IGlzIGdsb2JhbC4KClRoZSByZWFzb25pbmcgaGVyZSBpcyB0aGF0IHRoaXMgcGF0Y2ggbW9kaWZpZXMgYm90aCBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IGFuZCBLVk0uIEl0IGludHJvZHVjZXMgYW4gYXN5bmNocm9ub3VzIGNhbGxiYWNrLCB0cmlnZ2VyZWQgYnkgT09NIGV2ZW50cywgYW5kIGltcGxlbWVudHMgaXQgZm9yIEtWTS4gVGhlIGNoYW5nZSBtb2RpZmllcyBga3ZtX2Rlc3Ryb3lfdm1gIHRvIGhhbmRsZSBhc3luY2hyb25vdXMgY2xlYW51cC4gSXQmIzM5O3MgY3J1Y2lhbCB0byBmdXp6IHRoaXMgdG8gY2hlY2sgZm9yIHVzZS1hZnRlci1mcmVlIG9yIGRlYWRsb2NrIGJ1Z3MgZHVyaW5nIFZNIE9PTSBoYW5kbGluZy4KCkp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlLCBgS1ZNYCBpcyB0aGUgY29uZmlnIG5hbWUsIG5vdCBgQ09ORklHX0tWTWAuICBZZXAsIGBLVk1gLgoKQWxzbywgYENPTkZJR19NTVVfTk9USUZJRVJgIGlzIHNlbGVjdGVkIGJ5IGBLVk1fQ09NTU9OYCB3aGljaCBpcyBzZWxlY3RlZCBieSBgS1ZNYC4gU28ganVzdCBgS1ZNYCBpcyBzdWZmaWNpZW50LCBidXQgbGlzdGluZyBib3RoIHdpbGwgbWFrZSBpdCBtb3JlIGV4cGxpY2l0LgoKTm93LCBsZXQmIzM5O3MgcHV0IHRoaXMgaW50byBhIHByb3BlciBzdW1tYXJ5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMyAxNToyOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7S1ZNJiMzNDssCiAgICAmIzM0O01NVV9OT1RJRklFUiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O21tdV9ub3RpZmllcl9vb21fZW50ZXImIzM0OywKICAgICYjMzQ7bW11X25vdGlmaWVyX2JhcnJpZXImIzM0OywKICAgICYjMzQ7bW11X25vdGlmaWVyX29vbV9jYWxsYmFja19mbiYjMzQ7LAogICAgJiMzNDtrdm1fbW11X25vdGlmaWVyX2FmdGVyX29vbV91bnJlZ2lzdGVyJiMzNDssCiAgICAmIzM0O2t2bV9kZXN0cm95X3ZtJiMzNDssCiAgICAmIzM0O3Byb2Nlc3NfbXJlbGVhc2UmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBNTVUgbm90aWZpZXIgY2FsbGJhY2sgYGFmdGVyX29vbV91bnJlZ2lzdGVyYCBhbmQgYSBtZWNoYW5pc20gdG8gaW52b2tlIGl0IGFzeW5jaHJvbm91c2x5IHdoZW4gYW4gT09NIGV2ZW50IG9jY3VycyAoYG1tdV9ub3RpZmllcl9vb21fZW50ZXJgKS4gSXQgYWxzbyBpbXBsZW1lbnRzIHRoaXMgY2FsbGJhY2sgZm9yIEtWTSBhbmQgbW9kaWZpZXMgYGt2bV9kZXN0cm95X3ZtYCB0byBoYW5kbGUgdGhlIGFzeW5jaHJvbm91cyBjbGVhbnVwLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gY29yZSBtZW1vcnkgbWFuYWdlbWVudCBhbmQgS1ZNLCBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgdGhlcmUgYXJlIG5vIHVzZS1hZnRlci1mcmVlIG9yIGRlYWRsb2NrIGlzc3VlcyBkdXJpbmcgT09NIGhhbmRsaW5nIG9mIFZNcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7S1ZNJiMzNDssCiAgICAmIzM0O01NVV9OT1RJRklFUiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O21tdV9ub3RpZmllcl9vb21fZW50ZXImIzM0OywKICAgICYjMzQ7bW11X25vdGlmaWVyX2JhcnJpZXImIzM0OywKICAgICYjMzQ7bW11X25vdGlmaWVyX29vbV9jYWxsYmFja19mbiYjMzQ7LAogICAgJiMzNDtrdm1fbW11X25vdGlmaWVyX2FmdGVyX29vbV91bnJlZ2lzdGVyJiMzNDssCiAgICAmIzM0O2t2bV9kZXN0cm95X3ZtJiMzNDssCiAgICAmIzM0O3Byb2Nlc3NfbXJlbGVhc2UmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBNTVUgbm90aWZpZXIgY2FsbGJhY2sgYGFmdGVyX29vbV91bnJlZ2lzdGVyYCBhbmQgYSBtZWNoYW5pc20gdG8gaW52b2tlIGl0IGFzeW5jaHJvbm91c2x5IHdoZW4gYW4gT09NIGV2ZW50IG9jY3VycyAoYG1tdV9ub3RpZmllcl9vb21fZW50ZXJgKS4gSXQgYWxzbyBpbXBsZW1lbnRzIHRoaXMgY2FsbGJhY2sgZm9yIEtWTSBhbmQgbW9kaWZpZXMgYGt2bV9kZXN0cm95X3ZtYCB0byBoYW5kbGUgdGhlIGFzeW5jaHJvbm91cyBjbGVhbnVwLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gY29yZSBtZW1vcnkgbWFuYWdlbWVudCBhbmQgS1ZNLCBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgdGhlcmUgYXJlIG5vIHVzZS1hZnRlci1mcmVlIG9yIGRlYWRsb2NrIGlzc3VlcyBkdXJpbmcgT09NIGhhbmRsaW5nIG9mIFZNcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDE1OjI5OjAwLjA0MTE4OTU1OFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3MTczNDIxNjc1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTVwiLFxuICAgIFwiTU1VX05PVElGSUVSXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibW11X25vdGlmaWVyX29vbV9lbnRlclwiLFxuICAgIFwibW11X25vdGlmaWVyX2JhcnJpZXJcIixcbiAgICBcIm1tdV9ub3RpZmllcl9vb21fY2FsbGJhY2tfZm5cIixcbiAgICBcImt2bV9tbXVfbm90aWZpZXJfYWZ0ZXJfb29tX3VucmVnaXN0ZXJcIixcbiAgICBcImt2bV9kZXN0cm95X3ZtXCIsXG4gICAgXCJwcm9jZXNzX21yZWxlYXNlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBNTVUgbm90aWZpZXIgY2FsbGJhY2sgYGFmdGVyX29vbV91bnJlZ2lzdGVyYCBhbmQgYSBtZWNoYW5pc20gdG8gaW52b2tlIGl0IGFzeW5jaHJvbm91c2x5IHdoZW4gYW4gT09NIGV2ZW50IG9jY3VycyAoYG1tdV9ub3RpZmllcl9vb21fZW50ZXJgKS4gSXQgYWxzbyBpbXBsZW1lbnRzIHRoaXMgY2FsbGJhY2sgZm9yIEtWTSBhbmQgbW9kaWZpZXMgYGt2bV9kZXN0cm95X3ZtYCB0byBoYW5kbGUgdGhlIGFzeW5jaHJvbm91cyBjbGVhbnVwLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gY29yZSBtZW1vcnkgbWFuYWdlbWVudCBhbmQgS1ZNLCBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgdGhlcmUgYXJlIG5vIHVzZS1hZnRlci1mcmVlIG9yIGRlYWRsb2NrIGlzc3VlcyBkdXJpbmcgT09NIGhhbmRsaW5nIG9mIFZNcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjNUMTU6Mjk6MDAuMDQxMTk5NjM4WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NzIzNDQ3MjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAwMjMxMWQxODVkYmNiNmQ5ZGExNjBhOWM3MDNiYTg2Zjc3OGE0Y2ViXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUaHUgSnVsIDIzIDE1OjI4OjU4IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbW11X25vdGlmaWVyLmggYi9pbmNsdWRlL2xpbnV4L21tdV9ub3RpZmllci5oXFxuaW5kZXggYTExYTQ0ZWVmNTIxZTkuLmExODIwYTQ4Nzg1NGRkIDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvbGludXgvbW11X25vdGlmaWVyLmhcXG4rKysgYi9pbmNsdWRlL2xpbnV4L21tdV9ub3RpZmllci5oXFxuQEAgLTg4LDYgKzg4LDE0IEBAIHN0cnVjdCBtbXVfbm90aWZpZXJfb3BzIHtcXG4gXFx0dm9pZCAoKnJlbGVhc2UpKHN0cnVjdCBtbXVfbm90aWZpZXIgKnN1YnNjcmlwdGlvbixcXG4gXFx0XFx0XFx0c3RydWN0IG1tX3N0cnVjdCAqbW0pO1xcbiBcXG4rXFx0LypcXG4rXFx0ICogQW55IG1tdSBub3RpZmllciB0aGF0IGRlZmluZXMgdGhpcyBpcyBhdXRvbWF0aWNhbGx5IHVucmVnaXN0ZXJlZFxcbitcXHQgKiB3aGVuIGl0cyBtbSBpcyB0aGUgc3ViamVjdCBvZiBhbiBPT00ga2lsbC4gIGFmdGVyX29vbV91bnJlZ2lzdGVyKClcXG4rXFx0ICogaXMgaW52b2tlZCBhZnRlciBhbGwgb3RoZXIgb3V0c3RhbmRpbmcgY2FsbGJhY2tzIGhhdmUgdGVybWluYXRlZC5cXG4rXFx0ICovXFxuK1xcdHZvaWQgKCphZnRlcl9vb21fdW5yZWdpc3Rlcikoc3RydWN0IG1tdV9ub3RpZmllciAqc3Vic2NyaXB0aW9uLFxcbitcXHRcXHRcXHRcXHQgICAgIHN0cnVjdCBtbV9zdHJ1Y3QgKm1tKTtcXG4rXFxuIFxcdC8qXFxuIFxcdCAqIGNsZWFyX2ZsdXNoX3lvdW5nIGlzIGNhbGxlZCBhZnRlciB0aGUgVk0gaXNcXG4gXFx0ICogdGVzdC1hbmQtY2xlYXJpbmcgdGhlIHlvdW5nL2FjY2Vzc2VkIGJpdGZsYWcgaW4gdGhlXFxuQEAgLTQyNCw2ICs0MzIsOCBAQCBib29sIF9fbW11X25vdGlmaWVyX2NsZWFyX3lvdW5nKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLFxcbiBcXHRcXHR1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCk7XFxuIGJvb2wgX19tbXVfbm90aWZpZXJfdGVzdF95b3VuZyhzdHJ1Y3QgbW1fc3RydWN0ICptbSxcXG4gXFx0XFx0dW5zaWduZWQgbG9uZyBhZGRyZXNzKTtcXG4rdm9pZCBtbXVfbm90aWZpZXJfb29tX2VudGVyKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tKTtcXG4rdm9pZCBtbXVfbm90aWZpZXJfYmFycmllcih2b2lkKTtcXG4gZXh0ZXJuIGludCBfX21tdV9ub3RpZmllcl9pbnZhbGlkYXRlX3JhbmdlX3N0YXJ0KHN0cnVjdCBtbXVfbm90aWZpZXJfcmFuZ2UgKnIpO1xcbiBleHRlcm4gdm9pZCBfX21tdV9ub3RpZmllcl9pbnZhbGlkYXRlX3JhbmdlX2VuZChzdHJ1Y3QgbW11X25vdGlmaWVyX3JhbmdlICpyKTtcXG4gZXh0ZXJuIHZvaWQgX19tbXVfbm90aWZpZXJfYXJjaF9pbnZhbGlkYXRlX3NlY29uZGFyeV90bGJzKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLFxcbkBAIC02NDMsNiArNjUzLDEwIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBtbXVfbm90aWZpZXJfc3luY2hyb25pemUodm9pZClcXG4ge1xcbiB9XFxuIFxcbitzdGF0aWMgaW5saW5lIHZvaWQgbW11X25vdGlmaWVyX29vbV9lbnRlcihzdHJ1Y3QgbW1fc3RydWN0ICptbSlcXG4re1xcbit9XFxuK1xcbiAjZW5kaWYgLyogQ09ORklHX01NVV9OT1RJRklFUiAqL1xcbiBcXG4gI2VuZGlmIC8qIF9MSU5VWF9NTVVfTk9USUZJRVJfSCAqL1xcbmRpZmYgLS1naXQgYS9tbS9tbXVfbm90aWZpZXIuYyBiL21tL21tdV9ub3RpZmllci5jXFxuaW5kZXggMjQ1Yjc0ZjM5ZjkxMjIuLmYzMGJmOTVmMTdjN2FhIDEwMDY0NFxcbi0tLSBhL21tL21tdV9ub3RpZmllci5jXFxuKysrIGIvbW0vbW11X25vdGlmaWVyLmNcXG5AQCAtNDksNiArNDksMzcgQEAgc3RydWN0IG1tdV9ub3RpZmllcl9zdWJzY3JpcHRpb25zIHtcXG4gXFx0c3RydWN0IGhsaXN0X2hlYWQgZGVmZXJyZWRfbGlzdDtcXG4gfTtcXG4gXFxuKy8qXFxuKyAqIENhbGxiYWNrIHN0cnVjdHVyZSBmb3IgYXN5bmNocm9ub3VzIE9PTSBjbGVhbnVwLlxcbisgKiBVc2VkIHdpdGggY2FsbF9zcmN1KCkgdG8gZGVmZXIgYWZ0ZXJfb29tX3VucmVnaXN0ZXIgY2FsbGJhY2tzXFxuKyAqIHVudGlsIGFmdGVyIFNSQ1UgZ3JhY2UgcGVyaW9kIGNvbXBsZXRlcy5cXG4rICovXFxuK3N0cnVjdCBtbXVfbm90aWZpZXJfb29tX2NhbGxiYWNrIHtcXG4rXFx0c3RydWN0IHJjdV9oZWFkIHJjdTtcXG4rXFx0c3RydWN0IG1tdV9ub3RpZmllciAqc3Vic2NyaXB0aW9uO1xcbitcXHRzdHJ1Y3QgbW1fc3RydWN0ICptbTtcXG4rfTtcXG4rXFxuKy8qXFxuKyAqIENhbGxiYWNrIGZ1bmN0aW9uIGludm9rZWQgYWZ0ZXIgU1JDVSBncmFjZSBwZXJpb2QuXFxuKyAqIFNhZmVseSBjYWxscyBhZnRlcl9vb21fdW5yZWdpc3RlciBvbmNlIGFsbCByZWFkZXJzIGhhdmUgZmluaXNoZWQuXFxuKyAqL1xcbitzdGF0aWMgdm9pZCBtbXVfbm90aWZpZXJfb29tX2NhbGxiYWNrX2ZuKHN0cnVjdCByY3VfaGVhZCAqcmN1KVxcbit7XFxuK1xcdHN0cnVjdCBtbXVfbm90aWZpZXJfb29tX2NhbGxiYWNrICpjYiA9XFxuK1xcdFxcdGNvbnRhaW5lcl9vZihyY3UsIHN0cnVjdCBtbXVfbm90aWZpZXJfb29tX2NhbGxiYWNrLCByY3UpO1xcbitcXG4rXFx0LyogU2FmZSAtIGFsbCBTUkNVIHJlYWRlcnMgaGF2ZSBmaW5pc2hlZCAqL1xcbitcXHRjYi1cXHUwMDNlc3Vic2NyaXB0aW9uLVxcdTAwM2VvcHMtXFx1MDAzZWFmdGVyX29vbV91bnJlZ2lzdGVyKGNiLVxcdTAwM2VzdWJzY3JpcHRpb24sIGNiLVxcdTAwM2VtbSk7XFxuK1xcbitcXHQvKiBSZWxlYXNlIG1tIHJlZmVyZW5jZSB0YWtlbiB3aGVuIGNhbGxiYWNrIHdhcyBzY2hlZHVsZWQgKi9cXG4rXFx0V0FSTl9PTl9PTkNFKGF0b21pY19yZWFkKFxcdTAwMjZjYi1cXHUwMDNlbW0tXFx1MDAzZW1tX2NvdW50KSBcXHUwMDNjPSAwKTtcXG4rXFx0bW1kcm9wKGNiLVxcdTAwM2VtbSk7XFxuK1xcbitcXHQvKiBGcmVlIGNhbGxiYWNrIHN0cnVjdHVyZSAqL1xcbitcXHRrZnJlZShjYik7XFxuK31cXG4rXFxuIC8qXFxuICAqIFRoaXMgaXMgYSBjb2xsaXNpb24tcmV0cnkgcmVhZC1zaWRlL3dyaXRlLXNpZGUgJ2xvY2snLCBhIGxvdCBsaWtlIGFcXG4gICogc2VxY291bnQsIGhvd2V2ZXIgdGhpcyBhbGxvd3MgbXVsdGlwbGUgd3JpdGUtc2lkZXMgdG8gaG9sZCBpdCBhdFxcbkBAIC0zODUsNiArNDE2LDg0IEBAIHZvaWQgX19tbXVfbm90aWZpZXJfcmVsZWFzZShzdHJ1Y3QgbW1fc3RydWN0ICptbSlcXG4gXFx0XFx0bW5faGxpc3RfcmVsZWFzZShzdWJzY3JpcHRpb25zLCBtbSk7XFxuIH1cXG4gXFxuK3ZvaWQgbW11X25vdGlmaWVyX29vbV9lbnRlcihzdHJ1Y3QgbW1fc3RydWN0ICptbSlcXG4re1xcbitcXHRzdHJ1Y3QgbW11X25vdGlmaWVyX3N1YnNjcmlwdGlvbnMgKnN1YnNjcmlwdGlvbnMgPVxcbitcXHRcXHRcXHRcXHRcXHRcXHRtbS1cXHUwMDNlbm90aWZpZXJfc3Vic2NyaXB0aW9ucztcXG4rXFx0c3RydWN0IG1tdV9ub3RpZmllciAqc3Vic2NyaXB0aW9uO1xcbitcXHRzdHJ1Y3QgaGxpc3Rfbm9kZSAqdG1wO1xcbitcXHRITElTVF9IRUFEKG9vbV9saXN0KTtcXG4rXFx0aW50IGlkO1xcbitcXG4rXFx0aWYgKCFzdWJzY3JpcHRpb25zKVxcbitcXHRcXHRyZXR1cm47XFxuK1xcbitcXHRpZCA9IHNyY3VfcmVhZF9sb2NrKFxcdTAwMjZzcmN1KTtcXG4rXFxuK1xcdC8qXFxuK1xcdCAqIFByZXZlbnQgZnVydGhlciBjYWxscyB0byB0aGUgTU1VIG5vdGlmaWVyLCBleGNlcHQgZm9yXFxuK1xcdCAqIHJlbGVhc2UgYW5kIGFmdGVyX29vbV91bnJlZ2lzdGVyLlxcbitcXHQgKi9cXG4rXFx0c3Bpbl9sb2NrKFxcdTAwMjZzdWJzY3JpcHRpb25zLVxcdTAwM2Vsb2NrKTtcXG4rXFx0aGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShzdWJzY3JpcHRpb24sIHRtcCxcXG4rXFx0XFx0XFx0XFx0ICBcXHUwMDI2c3Vic2NyaXB0aW9ucy1cXHUwMDNlbGlzdCwgaGxpc3QpIHtcXG4rXFx0XFx0aWYgKCFzdWJzY3JpcHRpb24tXFx1MDAzZW9wcy1cXHUwMDNlYWZ0ZXJfb29tX3VucmVnaXN0ZXIpXFxuK1xcdFxcdFxcdGNvbnRpbnVlO1xcbitcXG4rXFx0XFx0LypcXG4rXFx0XFx0ICogYWZ0ZXJfb29tX3VucmVnaXN0ZXIgYW5kIGFsbG9jX25vdGlmaWVyIGFyZSBpbmNvbXBhdGlibGUsXFxuK1xcdFxcdCAqIGJlY2F1c2UgdGhlcmUgY291bGQgYmUgb3RoZXIgcmVmZXJlbmNlcyB0byBhbGxvY2F0ZWRcXG4rXFx0XFx0ICogbm90aWZpZXJzLlxcbitcXHRcXHQgKi9cXG4rXFx0XFx0aWYgKFdBUk5fT04oc3Vic2NyaXB0aW9uLVxcdTAwM2VvcHMtXFx1MDAzZWFsbG9jX25vdGlmaWVyKSlcXG4rXFx0XFx0XFx0Y29udGludWU7XFxuK1xcbitcXHRcXHRobGlzdF9kZWxfaW5pdF9yY3UoXFx1MDAyNnN1YnNjcmlwdGlvbi1cXHUwMDNlaGxpc3QpO1xcbitcXHRcXHRobGlzdF9hZGRfaGVhZChcXHUwMDI2c3Vic2NyaXB0aW9uLVxcdTAwM2VobGlzdCwgXFx1MDAyNm9vbV9saXN0KTtcXG4rXFx0fVxcbitcXHRzcGluX3VubG9jayhcXHUwMDI2c3Vic2NyaXB0aW9ucy1cXHUwMDNlbG9jayk7XFxuK1xcdGhsaXN0X2Zvcl9lYWNoX2VudHJ5KHN1YnNjcmlwdGlvbiwgXFx1MDAyNm9vbV9saXN0LCBobGlzdClcXG4rXFx0XFx0aWYgKHN1YnNjcmlwdGlvbi1cXHUwMDNlb3BzLVxcdTAwM2VyZWxlYXNlKVxcbitcXHRcXHRcXHRzdWJzY3JpcHRpb24tXFx1MDAzZW9wcy1cXHUwMDNlcmVsZWFzZShzdWJzY3JpcHRpb24sIG1tKTtcXG4rXFxuK1xcdHNyY3VfcmVhZF91bmxvY2soXFx1MDAyNnNyY3UsIGlkKTtcXG4rXFxuK1xcdGlmIChobGlzdF9lbXB0eShcXHUwMDI2b29tX2xpc3QpKVxcbitcXHRcXHRyZXR1cm47XFxuK1xcbitcXHRobGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHN1YnNjcmlwdGlvbiwgdG1wLFxcbitcXHRcXHRcXHRcXHQgIFxcdTAwMjZvb21fbGlzdCwgaGxpc3QpIHtcXG4rXFx0XFx0c3RydWN0IG1tdV9ub3RpZmllcl9vb21fY2FsbGJhY2sgKmNiO1xcbitcXHRcXHQvKlxcbitcXHRcXHQgKiBSZW1vdmUgZnJvbSBzdGFjay1iYXNlZCBvb21fbGlzdCBhbmQgcmVzZXQgaGxpc3QgdG8gdW5oYXNoZWQgc3RhdGUuXFxuK1xcdFxcdCAqIFRoaXMgc2V0cyBzdWJzY3JpcHRpb24tXFx1MDAzZWhsaXN0LnBwcmV2ID0gTlVMTCwgc28gZnV0dXJlIGNhbGxlcnMgb2ZcXG4rXFx0XFx0ICogbW11X25vdGlmaWVyX3VucmVnaXN0ZXIoKSAoZS5nLiBrdm1fZGVzdHJveV92bSkgd2lsbCBzZWVcXG4rXFx0XFx0ICogaGxpc3RfdW5oYXNoZWQoKSA9PSB0cnVlIGFuZCB0YWtlIHRoZSBzYWZlIHBhdGgsIGF2b2lkaW5nXFxuK1xcdFxcdCAqIHVzZS1hZnRlci1mcmVlIG9uIHRoZSBzdGFjay1hbGxvY2F0ZWQgb29tX2xpc3QgaGVhZC5cXG4rXFx0XFx0ICovXFxuK1xcdFxcdGhsaXN0X2RlbF9pbml0KFxcdTAwMjZzdWJzY3JpcHRpb24tXFx1MDAzZWhsaXN0KTtcXG4rXFxuK1xcdFxcdC8qXFxuK1xcdFxcdCAqIEdGUF9BVE9NSUMgZmFpbHVyZSBpcyBleGNlZWRpbmdseSByYXJlLiBXZSBjYW5ub3Qgc2xlZXBcXG4rXFx0XFx0ICogaGVyZSAod291bGQgcmVpbnRyb2R1Y2UgdGhlIGRlYWRsb2NrIHRoaXMgcGF0Y2ggZml4ZXMpXFxuK1xcdFxcdCAqIGFuZCBjYW5ub3QgY2FsbCBhZnRlcl9vb21fdW5yZWdpc3RlciBzeW5jaHJvbm91c2x5XFxuK1xcdFxcdCAqIHdpdGhvdXQgZmlyc3Qgd2FpdGluZyBmb3IgU1JDVSByZWFkZXJzLiBUaGUgc3Vic2NyaWJlclxcbitcXHRcXHQgKiB3aWxsIG5vdCByZWNlaXZlIGFmdGVyX29vbV91bnJlZ2lzdGVyIGJ1dCBjbGVhbnVwIHdpbGxcXG4rXFx0XFx0ICogZXZlbnR1YWxseSBoYXBwZW4gdmlhIHRoZSB1bnJlZ2lzdGVyIHBhdGguXFxuK1xcdFxcdCAqL1xcbitcXHRcXHRjYiA9IGttYWxsb2Nfb2JqKCpjYiwgR0ZQX0FUT01JQyk7XFxuK1xcdFxcdGlmICghY2IpXFxuK1xcdFxcdFxcdGNvbnRpbnVlO1xcbitcXG4rXFx0XFx0Y2ItXFx1MDAzZXN1YnNjcmlwdGlvbiA9IHN1YnNjcmlwdGlvbjtcXG4rXFx0XFx0Y2ItXFx1MDAzZW1tID0gbW07XFxuK1xcdFxcdG1tZ3JhYihtbSk7XFxuK1xcbitcXHRcXHQvKiBTY2hlZHVsZSBjYWxsYmFjayAtIHJldHVybnMgaW1tZWRpYXRlbHkgKi9cXG4rXFx0XFx0Y2FsbF9zcmN1KFxcdTAwMjZzcmN1LCBcXHUwMDI2Y2ItXFx1MDAzZXJjdSwgbW11X25vdGlmaWVyX29vbV9jYWxsYmFja19mbik7XFxuK1xcdH1cXG4rfVxcbitcXG4gLypcXG4gICogSWYgbm8geW91bmcgYml0ZmxhZyBpcyBzdXBwb3J0ZWQgYnkgdGhlIGhhcmR3YXJlLCAtXFx1MDAzZWNsZWFyX2ZsdXNoX3lvdW5nIGNhblxcbiAgKiB1bm1hcCB0aGUgYWRkcmVzcyBhbmQgcmV0dXJuIDEgb3IgMCBkZXBlbmRpbmcgaWYgdGhlIG1hcHBpbmcgcHJldmlvdXNseVxcbkBAIC0xMTQ0LDMgKzEyNTMsMTYgQEAgdm9pZCBtbXVfbm90aWZpZXJfc3luY2hyb25pemUodm9pZClcXG4gXFx0c3luY2hyb25pemVfc3JjdShcXHUwMDI2c3JjdSk7XFxuIH1cXG4gRVhQT1JUX1NZTUJPTF9HUEwobW11X25vdGlmaWVyX3N5bmNocm9uaXplKTtcXG4rXFxuKy8qKlxcbisgKiBtbXVfbm90aWZpZXJfYmFycmllciAtIFdhaXQgZm9yIGFsbCBwZW5kaW5nIE1NVSBub3RpZmllciBjYWxsYmFja3NcXG4rICpcXG4rICogV2FpdHMgZm9yIGFsbCBjYWxsX3NyY3UoKSBjYWxsYmFja3Mgc2NoZWR1bGVkIGJ5IG1tdV9ub3RpZmllcl9vb21fZW50ZXIoKVxcbisgKiB0byBjb21wbGV0ZS4gVXNlZCBieSBzdWJzeXN0ZW1zIGR1cmluZyBjbGVhbnVwIHRvIHByZXZlbnQgdXNlLWFmdGVyLWZyZWVcXG4rICogd2hlbiBkZXN0cm95aW5nIHN0cnVjdHVyZXMgYWNjZXNzZWQgYnkgdGhlIGNhbGxiYWNrcy5cXG4rICovXFxuK3ZvaWQgbW11X25vdGlmaWVyX2JhcnJpZXIodm9pZClcXG4re1xcbitcXHRzcmN1X2JhcnJpZXIoXFx1MDAyNnNyY3UpO1xcbit9XFxuK0VYUE9SVF9TWU1CT0xfR1BMKG1tdV9ub3RpZmllcl9iYXJyaWVyKTtcXG5kaWZmIC0tZ2l0IGEvbW0vb29tX2tpbGwuYyBiL21tL29vbV9raWxsLmNcXG5pbmRleCA1ZjM3MmY2ZTI2ZmEzMi4uNjZhZGNkMDNmMzZhOGUgMTAwNjQ0XFxuLS0tIGEvbW0vb29tX2tpbGwuY1xcbisrKyBiL21tL29vbV9raWxsLmNcXG5AQCAtNTE2LDYgKzUxNiw5IEBAIHN0YXRpYyBib29sIF9fb29tX3JlYXBfdGFza19tbShzdHJ1Y3QgbW1fc3RydWN0ICptbSlcXG4gXFx0Ym9vbCByZXQgPSB0cnVlO1xcbiBcXHRNQV9TVEFURShtYXMsIFxcdTAwMjZtbS1cXHUwMDNlbW1fbXQsIFVMT05HX01BWCwgVUxPTkdfTUFYKTtcXG4gXFxuK1xcdC8qIE5vdGlmeSBNTVUgbm90aWZpZXJzIGFib3V0IHRoZSBPT00gZXZlbnQgKi9cXG4rXFx0bW11X25vdGlmaWVyX29vbV9lbnRlcihtbSk7XFxuK1xcbiBcXHQvKlxcbiBcXHQgKiBUZWxsIGFsbCB1c2VycyBvZiBnZXRfdXNlci9jb3B5X2Zyb21fdXNlciBldGMuLi4gdGhhdCB0aGUgY29udGVudFxcbiBcXHQgKiBpcyBubyBsb25nZXIgc3RhYmxlLiBObyBiYXJyaWVycyByZWFsbHkgbmVlZGVkIGJlY2F1c2UgdW5tYXBwaW5nXFxuZGlmZiAtLWdpdCBhL3ZpcnQva3ZtL2t2bV9tYWluLmMgYi92aXJ0L2t2bS9rdm1fbWFpbi5jXFxuaW5kZXggZTQ0YzIwYzA0OTYxMGQuLjc5YTRkZjhhMzM3YTJkIDEwMDY0NFxcbi0tLSBhL3ZpcnQva3ZtL2t2bV9tYWluLmNcXG4rKysgYi92aXJ0L2t2bS9rdm1fbWFpbi5jXFxuQEAgLTg3NSw2ICs4NzUsMjQgQEAgc3RhdGljIHZvaWQga3ZtX21tdV9ub3RpZmllcl9yZWxlYXNlKHN0cnVjdCBtbXVfbm90aWZpZXIgKm1uLFxcbiBcXHRzcmN1X3JlYWRfdW5sb2NrKFxcdTAwMjZrdm0tXFx1MDAzZXNyY3UsIGlkeCk7XFxuIH1cXG4gXFxuK3N0YXRpYyB2b2lkIGt2bV9tbXVfbm90aWZpZXJfYWZ0ZXJfb29tX3VucmVnaXN0ZXIoc3RydWN0IG1tdV9ub3RpZmllciAqbW4sXFxuK1xcdFxcdFxcdFxcdFxcdFxcdCAgc3RydWN0IG1tX3N0cnVjdCAqbW0pXFxuK3tcXG4rXFx0c3RydWN0IGt2bSAqa3ZtO1xcbitcXG4rXFx0a3ZtID0gbW11X25vdGlmaWVyX3RvX2t2bShtbik7XFxuK1xcbitcXHQvKlxcbitcXHQgKiBBdCB0aGlzIHBvaW50IHRoZSB1bnJlZ2lzdGVyIGhhcyBjb21wbGV0ZWQgYW5kIGFsbCBvdGhlciBjYWxsYmFja3NcXG4rXFx0ICogaGF2ZSB0ZXJtaW5hdGVkLiBDbGVhbiB1cCBhbnkgdW5iYWxhbmNlZCBpbnZhbGlkYXRpb24gY291bnRzLlxcbitcXHQgKi9cXG4rXFx0V0FSTl9PTihyY3V3YWl0X2FjdGl2ZShcXHUwMDI2a3ZtLVxcdTAwM2Vtbl9tZW1zbG90c191cGRhdGVfcmN1d2FpdCkpO1xcbitcXHRpZiAoa3ZtLVxcdTAwM2Vtbl9hY3RpdmVfaW52YWxpZGF0ZV9jb3VudClcXG4rXFx0XFx0a3ZtLVxcdTAwM2Vtbl9hY3RpdmVfaW52YWxpZGF0ZV9jb3VudCA9IDA7XFxuK1xcdGVsc2VcXG4rXFx0XFx0V0FSTl9PTihrdm0tXFx1MDAzZW1tdV9pbnZhbGlkYXRlX2luX3Byb2dyZXNzKTtcXG4rfVxcbitcXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBtbXVfbm90aWZpZXJfb3BzIGt2bV9tbXVfbm90aWZpZXJfb3BzID0ge1xcbiBcXHQuaW52YWxpZGF0ZV9yYW5nZV9zdGFydFxcdD0ga3ZtX21tdV9ub3RpZmllcl9pbnZhbGlkYXRlX3JhbmdlX3N0YXJ0LFxcbiBcXHQuaW52YWxpZGF0ZV9yYW5nZV9lbmRcXHQ9IGt2bV9tbXVfbm90aWZpZXJfaW52YWxpZGF0ZV9yYW5nZV9lbmQsXFxuQEAgLTg4Miw2ICs5MDAsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG1tdV9ub3RpZmllcl9vcHMga3ZtX21tdV9ub3RpZmllcl9vcHMgPSB7XFxuIFxcdC5jbGVhcl95b3VuZ1xcdFxcdD0ga3ZtX21tdV9ub3RpZmllcl9jbGVhcl95b3VuZyxcXG4gXFx0LnRlc3RfeW91bmdcXHRcXHQ9IGt2bV9tbXVfbm90aWZpZXJfdGVzdF95b3VuZyxcXG4gXFx0LnJlbGVhc2VcXHRcXHQ9IGt2bV9tbXVfbm90aWZpZXJfcmVsZWFzZSxcXG4rXFx0LmFmdGVyX29vbV91bnJlZ2lzdGVyXFx0PSBrdm1fbW11X25vdGlmaWVyX2FmdGVyX29vbV91bnJlZ2lzdGVyLFxcbiB9O1xcbiBcXG4gc3RhdGljIGludCBrdm1faW5pdF9tbXVfbm90aWZpZXIoc3RydWN0IGt2bSAqa3ZtKVxcbkBAIC0xMjczLDcgKzEyOTIsMTMgQEAgc3RhdGljIHZvaWQga3ZtX2Rlc3Ryb3lfdm0oc3RydWN0IGt2bSAqa3ZtKVxcbiBcXHRcXHRrdm0tXFx1MDAzZWJ1c2VzW2ldID0gTlVMTDtcXG4gXFx0fVxcbiBcXHRrdm1fY29hbGVzY2VkX21taW9fZnJlZShrdm0pO1xcbi1cXHRtbXVfbm90aWZpZXJfdW5yZWdpc3RlcihcXHUwMDI2a3ZtLVxcdTAwM2VtbXVfbm90aWZpZXIsIGt2bS1cXHUwMDNlbW0pO1xcbitcXHRpZiAoaGxpc3RfdW5oYXNoZWQoXFx1MDAyNmt2bS1cXHUwMDNlbW11X25vdGlmaWVyLmhsaXN0KSkge1xcbitcXHRcXHQvKiBTdWJzY3JpcHRpb24gcmVtb3ZlZCBieSBPT00uIFdhaXQgZm9yIGFzeW5jIGNhbGxiYWNrLiAqL1xcbitcXHRcXHRtbXVfbm90aWZpZXJfYmFycmllcigpO1xcbitcXHRcXHRtbWRyb3Aoa3ZtLVxcdTAwM2VtbSk7XFxuK1xcdH0gZWxzZSB7XFxuK1xcdFxcdG1tdV9ub3RpZmllcl91bnJlZ2lzdGVyKFxcdTAwMjZrdm0tXFx1MDAzZW1tdV9ub3RpZmllciwga3ZtLVxcdTAwM2VtbSk7XFxuK1xcdH1cXG4gXFx0LypcXG4gXFx0ICogQXQgdGhpcyBwb2ludCwgcGVuZGluZyBjYWxscyB0byBpbnZhbGlkYXRlX3JhbmdlX3N0YXJ0KClcXG4gXFx0ICogaGF2ZSBjb21wbGV0ZWQgYnV0IG5vIG1vcmUgTU1VIG5vdGlmaWVycyB3aWxsIHJ1biwgc29cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjNUMTU6Mjk6MDAuNjE0MTQ1MzE3WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NTY2MDA0NTY1MDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNXCIsXG4gICAgXCJNTVVfTk9USUZJRVJcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtbXVfbm90aWZpZXJfb29tX2VudGVyXCIsXG4gICAgXCJtbXVfbm90aWZpZXJfYmFycmllclwiLFxuICAgIFwibW11X25vdGlmaWVyX29vbV9jYWxsYmFja19mblwiLFxuICAgIFwia3ZtX21tdV9ub3RpZmllcl9hZnRlcl9vb21fdW5yZWdpc3RlclwiLFxuICAgIFwia3ZtX2Rlc3Ryb3lfdm1cIixcbiAgICBcInByb2Nlc3NfbXJlbGVhc2VcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IE1NVSBub3RpZmllciBjYWxsYmFjayBgYWZ0ZXJfb29tX3VucmVnaXN0ZXJgIGFuZCBhIG1lY2hhbmlzbSB0byBpbnZva2UgaXQgYXN5bmNocm9ub3VzbHkgd2hlbiBhbiBPT00gZXZlbnQgb2NjdXJzIChgbW11X25vdGlmaWVyX29vbV9lbnRlcmApLiBJdCBhbHNvIGltcGxlbWVudHMgdGhpcyBjYWxsYmFjayBmb3IgS1ZNIGFuZCBtb2RpZmllcyBga3ZtX2Rlc3Ryb3lfdm1gIHRvIGhhbmRsZSB0aGUgYXN5bmNocm9ub3VzIGNsZWFudXAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IGFuZCBLVk0sIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSB0aGVyZSBhcmUgbm8gdXNlLWFmdGVyLWZyZWUgb3IgZGVhZGxvY2sgaXNzdWVzIGR1cmluZyBPT00gaGFuZGxpbmcgb2YgVk1zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDAyMzExZDE4NWRiY2I2ZDlkYTE2MGE5YzcwM2JhODZmNzc4YTRjZWJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEp1bCAyMyAxNToyODo1OCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbW11X25vdGlmaWVyLmggYi9pbmNsdWRlL2xpbnV4L21tdV9ub3RpZmllci5oXG5pbmRleCBhMTFhNDRlZWY1MjFlOS4uYTE4MjBhNDg3ODU0ZGQgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L21tdV9ub3RpZmllci5oXG4rKysgYi9pbmNsdWRlL2xpbnV4L21tdV9ub3RpZmllci5oXG5AQCAtODgsNiArODgsMTQgQEAgc3RydWN0IG1tdV9ub3RpZmllcl9vcHMge1xuIFx0dm9pZCAoKnJlbGVhc2UpKHN0cnVjdCBtbXVfbm90aWZpZXIgKnN1YnNjcmlwdGlvbixcbiBcdFx0XHRzdHJ1Y3QgbW1fc3RydWN0ICptbSk7XG4gXG4rXHQvKlxuK1x0ICogQW55IG1tdSBub3RpZmllciB0aGF0IGRlZmluZXMgdGhpcyBpcyBhdXRvbWF0aWNhbGx5IHVucmVnaXN0ZXJlZFxuK1x0ICogd2hlbiBpdHMgbW0gaXMgdGhlIHN1YmplY3Qgb2YgYW4gT09NIGtpbGwuICBhZnRlcl9vb21fdW5yZWdpc3RlcigpXG4rXHQgKiBpcyBpbnZva2VkIGFmdGVyIGFsbCBvdGhlciBvdXRzdGFuZGluZyBjYWxsYmFja3MgaGF2ZSB0ZXJtaW5hdGVkLlxuK1x0ICovXG4rXHR2b2lkICgqYWZ0ZXJfb29tX3VucmVnaXN0ZXIpKHN0cnVjdCBtbXVfbm90aWZpZXIgKnN1YnNjcmlwdGlvbixcbitcdFx0XHRcdCAgICAgc3RydWN0IG1tX3N0cnVjdCAqbW0pO1xuK1xuIFx0LypcbiBcdCAqIGNsZWFyX2ZsdXNoX3lvdW5nIGlzIGNhbGxlZCBhZnRlciB0aGUgVk0gaXNcbiBcdCAqIHRlc3QtYW5kLWNsZWFyaW5nIHRoZSB5b3VuZy9hY2Nlc3NlZCBiaXRmbGFnIGluIHRoZVxuQEAgLTQyNCw2ICs0MzIsOCBAQCBib29sIF9fbW11X25vdGlmaWVyX2NsZWFyX3lvdW5nKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLFxuIFx0XHR1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCk7XG4gYm9vbCBfX21tdV9ub3RpZmllcl90ZXN0X3lvdW5nKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLFxuIFx0XHR1bnNpZ25lZCBsb25nIGFkZHJlc3MpO1xuK3ZvaWQgbW11X25vdGlmaWVyX29vbV9lbnRlcihzdHJ1Y3QgbW1fc3RydWN0ICptbSk7XG4rdm9pZCBtbXVfbm90aWZpZXJfYmFycmllcih2b2lkKTtcbiBleHRlcm4gaW50IF9fbW11X25vdGlmaWVyX2ludmFsaWRhdGVfcmFuZ2Vfc3RhcnQoc3RydWN0IG1tdV9ub3RpZmllcl9yYW5nZSAqcik7XG4gZXh0ZXJuIHZvaWQgX19tbXVfbm90aWZpZXJfaW52YWxpZGF0ZV9yYW5nZV9lbmQoc3RydWN0IG1tdV9ub3RpZmllcl9yYW5nZSAqcik7XG4gZXh0ZXJuIHZvaWQgX19tbXVfbm90aWZpZXJfYXJjaF9pbnZhbGlkYXRlX3NlY29uZGFyeV90bGJzKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLFxuQEAgLTY0Myw2ICs2NTMsMTAgQEAgc3RhdGljIGlubGluZSB2b2lkIG1tdV9ub3RpZmllcl9zeW5jaHJvbml6ZSh2b2lkKVxuIHtcbiB9XG4gXG4rc3RhdGljIGlubGluZSB2b2lkIG1tdV9ub3RpZmllcl9vb21fZW50ZXIoc3RydWN0IG1tX3N0cnVjdCAqbW0pXG4re1xuK31cbitcbiAjZW5kaWYgLyogQ09ORklHX01NVV9OT1RJRklFUiAqL1xuIFxuICNlbmRpZiAvKiBfTElOVVhfTU1VX05PVElGSUVSX0ggKi9cbmRpZmYgLS1naXQgYS9tbS9tbXVfbm90aWZpZXIuYyBiL21tL21tdV9ub3RpZmllci5jXG5pbmRleCAyNDViNzRmMzlmOTEyMi4uZjMwYmY5NWYxN2M3YWEgMTAwNjQ0XG4tLS0gYS9tbS9tbXVfbm90aWZpZXIuY1xuKysrIGIvbW0vbW11X25vdGlmaWVyLmNcbkBAIC00OSw2ICs0OSwzNyBAQCBzdHJ1Y3QgbW11X25vdGlmaWVyX3N1YnNjcmlwdGlvbnMge1xuIFx0c3RydWN0IGhsaXN0X2hlYWQgZGVmZXJyZWRfbGlzdDtcbiB9O1xuIFxuKy8qXG4rICogQ2FsbGJhY2sgc3RydWN0dXJlIGZvciBhc3luY2hyb25vdXMgT09NIGNsZWFudXAuXG4rICogVXNlZCB3aXRoIGNhbGxfc3JjdSgpIHRvIGRlZmVyIGFmdGVyX29vbV91bnJlZ2lzdGVyIGNhbGxiYWNrc1xuKyAqIHVudGlsIGFmdGVyIFNSQ1UgZ3JhY2UgcGVyaW9kIGNvbXBsZXRlcy5cbisgKi9cbitzdHJ1Y3QgbW11X25vdGlmaWVyX29vbV9jYWxsYmFjayB7XG4rXHRzdHJ1Y3QgcmN1X2hlYWQgcmN1O1xuK1x0c3RydWN0IG1tdV9ub3RpZmllciAqc3Vic2NyaXB0aW9uO1xuK1x0c3RydWN0IG1tX3N0cnVjdCAqbW07XG4rfTtcbitcbisvKlxuKyAqIENhbGxiYWNrIGZ1bmN0aW9uIGludm9rZWQgYWZ0ZXIgU1JDVSBncmFjZSBwZXJpb2QuXG4rICogU2FmZWx5IGNhbGxzIGFmdGVyX29vbV91bnJlZ2lzdGVyIG9uY2UgYWxsIHJlYWRlcnMgaGF2ZSBmaW5pc2hlZC5cbisgKi9cbitzdGF0aWMgdm9pZCBtbXVfbm90aWZpZXJfb29tX2NhbGxiYWNrX2ZuKHN0cnVjdCByY3VfaGVhZCAqcmN1KVxuK3tcbitcdHN0cnVjdCBtbXVfbm90aWZpZXJfb29tX2NhbGxiYWNrICpjYiA9XG4rXHRcdGNvbnRhaW5lcl9vZihyY3UsIHN0cnVjdCBtbXVfbm90aWZpZXJfb29tX2NhbGxiYWNrLCByY3UpO1xuK1xuK1x0LyogU2FmZSAtIGFsbCBTUkNVIHJlYWRlcnMgaGF2ZSBmaW5pc2hlZCAqL1xuK1x0Y2ItXHUwMDNlc3Vic2NyaXB0aW9uLVx1MDAzZW9wcy1cdTAwM2VhZnRlcl9vb21fdW5yZWdpc3RlcihjYi1cdTAwM2VzdWJzY3JpcHRpb24sIGNiLVx1MDAzZW1tKTtcbitcbitcdC8qIFJlbGVhc2UgbW0gcmVmZXJlbmNlIHRha2VuIHdoZW4gY2FsbGJhY2sgd2FzIHNjaGVkdWxlZCAqL1xuK1x0V0FSTl9PTl9PTkNFKGF0b21pY19yZWFkKFx1MDAyNmNiLVx1MDAzZW1tLVx1MDAzZW1tX2NvdW50KSBcdTAwM2M9IDApO1xuK1x0bW1kcm9wKGNiLVx1MDAzZW1tKTtcbitcbitcdC8qIEZyZWUgY2FsbGJhY2sgc3RydWN0dXJlICovXG4rXHRrZnJlZShjYik7XG4rfVxuK1xuIC8qXG4gICogVGhpcyBpcyBhIGNvbGxpc2lvbi1yZXRyeSByZWFkLXNpZGUvd3JpdGUtc2lkZSAnbG9jaycsIGEgbG90IGxpa2UgYVxuICAqIHNlcWNvdW50LCBob3dldmVyIHRoaXMgYWxsb3dzIG11bHRpcGxlIHdyaXRlLXNpZGVzIHRvIGhvbGQgaXQgYXRcbkBAIC0zODUsNiArNDE2LDg0IEBAIHZvaWQgX19tbXVfbm90aWZpZXJfcmVsZWFzZShzdHJ1Y3QgbW1fc3RydWN0ICptbSlcbiBcdFx0bW5faGxpc3RfcmVsZWFzZShzdWJzY3JpcHRpb25zLCBtbSk7XG4gfVxuIFxuK3ZvaWQgbW11X25vdGlmaWVyX29vbV9lbnRlcihzdHJ1Y3QgbW1fc3RydWN0ICptbSlcbit7XG4rXHRzdHJ1Y3QgbW11X25vdGlmaWVyX3N1YnNjcmlwdGlvbnMgKnN1YnNjcmlwdGlvbnMgPVxuK1x0XHRcdFx0XHRcdG1tLVx1MDAzZW5vdGlmaWVyX3N1YnNjcmlwdGlvbnM7XG4rXHRzdHJ1Y3QgbW11X25vdGlmaWVyICpzdWJzY3JpcHRpb247XG4rXHRzdHJ1Y3QgaGxpc3Rfbm9kZSAqdG1wO1xuK1x0SExJU1RfSEVBRChvb21fbGlzdCk7XG4rXHRpbnQgaWQ7XG4rXG4rXHRpZiAoIXN1YnNjcmlwdGlvbnMpXG4rXHRcdHJldHVybjtcbitcbitcdGlkID0gc3JjdV9yZWFkX2xvY2soXHUwMDI2c3JjdSk7XG4rXG4rXHQvKlxuK1x0ICogUHJldmVudCBmdXJ0aGVyIGNhbGxzIHRvIHRoZSBNTVUgbm90aWZpZXIsIGV4Y2VwdCBmb3JcbitcdCAqIHJlbGVhc2UgYW5kIGFmdGVyX29vbV91bnJlZ2lzdGVyLlxuK1x0ICovXG4rXHRzcGluX2xvY2soXHUwMDI2c3Vic2NyaXB0aW9ucy1cdTAwM2Vsb2NrKTtcbitcdGhsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoc3Vic2NyaXB0aW9uLCB0bXAsXG4rXHRcdFx0XHQgIFx1MDAyNnN1YnNjcmlwdGlvbnMtXHUwMDNlbGlzdCwgaGxpc3QpIHtcbitcdFx0aWYgKCFzdWJzY3JpcHRpb24tXHUwMDNlb3BzLVx1MDAzZWFmdGVyX29vbV91bnJlZ2lzdGVyKVxuK1x0XHRcdGNvbnRpbnVlO1xuK1xuK1x0XHQvKlxuK1x0XHQgKiBhZnRlcl9vb21fdW5yZWdpc3RlciBhbmQgYWxsb2Nfbm90aWZpZXIgYXJlIGluY29tcGF0aWJsZSxcbitcdFx0ICogYmVjYXVzZSB0aGVyZSBjb3VsZCBiZSBvdGhlciByZWZlcmVuY2VzIHRvIGFsbG9jYXRlZFxuK1x0XHQgKiBub3RpZmllcnMuXG4rXHRcdCAqL1xuK1x0XHRpZiAoV0FSTl9PTihzdWJzY3JpcHRpb24tXHUwMDNlb3BzLVx1MDAzZWFsbG9jX25vdGlmaWVyKSlcbitcdFx0XHRjb250aW51ZTtcbitcbitcdFx0aGxpc3RfZGVsX2luaXRfcmN1KFx1MDAyNnN1YnNjcmlwdGlvbi1cdTAwM2VobGlzdCk7XG4rXHRcdGhsaXN0X2FkZF9oZWFkKFx1MDAyNnN1YnNjcmlwdGlvbi1cdTAwM2VobGlzdCwgXHUwMDI2b29tX2xpc3QpO1xuK1x0fVxuK1x0c3Bpbl91bmxvY2soXHUwMDI2c3Vic2NyaXB0aW9ucy1cdTAwM2Vsb2NrKTtcbitcdGhsaXN0X2Zvcl9lYWNoX2VudHJ5KHN1YnNjcmlwdGlvbiwgXHUwMDI2b29tX2xpc3QsIGhsaXN0KVxuK1x0XHRpZiAoc3Vic2NyaXB0aW9uLVx1MDAzZW9wcy1cdTAwM2VyZWxlYXNlKVxuK1x0XHRcdHN1YnNjcmlwdGlvbi1cdTAwM2VvcHMtXHUwMDNlcmVsZWFzZShzdWJzY3JpcHRpb24sIG1tKTtcbitcbitcdHNyY3VfcmVhZF91bmxvY2soXHUwMDI2c3JjdSwgaWQpO1xuK1xuK1x0aWYgKGhsaXN0X2VtcHR5KFx1MDAyNm9vbV9saXN0KSlcbitcdFx0cmV0dXJuO1xuK1xuK1x0aGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShzdWJzY3JpcHRpb24sIHRtcCxcbitcdFx0XHRcdCAgXHUwMDI2b29tX2xpc3QsIGhsaXN0KSB7XG4rXHRcdHN0cnVjdCBtbXVfbm90aWZpZXJfb29tX2NhbGxiYWNrICpjYjtcbitcdFx0LypcbitcdFx0ICogUmVtb3ZlIGZyb20gc3RhY2stYmFzZWQgb29tX2xpc3QgYW5kIHJlc2V0IGhsaXN0IHRvIHVuaGFzaGVkIHN0YXRlLlxuK1x0XHQgKiBUaGlzIHNldHMgc3Vic2NyaXB0aW9uLVx1MDAzZWhsaXN0LnBwcmV2ID0gTlVMTCwgc28gZnV0dXJlIGNhbGxlcnMgb2ZcbitcdFx0ICogbW11X25vdGlmaWVyX3VucmVnaXN0ZXIoKSAoZS5nLiBrdm1fZGVzdHJveV92bSkgd2lsbCBzZWVcbitcdFx0ICogaGxpc3RfdW5oYXNoZWQoKSA9PSB0cnVlIGFuZCB0YWtlIHRoZSBzYWZlIHBhdGgsIGF2b2lkaW5nXG4rXHRcdCAqIHVzZS1hZnRlci1mcmVlIG9uIHRoZSBzdGFjay1hbGxvY2F0ZWQgb29tX2xpc3QgaGVhZC5cbitcdFx0ICovXG4rXHRcdGhsaXN0X2RlbF9pbml0KFx1MDAyNnN1YnNjcmlwdGlvbi1cdTAwM2VobGlzdCk7XG4rXG4rXHRcdC8qXG4rXHRcdCAqIEdGUF9BVE9NSUMgZmFpbHVyZSBpcyBleGNlZWRpbmdseSByYXJlLiBXZSBjYW5ub3Qgc2xlZXBcbitcdFx0ICogaGVyZSAod291bGQgcmVpbnRyb2R1Y2UgdGhlIGRlYWRsb2NrIHRoaXMgcGF0Y2ggZml4ZXMpXG4rXHRcdCAqIGFuZCBjYW5ub3QgY2FsbCBhZnRlcl9vb21fdW5yZWdpc3RlciBzeW5jaHJvbm91c2x5XG4rXHRcdCAqIHdpdGhvdXQgZmlyc3Qgd2FpdGluZyBmb3IgU1JDVSByZWFkZXJzLiBUaGUgc3Vic2NyaWJlclxuK1x0XHQgKiB3aWxsIG5vdCByZWNlaXZlIGFmdGVyX29vbV91bnJlZ2lzdGVyIGJ1dCBjbGVhbnVwIHdpbGxcbitcdFx0ICogZXZlbnR1YWxseSBoYXBwZW4gdmlhIHRoZSB1bnJlZ2lzdGVyIHBhdGguXG4rXHRcdCAqL1xuK1x0XHRjYiA9IGttYWxsb2Nfb2JqKCpjYiwgR0ZQX0FUT01JQyk7XG4rXHRcdGlmICghY2IpXG4rXHRcdFx0Y29udGludWU7XG4rXG4rXHRcdGNiLVx1MDAzZXN1YnNjcmlwdGlvbiA9IHN1YnNjcmlwdGlvbjtcbitcdFx0Y2ItXHUwMDNlbW0gPSBtbTtcbitcdFx0bW1ncmFiKG1tKTtcbitcbitcdFx0LyogU2NoZWR1bGUgY2FsbGJhY2sgLSByZXR1cm5zIGltbWVkaWF0ZWx5ICovXG4rXHRcdGNhbGxfc3JjdShcdTAwMjZzcmN1LCBcdTAwMjZjYi1cdTAwM2VyY3UsIG1tdV9ub3RpZmllcl9vb21fY2FsbGJhY2tfZm4pO1xuK1x0fVxuK31cbitcbiAvKlxuICAqIElmIG5vIHlvdW5nIGJpdGZsYWcgaXMgc3VwcG9ydGVkIGJ5IHRoZSBoYXJkd2FyZSwgLVx1MDAzZWNsZWFyX2ZsdXNoX3lvdW5nIGNhblxuICAqIHVubWFwIHRoZSBhZGRyZXNzIGFuZCByZXR1cm4gMSBvciAwIGRlcGVuZGluZyBpZiB0aGUgbWFwcGluZyBwcmV2aW91c2x5XG5AQCAtMTE0NCwzICsxMjUzLDE2IEBAIHZvaWQgbW11X25vdGlmaWVyX3N5bmNocm9uaXplKHZvaWQpXG4gXHRzeW5jaHJvbml6ZV9zcmN1KFx1MDAyNnNyY3UpO1xuIH1cbiBFWFBPUlRfU1lNQk9MX0dQTChtbXVfbm90aWZpZXJfc3luY2hyb25pemUpO1xuK1xuKy8qKlxuKyAqIG1tdV9ub3RpZmllcl9iYXJyaWVyIC0gV2FpdCBmb3IgYWxsIHBlbmRpbmcgTU1VIG5vdGlmaWVyIGNhbGxiYWNrc1xuKyAqXG4rICogV2FpdHMgZm9yIGFsbCBjYWxsX3NyY3UoKSBjYWxsYmFja3Mgc2NoZWR1bGVkIGJ5IG1tdV9ub3RpZmllcl9vb21fZW50ZXIoKVxuKyAqIHRvIGNvbXBsZXRlLiBVc2VkIGJ5IHN1YnN5c3RlbXMgZHVyaW5nIGNsZWFudXAgdG8gcHJldmVudCB1c2UtYWZ0ZXItZnJlZVxuKyAqIHdoZW4gZGVzdHJveWluZyBzdHJ1Y3R1cmVzIGFjY2Vzc2VkIGJ5IHRoZSBjYWxsYmFja3MuXG4rICovXG4rdm9pZCBtbXVfbm90aWZpZXJfYmFycmllcih2b2lkKVxuK3tcbitcdHNyY3VfYmFycmllcihcdTAwMjZzcmN1KTtcbit9XG4rRVhQT1JUX1NZTUJPTF9HUEwobW11X25vdGlmaWVyX2JhcnJpZXIpO1xuZGlmZiAtLWdpdCBhL21tL29vbV9raWxsLmMgYi9tbS9vb21fa2lsbC5jXG5pbmRleCA1ZjM3MmY2ZTI2ZmEzMi4uNjZhZGNkMDNmMzZhOGUgMTAwNjQ0XG4tLS0gYS9tbS9vb21fa2lsbC5jXG4rKysgYi9tbS9vb21fa2lsbC5jXG5AQCAtNTE2LDYgKzUxNiw5IEBAIHN0YXRpYyBib29sIF9fb29tX3JlYXBfdGFza19tbShzdHJ1Y3QgbW1fc3RydWN0ICptbSlcbiBcdGJvb2wgcmV0ID0gdHJ1ZTtcbiBcdE1BX1NUQVRFKG1hcywgXHUwMDI2bW0tXHUwMDNlbW1fbXQsIFVMT05HX01BWCwgVUxPTkdfTUFYKTtcbiBcbitcdC8qIE5vdGlmeSBNTVUgbm90aWZpZXJzIGFib3V0IHRoZSBPT00gZXZlbnQgKi9cbitcdG1tdV9ub3RpZmllcl9vb21fZW50ZXIobW0pO1xuK1xuIFx0LypcbiBcdCAqIFRlbGwgYWxsIHVzZXJzIG9mIGdldF91c2VyL2NvcHlfZnJvbV91c2VyIGV0Yy4uLiB0aGF0IHRoZSBjb250ZW50XG4gXHQgKiBpcyBubyBsb25nZXIgc3RhYmxlLiBObyBiYXJyaWVycyByZWFsbHkgbmVlZGVkIGJlY2F1c2UgdW5tYXBwaW5nXG5kaWZmIC0tZ2l0IGEvdmlydC9rdm0va3ZtX21haW4uYyBiL3ZpcnQva3ZtL2t2bV9tYWluLmNcbmluZGV4IGU0NGMyMGMwNDk2MTBkLi43OWE0ZGY4YTMzN2EyZCAxMDA2NDRcbi0tLSBhL3ZpcnQva3ZtL2t2bV9tYWluLmNcbisrKyBiL3ZpcnQva3ZtL2t2bV9tYWluLmNcbkBAIC04NzUsNiArODc1LDI0IEBAIHN0YXRpYyB2b2lkIGt2bV9tbXVfbm90aWZpZXJfcmVsZWFzZShzdHJ1Y3QgbW11X25vdGlmaWVyICptbixcbiBcdHNyY3VfcmVhZF91bmxvY2soXHUwMDI2a3ZtLVx1MDAzZXNyY3UsIGlkeCk7XG4gfVxuIFxuK3N0YXRpYyB2b2lkIGt2bV9tbXVfbm90aWZpZXJfYWZ0ZXJfb29tX3VucmVnaXN0ZXIoc3RydWN0IG1tdV9ub3RpZmllciAqbW4sXG4rXHRcdFx0XHRcdFx0ICBzdHJ1Y3QgbW1fc3RydWN0ICptbSlcbit7XG4rXHRzdHJ1Y3Qga3ZtICprdm07XG4rXG4rXHRrdm0gPSBtbXVfbm90aWZpZXJfdG9fa3ZtKG1uKTtcbitcbitcdC8qXG4rXHQgKiBBdCB0aGlzIHBvaW50IHRoZSB1bnJlZ2lzdGVyIGhhcyBjb21wbGV0ZWQgYW5kIGFsbCBvdGhlciBjYWxsYmFja3NcbitcdCAqIGhhdmUgdGVybWluYXRlZC4gQ2xlYW4gdXAgYW55IHVuYmFsYW5jZWQgaW52YWxpZGF0aW9uIGNvdW50cy5cbitcdCAqL1xuK1x0V0FSTl9PTihyY3V3YWl0X2FjdGl2ZShcdTAwMjZrdm0tXHUwMDNlbW5fbWVtc2xvdHNfdXBkYXRlX3JjdXdhaXQpKTtcbitcdGlmIChrdm0tXHUwMDNlbW5fYWN0aXZlX2ludmFsaWRhdGVfY291bnQpXG4rXHRcdGt2bS1cdTAwM2Vtbl9hY3RpdmVfaW52YWxpZGF0ZV9jb3VudCA9IDA7XG4rXHRlbHNlXG4rXHRcdFdBUk5fT04oa3ZtLVx1MDAzZW1tdV9pbnZhbGlkYXRlX2luX3Byb2dyZXNzKTtcbit9XG4rXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBtbXVfbm90aWZpZXJfb3BzIGt2bV9tbXVfbm90aWZpZXJfb3BzID0ge1xuIFx0LmludmFsaWRhdGVfcmFuZ2Vfc3RhcnRcdD0ga3ZtX21tdV9ub3RpZmllcl9pbnZhbGlkYXRlX3JhbmdlX3N0YXJ0LFxuIFx0LmludmFsaWRhdGVfcmFuZ2VfZW5kXHQ9IGt2bV9tbXVfbm90aWZpZXJfaW52YWxpZGF0ZV9yYW5nZV9lbmQsXG5AQCAtODgyLDYgKzkwMCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbW11X25vdGlmaWVyX29wcyBrdm1fbW11X25vdGlmaWVyX29wcyA9IHtcbiBcdC5jbGVhcl95b3VuZ1x0XHQ9IGt2bV9tbXVfbm90aWZpZXJfY2xlYXJfeW91bmcsXG4gXHQudGVzdF95b3VuZ1x0XHQ9IGt2bV9tbXVfbm90aWZpZXJfdGVzdF95b3VuZyxcbiBcdC5yZWxlYXNlXHRcdD0ga3ZtX21tdV9ub3RpZmllcl9yZWxlYXNlLFxuK1x0LmFmdGVyX29vbV91bnJlZ2lzdGVyXHQ9IGt2bV9tbXVfbm90aWZpZXJfYWZ0ZXJfb29tX3VucmVnaXN0ZXIsXG4gfTtcbiBcbiBzdGF0aWMgaW50IGt2bV9pbml0X21tdV9ub3RpZmllcihzdHJ1Y3Qga3ZtICprdm0pXG5AQCAtMTI3Myw3ICsxMjkyLDEzIEBAIHN0YXRpYyB2b2lkIGt2bV9kZXN0cm95X3ZtKHN0cnVjdCBrdm0gKmt2bSlcbiBcdFx0a3ZtLVx1MDAzZWJ1c2VzW2ldID0gTlVMTDtcbiBcdH1cbiBcdGt2bV9jb2FsZXNjZWRfbW1pb19mcmVlKGt2bSk7XG4tXHRtbXVfbm90aWZpZXJfdW5yZWdpc3RlcihcdTAwMjZrdm0tXHUwMDNlbW11X25vdGlmaWVyLCBrdm0tXHUwMDNlbW0pO1xuK1x0aWYgKGhsaXN0X3VuaGFzaGVkKFx1MDAyNmt2bS1cdTAwM2VtbXVfbm90aWZpZXIuaGxpc3QpKSB7XG4rXHRcdC8qIFN1YnNjcmlwdGlvbiByZW1vdmVkIGJ5IE9PTS4gV2FpdCBmb3IgYXN5bmMgY2FsbGJhY2suICovXG4rXHRcdG1tdV9ub3RpZmllcl9iYXJyaWVyKCk7XG4rXHRcdG1tZHJvcChrdm0tXHUwMDNlbW0pO1xuK1x0fSBlbHNlIHtcbitcdFx0bW11X25vdGlmaWVyX3VucmVnaXN0ZXIoXHUwMDI2a3ZtLVx1MDAzZW1tdV9ub3RpZmllciwga3ZtLVx1MDAzZW1tKTtcbitcdH1cbiBcdC8qXG4gXHQgKiBBdCB0aGlzIHBvaW50LCBwZW5kaW5nIGNhbGxzIHRvIGludmFsaWRhdGVfcmFuZ2Vfc3RhcnQoKVxuIFx0ICogaGF2ZSBjb21wbGV0ZWQgYnV0IG5vIG1vcmUgTU1VIG5vdGlmaWVycyB3aWxsIHJ1biwgc29cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDE1OjI5OjAwLjYxNDE0NjYzN1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjcyOTU4NzI5MTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqUGF0Y2ggU2VyaWVzIEV2YWx1YXRpb246IEEgS1ZNIGFuZCBPT00gS2lsbGVyIEludGVncmF0aW9uKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgcGF0Y2ggc2VyaWVzLiBNeSBpbml0aWFsIGltcHJlc3Npb24gaXMgdGhhdCB0aGlzIGlzIGEgcG90ZW50aWFsbHkgc2lnbmlmaWNhbnQgZnVuY3Rpb25hbCBjaGFuZ2UgdG91Y2hpbmcgdXBvbiB0aGUgY29yZSBrZXJuZWwgY29tcG9uZW50czogTU1VIG5vdGlmaWVycywgdGhlIE9PTSBraWxsZXIsIGFuZCwgaW1wb3J0YW50bHksIEtWTS4gVGhlIG1vZGlmaWNhdGlvbnMgc3BhbiBzZXZlcmFsIGtleSBmaWxlcyDigJMgYGluY2x1ZGUvbGludXgvbW11X25vdGlmaWVyLmhgLCBgbW0vbW11X25vdGlmaWVyLmNgLCBgbW0vb29tX2tpbGwuY2AsIGFuZCBgdmlydC9rdm0va3ZtX21haW4uY2Ag4oCTIHdoaWNoIGltbWVkaWF0ZWx5IGZsYWdzIHRoaXMgYXMgc29tZXRoaW5nIHdhcnJhbnRpbmcgYSB0aG9yb3VnaCByZXZpZXcuXG5cblNwZWNpZmljYWxseSwgaXQgbG9va3MgbGlrZSBhIG5ldyBgbW11X25vdGlmaWVyYCBjYWxsYmFjaywgYGFmdGVyX29vbV91bnJlZ2lzdGVyYCwgaGFzIGJlZW4gaW50cm9kdWNlZC4gVGhpcyBpbXBsaWVzIGEgbmV3IGludGVyYWN0aW9uIHBvaW50IHdpdGhpbiB0aGUgTU1VIG5vdGlmaWVyIGZyYW1ld29yaywgdHJpZ2dlcmVkIGFmdGVyIGFuIE9PTSBzY2VuYXJpby4gQWRkaXRpb25hbGx5LCB0aGUgbmV3IGZ1bmN0aW9uIGBtbXVfbm90aWZpZXJfb29tX2VudGVyKClgIGlzIGNhbGxlZCB3aXRoaW4gYF9fb29tX3JlYXBfdGFza19tbSgpYCwgaW5kaWNhdGluZyBhIHRpZ2h0ZXIgaW50ZWdyYXRpb24gYmV0d2VlbiB0aGUgT09NIGtpbGxlciBhbmQgdGhlIE1NVSBub3RpZmllciBpbmZyYXN0cnVjdHVyZS4gVGhlIGluY2x1c2lvbiBvZiBgbW11X25vdGlmaWVyX2JhcnJpZXIoKWAgZnVydGhlciBzdWdnZXN0cyBzeW5jaHJvbml6YXRpb24gY29uY2VybnMgdGhhdCB3aWxsIG5lZWQgY2FyZWZ1bCBzY3J1dGlueS5cblxuRm9yIEtWTSwgdGhlIHBhdGNoIGltcGxlbWVudHMgYGFmdGVyX29vbV91bnJlZ2lzdGVyYCB3aXRoaW4gYGt2bV9tYWluLmNgLiBUaGlzIGlzIHBhcnRpY3VsYXJseSBpbnRlcmVzdGluZyBiZWNhdXNlIGl0IHN1Z2dlc3RzIGEgd2F5IGZvciBLVk0gdG8gYmUgaW5mb3JtZWQgYWZ0ZXIgYW4gT09NIGV2ZW50IGFuZCBwb3RlbnRpYWxseSBwZXJmb3JtIGNsZWFudXAgb3IgcmVjb3Zlcnkgb3BlcmF0aW9ucyByZWxhdGVkIHRvIGl0cyB2aXJ0dWFsIG1hY2hpbmVzLlxuXG5HaXZlbiB0aGUgc2NvcGUgb2YgdGhlc2UgY2hhbmdlcywgSSdtIGFscmVhZHkgdGhpbmtpbmcgYWJvdXQgZnV6emluZyB0aGlzIHRob3JvdWdobHkuIFRoZSBpbnRlcnBsYXkgYmV0d2VlbiB0aGUgT09NIGtpbGxlciBhbmQgS1ZNIGlzIGNvbXBsZXgsIGFuZCB1bmV4cGVjdGVkIGludGVyYWN0aW9ucyBjb3VsZCBsZWFkIHRvIHN0YWJpbGl0eSBpc3N1ZXMuXG5cbk5vdywgbGV0J3MgbW92ZSBvbnRvIHRoZSBjb25maWd1cmF0aW9uIHJlcXVpcmVtZW50cy4gVGhlIHJlbGV2YW50IGNvZGUgaW4gYG1tL21tdV9ub3RpZmllci5jYCB3aWxsIG5hdHVyYWxseSBvbmx5IGJlIGNvbXBpbGVkIGlmIGBDT05GSUdfTU1VX05PVElGSUVSYCBpcyBlbmFibGVkLiBUaGUgS1ZNLXNwZWNpZmljIGNvZGUgaW4gYHZpcnQva3ZtL2t2bV9tYWluLmNgIG9idmlvdXNseSByZXF1aXJlcyBgQ09ORklHX0tWTWAuIFRoZSBjb2RlIGluIGBtbS9vb21fa2lsbC5jYCwgaG93ZXZlciwgc2VlbXMgdG8gYWx3YXlzIGJlIGNvbXBpbGVkIChvciBwZXJoYXBzIGhhcyBzb21lIGltcGxpY2l0IGRlcGVuZGVuY3kgb24gYENPTkZJR19NTVVgKS4gTGV0J3MgZG91YmxlIGNoZWNrIHRoYXQgYXNzdW1wdGlvbnMgYXJlIGNvcnJlY3Q7IEknbGwgdXNlIGBncmVwcGVyYCB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBzdWJ0bGUgY29uZmlndXJhdGlvbnMgdGhhdCB3ZSBuZWVkIHRvIGJlIGF3YXJlIG9mLiBJJ2xsIGZvY3VzIG9uIGBDT05GSUdfTU1VX05PVElGSUVSYCBhbmQgYENPTkZJR19LVk1gIGZvciB0aGUgaW5pdGlhbCBzZWFyY2ggdG8gc2VlIGlmIGFueSBvdGhlciBkZXBlbmRlbmNpZXMgY29tZSB1cC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDc3OSwiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMxNywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDE1OjI5OjA3LjkxMDAyMTU4MloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjg2NDcwMzA1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkNPTkZJR19NTVVfTk9USUZJRVJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9kbWEtYnVmL2RtYS1yZXN2LmM9Nzc1PXN0YXRpYyBpbnQgX19pbml0IGRtYV9yZXN2X2xvY2tkZXAodm9pZClcXG4tLVxcbmRyaXZlcnMvZG1hLWJ1Zi9kbWEtcmVzdi5jLTgwMC1cXHRpX21tYXBfdW5sb2NrX3dyaXRlKFxcdTAwMjZtYXBwaW5nKTtcXG5kcml2ZXJzL2RtYS1idWYvZG1hLXJlc3YuYzo4MDE6I2lmZGVmIENPTkZJR19NTVVfTk9USUZJRVJcXG5kcml2ZXJzL2RtYS1idWYvZG1hLXJlc3YuYy04MDItXFx0bG9ja19tYXBfYWNxdWlyZShcXHUwMDI2X19tbXVfbm90aWZpZXJfaW52YWxpZGF0ZV9yYW5nZV9zdGFydF9tYXApO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X29iamVjdC5oLTM0LVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9vYmplY3QuaDozNTojaWZkZWYgQ09ORklHX01NVV9OT1RJRklFUlxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9vYmplY3QuaC0zNi0jaW5jbHVkZSBcXHUwMDNjbGludXgvbW11X25vdGlmaWVyLmhcXHUwMDNlXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfb2JqZWN0Lmg9MTAzPXN0cnVjdCBhbWRncHVfYm8ge1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X29iamVjdC5oLTExNi1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfb2JqZWN0Lmg6MTE3OiNpZmRlZiBDT05GSUdfTU1VX05PVElGSUVSXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X29iamVjdC5oLTExOC1cXHRzdHJ1Y3QgbW11X2ludGVydmFsX25vdGlmaWVyXFx0bm90aWZpZXI7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9LY29uZmlnPTExND1jb25maWcgRFJNX0k5MTVfVVNFUlBUUlxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvS2NvbmZpZy0xMTktXFx0aGVscFxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L0tjb25maWc6MTIwOlxcdCAgVGhpcyBvcHRpb24gc2VsZWN0cyBDT05GSUdfTU1VX05PVElGSUVSIGlmIGl0IGlzbid0IGFscmVhZHlcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9LY29uZmlnLTEyMS1cXHQgIHNlbGVjdGVkIHRvIGVuYWJsZWQgZnVsbCB1c2VycHRyIHN1cHBvcnQuXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fZXhlY2J1ZmZlci5jPTIwODA9c3RhdGljIGludCBlYl9tb3ZlX3RvX2dwdShzdHJ1Y3QgaTkxNV9leGVjYnVmZmVyICplYilcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9leGVjYnVmZmVyLmMtMjE0NC1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fZXhlY2J1ZmZlci5jOjIxNDU6I2lmZGVmIENPTkZJR19NTVVfTk9USUZJRVJcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fZXhlY2J1ZmZlci5jLTIxNDYtXFx0aWYgKCFlcnIgXFx1MDAyNlxcdTAwMjYgKGViLVxcdTAwM2VhcmdzLVxcdTAwM2VmbGFncyBcXHUwMDI2IF9fRVhFQ19VU0VSUFRSX1VTRUQpKSB7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fb2JqZWN0Lmg9ODUzPXZvaWQgX19zaG1lbV93cml0ZWJhY2soc2l6ZV90IHNpemUsIHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nKTtcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fb2JqZWN0LmgtODU0LVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9vYmplY3QuaDo4NTU6I2lmZGVmIENPTkZJR19NTVVfTk9USUZJRVJcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fb2JqZWN0LmgtODU2LXN0YXRpYyBpbmxpbmUgYm9vbFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX29iamVjdF90eXBlcy5oPTIzOT1zdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCB7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fb2JqZWN0X3R5cGVzLmgtNzEzLVxcdHVuaW9uIHtcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fb2JqZWN0X3R5cGVzLmg6NzE0OiNpZmRlZiBDT05GSUdfTU1VX05PVElGSUVSXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX29iamVjdF90eXBlcy5oLTcxNS1cXHRcXHRzdHJ1Y3QgaTkxNV9nZW1fdXNlcnB0ciB7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fdXNlcnB0ci5jLTQ3LVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV91c2VycHRyLmM6NDg6I2lmZGVmIENPTkZJR19NTVVfTk9USUZJRVJcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fdXNlcnB0ci5jLTQ5LVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3VzZXJwdHIuYz00NjI9aTkxNV9nZW1fdXNlcnB0cl9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3VzZXJwdHIuYy01MTgtXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3VzZXJwdHIuYzo1MTk6I2lmZGVmIENPTkZJR19NTVVfTk9USUZJRVJcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fdXNlcnB0ci5jLTUyMC1cXHRvYmogPSBpOTE1X2dlbV9vYmplY3RfYWxsb2MoKTtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9yYWRlb24vS2NvbmZpZz0zOD1jb25maWcgRFJNX1JBREVPTl9VU0VSUFRSXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL0tjb25maWctNDItXFx0aGVscFxcbmRyaXZlcnMvZ3B1L2RybS9yYWRlb24vS2NvbmZpZzo0MzpcXHQgIFRoaXMgb3B0aW9uIHNlbGVjdHMgQ09ORklHX01NVV9OT1RJRklFUiBpZiBpdCBpc24ndCBhbHJlYWR5XFxuZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9LY29uZmlnLTQ0LVxcdCAgc2VsZWN0ZWQgdG8gZW5hYmxlZCBmdWxsIHVzZXJwdHIgc3VwcG9ydC5cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9yYWRlb24vTWFrZWZpbGU9MzQ9cmFkZW9uLXkgKz0gcmFkZW9uX2RldmljZS5vIHJhZGVvbl9hc2ljLm8gcmFkZW9uX2ttcy5vIFxcXFxcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9yYWRlb24vTWFrZWZpbGUtNTMtXFxuZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9NYWtlZmlsZTo1NDpyYWRlb24tJChDT05GSUdfTU1VX05PVElGSUVSKSArPSByYWRlb25fbW4ub1xcbmRyaXZlcnMvZ3B1L2RybS9yYWRlb24vTWFrZWZpbGUtNTUtXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbi5oLTcxLVxcbmRyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uLmg6NzI6I2lmZGVmIENPTkZJR19NTVVfTk9USUZJRVJcXG5kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbi5oLTczLSNpbmNsdWRlIFxcdTAwM2NsaW51eC9tbXVfbm90aWZpZXIuaFxcdTAwM2VcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uLmg9NDgzPXN0cnVjdCByYWRlb25fYm8ge1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb24uaC01MDYtXFxuZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb24uaDo1MDc6I2lmZGVmIENPTkZJR19NTVVfTk9USUZJRVJcXG5kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbi5oLTUwOC1cXHRzdHJ1Y3QgbW11X2ludGVydmFsX25vdGlmaWVyXFx0bm90aWZpZXI7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbi5oPTE3NzY9dm9pZCByYWRlb25fdGVzdF9zeW5jaW5nKHN0cnVjdCByYWRlb25fZGV2aWNlICpyZGV2KTtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uLmgtMTc4MC0gKi9cXG5kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbi5oOjE3ODE6I2lmIGRlZmluZWQoQ09ORklHX01NVV9OT1RJRklFUilcXG5kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbi5oLTE3ODItaW50IHJhZGVvbl9tbl9yZWdpc3RlcihzdHJ1Y3QgcmFkZW9uX2JvICpibywgdW5zaWduZWQgbG9uZyBhZGRyKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvbW1fdHlwZXMuaD0xMTYwPXN0cnVjdCBtbV9zdHJ1Y3Qge1xcbi0tXFxuaW5jbHVkZS9saW51eC9tbV90eXBlcy5oLTEzMjgtXFx0XFx0c3RydWN0IGZpbGUgX19yY3UgKmV4ZV9maWxlO1xcbmluY2x1ZGUvbGludXgvbW1fdHlwZXMuaDoxMzI5OiNpZmRlZiBDT05GSUdfTU1VX05PVElGSUVSXFxuaW5jbHVkZS9saW51eC9tbV90eXBlcy5oLTEzMzAtXFx0XFx0c3RydWN0IG1tdV9ub3RpZmllcl9zdWJzY3JpcHRpb25zICpub3RpZmllcl9zdWJzY3JpcHRpb25zO1xcbi0tXFxuaW5jbHVkZS9saW51eC9tbXVfbm90aWZpZXIuaD0yOTg9c3RydWN0IG1tdV9pbnRlcnZhbF9ub3RpZmllciB7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L21tdV9ub3RpZmllci5oLTMwNS1cXG5pbmNsdWRlL2xpbnV4L21tdV9ub3RpZmllci5oOjMwNjojaWZkZWYgQ09ORklHX01NVV9OT1RJRklFUlxcbmluY2x1ZGUvbGludXgvbW11X25vdGlmaWVyLmgtMzA3LVxcbi0tXFxuaW5jbHVkZS9saW51eC9tbXVfbm90aWZpZXIuaD01NTc9c3RhdGljIGlubGluZSB2b2lkIG1tdV9ub3RpZmllcl9yYW5nZV9pbml0X293bmVyKFxcbi0tXFxuaW5jbHVkZS9saW51eC9tbXVfbm90aWZpZXIuaC01NjYtXFxuaW5jbHVkZS9saW51eC9tbXVfbm90aWZpZXIuaDo1Njc6I2Vsc2UgLyogQ09ORklHX01NVV9OT1RJRklFUiAqL1xcbmluY2x1ZGUvbGludXgvbW11X25vdGlmaWVyLmgtNTY4LVxcbi0tXFxuaW5jbHVkZS9saW51eC9tbXVfbm90aWZpZXIuaD02NTY9c3RhdGljIGlubGluZSB2b2lkIG1tdV9ub3RpZmllcl9vb21fZW50ZXIoc3RydWN0IG1tX3N0cnVjdCAqbW0pXFxuLS1cXG5pbmNsdWRlL2xpbnV4L21tdV9ub3RpZmllci5oLTY1OS1cXG5pbmNsdWRlL2xpbnV4L21tdV9ub3RpZmllci5oOjY2MDojZW5kaWYgLyogQ09ORklHX01NVV9OT1RJRklFUiAqL1xcbmluY2x1ZGUvbGludXgvbW11X25vdGlmaWVyLmgtNjYxLVxcbi0tXFxubW0vTWFrZWZpbGU9ODg9b2JqLSQoQ09ORklHX1NQQVJTRU1FTV9WTUVNTUFQKSArPSBzcGFyc2Utdm1lbW1hcC5vXFxubW0vTWFrZWZpbGU6ODk6b2JqLSQoQ09ORklHX01NVV9OT1RJRklFUikgKz0gbW11X25vdGlmaWVyLm9cXG5tbS9NYWtlZmlsZS05MC1vYmotJChDT05GSUdfS1NNKSArPSBrc20ub1xcbi0tXFxubW0vZGVidWcuYz0xNzU9dm9pZCBkdW1wX21tKGNvbnN0IHN0cnVjdCBtbV9zdHJ1Y3QgKm1tKVxcbi0tXFxubW0vZGVidWcuYy0xOTItXFx0XFx0XFxcImV4ZV9maWxlICVweFxcXFxuXFxcIlxcbm1tL2RlYnVnLmM6MTkzOiNpZmRlZiBDT05GSUdfTU1VX05PVElGSUVSXFxubW0vZGVidWcuYy0xOTQtXFx0XFx0XFxcIm5vdGlmaWVyX3N1YnNjcmlwdGlvbnMgJXB4XFxcXG5cXFwiXFxuLS1cXG5tbS9kZWJ1Zy5jLTIyMS1cXHRcXHRtbS1cXHUwMDNlZXhlX2ZpbGUsXFxubW0vZGVidWcuYzoyMjI6I2lmZGVmIENPTkZJR19NTVVfTk9USUZJRVJcXG5tbS9kZWJ1Zy5jLTIyMy1cXHRcXHRtbS1cXHUwMDNlbm90aWZpZXJfc3Vic2NyaXB0aW9ucyxcXG4tLVxcbm1tL2ludGVybmFsLmg9MTg4MD1zdGF0aWMgaW5saW5lIHZvaWQgbWF5YmVfcm1hcF91bmxvY2tfYWN0aW9uKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLFxcbi0tXFxubW0vaW50ZXJuYWwuaC0xODkzLVxcbm1tL2ludGVybmFsLmg6MTg5NDojaWZkZWYgQ09ORklHX01NVV9OT1RJRklFUlxcbm1tL2ludGVybmFsLmgtMTg5NS1zdGF0aWMgaW5saW5lIGJvb2wgY2xlYXJfZmx1c2hfeW91bmdfcHRlc19ub3RpZnkoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsXFxuLS1cXG5tbS9pbnRlcm5hbC5oPTE5MjY9c3RhdGljIGlubGluZSBib29sIHBtZHBfdGVzdF9hbmRfY2xlYXJfeW91bmdfbm90aWZ5KHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLFxcbi0tXFxubW0vaW50ZXJuYWwuaC0xOTM1LVxcbm1tL2ludGVybmFsLmg6MTkzNjojZWxzZSAvKiBDT05GSUdfTU1VX05PVElGSUVSICovXFxubW0vaW50ZXJuYWwuaC0xOTM3LVxcbi0tXFxubW0vaW50ZXJuYWwuaC0xOTQyLVxcbm1tL2ludGVybmFsLmg6MTk0MzojZW5kaWYgLyogQ09ORklHX01NVV9OT1RJRklFUiAqL1xcbm1tL2ludGVybmFsLmgtMTk0NC1cXG4tLVxcbm1tL3BhZ2VfYWxsb2MuYz00MzM3PXZvaWQgZnNfcmVjbGFpbV9hY3F1aXJlKGdmcF90IGdmcF9tYXNrKVxcbi0tXFxubW0vcGFnZV9hbGxvYy5jLTQzNDQtXFxubW0vcGFnZV9hbGxvYy5jOjQzNDU6I2lmZGVmIENPTkZJR19NTVVfTk9USUZJRVJcXG5tbS9wYWdlX2FsbG9jLmMtNDM0Ni1cXHRcXHRsb2NrX21hcF9hY3F1aXJlKFxcdTAwMjZfX21tdV9ub3RpZmllcl9pbnZhbGlkYXRlX3JhbmdlX3N0YXJ0X21hcCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDE1OjI5OjEwLjE5NjQ5NjI3N1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0MDQxODM0ODUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIFJvbGUgb2YgYENPTkZJR19NTVVfTk9USUZJRVJgKipcblxuUmlnaHQsIGxldCdzIHNlZS4uLiBJJ20gbm90aWNpbmcgYENPTkZJR19NTVVfTk9USUZJRVJgIGlzIGEgZGVwZW5kZW5jeSwgb3IgYXQgbGVhc3QgdXNlZCwgYnkgcXVpdGUgYSBmZXcgc2lnbmlmaWNhbnQgZHJpdmVycy4gRFJNLCBLVk0uLi4gdGhhdCdzIGEga2V5IGFyZWEgdG8gYmUgYXdhcmUgb2YuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgYmV0dGVyLiBOb3csIHdoYXQncyBkcml2aW5nIHRoaXM/IExldCdzIGRyaWxsIGRvd24gaW50byBgQ09ORklHX0tWTWAgc3BlY2lmaWNhbGx5IGFuZCBmaWd1cmUgb3V0IHdoeSBLVk0gbmVlZHMgdGhpcy4gSXQncyBhbG1vc3QgY2VydGFpbiB0byBiZSByZWxhdGVkIHRvIG1lbW9yeSBtYW5hZ2VtZW50IGFuZCB2aXJ0dWFsaXphdGlvbi4gTGV0IG1lIGV4YW1pbmUgdGhlIEtWTSBjb25maWd1cmF0aW9uIG9wdGlvbnMgYW5kIHJlbGF0ZWQgY29kZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBNTVUgbm90aWZpZXIgcGxheXMgaW50byBtZW1vcnkgbWFuYWdlbWVudCBmb3IgdmlydHVhbCBtYWNoaW5lcyBhbmQgd2hhdCB0aGUgaW1wbGljYXRpb25zIGFyZSBmb3IgcGVyZm9ybWFuY2UgYW5kIHN0YWJpbGl0eS4gT2theSwgbGV0J3Mgc3RhcnQgZGlnZ2luZy5cblxuXG4iLCJJbnB1dFRva2VucyI6ODMxMSwiT3V0cHV0VG9rZW5zIjoxOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDE1OjI5OjEzLjYwMDY4MTc5MloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNTA0ODE0NjMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkNPTkZJR19LVk1cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAzMzc1IGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5hcmNoL2FybTY0L0tidWlsZD02PW9iai15XFx0XFx0XFx0Kz0ga2VybmVsLyBtbS8gbmV0L1xcbmFyY2gvYXJtNjQvS2J1aWxkOjc6b2JqLSQoQ09ORklHX0tWTSlcXHQrPSBrdm0vXFxuYXJjaC9hcm02NC9LYnVpbGQtOC1vYmotJChDT05GSUdfWEVOKVxcdCs9IHhlbi9cXG4tLVxcbmFyY2gvYXJtNjQvY29uZmlncy9kZWZjb25maWc9MTI0PUNPTkZJR19WSVJUVUFMSVpBVElPTj15XFxuYXJjaC9hcm02NC9jb25maWdzL2RlZmNvbmZpZzoxMjU6Q09ORklHX0tWTT15XFxuYXJjaC9hcm02NC9jb25maWdzL2RlZmNvbmZpZy0xMjYtQ09ORklHX0pVTVBfTEFCRUw9eVxcbi0tXFxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9maXhtYXAuaD0zNj1lbnVtIGZpeGVkX2FkZHJlc3NlcyB7XFxuLS1cXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2ZpeG1hcC5oLTUwLVxcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vZml4bWFwLmg6NTE6I2lmZGVmIENPTkZJR19LVk1cXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2ZpeG1hcC5oLTUyLVxcdC8qIE9uZSBzbG90IHBlciBDUFUsIG1hcHBpbmcgdGhlIGd1ZXN0J3MgVk5DUiBwYWdlIGF0IEVMMi4gKi9cXG4tLVxcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20va3ZtX2hvc3QuaD02OD1lbnVtIGt2bV9tb2RlIHtcXG4tLVxcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20va3ZtX2hvc3QuaC03My19O1xcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20va3ZtX2hvc3QuaDo3NDojaWZkZWYgQ09ORklHX0tWTVxcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20va3ZtX2hvc3QuaC03NS1lbnVtIGt2bV9tb2RlIGt2bV9nZXRfbW9kZSh2b2lkKTtcXG4tLVxcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20va3ZtX2hvc3QuaD0xNDY0PXN0YXRpYyBpbmxpbmUgYm9vbCBrdm1fcG11X2NvdW50ZXJfZGVmZXJyZWQoc3RydWN0IHBlcmZfZXZlbnRfYXR0ciAqYXR0cilcXG4tLVxcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20va3ZtX2hvc3QuaC0xNDY4LVxcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20va3ZtX2hvc3QuaDoxNDY5OiNpZmRlZiBDT05GSUdfS1ZNXFxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9rdm1faG9zdC5oLTE0NzAtdm9pZCBrdm1fc2V0X3BtdV9ldmVudHModTY0IHNldCwgc3RydWN0IHBlcmZfZXZlbnRfYXR0ciAqYXR0cik7XFxuLS1cXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2t2bV9ob3N0Lmg9MTUzMT1pbnQga3ZtX3RybmdfY2FsbChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpO1xcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20va3ZtX2hvc3QuaDoxNTMyOiNpZmRlZiBDT05GSUdfS1ZNXFxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9rdm1faG9zdC5oLTE1MzMtZXh0ZXJuIHBoeXNfYWRkcl90IGh5cF9tZW1fYmFzZTtcXG4tLVxcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vdmlydC5oPTkxPXN0YXRpYyBpbmxpbmUgYm9vbCBpc19wa3ZtX2luaXRpYWxpemVkKHZvaWQpXFxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS92aXJ0LmgtOTIte1xcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vdmlydC5oOjkzOlxcdHJldHVybiBJU19FTkFCTEVEKENPTkZJR19LVk0pIFxcdTAwMjZcXHUwMDI2XFxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS92aXJ0LmgtOTQtXFx0ICAgICAgIHN0YXRpY19icmFuY2hfbGlrZWx5KFxcdTAwMjZrdm1fcHJvdGVjdGVkX21vZGVfaW5pdGlhbGl6ZWQpO1xcbi0tXFxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS92aXJ0LmgtOTYtXFxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS92aXJ0Lmg6OTc6I2lmZGVmIENPTkZJR19LVk1cXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3ZpcnQuaC05OC1ib29sIHBrdm1fZm9yY2VfcmVjbGFpbV9ndWVzdF9wYWdlKHBoeXNfYWRkcl90IHBoeXMpO1xcbi0tXFxuYXJjaC9hcm02NC9rZXJuZWwvYXNtLW9mZnNldHMuYz0yNz1pbnQgbWFpbih2b2lkKVxcbi0tXFxuYXJjaC9hcm02NC9rZXJuZWwvYXNtLW9mZnNldHMuYy0xMDMtICBCTEFOSygpO1xcbmFyY2gvYXJtNjQva2VybmVsL2FzbS1vZmZzZXRzLmM6MTA0OiNpZmRlZiBDT05GSUdfS1ZNXFxuYXJjaC9hcm02NC9rZXJuZWwvYXNtLW9mZnNldHMuYy0xMDUtICBERUZJTkUoVkNQVV9DT05URVhULFxcdFxcdG9mZnNldG9mKHN0cnVjdCBrdm1fdmNwdSwgYXJjaC5jdHh0KSk7XFxuLS1cXG5hcmNoL2FybTY0L2tlcm5lbC9jcHVmZWF0dXJlLmM9MjQzMz1zdGF0aWMgdm9pZCBlbGZfaHdjYXBfZml4dXAodm9pZClcXG4tLVxcbmFyY2gvYXJtNjQva2VybmVsL2NwdWZlYXR1cmUuYy0yNDQwLVxcbmFyY2gvYXJtNjQva2VybmVsL2NwdWZlYXR1cmUuYzoyNDQxOiNpZmRlZiBDT05GSUdfS1ZNXFxuYXJjaC9hcm02NC9rZXJuZWwvY3B1ZmVhdHVyZS5jLTI0NDItc3RhdGljIGJvb2wgaXNfa3ZtX3Byb3RlY3RlZF9tb2RlKGNvbnN0IHN0cnVjdCBhcm02NF9jcHVfY2FwYWJpbGl0aWVzICplbnRyeSwgaW50IF9fdW51c2VkKVxcbi0tXFxuYXJjaC9hcm02NC9rZXJuZWwvY3B1ZmVhdHVyZS5jLTI0NDUtfVxcbmFyY2gvYXJtNjQva2VybmVsL2NwdWZlYXR1cmUuYzoyNDQ2OiNlbmRpZiAvKiBDT05GSUdfS1ZNICovXFxuYXJjaC9hcm02NC9rZXJuZWwvY3B1ZmVhdHVyZS5jLTI0NDctXFxuLS1cXG5hcmNoL2FybTY0L2tlcm5lbC9jcHVmZWF0dXJlLmM9MjU0Mz1zdGF0aWMgY29uc3Qgc3RydWN0IGFybTY0X2NwdV9jYXBhYmlsaXRpZXMgYXJtNjRfZmVhdHVyZXNbXSA9IHtcXG4tLVxcbmFyY2gvYXJtNjQva2VybmVsL2NwdWZlYXR1cmUuYy0yNjI4LVxcdH0sXFxuYXJjaC9hcm02NC9rZXJuZWwvY3B1ZmVhdHVyZS5jOjI2Mjk6I2lmZGVmIENPTkZJR19LVk1cXG5hcmNoL2FybTY0L2tlcm5lbC9jcHVmZWF0dXJlLmMtMjYzMC1cXHR7XFxuLS1cXG5hcmNoL2FybTY0L2tlcm5lbC9jcHVmZWF0dXJlLmM9Mzc1OT1zdGF0aWMgdm9pZCB2ZXJpZnlfaHlwX2NhcGFiaWxpdGllcyh2b2lkKVxcbi0tXFxuYXJjaC9hcm02NC9rZXJuZWwvY3B1ZmVhdHVyZS5jLTM3NjQtXFxuYXJjaC9hcm02NC9rZXJuZWwvY3B1ZmVhdHVyZS5jOjM3NjU6XFx0aWYgKCFJU19FTkFCTEVEKENPTkZJR19LVk0pKVxcbmFyY2gvYXJtNjQva2VybmVsL2NwdWZlYXR1cmUuYy0zNzY2LVxcdFxcdHJldHVybjtcXG4tLVxcbmFyY2gvYXJtNjQva2VybmVsL2Zwc2ltZC5jPTEwNTA9aW50IHZlY192ZXJpZnlfdnFfbWFwKGVudW0gdmVjX3R5cGUgdHlwZSlcXG4tLVxcbmFyY2gvYXJtNjQva2VybmVsL2Zwc2ltZC5jLTEwNjQtXFxuYXJjaC9hcm02NC9rZXJuZWwvZnBzaW1kLmM6MTA2NTpcXHRpZiAoIUlTX0VOQUJMRUQoQ09ORklHX0tWTSkgfHwgIWlzX2h5cF9tb2RlX2F2YWlsYWJsZSgpKVxcbmFyY2gvYXJtNjQva2VybmVsL2Zwc2ltZC5jLTEwNjYtXFx0XFx0cmV0dXJuIDA7XFxuLS1cXG5hcmNoL2FybTY0L2tlcm5lbC9pbWFnZS12YXJzLmg9NzI9UElfRVhQT1JUX1NZTShfZGF0YSk7XFxuYXJjaC9hcm02NC9rZXJuZWwvaW1hZ2UtdmFycy5oLTczLVxcbmFyY2gvYXJtNjQva2VybmVsL2ltYWdlLXZhcnMuaDo3NDojaWZkZWYgQ09ORklHX0tWTVxcbmFyY2gvYXJtNjQva2VybmVsL2ltYWdlLXZhcnMuaC03NS1cXG4tLVxcbmFyY2gvYXJtNjQva2VybmVsL2ltYWdlLXZhcnMuaD0xNDc9S1ZNX05WSEVfQUxJQVMoa3ZtX3Byb3RlY3RlZF9tb2RlX2luaXRpYWxpemVkKTtcXG5hcmNoL2FybTY0L2tlcm5lbC9pbWFnZS12YXJzLmgtMTQ4LVxcbmFyY2gvYXJtNjQva2VybmVsL2ltYWdlLXZhcnMuaDoxNDk6I2VuZGlmIC8qIENPTkZJR19LVk0gKi9cXG5hcmNoL2FybTY0L2tlcm5lbC9pbWFnZS12YXJzLmgtMTUwLVxcbi0tXFxuYXJjaC9hcm02NC9rZXJuZWwvc21wLmM9NDIzPXN0YXRpYyB2b2lkIF9faW5pdCBoeXBfbW9kZV9jaGVjayh2b2lkKVxcbi0tXFxuYXJjaC9hcm02NC9rZXJuZWwvc21wLmMtNDMxLVxcdFxcdHByX2luZm8oXFxcIkNQVTogQWxsIENQVShzKSBzdGFydGVkIGF0IEVMMVxcXFxuXFxcIik7XFxuYXJjaC9hcm02NC9rZXJuZWwvc21wLmM6NDMyOlxcdGlmIChJU19FTkFCTEVEKENPTkZJR19LVk0pIFxcdTAwMjZcXHUwMDI2ICFpc19rZXJuZWxfaW5faHlwX21vZGUoKSkge1xcbmFyY2gvYXJtNjQva2VybmVsL3NtcC5jLTQzMy1cXHRcXHRrdm1fY29tcHV0ZV9sYXlvdXQoKTtcXG4tLVxcbmFyY2gvYXJtNjQva2VybmVsL3ZtbGludXgubGRzLlMtOC0jaW5jbHVkZSBcXHUwMDNjYXNtL2h5cF9pbWFnZS5oXFx1MDAzZVxcbmFyY2gvYXJtNjQva2VybmVsL3ZtbGludXgubGRzLlM6OTojaWZkZWYgQ09ORklHX0tWTVxcbmFyY2gvYXJtNjQva2VybmVsL3ZtbGludXgubGRzLlMtMTAtI2RlZmluZSBIWVBFUlZJU09SX0VYVEFCTEVcXHRcXHRcXHRcXHRcXHRcXFxcXFxuLS1cXG5hcmNoL2FybTY0L2tlcm5lbC92bWxpbnV4Lmxkcy5TLTcxLSNkZWZpbmUgU0JTU19BTElHTlxcdFxcdFxcdFBBR0VfU0laRVxcbmFyY2gvYXJtNjQva2VybmVsL3ZtbGludXgubGRzLlM6NzI6I2Vsc2UgLyogQ09ORklHX0tWTSAqL1xcbmFyY2gvYXJtNjQva2VybmVsL3ZtbGludXgubGRzLlMtNzMtI2RlZmluZSBIWVBFUlZJU09SX0VYVEFCTEVcXG4tLVxcbmFyY2gvYXJtNjQva2VybmVsL3ZtbGludXgubGRzLlM9NDExPUFTU0VSVCgoX19lbnRyeV90cmFtcF90ZXh0X2VuZCAtIF9fZW50cnlfdHJhbXBfdGV4dF9zdGFydCkgXFx1MDAzYz0gMypQQUdFX1NJWkUsXFxuLS1cXG5hcmNoL2FybTY0L2tlcm5lbC92bWxpbnV4Lmxkcy5TLTQxMy0jZW5kaWZcXG5hcmNoL2FybTY0L2tlcm5lbC92bWxpbnV4Lmxkcy5TOjQxNDojaWZkZWYgQ09ORklHX0tWTVxcbmFyY2gvYXJtNjQva2VybmVsL3ZtbGludXgubGRzLlMtNDE1LUFTU0VSVChfX2h5cF9ic3Nfc3RhcnQgPT0gX19ic3Nfc3RhcnQsIFxcXCJIWVAgYW5kIEhvc3QgQlNTIGFyZSBtaXNhbGlnbmVkXFxcIilcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL01ha2VmaWxlPTg9aW5jbHVkZSAkKHNyY3RyZWUpL3ZpcnQva3ZtL01ha2VmaWxlLmt2bVxcbmFyY2gvYXJtNjQva3ZtL01ha2VmaWxlLTktXFxuYXJjaC9hcm02NC9rdm0vTWFrZWZpbGU6MTA6b2JqLSQoQ09ORklHX0tWTSkgKz0ga3ZtLm9cXG5hcmNoL2FybTY0L2t2bS9NYWtlZmlsZToxMTpvYmotJChDT05GSUdfS1ZNKSArPSBoeXAvXFxuYXJjaC9hcm02NC9rdm0vTWFrZWZpbGUtMTItXFxuLS1cXG5hcmNoL2FybTY0L2t2bS9oeXAvTWFrZWZpbGU9OD1zdWJkaXItY2NmbGFncy15IDo9IC1JJChpbmNkaXIpXFxuYXJjaC9hcm02NC9rdm0vaHlwL01ha2VmaWxlLTktXFxuYXJjaC9hcm02NC9rdm0vaHlwL01ha2VmaWxlOjEwOm9iai0kKENPTkZJR19LVk0pICs9IHZoZS8gbnZoZS8gcGd0YWJsZS5vXFxuLS1cXG5hcmNoL2FybTY0L2t2bS9oeXAvbnZoZS9ob3N0LlM9MTY4PVNZTV9GVU5DX0VORChfX2hvc3RfaHZjKVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vaHlwL252aGUvaG9zdC5TLTIyOC0gKlxcbmFyY2gvYXJtNjQva3ZtL2h5cC9udmhlL2hvc3QuUzoyMjk6ICogQ09ORklHX0tWTV9JTkRJUkVDVF9WRUNUT1JTIGlzIG5vdCBhcHBsaWVkIHRvIHRoZSBob3N0IHZlY3RvcnMgYmVjYXVzZSB0aGVcXG5hcmNoL2FybTY0L2t2bS9oeXAvbnZoZS9ob3N0LlMtMjMwLSAqIGhvc3Qga25vd3MgYWJvdXQgdGhlIEVMMiB2ZWN0b3JzIGFscmVhZHksIGFuZCB0aGVyZSBpcyBubyBwb2ludCBpbiBoaWRpbmdcXG4tLVxcbmFyY2gvYXJtNjQvbW0vaW5pdC5jPTE5Mz12b2lkIF9faW5pdCBhcm02NF9tZW1ibG9ja19pbml0KHZvaWQpXFxuLS1cXG5hcmNoL2FybTY0L21tL2luaXQuYy0yMDQtXFx0ICovXFxuYXJjaC9hcm02NC9tbS9pbml0LmM6MjA1OlxcdGlmIChJU19FTkFCTEVEKENPTkZJR19LVk0pIFxcdTAwMjZcXHUwMDI2IHZhYml0c19hY3R1YWwgPT0gNTIgXFx1MDAyNlxcdTAwMjZcXG5hcmNoL2FybTY0L21tL2luaXQuYy0yMDYtXFx0ICAgIGlzX2h5cF9tb2RlX2F2YWlsYWJsZSgpIFxcdTAwMjZcXHUwMDI2ICFpc19rZXJuZWxfaW5faHlwX21vZGUoKSkge1xcbi0tXFxuYXJjaC9sb29uZ2FyY2gvS2J1aWxkPTQ9b2JqLXkgKz0gdmRzby9cXG5hcmNoL2xvb25nYXJjaC9LYnVpbGQtNS1cXG5hcmNoL2xvb25nYXJjaC9LYnVpbGQ6NjpvYmotJChzdWJzdCBtLHksJChDT05GSUdfS1ZNKSkgKz0ga3ZtL1xcbmFyY2gvbG9vbmdhcmNoL0tidWlsZC03LVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjY0X2RlZmNvbmZpZz04Mz1DT05GSUdfVklSVFVBTElaQVRJT049eVxcbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb242NF9kZWZjb25maWc6ODQ6Q09ORklHX0tWTT1tXFxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjY0X2RlZmNvbmZpZy04NS1DT05GSUdfSlVNUF9MQUJFTD15XFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vTWFrZWZpbGU9Nj1pbmNsdWRlICQoc3JjdHJlZSkvdmlydC9rdm0vTWFrZWZpbGUua3ZtXFxuYXJjaC9sb29uZ2FyY2gva3ZtL01ha2VmaWxlLTctXFxuYXJjaC9sb29uZ2FyY2gva3ZtL01ha2VmaWxlOjg6b2JqLSQoQ09ORklHX0tWTSkgKz0ga3ZtLm9cXG5hcmNoL2xvb25nYXJjaC9rdm0vTWFrZWZpbGUtOS1cXG4tLVxcbmFyY2gvbWlwcy9LYnVpbGQ9MTg9b2JqLXkgKz0gdmRzby9cXG5hcmNoL21pcHMvS2J1aWxkLTE5LVxcbmFyY2gvbWlwcy9LYnVpbGQ6MjA6aWZkZWYgQ09ORklHX0tWTVxcbmFyY2gvbWlwcy9LYnVpbGQtMjEtb2JqLXkgKz0ga3ZtL1xcbi0tXFxuYXJjaC9taXBzL2NvbmZpZ3MvbG9vbmdzb24zX2RlZmNvbmZpZz0zOT1DT05GSUdfVklSVFVBTElaQVRJT049eVxcbmFyY2gvbWlwcy9jb25maWdzL2xvb25nc29uM19kZWZjb25maWc6NDA6Q09ORklHX0tWTT1tXFxuYXJjaC9taXBzL2NvbmZpZ3MvbG9vbmdzb24zX2RlZmNvbmZpZy00MS1DT05GSUdfS1BST0JFUz15XFxuLS1cXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YV9rdm1fZGVmY29uZmlnPTE3PUNPTkZJR19WSVJUVUFMSVpBVElPTj15XFxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFfa3ZtX2RlZmNvbmZpZzoxODpDT05GSUdfS1ZNPW1cXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YV9rdm1fZGVmY29uZmlnOjE5OkNPTkZJR19LVk1fTUlQU19ERUJVR19DT1AwX0NPVU5URVJTPXlcXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YV9rdm1fZGVmY29uZmlnLTIwLUNPTkZJR19WSE9TVF9ORVQ9bVxcbi0tXFxuYXJjaC9taXBzL2luY2x1ZGUvYXNtL2t2bV9ob3N0Lmg9MTg4PXN0cnVjdCBtaXBzX2NvcHJvYyB7XFxuYXJjaC9taXBzL2luY2x1ZGUvYXNtL2t2bV9ob3N0LmgtMTg5LVxcdHVuc2lnbmVkIGxvbmcgcmVnW05fTUlQU19DT1BST0NfUkVHU11bTl9NSVBTX0NPUFJPQ19TRUxdO1xcbmFyY2gvbWlwcy9pbmNsdWRlL2FzbS9rdm1faG9zdC5oOjE5MDojaWZkZWYgQ09ORklHX0tWTV9NSVBTX0RFQlVHX0NPUDBfQ09VTlRFUlNcXG5hcmNoL21pcHMvaW5jbHVkZS9hc20va3ZtX2hvc3QuaC0xOTEtXFx0dW5zaWduZWQgbG9uZyBzdGF0W05fTUlQU19DT1BST0NfUkVHU11bTl9NSVBTX0NPUFJPQ19TRUxdO1xcbi0tXFxuYXJjaC9taXBzL2t2bS9NYWtlZmlsZT0xOD1rdm0teVxcdFxcdCs9IHZ6Lm9cXG5hcmNoL21pcHMva3ZtL01ha2VmaWxlOjE5Om9iai0kKENPTkZJR19LVk0pXFx0Kz0ga3ZtLm9cXG5hcmNoL21pcHMva3ZtL01ha2VmaWxlLTIwLW9iai15XFx0XFx0XFx0Kz0gdGxiLm9cXG4tLVxcbmFyY2gvbWlwcy9rdm0vc3RhdHMuYz00OT12b2lkIGt2bV9taXBzX2R1bXBfc3RhdHMoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbmFyY2gvbWlwcy9rdm0vc3RhdHMuYy01MC17XFxuYXJjaC9taXBzL2t2bS9zdGF0cy5jOjUxOiNpZmRlZiBDT05GSUdfS1ZNX01JUFNfREVCVUdfQ09QMF9DT1VOVEVSU1xcbmFyY2gvbWlwcy9rdm0vc3RhdHMuYy01Mi1cXHRpbnQgaSwgajtcXG4tLVxcbmFyY2gvbWlwcy9rdm0vdnouYz04NzU9c3RhdGljIGVudW0gZW11bGF0aW9uX3Jlc3VsdCBrdm1fdnpfZ3BzaV9jb3AwKHVuaW9uIG1pcHNfaW5zdHJ1Y3Rpb24gaW5zdCxcXG4tLVxcbmFyY2gvbWlwcy9rdm0vdnouYy05MDktXFx0XFx0Y2FzZSBtZmNfb3A6XFxuYXJjaC9taXBzL2t2bS92ei5jOjkxMDojaWZkZWYgQ09ORklHX0tWTV9NSVBTX0RFQlVHX0NPUDBfQ09VTlRFUlNcXG5hcmNoL21pcHMva3ZtL3Z6LmMtOTExLVxcdFxcdFxcdGNvcDAtXFx1MDAzZXN0YXRbcmRdW3NlbF0rKztcXG4tLVxcbmFyY2gvbWlwcy9rdm0vdnouYy05NzUtXFx0XFx0Y2FzZSBtdGNfb3A6XFxuYXJjaC9taXBzL2t2bS92ei5jOjk3NjojaWZkZWYgQ09ORklHX0tWTV9NSVBTX0RFQlVHX0NPUDBfQ09VTlRFUlNcXG5hcmNoL21pcHMva3ZtL3Z6LmMtOTc3LVxcdFxcdFxcdGNvcDAtXFx1MDAzZXN0YXRbcmRdW3NlbF0rKztcXG4tLVxcbmFyY2gvcG93ZXJwYy9LYnVpbGQ9MTQ9b2JqLSQoQ09ORklHX1hNT04pICs9IHhtb24vXFxuYXJjaC9wb3dlcnBjL0tidWlsZDoxNTpvYmotJChDT05GSUdfS1ZNKSAgKz0ga3ZtL1xcbmFyY2gvcG93ZXJwYy9LYnVpbGQtMTYtXFxuLS1cXG5hcmNoL3Bvd2VycGMvY29uZmlncy9ndWVzdC5jb25maWc9Nz1DT05GSUdfVklSVElPX1BDST15XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvZ3Vlc3QuY29uZmlnOjg6Q09ORklHX0tWTV9HVUVTVD15XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvZ3Vlc3QuY29uZmlnLTktQ09ORklHX0VQQVBSX1BBUkFWSVJUPXlcXG4tLVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL212bWU1MTAwX2RlZmNvbmZpZz0yMD1DT05GSUdfTVZNRTUxMDA9eVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL212bWU1MTAwX2RlZmNvbmZpZzoyMTpDT05GSUdfS1ZNX0dVRVNUPXlcXG5hcmNoL3Bvd2VycGMvY29uZmlncy9tdm1lNTEwMF9kZWZjb25maWctMjItQ09ORklHX0haXzEwMD15XFxuLS1cXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wb3dlcm52X2RlZmNvbmZpZz0zMzA9Q09ORklHX1ZJUlRVQUxJWkFUSU9OPXlcXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wb3dlcm52X2RlZmNvbmZpZzozMzE6Q09ORklHX0tWTV9CT09LM1NfNjQ9bVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3Bvd2VybnZfZGVmY29uZmlnOjMzMjpDT05GSUdfS1ZNX0JPT0szU182NF9IVj1tXFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcG93ZXJudl9kZWZjb25maWctMzMzLUNPTkZJR19WSE9TVF9ORVQ9bVxcbi0tXFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHBjNjRfZGVmY29uZmlnPTY5PUNPTkZJR19WSVJUVUFMSVpBVElPTj15XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHBjNjRfZGVmY29uZmlnOjcwOkNPTkZJR19LVk1fQk9PSzNTXzY0PW1cXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wcGM2NF9kZWZjb25maWc6NzE6Q09ORklHX0tWTV9CT09LM1NfNjRfSFY9bVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzY0X2RlZmNvbmZpZy03Mi1DT05GSUdfS1BST0JFUz15XFxuLS1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vaG1pLmgtMTEtXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2htaS5oOjEyOiNpZmRlZiBDT05GSUdfS1ZNX0JPT0szU19IVl9QT1NTSUJMRVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9obWkuaC0xMy1cXG4tLVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fYm9vazNzLmg9MzIwPXZvaWQga3ZtcHBjX2dpdmV1cF9mYWMoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1bG9uZyBmYWMpO1xcbi0tXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ib29rM3MuaC0zMjItXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ib29rM3MuaDozMjM6I2lmZGVmIENPTkZJR19LVk1fQk9PSzNTX0hWX1BPU1NJQkxFXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ib29rM3MuaC0zMjQtXFxuLS1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX2Jvb2szcy5oPTM4Nz1zdGF0aWMgaW5saW5lIHN0cnVjdCBrdm1wcGNfdmNwdV9ib29rM3MgKnRvX2Jvb2szcyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX2Jvb2szcy5oLTM5My1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX2Jvb2szcy5oOjM5NDojaWZkZWYgQ09ORklHX0tWTV9CT09LM1NfMzJfSEFORExFUlxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fYm9vazNzLmgtMzk1LSNpbmNsdWRlIFxcdTAwM2Nhc20va3ZtX2Jvb2szc18zMi5oXFx1MDAzZVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fYm9vazNzLmgtMzk2LSNlbmRpZlxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fYm9vazNzLmg6Mzk3OiNpZmRlZiBDT05GSUdfS1ZNX0JPT0szU182NF9IQU5ETEVSXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ib29rM3MuaC0zOTgtI2luY2x1ZGUgXFx1MDAzY2FzbS9rdm1fYm9vazNzXzY0LmhcXHUwMDNlXFxuLS1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX2Jvb2szc182NC5oPTEwMT1pbnQga3ZtaHZfbmVzdGVkX25leHRfbHBpZChzdHJ1Y3Qga3ZtICprdm0sIGludCBscGlkKTtcXG4tLVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fYm9vazNzXzY0LmgtMTEwLVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fYm9vazNzXzY0Lmg6MTExOiNpZmRlZiBDT05GSUdfS1ZNX0JPT0szU19QUl9QT1NTSUJMRVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fYm9vazNzXzY0LmgtMTEyLXN0YXRpYyBpbmxpbmUgc3RydWN0IGt2bXBwY19ib29rM3Nfc2hhZG93X3ZjcHUgKnN2Y3B1X2dldChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX2Jvb2szc182NC5oPTExOD1zdGF0aWMgaW5saW5lIHZvaWQgc3ZjcHVfcHV0KHN0cnVjdCBrdm1wcGNfYm9vazNzX3NoYWRvd192Y3B1ICpzdmNwdSlcXG4tLVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fYm9vazNzXzY0LmgtMTIzLVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fYm9vazNzXzY0Lmg6MTI0OiNpZmRlZiBDT05GSUdfS1ZNX0JPT0szU19IVl9QT1NTSUJMRVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fYm9vazNzXzY0LmgtMTI1LVxcbi0tXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ib29rM3NfNjQuaD01MTQ9c3RhdGljIGlubGluZSBpbnQgaXNfdnJtYV9ocHRlKHVuc2lnbmVkIGxvbmcgaHB0ZV92KVxcbi0tXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ib29rM3NfNjQuaC01MTktXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ib29rM3NfNjQuaDo1MjA6I2lmZGVmIENPTkZJR19LVk1fQk9PSzNTX0hWX1BPU1NJQkxFXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ib29rM3NfNjQuaC01MjEtLypcXG4tLVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fYm9vazNzXzY0Lmg9Njk2PXU2NCBrdm1odl9nZXRfbDJfcnVudGltZV9hZ2dfdmNwdSh2b2lkKTtcXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX2Jvb2szc182NC5oLTY5Ny1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX2Jvb2szc182NC5oOjY5ODojZW5kaWYgLyogQ09ORklHX0tWTV9CT09LM1NfSFZfUE9TU0lCTEUgKi9cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX2Jvb2szc182NC5oLTY5OS1cXG4tLVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fYm9vazNzX2FzbS5oLTI0LVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fYm9vazNzX2FzbS5oOjI1OiNpZmRlZiBDT05GSUdfS1ZNX0JPT0szU19IQU5ETEVSXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ib29rM3NfYXNtLmgtMjYtXFxuLS1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX2Jvb2szc19hc20uaD00OT1rdm1wcGNfcmVzdW1lX1xcXFxpbnRubzpcXG4tLVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fYm9vazNzX2FzbS5oLTU4LVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fYm9vazNzX2FzbS5oOjU5OiNlbmRpZiAvKiBDT05GSUdfS1ZNX0JPT0szU19IQU5ETEVSICovXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ib29rM3NfYXNtLmgtNjAtXFxuLS1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX2Jvb2szc19hc20uaD04Mz1zdHJ1Y3Qga3ZtcHBjX2hvc3Rfc3RhdGUge1xcbi0tXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ib29rM3NfYXNtLmgtOTQtXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ib29rM3NfYXNtLmg6OTU6I2lmZGVmIENPTkZJR19LVk1fQk9PSzNTX0hWX1BPU1NJQkxFXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ib29rM3NfYXNtLmgtOTYtXFx0dTggaHd0aHJlYWRfcmVxO1xcbi0tXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ib29rZS5oPTEwOT1zdGF0aWMgaW5saW5lIGJvb2wga3ZtcHBjX3N1cHBvcnRzX21hZ2ljX3BhZ2Uoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ib29rZS5oLTExMS1cXHQvKiBNYWdpYyBwYWdlIGlzIG9ubHkgc3VwcG9ydGVkIG9uIGU1MDB2MiAqL1xcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fYm9va2UuaDoxMTI6I2lmZGVmIENPTkZJR19LVk1fRTUwMFYyXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ib29rZS5oLTExMy1cXHRyZXR1cm4gdHJ1ZTtcXG4tLVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fYm9va2VfaHZfYXNtLmgtNTYtLm1hY3JvIERPX0tWTSBpbnRubyBzcnIxXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ib29rZV9odl9hc20uaDo1NzojaWZkZWYgQ09ORklHX0tWTV9CT09LRV9IVlxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fYm9va2VfaHZfYXNtLmgtNTgtQkVHSU5fRlRSX1NFQ1RJT05cXG4tLVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fZ3Vlc3QuaC04LVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fZ3Vlc3QuaDo5OiNpZiBkZWZpbmVkKENPTkZJR19QUENfUFNFUklFUykgfHwgZGVmaW5lZChDT05GSUdfS1ZNX0dVRVNUKVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fZ3Vlc3QuaC0xMC0jaW5jbHVkZSBcXHUwMDNjbGludXgvanVtcF9sYWJlbC5oXFx1MDAzZVxcbi0tXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ob3N0LmgtMzYtXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ob3N0Lmg6Mzc6I2lmZGVmIENPTkZJR19LVk1fQk9PSzNTX0hWX1BPU1NJQkxFXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ob3N0LmgtMzgtI2luY2x1ZGUgXFx1MDAzY2FzbS9rdm1fYm9vazNzX2FzbS5oXFx1MDAzZVxcdFxcdC8qIGZvciBNQVhfU01UX1RIUkVBRFMgKi9cXG4tLVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1faG9zdC5oLTQ4LSNkZWZpbmUgS1ZNX01BWF9WQ1BVX0lEU1xcdEtWTV9NQVhfVkNQVVNcXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX2hvc3QuaDo0OTojZW5kaWYgLyogQ09ORklHX0tWTV9CT09LM1NfSFZfUE9TU0lCTEUgKi9cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX2hvc3QuaC01MC1cXG4tLVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1faG9zdC5oPTI1Mz1zdHJ1Y3Qga3ZtX2FyY2hfbWVtb3J5X3Nsb3Qge1xcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1faG9zdC5oOjI1NDojaWZkZWYgQ09ORklHX0tWTV9CT09LM1NfSFZfUE9TU0lCTEVcXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX2hvc3QuaC0yNTUtXFx0dW5zaWduZWQgbG9uZyAqcm1hcDtcXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX2hvc3QuaDoyNTY6I2VuZGlmIC8qIENPTkZJR19LVk1fQk9PSzNTX0hWX1BPU1NJQkxFICovXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ob3N0LmgtMjU3LX07XFxuLS1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX2hvc3QuaD0yNzc9c3RydWN0IGt2bV9hcmNoIHtcXG4tLVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1faG9zdC5oLTI4MC1cXHR1bnNpZ25lZCBpbnQgZW11bF9zbXRfbW9kZTtcXHQvKiBlbXVhbHRlZCBTTVQgbW9kZSwgb24gUDkgKi9cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX2hvc3QuaDoyODE6I2lmZGVmIENPTkZJR19LVk1fQk9PSzNTX0hWX1BPU1NJQkxFXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ob3N0LmgtMjgyLVxcdHVuc2lnbmVkIGludCB0bGJfc2V0cztcXG4tLVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1faG9zdC5oLTMwNC1cXHRzdHJ1Y3Qga3ZtX3Jlc2l6ZV9ocHQgKnJlc2l6ZV9ocHQ7IC8qIHByb3RlY3RlZCBieSBrdm0tXFx1MDAzZWxvY2sgKi9cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX2hvc3QuaDozMDU6I2VuZGlmIC8qIENPTkZJR19LVk1fQk9PSzNTX0hWX1BPU1NJQkxFICovXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ob3N0Lmg6MzA2OiNpZmRlZiBDT05GSUdfS1ZNX0JPT0szU19QUl9QT1NTSUJMRVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1faG9zdC5oLTMwNy1cXHRzdHJ1Y3QgbXV0ZXggaHB0X211dGV4O1xcbi0tXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ob3N0LmgtMzE0LSNlbmRpZlxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1faG9zdC5oOjMxNTojaWZkZWYgQ09ORklHX0tWTV9NUElDXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ob3N0LmgtMzE2LVxcdHN0cnVjdCBvcGVucGljICptcGljO1xcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1faG9zdC5oLTMxNy0jZW5kaWZcXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX2hvc3QuaDozMTg6I2lmZGVmIENPTkZJR19LVk1fWElDU1xcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1faG9zdC5oLTMxOS1cXHRzdHJ1Y3Qga3ZtcHBjX3hpY3MgKnhpY3M7XFxuLS1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX2hvc3QuaC0zMjgtXFx0c3RydWN0IGt2bXBwY19vcHMgKmt2bV9vcHM7XFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ob3N0Lmg6MzI5OiNpZmRlZiBDT05GSUdfS1ZNX0JPT0szU19IVl9QT1NTSUJMRVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1faG9zdC5oLTMzMC1cXHRzdHJ1Y3QgbXV0ZXggdXZtZW1fbG9jaztcXG4tLVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1faG9zdC5oPTUyOD1zdHJ1Y3Qga3ZtX3ZjcHVfYXJjaCB7XFxuLS1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX2hvc3QuaC01NTktXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ob3N0Lmg6NTYwOiNpZmRlZiBDT05GSUdfS1ZNX0JPT0tFX0hWXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ob3N0LmgtNTYxLVxcdHUzMiBob3N0X21hczQ7XFxuLS1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX2hvc3QuaC01NzAtI2lmIGRlZmluZWQoQ09ORklHX0JPT0tFKVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1faG9zdC5oOjU3MTojaWYgZGVmaW5lZChDT05GSUdfS1ZNX0JPT0tFX0hWKSB8fCBkZWZpbmVkKENPTkZJR182NEJJVClcXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX2hvc3QuaC01NzItXFx0dTMyIGVwY3I7XFxuLS1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX2hvc3QuaC02OTItXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ob3N0Lmg6NjkzOiNpZmRlZiBDT05GSUdfS1ZNX0VYSVRfVElNSU5HXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ob3N0LmgtNjk0LVxcdHN0cnVjdCBtdXRleCBleGl0X3RpbWluZ19sb2NrO1xcbi0tXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ob3N0LmgtNzk1LVxcdHN0cnVjdCBrdm1fdmNwdV9hcmNoX3NoYXJlZCAqc2hhcmVkO1xcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1faG9zdC5oOjc5NjojaWYgZGVmaW5lZChDT05GSUdfUFBDX0JPT0szU182NCkgXFx1MDAyNlxcdTAwMjYgZGVmaW5lZChDT05GSUdfS1ZNX0JPT0szU19QUl9QT1NTSUJMRSlcXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX2hvc3QuaC03OTctXFx0Ym9vbCBzaGFyZWRfYmlnX2VuZGlhbjtcXG4tLVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1faG9zdC5oLTgwNS1cXHRzdHJ1Y3Qgb3BlbnBpYyAqbXBpYztcXHQvKiBLVk1fSVJRX01QSUMgKi9cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX2hvc3QuaDo4MDY6I2lmZGVmIENPTkZJR19LVk1fWElDU1xcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1faG9zdC5oLTgwNy1cXHRzdHJ1Y3Qga3ZtcHBjX2ljcCAqaWNwOyAvKiBYSUNTIHByZXNlbnRhdGlvbiBjb250cm9sbGVyICovXFxuLS1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX2hvc3QuaC04MTYtXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ob3N0Lmg6ODE3OiNpZmRlZiBDT05GSUdfS1ZNX0JPT0szU19IVl9QT1NTSUJMRVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1faG9zdC5oLTgxOC1cXHRzdHJ1Y3Qga3ZtX3ZjcHVfYXJjaF9zaGFyZWQgc2hyZWdzO1xcbi0tXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ob3N0LmgtODU0LVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1faG9zdC5oOjg1NTojaWZkZWYgQ09ORklHX0tWTV9CT09LM1NfSFZfRVhJVF9USU1JTkdcXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX2hvc3QuaC04NTYtXFx0c3RydWN0IGt2bWh2X3RiX2FjY3VtdWxhdG9yICpjdXJfYWN0aXZpdHk7XFx0LyogV2hhdCB3ZSdyZSB0aW1pbmcgKi9cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX2hvc3QuaC04NTctXFx0dTY0XFx0Y3VyX3RiX3N0YXJ0O1xcdFxcdFxcdC8qIHdoZW4gaXQgc3RhcnRlZCAqL1xcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1faG9zdC5oOjg1ODojaWZkZWYgQ09ORklHX0tWTV9CT09LM1NfSFZfUDlfVElNSU5HXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ob3N0LmgtODU5LVxcdHN0cnVjdCBrdm1odl90Yl9hY2N1bXVsYXRvciB2Y3B1X2VudHJ5O1xcbi0tXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ob3N0LmgtODcyLSNlbmRpZlxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1faG9zdC5oOjg3MzojZW5kaWYgLyogQ09ORklHX0tWTV9CT09LM1NfSFZfRVhJVF9USU1JTkcgKi9cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX2hvc3QuaDo4NzQ6I2lmZGVmIENPTkZJR19LVk1fQk9PSzNTX0hWX1BPU1NJQkxFXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ob3N0LmgtODc1LVxcdHU2NCBsMV90b19sMl9jcztcXG4tLVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fcGFyYS5oPTE1PXN0YXRpYyBpbmxpbmUgaW50IGt2bV9wYXJhX2F2YWlsYWJsZSh2b2lkKVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fcGFyYS5oLTE2LXtcXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX3BhcmEuaDoxNzpcXHRyZXR1cm4gSVNfRU5BQkxFRChDT05GSUdfS1ZNX0dVRVNUKSBcXHUwMDI2XFx1MDAyNiBpc19rdm1fZ3Vlc3QoKTtcXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX3BhcmEuaC0xOC19XFxuLS1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX3BwYy5oLTI1LSNlbmRpZlxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fcHBjLmg6MjY6I2lmZGVmIENPTkZJR19LVk1fQk9PSzNTXzY0X0hBTkRMRVJcXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX3BwYy5oLTI3LSNpbmNsdWRlIFxcdTAwM2Nhc20vcGFjYS5oXFx1MDAzZVxcbi0tXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9wcGMuaD00NDI9c3RydWN0IG9wZW5waWM7XFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9wcGMuaC00NDMtXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9wcGMuaDo0NDQ6I2lmZGVmIENPTkZJR19LVk1fQk9PSzNTX0hWX1BPU1NJQkxFXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9wcGMuaC00NDUtZXh0ZXJuIHZvaWQga3ZtX2NtYV9yZXNlcnZlKHZvaWQpIF9faW5pdDtcXG4tLVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fcHBjLmg9NjQ4PXN0YXRpYyBpbmxpbmUgaW50IGt2bWh2X25lc3RlZHYyX2NhY2hlZF9yZWxvYWQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1MTYgaWRlbilcXG4tLVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fcHBjLmgtNjU0LVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fcHBjLmg6NjU1OiNpZmRlZiBDT05GSUdfS1ZNX1hJQ1NcXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX3BwYy5oLTY1Ni1zdGF0aWMgaW5saW5lIGludCBrdm1wcGNfeGljc19lbmFibGVkKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fcHBjLmg9NzA4PXN0YXRpYyBpbmxpbmUgaW50IGt2bXBwY194aXZlX3hpY3NfaGNhbGwoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1MzIgcmVxKVxcbi0tXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9wcGMuaC03MTEtXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9wcGMuaDo3MTI6I2lmZGVmIENPTkZJR19LVk1fWElWRVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fcHBjLmgtNzEzLS8qXFxuLS1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX3BwYy5oPTc5MD1zdGF0aWMgaW5saW5lIGludCBrdm1wcGNfeGl2ZV9uYXRpdmVfc2V0X3ZwKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG4tLVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fcHBjLmgtNzkzLVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fcHBjLmg6Nzk0OiNlbmRpZiAvKiBDT05GSUdfS1ZNX1hJVkUgKi9cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX3BwYy5oLTc5NS1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX3BwYy5oOjc5NjojaWYgZGVmaW5lZChDT05GSUdfUFBDX1BPV0VSTlYpIFxcdTAwMjZcXHUwMDI2IGRlZmluZWQoQ09ORklHX0tWTV9CT09LM1NfNjRfSEFORExFUilcXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX3BwYy5oLTc5Ny1zdGF0aWMgaW5saW5lIGJvb2wgeGljc19vbl94aXZlKHZvaWQpXFxuLS1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX3BwYy5oPTg3NT1zdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcga3ZtcHBjX2dldF9lcHIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fcHBjLmgtODc2LXtcXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX3BwYy5oOjg3NzojaWZkZWYgQ09ORklHX0tWTV9CT09LRV9IVlxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fcHBjLmgtODc4LVxcdHJldHVybiBtZnNwcihTUFJOX0dFUFIpO1xcbi0tXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9wcGMuaD04ODY9c3RhdGljIGlubGluZSB2b2lkIGt2bXBwY19zZXRfZXByKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTMyIGVwcilcXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX3BwYy5oLTg4Ny17XFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9wcGMuaDo4ODg6I2lmZGVmIENPTkZJR19LVk1fQk9PS0VfSFZcXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX3BwYy5oLTg4OS1cXHRtdHNwcihTUFJOX0dFUFIsIGVwcik7XFxuLS1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX3BwYy5oLTg5NC1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX3BwYy5oOjg5NTojaWZkZWYgQ09ORklHX0tWTV9NUElDXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9wcGMuaC04OTYtXFxuLS1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX3BwYy5oPTkxND1zdGF0aWMgaW5saW5lIHZvaWQga3ZtcHBjX21waWNfZGlzY29ubmVjdF92Y3B1KHN0cnVjdCBvcGVucGljICpvcHAsXFxuLS1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX3BwYy5oLTkxOC1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX3BwYy5oOjkxOTojZW5kaWYgLyogQ09ORklHX0tWTV9NUElDICovXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9wcGMuaC05MjAtXFxuLS1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX3BwYy5oPTk1Mj1zdGF0aWMgaW5saW5lIGJvb2wga3ZtcHBjX3NoYXJlZF9iaWdfZW5kaWFuKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX3BwYy5oLTk1My17XFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9wcGMuaDo5NTQ6I2lmIGRlZmluZWQoQ09ORklHX1BQQ19CT09LM1NfNjQpIFxcdTAwMjZcXHUwMDI2IGRlZmluZWQoQ09ORklHX0tWTV9CT09LM1NfUFJfUE9TU0lCTEUpXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9wcGMuaC05NTUtXFx0LyogT25seSBCb29rM1NfNjQgUFIgc3VwcG9ydHMgYmktZW5kaWFuIGZvciBub3cgKi9cXG4tLVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fcHBjLmg9OTg5PXN0YXRpYyBpbmxpbmUgdm9pZCBrdm1wcGNfc2V0XyMjcmVnKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdSMjc2l6ZSB2YWwpXFx0XFxcXFxcbi0tXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9wcGMuaC0xMDA3LVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fcHBjLmg6MTAwODojaWZkZWYgQ09ORklHX0tWTV9CT09LRV9IVlxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fcHBjLmgtMTAwOS1cXG4tLVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fdHlwZXMuaC00LVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fdHlwZXMuaDo1OiNpZiBJU19NT0RVTEUoQ09ORklHX0tWTV9CT09LM1NfNjRfUFIpIFxcdTAwMjZcXHUwMDI2IElTX01PRFVMRShDT05GSUdfS1ZNX0JPT0szU182NF9IVilcXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX3R5cGVzLmgtNi0jZGVmaW5lIEtWTV9TVUJfTU9EVUxFUyBrdm0tcHIsa3ZtLWh2XFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV90eXBlcy5oOjc6I2VsaWYgSVNfTU9EVUxFKENPTkZJR19LVk1fQk9PSzNTXzY0X1BSKVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fdHlwZXMuaC04LSNkZWZpbmUgS1ZNX1NVQl9NT0RVTEVTIGt2bS1wclxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fdHlwZXMuaDo5OiNlbGlmIElTX01PRFVMRShDT05GSUdfS1ZNX0JPT0szU182NF9IVilcXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX3R5cGVzLmgtMTAtI2RlZmluZSBLVk1fU1VCX01PRFVMRVMga3ZtLWh2XFxuLS1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vbW11X2NvbnRleHQuaD0yMDc9c3RhdGljIGlubGluZSB2b2lkIG1tX2NvbnRleHRfcmVtb3ZlX2NvcHJvKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tKSB7IH1cXG4tLVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9tbXVfY29udGV4dC5oLTIwOS1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vbW11X2NvbnRleHQuaDoyMTA6I2lmIGRlZmluZWQoQ09ORklHX0tWTV9CT09LM1NfSFZfUE9TU0lCTEUpIFxcdTAwMjZcXHUwMDI2IGRlZmluZWQoQ09ORklHX1BQQ19SQURJWF9NTVUpXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL21tdV9jb250ZXh0LmgtMjExLXZvaWQgZG9faF9ycHRfaW52YWxpZGF0ZV9wcnQodW5zaWduZWQgbG9uZyBwaWQsIHVuc2lnbmVkIGxvbmcgbHBpZCxcXG4tLVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9wYWNhLmgtMjQtI2VuZGlmXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3BhY2EuaDoyNTojaWZkZWYgQ09ORklHX0tWTV9CT09LM1NfNjRfSEFORExFUlxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9wYWNhLmgtMjYtI2luY2x1ZGUgXFx1MDAzY2FzbS9rdm1fYm9vazNzX2FzbS5oXFx1MDAzZVxcbi0tXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3BhY2EuaD02MT1zdHJ1Y3QgcGFjYV9zdHJ1Y3Qge1xcbi0tXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3BhY2EuaC0xNzYtXFx0dTggaXJxX3dvcmtfcGVuZGluZztcXHRcXHQvKiBJUlFfV09SSyBpbnRlcnJ1cHQgd2hpbGUgc29mdC1kaXNhYmxlICovXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3BhY2EuaDoxNzc6I2lmZGVmIENPTkZJR19LVk1fQk9PSzNTX0hWX1BPU1NJQkxFXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3BhY2EuaC0xNzgtXFx0dTggcG1jcmVnc19pbl91c2U7XFx0XFx0LyogcHNlcmllcyBwdXRzIHRoaXMgaW4gbHBwYWNhICovXFxuLS1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vcGFjYS5oLTIwMC1cXHRcXHRzdHJ1Y3Qge1xcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9wYWNhLmg6MjAxOiNpZmRlZiBDT05GSUdfS1ZNX0JPT0szU19IVl9QT1NTSUJMRVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9wYWNhLmgtMjAyLVxcdFxcdFxcdC8qIFRoZSBQU1NDUiB2YWx1ZSB0aGF0IHRoZSBrZXJuZWwgcmVxdWVzdGVkIGJlZm9yZSBnb2luZyB0byBzdG9wICovXFxuLS1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vcGFjYS5oLTIzNi1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vcGFjYS5oOjIzNzojaWZkZWYgQ09ORklHX0tWTV9CT09LM1NfSEFORExFUlxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9wYWNhLmg6MjM4OiNpZmRlZiBDT05GSUdfS1ZNX0JPT0szU19QUl9QT1NTSUJMRVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9wYWNhLmgtMjM5LVxcdC8qIFdlIHVzZSB0aGlzIHRvIHN0b3JlIGd1ZXN0IHN0YXRlIGluICovXFxuLS1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vcGFjYS5oLTI0Mi1cXHRzdHJ1Y3Qga3ZtcHBjX2hvc3Rfc3RhdGUga3ZtX2hzdGF0ZTtcXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vcGFjYS5oOjI0MzojaWZkZWYgQ09ORklHX0tWTV9CT09LM1NfSFZfUE9TU0lCTEVcXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vcGFjYS5oLTI0NC1cXHQvKlxcbi0tXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3BtYy5oPTIzPXN0YXRpYyBpbmxpbmUgdm9pZCBwcGNfc2V0X3BtdV9pbnVzZShpbnQgaW51c2UpXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3BtYy5oLTI0LXtcXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vcG1jLmg6MjU6I2lmIGRlZmluZWQoQ09ORklHX1BQQ19QU0VSSUVTKSB8fCBkZWZpbmVkKENPTkZJR19LVk1fQk9PSzNTX0hWX1BPU1NJQkxFKVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9wbWMuaC0yNi1cXHRpZiAoZmlybXdhcmVfaGFzX2ZlYXR1cmUoRldfRkVBVFVSRV9MUEFSKSkge1xcbi0tXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3BtYy5oLTMwLVxcdH1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vcG1jLmg6MzE6I2lmZGVmIENPTkZJR19LVk1fQk9PSzNTX0hWX1BPU1NJQkxFXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3BtYy5oLTMyLVxcdGdldF9wYWNhKCktXFx1MDAzZXBtY3JlZ3NfaW5fdXNlID0gaW51c2U7XFxuLS1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vcG1jLmgtMzYtXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3BtYy5oOjM3OiNpZmRlZiBDT05GSUdfS1ZNX0JPT0szU19IVl9QT1NTSUJMRVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9wbWMuaC0zOC1zdGF0aWMgaW5saW5lIGludCBwcGNfZ2V0X3BtdV9pbnVzZSh2b2lkKVxcbi0tXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3Byb2Nlc3Nvci5oPTEzMz1zdHJ1Y3QgdGhyZWFkX3N0cnVjdCB7XFxuLS1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vcHJvY2Vzc29yLmgtMjI1LSNlbmRpZiAvKiBDT05GSUdfUFBDX1RSQU5TQUNUSU9OQUxfTUVNICovXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3Byb2Nlc3Nvci5oOjIyNjojaWZkZWYgQ09ORklHX0tWTV9CT09LM1NfMzJfSEFORExFUlxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9wcm9jZXNzb3IuaC0yMjctXFx0dm9pZCpcXHRcXHRrdm1fc2hhZG93X3ZjcHU7IC8qIEtWTSBpbnRlcm5hbCBkYXRhICovXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3Byb2Nlc3Nvci5oOjIyODojZW5kaWYgLyogQ09ORklHX0tWTV9CT09LM1NfMzJfSEFORExFUiAqL1xcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9wcm9jZXNzb3IuaDoyMjk6I2lmIGRlZmluZWQoQ09ORklHX0tWTSkgXFx1MDAyNlxcdTAwMjYgZGVmaW5lZChDT05GSUdfQk9PS0UpXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3Byb2Nlc3Nvci5oLTIzMC1cXHRzdHJ1Y3Qga3ZtX3ZjcHVcXHQqa3ZtX3ZjcHU7XFxuLS1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vdGltZS5oPTEwMT1zdGF0aWMgaW5saW5lIHU2NCB0aW1lcl9nZXRfbmV4dF90Yih2b2lkKVxcbi0tXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3RpbWUuaC0xMDUtXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3RpbWUuaDoxMDY6I2lmZGVmIENPTkZJR19LVk1fQk9PSzNTX0hWX1BPU1NJQkxFXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3RpbWUuaC0xMDctdm9pZCB0aW1lcl9yZWFybV9ob3N0X2RlYyh1NjQgbm93KTtcXG4tLVxcbmFyY2gvcG93ZXJwYy9rZXJuZWwvTWFrZWZpbGU9MTYyPW9iai0kKENPTkZJR19FUEFQUl9QQVJBVklSVClcXHQrPSBlcGFwcl9wYXJhdmlydC5vIGVwYXByX2hjYWxscy5vXFxuYXJjaC9wb3dlcnBjL2tlcm5lbC9NYWtlZmlsZToxNjM6b2JqLSQoQ09ORklHX0tWTV9HVUVTVClcXHRcXHQrPSBrdm0ubyBrdm1fZW11bC5vXFxuYXJjaC9wb3dlcnBjL2tlcm5lbC9NYWtlZmlsZS0xNjQtaWZuZXEgKCQoQ09ORklHX1BQQ19QT1dFUk5WKSQoQ09ORklHX1BQQ19TVk0pLClcXG4tLVxcbmFyY2gvcG93ZXJwYy9rZXJuZWwvYXNtLW9mZnNldHMuYy00OC0jZW5kaWZcXG5hcmNoL3Bvd2VycGMva2VybmVsL2FzbS1vZmZzZXRzLmM6NDk6I2lmIGRlZmluZWQoQ09ORklHX0tWTSkgfHwgZGVmaW5lZChDT05GSUdfS1ZNX0dVRVNUKVxcbmFyY2gvcG93ZXJwYy9rZXJuZWwvYXNtLW9mZnNldHMuYy01MC0jaW5jbHVkZSBcXHUwMDNjbGludXgva3ZtX2hvc3QuaFxcdTAwM2VcXG5hcmNoL3Bvd2VycGMva2VybmVsL2FzbS1vZmZzZXRzLmMtNTEtI2VuZGlmXFxuYXJjaC9wb3dlcnBjL2tlcm5lbC9hc20tb2Zmc2V0cy5jOjUyOiNpZiBkZWZpbmVkKENPTkZJR19LVk0pIFxcdTAwMjZcXHUwMDI2IGRlZmluZWQoQ09ORklHX1BQQ19CT09LM1MpXFxuYXJjaC9wb3dlcnBjL2tlcm5lbC9hc20tb2Zmc2V0cy5jLTUzLSNpbmNsdWRlIFxcdTAwM2Nhc20va3ZtX2Jvb2szcy5oXFx1MDAzZVxcbi0tXFxuYXJjaC9wb3dlcnBjL2tlcm5lbC9hc20tb2Zmc2V0cy5jPTc4PWludCBtYWluKHZvaWQpXFxuLS1cXG5hcmNoL3Bvd2VycGMva2VybmVsL2FzbS1vZmZzZXRzLmMtMTUwLSNlbmRpZiAvKiBDT05GSUdfUFBDNjQgKi9cXG5hcmNoL3Bvd2VycGMva2VybmVsL2FzbS1vZmZzZXRzLmM6MTUxOiNpZmRlZiBDT05GSUdfS1ZNX0JPT0szU18zMl9IQU5ETEVSXFxuYXJjaC9wb3dlcnBjL2tlcm5lbC9hc20tb2Zmc2V0cy5jLTE1Mi1cXHRPRkZTRVQoVEhSRUFEX0tWTV9TVkNQVSwgdGhyZWFkX3N0cnVjdCwga3ZtX3NoYWRvd192Y3B1KTtcXG5hcmNoL3Bvd2VycGMva2VybmVsL2FzbS1vZmZzZXRzLmMtMTUzLSNlbmRpZlxcbmFyY2gvcG93ZXJwYy9rZXJuZWwvYXNtLW9mZnNldHMuYzoxNTQ6I2lmIGRlZmluZWQoQ09ORklHX0tWTSkgXFx1MDAyNlxcdTAwMjYgZGVmaW5lZChDT05GSUdfQk9PS0UpXFxuYXJjaC9wb3dlcnBjL2tlcm5lbC9hc20tb2Zmc2V0cy5jLTE1NS1cXHRPRkZTRVQoVEhSRUFEX0tWTV9WQ1BVLCB0aHJlYWRfc3RydWN0LCBrdm1fdmNwdSk7XFxuLS1cXG5hcmNoL3Bvd2VycGMva2VybmVsL2FzbS1vZmZzZXRzLmMtMjMwLVxcdE9GRlNFVChMUFBBQ0FfUE1DSU5VU0UsIGxwcGFjYSwgcG1jcmVnc19pbl91c2UpO1xcbmFyY2gvcG93ZXJwYy9rZXJuZWwvYXNtLW9mZnNldHMuYzoyMzE6I2lmZGVmIENPTkZJR19LVk1fQk9PSzNTX0hWX1BPU1NJQkxFXFxuYXJjaC9wb3dlcnBjL2tlcm5lbC9hc20tb2Zmc2V0cy5jLTIzMi1cXHRPRkZTRVQoUEFDQV9QTUNJTlVTRSwgcGFjYV9zdHJ1Y3QsIHBtY3JlZ3NfaW5fdXNlKTtcXG4tLVxcbmFyY2gvcG93ZXJwYy9rZXJuZWwvYXNtLW9mZnNldHMuYy0zNTMtXFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDE1OjI5OjE2LjEwNTUwMTc2MloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEwMTQzMjUwMDg5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgS1ZNIE9PTSBOb3RpZmllciBQYXRjaCBmb3IgRnV6emluZyoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93biBmb3IgZnV6emluZyBwdXJwb3Nlcy4gRmlyc3QsIHRoZSBjb3JlIG9mIHRoaXMgcGF0Y2ggcmV2b2x2ZXMgYXJvdW5kIGBtbXVfbm90aWZpZXJgIGludGVncmF0aW9uLCBzcGVjaWZpY2FsbHkgaW4gdGhlIGNvbnRleHQgb2YgT3V0LU9mLU1lbW9yeSAoT09NKSBzaXR1YXRpb25zLCB3aXRoIGEgS1ZNLXNwZWNpZmljIGltcGxlbWVudGF0aW9uLiBJIHNlZSB0aGF0IGBDT05GSUdfS1ZNYCBpcywgb2YgY291cnNlLCBhIGdpdmVuLCBhbmQgdGhpcyBwYXRjaCByZWxpZXMgb24gYG1tdV9ub3RpZmllcmAgZnVuY3Rpb25hbGl0eSwgcmVxdWlyaW5nIGBDT05GSUdfTU1VX05PVElGSUVSYC4gIFNpbmNlIGBfX29vbV9yZWFwX3Rhc2tfbW1gIGNhbGxzIGBtbXVfbm90aWZpZXJfb29tX2VudGVyYCB3aGljaCByZXF1aXJlcyBgQ09ORklHX01NVWAsIGFuZCBgQ09ORklHX01NVWAgaXMgbmVhcmx5IHViaXF1aXRvdXMsIHdlJ3JlIGxpa2VseSBnb29kIG9uIHRoZSBiYXNlIGNvbmZpZ3MuXG5cbk15IGZvY3VzIGhhcyB0byBiZSBvbiB0aGUgbmV3IGFuZCBtb2RpZmllZCBmdW5jdGlvbnMuIFNvLCB0aGUga2V5IGZ1bmN0aW9ucyB0aGF0IGFyZSBhZGRlZCBvciBoYXZlIGNoYW5nZWQgd2l0aGluIHRoaXMgcGF0Y2ggYXJlOiBgbW11X25vdGlmaWVyX29vbV9lbnRlcmAsIGBtbXVfbm90aWZpZXJfYmFycmllcmAsIGBtbXVfbm90aWZpZXJfb29tX2NhbGxiYWNrX2ZuYCwgYGt2bV9tbXVfbm90aWZpZXJfYWZ0ZXJfb29tX3VucmVnaXN0ZXJgLCBga3ZtX2Rlc3Ryb3lfdm1gIChtb2RpZmllZCksIGFuZCBgX19vb21fcmVhcF90YXNrX21tYCAobW9kaWZpZWQpLlxuXG5Ob3csIHRvIGRldGVybWluZSB0aGUgbW9zdCBlZmZlY3RpdmUgZnV6emluZyB0YXJnZXRzLCBJIG5lZWQgdG8gbWFwIHRoZWlyIGNhbGwgcGF0aHMuIGBtbXVfbm90aWZpZXJfb29tX2VudGVyYCBpcyBjYWxsZWQgYnkgYF9fb29tX3JlYXBfdGFza19tbWAuIGBrdm1fbW11X25vdGlmaWVyX2FmdGVyX29vbV91bnJlZ2lzdGVyYCBpcyBjYWxsZWQgYnkgYG1tdV9ub3RpZmllcl9vb21fY2FsbGJhY2tfZm5gLiBBbmQgYG1tdV9ub3RpZmllcl9iYXJyaWVyYCBpcyBjYWxsZWQgYnkgYGt2bV9kZXN0cm95X3ZtYC4gVGhhdCdzIGEgZ29vZCBzdGFydC4gSSBjYW4gYWxzbyBmb2N1cyBvbiBgX19vb21fcmVhcF90YXNrX21tYCBiZWNhdXNlIGl0J3MgdGhlIGVudHJ5IHBvaW50IHRvIHRoZSBuZXcgT09NIGxvZ2ljLCBldmVuIHRob3VnaCBgbW11X25vdGlmaWVyX29vbV9lbnRlcmAgaXMgYSBtb3JlIHNwZWNpZmljIHRhcmdldC4gU2ltaWxhcmx5LCBga3ZtX2Rlc3Ryb3lfdm1gIGlzIGludGVyZXN0aW5nIGJlY2F1c2Ugb2YgdGhlIG1vZGlmaWNhdGlvbnMgdG8gaGFuZGxlIHRoZSB1bmhhc2hlZCBobGlzdC5cblxuU28sIHRha2luZyBhbGwgb2YgdGhpcyBpbnRvIGFjY291bnQsIEknbSBnb2luZyB0byBwcmlvcml0aXplIHRoZXNlIHN5bWJvbHMgZm9yIGZ1enppbmc6IGBtbXVfbm90aWZpZXJfb29tX2VudGVyYCwgYG1tdV9ub3RpZmllcl9iYXJyaWVyYCwgYG1tdV9ub3RpZmllcl9vb21fY2FsbGJhY2tfZm5gLCBga3ZtX21tdV9ub3RpZmllcl9hZnRlcl9vb21fdW5yZWdpc3RlcmAsIGFuZCBga3ZtX2Rlc3Ryb3lfdm1gLiBJJ20gY29uZmlkZW50IGluIHRob3NlIG5hbWVzIGFzIHRoZXkgYXBwZWFyLlxuXG5GaW5hbGx5LCBsZXQgbWUganVzdCB2ZXJpZnkgdGhhdCBgX19vb21fcmVhcF90YXNrX21tYCBkb2Vzbid0IGhhdmUgYW55IGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGRpcmVjdGl2ZXMgdGhhdCB3b3VsZCBtYWtlIGl0IHVuYXZhaWxhYmxlIHVuZGVyIGNlcnRhaW4gY29uZmlndXJhdGlvbnMuIFNpbmNlIGl0IGxpdmVzIGluIGBtbS9vb21fa2lsbC5jYCwgSSdsbCBxdWlja2x5IGNoZWNrIGZvciB0aGF0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDE5OCwiT3V0cHV0VG9rZW5zIjoyMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY1MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yM1QxNToyOToyNi4yNDg3NTQ1NjFaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjU4MTMyMzM3NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJfX29vbV9yZWFwX3Rhc2tfbW1cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vb29tX2tpbGwuYz01MTE9c3RhdGljIERFRklORV9TUElOTE9DSyhvb21fcmVhcGVyX2xvY2spO1xcbm1tL29vbV9raWxsLmMtNTEyLVxcbm1tL29vbV9raWxsLmM6NTEzOnN0YXRpYyBib29sIF9fb29tX3JlYXBfdGFza19tbShzdHJ1Y3QgbW1fc3RydWN0ICptbSlcXG5tbS9vb21fa2lsbC5jLTUxNC17XFxuLS1cXG5tbS9vb21fa2lsbC5jPTU2NT1zdGF0aWMgYm9vbCBvb21fcmVhcF90YXNrX21tKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrLCBzdHJ1Y3QgbW1fc3RydWN0ICptbSlcXG4tLVxcbm1tL29vbV9raWxsLmMtNTg3LVxcdC8qIGZhaWxlZCB0byByZWFwIHBhcnQgb2YgdGhlIGFkZHJlc3Mgc3BhY2UuIFRyeSBhZ2FpbiBsYXRlciAqL1xcbm1tL29vbV9raWxsLmM6NTg4OlxcdHJldCA9IF9fb29tX3JlYXBfdGFza19tbShtbSk7XFxubW0vb29tX2tpbGwuYy01ODktXFx0aWYgKCFyZXQpXFxuLS1cXG5tbS9vb21fa2lsbC5jPTExOTg9U1lTQ0FMTF9ERUZJTkUyKHByb2Nlc3NfbXJlbGVhc2UsIGludCwgcGlkZmQsIHVuc2lnbmVkIGludCwgZmxhZ3MpXFxuLS1cXG5tbS9vb21fa2lsbC5jLTEyNDctXFx0ICovXFxubW0vb29tX2tpbGwuYzoxMjQ4OlxcdGlmICghbW1fZmxhZ3NfdGVzdChNTUZfT09NX1NLSVAsIG1tKSBcXHUwMDI2XFx1MDAyNiAhX19vb21fcmVhcF90YXNrX21tKG1tKSlcXG5tbS9vb21fa2lsbC5jLTEyNDktXFx0XFx0cmV0ID0gLUVBR0FJTjtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjNUMTU6Mjk6MjguODMwMDg0NDY2WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDA4MzAwNDM0NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFJvbGUgb2YgYF9fb29tX3JlYXBfdGFza19tbWAqKlxuXG5Pa2F5LCBzbyBgX19vb21fcmVhcF90YXNrX21tYCBsaXZlcyB3aXRoaW4gYG1tL29vbV9raWxsLmNgLCB3aGljaCwgaWYgSSByZWNhbGwgY29ycmVjdGx5LCBpcyBhbHdheXMgY29tcGlsZWQgb3IgYXQgbGVhc3QgZGVwZW5kcyBvbiB0aGUgTU1VLiBUaGF0IG1ha2VzIHNlbnNlLCBnaXZlbiB0aGUgZnVuY3Rpb24ncyBuYW1lLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgY29udGV4dCB3aXRoaW4gdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uLiBJIHJlbWVtYmVyIHRoZSBlbmFibGluZyBjb25maWdzIGFyZSBgTU1VX05PVElGSUVSYCBhbmQgYEtWTWAsIHNwZWNpZmljYWxseS5cblxuTm93LCBteSBsaW5lIG9mIGlucXVpcnkgaXMgY2xlYXI6IElzIGBNTVVfTk9USUZJRVJgIGRpcmVjdGx5IHVzZXItc2VsZWN0YWJsZSwgb3IgaXMgaXQgYSBkZXBlbmRlbmN5IG9mIGFub3RoZXIgY29uZmlnPyBJJ2xsIGhlYWQgb3ZlciB0byBgbW0vS2NvbmZpZ2Agb3IgYSBzaW1pbGFyIGNvbmZpZ3VyYXRpb24gZmlsZSBpbiB0aGUgbWVtb3J5IG1hbmFnZW1lbnQgc3VidHJlZS4gVGhhdCBzaG91bGQgYmUgdGhlIGRlZmluaXRpdmUgcGxhY2UgdG8gdHJhY2sgZG93biB0aGUgcmVsYXRpb25zaGlwIGFuZCBlbnN1cmUgSSB1bmRlcnN0YW5kIGhvdyB0aGlzIGNvbXBvbmVudCBpcyBhY3R1YWxseSBlbmFibGVkIGluIGRpZmZlcmVudCBidWlsZHMuIEkgbmVlZCBhIGNsZWFyIHBpY3R1cmUgb2YgaXRzIGNvbmZpZ3VyYWJpbGl0eS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjE3OTUsIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yM1QxNToyOTozMi45MTMwOTA3NTJaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyOTUyMDM0OTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE1NVV9OT1RJRklFUlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9LY29uZmlnPTczMz1jb25maWcgUEhZU19BRERSX1RfNjRCSVRcXG4tLVxcbm1tL0tjb25maWctNzM1LVxcbm1tL0tjb25maWc6NzM2OmNvbmZpZyBNTVVfTk9USUZJRVJcXG5tbS9LY29uZmlnLTczNy1cXHRib29sXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDE1OjI5OjM1LjIwODMwMzkyN1oiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MjY3NDc5MjMzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBzZWUsIEknbSBsb29raW5nIGF0IHRoaXMgYE1NVV9OT1RJRklFUmAgb3B0aW9uLiBJdCdzIGEgYGJvb2xgIGFuZCBJIGRvbid0IHNlZSBhbnkgYXNzb2NpYXRlZCBwcm9tcHQgd2l0aCBpdCwgd2hpY2ggbWVhbnMgaXQncyBsaWtlbHkgYmVpbmcgc2VsZWN0ZWQgYnkgb3RoZXIgY29uZmlndXJhdGlvbnMuIFJpZ2h0LCB0aGF0IG1ha2VzIHNlbnNlLlxuXG4qKkFuYWx5emluZyB0aGUgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmN5KipcblxuVGhlIHN0cmF0ZWd5IGhlcmUgaXMgdG8ganVzdCBsaXN0IGBNTVVfTk9USUZJRVJgIGluIHRoZSBjb25maWd1cmF0aW9uLiBUaGUgc3l6a2FsbGVyIGNvbmZpZyBzeXN0ZW0gc2hvdWxkIGhhbmRsZSB0aGUgcmVzdCAtIGl0IHdpbGwgZWl0aGVyIGVuYWJsZSBgTU1VX05PVElGSUVSYCBkaXJlY3RseSBvciBlbmFibGUgYW5vdGhlciBjb25maWd1cmF0aW9uIG9wdGlvbiB0aGF0IHNlbGVjdHMgaXQsIGJhc2VkIG9uIHRoZSBkZXBlbmRlbmNpZXMuIE5vdywgaGFuZyBvbiBhIHNlY29uZC4uLiBpcyBgS1ZNYCBhY3R1YWxseSBvbmUgb2YgdGhlIG9wdGlvbnMgdGhhdCBzZWxlY3RzIGBNTVVfTk9USUZJRVJgPyBUaGF0J3MgYSByZWFzb25hYmxlIGFzc3VtcHRpb24sIGJ1dCBJIHNob3VsZCBwcm9iYWJseSBjb25maXJtIGl0IHRvIGJlIGNlcnRhaW4uIExldCdzIGRpZyBkZWVwZXIgYW5kIHZlcmlmeSB0aGF0LiBJdCdzIGFsd2F5cyBiZXN0IHRvIGJlIHByZWNpc2Ugd2hlbiBkZWFsaW5nIHdpdGgga2VybmVsIGNvbmZpZ3VyYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyMTc2LCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjNUMTU6Mjk6MzkuNDc1Nzg1OFoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjE0Njc4NDM5NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzZWxlY3QgTU1VX05PVElGSUVSXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcG93ZXJudi9LY29uZmlnPTI9Y29uZmlnIFBQQ19QT1dFUk5WXFxuLS1cXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3Bvd2VybnYvS2NvbmZpZy0xNy1cXHRzZWxlY3QgUFBDX0RPT1JCRUxMXFxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wb3dlcm52L0tjb25maWc6MTg6XFx0c2VsZWN0IE1NVV9OT1RJRklFUlxcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcG93ZXJudi9LY29uZmlnLTE5LVxcdHNlbGVjdCBGT1JDRV9TTVBcXG4tLVxcbmFyY2gveDg2L0tjb25maWc9MTgyNz1jb25maWcgWDg2X1NHWFxcbi0tXFxuYXJjaC94ODYvS2NvbmZpZy0xODMwLVxcdHNlbGVjdCBDUllQVE9fTElCX1NIQTI1NlxcbmFyY2gveDg2L0tjb25maWc6MTgzMTpcXHRzZWxlY3QgTU1VX05PVElGSUVSXFxuYXJjaC94ODYvS2NvbmZpZy0xODMyLVxcdHNlbGVjdCBOVU1BX0tFRVBfTUVNSU5GTyBpZiBOVU1BXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZz0yMjg9Y29uZmlnIERSTV9HUFVTVk1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTIzMS1cXHRzZWxlY3QgSE1NX01JUlJPUlxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnOjIzMjpcXHRzZWxlY3QgTU1VX05PVElGSUVSXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMjMzLVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L0tjb25maWc9NzU9Y29uZmlnIERSTV9BTURHUFVfVVNFUlBUUlxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvS2NvbmZpZy03OC1cXHRzZWxlY3QgSE1NX01JUlJPUlxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L0tjb25maWc6Nzk6XFx0c2VsZWN0IE1NVV9OT1RJRklFUlxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L0tjb25maWctODAtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQvS2NvbmZpZz02PWNvbmZpZyBIU0FfQU1EXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9LY29uZmlnLTktXFx0c2VsZWN0IEhNTV9NSVJST1JcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9LY29uZmlnOjEwOlxcdHNlbGVjdCBNTVVfTk9USUZJRVJcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9LY29uZmlnLTExLVxcdHNlbGVjdCBEUk1fQU1ER1BVX1VTRVJQVFJcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL0tjb25maWc9MTU9Y29uZmlnIEhTQV9BTURfU1ZNXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9LY29uZmlnLTE5LVxcdHNlbGVjdCBITU1fTUlSUk9SXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQvS2NvbmZpZzoyMDpcXHRzZWxlY3QgTU1VX05PVElGSUVSXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQvS2NvbmZpZy0yMS1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9LY29uZmlnPTExND1jb25maWcgRFJNX0k5MTVfVVNFUlBUUlxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvS2NvbmZpZy0xMTYtXFx0ZGVwZW5kcyBvbiBEUk1fSTkxNVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L0tjb25maWc6MTE3OlxcdHNlbGVjdCBNTVVfTk9USUZJRVJcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9LY29uZmlnLTExOC1cXHRkZWZhdWx0IHlcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L0tjb25maWc9OTQ9Y29uZmlnIERSTV9OT1VWRUFVX1NWTVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvS2NvbmZpZy05OS1cXHRzZWxlY3QgSE1NX01JUlJPUlxcbmRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L0tjb25maWc6MTAwOlxcdHNlbGVjdCBNTVVfTk9USUZJRVJcXG5kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9LY29uZmlnLTEwMS1cXHRkZWZhdWx0IG5cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9yYWRlb24vS2NvbmZpZz0zOD1jb25maWcgRFJNX1JBREVPTl9VU0VSUFRSXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL0tjb25maWctNDAtXFx0ZGVwZW5kcyBvbiBEUk1fUkFERU9OXFxuZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9LY29uZmlnOjQxOlxcdHNlbGVjdCBNTVVfTk9USUZJRVJcXG5kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL0tjb25maWctNDItXFx0aGVscFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3hlL0tjb25maWc9Mj1jb25maWcgRFJNX1hFXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0veGUvS2NvbmZpZy00NC1cXHRzZWxlY3QgRFJNX1NDSEVEXFxuZHJpdmVycy9ncHUvZHJtL3hlL0tjb25maWc6NDU6XFx0c2VsZWN0IE1NVV9OT1RJRklFUlxcbmRyaXZlcnMvZ3B1L2RybS94ZS9LY29uZmlnLTQ2LVxcdHNlbGVjdCBXQU5UX0RFVl9DT1JFRFVNUFxcbi0tXFxuZHJpdmVycy9odi9LY29uZmlnPTY4PWNvbmZpZyBNU0hWX1JPT1RcXG4tLVxcbmRyaXZlcnMvaHYvS2NvbmZpZy04MC1cXHRzZWxlY3QgSE1NX01JUlJPUlxcbmRyaXZlcnMvaHYvS2NvbmZpZzo4MTpcXHRzZWxlY3QgTU1VX05PVElGSUVSXFxuZHJpdmVycy9odi9LY29uZmlnLTgyLVxcdGRlZmF1bHQgblxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWc9NTE9Y29uZmlnIElORklOSUJBTkRfT05fREVNQU5EX1BBR0lOR1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWctNTMtXFx0ZGVwZW5kcyBvbiBJTkZJTklCQU5EX1VTRVJfTUVNXFxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWc6NTQ6XFx0c2VsZWN0IE1NVV9OT1RJRklFUlxcbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnLTU1LVxcdHNlbGVjdCBJTlRFUlZBTF9UUkVFXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvaGZpMS9LY29uZmlnPTI9Y29uZmlnIElORklOSUJBTkRfSEZJMVxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2hmaTEvS2NvbmZpZy00LVxcdGRlcGVuZHMgb24gWDg2XzY0IFxcdTAwMjZcXHUwMDI2IElORklOSUJBTkRfUkRNQVZUIFxcdTAwMjZcXHUwMDI2IEkyQyBcXHUwMDI2XFx1MDAyNiAhVU1MXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2hmaTEvS2NvbmZpZzo1OlxcdHNlbGVjdCBNTVVfTk9USUZJRVJcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvaGZpMS9LY29uZmlnLTYtXFx0c2VsZWN0IENSQzMyXFxuLS1cXG5kcml2ZXJzL2lvbW11L2FtZC9LY29uZmlnPTM9Y29uZmlnIEFNRF9JT01NVVxcbi0tXFxuZHJpdmVycy9pb21tdS9hbWQvS2NvbmZpZy0xMC1cXHRzZWxlY3QgSVJRX01TSV9MSUJcXG5kcml2ZXJzL2lvbW11L2FtZC9LY29uZmlnOjExOlxcdHNlbGVjdCBNTVVfTk9USUZJRVJcXG5kcml2ZXJzL2lvbW11L2FtZC9LY29uZmlnLTEyLVxcdHNlbGVjdCBJT01NVV9BUElcXG4tLVxcbmRyaXZlcnMvaW9tbXUvYXJtL0tjb25maWc9OTE9Y29uZmlnIEFSTV9TTU1VX1YzX1NWQVxcbi0tXFxuZHJpdmVycy9pb21tdS9hcm0vS2NvbmZpZy05NC1cXHRzZWxlY3QgSU9NTVVfSU9QRlxcbmRyaXZlcnMvaW9tbXUvYXJtL0tjb25maWc6OTU6XFx0c2VsZWN0IE1NVV9OT1RJRklFUlxcbmRyaXZlcnMvaW9tbXUvYXJtL0tjb25maWctOTYtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9pb21tdS9pbnRlbC9LY29uZmlnPTUzPWNvbmZpZyBJTlRFTF9JT01NVV9TVk1cXG4tLVxcbmRyaXZlcnMvaW9tbXUvaW50ZWwvS2NvbmZpZy01NS1cXHRkZXBlbmRzIG9uIFg4Nl82NFxcbmRyaXZlcnMvaW9tbXUvaW50ZWwvS2NvbmZpZzo1NjpcXHRzZWxlY3QgTU1VX05PVElGSUVSXFxuZHJpdmVycy9pb21tdS9pbnRlbC9LY29uZmlnLTU3LVxcdHNlbGVjdCBJT01NVV9TVkFcXG4tLVxcbmRyaXZlcnMvbWlzYy9LY29uZmlnPTMxMz1jb25maWcgU0dJX0dSVVxcbi0tXFxuZHJpdmVycy9taXNjL0tjb25maWctMzE1LVxcdGRlcGVuZHMgb24gWDg2X1VWIFxcdTAwMjZcXHUwMDI2IFNNUFxcbmRyaXZlcnMvbWlzYy9LY29uZmlnOjMxNjpcXHRzZWxlY3QgTU1VX05PVElGSUVSXFxuZHJpdmVycy9taXNjL0tjb25maWctMzE3LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMveGVuL0tjb25maWc9MTM2PWNvbmZpZyBYRU5fR05UREVWXFxuLS1cXG5kcml2ZXJzL3hlbi9LY29uZmlnLTEzOS1cXHRkZWZhdWx0IG1cXG5kcml2ZXJzL3hlbi9LY29uZmlnOjE0MDpcXHRzZWxlY3QgTU1VX05PVElGSUVSXFxuZHJpdmVycy94ZW4vS2NvbmZpZy0xNDEtXFx0c2VsZWN0IEZJTkRfTk9STUFMX1BBR0VcXG4tLVxcbmxpYi9LY29uZmlnLmRlYnVnPTMzNTQ9Y29uZmlnIFRFU1RfSE1NXFxuLS1cXG5saWIvS2NvbmZpZy5kZWJ1Zy0zMzU4LVxcdHNlbGVjdCBITU1fTUlSUk9SXFxubGliL0tjb25maWcuZGVidWc6MzM1OTpcXHRzZWxlY3QgTU1VX05PVElGSUVSXFxubGliL0tjb25maWcuZGVidWctMzM2MC1cXHRoZWxwXFxuLS1cXG52aXJ0L2t2bS9LY29uZmlnPTQ9Y29uZmlnIEtWTV9DT01NT05cXG4tLVxcbnZpcnQva3ZtL0tjb25maWctNy0gICAgICAgc2VsZWN0IElOVEVSVkFMX1RSRUVcXG52aXJ0L2t2bS9LY29uZmlnOjg6ICAgICAgIHNlbGVjdCBNTVVfTk9USUZJRVJcXG52aXJ0L2t2bS9LY29uZmlnLTktICAgICAgIHNlbGVjdCBQUkVFTVBUX05PVElGSUVSU1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yM1QxNToyOTo0MS42MjI1NzUwODVaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTU0Mzc5Mjk3OTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRm9jdXNpbmcgdGhlIEZ1eno6IEtWTSBhbmQgT09NIENsZWFudXAqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24gZm9yIGZ1enppbmcuIEl0IGxvb2tzIGxpa2UgYEtWTV9DT01NT05gIHNlbGVjdHMgYE1NVV9OT1RJRklFUmAsIGFuZCBgS1ZNYCBzZWxlY3RzIGBLVk1fQ09NTU9OYC4gVGhlcmVmb3JlLCBlbmFibGluZyBgS1ZNYCBpcyBkZWZpbml0ZWx5IHRoZSByaWdodCBjb25maWcgdG8gZ2V0IGV2ZXJ5dGhpbmcgcmVsYXRlZCB0byB0aGUgcGF0Y2ggZW5hYmxlZC4gIGBLVk1gIGlzIHByZXR0eSBzdGFuZGFyZCwgc28gd2UgY2FuIGp1c3QgbGlzdCB0aGF0LlxuXG5UaGUgcGF0Y2ggaXRzZWxmIHRvdWNoZXMgYHZpcnQva3ZtL2t2bV9tYWluLmNgLCB3aGljaCB0ZWxscyBtZSB0aGF0IGBLVk1gIGlzIG5lY2Vzc2FyeSB0byB0ZXN0IHRoZSBLVk0tc3BlY2lmaWMgaW1wbGVtZW50YXRpb24gb2YgYGFmdGVyX29vbV91bnJlZ2lzdGVyYC4gVGhlIGNlbnRyYWwgbG9naWMgaXMgaW4gYG1tL21tdV9ub3RpZmllci5jYCBhbmQgYG1tL29vbV9raWxsLmNgLCBzbyBgS1ZNYCBzaG91bGQgYmUgc3VmZmljaWVudCB0byBlbmFibGUgYE1NVV9OT1RJRklFUmAgYW5kIHRlc3QgdGhlIHdob2xlIGZsb3cuXG5cbk5vdywgbGV0J3MgbmFpbCBkb3duIHRoZSBrZXkgc3ltYm9scy4gV2UgaGF2ZTogYG1tdV9ub3RpZmllcl9vb21fZW50ZXJgLCBgbW11X25vdGlmaWVyX2JhcnJpZXJgLCBgbW11X25vdGlmaWVyX29vbV9jYWxsYmFja19mbmAsIGBrdm1fbW11X25vdGlmaWVyX2FmdGVyX29vbV91bnJlZ2lzdGVyYCwgYW5kIGBrdm1fZGVzdHJveV92bWAuXG5cbk9rYXksIGRpZ2dpbmcgYSBiaXQgZGVlcGVyLCBgbW11X25vdGlmaWVyX29vbV9lbnRlcmAgaXMgY2FsbGVkIGZyb20gYF9fb29tX3JlYXBfdGFza19tbWAuIGBfX29vbV9yZWFwX3Rhc2tfbW1gIGlzIGluIHR1cm4gY2FsbGVkIGZyb20gYG9vbV9yZWFwX3Rhc2tfbW1gIGFuZCBgcHJvY2Vzc19tcmVsZWFzZWAuICBgcHJvY2Vzc19tcmVsZWFzZWAgaXMgYSBzeXNjYWxsLiAgSW50ZXJlc3RpbmcuIFNvLCBmdXp6aW5nIGBwcm9jZXNzX21yZWxlYXNlYCBzaG91bGQgYmUgYSBwYXRoIHRvIHRyaWdnZXIgYG1tdV9ub3RpZmllcl9vb21fZW50ZXJgLiBTeXprYWxsZXIgd2lsbCBhbHJlYWR5IGZ1enogYHByb2Nlc3NfbXJlbGVhc2VgIHNpbmNlIGl0J3MgYSBzeXNjYWxsLCBidXQgbGV0J3MgYWRkIGl0IHRvIHRoZSBmb2N1cyBzeW1ib2xzIHRvIGVuY291cmFnZSB0aGUgZnV6emVyIHRvIGdpdmUgaXQgc29tZSBleHRyYSBhdHRlbnRpb24uIFllcCwgYHByb2Nlc3NfbXJlbGVhc2VgIGxvb2tzIGxpa2UgYSBnb29kIGVudHJ5IHBvaW50IHNpbmNlIGl0J3MgYSBzeXNjYWxsLiBMZXQncyBhZGQgdGhhdCB0byB0aGUgbGlzdC5cblxuTGV0J3MgZG91YmxlLWNoZWNrIGhvdyBgX19vb21fcmVhcF90YXNrX21tYCBpcyBjYWxsZWQuIEl0J3MgY2FsbGVkIGZyb20gYG9vbV9yZWFwX3Rhc2tfbW1gLCB3aGljaCBpcyBjYWxsZWQgYnkgdGhlIG9vbV9yZWFwZXIga3RocmVhZC4gQWxzbyBmcm9tIHRoZSBgcHJvY2Vzc19tcmVsZWFzZWAgc3lzY2FsbC4gVGhpcyByZWluZm9yY2VzIHRoZSBpZGVhIHRoYXQgYHByb2Nlc3NfbXJlbGVhc2VgIGlzIHRoZSBrZXkgdG8gdHJpZ2dlciB0aGlzIGZyb20gdXNlcnNwYWNlLlxuXG5ga3ZtX2Rlc3Ryb3lfdm1gIGlzIGNhbGxlZCB3aGVuIGEgS1ZNIFZNIGlzIGRlc3Ryb3llZC4gQ3JlYXRpbmcgYW5kIGRlc3Ryb3lpbmcgVk1zIHdpbGwgbGlrZWx5IHRyaWdnZXIgdGhpcy5cblxuU28gdGhlIGNvbXBsZXRlIHNldCBvZiBmb2N1cyBzeW1ib2xzIGlzOlxuKiAgIGBtbXVfbm90aWZpZXJfb29tX2VudGVyYFxuKiAgIGBtbXVfbm90aWZpZXJfYmFycmllcmBcbiogICBgbW11X25vdGlmaWVyX29vbV9jYWxsYmFja19mbmBcbiogICBga3ZtX21tdV9ub3RpZmllcl9hZnRlcl9vb21fdW5yZWdpc3RlcmBcbiogICBga3ZtX2Rlc3Ryb3lfdm1gXG4qICAgYHByb2Nlc3NfbXJlbGVhc2VgXG5cbmBtbXVfbm90aWZpZXJfb29tX2NhbGxiYWNrX2ZuYCBpcyBzdGF0aWMsIGFuZCBjYWxsZWQgdmlhIGBjYWxsX3NyY3VgLCBidXQgaXQgc2hvdWxkIHN0aWxsIGJlIGluY2x1ZGVkIHNpbmNlIGl0J3Mgb24gdGhlIGNhbGwgc3RhY2ssIGV2ZW4gaWYgaXQncyBjYWxsZWQgYXN5bmNocm9ub3VzbHkuXG5cbmBrdm1fZGVzdHJveV92bWAgaXMgc3RhdGljIGluIGB2aXJ0L2t2bS9rdm1fbWFpbi5jYCBhbmQgY2FsbGVkIGZyb20gYGt2bV9wdXRfa3ZtYC4gYG1tdV9ub3RpZmllcl9iYXJyaWVyYCBpcyBleHBvcnRlZCwgYW5kIGBtbXVfbm90aWZpZXJfb29tX2VudGVyYCBpcyBub3QgZXhwb3J0ZWQsIGJ1dCBpdCBpcyBnbG9iYWwuXG5cblRoZSByZWFzb25pbmcgaGVyZSBpcyB0aGF0IHRoaXMgcGF0Y2ggbW9kaWZpZXMgYm90aCBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IGFuZCBLVk0uIEl0IGludHJvZHVjZXMgYW4gYXN5bmNocm9ub3VzIGNhbGxiYWNrLCB0cmlnZ2VyZWQgYnkgT09NIGV2ZW50cywgYW5kIGltcGxlbWVudHMgaXQgZm9yIEtWTS4gVGhlIGNoYW5nZSBtb2RpZmllcyBga3ZtX2Rlc3Ryb3lfdm1gIHRvIGhhbmRsZSBhc3luY2hyb25vdXMgY2xlYW51cC4gSXQncyBjcnVjaWFsIHRvIGZ1enogdGhpcyB0byBjaGVjayBmb3IgdXNlLWFmdGVyLWZyZWUgb3IgZGVhZGxvY2sgYnVncyBkdXJpbmcgVk0gT09NIGhhbmRsaW5nLlxuXG5KdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgYEtWTWAgaXMgdGhlIGNvbmZpZyBuYW1lLCBub3QgYENPTkZJR19LVk1gLiAgWWVwLCBgS1ZNYC5cblxuQWxzbywgYENPTkZJR19NTVVfTk9USUZJRVJgIGlzIHNlbGVjdGVkIGJ5IGBLVk1fQ09NTU9OYCB3aGljaCBpcyBzZWxlY3RlZCBieSBgS1ZNYC4gU28ganVzdCBgS1ZNYCBpcyBzdWZmaWNpZW50LCBidXQgbGlzdGluZyBib3RoIHdpbGwgbWFrZSBpdCBtb3JlIGV4cGxpY2l0LlxuXG5Ob3csIGxldCdzIHB1dCB0aGlzIGludG8gYSBwcm9wZXIgc3VtbWFyeS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjQzMjUsIk91dHB1dFRva2VucyI6MjA5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTk0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDE1OjI5OjU3LjA2MDUzMDU1NFoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1NDA2NzcwOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNXCIsXG4gICAgXCJNTVVfTk9USUZJRVJcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtbXVfbm90aWZpZXJfb29tX2VudGVyXCIsXG4gICAgXCJtbXVfbm90aWZpZXJfYmFycmllclwiLFxuICAgIFwibW11X25vdGlmaWVyX29vbV9jYWxsYmFja19mblwiLFxuICAgIFwia3ZtX21tdV9ub3RpZmllcl9hZnRlcl9vb21fdW5yZWdpc3RlclwiLFxuICAgIFwia3ZtX2Rlc3Ryb3lfdm1cIixcbiAgICBcInByb2Nlc3NfbXJlbGVhc2VcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IE1NVSBub3RpZmllciBjYWxsYmFjayBgYWZ0ZXJfb29tX3VucmVnaXN0ZXJgIGFuZCBhIG1lY2hhbmlzbSB0byBpbnZva2UgaXQgYXN5bmNocm9ub3VzbHkgd2hlbiBhbiBPT00gZXZlbnQgb2NjdXJzIChgbW11X25vdGlmaWVyX29vbV9lbnRlcmApLiBJdCBhbHNvIGltcGxlbWVudHMgdGhpcyBjYWxsYmFjayBmb3IgS1ZNIGFuZCBtb2RpZmllcyBga3ZtX2Rlc3Ryb3lfdm1gIHRvIGhhbmRsZSB0aGUgYXN5bmNocm9ub3VzIGNsZWFudXAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IGFuZCBLVk0sIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSB0aGVyZSBhcmUgbm8gdXNlLWFmdGVyLWZyZWUgb3IgZGVhZGxvY2sgaXNzdWVzIGR1cmluZyBPT00gaGFuZGxpbmcgb2YgVk1zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTVwiLFxuICAgIFwiTU1VX05PVElGSUVSXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibW11X25vdGlmaWVyX29vbV9lbnRlclwiLFxuICAgIFwibW11X25vdGlmaWVyX2JhcnJpZXJcIixcbiAgICBcIm1tdV9ub3RpZmllcl9vb21fY2FsbGJhY2tfZm5cIixcbiAgICBcImt2bV9tbXVfbm90aWZpZXJfYWZ0ZXJfb29tX3VucmVnaXN0ZXJcIixcbiAgICBcImt2bV9kZXN0cm95X3ZtXCIsXG4gICAgXCJwcm9jZXNzX21yZWxlYXNlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBNTVUgbm90aWZpZXIgY2FsbGJhY2sgYGFmdGVyX29vbV91bnJlZ2lzdGVyYCBhbmQgYSBtZWNoYW5pc20gdG8gaW52b2tlIGl0IGFzeW5jaHJvbm91c2x5IHdoZW4gYW4gT09NIGV2ZW50IG9jY3VycyAoYG1tdV9ub3RpZmllcl9vb21fZW50ZXJgKS4gSXQgYWxzbyBpbXBsZW1lbnRzIHRoaXMgY2FsbGJhY2sgZm9yIEtWTSBhbmQgbW9kaWZpZXMgYGt2bV9kZXN0cm95X3ZtYCB0byBoYW5kbGUgdGhlIGFzeW5jaHJvbm91cyBjbGVhbnVwLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gY29yZSBtZW1vcnkgbWFuYWdlbWVudCBhbmQgS1ZNLCBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgdGhlcmUgYXJlIG5vIHVzZS1hZnRlci1mcmVlIG9yIGRlYWRsb2NrIGlzc3VlcyBkdXJpbmcgT09NIGhhbmRsaW5nIG9mIFZNcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow49wsg[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-23 15:01:28 +0000 UTC FinishedAt: 2026-07-23 15:29:59 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "a13c140cc289c0b7b3770bce5b3ad42ab35074aa", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM", "MMU_NOTIFIER" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "a13c140cc289c0b7b3770bce5b3ad42ab35074aa", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM", "MMU_NOTIFIER" ], "series_id": "24743a6e-9ab8-4338-bf66-de1c0d9df207" }, "track": "KASAN", "fuzz": { "focus": [ "kvm" ], "focus_symbols": [ "mmu_notifier_oom_enter", "mmu_notifier_barrier", "mmu_notifier_oom_callback_fn", "kvm_mmu_notifier_after_oom_unregister", "kvm_destroy_vm", "process_mrelease" ], "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+CgkJCTx0ZD4yMDI2LzA3LzIzIDE1OjI5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7LAogICAgJiMzNDtNTVVfTk9USUZJRVImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttbXVfbm90aWZpZXJfb29tX2VudGVyJiMzNDssCiAgICAmIzM0O21tdV9ub3RpZmllcl9iYXJyaWVyJiMzNDssCiAgICAmIzM0O21tdV9ub3RpZmllcl9vb21fY2FsbGJhY2tfZm4mIzM0OywKICAgICYjMzQ7a3ZtX21tdV9ub3RpZmllcl9hZnRlcl9vb21fdW5yZWdpc3RlciYjMzQ7LAogICAgJiMzNDtrdm1fZGVzdHJveV92bSYjMzQ7LAogICAgJiMzNDtwcm9jZXNzX21yZWxlYXNlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgTU1VIG5vdGlmaWVyIGNhbGxiYWNrIGBhZnRlcl9vb21fdW5yZWdpc3RlcmAgYW5kIGEgbWVjaGFuaXNtIHRvIGludm9rZSBpdCBhc3luY2hyb25vdXNseSB3aGVuIGFuIE9PTSBldmVudCBvY2N1cnMgKGBtbXVfbm90aWZpZXJfb29tX2VudGVyYCkuIEl0IGFsc28gaW1wbGVtZW50cyB0aGlzIGNhbGxiYWNrIGZvciBLVk0gYW5kIG1vZGlmaWVzIGBrdm1fZGVzdHJveV92bWAgdG8gaGFuZGxlIHRoZSBhc3luY2hyb25vdXMgY2xlYW51cC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgYW5kIEtWTSwgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIHRoZXJlIGFyZSBubyB1c2UtYWZ0ZXItZnJlZSBvciBkZWFkbG9jayBpc3N1ZXMgZHVyaW5nIE9PTSBoYW5kbGluZyBvZiBWTXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMTU6Mjk8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAwMjMxMWQxODVkYmNiNmQ5ZGExNjBhOWM3MDNiYTg2Zjc3OGE0Y2ViXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdWwgMjMgMTU6Mjg6NTggMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9tbXVfbm90aWZpZXIuaCBiL2luY2x1ZGUvbGludXgvbW11X25vdGlmaWVyLmhcbmluZGV4IGExMWE0NGVlZjUyMWU5Li5hMTgyMGE0ODc4NTRkZCAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvbW11X25vdGlmaWVyLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvbW11X25vdGlmaWVyLmhcbkBAIC04OCw2ICYjNDM7ODgsMTQgQEAgc3RydWN0IG1tdV9ub3RpZmllcl9vcHMge1xuIFx0dm9pZCAoKnJlbGVhc2UpKHN0cnVjdCBtbXVfbm90aWZpZXIgKnN1YnNjcmlwdGlvbixcbiBcdFx0XHRzdHJ1Y3QgbW1fc3RydWN0ICptbSk7XG4gXG4mIzQzO1x0LypcbiYjNDM7XHQgKiBBbnkgbW11IG5vdGlmaWVyIHRoYXQgZGVmaW5lcyB0aGlzIGlzIGF1dG9tYXRpY2FsbHkgdW5yZWdpc3RlcmVkXG4mIzQzO1x0ICogd2hlbiBpdHMgbW0gaXMgdGhlIHN1YmplY3Qgb2YgYW4gT09NIGtpbGwuICBhZnRlcl9vb21fdW5yZWdpc3RlcigpXG4mIzQzO1x0ICogaXMgaW52b2tlZCBhZnRlciBhbGwgb3RoZXIgb3V0c3RhbmRpbmcgY2FsbGJhY2tzIGhhdmUgdGVybWluYXRlZC5cbiYjNDM7XHQgKi9cbiYjNDM7XHR2b2lkICgqYWZ0ZXJfb29tX3VucmVnaXN0ZXIpKHN0cnVjdCBtbXVfbm90aWZpZXIgKnN1YnNjcmlwdGlvbixcbiYjNDM7XHRcdFx0XHQgICAgIHN0cnVjdCBtbV9zdHJ1Y3QgKm1tKTtcbiYjNDM7XG4gXHQvKlxuIFx0ICogY2xlYXJfZmx1c2hfeW91bmcgaXMgY2FsbGVkIGFmdGVyIHRoZSBWTSBpc1xuIFx0ICogdGVzdC1hbmQtY2xlYXJpbmcgdGhlIHlvdW5nL2FjY2Vzc2VkIGJpdGZsYWcgaW4gdGhlXG5AQCAtNDI0LDYgJiM0Mzs0MzIsOCBAQCBib29sIF9fbW11X25vdGlmaWVyX2NsZWFyX3lvdW5nKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLFxuIFx0XHR1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCk7XG4gYm9vbCBfX21tdV9ub3RpZmllcl90ZXN0X3lvdW5nKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLFxuIFx0XHR1bnNpZ25lZCBsb25nIGFkZHJlc3MpO1xuJiM0Mzt2b2lkIG1tdV9ub3RpZmllcl9vb21fZW50ZXIoc3RydWN0IG1tX3N0cnVjdCAqbW0pO1xuJiM0Mzt2b2lkIG1tdV9ub3RpZmllcl9iYXJyaWVyKHZvaWQpO1xuIGV4dGVybiBpbnQgX19tbXVfbm90aWZpZXJfaW52YWxpZGF0ZV9yYW5nZV9zdGFydChzdHJ1Y3QgbW11X25vdGlmaWVyX3JhbmdlICpyKTtcbiBleHRlcm4gdm9pZCBfX21tdV9ub3RpZmllcl9pbnZhbGlkYXRlX3JhbmdlX2VuZChzdHJ1Y3QgbW11X25vdGlmaWVyX3JhbmdlICpyKTtcbiBleHRlcm4gdm9pZCBfX21tdV9ub3RpZmllcl9hcmNoX2ludmFsaWRhdGVfc2Vjb25kYXJ5X3RsYnMoc3RydWN0IG1tX3N0cnVjdCAqbW0sXG5AQCAtNjQzLDYgJiM0Mzs2NTMsMTAgQEAgc3RhdGljIGlubGluZSB2b2lkIG1tdV9ub3RpZmllcl9zeW5jaHJvbml6ZSh2b2lkKVxuIHtcbiB9XG4gXG4mIzQzO3N0YXRpYyBpbmxpbmUgdm9pZCBtbXVfbm90aWZpZXJfb29tX2VudGVyKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tKVxuJiM0Mzt7XG4mIzQzO31cbiYjNDM7XG4gI2VuZGlmIC8qIENPTkZJR19NTVVfTk9USUZJRVIgKi9cbiBcbiAjZW5kaWYgLyogX0xJTlVYX01NVV9OT1RJRklFUl9IICovXG5kaWZmIC0tZ2l0IGEvbW0vbW11X25vdGlmaWVyLmMgYi9tbS9tbXVfbm90aWZpZXIuY1xuaW5kZXggMjQ1Yjc0ZjM5ZjkxMjIuLmYzMGJmOTVmMTdjN2FhIDEwMDY0NFxuLS0tIGEvbW0vbW11X25vdGlmaWVyLmNcbiYjNDM7JiM0MzsmIzQzOyBiL21tL21tdV9ub3RpZmllci5jXG5AQCAtNDksNiAmIzQzOzQ5LDM3IEBAIHN0cnVjdCBtbXVfbm90aWZpZXJfc3Vic2NyaXB0aW9ucyB7XG4gXHRzdHJ1Y3QgaGxpc3RfaGVhZCBkZWZlcnJlZF9saXN0O1xuIH07XG4gXG4mIzQzOy8qXG4mIzQzOyAqIENhbGxiYWNrIHN0cnVjdHVyZSBmb3IgYXN5bmNocm9ub3VzIE9PTSBjbGVhbnVwLlxuJiM0MzsgKiBVc2VkIHdpdGggY2FsbF9zcmN1KCkgdG8gZGVmZXIgYWZ0ZXJfb29tX3VucmVnaXN0ZXIgY2FsbGJhY2tzXG4mIzQzOyAqIHVudGlsIGFmdGVyIFNSQ1UgZ3JhY2UgcGVyaW9kIGNvbXBsZXRlcy5cbiYjNDM7ICovXG4mIzQzO3N0cnVjdCBtbXVfbm90aWZpZXJfb29tX2NhbGxiYWNrIHtcbiYjNDM7XHRzdHJ1Y3QgcmN1X2hlYWQgcmN1O1xuJiM0MztcdHN0cnVjdCBtbXVfbm90aWZpZXIgKnN1YnNjcmlwdGlvbjtcbiYjNDM7XHRzdHJ1Y3QgbW1fc3RydWN0ICptbTtcbiYjNDM7fTtcbiYjNDM7XG4mIzQzOy8qXG4mIzQzOyAqIENhbGxiYWNrIGZ1bmN0aW9uIGludm9rZWQgYWZ0ZXIgU1JDVSBncmFjZSBwZXJpb2QuXG4mIzQzOyAqIFNhZmVseSBjYWxscyBhZnRlcl9vb21fdW5yZWdpc3RlciBvbmNlIGFsbCByZWFkZXJzIGhhdmUgZmluaXNoZWQuXG4mIzQzOyAqL1xuJiM0MztzdGF0aWMgdm9pZCBtbXVfbm90aWZpZXJfb29tX2NhbGxiYWNrX2ZuKHN0cnVjdCByY3VfaGVhZCAqcmN1KVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IG1tdV9ub3RpZmllcl9vb21fY2FsbGJhY2sgKmNiID1cbiYjNDM7XHRcdGNvbnRhaW5lcl9vZihyY3UsIHN0cnVjdCBtbXVfbm90aWZpZXJfb29tX2NhbGxiYWNrLCByY3UpO1xuJiM0MztcbiYjNDM7XHQvKiBTYWZlIC0gYWxsIFNSQ1UgcmVhZGVycyBoYXZlIGZpbmlzaGVkICovXG4mIzQzO1x0Y2ItXHUwMDNlc3Vic2NyaXB0aW9uLVx1MDAzZW9wcy1cdTAwM2VhZnRlcl9vb21fdW5yZWdpc3RlcihjYi1cdTAwM2VzdWJzY3JpcHRpb24sIGNiLVx1MDAzZW1tKTtcbiYjNDM7XG4mIzQzO1x0LyogUmVsZWFzZSBtbSByZWZlcmVuY2UgdGFrZW4gd2hlbiBjYWxsYmFjayB3YXMgc2NoZWR1bGVkICovXG4mIzQzO1x0V0FSTl9PTl9PTkNFKGF0b21pY19yZWFkKFx1MDAyNmNiLVx1MDAzZW1tLVx1MDAzZW1tX2NvdW50KSBcdTAwM2M9IDApO1xuJiM0MztcdG1tZHJvcChjYi1cdTAwM2VtbSk7XG4mIzQzO1xuJiM0MztcdC8qIEZyZWUgY2FsbGJhY2sgc3RydWN0dXJlICovXG4mIzQzO1x0a2ZyZWUoY2IpO1xuJiM0Mzt9XG4mIzQzO1xuIC8qXG4gICogVGhpcyBpcyBhIGNvbGxpc2lvbi1yZXRyeSByZWFkLXNpZGUvd3JpdGUtc2lkZSAmIzM5O2xvY2smIzM5OywgYSBsb3QgbGlrZSBhXG4gICogc2VxY291bnQsIGhvd2V2ZXIgdGhpcyBhbGxvd3MgbXVsdGlwbGUgd3JpdGUtc2lkZXMgdG8gaG9sZCBpdCBhdFxuQEAgLTM4NSw2ICYjNDM7NDE2LDg0IEBAIHZvaWQgX19tbXVfbm90aWZpZXJfcmVsZWFzZShzdHJ1Y3QgbW1fc3RydWN0ICptbSlcbiBcdFx0bW5faGxpc3RfcmVsZWFzZShzdWJzY3JpcHRpb25zLCBtbSk7XG4gfVxuIFxuJiM0Mzt2b2lkIG1tdV9ub3RpZmllcl9vb21fZW50ZXIoc3RydWN0IG1tX3N0cnVjdCAqbW0pXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgbW11X25vdGlmaWVyX3N1YnNjcmlwdGlvbnMgKnN1YnNjcmlwdGlvbnMgPVxuJiM0MztcdFx0XHRcdFx0XHRtbS1cdTAwM2Vub3RpZmllcl9zdWJzY3JpcHRpb25zO1xuJiM0MztcdHN0cnVjdCBtbXVfbm90aWZpZXIgKnN1YnNjcmlwdGlvbjtcbiYjNDM7XHRzdHJ1Y3QgaGxpc3Rfbm9kZSAqdG1wO1xuJiM0MztcdEhMSVNUX0hFQUQob29tX2xpc3QpO1xuJiM0MztcdGludCBpZDtcbiYjNDM7XG4mIzQzO1x0aWYgKCFzdWJzY3JpcHRpb25zKVxuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcbiYjNDM7XHRpZCA9IHNyY3VfcmVhZF9sb2NrKFx1MDAyNnNyY3UpO1xuJiM0MztcbiYjNDM7XHQvKlxuJiM0MztcdCAqIFByZXZlbnQgZnVydGhlciBjYWxscyB0byB0aGUgTU1VIG5vdGlmaWVyLCBleGNlcHQgZm9yXG4mIzQzO1x0ICogcmVsZWFzZSBhbmQgYWZ0ZXJfb29tX3VucmVnaXN0ZXIuXG4mIzQzO1x0ICovXG4mIzQzO1x0c3Bpbl9sb2NrKFx1MDAyNnN1YnNjcmlwdGlvbnMtXHUwMDNlbG9jayk7XG4mIzQzO1x0aGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShzdWJzY3JpcHRpb24sIHRtcCxcbiYjNDM7XHRcdFx0XHQgIFx1MDAyNnN1YnNjcmlwdGlvbnMtXHUwMDNlbGlzdCwgaGxpc3QpIHtcbiYjNDM7XHRcdGlmICghc3Vic2NyaXB0aW9uLVx1MDAzZW9wcy1cdTAwM2VhZnRlcl9vb21fdW5yZWdpc3RlcilcbiYjNDM7XHRcdFx0Y29udGludWU7XG4mIzQzO1xuJiM0MztcdFx0LypcbiYjNDM7XHRcdCAqIGFmdGVyX29vbV91bnJlZ2lzdGVyIGFuZCBhbGxvY19ub3RpZmllciBhcmUgaW5jb21wYXRpYmxlLFxuJiM0MztcdFx0ICogYmVjYXVzZSB0aGVyZSBjb3VsZCBiZSBvdGhlciByZWZlcmVuY2VzIHRvIGFsbG9jYXRlZFxuJiM0MztcdFx0ICogbm90aWZpZXJzLlxuJiM0MztcdFx0ICovXG4mIzQzO1x0XHRpZiAoV0FSTl9PTihzdWJzY3JpcHRpb24tXHUwMDNlb3BzLVx1MDAzZWFsbG9jX25vdGlmaWVyKSlcbiYjNDM7XHRcdFx0Y29udGludWU7XG4mIzQzO1xuJiM0MztcdFx0aGxpc3RfZGVsX2luaXRfcmN1KFx1MDAyNnN1YnNjcmlwdGlvbi1cdTAwM2VobGlzdCk7XG4mIzQzO1x0XHRobGlzdF9hZGRfaGVhZChcdTAwMjZzdWJzY3JpcHRpb24tXHUwMDNlaGxpc3QsIFx1MDAyNm9vbV9saXN0KTtcbiYjNDM7XHR9XG4mIzQzO1x0c3Bpbl91bmxvY2soXHUwMDI2c3Vic2NyaXB0aW9ucy1cdTAwM2Vsb2NrKTtcbiYjNDM7XHRobGlzdF9mb3JfZWFjaF9lbnRyeShzdWJzY3JpcHRpb24sIFx1MDAyNm9vbV9saXN0LCBobGlzdClcbiYjNDM7XHRcdGlmIChzdWJzY3JpcHRpb24tXHUwMDNlb3BzLVx1MDAzZXJlbGVhc2UpXG4mIzQzO1x0XHRcdHN1YnNjcmlwdGlvbi1cdTAwM2VvcHMtXHUwMDNlcmVsZWFzZShzdWJzY3JpcHRpb24sIG1tKTtcbiYjNDM7XG4mIzQzO1x0c3JjdV9yZWFkX3VubG9jayhcdTAwMjZzcmN1LCBpZCk7XG4mIzQzO1xuJiM0MztcdGlmIChobGlzdF9lbXB0eShcdTAwMjZvb21fbGlzdCkpXG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1xuJiM0MztcdGhsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoc3Vic2NyaXB0aW9uLCB0bXAsXG4mIzQzO1x0XHRcdFx0ICBcdTAwMjZvb21fbGlzdCwgaGxpc3QpIHtcbiYjNDM7XHRcdHN0cnVjdCBtbXVfbm90aWZpZXJfb29tX2NhbGxiYWNrICpjYjtcbiYjNDM7XHRcdC8qXG4mIzQzO1x0XHQgKiBSZW1vdmUgZnJvbSBzdGFjay1iYXNlZCBvb21fbGlzdCBhbmQgcmVzZXQgaGxpc3QgdG8gdW5oYXNoZWQgc3RhdGUuXG4mIzQzO1x0XHQgKiBUaGlzIHNldHMgc3Vic2NyaXB0aW9uLVx1MDAzZWhsaXN0LnBwcmV2ID0gTlVMTCwgc28gZnV0dXJlIGNhbGxlcnMgb2ZcbiYjNDM7XHRcdCAqIG1tdV9ub3RpZmllcl91bnJlZ2lzdGVyKCkgKGUuZy4ga3ZtX2Rlc3Ryb3lfdm0pIHdpbGwgc2VlXG4mIzQzO1x0XHQgKiBobGlzdF91bmhhc2hlZCgpID09IHRydWUgYW5kIHRha2UgdGhlIHNhZmUgcGF0aCwgYXZvaWRpbmdcbiYjNDM7XHRcdCAqIHVzZS1hZnRlci1mcmVlIG9uIHRoZSBzdGFjay1hbGxvY2F0ZWQgb29tX2xpc3QgaGVhZC5cbiYjNDM7XHRcdCAqL1xuJiM0MztcdFx0aGxpc3RfZGVsX2luaXQoXHUwMDI2c3Vic2NyaXB0aW9uLVx1MDAzZWhsaXN0KTtcbiYjNDM7XG4mIzQzO1x0XHQvKlxuJiM0MztcdFx0ICogR0ZQX0FUT01JQyBmYWlsdXJlIGlzIGV4Y2VlZGluZ2x5IHJhcmUuIFdlIGNhbm5vdCBzbGVlcFxuJiM0MztcdFx0ICogaGVyZSAod291bGQgcmVpbnRyb2R1Y2UgdGhlIGRlYWRsb2NrIHRoaXMgcGF0Y2ggZml4ZXMpXG4mIzQzO1x0XHQgKiBhbmQgY2Fubm90IGNhbGwgYWZ0ZXJfb29tX3VucmVnaXN0ZXIgc3luY2hyb25vdXNseVxuJiM0MztcdFx0ICogd2l0aG91dCBmaXJzdCB3YWl0aW5nIGZvciBTUkNVIHJlYWRlcnMuIFRoZSBzdWJzY3JpYmVyXG4mIzQzO1x0XHQgKiB3aWxsIG5vdCByZWNlaXZlIGFmdGVyX29vbV91bnJlZ2lzdGVyIGJ1dCBjbGVhbnVwIHdpbGxcbiYjNDM7XHRcdCAqIGV2ZW50dWFsbHkgaGFwcGVuIHZpYSB0aGUgdW5yZWdpc3RlciBwYXRoLlxuJiM0MztcdFx0ICovXG4mIzQzO1x0XHRjYiA9IGttYWxsb2Nfb2JqKCpjYiwgR0ZQX0FUT01JQyk7XG4mIzQzO1x0XHRpZiAoIWNiKVxuJiM0MztcdFx0XHRjb250aW51ZTtcbiYjNDM7XG4mIzQzO1x0XHRjYi1cdTAwM2VzdWJzY3JpcHRpb24gPSBzdWJzY3JpcHRpb247XG4mIzQzO1x0XHRjYi1cdTAwM2VtbSA9IG1tO1xuJiM0MztcdFx0bW1ncmFiKG1tKTtcbiYjNDM7XG4mIzQzO1x0XHQvKiBTY2hlZHVsZSBjYWxsYmFjayAtIHJldHVybnMgaW1tZWRpYXRlbHkgKi9cbiYjNDM7XHRcdGNhbGxfc3JjdShcdTAwMjZzcmN1LCBcdTAwMjZjYi1cdTAwM2VyY3UsIG1tdV9ub3RpZmllcl9vb21fY2FsbGJhY2tfZm4pO1xuJiM0MztcdH1cbiYjNDM7fVxuJiM0MztcbiAvKlxuICAqIElmIG5vIHlvdW5nIGJpdGZsYWcgaXMgc3VwcG9ydGVkIGJ5IHRoZSBoYXJkd2FyZSwgLVx1MDAzZWNsZWFyX2ZsdXNoX3lvdW5nIGNhblxuICAqIHVubWFwIHRoZSBhZGRyZXNzIGFuZCByZXR1cm4gMSBvciAwIGRlcGVuZGluZyBpZiB0aGUgbWFwcGluZyBwcmV2aW91c2x5XG5AQCAtMTE0NCwzICYjNDM7MTI1MywxNiBAQCB2b2lkIG1tdV9ub3RpZmllcl9zeW5jaHJvbml6ZSh2b2lkKVxuIFx0c3luY2hyb25pemVfc3JjdShcdTAwMjZzcmN1KTtcbiB9XG4gRVhQT1JUX1NZTUJPTF9HUEwobW11X25vdGlmaWVyX3N5bmNocm9uaXplKTtcbiYjNDM7XG4mIzQzOy8qKlxuJiM0MzsgKiBtbXVfbm90aWZpZXJfYmFycmllciAtIFdhaXQgZm9yIGFsbCBwZW5kaW5nIE1NVSBub3RpZmllciBjYWxsYmFja3NcbiYjNDM7ICpcbiYjNDM7ICogV2FpdHMgZm9yIGFsbCBjYWxsX3NyY3UoKSBjYWxsYmFja3Mgc2NoZWR1bGVkIGJ5IG1tdV9ub3RpZmllcl9vb21fZW50ZXIoKVxuJiM0MzsgKiB0byBjb21wbGV0ZS4gVXNlZCBieSBzdWJzeXN0ZW1zIGR1cmluZyBjbGVhbnVwIHRvIHByZXZlbnQgdXNlLWFmdGVyLWZyZWVcbiYjNDM7ICogd2hlbiBkZXN0cm95aW5nIHN0cnVjdHVyZXMgYWNjZXNzZWQgYnkgdGhlIGNhbGxiYWNrcy5cbiYjNDM7ICovXG4mIzQzO3ZvaWQgbW11X25vdGlmaWVyX2JhcnJpZXIodm9pZClcbiYjNDM7e1xuJiM0MztcdHNyY3VfYmFycmllcihcdTAwMjZzcmN1KTtcbiYjNDM7fVxuJiM0MztFWFBPUlRfU1lNQk9MX0dQTChtbXVfbm90aWZpZXJfYmFycmllcik7XG5kaWZmIC0tZ2l0IGEvbW0vb29tX2tpbGwuYyBiL21tL29vbV9raWxsLmNcbmluZGV4IDVmMzcyZjZlMjZmYTMyLi42NmFkY2QwM2YzNmE4ZSAxMDA2NDRcbi0tLSBhL21tL29vbV9raWxsLmNcbiYjNDM7JiM0MzsmIzQzOyBiL21tL29vbV9raWxsLmNcbkBAIC01MTYsNiAmIzQzOzUxNiw5IEBAIHN0YXRpYyBib29sIF9fb29tX3JlYXBfdGFza19tbShzdHJ1Y3QgbW1fc3RydWN0ICptbSlcbiBcdGJvb2wgcmV0ID0gdHJ1ZTtcbiBcdE1BX1NUQVRFKG1hcywgXHUwMDI2bW0tXHUwMDNlbW1fbXQsIFVMT05HX01BWCwgVUxPTkdfTUFYKTtcbiBcbiYjNDM7XHQvKiBOb3RpZnkgTU1VIG5vdGlmaWVycyBhYm91dCB0aGUgT09NIGV2ZW50ICovXG4mIzQzO1x0bW11X25vdGlmaWVyX29vbV9lbnRlcihtbSk7XG4mIzQzO1xuIFx0LypcbiBcdCAqIFRlbGwgYWxsIHVzZXJzIG9mIGdldF91c2VyL2NvcHlfZnJvbV91c2VyIGV0Yy4uLiB0aGF0IHRoZSBjb250ZW50XG4gXHQgKiBpcyBubyBsb25nZXIgc3RhYmxlLiBObyBiYXJyaWVycyByZWFsbHkgbmVlZGVkIGJlY2F1c2UgdW5tYXBwaW5nXG5kaWZmIC0tZ2l0IGEvdmlydC9rdm0va3ZtX21haW4uYyBiL3ZpcnQva3ZtL2t2bV9tYWluLmNcbmluZGV4IGU0NGMyMGMwNDk2MTBkLi43OWE0ZGY4YTMzN2EyZCAxMDA2NDRcbi0tLSBhL3ZpcnQva3ZtL2t2bV9tYWluLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3ZpcnQva3ZtL2t2bV9tYWluLmNcbkBAIC04NzUsNiAmIzQzOzg3NSwyNCBAQCBzdGF0aWMgdm9pZCBrdm1fbW11X25vdGlmaWVyX3JlbGVhc2Uoc3RydWN0IG1tdV9ub3RpZmllciAqbW4sXG4gXHRzcmN1X3JlYWRfdW5sb2NrKFx1MDAyNmt2bS1cdTAwM2VzcmN1LCBpZHgpO1xuIH1cbiBcbiYjNDM7c3RhdGljIHZvaWQga3ZtX21tdV9ub3RpZmllcl9hZnRlcl9vb21fdW5yZWdpc3RlcihzdHJ1Y3QgbW11X25vdGlmaWVyICptbixcbiYjNDM7XHRcdFx0XHRcdFx0ICBzdHJ1Y3QgbW1fc3RydWN0ICptbSlcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBrdm0gKmt2bTtcbiYjNDM7XG4mIzQzO1x0a3ZtID0gbW11X25vdGlmaWVyX3RvX2t2bShtbik7XG4mIzQzO1xuJiM0MztcdC8qXG4mIzQzO1x0ICogQXQgdGhpcyBwb2ludCB0aGUgdW5yZWdpc3RlciBoYXMgY29tcGxldGVkIGFuZCBhbGwgb3RoZXIgY2FsbGJhY2tzXG4mIzQzO1x0ICogaGF2ZSB0ZXJtaW5hdGVkLiBDbGVhbiB1cCBhbnkgdW5iYWxhbmNlZCBpbnZhbGlkYXRpb24gY291bnRzLlxuJiM0MztcdCAqL1xuJiM0MztcdFdBUk5fT04ocmN1d2FpdF9hY3RpdmUoXHUwMDI2a3ZtLVx1MDAzZW1uX21lbXNsb3RzX3VwZGF0ZV9yY3V3YWl0KSk7XG4mIzQzO1x0aWYgKGt2bS1cdTAwM2Vtbl9hY3RpdmVfaW52YWxpZGF0ZV9jb3VudClcbiYjNDM7XHRcdGt2bS1cdTAwM2Vtbl9hY3RpdmVfaW52YWxpZGF0ZV9jb3VudCA9IDA7XG4mIzQzO1x0ZWxzZVxuJiM0MztcdFx0V0FSTl9PTihrdm0tXHUwMDNlbW11X2ludmFsaWRhdGVfaW5fcHJvZ3Jlc3MpO1xuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbW11X25vdGlmaWVyX29wcyBrdm1fbW11X25vdGlmaWVyX29wcyA9IHtcbiBcdC5pbnZhbGlkYXRlX3JhbmdlX3N0YXJ0XHQ9IGt2bV9tbXVfbm90aWZpZXJfaW52YWxpZGF0ZV9yYW5nZV9zdGFydCxcbiBcdC5pbnZhbGlkYXRlX3JhbmdlX2VuZFx0PSBrdm1fbW11X25vdGlmaWVyX2ludmFsaWRhdGVfcmFuZ2VfZW5kLFxuQEAgLTg4Miw2ICYjNDM7OTAwLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBtbXVfbm90aWZpZXJfb3BzIGt2bV9tbXVfbm90aWZpZXJfb3BzID0ge1xuIFx0LmNsZWFyX3lvdW5nXHRcdD0ga3ZtX21tdV9ub3RpZmllcl9jbGVhcl95b3VuZyxcbiBcdC50ZXN0X3lvdW5nXHRcdD0ga3ZtX21tdV9ub3RpZmllcl90ZXN0X3lvdW5nLFxuIFx0LnJlbGVhc2VcdFx0PSBrdm1fbW11X25vdGlmaWVyX3JlbGVhc2UsXG4mIzQzO1x0LmFmdGVyX29vbV91bnJlZ2lzdGVyXHQ9IGt2bV9tbXVfbm90aWZpZXJfYWZ0ZXJfb29tX3VucmVnaXN0ZXIsXG4gfTtcbiBcbiBzdGF0aWMgaW50IGt2bV9pbml0X21tdV9ub3RpZmllcihzdHJ1Y3Qga3ZtICprdm0pXG5AQCAtMTI3Myw3ICYjNDM7MTI5MiwxMyBAQCBzdGF0aWMgdm9pZCBrdm1fZGVzdHJveV92bShzdHJ1Y3Qga3ZtICprdm0pXG4gXHRcdGt2bS1cdTAwM2VidXNlc1tpXSA9IE5VTEw7XG4gXHR9XG4gXHRrdm1fY29hbGVzY2VkX21taW9fZnJlZShrdm0pO1xuLVx0bW11X25vdGlmaWVyX3VucmVnaXN0ZXIoXHUwMDI2a3ZtLVx1MDAzZW1tdV9ub3RpZmllciwga3ZtLVx1MDAzZW1tKTtcbiYjNDM7XHRpZiAoaGxpc3RfdW5oYXNoZWQoXHUwMDI2a3ZtLVx1MDAzZW1tdV9ub3RpZmllci5obGlzdCkpIHtcbiYjNDM7XHRcdC8qIFN1YnNjcmlwdGlvbiByZW1vdmVkIGJ5IE9PTS4gV2FpdCBmb3IgYXN5bmMgY2FsbGJhY2suICovXG4mIzQzO1x0XHRtbXVfbm90aWZpZXJfYmFycmllcigpO1xuJiM0MztcdFx0bW1kcm9wKGt2bS1cdTAwM2VtbSk7XG4mIzQzO1x0fSBlbHNlIHtcbiYjNDM7XHRcdG1tdV9ub3RpZmllcl91bnJlZ2lzdGVyKFx1MDAyNmt2bS1cdTAwM2VtbXVfbm90aWZpZXIsIGt2bS1cdTAwM2VtbSk7XG4mIzQzO1x0fVxuIFx0LypcbiBcdCAqIEF0IHRoaXMgcG9pbnQsIHBlbmRpbmcgY2FsbHMgdG8gaW52YWxpZGF0ZV9yYW5nZV9zdGFydCgpXG4gXHQgKiBoYXZlIGNvbXBsZXRlZCBidXQgbm8gbW9yZSBNTVUgbm90aWZpZXJzIHdpbGwgcnVuLCBzb1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIzIDE1OjI5PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtLVk0mIzM0OywKICAgICYjMzQ7TU1VX05PVElGSUVSJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bW11X25vdGlmaWVyX29vbV9lbnRlciYjMzQ7LAogICAgJiMzNDttbXVfbm90aWZpZXJfYmFycmllciYjMzQ7LAogICAgJiMzNDttbXVfbm90aWZpZXJfb29tX2NhbGxiYWNrX2ZuJiMzNDssCiAgICAmIzM0O2t2bV9tbXVfbm90aWZpZXJfYWZ0ZXJfb29tX3VucmVnaXN0ZXImIzM0OywKICAgICYjMzQ7a3ZtX2Rlc3Ryb3lfdm0mIzM0OywKICAgICYjMzQ7cHJvY2Vzc19tcmVsZWFzZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IE1NVSBub3RpZmllciBjYWxsYmFjayBgYWZ0ZXJfb29tX3VucmVnaXN0ZXJgIGFuZCBhIG1lY2hhbmlzbSB0byBpbnZva2UgaXQgYXN5bmNocm9ub3VzbHkgd2hlbiBhbiBPT00gZXZlbnQgb2NjdXJzIChgbW11X25vdGlmaWVyX29vbV9lbnRlcmApLiBJdCBhbHNvIGltcGxlbWVudHMgdGhpcyBjYWxsYmFjayBmb3IgS1ZNIGFuZCBtb2RpZmllcyBga3ZtX2Rlc3Ryb3lfdm1gIHRvIGhhbmRsZSB0aGUgYXN5bmNocm9ub3VzIGNsZWFudXAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IGFuZCBLVk0sIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSB0aGVyZSBhcmUgbm8gdXNlLWFmdGVyLWZyZWUgb3IgZGVhZGxvY2sgaXNzdWVzIGR1cmluZyBPT00gaGFuZGxpbmcgb2YgVk1zLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAwMjMxMWQxODVkYmNiNmQ5ZGExNjBhOWM3MDNiYTg2Zjc3OGE0Y2ViCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBKdWwgMjMgMTU6Mjg6NTggMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L21tdV9ub3RpZmllci5oIGIvaW5jbHVkZS9saW51eC9tbXVfbm90aWZpZXIuaAppbmRleCBhMTFhNDRlZWY1MjFlOS4uYTE4MjBhNDg3ODU0ZGQgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvbW11X25vdGlmaWVyLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9tbXVfbm90aWZpZXIuaApAQCAtODgsNiAmIzQzOzg4LDE0IEBAIHN0cnVjdCBtbXVfbm90aWZpZXJfb3BzIHsKIAl2b2lkICgqcmVsZWFzZSkoc3RydWN0IG1tdV9ub3RpZmllciAqc3Vic2NyaXB0aW9uLAogCQkJc3RydWN0IG1tX3N0cnVjdCAqbW0pOwogCiYjNDM7CS8qCiYjNDM7CSAqIEFueSBtbXUgbm90aWZpZXIgdGhhdCBkZWZpbmVzIHRoaXMgaXMgYXV0b21hdGljYWxseSB1bnJlZ2lzdGVyZWQKJiM0MzsJICogd2hlbiBpdHMgbW0gaXMgdGhlIHN1YmplY3Qgb2YgYW4gT09NIGtpbGwuICBhZnRlcl9vb21fdW5yZWdpc3RlcigpCiYjNDM7CSAqIGlzIGludm9rZWQgYWZ0ZXIgYWxsIG90aGVyIG91dHN0YW5kaW5nIGNhbGxiYWNrcyBoYXZlIHRlcm1pbmF0ZWQuCiYjNDM7CSAqLwomIzQzOwl2b2lkICgqYWZ0ZXJfb29tX3VucmVnaXN0ZXIpKHN0cnVjdCBtbXVfbm90aWZpZXIgKnN1YnNjcmlwdGlvbiwKJiM0MzsJCQkJICAgICBzdHJ1Y3QgbW1fc3RydWN0ICptbSk7CiYjNDM7CiAJLyoKIAkgKiBjbGVhcl9mbHVzaF95b3VuZyBpcyBjYWxsZWQgYWZ0ZXIgdGhlIFZNIGlzCiAJICogdGVzdC1hbmQtY2xlYXJpbmcgdGhlIHlvdW5nL2FjY2Vzc2VkIGJpdGZsYWcgaW4gdGhlCkBAIC00MjQsNiAmIzQzOzQzMiw4IEBAIGJvb2wgX19tbXVfbm90aWZpZXJfY2xlYXJfeW91bmcoc3RydWN0IG1tX3N0cnVjdCAqbW0sCiAJCXVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kKTsKIGJvb2wgX19tbXVfbm90aWZpZXJfdGVzdF95b3VuZyhzdHJ1Y3QgbW1fc3RydWN0ICptbSwKIAkJdW5zaWduZWQgbG9uZyBhZGRyZXNzKTsKJiM0Mzt2b2lkIG1tdV9ub3RpZmllcl9vb21fZW50ZXIoc3RydWN0IG1tX3N0cnVjdCAqbW0pOwomIzQzO3ZvaWQgbW11X25vdGlmaWVyX2JhcnJpZXIodm9pZCk7CiBleHRlcm4gaW50IF9fbW11X25vdGlmaWVyX2ludmFsaWRhdGVfcmFuZ2Vfc3RhcnQoc3RydWN0IG1tdV9ub3RpZmllcl9yYW5nZSAqcik7CiBleHRlcm4gdm9pZCBfX21tdV9ub3RpZmllcl9pbnZhbGlkYXRlX3JhbmdlX2VuZChzdHJ1Y3QgbW11X25vdGlmaWVyX3JhbmdlICpyKTsKIGV4dGVybiB2b2lkIF9fbW11X25vdGlmaWVyX2FyY2hfaW52YWxpZGF0ZV9zZWNvbmRhcnlfdGxicyhzdHJ1Y3QgbW1fc3RydWN0ICptbSwKQEAgLTY0Myw2ICYjNDM7NjUzLDEwIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBtbXVfbm90aWZpZXJfc3luY2hyb25pemUodm9pZCkKIHsKIH0KIAomIzQzO3N0YXRpYyBpbmxpbmUgdm9pZCBtbXVfbm90aWZpZXJfb29tX2VudGVyKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tKQomIzQzO3sKJiM0Mzt9CiYjNDM7CiAjZW5kaWYgLyogQ09ORklHX01NVV9OT1RJRklFUiAqLwogCiAjZW5kaWYgLyogX0xJTlVYX01NVV9OT1RJRklFUl9IICovCmRpZmYgLS1naXQgYS9tbS9tbXVfbm90aWZpZXIuYyBiL21tL21tdV9ub3RpZmllci5jCmluZGV4IDI0NWI3NGYzOWY5MTIyLi5mMzBiZjk1ZjE3YzdhYSAxMDA2NDQKLS0tIGEvbW0vbW11X25vdGlmaWVyLmMKJiM0MzsmIzQzOyYjNDM7IGIvbW0vbW11X25vdGlmaWVyLmMKQEAgLTQ5LDYgJiM0Mzs0OSwzNyBAQCBzdHJ1Y3QgbW11X25vdGlmaWVyX3N1YnNjcmlwdGlvbnMgewogCXN0cnVjdCBobGlzdF9oZWFkIGRlZmVycmVkX2xpc3Q7CiB9OwogCiYjNDM7LyoKJiM0MzsgKiBDYWxsYmFjayBzdHJ1Y3R1cmUgZm9yIGFzeW5jaHJvbm91cyBPT00gY2xlYW51cC4KJiM0MzsgKiBVc2VkIHdpdGggY2FsbF9zcmN1KCkgdG8gZGVmZXIgYWZ0ZXJfb29tX3VucmVnaXN0ZXIgY2FsbGJhY2tzCiYjNDM7ICogdW50aWwgYWZ0ZXIgU1JDVSBncmFjZSBwZXJpb2QgY29tcGxldGVzLgomIzQzOyAqLwomIzQzO3N0cnVjdCBtbXVfbm90aWZpZXJfb29tX2NhbGxiYWNrIHsKJiM0MzsJc3RydWN0IHJjdV9oZWFkIHJjdTsKJiM0MzsJc3RydWN0IG1tdV9ub3RpZmllciAqc3Vic2NyaXB0aW9uOwomIzQzOwlzdHJ1Y3QgbW1fc3RydWN0ICptbTsKJiM0Mzt9OwomIzQzOwomIzQzOy8qCiYjNDM7ICogQ2FsbGJhY2sgZnVuY3Rpb24gaW52b2tlZCBhZnRlciBTUkNVIGdyYWNlIHBlcmlvZC4KJiM0MzsgKiBTYWZlbHkgY2FsbHMgYWZ0ZXJfb29tX3VucmVnaXN0ZXIgb25jZSBhbGwgcmVhZGVycyBoYXZlIGZpbmlzaGVkLgomIzQzOyAqLwomIzQzO3N0YXRpYyB2b2lkIG1tdV9ub3RpZmllcl9vb21fY2FsbGJhY2tfZm4oc3RydWN0IHJjdV9oZWFkICpyY3UpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgbW11X25vdGlmaWVyX29vbV9jYWxsYmFjayAqY2IgPQomIzQzOwkJY29udGFpbmVyX29mKHJjdSwgc3RydWN0IG1tdV9ub3RpZmllcl9vb21fY2FsbGJhY2ssIHJjdSk7CiYjNDM7CiYjNDM7CS8qIFNhZmUgLSBhbGwgU1JDVSByZWFkZXJzIGhhdmUgZmluaXNoZWQgKi8KJiM0MzsJY2ItJmd0O3N1YnNjcmlwdGlvbi0mZ3Q7b3BzLSZndDthZnRlcl9vb21fdW5yZWdpc3RlcihjYi0mZ3Q7c3Vic2NyaXB0aW9uLCBjYi0mZ3Q7bW0pOwomIzQzOwomIzQzOwkvKiBSZWxlYXNlIG1tIHJlZmVyZW5jZSB0YWtlbiB3aGVuIGNhbGxiYWNrIHdhcyBzY2hlZHVsZWQgKi8KJiM0MzsJV0FSTl9PTl9PTkNFKGF0b21pY19yZWFkKCZhbXA7Y2ItJmd0O21tLSZndDttbV9jb3VudCkgJmx0Oz0gMCk7CiYjNDM7CW1tZHJvcChjYi0mZ3Q7bW0pOwomIzQzOwomIzQzOwkvKiBGcmVlIGNhbGxiYWNrIHN0cnVjdHVyZSAqLwomIzQzOwlrZnJlZShjYik7CiYjNDM7fQomIzQzOwogLyoKICAqIFRoaXMgaXMgYSBjb2xsaXNpb24tcmV0cnkgcmVhZC1zaWRlL3dyaXRlLXNpZGUgJiMzOTtsb2NrJiMzOTssIGEgbG90IGxpa2UgYQogICogc2VxY291bnQsIGhvd2V2ZXIgdGhpcyBhbGxvd3MgbXVsdGlwbGUgd3JpdGUtc2lkZXMgdG8gaG9sZCBpdCBhdApAQCAtMzg1LDYgJiM0Mzs0MTYsODQgQEAgdm9pZCBfX21tdV9ub3RpZmllcl9yZWxlYXNlKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tKQogCQltbl9obGlzdF9yZWxlYXNlKHN1YnNjcmlwdGlvbnMsIG1tKTsKIH0KIAomIzQzO3ZvaWQgbW11X25vdGlmaWVyX29vbV9lbnRlcihzdHJ1Y3QgbW1fc3RydWN0ICptbSkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBtbXVfbm90aWZpZXJfc3Vic2NyaXB0aW9ucyAqc3Vic2NyaXB0aW9ucyA9CiYjNDM7CQkJCQkJbW0tJmd0O25vdGlmaWVyX3N1YnNjcmlwdGlvbnM7CiYjNDM7CXN0cnVjdCBtbXVfbm90aWZpZXIgKnN1YnNjcmlwdGlvbjsKJiM0MzsJc3RydWN0IGhsaXN0X25vZGUgKnRtcDsKJiM0MzsJSExJU1RfSEVBRChvb21fbGlzdCk7CiYjNDM7CWludCBpZDsKJiM0MzsKJiM0MzsJaWYgKCFzdWJzY3JpcHRpb25zKQomIzQzOwkJcmV0dXJuOwomIzQzOwomIzQzOwlpZCA9IHNyY3VfcmVhZF9sb2NrKCZhbXA7c3JjdSk7CiYjNDM7CiYjNDM7CS8qCiYjNDM7CSAqIFByZXZlbnQgZnVydGhlciBjYWxscyB0byB0aGUgTU1VIG5vdGlmaWVyLCBleGNlcHQgZm9yCiYjNDM7CSAqIHJlbGVhc2UgYW5kIGFmdGVyX29vbV91bnJlZ2lzdGVyLgomIzQzOwkgKi8KJiM0MzsJc3Bpbl9sb2NrKCZhbXA7c3Vic2NyaXB0aW9ucy0mZ3Q7bG9jayk7CiYjNDM7CWhsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoc3Vic2NyaXB0aW9uLCB0bXAsCiYjNDM7CQkJCSAgJmFtcDtzdWJzY3JpcHRpb25zLSZndDtsaXN0LCBobGlzdCkgewomIzQzOwkJaWYgKCFzdWJzY3JpcHRpb24tJmd0O29wcy0mZ3Q7YWZ0ZXJfb29tX3VucmVnaXN0ZXIpCiYjNDM7CQkJY29udGludWU7CiYjNDM7CiYjNDM7CQkvKgomIzQzOwkJICogYWZ0ZXJfb29tX3VucmVnaXN0ZXIgYW5kIGFsbG9jX25vdGlmaWVyIGFyZSBpbmNvbXBhdGlibGUsCiYjNDM7CQkgKiBiZWNhdXNlIHRoZXJlIGNvdWxkIGJlIG90aGVyIHJlZmVyZW5jZXMgdG8gYWxsb2NhdGVkCiYjNDM7CQkgKiBub3RpZmllcnMuCiYjNDM7CQkgKi8KJiM0MzsJCWlmIChXQVJOX09OKHN1YnNjcmlwdGlvbi0mZ3Q7b3BzLSZndDthbGxvY19ub3RpZmllcikpCiYjNDM7CQkJY29udGludWU7CiYjNDM7CiYjNDM7CQlobGlzdF9kZWxfaW5pdF9yY3UoJmFtcDtzdWJzY3JpcHRpb24tJmd0O2hsaXN0KTsKJiM0MzsJCWhsaXN0X2FkZF9oZWFkKCZhbXA7c3Vic2NyaXB0aW9uLSZndDtobGlzdCwgJmFtcDtvb21fbGlzdCk7CiYjNDM7CX0KJiM0MzsJc3Bpbl91bmxvY2soJmFtcDtzdWJzY3JpcHRpb25zLSZndDtsb2NrKTsKJiM0MzsJaGxpc3RfZm9yX2VhY2hfZW50cnkoc3Vic2NyaXB0aW9uLCAmYW1wO29vbV9saXN0LCBobGlzdCkKJiM0MzsJCWlmIChzdWJzY3JpcHRpb24tJmd0O29wcy0mZ3Q7cmVsZWFzZSkKJiM0MzsJCQlzdWJzY3JpcHRpb24tJmd0O29wcy0mZ3Q7cmVsZWFzZShzdWJzY3JpcHRpb24sIG1tKTsKJiM0MzsKJiM0MzsJc3JjdV9yZWFkX3VubG9jaygmYW1wO3NyY3UsIGlkKTsKJiM0MzsKJiM0MzsJaWYgKGhsaXN0X2VtcHR5KCZhbXA7b29tX2xpc3QpKQomIzQzOwkJcmV0dXJuOwomIzQzOwomIzQzOwlobGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHN1YnNjcmlwdGlvbiwgdG1wLAomIzQzOwkJCQkgICZhbXA7b29tX2xpc3QsIGhsaXN0KSB7CiYjNDM7CQlzdHJ1Y3QgbW11X25vdGlmaWVyX29vbV9jYWxsYmFjayAqY2I7CiYjNDM7CQkvKgomIzQzOwkJICogUmVtb3ZlIGZyb20gc3RhY2stYmFzZWQgb29tX2xpc3QgYW5kIHJlc2V0IGhsaXN0IHRvIHVuaGFzaGVkIHN0YXRlLgomIzQzOwkJICogVGhpcyBzZXRzIHN1YnNjcmlwdGlvbi0mZ3Q7aGxpc3QucHByZXYgPSBOVUxMLCBzbyBmdXR1cmUgY2FsbGVycyBvZgomIzQzOwkJICogbW11X25vdGlmaWVyX3VucmVnaXN0ZXIoKSAoZS5nLiBrdm1fZGVzdHJveV92bSkgd2lsbCBzZWUKJiM0MzsJCSAqIGhsaXN0X3VuaGFzaGVkKCkgPT0gdHJ1ZSBhbmQgdGFrZSB0aGUgc2FmZSBwYXRoLCBhdm9pZGluZwomIzQzOwkJICogdXNlLWFmdGVyLWZyZWUgb24gdGhlIHN0YWNrLWFsbG9jYXRlZCBvb21fbGlzdCBoZWFkLgomIzQzOwkJICovCiYjNDM7CQlobGlzdF9kZWxfaW5pdCgmYW1wO3N1YnNjcmlwdGlvbi0mZ3Q7aGxpc3QpOwomIzQzOwomIzQzOwkJLyoKJiM0MzsJCSAqIEdGUF9BVE9NSUMgZmFpbHVyZSBpcyBleGNlZWRpbmdseSByYXJlLiBXZSBjYW5ub3Qgc2xlZXAKJiM0MzsJCSAqIGhlcmUgKHdvdWxkIHJlaW50cm9kdWNlIHRoZSBkZWFkbG9jayB0aGlzIHBhdGNoIGZpeGVzKQomIzQzOwkJICogYW5kIGNhbm5vdCBjYWxsIGFmdGVyX29vbV91bnJlZ2lzdGVyIHN5bmNocm9ub3VzbHkKJiM0MzsJCSAqIHdpdGhvdXQgZmlyc3Qgd2FpdGluZyBmb3IgU1JDVSByZWFkZXJzLiBUaGUgc3Vic2NyaWJlcgomIzQzOwkJICogd2lsbCBub3QgcmVjZWl2ZSBhZnRlcl9vb21fdW5yZWdpc3RlciBidXQgY2xlYW51cCB3aWxsCiYjNDM7CQkgKiBldmVudHVhbGx5IGhhcHBlbiB2aWEgdGhlIHVucmVnaXN0ZXIgcGF0aC4KJiM0MzsJCSAqLwomIzQzOwkJY2IgPSBrbWFsbG9jX29iaigqY2IsIEdGUF9BVE9NSUMpOwomIzQzOwkJaWYgKCFjYikKJiM0MzsJCQljb250aW51ZTsKJiM0MzsKJiM0MzsJCWNiLSZndDtzdWJzY3JpcHRpb24gPSBzdWJzY3JpcHRpb247CiYjNDM7CQljYi0mZ3Q7bW0gPSBtbTsKJiM0MzsJCW1tZ3JhYihtbSk7CiYjNDM7CiYjNDM7CQkvKiBTY2hlZHVsZSBjYWxsYmFjayAtIHJldHVybnMgaW1tZWRpYXRlbHkgKi8KJiM0MzsJCWNhbGxfc3JjdSgmYW1wO3NyY3UsICZhbXA7Y2ItJmd0O3JjdSwgbW11X25vdGlmaWVyX29vbV9jYWxsYmFja19mbik7CiYjNDM7CX0KJiM0Mzt9CiYjNDM7CiAvKgogICogSWYgbm8geW91bmcgYml0ZmxhZyBpcyBzdXBwb3J0ZWQgYnkgdGhlIGhhcmR3YXJlLCAtJmd0O2NsZWFyX2ZsdXNoX3lvdW5nIGNhbgogICogdW5tYXAgdGhlIGFkZHJlc3MgYW5kIHJldHVybiAxIG9yIDAgZGVwZW5kaW5nIGlmIHRoZSBtYXBwaW5nIHByZXZpb3VzbHkKQEAgLTExNDQsMyAmIzQzOzEyNTMsMTYgQEAgdm9pZCBtbXVfbm90aWZpZXJfc3luY2hyb25pemUodm9pZCkKIAlzeW5jaHJvbml6ZV9zcmN1KCZhbXA7c3JjdSk7CiB9CiBFWFBPUlRfU1lNQk9MX0dQTChtbXVfbm90aWZpZXJfc3luY2hyb25pemUpOwomIzQzOwomIzQzOy8qKgomIzQzOyAqIG1tdV9ub3RpZmllcl9iYXJyaWVyIC0gV2FpdCBmb3IgYWxsIHBlbmRpbmcgTU1VIG5vdGlmaWVyIGNhbGxiYWNrcwomIzQzOyAqCiYjNDM7ICogV2FpdHMgZm9yIGFsbCBjYWxsX3NyY3UoKSBjYWxsYmFja3Mgc2NoZWR1bGVkIGJ5IG1tdV9ub3RpZmllcl9vb21fZW50ZXIoKQomIzQzOyAqIHRvIGNvbXBsZXRlLiBVc2VkIGJ5IHN1YnN5c3RlbXMgZHVyaW5nIGNsZWFudXAgdG8gcHJldmVudCB1c2UtYWZ0ZXItZnJlZQomIzQzOyAqIHdoZW4gZGVzdHJveWluZyBzdHJ1Y3R1cmVzIGFjY2Vzc2VkIGJ5IHRoZSBjYWxsYmFja3MuCiYjNDM7ICovCiYjNDM7dm9pZCBtbXVfbm90aWZpZXJfYmFycmllcih2b2lkKQomIzQzO3sKJiM0MzsJc3JjdV9iYXJyaWVyKCZhbXA7c3JjdSk7CiYjNDM7fQomIzQzO0VYUE9SVF9TWU1CT0xfR1BMKG1tdV9ub3RpZmllcl9iYXJyaWVyKTsKZGlmZiAtLWdpdCBhL21tL29vbV9raWxsLmMgYi9tbS9vb21fa2lsbC5jCmluZGV4IDVmMzcyZjZlMjZmYTMyLi42NmFkY2QwM2YzNmE4ZSAxMDA2NDQKLS0tIGEvbW0vb29tX2tpbGwuYwomIzQzOyYjNDM7JiM0MzsgYi9tbS9vb21fa2lsbC5jCkBAIC01MTYsNiAmIzQzOzUxNiw5IEBAIHN0YXRpYyBib29sIF9fb29tX3JlYXBfdGFza19tbShzdHJ1Y3QgbW1fc3RydWN0ICptbSkKIAlib29sIHJldCA9IHRydWU7CiAJTUFfU1RBVEUobWFzLCAmYW1wO21tLSZndDttbV9tdCwgVUxPTkdfTUFYLCBVTE9OR19NQVgpOwogCiYjNDM7CS8qIE5vdGlmeSBNTVUgbm90aWZpZXJzIGFib3V0IHRoZSBPT00gZXZlbnQgKi8KJiM0MzsJbW11X25vdGlmaWVyX29vbV9lbnRlcihtbSk7CiYjNDM7CiAJLyoKIAkgKiBUZWxsIGFsbCB1c2VycyBvZiBnZXRfdXNlci9jb3B5X2Zyb21fdXNlciBldGMuLi4gdGhhdCB0aGUgY29udGVudAogCSAqIGlzIG5vIGxvbmdlciBzdGFibGUuIE5vIGJhcnJpZXJzIHJlYWxseSBuZWVkZWQgYmVjYXVzZSB1bm1hcHBpbmcKZGlmZiAtLWdpdCBhL3ZpcnQva3ZtL2t2bV9tYWluLmMgYi92aXJ0L2t2bS9rdm1fbWFpbi5jCmluZGV4IGU0NGMyMGMwNDk2MTBkLi43OWE0ZGY4YTMzN2EyZCAxMDA2NDQKLS0tIGEvdmlydC9rdm0va3ZtX21haW4uYwomIzQzOyYjNDM7JiM0MzsgYi92aXJ0L2t2bS9rdm1fbWFpbi5jCkBAIC04NzUsNiAmIzQzOzg3NSwyNCBAQCBzdGF0aWMgdm9pZCBrdm1fbW11X25vdGlmaWVyX3JlbGVhc2Uoc3RydWN0IG1tdV9ub3RpZmllciAqbW4sCiAJc3JjdV9yZWFkX3VubG9jaygmYW1wO2t2bS0mZ3Q7c3JjdSwgaWR4KTsKIH0KIAomIzQzO3N0YXRpYyB2b2lkIGt2bV9tbXVfbm90aWZpZXJfYWZ0ZXJfb29tX3VucmVnaXN0ZXIoc3RydWN0IG1tdV9ub3RpZmllciAqbW4sCiYjNDM7CQkJCQkJICBzdHJ1Y3QgbW1fc3RydWN0ICptbSkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBrdm0gKmt2bTsKJiM0MzsKJiM0MzsJa3ZtID0gbW11X25vdGlmaWVyX3RvX2t2bShtbik7CiYjNDM7CiYjNDM7CS8qCiYjNDM7CSAqIEF0IHRoaXMgcG9pbnQgdGhlIHVucmVnaXN0ZXIgaGFzIGNvbXBsZXRlZCBhbmQgYWxsIG90aGVyIGNhbGxiYWNrcwomIzQzOwkgKiBoYXZlIHRlcm1pbmF0ZWQuIENsZWFuIHVwIGFueSB1bmJhbGFuY2VkIGludmFsaWRhdGlvbiBjb3VudHMuCiYjNDM7CSAqLwomIzQzOwlXQVJOX09OKHJjdXdhaXRfYWN0aXZlKCZhbXA7a3ZtLSZndDttbl9tZW1zbG90c191cGRhdGVfcmN1d2FpdCkpOwomIzQzOwlpZiAoa3ZtLSZndDttbl9hY3RpdmVfaW52YWxpZGF0ZV9jb3VudCkKJiM0MzsJCWt2bS0mZ3Q7bW5fYWN0aXZlX2ludmFsaWRhdGVfY291bnQgPSAwOwomIzQzOwllbHNlCiYjNDM7CQlXQVJOX09OKGt2bS0mZ3Q7bW11X2ludmFsaWRhdGVfaW5fcHJvZ3Jlc3MpOwomIzQzO30KJiM0MzsKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbW11X25vdGlmaWVyX29wcyBrdm1fbW11X25vdGlmaWVyX29wcyA9IHsKIAkuaW52YWxpZGF0ZV9yYW5nZV9zdGFydAk9IGt2bV9tbXVfbm90aWZpZXJfaW52YWxpZGF0ZV9yYW5nZV9zdGFydCwKIAkuaW52YWxpZGF0ZV9yYW5nZV9lbmQJPSBrdm1fbW11X25vdGlmaWVyX2ludmFsaWRhdGVfcmFuZ2VfZW5kLApAQCAtODgyLDYgJiM0Mzs5MDAsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG1tdV9ub3RpZmllcl9vcHMga3ZtX21tdV9ub3RpZmllcl9vcHMgPSB7CiAJLmNsZWFyX3lvdW5nCQk9IGt2bV9tbXVfbm90aWZpZXJfY2xlYXJfeW91bmcsCiAJLnRlc3RfeW91bmcJCT0ga3ZtX21tdV9ub3RpZmllcl90ZXN0X3lvdW5nLAogCS5yZWxlYXNlCQk9IGt2bV9tbXVfbm90aWZpZXJfcmVsZWFzZSwKJiM0MzsJLmFmdGVyX29vbV91bnJlZ2lzdGVyCT0ga3ZtX21tdV9ub3RpZmllcl9hZnRlcl9vb21fdW5yZWdpc3RlciwKIH07CiAKIHN0YXRpYyBpbnQga3ZtX2luaXRfbW11X25vdGlmaWVyKHN0cnVjdCBrdm0gKmt2bSkKQEAgLTEyNzMsNyAmIzQzOzEyOTIsMTMgQEAgc3RhdGljIHZvaWQga3ZtX2Rlc3Ryb3lfdm0oc3RydWN0IGt2bSAqa3ZtKQogCQlrdm0tJmd0O2J1c2VzW2ldID0gTlVMTDsKIAl9CiAJa3ZtX2NvYWxlc2NlZF9tbWlvX2ZyZWUoa3ZtKTsKLQltbXVfbm90aWZpZXJfdW5yZWdpc3RlcigmYW1wO2t2bS0mZ3Q7bW11X25vdGlmaWVyLCBrdm0tJmd0O21tKTsKJiM0MzsJaWYgKGhsaXN0X3VuaGFzaGVkKCZhbXA7a3ZtLSZndDttbXVfbm90aWZpZXIuaGxpc3QpKSB7CiYjNDM7CQkvKiBTdWJzY3JpcHRpb24gcmVtb3ZlZCBieSBPT00uIFdhaXQgZm9yIGFzeW5jIGNhbGxiYWNrLiAqLwomIzQzOwkJbW11X25vdGlmaWVyX2JhcnJpZXIoKTsKJiM0MzsJCW1tZHJvcChrdm0tJmd0O21tKTsKJiM0MzsJfSBlbHNlIHsKJiM0MzsJCW1tdV9ub3RpZmllcl91bnJlZ2lzdGVyKCZhbXA7a3ZtLSZndDttbXVfbm90aWZpZXIsIGt2bS0mZ3Q7bW0pOwomIzQzOwl9CiAJLyoKIAkgKiBBdCB0aGlzIHBvaW50LCBwZW5kaW5nIGNhbGxzIHRvIGludmFsaWRhdGVfcmFuZ2Vfc3RhcnQoKQogCSAqIGhhdmUgY29tcGxldGVkIGJ1dCBubyBtb3JlIE1NVSBub3RpZmllcnMgd2lsbCBydW4sIHNvCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIzIDE1OjI5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ3NzkKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiAzMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqUGF0Y2ggU2VyaWVzIEV2YWx1YXRpb246IEEgS1ZNIGFuZCBPT00gS2lsbGVyIEludGVncmF0aW9uKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcyBwYXRjaCBzZXJpZXMuIE15IGluaXRpYWwgaW1wcmVzc2lvbiBpcyB0aGF0IHRoaXMgaXMgYSBwb3RlbnRpYWxseSBzaWduaWZpY2FudCBmdW5jdGlvbmFsIGNoYW5nZSB0b3VjaGluZyB1cG9uIHRoZSBjb3JlIGtlcm5lbCBjb21wb25lbnRzOiBNTVUgbm90aWZpZXJzLCB0aGUgT09NIGtpbGxlciwgYW5kLCBpbXBvcnRhbnRseSwgS1ZNLiBUaGUgbW9kaWZpY2F0aW9ucyBzcGFuIHNldmVyYWwga2V5IGZpbGVzIOKAkyBgaW5jbHVkZS9saW51eC9tbXVfbm90aWZpZXIuaGAsIGBtbS9tbXVfbm90aWZpZXIuY2AsIGBtbS9vb21fa2lsbC5jYCwgYW5kIGB2aXJ0L2t2bS9rdm1fbWFpbi5jYCDigJMgd2hpY2ggaW1tZWRpYXRlbHkgZmxhZ3MgdGhpcyBhcyBzb21ldGhpbmcgd2FycmFudGluZyBhIHRob3JvdWdoIHJldmlldy4KClNwZWNpZmljYWxseSwgaXQgbG9va3MgbGlrZSBhIG5ldyBgbW11X25vdGlmaWVyYCBjYWxsYmFjaywgYGFmdGVyX29vbV91bnJlZ2lzdGVyYCwgaGFzIGJlZW4gaW50cm9kdWNlZC4gVGhpcyBpbXBsaWVzIGEgbmV3IGludGVyYWN0aW9uIHBvaW50IHdpdGhpbiB0aGUgTU1VIG5vdGlmaWVyIGZyYW1ld29yaywgdHJpZ2dlcmVkIGFmdGVyIGFuIE9PTSBzY2VuYXJpby4gQWRkaXRpb25hbGx5LCB0aGUgbmV3IGZ1bmN0aW9uIGBtbXVfbm90aWZpZXJfb29tX2VudGVyKClgIGlzIGNhbGxlZCB3aXRoaW4gYF9fb29tX3JlYXBfdGFza19tbSgpYCwgaW5kaWNhdGluZyBhIHRpZ2h0ZXIgaW50ZWdyYXRpb24gYmV0d2VlbiB0aGUgT09NIGtpbGxlciBhbmQgdGhlIE1NVSBub3RpZmllciBpbmZyYXN0cnVjdHVyZS4gVGhlIGluY2x1c2lvbiBvZiBgbW11X25vdGlmaWVyX2JhcnJpZXIoKWAgZnVydGhlciBzdWdnZXN0cyBzeW5jaHJvbml6YXRpb24gY29uY2VybnMgdGhhdCB3aWxsIG5lZWQgY2FyZWZ1bCBzY3J1dGlueS4KCkZvciBLVk0sIHRoZSBwYXRjaCBpbXBsZW1lbnRzIGBhZnRlcl9vb21fdW5yZWdpc3RlcmAgd2l0aGluIGBrdm1fbWFpbi5jYC4gVGhpcyBpcyBwYXJ0aWN1bGFybHkgaW50ZXJlc3RpbmcgYmVjYXVzZSBpdCBzdWdnZXN0cyBhIHdheSBmb3IgS1ZNIHRvIGJlIGluZm9ybWVkIGFmdGVyIGFuIE9PTSBldmVudCBhbmQgcG90ZW50aWFsbHkgcGVyZm9ybSBjbGVhbnVwIG9yIHJlY292ZXJ5IG9wZXJhdGlvbnMgcmVsYXRlZCB0byBpdHMgdmlydHVhbCBtYWNoaW5lcy4KCkdpdmVuIHRoZSBzY29wZSBvZiB0aGVzZSBjaGFuZ2VzLCBJJiMzOTttIGFscmVhZHkgdGhpbmtpbmcgYWJvdXQgZnV6emluZyB0aGlzIHRob3JvdWdobHkuIFRoZSBpbnRlcnBsYXkgYmV0d2VlbiB0aGUgT09NIGtpbGxlciBhbmQgS1ZNIGlzIGNvbXBsZXgsIGFuZCB1bmV4cGVjdGVkIGludGVyYWN0aW9ucyBjb3VsZCBsZWFkIHRvIHN0YWJpbGl0eSBpc3N1ZXMuCgpOb3csIGxldCYjMzk7cyBtb3ZlIG9udG8gdGhlIGNvbmZpZ3VyYXRpb24gcmVxdWlyZW1lbnRzLiBUaGUgcmVsZXZhbnQgY29kZSBpbiBgbW0vbW11X25vdGlmaWVyLmNgIHdpbGwgbmF0dXJhbGx5IG9ubHkgYmUgY29tcGlsZWQgaWYgYENPTkZJR19NTVVfTk9USUZJRVJgIGlzIGVuYWJsZWQuIFRoZSBLVk0tc3BlY2lmaWMgY29kZSBpbiBgdmlydC9rdm0va3ZtX21haW4uY2Agb2J2aW91c2x5IHJlcXVpcmVzIGBDT05GSUdfS1ZNYC4gVGhlIGNvZGUgaW4gYG1tL29vbV9raWxsLmNgLCBob3dldmVyLCBzZWVtcyB0byBhbHdheXMgYmUgY29tcGlsZWQgKG9yIHBlcmhhcHMgaGFzIHNvbWUgaW1wbGljaXQgZGVwZW5kZW5jeSBvbiBgQ09ORklHX01NVWApLiBMZXQmIzM5O3MgZG91YmxlIGNoZWNrIHRoYXQgYXNzdW1wdGlvbnMgYXJlIGNvcnJlY3Q7IEkmIzM5O2xsIHVzZSBgZ3JlcHBlcmAgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgc3VidGxlIGNvbmZpZ3VyYXRpb25zIHRoYXQgd2UgbmVlZCB0byBiZSBhd2FyZSBvZi4gSSYjMzk7bGwgZm9jdXMgb24gYENPTkZJR19NTVVfTk9USUZJRVJgIGFuZCBgQ09ORklHX0tWTWAgZm9yIHRoZSBpbml0aWFsIHNlYXJjaCB0byBzZWUgaWYgYW55IG90aGVyIGRlcGVuZGVuY2llcyBjb21lIHVwLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIzIDE1OjI5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0NPTkZJR19NTVVfTk9USUZJRVImIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9kbWEtYnVmL2RtYS1yZXN2LmM9Nzc1PXN0YXRpYyBpbnQgX19pbml0IGRtYV9yZXN2X2xvY2tkZXAodm9pZClcbi0tXG5kcml2ZXJzL2RtYS1idWYvZG1hLXJlc3YuYy04MDAtXHRpX21tYXBfdW5sb2NrX3dyaXRlKFx1MDAyNm1hcHBpbmcpO1xuZHJpdmVycy9kbWEtYnVmL2RtYS1yZXN2LmM6ODAxOiNpZmRlZiBDT05GSUdfTU1VX05PVElGSUVSXG5kcml2ZXJzL2RtYS1idWYvZG1hLXJlc3YuYy04MDItXHRsb2NrX21hcF9hY3F1aXJlKFx1MDAyNl9fbW11X25vdGlmaWVyX2ludmFsaWRhdGVfcmFuZ2Vfc3RhcnRfbWFwKTtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfb2JqZWN0LmgtMzQtXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfb2JqZWN0Lmg6MzU6I2lmZGVmIENPTkZJR19NTVVfTk9USUZJRVJcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9vYmplY3QuaC0zNi0jaW5jbHVkZSBcdTAwM2NsaW51eC9tbXVfbm90aWZpZXIuaFx1MDAzZVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9vYmplY3QuaD0xMDM9c3RydWN0IGFtZGdwdV9ibyB7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X29iamVjdC5oLTExNi1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9vYmplY3QuaDoxMTc6I2lmZGVmIENPTkZJR19NTVVfTk9USUZJRVJcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9vYmplY3QuaC0xMTgtXHRzdHJ1Y3QgbW11X2ludGVydmFsX25vdGlmaWVyXHRub3RpZmllcjtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9LY29uZmlnPTExND1jb25maWcgRFJNX0k5MTVfVVNFUlBUUlxuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L0tjb25maWctMTE5LVx0aGVscFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvS2NvbmZpZzoxMjA6XHQgIFRoaXMgb3B0aW9uIHNlbGVjdHMgQ09ORklHX01NVV9OT1RJRklFUiBpZiBpdCBpc24mIzM5O3QgYWxyZWFkeVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvS2NvbmZpZy0xMjEtXHQgIHNlbGVjdGVkIHRvIGVuYWJsZWQgZnVsbCB1c2VycHRyIHN1cHBvcnQuXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2V4ZWNidWZmZXIuYz0yMDgwPXN0YXRpYyBpbnQgZWJfbW92ZV90b19ncHUoc3RydWN0IGk5MTVfZXhlY2J1ZmZlciAqZWIpXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2V4ZWNidWZmZXIuYy0yMTQ0LVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2V4ZWNidWZmZXIuYzoyMTQ1OiNpZmRlZiBDT05GSUdfTU1VX05PVElGSUVSXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fZXhlY2J1ZmZlci5jLTIxNDYtXHRpZiAoIWVyciBcdTAwMjZcdTAwMjYgKGViLVx1MDAzZWFyZ3MtXHUwMDNlZmxhZ3MgXHUwMDI2IF9fRVhFQ19VU0VSUFRSX1VTRUQpKSB7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX29iamVjdC5oPTg1Mz12b2lkIF9fc2htZW1fd3JpdGViYWNrKHNpemVfdCBzaXplLCBzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZyk7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fb2JqZWN0LmgtODU0LVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX29iamVjdC5oOjg1NTojaWZkZWYgQ09ORklHX01NVV9OT1RJRklFUlxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX29iamVjdC5oLTg1Ni1zdGF0aWMgaW5saW5lIGJvb2xcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fb2JqZWN0X3R5cGVzLmg9MjM5PXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0IHtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fb2JqZWN0X3R5cGVzLmgtNzEzLVx0dW5pb24ge1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX29iamVjdF90eXBlcy5oOjcxNDojaWZkZWYgQ09ORklHX01NVV9OT1RJRklFUlxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX29iamVjdF90eXBlcy5oLTcxNS1cdFx0c3RydWN0IGk5MTVfZ2VtX3VzZXJwdHIge1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV91c2VycHRyLmMtNDctXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fdXNlcnB0ci5jOjQ4OiNpZmRlZiBDT05GSUdfTU1VX05PVElGSUVSXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fdXNlcnB0ci5jLTQ5LVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV91c2VycHRyLmM9NDYyPWk5MTVfZ2VtX3VzZXJwdHJfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fdXNlcnB0ci5jLTUxOC1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV91c2VycHRyLmM6NTE5OiNpZmRlZiBDT05GSUdfTU1VX05PVElGSUVSXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fdXNlcnB0ci5jLTUyMC1cdG9iaiA9IGk5MTVfZ2VtX29iamVjdF9hbGxvYygpO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9yYWRlb24vS2NvbmZpZz0zOD1jb25maWcgRFJNX1JBREVPTl9VU0VSUFRSXG4tLVxuZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9LY29uZmlnLTQyLVx0aGVscFxuZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9LY29uZmlnOjQzOlx0ICBUaGlzIG9wdGlvbiBzZWxlY3RzIENPTkZJR19NTVVfTk9USUZJRVIgaWYgaXQgaXNuJiMzOTt0IGFscmVhZHlcbmRyaXZlcnMvZ3B1L2RybS9yYWRlb24vS2NvbmZpZy00NC1cdCAgc2VsZWN0ZWQgdG8gZW5hYmxlZCBmdWxsIHVzZXJwdHIgc3VwcG9ydC5cbi0tXG5kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL01ha2VmaWxlPTM0PXJhZGVvbi15ICYjNDM7PSByYWRlb25fZGV2aWNlLm8gcmFkZW9uX2FzaWMubyByYWRlb25fa21zLm8gXFxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL01ha2VmaWxlLTUzLVxuZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9NYWtlZmlsZTo1NDpyYWRlb24tJChDT05GSUdfTU1VX05PVElGSUVSKSAmIzQzOz0gcmFkZW9uX21uLm9cbmRyaXZlcnMvZ3B1L2RybS9yYWRlb24vTWFrZWZpbGUtNTUtXG4tLVxuZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb24uaC03MS1cbmRyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uLmg6NzI6I2lmZGVmIENPTkZJR19NTVVfTk9USUZJRVJcbmRyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uLmgtNzMtI2luY2x1ZGUgXHUwMDNjbGludXgvbW11X25vdGlmaWVyLmhcdTAwM2Vcbi0tXG5kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbi5oPTQ4Mz1zdHJ1Y3QgcmFkZW9uX2JvIHtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbi5oLTUwNi1cbmRyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uLmg6NTA3OiNpZmRlZiBDT05GSUdfTU1VX05PVElGSUVSXG5kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbi5oLTUwOC1cdHN0cnVjdCBtbXVfaW50ZXJ2YWxfbm90aWZpZXJcdG5vdGlmaWVyO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uLmg9MTc3Nj12b2lkIHJhZGVvbl90ZXN0X3N5bmNpbmcoc3RydWN0IHJhZGVvbl9kZXZpY2UgKnJkZXYpO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uLmgtMTc4MC0gKi9cbmRyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uLmg6MTc4MTojaWYgZGVmaW5lZChDT05GSUdfTU1VX05PVElGSUVSKVxuZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb24uaC0xNzgyLWludCByYWRlb25fbW5fcmVnaXN0ZXIoc3RydWN0IHJhZGVvbl9ibyAqYm8sIHVuc2lnbmVkIGxvbmcgYWRkcik7XG4tLVxuaW5jbHVkZS9saW51eC9tbV90eXBlcy5oPTExNjA9c3RydWN0IG1tX3N0cnVjdCB7XG4tLVxuaW5jbHVkZS9saW51eC9tbV90eXBlcy5oLTEzMjgtXHRcdHN0cnVjdCBmaWxlIF9fcmN1ICpleGVfZmlsZTtcbmluY2x1ZGUvbGludXgvbW1fdHlwZXMuaDoxMzI5OiNpZmRlZiBDT05GSUdfTU1VX05PVElGSUVSXG5pbmNsdWRlL2xpbnV4L21tX3R5cGVzLmgtMTMzMC1cdFx0c3RydWN0IG1tdV9ub3RpZmllcl9zdWJzY3JpcHRpb25zICpub3RpZmllcl9zdWJzY3JpcHRpb25zO1xuLS1cbmluY2x1ZGUvbGludXgvbW11X25vdGlmaWVyLmg9Mjk4PXN0cnVjdCBtbXVfaW50ZXJ2YWxfbm90aWZpZXIge1xuLS1cbmluY2x1ZGUvbGludXgvbW11X25vdGlmaWVyLmgtMzA1LVxuaW5jbHVkZS9saW51eC9tbXVfbm90aWZpZXIuaDozMDY6I2lmZGVmIENPTkZJR19NTVVfTk9USUZJRVJcbmluY2x1ZGUvbGludXgvbW11X25vdGlmaWVyLmgtMzA3LVxuLS1cbmluY2x1ZGUvbGludXgvbW11X25vdGlmaWVyLmg9NTU3PXN0YXRpYyBpbmxpbmUgdm9pZCBtbXVfbm90aWZpZXJfcmFuZ2VfaW5pdF9vd25lcihcbi0tXG5pbmNsdWRlL2xpbnV4L21tdV9ub3RpZmllci5oLTU2Ni1cbmluY2x1ZGUvbGludXgvbW11X25vdGlmaWVyLmg6NTY3OiNlbHNlIC8qIENPTkZJR19NTVVfTk9USUZJRVIgKi9cbmluY2x1ZGUvbGludXgvbW11X25vdGlmaWVyLmgtNTY4LVxuLS1cbmluY2x1ZGUvbGludXgvbW11X25vdGlmaWVyLmg9NjU2PXN0YXRpYyBpbmxpbmUgdm9pZCBtbXVfbm90aWZpZXJfb29tX2VudGVyKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tKVxuLS1cbmluY2x1ZGUvbGludXgvbW11X25vdGlmaWVyLmgtNjU5LVxuaW5jbHVkZS9saW51eC9tbXVfbm90aWZpZXIuaDo2NjA6I2VuZGlmIC8qIENPTkZJR19NTVVfTk9USUZJRVIgKi9cbmluY2x1ZGUvbGludXgvbW11X25vdGlmaWVyLmgtNjYxLVxuLS1cbm1tL01ha2VmaWxlPTg4PW9iai0kKENPTkZJR19TUEFSU0VNRU1fVk1FTU1BUCkgJiM0Mzs9IHNwYXJzZS12bWVtbWFwLm9cbm1tL01ha2VmaWxlOjg5Om9iai0kKENPTkZJR19NTVVfTk9USUZJRVIpICYjNDM7PSBtbXVfbm90aWZpZXIub1xubW0vTWFrZWZpbGUtOTAtb2JqLSQoQ09ORklHX0tTTSkgJiM0Mzs9IGtzbS5vXG4tLVxubW0vZGVidWcuYz0xNzU9dm9pZCBkdW1wX21tKGNvbnN0IHN0cnVjdCBtbV9zdHJ1Y3QgKm1tKVxuLS1cbm1tL2RlYnVnLmMtMTkyLVx0XHRcJiMzNDtleGVfZmlsZSAlcHhcXG5cJiMzNDtcbm1tL2RlYnVnLmM6MTkzOiNpZmRlZiBDT05GSUdfTU1VX05PVElGSUVSXG5tbS9kZWJ1Zy5jLTE5NC1cdFx0XCYjMzQ7bm90aWZpZXJfc3Vic2NyaXB0aW9ucyAlcHhcXG5cJiMzNDtcbi0tXG5tbS9kZWJ1Zy5jLTIyMS1cdFx0bW0tXHUwMDNlZXhlX2ZpbGUsXG5tbS9kZWJ1Zy5jOjIyMjojaWZkZWYgQ09ORklHX01NVV9OT1RJRklFUlxubW0vZGVidWcuYy0yMjMtXHRcdG1tLVx1MDAzZW5vdGlmaWVyX3N1YnNjcmlwdGlvbnMsXG4tLVxubW0vaW50ZXJuYWwuaD0xODgwPXN0YXRpYyBpbmxpbmUgdm9pZCBtYXliZV9ybWFwX3VubG9ja19hY3Rpb24oc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsXG4tLVxubW0vaW50ZXJuYWwuaC0xODkzLVxubW0vaW50ZXJuYWwuaDoxODk0OiNpZmRlZiBDT05GSUdfTU1VX05PVElGSUVSXG5tbS9pbnRlcm5hbC5oLTE4OTUtc3RhdGljIGlubGluZSBib29sIGNsZWFyX2ZsdXNoX3lvdW5nX3B0ZXNfbm90aWZ5KHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLFxuLS1cbm1tL2ludGVybmFsLmg9MTkyNj1zdGF0aWMgaW5saW5lIGJvb2wgcG1kcF90ZXN0X2FuZF9jbGVhcl95b3VuZ19ub3RpZnkoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsXG4tLVxubW0vaW50ZXJuYWwuaC0xOTM1LVxubW0vaW50ZXJuYWwuaDoxOTM2OiNlbHNlIC8qIENPTkZJR19NTVVfTk9USUZJRVIgKi9cbm1tL2ludGVybmFsLmgtMTkzNy1cbi0tXG5tbS9pbnRlcm5hbC5oLTE5NDItXG5tbS9pbnRlcm5hbC5oOjE5NDM6I2VuZGlmIC8qIENPTkZJR19NTVVfTk9USUZJRVIgKi9cbm1tL2ludGVybmFsLmgtMTk0NC1cbi0tXG5tbS9wYWdlX2FsbG9jLmM9NDMzNz12b2lkIGZzX3JlY2xhaW1fYWNxdWlyZShnZnBfdCBnZnBfbWFzaylcbi0tXG5tbS9wYWdlX2FsbG9jLmMtNDM0NC1cbm1tL3BhZ2VfYWxsb2MuYzo0MzQ1OiNpZmRlZiBDT05GSUdfTU1VX05PVElGSUVSXG5tbS9wYWdlX2FsbG9jLmMtNDM0Ni1cdFx0bG9ja19tYXBfYWNxdWlyZShcdTAwMjZfX21tdV9ub3RpZmllcl9pbnZhbGlkYXRlX3JhbmdlX3N0YXJ0X21hcCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMTU6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODMxMQoJCQkJCQkJb3V0cHV0OiAxOAoJCQkJCQkJdGhvdWdodHM6IDM0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBSb2xlIG9mIGBDT05GSUdfTU1VX05PVElGSUVSYCoqCgpSaWdodCwgbGV0JiMzOTtzIHNlZS4uLiBJJiMzOTttIG5vdGljaW5nIGBDT05GSUdfTU1VX05PVElGSUVSYCBpcyBhIGRlcGVuZGVuY3ksIG9yIGF0IGxlYXN0IHVzZWQsIGJ5IHF1aXRlIGEgZmV3IHNpZ25pZmljYW50IGRyaXZlcnMuIERSTSwgS1ZNLi4uIHRoYXQmIzM5O3MgYSBrZXkgYXJlYSB0byBiZSBhd2FyZSBvZi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBiZXR0ZXIuIE5vdywgd2hhdCYjMzk7cyBkcml2aW5nIHRoaXM/IExldCYjMzk7cyBkcmlsbCBkb3duIGludG8gYENPTkZJR19LVk1gIHNwZWNpZmljYWxseSBhbmQgZmlndXJlIG91dCB3aHkgS1ZNIG5lZWRzIHRoaXMuIEl0JiMzOTtzIGFsbW9zdCBjZXJ0YWluIHRvIGJlIHJlbGF0ZWQgdG8gbWVtb3J5IG1hbmFnZW1lbnQgYW5kIHZpcnR1YWxpemF0aW9uLiBMZXQgbWUgZXhhbWluZSB0aGUgS1ZNIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhbmQgcmVsYXRlZCBjb2RlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIE1NVSBub3RpZmllciBwbGF5cyBpbnRvIG1lbW9yeSBtYW5hZ2VtZW50IGZvciB2aXJ0dWFsIG1hY2hpbmVzIGFuZCB3aGF0IHRoZSBpbXBsaWNhdGlvbnMgYXJlIGZvciBwZXJmb3JtYW5jZSBhbmQgc3RhYmlsaXR5LiBPa2F5LCBsZXQmIzM5O3Mgc3RhcnQgZGlnZ2luZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMyAxNToyOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtDT05GSUdfS1ZNJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAzMzc1IGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5hcmNoL2FybTY0L0tidWlsZD02PW9iai15XHRcdFx0JiM0Mzs9IGtlcm5lbC8gbW0vIG5ldC9cbmFyY2gvYXJtNjQvS2J1aWxkOjc6b2JqLSQoQ09ORklHX0tWTSlcdCYjNDM7PSBrdm0vXG5hcmNoL2FybTY0L0tidWlsZC04LW9iai0kKENPTkZJR19YRU4pXHQmIzQzOz0geGVuL1xuLS1cbmFyY2gvYXJtNjQvY29uZmlncy9kZWZjb25maWc9MTI0PUNPTkZJR19WSVJUVUFMSVpBVElPTj15XG5hcmNoL2FybTY0L2NvbmZpZ3MvZGVmY29uZmlnOjEyNTpDT05GSUdfS1ZNPXlcbmFyY2gvYXJtNjQvY29uZmlncy9kZWZjb25maWctMTI2LUNPTkZJR19KVU1QX0xBQkVMPXlcbi0tXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2ZpeG1hcC5oPTM2PWVudW0gZml4ZWRfYWRkcmVzc2VzIHtcbi0tXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2ZpeG1hcC5oLTUwLVxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9maXhtYXAuaDo1MTojaWZkZWYgQ09ORklHX0tWTVxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9maXhtYXAuaC01Mi1cdC8qIE9uZSBzbG90IHBlciBDUFUsIG1hcHBpbmcgdGhlIGd1ZXN0JiMzOTtzIFZOQ1IgcGFnZSBhdCBFTDIuICovXG4tLVxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9rdm1faG9zdC5oPTY4PWVudW0ga3ZtX21vZGUge1xuLS1cbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20va3ZtX2hvc3QuaC03My19O1xuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9rdm1faG9zdC5oOjc0OiNpZmRlZiBDT05GSUdfS1ZNXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmgtNzUtZW51bSBrdm1fbW9kZSBrdm1fZ2V0X21vZGUodm9pZCk7XG4tLVxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9rdm1faG9zdC5oPTE0NjQ9c3RhdGljIGlubGluZSBib29sIGt2bV9wbXVfY291bnRlcl9kZWZlcnJlZChzdHJ1Y3QgcGVyZl9ldmVudF9hdHRyICphdHRyKVxuLS1cbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20va3ZtX2hvc3QuaC0xNDY4LVxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9rdm1faG9zdC5oOjE0Njk6I2lmZGVmIENPTkZJR19LVk1cbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20va3ZtX2hvc3QuaC0xNDcwLXZvaWQga3ZtX3NldF9wbXVfZXZlbnRzKHU2NCBzZXQsIHN0cnVjdCBwZXJmX2V2ZW50X2F0dHIgKmF0dHIpO1xuLS1cbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20va3ZtX2hvc3QuaD0xNTMxPWludCBrdm1fdHJuZ19jYWxsKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7XG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2t2bV9ob3N0Lmg6MTUzMjojaWZkZWYgQ09ORklHX0tWTVxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9rdm1faG9zdC5oLTE1MzMtZXh0ZXJuIHBoeXNfYWRkcl90IGh5cF9tZW1fYmFzZTtcbi0tXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3ZpcnQuaD05MT1zdGF0aWMgaW5saW5lIGJvb2wgaXNfcGt2bV9pbml0aWFsaXplZCh2b2lkKVxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS92aXJ0LmgtOTIte1xuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS92aXJ0Lmg6OTM6XHRyZXR1cm4gSVNfRU5BQkxFRChDT05GSUdfS1ZNKSBcdTAwMjZcdTAwMjZcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vdmlydC5oLTk0LVx0ICAgICAgIHN0YXRpY19icmFuY2hfbGlrZWx5KFx1MDAyNmt2bV9wcm90ZWN0ZWRfbW9kZV9pbml0aWFsaXplZCk7XG4tLVxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS92aXJ0LmgtOTYtXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3ZpcnQuaDo5NzojaWZkZWYgQ09ORklHX0tWTVxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS92aXJ0LmgtOTgtYm9vbCBwa3ZtX2ZvcmNlX3JlY2xhaW1fZ3Vlc3RfcGFnZShwaHlzX2FkZHJfdCBwaHlzKTtcbi0tXG5hcmNoL2FybTY0L2tlcm5lbC9hc20tb2Zmc2V0cy5jPTI3PWludCBtYWluKHZvaWQpXG4tLVxuYXJjaC9hcm02NC9rZXJuZWwvYXNtLW9mZnNldHMuYy0xMDMtICBCTEFOSygpO1xuYXJjaC9hcm02NC9rZXJuZWwvYXNtLW9mZnNldHMuYzoxMDQ6I2lmZGVmIENPTkZJR19LVk1cbmFyY2gvYXJtNjQva2VybmVsL2FzbS1vZmZzZXRzLmMtMTA1LSAgREVGSU5FKFZDUFVfQ09OVEVYVCxcdFx0b2Zmc2V0b2Yoc3RydWN0IGt2bV92Y3B1LCBhcmNoLmN0eHQpKTtcbi0tXG5hcmNoL2FybTY0L2tlcm5lbC9jcHVmZWF0dXJlLmM9MjQzMz1zdGF0aWMgdm9pZCBlbGZfaHdjYXBfZml4dXAodm9pZClcbi0tXG5hcmNoL2FybTY0L2tlcm5lbC9jcHVmZWF0dXJlLmMtMjQ0MC1cbmFyY2gvYXJtNjQva2VybmVsL2NwdWZlYXR1cmUuYzoyNDQxOiNpZmRlZiBDT05GSUdfS1ZNXG5hcmNoL2FybTY0L2tlcm5lbC9jcHVmZWF0dXJlLmMtMjQ0Mi1zdGF0aWMgYm9vbCBpc19rdm1fcHJvdGVjdGVkX21vZGUoY29uc3Qgc3RydWN0IGFybTY0X2NwdV9jYXBhYmlsaXRpZXMgKmVudHJ5LCBpbnQgX191bnVzZWQpXG4tLVxuYXJjaC9hcm02NC9rZXJuZWwvY3B1ZmVhdHVyZS5jLTI0NDUtfVxuYXJjaC9hcm02NC9rZXJuZWwvY3B1ZmVhdHVyZS5jOjI0NDY6I2VuZGlmIC8qIENPTkZJR19LVk0gKi9cbmFyY2gvYXJtNjQva2VybmVsL2NwdWZlYXR1cmUuYy0yNDQ3LVxuLS1cbmFyY2gvYXJtNjQva2VybmVsL2NwdWZlYXR1cmUuYz0yNTQzPXN0YXRpYyBjb25zdCBzdHJ1Y3QgYXJtNjRfY3B1X2NhcGFiaWxpdGllcyBhcm02NF9mZWF0dXJlc1tdID0ge1xuLS1cbmFyY2gvYXJtNjQva2VybmVsL2NwdWZlYXR1cmUuYy0yNjI4LVx0fSxcbmFyY2gvYXJtNjQva2VybmVsL2NwdWZlYXR1cmUuYzoyNjI5OiNpZmRlZiBDT05GSUdfS1ZNXG5hcmNoL2FybTY0L2tlcm5lbC9jcHVmZWF0dXJlLmMtMjYzMC1cdHtcbi0tXG5hcmNoL2FybTY0L2tlcm5lbC9jcHVmZWF0dXJlLmM9Mzc1OT1zdGF0aWMgdm9pZCB2ZXJpZnlfaHlwX2NhcGFiaWxpdGllcyh2b2lkKVxuLS1cbmFyY2gvYXJtNjQva2VybmVsL2NwdWZlYXR1cmUuYy0zNzY0LVxuYXJjaC9hcm02NC9rZXJuZWwvY3B1ZmVhdHVyZS5jOjM3NjU6XHRpZiAoIUlTX0VOQUJMRUQoQ09ORklHX0tWTSkpXG5hcmNoL2FybTY0L2tlcm5lbC9jcHVmZWF0dXJlLmMtMzc2Ni1cdFx0cmV0dXJuO1xuLS1cbmFyY2gvYXJtNjQva2VybmVsL2Zwc2ltZC5jPTEwNTA9aW50IHZlY192ZXJpZnlfdnFfbWFwKGVudW0gdmVjX3R5cGUgdHlwZSlcbi0tXG5hcmNoL2FybTY0L2tlcm5lbC9mcHNpbWQuYy0xMDY0LVxuYXJjaC9hcm02NC9rZXJuZWwvZnBzaW1kLmM6MTA2NTpcdGlmICghSVNfRU5BQkxFRChDT05GSUdfS1ZNKSB8fCAhaXNfaHlwX21vZGVfYXZhaWxhYmxlKCkpXG5hcmNoL2FybTY0L2tlcm5lbC9mcHNpbWQuYy0xMDY2LVx0XHRyZXR1cm4gMDtcbi0tXG5hcmNoL2FybTY0L2tlcm5lbC9pbWFnZS12YXJzLmg9NzI9UElfRVhQT1JUX1NZTShfZGF0YSk7XG5hcmNoL2FybTY0L2tlcm5lbC9pbWFnZS12YXJzLmgtNzMtXG5hcmNoL2FybTY0L2tlcm5lbC9pbWFnZS12YXJzLmg6NzQ6I2lmZGVmIENPTkZJR19LVk1cbmFyY2gvYXJtNjQva2VybmVsL2ltYWdlLXZhcnMuaC03NS1cbi0tXG5hcmNoL2FybTY0L2tlcm5lbC9pbWFnZS12YXJzLmg9MTQ3PUtWTV9OVkhFX0FMSUFTKGt2bV9wcm90ZWN0ZWRfbW9kZV9pbml0aWFsaXplZCk7XG5hcmNoL2FybTY0L2tlcm5lbC9pbWFnZS12YXJzLmgtMTQ4LVxuYXJjaC9hcm02NC9rZXJuZWwvaW1hZ2UtdmFycy5oOjE0OTojZW5kaWYgLyogQ09ORklHX0tWTSAqL1xuYXJjaC9hcm02NC9rZXJuZWwvaW1hZ2UtdmFycy5oLTE1MC1cbi0tXG5hcmNoL2FybTY0L2tlcm5lbC9zbXAuYz00MjM9c3RhdGljIHZvaWQgX19pbml0IGh5cF9tb2RlX2NoZWNrKHZvaWQpXG4tLVxuYXJjaC9hcm02NC9rZXJuZWwvc21wLmMtNDMxLVx0XHRwcl9pbmZvKFwmIzM0O0NQVTogQWxsIENQVShzKSBzdGFydGVkIGF0IEVMMVxcblwmIzM0Oyk7XG5hcmNoL2FybTY0L2tlcm5lbC9zbXAuYzo0MzI6XHRpZiAoSVNfRU5BQkxFRChDT05GSUdfS1ZNKSBcdTAwMjZcdTAwMjYgIWlzX2tlcm5lbF9pbl9oeXBfbW9kZSgpKSB7XG5hcmNoL2FybTY0L2tlcm5lbC9zbXAuYy00MzMtXHRcdGt2bV9jb21wdXRlX2xheW91dCgpO1xuLS1cbmFyY2gvYXJtNjQva2VybmVsL3ZtbGludXgubGRzLlMtOC0jaW5jbHVkZSBcdTAwM2Nhc20vaHlwX2ltYWdlLmhcdTAwM2VcbmFyY2gvYXJtNjQva2VybmVsL3ZtbGludXgubGRzLlM6OTojaWZkZWYgQ09ORklHX0tWTVxuYXJjaC9hcm02NC9rZXJuZWwvdm1saW51eC5sZHMuUy0xMC0jZGVmaW5lIEhZUEVSVklTT1JfRVhUQUJMRVx0XHRcdFx0XHRcXFxuLS1cbmFyY2gvYXJtNjQva2VybmVsL3ZtbGludXgubGRzLlMtNzEtI2RlZmluZSBTQlNTX0FMSUdOXHRcdFx0UEFHRV9TSVpFXG5hcmNoL2FybTY0L2tlcm5lbC92bWxpbnV4Lmxkcy5TOjcyOiNlbHNlIC8qIENPTkZJR19LVk0gKi9cbmFyY2gvYXJtNjQva2VybmVsL3ZtbGludXgubGRzLlMtNzMtI2RlZmluZSBIWVBFUlZJU09SX0VYVEFCTEVcbi0tXG5hcmNoL2FybTY0L2tlcm5lbC92bWxpbnV4Lmxkcy5TPTQxMT1BU1NFUlQoKF9fZW50cnlfdHJhbXBfdGV4dF9lbmQgLSBfX2VudHJ5X3RyYW1wX3RleHRfc3RhcnQpIFx1MDAzYz0gMypQQUdFX1NJWkUsXG4tLVxuYXJjaC9hcm02NC9rZXJuZWwvdm1saW51eC5sZHMuUy00MTMtI2VuZGlmXG5hcmNoL2FybTY0L2tlcm5lbC92bWxpbnV4Lmxkcy5TOjQxNDojaWZkZWYgQ09ORklHX0tWTVxuYXJjaC9hcm02NC9rZXJuZWwvdm1saW51eC5sZHMuUy00MTUtQVNTRVJUKF9faHlwX2Jzc19zdGFydCA9PSBfX2Jzc19zdGFydCwgXCYjMzQ7SFlQIGFuZCBIb3N0IEJTUyBhcmUgbWlzYWxpZ25lZFwmIzM0Oylcbi0tXG5hcmNoL2FybTY0L2t2bS9NYWtlZmlsZT04PWluY2x1ZGUgJChzcmN0cmVlKS92aXJ0L2t2bS9NYWtlZmlsZS5rdm1cbmFyY2gvYXJtNjQva3ZtL01ha2VmaWxlLTktXG5hcmNoL2FybTY0L2t2bS9NYWtlZmlsZToxMDpvYmotJChDT05GSUdfS1ZNKSAmIzQzOz0ga3ZtLm9cbmFyY2gvYXJtNjQva3ZtL01ha2VmaWxlOjExOm9iai0kKENPTkZJR19LVk0pICYjNDM7PSBoeXAvXG5hcmNoL2FybTY0L2t2bS9NYWtlZmlsZS0xMi1cbi0tXG5hcmNoL2FybTY0L2t2bS9oeXAvTWFrZWZpbGU9OD1zdWJkaXItY2NmbGFncy15IDo9IC1JJChpbmNkaXIpXG5hcmNoL2FybTY0L2t2bS9oeXAvTWFrZWZpbGUtOS1cbmFyY2gvYXJtNjQva3ZtL2h5cC9NYWtlZmlsZToxMDpvYmotJChDT05GSUdfS1ZNKSAmIzQzOz0gdmhlLyBudmhlLyBwZ3RhYmxlLm9cbi0tXG5hcmNoL2FybTY0L2t2bS9oeXAvbnZoZS9ob3N0LlM9MTY4PVNZTV9GVU5DX0VORChfX2hvc3RfaHZjKVxuLS1cbmFyY2gvYXJtNjQva3ZtL2h5cC9udmhlL2hvc3QuUy0yMjgtICpcbmFyY2gvYXJtNjQva3ZtL2h5cC9udmhlL2hvc3QuUzoyMjk6ICogQ09ORklHX0tWTV9JTkRJUkVDVF9WRUNUT1JTIGlzIG5vdCBhcHBsaWVkIHRvIHRoZSBob3N0IHZlY3RvcnMgYmVjYXVzZSB0aGVcbmFyY2gvYXJtNjQva3ZtL2h5cC9udmhlL2hvc3QuUy0yMzAtICogaG9zdCBrbm93cyBhYm91dCB0aGUgRUwyIHZlY3RvcnMgYWxyZWFkeSwgYW5kIHRoZXJlIGlzIG5vIHBvaW50IGluIGhpZGluZ1xuLS1cbmFyY2gvYXJtNjQvbW0vaW5pdC5jPTE5Mz12b2lkIF9faW5pdCBhcm02NF9tZW1ibG9ja19pbml0KHZvaWQpXG4tLVxuYXJjaC9hcm02NC9tbS9pbml0LmMtMjA0LVx0ICovXG5hcmNoL2FybTY0L21tL2luaXQuYzoyMDU6XHRpZiAoSVNfRU5BQkxFRChDT05GSUdfS1ZNKSBcdTAwMjZcdTAwMjYgdmFiaXRzX2FjdHVhbCA9PSA1MiBcdTAwMjZcdTAwMjZcbmFyY2gvYXJtNjQvbW0vaW5pdC5jLTIwNi1cdCAgICBpc19oeXBfbW9kZV9hdmFpbGFibGUoKSBcdTAwMjZcdTAwMjYgIWlzX2tlcm5lbF9pbl9oeXBfbW9kZSgpKSB7XG4tLVxuYXJjaC9sb29uZ2FyY2gvS2J1aWxkPTQ9b2JqLXkgJiM0Mzs9IHZkc28vXG5hcmNoL2xvb25nYXJjaC9LYnVpbGQtNS1cbmFyY2gvbG9vbmdhcmNoL0tidWlsZDo2Om9iai0kKHN1YnN0IG0seSwkKENPTkZJR19LVk0pKSAmIzQzOz0ga3ZtL1xuYXJjaC9sb29uZ2FyY2gvS2J1aWxkLTctXG4tLVxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjY0X2RlZmNvbmZpZz04Mz1DT05GSUdfVklSVFVBTElaQVRJT049eVxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjY0X2RlZmNvbmZpZzo4NDpDT05GSUdfS1ZNPW1cbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb242NF9kZWZjb25maWctODUtQ09ORklHX0pVTVBfTEFCRUw9eVxuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS9NYWtlZmlsZT02PWluY2x1ZGUgJChzcmN0cmVlKS92aXJ0L2t2bS9NYWtlZmlsZS5rdm1cbmFyY2gvbG9vbmdhcmNoL2t2bS9NYWtlZmlsZS03LVxuYXJjaC9sb29uZ2FyY2gva3ZtL01ha2VmaWxlOjg6b2JqLSQoQ09ORklHX0tWTSkgJiM0Mzs9IGt2bS5vXG5hcmNoL2xvb25nYXJjaC9rdm0vTWFrZWZpbGUtOS1cbi0tXG5hcmNoL21pcHMvS2J1aWxkPTE4PW9iai15ICYjNDM7PSB2ZHNvL1xuYXJjaC9taXBzL0tidWlsZC0xOS1cbmFyY2gvbWlwcy9LYnVpbGQ6MjA6aWZkZWYgQ09ORklHX0tWTVxuYXJjaC9taXBzL0tidWlsZC0yMS1vYmoteSAmIzQzOz0ga3ZtL1xuLS1cbmFyY2gvbWlwcy9jb25maWdzL2xvb25nc29uM19kZWZjb25maWc9Mzk9Q09ORklHX1ZJUlRVQUxJWkFUSU9OPXlcbmFyY2gvbWlwcy9jb25maWdzL2xvb25nc29uM19kZWZjb25maWc6NDA6Q09ORklHX0tWTT1tXG5hcmNoL21pcHMvY29uZmlncy9sb29uZ3NvbjNfZGVmY29uZmlnLTQxLUNPTkZJR19LUFJPQkVTPXlcbi0tXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YV9rdm1fZGVmY29uZmlnPTE3PUNPTkZJR19WSVJUVUFMSVpBVElPTj15XG5hcmNoL21pcHMvY29uZmlncy9tYWx0YV9rdm1fZGVmY29uZmlnOjE4OkNPTkZJR19LVk09bVxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFfa3ZtX2RlZmNvbmZpZzoxOTpDT05GSUdfS1ZNX01JUFNfREVCVUdfQ09QMF9DT1VOVEVSUz15XG5hcmNoL21pcHMvY29uZmlncy9tYWx0YV9rdm1fZGVmY29uZmlnLTIwLUNPTkZJR19WSE9TVF9ORVQ9bVxuLS1cbmFyY2gvbWlwcy9pbmNsdWRlL2FzbS9rdm1faG9zdC5oPTE4OD1zdHJ1Y3QgbWlwc19jb3Byb2Mge1xuYXJjaC9taXBzL2luY2x1ZGUvYXNtL2t2bV9ob3N0LmgtMTg5LVx0dW5zaWduZWQgbG9uZyByZWdbTl9NSVBTX0NPUFJPQ19SRUdTXVtOX01JUFNfQ09QUk9DX1NFTF07XG5hcmNoL21pcHMvaW5jbHVkZS9hc20va3ZtX2hvc3QuaDoxOTA6I2lmZGVmIENPTkZJR19LVk1fTUlQU19ERUJVR19DT1AwX0NPVU5URVJTXG5hcmNoL21pcHMvaW5jbHVkZS9hc20va3ZtX2hvc3QuaC0xOTEtXHR1bnNpZ25lZCBsb25nIHN0YXRbTl9NSVBTX0NPUFJPQ19SRUdTXVtOX01JUFNfQ09QUk9DX1NFTF07XG4tLVxuYXJjaC9taXBzL2t2bS9NYWtlZmlsZT0xOD1rdm0teVx0XHQmIzQzOz0gdnoub1xuYXJjaC9taXBzL2t2bS9NYWtlZmlsZToxOTpvYmotJChDT05GSUdfS1ZNKVx0JiM0Mzs9IGt2bS5vXG5hcmNoL21pcHMva3ZtL01ha2VmaWxlLTIwLW9iai15XHRcdFx0JiM0Mzs9IHRsYi5vXG4tLVxuYXJjaC9taXBzL2t2bS9zdGF0cy5jPTQ5PXZvaWQga3ZtX21pcHNfZHVtcF9zdGF0cyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG5hcmNoL21pcHMva3ZtL3N0YXRzLmMtNTAte1xuYXJjaC9taXBzL2t2bS9zdGF0cy5jOjUxOiNpZmRlZiBDT05GSUdfS1ZNX01JUFNfREVCVUdfQ09QMF9DT1VOVEVSU1xuYXJjaC9taXBzL2t2bS9zdGF0cy5jLTUyLVx0aW50IGksIGo7XG4tLVxuYXJjaC9taXBzL2t2bS92ei5jPTg3NT1zdGF0aWMgZW51bSBlbXVsYXRpb25fcmVzdWx0IGt2bV92el9ncHNpX2NvcDAodW5pb24gbWlwc19pbnN0cnVjdGlvbiBpbnN0LFxuLS1cbmFyY2gvbWlwcy9rdm0vdnouYy05MDktXHRcdGNhc2UgbWZjX29wOlxuYXJjaC9taXBzL2t2bS92ei5jOjkxMDojaWZkZWYgQ09ORklHX0tWTV9NSVBTX0RFQlVHX0NPUDBfQ09VTlRFUlNcbmFyY2gvbWlwcy9rdm0vdnouYy05MTEtXHRcdFx0Y29wMC1cdTAwM2VzdGF0W3JkXVtzZWxdJiM0MzsmIzQzOztcbi0tXG5hcmNoL21pcHMva3ZtL3Z6LmMtOTc1LVx0XHRjYXNlIG10Y19vcDpcbmFyY2gvbWlwcy9rdm0vdnouYzo5NzY6I2lmZGVmIENPTkZJR19LVk1fTUlQU19ERUJVR19DT1AwX0NPVU5URVJTXG5hcmNoL21pcHMva3ZtL3Z6LmMtOTc3LVx0XHRcdGNvcDAtXHUwMDNlc3RhdFtyZF1bc2VsXSYjNDM7JiM0Mzs7XG4tLVxuYXJjaC9wb3dlcnBjL0tidWlsZD0xND1vYmotJChDT05GSUdfWE1PTikgJiM0Mzs9IHhtb24vXG5hcmNoL3Bvd2VycGMvS2J1aWxkOjE1Om9iai0kKENPTkZJR19LVk0pICAmIzQzOz0ga3ZtL1xuYXJjaC9wb3dlcnBjL0tidWlsZC0xNi1cbi0tXG5hcmNoL3Bvd2VycGMvY29uZmlncy9ndWVzdC5jb25maWc9Nz1DT05GSUdfVklSVElPX1BDST15XG5hcmNoL3Bvd2VycGMvY29uZmlncy9ndWVzdC5jb25maWc6ODpDT05GSUdfS1ZNX0dVRVNUPXlcbmFyY2gvcG93ZXJwYy9jb25maWdzL2d1ZXN0LmNvbmZpZy05LUNPTkZJR19FUEFQUl9QQVJBVklSVD15XG4tLVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvbXZtZTUxMDBfZGVmY29uZmlnPTIwPUNPTkZJR19NVk1FNTEwMD15XG5hcmNoL3Bvd2VycGMvY29uZmlncy9tdm1lNTEwMF9kZWZjb25maWc6MjE6Q09ORklHX0tWTV9HVUVTVD15XG5hcmNoL3Bvd2VycGMvY29uZmlncy9tdm1lNTEwMF9kZWZjb25maWctMjItQ09ORklHX0haXzEwMD15XG4tLVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcG93ZXJudl9kZWZjb25maWc9MzMwPUNPTkZJR19WSVJUVUFMSVpBVElPTj15XG5hcmNoL3Bvd2VycGMvY29uZmlncy9wb3dlcm52X2RlZmNvbmZpZzozMzE6Q09ORklHX0tWTV9CT09LM1NfNjQ9bVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcG93ZXJudl9kZWZjb25maWc6MzMyOkNPTkZJR19LVk1fQk9PSzNTXzY0X0hWPW1cbmFyY2gvcG93ZXJwYy9jb25maWdzL3Bvd2VybnZfZGVmY29uZmlnLTMzMy1DT05GSUdfVkhPU1RfTkVUPW1cbi0tXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wcGM2NF9kZWZjb25maWc9Njk9Q09ORklHX1ZJUlRVQUxJWkFUSU9OPXlcbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzY0X2RlZmNvbmZpZzo3MDpDT05GSUdfS1ZNX0JPT0szU182ND1tXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wcGM2NF9kZWZjb25maWc6NzE6Q09ORklHX0tWTV9CT09LM1NfNjRfSFY9bVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHBjNjRfZGVmY29uZmlnLTcyLUNPTkZJR19LUFJPQkVTPXlcbi0tXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vaG1pLmgtMTEtXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vaG1pLmg6MTI6I2lmZGVmIENPTkZJR19LVk1fQk9PSzNTX0hWX1BPU1NJQkxFXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vaG1pLmgtMTMtXG4tLVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ib29rM3MuaD0zMjA9dm9pZCBrdm1wcGNfZ2l2ZXVwX2ZhYyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHVsb25nIGZhYyk7XG4tLVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ib29rM3MuaC0zMjItXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX2Jvb2szcy5oOjMyMzojaWZkZWYgQ09ORklHX0tWTV9CT09LM1NfSFZfUE9TU0lCTEVcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fYm9vazNzLmgtMzI0LVxuLS1cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fYm9vazNzLmg9Mzg3PXN0YXRpYyBpbmxpbmUgc3RydWN0IGt2bXBwY192Y3B1X2Jvb2szcyAqdG9fYm9vazNzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX2Jvb2szcy5oLTM5My1cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fYm9vazNzLmg6Mzk0OiNpZmRlZiBDT05GSUdfS1ZNX0JPT0szU18zMl9IQU5ETEVSXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX2Jvb2szcy5oLTM5NS0jaW5jbHVkZSBcdTAwM2Nhc20va3ZtX2Jvb2szc18zMi5oXHUwMDNlXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX2Jvb2szcy5oLTM5Ni0jZW5kaWZcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fYm9vazNzLmg6Mzk3OiNpZmRlZiBDT05GSUdfS1ZNX0JPT0szU182NF9IQU5ETEVSXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX2Jvb2szcy5oLTM5OC0jaW5jbHVkZSBcdTAwM2Nhc20va3ZtX2Jvb2szc182NC5oXHUwMDNlXG4tLVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ib29rM3NfNjQuaD0xMDE9aW50IGt2bWh2X25lc3RlZF9uZXh0X2xwaWQoc3RydWN0IGt2bSAqa3ZtLCBpbnQgbHBpZCk7XG4tLVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ib29rM3NfNjQuaC0xMTAtXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX2Jvb2szc182NC5oOjExMTojaWZkZWYgQ09ORklHX0tWTV9CT09LM1NfUFJfUE9TU0lCTEVcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fYm9vazNzXzY0LmgtMTEyLXN0YXRpYyBpbmxpbmUgc3RydWN0IGt2bXBwY19ib29rM3Nfc2hhZG93X3ZjcHUgKnN2Y3B1X2dldChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ib29rM3NfNjQuaD0xMTg9c3RhdGljIGlubGluZSB2b2lkIHN2Y3B1X3B1dChzdHJ1Y3Qga3ZtcHBjX2Jvb2szc19zaGFkb3dfdmNwdSAqc3ZjcHUpXG4tLVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ib29rM3NfNjQuaC0xMjMtXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX2Jvb2szc182NC5oOjEyNDojaWZkZWYgQ09ORklHX0tWTV9CT09LM1NfSFZfUE9TU0lCTEVcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fYm9vazNzXzY0LmgtMTI1LVxuLS1cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fYm9vazNzXzY0Lmg9NTE0PXN0YXRpYyBpbmxpbmUgaW50IGlzX3ZybWFfaHB0ZSh1bnNpZ25lZCBsb25nIGhwdGVfdilcbi0tXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX2Jvb2szc182NC5oLTUxOS1cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fYm9vazNzXzY0Lmg6NTIwOiNpZmRlZiBDT05GSUdfS1ZNX0JPT0szU19IVl9QT1NTSUJMRVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ib29rM3NfNjQuaC01MjEtLypcbi0tXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX2Jvb2szc182NC5oPTY5Nj11NjQga3ZtaHZfZ2V0X2wyX3J1bnRpbWVfYWdnX3ZjcHUodm9pZCk7XG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX2Jvb2szc182NC5oLTY5Ny1cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fYm9vazNzXzY0Lmg6Njk4OiNlbmRpZiAvKiBDT05GSUdfS1ZNX0JPT0szU19IVl9QT1NTSUJMRSAqL1xuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ib29rM3NfNjQuaC02OTktXG4tLVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ib29rM3NfYXNtLmgtMjQtXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX2Jvb2szc19hc20uaDoyNTojaWZkZWYgQ09ORklHX0tWTV9CT09LM1NfSEFORExFUlxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ib29rM3NfYXNtLmgtMjYtXG4tLVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ib29rM3NfYXNtLmg9NDk9a3ZtcHBjX3Jlc3VtZV9cXGludG5vOlxuLS1cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fYm9vazNzX2FzbS5oLTU4LVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ib29rM3NfYXNtLmg6NTk6I2VuZGlmIC8qIENPTkZJR19LVk1fQk9PSzNTX0hBTkRMRVIgKi9cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fYm9vazNzX2FzbS5oLTYwLVxuLS1cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fYm9vazNzX2FzbS5oPTgzPXN0cnVjdCBrdm1wcGNfaG9zdF9zdGF0ZSB7XG4tLVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ib29rM3NfYXNtLmgtOTQtXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX2Jvb2szc19hc20uaDo5NTojaWZkZWYgQ09ORklHX0tWTV9CT09LM1NfSFZfUE9TU0lCTEVcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fYm9vazNzX2FzbS5oLTk2LVx0dTggaHd0aHJlYWRfcmVxO1xuLS1cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fYm9va2UuaD0xMDk9c3RhdGljIGlubGluZSBib29sIGt2bXBwY19zdXBwb3J0c19tYWdpY19wYWdlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX2Jvb2tlLmgtMTExLVx0LyogTWFnaWMgcGFnZSBpcyBvbmx5IHN1cHBvcnRlZCBvbiBlNTAwdjIgKi9cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fYm9va2UuaDoxMTI6I2lmZGVmIENPTkZJR19LVk1fRTUwMFYyXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX2Jvb2tlLmgtMTEzLVx0cmV0dXJuIHRydWU7XG4tLVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ib29rZV9odl9hc20uaC01Ni0ubWFjcm8gRE9fS1ZNIGludG5vIHNycjFcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fYm9va2VfaHZfYXNtLmg6NTc6I2lmZGVmIENPTkZJR19LVk1fQk9PS0VfSFZcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fYm9va2VfaHZfYXNtLmgtNTgtQkVHSU5fRlRSX1NFQ1RJT05cbi0tXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX2d1ZXN0LmgtOC1cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fZ3Vlc3QuaDo5OiNpZiBkZWZpbmVkKENPTkZJR19QUENfUFNFUklFUykgfHwgZGVmaW5lZChDT05GSUdfS1ZNX0dVRVNUKVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ndWVzdC5oLTEwLSNpbmNsdWRlIFx1MDAzY2xpbnV4L2p1bXBfbGFiZWwuaFx1MDAzZVxuLS1cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1faG9zdC5oLTM2LVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ob3N0Lmg6Mzc6I2lmZGVmIENPTkZJR19LVk1fQk9PSzNTX0hWX1BPU1NJQkxFXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX2hvc3QuaC0zOC0jaW5jbHVkZSBcdTAwM2Nhc20va3ZtX2Jvb2szc19hc20uaFx1MDAzZVx0XHQvKiBmb3IgTUFYX1NNVF9USFJFQURTICovXG4tLVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ob3N0LmgtNDgtI2RlZmluZSBLVk1fTUFYX1ZDUFVfSURTXHRLVk1fTUFYX1ZDUFVTXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX2hvc3QuaDo0OTojZW5kaWYgLyogQ09ORklHX0tWTV9CT09LM1NfSFZfUE9TU0lCTEUgKi9cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1faG9zdC5oLTUwLVxuLS1cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1faG9zdC5oPTI1Mz1zdHJ1Y3Qga3ZtX2FyY2hfbWVtb3J5X3Nsb3Qge1xuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ob3N0Lmg6MjU0OiNpZmRlZiBDT05GSUdfS1ZNX0JPT0szU19IVl9QT1NTSUJMRVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ob3N0LmgtMjU1LVx0dW5zaWduZWQgbG9uZyAqcm1hcDtcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1faG9zdC5oOjI1NjojZW5kaWYgLyogQ09ORklHX0tWTV9CT09LM1NfSFZfUE9TU0lCTEUgKi9cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1faG9zdC5oLTI1Ny19O1xuLS1cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1faG9zdC5oPTI3Nz1zdHJ1Y3Qga3ZtX2FyY2gge1xuLS1cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1faG9zdC5oLTI4MC1cdHVuc2lnbmVkIGludCBlbXVsX3NtdF9tb2RlO1x0LyogZW11YWx0ZWQgU01UIG1vZGUsIG9uIFA5ICovXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX2hvc3QuaDoyODE6I2lmZGVmIENPTkZJR19LVk1fQk9PSzNTX0hWX1BPU1NJQkxFXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX2hvc3QuaC0yODItXHR1bnNpZ25lZCBpbnQgdGxiX3NldHM7XG4tLVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ob3N0LmgtMzA0LVx0c3RydWN0IGt2bV9yZXNpemVfaHB0ICpyZXNpemVfaHB0OyAvKiBwcm90ZWN0ZWQgYnkga3ZtLVx1MDAzZWxvY2sgKi9cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1faG9zdC5oOjMwNTojZW5kaWYgLyogQ09ORklHX0tWTV9CT09LM1NfSFZfUE9TU0lCTEUgKi9cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1faG9zdC5oOjMwNjojaWZkZWYgQ09ORklHX0tWTV9CT09LM1NfUFJfUE9TU0lCTEVcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1faG9zdC5oLTMwNy1cdHN0cnVjdCBtdXRleCBocHRfbXV0ZXg7XG4tLVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ob3N0LmgtMzE0LSNlbmRpZlxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ob3N0Lmg6MzE1OiNpZmRlZiBDT05GSUdfS1ZNX01QSUNcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1faG9zdC5oLTMxNi1cdHN0cnVjdCBvcGVucGljICptcGljO1xuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ob3N0LmgtMzE3LSNlbmRpZlxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ob3N0Lmg6MzE4OiNpZmRlZiBDT05GSUdfS1ZNX1hJQ1NcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1faG9zdC5oLTMxOS1cdHN0cnVjdCBrdm1wcGNfeGljcyAqeGljcztcbi0tXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX2hvc3QuaC0zMjgtXHRzdHJ1Y3Qga3ZtcHBjX29wcyAqa3ZtX29wcztcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1faG9zdC5oOjMyOTojaWZkZWYgQ09ORklHX0tWTV9CT09LM1NfSFZfUE9TU0lCTEVcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1faG9zdC5oLTMzMC1cdHN0cnVjdCBtdXRleCB1dm1lbV9sb2NrO1xuLS1cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1faG9zdC5oPTUyOD1zdHJ1Y3Qga3ZtX3ZjcHVfYXJjaCB7XG4tLVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ob3N0LmgtNTU5LVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ob3N0Lmg6NTYwOiNpZmRlZiBDT05GSUdfS1ZNX0JPT0tFX0hWXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX2hvc3QuaC01NjEtXHR1MzIgaG9zdF9tYXM0O1xuLS1cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1faG9zdC5oLTU3MC0jaWYgZGVmaW5lZChDT05GSUdfQk9PS0UpXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX2hvc3QuaDo1NzE6I2lmIGRlZmluZWQoQ09ORklHX0tWTV9CT09LRV9IVikgfHwgZGVmaW5lZChDT05GSUdfNjRCSVQpXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX2hvc3QuaC01NzItXHR1MzIgZXBjcjtcbi0tXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX2hvc3QuaC02OTItXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX2hvc3QuaDo2OTM6I2lmZGVmIENPTkZJR19LVk1fRVhJVF9USU1JTkdcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1faG9zdC5oLTY5NC1cdHN0cnVjdCBtdXRleCBleGl0X3RpbWluZ19sb2NrO1xuLS1cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1faG9zdC5oLTc5NS1cdHN0cnVjdCBrdm1fdmNwdV9hcmNoX3NoYXJlZCAqc2hhcmVkO1xuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ob3N0Lmg6Nzk2OiNpZiBkZWZpbmVkKENPTkZJR19QUENfQk9PSzNTXzY0KSBcdTAwMjZcdTAwMjYgZGVmaW5lZChDT05GSUdfS1ZNX0JPT0szU19QUl9QT1NTSUJMRSlcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1faG9zdC5oLTc5Ny1cdGJvb2wgc2hhcmVkX2JpZ19lbmRpYW47XG4tLVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ob3N0LmgtODA1LVx0c3RydWN0IG9wZW5waWMgKm1waWM7XHQvKiBLVk1fSVJRX01QSUMgKi9cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1faG9zdC5oOjgwNjojaWZkZWYgQ09ORklHX0tWTV9YSUNTXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX2hvc3QuaC04MDctXHRzdHJ1Y3Qga3ZtcHBjX2ljcCAqaWNwOyAvKiBYSUNTIHByZXNlbnRhdGlvbiBjb250cm9sbGVyICovXG4tLVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ob3N0LmgtODE2LVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ob3N0Lmg6ODE3OiNpZmRlZiBDT05GSUdfS1ZNX0JPT0szU19IVl9QT1NTSUJMRVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ob3N0LmgtODE4LVx0c3RydWN0IGt2bV92Y3B1X2FyY2hfc2hhcmVkIHNocmVncztcbi0tXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX2hvc3QuaC04NTQtXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX2hvc3QuaDo4NTU6I2lmZGVmIENPTkZJR19LVk1fQk9PSzNTX0hWX0VYSVRfVElNSU5HXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX2hvc3QuaC04NTYtXHRzdHJ1Y3Qga3ZtaHZfdGJfYWNjdW11bGF0b3IgKmN1cl9hY3Rpdml0eTtcdC8qIFdoYXQgd2UmIzM5O3JlIHRpbWluZyAqL1xuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ob3N0LmgtODU3LVx0dTY0XHRjdXJfdGJfc3RhcnQ7XHRcdFx0Lyogd2hlbiBpdCBzdGFydGVkICovXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX2hvc3QuaDo4NTg6I2lmZGVmIENPTkZJR19LVk1fQk9PSzNTX0hWX1A5X1RJTUlOR1xuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ob3N0LmgtODU5LVx0c3RydWN0IGt2bWh2X3RiX2FjY3VtdWxhdG9yIHZjcHVfZW50cnk7XG4tLVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ob3N0LmgtODcyLSNlbmRpZlxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ob3N0Lmg6ODczOiNlbmRpZiAvKiBDT05GSUdfS1ZNX0JPT0szU19IVl9FWElUX1RJTUlORyAqL1xuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ob3N0Lmg6ODc0OiNpZmRlZiBDT05GSUdfS1ZNX0JPT0szU19IVl9QT1NTSUJMRVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ob3N0LmgtODc1LVx0dTY0IGwxX3RvX2wyX2NzO1xuLS1cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fcGFyYS5oPTE1PXN0YXRpYyBpbmxpbmUgaW50IGt2bV9wYXJhX2F2YWlsYWJsZSh2b2lkKVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9wYXJhLmgtMTYte1xuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9wYXJhLmg6MTc6XHRyZXR1cm4gSVNfRU5BQkxFRChDT05GSUdfS1ZNX0dVRVNUKSBcdTAwMjZcdTAwMjYgaXNfa3ZtX2d1ZXN0KCk7XG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX3BhcmEuaC0xOC19XG4tLVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9wcGMuaC0yNS0jZW5kaWZcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fcHBjLmg6MjY6I2lmZGVmIENPTkZJR19LVk1fQk9PSzNTXzY0X0hBTkRMRVJcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fcHBjLmgtMjctI2luY2x1ZGUgXHUwMDNjYXNtL3BhY2EuaFx1MDAzZVxuLS1cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fcHBjLmg9NDQyPXN0cnVjdCBvcGVucGljO1xuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9wcGMuaC00NDMtXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX3BwYy5oOjQ0NDojaWZkZWYgQ09ORklHX0tWTV9CT09LM1NfSFZfUE9TU0lCTEVcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fcHBjLmgtNDQ1LWV4dGVybiB2b2lkIGt2bV9jbWFfcmVzZXJ2ZSh2b2lkKSBfX2luaXQ7XG4tLVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9wcGMuaD02NDg9c3RhdGljIGlubGluZSBpbnQga3ZtaHZfbmVzdGVkdjJfY2FjaGVkX3JlbG9hZChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUxNiBpZGVuKVxuLS1cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fcHBjLmgtNjU0LVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9wcGMuaDo2NTU6I2lmZGVmIENPTkZJR19LVk1fWElDU1xuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9wcGMuaC02NTYtc3RhdGljIGlubGluZSBpbnQga3ZtcHBjX3hpY3NfZW5hYmxlZChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9wcGMuaD03MDg9c3RhdGljIGlubGluZSBpbnQga3ZtcHBjX3hpdmVfeGljc19oY2FsbChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUzMiByZXEpXG4tLVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9wcGMuaC03MTEtXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX3BwYy5oOjcxMjojaWZkZWYgQ09ORklHX0tWTV9YSVZFXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX3BwYy5oLTcxMy0vKlxuLS1cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fcHBjLmg9NzkwPXN0YXRpYyBpbmxpbmUgaW50IGt2bXBwY194aXZlX25hdGl2ZV9zZXRfdnAoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuLS1cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fcHBjLmgtNzkzLVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9wcGMuaDo3OTQ6I2VuZGlmIC8qIENPTkZJR19LVk1fWElWRSAqL1xuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9wcGMuaC03OTUtXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX3BwYy5oOjc5NjojaWYgZGVmaW5lZChDT05GSUdfUFBDX1BPV0VSTlYpIFx1MDAyNlx1MDAyNiBkZWZpbmVkKENPTkZJR19LVk1fQk9PSzNTXzY0X0hBTkRMRVIpXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX3BwYy5oLTc5Ny1zdGF0aWMgaW5saW5lIGJvb2wgeGljc19vbl94aXZlKHZvaWQpXG4tLVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9wcGMuaD04NzU9c3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIGt2bXBwY19nZXRfZXByKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fcHBjLmgtODc2LXtcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fcHBjLmg6ODc3OiNpZmRlZiBDT05GSUdfS1ZNX0JPT0tFX0hWXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX3BwYy5oLTg3OC1cdHJldHVybiBtZnNwcihTUFJOX0dFUFIpO1xuLS1cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fcHBjLmg9ODg2PXN0YXRpYyBpbmxpbmUgdm9pZCBrdm1wcGNfc2V0X2VwcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUzMiBlcHIpXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX3BwYy5oLTg4Ny17XG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX3BwYy5oOjg4ODojaWZkZWYgQ09ORklHX0tWTV9CT09LRV9IVlxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9wcGMuaC04ODktXHRtdHNwcihTUFJOX0dFUFIsIGVwcik7XG4tLVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9wcGMuaC04OTQtXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX3BwYy5oOjg5NTojaWZkZWYgQ09ORklHX0tWTV9NUElDXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX3BwYy5oLTg5Ni1cbi0tXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX3BwYy5oPTkxND1zdGF0aWMgaW5saW5lIHZvaWQga3ZtcHBjX21waWNfZGlzY29ubmVjdF92Y3B1KHN0cnVjdCBvcGVucGljICpvcHAsXG4tLVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9wcGMuaC05MTgtXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX3BwYy5oOjkxOTojZW5kaWYgLyogQ09ORklHX0tWTV9NUElDICovXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX3BwYy5oLTkyMC1cbi0tXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX3BwYy5oPTk1Mj1zdGF0aWMgaW5saW5lIGJvb2wga3ZtcHBjX3NoYXJlZF9iaWdfZW5kaWFuKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fcHBjLmgtOTUzLXtcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fcHBjLmg6OTU0OiNpZiBkZWZpbmVkKENPTkZJR19QUENfQk9PSzNTXzY0KSBcdTAwMjZcdTAwMjYgZGVmaW5lZChDT05GSUdfS1ZNX0JPT0szU19QUl9QT1NTSUJMRSlcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fcHBjLmgtOTU1LVx0LyogT25seSBCb29rM1NfNjQgUFIgc3VwcG9ydHMgYmktZW5kaWFuIGZvciBub3cgKi9cbi0tXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX3BwYy5oPTk4OT1zdGF0aWMgaW5saW5lIHZvaWQga3ZtcHBjX3NldF8jI3JlZyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUjI3NpemUgdmFsKVx0XFxcbi0tXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX3BwYy5oLTEwMDctXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX3BwYy5oOjEwMDg6I2lmZGVmIENPTkZJR19LVk1fQk9PS0VfSFZcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fcHBjLmgtMTAwOS1cbi0tXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX3R5cGVzLmgtNC1cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fdHlwZXMuaDo1OiNpZiBJU19NT0RVTEUoQ09ORklHX0tWTV9CT09LM1NfNjRfUFIpIFx1MDAyNlx1MDAyNiBJU19NT0RVTEUoQ09ORklHX0tWTV9CT09LM1NfNjRfSFYpXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX3R5cGVzLmgtNi0jZGVmaW5lIEtWTV9TVUJfTU9EVUxFUyBrdm0tcHIsa3ZtLWh2XG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX3R5cGVzLmg6NzojZWxpZiBJU19NT0RVTEUoQ09ORklHX0tWTV9CT09LM1NfNjRfUFIpXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX3R5cGVzLmgtOC0jZGVmaW5lIEtWTV9TVUJfTU9EVUxFUyBrdm0tcHJcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fdHlwZXMuaDo5OiNlbGlmIElTX01PRFVMRShDT05GSUdfS1ZNX0JPT0szU182NF9IVilcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fdHlwZXMuaC0xMC0jZGVmaW5lIEtWTV9TVUJfTU9EVUxFUyBrdm0taHZcbi0tXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vbW11X2NvbnRleHQuaD0yMDc9c3RhdGljIGlubGluZSB2b2lkIG1tX2NvbnRleHRfcmVtb3ZlX2NvcHJvKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tKSB7IH1cbi0tXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vbW11X2NvbnRleHQuaC0yMDktXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vbW11X2NvbnRleHQuaDoyMTA6I2lmIGRlZmluZWQoQ09ORklHX0tWTV9CT09LM1NfSFZfUE9TU0lCTEUpIFx1MDAyNlx1MDAyNiBkZWZpbmVkKENPTkZJR19QUENfUkFESVhfTU1VKVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL21tdV9jb250ZXh0LmgtMjExLXZvaWQgZG9faF9ycHRfaW52YWxpZGF0ZV9wcnQodW5zaWduZWQgbG9uZyBwaWQsIHVuc2lnbmVkIGxvbmcgbHBpZCxcbi0tXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vcGFjYS5oLTI0LSNlbmRpZlxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3BhY2EuaDoyNTojaWZkZWYgQ09ORklHX0tWTV9CT09LM1NfNjRfSEFORExFUlxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3BhY2EuaC0yNi0jaW5jbHVkZSBcdTAwM2Nhc20va3ZtX2Jvb2szc19hc20uaFx1MDAzZVxuLS1cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9wYWNhLmg9NjE9c3RydWN0IHBhY2Ffc3RydWN0IHtcbi0tXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vcGFjYS5oLTE3Ni1cdHU4IGlycV93b3JrX3BlbmRpbmc7XHRcdC8qIElSUV9XT1JLIGludGVycnVwdCB3aGlsZSBzb2Z0LWRpc2FibGUgKi9cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9wYWNhLmg6MTc3OiNpZmRlZiBDT05GSUdfS1ZNX0JPT0szU19IVl9QT1NTSUJMRVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3BhY2EuaC0xNzgtXHR1OCBwbWNyZWdzX2luX3VzZTtcdFx0LyogcHNlcmllcyBwdXRzIHRoaXMgaW4gbHBwYWNhICovXG4tLVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3BhY2EuaC0yMDAtXHRcdHN0cnVjdCB7XG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vcGFjYS5oOjIwMTojaWZkZWYgQ09ORklHX0tWTV9CT09LM1NfSFZfUE9TU0lCTEVcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9wYWNhLmgtMjAyLVx0XHRcdC8qIFRoZSBQU1NDUiB2YWx1ZSB0aGF0IHRoZSBrZXJuZWwgcmVxdWVzdGVkIGJlZm9yZSBnb2luZyB0byBzdG9wICovXG4tLVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3BhY2EuaC0yMzYtXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vcGFjYS5oOjIzNzojaWZkZWYgQ09ORklHX0tWTV9CT09LM1NfSEFORExFUlxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3BhY2EuaDoyMzg6I2lmZGVmIENPTkZJR19LVk1fQk9PSzNTX1BSX1BPU1NJQkxFXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vcGFjYS5oLTIzOS1cdC8qIFdlIHVzZSB0aGlzIHRvIHN0b3JlIGd1ZXN0IHN0YXRlIGluICovXG4tLVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3BhY2EuaC0yNDItXHRzdHJ1Y3Qga3ZtcHBjX2hvc3Rfc3RhdGUga3ZtX2hzdGF0ZTtcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9wYWNhLmg6MjQzOiNpZmRlZiBDT05GSUdfS1ZNX0JPT0szU19IVl9QT1NTSUJMRVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3BhY2EuaC0yNDQtXHQvKlxuLS1cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9wbWMuaD0yMz1zdGF0aWMgaW5saW5lIHZvaWQgcHBjX3NldF9wbXVfaW51c2UoaW50IGludXNlKVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3BtYy5oLTI0LXtcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9wbWMuaDoyNTojaWYgZGVmaW5lZChDT05GSUdfUFBDX1BTRVJJRVMpIHx8IGRlZmluZWQoQ09ORklHX0tWTV9CT09LM1NfSFZfUE9TU0lCTEUpXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vcG1jLmgtMjYtXHRpZiAoZmlybXdhcmVfaGFzX2ZlYXR1cmUoRldfRkVBVFVSRV9MUEFSKSkge1xuLS1cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9wbWMuaC0zMC1cdH1cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9wbWMuaDozMTojaWZkZWYgQ09ORklHX0tWTV9CT09LM1NfSFZfUE9TU0lCTEVcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9wbWMuaC0zMi1cdGdldF9wYWNhKCktXHUwMDNlcG1jcmVnc19pbl91c2UgPSBpbnVzZTtcbi0tXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vcG1jLmgtMzYtXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vcG1jLmg6Mzc6I2lmZGVmIENPTkZJR19LVk1fQk9PSzNTX0hWX1BPU1NJQkxFXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vcG1jLmgtMzgtc3RhdGljIGlubGluZSBpbnQgcHBjX2dldF9wbXVfaW51c2Uodm9pZClcbi0tXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vcHJvY2Vzc29yLmg9MTMzPXN0cnVjdCB0aHJlYWRfc3RydWN0IHtcbi0tXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vcHJvY2Vzc29yLmgtMjI1LSNlbmRpZiAvKiBDT05GSUdfUFBDX1RSQU5TQUNUSU9OQUxfTUVNICovXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vcHJvY2Vzc29yLmg6MjI2OiNpZmRlZiBDT05GSUdfS1ZNX0JPT0szU18zMl9IQU5ETEVSXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vcHJvY2Vzc29yLmgtMjI3LVx0dm9pZCpcdFx0a3ZtX3NoYWRvd192Y3B1OyAvKiBLVk0gaW50ZXJuYWwgZGF0YSAqL1xuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3Byb2Nlc3Nvci5oOjIyODojZW5kaWYgLyogQ09ORklHX0tWTV9CT09LM1NfMzJfSEFORExFUiAqL1xuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3Byb2Nlc3Nvci5oOjIyOTojaWYgZGVmaW5lZChDT05GSUdfS1ZNKSBcdTAwMjZcdTAwMjYgZGVmaW5lZChDT05GSUdfQk9PS0UpXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vcHJvY2Vzc29yLmgtMjMwLVx0c3RydWN0IGt2bV92Y3B1XHQqa3ZtX3ZjcHU7XG4tLVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3RpbWUuaD0xMDE9c3RhdGljIGlubGluZSB1NjQgdGltZXJfZ2V0X25leHRfdGIodm9pZClcbi0tXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vdGltZS5oLTEwNS1cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS90aW1lLmg6MTA2OiNpZmRlZiBDT05GSUdfS1ZNX0JPT0szU19IVl9QT1NTSUJMRVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3RpbWUuaC0xMDctdm9pZCB0aW1lcl9yZWFybV9ob3N0X2RlYyh1NjQgbm93KTtcbi0tXG5hcmNoL3Bvd2VycGMva2VybmVsL01ha2VmaWxlPTE2Mj1vYmotJChDT05GSUdfRVBBUFJfUEFSQVZJUlQpXHQmIzQzOz0gZXBhcHJfcGFyYXZpcnQubyBlcGFwcl9oY2FsbHMub1xuYXJjaC9wb3dlcnBjL2tlcm5lbC9NYWtlZmlsZToxNjM6b2JqLSQoQ09ORklHX0tWTV9HVUVTVClcdFx0JiM0Mzs9IGt2bS5vIGt2bV9lbXVsLm9cbmFyY2gvcG93ZXJwYy9rZXJuZWwvTWFrZWZpbGUtMTY0LWlmbmVxICgkKENPTkZJR19QUENfUE9XRVJOVikkKENPTkZJR19QUENfU1ZNKSwpXG4tLVxuYXJjaC9wb3dlcnBjL2tlcm5lbC9hc20tb2Zmc2V0cy5jLTQ4LSNlbmRpZlxuYXJjaC9wb3dlcnBjL2tlcm5lbC9hc20tb2Zmc2V0cy5jOjQ5OiNpZiBkZWZpbmVkKENPTkZJR19LVk0pIHx8IGRlZmluZWQoQ09ORklHX0tWTV9HVUVTVClcbmFyY2gvcG93ZXJwYy9rZXJuZWwvYXNtLW9mZnNldHMuYy01MC0jaW5jbHVkZSBcdTAwM2NsaW51eC9rdm1faG9zdC5oXHUwMDNlXG5hcmNoL3Bvd2VycGMva2VybmVsL2FzbS1vZmZzZXRzLmMtNTEtI2VuZGlmXG5hcmNoL3Bvd2VycGMva2VybmVsL2FzbS1vZmZzZXRzLmM6NTI6I2lmIGRlZmluZWQoQ09ORklHX0tWTSkgXHUwMDI2XHUwMDI2IGRlZmluZWQoQ09ORklHX1BQQ19CT09LM1MpXG5hcmNoL3Bvd2VycGMva2VybmVsL2FzbS1vZmZzZXRzLmMtNTMtI2luY2x1ZGUgXHUwMDNjYXNtL2t2bV9ib29rM3MuaFx1MDAzZVxuLS1cbmFyY2gvcG93ZXJwYy9rZXJuZWwvYXNtLW9mZnNldHMuYz03OD1pbnQgbWFpbih2b2lkKVxuLS1cbmFyY2gvcG93ZXJwYy9rZXJuZWwvYXNtLW9mZnNldHMuYy0xNTAtI2VuZGlmIC8qIENPTkZJR19QUEM2NCAqL1xuYXJjaC9wb3dlcnBjL2tlcm5lbC9hc20tb2Zmc2V0cy5jOjE1MTojaWZkZWYgQ09ORklHX0tWTV9CT09LM1NfMzJfSEFORExFUlxuYXJjaC9wb3dlcnBjL2tlcm5lbC9hc20tb2Zmc2V0cy5jLTE1Mi1cdE9GRlNFVChUSFJFQURfS1ZNX1NWQ1BVLCB0aHJlYWRfc3RydWN0LCBrdm1fc2hhZG93X3ZjcHUpO1xuYXJjaC9wb3dlcnBjL2tlcm5lbC9hc20tb2Zmc2V0cy5jLTE1My0jZW5kaWZcbmFyY2gvcG93ZXJwYy9rZXJuZWwvYXNtLW9mZnNldHMuYzoxNTQ6I2lmIGRlZmluZWQoQ09ORklHX0tWTSkgXHUwMDI2XHUwMDI2IGRlZmluZWQoQ09ORklHX0JPT0tFKVxuYXJjaC9wb3dlcnBjL2tlcm5lbC9hc20tb2Zmc2V0cy5jLTE1NS1cdE9GRlNFVChUSFJFQURfS1ZNX1ZDUFUsIHRocmVhZF9zdHJ1Y3QsIGt2bV92Y3B1KTtcbi0tXG5hcmNoL3Bvd2VycGMva2VybmVsL2FzbS1vZmZzZXRzLmMtMjMwLVx0T0ZGU0VUKExQUEFDQV9QTUNJTlVTRSwgbHBwYWNhLCBwbWNyZWdzX2luX3VzZSk7XG5hcmNoL3Bvd2VycGMva2VybmVsL2FzbS1vZmZzZXRzLmM6MjMxOiNpZmRlZiBDT05GSUdfS1ZNX0JPT0szU19IVl9QT1NTSUJMRVxuYXJjaC9wb3dlcnBjL2tlcm5lbC9hc20tb2Zmc2V0cy5jLTIzMi1cdE9GRlNFVChQQUNBX1BNQ0lOVVNFLCBwYWNhX3N0cnVjdCwgcG1jcmVnc19pbl91c2UpO1xuLS1cbmFyY2gvcG93ZXJwYy9rZXJuZWwvYXNtLW9mZnNldHMuYy0zNTMtXG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMyAxNToyOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDE5OAoJCQkJCQkJb3V0cHV0OiAyMwoJCQkJCQkJdGhvdWdodHM6IDY1MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEtWTSBPT00gTm90aWZpZXIgUGF0Y2ggZm9yIEZ1enppbmcqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93biBmb3IgZnV6emluZyBwdXJwb3Nlcy4gRmlyc3QsIHRoZSBjb3JlIG9mIHRoaXMgcGF0Y2ggcmV2b2x2ZXMgYXJvdW5kIGBtbXVfbm90aWZpZXJgIGludGVncmF0aW9uLCBzcGVjaWZpY2FsbHkgaW4gdGhlIGNvbnRleHQgb2YgT3V0LU9mLU1lbW9yeSAoT09NKSBzaXR1YXRpb25zLCB3aXRoIGEgS1ZNLXNwZWNpZmljIGltcGxlbWVudGF0aW9uLiBJIHNlZSB0aGF0IGBDT05GSUdfS1ZNYCBpcywgb2YgY291cnNlLCBhIGdpdmVuLCBhbmQgdGhpcyBwYXRjaCByZWxpZXMgb24gYG1tdV9ub3RpZmllcmAgZnVuY3Rpb25hbGl0eSwgcmVxdWlyaW5nIGBDT05GSUdfTU1VX05PVElGSUVSYC4gIFNpbmNlIGBfX29vbV9yZWFwX3Rhc2tfbW1gIGNhbGxzIGBtbXVfbm90aWZpZXJfb29tX2VudGVyYCB3aGljaCByZXF1aXJlcyBgQ09ORklHX01NVWAsIGFuZCBgQ09ORklHX01NVWAgaXMgbmVhcmx5IHViaXF1aXRvdXMsIHdlJiMzOTtyZSBsaWtlbHkgZ29vZCBvbiB0aGUgYmFzZSBjb25maWdzLgoKTXkgZm9jdXMgaGFzIHRvIGJlIG9uIHRoZSBuZXcgYW5kIG1vZGlmaWVkIGZ1bmN0aW9ucy4gU28sIHRoZSBrZXkgZnVuY3Rpb25zIHRoYXQgYXJlIGFkZGVkIG9yIGhhdmUgY2hhbmdlZCB3aXRoaW4gdGhpcyBwYXRjaCBhcmU6IGBtbXVfbm90aWZpZXJfb29tX2VudGVyYCwgYG1tdV9ub3RpZmllcl9iYXJyaWVyYCwgYG1tdV9ub3RpZmllcl9vb21fY2FsbGJhY2tfZm5gLCBga3ZtX21tdV9ub3RpZmllcl9hZnRlcl9vb21fdW5yZWdpc3RlcmAsIGBrdm1fZGVzdHJveV92bWAgKG1vZGlmaWVkKSwgYW5kIGBfX29vbV9yZWFwX3Rhc2tfbW1gIChtb2RpZmllZCkuCgpOb3csIHRvIGRldGVybWluZSB0aGUgbW9zdCBlZmZlY3RpdmUgZnV6emluZyB0YXJnZXRzLCBJIG5lZWQgdG8gbWFwIHRoZWlyIGNhbGwgcGF0aHMuIGBtbXVfbm90aWZpZXJfb29tX2VudGVyYCBpcyBjYWxsZWQgYnkgYF9fb29tX3JlYXBfdGFza19tbWAuIGBrdm1fbW11X25vdGlmaWVyX2FmdGVyX29vbV91bnJlZ2lzdGVyYCBpcyBjYWxsZWQgYnkgYG1tdV9ub3RpZmllcl9vb21fY2FsbGJhY2tfZm5gLiBBbmQgYG1tdV9ub3RpZmllcl9iYXJyaWVyYCBpcyBjYWxsZWQgYnkgYGt2bV9kZXN0cm95X3ZtYC4gVGhhdCYjMzk7cyBhIGdvb2Qgc3RhcnQuIEkgY2FuIGFsc28gZm9jdXMgb24gYF9fb29tX3JlYXBfdGFza19tbWAgYmVjYXVzZSBpdCYjMzk7cyB0aGUgZW50cnkgcG9pbnQgdG8gdGhlIG5ldyBPT00gbG9naWMsIGV2ZW4gdGhvdWdoIGBtbXVfbm90aWZpZXJfb29tX2VudGVyYCBpcyBhIG1vcmUgc3BlY2lmaWMgdGFyZ2V0LiBTaW1pbGFybHksIGBrdm1fZGVzdHJveV92bWAgaXMgaW50ZXJlc3RpbmcgYmVjYXVzZSBvZiB0aGUgbW9kaWZpY2F0aW9ucyB0byBoYW5kbGUgdGhlIHVuaGFzaGVkIGhsaXN0LgoKU28sIHRha2luZyBhbGwgb2YgdGhpcyBpbnRvIGFjY291bnQsIEkmIzM5O20gZ29pbmcgdG8gcHJpb3JpdGl6ZSB0aGVzZSBzeW1ib2xzIGZvciBmdXp6aW5nOiBgbW11X25vdGlmaWVyX29vbV9lbnRlcmAsIGBtbXVfbm90aWZpZXJfYmFycmllcmAsIGBtbXVfbm90aWZpZXJfb29tX2NhbGxiYWNrX2ZuYCwgYGt2bV9tbXVfbm90aWZpZXJfYWZ0ZXJfb29tX3VucmVnaXN0ZXJgLCBhbmQgYGt2bV9kZXN0cm95X3ZtYC4gSSYjMzk7bSBjb25maWRlbnQgaW4gdGhvc2UgbmFtZXMgYXMgdGhleSBhcHBlYXIuCgpGaW5hbGx5LCBsZXQgbWUganVzdCB2ZXJpZnkgdGhhdCBgX19vb21fcmVhcF90YXNrX21tYCBkb2VzbiYjMzk7dCBoYXZlIGFueSBjb25kaXRpb25hbCBjb21waWxhdGlvbiBkaXJlY3RpdmVzIHRoYXQgd291bGQgbWFrZSBpdCB1bmF2YWlsYWJsZSB1bmRlciBjZXJ0YWluIGNvbmZpZ3VyYXRpb25zLiBTaW5jZSBpdCBsaXZlcyBpbiBgbW0vb29tX2tpbGwuY2AsIEkmIzM5O2xsIHF1aWNrbHkgY2hlY2sgZm9yIHRoYXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMTU6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7X19vb21fcmVhcF90YXNrX21tJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL29vbV9raWxsLmM9NTExPXN0YXRpYyBERUZJTkVfU1BJTkxPQ0sob29tX3JlYXBlcl9sb2NrKTtcbm1tL29vbV9raWxsLmMtNTEyLVxubW0vb29tX2tpbGwuYzo1MTM6c3RhdGljIGJvb2wgX19vb21fcmVhcF90YXNrX21tKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tKVxubW0vb29tX2tpbGwuYy01MTQte1xuLS1cbm1tL29vbV9raWxsLmM9NTY1PXN0YXRpYyBib29sIG9vbV9yZWFwX3Rhc2tfbW0oc3RydWN0IHRhc2tfc3RydWN0ICp0c2ssIHN0cnVjdCBtbV9zdHJ1Y3QgKm1tKVxuLS1cbm1tL29vbV9raWxsLmMtNTg3LVx0LyogZmFpbGVkIHRvIHJlYXAgcGFydCBvZiB0aGUgYWRkcmVzcyBzcGFjZS4gVHJ5IGFnYWluIGxhdGVyICovXG5tbS9vb21fa2lsbC5jOjU4ODpcdHJldCA9IF9fb29tX3JlYXBfdGFza19tbShtbSk7XG5tbS9vb21fa2lsbC5jLTU4OS1cdGlmICghcmV0KVxuLS1cbm1tL29vbV9raWxsLmM9MTE5OD1TWVNDQUxMX0RFRklORTIocHJvY2Vzc19tcmVsZWFzZSwgaW50LCBwaWRmZCwgdW5zaWduZWQgaW50LCBmbGFncylcbi0tXG5tbS9vb21fa2lsbC5jLTEyNDctXHQgKi9cbm1tL29vbV9raWxsLmM6MTI0ODpcdGlmICghbW1fZmxhZ3NfdGVzdChNTUZfT09NX1NLSVAsIG1tKSBcdTAwMjZcdTAwMjYgIV9fb29tX3JlYXBfdGFza19tbShtbSkpXG5tbS9vb21fa2lsbC5jLTEyNDktXHRcdHJldCA9IC1FQUdBSU47XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMTU6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjE3OTUKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiA5NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFJvbGUgb2YgYF9fb29tX3JlYXBfdGFza19tbWAqKgoKT2theSwgc28gYF9fb29tX3JlYXBfdGFza19tbWAgbGl2ZXMgd2l0aGluIGBtbS9vb21fa2lsbC5jYCwgd2hpY2gsIGlmIEkgcmVjYWxsIGNvcnJlY3RseSwgaXMgYWx3YXlzIGNvbXBpbGVkIG9yIGF0IGxlYXN0IGRlcGVuZHMgb24gdGhlIE1NVS4gVGhhdCBtYWtlcyBzZW5zZSwgZ2l2ZW4gdGhlIGZ1bmN0aW9uJiMzOTtzIG5hbWUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBjb250ZXh0IHdpdGhpbiB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24uIEkgcmVtZW1iZXIgdGhlIGVuYWJsaW5nIGNvbmZpZ3MgYXJlIGBNTVVfTk9USUZJRVJgIGFuZCBgS1ZNYCwgc3BlY2lmaWNhbGx5LgoKTm93LCBteSBsaW5lIG9mIGlucXVpcnkgaXMgY2xlYXI6IElzIGBNTVVfTk9USUZJRVJgIGRpcmVjdGx5IHVzZXItc2VsZWN0YWJsZSwgb3IgaXMgaXQgYSBkZXBlbmRlbmN5IG9mIGFub3RoZXIgY29uZmlnPyBJJiMzOTtsbCBoZWFkIG92ZXIgdG8gYG1tL0tjb25maWdgIG9yIGEgc2ltaWxhciBjb25maWd1cmF0aW9uIGZpbGUgaW4gdGhlIG1lbW9yeSBtYW5hZ2VtZW50IHN1YnRyZWUuIFRoYXQgc2hvdWxkIGJlIHRoZSBkZWZpbml0aXZlIHBsYWNlIHRvIHRyYWNrIGRvd24gdGhlIHJlbGF0aW9uc2hpcCBhbmQgZW5zdXJlIEkgdW5kZXJzdGFuZCBob3cgdGhpcyBjb21wb25lbnQgaXMgYWN0dWFsbHkgZW5hYmxlZCBpbiBkaWZmZXJlbnQgYnVpbGRzLiBJIG5lZWQgYSBjbGVhciBwaWN0dXJlIG9mIGl0cyBjb25maWd1cmFiaWxpdHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIzIDE1OjI5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBNTVVfTk9USUZJRVImIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vS2NvbmZpZz03MzM9Y29uZmlnIFBIWVNfQUREUl9UXzY0QklUXG4tLVxubW0vS2NvbmZpZy03MzUtXG5tbS9LY29uZmlnOjczNjpjb25maWcgTU1VX05PVElGSUVSXG5tbS9LY29uZmlnLTczNy1cdGJvb2xcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMTU6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjIxNzYKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiA3NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIHNlZSwgSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYE1NVV9OT1RJRklFUmAgb3B0aW9uLiBJdCYjMzk7cyBhIGBib29sYCBhbmQgSSBkb24mIzM5O3Qgc2VlIGFueSBhc3NvY2lhdGVkIHByb21wdCB3aXRoIGl0LCB3aGljaCBtZWFucyBpdCYjMzk7cyBsaWtlbHkgYmVpbmcgc2VsZWN0ZWQgYnkgb3RoZXIgY29uZmlndXJhdGlvbnMuIFJpZ2h0LCB0aGF0IG1ha2VzIHNlbnNlLgoKKipBbmFseXppbmcgdGhlIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jeSoqCgpUaGUgc3RyYXRlZ3kgaGVyZSBpcyB0byBqdXN0IGxpc3QgYE1NVV9OT1RJRklFUmAgaW4gdGhlIGNvbmZpZ3VyYXRpb24uIFRoZSBzeXprYWxsZXIgY29uZmlnIHN5c3RlbSBzaG91bGQgaGFuZGxlIHRoZSByZXN0IC0gaXQgd2lsbCBlaXRoZXIgZW5hYmxlIGBNTVVfTk9USUZJRVJgIGRpcmVjdGx5IG9yIGVuYWJsZSBhbm90aGVyIGNvbmZpZ3VyYXRpb24gb3B0aW9uIHRoYXQgc2VsZWN0cyBpdCwgYmFzZWQgb24gdGhlIGRlcGVuZGVuY2llcy4gTm93LCBoYW5nIG9uIGEgc2Vjb25kLi4uIGlzIGBLVk1gIGFjdHVhbGx5IG9uZSBvZiB0aGUgb3B0aW9ucyB0aGF0IHNlbGVjdHMgYE1NVV9OT1RJRklFUmA/IFRoYXQmIzM5O3MgYSByZWFzb25hYmxlIGFzc3VtcHRpb24sIGJ1dCBJIHNob3VsZCBwcm9iYWJseSBjb25maXJtIGl0IHRvIGJlIGNlcnRhaW4uIExldCYjMzk7cyBkaWcgZGVlcGVyIGFuZCB2ZXJpZnkgdGhhdC4gSXQmIzM5O3MgYWx3YXlzIGJlc3QgdG8gYmUgcHJlY2lzZSB3aGVuIGRlYWxpbmcgd2l0aCBrZXJuZWwgY29uZmlndXJhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMTU6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2VsZWN0IE1NVV9OT1RJRklFUiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3Bvd2VybnYvS2NvbmZpZz0yPWNvbmZpZyBQUENfUE9XRVJOVlxuLS1cbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcG93ZXJudi9LY29uZmlnLTE3LVx0c2VsZWN0IFBQQ19ET09SQkVMTFxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wb3dlcm52L0tjb25maWc6MTg6XHRzZWxlY3QgTU1VX05PVElGSUVSXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3Bvd2VybnYvS2NvbmZpZy0xOS1cdHNlbGVjdCBGT1JDRV9TTVBcbi0tXG5hcmNoL3g4Ni9LY29uZmlnPTE4Mjc9Y29uZmlnIFg4Nl9TR1hcbi0tXG5hcmNoL3g4Ni9LY29uZmlnLTE4MzAtXHRzZWxlY3QgQ1JZUFRPX0xJQl9TSEEyNTZcbmFyY2gveDg2L0tjb25maWc6MTgzMTpcdHNlbGVjdCBNTVVfTk9USUZJRVJcbmFyY2gveDg2L0tjb25maWctMTgzMi1cdHNlbGVjdCBOVU1BX0tFRVBfTUVNSU5GTyBpZiBOVU1BXG4tLVxuZHJpdmVycy9ncHUvZHJtL0tjb25maWc9MjI4PWNvbmZpZyBEUk1fR1BVU1ZNXG4tLVxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMjMxLVx0c2VsZWN0IEhNTV9NSVJST1JcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnOjIzMjpcdHNlbGVjdCBNTVVfTk9USUZJRVJcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTIzMy1cdGhlbHBcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9LY29uZmlnPTc1PWNvbmZpZyBEUk1fQU1ER1BVX1VTRVJQVFJcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9LY29uZmlnLTc4LVx0c2VsZWN0IEhNTV9NSVJST1JcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L0tjb25maWc6Nzk6XHRzZWxlY3QgTU1VX05PVElGSUVSXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9LY29uZmlnLTgwLVx0aGVscFxuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL0tjb25maWc9Nj1jb25maWcgSFNBX0FNRFxuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL0tjb25maWctOS1cdHNlbGVjdCBITU1fTUlSUk9SXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9LY29uZmlnOjEwOlx0c2VsZWN0IE1NVV9OT1RJRklFUlxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQvS2NvbmZpZy0xMS1cdHNlbGVjdCBEUk1fQU1ER1BVX1VTRVJQVFJcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9LY29uZmlnPTE1PWNvbmZpZyBIU0FfQU1EX1NWTVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL0tjb25maWctMTktXHRzZWxlY3QgSE1NX01JUlJPUlxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQvS2NvbmZpZzoyMDpcdHNlbGVjdCBNTVVfTk9USUZJRVJcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL0tjb25maWctMjEtXHRoZWxwXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvS2NvbmZpZz0xMTQ9Y29uZmlnIERSTV9JOTE1X1VTRVJQVFJcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9LY29uZmlnLTExNi1cdGRlcGVuZHMgb24gRFJNX0k5MTVcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L0tjb25maWc6MTE3Olx0c2VsZWN0IE1NVV9OT1RJRklFUlxuZHJpdmVycy9ncHUvZHJtL2k5MTUvS2NvbmZpZy0xMTgtXHRkZWZhdWx0IHlcbi0tXG5kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9LY29uZmlnPTk0PWNvbmZpZyBEUk1fTk9VVkVBVV9TVk1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9LY29uZmlnLTk5LVx0c2VsZWN0IEhNTV9NSVJST1JcbmRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L0tjb25maWc6MTAwOlx0c2VsZWN0IE1NVV9OT1RJRklFUlxuZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvS2NvbmZpZy0xMDEtXHRkZWZhdWx0IG5cbi0tXG5kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL0tjb25maWc9Mzg9Y29uZmlnIERSTV9SQURFT05fVVNFUlBUUlxuLS1cbmRyaXZlcnMvZ3B1L2RybS9yYWRlb24vS2NvbmZpZy00MC1cdGRlcGVuZHMgb24gRFJNX1JBREVPTlxuZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9LY29uZmlnOjQxOlx0c2VsZWN0IE1NVV9OT1RJRklFUlxuZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9LY29uZmlnLTQyLVx0aGVscFxuLS1cbmRyaXZlcnMvZ3B1L2RybS94ZS9LY29uZmlnPTI9Y29uZmlnIERSTV9YRVxuLS1cbmRyaXZlcnMvZ3B1L2RybS94ZS9LY29uZmlnLTQ0LVx0c2VsZWN0IERSTV9TQ0hFRFxuZHJpdmVycy9ncHUvZHJtL3hlL0tjb25maWc6NDU6XHRzZWxlY3QgTU1VX05PVElGSUVSXG5kcml2ZXJzL2dwdS9kcm0veGUvS2NvbmZpZy00Ni1cdHNlbGVjdCBXQU5UX0RFVl9DT1JFRFVNUFxuLS1cbmRyaXZlcnMvaHYvS2NvbmZpZz02OD1jb25maWcgTVNIVl9ST09UXG4tLVxuZHJpdmVycy9odi9LY29uZmlnLTgwLVx0c2VsZWN0IEhNTV9NSVJST1JcbmRyaXZlcnMvaHYvS2NvbmZpZzo4MTpcdHNlbGVjdCBNTVVfTk9USUZJRVJcbmRyaXZlcnMvaHYvS2NvbmZpZy04Mi1cdGRlZmF1bHQgblxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnPTUxPWNvbmZpZyBJTkZJTklCQU5EX09OX0RFTUFORF9QQUdJTkdcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZy01My1cdGRlcGVuZHMgb24gSU5GSU5JQkFORF9VU0VSX01FTVxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWc6NTQ6XHRzZWxlY3QgTU1VX05PVElGSUVSXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZy01NS1cdHNlbGVjdCBJTlRFUlZBTF9UUkVFXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2hmaTEvS2NvbmZpZz0yPWNvbmZpZyBJTkZJTklCQU5EX0hGSTFcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvaGZpMS9LY29uZmlnLTQtXHRkZXBlbmRzIG9uIFg4Nl82NCBcdTAwMjZcdTAwMjYgSU5GSU5JQkFORF9SRE1BVlQgXHUwMDI2XHUwMDI2IEkyQyBcdTAwMjZcdTAwMjYgIVVNTFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2hmaTEvS2NvbmZpZzo1Olx0c2VsZWN0IE1NVV9OT1RJRklFUlxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2hmaTEvS2NvbmZpZy02LVx0c2VsZWN0IENSQzMyXG4tLVxuZHJpdmVycy9pb21tdS9hbWQvS2NvbmZpZz0zPWNvbmZpZyBBTURfSU9NTVVcbi0tXG5kcml2ZXJzL2lvbW11L2FtZC9LY29uZmlnLTEwLVx0c2VsZWN0IElSUV9NU0lfTElCXG5kcml2ZXJzL2lvbW11L2FtZC9LY29uZmlnOjExOlx0c2VsZWN0IE1NVV9OT1RJRklFUlxuZHJpdmVycy9pb21tdS9hbWQvS2NvbmZpZy0xMi1cdHNlbGVjdCBJT01NVV9BUElcbi0tXG5kcml2ZXJzL2lvbW11L2FybS9LY29uZmlnPTkxPWNvbmZpZyBBUk1fU01NVV9WM19TVkFcbi0tXG5kcml2ZXJzL2lvbW11L2FybS9LY29uZmlnLTk0LVx0c2VsZWN0IElPTU1VX0lPUEZcbmRyaXZlcnMvaW9tbXUvYXJtL0tjb25maWc6OTU6XHRzZWxlY3QgTU1VX05PVElGSUVSXG5kcml2ZXJzL2lvbW11L2FybS9LY29uZmlnLTk2LVx0aGVscFxuLS1cbmRyaXZlcnMvaW9tbXUvaW50ZWwvS2NvbmZpZz01Mz1jb25maWcgSU5URUxfSU9NTVVfU1ZNXG4tLVxuZHJpdmVycy9pb21tdS9pbnRlbC9LY29uZmlnLTU1LVx0ZGVwZW5kcyBvbiBYODZfNjRcbmRyaXZlcnMvaW9tbXUvaW50ZWwvS2NvbmZpZzo1NjpcdHNlbGVjdCBNTVVfTk9USUZJRVJcbmRyaXZlcnMvaW9tbXUvaW50ZWwvS2NvbmZpZy01Ny1cdHNlbGVjdCBJT01NVV9TVkFcbi0tXG5kcml2ZXJzL21pc2MvS2NvbmZpZz0zMTM9Y29uZmlnIFNHSV9HUlVcbi0tXG5kcml2ZXJzL21pc2MvS2NvbmZpZy0zMTUtXHRkZXBlbmRzIG9uIFg4Nl9VViBcdTAwMjZcdTAwMjYgU01QXG5kcml2ZXJzL21pc2MvS2NvbmZpZzozMTY6XHRzZWxlY3QgTU1VX05PVElGSUVSXG5kcml2ZXJzL21pc2MvS2NvbmZpZy0zMTctXHRoZWxwXG4tLVxuZHJpdmVycy94ZW4vS2NvbmZpZz0xMzY9Y29uZmlnIFhFTl9HTlRERVZcbi0tXG5kcml2ZXJzL3hlbi9LY29uZmlnLTEzOS1cdGRlZmF1bHQgbVxuZHJpdmVycy94ZW4vS2NvbmZpZzoxNDA6XHRzZWxlY3QgTU1VX05PVElGSUVSXG5kcml2ZXJzL3hlbi9LY29uZmlnLTE0MS1cdHNlbGVjdCBGSU5EX05PUk1BTF9QQUdFXG4tLVxubGliL0tjb25maWcuZGVidWc9MzM1ND1jb25maWcgVEVTVF9ITU1cbi0tXG5saWIvS2NvbmZpZy5kZWJ1Zy0zMzU4LVx0c2VsZWN0IEhNTV9NSVJST1JcbmxpYi9LY29uZmlnLmRlYnVnOjMzNTk6XHRzZWxlY3QgTU1VX05PVElGSUVSXG5saWIvS2NvbmZpZy5kZWJ1Zy0zMzYwLVx0aGVscFxuLS1cbnZpcnQva3ZtL0tjb25maWc9ND1jb25maWcgS1ZNX0NPTU1PTlxuLS1cbnZpcnQva3ZtL0tjb25maWctNy0gICAgICAgc2VsZWN0IElOVEVSVkFMX1RSRUVcbnZpcnQva3ZtL0tjb25maWc6ODogICAgICAgc2VsZWN0IE1NVV9OT1RJRklFUlxudmlydC9rdm0vS2NvbmZpZy05LSAgICAgICBzZWxlY3QgUFJFRU1QVF9OT1RJRklFUlNcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMTU6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjQzMjUKCQkJCQkJCW91dHB1dDogMjA5CgkJCQkJCQl0aG91Z2h0czogOTk0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZvY3VzaW5nIHRoZSBGdXp6OiBLVk0gYW5kIE9PTSBDbGVhbnVwKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24gZm9yIGZ1enppbmcuIEl0IGxvb2tzIGxpa2UgYEtWTV9DT01NT05gIHNlbGVjdHMgYE1NVV9OT1RJRklFUmAsIGFuZCBgS1ZNYCBzZWxlY3RzIGBLVk1fQ09NTU9OYC4gVGhlcmVmb3JlLCBlbmFibGluZyBgS1ZNYCBpcyBkZWZpbml0ZWx5IHRoZSByaWdodCBjb25maWcgdG8gZ2V0IGV2ZXJ5dGhpbmcgcmVsYXRlZCB0byB0aGUgcGF0Y2ggZW5hYmxlZC4gIGBLVk1gIGlzIHByZXR0eSBzdGFuZGFyZCwgc28gd2UgY2FuIGp1c3QgbGlzdCB0aGF0LgoKVGhlIHBhdGNoIGl0c2VsZiB0b3VjaGVzIGB2aXJ0L2t2bS9rdm1fbWFpbi5jYCwgd2hpY2ggdGVsbHMgbWUgdGhhdCBgS1ZNYCBpcyBuZWNlc3NhcnkgdG8gdGVzdCB0aGUgS1ZNLXNwZWNpZmljIGltcGxlbWVudGF0aW9uIG9mIGBhZnRlcl9vb21fdW5yZWdpc3RlcmAuIFRoZSBjZW50cmFsIGxvZ2ljIGlzIGluIGBtbS9tbXVfbm90aWZpZXIuY2AgYW5kIGBtbS9vb21fa2lsbC5jYCwgc28gYEtWTWAgc2hvdWxkIGJlIHN1ZmZpY2llbnQgdG8gZW5hYmxlIGBNTVVfTk9USUZJRVJgIGFuZCB0ZXN0IHRoZSB3aG9sZSBmbG93LgoKTm93LCBsZXQmIzM5O3MgbmFpbCBkb3duIHRoZSBrZXkgc3ltYm9scy4gV2UgaGF2ZTogYG1tdV9ub3RpZmllcl9vb21fZW50ZXJgLCBgbW11X25vdGlmaWVyX2JhcnJpZXJgLCBgbW11X25vdGlmaWVyX29vbV9jYWxsYmFja19mbmAsIGBrdm1fbW11X25vdGlmaWVyX2FmdGVyX29vbV91bnJlZ2lzdGVyYCwgYW5kIGBrdm1fZGVzdHJveV92bWAuCgpPa2F5LCBkaWdnaW5nIGEgYml0IGRlZXBlciwgYG1tdV9ub3RpZmllcl9vb21fZW50ZXJgIGlzIGNhbGxlZCBmcm9tIGBfX29vbV9yZWFwX3Rhc2tfbW1gLiBgX19vb21fcmVhcF90YXNrX21tYCBpcyBpbiB0dXJuIGNhbGxlZCBmcm9tIGBvb21fcmVhcF90YXNrX21tYCBhbmQgYHByb2Nlc3NfbXJlbGVhc2VgLiAgYHByb2Nlc3NfbXJlbGVhc2VgIGlzIGEgc3lzY2FsbC4gIEludGVyZXN0aW5nLiBTbywgZnV6emluZyBgcHJvY2Vzc19tcmVsZWFzZWAgc2hvdWxkIGJlIGEgcGF0aCB0byB0cmlnZ2VyIGBtbXVfbm90aWZpZXJfb29tX2VudGVyYC4gU3l6a2FsbGVyIHdpbGwgYWxyZWFkeSBmdXp6IGBwcm9jZXNzX21yZWxlYXNlYCBzaW5jZSBpdCYjMzk7cyBhIHN5c2NhbGwsIGJ1dCBsZXQmIzM5O3MgYWRkIGl0IHRvIHRoZSBmb2N1cyBzeW1ib2xzIHRvIGVuY291cmFnZSB0aGUgZnV6emVyIHRvIGdpdmUgaXQgc29tZSBleHRyYSBhdHRlbnRpb24uIFllcCwgYHByb2Nlc3NfbXJlbGVhc2VgIGxvb2tzIGxpa2UgYSBnb29kIGVudHJ5IHBvaW50IHNpbmNlIGl0JiMzOTtzIGEgc3lzY2FsbC4gTGV0JiMzOTtzIGFkZCB0aGF0IHRvIHRoZSBsaXN0LgoKTGV0JiMzOTtzIGRvdWJsZS1jaGVjayBob3cgYF9fb29tX3JlYXBfdGFza19tbWAgaXMgY2FsbGVkLiBJdCYjMzk7cyBjYWxsZWQgZnJvbSBgb29tX3JlYXBfdGFza19tbWAsIHdoaWNoIGlzIGNhbGxlZCBieSB0aGUgb29tX3JlYXBlciBrdGhyZWFkLiBBbHNvIGZyb20gdGhlIGBwcm9jZXNzX21yZWxlYXNlYCBzeXNjYWxsLiBUaGlzIHJlaW5mb3JjZXMgdGhlIGlkZWEgdGhhdCBgcHJvY2Vzc19tcmVsZWFzZWAgaXMgdGhlIGtleSB0byB0cmlnZ2VyIHRoaXMgZnJvbSB1c2Vyc3BhY2UuCgpga3ZtX2Rlc3Ryb3lfdm1gIGlzIGNhbGxlZCB3aGVuIGEgS1ZNIFZNIGlzIGRlc3Ryb3llZC4gQ3JlYXRpbmcgYW5kIGRlc3Ryb3lpbmcgVk1zIHdpbGwgbGlrZWx5IHRyaWdnZXIgdGhpcy4KClNvIHRoZSBjb21wbGV0ZSBzZXQgb2YgZm9jdXMgc3ltYm9scyBpczoKKiAgIGBtbXVfbm90aWZpZXJfb29tX2VudGVyYAoqICAgYG1tdV9ub3RpZmllcl9iYXJyaWVyYAoqICAgYG1tdV9ub3RpZmllcl9vb21fY2FsbGJhY2tfZm5gCiogICBga3ZtX21tdV9ub3RpZmllcl9hZnRlcl9vb21fdW5yZWdpc3RlcmAKKiAgIGBrdm1fZGVzdHJveV92bWAKKiAgIGBwcm9jZXNzX21yZWxlYXNlYAoKYG1tdV9ub3RpZmllcl9vb21fY2FsbGJhY2tfZm5gIGlzIHN0YXRpYywgYW5kIGNhbGxlZCB2aWEgYGNhbGxfc3JjdWAsIGJ1dCBpdCBzaG91bGQgc3RpbGwgYmUgaW5jbHVkZWQgc2luY2UgaXQmIzM5O3Mgb24gdGhlIGNhbGwgc3RhY2ssIGV2ZW4gaWYgaXQmIzM5O3MgY2FsbGVkIGFzeW5jaHJvbm91c2x5LgoKYGt2bV9kZXN0cm95X3ZtYCBpcyBzdGF0aWMgaW4gYHZpcnQva3ZtL2t2bV9tYWluLmNgIGFuZCBjYWxsZWQgZnJvbSBga3ZtX3B1dF9rdm1gLiBgbW11X25vdGlmaWVyX2JhcnJpZXJgIGlzIGV4cG9ydGVkLCBhbmQgYG1tdV9ub3RpZmllcl9vb21fZW50ZXJgIGlzIG5vdCBleHBvcnRlZCwgYnV0IGl0IGlzIGdsb2JhbC4KClRoZSByZWFzb25pbmcgaGVyZSBpcyB0aGF0IHRoaXMgcGF0Y2ggbW9kaWZpZXMgYm90aCBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IGFuZCBLVk0uIEl0IGludHJvZHVjZXMgYW4gYXN5bmNocm9ub3VzIGNhbGxiYWNrLCB0cmlnZ2VyZWQgYnkgT09NIGV2ZW50cywgYW5kIGltcGxlbWVudHMgaXQgZm9yIEtWTS4gVGhlIGNoYW5nZSBtb2RpZmllcyBga3ZtX2Rlc3Ryb3lfdm1gIHRvIGhhbmRsZSBhc3luY2hyb25vdXMgY2xlYW51cC4gSXQmIzM5O3MgY3J1Y2lhbCB0byBmdXp6IHRoaXMgdG8gY2hlY2sgZm9yIHVzZS1hZnRlci1mcmVlIG9yIGRlYWRsb2NrIGJ1Z3MgZHVyaW5nIFZNIE9PTSBoYW5kbGluZy4KCkp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlLCBgS1ZNYCBpcyB0aGUgY29uZmlnIG5hbWUsIG5vdCBgQ09ORklHX0tWTWAuICBZZXAsIGBLVk1gLgoKQWxzbywgYENPTkZJR19NTVVfTk9USUZJRVJgIGlzIHNlbGVjdGVkIGJ5IGBLVk1fQ09NTU9OYCB3aGljaCBpcyBzZWxlY3RlZCBieSBgS1ZNYC4gU28ganVzdCBgS1ZNYCBpcyBzdWZmaWNpZW50LCBidXQgbGlzdGluZyBib3RoIHdpbGwgbWFrZSBpdCBtb3JlIGV4cGxpY2l0LgoKTm93LCBsZXQmIzM5O3MgcHV0IHRoaXMgaW50byBhIHByb3BlciBzdW1tYXJ5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMyAxNToyOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7S1ZNJiMzNDssCiAgICAmIzM0O01NVV9OT1RJRklFUiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O21tdV9ub3RpZmllcl9vb21fZW50ZXImIzM0OywKICAgICYjMzQ7bW11X25vdGlmaWVyX2JhcnJpZXImIzM0OywKICAgICYjMzQ7bW11X25vdGlmaWVyX29vbV9jYWxsYmFja19mbiYjMzQ7LAogICAgJiMzNDtrdm1fbW11X25vdGlmaWVyX2FmdGVyX29vbV91bnJlZ2lzdGVyJiMzNDssCiAgICAmIzM0O2t2bV9kZXN0cm95X3ZtJiMzNDssCiAgICAmIzM0O3Byb2Nlc3NfbXJlbGVhc2UmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBNTVUgbm90aWZpZXIgY2FsbGJhY2sgYGFmdGVyX29vbV91bnJlZ2lzdGVyYCBhbmQgYSBtZWNoYW5pc20gdG8gaW52b2tlIGl0IGFzeW5jaHJvbm91c2x5IHdoZW4gYW4gT09NIGV2ZW50IG9jY3VycyAoYG1tdV9ub3RpZmllcl9vb21fZW50ZXJgKS4gSXQgYWxzbyBpbXBsZW1lbnRzIHRoaXMgY2FsbGJhY2sgZm9yIEtWTSBhbmQgbW9kaWZpZXMgYGt2bV9kZXN0cm95X3ZtYCB0byBoYW5kbGUgdGhlIGFzeW5jaHJvbm91cyBjbGVhbnVwLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gY29yZSBtZW1vcnkgbWFuYWdlbWVudCBhbmQgS1ZNLCBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgdGhlcmUgYXJlIG5vIHVzZS1hZnRlci1mcmVlIG9yIGRlYWRsb2NrIGlzc3VlcyBkdXJpbmcgT09NIGhhbmRsaW5nIG9mIFZNcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7S1ZNJiMzNDssCiAgICAmIzM0O01NVV9OT1RJRklFUiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O21tdV9ub3RpZmllcl9vb21fZW50ZXImIzM0OywKICAgICYjMzQ7bW11X25vdGlmaWVyX2JhcnJpZXImIzM0OywKICAgICYjMzQ7bW11X25vdGlmaWVyX29vbV9jYWxsYmFja19mbiYjMzQ7LAogICAgJiMzNDtrdm1fbW11X25vdGlmaWVyX2FmdGVyX29vbV91bnJlZ2lzdGVyJiMzNDssCiAgICAmIzM0O2t2bV9kZXN0cm95X3ZtJiMzNDssCiAgICAmIzM0O3Byb2Nlc3NfbXJlbGVhc2UmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBNTVUgbm90aWZpZXIgY2FsbGJhY2sgYGFmdGVyX29vbV91bnJlZ2lzdGVyYCBhbmQgYSBtZWNoYW5pc20gdG8gaW52b2tlIGl0IGFzeW5jaHJvbm91c2x5IHdoZW4gYW4gT09NIGV2ZW50IG9jY3VycyAoYG1tdV9ub3RpZmllcl9vb21fZW50ZXJgKS4gSXQgYWxzbyBpbXBsZW1lbnRzIHRoaXMgY2FsbGJhY2sgZm9yIEtWTSBhbmQgbW9kaWZpZXMgYGt2bV9kZXN0cm95X3ZtYCB0byBoYW5kbGUgdGhlIGFzeW5jaHJvbm91cyBjbGVhbnVwLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gY29yZSBtZW1vcnkgbWFuYWdlbWVudCBhbmQgS1ZNLCBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgdGhlcmUgYXJlIG5vIHVzZS1hZnRlci1mcmVlIG9yIGRlYWRsb2NrIGlzc3VlcyBkdXJpbmcgT09NIGhhbmRsaW5nIG9mIFZNcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDE1OjI5OjAwLjA0MTE4OTU1OFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3MTczNDIxNjc1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTVwiLFxuICAgIFwiTU1VX05PVElGSUVSXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibW11X25vdGlmaWVyX29vbV9lbnRlclwiLFxuICAgIFwibW11X25vdGlmaWVyX2JhcnJpZXJcIixcbiAgICBcIm1tdV9ub3RpZmllcl9vb21fY2FsbGJhY2tfZm5cIixcbiAgICBcImt2bV9tbXVfbm90aWZpZXJfYWZ0ZXJfb29tX3VucmVnaXN0ZXJcIixcbiAgICBcImt2bV9kZXN0cm95X3ZtXCIsXG4gICAgXCJwcm9jZXNzX21yZWxlYXNlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBNTVUgbm90aWZpZXIgY2FsbGJhY2sgYGFmdGVyX29vbV91bnJlZ2lzdGVyYCBhbmQgYSBtZWNoYW5pc20gdG8gaW52b2tlIGl0IGFzeW5jaHJvbm91c2x5IHdoZW4gYW4gT09NIGV2ZW50IG9jY3VycyAoYG1tdV9ub3RpZmllcl9vb21fZW50ZXJgKS4gSXQgYWxzbyBpbXBsZW1lbnRzIHRoaXMgY2FsbGJhY2sgZm9yIEtWTSBhbmQgbW9kaWZpZXMgYGt2bV9kZXN0cm95X3ZtYCB0byBoYW5kbGUgdGhlIGFzeW5jaHJvbm91cyBjbGVhbnVwLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gY29yZSBtZW1vcnkgbWFuYWdlbWVudCBhbmQgS1ZNLCBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgdGhlcmUgYXJlIG5vIHVzZS1hZnRlci1mcmVlIG9yIGRlYWRsb2NrIGlzc3VlcyBkdXJpbmcgT09NIGhhbmRsaW5nIG9mIFZNcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjNUMTU6Mjk6MDAuMDQxMTk5NjM4WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NzIzNDQ3MjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAwMjMxMWQxODVkYmNiNmQ5ZGExNjBhOWM3MDNiYTg2Zjc3OGE0Y2ViXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUaHUgSnVsIDIzIDE1OjI4OjU4IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbW11X25vdGlmaWVyLmggYi9pbmNsdWRlL2xpbnV4L21tdV9ub3RpZmllci5oXFxuaW5kZXggYTExYTQ0ZWVmNTIxZTkuLmExODIwYTQ4Nzg1NGRkIDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvbGludXgvbW11X25vdGlmaWVyLmhcXG4rKysgYi9pbmNsdWRlL2xpbnV4L21tdV9ub3RpZmllci5oXFxuQEAgLTg4LDYgKzg4LDE0IEBAIHN0cnVjdCBtbXVfbm90aWZpZXJfb3BzIHtcXG4gXFx0dm9pZCAoKnJlbGVhc2UpKHN0cnVjdCBtbXVfbm90aWZpZXIgKnN1YnNjcmlwdGlvbixcXG4gXFx0XFx0XFx0c3RydWN0IG1tX3N0cnVjdCAqbW0pO1xcbiBcXG4rXFx0LypcXG4rXFx0ICogQW55IG1tdSBub3RpZmllciB0aGF0IGRlZmluZXMgdGhpcyBpcyBhdXRvbWF0aWNhbGx5IHVucmVnaXN0ZXJlZFxcbitcXHQgKiB3aGVuIGl0cyBtbSBpcyB0aGUgc3ViamVjdCBvZiBhbiBPT00ga2lsbC4gIGFmdGVyX29vbV91bnJlZ2lzdGVyKClcXG4rXFx0ICogaXMgaW52b2tlZCBhZnRlciBhbGwgb3RoZXIgb3V0c3RhbmRpbmcgY2FsbGJhY2tzIGhhdmUgdGVybWluYXRlZC5cXG4rXFx0ICovXFxuK1xcdHZvaWQgKCphZnRlcl9vb21fdW5yZWdpc3Rlcikoc3RydWN0IG1tdV9ub3RpZmllciAqc3Vic2NyaXB0aW9uLFxcbitcXHRcXHRcXHRcXHQgICAgIHN0cnVjdCBtbV9zdHJ1Y3QgKm1tKTtcXG4rXFxuIFxcdC8qXFxuIFxcdCAqIGNsZWFyX2ZsdXNoX3lvdW5nIGlzIGNhbGxlZCBhZnRlciB0aGUgVk0gaXNcXG4gXFx0ICogdGVzdC1hbmQtY2xlYXJpbmcgdGhlIHlvdW5nL2FjY2Vzc2VkIGJpdGZsYWcgaW4gdGhlXFxuQEAgLTQyNCw2ICs0MzIsOCBAQCBib29sIF9fbW11X25vdGlmaWVyX2NsZWFyX3lvdW5nKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLFxcbiBcXHRcXHR1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCk7XFxuIGJvb2wgX19tbXVfbm90aWZpZXJfdGVzdF95b3VuZyhzdHJ1Y3QgbW1fc3RydWN0ICptbSxcXG4gXFx0XFx0dW5zaWduZWQgbG9uZyBhZGRyZXNzKTtcXG4rdm9pZCBtbXVfbm90aWZpZXJfb29tX2VudGVyKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tKTtcXG4rdm9pZCBtbXVfbm90aWZpZXJfYmFycmllcih2b2lkKTtcXG4gZXh0ZXJuIGludCBfX21tdV9ub3RpZmllcl9pbnZhbGlkYXRlX3JhbmdlX3N0YXJ0KHN0cnVjdCBtbXVfbm90aWZpZXJfcmFuZ2UgKnIpO1xcbiBleHRlcm4gdm9pZCBfX21tdV9ub3RpZmllcl9pbnZhbGlkYXRlX3JhbmdlX2VuZChzdHJ1Y3QgbW11X25vdGlmaWVyX3JhbmdlICpyKTtcXG4gZXh0ZXJuIHZvaWQgX19tbXVfbm90aWZpZXJfYXJjaF9pbnZhbGlkYXRlX3NlY29uZGFyeV90bGJzKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLFxcbkBAIC02NDMsNiArNjUzLDEwIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBtbXVfbm90aWZpZXJfc3luY2hyb25pemUodm9pZClcXG4ge1xcbiB9XFxuIFxcbitzdGF0aWMgaW5saW5lIHZvaWQgbW11X25vdGlmaWVyX29vbV9lbnRlcihzdHJ1Y3QgbW1fc3RydWN0ICptbSlcXG4re1xcbit9XFxuK1xcbiAjZW5kaWYgLyogQ09ORklHX01NVV9OT1RJRklFUiAqL1xcbiBcXG4gI2VuZGlmIC8qIF9MSU5VWF9NTVVfTk9USUZJRVJfSCAqL1xcbmRpZmYgLS1naXQgYS9tbS9tbXVfbm90aWZpZXIuYyBiL21tL21tdV9ub3RpZmllci5jXFxuaW5kZXggMjQ1Yjc0ZjM5ZjkxMjIuLmYzMGJmOTVmMTdjN2FhIDEwMDY0NFxcbi0tLSBhL21tL21tdV9ub3RpZmllci5jXFxuKysrIGIvbW0vbW11X25vdGlmaWVyLmNcXG5AQCAtNDksNiArNDksMzcgQEAgc3RydWN0IG1tdV9ub3RpZmllcl9zdWJzY3JpcHRpb25zIHtcXG4gXFx0c3RydWN0IGhsaXN0X2hlYWQgZGVmZXJyZWRfbGlzdDtcXG4gfTtcXG4gXFxuKy8qXFxuKyAqIENhbGxiYWNrIHN0cnVjdHVyZSBmb3IgYXN5bmNocm9ub3VzIE9PTSBjbGVhbnVwLlxcbisgKiBVc2VkIHdpdGggY2FsbF9zcmN1KCkgdG8gZGVmZXIgYWZ0ZXJfb29tX3VucmVnaXN0ZXIgY2FsbGJhY2tzXFxuKyAqIHVudGlsIGFmdGVyIFNSQ1UgZ3JhY2UgcGVyaW9kIGNvbXBsZXRlcy5cXG4rICovXFxuK3N0cnVjdCBtbXVfbm90aWZpZXJfb29tX2NhbGxiYWNrIHtcXG4rXFx0c3RydWN0IHJjdV9oZWFkIHJjdTtcXG4rXFx0c3RydWN0IG1tdV9ub3RpZmllciAqc3Vic2NyaXB0aW9uO1xcbitcXHRzdHJ1Y3QgbW1fc3RydWN0ICptbTtcXG4rfTtcXG4rXFxuKy8qXFxuKyAqIENhbGxiYWNrIGZ1bmN0aW9uIGludm9rZWQgYWZ0ZXIgU1JDVSBncmFjZSBwZXJpb2QuXFxuKyAqIFNhZmVseSBjYWxscyBhZnRlcl9vb21fdW5yZWdpc3RlciBvbmNlIGFsbCByZWFkZXJzIGhhdmUgZmluaXNoZWQuXFxuKyAqL1xcbitzdGF0aWMgdm9pZCBtbXVfbm90aWZpZXJfb29tX2NhbGxiYWNrX2ZuKHN0cnVjdCByY3VfaGVhZCAqcmN1KVxcbit7XFxuK1xcdHN0cnVjdCBtbXVfbm90aWZpZXJfb29tX2NhbGxiYWNrICpjYiA9XFxuK1xcdFxcdGNvbnRhaW5lcl9vZihyY3UsIHN0cnVjdCBtbXVfbm90aWZpZXJfb29tX2NhbGxiYWNrLCByY3UpO1xcbitcXG4rXFx0LyogU2FmZSAtIGFsbCBTUkNVIHJlYWRlcnMgaGF2ZSBmaW5pc2hlZCAqL1xcbitcXHRjYi1cXHUwMDNlc3Vic2NyaXB0aW9uLVxcdTAwM2VvcHMtXFx1MDAzZWFmdGVyX29vbV91bnJlZ2lzdGVyKGNiLVxcdTAwM2VzdWJzY3JpcHRpb24sIGNiLVxcdTAwM2VtbSk7XFxuK1xcbitcXHQvKiBSZWxlYXNlIG1tIHJlZmVyZW5jZSB0YWtlbiB3aGVuIGNhbGxiYWNrIHdhcyBzY2hlZHVsZWQgKi9cXG4rXFx0V0FSTl9PTl9PTkNFKGF0b21pY19yZWFkKFxcdTAwMjZjYi1cXHUwMDNlbW0tXFx1MDAzZW1tX2NvdW50KSBcXHUwMDNjPSAwKTtcXG4rXFx0bW1kcm9wKGNiLVxcdTAwM2VtbSk7XFxuK1xcbitcXHQvKiBGcmVlIGNhbGxiYWNrIHN0cnVjdHVyZSAqL1xcbitcXHRrZnJlZShjYik7XFxuK31cXG4rXFxuIC8qXFxuICAqIFRoaXMgaXMgYSBjb2xsaXNpb24tcmV0cnkgcmVhZC1zaWRlL3dyaXRlLXNpZGUgJ2xvY2snLCBhIGxvdCBsaWtlIGFcXG4gICogc2VxY291bnQsIGhvd2V2ZXIgdGhpcyBhbGxvd3MgbXVsdGlwbGUgd3JpdGUtc2lkZXMgdG8gaG9sZCBpdCBhdFxcbkBAIC0zODUsNiArNDE2LDg0IEBAIHZvaWQgX19tbXVfbm90aWZpZXJfcmVsZWFzZShzdHJ1Y3QgbW1fc3RydWN0ICptbSlcXG4gXFx0XFx0bW5faGxpc3RfcmVsZWFzZShzdWJzY3JpcHRpb25zLCBtbSk7XFxuIH1cXG4gXFxuK3ZvaWQgbW11X25vdGlmaWVyX29vbV9lbnRlcihzdHJ1Y3QgbW1fc3RydWN0ICptbSlcXG4re1xcbitcXHRzdHJ1Y3QgbW11X25vdGlmaWVyX3N1YnNjcmlwdGlvbnMgKnN1YnNjcmlwdGlvbnMgPVxcbitcXHRcXHRcXHRcXHRcXHRcXHRtbS1cXHUwMDNlbm90aWZpZXJfc3Vic2NyaXB0aW9ucztcXG4rXFx0c3RydWN0IG1tdV9ub3RpZmllciAqc3Vic2NyaXB0aW9uO1xcbitcXHRzdHJ1Y3QgaGxpc3Rfbm9kZSAqdG1wO1xcbitcXHRITElTVF9IRUFEKG9vbV9saXN0KTtcXG4rXFx0aW50IGlkO1xcbitcXG4rXFx0aWYgKCFzdWJzY3JpcHRpb25zKVxcbitcXHRcXHRyZXR1cm47XFxuK1xcbitcXHRpZCA9IHNyY3VfcmVhZF9sb2NrKFxcdTAwMjZzcmN1KTtcXG4rXFxuK1xcdC8qXFxuK1xcdCAqIFByZXZlbnQgZnVydGhlciBjYWxscyB0byB0aGUgTU1VIG5vdGlmaWVyLCBleGNlcHQgZm9yXFxuK1xcdCAqIHJlbGVhc2UgYW5kIGFmdGVyX29vbV91bnJlZ2lzdGVyLlxcbitcXHQgKi9cXG4rXFx0c3Bpbl9sb2NrKFxcdTAwMjZzdWJzY3JpcHRpb25zLVxcdTAwM2Vsb2NrKTtcXG4rXFx0aGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShzdWJzY3JpcHRpb24sIHRtcCxcXG4rXFx0XFx0XFx0XFx0ICBcXHUwMDI2c3Vic2NyaXB0aW9ucy1cXHUwMDNlbGlzdCwgaGxpc3QpIHtcXG4rXFx0XFx0aWYgKCFzdWJzY3JpcHRpb24tXFx1MDAzZW9wcy1cXHUwMDNlYWZ0ZXJfb29tX3VucmVnaXN0ZXIpXFxuK1xcdFxcdFxcdGNvbnRpbnVlO1xcbitcXG4rXFx0XFx0LypcXG4rXFx0XFx0ICogYWZ0ZXJfb29tX3VucmVnaXN0ZXIgYW5kIGFsbG9jX25vdGlmaWVyIGFyZSBpbmNvbXBhdGlibGUsXFxuK1xcdFxcdCAqIGJlY2F1c2UgdGhlcmUgY291bGQgYmUgb3RoZXIgcmVmZXJlbmNlcyB0byBhbGxvY2F0ZWRcXG4rXFx0XFx0ICogbm90aWZpZXJzLlxcbitcXHRcXHQgKi9cXG4rXFx0XFx0aWYgKFdBUk5fT04oc3Vic2NyaXB0aW9uLVxcdTAwM2VvcHMtXFx1MDAzZWFsbG9jX25vdGlmaWVyKSlcXG4rXFx0XFx0XFx0Y29udGludWU7XFxuK1xcbitcXHRcXHRobGlzdF9kZWxfaW5pdF9yY3UoXFx1MDAyNnN1YnNjcmlwdGlvbi1cXHUwMDNlaGxpc3QpO1xcbitcXHRcXHRobGlzdF9hZGRfaGVhZChcXHUwMDI2c3Vic2NyaXB0aW9uLVxcdTAwM2VobGlzdCwgXFx1MDAyNm9vbV9saXN0KTtcXG4rXFx0fVxcbitcXHRzcGluX3VubG9jayhcXHUwMDI2c3Vic2NyaXB0aW9ucy1cXHUwMDNlbG9jayk7XFxuK1xcdGhsaXN0X2Zvcl9lYWNoX2VudHJ5KHN1YnNjcmlwdGlvbiwgXFx1MDAyNm9vbV9saXN0LCBobGlzdClcXG4rXFx0XFx0aWYgKHN1YnNjcmlwdGlvbi1cXHUwMDNlb3BzLVxcdTAwM2VyZWxlYXNlKVxcbitcXHRcXHRcXHRzdWJzY3JpcHRpb24tXFx1MDAzZW9wcy1cXHUwMDNlcmVsZWFzZShzdWJzY3JpcHRpb24sIG1tKTtcXG4rXFxuK1xcdHNyY3VfcmVhZF91bmxvY2soXFx1MDAyNnNyY3UsIGlkKTtcXG4rXFxuK1xcdGlmIChobGlzdF9lbXB0eShcXHUwMDI2b29tX2xpc3QpKVxcbitcXHRcXHRyZXR1cm47XFxuK1xcbitcXHRobGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHN1YnNjcmlwdGlvbiwgdG1wLFxcbitcXHRcXHRcXHRcXHQgIFxcdTAwMjZvb21fbGlzdCwgaGxpc3QpIHtcXG4rXFx0XFx0c3RydWN0IG1tdV9ub3RpZmllcl9vb21fY2FsbGJhY2sgKmNiO1xcbitcXHRcXHQvKlxcbitcXHRcXHQgKiBSZW1vdmUgZnJvbSBzdGFjay1iYXNlZCBvb21fbGlzdCBhbmQgcmVzZXQgaGxpc3QgdG8gdW5oYXNoZWQgc3RhdGUuXFxuK1xcdFxcdCAqIFRoaXMgc2V0cyBzdWJzY3JpcHRpb24tXFx1MDAzZWhsaXN0LnBwcmV2ID0gTlVMTCwgc28gZnV0dXJlIGNhbGxlcnMgb2ZcXG4rXFx0XFx0ICogbW11X25vdGlmaWVyX3VucmVnaXN0ZXIoKSAoZS5nLiBrdm1fZGVzdHJveV92bSkgd2lsbCBzZWVcXG4rXFx0XFx0ICogaGxpc3RfdW5oYXNoZWQoKSA9PSB0cnVlIGFuZCB0YWtlIHRoZSBzYWZlIHBhdGgsIGF2b2lkaW5nXFxuK1xcdFxcdCAqIHVzZS1hZnRlci1mcmVlIG9uIHRoZSBzdGFjay1hbGxvY2F0ZWQgb29tX2xpc3QgaGVhZC5cXG4rXFx0XFx0ICovXFxuK1xcdFxcdGhsaXN0X2RlbF9pbml0KFxcdTAwMjZzdWJzY3JpcHRpb24tXFx1MDAzZWhsaXN0KTtcXG4rXFxuK1xcdFxcdC8qXFxuK1xcdFxcdCAqIEdGUF9BVE9NSUMgZmFpbHVyZSBpcyBleGNlZWRpbmdseSByYXJlLiBXZSBjYW5ub3Qgc2xlZXBcXG4rXFx0XFx0ICogaGVyZSAod291bGQgcmVpbnRyb2R1Y2UgdGhlIGRlYWRsb2NrIHRoaXMgcGF0Y2ggZml4ZXMpXFxuK1xcdFxcdCAqIGFuZCBjYW5ub3QgY2FsbCBhZnRlcl9vb21fdW5yZWdpc3RlciBzeW5jaHJvbm91c2x5XFxuK1xcdFxcdCAqIHdpdGhvdXQgZmlyc3Qgd2FpdGluZyBmb3IgU1JDVSByZWFkZXJzLiBUaGUgc3Vic2NyaWJlclxcbitcXHRcXHQgKiB3aWxsIG5vdCByZWNlaXZlIGFmdGVyX29vbV91bnJlZ2lzdGVyIGJ1dCBjbGVhbnVwIHdpbGxcXG4rXFx0XFx0ICogZXZlbnR1YWxseSBoYXBwZW4gdmlhIHRoZSB1bnJlZ2lzdGVyIHBhdGguXFxuK1xcdFxcdCAqL1xcbitcXHRcXHRjYiA9IGttYWxsb2Nfb2JqKCpjYiwgR0ZQX0FUT01JQyk7XFxuK1xcdFxcdGlmICghY2IpXFxuK1xcdFxcdFxcdGNvbnRpbnVlO1xcbitcXG4rXFx0XFx0Y2ItXFx1MDAzZXN1YnNjcmlwdGlvbiA9IHN1YnNjcmlwdGlvbjtcXG4rXFx0XFx0Y2ItXFx1MDAzZW1tID0gbW07XFxuK1xcdFxcdG1tZ3JhYihtbSk7XFxuK1xcbitcXHRcXHQvKiBTY2hlZHVsZSBjYWxsYmFjayAtIHJldHVybnMgaW1tZWRpYXRlbHkgKi9cXG4rXFx0XFx0Y2FsbF9zcmN1KFxcdTAwMjZzcmN1LCBcXHUwMDI2Y2ItXFx1MDAzZXJjdSwgbW11X25vdGlmaWVyX29vbV9jYWxsYmFja19mbik7XFxuK1xcdH1cXG4rfVxcbitcXG4gLypcXG4gICogSWYgbm8geW91bmcgYml0ZmxhZyBpcyBzdXBwb3J0ZWQgYnkgdGhlIGhhcmR3YXJlLCAtXFx1MDAzZWNsZWFyX2ZsdXNoX3lvdW5nIGNhblxcbiAgKiB1bm1hcCB0aGUgYWRkcmVzcyBhbmQgcmV0dXJuIDEgb3IgMCBkZXBlbmRpbmcgaWYgdGhlIG1hcHBpbmcgcHJldmlvdXNseVxcbkBAIC0xMTQ0LDMgKzEyNTMsMTYgQEAgdm9pZCBtbXVfbm90aWZpZXJfc3luY2hyb25pemUodm9pZClcXG4gXFx0c3luY2hyb25pemVfc3JjdShcXHUwMDI2c3JjdSk7XFxuIH1cXG4gRVhQT1JUX1NZTUJPTF9HUEwobW11X25vdGlmaWVyX3N5bmNocm9uaXplKTtcXG4rXFxuKy8qKlxcbisgKiBtbXVfbm90aWZpZXJfYmFycmllciAtIFdhaXQgZm9yIGFsbCBwZW5kaW5nIE1NVSBub3RpZmllciBjYWxsYmFja3NcXG4rICpcXG4rICogV2FpdHMgZm9yIGFsbCBjYWxsX3NyY3UoKSBjYWxsYmFja3Mgc2NoZWR1bGVkIGJ5IG1tdV9ub3RpZmllcl9vb21fZW50ZXIoKVxcbisgKiB0byBjb21wbGV0ZS4gVXNlZCBieSBzdWJzeXN0ZW1zIGR1cmluZyBjbGVhbnVwIHRvIHByZXZlbnQgdXNlLWFmdGVyLWZyZWVcXG4rICogd2hlbiBkZXN0cm95aW5nIHN0cnVjdHVyZXMgYWNjZXNzZWQgYnkgdGhlIGNhbGxiYWNrcy5cXG4rICovXFxuK3ZvaWQgbW11X25vdGlmaWVyX2JhcnJpZXIodm9pZClcXG4re1xcbitcXHRzcmN1X2JhcnJpZXIoXFx1MDAyNnNyY3UpO1xcbit9XFxuK0VYUE9SVF9TWU1CT0xfR1BMKG1tdV9ub3RpZmllcl9iYXJyaWVyKTtcXG5kaWZmIC0tZ2l0IGEvbW0vb29tX2tpbGwuYyBiL21tL29vbV9raWxsLmNcXG5pbmRleCA1ZjM3MmY2ZTI2ZmEzMi4uNjZhZGNkMDNmMzZhOGUgMTAwNjQ0XFxuLS0tIGEvbW0vb29tX2tpbGwuY1xcbisrKyBiL21tL29vbV9raWxsLmNcXG5AQCAtNTE2LDYgKzUxNiw5IEBAIHN0YXRpYyBib29sIF9fb29tX3JlYXBfdGFza19tbShzdHJ1Y3QgbW1fc3RydWN0ICptbSlcXG4gXFx0Ym9vbCByZXQgPSB0cnVlO1xcbiBcXHRNQV9TVEFURShtYXMsIFxcdTAwMjZtbS1cXHUwMDNlbW1fbXQsIFVMT05HX01BWCwgVUxPTkdfTUFYKTtcXG4gXFxuK1xcdC8qIE5vdGlmeSBNTVUgbm90aWZpZXJzIGFib3V0IHRoZSBPT00gZXZlbnQgKi9cXG4rXFx0bW11X25vdGlmaWVyX29vbV9lbnRlcihtbSk7XFxuK1xcbiBcXHQvKlxcbiBcXHQgKiBUZWxsIGFsbCB1c2VycyBvZiBnZXRfdXNlci9jb3B5X2Zyb21fdXNlciBldGMuLi4gdGhhdCB0aGUgY29udGVudFxcbiBcXHQgKiBpcyBubyBsb25nZXIgc3RhYmxlLiBObyBiYXJyaWVycyByZWFsbHkgbmVlZGVkIGJlY2F1c2UgdW5tYXBwaW5nXFxuZGlmZiAtLWdpdCBhL3ZpcnQva3ZtL2t2bV9tYWluLmMgYi92aXJ0L2t2bS9rdm1fbWFpbi5jXFxuaW5kZXggZTQ0YzIwYzA0OTYxMGQuLjc5YTRkZjhhMzM3YTJkIDEwMDY0NFxcbi0tLSBhL3ZpcnQva3ZtL2t2bV9tYWluLmNcXG4rKysgYi92aXJ0L2t2bS9rdm1fbWFpbi5jXFxuQEAgLTg3NSw2ICs4NzUsMjQgQEAgc3RhdGljIHZvaWQga3ZtX21tdV9ub3RpZmllcl9yZWxlYXNlKHN0cnVjdCBtbXVfbm90aWZpZXIgKm1uLFxcbiBcXHRzcmN1X3JlYWRfdW5sb2NrKFxcdTAwMjZrdm0tXFx1MDAzZXNyY3UsIGlkeCk7XFxuIH1cXG4gXFxuK3N0YXRpYyB2b2lkIGt2bV9tbXVfbm90aWZpZXJfYWZ0ZXJfb29tX3VucmVnaXN0ZXIoc3RydWN0IG1tdV9ub3RpZmllciAqbW4sXFxuK1xcdFxcdFxcdFxcdFxcdFxcdCAgc3RydWN0IG1tX3N0cnVjdCAqbW0pXFxuK3tcXG4rXFx0c3RydWN0IGt2bSAqa3ZtO1xcbitcXG4rXFx0a3ZtID0gbW11X25vdGlmaWVyX3RvX2t2bShtbik7XFxuK1xcbitcXHQvKlxcbitcXHQgKiBBdCB0aGlzIHBvaW50IHRoZSB1bnJlZ2lzdGVyIGhhcyBjb21wbGV0ZWQgYW5kIGFsbCBvdGhlciBjYWxsYmFja3NcXG4rXFx0ICogaGF2ZSB0ZXJtaW5hdGVkLiBDbGVhbiB1cCBhbnkgdW5iYWxhbmNlZCBpbnZhbGlkYXRpb24gY291bnRzLlxcbitcXHQgKi9cXG4rXFx0V0FSTl9PTihyY3V3YWl0X2FjdGl2ZShcXHUwMDI2a3ZtLVxcdTAwM2Vtbl9tZW1zbG90c191cGRhdGVfcmN1d2FpdCkpO1xcbitcXHRpZiAoa3ZtLVxcdTAwM2Vtbl9hY3RpdmVfaW52YWxpZGF0ZV9jb3VudClcXG4rXFx0XFx0a3ZtLVxcdTAwM2Vtbl9hY3RpdmVfaW52YWxpZGF0ZV9jb3VudCA9IDA7XFxuK1xcdGVsc2VcXG4rXFx0XFx0V0FSTl9PTihrdm0tXFx1MDAzZW1tdV9pbnZhbGlkYXRlX2luX3Byb2dyZXNzKTtcXG4rfVxcbitcXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBtbXVfbm90aWZpZXJfb3BzIGt2bV9tbXVfbm90aWZpZXJfb3BzID0ge1xcbiBcXHQuaW52YWxpZGF0ZV9yYW5nZV9zdGFydFxcdD0ga3ZtX21tdV9ub3RpZmllcl9pbnZhbGlkYXRlX3JhbmdlX3N0YXJ0LFxcbiBcXHQuaW52YWxpZGF0ZV9yYW5nZV9lbmRcXHQ9IGt2bV9tbXVfbm90aWZpZXJfaW52YWxpZGF0ZV9yYW5nZV9lbmQsXFxuQEAgLTg4Miw2ICs5MDAsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG1tdV9ub3RpZmllcl9vcHMga3ZtX21tdV9ub3RpZmllcl9vcHMgPSB7XFxuIFxcdC5jbGVhcl95b3VuZ1xcdFxcdD0ga3ZtX21tdV9ub3RpZmllcl9jbGVhcl95b3VuZyxcXG4gXFx0LnRlc3RfeW91bmdcXHRcXHQ9IGt2bV9tbXVfbm90aWZpZXJfdGVzdF95b3VuZyxcXG4gXFx0LnJlbGVhc2VcXHRcXHQ9IGt2bV9tbXVfbm90aWZpZXJfcmVsZWFzZSxcXG4rXFx0LmFmdGVyX29vbV91bnJlZ2lzdGVyXFx0PSBrdm1fbW11X25vdGlmaWVyX2FmdGVyX29vbV91bnJlZ2lzdGVyLFxcbiB9O1xcbiBcXG4gc3RhdGljIGludCBrdm1faW5pdF9tbXVfbm90aWZpZXIoc3RydWN0IGt2bSAqa3ZtKVxcbkBAIC0xMjczLDcgKzEyOTIsMTMgQEAgc3RhdGljIHZvaWQga3ZtX2Rlc3Ryb3lfdm0oc3RydWN0IGt2bSAqa3ZtKVxcbiBcXHRcXHRrdm0tXFx1MDAzZWJ1c2VzW2ldID0gTlVMTDtcXG4gXFx0fVxcbiBcXHRrdm1fY29hbGVzY2VkX21taW9fZnJlZShrdm0pO1xcbi1cXHRtbXVfbm90aWZpZXJfdW5yZWdpc3RlcihcXHUwMDI2a3ZtLVxcdTAwM2VtbXVfbm90aWZpZXIsIGt2bS1cXHUwMDNlbW0pO1xcbitcXHRpZiAoaGxpc3RfdW5oYXNoZWQoXFx1MDAyNmt2bS1cXHUwMDNlbW11X25vdGlmaWVyLmhsaXN0KSkge1xcbitcXHRcXHQvKiBTdWJzY3JpcHRpb24gcmVtb3ZlZCBieSBPT00uIFdhaXQgZm9yIGFzeW5jIGNhbGxiYWNrLiAqL1xcbitcXHRcXHRtbXVfbm90aWZpZXJfYmFycmllcigpO1xcbitcXHRcXHRtbWRyb3Aoa3ZtLVxcdTAwM2VtbSk7XFxuK1xcdH0gZWxzZSB7XFxuK1xcdFxcdG1tdV9ub3RpZmllcl91bnJlZ2lzdGVyKFxcdTAwMjZrdm0tXFx1MDAzZW1tdV9ub3RpZmllciwga3ZtLVxcdTAwM2VtbSk7XFxuK1xcdH1cXG4gXFx0LypcXG4gXFx0ICogQXQgdGhpcyBwb2ludCwgcGVuZGluZyBjYWxscyB0byBpbnZhbGlkYXRlX3JhbmdlX3N0YXJ0KClcXG4gXFx0ICogaGF2ZSBjb21wbGV0ZWQgYnV0IG5vIG1vcmUgTU1VIG5vdGlmaWVycyB3aWxsIHJ1biwgc29cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjNUMTU6Mjk6MDAuNjE0MTQ1MzE3WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NTY2MDA0NTY1MDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNXCIsXG4gICAgXCJNTVVfTk9USUZJRVJcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtbXVfbm90aWZpZXJfb29tX2VudGVyXCIsXG4gICAgXCJtbXVfbm90aWZpZXJfYmFycmllclwiLFxuICAgIFwibW11X25vdGlmaWVyX29vbV9jYWxsYmFja19mblwiLFxuICAgIFwia3ZtX21tdV9ub3RpZmllcl9hZnRlcl9vb21fdW5yZWdpc3RlclwiLFxuICAgIFwia3ZtX2Rlc3Ryb3lfdm1cIixcbiAgICBcInByb2Nlc3NfbXJlbGVhc2VcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IE1NVSBub3RpZmllciBjYWxsYmFjayBgYWZ0ZXJfb29tX3VucmVnaXN0ZXJgIGFuZCBhIG1lY2hhbmlzbSB0byBpbnZva2UgaXQgYXN5bmNocm9ub3VzbHkgd2hlbiBhbiBPT00gZXZlbnQgb2NjdXJzIChgbW11X25vdGlmaWVyX29vbV9lbnRlcmApLiBJdCBhbHNvIGltcGxlbWVudHMgdGhpcyBjYWxsYmFjayBmb3IgS1ZNIGFuZCBtb2RpZmllcyBga3ZtX2Rlc3Ryb3lfdm1gIHRvIGhhbmRsZSB0aGUgYXN5bmNocm9ub3VzIGNsZWFudXAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IGFuZCBLVk0sIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSB0aGVyZSBhcmUgbm8gdXNlLWFmdGVyLWZyZWUgb3IgZGVhZGxvY2sgaXNzdWVzIGR1cmluZyBPT00gaGFuZGxpbmcgb2YgVk1zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDAyMzExZDE4NWRiY2I2ZDlkYTE2MGE5YzcwM2JhODZmNzc4YTRjZWJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEp1bCAyMyAxNToyODo1OCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbW11X25vdGlmaWVyLmggYi9pbmNsdWRlL2xpbnV4L21tdV9ub3RpZmllci5oXG5pbmRleCBhMTFhNDRlZWY1MjFlOS4uYTE4MjBhNDg3ODU0ZGQgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L21tdV9ub3RpZmllci5oXG4rKysgYi9pbmNsdWRlL2xpbnV4L21tdV9ub3RpZmllci5oXG5AQCAtODgsNiArODgsMTQgQEAgc3RydWN0IG1tdV9ub3RpZmllcl9vcHMge1xuIFx0dm9pZCAoKnJlbGVhc2UpKHN0cnVjdCBtbXVfbm90aWZpZXIgKnN1YnNjcmlwdGlvbixcbiBcdFx0XHRzdHJ1Y3QgbW1fc3RydWN0ICptbSk7XG4gXG4rXHQvKlxuK1x0ICogQW55IG1tdSBub3RpZmllciB0aGF0IGRlZmluZXMgdGhpcyBpcyBhdXRvbWF0aWNhbGx5IHVucmVnaXN0ZXJlZFxuK1x0ICogd2hlbiBpdHMgbW0gaXMgdGhlIHN1YmplY3Qgb2YgYW4gT09NIGtpbGwuICBhZnRlcl9vb21fdW5yZWdpc3RlcigpXG4rXHQgKiBpcyBpbnZva2VkIGFmdGVyIGFsbCBvdGhlciBvdXRzdGFuZGluZyBjYWxsYmFja3MgaGF2ZSB0ZXJtaW5hdGVkLlxuK1x0ICovXG4rXHR2b2lkICgqYWZ0ZXJfb29tX3VucmVnaXN0ZXIpKHN0cnVjdCBtbXVfbm90aWZpZXIgKnN1YnNjcmlwdGlvbixcbitcdFx0XHRcdCAgICAgc3RydWN0IG1tX3N0cnVjdCAqbW0pO1xuK1xuIFx0LypcbiBcdCAqIGNsZWFyX2ZsdXNoX3lvdW5nIGlzIGNhbGxlZCBhZnRlciB0aGUgVk0gaXNcbiBcdCAqIHRlc3QtYW5kLWNsZWFyaW5nIHRoZSB5b3VuZy9hY2Nlc3NlZCBiaXRmbGFnIGluIHRoZVxuQEAgLTQyNCw2ICs0MzIsOCBAQCBib29sIF9fbW11X25vdGlmaWVyX2NsZWFyX3lvdW5nKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLFxuIFx0XHR1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCk7XG4gYm9vbCBfX21tdV9ub3RpZmllcl90ZXN0X3lvdW5nKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLFxuIFx0XHR1bnNpZ25lZCBsb25nIGFkZHJlc3MpO1xuK3ZvaWQgbW11X25vdGlmaWVyX29vbV9lbnRlcihzdHJ1Y3QgbW1fc3RydWN0ICptbSk7XG4rdm9pZCBtbXVfbm90aWZpZXJfYmFycmllcih2b2lkKTtcbiBleHRlcm4gaW50IF9fbW11X25vdGlmaWVyX2ludmFsaWRhdGVfcmFuZ2Vfc3RhcnQoc3RydWN0IG1tdV9ub3RpZmllcl9yYW5nZSAqcik7XG4gZXh0ZXJuIHZvaWQgX19tbXVfbm90aWZpZXJfaW52YWxpZGF0ZV9yYW5nZV9lbmQoc3RydWN0IG1tdV9ub3RpZmllcl9yYW5nZSAqcik7XG4gZXh0ZXJuIHZvaWQgX19tbXVfbm90aWZpZXJfYXJjaF9pbnZhbGlkYXRlX3NlY29uZGFyeV90bGJzKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLFxuQEAgLTY0Myw2ICs2NTMsMTAgQEAgc3RhdGljIGlubGluZSB2b2lkIG1tdV9ub3RpZmllcl9zeW5jaHJvbml6ZSh2b2lkKVxuIHtcbiB9XG4gXG4rc3RhdGljIGlubGluZSB2b2lkIG1tdV9ub3RpZmllcl9vb21fZW50ZXIoc3RydWN0IG1tX3N0cnVjdCAqbW0pXG4re1xuK31cbitcbiAjZW5kaWYgLyogQ09ORklHX01NVV9OT1RJRklFUiAqL1xuIFxuICNlbmRpZiAvKiBfTElOVVhfTU1VX05PVElGSUVSX0ggKi9cbmRpZmYgLS1naXQgYS9tbS9tbXVfbm90aWZpZXIuYyBiL21tL21tdV9ub3RpZmllci5jXG5pbmRleCAyNDViNzRmMzlmOTEyMi4uZjMwYmY5NWYxN2M3YWEgMTAwNjQ0XG4tLS0gYS9tbS9tbXVfbm90aWZpZXIuY1xuKysrIGIvbW0vbW11X25vdGlmaWVyLmNcbkBAIC00OSw2ICs0OSwzNyBAQCBzdHJ1Y3QgbW11X25vdGlmaWVyX3N1YnNjcmlwdGlvbnMge1xuIFx0c3RydWN0IGhsaXN0X2hlYWQgZGVmZXJyZWRfbGlzdDtcbiB9O1xuIFxuKy8qXG4rICogQ2FsbGJhY2sgc3RydWN0dXJlIGZvciBhc3luY2hyb25vdXMgT09NIGNsZWFudXAuXG4rICogVXNlZCB3aXRoIGNhbGxfc3JjdSgpIHRvIGRlZmVyIGFmdGVyX29vbV91bnJlZ2lzdGVyIGNhbGxiYWNrc1xuKyAqIHVudGlsIGFmdGVyIFNSQ1UgZ3JhY2UgcGVyaW9kIGNvbXBsZXRlcy5cbisgKi9cbitzdHJ1Y3QgbW11X25vdGlmaWVyX29vbV9jYWxsYmFjayB7XG4rXHRzdHJ1Y3QgcmN1X2hlYWQgcmN1O1xuK1x0c3RydWN0IG1tdV9ub3RpZmllciAqc3Vic2NyaXB0aW9uO1xuK1x0c3RydWN0IG1tX3N0cnVjdCAqbW07XG4rfTtcbitcbisvKlxuKyAqIENhbGxiYWNrIGZ1bmN0aW9uIGludm9rZWQgYWZ0ZXIgU1JDVSBncmFjZSBwZXJpb2QuXG4rICogU2FmZWx5IGNhbGxzIGFmdGVyX29vbV91bnJlZ2lzdGVyIG9uY2UgYWxsIHJlYWRlcnMgaGF2ZSBmaW5pc2hlZC5cbisgKi9cbitzdGF0aWMgdm9pZCBtbXVfbm90aWZpZXJfb29tX2NhbGxiYWNrX2ZuKHN0cnVjdCByY3VfaGVhZCAqcmN1KVxuK3tcbitcdHN0cnVjdCBtbXVfbm90aWZpZXJfb29tX2NhbGxiYWNrICpjYiA9XG4rXHRcdGNvbnRhaW5lcl9vZihyY3UsIHN0cnVjdCBtbXVfbm90aWZpZXJfb29tX2NhbGxiYWNrLCByY3UpO1xuK1xuK1x0LyogU2FmZSAtIGFsbCBTUkNVIHJlYWRlcnMgaGF2ZSBmaW5pc2hlZCAqL1xuK1x0Y2ItXHUwMDNlc3Vic2NyaXB0aW9uLVx1MDAzZW9wcy1cdTAwM2VhZnRlcl9vb21fdW5yZWdpc3RlcihjYi1cdTAwM2VzdWJzY3JpcHRpb24sIGNiLVx1MDAzZW1tKTtcbitcbitcdC8qIFJlbGVhc2UgbW0gcmVmZXJlbmNlIHRha2VuIHdoZW4gY2FsbGJhY2sgd2FzIHNjaGVkdWxlZCAqL1xuK1x0V0FSTl9PTl9PTkNFKGF0b21pY19yZWFkKFx1MDAyNmNiLVx1MDAzZW1tLVx1MDAzZW1tX2NvdW50KSBcdTAwM2M9IDApO1xuK1x0bW1kcm9wKGNiLVx1MDAzZW1tKTtcbitcbitcdC8qIEZyZWUgY2FsbGJhY2sgc3RydWN0dXJlICovXG4rXHRrZnJlZShjYik7XG4rfVxuK1xuIC8qXG4gICogVGhpcyBpcyBhIGNvbGxpc2lvbi1yZXRyeSByZWFkLXNpZGUvd3JpdGUtc2lkZSAnbG9jaycsIGEgbG90IGxpa2UgYVxuICAqIHNlcWNvdW50LCBob3dldmVyIHRoaXMgYWxsb3dzIG11bHRpcGxlIHdyaXRlLXNpZGVzIHRvIGhvbGQgaXQgYXRcbkBAIC0zODUsNiArNDE2LDg0IEBAIHZvaWQgX19tbXVfbm90aWZpZXJfcmVsZWFzZShzdHJ1Y3QgbW1fc3RydWN0ICptbSlcbiBcdFx0bW5faGxpc3RfcmVsZWFzZShzdWJzY3JpcHRpb25zLCBtbSk7XG4gfVxuIFxuK3ZvaWQgbW11X25vdGlmaWVyX29vbV9lbnRlcihzdHJ1Y3QgbW1fc3RydWN0ICptbSlcbit7XG4rXHRzdHJ1Y3QgbW11X25vdGlmaWVyX3N1YnNjcmlwdGlvbnMgKnN1YnNjcmlwdGlvbnMgPVxuK1x0XHRcdFx0XHRcdG1tLVx1MDAzZW5vdGlmaWVyX3N1YnNjcmlwdGlvbnM7XG4rXHRzdHJ1Y3QgbW11X25vdGlmaWVyICpzdWJzY3JpcHRpb247XG4rXHRzdHJ1Y3QgaGxpc3Rfbm9kZSAqdG1wO1xuK1x0SExJU1RfSEVBRChvb21fbGlzdCk7XG4rXHRpbnQgaWQ7XG4rXG4rXHRpZiAoIXN1YnNjcmlwdGlvbnMpXG4rXHRcdHJldHVybjtcbitcbitcdGlkID0gc3JjdV9yZWFkX2xvY2soXHUwMDI2c3JjdSk7XG4rXG4rXHQvKlxuK1x0ICogUHJldmVudCBmdXJ0aGVyIGNhbGxzIHRvIHRoZSBNTVUgbm90aWZpZXIsIGV4Y2VwdCBmb3JcbitcdCAqIHJlbGVhc2UgYW5kIGFmdGVyX29vbV91bnJlZ2lzdGVyLlxuK1x0ICovXG4rXHRzcGluX2xvY2soXHUwMDI2c3Vic2NyaXB0aW9ucy1cdTAwM2Vsb2NrKTtcbitcdGhsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoc3Vic2NyaXB0aW9uLCB0bXAsXG4rXHRcdFx0XHQgIFx1MDAyNnN1YnNjcmlwdGlvbnMtXHUwMDNlbGlzdCwgaGxpc3QpIHtcbitcdFx0aWYgKCFzdWJzY3JpcHRpb24tXHUwMDNlb3BzLVx1MDAzZWFmdGVyX29vbV91bnJlZ2lzdGVyKVxuK1x0XHRcdGNvbnRpbnVlO1xuK1xuK1x0XHQvKlxuK1x0XHQgKiBhZnRlcl9vb21fdW5yZWdpc3RlciBhbmQgYWxsb2Nfbm90aWZpZXIgYXJlIGluY29tcGF0aWJsZSxcbitcdFx0ICogYmVjYXVzZSB0aGVyZSBjb3VsZCBiZSBvdGhlciByZWZlcmVuY2VzIHRvIGFsbG9jYXRlZFxuK1x0XHQgKiBub3RpZmllcnMuXG4rXHRcdCAqL1xuK1x0XHRpZiAoV0FSTl9PTihzdWJzY3JpcHRpb24tXHUwMDNlb3BzLVx1MDAzZWFsbG9jX25vdGlmaWVyKSlcbitcdFx0XHRjb250aW51ZTtcbitcbitcdFx0aGxpc3RfZGVsX2luaXRfcmN1KFx1MDAyNnN1YnNjcmlwdGlvbi1cdTAwM2VobGlzdCk7XG4rXHRcdGhsaXN0X2FkZF9oZWFkKFx1MDAyNnN1YnNjcmlwdGlvbi1cdTAwM2VobGlzdCwgXHUwMDI2b29tX2xpc3QpO1xuK1x0fVxuK1x0c3Bpbl91bmxvY2soXHUwMDI2c3Vic2NyaXB0aW9ucy1cdTAwM2Vsb2NrKTtcbitcdGhsaXN0X2Zvcl9lYWNoX2VudHJ5KHN1YnNjcmlwdGlvbiwgXHUwMDI2b29tX2xpc3QsIGhsaXN0KVxuK1x0XHRpZiAoc3Vic2NyaXB0aW9uLVx1MDAzZW9wcy1cdTAwM2VyZWxlYXNlKVxuK1x0XHRcdHN1YnNjcmlwdGlvbi1cdTAwM2VvcHMtXHUwMDNlcmVsZWFzZShzdWJzY3JpcHRpb24sIG1tKTtcbitcbitcdHNyY3VfcmVhZF91bmxvY2soXHUwMDI2c3JjdSwgaWQpO1xuK1xuK1x0aWYgKGhsaXN0X2VtcHR5KFx1MDAyNm9vbV9saXN0KSlcbitcdFx0cmV0dXJuO1xuK1xuK1x0aGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShzdWJzY3JpcHRpb24sIHRtcCxcbitcdFx0XHRcdCAgXHUwMDI2b29tX2xpc3QsIGhsaXN0KSB7XG4rXHRcdHN0cnVjdCBtbXVfbm90aWZpZXJfb29tX2NhbGxiYWNrICpjYjtcbitcdFx0LypcbitcdFx0ICogUmVtb3ZlIGZyb20gc3RhY2stYmFzZWQgb29tX2xpc3QgYW5kIHJlc2V0IGhsaXN0IHRvIHVuaGFzaGVkIHN0YXRlLlxuK1x0XHQgKiBUaGlzIHNldHMgc3Vic2NyaXB0aW9uLVx1MDAzZWhsaXN0LnBwcmV2ID0gTlVMTCwgc28gZnV0dXJlIGNhbGxlcnMgb2ZcbitcdFx0ICogbW11X25vdGlmaWVyX3VucmVnaXN0ZXIoKSAoZS5nLiBrdm1fZGVzdHJveV92bSkgd2lsbCBzZWVcbitcdFx0ICogaGxpc3RfdW5oYXNoZWQoKSA9PSB0cnVlIGFuZCB0YWtlIHRoZSBzYWZlIHBhdGgsIGF2b2lkaW5nXG4rXHRcdCAqIHVzZS1hZnRlci1mcmVlIG9uIHRoZSBzdGFjay1hbGxvY2F0ZWQgb29tX2xpc3QgaGVhZC5cbitcdFx0ICovXG4rXHRcdGhsaXN0X2RlbF9pbml0KFx1MDAyNnN1YnNjcmlwdGlvbi1cdTAwM2VobGlzdCk7XG4rXG4rXHRcdC8qXG4rXHRcdCAqIEdGUF9BVE9NSUMgZmFpbHVyZSBpcyBleGNlZWRpbmdseSByYXJlLiBXZSBjYW5ub3Qgc2xlZXBcbitcdFx0ICogaGVyZSAod291bGQgcmVpbnRyb2R1Y2UgdGhlIGRlYWRsb2NrIHRoaXMgcGF0Y2ggZml4ZXMpXG4rXHRcdCAqIGFuZCBjYW5ub3QgY2FsbCBhZnRlcl9vb21fdW5yZWdpc3RlciBzeW5jaHJvbm91c2x5XG4rXHRcdCAqIHdpdGhvdXQgZmlyc3Qgd2FpdGluZyBmb3IgU1JDVSByZWFkZXJzLiBUaGUgc3Vic2NyaWJlclxuK1x0XHQgKiB3aWxsIG5vdCByZWNlaXZlIGFmdGVyX29vbV91bnJlZ2lzdGVyIGJ1dCBjbGVhbnVwIHdpbGxcbitcdFx0ICogZXZlbnR1YWxseSBoYXBwZW4gdmlhIHRoZSB1bnJlZ2lzdGVyIHBhdGguXG4rXHRcdCAqL1xuK1x0XHRjYiA9IGttYWxsb2Nfb2JqKCpjYiwgR0ZQX0FUT01JQyk7XG4rXHRcdGlmICghY2IpXG4rXHRcdFx0Y29udGludWU7XG4rXG4rXHRcdGNiLVx1MDAzZXN1YnNjcmlwdGlvbiA9IHN1YnNjcmlwdGlvbjtcbitcdFx0Y2ItXHUwMDNlbW0gPSBtbTtcbitcdFx0bW1ncmFiKG1tKTtcbitcbitcdFx0LyogU2NoZWR1bGUgY2FsbGJhY2sgLSByZXR1cm5zIGltbWVkaWF0ZWx5ICovXG4rXHRcdGNhbGxfc3JjdShcdTAwMjZzcmN1LCBcdTAwMjZjYi1cdTAwM2VyY3UsIG1tdV9ub3RpZmllcl9vb21fY2FsbGJhY2tfZm4pO1xuK1x0fVxuK31cbitcbiAvKlxuICAqIElmIG5vIHlvdW5nIGJpdGZsYWcgaXMgc3VwcG9ydGVkIGJ5IHRoZSBoYXJkd2FyZSwgLVx1MDAzZWNsZWFyX2ZsdXNoX3lvdW5nIGNhblxuICAqIHVubWFwIHRoZSBhZGRyZXNzIGFuZCByZXR1cm4gMSBvciAwIGRlcGVuZGluZyBpZiB0aGUgbWFwcGluZyBwcmV2aW91c2x5XG5AQCAtMTE0NCwzICsxMjUzLDE2IEBAIHZvaWQgbW11X25vdGlmaWVyX3N5bmNocm9uaXplKHZvaWQpXG4gXHRzeW5jaHJvbml6ZV9zcmN1KFx1MDAyNnNyY3UpO1xuIH1cbiBFWFBPUlRfU1lNQk9MX0dQTChtbXVfbm90aWZpZXJfc3luY2hyb25pemUpO1xuK1xuKy8qKlxuKyAqIG1tdV9ub3RpZmllcl9iYXJyaWVyIC0gV2FpdCBmb3IgYWxsIHBlbmRpbmcgTU1VIG5vdGlmaWVyIGNhbGxiYWNrc1xuKyAqXG4rICogV2FpdHMgZm9yIGFsbCBjYWxsX3NyY3UoKSBjYWxsYmFja3Mgc2NoZWR1bGVkIGJ5IG1tdV9ub3RpZmllcl9vb21fZW50ZXIoKVxuKyAqIHRvIGNvbXBsZXRlLiBVc2VkIGJ5IHN1YnN5c3RlbXMgZHVyaW5nIGNsZWFudXAgdG8gcHJldmVudCB1c2UtYWZ0ZXItZnJlZVxuKyAqIHdoZW4gZGVzdHJveWluZyBzdHJ1Y3R1cmVzIGFjY2Vzc2VkIGJ5IHRoZSBjYWxsYmFja3MuXG4rICovXG4rdm9pZCBtbXVfbm90aWZpZXJfYmFycmllcih2b2lkKVxuK3tcbitcdHNyY3VfYmFycmllcihcdTAwMjZzcmN1KTtcbit9XG4rRVhQT1JUX1NZTUJPTF9HUEwobW11X25vdGlmaWVyX2JhcnJpZXIpO1xuZGlmZiAtLWdpdCBhL21tL29vbV9raWxsLmMgYi9tbS9vb21fa2lsbC5jXG5pbmRleCA1ZjM3MmY2ZTI2ZmEzMi4uNjZhZGNkMDNmMzZhOGUgMTAwNjQ0XG4tLS0gYS9tbS9vb21fa2lsbC5jXG4rKysgYi9tbS9vb21fa2lsbC5jXG5AQCAtNTE2LDYgKzUxNiw5IEBAIHN0YXRpYyBib29sIF9fb29tX3JlYXBfdGFza19tbShzdHJ1Y3QgbW1fc3RydWN0ICptbSlcbiBcdGJvb2wgcmV0ID0gdHJ1ZTtcbiBcdE1BX1NUQVRFKG1hcywgXHUwMDI2bW0tXHUwMDNlbW1fbXQsIFVMT05HX01BWCwgVUxPTkdfTUFYKTtcbiBcbitcdC8qIE5vdGlmeSBNTVUgbm90aWZpZXJzIGFib3V0IHRoZSBPT00gZXZlbnQgKi9cbitcdG1tdV9ub3RpZmllcl9vb21fZW50ZXIobW0pO1xuK1xuIFx0LypcbiBcdCAqIFRlbGwgYWxsIHVzZXJzIG9mIGdldF91c2VyL2NvcHlfZnJvbV91c2VyIGV0Yy4uLiB0aGF0IHRoZSBjb250ZW50XG4gXHQgKiBpcyBubyBsb25nZXIgc3RhYmxlLiBObyBiYXJyaWVycyByZWFsbHkgbmVlZGVkIGJlY2F1c2UgdW5tYXBwaW5nXG5kaWZmIC0tZ2l0IGEvdmlydC9rdm0va3ZtX21haW4uYyBiL3ZpcnQva3ZtL2t2bV9tYWluLmNcbmluZGV4IGU0NGMyMGMwNDk2MTBkLi43OWE0ZGY4YTMzN2EyZCAxMDA2NDRcbi0tLSBhL3ZpcnQva3ZtL2t2bV9tYWluLmNcbisrKyBiL3ZpcnQva3ZtL2t2bV9tYWluLmNcbkBAIC04NzUsNiArODc1LDI0IEBAIHN0YXRpYyB2b2lkIGt2bV9tbXVfbm90aWZpZXJfcmVsZWFzZShzdHJ1Y3QgbW11X25vdGlmaWVyICptbixcbiBcdHNyY3VfcmVhZF91bmxvY2soXHUwMDI2a3ZtLVx1MDAzZXNyY3UsIGlkeCk7XG4gfVxuIFxuK3N0YXRpYyB2b2lkIGt2bV9tbXVfbm90aWZpZXJfYWZ0ZXJfb29tX3VucmVnaXN0ZXIoc3RydWN0IG1tdV9ub3RpZmllciAqbW4sXG4rXHRcdFx0XHRcdFx0ICBzdHJ1Y3QgbW1fc3RydWN0ICptbSlcbit7XG4rXHRzdHJ1Y3Qga3ZtICprdm07XG4rXG4rXHRrdm0gPSBtbXVfbm90aWZpZXJfdG9fa3ZtKG1uKTtcbitcbitcdC8qXG4rXHQgKiBBdCB0aGlzIHBvaW50IHRoZSB1bnJlZ2lzdGVyIGhhcyBjb21wbGV0ZWQgYW5kIGFsbCBvdGhlciBjYWxsYmFja3NcbitcdCAqIGhhdmUgdGVybWluYXRlZC4gQ2xlYW4gdXAgYW55IHVuYmFsYW5jZWQgaW52YWxpZGF0aW9uIGNvdW50cy5cbitcdCAqL1xuK1x0V0FSTl9PTihyY3V3YWl0X2FjdGl2ZShcdTAwMjZrdm0tXHUwMDNlbW5fbWVtc2xvdHNfdXBkYXRlX3JjdXdhaXQpKTtcbitcdGlmIChrdm0tXHUwMDNlbW5fYWN0aXZlX2ludmFsaWRhdGVfY291bnQpXG4rXHRcdGt2bS1cdTAwM2Vtbl9hY3RpdmVfaW52YWxpZGF0ZV9jb3VudCA9IDA7XG4rXHRlbHNlXG4rXHRcdFdBUk5fT04oa3ZtLVx1MDAzZW1tdV9pbnZhbGlkYXRlX2luX3Byb2dyZXNzKTtcbit9XG4rXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBtbXVfbm90aWZpZXJfb3BzIGt2bV9tbXVfbm90aWZpZXJfb3BzID0ge1xuIFx0LmludmFsaWRhdGVfcmFuZ2Vfc3RhcnRcdD0ga3ZtX21tdV9ub3RpZmllcl9pbnZhbGlkYXRlX3JhbmdlX3N0YXJ0LFxuIFx0LmludmFsaWRhdGVfcmFuZ2VfZW5kXHQ9IGt2bV9tbXVfbm90aWZpZXJfaW52YWxpZGF0ZV9yYW5nZV9lbmQsXG5AQCAtODgyLDYgKzkwMCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbW11X25vdGlmaWVyX29wcyBrdm1fbW11X25vdGlmaWVyX29wcyA9IHtcbiBcdC5jbGVhcl95b3VuZ1x0XHQ9IGt2bV9tbXVfbm90aWZpZXJfY2xlYXJfeW91bmcsXG4gXHQudGVzdF95b3VuZ1x0XHQ9IGt2bV9tbXVfbm90aWZpZXJfdGVzdF95b3VuZyxcbiBcdC5yZWxlYXNlXHRcdD0ga3ZtX21tdV9ub3RpZmllcl9yZWxlYXNlLFxuK1x0LmFmdGVyX29vbV91bnJlZ2lzdGVyXHQ9IGt2bV9tbXVfbm90aWZpZXJfYWZ0ZXJfb29tX3VucmVnaXN0ZXIsXG4gfTtcbiBcbiBzdGF0aWMgaW50IGt2bV9pbml0X21tdV9ub3RpZmllcihzdHJ1Y3Qga3ZtICprdm0pXG5AQCAtMTI3Myw3ICsxMjkyLDEzIEBAIHN0YXRpYyB2b2lkIGt2bV9kZXN0cm95X3ZtKHN0cnVjdCBrdm0gKmt2bSlcbiBcdFx0a3ZtLVx1MDAzZWJ1c2VzW2ldID0gTlVMTDtcbiBcdH1cbiBcdGt2bV9jb2FsZXNjZWRfbW1pb19mcmVlKGt2bSk7XG4tXHRtbXVfbm90aWZpZXJfdW5yZWdpc3RlcihcdTAwMjZrdm0tXHUwMDNlbW11X25vdGlmaWVyLCBrdm0tXHUwMDNlbW0pO1xuK1x0aWYgKGhsaXN0X3VuaGFzaGVkKFx1MDAyNmt2bS1cdTAwM2VtbXVfbm90aWZpZXIuaGxpc3QpKSB7XG4rXHRcdC8qIFN1YnNjcmlwdGlvbiByZW1vdmVkIGJ5IE9PTS4gV2FpdCBmb3IgYXN5bmMgY2FsbGJhY2suICovXG4rXHRcdG1tdV9ub3RpZmllcl9iYXJyaWVyKCk7XG4rXHRcdG1tZHJvcChrdm0tXHUwMDNlbW0pO1xuK1x0fSBlbHNlIHtcbitcdFx0bW11X25vdGlmaWVyX3VucmVnaXN0ZXIoXHUwMDI2a3ZtLVx1MDAzZW1tdV9ub3RpZmllciwga3ZtLVx1MDAzZW1tKTtcbitcdH1cbiBcdC8qXG4gXHQgKiBBdCB0aGlzIHBvaW50LCBwZW5kaW5nIGNhbGxzIHRvIGludmFsaWRhdGVfcmFuZ2Vfc3RhcnQoKVxuIFx0ICogaGF2ZSBjb21wbGV0ZWQgYnV0IG5vIG1vcmUgTU1VIG5vdGlmaWVycyB3aWxsIHJ1biwgc29cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDE1OjI5OjAwLjYxNDE0NjYzN1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjcyOTU4NzI5MTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqUGF0Y2ggU2VyaWVzIEV2YWx1YXRpb246IEEgS1ZNIGFuZCBPT00gS2lsbGVyIEludGVncmF0aW9uKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgcGF0Y2ggc2VyaWVzLiBNeSBpbml0aWFsIGltcHJlc3Npb24gaXMgdGhhdCB0aGlzIGlzIGEgcG90ZW50aWFsbHkgc2lnbmlmaWNhbnQgZnVuY3Rpb25hbCBjaGFuZ2UgdG91Y2hpbmcgdXBvbiB0aGUgY29yZSBrZXJuZWwgY29tcG9uZW50czogTU1VIG5vdGlmaWVycywgdGhlIE9PTSBraWxsZXIsIGFuZCwgaW1wb3J0YW50bHksIEtWTS4gVGhlIG1vZGlmaWNhdGlvbnMgc3BhbiBzZXZlcmFsIGtleSBmaWxlcyDigJMgYGluY2x1ZGUvbGludXgvbW11X25vdGlmaWVyLmhgLCBgbW0vbW11X25vdGlmaWVyLmNgLCBgbW0vb29tX2tpbGwuY2AsIGFuZCBgdmlydC9rdm0va3ZtX21haW4uY2Ag4oCTIHdoaWNoIGltbWVkaWF0ZWx5IGZsYWdzIHRoaXMgYXMgc29tZXRoaW5nIHdhcnJhbnRpbmcgYSB0aG9yb3VnaCByZXZpZXcuXG5cblNwZWNpZmljYWxseSwgaXQgbG9va3MgbGlrZSBhIG5ldyBgbW11X25vdGlmaWVyYCBjYWxsYmFjaywgYGFmdGVyX29vbV91bnJlZ2lzdGVyYCwgaGFzIGJlZW4gaW50cm9kdWNlZC4gVGhpcyBpbXBsaWVzIGEgbmV3IGludGVyYWN0aW9uIHBvaW50IHdpdGhpbiB0aGUgTU1VIG5vdGlmaWVyIGZyYW1ld29yaywgdHJpZ2dlcmVkIGFmdGVyIGFuIE9PTSBzY2VuYXJpby4gQWRkaXRpb25hbGx5LCB0aGUgbmV3IGZ1bmN0aW9uIGBtbXVfbm90aWZpZXJfb29tX2VudGVyKClgIGlzIGNhbGxlZCB3aXRoaW4gYF9fb29tX3JlYXBfdGFza19tbSgpYCwgaW5kaWNhdGluZyBhIHRpZ2h0ZXIgaW50ZWdyYXRpb24gYmV0d2VlbiB0aGUgT09NIGtpbGxlciBhbmQgdGhlIE1NVSBub3RpZmllciBpbmZyYXN0cnVjdHVyZS4gVGhlIGluY2x1c2lvbiBvZiBgbW11X25vdGlmaWVyX2JhcnJpZXIoKWAgZnVydGhlciBzdWdnZXN0cyBzeW5jaHJvbml6YXRpb24gY29uY2VybnMgdGhhdCB3aWxsIG5lZWQgY2FyZWZ1bCBzY3J1dGlueS5cblxuRm9yIEtWTSwgdGhlIHBhdGNoIGltcGxlbWVudHMgYGFmdGVyX29vbV91bnJlZ2lzdGVyYCB3aXRoaW4gYGt2bV9tYWluLmNgLiBUaGlzIGlzIHBhcnRpY3VsYXJseSBpbnRlcmVzdGluZyBiZWNhdXNlIGl0IHN1Z2dlc3RzIGEgd2F5IGZvciBLVk0gdG8gYmUgaW5mb3JtZWQgYWZ0ZXIgYW4gT09NIGV2ZW50IGFuZCBwb3RlbnRpYWxseSBwZXJmb3JtIGNsZWFudXAgb3IgcmVjb3Zlcnkgb3BlcmF0aW9ucyByZWxhdGVkIHRvIGl0cyB2aXJ0dWFsIG1hY2hpbmVzLlxuXG5HaXZlbiB0aGUgc2NvcGUgb2YgdGhlc2UgY2hhbmdlcywgSSdtIGFscmVhZHkgdGhpbmtpbmcgYWJvdXQgZnV6emluZyB0aGlzIHRob3JvdWdobHkuIFRoZSBpbnRlcnBsYXkgYmV0d2VlbiB0aGUgT09NIGtpbGxlciBhbmQgS1ZNIGlzIGNvbXBsZXgsIGFuZCB1bmV4cGVjdGVkIGludGVyYWN0aW9ucyBjb3VsZCBsZWFkIHRvIHN0YWJpbGl0eSBpc3N1ZXMuXG5cbk5vdywgbGV0J3MgbW92ZSBvbnRvIHRoZSBjb25maWd1cmF0aW9uIHJlcXVpcmVtZW50cy4gVGhlIHJlbGV2YW50IGNvZGUgaW4gYG1tL21tdV9ub3RpZmllci5jYCB3aWxsIG5hdHVyYWxseSBvbmx5IGJlIGNvbXBpbGVkIGlmIGBDT05GSUdfTU1VX05PVElGSUVSYCBpcyBlbmFibGVkLiBUaGUgS1ZNLXNwZWNpZmljIGNvZGUgaW4gYHZpcnQva3ZtL2t2bV9tYWluLmNgIG9idmlvdXNseSByZXF1aXJlcyBgQ09ORklHX0tWTWAuIFRoZSBjb2RlIGluIGBtbS9vb21fa2lsbC5jYCwgaG93ZXZlciwgc2VlbXMgdG8gYWx3YXlzIGJlIGNvbXBpbGVkIChvciBwZXJoYXBzIGhhcyBzb21lIGltcGxpY2l0IGRlcGVuZGVuY3kgb24gYENPTkZJR19NTVVgKS4gTGV0J3MgZG91YmxlIGNoZWNrIHRoYXQgYXNzdW1wdGlvbnMgYXJlIGNvcnJlY3Q7IEknbGwgdXNlIGBncmVwcGVyYCB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBzdWJ0bGUgY29uZmlndXJhdGlvbnMgdGhhdCB3ZSBuZWVkIHRvIGJlIGF3YXJlIG9mLiBJJ2xsIGZvY3VzIG9uIGBDT05GSUdfTU1VX05PVElGSUVSYCBhbmQgYENPTkZJR19LVk1gIGZvciB0aGUgaW5pdGlhbCBzZWFyY2ggdG8gc2VlIGlmIGFueSBvdGhlciBkZXBlbmRlbmNpZXMgY29tZSB1cC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDc3OSwiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMxNywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDE1OjI5OjA3LjkxMDAyMTU4MloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjg2NDcwMzA1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkNPTkZJR19NTVVfTk9USUZJRVJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9kbWEtYnVmL2RtYS1yZXN2LmM9Nzc1PXN0YXRpYyBpbnQgX19pbml0IGRtYV9yZXN2X2xvY2tkZXAodm9pZClcXG4tLVxcbmRyaXZlcnMvZG1hLWJ1Zi9kbWEtcmVzdi5jLTgwMC1cXHRpX21tYXBfdW5sb2NrX3dyaXRlKFxcdTAwMjZtYXBwaW5nKTtcXG5kcml2ZXJzL2RtYS1idWYvZG1hLXJlc3YuYzo4MDE6I2lmZGVmIENPTkZJR19NTVVfTk9USUZJRVJcXG5kcml2ZXJzL2RtYS1idWYvZG1hLXJlc3YuYy04MDItXFx0bG9ja19tYXBfYWNxdWlyZShcXHUwMDI2X19tbXVfbm90aWZpZXJfaW52YWxpZGF0ZV9yYW5nZV9zdGFydF9tYXApO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X29iamVjdC5oLTM0LVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9vYmplY3QuaDozNTojaWZkZWYgQ09ORklHX01NVV9OT1RJRklFUlxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9vYmplY3QuaC0zNi0jaW5jbHVkZSBcXHUwMDNjbGludXgvbW11X25vdGlmaWVyLmhcXHUwMDNlXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfb2JqZWN0Lmg9MTAzPXN0cnVjdCBhbWRncHVfYm8ge1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X29iamVjdC5oLTExNi1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfb2JqZWN0Lmg6MTE3OiNpZmRlZiBDT05GSUdfTU1VX05PVElGSUVSXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X29iamVjdC5oLTExOC1cXHRzdHJ1Y3QgbW11X2ludGVydmFsX25vdGlmaWVyXFx0bm90aWZpZXI7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9LY29uZmlnPTExND1jb25maWcgRFJNX0k5MTVfVVNFUlBUUlxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvS2NvbmZpZy0xMTktXFx0aGVscFxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L0tjb25maWc6MTIwOlxcdCAgVGhpcyBvcHRpb24gc2VsZWN0cyBDT05GSUdfTU1VX05PVElGSUVSIGlmIGl0IGlzbid0IGFscmVhZHlcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9LY29uZmlnLTEyMS1cXHQgIHNlbGVjdGVkIHRvIGVuYWJsZWQgZnVsbCB1c2VycHRyIHN1cHBvcnQuXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fZXhlY2J1ZmZlci5jPTIwODA9c3RhdGljIGludCBlYl9tb3ZlX3RvX2dwdShzdHJ1Y3QgaTkxNV9leGVjYnVmZmVyICplYilcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9leGVjYnVmZmVyLmMtMjE0NC1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fZXhlY2J1ZmZlci5jOjIxNDU6I2lmZGVmIENPTkZJR19NTVVfTk9USUZJRVJcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fZXhlY2J1ZmZlci5jLTIxNDYtXFx0aWYgKCFlcnIgXFx1MDAyNlxcdTAwMjYgKGViLVxcdTAwM2VhcmdzLVxcdTAwM2VmbGFncyBcXHUwMDI2IF9fRVhFQ19VU0VSUFRSX1VTRUQpKSB7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fb2JqZWN0Lmg9ODUzPXZvaWQgX19zaG1lbV93cml0ZWJhY2soc2l6ZV90IHNpemUsIHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nKTtcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fb2JqZWN0LmgtODU0LVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9vYmplY3QuaDo4NTU6I2lmZGVmIENPTkZJR19NTVVfTk9USUZJRVJcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fb2JqZWN0LmgtODU2LXN0YXRpYyBpbmxpbmUgYm9vbFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX29iamVjdF90eXBlcy5oPTIzOT1zdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCB7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fb2JqZWN0X3R5cGVzLmgtNzEzLVxcdHVuaW9uIHtcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fb2JqZWN0X3R5cGVzLmg6NzE0OiNpZmRlZiBDT05GSUdfTU1VX05PVElGSUVSXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX29iamVjdF90eXBlcy5oLTcxNS1cXHRcXHRzdHJ1Y3QgaTkxNV9nZW1fdXNlcnB0ciB7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fdXNlcnB0ci5jLTQ3LVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV91c2VycHRyLmM6NDg6I2lmZGVmIENPTkZJR19NTVVfTk9USUZJRVJcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fdXNlcnB0ci5jLTQ5LVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3VzZXJwdHIuYz00NjI9aTkxNV9nZW1fdXNlcnB0cl9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3VzZXJwdHIuYy01MTgtXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3VzZXJwdHIuYzo1MTk6I2lmZGVmIENPTkZJR19NTVVfTk9USUZJRVJcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fdXNlcnB0ci5jLTUyMC1cXHRvYmogPSBpOTE1X2dlbV9vYmplY3RfYWxsb2MoKTtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9yYWRlb24vS2NvbmZpZz0zOD1jb25maWcgRFJNX1JBREVPTl9VU0VSUFRSXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL0tjb25maWctNDItXFx0aGVscFxcbmRyaXZlcnMvZ3B1L2RybS9yYWRlb24vS2NvbmZpZzo0MzpcXHQgIFRoaXMgb3B0aW9uIHNlbGVjdHMgQ09ORklHX01NVV9OT1RJRklFUiBpZiBpdCBpc24ndCBhbHJlYWR5XFxuZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9LY29uZmlnLTQ0LVxcdCAgc2VsZWN0ZWQgdG8gZW5hYmxlZCBmdWxsIHVzZXJwdHIgc3VwcG9ydC5cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9yYWRlb24vTWFrZWZpbGU9MzQ9cmFkZW9uLXkgKz0gcmFkZW9uX2RldmljZS5vIHJhZGVvbl9hc2ljLm8gcmFkZW9uX2ttcy5vIFxcXFxcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9yYWRlb24vTWFrZWZpbGUtNTMtXFxuZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9NYWtlZmlsZTo1NDpyYWRlb24tJChDT05GSUdfTU1VX05PVElGSUVSKSArPSByYWRlb25fbW4ub1xcbmRyaXZlcnMvZ3B1L2RybS9yYWRlb24vTWFrZWZpbGUtNTUtXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbi5oLTcxLVxcbmRyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uLmg6NzI6I2lmZGVmIENPTkZJR19NTVVfTk9USUZJRVJcXG5kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbi5oLTczLSNpbmNsdWRlIFxcdTAwM2NsaW51eC9tbXVfbm90aWZpZXIuaFxcdTAwM2VcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uLmg9NDgzPXN0cnVjdCByYWRlb25fYm8ge1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb24uaC01MDYtXFxuZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb24uaDo1MDc6I2lmZGVmIENPTkZJR19NTVVfTk9USUZJRVJcXG5kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbi5oLTUwOC1cXHRzdHJ1Y3QgbW11X2ludGVydmFsX25vdGlmaWVyXFx0bm90aWZpZXI7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbi5oPTE3NzY9dm9pZCByYWRlb25fdGVzdF9zeW5jaW5nKHN0cnVjdCByYWRlb25fZGV2aWNlICpyZGV2KTtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uLmgtMTc4MC0gKi9cXG5kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbi5oOjE3ODE6I2lmIGRlZmluZWQoQ09ORklHX01NVV9OT1RJRklFUilcXG5kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbi5oLTE3ODItaW50IHJhZGVvbl9tbl9yZWdpc3RlcihzdHJ1Y3QgcmFkZW9uX2JvICpibywgdW5zaWduZWQgbG9uZyBhZGRyKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvbW1fdHlwZXMuaD0xMTYwPXN0cnVjdCBtbV9zdHJ1Y3Qge1xcbi0tXFxuaW5jbHVkZS9saW51eC9tbV90eXBlcy5oLTEzMjgtXFx0XFx0c3RydWN0IGZpbGUgX19yY3UgKmV4ZV9maWxlO1xcbmluY2x1ZGUvbGludXgvbW1fdHlwZXMuaDoxMzI5OiNpZmRlZiBDT05GSUdfTU1VX05PVElGSUVSXFxuaW5jbHVkZS9saW51eC9tbV90eXBlcy5oLTEzMzAtXFx0XFx0c3RydWN0IG1tdV9ub3RpZmllcl9zdWJzY3JpcHRpb25zICpub3RpZmllcl9zdWJzY3JpcHRpb25zO1xcbi0tXFxuaW5jbHVkZS9saW51eC9tbXVfbm90aWZpZXIuaD0yOTg9c3RydWN0IG1tdV9pbnRlcnZhbF9ub3RpZmllciB7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L21tdV9ub3RpZmllci5oLTMwNS1cXG5pbmNsdWRlL2xpbnV4L21tdV9ub3RpZmllci5oOjMwNjojaWZkZWYgQ09ORklHX01NVV9OT1RJRklFUlxcbmluY2x1ZGUvbGludXgvbW11X25vdGlmaWVyLmgtMzA3LVxcbi0tXFxuaW5jbHVkZS9saW51eC9tbXVfbm90aWZpZXIuaD01NTc9c3RhdGljIGlubGluZSB2b2lkIG1tdV9ub3RpZmllcl9yYW5nZV9pbml0X293bmVyKFxcbi0tXFxuaW5jbHVkZS9saW51eC9tbXVfbm90aWZpZXIuaC01NjYtXFxuaW5jbHVkZS9saW51eC9tbXVfbm90aWZpZXIuaDo1Njc6I2Vsc2UgLyogQ09ORklHX01NVV9OT1RJRklFUiAqL1xcbmluY2x1ZGUvbGludXgvbW11X25vdGlmaWVyLmgtNTY4LVxcbi0tXFxuaW5jbHVkZS9saW51eC9tbXVfbm90aWZpZXIuaD02NTY9c3RhdGljIGlubGluZSB2b2lkIG1tdV9ub3RpZmllcl9vb21fZW50ZXIoc3RydWN0IG1tX3N0cnVjdCAqbW0pXFxuLS1cXG5pbmNsdWRlL2xpbnV4L21tdV9ub3RpZmllci5oLTY1OS1cXG5pbmNsdWRlL2xpbnV4L21tdV9ub3RpZmllci5oOjY2MDojZW5kaWYgLyogQ09ORklHX01NVV9OT1RJRklFUiAqL1xcbmluY2x1ZGUvbGludXgvbW11X25vdGlmaWVyLmgtNjYxLVxcbi0tXFxubW0vTWFrZWZpbGU9ODg9b2JqLSQoQ09ORklHX1NQQVJTRU1FTV9WTUVNTUFQKSArPSBzcGFyc2Utdm1lbW1hcC5vXFxubW0vTWFrZWZpbGU6ODk6b2JqLSQoQ09ORklHX01NVV9OT1RJRklFUikgKz0gbW11X25vdGlmaWVyLm9cXG5tbS9NYWtlZmlsZS05MC1vYmotJChDT05GSUdfS1NNKSArPSBrc20ub1xcbi0tXFxubW0vZGVidWcuYz0xNzU9dm9pZCBkdW1wX21tKGNvbnN0IHN0cnVjdCBtbV9zdHJ1Y3QgKm1tKVxcbi0tXFxubW0vZGVidWcuYy0xOTItXFx0XFx0XFxcImV4ZV9maWxlICVweFxcXFxuXFxcIlxcbm1tL2RlYnVnLmM6MTkzOiNpZmRlZiBDT05GSUdfTU1VX05PVElGSUVSXFxubW0vZGVidWcuYy0xOTQtXFx0XFx0XFxcIm5vdGlmaWVyX3N1YnNjcmlwdGlvbnMgJXB4XFxcXG5cXFwiXFxuLS1cXG5tbS9kZWJ1Zy5jLTIyMS1cXHRcXHRtbS1cXHUwMDNlZXhlX2ZpbGUsXFxubW0vZGVidWcuYzoyMjI6I2lmZGVmIENPTkZJR19NTVVfTk9USUZJRVJcXG5tbS9kZWJ1Zy5jLTIyMy1cXHRcXHRtbS1cXHUwMDNlbm90aWZpZXJfc3Vic2NyaXB0aW9ucyxcXG4tLVxcbm1tL2ludGVybmFsLmg9MTg4MD1zdGF0aWMgaW5saW5lIHZvaWQgbWF5YmVfcm1hcF91bmxvY2tfYWN0aW9uKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLFxcbi0tXFxubW0vaW50ZXJuYWwuaC0xODkzLVxcbm1tL2ludGVybmFsLmg6MTg5NDojaWZkZWYgQ09ORklHX01NVV9OT1RJRklFUlxcbm1tL2ludGVybmFsLmgtMTg5NS1zdGF0aWMgaW5saW5lIGJvb2wgY2xlYXJfZmx1c2hfeW91bmdfcHRlc19ub3RpZnkoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsXFxuLS1cXG5tbS9pbnRlcm5hbC5oPTE5MjY9c3RhdGljIGlubGluZSBib29sIHBtZHBfdGVzdF9hbmRfY2xlYXJfeW91bmdfbm90aWZ5KHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLFxcbi0tXFxubW0vaW50ZXJuYWwuaC0xOTM1LVxcbm1tL2ludGVybmFsLmg6MTkzNjojZWxzZSAvKiBDT05GSUdfTU1VX05PVElGSUVSICovXFxubW0vaW50ZXJuYWwuaC0xOTM3LVxcbi0tXFxubW0vaW50ZXJuYWwuaC0xOTQyLVxcbm1tL2ludGVybmFsLmg6MTk0MzojZW5kaWYgLyogQ09ORklHX01NVV9OT1RJRklFUiAqL1xcbm1tL2ludGVybmFsLmgtMTk0NC1cXG4tLVxcbm1tL3BhZ2VfYWxsb2MuYz00MzM3PXZvaWQgZnNfcmVjbGFpbV9hY3F1aXJlKGdmcF90IGdmcF9tYXNrKVxcbi0tXFxubW0vcGFnZV9hbGxvYy5jLTQzNDQtXFxubW0vcGFnZV9hbGxvYy5jOjQzNDU6I2lmZGVmIENPTkZJR19NTVVfTk9USUZJRVJcXG5tbS9wYWdlX2FsbG9jLmMtNDM0Ni1cXHRcXHRsb2NrX21hcF9hY3F1aXJlKFxcdTAwMjZfX21tdV9ub3RpZmllcl9pbnZhbGlkYXRlX3JhbmdlX3N0YXJ0X21hcCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDE1OjI5OjEwLjE5NjQ5NjI3N1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0MDQxODM0ODUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIFJvbGUgb2YgYENPTkZJR19NTVVfTk9USUZJRVJgKipcblxuUmlnaHQsIGxldCdzIHNlZS4uLiBJJ20gbm90aWNpbmcgYENPTkZJR19NTVVfTk9USUZJRVJgIGlzIGEgZGVwZW5kZW5jeSwgb3IgYXQgbGVhc3QgdXNlZCwgYnkgcXVpdGUgYSBmZXcgc2lnbmlmaWNhbnQgZHJpdmVycy4gRFJNLCBLVk0uLi4gdGhhdCdzIGEga2V5IGFyZWEgdG8gYmUgYXdhcmUgb2YuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgYmV0dGVyLiBOb3csIHdoYXQncyBkcml2aW5nIHRoaXM/IExldCdzIGRyaWxsIGRvd24gaW50byBgQ09ORklHX0tWTWAgc3BlY2lmaWNhbGx5IGFuZCBmaWd1cmUgb3V0IHdoeSBLVk0gbmVlZHMgdGhpcy4gSXQncyBhbG1vc3QgY2VydGFpbiB0byBiZSByZWxhdGVkIHRvIG1lbW9yeSBtYW5hZ2VtZW50IGFuZCB2aXJ0dWFsaXphdGlvbi4gTGV0IG1lIGV4YW1pbmUgdGhlIEtWTSBjb25maWd1cmF0aW9uIG9wdGlvbnMgYW5kIHJlbGF0ZWQgY29kZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBNTVUgbm90aWZpZXIgcGxheXMgaW50byBtZW1vcnkgbWFuYWdlbWVudCBmb3IgdmlydHVhbCBtYWNoaW5lcyBhbmQgd2hhdCB0aGUgaW1wbGljYXRpb25zIGFyZSBmb3IgcGVyZm9ybWFuY2UgYW5kIHN0YWJpbGl0eS4gT2theSwgbGV0J3Mgc3RhcnQgZGlnZ2luZy5cblxuXG4iLCJJbnB1dFRva2VucyI6ODMxMSwiT3V0cHV0VG9rZW5zIjoxOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDE1OjI5OjEzLjYwMDY4MTc5MloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNTA0ODE0NjMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkNPTkZJR19LVk1cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAzMzc1IGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5hcmNoL2FybTY0L0tidWlsZD02PW9iai15XFx0XFx0XFx0Kz0ga2VybmVsLyBtbS8gbmV0L1xcbmFyY2gvYXJtNjQvS2J1aWxkOjc6b2JqLSQoQ09ORklHX0tWTSlcXHQrPSBrdm0vXFxuYXJjaC9hcm02NC9LYnVpbGQtOC1vYmotJChDT05GSUdfWEVOKVxcdCs9IHhlbi9cXG4tLVxcbmFyY2gvYXJtNjQvY29uZmlncy9kZWZjb25maWc9MTI0PUNPTkZJR19WSVJUVUFMSVpBVElPTj15XFxuYXJjaC9hcm02NC9jb25maWdzL2RlZmNvbmZpZzoxMjU6Q09ORklHX0tWTT15XFxuYXJjaC9hcm02NC9jb25maWdzL2RlZmNvbmZpZy0xMjYtQ09ORklHX0pVTVBfTEFCRUw9eVxcbi0tXFxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9maXhtYXAuaD0zNj1lbnVtIGZpeGVkX2FkZHJlc3NlcyB7XFxuLS1cXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2ZpeG1hcC5oLTUwLVxcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vZml4bWFwLmg6NTE6I2lmZGVmIENPTkZJR19LVk1cXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2ZpeG1hcC5oLTUyLVxcdC8qIE9uZSBzbG90IHBlciBDUFUsIG1hcHBpbmcgdGhlIGd1ZXN0J3MgVk5DUiBwYWdlIGF0IEVMMi4gKi9cXG4tLVxcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20va3ZtX2hvc3QuaD02OD1lbnVtIGt2bV9tb2RlIHtcXG4tLVxcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20va3ZtX2hvc3QuaC03My19O1xcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20va3ZtX2hvc3QuaDo3NDojaWZkZWYgQ09ORklHX0tWTVxcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20va3ZtX2hvc3QuaC03NS1lbnVtIGt2bV9tb2RlIGt2bV9nZXRfbW9kZSh2b2lkKTtcXG4tLVxcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20va3ZtX2hvc3QuaD0xNDY0PXN0YXRpYyBpbmxpbmUgYm9vbCBrdm1fcG11X2NvdW50ZXJfZGVmZXJyZWQoc3RydWN0IHBlcmZfZXZlbnRfYXR0ciAqYXR0cilcXG4tLVxcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20va3ZtX2hvc3QuaC0xNDY4LVxcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20va3ZtX2hvc3QuaDoxNDY5OiNpZmRlZiBDT05GSUdfS1ZNXFxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9rdm1faG9zdC5oLTE0NzAtdm9pZCBrdm1fc2V0X3BtdV9ldmVudHModTY0IHNldCwgc3RydWN0IHBlcmZfZXZlbnRfYXR0ciAqYXR0cik7XFxuLS1cXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2t2bV9ob3N0Lmg9MTUzMT1pbnQga3ZtX3RybmdfY2FsbChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpO1xcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20va3ZtX2hvc3QuaDoxNTMyOiNpZmRlZiBDT05GSUdfS1ZNXFxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9rdm1faG9zdC5oLTE1MzMtZXh0ZXJuIHBoeXNfYWRkcl90IGh5cF9tZW1fYmFzZTtcXG4tLVxcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vdmlydC5oPTkxPXN0YXRpYyBpbmxpbmUgYm9vbCBpc19wa3ZtX2luaXRpYWxpemVkKHZvaWQpXFxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS92aXJ0LmgtOTIte1xcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vdmlydC5oOjkzOlxcdHJldHVybiBJU19FTkFCTEVEKENPTkZJR19LVk0pIFxcdTAwMjZcXHUwMDI2XFxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS92aXJ0LmgtOTQtXFx0ICAgICAgIHN0YXRpY19icmFuY2hfbGlrZWx5KFxcdTAwMjZrdm1fcHJvdGVjdGVkX21vZGVfaW5pdGlhbGl6ZWQpO1xcbi0tXFxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS92aXJ0LmgtOTYtXFxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS92aXJ0Lmg6OTc6I2lmZGVmIENPTkZJR19LVk1cXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3ZpcnQuaC05OC1ib29sIHBrdm1fZm9yY2VfcmVjbGFpbV9ndWVzdF9wYWdlKHBoeXNfYWRkcl90IHBoeXMpO1xcbi0tXFxuYXJjaC9hcm02NC9rZXJuZWwvYXNtLW9mZnNldHMuYz0yNz1pbnQgbWFpbih2b2lkKVxcbi0tXFxuYXJjaC9hcm02NC9rZXJuZWwvYXNtLW9mZnNldHMuYy0xMDMtICBCTEFOSygpO1xcbmFyY2gvYXJtNjQva2VybmVsL2FzbS1vZmZzZXRzLmM6MTA0OiNpZmRlZiBDT05GSUdfS1ZNXFxuYXJjaC9hcm02NC9rZXJuZWwvYXNtLW9mZnNldHMuYy0xMDUtICBERUZJTkUoVkNQVV9DT05URVhULFxcdFxcdG9mZnNldG9mKHN0cnVjdCBrdm1fdmNwdSwgYXJjaC5jdHh0KSk7XFxuLS1cXG5hcmNoL2FybTY0L2tlcm5lbC9jcHVmZWF0dXJlLmM9MjQzMz1zdGF0aWMgdm9pZCBlbGZfaHdjYXBfZml4dXAodm9pZClcXG4tLVxcbmFyY2gvYXJtNjQva2VybmVsL2NwdWZlYXR1cmUuYy0yNDQwLVxcbmFyY2gvYXJtNjQva2VybmVsL2NwdWZlYXR1cmUuYzoyNDQxOiNpZmRlZiBDT05GSUdfS1ZNXFxuYXJjaC9hcm02NC9rZXJuZWwvY3B1ZmVhdHVyZS5jLTI0NDItc3RhdGljIGJvb2wgaXNfa3ZtX3Byb3RlY3RlZF9tb2RlKGNvbnN0IHN0cnVjdCBhcm02NF9jcHVfY2FwYWJpbGl0aWVzICplbnRyeSwgaW50IF9fdW51c2VkKVxcbi0tXFxuYXJjaC9hcm02NC9rZXJuZWwvY3B1ZmVhdHVyZS5jLTI0NDUtfVxcbmFyY2gvYXJtNjQva2VybmVsL2NwdWZlYXR1cmUuYzoyNDQ2OiNlbmRpZiAvKiBDT05GSUdfS1ZNICovXFxuYXJjaC9hcm02NC9rZXJuZWwvY3B1ZmVhdHVyZS5jLTI0NDctXFxuLS1cXG5hcmNoL2FybTY0L2tlcm5lbC9jcHVmZWF0dXJlLmM9MjU0Mz1zdGF0aWMgY29uc3Qgc3RydWN0IGFybTY0X2NwdV9jYXBhYmlsaXRpZXMgYXJtNjRfZmVhdHVyZXNbXSA9IHtcXG4tLVxcbmFyY2gvYXJtNjQva2VybmVsL2NwdWZlYXR1cmUuYy0yNjI4LVxcdH0sXFxuYXJjaC9hcm02NC9rZXJuZWwvY3B1ZmVhdHVyZS5jOjI2Mjk6I2lmZGVmIENPTkZJR19LVk1cXG5hcmNoL2FybTY0L2tlcm5lbC9jcHVmZWF0dXJlLmMtMjYzMC1cXHR7XFxuLS1cXG5hcmNoL2FybTY0L2tlcm5lbC9jcHVmZWF0dXJlLmM9Mzc1OT1zdGF0aWMgdm9pZCB2ZXJpZnlfaHlwX2NhcGFiaWxpdGllcyh2b2lkKVxcbi0tXFxuYXJjaC9hcm02NC9rZXJuZWwvY3B1ZmVhdHVyZS5jLTM3NjQtXFxuYXJjaC9hcm02NC9rZXJuZWwvY3B1ZmVhdHVyZS5jOjM3NjU6XFx0aWYgKCFJU19FTkFCTEVEKENPTkZJR19LVk0pKVxcbmFyY2gvYXJtNjQva2VybmVsL2NwdWZlYXR1cmUuYy0zNzY2LVxcdFxcdHJldHVybjtcXG4tLVxcbmFyY2gvYXJtNjQva2VybmVsL2Zwc2ltZC5jPTEwNTA9aW50IHZlY192ZXJpZnlfdnFfbWFwKGVudW0gdmVjX3R5cGUgdHlwZSlcXG4tLVxcbmFyY2gvYXJtNjQva2VybmVsL2Zwc2ltZC5jLTEwNjQtXFxuYXJjaC9hcm02NC9rZXJuZWwvZnBzaW1kLmM6MTA2NTpcXHRpZiAoIUlTX0VOQUJMRUQoQ09ORklHX0tWTSkgfHwgIWlzX2h5cF9tb2RlX2F2YWlsYWJsZSgpKVxcbmFyY2gvYXJtNjQva2VybmVsL2Zwc2ltZC5jLTEwNjYtXFx0XFx0cmV0dXJuIDA7XFxuLS1cXG5hcmNoL2FybTY0L2tlcm5lbC9pbWFnZS12YXJzLmg9NzI9UElfRVhQT1JUX1NZTShfZGF0YSk7XFxuYXJjaC9hcm02NC9rZXJuZWwvaW1hZ2UtdmFycy5oLTczLVxcbmFyY2gvYXJtNjQva2VybmVsL2ltYWdlLXZhcnMuaDo3NDojaWZkZWYgQ09ORklHX0tWTVxcbmFyY2gvYXJtNjQva2VybmVsL2ltYWdlLXZhcnMuaC03NS1cXG4tLVxcbmFyY2gvYXJtNjQva2VybmVsL2ltYWdlLXZhcnMuaD0xNDc9S1ZNX05WSEVfQUxJQVMoa3ZtX3Byb3RlY3RlZF9tb2RlX2luaXRpYWxpemVkKTtcXG5hcmNoL2FybTY0L2tlcm5lbC9pbWFnZS12YXJzLmgtMTQ4LVxcbmFyY2gvYXJtNjQva2VybmVsL2ltYWdlLXZhcnMuaDoxNDk6I2VuZGlmIC8qIENPTkZJR19LVk0gKi9cXG5hcmNoL2FybTY0L2tlcm5lbC9pbWFnZS12YXJzLmgtMTUwLVxcbi0tXFxuYXJjaC9hcm02NC9rZXJuZWwvc21wLmM9NDIzPXN0YXRpYyB2b2lkIF9faW5pdCBoeXBfbW9kZV9jaGVjayh2b2lkKVxcbi0tXFxuYXJjaC9hcm02NC9rZXJuZWwvc21wLmMtNDMxLVxcdFxcdHByX2luZm8oXFxcIkNQVTogQWxsIENQVShzKSBzdGFydGVkIGF0IEVMMVxcXFxuXFxcIik7XFxuYXJjaC9hcm02NC9rZXJuZWwvc21wLmM6NDMyOlxcdGlmIChJU19FTkFCTEVEKENPTkZJR19LVk0pIFxcdTAwMjZcXHUwMDI2ICFpc19rZXJuZWxfaW5faHlwX21vZGUoKSkge1xcbmFyY2gvYXJtNjQva2VybmVsL3NtcC5jLTQzMy1cXHRcXHRrdm1fY29tcHV0ZV9sYXlvdXQoKTtcXG4tLVxcbmFyY2gvYXJtNjQva2VybmVsL3ZtbGludXgubGRzLlMtOC0jaW5jbHVkZSBcXHUwMDNjYXNtL2h5cF9pbWFnZS5oXFx1MDAzZVxcbmFyY2gvYXJtNjQva2VybmVsL3ZtbGludXgubGRzLlM6OTojaWZkZWYgQ09ORklHX0tWTVxcbmFyY2gvYXJtNjQva2VybmVsL3ZtbGludXgubGRzLlMtMTAtI2RlZmluZSBIWVBFUlZJU09SX0VYVEFCTEVcXHRcXHRcXHRcXHRcXHRcXFxcXFxuLS1cXG5hcmNoL2FybTY0L2tlcm5lbC92bWxpbnV4Lmxkcy5TLTcxLSNkZWZpbmUgU0JTU19BTElHTlxcdFxcdFxcdFBBR0VfU0laRVxcbmFyY2gvYXJtNjQva2VybmVsL3ZtbGludXgubGRzLlM6NzI6I2Vsc2UgLyogQ09ORklHX0tWTSAqL1xcbmFyY2gvYXJtNjQva2VybmVsL3ZtbGludXgubGRzLlMtNzMtI2RlZmluZSBIWVBFUlZJU09SX0VYVEFCTEVcXG4tLVxcbmFyY2gvYXJtNjQva2VybmVsL3ZtbGludXgubGRzLlM9NDExPUFTU0VSVCgoX19lbnRyeV90cmFtcF90ZXh0X2VuZCAtIF9fZW50cnlfdHJhbXBfdGV4dF9zdGFydCkgXFx1MDAzYz0gMypQQUdFX1NJWkUsXFxuLS1cXG5hcmNoL2FybTY0L2tlcm5lbC92bWxpbnV4Lmxkcy5TLTQxMy0jZW5kaWZcXG5hcmNoL2FybTY0L2tlcm5lbC92bWxpbnV4Lmxkcy5TOjQxNDojaWZkZWYgQ09ORklHX0tWTVxcbmFyY2gvYXJtNjQva2VybmVsL3ZtbGludXgubGRzLlMtNDE1LUFTU0VSVChfX2h5cF9ic3Nfc3RhcnQgPT0gX19ic3Nfc3RhcnQsIFxcXCJIWVAgYW5kIEhvc3QgQlNTIGFyZSBtaXNhbGlnbmVkXFxcIilcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL01ha2VmaWxlPTg9aW5jbHVkZSAkKHNyY3RyZWUpL3ZpcnQva3ZtL01ha2VmaWxlLmt2bVxcbmFyY2gvYXJtNjQva3ZtL01ha2VmaWxlLTktXFxuYXJjaC9hcm02NC9rdm0vTWFrZWZpbGU6MTA6b2JqLSQoQ09ORklHX0tWTSkgKz0ga3ZtLm9cXG5hcmNoL2FybTY0L2t2bS9NYWtlZmlsZToxMTpvYmotJChDT05GSUdfS1ZNKSArPSBoeXAvXFxuYXJjaC9hcm02NC9rdm0vTWFrZWZpbGUtMTItXFxuLS1cXG5hcmNoL2FybTY0L2t2bS9oeXAvTWFrZWZpbGU9OD1zdWJkaXItY2NmbGFncy15IDo9IC1JJChpbmNkaXIpXFxuYXJjaC9hcm02NC9rdm0vaHlwL01ha2VmaWxlLTktXFxuYXJjaC9hcm02NC9rdm0vaHlwL01ha2VmaWxlOjEwOm9iai0kKENPTkZJR19LVk0pICs9IHZoZS8gbnZoZS8gcGd0YWJsZS5vXFxuLS1cXG5hcmNoL2FybTY0L2t2bS9oeXAvbnZoZS9ob3N0LlM9MTY4PVNZTV9GVU5DX0VORChfX2hvc3RfaHZjKVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vaHlwL252aGUvaG9zdC5TLTIyOC0gKlxcbmFyY2gvYXJtNjQva3ZtL2h5cC9udmhlL2hvc3QuUzoyMjk6ICogQ09ORklHX0tWTV9JTkRJUkVDVF9WRUNUT1JTIGlzIG5vdCBhcHBsaWVkIHRvIHRoZSBob3N0IHZlY3RvcnMgYmVjYXVzZSB0aGVcXG5hcmNoL2FybTY0L2t2bS9oeXAvbnZoZS9ob3N0LlMtMjMwLSAqIGhvc3Qga25vd3MgYWJvdXQgdGhlIEVMMiB2ZWN0b3JzIGFscmVhZHksIGFuZCB0aGVyZSBpcyBubyBwb2ludCBpbiBoaWRpbmdcXG4tLVxcbmFyY2gvYXJtNjQvbW0vaW5pdC5jPTE5Mz12b2lkIF9faW5pdCBhcm02NF9tZW1ibG9ja19pbml0KHZvaWQpXFxuLS1cXG5hcmNoL2FybTY0L21tL2luaXQuYy0yMDQtXFx0ICovXFxuYXJjaC9hcm02NC9tbS9pbml0LmM6MjA1OlxcdGlmIChJU19FTkFCTEVEKENPTkZJR19LVk0pIFxcdTAwMjZcXHUwMDI2IHZhYml0c19hY3R1YWwgPT0gNTIgXFx1MDAyNlxcdTAwMjZcXG5hcmNoL2FybTY0L21tL2luaXQuYy0yMDYtXFx0ICAgIGlzX2h5cF9tb2RlX2F2YWlsYWJsZSgpIFxcdTAwMjZcXHUwMDI2ICFpc19rZXJuZWxfaW5faHlwX21vZGUoKSkge1xcbi0tXFxuYXJjaC9sb29uZ2FyY2gvS2J1aWxkPTQ9b2JqLXkgKz0gdmRzby9cXG5hcmNoL2xvb25nYXJjaC9LYnVpbGQtNS1cXG5hcmNoL2xvb25nYXJjaC9LYnVpbGQ6NjpvYmotJChzdWJzdCBtLHksJChDT05GSUdfS1ZNKSkgKz0ga3ZtL1xcbmFyY2gvbG9vbmdhcmNoL0tidWlsZC03LVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjY0X2RlZmNvbmZpZz04Mz1DT05GSUdfVklSVFVBTElaQVRJT049eVxcbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb242NF9kZWZjb25maWc6ODQ6Q09ORklHX0tWTT1tXFxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjY0X2RlZmNvbmZpZy04NS1DT05GSUdfSlVNUF9MQUJFTD15XFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vTWFrZWZpbGU9Nj1pbmNsdWRlICQoc3JjdHJlZSkvdmlydC9rdm0vTWFrZWZpbGUua3ZtXFxuYXJjaC9sb29uZ2FyY2gva3ZtL01ha2VmaWxlLTctXFxuYXJjaC9sb29uZ2FyY2gva3ZtL01ha2VmaWxlOjg6b2JqLSQoQ09ORklHX0tWTSkgKz0ga3ZtLm9cXG5hcmNoL2xvb25nYXJjaC9rdm0vTWFrZWZpbGUtOS1cXG4tLVxcbmFyY2gvbWlwcy9LYnVpbGQ9MTg9b2JqLXkgKz0gdmRzby9cXG5hcmNoL21pcHMvS2J1aWxkLTE5LVxcbmFyY2gvbWlwcy9LYnVpbGQ6MjA6aWZkZWYgQ09ORklHX0tWTVxcbmFyY2gvbWlwcy9LYnVpbGQtMjEtb2JqLXkgKz0ga3ZtL1xcbi0tXFxuYXJjaC9taXBzL2NvbmZpZ3MvbG9vbmdzb24zX2RlZmNvbmZpZz0zOT1DT05GSUdfVklSVFVBTElaQVRJT049eVxcbmFyY2gvbWlwcy9jb25maWdzL2xvb25nc29uM19kZWZjb25maWc6NDA6Q09ORklHX0tWTT1tXFxuYXJjaC9taXBzL2NvbmZpZ3MvbG9vbmdzb24zX2RlZmNvbmZpZy00MS1DT05GSUdfS1BST0JFUz15XFxuLS1cXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YV9rdm1fZGVmY29uZmlnPTE3PUNPTkZJR19WSVJUVUFMSVpBVElPTj15XFxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFfa3ZtX2RlZmNvbmZpZzoxODpDT05GSUdfS1ZNPW1cXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YV9rdm1fZGVmY29uZmlnOjE5OkNPTkZJR19LVk1fTUlQU19ERUJVR19DT1AwX0NPVU5URVJTPXlcXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YV9rdm1fZGVmY29uZmlnLTIwLUNPTkZJR19WSE9TVF9ORVQ9bVxcbi0tXFxuYXJjaC9taXBzL2luY2x1ZGUvYXNtL2t2bV9ob3N0Lmg9MTg4PXN0cnVjdCBtaXBzX2NvcHJvYyB7XFxuYXJjaC9taXBzL2luY2x1ZGUvYXNtL2t2bV9ob3N0LmgtMTg5LVxcdHVuc2lnbmVkIGxvbmcgcmVnW05fTUlQU19DT1BST0NfUkVHU11bTl9NSVBTX0NPUFJPQ19TRUxdO1xcbmFyY2gvbWlwcy9pbmNsdWRlL2FzbS9rdm1faG9zdC5oOjE5MDojaWZkZWYgQ09ORklHX0tWTV9NSVBTX0RFQlVHX0NPUDBfQ09VTlRFUlNcXG5hcmNoL21pcHMvaW5jbHVkZS9hc20va3ZtX2hvc3QuaC0xOTEtXFx0dW5zaWduZWQgbG9uZyBzdGF0W05fTUlQU19DT1BST0NfUkVHU11bTl9NSVBTX0NPUFJPQ19TRUxdO1xcbi0tXFxuYXJjaC9taXBzL2t2bS9NYWtlZmlsZT0xOD1rdm0teVxcdFxcdCs9IHZ6Lm9cXG5hcmNoL21pcHMva3ZtL01ha2VmaWxlOjE5Om9iai0kKENPTkZJR19LVk0pXFx0Kz0ga3ZtLm9cXG5hcmNoL21pcHMva3ZtL01ha2VmaWxlLTIwLW9iai15XFx0XFx0XFx0Kz0gdGxiLm9cXG4tLVxcbmFyY2gvbWlwcy9rdm0vc3RhdHMuYz00OT12b2lkIGt2bV9taXBzX2R1bXBfc3RhdHMoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbmFyY2gvbWlwcy9rdm0vc3RhdHMuYy01MC17XFxuYXJjaC9taXBzL2t2bS9zdGF0cy5jOjUxOiNpZmRlZiBDT05GSUdfS1ZNX01JUFNfREVCVUdfQ09QMF9DT1VOVEVSU1xcbmFyY2gvbWlwcy9rdm0vc3RhdHMuYy01Mi1cXHRpbnQgaSwgajtcXG4tLVxcbmFyY2gvbWlwcy9rdm0vdnouYz04NzU9c3RhdGljIGVudW0gZW11bGF0aW9uX3Jlc3VsdCBrdm1fdnpfZ3BzaV9jb3AwKHVuaW9uIG1pcHNfaW5zdHJ1Y3Rpb24gaW5zdCxcXG4tLVxcbmFyY2gvbWlwcy9rdm0vdnouYy05MDktXFx0XFx0Y2FzZSBtZmNfb3A6XFxuYXJjaC9taXBzL2t2bS92ei5jOjkxMDojaWZkZWYgQ09ORklHX0tWTV9NSVBTX0RFQlVHX0NPUDBfQ09VTlRFUlNcXG5hcmNoL21pcHMva3ZtL3Z6LmMtOTExLVxcdFxcdFxcdGNvcDAtXFx1MDAzZXN0YXRbcmRdW3NlbF0rKztcXG4tLVxcbmFyY2gvbWlwcy9rdm0vdnouYy05NzUtXFx0XFx0Y2FzZSBtdGNfb3A6XFxuYXJjaC9taXBzL2t2bS92ei5jOjk3NjojaWZkZWYgQ09ORklHX0tWTV9NSVBTX0RFQlVHX0NPUDBfQ09VTlRFUlNcXG5hcmNoL21pcHMva3ZtL3Z6LmMtOTc3LVxcdFxcdFxcdGNvcDAtXFx1MDAzZXN0YXRbcmRdW3NlbF0rKztcXG4tLVxcbmFyY2gvcG93ZXJwYy9LYnVpbGQ9MTQ9b2JqLSQoQ09ORklHX1hNT04pICs9IHhtb24vXFxuYXJjaC9wb3dlcnBjL0tidWlsZDoxNTpvYmotJChDT05GSUdfS1ZNKSAgKz0ga3ZtL1xcbmFyY2gvcG93ZXJwYy9LYnVpbGQtMTYtXFxuLS1cXG5hcmNoL3Bvd2VycGMvY29uZmlncy9ndWVzdC5jb25maWc9Nz1DT05GSUdfVklSVElPX1BDST15XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvZ3Vlc3QuY29uZmlnOjg6Q09ORklHX0tWTV9HVUVTVD15XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvZ3Vlc3QuY29uZmlnLTktQ09ORklHX0VQQVBSX1BBUkFWSVJUPXlcXG4tLVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL212bWU1MTAwX2RlZmNvbmZpZz0yMD1DT05GSUdfTVZNRTUxMDA9eVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL212bWU1MTAwX2RlZmNvbmZpZzoyMTpDT05GSUdfS1ZNX0dVRVNUPXlcXG5hcmNoL3Bvd2VycGMvY29uZmlncy9tdm1lNTEwMF9kZWZjb25maWctMjItQ09ORklHX0haXzEwMD15XFxuLS1cXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wb3dlcm52X2RlZmNvbmZpZz0zMzA9Q09ORklHX1ZJUlRVQUxJWkFUSU9OPXlcXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wb3dlcm52X2RlZmNvbmZpZzozMzE6Q09ORklHX0tWTV9CT09LM1NfNjQ9bVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3Bvd2VybnZfZGVmY29uZmlnOjMzMjpDT05GSUdfS1ZNX0JPT0szU182NF9IVj1tXFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcG93ZXJudl9kZWZjb25maWctMzMzLUNPTkZJR19WSE9TVF9ORVQ9bVxcbi0tXFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHBjNjRfZGVmY29uZmlnPTY5PUNPTkZJR19WSVJUVUFMSVpBVElPTj15XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHBjNjRfZGVmY29uZmlnOjcwOkNPTkZJR19LVk1fQk9PSzNTXzY0PW1cXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wcGM2NF9kZWZjb25maWc6NzE6Q09ORklHX0tWTV9CT09LM1NfNjRfSFY9bVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzY0X2RlZmNvbmZpZy03Mi1DT05GSUdfS1BST0JFUz15XFxuLS1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vaG1pLmgtMTEtXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2htaS5oOjEyOiNpZmRlZiBDT05GSUdfS1ZNX0JPT0szU19IVl9QT1NTSUJMRVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9obWkuaC0xMy1cXG4tLVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fYm9vazNzLmg9MzIwPXZvaWQga3ZtcHBjX2dpdmV1cF9mYWMoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1bG9uZyBmYWMpO1xcbi0tXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ib29rM3MuaC0zMjItXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ib29rM3MuaDozMjM6I2lmZGVmIENPTkZJR19LVk1fQk9PSzNTX0hWX1BPU1NJQkxFXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ib29rM3MuaC0zMjQtXFxuLS1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX2Jvb2szcy5oPTM4Nz1zdGF0aWMgaW5saW5lIHN0cnVjdCBrdm1wcGNfdmNwdV9ib29rM3MgKnRvX2Jvb2szcyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX2Jvb2szcy5oLTM5My1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX2Jvb2szcy5oOjM5NDojaWZkZWYgQ09ORklHX0tWTV9CT09LM1NfMzJfSEFORExFUlxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fYm9vazNzLmgtMzk1LSNpbmNsdWRlIFxcdTAwM2Nhc20va3ZtX2Jvb2szc18zMi5oXFx1MDAzZVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fYm9vazNzLmgtMzk2LSNlbmRpZlxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fYm9vazNzLmg6Mzk3OiNpZmRlZiBDT05GSUdfS1ZNX0JPT0szU182NF9IQU5ETEVSXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ib29rM3MuaC0zOTgtI2luY2x1ZGUgXFx1MDAzY2FzbS9rdm1fYm9vazNzXzY0LmhcXHUwMDNlXFxuLS1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX2Jvb2szc182NC5oPTEwMT1pbnQga3ZtaHZfbmVzdGVkX25leHRfbHBpZChzdHJ1Y3Qga3ZtICprdm0sIGludCBscGlkKTtcXG4tLVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fYm9vazNzXzY0LmgtMTEwLVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fYm9vazNzXzY0Lmg6MTExOiNpZmRlZiBDT05GSUdfS1ZNX0JPT0szU19QUl9QT1NTSUJMRVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fYm9vazNzXzY0LmgtMTEyLXN0YXRpYyBpbmxpbmUgc3RydWN0IGt2bXBwY19ib29rM3Nfc2hhZG93X3ZjcHUgKnN2Y3B1X2dldChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX2Jvb2szc182NC5oPTExOD1zdGF0aWMgaW5saW5lIHZvaWQgc3ZjcHVfcHV0KHN0cnVjdCBrdm1wcGNfYm9vazNzX3NoYWRvd192Y3B1ICpzdmNwdSlcXG4tLVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fYm9vazNzXzY0LmgtMTIzLVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fYm9vazNzXzY0Lmg6MTI0OiNpZmRlZiBDT05GSUdfS1ZNX0JPT0szU19IVl9QT1NTSUJMRVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fYm9vazNzXzY0LmgtMTI1LVxcbi0tXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ib29rM3NfNjQuaD01MTQ9c3RhdGljIGlubGluZSBpbnQgaXNfdnJtYV9ocHRlKHVuc2lnbmVkIGxvbmcgaHB0ZV92KVxcbi0tXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ib29rM3NfNjQuaC01MTktXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ib29rM3NfNjQuaDo1MjA6I2lmZGVmIENPTkZJR19LVk1fQk9PSzNTX0hWX1BPU1NJQkxFXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ib29rM3NfNjQuaC01MjEtLypcXG4tLVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fYm9vazNzXzY0Lmg9Njk2PXU2NCBrdm1odl9nZXRfbDJfcnVudGltZV9hZ2dfdmNwdSh2b2lkKTtcXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX2Jvb2szc182NC5oLTY5Ny1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX2Jvb2szc182NC5oOjY5ODojZW5kaWYgLyogQ09ORklHX0tWTV9CT09LM1NfSFZfUE9TU0lCTEUgKi9cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX2Jvb2szc182NC5oLTY5OS1cXG4tLVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fYm9vazNzX2FzbS5oLTI0LVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fYm9vazNzX2FzbS5oOjI1OiNpZmRlZiBDT05GSUdfS1ZNX0JPT0szU19IQU5ETEVSXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ib29rM3NfYXNtLmgtMjYtXFxuLS1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX2Jvb2szc19hc20uaD00OT1rdm1wcGNfcmVzdW1lX1xcXFxpbnRubzpcXG4tLVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fYm9vazNzX2FzbS5oLTU4LVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fYm9vazNzX2FzbS5oOjU5OiNlbmRpZiAvKiBDT05GSUdfS1ZNX0JPT0szU19IQU5ETEVSICovXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ib29rM3NfYXNtLmgtNjAtXFxuLS1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX2Jvb2szc19hc20uaD04Mz1zdHJ1Y3Qga3ZtcHBjX2hvc3Rfc3RhdGUge1xcbi0tXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ib29rM3NfYXNtLmgtOTQtXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ib29rM3NfYXNtLmg6OTU6I2lmZGVmIENPTkZJR19LVk1fQk9PSzNTX0hWX1BPU1NJQkxFXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ib29rM3NfYXNtLmgtOTYtXFx0dTggaHd0aHJlYWRfcmVxO1xcbi0tXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ib29rZS5oPTEwOT1zdGF0aWMgaW5saW5lIGJvb2wga3ZtcHBjX3N1cHBvcnRzX21hZ2ljX3BhZ2Uoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ib29rZS5oLTExMS1cXHQvKiBNYWdpYyBwYWdlIGlzIG9ubHkgc3VwcG9ydGVkIG9uIGU1MDB2MiAqL1xcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fYm9va2UuaDoxMTI6I2lmZGVmIENPTkZJR19LVk1fRTUwMFYyXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ib29rZS5oLTExMy1cXHRyZXR1cm4gdHJ1ZTtcXG4tLVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fYm9va2VfaHZfYXNtLmgtNTYtLm1hY3JvIERPX0tWTSBpbnRubyBzcnIxXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ib29rZV9odl9hc20uaDo1NzojaWZkZWYgQ09ORklHX0tWTV9CT09LRV9IVlxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fYm9va2VfaHZfYXNtLmgtNTgtQkVHSU5fRlRSX1NFQ1RJT05cXG4tLVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fZ3Vlc3QuaC04LVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fZ3Vlc3QuaDo5OiNpZiBkZWZpbmVkKENPTkZJR19QUENfUFNFUklFUykgfHwgZGVmaW5lZChDT05GSUdfS1ZNX0dVRVNUKVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fZ3Vlc3QuaC0xMC0jaW5jbHVkZSBcXHUwMDNjbGludXgvanVtcF9sYWJlbC5oXFx1MDAzZVxcbi0tXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ob3N0LmgtMzYtXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ob3N0Lmg6Mzc6I2lmZGVmIENPTkZJR19LVk1fQk9PSzNTX0hWX1BPU1NJQkxFXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ob3N0LmgtMzgtI2luY2x1ZGUgXFx1MDAzY2FzbS9rdm1fYm9vazNzX2FzbS5oXFx1MDAzZVxcdFxcdC8qIGZvciBNQVhfU01UX1RIUkVBRFMgKi9cXG4tLVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1faG9zdC5oLTQ4LSNkZWZpbmUgS1ZNX01BWF9WQ1BVX0lEU1xcdEtWTV9NQVhfVkNQVVNcXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX2hvc3QuaDo0OTojZW5kaWYgLyogQ09ORklHX0tWTV9CT09LM1NfSFZfUE9TU0lCTEUgKi9cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX2hvc3QuaC01MC1cXG4tLVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1faG9zdC5oPTI1Mz1zdHJ1Y3Qga3ZtX2FyY2hfbWVtb3J5X3Nsb3Qge1xcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1faG9zdC5oOjI1NDojaWZkZWYgQ09ORklHX0tWTV9CT09LM1NfSFZfUE9TU0lCTEVcXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX2hvc3QuaC0yNTUtXFx0dW5zaWduZWQgbG9uZyAqcm1hcDtcXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX2hvc3QuaDoyNTY6I2VuZGlmIC8qIENPTkZJR19LVk1fQk9PSzNTX0hWX1BPU1NJQkxFICovXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ob3N0LmgtMjU3LX07XFxuLS1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX2hvc3QuaD0yNzc9c3RydWN0IGt2bV9hcmNoIHtcXG4tLVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1faG9zdC5oLTI4MC1cXHR1bnNpZ25lZCBpbnQgZW11bF9zbXRfbW9kZTtcXHQvKiBlbXVhbHRlZCBTTVQgbW9kZSwgb24gUDkgKi9cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX2hvc3QuaDoyODE6I2lmZGVmIENPTkZJR19LVk1fQk9PSzNTX0hWX1BPU1NJQkxFXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ob3N0LmgtMjgyLVxcdHVuc2lnbmVkIGludCB0bGJfc2V0cztcXG4tLVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1faG9zdC5oLTMwNC1cXHRzdHJ1Y3Qga3ZtX3Jlc2l6ZV9ocHQgKnJlc2l6ZV9ocHQ7IC8qIHByb3RlY3RlZCBieSBrdm0tXFx1MDAzZWxvY2sgKi9cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX2hvc3QuaDozMDU6I2VuZGlmIC8qIENPTkZJR19LVk1fQk9PSzNTX0hWX1BPU1NJQkxFICovXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ob3N0Lmg6MzA2OiNpZmRlZiBDT05GSUdfS1ZNX0JPT0szU19QUl9QT1NTSUJMRVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1faG9zdC5oLTMwNy1cXHRzdHJ1Y3QgbXV0ZXggaHB0X211dGV4O1xcbi0tXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ob3N0LmgtMzE0LSNlbmRpZlxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1faG9zdC5oOjMxNTojaWZkZWYgQ09ORklHX0tWTV9NUElDXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ob3N0LmgtMzE2LVxcdHN0cnVjdCBvcGVucGljICptcGljO1xcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1faG9zdC5oLTMxNy0jZW5kaWZcXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX2hvc3QuaDozMTg6I2lmZGVmIENPTkZJR19LVk1fWElDU1xcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1faG9zdC5oLTMxOS1cXHRzdHJ1Y3Qga3ZtcHBjX3hpY3MgKnhpY3M7XFxuLS1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX2hvc3QuaC0zMjgtXFx0c3RydWN0IGt2bXBwY19vcHMgKmt2bV9vcHM7XFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ob3N0Lmg6MzI5OiNpZmRlZiBDT05GSUdfS1ZNX0JPT0szU19IVl9QT1NTSUJMRVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1faG9zdC5oLTMzMC1cXHRzdHJ1Y3QgbXV0ZXggdXZtZW1fbG9jaztcXG4tLVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1faG9zdC5oPTUyOD1zdHJ1Y3Qga3ZtX3ZjcHVfYXJjaCB7XFxuLS1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX2hvc3QuaC01NTktXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ob3N0Lmg6NTYwOiNpZmRlZiBDT05GSUdfS1ZNX0JPT0tFX0hWXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ob3N0LmgtNTYxLVxcdHUzMiBob3N0X21hczQ7XFxuLS1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX2hvc3QuaC01NzAtI2lmIGRlZmluZWQoQ09ORklHX0JPT0tFKVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1faG9zdC5oOjU3MTojaWYgZGVmaW5lZChDT05GSUdfS1ZNX0JPT0tFX0hWKSB8fCBkZWZpbmVkKENPTkZJR182NEJJVClcXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX2hvc3QuaC01NzItXFx0dTMyIGVwY3I7XFxuLS1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX2hvc3QuaC02OTItXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ob3N0Lmg6NjkzOiNpZmRlZiBDT05GSUdfS1ZNX0VYSVRfVElNSU5HXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ob3N0LmgtNjk0LVxcdHN0cnVjdCBtdXRleCBleGl0X3RpbWluZ19sb2NrO1xcbi0tXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ob3N0LmgtNzk1LVxcdHN0cnVjdCBrdm1fdmNwdV9hcmNoX3NoYXJlZCAqc2hhcmVkO1xcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1faG9zdC5oOjc5NjojaWYgZGVmaW5lZChDT05GSUdfUFBDX0JPT0szU182NCkgXFx1MDAyNlxcdTAwMjYgZGVmaW5lZChDT05GSUdfS1ZNX0JPT0szU19QUl9QT1NTSUJMRSlcXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX2hvc3QuaC03OTctXFx0Ym9vbCBzaGFyZWRfYmlnX2VuZGlhbjtcXG4tLVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1faG9zdC5oLTgwNS1cXHRzdHJ1Y3Qgb3BlbnBpYyAqbXBpYztcXHQvKiBLVk1fSVJRX01QSUMgKi9cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX2hvc3QuaDo4MDY6I2lmZGVmIENPTkZJR19LVk1fWElDU1xcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1faG9zdC5oLTgwNy1cXHRzdHJ1Y3Qga3ZtcHBjX2ljcCAqaWNwOyAvKiBYSUNTIHByZXNlbnRhdGlvbiBjb250cm9sbGVyICovXFxuLS1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX2hvc3QuaC04MTYtXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ob3N0Lmg6ODE3OiNpZmRlZiBDT05GSUdfS1ZNX0JPT0szU19IVl9QT1NTSUJMRVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1faG9zdC5oLTgxOC1cXHRzdHJ1Y3Qga3ZtX3ZjcHVfYXJjaF9zaGFyZWQgc2hyZWdzO1xcbi0tXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ob3N0LmgtODU0LVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1faG9zdC5oOjg1NTojaWZkZWYgQ09ORklHX0tWTV9CT09LM1NfSFZfRVhJVF9USU1JTkdcXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX2hvc3QuaC04NTYtXFx0c3RydWN0IGt2bWh2X3RiX2FjY3VtdWxhdG9yICpjdXJfYWN0aXZpdHk7XFx0LyogV2hhdCB3ZSdyZSB0aW1pbmcgKi9cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX2hvc3QuaC04NTctXFx0dTY0XFx0Y3VyX3RiX3N0YXJ0O1xcdFxcdFxcdC8qIHdoZW4gaXQgc3RhcnRlZCAqL1xcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1faG9zdC5oOjg1ODojaWZkZWYgQ09ORklHX0tWTV9CT09LM1NfSFZfUDlfVElNSU5HXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ob3N0LmgtODU5LVxcdHN0cnVjdCBrdm1odl90Yl9hY2N1bXVsYXRvciB2Y3B1X2VudHJ5O1xcbi0tXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ob3N0LmgtODcyLSNlbmRpZlxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1faG9zdC5oOjg3MzojZW5kaWYgLyogQ09ORklHX0tWTV9CT09LM1NfSFZfRVhJVF9USU1JTkcgKi9cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX2hvc3QuaDo4NzQ6I2lmZGVmIENPTkZJR19LVk1fQk9PSzNTX0hWX1BPU1NJQkxFXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9ob3N0LmgtODc1LVxcdHU2NCBsMV90b19sMl9jcztcXG4tLVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fcGFyYS5oPTE1PXN0YXRpYyBpbmxpbmUgaW50IGt2bV9wYXJhX2F2YWlsYWJsZSh2b2lkKVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fcGFyYS5oLTE2LXtcXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX3BhcmEuaDoxNzpcXHRyZXR1cm4gSVNfRU5BQkxFRChDT05GSUdfS1ZNX0dVRVNUKSBcXHUwMDI2XFx1MDAyNiBpc19rdm1fZ3Vlc3QoKTtcXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX3BhcmEuaC0xOC19XFxuLS1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX3BwYy5oLTI1LSNlbmRpZlxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fcHBjLmg6MjY6I2lmZGVmIENPTkZJR19LVk1fQk9PSzNTXzY0X0hBTkRMRVJcXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX3BwYy5oLTI3LSNpbmNsdWRlIFxcdTAwM2Nhc20vcGFjYS5oXFx1MDAzZVxcbi0tXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9wcGMuaD00NDI9c3RydWN0IG9wZW5waWM7XFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9wcGMuaC00NDMtXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9wcGMuaDo0NDQ6I2lmZGVmIENPTkZJR19LVk1fQk9PSzNTX0hWX1BPU1NJQkxFXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9wcGMuaC00NDUtZXh0ZXJuIHZvaWQga3ZtX2NtYV9yZXNlcnZlKHZvaWQpIF9faW5pdDtcXG4tLVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fcHBjLmg9NjQ4PXN0YXRpYyBpbmxpbmUgaW50IGt2bWh2X25lc3RlZHYyX2NhY2hlZF9yZWxvYWQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1MTYgaWRlbilcXG4tLVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fcHBjLmgtNjU0LVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fcHBjLmg6NjU1OiNpZmRlZiBDT05GSUdfS1ZNX1hJQ1NcXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX3BwYy5oLTY1Ni1zdGF0aWMgaW5saW5lIGludCBrdm1wcGNfeGljc19lbmFibGVkKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fcHBjLmg9NzA4PXN0YXRpYyBpbmxpbmUgaW50IGt2bXBwY194aXZlX3hpY3NfaGNhbGwoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1MzIgcmVxKVxcbi0tXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9wcGMuaC03MTEtXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9wcGMuaDo3MTI6I2lmZGVmIENPTkZJR19LVk1fWElWRVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fcHBjLmgtNzEzLS8qXFxuLS1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX3BwYy5oPTc5MD1zdGF0aWMgaW5saW5lIGludCBrdm1wcGNfeGl2ZV9uYXRpdmVfc2V0X3ZwKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG4tLVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fcHBjLmgtNzkzLVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fcHBjLmg6Nzk0OiNlbmRpZiAvKiBDT05GSUdfS1ZNX1hJVkUgKi9cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX3BwYy5oLTc5NS1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX3BwYy5oOjc5NjojaWYgZGVmaW5lZChDT05GSUdfUFBDX1BPV0VSTlYpIFxcdTAwMjZcXHUwMDI2IGRlZmluZWQoQ09ORklHX0tWTV9CT09LM1NfNjRfSEFORExFUilcXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX3BwYy5oLTc5Ny1zdGF0aWMgaW5saW5lIGJvb2wgeGljc19vbl94aXZlKHZvaWQpXFxuLS1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX3BwYy5oPTg3NT1zdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcga3ZtcHBjX2dldF9lcHIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fcHBjLmgtODc2LXtcXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX3BwYy5oOjg3NzojaWZkZWYgQ09ORklHX0tWTV9CT09LRV9IVlxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fcHBjLmgtODc4LVxcdHJldHVybiBtZnNwcihTUFJOX0dFUFIpO1xcbi0tXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9wcGMuaD04ODY9c3RhdGljIGlubGluZSB2b2lkIGt2bXBwY19zZXRfZXByKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTMyIGVwcilcXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX3BwYy5oLTg4Ny17XFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9wcGMuaDo4ODg6I2lmZGVmIENPTkZJR19LVk1fQk9PS0VfSFZcXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX3BwYy5oLTg4OS1cXHRtdHNwcihTUFJOX0dFUFIsIGVwcik7XFxuLS1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX3BwYy5oLTg5NC1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX3BwYy5oOjg5NTojaWZkZWYgQ09ORklHX0tWTV9NUElDXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9wcGMuaC04OTYtXFxuLS1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX3BwYy5oPTkxND1zdGF0aWMgaW5saW5lIHZvaWQga3ZtcHBjX21waWNfZGlzY29ubmVjdF92Y3B1KHN0cnVjdCBvcGVucGljICpvcHAsXFxuLS1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX3BwYy5oLTkxOC1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX3BwYy5oOjkxOTojZW5kaWYgLyogQ09ORklHX0tWTV9NUElDICovXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9wcGMuaC05MjAtXFxuLS1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX3BwYy5oPTk1Mj1zdGF0aWMgaW5saW5lIGJvb2wga3ZtcHBjX3NoYXJlZF9iaWdfZW5kaWFuKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX3BwYy5oLTk1My17XFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9wcGMuaDo5NTQ6I2lmIGRlZmluZWQoQ09ORklHX1BQQ19CT09LM1NfNjQpIFxcdTAwMjZcXHUwMDI2IGRlZmluZWQoQ09ORklHX0tWTV9CT09LM1NfUFJfUE9TU0lCTEUpXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9wcGMuaC05NTUtXFx0LyogT25seSBCb29rM1NfNjQgUFIgc3VwcG9ydHMgYmktZW5kaWFuIGZvciBub3cgKi9cXG4tLVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fcHBjLmg9OTg5PXN0YXRpYyBpbmxpbmUgdm9pZCBrdm1wcGNfc2V0XyMjcmVnKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdSMjc2l6ZSB2YWwpXFx0XFxcXFxcbi0tXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9wcGMuaC0xMDA3LVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fcHBjLmg6MTAwODojaWZkZWYgQ09ORklHX0tWTV9CT09LRV9IVlxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fcHBjLmgtMTAwOS1cXG4tLVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fdHlwZXMuaC00LVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fdHlwZXMuaDo1OiNpZiBJU19NT0RVTEUoQ09ORklHX0tWTV9CT09LM1NfNjRfUFIpIFxcdTAwMjZcXHUwMDI2IElTX01PRFVMRShDT05GSUdfS1ZNX0JPT0szU182NF9IVilcXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX3R5cGVzLmgtNi0jZGVmaW5lIEtWTV9TVUJfTU9EVUxFUyBrdm0tcHIsa3ZtLWh2XFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV90eXBlcy5oOjc6I2VsaWYgSVNfTU9EVUxFKENPTkZJR19LVk1fQk9PSzNTXzY0X1BSKVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fdHlwZXMuaC04LSNkZWZpbmUgS1ZNX1NVQl9NT0RVTEVTIGt2bS1wclxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fdHlwZXMuaDo5OiNlbGlmIElTX01PRFVMRShDT05GSUdfS1ZNX0JPT0szU182NF9IVilcXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX3R5cGVzLmgtMTAtI2RlZmluZSBLVk1fU1VCX01PRFVMRVMga3ZtLWh2XFxuLS1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vbW11X2NvbnRleHQuaD0yMDc9c3RhdGljIGlubGluZSB2b2lkIG1tX2NvbnRleHRfcmVtb3ZlX2NvcHJvKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tKSB7IH1cXG4tLVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9tbXVfY29udGV4dC5oLTIwOS1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vbW11X2NvbnRleHQuaDoyMTA6I2lmIGRlZmluZWQoQ09ORklHX0tWTV9CT09LM1NfSFZfUE9TU0lCTEUpIFxcdTAwMjZcXHUwMDI2IGRlZmluZWQoQ09ORklHX1BQQ19SQURJWF9NTVUpXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL21tdV9jb250ZXh0LmgtMjExLXZvaWQgZG9faF9ycHRfaW52YWxpZGF0ZV9wcnQodW5zaWduZWQgbG9uZyBwaWQsIHVuc2lnbmVkIGxvbmcgbHBpZCxcXG4tLVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9wYWNhLmgtMjQtI2VuZGlmXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3BhY2EuaDoyNTojaWZkZWYgQ09ORklHX0tWTV9CT09LM1NfNjRfSEFORExFUlxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9wYWNhLmgtMjYtI2luY2x1ZGUgXFx1MDAzY2FzbS9rdm1fYm9vazNzX2FzbS5oXFx1MDAzZVxcbi0tXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3BhY2EuaD02MT1zdHJ1Y3QgcGFjYV9zdHJ1Y3Qge1xcbi0tXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3BhY2EuaC0xNzYtXFx0dTggaXJxX3dvcmtfcGVuZGluZztcXHRcXHQvKiBJUlFfV09SSyBpbnRlcnJ1cHQgd2hpbGUgc29mdC1kaXNhYmxlICovXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3BhY2EuaDoxNzc6I2lmZGVmIENPTkZJR19LVk1fQk9PSzNTX0hWX1BPU1NJQkxFXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3BhY2EuaC0xNzgtXFx0dTggcG1jcmVnc19pbl91c2U7XFx0XFx0LyogcHNlcmllcyBwdXRzIHRoaXMgaW4gbHBwYWNhICovXFxuLS1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vcGFjYS5oLTIwMC1cXHRcXHRzdHJ1Y3Qge1xcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9wYWNhLmg6MjAxOiNpZmRlZiBDT05GSUdfS1ZNX0JPT0szU19IVl9QT1NTSUJMRVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9wYWNhLmgtMjAyLVxcdFxcdFxcdC8qIFRoZSBQU1NDUiB2YWx1ZSB0aGF0IHRoZSBrZXJuZWwgcmVxdWVzdGVkIGJlZm9yZSBnb2luZyB0byBzdG9wICovXFxuLS1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vcGFjYS5oLTIzNi1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vcGFjYS5oOjIzNzojaWZkZWYgQ09ORklHX0tWTV9CT09LM1NfSEFORExFUlxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9wYWNhLmg6MjM4OiNpZmRlZiBDT05GSUdfS1ZNX0JPT0szU19QUl9QT1NTSUJMRVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9wYWNhLmgtMjM5LVxcdC8qIFdlIHVzZSB0aGlzIHRvIHN0b3JlIGd1ZXN0IHN0YXRlIGluICovXFxuLS1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vcGFjYS5oLTI0Mi1cXHRzdHJ1Y3Qga3ZtcHBjX2hvc3Rfc3RhdGUga3ZtX2hzdGF0ZTtcXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vcGFjYS5oOjI0MzojaWZkZWYgQ09ORklHX0tWTV9CT09LM1NfSFZfUE9TU0lCTEVcXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vcGFjYS5oLTI0NC1cXHQvKlxcbi0tXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3BtYy5oPTIzPXN0YXRpYyBpbmxpbmUgdm9pZCBwcGNfc2V0X3BtdV9pbnVzZShpbnQgaW51c2UpXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3BtYy5oLTI0LXtcXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vcG1jLmg6MjU6I2lmIGRlZmluZWQoQ09ORklHX1BQQ19QU0VSSUVTKSB8fCBkZWZpbmVkKENPTkZJR19LVk1fQk9PSzNTX0hWX1BPU1NJQkxFKVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9wbWMuaC0yNi1cXHRpZiAoZmlybXdhcmVfaGFzX2ZlYXR1cmUoRldfRkVBVFVSRV9MUEFSKSkge1xcbi0tXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3BtYy5oLTMwLVxcdH1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vcG1jLmg6MzE6I2lmZGVmIENPTkZJR19LVk1fQk9PSzNTX0hWX1BPU1NJQkxFXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3BtYy5oLTMyLVxcdGdldF9wYWNhKCktXFx1MDAzZXBtY3JlZ3NfaW5fdXNlID0gaW51c2U7XFxuLS1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vcG1jLmgtMzYtXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3BtYy5oOjM3OiNpZmRlZiBDT05GSUdfS1ZNX0JPT0szU19IVl9QT1NTSUJMRVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9wbWMuaC0zOC1zdGF0aWMgaW5saW5lIGludCBwcGNfZ2V0X3BtdV9pbnVzZSh2b2lkKVxcbi0tXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3Byb2Nlc3Nvci5oPTEzMz1zdHJ1Y3QgdGhyZWFkX3N0cnVjdCB7XFxuLS1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vcHJvY2Vzc29yLmgtMjI1LSNlbmRpZiAvKiBDT05GSUdfUFBDX1RSQU5TQUNUSU9OQUxfTUVNICovXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3Byb2Nlc3Nvci5oOjIyNjojaWZkZWYgQ09ORklHX0tWTV9CT09LM1NfMzJfSEFORExFUlxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9wcm9jZXNzb3IuaC0yMjctXFx0dm9pZCpcXHRcXHRrdm1fc2hhZG93X3ZjcHU7IC8qIEtWTSBpbnRlcm5hbCBkYXRhICovXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3Byb2Nlc3Nvci5oOjIyODojZW5kaWYgLyogQ09ORklHX0tWTV9CT09LM1NfMzJfSEFORExFUiAqL1xcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9wcm9jZXNzb3IuaDoyMjk6I2lmIGRlZmluZWQoQ09ORklHX0tWTSkgXFx1MDAyNlxcdTAwMjYgZGVmaW5lZChDT05GSUdfQk9PS0UpXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3Byb2Nlc3Nvci5oLTIzMC1cXHRzdHJ1Y3Qga3ZtX3ZjcHVcXHQqa3ZtX3ZjcHU7XFxuLS1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vdGltZS5oPTEwMT1zdGF0aWMgaW5saW5lIHU2NCB0aW1lcl9nZXRfbmV4dF90Yih2b2lkKVxcbi0tXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3RpbWUuaC0xMDUtXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3RpbWUuaDoxMDY6I2lmZGVmIENPTkZJR19LVk1fQk9PSzNTX0hWX1BPU1NJQkxFXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3RpbWUuaC0xMDctdm9pZCB0aW1lcl9yZWFybV9ob3N0X2RlYyh1NjQgbm93KTtcXG4tLVxcbmFyY2gvcG93ZXJwYy9rZXJuZWwvTWFrZWZpbGU9MTYyPW9iai0kKENPTkZJR19FUEFQUl9QQVJBVklSVClcXHQrPSBlcGFwcl9wYXJhdmlydC5vIGVwYXByX2hjYWxscy5vXFxuYXJjaC9wb3dlcnBjL2tlcm5lbC9NYWtlZmlsZToxNjM6b2JqLSQoQ09ORklHX0tWTV9HVUVTVClcXHRcXHQrPSBrdm0ubyBrdm1fZW11bC5vXFxuYXJjaC9wb3dlcnBjL2tlcm5lbC9NYWtlZmlsZS0xNjQtaWZuZXEgKCQoQ09ORklHX1BQQ19QT1dFUk5WKSQoQ09ORklHX1BQQ19TVk0pLClcXG4tLVxcbmFyY2gvcG93ZXJwYy9rZXJuZWwvYXNtLW9mZnNldHMuYy00OC0jZW5kaWZcXG5hcmNoL3Bvd2VycGMva2VybmVsL2FzbS1vZmZzZXRzLmM6NDk6I2lmIGRlZmluZWQoQ09ORklHX0tWTSkgfHwgZGVmaW5lZChDT05GSUdfS1ZNX0dVRVNUKVxcbmFyY2gvcG93ZXJwYy9rZXJuZWwvYXNtLW9mZnNldHMuYy01MC0jaW5jbHVkZSBcXHUwMDNjbGludXgva3ZtX2hvc3QuaFxcdTAwM2VcXG5hcmNoL3Bvd2VycGMva2VybmVsL2FzbS1vZmZzZXRzLmMtNTEtI2VuZGlmXFxuYXJjaC9wb3dlcnBjL2tlcm5lbC9hc20tb2Zmc2V0cy5jOjUyOiNpZiBkZWZpbmVkKENPTkZJR19LVk0pIFxcdTAwMjZcXHUwMDI2IGRlZmluZWQoQ09ORklHX1BQQ19CT09LM1MpXFxuYXJjaC9wb3dlcnBjL2tlcm5lbC9hc20tb2Zmc2V0cy5jLTUzLSNpbmNsdWRlIFxcdTAwM2Nhc20va3ZtX2Jvb2szcy5oXFx1MDAzZVxcbi0tXFxuYXJjaC9wb3dlcnBjL2tlcm5lbC9hc20tb2Zmc2V0cy5jPTc4PWludCBtYWluKHZvaWQpXFxuLS1cXG5hcmNoL3Bvd2VycGMva2VybmVsL2FzbS1vZmZzZXRzLmMtMTUwLSNlbmRpZiAvKiBDT05GSUdfUFBDNjQgKi9cXG5hcmNoL3Bvd2VycGMva2VybmVsL2FzbS1vZmZzZXRzLmM6MTUxOiNpZmRlZiBDT05GSUdfS1ZNX0JPT0szU18zMl9IQU5ETEVSXFxuYXJjaC9wb3dlcnBjL2tlcm5lbC9hc20tb2Zmc2V0cy5jLTE1Mi1cXHRPRkZTRVQoVEhSRUFEX0tWTV9TVkNQVSwgdGhyZWFkX3N0cnVjdCwga3ZtX3NoYWRvd192Y3B1KTtcXG5hcmNoL3Bvd2VycGMva2VybmVsL2FzbS1vZmZzZXRzLmMtMTUzLSNlbmRpZlxcbmFyY2gvcG93ZXJwYy9rZXJuZWwvYXNtLW9mZnNldHMuYzoxNTQ6I2lmIGRlZmluZWQoQ09ORklHX0tWTSkgXFx1MDAyNlxcdTAwMjYgZGVmaW5lZChDT05GSUdfQk9PS0UpXFxuYXJjaC9wb3dlcnBjL2tlcm5lbC9hc20tb2Zmc2V0cy5jLTE1NS1cXHRPRkZTRVQoVEhSRUFEX0tWTV9WQ1BVLCB0aHJlYWRfc3RydWN0LCBrdm1fdmNwdSk7XFxuLS1cXG5hcmNoL3Bvd2VycGMva2VybmVsL2FzbS1vZmZzZXRzLmMtMjMwLVxcdE9GRlNFVChMUFBBQ0FfUE1DSU5VU0UsIGxwcGFjYSwgcG1jcmVnc19pbl91c2UpO1xcbmFyY2gvcG93ZXJwYy9rZXJuZWwvYXNtLW9mZnNldHMuYzoyMzE6I2lmZGVmIENPTkZJR19LVk1fQk9PSzNTX0hWX1BPU1NJQkxFXFxuYXJjaC9wb3dlcnBjL2tlcm5lbC9hc20tb2Zmc2V0cy5jLTIzMi1cXHRPRkZTRVQoUEFDQV9QTUNJTlVTRSwgcGFjYV9zdHJ1Y3QsIHBtY3JlZ3NfaW5fdXNlKTtcXG4tLVxcbmFyY2gvcG93ZXJwYy9rZXJuZWwvYXNtLW9mZnNldHMuYy0zNTMtXFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDE1OjI5OjE2LjEwNTUwMTc2MloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEwMTQzMjUwMDg5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgS1ZNIE9PTSBOb3RpZmllciBQYXRjaCBmb3IgRnV6emluZyoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93biBmb3IgZnV6emluZyBwdXJwb3Nlcy4gRmlyc3QsIHRoZSBjb3JlIG9mIHRoaXMgcGF0Y2ggcmV2b2x2ZXMgYXJvdW5kIGBtbXVfbm90aWZpZXJgIGludGVncmF0aW9uLCBzcGVjaWZpY2FsbHkgaW4gdGhlIGNvbnRleHQgb2YgT3V0LU9mLU1lbW9yeSAoT09NKSBzaXR1YXRpb25zLCB3aXRoIGEgS1ZNLXNwZWNpZmljIGltcGxlbWVudGF0aW9uLiBJIHNlZSB0aGF0IGBDT05GSUdfS1ZNYCBpcywgb2YgY291cnNlLCBhIGdpdmVuLCBhbmQgdGhpcyBwYXRjaCByZWxpZXMgb24gYG1tdV9ub3RpZmllcmAgZnVuY3Rpb25hbGl0eSwgcmVxdWlyaW5nIGBDT05GSUdfTU1VX05PVElGSUVSYC4gIFNpbmNlIGBfX29vbV9yZWFwX3Rhc2tfbW1gIGNhbGxzIGBtbXVfbm90aWZpZXJfb29tX2VudGVyYCB3aGljaCByZXF1aXJlcyBgQ09ORklHX01NVWAsIGFuZCBgQ09ORklHX01NVWAgaXMgbmVhcmx5IHViaXF1aXRvdXMsIHdlJ3JlIGxpa2VseSBnb29kIG9uIHRoZSBiYXNlIGNvbmZpZ3MuXG5cbk15IGZvY3VzIGhhcyB0byBiZSBvbiB0aGUgbmV3IGFuZCBtb2RpZmllZCBmdW5jdGlvbnMuIFNvLCB0aGUga2V5IGZ1bmN0aW9ucyB0aGF0IGFyZSBhZGRlZCBvciBoYXZlIGNoYW5nZWQgd2l0aGluIHRoaXMgcGF0Y2ggYXJlOiBgbW11X25vdGlmaWVyX29vbV9lbnRlcmAsIGBtbXVfbm90aWZpZXJfYmFycmllcmAsIGBtbXVfbm90aWZpZXJfb29tX2NhbGxiYWNrX2ZuYCwgYGt2bV9tbXVfbm90aWZpZXJfYWZ0ZXJfb29tX3VucmVnaXN0ZXJgLCBga3ZtX2Rlc3Ryb3lfdm1gIChtb2RpZmllZCksIGFuZCBgX19vb21fcmVhcF90YXNrX21tYCAobW9kaWZpZWQpLlxuXG5Ob3csIHRvIGRldGVybWluZSB0aGUgbW9zdCBlZmZlY3RpdmUgZnV6emluZyB0YXJnZXRzLCBJIG5lZWQgdG8gbWFwIHRoZWlyIGNhbGwgcGF0aHMuIGBtbXVfbm90aWZpZXJfb29tX2VudGVyYCBpcyBjYWxsZWQgYnkgYF9fb29tX3JlYXBfdGFza19tbWAuIGBrdm1fbW11X25vdGlmaWVyX2FmdGVyX29vbV91bnJlZ2lzdGVyYCBpcyBjYWxsZWQgYnkgYG1tdV9ub3RpZmllcl9vb21fY2FsbGJhY2tfZm5gLiBBbmQgYG1tdV9ub3RpZmllcl9iYXJyaWVyYCBpcyBjYWxsZWQgYnkgYGt2bV9kZXN0cm95X3ZtYC4gVGhhdCdzIGEgZ29vZCBzdGFydC4gSSBjYW4gYWxzbyBmb2N1cyBvbiBgX19vb21fcmVhcF90YXNrX21tYCBiZWNhdXNlIGl0J3MgdGhlIGVudHJ5IHBvaW50IHRvIHRoZSBuZXcgT09NIGxvZ2ljLCBldmVuIHRob3VnaCBgbW11X25vdGlmaWVyX29vbV9lbnRlcmAgaXMgYSBtb3JlIHNwZWNpZmljIHRhcmdldC4gU2ltaWxhcmx5LCBga3ZtX2Rlc3Ryb3lfdm1gIGlzIGludGVyZXN0aW5nIGJlY2F1c2Ugb2YgdGhlIG1vZGlmaWNhdGlvbnMgdG8gaGFuZGxlIHRoZSB1bmhhc2hlZCBobGlzdC5cblxuU28sIHRha2luZyBhbGwgb2YgdGhpcyBpbnRvIGFjY291bnQsIEknbSBnb2luZyB0byBwcmlvcml0aXplIHRoZXNlIHN5bWJvbHMgZm9yIGZ1enppbmc6IGBtbXVfbm90aWZpZXJfb29tX2VudGVyYCwgYG1tdV9ub3RpZmllcl9iYXJyaWVyYCwgYG1tdV9ub3RpZmllcl9vb21fY2FsbGJhY2tfZm5gLCBga3ZtX21tdV9ub3RpZmllcl9hZnRlcl9vb21fdW5yZWdpc3RlcmAsIGFuZCBga3ZtX2Rlc3Ryb3lfdm1gLiBJJ20gY29uZmlkZW50IGluIHRob3NlIG5hbWVzIGFzIHRoZXkgYXBwZWFyLlxuXG5GaW5hbGx5LCBsZXQgbWUganVzdCB2ZXJpZnkgdGhhdCBgX19vb21fcmVhcF90YXNrX21tYCBkb2Vzbid0IGhhdmUgYW55IGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGRpcmVjdGl2ZXMgdGhhdCB3b3VsZCBtYWtlIGl0IHVuYXZhaWxhYmxlIHVuZGVyIGNlcnRhaW4gY29uZmlndXJhdGlvbnMuIFNpbmNlIGl0IGxpdmVzIGluIGBtbS9vb21fa2lsbC5jYCwgSSdsbCBxdWlja2x5IGNoZWNrIGZvciB0aGF0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDE5OCwiT3V0cHV0VG9rZW5zIjoyMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY1MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yM1QxNToyOToyNi4yNDg3NTQ1NjFaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjU4MTMyMzM3NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJfX29vbV9yZWFwX3Rhc2tfbW1cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vb29tX2tpbGwuYz01MTE9c3RhdGljIERFRklORV9TUElOTE9DSyhvb21fcmVhcGVyX2xvY2spO1xcbm1tL29vbV9raWxsLmMtNTEyLVxcbm1tL29vbV9raWxsLmM6NTEzOnN0YXRpYyBib29sIF9fb29tX3JlYXBfdGFza19tbShzdHJ1Y3QgbW1fc3RydWN0ICptbSlcXG5tbS9vb21fa2lsbC5jLTUxNC17XFxuLS1cXG5tbS9vb21fa2lsbC5jPTU2NT1zdGF0aWMgYm9vbCBvb21fcmVhcF90YXNrX21tKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrLCBzdHJ1Y3QgbW1fc3RydWN0ICptbSlcXG4tLVxcbm1tL29vbV9raWxsLmMtNTg3LVxcdC8qIGZhaWxlZCB0byByZWFwIHBhcnQgb2YgdGhlIGFkZHJlc3Mgc3BhY2UuIFRyeSBhZ2FpbiBsYXRlciAqL1xcbm1tL29vbV9raWxsLmM6NTg4OlxcdHJldCA9IF9fb29tX3JlYXBfdGFza19tbShtbSk7XFxubW0vb29tX2tpbGwuYy01ODktXFx0aWYgKCFyZXQpXFxuLS1cXG5tbS9vb21fa2lsbC5jPTExOTg9U1lTQ0FMTF9ERUZJTkUyKHByb2Nlc3NfbXJlbGVhc2UsIGludCwgcGlkZmQsIHVuc2lnbmVkIGludCwgZmxhZ3MpXFxuLS1cXG5tbS9vb21fa2lsbC5jLTEyNDctXFx0ICovXFxubW0vb29tX2tpbGwuYzoxMjQ4OlxcdGlmICghbW1fZmxhZ3NfdGVzdChNTUZfT09NX1NLSVAsIG1tKSBcXHUwMDI2XFx1MDAyNiAhX19vb21fcmVhcF90YXNrX21tKG1tKSlcXG5tbS9vb21fa2lsbC5jLTEyNDktXFx0XFx0cmV0ID0gLUVBR0FJTjtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjNUMTU6Mjk6MjguODMwMDg0NDY2WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDA4MzAwNDM0NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFJvbGUgb2YgYF9fb29tX3JlYXBfdGFza19tbWAqKlxuXG5Pa2F5LCBzbyBgX19vb21fcmVhcF90YXNrX21tYCBsaXZlcyB3aXRoaW4gYG1tL29vbV9raWxsLmNgLCB3aGljaCwgaWYgSSByZWNhbGwgY29ycmVjdGx5LCBpcyBhbHdheXMgY29tcGlsZWQgb3IgYXQgbGVhc3QgZGVwZW5kcyBvbiB0aGUgTU1VLiBUaGF0IG1ha2VzIHNlbnNlLCBnaXZlbiB0aGUgZnVuY3Rpb24ncyBuYW1lLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgY29udGV4dCB3aXRoaW4gdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uLiBJIHJlbWVtYmVyIHRoZSBlbmFibGluZyBjb25maWdzIGFyZSBgTU1VX05PVElGSUVSYCBhbmQgYEtWTWAsIHNwZWNpZmljYWxseS5cblxuTm93LCBteSBsaW5lIG9mIGlucXVpcnkgaXMgY2xlYXI6IElzIGBNTVVfTk9USUZJRVJgIGRpcmVjdGx5IHVzZXItc2VsZWN0YWJsZSwgb3IgaXMgaXQgYSBkZXBlbmRlbmN5IG9mIGFub3RoZXIgY29uZmlnPyBJJ2xsIGhlYWQgb3ZlciB0byBgbW0vS2NvbmZpZ2Agb3IgYSBzaW1pbGFyIGNvbmZpZ3VyYXRpb24gZmlsZSBpbiB0aGUgbWVtb3J5IG1hbmFnZW1lbnQgc3VidHJlZS4gVGhhdCBzaG91bGQgYmUgdGhlIGRlZmluaXRpdmUgcGxhY2UgdG8gdHJhY2sgZG93biB0aGUgcmVsYXRpb25zaGlwIGFuZCBlbnN1cmUgSSB1bmRlcnN0YW5kIGhvdyB0aGlzIGNvbXBvbmVudCBpcyBhY3R1YWxseSBlbmFibGVkIGluIGRpZmZlcmVudCBidWlsZHMuIEkgbmVlZCBhIGNsZWFyIHBpY3R1cmUgb2YgaXRzIGNvbmZpZ3VyYWJpbGl0eS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjE3OTUsIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yM1QxNToyOTozMi45MTMwOTA3NTJaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyOTUyMDM0OTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE1NVV9OT1RJRklFUlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9LY29uZmlnPTczMz1jb25maWcgUEhZU19BRERSX1RfNjRCSVRcXG4tLVxcbm1tL0tjb25maWctNzM1LVxcbm1tL0tjb25maWc6NzM2OmNvbmZpZyBNTVVfTk9USUZJRVJcXG5tbS9LY29uZmlnLTczNy1cXHRib29sXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDE1OjI5OjM1LjIwODMwMzkyN1oiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MjY3NDc5MjMzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBzZWUsIEknbSBsb29raW5nIGF0IHRoaXMgYE1NVV9OT1RJRklFUmAgb3B0aW9uLiBJdCdzIGEgYGJvb2xgIGFuZCBJIGRvbid0IHNlZSBhbnkgYXNzb2NpYXRlZCBwcm9tcHQgd2l0aCBpdCwgd2hpY2ggbWVhbnMgaXQncyBsaWtlbHkgYmVpbmcgc2VsZWN0ZWQgYnkgb3RoZXIgY29uZmlndXJhdGlvbnMuIFJpZ2h0LCB0aGF0IG1ha2VzIHNlbnNlLlxuXG4qKkFuYWx5emluZyB0aGUgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmN5KipcblxuVGhlIHN0cmF0ZWd5IGhlcmUgaXMgdG8ganVzdCBsaXN0IGBNTVVfTk9USUZJRVJgIGluIHRoZSBjb25maWd1cmF0aW9uLiBUaGUgc3l6a2FsbGVyIGNvbmZpZyBzeXN0ZW0gc2hvdWxkIGhhbmRsZSB0aGUgcmVzdCAtIGl0IHdpbGwgZWl0aGVyIGVuYWJsZSBgTU1VX05PVElGSUVSYCBkaXJlY3RseSBvciBlbmFibGUgYW5vdGhlciBjb25maWd1cmF0aW9uIG9wdGlvbiB0aGF0IHNlbGVjdHMgaXQsIGJhc2VkIG9uIHRoZSBkZXBlbmRlbmNpZXMuIE5vdywgaGFuZyBvbiBhIHNlY29uZC4uLiBpcyBgS1ZNYCBhY3R1YWxseSBvbmUgb2YgdGhlIG9wdGlvbnMgdGhhdCBzZWxlY3RzIGBNTVVfTk9USUZJRVJgPyBUaGF0J3MgYSByZWFzb25hYmxlIGFzc3VtcHRpb24sIGJ1dCBJIHNob3VsZCBwcm9iYWJseSBjb25maXJtIGl0IHRvIGJlIGNlcnRhaW4uIExldCdzIGRpZyBkZWVwZXIgYW5kIHZlcmlmeSB0aGF0LiBJdCdzIGFsd2F5cyBiZXN0IHRvIGJlIHByZWNpc2Ugd2hlbiBkZWFsaW5nIHdpdGgga2VybmVsIGNvbmZpZ3VyYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyMTc2LCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjNUMTU6Mjk6MzkuNDc1Nzg1OFoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjE0Njc4NDM5NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzZWxlY3QgTU1VX05PVElGSUVSXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcG93ZXJudi9LY29uZmlnPTI9Y29uZmlnIFBQQ19QT1dFUk5WXFxuLS1cXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3Bvd2VybnYvS2NvbmZpZy0xNy1cXHRzZWxlY3QgUFBDX0RPT1JCRUxMXFxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wb3dlcm52L0tjb25maWc6MTg6XFx0c2VsZWN0IE1NVV9OT1RJRklFUlxcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcG93ZXJudi9LY29uZmlnLTE5LVxcdHNlbGVjdCBGT1JDRV9TTVBcXG4tLVxcbmFyY2gveDg2L0tjb25maWc9MTgyNz1jb25maWcgWDg2X1NHWFxcbi0tXFxuYXJjaC94ODYvS2NvbmZpZy0xODMwLVxcdHNlbGVjdCBDUllQVE9fTElCX1NIQTI1NlxcbmFyY2gveDg2L0tjb25maWc6MTgzMTpcXHRzZWxlY3QgTU1VX05PVElGSUVSXFxuYXJjaC94ODYvS2NvbmZpZy0xODMyLVxcdHNlbGVjdCBOVU1BX0tFRVBfTUVNSU5GTyBpZiBOVU1BXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZz0yMjg9Y29uZmlnIERSTV9HUFVTVk1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTIzMS1cXHRzZWxlY3QgSE1NX01JUlJPUlxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnOjIzMjpcXHRzZWxlY3QgTU1VX05PVElGSUVSXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMjMzLVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L0tjb25maWc9NzU9Y29uZmlnIERSTV9BTURHUFVfVVNFUlBUUlxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvS2NvbmZpZy03OC1cXHRzZWxlY3QgSE1NX01JUlJPUlxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L0tjb25maWc6Nzk6XFx0c2VsZWN0IE1NVV9OT1RJRklFUlxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L0tjb25maWctODAtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQvS2NvbmZpZz02PWNvbmZpZyBIU0FfQU1EXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9LY29uZmlnLTktXFx0c2VsZWN0IEhNTV9NSVJST1JcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9LY29uZmlnOjEwOlxcdHNlbGVjdCBNTVVfTk9USUZJRVJcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9LY29uZmlnLTExLVxcdHNlbGVjdCBEUk1fQU1ER1BVX1VTRVJQVFJcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL0tjb25maWc9MTU9Y29uZmlnIEhTQV9BTURfU1ZNXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9LY29uZmlnLTE5LVxcdHNlbGVjdCBITU1fTUlSUk9SXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQvS2NvbmZpZzoyMDpcXHRzZWxlY3QgTU1VX05PVElGSUVSXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQvS2NvbmZpZy0yMS1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9LY29uZmlnPTExND1jb25maWcgRFJNX0k5MTVfVVNFUlBUUlxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvS2NvbmZpZy0xMTYtXFx0ZGVwZW5kcyBvbiBEUk1fSTkxNVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L0tjb25maWc6MTE3OlxcdHNlbGVjdCBNTVVfTk9USUZJRVJcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9LY29uZmlnLTExOC1cXHRkZWZhdWx0IHlcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L0tjb25maWc9OTQ9Y29uZmlnIERSTV9OT1VWRUFVX1NWTVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvS2NvbmZpZy05OS1cXHRzZWxlY3QgSE1NX01JUlJPUlxcbmRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L0tjb25maWc6MTAwOlxcdHNlbGVjdCBNTVVfTk9USUZJRVJcXG5kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9LY29uZmlnLTEwMS1cXHRkZWZhdWx0IG5cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9yYWRlb24vS2NvbmZpZz0zOD1jb25maWcgRFJNX1JBREVPTl9VU0VSUFRSXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL0tjb25maWctNDAtXFx0ZGVwZW5kcyBvbiBEUk1fUkFERU9OXFxuZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9LY29uZmlnOjQxOlxcdHNlbGVjdCBNTVVfTk9USUZJRVJcXG5kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL0tjb25maWctNDItXFx0aGVscFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3hlL0tjb25maWc9Mj1jb25maWcgRFJNX1hFXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0veGUvS2NvbmZpZy00NC1cXHRzZWxlY3QgRFJNX1NDSEVEXFxuZHJpdmVycy9ncHUvZHJtL3hlL0tjb25maWc6NDU6XFx0c2VsZWN0IE1NVV9OT1RJRklFUlxcbmRyaXZlcnMvZ3B1L2RybS94ZS9LY29uZmlnLTQ2LVxcdHNlbGVjdCBXQU5UX0RFVl9DT1JFRFVNUFxcbi0tXFxuZHJpdmVycy9odi9LY29uZmlnPTY4PWNvbmZpZyBNU0hWX1JPT1RcXG4tLVxcbmRyaXZlcnMvaHYvS2NvbmZpZy04MC1cXHRzZWxlY3QgSE1NX01JUlJPUlxcbmRyaXZlcnMvaHYvS2NvbmZpZzo4MTpcXHRzZWxlY3QgTU1VX05PVElGSUVSXFxuZHJpdmVycy9odi9LY29uZmlnLTgyLVxcdGRlZmF1bHQgblxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWc9NTE9Y29uZmlnIElORklOSUJBTkRfT05fREVNQU5EX1BBR0lOR1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWctNTMtXFx0ZGVwZW5kcyBvbiBJTkZJTklCQU5EX1VTRVJfTUVNXFxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWc6NTQ6XFx0c2VsZWN0IE1NVV9OT1RJRklFUlxcbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnLTU1LVxcdHNlbGVjdCBJTlRFUlZBTF9UUkVFXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvaGZpMS9LY29uZmlnPTI9Y29uZmlnIElORklOSUJBTkRfSEZJMVxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2hmaTEvS2NvbmZpZy00LVxcdGRlcGVuZHMgb24gWDg2XzY0IFxcdTAwMjZcXHUwMDI2IElORklOSUJBTkRfUkRNQVZUIFxcdTAwMjZcXHUwMDI2IEkyQyBcXHUwMDI2XFx1MDAyNiAhVU1MXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2hmaTEvS2NvbmZpZzo1OlxcdHNlbGVjdCBNTVVfTk9USUZJRVJcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvaGZpMS9LY29uZmlnLTYtXFx0c2VsZWN0IENSQzMyXFxuLS1cXG5kcml2ZXJzL2lvbW11L2FtZC9LY29uZmlnPTM9Y29uZmlnIEFNRF9JT01NVVxcbi0tXFxuZHJpdmVycy9pb21tdS9hbWQvS2NvbmZpZy0xMC1cXHRzZWxlY3QgSVJRX01TSV9MSUJcXG5kcml2ZXJzL2lvbW11L2FtZC9LY29uZmlnOjExOlxcdHNlbGVjdCBNTVVfTk9USUZJRVJcXG5kcml2ZXJzL2lvbW11L2FtZC9LY29uZmlnLTEyLVxcdHNlbGVjdCBJT01NVV9BUElcXG4tLVxcbmRyaXZlcnMvaW9tbXUvYXJtL0tjb25maWc9OTE9Y29uZmlnIEFSTV9TTU1VX1YzX1NWQVxcbi0tXFxuZHJpdmVycy9pb21tdS9hcm0vS2NvbmZpZy05NC1cXHRzZWxlY3QgSU9NTVVfSU9QRlxcbmRyaXZlcnMvaW9tbXUvYXJtL0tjb25maWc6OTU6XFx0c2VsZWN0IE1NVV9OT1RJRklFUlxcbmRyaXZlcnMvaW9tbXUvYXJtL0tjb25maWctOTYtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9pb21tdS9pbnRlbC9LY29uZmlnPTUzPWNvbmZpZyBJTlRFTF9JT01NVV9TVk1cXG4tLVxcbmRyaXZlcnMvaW9tbXUvaW50ZWwvS2NvbmZpZy01NS1cXHRkZXBlbmRzIG9uIFg4Nl82NFxcbmRyaXZlcnMvaW9tbXUvaW50ZWwvS2NvbmZpZzo1NjpcXHRzZWxlY3QgTU1VX05PVElGSUVSXFxuZHJpdmVycy9pb21tdS9pbnRlbC9LY29uZmlnLTU3LVxcdHNlbGVjdCBJT01NVV9TVkFcXG4tLVxcbmRyaXZlcnMvbWlzYy9LY29uZmlnPTMxMz1jb25maWcgU0dJX0dSVVxcbi0tXFxuZHJpdmVycy9taXNjL0tjb25maWctMzE1LVxcdGRlcGVuZHMgb24gWDg2X1VWIFxcdTAwMjZcXHUwMDI2IFNNUFxcbmRyaXZlcnMvbWlzYy9LY29uZmlnOjMxNjpcXHRzZWxlY3QgTU1VX05PVElGSUVSXFxuZHJpdmVycy9taXNjL0tjb25maWctMzE3LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMveGVuL0tjb25maWc9MTM2PWNvbmZpZyBYRU5fR05UREVWXFxuLS1cXG5kcml2ZXJzL3hlbi9LY29uZmlnLTEzOS1cXHRkZWZhdWx0IG1cXG5kcml2ZXJzL3hlbi9LY29uZmlnOjE0MDpcXHRzZWxlY3QgTU1VX05PVElGSUVSXFxuZHJpdmVycy94ZW4vS2NvbmZpZy0xNDEtXFx0c2VsZWN0IEZJTkRfTk9STUFMX1BBR0VcXG4tLVxcbmxpYi9LY29uZmlnLmRlYnVnPTMzNTQ9Y29uZmlnIFRFU1RfSE1NXFxuLS1cXG5saWIvS2NvbmZpZy5kZWJ1Zy0zMzU4LVxcdHNlbGVjdCBITU1fTUlSUk9SXFxubGliL0tjb25maWcuZGVidWc6MzM1OTpcXHRzZWxlY3QgTU1VX05PVElGSUVSXFxubGliL0tjb25maWcuZGVidWctMzM2MC1cXHRoZWxwXFxuLS1cXG52aXJ0L2t2bS9LY29uZmlnPTQ9Y29uZmlnIEtWTV9DT01NT05cXG4tLVxcbnZpcnQva3ZtL0tjb25maWctNy0gICAgICAgc2VsZWN0IElOVEVSVkFMX1RSRUVcXG52aXJ0L2t2bS9LY29uZmlnOjg6ICAgICAgIHNlbGVjdCBNTVVfTk9USUZJRVJcXG52aXJ0L2t2bS9LY29uZmlnLTktICAgICAgIHNlbGVjdCBQUkVFTVBUX05PVElGSUVSU1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yM1QxNToyOTo0MS42MjI1NzUwODVaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTU0Mzc5Mjk3OTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRm9jdXNpbmcgdGhlIEZ1eno6IEtWTSBhbmQgT09NIENsZWFudXAqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24gZm9yIGZ1enppbmcuIEl0IGxvb2tzIGxpa2UgYEtWTV9DT01NT05gIHNlbGVjdHMgYE1NVV9OT1RJRklFUmAsIGFuZCBgS1ZNYCBzZWxlY3RzIGBLVk1fQ09NTU9OYC4gVGhlcmVmb3JlLCBlbmFibGluZyBgS1ZNYCBpcyBkZWZpbml0ZWx5IHRoZSByaWdodCBjb25maWcgdG8gZ2V0IGV2ZXJ5dGhpbmcgcmVsYXRlZCB0byB0aGUgcGF0Y2ggZW5hYmxlZC4gIGBLVk1gIGlzIHByZXR0eSBzdGFuZGFyZCwgc28gd2UgY2FuIGp1c3QgbGlzdCB0aGF0LlxuXG5UaGUgcGF0Y2ggaXRzZWxmIHRvdWNoZXMgYHZpcnQva3ZtL2t2bV9tYWluLmNgLCB3aGljaCB0ZWxscyBtZSB0aGF0IGBLVk1gIGlzIG5lY2Vzc2FyeSB0byB0ZXN0IHRoZSBLVk0tc3BlY2lmaWMgaW1wbGVtZW50YXRpb24gb2YgYGFmdGVyX29vbV91bnJlZ2lzdGVyYC4gVGhlIGNlbnRyYWwgbG9naWMgaXMgaW4gYG1tL21tdV9ub3RpZmllci5jYCBhbmQgYG1tL29vbV9raWxsLmNgLCBzbyBgS1ZNYCBzaG91bGQgYmUgc3VmZmljaWVudCB0byBlbmFibGUgYE1NVV9OT1RJRklFUmAgYW5kIHRlc3QgdGhlIHdob2xlIGZsb3cuXG5cbk5vdywgbGV0J3MgbmFpbCBkb3duIHRoZSBrZXkgc3ltYm9scy4gV2UgaGF2ZTogYG1tdV9ub3RpZmllcl9vb21fZW50ZXJgLCBgbW11X25vdGlmaWVyX2JhcnJpZXJgLCBgbW11X25vdGlmaWVyX29vbV9jYWxsYmFja19mbmAsIGBrdm1fbW11X25vdGlmaWVyX2FmdGVyX29vbV91bnJlZ2lzdGVyYCwgYW5kIGBrdm1fZGVzdHJveV92bWAuXG5cbk9rYXksIGRpZ2dpbmcgYSBiaXQgZGVlcGVyLCBgbW11X25vdGlmaWVyX29vbV9lbnRlcmAgaXMgY2FsbGVkIGZyb20gYF9fb29tX3JlYXBfdGFza19tbWAuIGBfX29vbV9yZWFwX3Rhc2tfbW1gIGlzIGluIHR1cm4gY2FsbGVkIGZyb20gYG9vbV9yZWFwX3Rhc2tfbW1gIGFuZCBgcHJvY2Vzc19tcmVsZWFzZWAuICBgcHJvY2Vzc19tcmVsZWFzZWAgaXMgYSBzeXNjYWxsLiAgSW50ZXJlc3RpbmcuIFNvLCBmdXp6aW5nIGBwcm9jZXNzX21yZWxlYXNlYCBzaG91bGQgYmUgYSBwYXRoIHRvIHRyaWdnZXIgYG1tdV9ub3RpZmllcl9vb21fZW50ZXJgLiBTeXprYWxsZXIgd2lsbCBhbHJlYWR5IGZ1enogYHByb2Nlc3NfbXJlbGVhc2VgIHNpbmNlIGl0J3MgYSBzeXNjYWxsLCBidXQgbGV0J3MgYWRkIGl0IHRvIHRoZSBmb2N1cyBzeW1ib2xzIHRvIGVuY291cmFnZSB0aGUgZnV6emVyIHRvIGdpdmUgaXQgc29tZSBleHRyYSBhdHRlbnRpb24uIFllcCwgYHByb2Nlc3NfbXJlbGVhc2VgIGxvb2tzIGxpa2UgYSBnb29kIGVudHJ5IHBvaW50IHNpbmNlIGl0J3MgYSBzeXNjYWxsLiBMZXQncyBhZGQgdGhhdCB0byB0aGUgbGlzdC5cblxuTGV0J3MgZG91YmxlLWNoZWNrIGhvdyBgX19vb21fcmVhcF90YXNrX21tYCBpcyBjYWxsZWQuIEl0J3MgY2FsbGVkIGZyb20gYG9vbV9yZWFwX3Rhc2tfbW1gLCB3aGljaCBpcyBjYWxsZWQgYnkgdGhlIG9vbV9yZWFwZXIga3RocmVhZC4gQWxzbyBmcm9tIHRoZSBgcHJvY2Vzc19tcmVsZWFzZWAgc3lzY2FsbC4gVGhpcyByZWluZm9yY2VzIHRoZSBpZGVhIHRoYXQgYHByb2Nlc3NfbXJlbGVhc2VgIGlzIHRoZSBrZXkgdG8gdHJpZ2dlciB0aGlzIGZyb20gdXNlcnNwYWNlLlxuXG5ga3ZtX2Rlc3Ryb3lfdm1gIGlzIGNhbGxlZCB3aGVuIGEgS1ZNIFZNIGlzIGRlc3Ryb3llZC4gQ3JlYXRpbmcgYW5kIGRlc3Ryb3lpbmcgVk1zIHdpbGwgbGlrZWx5IHRyaWdnZXIgdGhpcy5cblxuU28gdGhlIGNvbXBsZXRlIHNldCBvZiBmb2N1cyBzeW1ib2xzIGlzOlxuKiAgIGBtbXVfbm90aWZpZXJfb29tX2VudGVyYFxuKiAgIGBtbXVfbm90aWZpZXJfYmFycmllcmBcbiogICBgbW11X25vdGlmaWVyX29vbV9jYWxsYmFja19mbmBcbiogICBga3ZtX21tdV9ub3RpZmllcl9hZnRlcl9vb21fdW5yZWdpc3RlcmBcbiogICBga3ZtX2Rlc3Ryb3lfdm1gXG4qICAgYHByb2Nlc3NfbXJlbGVhc2VgXG5cbmBtbXVfbm90aWZpZXJfb29tX2NhbGxiYWNrX2ZuYCBpcyBzdGF0aWMsIGFuZCBjYWxsZWQgdmlhIGBjYWxsX3NyY3VgLCBidXQgaXQgc2hvdWxkIHN0aWxsIGJlIGluY2x1ZGVkIHNpbmNlIGl0J3Mgb24gdGhlIGNhbGwgc3RhY2ssIGV2ZW4gaWYgaXQncyBjYWxsZWQgYXN5bmNocm9ub3VzbHkuXG5cbmBrdm1fZGVzdHJveV92bWAgaXMgc3RhdGljIGluIGB2aXJ0L2t2bS9rdm1fbWFpbi5jYCBhbmQgY2FsbGVkIGZyb20gYGt2bV9wdXRfa3ZtYC4gYG1tdV9ub3RpZmllcl9iYXJyaWVyYCBpcyBleHBvcnRlZCwgYW5kIGBtbXVfbm90aWZpZXJfb29tX2VudGVyYCBpcyBub3QgZXhwb3J0ZWQsIGJ1dCBpdCBpcyBnbG9iYWwuXG5cblRoZSByZWFzb25pbmcgaGVyZSBpcyB0aGF0IHRoaXMgcGF0Y2ggbW9kaWZpZXMgYm90aCBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IGFuZCBLVk0uIEl0IGludHJvZHVjZXMgYW4gYXN5bmNocm9ub3VzIGNhbGxiYWNrLCB0cmlnZ2VyZWQgYnkgT09NIGV2ZW50cywgYW5kIGltcGxlbWVudHMgaXQgZm9yIEtWTS4gVGhlIGNoYW5nZSBtb2RpZmllcyBga3ZtX2Rlc3Ryb3lfdm1gIHRvIGhhbmRsZSBhc3luY2hyb25vdXMgY2xlYW51cC4gSXQncyBjcnVjaWFsIHRvIGZ1enogdGhpcyB0byBjaGVjayBmb3IgdXNlLWFmdGVyLWZyZWUgb3IgZGVhZGxvY2sgYnVncyBkdXJpbmcgVk0gT09NIGhhbmRsaW5nLlxuXG5KdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgYEtWTWAgaXMgdGhlIGNvbmZpZyBuYW1lLCBub3QgYENPTkZJR19LVk1gLiAgWWVwLCBgS1ZNYC5cblxuQWxzbywgYENPTkZJR19NTVVfTk9USUZJRVJgIGlzIHNlbGVjdGVkIGJ5IGBLVk1fQ09NTU9OYCB3aGljaCBpcyBzZWxlY3RlZCBieSBgS1ZNYC4gU28ganVzdCBgS1ZNYCBpcyBzdWZmaWNpZW50LCBidXQgbGlzdGluZyBib3RoIHdpbGwgbWFrZSBpdCBtb3JlIGV4cGxpY2l0LlxuXG5Ob3csIGxldCdzIHB1dCB0aGlzIGludG8gYSBwcm9wZXIgc3VtbWFyeS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjQzMjUsIk91dHB1dFRva2VucyI6MjA5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTk0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDE1OjI5OjU3LjA2MDUzMDU1NFoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1NDA2NzcwOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNXCIsXG4gICAgXCJNTVVfTk9USUZJRVJcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtbXVfbm90aWZpZXJfb29tX2VudGVyXCIsXG4gICAgXCJtbXVfbm90aWZpZXJfYmFycmllclwiLFxuICAgIFwibW11X25vdGlmaWVyX29vbV9jYWxsYmFja19mblwiLFxuICAgIFwia3ZtX21tdV9ub3RpZmllcl9hZnRlcl9vb21fdW5yZWdpc3RlclwiLFxuICAgIFwia3ZtX2Rlc3Ryb3lfdm1cIixcbiAgICBcInByb2Nlc3NfbXJlbGVhc2VcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IE1NVSBub3RpZmllciBjYWxsYmFjayBgYWZ0ZXJfb29tX3VucmVnaXN0ZXJgIGFuZCBhIG1lY2hhbmlzbSB0byBpbnZva2UgaXQgYXN5bmNocm9ub3VzbHkgd2hlbiBhbiBPT00gZXZlbnQgb2NjdXJzIChgbW11X25vdGlmaWVyX29vbV9lbnRlcmApLiBJdCBhbHNvIGltcGxlbWVudHMgdGhpcyBjYWxsYmFjayBmb3IgS1ZNIGFuZCBtb2RpZmllcyBga3ZtX2Rlc3Ryb3lfdm1gIHRvIGhhbmRsZSB0aGUgYXN5bmNocm9ub3VzIGNsZWFudXAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IGFuZCBLVk0sIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSB0aGVyZSBhcmUgbm8gdXNlLWFmdGVyLWZyZWUgb3IgZGVhZGxvY2sgaXNzdWVzIGR1cmluZyBPT00gaGFuZGxpbmcgb2YgVk1zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTVwiLFxuICAgIFwiTU1VX05PVElGSUVSXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibW11X25vdGlmaWVyX29vbV9lbnRlclwiLFxuICAgIFwibW11X25vdGlmaWVyX2JhcnJpZXJcIixcbiAgICBcIm1tdV9ub3RpZmllcl9vb21fY2FsbGJhY2tfZm5cIixcbiAgICBcImt2bV9tbXVfbm90aWZpZXJfYWZ0ZXJfb29tX3VucmVnaXN0ZXJcIixcbiAgICBcImt2bV9kZXN0cm95X3ZtXCIsXG4gICAgXCJwcm9jZXNzX21yZWxlYXNlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBNTVUgbm90aWZpZXIgY2FsbGJhY2sgYGFmdGVyX29vbV91bnJlZ2lzdGVyYCBhbmQgYSBtZWNoYW5pc20gdG8gaW52b2tlIGl0IGFzeW5jaHJvbm91c2x5IHdoZW4gYW4gT09NIGV2ZW50IG9jY3VycyAoYG1tdV9ub3RpZmllcl9vb21fZW50ZXJgKS4gSXQgYWxzbyBpbXBsZW1lbnRzIHRoaXMgY2FsbGJhY2sgZm9yIEtWTSBhbmQgbW9kaWZpZXMgYGt2bV9kZXN0cm95X3ZtYCB0byBoYW5kbGUgdGhlIGFzeW5jaHJvbm91cyBjbGVhbnVwLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gY29yZSBtZW1vcnkgbWFuYWdlbWVudCBhbmQgS1ZNLCBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgdGhlcmUgYXJlIG5vIHVzZS1hZnRlci1mcmVlIG9yIGRlYWRsb2NrIGlzc3VlcyBkdXJpbmcgT09NIGhhbmRsaW5nIG9mIFZNcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow49wsg[1] Phase: Succeeded StartedAt: 2026-07-23 15:30:09 +0000 UTC FinishedAt: 2026-07-23 15:30:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflow49wsg[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-23 15:30:09 +0000 UTC FinishedAt: 2026-07-23 15:30:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflow49wsg[2] Phase: Succeeded StartedAt: 2026-07-23 15:30:09 +0000 UTC FinishedAt: 2026-07-23 20:11:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflow49wsg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","MMU_NOTIFIER"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["mmu_notifier_oom_enter","mmu_notifier_barrier","mmu_notifier_oom_callback_fn","kvm_mmu_notifier_after_oom_unregister","kvm_destroy_vm","process_mrelease"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","MMU_NOTIFIER"],"series_id":"24743a6e-9ab8-4338-bf66-de1c0d9df207","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-23 15:30:09 +0000 UTC FinishedAt: 2026-07-23 20:11:38 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","MMU_NOTIFIER"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["mmu_notifier_oom_enter","mmu_notifier_barrier","mmu_notifier_oom_callback_fn","kvm_mmu_notifier_after_oom_unregister","kvm_destroy_vm","process_mrelease"],"skip_cover_check":true},"patched":{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","MMU_NOTIFIER"],"series_id":"24743a6e-9ab8-4338-bf66-de1c0d9df207","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow49wsg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","MMU_NOTIFIER"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["mmu_notifier_oom_enter","mmu_notifier_barrier","mmu_notifier_oom_callback_fn","kvm_mmu_notifier_after_oom_unregister","kvm_destroy_vm","process_mrelease"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","MMU_NOTIFIER"],"series_id":"24743a6e-9ab8-4338-bf66-de1c0d9df207","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-23 15:30:09 +0000 UTC FinishedAt: 2026-07-23 15:30:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflow49wsg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","MMU_NOTIFIER"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["mmu_notifier_oom_enter","mmu_notifier_barrier","mmu_notifier_oom_callback_fn","kvm_mmu_notifier_after_oom_unregister","kvm_destroy_vm","process_mrelease"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","MMU_NOTIFIER"],"series_id":"24743a6e-9ab8-4338-bf66-de1c0d9df207","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-23 15:30:09 +0000 UTC FinishedAt: 2026-07-23 15:30:16 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","MMU_NOTIFIER"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.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-workflow49wsg/series-workflow49wsg-convert-artifact-1993443155/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow49wsg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","MMU_NOTIFIER"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["mmu_notifier_oom_enter","mmu_notifier_barrier","mmu_notifier_oom_callback_fn","kvm_mmu_notifier_after_oom_unregister","kvm_destroy_vm","process_mrelease"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","MMU_NOTIFIER"],"series_id":"24743a6e-9ab8-4338-bf66-de1c0d9df207","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-23 15:30:19 +0000 UTC FinishedAt: 2026-07-23 16:08:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflow49wsg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","MMU_NOTIFIER"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["mmu_notifier_oom_enter","mmu_notifier_barrier","mmu_notifier_oom_callback_fn","kvm_mmu_notifier_after_oom_unregister","kvm_destroy_vm","process_mrelease"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","MMU_NOTIFIER"],"series_id":"24743a6e-9ab8-4338-bf66-de1c0d9df207","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-23 15:30:19 +0000 UTC FinishedAt: 2026-07-23 16:08:01 +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:*28f1c5e8-7435-4a33-bdcc-e348fae28648,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-workflow49wsg/series-workflow49wsg-convert-artifact-1993443155/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": "43625fab-d5f4-464f-8f57-9744f6b82667", "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-workflow49wsg/series-workflow49wsg-build-action-1187039873/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow49wsg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","MMU_NOTIFIER"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["mmu_notifier_oom_enter","mmu_notifier_barrier","mmu_notifier_oom_callback_fn","kvm_mmu_notifier_after_oom_unregister","kvm_destroy_vm","process_mrelease"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","MMU_NOTIFIER"],"series_id":"24743a6e-9ab8-4338-bf66-de1c0d9df207","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-23 15:30:19 +0000 UTC FinishedAt: 2026-07-23 16:07:33 +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:*28f1c5e8-7435-4a33-bdcc-e348fae28648,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-workflow49wsg/series-workflow49wsg-convert-artifact-1993443155/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": "43625fab-d5f4-464f-8f57-9744f6b82667", "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-workflow49wsg/series-workflow49wsg-build-action-1187039873/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow49wsg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","MMU_NOTIFIER"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["mmu_notifier_oom_enter","mmu_notifier_barrier","mmu_notifier_oom_callback_fn","kvm_mmu_notifier_after_oom_unregister","kvm_destroy_vm","process_mrelease"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","MMU_NOTIFIER"],"series_id":"24743a6e-9ab8-4338-bf66-de1c0d9df207","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-23 16:08:01 +0000 UTC FinishedAt: 2026-07-23 16:08:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflow49wsg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","MMU_NOTIFIER"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["mmu_notifier_oom_enter","mmu_notifier_barrier","mmu_notifier_oom_callback_fn","kvm_mmu_notifier_after_oom_unregister","kvm_destroy_vm","process_mrelease"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","MMU_NOTIFIER"],"series_id":"24743a6e-9ab8-4338-bf66-de1c0d9df207","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-23 16:08:01 +0000 UTC FinishedAt: 2026-07-23 16:08:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflow49wsg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","MMU_NOTIFIER"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["mmu_notifier_oom_enter","mmu_notifier_barrier","mmu_notifier_oom_callback_fn","kvm_mmu_notifier_after_oom_unregister","kvm_destroy_vm","process_mrelease"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","MMU_NOTIFIER"],"series_id":"24743a6e-9ab8-4338-bf66-de1c0d9df207","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-23 16:08:01 +0000 UTC FinishedAt: 2026-07-23 16:08:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflow49wsg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","MMU_NOTIFIER"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["mmu_notifier_oom_enter","mmu_notifier_barrier","mmu_notifier_oom_callback_fn","kvm_mmu_notifier_after_oom_unregister","kvm_destroy_vm","process_mrelease"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","MMU_NOTIFIER"],"series_id":"24743a6e-9ab8-4338-bf66-de1c0d9df207","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-23 16:08:01 +0000 UTC FinishedAt: 2026-07-23 16:08:07 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","MMU_NOTIFIER"],"series_id":"24743a6e-9ab8-4338-bf66-de1c0d9df207","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.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-workflow49wsg/series-workflow49wsg-convert-artifact-372943178/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow49wsg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","MMU_NOTIFIER"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["mmu_notifier_oom_enter","mmu_notifier_barrier","mmu_notifier_oom_callback_fn","kvm_mmu_notifier_after_oom_unregister","kvm_destroy_vm","process_mrelease"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","MMU_NOTIFIER"],"series_id":"24743a6e-9ab8-4338-bf66-de1c0d9df207","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-23 16:08:11 +0000 UTC FinishedAt: 2026-07-23 16:10:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflow49wsg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","MMU_NOTIFIER"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["mmu_notifier_oom_enter","mmu_notifier_barrier","mmu_notifier_oom_callback_fn","kvm_mmu_notifier_after_oom_unregister","kvm_destroy_vm","process_mrelease"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","MMU_NOTIFIER"],"series_id":"24743a6e-9ab8-4338-bf66-de1c0d9df207","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-23 16:08:11 +0000 UTC FinishedAt: 2026-07-23 16:10:11 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*43625fab-d5f4-464f-8f57-9744f6b82667,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-workflow49wsg/series-workflow49wsg-build-action-1187039873/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-workflow49wsg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","MMU_NOTIFIER"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["mmu_notifier_oom_enter","mmu_notifier_barrier","mmu_notifier_oom_callback_fn","kvm_mmu_notifier_after_oom_unregister","kvm_destroy_vm","process_mrelease"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","MMU_NOTIFIER"],"series_id":"24743a6e-9ab8-4338-bf66-de1c0d9df207","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-23 16:10:21 +0000 UTC FinishedAt: 2026-07-23 16:10:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflow49wsg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","MMU_NOTIFIER"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["mmu_notifier_oom_enter","mmu_notifier_barrier","mmu_notifier_oom_callback_fn","kvm_mmu_notifier_after_oom_unregister","kvm_destroy_vm","process_mrelease"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","MMU_NOTIFIER"],"series_id":"24743a6e-9ab8-4338-bf66-de1c0d9df207","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-23 16:10:21 +0000 UTC FinishedAt: 2026-07-23 16:10:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflow49wsg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","MMU_NOTIFIER"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["mmu_notifier_oom_enter","mmu_notifier_barrier","mmu_notifier_oom_callback_fn","kvm_mmu_notifier_after_oom_unregister","kvm_destroy_vm","process_mrelease"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","MMU_NOTIFIER"],"series_id":"24743a6e-9ab8-4338-bf66-de1c0d9df207","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-23 16:10:21 +0000 UTC FinishedAt: 2026-07-23 17:03:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflow49wsg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","MMU_NOTIFIER"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["mmu_notifier_oom_enter","mmu_notifier_barrier","mmu_notifier_oom_callback_fn","kvm_mmu_notifier_after_oom_unregister","kvm_destroy_vm","process_mrelease"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","MMU_NOTIFIER"],"series_id":"24743a6e-9ab8-4338-bf66-de1c0d9df207","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-23 16:10:21 +0000 UTC FinishedAt: 2026-07-23 17:03:47 +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:*28f1c5e8-7435-4a33-bdcc-e348fae28648,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-workflow49wsg/series-workflow49wsg-convert-artifact-372943178/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": "3f3e86ab-a7cd-4918-b7cb-fe10b54c4251", "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-workflow49wsg/series-workflow49wsg-build-action-1200819566/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow49wsg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","MMU_NOTIFIER"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["mmu_notifier_oom_enter","mmu_notifier_barrier","mmu_notifier_oom_callback_fn","kvm_mmu_notifier_after_oom_unregister","kvm_destroy_vm","process_mrelease"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","MMU_NOTIFIER"],"series_id":"24743a6e-9ab8-4338-bf66-de1c0d9df207","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-23 16:10:21 +0000 UTC FinishedAt: 2026-07-23 17:02:35 +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:*28f1c5e8-7435-4a33-bdcc-e348fae28648,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-workflow49wsg/series-workflow49wsg-convert-artifact-372943178/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": "3f3e86ab-a7cd-4918-b7cb-fe10b54c4251", "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-workflow49wsg/series-workflow49wsg-build-action-1200819566/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow49wsg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","MMU_NOTIFIER"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["mmu_notifier_oom_enter","mmu_notifier_barrier","mmu_notifier_oom_callback_fn","kvm_mmu_notifier_after_oom_unregister","kvm_destroy_vm","process_mrelease"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","MMU_NOTIFIER"],"series_id":"24743a6e-9ab8-4338-bf66-de1c0d9df207","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-23 17:03:47 +0000 UTC FinishedAt: 2026-07-23 17:03:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflow49wsg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","MMU_NOTIFIER"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["mmu_notifier_oom_enter","mmu_notifier_barrier","mmu_notifier_oom_callback_fn","kvm_mmu_notifier_after_oom_unregister","kvm_destroy_vm","process_mrelease"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","MMU_NOTIFIER"],"series_id":"24743a6e-9ab8-4338-bf66-de1c0d9df207","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-23 17:03:47 +0000 UTC FinishedAt: 2026-07-23 17:03:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflow49wsg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","MMU_NOTIFIER"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["mmu_notifier_oom_enter","mmu_notifier_barrier","mmu_notifier_oom_callback_fn","kvm_mmu_notifier_after_oom_unregister","kvm_destroy_vm","process_mrelease"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","MMU_NOTIFIER"],"series_id":"24743a6e-9ab8-4338-bf66-de1c0d9df207","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-23 17:03:47 +0000 UTC FinishedAt: 2026-07-23 17:05:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflow49wsg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","MMU_NOTIFIER"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["mmu_notifier_oom_enter","mmu_notifier_barrier","mmu_notifier_oom_callback_fn","kvm_mmu_notifier_after_oom_unregister","kvm_destroy_vm","process_mrelease"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","MMU_NOTIFIER"],"series_id":"24743a6e-9ab8-4338-bf66-de1c0d9df207","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-23 17:03:47 +0000 UTC FinishedAt: 2026-07-23 17:05:44 +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:*3f3e86ab-a7cd-4918-b7cb-fe10b54c4251,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-workflow49wsg/series-workflow49wsg-build-action-1200819566/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-workflow49wsg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","MMU_NOTIFIER"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["mmu_notifier_oom_enter","mmu_notifier_barrier","mmu_notifier_oom_callback_fn","kvm_mmu_notifier_after_oom_unregister","kvm_destroy_vm","process_mrelease"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","MMU_NOTIFIER"],"series_id":"24743a6e-9ab8-4338-bf66-de1c0d9df207","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-23 17:05:53 +0000 UTC FinishedAt: 2026-07-23 20:11:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflow49wsg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","MMU_NOTIFIER"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["mmu_notifier_oom_enter","mmu_notifier_barrier","mmu_notifier_oom_callback_fn","kvm_mmu_notifier_after_oom_unregister","kvm_destroy_vm","process_mrelease"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","MMU_NOTIFIER"],"series_id":"24743a6e-9ab8-4338-bf66-de1c0d9df207","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-23 17:05:53 +0000 UTC FinishedAt: 2026-07-23 20:11:38 +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":["kvm"],"focus_symbols":["mmu_notifier_oom_enter","mmu_notifier_barrier","mmu_notifier_oom_callback_fn","kvm_mmu_notifier_after_oom_unregister","kvm_destroy_vm","process_mrelease"],"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:*43625fab-d5f4-464f-8f57-9744f6b82667,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*3f3e86ab-a7cd-4918-b7cb-fe10b54c4251,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-workflow49wsg/series-workflow49wsg-build-action-1187039873/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-workflow49wsg/series-workflow49wsg-build-action-1200819566/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow49wsg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","MMU_NOTIFIER"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["mmu_notifier_oom_enter","mmu_notifier_barrier","mmu_notifier_oom_callback_fn","kvm_mmu_notifier_after_oom_unregister","kvm_destroy_vm","process_mrelease"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","MMU_NOTIFIER"],"series_id":"24743a6e-9ab8-4338-bf66-de1c0d9df207","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-23 17:05:53 +0000 UTC FinishedAt: 2026-07-23 17:06:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflow49wsg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","MMU_NOTIFIER"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["mmu_notifier_oom_enter","mmu_notifier_barrier","mmu_notifier_oom_callback_fn","kvm_mmu_notifier_after_oom_unregister","kvm_destroy_vm","process_mrelease"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","MMU_NOTIFIER"],"series_id":"24743a6e-9ab8-4338-bf66-de1c0d9df207","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-23 17:05:53 +0000 UTC FinishedAt: 2026-07-23 17:05:59 +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":["kvm"],"focus_symbols":["mmu_notifier_oom_enter","mmu_notifier_barrier","mmu_notifier_oom_callback_fn","kvm_mmu_notifier_after_oom_unregister","kvm_destroy_vm","process_mrelease"],"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-workflow49wsg/series-workflow49wsg-convert-artifact-3497866975/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow49wsg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","MMU_NOTIFIER"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["mmu_notifier_oom_enter","mmu_notifier_barrier","mmu_notifier_oom_callback_fn","kvm_mmu_notifier_after_oom_unregister","kvm_destroy_vm","process_mrelease"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","MMU_NOTIFIER"],"series_id":"24743a6e-9ab8-4338-bf66-de1c0d9df207","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-23 17:05:53 +0000 UTC FinishedAt: 2026-07-23 17:05:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflow49wsg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","MMU_NOTIFIER"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["mmu_notifier_oom_enter","mmu_notifier_barrier","mmu_notifier_oom_callback_fn","kvm_mmu_notifier_after_oom_unregister","kvm_destroy_vm","process_mrelease"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","MMU_NOTIFIER"],"series_id":"24743a6e-9ab8-4338-bf66-de1c0d9df207","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-23 17:05:53 +0000 UTC FinishedAt: 2026-07-23 17:05:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflow49wsg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","MMU_NOTIFIER"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["mmu_notifier_oom_enter","mmu_notifier_barrier","mmu_notifier_oom_callback_fn","kvm_mmu_notifier_after_oom_unregister","kvm_destroy_vm","process_mrelease"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","MMU_NOTIFIER"],"series_id":"24743a6e-9ab8-4338-bf66-de1c0d9df207","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-23 17:05:53 +0000 UTC FinishedAt: 2026-07-23 17:05:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflow49wsg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","MMU_NOTIFIER"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["mmu_notifier_oom_enter","mmu_notifier_barrier","mmu_notifier_oom_callback_fn","kvm_mmu_notifier_after_oom_unregister","kvm_destroy_vm","process_mrelease"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","MMU_NOTIFIER"],"series_id":"24743a6e-9ab8-4338-bf66-de1c0d9df207","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-23 17:06:04 +0000 UTC FinishedAt: 2026-07-23 20:11:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflow49wsg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","MMU_NOTIFIER"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["mmu_notifier_oom_enter","mmu_notifier_barrier","mmu_notifier_oom_callback_fn","kvm_mmu_notifier_after_oom_unregister","kvm_destroy_vm","process_mrelease"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","MMU_NOTIFIER"],"series_id":"24743a6e-9ab8-4338-bf66-de1c0d9df207","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-23 17:06:04 +0000 UTC FinishedAt: 2026-07-23 20:11:28 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*43625fab-d5f4-464f-8f57-9744f6b82667,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*3f3e86ab-a7cd-4918-b7cb-fe10b54c4251,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-workflow49wsg/series-workflow49wsg-build-action-1187039873/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-workflow49wsg/series-workflow49wsg-build-action-1200819566/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-workflow49wsg/series-workflow49wsg-convert-artifact-3497866975/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,}