Name: series-workflow227gk Phase: Succeeded StartedAt: 2026-08-26 06:48:06 +0000 UTC FinishedAt: 2026-08-26 10:47:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflow227gk[0] Phase: Succeeded StartedAt: 2026-08-26 06:48:06 +0000 UTC FinishedAt: 2026-08-26 07:05:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflow227gk[0].run-triage Phase: Succeeded StartedAt: 2026-08-26 06:48:06 +0000 UTC FinishedAt: 2026-08-26 07:05:28 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "8a9091052cc81caa5570835049c809da804baa3f", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "FUTEX" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "8a9091052cc81caa5570835049c809da804baa3f", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "FUTEX" ], "series_id": "45bf7b87-bb22-4556-b9af-39f51554e5c4" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "fixup_user_fault" ], "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+CgkJCTx0ZD4yMDI2LzA4LzI2IDA3OjA0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0ZVVEVYJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Zml4dXBfdXNlcl9mYXVsdCYjMzQ7CiAgXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIGluIGBmaXh1cF91c2VyX2ZhdWx0YCBieSBhZGRpbmcgYSBjaGVjayBmb3IgdGhlIGB1bmxvY2tlZGAgcG9pbnRlciBiZWZvcmUgYXNzaWduaW5nIHRvIGAqdW5sb2NrZWRgLiBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzIGFyZSByZWxpYWJseSBjYXVnaHQgYnkgc3RhbmRhcmQga2VybmVsIHBhZ2UgZmF1bHQgaGFuZGxpbmcgYW5kIEtBU0FOLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLCBzdHJ1Y3R1cmUgcGFkZGluZyBsZWFrcywgb3IgdW5pbml0aWFsaXplZCB2YWx1ZXMgYmVpbmcgdXNlZCBpbiBjb250cm9sIGZsb3cuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnkuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSBpbiBgZml4dXBfdXNlcl9mYXVsdGAgd2hlbiB0aGUgYHVubG9ja2VkYCBwYXJhbWV0ZXIgaXMgTlVMTC4gVGhpcyBmdW5jdGlvbiBpcyByZWFjaGFibGUgZnJvbSB1c2VyIHNwYWNlIHZpYSBmdXRleCBvcGVyYXRpb25zIChlLmcuLCBgZmF1bHRfaW5fdXNlcl93cml0ZWFibGVgKSwgbWFraW5nIGl0IGEgY3JpdGljYWwgcGF0aCB0byBmdXp6LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDA3OjA0PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMTNhMjgyMDkyOTgwM2NmMTE2NDk1OGQ2NGI1ZTZjMzdmYmY2NjhiM1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgQXVnIDI2IDA3OjA0OjQyIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL21tL2d1cC5jIGIvbW0vZ3VwLmNcbmluZGV4IDA2OTIxMTliNzkwNDMuLmQxMjQ3NWE3ZjdjY2IgMTAwNjQ0XG4tLS0gYS9tbS9ndXAuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbW0vZ3VwLmNcbkBAIC0xNTk0LDcgJiM0MzsxNTk0LDggQEAgaW50IGZpeHVwX3VzZXJfZmF1bHQoc3RydWN0IG1tX3N0cnVjdCAqbW0sXG4gXHRcdCAqIGNvdWxkIHRlbGwgdGhlIGNhbGxlcnMgc28gdGhleSBkbyBub3QgbmVlZCB0byB1bmxvY2suXG4gXHRcdCAqL1xuIFx0XHRtbWFwX3JlYWRfbG9jayhtbSk7XG4tXHRcdCp1bmxvY2tlZCA9IHRydWU7XG4mIzQzO1x0XHRpZiAodW5sb2NrZWQpXG4mIzQzO1x0XHRcdCp1bmxvY2tlZCA9IHRydWU7XG4gXHRcdHJldHVybiAwO1xuIFx0fVxuIFxuQEAgLTE2MDgsNyAmIzQzOzE2MDksOCBAQCBpbnQgZml4dXBfdXNlcl9mYXVsdChzdHJ1Y3QgbW1fc3RydWN0ICptbSxcbiBcbiBcdGlmIChyZXQgXHUwMDI2IFZNX0ZBVUxUX1JFVFJZKSB7XG4gXHRcdG1tYXBfcmVhZF9sb2NrKG1tKTtcbi1cdFx0KnVubG9ja2VkID0gdHJ1ZTtcbiYjNDM7XHRcdGlmICh1bmxvY2tlZClcbiYjNDM7XHRcdFx0KnVubG9ja2VkID0gdHJ1ZTtcbiBcdFx0ZmF1bHRfZmxhZ3MgfD0gRkFVTFRfRkxBR19UUklFRDtcbiBcdFx0Z290byByZXRyeTtcbiBcdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwNzowNDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7RlVURVgmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtmaXh1cF91c2VyX2ZhdWx0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSBpbiBgZml4dXBfdXNlcl9mYXVsdGAgd2hlbiB0aGUgYHVubG9ja2VkYCBwYXJhbWV0ZXIgaXMgTlVMTC4gVGhpcyBmdW5jdGlvbiBpcyByZWFjaGFibGUgZnJvbSB1c2VyIHNwYWNlIHZpYSBmdXRleCBvcGVyYXRpb25zIChlLmcuLCBgZmF1bHRfaW5fdXNlcl93cml0ZWFibGVgKSwgbWFraW5nIGl0IGEgY3JpdGljYWwgcGF0aCB0byBmdXp6LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMTNhMjgyMDkyOTgwM2NmMTE2NDk1OGQ2NGI1ZTZjMzdmYmY2NjhiMwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgQXVnIDI2IDA3OjA0OjQyIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbW0vZ3VwLmMgYi9tbS9ndXAuYwppbmRleCAwNjkyMTE5Yjc5MDQzLi5kMTI0NzVhN2Y3Y2NiIDEwMDY0NAotLS0gYS9tbS9ndXAuYwomIzQzOyYjNDM7JiM0MzsgYi9tbS9ndXAuYwpAQCAtMTU5NCw3ICYjNDM7MTU5NCw4IEBAIGludCBmaXh1cF91c2VyX2ZhdWx0KHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLAogCQkgKiBjb3VsZCB0ZWxsIHRoZSBjYWxsZXJzIHNvIHRoZXkgZG8gbm90IG5lZWQgdG8gdW5sb2NrLgogCQkgKi8KIAkJbW1hcF9yZWFkX2xvY2sobW0pOwotCQkqdW5sb2NrZWQgPSB0cnVlOwomIzQzOwkJaWYgKHVubG9ja2VkKQomIzQzOwkJCSp1bmxvY2tlZCA9IHRydWU7CiAJCXJldHVybiAwOwogCX0KIApAQCAtMTYwOCw3ICYjNDM7MTYwOSw4IEBAIGludCBmaXh1cF91c2VyX2ZhdWx0KHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLAogCiAJaWYgKHJldCAmYW1wOyBWTV9GQVVMVF9SRVRSWSkgewogCQltbWFwX3JlYWRfbG9jayhtbSk7Ci0JCSp1bmxvY2tlZCA9IHRydWU7CiYjNDM7CQlpZiAodW5sb2NrZWQpCiYjNDM7CQkJKnVubG9ja2VkID0gdHJ1ZTsKIAkJZmF1bHRfZmxhZ3MgfD0gRkFVTFRfRkxBR19UUklFRDsKIAkJZ290byByZXRyeTsKIAl9CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDA3OjA0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwNzMKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiA3MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4KCioqQW5hbHl6aW5nIGEgTWVtb3J5IE1hbmFnZW1lbnQgUGF0Y2gqKgoKQWxyaWdodCwgc28gSSYjMzk7bSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCYjMzk7cyB0b3VjaGluZyBgbW0vZ3VwLmNgLCB3aGljaCBpcyBhbHdheXMgaW50ZXJlc3RpbmcgYmVjYXVzZSB0aGF0JiMzOTtzIHRoZSBoZWFydCBvZiB0aGUgZ2V0X3VzZXJfcGFnZXMgZnVuY3Rpb25hbGl0eSBhbmQgbWVtb3J5IGZhdWx0IGhhbmRsaW5nLiBUaGUgc3BlY2lmaWMgZnVuY3Rpb24gdGhleSYjMzk7cmUgbW9kaWZ5aW5nIGlzIGBmaXh1cF91c2VyX2ZhdWx0YC4gUmlnaHQsIHNvIHRoaXMgaXMgd2hlcmUgdGhleSYjMzk7cmUgdHJ5aW5nIHRvIHJlc29sdmUgYSB1c2VyLXNwYWNlIG1lbW9yeSBhY2Nlc3MgaXNzdWUuCgpUaGUga2V5IGNoYW5nZSBpcyB0aGV5JiMzOTt2ZSBhZGRlZCBhIGNvbmRpdGlvbmFsIGNoZWNrOiBgaWYgKHVubG9ja2VkKWAuIFRoaXMgc3VnZ2VzdHMgdGhhdCBgdW5sb2NrZWRgIGlzIGxpa2VseSBhIHBvaW50ZXIgdG8gYSBib29sZWFuIHZhcmlhYmxlLiBFc3NlbnRpYWxseSwgdGhleSBhcmUgZW5zdXJpbmcgdGhhdCB0aGV5IG9ubHkgc2V0IGAqdW5sb2NrZWQgPSB0cnVlYCAocHJlc3VtYWJseSBpbmRpY2F0aW5nIHRoYXQgc29tZSBsb2NraW5nIGlzIG5vIGxvbmdlciByZXF1aXJlZCkgaWYgdGhlIGB1bmxvY2tlZGAgcG9pbnRlciBpcyB2YWxpZC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoaXMgaXMgcHJvYmFibHkgbWVhbnQgdG8gYWRkcmVzcyBhIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbiBvciBhIG1lbW9yeSBzYWZldHkgaXNzdWUuIFRoZXkgcHJvYmFibHkgZG9uJiMzOTt0IHdhbnQgdG8gd3JpdGUgdG8gdGhpcyB2YXJpYWJsZSBpZiBpdCYjMzk7cyBwb2ludGluZyB0byBpbnZhbGlkIG1lbW9yeS4gSSYjMzk7bGwgbmVlZCB0byBkaWcgZGVlcGVyIGludG8gdGhlIGNvZGUgdG8gdW5kZXJzdGFuZCB0aGUgc3BlY2lmaWMgY29udGV4dCBhbmQgZXhhY3RseSB3aHkgdGhpcyBjb25kaXRpb25hbCBjaGVjayBoYXMgYmVlbiBkZWVtZWQgbmVjZXNzYXJ5LiBJIHN1c3BlY3QgaXQmIzM5O3MgYWJvdXQgYXZvaWRpbmcgYSBkb3VibGUtZnJlZSBvciBzb21lIG90aGVyIGNvcnJ1cHRpb24gcmVsYXRlZCB0byB0aGUgbG9ja2luZy91bmxvY2tpbmcgcHJvY2Vzcy4gTXkgbmV4dCBzdGVwIGlzIHRvIGV4YW1pbmUgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaW4gYGZpeHVwX3VzZXJfZmF1bHRgLCBhbmQgYWxzbyB0cmFjZSBob3cgYHVubG9ja2VkYCBpcyBpbml0aWFsaXplZCBhbmQgdXNlZCB0aHJvdWdob3V0IHRoYXQgY29kZSBwYXRoLCB0byBncmFzcCB0aGUgcmF0aW9uYWxlIGJlaGluZCB0aGlzIHBhdGNoIGNvbXBsZXRlbHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMDc6MDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Zml4dXBfdXNlcl9mYXVsdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL2d1cC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL2d1cC5jPTE1MTI9c3RhdGljIGJvb2wgdm1hX3Blcm1pdHNfZmF1bHQoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsXG4tLVxubW0vZ3VwLmMtMTUzNS0vKipcbm1tL2d1cC5jOjE1MzY6ICogZml4dXBfdXNlcl9mYXVsdCgpIC0gbWFudWFsbHkgcmVzb2x2ZSBhIHVzZXIgcGFnZSBmYXVsdFxubW0vZ3VwLmMtMTUzNy0gKiBAbW06XHRcdG1tX3N0cnVjdCBvZiB0YXJnZXQgbW1cbi0tXG5tbS9ndXAuYy0xNTYzLSAqL1xubW0vZ3VwLmM6MTU2NDppbnQgZml4dXBfdXNlcl9mYXVsdChzdHJ1Y3QgbW1fc3RydWN0ICptbSxcbm1tL2d1cC5jLTE1NjUtXHRcdCAgICAgdW5zaWduZWQgbG9uZyBhZGRyZXNzLCB1bnNpZ25lZCBpbnQgZmF1bHRfZmxhZ3MsXG4tLVxubW0vZ3VwLmMtMTYxOS19XG5tbS9ndXAuYzoxNjIwOkVYUE9SVF9TWU1CT0xfR1BMKGZpeHVwX3VzZXJfZmF1bHQpO1xubW0vZ3VwLmMtMTYyMS1cbi0tXG5tbS9ndXAuYz0yMTE3PXNpemVfdCBmYXVsdF9pbl9zYWZlX3dyaXRlYWJsZShjb25zdCBjaGFyIF9fdXNlciAqdWFkZHIsIHNpemVfdCBzaXplKVxuLS1cbm1tL2d1cC5jLTIxMzAtXHRmb3IgKGN1ciA9IHN0YXJ0OyBjdXIgXHUwMDI2XHUwMDI2IGN1ciBcdTAwM2MgZW5kOyBjdXIgPSBQQUdFX0FMSUdOX0RPV04oY3VyICYjNDM7IFBBR0VfU0laRSkpXG5tbS9ndXAuYzoyMTMxOlx0XHRpZiAoZml4dXBfdXNlcl9mYXVsdChtbSwgY3VyLCBGQVVMVF9GTEFHX1dSSVRFLCBcdTAwMjZ1bmxvY2tlZCkpXG5tbS9ndXAuYy0yMTMyLVx0XHRcdGJyZWFrO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDA3OjA0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI4NTYKCQkJCQkJCW91dHB1dDogMjYKCQkJCQkJCXRob3VnaHRzOiA0OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBQb3RlbnRpYWwgTlVMTCBQb2ludGVyIERlcmVmZXJlbmNlKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggY2xhaW1zIHRvIGFkZHJlc3MgYSBwb3NzaWJsZSBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2Ugd2l0aGluIHRoZSBgZml4dXBfdXNlcl9mYXVsdGAgZnVuY3Rpb24sIHNwZWNpZmljYWxseSB3aGVuIHRoZSBgdW5sb2NrZWRgIHBvaW50ZXIgaXMgdW5leHBlY3RlZGx5IE5VTEwuIFRoYXQmIzM5O3MgYSBjbGFzc2ljIGJ1ZyBzY2VuYXJpbywgYW5kIHdlIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcm9vdCBjYXVzZS4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7V2hlcmUgYW5kIGhvdyBpcyBgZml4dXBfdXNlcl9mYXVsdGAgYmVpbmcgaW52b2tlZD8mIzM0OyBUaGUgY3JpdGljYWwgcXVlc3Rpb24gaXMsIHdobyBpcyBjYWxsaW5nIGl0LCBhbmQgdW5kZXIgd2hhdCBjb25kaXRpb25zIG1pZ2h0IGB1bmxvY2tlZGAgYmUgbGVmdCB1bmluaXRpYWxpemVkIG9yIGluYWR2ZXJ0ZW50bHkgc2V0IHRvIE5VTEw/IE15IGZvY3VzIG5vdyBzaGlmdHMgdG8gdHJhY2luZyB0aGUgY2FsbCBwYXRocyB0byB0aGF0IGZ1bmN0aW9uLCBzY3J1dGluaXppbmcgdGhlIHN1cnJvdW5kaW5nIGNvZGUgZm9yIGFueSBjbHVlcy4gSSBuZWVkIHRvIGlkZW50aWZ5IHRoZSBjb2RlIGJyYW5jaGVzIHRoYXQgY291bGQgbGVhZCB0byB0aGlzIE5VTEwgdmFsdWUgYW5kIGRldGVybWluZSBpZiB0aGUgbG9naWMgaXMgZmxhd2VkLCBvciBpZiBhbiB1bmV4cGVjdGVkIHN0YXRlIGlzIGJlaW5nIGVuY291bnRlcmVkLiBMZXQmIzM5O3Mgc2VlIHdobyYjMzk7cyBwbGF5aW5nIGZhc3QgYW5kIGxvb3NlIHdpdGggdGhhdCBwb2ludGVyLCBzaGFsbCB3ZT8KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwNzowNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtmaXh1cF91c2VyX2ZhdWx0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvYXJjL2tlcm5lbC9wcm9jZXNzLmM9NDY9U1lTQ0FMTF9ERUZJTkUzKGFyY191c3JfY21weGNoZywgaW50IF9fdXNlciAqLCB1YWRkciwgaW50LCBleHBlY3RlZCwgaW50LCBuZXcpXG4tLVxuYXJjaC9hcmMva2VybmVsL3Byb2Nlc3MuYy05My1cdG1tYXBfcmVhZF9sb2NrKGN1cnJlbnQtXHUwMDNlbW0pO1xuYXJjaC9hcmMva2VybmVsL3Byb2Nlc3MuYzo5NDpcdHJldCA9IGZpeHVwX3VzZXJfZmF1bHQoY3VycmVudC1cdTAwM2VtbSwgKHVuc2lnbmVkIGxvbmcpIHVhZGRyLFxuYXJjaC9hcmMva2VybmVsL3Byb2Nlc3MuYy05NS1cdFx0XHQgICAgICAgRkFVTFRfRkxBR19XUklURSwgTlVMTCk7XG4tLVxuYXJjaC9zMzkwL3BjaS9wY2lfbW1pby5jPTEyOD1TWVNDQUxMX0RFRklORTMoczM5MF9wY2lfbW1pb193cml0ZSwgdW5zaWduZWQgbG9uZywgbW1pb19hZGRyLFxuLS1cbmFyY2gvczM5MC9wY2kvcGNpX21taW8uYy0xODQtXHRpZiAocmV0KSB7XG5hcmNoL3MzOTAvcGNpL3BjaV9tbWlvLmM6MTg1Olx0XHRmaXh1cF91c2VyX2ZhdWx0KGN1cnJlbnQtXHUwMDNlbW0sIG1taW9fYWRkciwgRkFVTFRfRkxBR19XUklURSwgTlVMTCk7XG5hcmNoL3MzOTAvcGNpL3BjaV9tbWlvLmMtMTg2LVx0XHRyZXQgPSBmb2xsb3dfcGZubWFwX3N0YXJ0KFx1MDAyNmFyZ3MpO1xuLS1cbmFyY2gvczM5MC9wY2kvcGNpX21taW8uYz0yODM9U1lTQ0FMTF9ERUZJTkUzKHMzOTBfcGNpX21taW9fcmVhZCwgdW5zaWduZWQgbG9uZywgbW1pb19hZGRyLFxuLS1cbmFyY2gvczM5MC9wY2kvcGNpX21taW8uYy0zMzYtXHRpZiAocmV0KSB7XG5hcmNoL3MzOTAvcGNpL3BjaV9tbWlvLmM6MzM3Olx0XHRmaXh1cF91c2VyX2ZhdWx0KGN1cnJlbnQtXHUwMDNlbW0sIG1taW9fYWRkciwgMCwgTlVMTCk7XG5hcmNoL3MzOTAvcGNpL3BjaV9tbWlvLmMtMzM4LVx0XHRyZXQgPSBmb2xsb3dfcGZubWFwX3N0YXJ0KFx1MDAyNmFyZ3MpO1xuLS1cbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmM9NTQwPXN0YXRpYyBpbnQgZm9sbG93X2ZhdWx0X3BmbihzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgc3RydWN0IG1tX3N0cnVjdCAqbW0sXG4tLVxuZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYy01NTAtXG5kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jOjU1MTpcdFx0cmV0ID0gZml4dXBfdXNlcl9mYXVsdChtbSwgdmFkZHIsXG5kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jLTU1Mi1cdFx0XHRcdCAgICAgICBGQVVMVF9GTEFHX1JFTU9URSB8XG4tLVxuaW5jbHVkZS9saW51eC9tbS5oPTMxNzg9ZXh0ZXJuIHZtX2ZhdWx0X3QgaGFuZGxlX21tX2ZhdWx0KHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLFxuLS1cbmluY2x1ZGUvbGludXgvbW0uaC0zMTgwLVx0XHRcdFx0ICBzdHJ1Y3QgcHRfcmVncyAqcmVncyk7XG5pbmNsdWRlL2xpbnV4L21tLmg6MzE4MTpleHRlcm4gaW50IGZpeHVwX3VzZXJfZmF1bHQoc3RydWN0IG1tX3N0cnVjdCAqbW0sXG5pbmNsdWRlL2xpbnV4L21tLmgtMzE4Mi1cdFx0XHQgICAgdW5zaWduZWQgbG9uZyBhZGRyZXNzLCB1bnNpZ25lZCBpbnQgZmF1bHRfZmxhZ3MsXG4tLVxuaW5jbHVkZS9saW51eC9tbS5oPTMxODk9c3RhdGljIGlubGluZSB2bV9mYXVsdF90IGhhbmRsZV9tbV9mYXVsdChzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSxcbi0tXG5pbmNsdWRlL2xpbnV4L21tLmgtMzE5Ni19XG5pbmNsdWRlL2xpbnV4L21tLmg6MzE5NzpzdGF0aWMgaW5saW5lIGludCBmaXh1cF91c2VyX2ZhdWx0KHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCB1bnNpZ25lZCBsb25nIGFkZHJlc3MsXG5pbmNsdWRlL2xpbnV4L21tLmgtMzE5OC1cdFx0dW5zaWduZWQgaW50IGZhdWx0X2ZsYWdzLCBib29sICp1bmxvY2tlZClcbi0tXG5rZXJuZWwvZnV0ZXgvY29yZS5jPTczOD1pbnQgZmF1bHRfaW5fdXNlcl93cml0ZWFibGUodTMyIF9fdXNlciAqdWFkZHIpXG4tLVxua2VybmVsL2Z1dGV4L2NvcmUuYy03NDMtXHRtbWFwX3JlYWRfbG9jayhtbSk7XG5rZXJuZWwvZnV0ZXgvY29yZS5jOjc0NDpcdHJldCA9IGZpeHVwX3VzZXJfZmF1bHQobW0sICh1bnNpZ25lZCBsb25nKXVhZGRyLFxua2VybmVsL2Z1dGV4L2NvcmUuYy03NDUtXHRcdFx0ICAgICAgIEZBVUxUX0ZMQUdfV1JJVEUsIE5VTEwpO1xuLS1cbmtlcm5lbC90cmFjZS90cmFjZV9ldmVudHNfdXNlci5jPTQzNT1zdGF0aWMgaW50IHVzZXJfZXZlbnRfbW1fZmF1bHRfaW4oc3RydWN0IHVzZXJfZXZlbnRfbW0gKm1tLCB1bnNpZ25lZCBsb25nIHVhZGRyLFxuLS1cbmtlcm5lbC90cmFjZS90cmFjZV9ldmVudHNfdXNlci5jLTQ1NS1cbmtlcm5lbC90cmFjZS90cmFjZV9ldmVudHNfdXNlci5jOjQ1NjpcdHJldCA9IGZpeHVwX3VzZXJfZmF1bHQobW0tXHUwMDNlbW0sIHVhZGRyLCBGQVVMVF9GTEFHX1dSSVRFIHwgRkFVTFRfRkxBR19SRU1PVEUsXG5rZXJuZWwvdHJhY2UvdHJhY2VfZXZlbnRzX3VzZXIuYy00NTctXHRcdFx0ICAgICAgIFx1MDAyNnVubG9ja2VkKTtcbi0tXG5tbS9ndXAuYz0xNTEyPXN0YXRpYyBib29sIHZtYV9wZXJtaXRzX2ZhdWx0KHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLFxuLS1cbm1tL2d1cC5jLTE1MzUtLyoqXG5tbS9ndXAuYzoxNTM2OiAqIGZpeHVwX3VzZXJfZmF1bHQoKSAtIG1hbnVhbGx5IHJlc29sdmUgYSB1c2VyIHBhZ2UgZmF1bHRcbm1tL2d1cC5jLTE1MzctICogQG1tOlx0XHRtbV9zdHJ1Y3Qgb2YgdGFyZ2V0IG1tXG4tLVxubW0vZ3VwLmMtMTU2My0gKi9cbm1tL2d1cC5jOjE1NjQ6aW50IGZpeHVwX3VzZXJfZmF1bHQoc3RydWN0IG1tX3N0cnVjdCAqbW0sXG5tbS9ndXAuYy0xNTY1LVx0XHQgICAgIHVuc2lnbmVkIGxvbmcgYWRkcmVzcywgdW5zaWduZWQgaW50IGZhdWx0X2ZsYWdzLFxuLS1cbm1tL2d1cC5jLTE2MTktfVxubW0vZ3VwLmM6MTYyMDpFWFBPUlRfU1lNQk9MX0dQTChmaXh1cF91c2VyX2ZhdWx0KTtcbm1tL2d1cC5jLTE2MjEtXG4tLVxubW0vZ3VwLmM9MjExNz1zaXplX3QgZmF1bHRfaW5fc2FmZV93cml0ZWFibGUoY29uc3QgY2hhciBfX3VzZXIgKnVhZGRyLCBzaXplX3Qgc2l6ZSlcbi0tXG5tbS9ndXAuYy0yMTMwLVx0Zm9yIChjdXIgPSBzdGFydDsgY3VyIFx1MDAyNlx1MDAyNiBjdXIgXHUwMDNjIGVuZDsgY3VyID0gUEFHRV9BTElHTl9ET1dOKGN1ciAmIzQzOyBQQUdFX1NJWkUpKVxubW0vZ3VwLmM6MjEzMTpcdFx0aWYgKGZpeHVwX3VzZXJfZmF1bHQobW0sIGN1ciwgRkFVTFRfRkxBR19XUklURSwgXHUwMDI2dW5sb2NrZWQpKVxubW0vZ3VwLmMtMjEzMi1cdFx0XHRicmVhaztcbi0tXG52aXJ0L2t2bS9rdm1fbWFpbi5jPTI5Mzk9c3RhdGljIGludCBodmFfdG9fcGZuX3JlbWFwcGVkKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLFxuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmMtMjk2MC1cdFx0Ym9vbCB1bmxvY2tlZCA9IGZhbHNlO1xudmlydC9rdm0va3ZtX21haW4uYzoyOTYxOlx0XHRyID0gZml4dXBfdXNlcl9mYXVsdChjdXJyZW50LVx1MDAzZW1tLCBrZnAtXHUwMDNlaHZhLFxudmlydC9rdm0va3ZtX21haW4uYy0yOTYyLVx0XHRcdFx0ICAgICAod3JpdGVfZmF1bHQgPyBGQVVMVF9GTEFHX1dSSVRFIDogMCksXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMDc6MDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDczMAoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDIxNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBLZXJuZWwgVnVsbmVyYWJpbGl0eSoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgYSBoYW5kbGUgb24gYSBwb3RlbnRpYWwga2VybmVsIGJ1Zy4gSXQgbG9va3MgbGlrZSBjYWxsZXJzIGFyZSBwYXNzaW5nIGBOVUxMYCBmb3IgdGhlIGB1bmxvY2tlZGAgYXJndW1lbnQgaW4gYSBmZXcgcGxhY2VzOiBgYXJjX3Vzcl9jbXB4Y2hnYCBpbiBgYXJjaC9hcmMva2VybmVsL3Byb2Nlc3MuY2AsIHRoZSBgczM5MF9wY2lfbW1pb193cml0ZWAgYW5kIGBzMzkwX3BjaV9tbWlvX3JlYWRgIGZ1bmN0aW9ucyBpbiBgYXJjaC9zMzkwL3BjaS9wY2lfbW1pby5jYCwgYW5kIGZpbmFsbHksIGBmYXVsdF9pbl91c2VyX3dyaXRlYWJsZWAgaW4gYGtlcm5lbC9mdXRleC9jb3JlLmNgLgoKVGhlIGhlYXJ0IG9mIHRoZSBwcm9ibGVtIHNlZW1zIHRvIGJlIHRoYXQgYGZpeHVwX3VzZXJfZmF1bHRgIGlzbiYjMzk7dCBoYW5kbGluZyB0aGlzIGBOVUxMYCB2YWx1ZSBjb3JyZWN0bHkuIFNwZWNpZmljYWxseSwgaXQmIzM5O3MgZGVyZWZlcmVuY2luZyBgdW5sb2NrZWRgIHdoZW4gaXQmIzM5O3MgYE5VTExgLCBsZWFkaW5nIHRvIGEgY3Jhc2guIFdlIGtub3cgdGhpcyBpcyBoYXBwZW5pbmcgaW4gYGZhdWx0X2luX3VzZXJfd3JpdGVhYmxlYCBhbmQgcG90ZW50aWFsbHkgaW4gdGhvc2Ugb3RoZXIgZnVuY3Rpb25zIEkgbGlzdGVkLgoKVGhpcyBpcyBkZWZpbml0ZWx5IHNvbWV0aGluZyB3b3J0aCBmdXp6aW5nLiBBIGtlcm5lbCBjcmFzaCwgc3BlY2lmaWNhbGx5IGEgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlLCBpcyBhIHByZXR0eSBzZXJpb3VzIHZ1bG5lcmFiaWxpdHksIGFuZCB0aGUgZmFjdCB0aGF0IGl0IGludm9sdmVzIGZ1dGV4IOKAkyBhIHJlbGF0aXZlbHkgY29tbW9uIGtlcm5lbCBwcmltaXRpdmUg4oCTIG1lYW5zIGl0JiMzOTtzIGxpa2VseSBhIHJlYWNoYWJsZSBwYXRoLiBUaGlzIGlzIGEgZ29vZCBmaW5kLiBMZXQmIzM5O3MgZGlnIGRlZXBlciBpbnRvIGBmYXVsdF9pbl91c2VyX3dyaXRlYWJsZWAgaW4gYGtlcm5lbC9mdXRleC9jb3JlLmNgIGFuZCB1bmRlcnN0YW5kIHRoZSBleGFjdCBjb25kaXRpb25zIHRoYXQgdHJpZ2dlciB0aGlzIGBOVUxMYCBkZXJlZmVyZW5jZSBhbmQgaG93IHRvIHRyaWdnZXIgaXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMDc6MDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZmF1bHRfaW5fdXNlcl93cml0ZWFibGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvZnV0ZXgmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2Z1dGV4L2NvcmUuYz01MDI9aW50IGdldF9mdXRleF9rZXkodTMyIF9fdXNlciAqdWFkZHIsIHVuc2lnbmVkIGludCBmbGFncywgdW5pb24gZnV0ZXhfa2V5ICprZXksXG4tLVxua2VybmVsL2Z1dGV4L2NvcmUuYy03MjYtLyoqXG5rZXJuZWwvZnV0ZXgvY29yZS5jOjcyNzogKiBmYXVsdF9pbl91c2VyX3dyaXRlYWJsZSgpIC0gRmF1bHQgaW4gdXNlciBhZGRyZXNzIGFuZCB2ZXJpZnkgUlcgYWNjZXNzXG5rZXJuZWwvZnV0ZXgvY29yZS5jLTcyOC0gKiBAdWFkZHI6XHRwb2ludGVyIHRvIGZhdWx0aW5nIHVzZXIgc3BhY2UgYWRkcmVzc1xuLS1cbmtlcm5lbC9mdXRleC9jb3JlLmMtNzM3LSAqL1xua2VybmVsL2Z1dGV4L2NvcmUuYzo3Mzg6aW50IGZhdWx0X2luX3VzZXJfd3JpdGVhYmxlKHUzMiBfX3VzZXIgKnVhZGRyKVxua2VybmVsL2Z1dGV4L2NvcmUuYy03Mzkte1xuLS1cbmtlcm5lbC9mdXRleC9jb3JlLmM9OTY4PXN0YXRpYyBpbnQgaGFuZGxlX2Z1dGV4X2RlYXRoKHUzMiBfX3VzZXIgKnVhZGRyLCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKmN1cnIsXG4tLVxua2VybmVsL2Z1dGV4L2NvcmUuYy0xMDU0LVx0XHRjYXNlIC1FRkFVTFQ6XG5rZXJuZWwvZnV0ZXgvY29yZS5jOjEwNTU6XHRcdFx0aWYgKGZhdWx0X2luX3VzZXJfd3JpdGVhYmxlKHVhZGRyKSlcbmtlcm5lbC9mdXRleC9jb3JlLmMtMTA1Ni1cdFx0XHRcdHJldHVybiAtMTtcbi0tXG5rZXJuZWwvZnV0ZXgvZnV0ZXguaD0yODU9ZXh0ZXJuIHZvaWQgZnV0ZXhfd2FrZV9tYXJrKHN0cnVjdCB3YWtlX3FfaGVhZCAqd2FrZV9xLCBzdHJ1Y3QgZnV0ZXhfcSAqcSk7XG5rZXJuZWwvZnV0ZXgvZnV0ZXguaC0yODYtXG5rZXJuZWwvZnV0ZXgvZnV0ZXguaDoyODc6ZXh0ZXJuIGludCBmYXVsdF9pbl91c2VyX3dyaXRlYWJsZSh1MzIgX191c2VyICp1YWRkcik7XG5rZXJuZWwvZnV0ZXgvZnV0ZXguaC0yODgtZXh0ZXJuIHN0cnVjdCBmdXRleF9xICpmdXRleF90b3Bfd2FpdGVyKHN0cnVjdCBmdXRleF9oYXNoX2J1Y2tldCAqaGIsIHVuaW9uIGZ1dGV4X2tleSAqa2V5KTtcbi0tXG5rZXJuZWwvZnV0ZXgvcGkuYz02NzQ9c3RhdGljIGludCBfX2ZpeHVwX3BpX3N0YXRlX293bmVyKHUzMiBfX3VzZXIgKnVhZGRyLCBzdHJ1Y3QgZnV0ZXhfcSAqcSxcbi0tXG5rZXJuZWwvZnV0ZXgvcGkuYy04MDAtXHRjYXNlIC1FRkFVTFQ6XG5rZXJuZWwvZnV0ZXgvcGkuYzo4MDE6XHRcdGVyciA9IGZhdWx0X2luX3VzZXJfd3JpdGVhYmxlKHVhZGRyKTtcbmtlcm5lbC9mdXRleC9waS5jLTgwMi1cdFx0YnJlYWs7XG4tLVxua2VybmVsL2Z1dGV4L3BpLmMtODI3LVx0Lypcbmtlcm5lbC9mdXRleC9waS5jOjgyODpcdCAqIGZhdWx0X2luX3VzZXJfd3JpdGVhYmxlKCkgZmFpbGVkIHNvIHVzZXIgc3RhdGUgaXMgaW1tdXRhYmxlLiBBdFxua2VybmVsL2Z1dGV4L3BpLmMtODI5LVx0ICogYmVzdCB3ZSBjYW4gbWFrZSB0aGUga2VybmVsIHN0YXRlIGNvbnNpc3RlbnQgYnV0IHVzZXIgc3RhdGUgd2lsbFxuLS1cbmtlcm5lbC9mdXRleC9waS5jPTkyMz1pbnQgZnV0ZXhfbG9ja19waSh1MzIgX191c2VyICp1YWRkciwgdW5zaWduZWQgaW50IGZsYWdzLCBrdGltZV90ICp0aW1lLCBpbnQgdHJ5bG9jaylcbi0tXG5rZXJuZWwvZnV0ZXgvcGkuYy0xMTE3LVxua2VybmVsL2Z1dGV4L3BpLmM6MTExODpcdFx0cmV0ID0gZmF1bHRfaW5fdXNlcl93cml0ZWFibGUodWFkZHIpO1xua2VybmVsL2Z1dGV4L3BpLmMtMTExOS1cdFx0aWYgKHJldClcbi0tXG5rZXJuZWwvZnV0ZXgvcGkuYz0xMTQxPXN0YXRpYyBpbnQgX19mdXRleF91bmxvY2tfcGkodTMyIF9fdXNlciAqdWFkZHIsIHVuc2lnbmVkIGludCBmbGFncylcbi0tXG5rZXJuZWwvZnV0ZXgvcGkuYy0xMjk3LVxua2VybmVsL2Z1dGV4L3BpLmM6MTI5ODpcdHJldCA9IGZhdWx0X2luX3VzZXJfd3JpdGVhYmxlKHVhZGRyKTtcbmtlcm5lbC9mdXRleC9waS5jLTEyOTktXHRpZiAoIXJldClcbi0tXG5rZXJuZWwvZnV0ZXgvcmVxdWV1ZS5jPTM4Mj1pbnQgZnV0ZXhfcmVxdWV1ZSh1MzIgX191c2VyICp1YWRkcjEsIHVuc2lnbmVkIGludCBmbGFnczEsXG4tLVxua2VybmVsL2Z1dGV4L3JlcXVldWUuYy01NjMtXHRcdFx0XHRkb3VibGVfdW5sb2NrX2hiKGhiMSwgaGIyKTtcbmtlcm5lbC9mdXRleC9yZXF1ZXVlLmM6NTY0Olx0XHRcdFx0cmV0ID0gZmF1bHRfaW5fdXNlcl93cml0ZWFibGUodWFkZHIyKTtcbmtlcm5lbC9mdXRleC9yZXF1ZXVlLmMtNTY1LVx0XHRcdFx0aWYgKCFyZXQpXG4tLVxua2VybmVsL2Z1dGV4L3dhaXR3YWtlLmM9Mjc4PWludCBmdXRleF93YWtlX29wKHUzMiBfX3VzZXIgKnVhZGRyMSwgdW5zaWduZWQgaW50IGZsYWdzLCB1MzIgX191c2VyICp1YWRkcjIsXG4tLVxua2VybmVsL2Z1dGV4L3dhaXR3YWtlLmMtMzE2LVx0XHRcdGlmIChvcF9yZXQgPT0gLUVGQVVMVCkge1xua2VybmVsL2Z1dGV4L3dhaXR3YWtlLmM6MzE3Olx0XHRcdFx0cmV0ID0gZmF1bHRfaW5fdXNlcl93cml0ZWFibGUodWFkZHIyKTtcbmtlcm5lbC9mdXRleC93YWl0d2FrZS5jLTMxOC1cdFx0XHRcdGlmIChyZXQpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMDc6MDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjQxNgoJCQkJCQkJb3V0cHV0OiAyNwoJCQkJCQkJdGhvdWdodHM6IDExNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipCdWcgRml4ICZhbXA7IEZ1enppbmcgU3RyYXRlZ3k6IEZ1dGV4IE5VTEwgUG9pbnRlciBEZXJlZmVyZW5jZSoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgYSBoYW5kbGUgb24gdGhpcy4gVGhlcmUmIzM5O3MgYSBuYXN0eSBsaXR0bGUgYnVnIGx1cmtpbmcgaW4gYGtlcm5lbC9mdXRleC9jb3JlLmNgLCBzcGVjaWZpY2FsbHkgd2l0aGluIGBmaXh1cF91c2VyX2ZhdWx0YC4gSXQmIzM5O3MgYSBjcml0aWNhbCBpc3N1ZSBiZWNhdXNlIGBmYXVsdF9pbl91c2VyX3dyaXRlYWJsZWAgY2FsbHMgaXQuIFRoZSByb290IG9mIHRoZSBwcm9ibGVtPyBBIGNsYXNzaWMgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIHdoZW4gYHVubG9ja2VkYCBpcywgd2VsbCwgKm51bGwqLiAgVGhhdCYjMzk7cyBhIHRleHRib29rIGZ1enppbmcgY2FuZGlkYXRlIHJpZ2h0IHRoZXJlLgoKTXkgaW1tZWRpYXRlIGZvY3VzLCBuYXR1cmFsbHksIHdpbGwgYmUgb24gdGhvc2UgdHdvIHN5bWJvbHM6IGBmaXh1cF91c2VyX2ZhdWx0YCBhbmQgYGZhdWx0X2luX3VzZXJfd3JpdGVhYmxlYC4gSSYjMzk7bGwgbmVlZCB0byByZWFsbHkgZGlnIGludG8gaG93IHRoZSBgdW5sb2NrZWRgIHBvaW50ZXIgaXMgdXNlZCB3aXRoaW4gdGhvc2UgZnVuY3Rpb25zLgoKQW5kIHNpbmNlIHdlIGFyZSB0YWxraW5nIGFib3V0IGZ1enppbmcsIGxldCYjMzk7cyBzZWUgaWYgd2UgaGF2ZSBzb21lIGdvb2QgZGVmYXVsdCBjb25maWdzIHRvIGhlbHAgdXMgb3V0LiBGb3J0dW5hdGVseSwgdGhlIEZVVEVYIHN1YnN5c3RlbSBsb29rcyBsaWtlIGEgZ29vZCBwbGFjZSB0byBiZS4gSSBzZWVtIHRvIHJlY2FsbCB0aGF0IEZVVEVYIGlzIGVuYWJsZWQgYnkgZGVmYXVsdC4gSSYjMzk7bGwgZG91YmxlLWNoZWNrIGBDT05GSUdfRlVURVhgIGluIGBpbml0L0tjb25maWdgIHRvIGNvbmZpcm0sIGJ1dCBJJiMzOTttIHByZXR0eSBzdXJlIGl0JiMzOTtzIHVzdWFsbHkgb24uIFRoaXMgd2lsbCBnaXZlIG1lIGEgZ29vZCBiYXNlbGluZSBmb3IgbXkgZnV6emluZyBlZmZvcnRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwNzowNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgRlVURVgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtpbml0L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5pdC9LY29uZmlnPTE4Mjc9Y29uZmlnIEJBU0VfU01BTExcbi0tXG5pbml0L0tjb25maWctMTgzMy1cbmluaXQvS2NvbmZpZzoxODM0OmNvbmZpZyBGVVRFWFxuaW5pdC9LY29uZmlnLTE4MzUtXHRib29sIFwmIzM0O0VuYWJsZSBmdXRleCBzdXBwb3J0XCYjMzQ7IGlmIEVYUEVSVFxuLS1cbmluaXQvS2NvbmZpZy0xODQzLVxuaW5pdC9LY29uZmlnOjE4NDQ6Y29uZmlnIEZVVEVYX1BJXG5pbml0L0tjb25maWctMTg0NS1cdGJvb2xcbi0tXG5pbml0L0tjb25maWctMTg0OC1cbmluaXQvS2NvbmZpZzoxODQ5OmNvbmZpZyBGVVRFWF9QUklWQVRFX0hBU0hcbmluaXQvS2NvbmZpZy0xODUwLVx0Ym9vbFxuLS1cbmluaXQvS2NvbmZpZy0xODUzLVxuaW5pdC9LY29uZmlnOjE4NTQ6Y29uZmlnIEZVVEVYX01QT0xcbmluaXQvS2NvbmZpZy0xODU1LVx0Ym9vbFxuLS1cbmluaXQvS2NvbmZpZz0xODU5PWNvbmZpZyBIQVZFX0ZVVEVYX1JPQlVTVF9VTkxPQ0tcbi0tXG5pbml0L0tjb25maWctMTg2MS1cbmluaXQvS2NvbmZpZzoxODYyOmNvbmZpZyBGVVRFWF9ST0JVU1RfVU5MT0NLXG5pbml0L0tjb25maWctMTg2My1cdGRlZl9ib29sIEZVVEVYIFx1MDAyNlx1MDAyNiBIQVZFX0dFTkVSSUNfVkRTTyBcdTAwMjZcdTAwMjYgR0VORVJJQ19JUlFfRU5UUlkgXHUwMDI2XHUwMDI2IFJTRVEgXHUwMDI2XHUwMDI2IEhBVkVfRlVURVhfUk9CVVNUX1VOTE9DS1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwNzowNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MTM2CgkJCQkJCQlvdXRwdXQ6IDEwNgoJCQkJCQkJdGhvdWdodHM6IDEyOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBGVVRFWCBQYXRjaCoqCgpPa2F5LCBzbyBGVVRFWCBpcyBlbmFibGVkIGJ5IGRlZmF1bHQsIHdoaWNoIGltbWVkaWF0ZWx5IHBpcXVlcyBteSBpbnRlcmVzdC4gVGhlIHBhdGNoIEkmIzM5O20gbG9va2luZyBhdCBzcGVjaWZpY2FsbHkgdG91Y2hlcyBgZml4dXBfdXNlcl9mYXVsdGAgd2l0aGluIGBtbS9ndXAuY2AuIEdvb2QsIHRoYXQgbmFycm93cyBteSBmb2N1cy4gSSYjMzk7bSB6ZXJvaW5nIGluIG9uIGBmaXh1cF91c2VyX2ZhdWx0YCBhbmQgc2V0dGluZyBXb3J0aEZ1enppbmcgdG8gdHJ1ZTsgdGhlIGNvbm5lY3Rpb24gaXMgY2xlYXIg4oCTIGEgcG9zc2libGUgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIGluIGBmaXh1cF91c2VyX2ZhdWx0YCB3aGVuIGB1bmxvY2tlZGAgaXMgTlVMTC4KCk15IHRoaW5raW5nIGlzLCBnaXZlbiB0aGlzIGZ1bmN0aW9uJiMzOTtzIHBvdGVudGlhbCByZWFjaGFiaWxpdHkgZnJvbSB1c2VyIHNwYWNlIHZpYSBmdXRleCBvcGVyYXRpb25zIGxpa2UgYGZhdWx0X2luX3VzZXJfd3JpdGVhYmxlYCwgdGhpcyBpcyBhIGhpZ2gtdmFsdWUgdGFyZ2V0IGZvciBmdXp6aW5nLiBUaGUgZnV0ZXggcGF0aCB0aHJvdWdoIHdoaWNoIHRoaXMgZnVuY3Rpb24gaXMgcmVhY2hlZCBtYWtlcyB0aGlzIGEgY3JpdGljYWwgcGF0aCBJIG5lZWQgdG8gc2NydXRpbml6ZS4gVGhhdCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UgaXMgYSBjbGFzc2ljIHZ1bG5lcmFiaWxpdHksIGFuZCB1c2VyLXNwYWNlIGFjY2VzcyByYWlzZXMgdGhlIHN0YWtlcyBjb25zaWRlcmFibHkuIEkgbmVlZCB0byBkaWcgZGVlcGVyIGludG8gdGhlIGZ1dGV4IGludGVyYWN0aW9uIGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDA3OjA1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtGVVRFWCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2ZpeHVwX3VzZXJfZmF1bHQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIGluIGBmaXh1cF91c2VyX2ZhdWx0YCB3aGVuIHRoZSBgdW5sb2NrZWRgIHBhcmFtZXRlciBpcyBOVUxMLiBUaGlzIGZ1bmN0aW9uIGlzIHJlYWNoYWJsZSBmcm9tIHVzZXIgc3BhY2UgdmlhIGZ1dGV4IG9wZXJhdGlvbnMgKGUuZy4sIGBmYXVsdF9pbl91c2VyX3dyaXRlYWJsZWApLCBtYWtpbmcgaXQgYSBjcml0aWNhbCBwYXRoIHRvIGZ1enouJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0ZVVEVYJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Zml4dXBfdXNlcl9mYXVsdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UgaW4gYGZpeHVwX3VzZXJfZmF1bHRgIHdoZW4gdGhlIGB1bmxvY2tlZGAgcGFyYW1ldGVyIGlzIE5VTEwuIFRoaXMgZnVuY3Rpb24gaXMgcmVhY2hhYmxlIGZyb20gdXNlciBzcGFjZSB2aWEgZnV0ZXggb3BlcmF0aW9ucyAoZS5nLiwgYGZhdWx0X2luX3VzZXJfd3JpdGVhYmxlYCksIG1ha2luZyBpdCBhIGNyaXRpY2FsIHBhdGggdG8gZnV6ei4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMDc6MDU8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwNzowNTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSBpbiBgZml4dXBfdXNlcl9mYXVsdGAgYnkgYWRkaW5nIGEgY2hlY2sgZm9yIHRoZSBgdW5sb2NrZWRgIHBvaW50ZXIgYmVmb3JlIGFzc2lnbmluZyB0byBgKnVubG9ja2VkYC4gTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcyBhcmUgcmVsaWFibHkgY2F1Z2h0IGJ5IHN0YW5kYXJkIGtlcm5lbCBwYWdlIGZhdWx0IGhhbmRsaW5nIGFuZCBLQVNBTi4gVGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcywgc3RydWN0dXJlIHBhZGRpbmcgbGVha3MsIG9yIHVuaW5pdGlhbGl6ZWQgdmFsdWVzIGJlaW5nIHVzZWQgaW4gY29udHJvbCBmbG93LiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeQplcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZApkZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpCmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLgoKQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46Ci0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZQogIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTgogIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVAKICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLgotIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLAogIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy4KClJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sCkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuCkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFkKc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3MKdGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi4KCkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0CnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLAphIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXMKdGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmcKdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sCmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSwKY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuCgpTZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6CjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiCiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzCiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuCjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMKICAgb3Igc3RydWN0IGZpZWxkcy4KMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcwogICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLgo0LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2VzcwogICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuCgpTZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjoKLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlcgogIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodAogIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS4KLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZAogIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC4KLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuCgpVc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlCmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAxM2EyODIwOTI5ODAzY2YxMTY0OTU4ZDY0YjVlNmMzN2ZiZjY2OGIzCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBBdWcgMjYgMDc6MDQ6NDIgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9tbS9ndXAuYyBiL21tL2d1cC5jCmluZGV4IDA2OTIxMTliNzkwNDMuLmQxMjQ3NWE3ZjdjY2IgMTAwNjQ0Ci0tLSBhL21tL2d1cC5jCiYjNDM7JiM0MzsmIzQzOyBiL21tL2d1cC5jCkBAIC0xNTk0LDcgJiM0MzsxNTk0LDggQEAgaW50IGZpeHVwX3VzZXJfZmF1bHQoc3RydWN0IG1tX3N0cnVjdCAqbW0sCiAJCSAqIGNvdWxkIHRlbGwgdGhlIGNhbGxlcnMgc28gdGhleSBkbyBub3QgbmVlZCB0byB1bmxvY2suCiAJCSAqLwogCQltbWFwX3JlYWRfbG9jayhtbSk7Ci0JCSp1bmxvY2tlZCA9IHRydWU7CiYjNDM7CQlpZiAodW5sb2NrZWQpCiYjNDM7CQkJKnVubG9ja2VkID0gdHJ1ZTsKIAkJcmV0dXJuIDA7CiAJfQogCkBAIC0xNjA4LDcgJiM0MzsxNjA5LDggQEAgaW50IGZpeHVwX3VzZXJfZmF1bHQoc3RydWN0IG1tX3N0cnVjdCAqbW0sCiAKIAlpZiAocmV0ICZhbXA7IFZNX0ZBVUxUX1JFVFJZKSB7CiAJCW1tYXBfcmVhZF9sb2NrKG1tKTsKLQkJKnVubG9ja2VkID0gdHJ1ZTsKJiM0MzsJCWlmICh1bmxvY2tlZCkKJiM0MzsJCQkqdW5sb2NrZWQgPSB0cnVlOwogCQlmYXVsdF9mbGFncyB8PSBGQVVMVF9GTEFHX1RSSUVEOwogCQlnb3RvIHJldHJ5OwogCX0KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDA3OjA1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwNzAKCQkJCQkJCW91dHB1dDogMTE3CgkJCQkJCQl0aG91Z2h0czogMjgzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIEdVUCBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCBmb3IgYG1tL2d1cC5jYC4gSXQmIzM5O3MgYSBzdHJhaWdodGZvcndhcmQgZml4OiB0aGV5JiMzOTt2ZSBhZGRlZCBhIE5VTEwgY2hlY2sgZm9yIHRoZSBgdW5sb2NrZWRgIHBvaW50ZXIgYmVmb3JlIGRlcmVmZXJlbmNpbmcgaXQuIFNtYXJ0IG1vdmUsIGNhdGNoaW5nIGEgcG90ZW50aWFsIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZS4gVGhlIGNvZGUgbm93IGxvb2tzIGxpa2UgdGhpczoKCmBgYGMKLQkJKnVubG9ja2VkID0gdHJ1ZTsKJiM0MzsJCWlmICh1bmxvY2tlZCkKJiM0MzsJCQkqdW5sb2NrZWQgPSB0cnVlOwpgYGAKCk15IGluaXRpYWwgdGhvdWdodCBpcywgZ29vZCwgc2ltcGxlLCBhbmQgcHJvYmFibHkgc2FmZS4gSSBtZWFuLCBOVUxMIGRlcmVmZXJlbmNlcyBhcmUgdHlwaWNhbGx5IGhhbmRsZWQgcHJldHR5IHdlbGwgYnkgdGhlIGtlcm5lbCBhbHJlYWR5LiBXZSYjMzk7dmUgZ290IG91ciBzdGFuZGFyZCBwYWdlIGZhdWx0IGhhbmRsaW5nLCBvb3BzLCBhbmQgb2YgY291cnNlLCBLQVNBTiBpcyB0aGVyZSB0byBjYXRjaCB0aGVzZSBraW5kcyBvZiB0aGluZ3MuIEl0JiMzOTtzIG5vdCBsaWtlIHRoaXMgcGF0Y2ggaXMgaW50cm9kdWNpbmcgYSBuZXcgYXR0YWNrIHN1cmZhY2UuIEkgY2FuJiMzOTt0IHNlZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2UgaXNzdWVzLCBhbmQgY2VydGFpbmx5IG5vIHJpc2sgb2YgaW5mb3JtYXRpb24gbGVha3MuCgpMZXQgbWUganVzdCBkb3VibGUtY2hlY2sgdGhhdCBsYXN0IHBhcnTigKYgU28sIGB1bmxvY2tlZGAgaXMgYSBwb2ludGVyIHRvIGEgYm9vbGVhbi4gSWYgaXQmIzM5O3MgTlVMTCwgaXQgd2FzIGNyYXNoaW5nIGJlZm9yZS4gTm93LCB3aXRoIHRoZSBjaGVjaywgaXQgZG9lc24mIzM5O3QuIE5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzIHJlYWQgb3IgbGVha2VkLiBUaGUgY29kZSBqdXN0IGF2b2lkcyBhc3NpZ25pbmcgYSB2YWx1ZSB0byBhIHBvaW50ZXIuCgpBbHJpZ2h0LCBhZnRlciBhIHF1aWNrIG1lbnRhbCBjaGVjaywgSSYjMzk7bSBjb25maWRlbnQgdGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcywgc3RydWN0dXJlIHBhZGRpbmcgbGVha3MsIG9yIHVuaW5pdGlhbGl6ZWQgdmFsdWVzIGJlaW5nIHVzZWQgaW4gY29udHJvbCBmbG93LiBJdCYjMzk7cyBhIHN0cmFpZ2h0LXVwIE5VTEwgY2hlY2suIFRoZXJlZm9yZSwgSSYjMzk7bSBnb2luZyB0byBzZXQgYE5lZWRzS01TQU49ZmFsc2VgLiBXZSBkb24mIzM5O3QgbmVlZCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gZm9yIHRoaXM7IHRoZSBleGlzdGluZyBrZXJuZWwgaW5mcmFzdHJ1Y3R1cmUgaXMgc3VmZmljaWVudCB0byBjYXRjaCBhbnkgaXNzdWVzIHJlbGF0ZWQgdG8gdGhpcyBwYXRjaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMDc6MDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UgaW4gYGZpeHVwX3VzZXJfZmF1bHRgIGJ5IGFkZGluZyBhIGNoZWNrIGZvciB0aGUgYHVubG9ja2VkYCBwb2ludGVyIGJlZm9yZSBhc3NpZ25pbmcgdG8gYCp1bmxvY2tlZGAuIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZXMgYXJlIHJlbGlhYmx5IGNhdWdodCBieSBzdGFuZGFyZCBrZXJuZWwgcGFnZSBmYXVsdCBoYW5kbGluZyBhbmQgS0FTQU4uIFRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMsIHN0cnVjdHVyZSBwYWRkaW5nIGxlYWtzLCBvciB1bmluaXRpYWxpemVkIHZhbHVlcyBiZWluZyB1c2VkIGluIGNvbnRyb2wgZmxvdy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIGluIGBmaXh1cF91c2VyX2ZhdWx0YCBieSBhZGRpbmcgYSBjaGVjayBmb3IgdGhlIGB1bmxvY2tlZGAgcG9pbnRlciBiZWZvcmUgYXNzaWduaW5nIHRvIGAqdW5sb2NrZWRgLiBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzIGFyZSByZWxpYWJseSBjYXVnaHQgYnkgc3RhbmRhcmQga2VybmVsIHBhZ2UgZmF1bHQgaGFuZGxpbmcgYW5kIEtBU0FOLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLCBzdHJ1Y3R1cmUgcGFkZGluZyBsZWFrcywgb3IgdW5pbml0aWFsaXplZCB2YWx1ZXMgYmVpbmcgdXNlZCBpbiBjb250cm9sIGZsb3cuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnkuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDA3OjA0OjQzLjU1OTA3MDIwM1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMzMjI2MzMzNDU2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkZVVEVYXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZml4dXBfdXNlcl9mYXVsdFwiXG4gIF0sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UgaW4gYGZpeHVwX3VzZXJfZmF1bHRgIGJ5IGFkZGluZyBhIGNoZWNrIGZvciB0aGUgYHVubG9ja2VkYCBwb2ludGVyIGJlZm9yZSBhc3NpZ25pbmcgdG8gYCp1bmxvY2tlZGAuIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZXMgYXJlIHJlbGlhYmx5IGNhdWdodCBieSBzdGFuZGFyZCBrZXJuZWwgcGFnZSBmYXVsdCBoYW5kbGluZyBhbmQgS0FTQU4uIFRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMsIHN0cnVjdHVyZSBwYWRkaW5nIGxlYWtzLCBvciB1bmluaXRpYWxpemVkIHZhbHVlcyBiZWluZyB1c2VkIGluIGNvbnRyb2wgZmxvdy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UgaW4gYGZpeHVwX3VzZXJfZmF1bHRgIHdoZW4gdGhlIGB1bmxvY2tlZGAgcGFyYW1ldGVyIGlzIE5VTEwuIFRoaXMgZnVuY3Rpb24gaXMgcmVhY2hhYmxlIGZyb20gdXNlciBzcGFjZSB2aWEgZnV0ZXggb3BlcmF0aW9ucyAoZS5nLiwgYGZhdWx0X2luX3VzZXJfd3JpdGVhYmxlYCksIG1ha2luZyBpdCBhIGNyaXRpY2FsIHBhdGggdG8gZnV6ei5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMDc6MDQ6NDMuNTU5MDc2MTQzWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MTMwMDQ2MjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAxM2EyODIwOTI5ODAzY2YxMTY0OTU4ZDY0YjVlNmMzN2ZiZjY2OGIzXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBXZWQgQXVnIDI2IDA3OjA0OjQyIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL21tL2d1cC5jIGIvbW0vZ3VwLmNcXG5pbmRleCAwNjkyMTE5Yjc5MDQzLi5kMTI0NzVhN2Y3Y2NiIDEwMDY0NFxcbi0tLSBhL21tL2d1cC5jXFxuKysrIGIvbW0vZ3VwLmNcXG5AQCAtMTU5NCw3ICsxNTk0LDggQEAgaW50IGZpeHVwX3VzZXJfZmF1bHQoc3RydWN0IG1tX3N0cnVjdCAqbW0sXFxuIFxcdFxcdCAqIGNvdWxkIHRlbGwgdGhlIGNhbGxlcnMgc28gdGhleSBkbyBub3QgbmVlZCB0byB1bmxvY2suXFxuIFxcdFxcdCAqL1xcbiBcXHRcXHRtbWFwX3JlYWRfbG9jayhtbSk7XFxuLVxcdFxcdCp1bmxvY2tlZCA9IHRydWU7XFxuK1xcdFxcdGlmICh1bmxvY2tlZClcXG4rXFx0XFx0XFx0KnVubG9ja2VkID0gdHJ1ZTtcXG4gXFx0XFx0cmV0dXJuIDA7XFxuIFxcdH1cXG4gXFxuQEAgLTE2MDgsNyArMTYwOSw4IEBAIGludCBmaXh1cF91c2VyX2ZhdWx0KHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLFxcbiBcXG4gXFx0aWYgKHJldCBcXHUwMDI2IFZNX0ZBVUxUX1JFVFJZKSB7XFxuIFxcdFxcdG1tYXBfcmVhZF9sb2NrKG1tKTtcXG4tXFx0XFx0KnVubG9ja2VkID0gdHJ1ZTtcXG4rXFx0XFx0aWYgKHVubG9ja2VkKVxcbitcXHRcXHRcXHQqdW5sb2NrZWQgPSB0cnVlO1xcbiBcXHRcXHRmYXVsdF9mbGFncyB8PSBGQVVMVF9GTEFHX1RSSUVEO1xcbiBcXHRcXHRnb3RvIHJldHJ5O1xcbiBcXHR9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDA3OjA0OjQzLjk3MzE0NTE1NVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjI1ODE1NTUwNDA0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkZVVEVYXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZml4dXBfdXNlcl9mYXVsdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSBpbiBgZml4dXBfdXNlcl9mYXVsdGAgd2hlbiB0aGUgYHVubG9ja2VkYCBwYXJhbWV0ZXIgaXMgTlVMTC4gVGhpcyBmdW5jdGlvbiBpcyByZWFjaGFibGUgZnJvbSB1c2VyIHNwYWNlIHZpYSBmdXRleCBvcGVyYXRpb25zIChlLmcuLCBgZmF1bHRfaW5fdXNlcl93cml0ZWFibGVgKSwgbWFraW5nIGl0IGEgY3JpdGljYWwgcGF0aCB0byBmdXp6LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAxM2EyODIwOTI5ODAzY2YxMTY0OTU4ZDY0YjVlNmMzN2ZiZjY2OGIzXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBBdWcgMjYgMDc6MDQ6NDIgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9tbS9ndXAuYyBiL21tL2d1cC5jXG5pbmRleCAwNjkyMTE5Yjc5MDQzLi5kMTI0NzVhN2Y3Y2NiIDEwMDY0NFxuLS0tIGEvbW0vZ3VwLmNcbisrKyBiL21tL2d1cC5jXG5AQCAtMTU5NCw3ICsxNTk0LDggQEAgaW50IGZpeHVwX3VzZXJfZmF1bHQoc3RydWN0IG1tX3N0cnVjdCAqbW0sXG4gXHRcdCAqIGNvdWxkIHRlbGwgdGhlIGNhbGxlcnMgc28gdGhleSBkbyBub3QgbmVlZCB0byB1bmxvY2suXG4gXHRcdCAqL1xuIFx0XHRtbWFwX3JlYWRfbG9jayhtbSk7XG4tXHRcdCp1bmxvY2tlZCA9IHRydWU7XG4rXHRcdGlmICh1bmxvY2tlZClcbitcdFx0XHQqdW5sb2NrZWQgPSB0cnVlO1xuIFx0XHRyZXR1cm4gMDtcbiBcdH1cbiBcbkBAIC0xNjA4LDcgKzE2MDksOCBAQCBpbnQgZml4dXBfdXNlcl9mYXVsdChzdHJ1Y3QgbW1fc3RydWN0ICptbSxcbiBcbiBcdGlmIChyZXQgXHUwMDI2IFZNX0ZBVUxUX1JFVFJZKSB7XG4gXHRcdG1tYXBfcmVhZF9sb2NrKG1tKTtcbi1cdFx0KnVubG9ja2VkID0gdHJ1ZTtcbitcdFx0aWYgKHVubG9ja2VkKVxuK1x0XHRcdCp1bmxvY2tlZCA9IHRydWU7XG4gXHRcdGZhdWx0X2ZsYWdzIHw9IEZBVUxUX0ZMQUdfVFJJRUQ7XG4gXHRcdGdvdG8gcmV0cnk7XG4gXHR9XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQwNzowNDo0My45NzMxNDgwOTVaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0Mjc4MTU4Mzk3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uXG5cbioqQW5hbHl6aW5nIGEgTWVtb3J5IE1hbmFnZW1lbnQgUGF0Y2gqKlxuXG5BbHJpZ2h0LCBzbyBJJ20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQncyB0b3VjaGluZyBgbW0vZ3VwLmNgLCB3aGljaCBpcyBhbHdheXMgaW50ZXJlc3RpbmcgYmVjYXVzZSB0aGF0J3MgdGhlIGhlYXJ0IG9mIHRoZSBnZXRfdXNlcl9wYWdlcyBmdW5jdGlvbmFsaXR5IGFuZCBtZW1vcnkgZmF1bHQgaGFuZGxpbmcuIFRoZSBzcGVjaWZpYyBmdW5jdGlvbiB0aGV5J3JlIG1vZGlmeWluZyBpcyBgZml4dXBfdXNlcl9mYXVsdGAuIFJpZ2h0LCBzbyB0aGlzIGlzIHdoZXJlIHRoZXkncmUgdHJ5aW5nIHRvIHJlc29sdmUgYSB1c2VyLXNwYWNlIG1lbW9yeSBhY2Nlc3MgaXNzdWUuXG5cblRoZSBrZXkgY2hhbmdlIGlzIHRoZXkndmUgYWRkZWQgYSBjb25kaXRpb25hbCBjaGVjazogYGlmICh1bmxvY2tlZClgLiBUaGlzIHN1Z2dlc3RzIHRoYXQgYHVubG9ja2VkYCBpcyBsaWtlbHkgYSBwb2ludGVyIHRvIGEgYm9vbGVhbiB2YXJpYWJsZS4gRXNzZW50aWFsbHksIHRoZXkgYXJlIGVuc3VyaW5nIHRoYXQgdGhleSBvbmx5IHNldCBgKnVubG9ja2VkID0gdHJ1ZWAgKHByZXN1bWFibHkgaW5kaWNhdGluZyB0aGF0IHNvbWUgbG9ja2luZyBpcyBubyBsb25nZXIgcmVxdWlyZWQpIGlmIHRoZSBgdW5sb2NrZWRgIHBvaW50ZXIgaXMgdmFsaWQuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGlzIGlzIHByb2JhYmx5IG1lYW50IHRvIGFkZHJlc3MgYSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb24gb3IgYSBtZW1vcnkgc2FmZXR5IGlzc3VlLiBUaGV5IHByb2JhYmx5IGRvbid0IHdhbnQgdG8gd3JpdGUgdG8gdGhpcyB2YXJpYWJsZSBpZiBpdCdzIHBvaW50aW5nIHRvIGludmFsaWQgbWVtb3J5LiBJJ2xsIG5lZWQgdG8gZGlnIGRlZXBlciBpbnRvIHRoZSBjb2RlIHRvIHVuZGVyc3RhbmQgdGhlIHNwZWNpZmljIGNvbnRleHQgYW5kIGV4YWN0bHkgd2h5IHRoaXMgY29uZGl0aW9uYWwgY2hlY2sgaGFzIGJlZW4gZGVlbWVkIG5lY2Vzc2FyeS4gSSBzdXNwZWN0IGl0J3MgYWJvdXQgYXZvaWRpbmcgYSBkb3VibGUtZnJlZSBvciBzb21lIG90aGVyIGNvcnJ1cHRpb24gcmVsYXRlZCB0byB0aGUgbG9ja2luZy91bmxvY2tpbmcgcHJvY2Vzcy4gTXkgbmV4dCBzdGVwIGlzIHRvIGV4YW1pbmUgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaW4gYGZpeHVwX3VzZXJfZmF1bHRgLCBhbmQgYWxzbyB0cmFjZSBob3cgYHVubG9ja2VkYCBpcyBpbml0aWFsaXplZCBhbmQgdXNlZCB0aHJvdWdob3V0IHRoYXQgY29kZSBwYXRoLCB0byBncmFzcCB0aGUgcmF0aW9uYWxlIGJlaGluZCB0aGlzIHBhdGNoIGNvbXBsZXRlbHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwNzMsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3MSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDA3OjA0OjQ4LjI1MTMwOTE4MloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MTIwOTQ3OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJmaXh1cF91c2VyX2ZhdWx0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL2d1cC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL2d1cC5jPTE1MTI9c3RhdGljIGJvb2wgdm1hX3Blcm1pdHNfZmF1bHQoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsXFxuLS1cXG5tbS9ndXAuYy0xNTM1LS8qKlxcbm1tL2d1cC5jOjE1MzY6ICogZml4dXBfdXNlcl9mYXVsdCgpIC0gbWFudWFsbHkgcmVzb2x2ZSBhIHVzZXIgcGFnZSBmYXVsdFxcbm1tL2d1cC5jLTE1MzctICogQG1tOlxcdFxcdG1tX3N0cnVjdCBvZiB0YXJnZXQgbW1cXG4tLVxcbm1tL2d1cC5jLTE1NjMtICovXFxubW0vZ3VwLmM6MTU2NDppbnQgZml4dXBfdXNlcl9mYXVsdChzdHJ1Y3QgbW1fc3RydWN0ICptbSxcXG5tbS9ndXAuYy0xNTY1LVxcdFxcdCAgICAgdW5zaWduZWQgbG9uZyBhZGRyZXNzLCB1bnNpZ25lZCBpbnQgZmF1bHRfZmxhZ3MsXFxuLS1cXG5tbS9ndXAuYy0xNjE5LX1cXG5tbS9ndXAuYzoxNjIwOkVYUE9SVF9TWU1CT0xfR1BMKGZpeHVwX3VzZXJfZmF1bHQpO1xcbm1tL2d1cC5jLTE2MjEtXFxuLS1cXG5tbS9ndXAuYz0yMTE3PXNpemVfdCBmYXVsdF9pbl9zYWZlX3dyaXRlYWJsZShjb25zdCBjaGFyIF9fdXNlciAqdWFkZHIsIHNpemVfdCBzaXplKVxcbi0tXFxubW0vZ3VwLmMtMjEzMC1cXHRmb3IgKGN1ciA9IHN0YXJ0OyBjdXIgXFx1MDAyNlxcdTAwMjYgY3VyIFxcdTAwM2MgZW5kOyBjdXIgPSBQQUdFX0FMSUdOX0RPV04oY3VyICsgUEFHRV9TSVpFKSlcXG5tbS9ndXAuYzoyMTMxOlxcdFxcdGlmIChmaXh1cF91c2VyX2ZhdWx0KG1tLCBjdXIsIEZBVUxUX0ZMQUdfV1JJVEUsIFxcdTAwMjZ1bmxvY2tlZCkpXFxubW0vZ3VwLmMtMjEzMi1cXHRcXHRcXHRicmVhaztcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMDc6MDQ6NDguMzAyNTI1ODFaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTY2NDg5Nzc4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFBvdGVudGlhbCBOVUxMIFBvaW50ZXIgRGVyZWZlcmVuY2UqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGNsYWltcyB0byBhZGRyZXNzIGEgcG9zc2libGUgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIHdpdGhpbiB0aGUgYGZpeHVwX3VzZXJfZmF1bHRgIGZ1bmN0aW9uLCBzcGVjaWZpY2FsbHkgd2hlbiB0aGUgYHVubG9ja2VkYCBwb2ludGVyIGlzIHVuZXhwZWN0ZWRseSBOVUxMLiBUaGF0J3MgYSBjbGFzc2ljIGJ1ZyBzY2VuYXJpbywgYW5kIHdlIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcm9vdCBjYXVzZS4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIFwiV2hlcmUgYW5kIGhvdyBpcyBgZml4dXBfdXNlcl9mYXVsdGAgYmVpbmcgaW52b2tlZD9cIiBUaGUgY3JpdGljYWwgcXVlc3Rpb24gaXMsIHdobyBpcyBjYWxsaW5nIGl0LCBhbmQgdW5kZXIgd2hhdCBjb25kaXRpb25zIG1pZ2h0IGB1bmxvY2tlZGAgYmUgbGVmdCB1bmluaXRpYWxpemVkIG9yIGluYWR2ZXJ0ZW50bHkgc2V0IHRvIE5VTEw/IE15IGZvY3VzIG5vdyBzaGlmdHMgdG8gdHJhY2luZyB0aGUgY2FsbCBwYXRocyB0byB0aGF0IGZ1bmN0aW9uLCBzY3J1dGluaXppbmcgdGhlIHN1cnJvdW5kaW5nIGNvZGUgZm9yIGFueSBjbHVlcy4gSSBuZWVkIHRvIGlkZW50aWZ5IHRoZSBjb2RlIGJyYW5jaGVzIHRoYXQgY291bGQgbGVhZCB0byB0aGlzIE5VTEwgdmFsdWUgYW5kIGRldGVybWluZSBpZiB0aGUgbG9naWMgaXMgZmxhd2VkLCBvciBpZiBhbiB1bmV4cGVjdGVkIHN0YXRlIGlzIGJlaW5nIGVuY291bnRlcmVkLiBMZXQncyBzZWUgd2hvJ3MgcGxheWluZyBmYXN0IGFuZCBsb29zZSB3aXRoIHRoYXQgcG9pbnRlciwgc2hhbGwgd2U/XG5cblxuIiwiSW5wdXRUb2tlbnMiOjI4NTYsIk91dHB1dFRva2VucyI6MjYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQwNzowNDo1MS44NjkwMTgxNDdaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjAyNTA5MDAzMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJmaXh1cF91c2VyX2ZhdWx0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL2FyYy9rZXJuZWwvcHJvY2Vzcy5jPTQ2PVNZU0NBTExfREVGSU5FMyhhcmNfdXNyX2NtcHhjaGcsIGludCBfX3VzZXIgKiwgdWFkZHIsIGludCwgZXhwZWN0ZWQsIGludCwgbmV3KVxcbi0tXFxuYXJjaC9hcmMva2VybmVsL3Byb2Nlc3MuYy05My1cXHRtbWFwX3JlYWRfbG9jayhjdXJyZW50LVxcdTAwM2VtbSk7XFxuYXJjaC9hcmMva2VybmVsL3Byb2Nlc3MuYzo5NDpcXHRyZXQgPSBmaXh1cF91c2VyX2ZhdWx0KGN1cnJlbnQtXFx1MDAzZW1tLCAodW5zaWduZWQgbG9uZykgdWFkZHIsXFxuYXJjaC9hcmMva2VybmVsL3Byb2Nlc3MuYy05NS1cXHRcXHRcXHQgICAgICAgRkFVTFRfRkxBR19XUklURSwgTlVMTCk7XFxuLS1cXG5hcmNoL3MzOTAvcGNpL3BjaV9tbWlvLmM9MTI4PVNZU0NBTExfREVGSU5FMyhzMzkwX3BjaV9tbWlvX3dyaXRlLCB1bnNpZ25lZCBsb25nLCBtbWlvX2FkZHIsXFxuLS1cXG5hcmNoL3MzOTAvcGNpL3BjaV9tbWlvLmMtMTg0LVxcdGlmIChyZXQpIHtcXG5hcmNoL3MzOTAvcGNpL3BjaV9tbWlvLmM6MTg1OlxcdFxcdGZpeHVwX3VzZXJfZmF1bHQoY3VycmVudC1cXHUwMDNlbW0sIG1taW9fYWRkciwgRkFVTFRfRkxBR19XUklURSwgTlVMTCk7XFxuYXJjaC9zMzkwL3BjaS9wY2lfbW1pby5jLTE4Ni1cXHRcXHRyZXQgPSBmb2xsb3dfcGZubWFwX3N0YXJ0KFxcdTAwMjZhcmdzKTtcXG4tLVxcbmFyY2gvczM5MC9wY2kvcGNpX21taW8uYz0yODM9U1lTQ0FMTF9ERUZJTkUzKHMzOTBfcGNpX21taW9fcmVhZCwgdW5zaWduZWQgbG9uZywgbW1pb19hZGRyLFxcbi0tXFxuYXJjaC9zMzkwL3BjaS9wY2lfbW1pby5jLTMzNi1cXHRpZiAocmV0KSB7XFxuYXJjaC9zMzkwL3BjaS9wY2lfbW1pby5jOjMzNzpcXHRcXHRmaXh1cF91c2VyX2ZhdWx0KGN1cnJlbnQtXFx1MDAzZW1tLCBtbWlvX2FkZHIsIDAsIE5VTEwpO1xcbmFyY2gvczM5MC9wY2kvcGNpX21taW8uYy0zMzgtXFx0XFx0cmV0ID0gZm9sbG93X3Bmbm1hcF9zdGFydChcXHUwMDI2YXJncyk7XFxuLS1cXG5kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jPTU0MD1zdGF0aWMgaW50IGZvbGxvd19mYXVsdF9wZm4oc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLFxcbi0tXFxuZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYy01NTAtXFxuZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYzo1NTE6XFx0XFx0cmV0ID0gZml4dXBfdXNlcl9mYXVsdChtbSwgdmFkZHIsXFxuZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYy01NTItXFx0XFx0XFx0XFx0ICAgICAgIEZBVUxUX0ZMQUdfUkVNT1RFIHxcXG4tLVxcbmluY2x1ZGUvbGludXgvbW0uaD0zMTc4PWV4dGVybiB2bV9mYXVsdF90IGhhbmRsZV9tbV9mYXVsdChzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSxcXG4tLVxcbmluY2x1ZGUvbGludXgvbW0uaC0zMTgwLVxcdFxcdFxcdFxcdCAgc3RydWN0IHB0X3JlZ3MgKnJlZ3MpO1xcbmluY2x1ZGUvbGludXgvbW0uaDozMTgxOmV4dGVybiBpbnQgZml4dXBfdXNlcl9mYXVsdChzdHJ1Y3QgbW1fc3RydWN0ICptbSxcXG5pbmNsdWRlL2xpbnV4L21tLmgtMzE4Mi1cXHRcXHRcXHQgICAgdW5zaWduZWQgbG9uZyBhZGRyZXNzLCB1bnNpZ25lZCBpbnQgZmF1bHRfZmxhZ3MsXFxuLS1cXG5pbmNsdWRlL2xpbnV4L21tLmg9MzE4OT1zdGF0aWMgaW5saW5lIHZtX2ZhdWx0X3QgaGFuZGxlX21tX2ZhdWx0KHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLFxcbi0tXFxuaW5jbHVkZS9saW51eC9tbS5oLTMxOTYtfVxcbmluY2x1ZGUvbGludXgvbW0uaDozMTk3OnN0YXRpYyBpbmxpbmUgaW50IGZpeHVwX3VzZXJfZmF1bHQoc3RydWN0IG1tX3N0cnVjdCAqbW0sIHVuc2lnbmVkIGxvbmcgYWRkcmVzcyxcXG5pbmNsdWRlL2xpbnV4L21tLmgtMzE5OC1cXHRcXHR1bnNpZ25lZCBpbnQgZmF1bHRfZmxhZ3MsIGJvb2wgKnVubG9ja2VkKVxcbi0tXFxua2VybmVsL2Z1dGV4L2NvcmUuYz03Mzg9aW50IGZhdWx0X2luX3VzZXJfd3JpdGVhYmxlKHUzMiBfX3VzZXIgKnVhZGRyKVxcbi0tXFxua2VybmVsL2Z1dGV4L2NvcmUuYy03NDMtXFx0bW1hcF9yZWFkX2xvY2sobW0pO1xcbmtlcm5lbC9mdXRleC9jb3JlLmM6NzQ0OlxcdHJldCA9IGZpeHVwX3VzZXJfZmF1bHQobW0sICh1bnNpZ25lZCBsb25nKXVhZGRyLFxcbmtlcm5lbC9mdXRleC9jb3JlLmMtNzQ1LVxcdFxcdFxcdCAgICAgICBGQVVMVF9GTEFHX1dSSVRFLCBOVUxMKTtcXG4tLVxcbmtlcm5lbC90cmFjZS90cmFjZV9ldmVudHNfdXNlci5jPTQzNT1zdGF0aWMgaW50IHVzZXJfZXZlbnRfbW1fZmF1bHRfaW4oc3RydWN0IHVzZXJfZXZlbnRfbW0gKm1tLCB1bnNpZ25lZCBsb25nIHVhZGRyLFxcbi0tXFxua2VybmVsL3RyYWNlL3RyYWNlX2V2ZW50c191c2VyLmMtNDU1LVxcbmtlcm5lbC90cmFjZS90cmFjZV9ldmVudHNfdXNlci5jOjQ1NjpcXHRyZXQgPSBmaXh1cF91c2VyX2ZhdWx0KG1tLVxcdTAwM2VtbSwgdWFkZHIsIEZBVUxUX0ZMQUdfV1JJVEUgfCBGQVVMVF9GTEFHX1JFTU9URSxcXG5rZXJuZWwvdHJhY2UvdHJhY2VfZXZlbnRzX3VzZXIuYy00NTctXFx0XFx0XFx0ICAgICAgIFxcdTAwMjZ1bmxvY2tlZCk7XFxuLS1cXG5tbS9ndXAuYz0xNTEyPXN0YXRpYyBib29sIHZtYV9wZXJtaXRzX2ZhdWx0KHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLFxcbi0tXFxubW0vZ3VwLmMtMTUzNS0vKipcXG5tbS9ndXAuYzoxNTM2OiAqIGZpeHVwX3VzZXJfZmF1bHQoKSAtIG1hbnVhbGx5IHJlc29sdmUgYSB1c2VyIHBhZ2UgZmF1bHRcXG5tbS9ndXAuYy0xNTM3LSAqIEBtbTpcXHRcXHRtbV9zdHJ1Y3Qgb2YgdGFyZ2V0IG1tXFxuLS1cXG5tbS9ndXAuYy0xNTYzLSAqL1xcbm1tL2d1cC5jOjE1NjQ6aW50IGZpeHVwX3VzZXJfZmF1bHQoc3RydWN0IG1tX3N0cnVjdCAqbW0sXFxubW0vZ3VwLmMtMTU2NS1cXHRcXHQgICAgIHVuc2lnbmVkIGxvbmcgYWRkcmVzcywgdW5zaWduZWQgaW50IGZhdWx0X2ZsYWdzLFxcbi0tXFxubW0vZ3VwLmMtMTYxOS19XFxubW0vZ3VwLmM6MTYyMDpFWFBPUlRfU1lNQk9MX0dQTChmaXh1cF91c2VyX2ZhdWx0KTtcXG5tbS9ndXAuYy0xNjIxLVxcbi0tXFxubW0vZ3VwLmM9MjExNz1zaXplX3QgZmF1bHRfaW5fc2FmZV93cml0ZWFibGUoY29uc3QgY2hhciBfX3VzZXIgKnVhZGRyLCBzaXplX3Qgc2l6ZSlcXG4tLVxcbm1tL2d1cC5jLTIxMzAtXFx0Zm9yIChjdXIgPSBzdGFydDsgY3VyIFxcdTAwMjZcXHUwMDI2IGN1ciBcXHUwMDNjIGVuZDsgY3VyID0gUEFHRV9BTElHTl9ET1dOKGN1ciArIFBBR0VfU0laRSkpXFxubW0vZ3VwLmM6MjEzMTpcXHRcXHRpZiAoZml4dXBfdXNlcl9mYXVsdChtbSwgY3VyLCBGQVVMVF9GTEFHX1dSSVRFLCBcXHUwMDI2dW5sb2NrZWQpKVxcbm1tL2d1cC5jLTIxMzItXFx0XFx0XFx0YnJlYWs7XFxuLS1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jPTI5Mzk9c3RhdGljIGludCBodmFfdG9fcGZuX3JlbWFwcGVkKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLFxcbi0tXFxudmlydC9rdm0va3ZtX21haW4uYy0yOTYwLVxcdFxcdGJvb2wgdW5sb2NrZWQgPSBmYWxzZTtcXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjI5NjE6XFx0XFx0ciA9IGZpeHVwX3VzZXJfZmF1bHQoY3VycmVudC1cXHUwMDNlbW0sIGtmcC1cXHUwMDNlaHZhLFxcbnZpcnQva3ZtL2t2bV9tYWluLmMtMjk2Mi1cXHRcXHRcXHRcXHQgICAgICh3cml0ZV9mYXVsdCA/IEZBVUxUX0ZMQUdfV1JJVEUgOiAwKSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMDc6MDQ6NTMuODk0MTI1NFoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU0MjQwNjQ2NDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgS2VybmVsIFZ1bG5lcmFiaWxpdHkqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCBhIGhhbmRsZSBvbiBhIHBvdGVudGlhbCBrZXJuZWwgYnVnLiBJdCBsb29rcyBsaWtlIGNhbGxlcnMgYXJlIHBhc3NpbmcgYE5VTExgIGZvciB0aGUgYHVubG9ja2VkYCBhcmd1bWVudCBpbiBhIGZldyBwbGFjZXM6IGBhcmNfdXNyX2NtcHhjaGdgIGluIGBhcmNoL2FyYy9rZXJuZWwvcHJvY2Vzcy5jYCwgdGhlIGBzMzkwX3BjaV9tbWlvX3dyaXRlYCBhbmQgYHMzOTBfcGNpX21taW9fcmVhZGAgZnVuY3Rpb25zIGluIGBhcmNoL3MzOTAvcGNpL3BjaV9tbWlvLmNgLCBhbmQgZmluYWxseSwgYGZhdWx0X2luX3VzZXJfd3JpdGVhYmxlYCBpbiBga2VybmVsL2Z1dGV4L2NvcmUuY2AuXG5cblRoZSBoZWFydCBvZiB0aGUgcHJvYmxlbSBzZWVtcyB0byBiZSB0aGF0IGBmaXh1cF91c2VyX2ZhdWx0YCBpc24ndCBoYW5kbGluZyB0aGlzIGBOVUxMYCB2YWx1ZSBjb3JyZWN0bHkuIFNwZWNpZmljYWxseSwgaXQncyBkZXJlZmVyZW5jaW5nIGB1bmxvY2tlZGAgd2hlbiBpdCdzIGBOVUxMYCwgbGVhZGluZyB0byBhIGNyYXNoLiBXZSBrbm93IHRoaXMgaXMgaGFwcGVuaW5nIGluIGBmYXVsdF9pbl91c2VyX3dyaXRlYWJsZWAgYW5kIHBvdGVudGlhbGx5IGluIHRob3NlIG90aGVyIGZ1bmN0aW9ucyBJIGxpc3RlZC5cblxuVGhpcyBpcyBkZWZpbml0ZWx5IHNvbWV0aGluZyB3b3J0aCBmdXp6aW5nLiBBIGtlcm5lbCBjcmFzaCwgc3BlY2lmaWNhbGx5IGEgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlLCBpcyBhIHByZXR0eSBzZXJpb3VzIHZ1bG5lcmFiaWxpdHksIGFuZCB0aGUgZmFjdCB0aGF0IGl0IGludm9sdmVzIGZ1dGV4IOKAkyBhIHJlbGF0aXZlbHkgY29tbW9uIGtlcm5lbCBwcmltaXRpdmUg4oCTIG1lYW5zIGl0J3MgbGlrZWx5IGEgcmVhY2hhYmxlIHBhdGguIFRoaXMgaXMgYSBnb29kIGZpbmQuIExldCdzIGRpZyBkZWVwZXIgaW50byBgZmF1bHRfaW5fdXNlcl93cml0ZWFibGVgIGluIGBrZXJuZWwvZnV0ZXgvY29yZS5jYCBhbmQgdW5kZXJzdGFuZCB0aGUgZXhhY3QgY29uZGl0aW9ucyB0aGF0IHRyaWdnZXIgdGhpcyBgTlVMTGAgZGVyZWZlcmVuY2UgYW5kIGhvdyB0byB0cmlnZ2VyIGl0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NzMwLCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjE1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDA3OjA0OjU5LjMxODE5MzE4N1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDc3Mjk0OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJmYXVsdF9pbl91c2VyX3dyaXRlYWJsZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJrZXJuZWwvZnV0ZXhcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2Z1dGV4L2NvcmUuYz01MDI9aW50IGdldF9mdXRleF9rZXkodTMyIF9fdXNlciAqdWFkZHIsIHVuc2lnbmVkIGludCBmbGFncywgdW5pb24gZnV0ZXhfa2V5ICprZXksXFxuLS1cXG5rZXJuZWwvZnV0ZXgvY29yZS5jLTcyNi0vKipcXG5rZXJuZWwvZnV0ZXgvY29yZS5jOjcyNzogKiBmYXVsdF9pbl91c2VyX3dyaXRlYWJsZSgpIC0gRmF1bHQgaW4gdXNlciBhZGRyZXNzIGFuZCB2ZXJpZnkgUlcgYWNjZXNzXFxua2VybmVsL2Z1dGV4L2NvcmUuYy03MjgtICogQHVhZGRyOlxcdHBvaW50ZXIgdG8gZmF1bHRpbmcgdXNlciBzcGFjZSBhZGRyZXNzXFxuLS1cXG5rZXJuZWwvZnV0ZXgvY29yZS5jLTczNy0gKi9cXG5rZXJuZWwvZnV0ZXgvY29yZS5jOjczODppbnQgZmF1bHRfaW5fdXNlcl93cml0ZWFibGUodTMyIF9fdXNlciAqdWFkZHIpXFxua2VybmVsL2Z1dGV4L2NvcmUuYy03Mzkte1xcbi0tXFxua2VybmVsL2Z1dGV4L2NvcmUuYz05Njg9c3RhdGljIGludCBoYW5kbGVfZnV0ZXhfZGVhdGgodTMyIF9fdXNlciAqdWFkZHIsIHN0cnVjdCB0YXNrX3N0cnVjdCAqY3VycixcXG4tLVxcbmtlcm5lbC9mdXRleC9jb3JlLmMtMTA1NC1cXHRcXHRjYXNlIC1FRkFVTFQ6XFxua2VybmVsL2Z1dGV4L2NvcmUuYzoxMDU1OlxcdFxcdFxcdGlmIChmYXVsdF9pbl91c2VyX3dyaXRlYWJsZSh1YWRkcikpXFxua2VybmVsL2Z1dGV4L2NvcmUuYy0xMDU2LVxcdFxcdFxcdFxcdHJldHVybiAtMTtcXG4tLVxcbmtlcm5lbC9mdXRleC9mdXRleC5oPTI4NT1leHRlcm4gdm9pZCBmdXRleF93YWtlX21hcmsoc3RydWN0IHdha2VfcV9oZWFkICp3YWtlX3EsIHN0cnVjdCBmdXRleF9xICpxKTtcXG5rZXJuZWwvZnV0ZXgvZnV0ZXguaC0yODYtXFxua2VybmVsL2Z1dGV4L2Z1dGV4Lmg6Mjg3OmV4dGVybiBpbnQgZmF1bHRfaW5fdXNlcl93cml0ZWFibGUodTMyIF9fdXNlciAqdWFkZHIpO1xcbmtlcm5lbC9mdXRleC9mdXRleC5oLTI4OC1leHRlcm4gc3RydWN0IGZ1dGV4X3EgKmZ1dGV4X3RvcF93YWl0ZXIoc3RydWN0IGZ1dGV4X2hhc2hfYnVja2V0ICpoYiwgdW5pb24gZnV0ZXhfa2V5ICprZXkpO1xcbi0tXFxua2VybmVsL2Z1dGV4L3BpLmM9Njc0PXN0YXRpYyBpbnQgX19maXh1cF9waV9zdGF0ZV9vd25lcih1MzIgX191c2VyICp1YWRkciwgc3RydWN0IGZ1dGV4X3EgKnEsXFxuLS1cXG5rZXJuZWwvZnV0ZXgvcGkuYy04MDAtXFx0Y2FzZSAtRUZBVUxUOlxcbmtlcm5lbC9mdXRleC9waS5jOjgwMTpcXHRcXHRlcnIgPSBmYXVsdF9pbl91c2VyX3dyaXRlYWJsZSh1YWRkcik7XFxua2VybmVsL2Z1dGV4L3BpLmMtODAyLVxcdFxcdGJyZWFrO1xcbi0tXFxua2VybmVsL2Z1dGV4L3BpLmMtODI3LVxcdC8qXFxua2VybmVsL2Z1dGV4L3BpLmM6ODI4OlxcdCAqIGZhdWx0X2luX3VzZXJfd3JpdGVhYmxlKCkgZmFpbGVkIHNvIHVzZXIgc3RhdGUgaXMgaW1tdXRhYmxlLiBBdFxcbmtlcm5lbC9mdXRleC9waS5jLTgyOS1cXHQgKiBiZXN0IHdlIGNhbiBtYWtlIHRoZSBrZXJuZWwgc3RhdGUgY29uc2lzdGVudCBidXQgdXNlciBzdGF0ZSB3aWxsXFxuLS1cXG5rZXJuZWwvZnV0ZXgvcGkuYz05MjM9aW50IGZ1dGV4X2xvY2tfcGkodTMyIF9fdXNlciAqdWFkZHIsIHVuc2lnbmVkIGludCBmbGFncywga3RpbWVfdCAqdGltZSwgaW50IHRyeWxvY2spXFxuLS1cXG5rZXJuZWwvZnV0ZXgvcGkuYy0xMTE3LVxcbmtlcm5lbC9mdXRleC9waS5jOjExMTg6XFx0XFx0cmV0ID0gZmF1bHRfaW5fdXNlcl93cml0ZWFibGUodWFkZHIpO1xcbmtlcm5lbC9mdXRleC9waS5jLTExMTktXFx0XFx0aWYgKHJldClcXG4tLVxcbmtlcm5lbC9mdXRleC9waS5jPTExNDE9c3RhdGljIGludCBfX2Z1dGV4X3VubG9ja19waSh1MzIgX191c2VyICp1YWRkciwgdW5zaWduZWQgaW50IGZsYWdzKVxcbi0tXFxua2VybmVsL2Z1dGV4L3BpLmMtMTI5Ny1cXG5rZXJuZWwvZnV0ZXgvcGkuYzoxMjk4OlxcdHJldCA9IGZhdWx0X2luX3VzZXJfd3JpdGVhYmxlKHVhZGRyKTtcXG5rZXJuZWwvZnV0ZXgvcGkuYy0xMjk5LVxcdGlmICghcmV0KVxcbi0tXFxua2VybmVsL2Z1dGV4L3JlcXVldWUuYz0zODI9aW50IGZ1dGV4X3JlcXVldWUodTMyIF9fdXNlciAqdWFkZHIxLCB1bnNpZ25lZCBpbnQgZmxhZ3MxLFxcbi0tXFxua2VybmVsL2Z1dGV4L3JlcXVldWUuYy01NjMtXFx0XFx0XFx0XFx0ZG91YmxlX3VubG9ja19oYihoYjEsIGhiMik7XFxua2VybmVsL2Z1dGV4L3JlcXVldWUuYzo1NjQ6XFx0XFx0XFx0XFx0cmV0ID0gZmF1bHRfaW5fdXNlcl93cml0ZWFibGUodWFkZHIyKTtcXG5rZXJuZWwvZnV0ZXgvcmVxdWV1ZS5jLTU2NS1cXHRcXHRcXHRcXHRpZiAoIXJldClcXG4tLVxcbmtlcm5lbC9mdXRleC93YWl0d2FrZS5jPTI3OD1pbnQgZnV0ZXhfd2FrZV9vcCh1MzIgX191c2VyICp1YWRkcjEsIHVuc2lnbmVkIGludCBmbGFncywgdTMyIF9fdXNlciAqdWFkZHIyLFxcbi0tXFxua2VybmVsL2Z1dGV4L3dhaXR3YWtlLmMtMzE2LVxcdFxcdFxcdGlmIChvcF9yZXQgPT0gLUVGQVVMVCkge1xcbmtlcm5lbC9mdXRleC93YWl0d2FrZS5jOjMxNzpcXHRcXHRcXHRcXHRyZXQgPSBmYXVsdF9pbl91c2VyX3dyaXRlYWJsZSh1YWRkcjIpO1xcbmtlcm5lbC9mdXRleC93YWl0d2FrZS5jLTMxOC1cXHRcXHRcXHRcXHRpZiAocmV0KVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQwNzowNDo1OS4zNjI5NzEyODVaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NzQ0OTkyNzU3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkJ1ZyBGaXggXHUwMDI2IEZ1enppbmcgU3RyYXRlZ3k6IEZ1dGV4IE5VTEwgUG9pbnRlciBEZXJlZmVyZW5jZSoqXG5cbk9rYXksIHNvIEkndmUgZ290IGEgaGFuZGxlIG9uIHRoaXMuIFRoZXJlJ3MgYSBuYXN0eSBsaXR0bGUgYnVnIGx1cmtpbmcgaW4gYGtlcm5lbC9mdXRleC9jb3JlLmNgLCBzcGVjaWZpY2FsbHkgd2l0aGluIGBmaXh1cF91c2VyX2ZhdWx0YC4gSXQncyBhIGNyaXRpY2FsIGlzc3VlIGJlY2F1c2UgYGZhdWx0X2luX3VzZXJfd3JpdGVhYmxlYCBjYWxscyBpdC4gVGhlIHJvb3Qgb2YgdGhlIHByb2JsZW0/IEEgY2xhc3NpYyBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2Ugd2hlbiBgdW5sb2NrZWRgIGlzLCB3ZWxsLCAqbnVsbCouICBUaGF0J3MgYSB0ZXh0Ym9vayBmdXp6aW5nIGNhbmRpZGF0ZSByaWdodCB0aGVyZS5cblxuTXkgaW1tZWRpYXRlIGZvY3VzLCBuYXR1cmFsbHksIHdpbGwgYmUgb24gdGhvc2UgdHdvIHN5bWJvbHM6IGBmaXh1cF91c2VyX2ZhdWx0YCBhbmQgYGZhdWx0X2luX3VzZXJfd3JpdGVhYmxlYC4gSSdsbCBuZWVkIHRvIHJlYWxseSBkaWcgaW50byBob3cgdGhlIGB1bmxvY2tlZGAgcG9pbnRlciBpcyB1c2VkIHdpdGhpbiB0aG9zZSBmdW5jdGlvbnMuXG5cbkFuZCBzaW5jZSB3ZSBhcmUgdGFsa2luZyBhYm91dCBmdXp6aW5nLCBsZXQncyBzZWUgaWYgd2UgaGF2ZSBzb21lIGdvb2QgZGVmYXVsdCBjb25maWdzIHRvIGhlbHAgdXMgb3V0LiBGb3J0dW5hdGVseSwgdGhlIEZVVEVYIHN1YnN5c3RlbSBsb29rcyBsaWtlIGEgZ29vZCBwbGFjZSB0byBiZS4gSSBzZWVtIHRvIHJlY2FsbCB0aGF0IEZVVEVYIGlzIGVuYWJsZWQgYnkgZGVmYXVsdC4gSSdsbCBkb3VibGUtY2hlY2sgYENPTkZJR19GVVRFWGAgaW4gYGluaXQvS2NvbmZpZ2AgdG8gY29uZmlybSwgYnV0IEknbSBwcmV0dHkgc3VyZSBpdCdzIHVzdWFsbHkgb24uIFRoaXMgd2lsbCBnaXZlIG1lIGEgZ29vZCBiYXNlbGluZSBmb3IgbXkgZnV6emluZyBlZmZvcnRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NDE2LCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTE3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDA3OjA1OjA0LjEwNzk2NjY0MloiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDY4NzAwNzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEZVVEVYXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImluaXQvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbml0L0tjb25maWc9MTgyNz1jb25maWcgQkFTRV9TTUFMTFxcbi0tXFxuaW5pdC9LY29uZmlnLTE4MzMtXFxuaW5pdC9LY29uZmlnOjE4MzQ6Y29uZmlnIEZVVEVYXFxuaW5pdC9LY29uZmlnLTE4MzUtXFx0Ym9vbCBcXFwiRW5hYmxlIGZ1dGV4IHN1cHBvcnRcXFwiIGlmIEVYUEVSVFxcbi0tXFxuaW5pdC9LY29uZmlnLTE4NDMtXFxuaW5pdC9LY29uZmlnOjE4NDQ6Y29uZmlnIEZVVEVYX1BJXFxuaW5pdC9LY29uZmlnLTE4NDUtXFx0Ym9vbFxcbi0tXFxuaW5pdC9LY29uZmlnLTE4NDgtXFxuaW5pdC9LY29uZmlnOjE4NDk6Y29uZmlnIEZVVEVYX1BSSVZBVEVfSEFTSFxcbmluaXQvS2NvbmZpZy0xODUwLVxcdGJvb2xcXG4tLVxcbmluaXQvS2NvbmZpZy0xODUzLVxcbmluaXQvS2NvbmZpZzoxODU0OmNvbmZpZyBGVVRFWF9NUE9MXFxuaW5pdC9LY29uZmlnLTE4NTUtXFx0Ym9vbFxcbi0tXFxuaW5pdC9LY29uZmlnPTE4NTk9Y29uZmlnIEhBVkVfRlVURVhfUk9CVVNUX1VOTE9DS1xcbi0tXFxuaW5pdC9LY29uZmlnLTE4NjEtXFxuaW5pdC9LY29uZmlnOjE4NjI6Y29uZmlnIEZVVEVYX1JPQlVTVF9VTkxPQ0tcXG5pbml0L0tjb25maWctMTg2My1cXHRkZWZfYm9vbCBGVVRFWCBcXHUwMDI2XFx1MDAyNiBIQVZFX0dFTkVSSUNfVkRTTyBcXHUwMDI2XFx1MDAyNiBHRU5FUklDX0lSUV9FTlRSWSBcXHUwMDI2XFx1MDAyNiBSU0VRIFxcdTAwMjZcXHUwMDI2IEhBVkVfRlVURVhfUk9CVVNUX1VOTE9DS1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQwNzowNTowNC4xNTQ4NDM2MloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NTQxOTY3MDYzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIEZVVEVYIFBhdGNoKipcblxuT2theSwgc28gRlVURVggaXMgZW5hYmxlZCBieSBkZWZhdWx0LCB3aGljaCBpbW1lZGlhdGVseSBwaXF1ZXMgbXkgaW50ZXJlc3QuIFRoZSBwYXRjaCBJJ20gbG9va2luZyBhdCBzcGVjaWZpY2FsbHkgdG91Y2hlcyBgZml4dXBfdXNlcl9mYXVsdGAgd2l0aGluIGBtbS9ndXAuY2AuIEdvb2QsIHRoYXQgbmFycm93cyBteSBmb2N1cy4gSSdtIHplcm9pbmcgaW4gb24gYGZpeHVwX3VzZXJfZmF1bHRgIGFuZCBzZXR0aW5nIFdvcnRoRnV6emluZyB0byB0cnVlOyB0aGUgY29ubmVjdGlvbiBpcyBjbGVhciDigJMgYSBwb3NzaWJsZSBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UgaW4gYGZpeHVwX3VzZXJfZmF1bHRgIHdoZW4gYHVubG9ja2VkYCBpcyBOVUxMLlxuXG5NeSB0aGlua2luZyBpcywgZ2l2ZW4gdGhpcyBmdW5jdGlvbidzIHBvdGVudGlhbCByZWFjaGFiaWxpdHkgZnJvbSB1c2VyIHNwYWNlIHZpYSBmdXRleCBvcGVyYXRpb25zIGxpa2UgYGZhdWx0X2luX3VzZXJfd3JpdGVhYmxlYCwgdGhpcyBpcyBhIGhpZ2gtdmFsdWUgdGFyZ2V0IGZvciBmdXp6aW5nLiBUaGUgZnV0ZXggcGF0aCB0aHJvdWdoIHdoaWNoIHRoaXMgZnVuY3Rpb24gaXMgcmVhY2hlZCBtYWtlcyB0aGlzIGEgY3JpdGljYWwgcGF0aCBJIG5lZWQgdG8gc2NydXRpbml6ZS4gVGhhdCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UgaXMgYSBjbGFzc2ljIHZ1bG5lcmFiaWxpdHksIGFuZCB1c2VyLXNwYWNlIGFjY2VzcyByYWlzZXMgdGhlIHN0YWtlcyBjb25zaWRlcmFibHkuIEkgbmVlZCB0byBkaWcgZGVlcGVyIGludG8gdGhlIGZ1dGV4IGludGVyYWN0aW9uIGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcxMzYsIk91dHB1dFRva2VucyI6MTA2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTI4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDA3OjA1OjA5LjY5NjgxMzYwMloiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkxODc3NTI1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJGVVRFWFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImZpeHVwX3VzZXJfZmF1bHRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UgaW4gYGZpeHVwX3VzZXJfZmF1bHRgIHdoZW4gdGhlIGB1bmxvY2tlZGAgcGFyYW1ldGVyIGlzIE5VTEwuIFRoaXMgZnVuY3Rpb24gaXMgcmVhY2hhYmxlIGZyb20gdXNlciBzcGFjZSB2aWEgZnV0ZXggb3BlcmF0aW9ucyAoZS5nLiwgYGZhdWx0X2luX3VzZXJfd3JpdGVhYmxlYCksIG1ha2luZyBpdCBhIGNyaXRpY2FsIHBhdGggdG8gZnV6ei5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJGVVRFWFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImZpeHVwX3VzZXJfZmF1bHRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UgaW4gYGZpeHVwX3VzZXJfZmF1bHRgIHdoZW4gdGhlIGB1bmxvY2tlZGAgcGFyYW1ldGVyIGlzIE5VTEwuIFRoaXMgZnVuY3Rpb24gaXMgcmVhY2hhYmxlIGZyb20gdXNlciBzcGFjZSB2aWEgZnV0ZXggb3BlcmF0aW9ucyAoZS5nLiwgYGZhdWx0X2luX3VzZXJfd3JpdGVhYmxlYCksIG1ha2luZyBpdCBhIGNyaXRpY2FsIHBhdGggdG8gZnV6ei5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMDc6MDU6MDkuNzg4NzAwMjk4WiIsIlNlcSI6MTMsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2OTk2NjkyMTkxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMDc6MDU6MDkuNzg5MzcwOTA5WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjY5OTYwMTc2OTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIGluIGBmaXh1cF91c2VyX2ZhdWx0YCBieSBhZGRpbmcgYSBjaGVjayBmb3IgdGhlIGB1bmxvY2tlZGAgcG9pbnRlciBiZWZvcmUgYXNzaWduaW5nIHRvIGAqdW5sb2NrZWRgLiBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzIGFyZSByZWxpYWJseSBjYXVnaHQgYnkgc3RhbmRhcmQga2VybmVsIHBhZ2UgZmF1bHQgaGFuZGxpbmcgYW5kIEtBU0FOLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLCBzdHJ1Y3R1cmUgcGFkZGluZyBsZWFrcywgb3IgdW5pbml0aWFsaXplZCB2YWx1ZXMgYmVpbmcgdXNlZCBpbiBjb250cm9sIGZsb3cuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnkuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMTNhMjgyMDkyOTgwM2NmMTE2NDk1OGQ2NGI1ZTZjMzdmYmY2NjhiM1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgQXVnIDI2IDA3OjA0OjQyIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbW0vZ3VwLmMgYi9tbS9ndXAuY1xuaW5kZXggMDY5MjExOWI3OTA0My4uZDEyNDc1YTdmN2NjYiAxMDA2NDRcbi0tLSBhL21tL2d1cC5jXG4rKysgYi9tbS9ndXAuY1xuQEAgLTE1OTQsNyArMTU5NCw4IEBAIGludCBmaXh1cF91c2VyX2ZhdWx0KHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLFxuIFx0XHQgKiBjb3VsZCB0ZWxsIHRoZSBjYWxsZXJzIHNvIHRoZXkgZG8gbm90IG5lZWQgdG8gdW5sb2NrLlxuIFx0XHQgKi9cbiBcdFx0bW1hcF9yZWFkX2xvY2sobW0pO1xuLVx0XHQqdW5sb2NrZWQgPSB0cnVlO1xuK1x0XHRpZiAodW5sb2NrZWQpXG4rXHRcdFx0KnVubG9ja2VkID0gdHJ1ZTtcbiBcdFx0cmV0dXJuIDA7XG4gXHR9XG4gXG5AQCAtMTYwOCw3ICsxNjA5LDggQEAgaW50IGZpeHVwX3VzZXJfZmF1bHQoc3RydWN0IG1tX3N0cnVjdCAqbW0sXG4gXG4gXHRpZiAocmV0IFx1MDAyNiBWTV9GQVVMVF9SRVRSWSkge1xuIFx0XHRtbWFwX3JlYWRfbG9jayhtbSk7XG4tXHRcdCp1bmxvY2tlZCA9IHRydWU7XG4rXHRcdGlmICh1bmxvY2tlZClcbitcdFx0XHQqdW5sb2NrZWQgPSB0cnVlO1xuIFx0XHRmYXVsdF9mbGFncyB8PSBGQVVMVF9GTEFHX1RSSUVEO1xuIFx0XHRnb3RvIHJldHJ5O1xuIFx0fVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMDc6MDU6MDkuNzg5Mzc0MDg5WiIsIlNlcSI6MTUsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY5OTU5OTAzODEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgR1VQIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBnb3QgdGhpcyBwYXRjaCBmb3IgYG1tL2d1cC5jYC4gSXQncyBhIHN0cmFpZ2h0Zm9yd2FyZCBmaXg6IHRoZXkndmUgYWRkZWQgYSBOVUxMIGNoZWNrIGZvciB0aGUgYHVubG9ja2VkYCBwb2ludGVyIGJlZm9yZSBkZXJlZmVyZW5jaW5nIGl0LiBTbWFydCBtb3ZlLCBjYXRjaGluZyBhIHBvdGVudGlhbCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UuIFRoZSBjb2RlIG5vdyBsb29rcyBsaWtlIHRoaXM6XG5cbmBgYGNcbi1cdFx0KnVubG9ja2VkID0gdHJ1ZTtcbitcdFx0aWYgKHVubG9ja2VkKVxuK1x0XHRcdCp1bmxvY2tlZCA9IHRydWU7XG5gYGBcblxuTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBnb29kLCBzaW1wbGUsIGFuZCBwcm9iYWJseSBzYWZlLiBJIG1lYW4sIE5VTEwgZGVyZWZlcmVuY2VzIGFyZSB0eXBpY2FsbHkgaGFuZGxlZCBwcmV0dHkgd2VsbCBieSB0aGUga2VybmVsIGFscmVhZHkuIFdlJ3ZlIGdvdCBvdXIgc3RhbmRhcmQgcGFnZSBmYXVsdCBoYW5kbGluZywgb29wcywgYW5kIG9mIGNvdXJzZSwgS0FTQU4gaXMgdGhlcmUgdG8gY2F0Y2ggdGhlc2Uga2luZHMgb2YgdGhpbmdzLiBJdCdzIG5vdCBsaWtlIHRoaXMgcGF0Y2ggaXMgaW50cm9kdWNpbmcgYSBuZXcgYXR0YWNrIHN1cmZhY2UuIEkgY2FuJ3Qgc2VlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBpc3N1ZXMsIGFuZCBjZXJ0YWlubHkgbm8gcmlzayBvZiBpbmZvcm1hdGlvbiBsZWFrcy5cblxuTGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrIHRoYXQgbGFzdCBwYXJ04oCmIFNvLCBgdW5sb2NrZWRgIGlzIGEgcG9pbnRlciB0byBhIGJvb2xlYW4uIElmIGl0J3MgTlVMTCwgaXQgd2FzIGNyYXNoaW5nIGJlZm9yZS4gTm93LCB3aXRoIHRoZSBjaGVjaywgaXQgZG9lc24ndC4gTm8gdW5pbml0aWFsaXplZCBtZW1vcnkgaXMgcmVhZCBvciBsZWFrZWQuIFRoZSBjb2RlIGp1c3QgYXZvaWRzIGFzc2lnbmluZyBhIHZhbHVlIHRvIGEgcG9pbnRlci5cblxuQWxyaWdodCwgYWZ0ZXIgYSBxdWljayBtZW50YWwgY2hlY2ssIEknbSBjb25maWRlbnQgdGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcywgc3RydWN0dXJlIHBhZGRpbmcgbGVha3MsIG9yIHVuaW5pdGlhbGl6ZWQgdmFsdWVzIGJlaW5nIHVzZWQgaW4gY29udHJvbCBmbG93LiBJdCdzIGEgc3RyYWlnaHQtdXAgTlVMTCBjaGVjay4gVGhlcmVmb3JlLCBJJ20gZ29pbmcgdG8gc2V0IGBOZWVkc0tNU0FOPWZhbHNlYC4gV2UgZG9uJ3QgbmVlZCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gZm9yIHRoaXM7IHRoZSBleGlzdGluZyBrZXJuZWwgaW5mcmFzdHJ1Y3R1cmUgaXMgc3VmZmljaWVudCB0byBjYXRjaCBhbnkgaXNzdWVzIHJlbGF0ZWQgdG8gdGhpcyBwYXRjaC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjA3MCwiT3V0cHV0VG9rZW5zIjoxMTcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyODMsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQwNzowNToxNi43ODUzNjcyNzlaIiwiU2VxIjoxNiwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTMyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIGluIGBmaXh1cF91c2VyX2ZhdWx0YCBieSBhZGRpbmcgYSBjaGVjayBmb3IgdGhlIGB1bmxvY2tlZGAgcG9pbnRlciBiZWZvcmUgYXNzaWduaW5nIHRvIGAqdW5sb2NrZWRgLiBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzIGFyZSByZWxpYWJseSBjYXVnaHQgYnkgc3RhbmRhcmQga2VybmVsIHBhZ2UgZmF1bHQgaGFuZGxpbmcgYW5kIEtBU0FOLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLCBzdHJ1Y3R1cmUgcGFkZGluZyBsZWFrcywgb3IgdW5pbml0aWFsaXplZCB2YWx1ZXMgYmVpbmcgdXNlZCBpbiBjb250cm9sIGZsb3cuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnkuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UgaW4gYGZpeHVwX3VzZXJfZmF1bHRgIGJ5IGFkZGluZyBhIGNoZWNrIGZvciB0aGUgYHVubG9ja2VkYCBwb2ludGVyIGJlZm9yZSBhc3NpZ25pbmcgdG8gYCp1bmxvY2tlZGAuIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZXMgYXJlIHJlbGlhYmx5IGNhdWdodCBieSBzdGFuZGFyZCBrZXJuZWwgcGFnZSBmYXVsdCBoYW5kbGluZyBhbmQgS0FTQU4uIFRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMsIHN0cnVjdHVyZSBwYWRkaW5nIGxlYWtzLCBvciB1bmluaXRpYWxpemVkIHZhbHVlcyBiZWluZyB1c2VkIGluIGNvbnRyb2wgZmxvdy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow227gk[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-26 06:48:06 +0000 UTC FinishedAt: 2026-08-26 07:05:19 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "8a9091052cc81caa5570835049c809da804baa3f", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "FUTEX" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "8a9091052cc81caa5570835049c809da804baa3f", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "FUTEX" ], "series_id": "45bf7b87-bb22-4556-b9af-39f51554e5c4" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "fixup_user_fault" ], "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+CgkJCTx0ZD4yMDI2LzA4LzI2IDA3OjA0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0ZVVEVYJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Zml4dXBfdXNlcl9mYXVsdCYjMzQ7CiAgXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIGluIGBmaXh1cF91c2VyX2ZhdWx0YCBieSBhZGRpbmcgYSBjaGVjayBmb3IgdGhlIGB1bmxvY2tlZGAgcG9pbnRlciBiZWZvcmUgYXNzaWduaW5nIHRvIGAqdW5sb2NrZWRgLiBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzIGFyZSByZWxpYWJseSBjYXVnaHQgYnkgc3RhbmRhcmQga2VybmVsIHBhZ2UgZmF1bHQgaGFuZGxpbmcgYW5kIEtBU0FOLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLCBzdHJ1Y3R1cmUgcGFkZGluZyBsZWFrcywgb3IgdW5pbml0aWFsaXplZCB2YWx1ZXMgYmVpbmcgdXNlZCBpbiBjb250cm9sIGZsb3cuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnkuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSBpbiBgZml4dXBfdXNlcl9mYXVsdGAgd2hlbiB0aGUgYHVubG9ja2VkYCBwYXJhbWV0ZXIgaXMgTlVMTC4gVGhpcyBmdW5jdGlvbiBpcyByZWFjaGFibGUgZnJvbSB1c2VyIHNwYWNlIHZpYSBmdXRleCBvcGVyYXRpb25zIChlLmcuLCBgZmF1bHRfaW5fdXNlcl93cml0ZWFibGVgKSwgbWFraW5nIGl0IGEgY3JpdGljYWwgcGF0aCB0byBmdXp6LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDA3OjA0PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMTNhMjgyMDkyOTgwM2NmMTE2NDk1OGQ2NGI1ZTZjMzdmYmY2NjhiM1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgQXVnIDI2IDA3OjA0OjQyIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL21tL2d1cC5jIGIvbW0vZ3VwLmNcbmluZGV4IDA2OTIxMTliNzkwNDMuLmQxMjQ3NWE3ZjdjY2IgMTAwNjQ0XG4tLS0gYS9tbS9ndXAuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbW0vZ3VwLmNcbkBAIC0xNTk0LDcgJiM0MzsxNTk0LDggQEAgaW50IGZpeHVwX3VzZXJfZmF1bHQoc3RydWN0IG1tX3N0cnVjdCAqbW0sXG4gXHRcdCAqIGNvdWxkIHRlbGwgdGhlIGNhbGxlcnMgc28gdGhleSBkbyBub3QgbmVlZCB0byB1bmxvY2suXG4gXHRcdCAqL1xuIFx0XHRtbWFwX3JlYWRfbG9jayhtbSk7XG4tXHRcdCp1bmxvY2tlZCA9IHRydWU7XG4mIzQzO1x0XHRpZiAodW5sb2NrZWQpXG4mIzQzO1x0XHRcdCp1bmxvY2tlZCA9IHRydWU7XG4gXHRcdHJldHVybiAwO1xuIFx0fVxuIFxuQEAgLTE2MDgsNyAmIzQzOzE2MDksOCBAQCBpbnQgZml4dXBfdXNlcl9mYXVsdChzdHJ1Y3QgbW1fc3RydWN0ICptbSxcbiBcbiBcdGlmIChyZXQgXHUwMDI2IFZNX0ZBVUxUX1JFVFJZKSB7XG4gXHRcdG1tYXBfcmVhZF9sb2NrKG1tKTtcbi1cdFx0KnVubG9ja2VkID0gdHJ1ZTtcbiYjNDM7XHRcdGlmICh1bmxvY2tlZClcbiYjNDM7XHRcdFx0KnVubG9ja2VkID0gdHJ1ZTtcbiBcdFx0ZmF1bHRfZmxhZ3MgfD0gRkFVTFRfRkxBR19UUklFRDtcbiBcdFx0Z290byByZXRyeTtcbiBcdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwNzowNDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7RlVURVgmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtmaXh1cF91c2VyX2ZhdWx0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSBpbiBgZml4dXBfdXNlcl9mYXVsdGAgd2hlbiB0aGUgYHVubG9ja2VkYCBwYXJhbWV0ZXIgaXMgTlVMTC4gVGhpcyBmdW5jdGlvbiBpcyByZWFjaGFibGUgZnJvbSB1c2VyIHNwYWNlIHZpYSBmdXRleCBvcGVyYXRpb25zIChlLmcuLCBgZmF1bHRfaW5fdXNlcl93cml0ZWFibGVgKSwgbWFraW5nIGl0IGEgY3JpdGljYWwgcGF0aCB0byBmdXp6LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMTNhMjgyMDkyOTgwM2NmMTE2NDk1OGQ2NGI1ZTZjMzdmYmY2NjhiMwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgQXVnIDI2IDA3OjA0OjQyIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbW0vZ3VwLmMgYi9tbS9ndXAuYwppbmRleCAwNjkyMTE5Yjc5MDQzLi5kMTI0NzVhN2Y3Y2NiIDEwMDY0NAotLS0gYS9tbS9ndXAuYwomIzQzOyYjNDM7JiM0MzsgYi9tbS9ndXAuYwpAQCAtMTU5NCw3ICYjNDM7MTU5NCw4IEBAIGludCBmaXh1cF91c2VyX2ZhdWx0KHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLAogCQkgKiBjb3VsZCB0ZWxsIHRoZSBjYWxsZXJzIHNvIHRoZXkgZG8gbm90IG5lZWQgdG8gdW5sb2NrLgogCQkgKi8KIAkJbW1hcF9yZWFkX2xvY2sobW0pOwotCQkqdW5sb2NrZWQgPSB0cnVlOwomIzQzOwkJaWYgKHVubG9ja2VkKQomIzQzOwkJCSp1bmxvY2tlZCA9IHRydWU7CiAJCXJldHVybiAwOwogCX0KIApAQCAtMTYwOCw3ICYjNDM7MTYwOSw4IEBAIGludCBmaXh1cF91c2VyX2ZhdWx0KHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLAogCiAJaWYgKHJldCAmYW1wOyBWTV9GQVVMVF9SRVRSWSkgewogCQltbWFwX3JlYWRfbG9jayhtbSk7Ci0JCSp1bmxvY2tlZCA9IHRydWU7CiYjNDM7CQlpZiAodW5sb2NrZWQpCiYjNDM7CQkJKnVubG9ja2VkID0gdHJ1ZTsKIAkJZmF1bHRfZmxhZ3MgfD0gRkFVTFRfRkxBR19UUklFRDsKIAkJZ290byByZXRyeTsKIAl9CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDA3OjA0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwNzMKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiA3MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4KCioqQW5hbHl6aW5nIGEgTWVtb3J5IE1hbmFnZW1lbnQgUGF0Y2gqKgoKQWxyaWdodCwgc28gSSYjMzk7bSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCYjMzk7cyB0b3VjaGluZyBgbW0vZ3VwLmNgLCB3aGljaCBpcyBhbHdheXMgaW50ZXJlc3RpbmcgYmVjYXVzZSB0aGF0JiMzOTtzIHRoZSBoZWFydCBvZiB0aGUgZ2V0X3VzZXJfcGFnZXMgZnVuY3Rpb25hbGl0eSBhbmQgbWVtb3J5IGZhdWx0IGhhbmRsaW5nLiBUaGUgc3BlY2lmaWMgZnVuY3Rpb24gdGhleSYjMzk7cmUgbW9kaWZ5aW5nIGlzIGBmaXh1cF91c2VyX2ZhdWx0YC4gUmlnaHQsIHNvIHRoaXMgaXMgd2hlcmUgdGhleSYjMzk7cmUgdHJ5aW5nIHRvIHJlc29sdmUgYSB1c2VyLXNwYWNlIG1lbW9yeSBhY2Nlc3MgaXNzdWUuCgpUaGUga2V5IGNoYW5nZSBpcyB0aGV5JiMzOTt2ZSBhZGRlZCBhIGNvbmRpdGlvbmFsIGNoZWNrOiBgaWYgKHVubG9ja2VkKWAuIFRoaXMgc3VnZ2VzdHMgdGhhdCBgdW5sb2NrZWRgIGlzIGxpa2VseSBhIHBvaW50ZXIgdG8gYSBib29sZWFuIHZhcmlhYmxlLiBFc3NlbnRpYWxseSwgdGhleSBhcmUgZW5zdXJpbmcgdGhhdCB0aGV5IG9ubHkgc2V0IGAqdW5sb2NrZWQgPSB0cnVlYCAocHJlc3VtYWJseSBpbmRpY2F0aW5nIHRoYXQgc29tZSBsb2NraW5nIGlzIG5vIGxvbmdlciByZXF1aXJlZCkgaWYgdGhlIGB1bmxvY2tlZGAgcG9pbnRlciBpcyB2YWxpZC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoaXMgaXMgcHJvYmFibHkgbWVhbnQgdG8gYWRkcmVzcyBhIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbiBvciBhIG1lbW9yeSBzYWZldHkgaXNzdWUuIFRoZXkgcHJvYmFibHkgZG9uJiMzOTt0IHdhbnQgdG8gd3JpdGUgdG8gdGhpcyB2YXJpYWJsZSBpZiBpdCYjMzk7cyBwb2ludGluZyB0byBpbnZhbGlkIG1lbW9yeS4gSSYjMzk7bGwgbmVlZCB0byBkaWcgZGVlcGVyIGludG8gdGhlIGNvZGUgdG8gdW5kZXJzdGFuZCB0aGUgc3BlY2lmaWMgY29udGV4dCBhbmQgZXhhY3RseSB3aHkgdGhpcyBjb25kaXRpb25hbCBjaGVjayBoYXMgYmVlbiBkZWVtZWQgbmVjZXNzYXJ5LiBJIHN1c3BlY3QgaXQmIzM5O3MgYWJvdXQgYXZvaWRpbmcgYSBkb3VibGUtZnJlZSBvciBzb21lIG90aGVyIGNvcnJ1cHRpb24gcmVsYXRlZCB0byB0aGUgbG9ja2luZy91bmxvY2tpbmcgcHJvY2Vzcy4gTXkgbmV4dCBzdGVwIGlzIHRvIGV4YW1pbmUgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaW4gYGZpeHVwX3VzZXJfZmF1bHRgLCBhbmQgYWxzbyB0cmFjZSBob3cgYHVubG9ja2VkYCBpcyBpbml0aWFsaXplZCBhbmQgdXNlZCB0aHJvdWdob3V0IHRoYXQgY29kZSBwYXRoLCB0byBncmFzcCB0aGUgcmF0aW9uYWxlIGJlaGluZCB0aGlzIHBhdGNoIGNvbXBsZXRlbHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMDc6MDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Zml4dXBfdXNlcl9mYXVsdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL2d1cC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL2d1cC5jPTE1MTI9c3RhdGljIGJvb2wgdm1hX3Blcm1pdHNfZmF1bHQoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsXG4tLVxubW0vZ3VwLmMtMTUzNS0vKipcbm1tL2d1cC5jOjE1MzY6ICogZml4dXBfdXNlcl9mYXVsdCgpIC0gbWFudWFsbHkgcmVzb2x2ZSBhIHVzZXIgcGFnZSBmYXVsdFxubW0vZ3VwLmMtMTUzNy0gKiBAbW06XHRcdG1tX3N0cnVjdCBvZiB0YXJnZXQgbW1cbi0tXG5tbS9ndXAuYy0xNTYzLSAqL1xubW0vZ3VwLmM6MTU2NDppbnQgZml4dXBfdXNlcl9mYXVsdChzdHJ1Y3QgbW1fc3RydWN0ICptbSxcbm1tL2d1cC5jLTE1NjUtXHRcdCAgICAgdW5zaWduZWQgbG9uZyBhZGRyZXNzLCB1bnNpZ25lZCBpbnQgZmF1bHRfZmxhZ3MsXG4tLVxubW0vZ3VwLmMtMTYxOS19XG5tbS9ndXAuYzoxNjIwOkVYUE9SVF9TWU1CT0xfR1BMKGZpeHVwX3VzZXJfZmF1bHQpO1xubW0vZ3VwLmMtMTYyMS1cbi0tXG5tbS9ndXAuYz0yMTE3PXNpemVfdCBmYXVsdF9pbl9zYWZlX3dyaXRlYWJsZShjb25zdCBjaGFyIF9fdXNlciAqdWFkZHIsIHNpemVfdCBzaXplKVxuLS1cbm1tL2d1cC5jLTIxMzAtXHRmb3IgKGN1ciA9IHN0YXJ0OyBjdXIgXHUwMDI2XHUwMDI2IGN1ciBcdTAwM2MgZW5kOyBjdXIgPSBQQUdFX0FMSUdOX0RPV04oY3VyICYjNDM7IFBBR0VfU0laRSkpXG5tbS9ndXAuYzoyMTMxOlx0XHRpZiAoZml4dXBfdXNlcl9mYXVsdChtbSwgY3VyLCBGQVVMVF9GTEFHX1dSSVRFLCBcdTAwMjZ1bmxvY2tlZCkpXG5tbS9ndXAuYy0yMTMyLVx0XHRcdGJyZWFrO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDA3OjA0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI4NTYKCQkJCQkJCW91dHB1dDogMjYKCQkJCQkJCXRob3VnaHRzOiA0OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBQb3RlbnRpYWwgTlVMTCBQb2ludGVyIERlcmVmZXJlbmNlKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggY2xhaW1zIHRvIGFkZHJlc3MgYSBwb3NzaWJsZSBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2Ugd2l0aGluIHRoZSBgZml4dXBfdXNlcl9mYXVsdGAgZnVuY3Rpb24sIHNwZWNpZmljYWxseSB3aGVuIHRoZSBgdW5sb2NrZWRgIHBvaW50ZXIgaXMgdW5leHBlY3RlZGx5IE5VTEwuIFRoYXQmIzM5O3MgYSBjbGFzc2ljIGJ1ZyBzY2VuYXJpbywgYW5kIHdlIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcm9vdCBjYXVzZS4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7V2hlcmUgYW5kIGhvdyBpcyBgZml4dXBfdXNlcl9mYXVsdGAgYmVpbmcgaW52b2tlZD8mIzM0OyBUaGUgY3JpdGljYWwgcXVlc3Rpb24gaXMsIHdobyBpcyBjYWxsaW5nIGl0LCBhbmQgdW5kZXIgd2hhdCBjb25kaXRpb25zIG1pZ2h0IGB1bmxvY2tlZGAgYmUgbGVmdCB1bmluaXRpYWxpemVkIG9yIGluYWR2ZXJ0ZW50bHkgc2V0IHRvIE5VTEw/IE15IGZvY3VzIG5vdyBzaGlmdHMgdG8gdHJhY2luZyB0aGUgY2FsbCBwYXRocyB0byB0aGF0IGZ1bmN0aW9uLCBzY3J1dGluaXppbmcgdGhlIHN1cnJvdW5kaW5nIGNvZGUgZm9yIGFueSBjbHVlcy4gSSBuZWVkIHRvIGlkZW50aWZ5IHRoZSBjb2RlIGJyYW5jaGVzIHRoYXQgY291bGQgbGVhZCB0byB0aGlzIE5VTEwgdmFsdWUgYW5kIGRldGVybWluZSBpZiB0aGUgbG9naWMgaXMgZmxhd2VkLCBvciBpZiBhbiB1bmV4cGVjdGVkIHN0YXRlIGlzIGJlaW5nIGVuY291bnRlcmVkLiBMZXQmIzM5O3Mgc2VlIHdobyYjMzk7cyBwbGF5aW5nIGZhc3QgYW5kIGxvb3NlIHdpdGggdGhhdCBwb2ludGVyLCBzaGFsbCB3ZT8KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwNzowNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtmaXh1cF91c2VyX2ZhdWx0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvYXJjL2tlcm5lbC9wcm9jZXNzLmM9NDY9U1lTQ0FMTF9ERUZJTkUzKGFyY191c3JfY21weGNoZywgaW50IF9fdXNlciAqLCB1YWRkciwgaW50LCBleHBlY3RlZCwgaW50LCBuZXcpXG4tLVxuYXJjaC9hcmMva2VybmVsL3Byb2Nlc3MuYy05My1cdG1tYXBfcmVhZF9sb2NrKGN1cnJlbnQtXHUwMDNlbW0pO1xuYXJjaC9hcmMva2VybmVsL3Byb2Nlc3MuYzo5NDpcdHJldCA9IGZpeHVwX3VzZXJfZmF1bHQoY3VycmVudC1cdTAwM2VtbSwgKHVuc2lnbmVkIGxvbmcpIHVhZGRyLFxuYXJjaC9hcmMva2VybmVsL3Byb2Nlc3MuYy05NS1cdFx0XHQgICAgICAgRkFVTFRfRkxBR19XUklURSwgTlVMTCk7XG4tLVxuYXJjaC9zMzkwL3BjaS9wY2lfbW1pby5jPTEyOD1TWVNDQUxMX0RFRklORTMoczM5MF9wY2lfbW1pb193cml0ZSwgdW5zaWduZWQgbG9uZywgbW1pb19hZGRyLFxuLS1cbmFyY2gvczM5MC9wY2kvcGNpX21taW8uYy0xODQtXHRpZiAocmV0KSB7XG5hcmNoL3MzOTAvcGNpL3BjaV9tbWlvLmM6MTg1Olx0XHRmaXh1cF91c2VyX2ZhdWx0KGN1cnJlbnQtXHUwMDNlbW0sIG1taW9fYWRkciwgRkFVTFRfRkxBR19XUklURSwgTlVMTCk7XG5hcmNoL3MzOTAvcGNpL3BjaV9tbWlvLmMtMTg2LVx0XHRyZXQgPSBmb2xsb3dfcGZubWFwX3N0YXJ0KFx1MDAyNmFyZ3MpO1xuLS1cbmFyY2gvczM5MC9wY2kvcGNpX21taW8uYz0yODM9U1lTQ0FMTF9ERUZJTkUzKHMzOTBfcGNpX21taW9fcmVhZCwgdW5zaWduZWQgbG9uZywgbW1pb19hZGRyLFxuLS1cbmFyY2gvczM5MC9wY2kvcGNpX21taW8uYy0zMzYtXHRpZiAocmV0KSB7XG5hcmNoL3MzOTAvcGNpL3BjaV9tbWlvLmM6MzM3Olx0XHRmaXh1cF91c2VyX2ZhdWx0KGN1cnJlbnQtXHUwMDNlbW0sIG1taW9fYWRkciwgMCwgTlVMTCk7XG5hcmNoL3MzOTAvcGNpL3BjaV9tbWlvLmMtMzM4LVx0XHRyZXQgPSBmb2xsb3dfcGZubWFwX3N0YXJ0KFx1MDAyNmFyZ3MpO1xuLS1cbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmM9NTQwPXN0YXRpYyBpbnQgZm9sbG93X2ZhdWx0X3BmbihzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgc3RydWN0IG1tX3N0cnVjdCAqbW0sXG4tLVxuZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYy01NTAtXG5kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jOjU1MTpcdFx0cmV0ID0gZml4dXBfdXNlcl9mYXVsdChtbSwgdmFkZHIsXG5kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jLTU1Mi1cdFx0XHRcdCAgICAgICBGQVVMVF9GTEFHX1JFTU9URSB8XG4tLVxuaW5jbHVkZS9saW51eC9tbS5oPTMxNzg9ZXh0ZXJuIHZtX2ZhdWx0X3QgaGFuZGxlX21tX2ZhdWx0KHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLFxuLS1cbmluY2x1ZGUvbGludXgvbW0uaC0zMTgwLVx0XHRcdFx0ICBzdHJ1Y3QgcHRfcmVncyAqcmVncyk7XG5pbmNsdWRlL2xpbnV4L21tLmg6MzE4MTpleHRlcm4gaW50IGZpeHVwX3VzZXJfZmF1bHQoc3RydWN0IG1tX3N0cnVjdCAqbW0sXG5pbmNsdWRlL2xpbnV4L21tLmgtMzE4Mi1cdFx0XHQgICAgdW5zaWduZWQgbG9uZyBhZGRyZXNzLCB1bnNpZ25lZCBpbnQgZmF1bHRfZmxhZ3MsXG4tLVxuaW5jbHVkZS9saW51eC9tbS5oPTMxODk9c3RhdGljIGlubGluZSB2bV9mYXVsdF90IGhhbmRsZV9tbV9mYXVsdChzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSxcbi0tXG5pbmNsdWRlL2xpbnV4L21tLmgtMzE5Ni19XG5pbmNsdWRlL2xpbnV4L21tLmg6MzE5NzpzdGF0aWMgaW5saW5lIGludCBmaXh1cF91c2VyX2ZhdWx0KHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCB1bnNpZ25lZCBsb25nIGFkZHJlc3MsXG5pbmNsdWRlL2xpbnV4L21tLmgtMzE5OC1cdFx0dW5zaWduZWQgaW50IGZhdWx0X2ZsYWdzLCBib29sICp1bmxvY2tlZClcbi0tXG5rZXJuZWwvZnV0ZXgvY29yZS5jPTczOD1pbnQgZmF1bHRfaW5fdXNlcl93cml0ZWFibGUodTMyIF9fdXNlciAqdWFkZHIpXG4tLVxua2VybmVsL2Z1dGV4L2NvcmUuYy03NDMtXHRtbWFwX3JlYWRfbG9jayhtbSk7XG5rZXJuZWwvZnV0ZXgvY29yZS5jOjc0NDpcdHJldCA9IGZpeHVwX3VzZXJfZmF1bHQobW0sICh1bnNpZ25lZCBsb25nKXVhZGRyLFxua2VybmVsL2Z1dGV4L2NvcmUuYy03NDUtXHRcdFx0ICAgICAgIEZBVUxUX0ZMQUdfV1JJVEUsIE5VTEwpO1xuLS1cbmtlcm5lbC90cmFjZS90cmFjZV9ldmVudHNfdXNlci5jPTQzNT1zdGF0aWMgaW50IHVzZXJfZXZlbnRfbW1fZmF1bHRfaW4oc3RydWN0IHVzZXJfZXZlbnRfbW0gKm1tLCB1bnNpZ25lZCBsb25nIHVhZGRyLFxuLS1cbmtlcm5lbC90cmFjZS90cmFjZV9ldmVudHNfdXNlci5jLTQ1NS1cbmtlcm5lbC90cmFjZS90cmFjZV9ldmVudHNfdXNlci5jOjQ1NjpcdHJldCA9IGZpeHVwX3VzZXJfZmF1bHQobW0tXHUwMDNlbW0sIHVhZGRyLCBGQVVMVF9GTEFHX1dSSVRFIHwgRkFVTFRfRkxBR19SRU1PVEUsXG5rZXJuZWwvdHJhY2UvdHJhY2VfZXZlbnRzX3VzZXIuYy00NTctXHRcdFx0ICAgICAgIFx1MDAyNnVubG9ja2VkKTtcbi0tXG5tbS9ndXAuYz0xNTEyPXN0YXRpYyBib29sIHZtYV9wZXJtaXRzX2ZhdWx0KHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLFxuLS1cbm1tL2d1cC5jLTE1MzUtLyoqXG5tbS9ndXAuYzoxNTM2OiAqIGZpeHVwX3VzZXJfZmF1bHQoKSAtIG1hbnVhbGx5IHJlc29sdmUgYSB1c2VyIHBhZ2UgZmF1bHRcbm1tL2d1cC5jLTE1MzctICogQG1tOlx0XHRtbV9zdHJ1Y3Qgb2YgdGFyZ2V0IG1tXG4tLVxubW0vZ3VwLmMtMTU2My0gKi9cbm1tL2d1cC5jOjE1NjQ6aW50IGZpeHVwX3VzZXJfZmF1bHQoc3RydWN0IG1tX3N0cnVjdCAqbW0sXG5tbS9ndXAuYy0xNTY1LVx0XHQgICAgIHVuc2lnbmVkIGxvbmcgYWRkcmVzcywgdW5zaWduZWQgaW50IGZhdWx0X2ZsYWdzLFxuLS1cbm1tL2d1cC5jLTE2MTktfVxubW0vZ3VwLmM6MTYyMDpFWFBPUlRfU1lNQk9MX0dQTChmaXh1cF91c2VyX2ZhdWx0KTtcbm1tL2d1cC5jLTE2MjEtXG4tLVxubW0vZ3VwLmM9MjExNz1zaXplX3QgZmF1bHRfaW5fc2FmZV93cml0ZWFibGUoY29uc3QgY2hhciBfX3VzZXIgKnVhZGRyLCBzaXplX3Qgc2l6ZSlcbi0tXG5tbS9ndXAuYy0yMTMwLVx0Zm9yIChjdXIgPSBzdGFydDsgY3VyIFx1MDAyNlx1MDAyNiBjdXIgXHUwMDNjIGVuZDsgY3VyID0gUEFHRV9BTElHTl9ET1dOKGN1ciAmIzQzOyBQQUdFX1NJWkUpKVxubW0vZ3VwLmM6MjEzMTpcdFx0aWYgKGZpeHVwX3VzZXJfZmF1bHQobW0sIGN1ciwgRkFVTFRfRkxBR19XUklURSwgXHUwMDI2dW5sb2NrZWQpKVxubW0vZ3VwLmMtMjEzMi1cdFx0XHRicmVhaztcbi0tXG52aXJ0L2t2bS9rdm1fbWFpbi5jPTI5Mzk9c3RhdGljIGludCBodmFfdG9fcGZuX3JlbWFwcGVkKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLFxuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmMtMjk2MC1cdFx0Ym9vbCB1bmxvY2tlZCA9IGZhbHNlO1xudmlydC9rdm0va3ZtX21haW4uYzoyOTYxOlx0XHRyID0gZml4dXBfdXNlcl9mYXVsdChjdXJyZW50LVx1MDAzZW1tLCBrZnAtXHUwMDNlaHZhLFxudmlydC9rdm0va3ZtX21haW4uYy0yOTYyLVx0XHRcdFx0ICAgICAod3JpdGVfZmF1bHQgPyBGQVVMVF9GTEFHX1dSSVRFIDogMCksXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMDc6MDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDczMAoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDIxNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBLZXJuZWwgVnVsbmVyYWJpbGl0eSoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgYSBoYW5kbGUgb24gYSBwb3RlbnRpYWwga2VybmVsIGJ1Zy4gSXQgbG9va3MgbGlrZSBjYWxsZXJzIGFyZSBwYXNzaW5nIGBOVUxMYCBmb3IgdGhlIGB1bmxvY2tlZGAgYXJndW1lbnQgaW4gYSBmZXcgcGxhY2VzOiBgYXJjX3Vzcl9jbXB4Y2hnYCBpbiBgYXJjaC9hcmMva2VybmVsL3Byb2Nlc3MuY2AsIHRoZSBgczM5MF9wY2lfbW1pb193cml0ZWAgYW5kIGBzMzkwX3BjaV9tbWlvX3JlYWRgIGZ1bmN0aW9ucyBpbiBgYXJjaC9zMzkwL3BjaS9wY2lfbW1pby5jYCwgYW5kIGZpbmFsbHksIGBmYXVsdF9pbl91c2VyX3dyaXRlYWJsZWAgaW4gYGtlcm5lbC9mdXRleC9jb3JlLmNgLgoKVGhlIGhlYXJ0IG9mIHRoZSBwcm9ibGVtIHNlZW1zIHRvIGJlIHRoYXQgYGZpeHVwX3VzZXJfZmF1bHRgIGlzbiYjMzk7dCBoYW5kbGluZyB0aGlzIGBOVUxMYCB2YWx1ZSBjb3JyZWN0bHkuIFNwZWNpZmljYWxseSwgaXQmIzM5O3MgZGVyZWZlcmVuY2luZyBgdW5sb2NrZWRgIHdoZW4gaXQmIzM5O3MgYE5VTExgLCBsZWFkaW5nIHRvIGEgY3Jhc2guIFdlIGtub3cgdGhpcyBpcyBoYXBwZW5pbmcgaW4gYGZhdWx0X2luX3VzZXJfd3JpdGVhYmxlYCBhbmQgcG90ZW50aWFsbHkgaW4gdGhvc2Ugb3RoZXIgZnVuY3Rpb25zIEkgbGlzdGVkLgoKVGhpcyBpcyBkZWZpbml0ZWx5IHNvbWV0aGluZyB3b3J0aCBmdXp6aW5nLiBBIGtlcm5lbCBjcmFzaCwgc3BlY2lmaWNhbGx5IGEgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlLCBpcyBhIHByZXR0eSBzZXJpb3VzIHZ1bG5lcmFiaWxpdHksIGFuZCB0aGUgZmFjdCB0aGF0IGl0IGludm9sdmVzIGZ1dGV4IOKAkyBhIHJlbGF0aXZlbHkgY29tbW9uIGtlcm5lbCBwcmltaXRpdmUg4oCTIG1lYW5zIGl0JiMzOTtzIGxpa2VseSBhIHJlYWNoYWJsZSBwYXRoLiBUaGlzIGlzIGEgZ29vZCBmaW5kLiBMZXQmIzM5O3MgZGlnIGRlZXBlciBpbnRvIGBmYXVsdF9pbl91c2VyX3dyaXRlYWJsZWAgaW4gYGtlcm5lbC9mdXRleC9jb3JlLmNgIGFuZCB1bmRlcnN0YW5kIHRoZSBleGFjdCBjb25kaXRpb25zIHRoYXQgdHJpZ2dlciB0aGlzIGBOVUxMYCBkZXJlZmVyZW5jZSBhbmQgaG93IHRvIHRyaWdnZXIgaXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMDc6MDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZmF1bHRfaW5fdXNlcl93cml0ZWFibGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvZnV0ZXgmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2Z1dGV4L2NvcmUuYz01MDI9aW50IGdldF9mdXRleF9rZXkodTMyIF9fdXNlciAqdWFkZHIsIHVuc2lnbmVkIGludCBmbGFncywgdW5pb24gZnV0ZXhfa2V5ICprZXksXG4tLVxua2VybmVsL2Z1dGV4L2NvcmUuYy03MjYtLyoqXG5rZXJuZWwvZnV0ZXgvY29yZS5jOjcyNzogKiBmYXVsdF9pbl91c2VyX3dyaXRlYWJsZSgpIC0gRmF1bHQgaW4gdXNlciBhZGRyZXNzIGFuZCB2ZXJpZnkgUlcgYWNjZXNzXG5rZXJuZWwvZnV0ZXgvY29yZS5jLTcyOC0gKiBAdWFkZHI6XHRwb2ludGVyIHRvIGZhdWx0aW5nIHVzZXIgc3BhY2UgYWRkcmVzc1xuLS1cbmtlcm5lbC9mdXRleC9jb3JlLmMtNzM3LSAqL1xua2VybmVsL2Z1dGV4L2NvcmUuYzo3Mzg6aW50IGZhdWx0X2luX3VzZXJfd3JpdGVhYmxlKHUzMiBfX3VzZXIgKnVhZGRyKVxua2VybmVsL2Z1dGV4L2NvcmUuYy03Mzkte1xuLS1cbmtlcm5lbC9mdXRleC9jb3JlLmM9OTY4PXN0YXRpYyBpbnQgaGFuZGxlX2Z1dGV4X2RlYXRoKHUzMiBfX3VzZXIgKnVhZGRyLCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKmN1cnIsXG4tLVxua2VybmVsL2Z1dGV4L2NvcmUuYy0xMDU0LVx0XHRjYXNlIC1FRkFVTFQ6XG5rZXJuZWwvZnV0ZXgvY29yZS5jOjEwNTU6XHRcdFx0aWYgKGZhdWx0X2luX3VzZXJfd3JpdGVhYmxlKHVhZGRyKSlcbmtlcm5lbC9mdXRleC9jb3JlLmMtMTA1Ni1cdFx0XHRcdHJldHVybiAtMTtcbi0tXG5rZXJuZWwvZnV0ZXgvZnV0ZXguaD0yODU9ZXh0ZXJuIHZvaWQgZnV0ZXhfd2FrZV9tYXJrKHN0cnVjdCB3YWtlX3FfaGVhZCAqd2FrZV9xLCBzdHJ1Y3QgZnV0ZXhfcSAqcSk7XG5rZXJuZWwvZnV0ZXgvZnV0ZXguaC0yODYtXG5rZXJuZWwvZnV0ZXgvZnV0ZXguaDoyODc6ZXh0ZXJuIGludCBmYXVsdF9pbl91c2VyX3dyaXRlYWJsZSh1MzIgX191c2VyICp1YWRkcik7XG5rZXJuZWwvZnV0ZXgvZnV0ZXguaC0yODgtZXh0ZXJuIHN0cnVjdCBmdXRleF9xICpmdXRleF90b3Bfd2FpdGVyKHN0cnVjdCBmdXRleF9oYXNoX2J1Y2tldCAqaGIsIHVuaW9uIGZ1dGV4X2tleSAqa2V5KTtcbi0tXG5rZXJuZWwvZnV0ZXgvcGkuYz02NzQ9c3RhdGljIGludCBfX2ZpeHVwX3BpX3N0YXRlX293bmVyKHUzMiBfX3VzZXIgKnVhZGRyLCBzdHJ1Y3QgZnV0ZXhfcSAqcSxcbi0tXG5rZXJuZWwvZnV0ZXgvcGkuYy04MDAtXHRjYXNlIC1FRkFVTFQ6XG5rZXJuZWwvZnV0ZXgvcGkuYzo4MDE6XHRcdGVyciA9IGZhdWx0X2luX3VzZXJfd3JpdGVhYmxlKHVhZGRyKTtcbmtlcm5lbC9mdXRleC9waS5jLTgwMi1cdFx0YnJlYWs7XG4tLVxua2VybmVsL2Z1dGV4L3BpLmMtODI3LVx0Lypcbmtlcm5lbC9mdXRleC9waS5jOjgyODpcdCAqIGZhdWx0X2luX3VzZXJfd3JpdGVhYmxlKCkgZmFpbGVkIHNvIHVzZXIgc3RhdGUgaXMgaW1tdXRhYmxlLiBBdFxua2VybmVsL2Z1dGV4L3BpLmMtODI5LVx0ICogYmVzdCB3ZSBjYW4gbWFrZSB0aGUga2VybmVsIHN0YXRlIGNvbnNpc3RlbnQgYnV0IHVzZXIgc3RhdGUgd2lsbFxuLS1cbmtlcm5lbC9mdXRleC9waS5jPTkyMz1pbnQgZnV0ZXhfbG9ja19waSh1MzIgX191c2VyICp1YWRkciwgdW5zaWduZWQgaW50IGZsYWdzLCBrdGltZV90ICp0aW1lLCBpbnQgdHJ5bG9jaylcbi0tXG5rZXJuZWwvZnV0ZXgvcGkuYy0xMTE3LVxua2VybmVsL2Z1dGV4L3BpLmM6MTExODpcdFx0cmV0ID0gZmF1bHRfaW5fdXNlcl93cml0ZWFibGUodWFkZHIpO1xua2VybmVsL2Z1dGV4L3BpLmMtMTExOS1cdFx0aWYgKHJldClcbi0tXG5rZXJuZWwvZnV0ZXgvcGkuYz0xMTQxPXN0YXRpYyBpbnQgX19mdXRleF91bmxvY2tfcGkodTMyIF9fdXNlciAqdWFkZHIsIHVuc2lnbmVkIGludCBmbGFncylcbi0tXG5rZXJuZWwvZnV0ZXgvcGkuYy0xMjk3LVxua2VybmVsL2Z1dGV4L3BpLmM6MTI5ODpcdHJldCA9IGZhdWx0X2luX3VzZXJfd3JpdGVhYmxlKHVhZGRyKTtcbmtlcm5lbC9mdXRleC9waS5jLTEyOTktXHRpZiAoIXJldClcbi0tXG5rZXJuZWwvZnV0ZXgvcmVxdWV1ZS5jPTM4Mj1pbnQgZnV0ZXhfcmVxdWV1ZSh1MzIgX191c2VyICp1YWRkcjEsIHVuc2lnbmVkIGludCBmbGFnczEsXG4tLVxua2VybmVsL2Z1dGV4L3JlcXVldWUuYy01NjMtXHRcdFx0XHRkb3VibGVfdW5sb2NrX2hiKGhiMSwgaGIyKTtcbmtlcm5lbC9mdXRleC9yZXF1ZXVlLmM6NTY0Olx0XHRcdFx0cmV0ID0gZmF1bHRfaW5fdXNlcl93cml0ZWFibGUodWFkZHIyKTtcbmtlcm5lbC9mdXRleC9yZXF1ZXVlLmMtNTY1LVx0XHRcdFx0aWYgKCFyZXQpXG4tLVxua2VybmVsL2Z1dGV4L3dhaXR3YWtlLmM9Mjc4PWludCBmdXRleF93YWtlX29wKHUzMiBfX3VzZXIgKnVhZGRyMSwgdW5zaWduZWQgaW50IGZsYWdzLCB1MzIgX191c2VyICp1YWRkcjIsXG4tLVxua2VybmVsL2Z1dGV4L3dhaXR3YWtlLmMtMzE2LVx0XHRcdGlmIChvcF9yZXQgPT0gLUVGQVVMVCkge1xua2VybmVsL2Z1dGV4L3dhaXR3YWtlLmM6MzE3Olx0XHRcdFx0cmV0ID0gZmF1bHRfaW5fdXNlcl93cml0ZWFibGUodWFkZHIyKTtcbmtlcm5lbC9mdXRleC93YWl0d2FrZS5jLTMxOC1cdFx0XHRcdGlmIChyZXQpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMDc6MDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjQxNgoJCQkJCQkJb3V0cHV0OiAyNwoJCQkJCQkJdGhvdWdodHM6IDExNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipCdWcgRml4ICZhbXA7IEZ1enppbmcgU3RyYXRlZ3k6IEZ1dGV4IE5VTEwgUG9pbnRlciBEZXJlZmVyZW5jZSoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgYSBoYW5kbGUgb24gdGhpcy4gVGhlcmUmIzM5O3MgYSBuYXN0eSBsaXR0bGUgYnVnIGx1cmtpbmcgaW4gYGtlcm5lbC9mdXRleC9jb3JlLmNgLCBzcGVjaWZpY2FsbHkgd2l0aGluIGBmaXh1cF91c2VyX2ZhdWx0YC4gSXQmIzM5O3MgYSBjcml0aWNhbCBpc3N1ZSBiZWNhdXNlIGBmYXVsdF9pbl91c2VyX3dyaXRlYWJsZWAgY2FsbHMgaXQuIFRoZSByb290IG9mIHRoZSBwcm9ibGVtPyBBIGNsYXNzaWMgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIHdoZW4gYHVubG9ja2VkYCBpcywgd2VsbCwgKm51bGwqLiAgVGhhdCYjMzk7cyBhIHRleHRib29rIGZ1enppbmcgY2FuZGlkYXRlIHJpZ2h0IHRoZXJlLgoKTXkgaW1tZWRpYXRlIGZvY3VzLCBuYXR1cmFsbHksIHdpbGwgYmUgb24gdGhvc2UgdHdvIHN5bWJvbHM6IGBmaXh1cF91c2VyX2ZhdWx0YCBhbmQgYGZhdWx0X2luX3VzZXJfd3JpdGVhYmxlYC4gSSYjMzk7bGwgbmVlZCB0byByZWFsbHkgZGlnIGludG8gaG93IHRoZSBgdW5sb2NrZWRgIHBvaW50ZXIgaXMgdXNlZCB3aXRoaW4gdGhvc2UgZnVuY3Rpb25zLgoKQW5kIHNpbmNlIHdlIGFyZSB0YWxraW5nIGFib3V0IGZ1enppbmcsIGxldCYjMzk7cyBzZWUgaWYgd2UgaGF2ZSBzb21lIGdvb2QgZGVmYXVsdCBjb25maWdzIHRvIGhlbHAgdXMgb3V0LiBGb3J0dW5hdGVseSwgdGhlIEZVVEVYIHN1YnN5c3RlbSBsb29rcyBsaWtlIGEgZ29vZCBwbGFjZSB0byBiZS4gSSBzZWVtIHRvIHJlY2FsbCB0aGF0IEZVVEVYIGlzIGVuYWJsZWQgYnkgZGVmYXVsdC4gSSYjMzk7bGwgZG91YmxlLWNoZWNrIGBDT05GSUdfRlVURVhgIGluIGBpbml0L0tjb25maWdgIHRvIGNvbmZpcm0sIGJ1dCBJJiMzOTttIHByZXR0eSBzdXJlIGl0JiMzOTtzIHVzdWFsbHkgb24uIFRoaXMgd2lsbCBnaXZlIG1lIGEgZ29vZCBiYXNlbGluZSBmb3IgbXkgZnV6emluZyBlZmZvcnRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwNzowNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgRlVURVgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtpbml0L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5pdC9LY29uZmlnPTE4Mjc9Y29uZmlnIEJBU0VfU01BTExcbi0tXG5pbml0L0tjb25maWctMTgzMy1cbmluaXQvS2NvbmZpZzoxODM0OmNvbmZpZyBGVVRFWFxuaW5pdC9LY29uZmlnLTE4MzUtXHRib29sIFwmIzM0O0VuYWJsZSBmdXRleCBzdXBwb3J0XCYjMzQ7IGlmIEVYUEVSVFxuLS1cbmluaXQvS2NvbmZpZy0xODQzLVxuaW5pdC9LY29uZmlnOjE4NDQ6Y29uZmlnIEZVVEVYX1BJXG5pbml0L0tjb25maWctMTg0NS1cdGJvb2xcbi0tXG5pbml0L0tjb25maWctMTg0OC1cbmluaXQvS2NvbmZpZzoxODQ5OmNvbmZpZyBGVVRFWF9QUklWQVRFX0hBU0hcbmluaXQvS2NvbmZpZy0xODUwLVx0Ym9vbFxuLS1cbmluaXQvS2NvbmZpZy0xODUzLVxuaW5pdC9LY29uZmlnOjE4NTQ6Y29uZmlnIEZVVEVYX01QT0xcbmluaXQvS2NvbmZpZy0xODU1LVx0Ym9vbFxuLS1cbmluaXQvS2NvbmZpZz0xODU5PWNvbmZpZyBIQVZFX0ZVVEVYX1JPQlVTVF9VTkxPQ0tcbi0tXG5pbml0L0tjb25maWctMTg2MS1cbmluaXQvS2NvbmZpZzoxODYyOmNvbmZpZyBGVVRFWF9ST0JVU1RfVU5MT0NLXG5pbml0L0tjb25maWctMTg2My1cdGRlZl9ib29sIEZVVEVYIFx1MDAyNlx1MDAyNiBIQVZFX0dFTkVSSUNfVkRTTyBcdTAwMjZcdTAwMjYgR0VORVJJQ19JUlFfRU5UUlkgXHUwMDI2XHUwMDI2IFJTRVEgXHUwMDI2XHUwMDI2IEhBVkVfRlVURVhfUk9CVVNUX1VOTE9DS1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwNzowNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MTM2CgkJCQkJCQlvdXRwdXQ6IDEwNgoJCQkJCQkJdGhvdWdodHM6IDEyOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBGVVRFWCBQYXRjaCoqCgpPa2F5LCBzbyBGVVRFWCBpcyBlbmFibGVkIGJ5IGRlZmF1bHQsIHdoaWNoIGltbWVkaWF0ZWx5IHBpcXVlcyBteSBpbnRlcmVzdC4gVGhlIHBhdGNoIEkmIzM5O20gbG9va2luZyBhdCBzcGVjaWZpY2FsbHkgdG91Y2hlcyBgZml4dXBfdXNlcl9mYXVsdGAgd2l0aGluIGBtbS9ndXAuY2AuIEdvb2QsIHRoYXQgbmFycm93cyBteSBmb2N1cy4gSSYjMzk7bSB6ZXJvaW5nIGluIG9uIGBmaXh1cF91c2VyX2ZhdWx0YCBhbmQgc2V0dGluZyBXb3J0aEZ1enppbmcgdG8gdHJ1ZTsgdGhlIGNvbm5lY3Rpb24gaXMgY2xlYXIg4oCTIGEgcG9zc2libGUgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIGluIGBmaXh1cF91c2VyX2ZhdWx0YCB3aGVuIGB1bmxvY2tlZGAgaXMgTlVMTC4KCk15IHRoaW5raW5nIGlzLCBnaXZlbiB0aGlzIGZ1bmN0aW9uJiMzOTtzIHBvdGVudGlhbCByZWFjaGFiaWxpdHkgZnJvbSB1c2VyIHNwYWNlIHZpYSBmdXRleCBvcGVyYXRpb25zIGxpa2UgYGZhdWx0X2luX3VzZXJfd3JpdGVhYmxlYCwgdGhpcyBpcyBhIGhpZ2gtdmFsdWUgdGFyZ2V0IGZvciBmdXp6aW5nLiBUaGUgZnV0ZXggcGF0aCB0aHJvdWdoIHdoaWNoIHRoaXMgZnVuY3Rpb24gaXMgcmVhY2hlZCBtYWtlcyB0aGlzIGEgY3JpdGljYWwgcGF0aCBJIG5lZWQgdG8gc2NydXRpbml6ZS4gVGhhdCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UgaXMgYSBjbGFzc2ljIHZ1bG5lcmFiaWxpdHksIGFuZCB1c2VyLXNwYWNlIGFjY2VzcyByYWlzZXMgdGhlIHN0YWtlcyBjb25zaWRlcmFibHkuIEkgbmVlZCB0byBkaWcgZGVlcGVyIGludG8gdGhlIGZ1dGV4IGludGVyYWN0aW9uIGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDA3OjA1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtGVVRFWCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2ZpeHVwX3VzZXJfZmF1bHQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIGluIGBmaXh1cF91c2VyX2ZhdWx0YCB3aGVuIHRoZSBgdW5sb2NrZWRgIHBhcmFtZXRlciBpcyBOVUxMLiBUaGlzIGZ1bmN0aW9uIGlzIHJlYWNoYWJsZSBmcm9tIHVzZXIgc3BhY2UgdmlhIGZ1dGV4IG9wZXJhdGlvbnMgKGUuZy4sIGBmYXVsdF9pbl91c2VyX3dyaXRlYWJsZWApLCBtYWtpbmcgaXQgYSBjcml0aWNhbCBwYXRoIHRvIGZ1enouJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0ZVVEVYJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Zml4dXBfdXNlcl9mYXVsdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UgaW4gYGZpeHVwX3VzZXJfZmF1bHRgIHdoZW4gdGhlIGB1bmxvY2tlZGAgcGFyYW1ldGVyIGlzIE5VTEwuIFRoaXMgZnVuY3Rpb24gaXMgcmVhY2hhYmxlIGZyb20gdXNlciBzcGFjZSB2aWEgZnV0ZXggb3BlcmF0aW9ucyAoZS5nLiwgYGZhdWx0X2luX3VzZXJfd3JpdGVhYmxlYCksIG1ha2luZyBpdCBhIGNyaXRpY2FsIHBhdGggdG8gZnV6ei4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMDc6MDU8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwNzowNTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSBpbiBgZml4dXBfdXNlcl9mYXVsdGAgYnkgYWRkaW5nIGEgY2hlY2sgZm9yIHRoZSBgdW5sb2NrZWRgIHBvaW50ZXIgYmVmb3JlIGFzc2lnbmluZyB0byBgKnVubG9ja2VkYC4gTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcyBhcmUgcmVsaWFibHkgY2F1Z2h0IGJ5IHN0YW5kYXJkIGtlcm5lbCBwYWdlIGZhdWx0IGhhbmRsaW5nIGFuZCBLQVNBTi4gVGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcywgc3RydWN0dXJlIHBhZGRpbmcgbGVha3MsIG9yIHVuaW5pdGlhbGl6ZWQgdmFsdWVzIGJlaW5nIHVzZWQgaW4gY29udHJvbCBmbG93LiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeQplcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZApkZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpCmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLgoKQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46Ci0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZQogIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTgogIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVAKICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLgotIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLAogIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy4KClJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sCkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuCkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFkKc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3MKdGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi4KCkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0CnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLAphIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXMKdGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmcKdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sCmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSwKY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuCgpTZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6CjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiCiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzCiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuCjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMKICAgb3Igc3RydWN0IGZpZWxkcy4KMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcwogICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLgo0LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2VzcwogICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuCgpTZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjoKLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlcgogIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodAogIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS4KLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZAogIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC4KLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuCgpVc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlCmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAxM2EyODIwOTI5ODAzY2YxMTY0OTU4ZDY0YjVlNmMzN2ZiZjY2OGIzCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBBdWcgMjYgMDc6MDQ6NDIgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9tbS9ndXAuYyBiL21tL2d1cC5jCmluZGV4IDA2OTIxMTliNzkwNDMuLmQxMjQ3NWE3ZjdjY2IgMTAwNjQ0Ci0tLSBhL21tL2d1cC5jCiYjNDM7JiM0MzsmIzQzOyBiL21tL2d1cC5jCkBAIC0xNTk0LDcgJiM0MzsxNTk0LDggQEAgaW50IGZpeHVwX3VzZXJfZmF1bHQoc3RydWN0IG1tX3N0cnVjdCAqbW0sCiAJCSAqIGNvdWxkIHRlbGwgdGhlIGNhbGxlcnMgc28gdGhleSBkbyBub3QgbmVlZCB0byB1bmxvY2suCiAJCSAqLwogCQltbWFwX3JlYWRfbG9jayhtbSk7Ci0JCSp1bmxvY2tlZCA9IHRydWU7CiYjNDM7CQlpZiAodW5sb2NrZWQpCiYjNDM7CQkJKnVubG9ja2VkID0gdHJ1ZTsKIAkJcmV0dXJuIDA7CiAJfQogCkBAIC0xNjA4LDcgJiM0MzsxNjA5LDggQEAgaW50IGZpeHVwX3VzZXJfZmF1bHQoc3RydWN0IG1tX3N0cnVjdCAqbW0sCiAKIAlpZiAocmV0ICZhbXA7IFZNX0ZBVUxUX1JFVFJZKSB7CiAJCW1tYXBfcmVhZF9sb2NrKG1tKTsKLQkJKnVubG9ja2VkID0gdHJ1ZTsKJiM0MzsJCWlmICh1bmxvY2tlZCkKJiM0MzsJCQkqdW5sb2NrZWQgPSB0cnVlOwogCQlmYXVsdF9mbGFncyB8PSBGQVVMVF9GTEFHX1RSSUVEOwogCQlnb3RvIHJldHJ5OwogCX0KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDA3OjA1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwNzAKCQkJCQkJCW91dHB1dDogMTE3CgkJCQkJCQl0aG91Z2h0czogMjgzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIEdVUCBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCBmb3IgYG1tL2d1cC5jYC4gSXQmIzM5O3MgYSBzdHJhaWdodGZvcndhcmQgZml4OiB0aGV5JiMzOTt2ZSBhZGRlZCBhIE5VTEwgY2hlY2sgZm9yIHRoZSBgdW5sb2NrZWRgIHBvaW50ZXIgYmVmb3JlIGRlcmVmZXJlbmNpbmcgaXQuIFNtYXJ0IG1vdmUsIGNhdGNoaW5nIGEgcG90ZW50aWFsIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZS4gVGhlIGNvZGUgbm93IGxvb2tzIGxpa2UgdGhpczoKCmBgYGMKLQkJKnVubG9ja2VkID0gdHJ1ZTsKJiM0MzsJCWlmICh1bmxvY2tlZCkKJiM0MzsJCQkqdW5sb2NrZWQgPSB0cnVlOwpgYGAKCk15IGluaXRpYWwgdGhvdWdodCBpcywgZ29vZCwgc2ltcGxlLCBhbmQgcHJvYmFibHkgc2FmZS4gSSBtZWFuLCBOVUxMIGRlcmVmZXJlbmNlcyBhcmUgdHlwaWNhbGx5IGhhbmRsZWQgcHJldHR5IHdlbGwgYnkgdGhlIGtlcm5lbCBhbHJlYWR5LiBXZSYjMzk7dmUgZ290IG91ciBzdGFuZGFyZCBwYWdlIGZhdWx0IGhhbmRsaW5nLCBvb3BzLCBhbmQgb2YgY291cnNlLCBLQVNBTiBpcyB0aGVyZSB0byBjYXRjaCB0aGVzZSBraW5kcyBvZiB0aGluZ3MuIEl0JiMzOTtzIG5vdCBsaWtlIHRoaXMgcGF0Y2ggaXMgaW50cm9kdWNpbmcgYSBuZXcgYXR0YWNrIHN1cmZhY2UuIEkgY2FuJiMzOTt0IHNlZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2UgaXNzdWVzLCBhbmQgY2VydGFpbmx5IG5vIHJpc2sgb2YgaW5mb3JtYXRpb24gbGVha3MuCgpMZXQgbWUganVzdCBkb3VibGUtY2hlY2sgdGhhdCBsYXN0IHBhcnTigKYgU28sIGB1bmxvY2tlZGAgaXMgYSBwb2ludGVyIHRvIGEgYm9vbGVhbi4gSWYgaXQmIzM5O3MgTlVMTCwgaXQgd2FzIGNyYXNoaW5nIGJlZm9yZS4gTm93LCB3aXRoIHRoZSBjaGVjaywgaXQgZG9lc24mIzM5O3QuIE5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzIHJlYWQgb3IgbGVha2VkLiBUaGUgY29kZSBqdXN0IGF2b2lkcyBhc3NpZ25pbmcgYSB2YWx1ZSB0byBhIHBvaW50ZXIuCgpBbHJpZ2h0LCBhZnRlciBhIHF1aWNrIG1lbnRhbCBjaGVjaywgSSYjMzk7bSBjb25maWRlbnQgdGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcywgc3RydWN0dXJlIHBhZGRpbmcgbGVha3MsIG9yIHVuaW5pdGlhbGl6ZWQgdmFsdWVzIGJlaW5nIHVzZWQgaW4gY29udHJvbCBmbG93LiBJdCYjMzk7cyBhIHN0cmFpZ2h0LXVwIE5VTEwgY2hlY2suIFRoZXJlZm9yZSwgSSYjMzk7bSBnb2luZyB0byBzZXQgYE5lZWRzS01TQU49ZmFsc2VgLiBXZSBkb24mIzM5O3QgbmVlZCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gZm9yIHRoaXM7IHRoZSBleGlzdGluZyBrZXJuZWwgaW5mcmFzdHJ1Y3R1cmUgaXMgc3VmZmljaWVudCB0byBjYXRjaCBhbnkgaXNzdWVzIHJlbGF0ZWQgdG8gdGhpcyBwYXRjaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMDc6MDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UgaW4gYGZpeHVwX3VzZXJfZmF1bHRgIGJ5IGFkZGluZyBhIGNoZWNrIGZvciB0aGUgYHVubG9ja2VkYCBwb2ludGVyIGJlZm9yZSBhc3NpZ25pbmcgdG8gYCp1bmxvY2tlZGAuIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZXMgYXJlIHJlbGlhYmx5IGNhdWdodCBieSBzdGFuZGFyZCBrZXJuZWwgcGFnZSBmYXVsdCBoYW5kbGluZyBhbmQgS0FTQU4uIFRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMsIHN0cnVjdHVyZSBwYWRkaW5nIGxlYWtzLCBvciB1bmluaXRpYWxpemVkIHZhbHVlcyBiZWluZyB1c2VkIGluIGNvbnRyb2wgZmxvdy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIGluIGBmaXh1cF91c2VyX2ZhdWx0YCBieSBhZGRpbmcgYSBjaGVjayBmb3IgdGhlIGB1bmxvY2tlZGAgcG9pbnRlciBiZWZvcmUgYXNzaWduaW5nIHRvIGAqdW5sb2NrZWRgLiBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzIGFyZSByZWxpYWJseSBjYXVnaHQgYnkgc3RhbmRhcmQga2VybmVsIHBhZ2UgZmF1bHQgaGFuZGxpbmcgYW5kIEtBU0FOLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLCBzdHJ1Y3R1cmUgcGFkZGluZyBsZWFrcywgb3IgdW5pbml0aWFsaXplZCB2YWx1ZXMgYmVpbmcgdXNlZCBpbiBjb250cm9sIGZsb3cuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnkuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDA3OjA0OjQzLjU1OTA3MDIwM1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMzMjI2MzMzNDU2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkZVVEVYXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZml4dXBfdXNlcl9mYXVsdFwiXG4gIF0sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UgaW4gYGZpeHVwX3VzZXJfZmF1bHRgIGJ5IGFkZGluZyBhIGNoZWNrIGZvciB0aGUgYHVubG9ja2VkYCBwb2ludGVyIGJlZm9yZSBhc3NpZ25pbmcgdG8gYCp1bmxvY2tlZGAuIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZXMgYXJlIHJlbGlhYmx5IGNhdWdodCBieSBzdGFuZGFyZCBrZXJuZWwgcGFnZSBmYXVsdCBoYW5kbGluZyBhbmQgS0FTQU4uIFRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMsIHN0cnVjdHVyZSBwYWRkaW5nIGxlYWtzLCBvciB1bmluaXRpYWxpemVkIHZhbHVlcyBiZWluZyB1c2VkIGluIGNvbnRyb2wgZmxvdy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UgaW4gYGZpeHVwX3VzZXJfZmF1bHRgIHdoZW4gdGhlIGB1bmxvY2tlZGAgcGFyYW1ldGVyIGlzIE5VTEwuIFRoaXMgZnVuY3Rpb24gaXMgcmVhY2hhYmxlIGZyb20gdXNlciBzcGFjZSB2aWEgZnV0ZXggb3BlcmF0aW9ucyAoZS5nLiwgYGZhdWx0X2luX3VzZXJfd3JpdGVhYmxlYCksIG1ha2luZyBpdCBhIGNyaXRpY2FsIHBhdGggdG8gZnV6ei5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMDc6MDQ6NDMuNTU5MDc2MTQzWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MTMwMDQ2MjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAxM2EyODIwOTI5ODAzY2YxMTY0OTU4ZDY0YjVlNmMzN2ZiZjY2OGIzXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBXZWQgQXVnIDI2IDA3OjA0OjQyIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL21tL2d1cC5jIGIvbW0vZ3VwLmNcXG5pbmRleCAwNjkyMTE5Yjc5MDQzLi5kMTI0NzVhN2Y3Y2NiIDEwMDY0NFxcbi0tLSBhL21tL2d1cC5jXFxuKysrIGIvbW0vZ3VwLmNcXG5AQCAtMTU5NCw3ICsxNTk0LDggQEAgaW50IGZpeHVwX3VzZXJfZmF1bHQoc3RydWN0IG1tX3N0cnVjdCAqbW0sXFxuIFxcdFxcdCAqIGNvdWxkIHRlbGwgdGhlIGNhbGxlcnMgc28gdGhleSBkbyBub3QgbmVlZCB0byB1bmxvY2suXFxuIFxcdFxcdCAqL1xcbiBcXHRcXHRtbWFwX3JlYWRfbG9jayhtbSk7XFxuLVxcdFxcdCp1bmxvY2tlZCA9IHRydWU7XFxuK1xcdFxcdGlmICh1bmxvY2tlZClcXG4rXFx0XFx0XFx0KnVubG9ja2VkID0gdHJ1ZTtcXG4gXFx0XFx0cmV0dXJuIDA7XFxuIFxcdH1cXG4gXFxuQEAgLTE2MDgsNyArMTYwOSw4IEBAIGludCBmaXh1cF91c2VyX2ZhdWx0KHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLFxcbiBcXG4gXFx0aWYgKHJldCBcXHUwMDI2IFZNX0ZBVUxUX1JFVFJZKSB7XFxuIFxcdFxcdG1tYXBfcmVhZF9sb2NrKG1tKTtcXG4tXFx0XFx0KnVubG9ja2VkID0gdHJ1ZTtcXG4rXFx0XFx0aWYgKHVubG9ja2VkKVxcbitcXHRcXHRcXHQqdW5sb2NrZWQgPSB0cnVlO1xcbiBcXHRcXHRmYXVsdF9mbGFncyB8PSBGQVVMVF9GTEFHX1RSSUVEO1xcbiBcXHRcXHRnb3RvIHJldHJ5O1xcbiBcXHR9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDA3OjA0OjQzLjk3MzE0NTE1NVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjI1ODE1NTUwNDA0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkZVVEVYXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZml4dXBfdXNlcl9mYXVsdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSBpbiBgZml4dXBfdXNlcl9mYXVsdGAgd2hlbiB0aGUgYHVubG9ja2VkYCBwYXJhbWV0ZXIgaXMgTlVMTC4gVGhpcyBmdW5jdGlvbiBpcyByZWFjaGFibGUgZnJvbSB1c2VyIHNwYWNlIHZpYSBmdXRleCBvcGVyYXRpb25zIChlLmcuLCBgZmF1bHRfaW5fdXNlcl93cml0ZWFibGVgKSwgbWFraW5nIGl0IGEgY3JpdGljYWwgcGF0aCB0byBmdXp6LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAxM2EyODIwOTI5ODAzY2YxMTY0OTU4ZDY0YjVlNmMzN2ZiZjY2OGIzXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBBdWcgMjYgMDc6MDQ6NDIgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9tbS9ndXAuYyBiL21tL2d1cC5jXG5pbmRleCAwNjkyMTE5Yjc5MDQzLi5kMTI0NzVhN2Y3Y2NiIDEwMDY0NFxuLS0tIGEvbW0vZ3VwLmNcbisrKyBiL21tL2d1cC5jXG5AQCAtMTU5NCw3ICsxNTk0LDggQEAgaW50IGZpeHVwX3VzZXJfZmF1bHQoc3RydWN0IG1tX3N0cnVjdCAqbW0sXG4gXHRcdCAqIGNvdWxkIHRlbGwgdGhlIGNhbGxlcnMgc28gdGhleSBkbyBub3QgbmVlZCB0byB1bmxvY2suXG4gXHRcdCAqL1xuIFx0XHRtbWFwX3JlYWRfbG9jayhtbSk7XG4tXHRcdCp1bmxvY2tlZCA9IHRydWU7XG4rXHRcdGlmICh1bmxvY2tlZClcbitcdFx0XHQqdW5sb2NrZWQgPSB0cnVlO1xuIFx0XHRyZXR1cm4gMDtcbiBcdH1cbiBcbkBAIC0xNjA4LDcgKzE2MDksOCBAQCBpbnQgZml4dXBfdXNlcl9mYXVsdChzdHJ1Y3QgbW1fc3RydWN0ICptbSxcbiBcbiBcdGlmIChyZXQgXHUwMDI2IFZNX0ZBVUxUX1JFVFJZKSB7XG4gXHRcdG1tYXBfcmVhZF9sb2NrKG1tKTtcbi1cdFx0KnVubG9ja2VkID0gdHJ1ZTtcbitcdFx0aWYgKHVubG9ja2VkKVxuK1x0XHRcdCp1bmxvY2tlZCA9IHRydWU7XG4gXHRcdGZhdWx0X2ZsYWdzIHw9IEZBVUxUX0ZMQUdfVFJJRUQ7XG4gXHRcdGdvdG8gcmV0cnk7XG4gXHR9XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQwNzowNDo0My45NzMxNDgwOTVaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0Mjc4MTU4Mzk3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uXG5cbioqQW5hbHl6aW5nIGEgTWVtb3J5IE1hbmFnZW1lbnQgUGF0Y2gqKlxuXG5BbHJpZ2h0LCBzbyBJJ20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQncyB0b3VjaGluZyBgbW0vZ3VwLmNgLCB3aGljaCBpcyBhbHdheXMgaW50ZXJlc3RpbmcgYmVjYXVzZSB0aGF0J3MgdGhlIGhlYXJ0IG9mIHRoZSBnZXRfdXNlcl9wYWdlcyBmdW5jdGlvbmFsaXR5IGFuZCBtZW1vcnkgZmF1bHQgaGFuZGxpbmcuIFRoZSBzcGVjaWZpYyBmdW5jdGlvbiB0aGV5J3JlIG1vZGlmeWluZyBpcyBgZml4dXBfdXNlcl9mYXVsdGAuIFJpZ2h0LCBzbyB0aGlzIGlzIHdoZXJlIHRoZXkncmUgdHJ5aW5nIHRvIHJlc29sdmUgYSB1c2VyLXNwYWNlIG1lbW9yeSBhY2Nlc3MgaXNzdWUuXG5cblRoZSBrZXkgY2hhbmdlIGlzIHRoZXkndmUgYWRkZWQgYSBjb25kaXRpb25hbCBjaGVjazogYGlmICh1bmxvY2tlZClgLiBUaGlzIHN1Z2dlc3RzIHRoYXQgYHVubG9ja2VkYCBpcyBsaWtlbHkgYSBwb2ludGVyIHRvIGEgYm9vbGVhbiB2YXJpYWJsZS4gRXNzZW50aWFsbHksIHRoZXkgYXJlIGVuc3VyaW5nIHRoYXQgdGhleSBvbmx5IHNldCBgKnVubG9ja2VkID0gdHJ1ZWAgKHByZXN1bWFibHkgaW5kaWNhdGluZyB0aGF0IHNvbWUgbG9ja2luZyBpcyBubyBsb25nZXIgcmVxdWlyZWQpIGlmIHRoZSBgdW5sb2NrZWRgIHBvaW50ZXIgaXMgdmFsaWQuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGlzIGlzIHByb2JhYmx5IG1lYW50IHRvIGFkZHJlc3MgYSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb24gb3IgYSBtZW1vcnkgc2FmZXR5IGlzc3VlLiBUaGV5IHByb2JhYmx5IGRvbid0IHdhbnQgdG8gd3JpdGUgdG8gdGhpcyB2YXJpYWJsZSBpZiBpdCdzIHBvaW50aW5nIHRvIGludmFsaWQgbWVtb3J5LiBJJ2xsIG5lZWQgdG8gZGlnIGRlZXBlciBpbnRvIHRoZSBjb2RlIHRvIHVuZGVyc3RhbmQgdGhlIHNwZWNpZmljIGNvbnRleHQgYW5kIGV4YWN0bHkgd2h5IHRoaXMgY29uZGl0aW9uYWwgY2hlY2sgaGFzIGJlZW4gZGVlbWVkIG5lY2Vzc2FyeS4gSSBzdXNwZWN0IGl0J3MgYWJvdXQgYXZvaWRpbmcgYSBkb3VibGUtZnJlZSBvciBzb21lIG90aGVyIGNvcnJ1cHRpb24gcmVsYXRlZCB0byB0aGUgbG9ja2luZy91bmxvY2tpbmcgcHJvY2Vzcy4gTXkgbmV4dCBzdGVwIGlzIHRvIGV4YW1pbmUgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaW4gYGZpeHVwX3VzZXJfZmF1bHRgLCBhbmQgYWxzbyB0cmFjZSBob3cgYHVubG9ja2VkYCBpcyBpbml0aWFsaXplZCBhbmQgdXNlZCB0aHJvdWdob3V0IHRoYXQgY29kZSBwYXRoLCB0byBncmFzcCB0aGUgcmF0aW9uYWxlIGJlaGluZCB0aGlzIHBhdGNoIGNvbXBsZXRlbHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwNzMsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3MSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDA3OjA0OjQ4LjI1MTMwOTE4MloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MTIwOTQ3OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJmaXh1cF91c2VyX2ZhdWx0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL2d1cC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL2d1cC5jPTE1MTI9c3RhdGljIGJvb2wgdm1hX3Blcm1pdHNfZmF1bHQoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsXFxuLS1cXG5tbS9ndXAuYy0xNTM1LS8qKlxcbm1tL2d1cC5jOjE1MzY6ICogZml4dXBfdXNlcl9mYXVsdCgpIC0gbWFudWFsbHkgcmVzb2x2ZSBhIHVzZXIgcGFnZSBmYXVsdFxcbm1tL2d1cC5jLTE1MzctICogQG1tOlxcdFxcdG1tX3N0cnVjdCBvZiB0YXJnZXQgbW1cXG4tLVxcbm1tL2d1cC5jLTE1NjMtICovXFxubW0vZ3VwLmM6MTU2NDppbnQgZml4dXBfdXNlcl9mYXVsdChzdHJ1Y3QgbW1fc3RydWN0ICptbSxcXG5tbS9ndXAuYy0xNTY1LVxcdFxcdCAgICAgdW5zaWduZWQgbG9uZyBhZGRyZXNzLCB1bnNpZ25lZCBpbnQgZmF1bHRfZmxhZ3MsXFxuLS1cXG5tbS9ndXAuYy0xNjE5LX1cXG5tbS9ndXAuYzoxNjIwOkVYUE9SVF9TWU1CT0xfR1BMKGZpeHVwX3VzZXJfZmF1bHQpO1xcbm1tL2d1cC5jLTE2MjEtXFxuLS1cXG5tbS9ndXAuYz0yMTE3PXNpemVfdCBmYXVsdF9pbl9zYWZlX3dyaXRlYWJsZShjb25zdCBjaGFyIF9fdXNlciAqdWFkZHIsIHNpemVfdCBzaXplKVxcbi0tXFxubW0vZ3VwLmMtMjEzMC1cXHRmb3IgKGN1ciA9IHN0YXJ0OyBjdXIgXFx1MDAyNlxcdTAwMjYgY3VyIFxcdTAwM2MgZW5kOyBjdXIgPSBQQUdFX0FMSUdOX0RPV04oY3VyICsgUEFHRV9TSVpFKSlcXG5tbS9ndXAuYzoyMTMxOlxcdFxcdGlmIChmaXh1cF91c2VyX2ZhdWx0KG1tLCBjdXIsIEZBVUxUX0ZMQUdfV1JJVEUsIFxcdTAwMjZ1bmxvY2tlZCkpXFxubW0vZ3VwLmMtMjEzMi1cXHRcXHRcXHRicmVhaztcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMDc6MDQ6NDguMzAyNTI1ODFaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTY2NDg5Nzc4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFBvdGVudGlhbCBOVUxMIFBvaW50ZXIgRGVyZWZlcmVuY2UqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGNsYWltcyB0byBhZGRyZXNzIGEgcG9zc2libGUgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIHdpdGhpbiB0aGUgYGZpeHVwX3VzZXJfZmF1bHRgIGZ1bmN0aW9uLCBzcGVjaWZpY2FsbHkgd2hlbiB0aGUgYHVubG9ja2VkYCBwb2ludGVyIGlzIHVuZXhwZWN0ZWRseSBOVUxMLiBUaGF0J3MgYSBjbGFzc2ljIGJ1ZyBzY2VuYXJpbywgYW5kIHdlIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcm9vdCBjYXVzZS4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIFwiV2hlcmUgYW5kIGhvdyBpcyBgZml4dXBfdXNlcl9mYXVsdGAgYmVpbmcgaW52b2tlZD9cIiBUaGUgY3JpdGljYWwgcXVlc3Rpb24gaXMsIHdobyBpcyBjYWxsaW5nIGl0LCBhbmQgdW5kZXIgd2hhdCBjb25kaXRpb25zIG1pZ2h0IGB1bmxvY2tlZGAgYmUgbGVmdCB1bmluaXRpYWxpemVkIG9yIGluYWR2ZXJ0ZW50bHkgc2V0IHRvIE5VTEw/IE15IGZvY3VzIG5vdyBzaGlmdHMgdG8gdHJhY2luZyB0aGUgY2FsbCBwYXRocyB0byB0aGF0IGZ1bmN0aW9uLCBzY3J1dGluaXppbmcgdGhlIHN1cnJvdW5kaW5nIGNvZGUgZm9yIGFueSBjbHVlcy4gSSBuZWVkIHRvIGlkZW50aWZ5IHRoZSBjb2RlIGJyYW5jaGVzIHRoYXQgY291bGQgbGVhZCB0byB0aGlzIE5VTEwgdmFsdWUgYW5kIGRldGVybWluZSBpZiB0aGUgbG9naWMgaXMgZmxhd2VkLCBvciBpZiBhbiB1bmV4cGVjdGVkIHN0YXRlIGlzIGJlaW5nIGVuY291bnRlcmVkLiBMZXQncyBzZWUgd2hvJ3MgcGxheWluZyBmYXN0IGFuZCBsb29zZSB3aXRoIHRoYXQgcG9pbnRlciwgc2hhbGwgd2U/XG5cblxuIiwiSW5wdXRUb2tlbnMiOjI4NTYsIk91dHB1dFRva2VucyI6MjYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQwNzowNDo1MS44NjkwMTgxNDdaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjAyNTA5MDAzMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJmaXh1cF91c2VyX2ZhdWx0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL2FyYy9rZXJuZWwvcHJvY2Vzcy5jPTQ2PVNZU0NBTExfREVGSU5FMyhhcmNfdXNyX2NtcHhjaGcsIGludCBfX3VzZXIgKiwgdWFkZHIsIGludCwgZXhwZWN0ZWQsIGludCwgbmV3KVxcbi0tXFxuYXJjaC9hcmMva2VybmVsL3Byb2Nlc3MuYy05My1cXHRtbWFwX3JlYWRfbG9jayhjdXJyZW50LVxcdTAwM2VtbSk7XFxuYXJjaC9hcmMva2VybmVsL3Byb2Nlc3MuYzo5NDpcXHRyZXQgPSBmaXh1cF91c2VyX2ZhdWx0KGN1cnJlbnQtXFx1MDAzZW1tLCAodW5zaWduZWQgbG9uZykgdWFkZHIsXFxuYXJjaC9hcmMva2VybmVsL3Byb2Nlc3MuYy05NS1cXHRcXHRcXHQgICAgICAgRkFVTFRfRkxBR19XUklURSwgTlVMTCk7XFxuLS1cXG5hcmNoL3MzOTAvcGNpL3BjaV9tbWlvLmM9MTI4PVNZU0NBTExfREVGSU5FMyhzMzkwX3BjaV9tbWlvX3dyaXRlLCB1bnNpZ25lZCBsb25nLCBtbWlvX2FkZHIsXFxuLS1cXG5hcmNoL3MzOTAvcGNpL3BjaV9tbWlvLmMtMTg0LVxcdGlmIChyZXQpIHtcXG5hcmNoL3MzOTAvcGNpL3BjaV9tbWlvLmM6MTg1OlxcdFxcdGZpeHVwX3VzZXJfZmF1bHQoY3VycmVudC1cXHUwMDNlbW0sIG1taW9fYWRkciwgRkFVTFRfRkxBR19XUklURSwgTlVMTCk7XFxuYXJjaC9zMzkwL3BjaS9wY2lfbW1pby5jLTE4Ni1cXHRcXHRyZXQgPSBmb2xsb3dfcGZubWFwX3N0YXJ0KFxcdTAwMjZhcmdzKTtcXG4tLVxcbmFyY2gvczM5MC9wY2kvcGNpX21taW8uYz0yODM9U1lTQ0FMTF9ERUZJTkUzKHMzOTBfcGNpX21taW9fcmVhZCwgdW5zaWduZWQgbG9uZywgbW1pb19hZGRyLFxcbi0tXFxuYXJjaC9zMzkwL3BjaS9wY2lfbW1pby5jLTMzNi1cXHRpZiAocmV0KSB7XFxuYXJjaC9zMzkwL3BjaS9wY2lfbW1pby5jOjMzNzpcXHRcXHRmaXh1cF91c2VyX2ZhdWx0KGN1cnJlbnQtXFx1MDAzZW1tLCBtbWlvX2FkZHIsIDAsIE5VTEwpO1xcbmFyY2gvczM5MC9wY2kvcGNpX21taW8uYy0zMzgtXFx0XFx0cmV0ID0gZm9sbG93X3Bmbm1hcF9zdGFydChcXHUwMDI2YXJncyk7XFxuLS1cXG5kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jPTU0MD1zdGF0aWMgaW50IGZvbGxvd19mYXVsdF9wZm4oc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLFxcbi0tXFxuZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYy01NTAtXFxuZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYzo1NTE6XFx0XFx0cmV0ID0gZml4dXBfdXNlcl9mYXVsdChtbSwgdmFkZHIsXFxuZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYy01NTItXFx0XFx0XFx0XFx0ICAgICAgIEZBVUxUX0ZMQUdfUkVNT1RFIHxcXG4tLVxcbmluY2x1ZGUvbGludXgvbW0uaD0zMTc4PWV4dGVybiB2bV9mYXVsdF90IGhhbmRsZV9tbV9mYXVsdChzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSxcXG4tLVxcbmluY2x1ZGUvbGludXgvbW0uaC0zMTgwLVxcdFxcdFxcdFxcdCAgc3RydWN0IHB0X3JlZ3MgKnJlZ3MpO1xcbmluY2x1ZGUvbGludXgvbW0uaDozMTgxOmV4dGVybiBpbnQgZml4dXBfdXNlcl9mYXVsdChzdHJ1Y3QgbW1fc3RydWN0ICptbSxcXG5pbmNsdWRlL2xpbnV4L21tLmgtMzE4Mi1cXHRcXHRcXHQgICAgdW5zaWduZWQgbG9uZyBhZGRyZXNzLCB1bnNpZ25lZCBpbnQgZmF1bHRfZmxhZ3MsXFxuLS1cXG5pbmNsdWRlL2xpbnV4L21tLmg9MzE4OT1zdGF0aWMgaW5saW5lIHZtX2ZhdWx0X3QgaGFuZGxlX21tX2ZhdWx0KHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLFxcbi0tXFxuaW5jbHVkZS9saW51eC9tbS5oLTMxOTYtfVxcbmluY2x1ZGUvbGludXgvbW0uaDozMTk3OnN0YXRpYyBpbmxpbmUgaW50IGZpeHVwX3VzZXJfZmF1bHQoc3RydWN0IG1tX3N0cnVjdCAqbW0sIHVuc2lnbmVkIGxvbmcgYWRkcmVzcyxcXG5pbmNsdWRlL2xpbnV4L21tLmgtMzE5OC1cXHRcXHR1bnNpZ25lZCBpbnQgZmF1bHRfZmxhZ3MsIGJvb2wgKnVubG9ja2VkKVxcbi0tXFxua2VybmVsL2Z1dGV4L2NvcmUuYz03Mzg9aW50IGZhdWx0X2luX3VzZXJfd3JpdGVhYmxlKHUzMiBfX3VzZXIgKnVhZGRyKVxcbi0tXFxua2VybmVsL2Z1dGV4L2NvcmUuYy03NDMtXFx0bW1hcF9yZWFkX2xvY2sobW0pO1xcbmtlcm5lbC9mdXRleC9jb3JlLmM6NzQ0OlxcdHJldCA9IGZpeHVwX3VzZXJfZmF1bHQobW0sICh1bnNpZ25lZCBsb25nKXVhZGRyLFxcbmtlcm5lbC9mdXRleC9jb3JlLmMtNzQ1LVxcdFxcdFxcdCAgICAgICBGQVVMVF9GTEFHX1dSSVRFLCBOVUxMKTtcXG4tLVxcbmtlcm5lbC90cmFjZS90cmFjZV9ldmVudHNfdXNlci5jPTQzNT1zdGF0aWMgaW50IHVzZXJfZXZlbnRfbW1fZmF1bHRfaW4oc3RydWN0IHVzZXJfZXZlbnRfbW0gKm1tLCB1bnNpZ25lZCBsb25nIHVhZGRyLFxcbi0tXFxua2VybmVsL3RyYWNlL3RyYWNlX2V2ZW50c191c2VyLmMtNDU1LVxcbmtlcm5lbC90cmFjZS90cmFjZV9ldmVudHNfdXNlci5jOjQ1NjpcXHRyZXQgPSBmaXh1cF91c2VyX2ZhdWx0KG1tLVxcdTAwM2VtbSwgdWFkZHIsIEZBVUxUX0ZMQUdfV1JJVEUgfCBGQVVMVF9GTEFHX1JFTU9URSxcXG5rZXJuZWwvdHJhY2UvdHJhY2VfZXZlbnRzX3VzZXIuYy00NTctXFx0XFx0XFx0ICAgICAgIFxcdTAwMjZ1bmxvY2tlZCk7XFxuLS1cXG5tbS9ndXAuYz0xNTEyPXN0YXRpYyBib29sIHZtYV9wZXJtaXRzX2ZhdWx0KHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLFxcbi0tXFxubW0vZ3VwLmMtMTUzNS0vKipcXG5tbS9ndXAuYzoxNTM2OiAqIGZpeHVwX3VzZXJfZmF1bHQoKSAtIG1hbnVhbGx5IHJlc29sdmUgYSB1c2VyIHBhZ2UgZmF1bHRcXG5tbS9ndXAuYy0xNTM3LSAqIEBtbTpcXHRcXHRtbV9zdHJ1Y3Qgb2YgdGFyZ2V0IG1tXFxuLS1cXG5tbS9ndXAuYy0xNTYzLSAqL1xcbm1tL2d1cC5jOjE1NjQ6aW50IGZpeHVwX3VzZXJfZmF1bHQoc3RydWN0IG1tX3N0cnVjdCAqbW0sXFxubW0vZ3VwLmMtMTU2NS1cXHRcXHQgICAgIHVuc2lnbmVkIGxvbmcgYWRkcmVzcywgdW5zaWduZWQgaW50IGZhdWx0X2ZsYWdzLFxcbi0tXFxubW0vZ3VwLmMtMTYxOS19XFxubW0vZ3VwLmM6MTYyMDpFWFBPUlRfU1lNQk9MX0dQTChmaXh1cF91c2VyX2ZhdWx0KTtcXG5tbS9ndXAuYy0xNjIxLVxcbi0tXFxubW0vZ3VwLmM9MjExNz1zaXplX3QgZmF1bHRfaW5fc2FmZV93cml0ZWFibGUoY29uc3QgY2hhciBfX3VzZXIgKnVhZGRyLCBzaXplX3Qgc2l6ZSlcXG4tLVxcbm1tL2d1cC5jLTIxMzAtXFx0Zm9yIChjdXIgPSBzdGFydDsgY3VyIFxcdTAwMjZcXHUwMDI2IGN1ciBcXHUwMDNjIGVuZDsgY3VyID0gUEFHRV9BTElHTl9ET1dOKGN1ciArIFBBR0VfU0laRSkpXFxubW0vZ3VwLmM6MjEzMTpcXHRcXHRpZiAoZml4dXBfdXNlcl9mYXVsdChtbSwgY3VyLCBGQVVMVF9GTEFHX1dSSVRFLCBcXHUwMDI2dW5sb2NrZWQpKVxcbm1tL2d1cC5jLTIxMzItXFx0XFx0XFx0YnJlYWs7XFxuLS1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jPTI5Mzk9c3RhdGljIGludCBodmFfdG9fcGZuX3JlbWFwcGVkKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLFxcbi0tXFxudmlydC9rdm0va3ZtX21haW4uYy0yOTYwLVxcdFxcdGJvb2wgdW5sb2NrZWQgPSBmYWxzZTtcXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjI5NjE6XFx0XFx0ciA9IGZpeHVwX3VzZXJfZmF1bHQoY3VycmVudC1cXHUwMDNlbW0sIGtmcC1cXHUwMDNlaHZhLFxcbnZpcnQva3ZtL2t2bV9tYWluLmMtMjk2Mi1cXHRcXHRcXHRcXHQgICAgICh3cml0ZV9mYXVsdCA/IEZBVUxUX0ZMQUdfV1JJVEUgOiAwKSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMDc6MDQ6NTMuODk0MTI1NFoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU0MjQwNjQ2NDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgS2VybmVsIFZ1bG5lcmFiaWxpdHkqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCBhIGhhbmRsZSBvbiBhIHBvdGVudGlhbCBrZXJuZWwgYnVnLiBJdCBsb29rcyBsaWtlIGNhbGxlcnMgYXJlIHBhc3NpbmcgYE5VTExgIGZvciB0aGUgYHVubG9ja2VkYCBhcmd1bWVudCBpbiBhIGZldyBwbGFjZXM6IGBhcmNfdXNyX2NtcHhjaGdgIGluIGBhcmNoL2FyYy9rZXJuZWwvcHJvY2Vzcy5jYCwgdGhlIGBzMzkwX3BjaV9tbWlvX3dyaXRlYCBhbmQgYHMzOTBfcGNpX21taW9fcmVhZGAgZnVuY3Rpb25zIGluIGBhcmNoL3MzOTAvcGNpL3BjaV9tbWlvLmNgLCBhbmQgZmluYWxseSwgYGZhdWx0X2luX3VzZXJfd3JpdGVhYmxlYCBpbiBga2VybmVsL2Z1dGV4L2NvcmUuY2AuXG5cblRoZSBoZWFydCBvZiB0aGUgcHJvYmxlbSBzZWVtcyB0byBiZSB0aGF0IGBmaXh1cF91c2VyX2ZhdWx0YCBpc24ndCBoYW5kbGluZyB0aGlzIGBOVUxMYCB2YWx1ZSBjb3JyZWN0bHkuIFNwZWNpZmljYWxseSwgaXQncyBkZXJlZmVyZW5jaW5nIGB1bmxvY2tlZGAgd2hlbiBpdCdzIGBOVUxMYCwgbGVhZGluZyB0byBhIGNyYXNoLiBXZSBrbm93IHRoaXMgaXMgaGFwcGVuaW5nIGluIGBmYXVsdF9pbl91c2VyX3dyaXRlYWJsZWAgYW5kIHBvdGVudGlhbGx5IGluIHRob3NlIG90aGVyIGZ1bmN0aW9ucyBJIGxpc3RlZC5cblxuVGhpcyBpcyBkZWZpbml0ZWx5IHNvbWV0aGluZyB3b3J0aCBmdXp6aW5nLiBBIGtlcm5lbCBjcmFzaCwgc3BlY2lmaWNhbGx5IGEgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlLCBpcyBhIHByZXR0eSBzZXJpb3VzIHZ1bG5lcmFiaWxpdHksIGFuZCB0aGUgZmFjdCB0aGF0IGl0IGludm9sdmVzIGZ1dGV4IOKAkyBhIHJlbGF0aXZlbHkgY29tbW9uIGtlcm5lbCBwcmltaXRpdmUg4oCTIG1lYW5zIGl0J3MgbGlrZWx5IGEgcmVhY2hhYmxlIHBhdGguIFRoaXMgaXMgYSBnb29kIGZpbmQuIExldCdzIGRpZyBkZWVwZXIgaW50byBgZmF1bHRfaW5fdXNlcl93cml0ZWFibGVgIGluIGBrZXJuZWwvZnV0ZXgvY29yZS5jYCBhbmQgdW5kZXJzdGFuZCB0aGUgZXhhY3QgY29uZGl0aW9ucyB0aGF0IHRyaWdnZXIgdGhpcyBgTlVMTGAgZGVyZWZlcmVuY2UgYW5kIGhvdyB0byB0cmlnZ2VyIGl0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NzMwLCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjE1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDA3OjA0OjU5LjMxODE5MzE4N1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDc3Mjk0OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJmYXVsdF9pbl91c2VyX3dyaXRlYWJsZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJrZXJuZWwvZnV0ZXhcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2Z1dGV4L2NvcmUuYz01MDI9aW50IGdldF9mdXRleF9rZXkodTMyIF9fdXNlciAqdWFkZHIsIHVuc2lnbmVkIGludCBmbGFncywgdW5pb24gZnV0ZXhfa2V5ICprZXksXFxuLS1cXG5rZXJuZWwvZnV0ZXgvY29yZS5jLTcyNi0vKipcXG5rZXJuZWwvZnV0ZXgvY29yZS5jOjcyNzogKiBmYXVsdF9pbl91c2VyX3dyaXRlYWJsZSgpIC0gRmF1bHQgaW4gdXNlciBhZGRyZXNzIGFuZCB2ZXJpZnkgUlcgYWNjZXNzXFxua2VybmVsL2Z1dGV4L2NvcmUuYy03MjgtICogQHVhZGRyOlxcdHBvaW50ZXIgdG8gZmF1bHRpbmcgdXNlciBzcGFjZSBhZGRyZXNzXFxuLS1cXG5rZXJuZWwvZnV0ZXgvY29yZS5jLTczNy0gKi9cXG5rZXJuZWwvZnV0ZXgvY29yZS5jOjczODppbnQgZmF1bHRfaW5fdXNlcl93cml0ZWFibGUodTMyIF9fdXNlciAqdWFkZHIpXFxua2VybmVsL2Z1dGV4L2NvcmUuYy03Mzkte1xcbi0tXFxua2VybmVsL2Z1dGV4L2NvcmUuYz05Njg9c3RhdGljIGludCBoYW5kbGVfZnV0ZXhfZGVhdGgodTMyIF9fdXNlciAqdWFkZHIsIHN0cnVjdCB0YXNrX3N0cnVjdCAqY3VycixcXG4tLVxcbmtlcm5lbC9mdXRleC9jb3JlLmMtMTA1NC1cXHRcXHRjYXNlIC1FRkFVTFQ6XFxua2VybmVsL2Z1dGV4L2NvcmUuYzoxMDU1OlxcdFxcdFxcdGlmIChmYXVsdF9pbl91c2VyX3dyaXRlYWJsZSh1YWRkcikpXFxua2VybmVsL2Z1dGV4L2NvcmUuYy0xMDU2LVxcdFxcdFxcdFxcdHJldHVybiAtMTtcXG4tLVxcbmtlcm5lbC9mdXRleC9mdXRleC5oPTI4NT1leHRlcm4gdm9pZCBmdXRleF93YWtlX21hcmsoc3RydWN0IHdha2VfcV9oZWFkICp3YWtlX3EsIHN0cnVjdCBmdXRleF9xICpxKTtcXG5rZXJuZWwvZnV0ZXgvZnV0ZXguaC0yODYtXFxua2VybmVsL2Z1dGV4L2Z1dGV4Lmg6Mjg3OmV4dGVybiBpbnQgZmF1bHRfaW5fdXNlcl93cml0ZWFibGUodTMyIF9fdXNlciAqdWFkZHIpO1xcbmtlcm5lbC9mdXRleC9mdXRleC5oLTI4OC1leHRlcm4gc3RydWN0IGZ1dGV4X3EgKmZ1dGV4X3RvcF93YWl0ZXIoc3RydWN0IGZ1dGV4X2hhc2hfYnVja2V0ICpoYiwgdW5pb24gZnV0ZXhfa2V5ICprZXkpO1xcbi0tXFxua2VybmVsL2Z1dGV4L3BpLmM9Njc0PXN0YXRpYyBpbnQgX19maXh1cF9waV9zdGF0ZV9vd25lcih1MzIgX191c2VyICp1YWRkciwgc3RydWN0IGZ1dGV4X3EgKnEsXFxuLS1cXG5rZXJuZWwvZnV0ZXgvcGkuYy04MDAtXFx0Y2FzZSAtRUZBVUxUOlxcbmtlcm5lbC9mdXRleC9waS5jOjgwMTpcXHRcXHRlcnIgPSBmYXVsdF9pbl91c2VyX3dyaXRlYWJsZSh1YWRkcik7XFxua2VybmVsL2Z1dGV4L3BpLmMtODAyLVxcdFxcdGJyZWFrO1xcbi0tXFxua2VybmVsL2Z1dGV4L3BpLmMtODI3LVxcdC8qXFxua2VybmVsL2Z1dGV4L3BpLmM6ODI4OlxcdCAqIGZhdWx0X2luX3VzZXJfd3JpdGVhYmxlKCkgZmFpbGVkIHNvIHVzZXIgc3RhdGUgaXMgaW1tdXRhYmxlLiBBdFxcbmtlcm5lbC9mdXRleC9waS5jLTgyOS1cXHQgKiBiZXN0IHdlIGNhbiBtYWtlIHRoZSBrZXJuZWwgc3RhdGUgY29uc2lzdGVudCBidXQgdXNlciBzdGF0ZSB3aWxsXFxuLS1cXG5rZXJuZWwvZnV0ZXgvcGkuYz05MjM9aW50IGZ1dGV4X2xvY2tfcGkodTMyIF9fdXNlciAqdWFkZHIsIHVuc2lnbmVkIGludCBmbGFncywga3RpbWVfdCAqdGltZSwgaW50IHRyeWxvY2spXFxuLS1cXG5rZXJuZWwvZnV0ZXgvcGkuYy0xMTE3LVxcbmtlcm5lbC9mdXRleC9waS5jOjExMTg6XFx0XFx0cmV0ID0gZmF1bHRfaW5fdXNlcl93cml0ZWFibGUodWFkZHIpO1xcbmtlcm5lbC9mdXRleC9waS5jLTExMTktXFx0XFx0aWYgKHJldClcXG4tLVxcbmtlcm5lbC9mdXRleC9waS5jPTExNDE9c3RhdGljIGludCBfX2Z1dGV4X3VubG9ja19waSh1MzIgX191c2VyICp1YWRkciwgdW5zaWduZWQgaW50IGZsYWdzKVxcbi0tXFxua2VybmVsL2Z1dGV4L3BpLmMtMTI5Ny1cXG5rZXJuZWwvZnV0ZXgvcGkuYzoxMjk4OlxcdHJldCA9IGZhdWx0X2luX3VzZXJfd3JpdGVhYmxlKHVhZGRyKTtcXG5rZXJuZWwvZnV0ZXgvcGkuYy0xMjk5LVxcdGlmICghcmV0KVxcbi0tXFxua2VybmVsL2Z1dGV4L3JlcXVldWUuYz0zODI9aW50IGZ1dGV4X3JlcXVldWUodTMyIF9fdXNlciAqdWFkZHIxLCB1bnNpZ25lZCBpbnQgZmxhZ3MxLFxcbi0tXFxua2VybmVsL2Z1dGV4L3JlcXVldWUuYy01NjMtXFx0XFx0XFx0XFx0ZG91YmxlX3VubG9ja19oYihoYjEsIGhiMik7XFxua2VybmVsL2Z1dGV4L3JlcXVldWUuYzo1NjQ6XFx0XFx0XFx0XFx0cmV0ID0gZmF1bHRfaW5fdXNlcl93cml0ZWFibGUodWFkZHIyKTtcXG5rZXJuZWwvZnV0ZXgvcmVxdWV1ZS5jLTU2NS1cXHRcXHRcXHRcXHRpZiAoIXJldClcXG4tLVxcbmtlcm5lbC9mdXRleC93YWl0d2FrZS5jPTI3OD1pbnQgZnV0ZXhfd2FrZV9vcCh1MzIgX191c2VyICp1YWRkcjEsIHVuc2lnbmVkIGludCBmbGFncywgdTMyIF9fdXNlciAqdWFkZHIyLFxcbi0tXFxua2VybmVsL2Z1dGV4L3dhaXR3YWtlLmMtMzE2LVxcdFxcdFxcdGlmIChvcF9yZXQgPT0gLUVGQVVMVCkge1xcbmtlcm5lbC9mdXRleC93YWl0d2FrZS5jOjMxNzpcXHRcXHRcXHRcXHRyZXQgPSBmYXVsdF9pbl91c2VyX3dyaXRlYWJsZSh1YWRkcjIpO1xcbmtlcm5lbC9mdXRleC93YWl0d2FrZS5jLTMxOC1cXHRcXHRcXHRcXHRpZiAocmV0KVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQwNzowNDo1OS4zNjI5NzEyODVaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NzQ0OTkyNzU3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkJ1ZyBGaXggXHUwMDI2IEZ1enppbmcgU3RyYXRlZ3k6IEZ1dGV4IE5VTEwgUG9pbnRlciBEZXJlZmVyZW5jZSoqXG5cbk9rYXksIHNvIEkndmUgZ290IGEgaGFuZGxlIG9uIHRoaXMuIFRoZXJlJ3MgYSBuYXN0eSBsaXR0bGUgYnVnIGx1cmtpbmcgaW4gYGtlcm5lbC9mdXRleC9jb3JlLmNgLCBzcGVjaWZpY2FsbHkgd2l0aGluIGBmaXh1cF91c2VyX2ZhdWx0YC4gSXQncyBhIGNyaXRpY2FsIGlzc3VlIGJlY2F1c2UgYGZhdWx0X2luX3VzZXJfd3JpdGVhYmxlYCBjYWxscyBpdC4gVGhlIHJvb3Qgb2YgdGhlIHByb2JsZW0/IEEgY2xhc3NpYyBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2Ugd2hlbiBgdW5sb2NrZWRgIGlzLCB3ZWxsLCAqbnVsbCouICBUaGF0J3MgYSB0ZXh0Ym9vayBmdXp6aW5nIGNhbmRpZGF0ZSByaWdodCB0aGVyZS5cblxuTXkgaW1tZWRpYXRlIGZvY3VzLCBuYXR1cmFsbHksIHdpbGwgYmUgb24gdGhvc2UgdHdvIHN5bWJvbHM6IGBmaXh1cF91c2VyX2ZhdWx0YCBhbmQgYGZhdWx0X2luX3VzZXJfd3JpdGVhYmxlYC4gSSdsbCBuZWVkIHRvIHJlYWxseSBkaWcgaW50byBob3cgdGhlIGB1bmxvY2tlZGAgcG9pbnRlciBpcyB1c2VkIHdpdGhpbiB0aG9zZSBmdW5jdGlvbnMuXG5cbkFuZCBzaW5jZSB3ZSBhcmUgdGFsa2luZyBhYm91dCBmdXp6aW5nLCBsZXQncyBzZWUgaWYgd2UgaGF2ZSBzb21lIGdvb2QgZGVmYXVsdCBjb25maWdzIHRvIGhlbHAgdXMgb3V0LiBGb3J0dW5hdGVseSwgdGhlIEZVVEVYIHN1YnN5c3RlbSBsb29rcyBsaWtlIGEgZ29vZCBwbGFjZSB0byBiZS4gSSBzZWVtIHRvIHJlY2FsbCB0aGF0IEZVVEVYIGlzIGVuYWJsZWQgYnkgZGVmYXVsdC4gSSdsbCBkb3VibGUtY2hlY2sgYENPTkZJR19GVVRFWGAgaW4gYGluaXQvS2NvbmZpZ2AgdG8gY29uZmlybSwgYnV0IEknbSBwcmV0dHkgc3VyZSBpdCdzIHVzdWFsbHkgb24uIFRoaXMgd2lsbCBnaXZlIG1lIGEgZ29vZCBiYXNlbGluZSBmb3IgbXkgZnV6emluZyBlZmZvcnRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NDE2LCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTE3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDA3OjA1OjA0LjEwNzk2NjY0MloiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDY4NzAwNzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEZVVEVYXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImluaXQvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbml0L0tjb25maWc9MTgyNz1jb25maWcgQkFTRV9TTUFMTFxcbi0tXFxuaW5pdC9LY29uZmlnLTE4MzMtXFxuaW5pdC9LY29uZmlnOjE4MzQ6Y29uZmlnIEZVVEVYXFxuaW5pdC9LY29uZmlnLTE4MzUtXFx0Ym9vbCBcXFwiRW5hYmxlIGZ1dGV4IHN1cHBvcnRcXFwiIGlmIEVYUEVSVFxcbi0tXFxuaW5pdC9LY29uZmlnLTE4NDMtXFxuaW5pdC9LY29uZmlnOjE4NDQ6Y29uZmlnIEZVVEVYX1BJXFxuaW5pdC9LY29uZmlnLTE4NDUtXFx0Ym9vbFxcbi0tXFxuaW5pdC9LY29uZmlnLTE4NDgtXFxuaW5pdC9LY29uZmlnOjE4NDk6Y29uZmlnIEZVVEVYX1BSSVZBVEVfSEFTSFxcbmluaXQvS2NvbmZpZy0xODUwLVxcdGJvb2xcXG4tLVxcbmluaXQvS2NvbmZpZy0xODUzLVxcbmluaXQvS2NvbmZpZzoxODU0OmNvbmZpZyBGVVRFWF9NUE9MXFxuaW5pdC9LY29uZmlnLTE4NTUtXFx0Ym9vbFxcbi0tXFxuaW5pdC9LY29uZmlnPTE4NTk9Y29uZmlnIEhBVkVfRlVURVhfUk9CVVNUX1VOTE9DS1xcbi0tXFxuaW5pdC9LY29uZmlnLTE4NjEtXFxuaW5pdC9LY29uZmlnOjE4NjI6Y29uZmlnIEZVVEVYX1JPQlVTVF9VTkxPQ0tcXG5pbml0L0tjb25maWctMTg2My1cXHRkZWZfYm9vbCBGVVRFWCBcXHUwMDI2XFx1MDAyNiBIQVZFX0dFTkVSSUNfVkRTTyBcXHUwMDI2XFx1MDAyNiBHRU5FUklDX0lSUV9FTlRSWSBcXHUwMDI2XFx1MDAyNiBSU0VRIFxcdTAwMjZcXHUwMDI2IEhBVkVfRlVURVhfUk9CVVNUX1VOTE9DS1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQwNzowNTowNC4xNTQ4NDM2MloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NTQxOTY3MDYzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIEZVVEVYIFBhdGNoKipcblxuT2theSwgc28gRlVURVggaXMgZW5hYmxlZCBieSBkZWZhdWx0LCB3aGljaCBpbW1lZGlhdGVseSBwaXF1ZXMgbXkgaW50ZXJlc3QuIFRoZSBwYXRjaCBJJ20gbG9va2luZyBhdCBzcGVjaWZpY2FsbHkgdG91Y2hlcyBgZml4dXBfdXNlcl9mYXVsdGAgd2l0aGluIGBtbS9ndXAuY2AuIEdvb2QsIHRoYXQgbmFycm93cyBteSBmb2N1cy4gSSdtIHplcm9pbmcgaW4gb24gYGZpeHVwX3VzZXJfZmF1bHRgIGFuZCBzZXR0aW5nIFdvcnRoRnV6emluZyB0byB0cnVlOyB0aGUgY29ubmVjdGlvbiBpcyBjbGVhciDigJMgYSBwb3NzaWJsZSBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UgaW4gYGZpeHVwX3VzZXJfZmF1bHRgIHdoZW4gYHVubG9ja2VkYCBpcyBOVUxMLlxuXG5NeSB0aGlua2luZyBpcywgZ2l2ZW4gdGhpcyBmdW5jdGlvbidzIHBvdGVudGlhbCByZWFjaGFiaWxpdHkgZnJvbSB1c2VyIHNwYWNlIHZpYSBmdXRleCBvcGVyYXRpb25zIGxpa2UgYGZhdWx0X2luX3VzZXJfd3JpdGVhYmxlYCwgdGhpcyBpcyBhIGhpZ2gtdmFsdWUgdGFyZ2V0IGZvciBmdXp6aW5nLiBUaGUgZnV0ZXggcGF0aCB0aHJvdWdoIHdoaWNoIHRoaXMgZnVuY3Rpb24gaXMgcmVhY2hlZCBtYWtlcyB0aGlzIGEgY3JpdGljYWwgcGF0aCBJIG5lZWQgdG8gc2NydXRpbml6ZS4gVGhhdCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UgaXMgYSBjbGFzc2ljIHZ1bG5lcmFiaWxpdHksIGFuZCB1c2VyLXNwYWNlIGFjY2VzcyByYWlzZXMgdGhlIHN0YWtlcyBjb25zaWRlcmFibHkuIEkgbmVlZCB0byBkaWcgZGVlcGVyIGludG8gdGhlIGZ1dGV4IGludGVyYWN0aW9uIGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcxMzYsIk91dHB1dFRva2VucyI6MTA2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTI4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDA3OjA1OjA5LjY5NjgxMzYwMloiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkxODc3NTI1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJGVVRFWFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImZpeHVwX3VzZXJfZmF1bHRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UgaW4gYGZpeHVwX3VzZXJfZmF1bHRgIHdoZW4gdGhlIGB1bmxvY2tlZGAgcGFyYW1ldGVyIGlzIE5VTEwuIFRoaXMgZnVuY3Rpb24gaXMgcmVhY2hhYmxlIGZyb20gdXNlciBzcGFjZSB2aWEgZnV0ZXggb3BlcmF0aW9ucyAoZS5nLiwgYGZhdWx0X2luX3VzZXJfd3JpdGVhYmxlYCksIG1ha2luZyBpdCBhIGNyaXRpY2FsIHBhdGggdG8gZnV6ei5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJGVVRFWFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImZpeHVwX3VzZXJfZmF1bHRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UgaW4gYGZpeHVwX3VzZXJfZmF1bHRgIHdoZW4gdGhlIGB1bmxvY2tlZGAgcGFyYW1ldGVyIGlzIE5VTEwuIFRoaXMgZnVuY3Rpb24gaXMgcmVhY2hhYmxlIGZyb20gdXNlciBzcGFjZSB2aWEgZnV0ZXggb3BlcmF0aW9ucyAoZS5nLiwgYGZhdWx0X2luX3VzZXJfd3JpdGVhYmxlYCksIG1ha2luZyBpdCBhIGNyaXRpY2FsIHBhdGggdG8gZnV6ei5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMDc6MDU6MDkuNzg4NzAwMjk4WiIsIlNlcSI6MTMsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2OTk2NjkyMTkxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMDc6MDU6MDkuNzg5MzcwOTA5WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjY5OTYwMTc2OTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIGluIGBmaXh1cF91c2VyX2ZhdWx0YCBieSBhZGRpbmcgYSBjaGVjayBmb3IgdGhlIGB1bmxvY2tlZGAgcG9pbnRlciBiZWZvcmUgYXNzaWduaW5nIHRvIGAqdW5sb2NrZWRgLiBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzIGFyZSByZWxpYWJseSBjYXVnaHQgYnkgc3RhbmRhcmQga2VybmVsIHBhZ2UgZmF1bHQgaGFuZGxpbmcgYW5kIEtBU0FOLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLCBzdHJ1Y3R1cmUgcGFkZGluZyBsZWFrcywgb3IgdW5pbml0aWFsaXplZCB2YWx1ZXMgYmVpbmcgdXNlZCBpbiBjb250cm9sIGZsb3cuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnkuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMTNhMjgyMDkyOTgwM2NmMTE2NDk1OGQ2NGI1ZTZjMzdmYmY2NjhiM1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgQXVnIDI2IDA3OjA0OjQyIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbW0vZ3VwLmMgYi9tbS9ndXAuY1xuaW5kZXggMDY5MjExOWI3OTA0My4uZDEyNDc1YTdmN2NjYiAxMDA2NDRcbi0tLSBhL21tL2d1cC5jXG4rKysgYi9tbS9ndXAuY1xuQEAgLTE1OTQsNyArMTU5NCw4IEBAIGludCBmaXh1cF91c2VyX2ZhdWx0KHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLFxuIFx0XHQgKiBjb3VsZCB0ZWxsIHRoZSBjYWxsZXJzIHNvIHRoZXkgZG8gbm90IG5lZWQgdG8gdW5sb2NrLlxuIFx0XHQgKi9cbiBcdFx0bW1hcF9yZWFkX2xvY2sobW0pO1xuLVx0XHQqdW5sb2NrZWQgPSB0cnVlO1xuK1x0XHRpZiAodW5sb2NrZWQpXG4rXHRcdFx0KnVubG9ja2VkID0gdHJ1ZTtcbiBcdFx0cmV0dXJuIDA7XG4gXHR9XG4gXG5AQCAtMTYwOCw3ICsxNjA5LDggQEAgaW50IGZpeHVwX3VzZXJfZmF1bHQoc3RydWN0IG1tX3N0cnVjdCAqbW0sXG4gXG4gXHRpZiAocmV0IFx1MDAyNiBWTV9GQVVMVF9SRVRSWSkge1xuIFx0XHRtbWFwX3JlYWRfbG9jayhtbSk7XG4tXHRcdCp1bmxvY2tlZCA9IHRydWU7XG4rXHRcdGlmICh1bmxvY2tlZClcbitcdFx0XHQqdW5sb2NrZWQgPSB0cnVlO1xuIFx0XHRmYXVsdF9mbGFncyB8PSBGQVVMVF9GTEFHX1RSSUVEO1xuIFx0XHRnb3RvIHJldHJ5O1xuIFx0fVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMDc6MDU6MDkuNzg5Mzc0MDg5WiIsIlNlcSI6MTUsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY5OTU5OTAzODEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgR1VQIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBnb3QgdGhpcyBwYXRjaCBmb3IgYG1tL2d1cC5jYC4gSXQncyBhIHN0cmFpZ2h0Zm9yd2FyZCBmaXg6IHRoZXkndmUgYWRkZWQgYSBOVUxMIGNoZWNrIGZvciB0aGUgYHVubG9ja2VkYCBwb2ludGVyIGJlZm9yZSBkZXJlZmVyZW5jaW5nIGl0LiBTbWFydCBtb3ZlLCBjYXRjaGluZyBhIHBvdGVudGlhbCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UuIFRoZSBjb2RlIG5vdyBsb29rcyBsaWtlIHRoaXM6XG5cbmBgYGNcbi1cdFx0KnVubG9ja2VkID0gdHJ1ZTtcbitcdFx0aWYgKHVubG9ja2VkKVxuK1x0XHRcdCp1bmxvY2tlZCA9IHRydWU7XG5gYGBcblxuTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBnb29kLCBzaW1wbGUsIGFuZCBwcm9iYWJseSBzYWZlLiBJIG1lYW4sIE5VTEwgZGVyZWZlcmVuY2VzIGFyZSB0eXBpY2FsbHkgaGFuZGxlZCBwcmV0dHkgd2VsbCBieSB0aGUga2VybmVsIGFscmVhZHkuIFdlJ3ZlIGdvdCBvdXIgc3RhbmRhcmQgcGFnZSBmYXVsdCBoYW5kbGluZywgb29wcywgYW5kIG9mIGNvdXJzZSwgS0FTQU4gaXMgdGhlcmUgdG8gY2F0Y2ggdGhlc2Uga2luZHMgb2YgdGhpbmdzLiBJdCdzIG5vdCBsaWtlIHRoaXMgcGF0Y2ggaXMgaW50cm9kdWNpbmcgYSBuZXcgYXR0YWNrIHN1cmZhY2UuIEkgY2FuJ3Qgc2VlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBpc3N1ZXMsIGFuZCBjZXJ0YWlubHkgbm8gcmlzayBvZiBpbmZvcm1hdGlvbiBsZWFrcy5cblxuTGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrIHRoYXQgbGFzdCBwYXJ04oCmIFNvLCBgdW5sb2NrZWRgIGlzIGEgcG9pbnRlciB0byBhIGJvb2xlYW4uIElmIGl0J3MgTlVMTCwgaXQgd2FzIGNyYXNoaW5nIGJlZm9yZS4gTm93LCB3aXRoIHRoZSBjaGVjaywgaXQgZG9lc24ndC4gTm8gdW5pbml0aWFsaXplZCBtZW1vcnkgaXMgcmVhZCBvciBsZWFrZWQuIFRoZSBjb2RlIGp1c3QgYXZvaWRzIGFzc2lnbmluZyBhIHZhbHVlIHRvIGEgcG9pbnRlci5cblxuQWxyaWdodCwgYWZ0ZXIgYSBxdWljayBtZW50YWwgY2hlY2ssIEknbSBjb25maWRlbnQgdGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcywgc3RydWN0dXJlIHBhZGRpbmcgbGVha3MsIG9yIHVuaW5pdGlhbGl6ZWQgdmFsdWVzIGJlaW5nIHVzZWQgaW4gY29udHJvbCBmbG93LiBJdCdzIGEgc3RyYWlnaHQtdXAgTlVMTCBjaGVjay4gVGhlcmVmb3JlLCBJJ20gZ29pbmcgdG8gc2V0IGBOZWVkc0tNU0FOPWZhbHNlYC4gV2UgZG9uJ3QgbmVlZCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gZm9yIHRoaXM7IHRoZSBleGlzdGluZyBrZXJuZWwgaW5mcmFzdHJ1Y3R1cmUgaXMgc3VmZmljaWVudCB0byBjYXRjaCBhbnkgaXNzdWVzIHJlbGF0ZWQgdG8gdGhpcyBwYXRjaC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjA3MCwiT3V0cHV0VG9rZW5zIjoxMTcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyODMsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQwNzowNToxNi43ODUzNjcyNzlaIiwiU2VxIjoxNiwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTMyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIGluIGBmaXh1cF91c2VyX2ZhdWx0YCBieSBhZGRpbmcgYSBjaGVjayBmb3IgdGhlIGB1bmxvY2tlZGAgcG9pbnRlciBiZWZvcmUgYXNzaWduaW5nIHRvIGAqdW5sb2NrZWRgLiBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzIGFyZSByZWxpYWJseSBjYXVnaHQgYnkgc3RhbmRhcmQga2VybmVsIHBhZ2UgZmF1bHQgaGFuZGxpbmcgYW5kIEtBU0FOLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLCBzdHJ1Y3R1cmUgcGFkZGluZyBsZWFrcywgb3IgdW5pbml0aWFsaXplZCB2YWx1ZXMgYmVpbmcgdXNlZCBpbiBjb250cm9sIGZsb3cuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnkuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UgaW4gYGZpeHVwX3VzZXJfZmF1bHRgIGJ5IGFkZGluZyBhIGNoZWNrIGZvciB0aGUgYHVubG9ja2VkYCBwb2ludGVyIGJlZm9yZSBhc3NpZ25pbmcgdG8gYCp1bmxvY2tlZGAuIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZXMgYXJlIHJlbGlhYmx5IGNhdWdodCBieSBzdGFuZGFyZCBrZXJuZWwgcGFnZSBmYXVsdCBoYW5kbGluZyBhbmQgS0FTQU4uIFRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMsIHN0cnVjdHVyZSBwYWRkaW5nIGxlYWtzLCBvciB1bmluaXRpYWxpemVkIHZhbHVlcyBiZWluZyB1c2VkIGluIGNvbnRyb2wgZmxvdy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow227gk[1] Phase: Succeeded StartedAt: 2026-08-26 07:05:28 +0000 UTC FinishedAt: 2026-08-26 07:05:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflow227gk[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-26 07:05:28 +0000 UTC FinishedAt: 2026-08-26 07:05:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflow227gk[2] Phase: Succeeded StartedAt: 2026-08-26 07:05:28 +0000 UTC FinishedAt: 2026-08-26 10:47:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflow227gk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8a9091052cc81caa5570835049c809da804baa3f","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUTEX"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["fixup_user_fault"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"8a9091052cc81caa5570835049c809da804baa3f","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUTEX"],"series_id":"45bf7b87-bb22-4556-b9af-39f51554e5c4","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-26 07:05:28 +0000 UTC FinishedAt: 2026-08-26 10:47:50 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"8a9091052cc81caa5570835049c809da804baa3f","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUTEX"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["fixup_user_fault"],"skip_cover_check":true},"patched":{"arch":"amd64","commit_hash":"8a9091052cc81caa5570835049c809da804baa3f","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUTEX"],"series_id":"45bf7b87-bb22-4556-b9af-39f51554e5c4","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow227gk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8a9091052cc81caa5570835049c809da804baa3f","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUTEX"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["fixup_user_fault"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"8a9091052cc81caa5570835049c809da804baa3f","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUTEX"],"series_id":"45bf7b87-bb22-4556-b9af-39f51554e5c4","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-26 07:05:28 +0000 UTC FinishedAt: 2026-08-26 07:05:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflow227gk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8a9091052cc81caa5570835049c809da804baa3f","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUTEX"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["fixup_user_fault"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"8a9091052cc81caa5570835049c809da804baa3f","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUTEX"],"series_id":"45bf7b87-bb22-4556-b9af-39f51554e5c4","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-26 07:05:28 +0000 UTC FinishedAt: 2026-08-26 07:05:32 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"8a9091052cc81caa5570835049c809da804baa3f","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUTEX"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow227gk/series-workflow227gk-convert-artifact-2324157533/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow227gk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8a9091052cc81caa5570835049c809da804baa3f","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUTEX"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["fixup_user_fault"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"8a9091052cc81caa5570835049c809da804baa3f","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUTEX"],"series_id":"45bf7b87-bb22-4556-b9af-39f51554e5c4","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-26 07:05:38 +0000 UTC FinishedAt: 2026-08-26 07:22:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflow227gk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8a9091052cc81caa5570835049c809da804baa3f","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUTEX"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["fixup_user_fault"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"8a9091052cc81caa5570835049c809da804baa3f","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUTEX"],"series_id":"45bf7b87-bb22-4556-b9af-39f51554e5c4","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-26 07:05:38 +0000 UTC FinishedAt: 2026-08-26 07:22:28 +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:*fccf2376-d468-4f0f-8d76-c177017fb431,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-workflow227gk/series-workflow227gk-convert-artifact-2324157533/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": "e12a5c86-e0bc-4888-bb02-42850d9e095d", "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-workflow227gk/series-workflow227gk-build-action-2534057875/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow227gk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8a9091052cc81caa5570835049c809da804baa3f","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUTEX"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["fixup_user_fault"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"8a9091052cc81caa5570835049c809da804baa3f","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUTEX"],"series_id":"45bf7b87-bb22-4556-b9af-39f51554e5c4","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-26 07:05:38 +0000 UTC FinishedAt: 2026-08-26 07:22:18 +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:*fccf2376-d468-4f0f-8d76-c177017fb431,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-workflow227gk/series-workflow227gk-convert-artifact-2324157533/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": "e12a5c86-e0bc-4888-bb02-42850d9e095d", "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-workflow227gk/series-workflow227gk-build-action-2534057875/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow227gk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8a9091052cc81caa5570835049c809da804baa3f","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUTEX"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["fixup_user_fault"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"8a9091052cc81caa5570835049c809da804baa3f","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUTEX"],"series_id":"45bf7b87-bb22-4556-b9af-39f51554e5c4","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-26 07:22:28 +0000 UTC FinishedAt: 2026-08-26 07:22:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflow227gk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8a9091052cc81caa5570835049c809da804baa3f","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUTEX"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["fixup_user_fault"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"8a9091052cc81caa5570835049c809da804baa3f","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUTEX"],"series_id":"45bf7b87-bb22-4556-b9af-39f51554e5c4","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-26 07:22:28 +0000 UTC FinishedAt: 2026-08-26 07:22:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflow227gk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8a9091052cc81caa5570835049c809da804baa3f","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUTEX"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["fixup_user_fault"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"8a9091052cc81caa5570835049c809da804baa3f","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUTEX"],"series_id":"45bf7b87-bb22-4556-b9af-39f51554e5c4","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-26 07:22:28 +0000 UTC FinishedAt: 2026-08-26 07:22:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflow227gk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8a9091052cc81caa5570835049c809da804baa3f","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUTEX"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["fixup_user_fault"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"8a9091052cc81caa5570835049c809da804baa3f","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUTEX"],"series_id":"45bf7b87-bb22-4556-b9af-39f51554e5c4","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-26 07:22:28 +0000 UTC FinishedAt: 2026-08-26 07:22:33 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"8a9091052cc81caa5570835049c809da804baa3f","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUTEX"],"series_id":"45bf7b87-bb22-4556-b9af-39f51554e5c4","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow227gk/series-workflow227gk-convert-artifact-2760343864/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow227gk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8a9091052cc81caa5570835049c809da804baa3f","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUTEX"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["fixup_user_fault"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"8a9091052cc81caa5570835049c809da804baa3f","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUTEX"],"series_id":"45bf7b87-bb22-4556-b9af-39f51554e5c4","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-26 07:22:38 +0000 UTC FinishedAt: 2026-08-26 07:24:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflow227gk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8a9091052cc81caa5570835049c809da804baa3f","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUTEX"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["fixup_user_fault"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"8a9091052cc81caa5570835049c809da804baa3f","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUTEX"],"series_id":"45bf7b87-bb22-4556-b9af-39f51554e5c4","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-26 07:22:38 +0000 UTC FinishedAt: 2026-08-26 07:24:46 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*e12a5c86-e0bc-4888-bb02-42850d9e095d,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-workflow227gk/series-workflow227gk-build-action-2534057875/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-workflow227gk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8a9091052cc81caa5570835049c809da804baa3f","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUTEX"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["fixup_user_fault"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"8a9091052cc81caa5570835049c809da804baa3f","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUTEX"],"series_id":"45bf7b87-bb22-4556-b9af-39f51554e5c4","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-26 07:24:55 +0000 UTC FinishedAt: 2026-08-26 07:24:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflow227gk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8a9091052cc81caa5570835049c809da804baa3f","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUTEX"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["fixup_user_fault"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"8a9091052cc81caa5570835049c809da804baa3f","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUTEX"],"series_id":"45bf7b87-bb22-4556-b9af-39f51554e5c4","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-26 07:24:55 +0000 UTC FinishedAt: 2026-08-26 07:24:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflow227gk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8a9091052cc81caa5570835049c809da804baa3f","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUTEX"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["fixup_user_fault"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"8a9091052cc81caa5570835049c809da804baa3f","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUTEX"],"series_id":"45bf7b87-bb22-4556-b9af-39f51554e5c4","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-26 07:24:55 +0000 UTC FinishedAt: 2026-08-26 07:41:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflow227gk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8a9091052cc81caa5570835049c809da804baa3f","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUTEX"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["fixup_user_fault"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"8a9091052cc81caa5570835049c809da804baa3f","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUTEX"],"series_id":"45bf7b87-bb22-4556-b9af-39f51554e5c4","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-26 07:24:55 +0000 UTC FinishedAt: 2026-08-26 07:41:21 +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:*fccf2376-d468-4f0f-8d76-c177017fb431,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-workflow227gk/series-workflow227gk-convert-artifact-2760343864/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": "cfb7bbb0-fac5-40c2-91bf-d5b350952fe7", "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-workflow227gk/series-workflow227gk-build-action-1385929252/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow227gk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8a9091052cc81caa5570835049c809da804baa3f","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUTEX"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["fixup_user_fault"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"8a9091052cc81caa5570835049c809da804baa3f","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUTEX"],"series_id":"45bf7b87-bb22-4556-b9af-39f51554e5c4","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-26 07:24:55 +0000 UTC FinishedAt: 2026-08-26 07:41:11 +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:*fccf2376-d468-4f0f-8d76-c177017fb431,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-workflow227gk/series-workflow227gk-convert-artifact-2760343864/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": "cfb7bbb0-fac5-40c2-91bf-d5b350952fe7", "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-workflow227gk/series-workflow227gk-build-action-1385929252/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow227gk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8a9091052cc81caa5570835049c809da804baa3f","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUTEX"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["fixup_user_fault"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"8a9091052cc81caa5570835049c809da804baa3f","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUTEX"],"series_id":"45bf7b87-bb22-4556-b9af-39f51554e5c4","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-26 07:41:21 +0000 UTC FinishedAt: 2026-08-26 07:41:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflow227gk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8a9091052cc81caa5570835049c809da804baa3f","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUTEX"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["fixup_user_fault"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"8a9091052cc81caa5570835049c809da804baa3f","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUTEX"],"series_id":"45bf7b87-bb22-4556-b9af-39f51554e5c4","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-26 07:41:21 +0000 UTC FinishedAt: 2026-08-26 07:41:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflow227gk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8a9091052cc81caa5570835049c809da804baa3f","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUTEX"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["fixup_user_fault"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"8a9091052cc81caa5570835049c809da804baa3f","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUTEX"],"series_id":"45bf7b87-bb22-4556-b9af-39f51554e5c4","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-26 07:41:21 +0000 UTC FinishedAt: 2026-08-26 07:43:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflow227gk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8a9091052cc81caa5570835049c809da804baa3f","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUTEX"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["fixup_user_fault"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"8a9091052cc81caa5570835049c809da804baa3f","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUTEX"],"series_id":"45bf7b87-bb22-4556-b9af-39f51554e5c4","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-26 07:41:21 +0000 UTC FinishedAt: 2026-08-26 07:43:15 +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:*cfb7bbb0-fac5-40c2-91bf-d5b350952fe7,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-workflow227gk/series-workflow227gk-build-action-1385929252/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-workflow227gk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8a9091052cc81caa5570835049c809da804baa3f","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUTEX"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["fixup_user_fault"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"8a9091052cc81caa5570835049c809da804baa3f","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUTEX"],"series_id":"45bf7b87-bb22-4556-b9af-39f51554e5c4","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-26 07:43:25 +0000 UTC FinishedAt: 2026-08-26 10:47:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflow227gk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8a9091052cc81caa5570835049c809da804baa3f","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUTEX"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["fixup_user_fault"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"8a9091052cc81caa5570835049c809da804baa3f","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUTEX"],"series_id":"45bf7b87-bb22-4556-b9af-39f51554e5c4","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-26 07:43:25 +0000 UTC FinishedAt: 2026-08-26 10:47:50 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["fixup_user_fault"],"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:*e12a5c86-e0bc-4888-bb02-42850d9e095d,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*cfb7bbb0-fac5-40c2-91bf-d5b350952fe7,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-workflow227gk/series-workflow227gk-build-action-2534057875/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-workflow227gk/series-workflow227gk-build-action-1385929252/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow227gk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8a9091052cc81caa5570835049c809da804baa3f","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUTEX"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["fixup_user_fault"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"8a9091052cc81caa5570835049c809da804baa3f","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUTEX"],"series_id":"45bf7b87-bb22-4556-b9af-39f51554e5c4","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-26 07:43:25 +0000 UTC FinishedAt: 2026-08-26 07:43:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflow227gk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8a9091052cc81caa5570835049c809da804baa3f","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUTEX"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["fixup_user_fault"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"8a9091052cc81caa5570835049c809da804baa3f","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUTEX"],"series_id":"45bf7b87-bb22-4556-b9af-39f51554e5c4","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-26 07:43:25 +0000 UTC FinishedAt: 2026-08-26 07:43:30 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["fixup_user_fault"],"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-workflow227gk/series-workflow227gk-convert-artifact-1760871313/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow227gk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8a9091052cc81caa5570835049c809da804baa3f","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUTEX"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["fixup_user_fault"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"8a9091052cc81caa5570835049c809da804baa3f","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUTEX"],"series_id":"45bf7b87-bb22-4556-b9af-39f51554e5c4","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-26 07:43:25 +0000 UTC FinishedAt: 2026-08-26 07:43:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflow227gk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8a9091052cc81caa5570835049c809da804baa3f","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUTEX"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["fixup_user_fault"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"8a9091052cc81caa5570835049c809da804baa3f","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUTEX"],"series_id":"45bf7b87-bb22-4556-b9af-39f51554e5c4","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-26 07:43:25 +0000 UTC FinishedAt: 2026-08-26 07:43:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflow227gk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8a9091052cc81caa5570835049c809da804baa3f","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUTEX"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["fixup_user_fault"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"8a9091052cc81caa5570835049c809da804baa3f","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUTEX"],"series_id":"45bf7b87-bb22-4556-b9af-39f51554e5c4","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-26 07:43:25 +0000 UTC FinishedAt: 2026-08-26 07:43:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflow227gk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8a9091052cc81caa5570835049c809da804baa3f","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUTEX"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["fixup_user_fault"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"8a9091052cc81caa5570835049c809da804baa3f","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUTEX"],"series_id":"45bf7b87-bb22-4556-b9af-39f51554e5c4","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-26 07:43:35 +0000 UTC FinishedAt: 2026-08-26 10:47:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflow227gk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8a9091052cc81caa5570835049c809da804baa3f","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUTEX"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["fixup_user_fault"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"8a9091052cc81caa5570835049c809da804baa3f","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUTEX"],"series_id":"45bf7b87-bb22-4556-b9af-39f51554e5c4","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-26 07:43:35 +0000 UTC FinishedAt: 2026-08-26 10:47:40 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*e12a5c86-e0bc-4888-bb02-42850d9e095d,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*cfb7bbb0-fac5-40c2-91bf-d5b350952fe7,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-workflow227gk/series-workflow227gk-build-action-2534057875/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-workflow227gk/series-workflow227gk-build-action-1385929252/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-workflow227gk/series-workflow227gk-convert-artifact-1760871313/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,}