Name: series-workflow2t54t Phase: Succeeded StartedAt: 2026-07-29 19:22:48 +0000 UTC FinishedAt: 2026-07-29 20:21:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2t54t[0] Phase: Succeeded StartedAt: 2026-07-29 19:22:48 +0000 UTC FinishedAt: 2026-07-29 19:28:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2t54t[0].run-triage Phase: Succeeded StartedAt: 2026-07-29 19:22:48 +0000 UTC FinishedAt: 2026-07-29 19:28:52 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "f5098b6bae761e346ebcd9da7f95622c04733cff", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "SUSPEND", "CPU_IDLE" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "f5098b6bae761e346ebcd9da7f95622c04733cff", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "SUSPEND", "CPU_IDLE" ], "series_id": "fcbe0133-76a0-4fd5-8f6c-92c9f951e6f0" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "cpu_suspend" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDE5OjI3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NVU1BFTkQmIzM0OywKICAgICYjMzQ7Q1BVX0lETEUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtjcHVfc3VzcGVuZCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBhcm02NCBDUFUgc3VzcGVuZC9pZGxlIGxvZ2ljIHRvIGNvbmRpdGlvbmFsbHkgY2FsbCBSQ1UgaWRsZSBmdW5jdGlvbnMgYmFzZWQgb24gd2hldGhlciB0aGUgY3VycmVudCB0YXNrIGlzIHRoZSBpZGxlIHRhc2suIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIGFyY2hpdGVjdHVyZSBjb2RlIHRoYXQgaXMgcmVhY2hhYmxlIHZpYSBzeXN0ZW0gc3VzcGVuZCBvciBDUFUgaWRsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMTk6Mjc8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA5YzEzN2FiYmM1MGJjNzhkZmVhYTVjZWE1MTQ2MTdjMGIzY2I3YjU0XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgMjkgMTk6Mjc6NDYgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9rZXJuZWwvc3VzcGVuZC5jIGIvYXJjaC9hcm02NC9rZXJuZWwvc3VzcGVuZC5jXG5pbmRleCBlYWFmZjk0MzI5Y2RkLi5jNmI2YjFjYWNiZjM3IDEwMDY0NFxuLS0tIGEvYXJjaC9hcm02NC9rZXJuZWwvc3VzcGVuZC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL2FybTY0L2tlcm5lbC9zdXNwZW5kLmNcbkBAIC01LDYgJiM0Mzs1LDcgQEBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC91YWNjZXNzLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9wZ3RhYmxlLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9jcHVpZGxlLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvc2NoZWQuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2FzbS9hbHRlcm5hdGl2ZS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjYXNtL2NhY2hlZmx1c2guaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2FzbS9jcHVmZWF0dXJlLmhcdTAwM2VcbkBAIC05OSw2ICYjNDM7MTAwLDcgQEAgaW50IGNwdV9zdXNwZW5kKHVuc2lnbmVkIGxvbmcgYXJnLCBpbnQgKCpmbikodW5zaWduZWQgbG9uZykpXG4gXHRpbnQgcmV0ID0gMDtcbiBcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XG4gXHRzdHJ1Y3Qgc2xlZXBfc3RhY2tfZGF0YSBzdGF0ZTtcbiYjNDM7XHRib29sIGlkbGUgPSBpc19pZGxlX3Rhc2soY3VycmVudCk7XG4gXHRzdHJ1Y3QgYXJtX2NwdWlkbGVfaXJxX2NvbnRleHQgY29udGV4dDtcbiBcbiBcdC8qXG5AQCAtMTM3LDcgJiM0MzsxMzksOCBAQCBpbnQgY3B1X3N1c3BlbmQodW5zaWduZWQgbG9uZyBhcmcsIGludCAoKmZuKSh1bnNpZ25lZCBsb25nKSlcbiBcdCAqL1xuIFx0YXJtX2NwdWlkbGVfc2F2ZV9pcnFfY29udGV4dChcdTAwMjZjb250ZXh0KTtcbiBcbi1cdGN0X2NwdWlkbGVfZW50ZXIoKTtcbiYjNDM7XHRpZiAoaWRsZSlcbiYjNDM7XHRcdGN0X2NwdWlkbGVfZW50ZXIoKTtcbiBcbiBcdGlmIChfX2NwdV9zdXNwZW5kX2VudGVyKFx1MDAyNnN0YXRlKSkge1xuIFx0XHQvKiBDYWxsIHRoZSBzdXNwZW5kIGZpbmlzaGVyICovXG5AQCAtMTUzLDkgJiM0MzsxNTYsMTEgQEAgaW50IGNwdV9zdXNwZW5kKHVuc2lnbmVkIGxvbmcgYXJnLCBpbnQgKCpmbikodW5zaWduZWQgbG9uZykpXG4gXHRcdGlmICghcmV0KVxuIFx0XHRcdHJldCA9IC1FT1BOT1RTVVBQO1xuIFxuLVx0XHRjdF9jcHVpZGxlX2V4aXQoKTtcbiYjNDM7XHRcdGlmIChpZGxlKVxuJiM0MztcdFx0XHRjdF9jcHVpZGxlX2V4aXQoKTtcbiBcdH0gZWxzZSB7XG4tXHRcdGN0X2NwdWlkbGVfZXhpdCgpO1xuJiM0MztcdFx0aWYgKGlkbGUpXG4mIzQzO1x0XHRcdGN0X2NwdWlkbGVfZXhpdCgpO1xuIFx0XHRfX2NwdV9zdXNwZW5kX2V4aXQoKTtcbiBcdH1cbiBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxOToyNzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7U1VTUEVORCYjMzQ7LAogICAgJiMzNDtDUFVfSURMRSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2NwdV9zdXNwZW5kJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGFybTY0IENQVSBzdXNwZW5kL2lkbGUgbG9naWMgdG8gY29uZGl0aW9uYWxseSBjYWxsIFJDVSBpZGxlIGZ1bmN0aW9ucyBiYXNlZCBvbiB3aGV0aGVyIHRoZSBjdXJyZW50IHRhc2sgaXMgdGhlIGlkbGUgdGFzay4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgYXJjaGl0ZWN0dXJlIGNvZGUgdGhhdCBpcyByZWFjaGFibGUgdmlhIHN5c3RlbSBzdXNwZW5kIG9yIENQVSBpZGxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDljMTM3YWJiYzUwYmM3OGRmZWFhNWNlYTUxNDYxN2MwYjNjYjdiNTQKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEp1bCAyOSAxOToyNzo0NiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuYyBiL2FyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuYwppbmRleCBlYWFmZjk0MzI5Y2RkLi5jNmI2YjFjYWNiZjM3IDEwMDY0NAotLS0gYS9hcmNoL2FybTY0L2tlcm5lbC9zdXNwZW5kLmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9hcm02NC9rZXJuZWwvc3VzcGVuZC5jCkBAIC01LDYgJiM0Mzs1LDcgQEAKICNpbmNsdWRlICZsdDtsaW51eC91YWNjZXNzLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvcGd0YWJsZS5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L2NwdWlkbGUuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvc2NoZWQuaCZndDsKICNpbmNsdWRlICZsdDthc20vYWx0ZXJuYXRpdmUuaCZndDsKICNpbmNsdWRlICZsdDthc20vY2FjaGVmbHVzaC5oJmd0OwogI2luY2x1ZGUgJmx0O2FzbS9jcHVmZWF0dXJlLmgmZ3Q7CkBAIC05OSw2ICYjNDM7MTAwLDcgQEAgaW50IGNwdV9zdXNwZW5kKHVuc2lnbmVkIGxvbmcgYXJnLCBpbnQgKCpmbikodW5zaWduZWQgbG9uZykpCiAJaW50IHJldCA9IDA7CiAJdW5zaWduZWQgbG9uZyBmbGFnczsKIAlzdHJ1Y3Qgc2xlZXBfc3RhY2tfZGF0YSBzdGF0ZTsKJiM0MzsJYm9vbCBpZGxlID0gaXNfaWRsZV90YXNrKGN1cnJlbnQpOwogCXN0cnVjdCBhcm1fY3B1aWRsZV9pcnFfY29udGV4dCBjb250ZXh0OwogCiAJLyoKQEAgLTEzNyw3ICYjNDM7MTM5LDggQEAgaW50IGNwdV9zdXNwZW5kKHVuc2lnbmVkIGxvbmcgYXJnLCBpbnQgKCpmbikodW5zaWduZWQgbG9uZykpCiAJICovCiAJYXJtX2NwdWlkbGVfc2F2ZV9pcnFfY29udGV4dCgmYW1wO2NvbnRleHQpOwogCi0JY3RfY3B1aWRsZV9lbnRlcigpOwomIzQzOwlpZiAoaWRsZSkKJiM0MzsJCWN0X2NwdWlkbGVfZW50ZXIoKTsKIAogCWlmIChfX2NwdV9zdXNwZW5kX2VudGVyKCZhbXA7c3RhdGUpKSB7CiAJCS8qIENhbGwgdGhlIHN1c3BlbmQgZmluaXNoZXIgKi8KQEAgLTE1Myw5ICYjNDM7MTU2LDExIEBAIGludCBjcHVfc3VzcGVuZCh1bnNpZ25lZCBsb25nIGFyZywgaW50ICgqZm4pKHVuc2lnbmVkIGxvbmcpKQogCQlpZiAoIXJldCkKIAkJCXJldCA9IC1FT1BOT1RTVVBQOwogCi0JCWN0X2NwdWlkbGVfZXhpdCgpOwomIzQzOwkJaWYgKGlkbGUpCiYjNDM7CQkJY3RfY3B1aWRsZV9leGl0KCk7CiAJfSBlbHNlIHsKLQkJY3RfY3B1aWRsZV9leGl0KCk7CiYjNDM7CQlpZiAoaWRsZSkKJiM0MzsJCQljdF9jcHVpZGxlX2V4aXQoKTsKIAkJX19jcHVfc3VzcGVuZF9leGl0KCk7CiAJfQogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDE5OjI3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzNTUKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAyOTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyB0aGUgYGNwdV9zdXNwZW5kYCBGdW5jdGlvbioqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCDigJMgc2VlbXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZC4gSXQmIzM5O3MgdG91Y2hpbmcgYGFyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuY2AsIHNwZWNpZmljYWxseSB0aGUgYGNwdV9zdXNwZW5kYCBmdW5jdGlvbi4gVGhlIGtleSBjaGFuZ2UgaXMgdGhpcyBgaXNfaWRsZV90YXNrKGN1cnJlbnQpYCBjaGVjaywgYW5kIHRoZSBjb25kaXRpb25hbCBjYWxscyB0byBgY3RfY3B1aWRsZV9lbnRlcigpYCBhbmQgYGN0X2NwdWlkbGVfZXhpdCgpYC4gQmFzaWNhbGx5LCBpdCYjMzk7cyBlbnN1cmluZyB0aG9zZSBpZGxlLXJlbGF0ZWQgZnVuY3Rpb25zIGFyZW4mIzM5O3QgY2FsbGVkIG91dHNpZGUgb2YgdGhlIGlkbGUgdGFzayBjb250ZXh0LgoKUmlnaHQsIHRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB3aXRoaW4gdGhlIGFybTY0IGFyY2hpdGVjdHVyZSYjMzk7cyBzdXNwZW5kIGNvZGUuIFRoZSBxdWVzdGlvbiBpcywgaXMgdGhpcyBzb21ldGhpbmcgd29ydGggZnV6emluZz8gTGV0JiMzOTtzIGJyZWFrIGl0IGRvd24uIFRoZSBmdW5jdGlvbiBpbiBxdWVzdGlvbiwgYGNwdV9zdXNwZW5kYCwgaXMgYWxsIGFib3V0IENQVSBzdXNwZW5kIGFuZCBpZGxlLiBDYW4gd2UgYWN0dWFsbHkgcmVhY2ggdGhpcyBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50PyBBYnNvbHV0ZWx5LCBDUFUgc3VzcGVuZCBhbmQgaWRsZSAqY2FuKiBiZSB0cmlnZ2VyZWQuIFRoZSBmYWN0IHRoYXQgaXQmIzM5O3MgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIG1lYW5zIGl0IG1pZ2h0IGJlIGEgYml0IHRyaWNraWVyIHRvIGdldCB0bywgYnV0IGl0JiMzOTtzIGRlZmluaXRlbHkgZmVhc2libGUuCgpUaGUgcmVhbCBxdWVzdGlvbiBpcyAqaG93KiBkbyB3ZSB0cmlnZ2VyIGl0PyBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gaW52ZXN0aWdhdGUgaWYgdGhlcmUgYXJlIGFueSBzeXNjYWxscyB0aGF0IGNhbGwgdGhpcyBmdW5jdGlvbi4gSXQmIzM5O3MgY2FsbGVkIGR1cmluZyBzeXN0ZW0gc3VzcGVuZCBvciBDUFUgaWRsZS4gT2theSwgc28gdGhhdCBzdWdnZXN0cyBhIHJvdXRlOiBzeXN0ZW0gc3VzcGVuZCBjYW4gYmUgaW5pdGlhdGVkIHRocm91Z2ggYC9zeXMvcG93ZXIvc3RhdGVgLiBBbmQgQ1BVIGlkbGUgaXMgbmF0dXJhbGx5IHRyaWdnZXJlZCBieSB0aGUgaWRsZSBsb29wLiBUaGlua2luZyBhYm91dCBpdCwgdGhpcyBpcyBwcm9iYWJseSB3b3J0aCBhIGZ1enppbmcgcnVuLiBUaGlzIHBhdGNoIGRpcmVjdGx5IGFkZHJlc3NlcyBhIGJ1ZyB3aGVyZSBgY3RfY3B1aWRsZV9lbnRlcigpYCB3YXMgYmVpbmcgY2FsbGVkIGluYXBwcm9wcmlhdGVseSwgc3BlY2lmaWNhbGx5IHdoZW4gd2UgKndlcmVuJiMzOTt0KiBpbiB0aGUgaWRsZSB0YXNrIOKAkyBsaWtlIGR1cmluZyBzeXN0ZW0gc3VzcGVuZC4gVGhpcyBpcyBhbiBleGNlbGxlbnQgY2FuZGlkYXRlIGZvciBmdXp6aW5nLgoKTm93LCBsZXQgbWUgZ28gYmFjayBhbmQgZ2l2ZSBgY3B1X3N1c3BlbmRgIGluIGBhcmNoL2FybTY0L2tlcm5lbC9zdXNwZW5kLmNgIGEgY2xvc2UgbG9vay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxOToyNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjcHVfc3VzcGVuZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL2FybTY0L2tlcm5lbC9zdXNwZW5kLmMtMjMtLypcbmFyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuYzoyNDogKiBUaGlzIGlzIGFsbG9jYXRlZCBieSBjcHVfc3VzcGVuZF9pbml0KCksIGFuZCB1c2VkIHRvIHN0b3JlIGEgcG9pbnRlciB0b1xuYXJjaC9hcm02NC9rZXJuZWwvc3VzcGVuZC5jLTI1LSAqIHRoZSAmIzM5O3N0cnVjdCBzbGVlcF9zdGFja19kYXRhJiMzOTsgdGhlIGNvbnRhaW5zIGEgcGFydGljdWxhciBDUFVzIHN0YXRlLlxuLS1cbmFyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuYz0yNz11bnNpZ25lZCBsb25nICpzbGVlcF9zYXZlX3N0YXNoO1xuLS1cbmFyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuYy0yOS0vKlxuYXJjaC9hcm02NC9rZXJuZWwvc3VzcGVuZC5jOjMwOiAqIFRoaXMgaG9vayBpcyBwcm92aWRlZCBzbyB0aGF0IGNwdV9zdXNwZW5kIGNvZGUgY2FuIHJlc3RvcmUgSFdcbmFyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuYy0zMS0gKiBicmVha3BvaW50cyBhcyBlYXJseSBhcyBwb3NzaWJsZSBpbiB0aGUgcmVzdW1lIHBhdGgsIGJlZm9yZSByZWVuYWJsaW5nXG4tLVxuYXJjaC9hcm02NC9rZXJuZWwvc3VzcGVuZC5jPTM2PXN0YXRpYyBpbnQgKCpod19icmVha3BvaW50X3Jlc3RvcmUpKHVuc2lnbmVkIGludCk7XG5hcmNoL2FybTY0L2tlcm5lbC9zdXNwZW5kLmM6Mzc6dm9pZCBfX2luaXQgY3B1X3N1c3BlbmRfc2V0X2RiZ19yZXN0b3JlcihpbnQgKCpod19icF9yZXN0b3JlKSh1bnNpZ25lZCBpbnQpKVxuYXJjaC9hcm02NC9rZXJuZWwvc3VzcGVuZC5jLTM4LXtcbi0tXG5hcmNoL2FybTY0L2tlcm5lbC9zdXNwZW5kLmMtNDQtXG5hcmNoL2FybTY0L2tlcm5lbC9zdXNwZW5kLmM6NDU6dm9pZCBub3RyYWNlIF9fY3B1X3N1c3BlbmRfZXhpdCh2b2lkKVxuYXJjaC9hcm02NC9rZXJuZWwvc3VzcGVuZC5jLTQ2LXtcbi0tXG5hcmNoL2FybTY0L2tlcm5lbC9zdXNwZW5kLmMtNzItXHQgKiBiZWZvcmUgZGVidWcgZXhjZXB0aW9ucyBhcmUgcG9zc2libHkgcmVlbmFibGVkXG5hcmNoL2FybTY0L2tlcm5lbC9zdXNwZW5kLmM6NzM6XHQgKiBieSBjcHVfc3VzcGVuZCgpcyBsb2NhbF9kYWlmX3Jlc3RvcmUoKSBjYWxsLlxuYXJjaC9hcm02NC9rZXJuZWwvc3VzcGVuZC5jLTc0LVx0ICovXG4tLVxuYXJjaC9hcm02NC9rZXJuZWwvc3VzcGVuZC5jLTkxLS8qXG5hcmNoL2FybTY0L2tlcm5lbC9zdXNwZW5kLmM6OTI6ICogY3B1X3N1c3BlbmRcbmFyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuYy05My0gKlxuLS1cbmFyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuYy05Ny0gKi9cbmFyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuYzo5ODppbnQgY3B1X3N1c3BlbmQodW5zaWduZWQgbG9uZyBhcmcsIGludCAoKmZuKSh1bnNpZ25lZCBsb25nKSlcbmFyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuYy05OS17XG4tLVxuYXJjaC9hcm02NC9rZXJuZWwvc3VzcGVuZC5jLTEwOC1cdCAqIGJlZm9yZSBhbHRlcm5hdGl2ZXMgYXJlIHBhdGNoZWQsIGJ1dCBhcmUgb25seSByZXN0b3JlZCBieVxuYXJjaC9hcm02NC9rZXJuZWwvc3VzcGVuZC5jOjEwOTpcdCAqIF9fY3B1X3N1c3BlbmRfZXhpdCgpIGFmdGVyIGFsdGVybmF0aXZlcyBhcmUgcGF0Y2hlZC4gVG8gYXZvaWRcbmFyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuYy0xMTAtXHQgKiBhY2NpZGVudGFsbHkgbG9zaW5nIHRoZXNlIGJpdHMgd2UgbXVzdCBub3QgYXR0ZW1wdCB0byBzdXNwZW5kIHVudGlsXG4tLVxuYXJjaC9hcm02NC9rZXJuZWwvc3VzcGVuZC5jLTE0NC1cbmFyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuYzoxNDU6XHRpZiAoX19jcHVfc3VzcGVuZF9lbnRlcihcdTAwMjZzdGF0ZSkpIHtcbmFyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuYy0xNDYtXHRcdC8qIENhbGwgdGhlIHN1c3BlbmQgZmluaXNoZXIgKi9cbi0tXG5hcmNoL2FybTY0L2tlcm5lbC9zdXNwZW5kLmMtMTUwLVx0XHQgKiBOZXZlciBnZXRzIGhlcmUsIHVubGVzcyB0aGUgc3VzcGVuZCBmaW5pc2hlciBmYWlscy5cbmFyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuYzoxNTE6XHRcdCAqIFN1Y2Nlc3NmdWwgY3B1X3N1c3BlbmQoKSBzaG91bGQgcmV0dXJuIGZyb20gY3B1X3Jlc3VtZSgpLFxuYXJjaC9hcm02NC9rZXJuZWwvc3VzcGVuZC5jLTE1Mi1cdFx0ICogcmV0dXJuaW5nIHRocm91Z2ggdGhpcyBjb2RlIHBhdGggaXMgY29uc2lkZXJlZCBhbiBlcnJvclxuLS1cbmFyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuYy0xNjMtXHRcdFx0Y3RfY3B1aWRsZV9leGl0KCk7XG5hcmNoL2FybTY0L2tlcm5lbC9zdXNwZW5kLmM6MTY0Olx0XHRfX2NwdV9zdXNwZW5kX2V4aXQoKTtcbmFyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuYy0xNjUtXHR9XG4tLVxuYXJjaC9hcm02NC9rZXJuZWwvc3VzcGVuZC5jLTE4MC1cbmFyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuYzoxODE6c3RhdGljIGludCBfX2luaXQgY3B1X3N1c3BlbmRfaW5pdCh2b2lkKVxuYXJjaC9hcm02NC9rZXJuZWwvc3VzcGVuZC5jLTE4Mi17XG4tLVxuYXJjaC9hcm02NC9rZXJuZWwvc3VzcGVuZC5jLTE5MS19XG5hcmNoL2FybTY0L2tlcm5lbC9zdXNwZW5kLmM6MTkyOmVhcmx5X2luaXRjYWxsKGNwdV9zdXNwZW5kX2luaXQpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDE5OjI3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQxMjUKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAxMDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyB0aGUgYGNwdV9zdXNwZW5kYCBGdW5jdGlvbioqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIGBjcHVfc3VzcGVuZGAgd2l0aGluIHRoZSBBUk02NCBhcmNoaXRlY3R1cmUmIzM5O3Mgc3VzcGVuZCBjb2RlLiBJbnRlcmVzdGluZy4gVGhpcyBmdW5jdGlvbiBpcyBhIGtleSBwbGF5ZXIgaW4gYm90aCBDUFUgaWRsZSBhbmQgc3lzdGVtLXdpZGUgc3VzcGVuZCBvcGVyYXRpb25zIOKAkyBkZWZpbml0ZWx5IGEgdGFyZ2V0IHdvcnRoIGNvbnNpZGVyaW5nIGZvciBmdXp6aW5nLiBHaXZlbiBpdHMgY2VudHJhbCByb2xlIGFuZCBmdW5jdGlvbmFsIG5hdHVyZSwgZXZlbiBzdWJ0bGUgYnVncyBoZXJlIGNvdWxkIGhhdmUgYnJvYWQgY29uc2VxdWVuY2VzLgoKVGhlIG9ubHkgcmVhbCBjYXZlYXQgaXMgdGhhdCBpdCYjMzk7cyBhcmNoaXRlY3R1cmUtc3BlY2lmaWMuIEJ1dCB3YWl0LCB3ZSYjMzk7cmUgdGFsa2luZyBBUk02NCBoZXJlLCBhbmQgdGhhdCYjMzk7cyB3ZWxsIHN1cHBvcnRlZCBieSBlbXVsYXRvcnMgbGlrZSBRRU1VLCB3aGljaCBoYW5kbGVzIENQVSBpZGxlIGFuZCBzeXN0ZW0gc3VzcGVuZC4gVGhhdCBtZWFucyB3ZSBzaG91bGQgYmUgYWJsZSB0byB0cmlnZ2VyIHRoaXMgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gRXhjZWxsZW50LiBOb3csIGJlZm9yZSBJIGRpdmUgaW4gdG9vIGRlZXAsIGxldCBtZSB0YWtlIGEgcXVpY2sgbG9vayBhdCB3aG8mIzM5O3MgYWN0dWFsbHkgY2FsbGluZyBgY3B1X3N1c3BlbmRgIHRvIGdldCBhIGJldHRlciBoYW5kbGUgb24gdGhlIHBvdGVudGlhbCBhdHRhY2sgc3VyZmFjZS4gSXQmIzM5O3MgYWx3YXlzIGdvb2QgdG8gdW5kZXJzdGFuZCB0aGUgY2FsbCBncmFwaCBiZWZvcmUgbGF1bmNoaW5nIGFueSBmdXp6aW5nIGNhbXBhaWduLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDE5OjI3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NwdV9zdXNwZW5kJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9hcm02NC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9hcm02NC9ib290L2R0cy9hbWF6b24vYWxwaW5lLXYyLmR0c2k9Nzk9XHRwc2NpIHtcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2FtYXpvbi9hbHBpbmUtdjIuZHRzaS04MS1cdFx0bWV0aG9kID0gXCYjMzQ7c21jXCYjMzQ7O1xuYXJjaC9hcm02NC9ib290L2R0cy9hbWF6b24vYWxwaW5lLXYyLmR0c2k6ODI6XHRcdGNwdV9zdXNwZW5kID0gXHUwMDNjMHg4NDAwMDAwMVx1MDAzZTtcbmFyY2gvYXJtNjQvYm9vdC9kdHMvYW1hem9uL2FscGluZS12Mi5kdHNpLTgzLVx0XHRjcHVfb2ZmID0gXHUwMDNjMHg4NDAwMDAwMlx1MDAzZTtcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2V4eW5vcy9leHlub3M3ODcwLmR0c2k9MTI4PVx0cHNjaSB7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9leHlub3MvZXh5bm9zNzg3MC5kdHNpLTEzMC1cdFx0bWV0aG9kID0gXCYjMzQ7c21jXCYjMzQ7O1xuYXJjaC9hcm02NC9ib290L2R0cy9leHlub3MvZXh5bm9zNzg3MC5kdHNpOjEzMTpcdFx0Y3B1X3N1c3BlbmQgPSBcdTAwM2MweGM0MDAwMDAxXHUwMDNlO1xuYXJjaC9hcm02NC9ib290L2R0cy9leHlub3MvZXh5bm9zNzg3MC5kdHNpLTEzMi1cdFx0Y3B1X29mZiA9IFx1MDAzYzB4ODQwMDAwMDJcdTAwM2U7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9leHlub3MvZXh5bm9zNzg4NS5kdHNpPTE0Mz1cdHBzY2kge1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvZXh5bm9zL2V4eW5vczc4ODUuZHRzaS0xNDUtXHRcdG1ldGhvZCA9IFwmIzM0O3NtY1wmIzM0OztcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZXh5bm9zL2V4eW5vczc4ODUuZHRzaToxNDY6XHRcdGNwdV9zdXNwZW5kID0gXHUwMDNjMHhjNDAwMDAwMVx1MDAzZTtcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZXh5bm9zL2V4eW5vczc4ODUuZHRzaS0xNDctXHRcdGNwdV9vZmYgPSBcdTAwM2MweDg0MDAwMDAyXHUwMDNlO1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvZXh5bm9zL2V4eW5vczg4OTUuZHRzaT0xNTI9XHRwc2NpIHtcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2V4eW5vcy9leHlub3M4ODk1LmR0c2ktMTU2LVx0XHRjcHVfb24gPSBcdTAwM2MweGM0MDAwMDAzXHUwMDNlO1xuYXJjaC9hcm02NC9ib290L2R0cy9leHlub3MvZXh5bm9zODg5NS5kdHNpOjE1NzpcdFx0Y3B1X3N1c3BlbmQgPSBcdTAwM2MweGM0MDAwMDAxXHUwMDNlO1xuYXJjaC9hcm02NC9ib290L2R0cy9leHlub3MvZXh5bm9zODg5NS5kdHNpLTE1OC1cdH07XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9leHlub3MvZXh5bm9zOTgxMC5kdHNpPTE1Mz1cdHBzY2kge1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvZXh5bm9zL2V4eW5vczk4MTAuZHRzaS0xNTctXHRcdGNwdV9vbiA9IFx1MDAzYzB4YzQwMDAwMDNcdTAwM2U7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL2V4eW5vcy9leHlub3M5ODEwLmR0c2k6MTU4Olx0XHRjcHVfc3VzcGVuZCA9IFx1MDAzYzB4YzQwMDAwMDFcdTAwM2U7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL2V4eW5vcy9leHlub3M5ODEwLmR0c2ktMTU5LVx0fTtcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2V4eW5vcy9leHlub3NhdXRvdjkuZHRzaT0xMzg9XHRwc2NpIHtcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2V4eW5vcy9leHlub3NhdXRvdjkuZHRzaS0xNDAtXHRcdG1ldGhvZCA9IFwmIzM0O3NtY1wmIzM0OztcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZXh5bm9zL2V4eW5vc2F1dG92OS5kdHNpOjE0MTpcdFx0Y3B1X3N1c3BlbmQgPSBcdTAwM2MweGM0MDAwMDAxXHUwMDNlO1xuYXJjaC9hcm02NC9ib290L2R0cy9leHlub3MvZXh5bm9zYXV0b3Y5LmR0c2ktMTQyLVx0XHRjcHVfb2ZmID0gXHUwMDNjMHg4NDAwMDAwMlx1MDAzZTtcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2xnL2xnMTMxeC5kdHNpPTU1PVx0cHNjaSB7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9sZy9sZzEzMXguZHRzaS01Ny1cdFx0bWV0aG9kID0gXCYjMzQ7c21jXCYjMzQ7O1xuYXJjaC9hcm02NC9ib290L2R0cy9sZy9sZzEzMXguZHRzaTo1ODpcdFx0Y3B1X3N1c3BlbmQgPSBcdTAwM2MweDg0MDAwMDAxXHUwMDNlO1xuYXJjaC9hcm02NC9ib290L2R0cy9sZy9sZzEzMXguZHRzaS01OS1cdFx0Y3B1X29mZiA9IFx1MDAzYzB4ODQwMDAwMDJcdTAwM2U7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9tZWRpYXRlay9tdDgxNzMuZHRzaT0yMzk9XHRwc2NpIHtcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL21lZGlhdGVrL210ODE3My5kdHNpLTI0MS1cdFx0bWV0aG9kID0gXCYjMzQ7c21jXCYjMzQ7O1xuYXJjaC9hcm02NC9ib290L2R0cy9tZWRpYXRlay9tdDgxNzMuZHRzaToyNDI6XHRcdGNwdV9zdXNwZW5kID0gXHUwMDNjMHg4NDAwMDAwMVx1MDAzZTtcbmFyY2gvYXJtNjQvYm9vdC9kdHMvbWVkaWF0ZWsvbXQ4MTczLmR0c2ktMjQzLVx0XHRjcHVfb2ZmXHQgPSBcdTAwM2MweDg0MDAwMDAyXHUwMDNlO1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvc3ByZC9zYzk4MzYuZHRzaT0yMDg9XHRwc2NpIHtcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL3NwcmQvc2M5ODM2LmR0c2ktMjEyLVx0XHRjcHVfb2ZmID0gXHUwMDNjMHg4NDAwMDAwMlx1MDAzZTtcbmFyY2gvYXJtNjQvYm9vdC9kdHMvc3ByZC9zYzk4MzYuZHRzaToyMTM6XHRcdGNwdV9zdXNwZW5kID0gXHUwMDNjMHhjNDAwMDAwMVx1MDAzZTtcbmFyY2gvYXJtNjQvYm9vdC9kdHMvc3ByZC9zYzk4MzYuZHRzaS0yMTQtXHR9O1xuLS1cbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vaHdfYnJlYWtwb2ludC5oPTE0OD1zdGF0aWMgaW5saW5lIGludCBnZXRfbnVtX3dycHModm9pZClcbi0tXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2h3X2JyZWFrcG9pbnQuaC0xNTYtI2lmZGVmIENPTkZJR19DUFVfUE1cbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vaHdfYnJlYWtwb2ludC5oOjE1NzpleHRlcm4gdm9pZCBjcHVfc3VzcGVuZF9zZXRfZGJnX3Jlc3RvcmVyKGludCAoKmh3X2JwX3Jlc3RvcmUpKHVuc2lnbmVkIGludCkpO1xuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9od19icmVha3BvaW50LmgtMTU4LSNlbHNlXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2h3X2JyZWFrcG9pbnQuaDoxNTk6c3RhdGljIGlubGluZSB2b2lkIGNwdV9zdXNwZW5kX3NldF9kYmdfcmVzdG9yZXIoaW50ICgqaHdfYnBfcmVzdG9yZSkodW5zaWduZWQgaW50KSlcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vaHdfYnJlYWtwb2ludC5oLTE2MC17XG4tLVxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9rdm1faG9zdC5oPTgxMT1zdHJ1Y3Qga3ZtX2hvc3RfcHNjaV9jb25maWcge1xuLS1cbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20va3ZtX2hvc3QuaC04MTgtXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2t2bV9ob3N0Lmg6ODE5Olx0Ym9vbCBwc2NpXzBfMV9jcHVfc3VzcGVuZF9pbXBsZW1lbnRlZDtcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20va3ZtX2hvc3QuaC04MjAtXHRib29sIHBzY2lfMF8xX2NwdV9vbl9pbXBsZW1lbnRlZDtcbi0tXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL21tdV9jb250ZXh0Lmg9MTA0PXN0YXRpYyBpbmxpbmUgdm9pZCBjcHVfaW5zdGFsbF9pZG1hcCh2b2lkKVxuLS1cbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vbW11X2NvbnRleHQuaC0xMjMtICogV2UgY2hhbmdlIFQwU1ogYXMgcGFydCBvZiBpbnN0YWxsaW5nIHRoZSBpZG1hcC4gVGhpcyBpcyB1bmRvbmUgYnlcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vbW11X2NvbnRleHQuaDoxMjQ6ICogY3B1X3VuaW5zdGFsbF9pZG1hcCgpIGluIF9fY3B1X3N1c3BlbmRfZXhpdCgpLlxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9tbXVfY29udGV4dC5oLTEyNS0gKi9cbi0tXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3Byb2MtZm5zLmgtMTUtXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3Byb2MtZm5zLmg6MTY6c3RydWN0IGNwdV9zdXNwZW5kX2N0eDtcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vcHJvYy1mbnMuaC0xNy1cbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vcHJvYy1mbnMuaD0xOD1leHRlcm4gdm9pZCBjcHVfZG9faWRsZSh2b2lkKTtcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vcHJvYy1mbnMuaDoxOTpleHRlcm4gdm9pZCBjcHVfZG9fc3VzcGVuZChzdHJ1Y3QgY3B1X3N1c3BlbmRfY3R4ICpwdHIpO1xuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9wcm9jLWZucy5oLTIwLWV4dGVybiB1NjQgY3B1X2RvX3Jlc3VtZShwaHlzX2FkZHJfdCBwdHIsIHU2NCBpZG1hcF90dGJyKTtcbi0tXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3N1c3BlbmQuaC04LS8qXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3N1c3BlbmQuaDo5OiAqIHN0cnVjdCBjcHVfc3VzcGVuZF9jdHggbXVzdCBiZSAxNi1ieXRlIGFsaWduZWQgc2luY2UgaXQgaXMgYWxsb2NhdGVkIG9uXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3N1c3BlbmQuaC0xMC0gKiB0aGUgc3RhY2ssIHdoaWNoIG11c3QgYmUgMTYtYnl0ZSBhbGlnbmVkIG9uIHY4XG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3N1c3BlbmQuaC0xMS0gKi9cbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vc3VzcGVuZC5oOjEyOnN0cnVjdCBjcHVfc3VzcGVuZF9jdHgge1xuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9zdXNwZW5kLmgtMTMtXHQvKlxuLS1cbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vc3VzcGVuZC5oLTIyLSAqIE1lbW9yeSB0byBzYXZlIHRoZSBjcHUgc3RhdGUgaXMgYWxsb2NhdGVkIG9uIHRoZSBzdGFjayBieVxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9zdXNwZW5kLmg6MjM6ICogX19jcHVfc3VzcGVuZF9lbnRlcigpJiMzOTtzIGNhbGxlciwgYW5kIHBvcHVsYXRlZCBieSBfX2NwdV9zdXNwZW5kX2VudGVyKCkuXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3N1c3BlbmQuaC0yNC0gKiBUaGlzIGRhdGEgbXVzdCBzdXJ2aXZlIHVudGlsIGNwdV9yZXN1bWUoKSBpcyBjYWxsZWQuXG4tLVxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9zdXNwZW5kLmgtMjctICogVGhlIGxheW91dCBvZiB0aGUgY2FsbGVlX3NhdmVkX3JlZ3MgaXMgZGVmaW5lZCBieSB0aGUgaW1wbGVtZW50YXRpb25cbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vc3VzcGVuZC5oOjI4OiAqIG9mIF9fY3B1X3N1c3BlbmRfZW50ZXIoKSwgYW5kIGNwdV9yZXN1bWUoKS4gVGhpcyBzdHJ1Y3QgbXVzdCBiZSBwYXNzZWRcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vc3VzcGVuZC5oOjI5OiAqIGluIGJ5IHRoZSBjYWxsZXIgYXMgX19jcHVfc3VzcGVuZF9lbnRlcigpJiMzOTtzIHN0YWNrLWZyYW1lIGlzIGdvbmUgb25jZSBpdFxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9zdXNwZW5kLmgtMzAtICogcmV0dXJucywgYW5kIHRoZSBkYXRhIHdvdWxkIGJlIHN1YnNlcXVlbnRseSBjb3JydXB0ZWQgYnkgdGhlIGNhbGwgdG8gdGhlXG4tLVxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9zdXNwZW5kLmg9MzM9c3RydWN0IHNsZWVwX3N0YWNrX2RhdGEge1xuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9zdXNwZW5kLmg6MzQ6XHRzdHJ1Y3QgY3B1X3N1c3BlbmRfY3R4XHRzeXN0ZW1fcmVncztcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vc3VzcGVuZC5oLTM1LVx0dW5zaWduZWQgbG9uZ1x0XHRjYWxsZWVfc2F2ZWRfcmVnc1tOUl9DQUxMRUVfU0FWRURfUkVHU107XG4tLVxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9zdXNwZW5kLmg9Mzg9ZXh0ZXJuIHVuc2lnbmVkIGxvbmcgKnNsZWVwX3NhdmVfc3Rhc2g7XG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3N1c3BlbmQuaC0zOS1cbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vc3VzcGVuZC5oOjQwOmV4dGVybiBpbnQgY3B1X3N1c3BlbmQodW5zaWduZWQgbG9uZyBhcmcsIGludCAoKmZuKSh1bnNpZ25lZCBsb25nKSk7XG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3N1c3BlbmQuaC00MS1leHRlcm4gdm9pZCBjcHVfcmVzdW1lKHZvaWQpO1xuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9zdXNwZW5kLmg6NDI6aW50IF9fY3B1X3N1c3BlbmRfZW50ZXIoc3RydWN0IHNsZWVwX3N0YWNrX2RhdGEgKnN0YXRlKTtcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vc3VzcGVuZC5oOjQzOnZvaWQgX19jcHVfc3VzcGVuZF9leGl0KHZvaWQpO1xuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9zdXNwZW5kLmgtNDQtdm9pZCBfY3B1X3Jlc3VtZSh2b2lkKTtcbi0tXG5hcmNoL2FybTY0L2tlcm5lbC9hc20tb2Zmc2V0cy5jPTI3PWludCBtYWluKHZvaWQpXG4tLVxuYXJjaC9hcm02NC9rZXJuZWwvYXNtLW9mZnNldHMuYy0xMjktI2lmZGVmIENPTkZJR19DUFVfUE1cbmFyY2gvYXJtNjQva2VybmVsL2FzbS1vZmZzZXRzLmM6MTMwOiAgREVGSU5FKENQVV9DVFhfU1AsXHRcdG9mZnNldG9mKHN0cnVjdCBjcHVfc3VzcGVuZF9jdHgsIHNwKSk7XG5hcmNoL2FybTY0L2tlcm5lbC9hc20tb2Zmc2V0cy5jLTEzMS0gIERFRklORShNUElEUl9IQVNIX01BU0ssXHRvZmZzZXRvZihzdHJ1Y3QgbXBpZHJfaGFzaCwgbWFzaykpO1xuLS1cbmFyY2gvYXJtNjQva2VybmVsL2hpYmVybmF0ZS5jPTEwOD1pbnQgYXJjaF9oaWJlcm5hdGlvbl9oZWFkZXJfc2F2ZSh2b2lkICphZGRyLCB1bnNpZ25lZCBpbnQgbWF4X3NpemUpXG4tLVxuYXJjaC9hcm02NC9rZXJuZWwvaGliZXJuYXRlLmMtMTI0LVxuYXJjaC9hcm02NC9rZXJuZWwvaGliZXJuYXRlLmM6MTI1Olx0LyogU2F2ZSB0aGUgbXBpZHIgb2YgdGhlIGNwdSB3ZSBjYWxsZWQgY3B1X3N1c3BlbmQoKSBvbi4uLiAqL1xuYXJjaC9hcm02NC9rZXJuZWwvaGliZXJuYXRlLmMtMTI2LVx0aWYgKHNsZWVwX2NwdSBcdTAwM2MgMCkge1xuLS1cbmFyY2gvYXJtNjQva2VybmVsL2hpYmVybmF0ZS5jPTMzMz1pbnQgc3dzdXNwX2FyY2hfc3VzcGVuZCh2b2lkKVxuLS1cbmFyY2gvYXJtNjQva2VybmVsL2hpYmVybmF0ZS5jLTM0NS1cbmFyY2gvYXJtNjQva2VybmVsL2hpYmVybmF0ZS5jOjM0NjpcdGlmIChfX2NwdV9zdXNwZW5kX2VudGVyKFx1MDAyNnN0YXRlKSkge1xuYXJjaC9hcm02NC9rZXJuZWwvaGliZXJuYXRlLmMtMzQ3LVx0XHQvKiBtYWtlIHRoZSBjcmFzaCBkdW1wIGtlcm5lbCBpbWFnZSB2aXNpYmxlL3NhdmVhYmxlICovXG4tLVxuYXJjaC9hcm02NC9rZXJuZWwvaGliZXJuYXRlLmMtMzgzLVx0XHRzbGVlcF9jcHUgPSAtRUlOVkFMO1xuYXJjaC9hcm02NC9rZXJuZWwvaGliZXJuYXRlLmM6Mzg0Olx0XHRfX2NwdV9zdXNwZW5kX2V4aXQoKTtcbmFyY2gvYXJtNjQva2VybmVsL2hpYmVybmF0ZS5jLTM4NS1cbi0tXG5hcmNoL2FybTY0L2tlcm5lbC9od19icmVha3BvaW50LmM9OTgzPXN0YXRpYyBpbnQgX19pbml0IGFyY2hfaHdfYnJlYWtwb2ludF9pbml0KHZvaWQpXG4tLVxuYXJjaC9hcm02NC9rZXJuZWwvaHdfYnJlYWtwb2ludC5jLTEwMDItXG5hcmNoL2FybTY0L2tlcm5lbC9od19icmVha3BvaW50LmM6MTAwMzpcdC8qIFJlZ2lzdGVyIGNwdV9zdXNwZW5kIGh3IGJyZWFrcG9pbnQgcmVzdG9yZSBob29rICovXG5hcmNoL2FybTY0L2tlcm5lbC9od19icmVha3BvaW50LmM6MTAwNDpcdGNwdV9zdXNwZW5kX3NldF9kYmdfcmVzdG9yZXIoaHdfYnJlYWtwb2ludF9yZXNldCk7XG5hcmNoL2FybTY0L2tlcm5lbC9od19icmVha3BvaW50LmMtMTAwNS1cbi0tXG5hcmNoL2FybTY0L2tlcm5lbC9zbGVlcC5TLTU5LSAqIGZ1bmN0aW9uLiBTbyB0aGF0IHRoZSBjYWxsZXIgY2FuIHRlbGwgdGhlIHN1c3BlbmQvcmVzdW1lIHBhdGhzIGFwYXJ0LFxuYXJjaC9hcm02NC9rZXJuZWwvc2xlZXAuUzo2MDogKiBfX2NwdV9zdXNwZW5kX2VudGVyKCkgd2lsbCBhbHdheXMgcmV0dXJuIGEgbm9uLXplcm8gdmFsdWUsIHdoZXJlYXMgdGhlXG5hcmNoL2FybTY0L2tlcm5lbC9zbGVlcC5TLTYxLSAqIHBhdGggdGhyb3VnaCBjcHVfcmVzdW1lKCkgd2lsbCByZXR1cm4gMC5cbi0tXG5hcmNoL2FybTY0L2tlcm5lbC9zbGVlcC5TLTY0LSAqL1xuYXJjaC9hcm02NC9rZXJuZWwvc2xlZXAuUzo2NTpTWU1fRlVOQ19TVEFSVChfX2NwdV9zdXNwZW5kX2VudGVyKVxuYXJjaC9hcm02NC9rZXJuZWwvc2xlZXAuUy02Ni1cdHN0cFx0eDI5LCBsciwgW3gwLCAjU0xFRVBfU1RBQ0tfREFUQV9DQUxMRUVfUkVHU11cbi0tXG5hcmNoL2FybTY0L2tlcm5lbC9zbGVlcC5TLTcyLVxuYXJjaC9hcm02NC9rZXJuZWwvc2xlZXAuUzo3MzpcdC8qIHNhdmUgdGhlIHNwIGluIGNwdV9zdXNwZW5kX2N0eCAqL1xuYXJjaC9hcm02NC9rZXJuZWwvc2xlZXAuUy03NC1cdG1vdlx0eDIsIHNwXG4tLVxuYXJjaC9hcm02NC9rZXJuZWwvc2xlZXAuUy05Ny1cdHJldFxuYXJjaC9hcm02NC9rZXJuZWwvc2xlZXAuUzo5ODpTWU1fRlVOQ19FTkQoX19jcHVfc3VzcGVuZF9lbnRlcilcbmFyY2gvYXJtNjQva2VybmVsL3NsZWVwLlMtOTktXG4tLVxuYXJjaC9hcm02NC9rZXJuZWwvc3VzcGVuZC5jLTIzLS8qXG5hcmNoL2FybTY0L2tlcm5lbC9zdXNwZW5kLmM6MjQ6ICogVGhpcyBpcyBhbGxvY2F0ZWQgYnkgY3B1X3N1c3BlbmRfaW5pdCgpLCBhbmQgdXNlZCB0byBzdG9yZSBhIHBvaW50ZXIgdG9cbmFyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuYy0yNS0gKiB0aGUgJiMzOTtzdHJ1Y3Qgc2xlZXBfc3RhY2tfZGF0YSYjMzk7IHRoZSBjb250YWlucyBhIHBhcnRpY3VsYXIgQ1BVcyBzdGF0ZS5cbi0tXG5hcmNoL2FybTY0L2tlcm5lbC9zdXNwZW5kLmM9Mjc9dW5zaWduZWQgbG9uZyAqc2xlZXBfc2F2ZV9zdGFzaDtcbi0tXG5hcmNoL2FybTY0L2tlcm5lbC9zdXNwZW5kLmMtMjktLypcbmFyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuYzozMDogKiBUaGlzIGhvb2sgaXMgcHJvdmlkZWQgc28gdGhhdCBjcHVfc3VzcGVuZCBjb2RlIGNhbiByZXN0b3JlIEhXXG5hcmNoL2FybTY0L2tlcm5lbC9zdXNwZW5kLmMtMzEtICogYnJlYWtwb2ludHMgYXMgZWFybHkgYXMgcG9zc2libGUgaW4gdGhlIHJlc3VtZSBwYXRoLCBiZWZvcmUgcmVlbmFibGluZ1xuLS1cbmFyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuYz0zNj1zdGF0aWMgaW50ICgqaHdfYnJlYWtwb2ludF9yZXN0b3JlKSh1bnNpZ25lZCBpbnQpO1xuYXJjaC9hcm02NC9rZXJuZWwvc3VzcGVuZC5jOjM3OnZvaWQgX19pbml0IGNwdV9zdXNwZW5kX3NldF9kYmdfcmVzdG9yZXIoaW50ICgqaHdfYnBfcmVzdG9yZSkodW5zaWduZWQgaW50KSlcbmFyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuYy0zOC17XG4tLVxuYXJjaC9hcm02NC9rZXJuZWwvc3VzcGVuZC5jLTQ0LVxuYXJjaC9hcm02NC9rZXJuZWwvc3VzcGVuZC5jOjQ1OnZvaWQgbm90cmFjZSBfX2NwdV9zdXNwZW5kX2V4aXQodm9pZClcbmFyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuYy00Ni17XG4tLVxuYXJjaC9hcm02NC9rZXJuZWwvc3VzcGVuZC5jLTcyLVx0ICogYmVmb3JlIGRlYnVnIGV4Y2VwdGlvbnMgYXJlIHBvc3NpYmx5IHJlZW5hYmxlZFxuYXJjaC9hcm02NC9rZXJuZWwvc3VzcGVuZC5jOjczOlx0ICogYnkgY3B1X3N1c3BlbmQoKXMgbG9jYWxfZGFpZl9yZXN0b3JlKCkgY2FsbC5cbmFyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuYy03NC1cdCAqL1xuLS1cbmFyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuYy05MS0vKlxuYXJjaC9hcm02NC9rZXJuZWwvc3VzcGVuZC5jOjkyOiAqIGNwdV9zdXNwZW5kXG5hcmNoL2FybTY0L2tlcm5lbC9zdXNwZW5kLmMtOTMtICpcbi0tXG5hcmNoL2FybTY0L2tlcm5lbC9zdXNwZW5kLmMtOTctICovXG5hcmNoL2FybTY0L2tlcm5lbC9zdXNwZW5kLmM6OTg6aW50IGNwdV9zdXNwZW5kKHVuc2lnbmVkIGxvbmcgYXJnLCBpbnQgKCpmbikodW5zaWduZWQgbG9uZykpXG5hcmNoL2FybTY0L2tlcm5lbC9zdXNwZW5kLmMtOTkte1xuLS1cbmFyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuYy0xMDgtXHQgKiBiZWZvcmUgYWx0ZXJuYXRpdmVzIGFyZSBwYXRjaGVkLCBidXQgYXJlIG9ubHkgcmVzdG9yZWQgYnlcbmFyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuYzoxMDk6XHQgKiBfX2NwdV9zdXNwZW5kX2V4aXQoKSBhZnRlciBhbHRlcm5hdGl2ZXMgYXJlIHBhdGNoZWQuIFRvIGF2b2lkXG5hcmNoL2FybTY0L2tlcm5lbC9zdXNwZW5kLmMtMTEwLVx0ICogYWNjaWRlbnRhbGx5IGxvc2luZyB0aGVzZSBiaXRzIHdlIG11c3Qgbm90IGF0dGVtcHQgdG8gc3VzcGVuZCB1bnRpbFxuLS1cbmFyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuYy0xNDQtXG5hcmNoL2FybTY0L2tlcm5lbC9zdXNwZW5kLmM6MTQ1Olx0aWYgKF9fY3B1X3N1c3BlbmRfZW50ZXIoXHUwMDI2c3RhdGUpKSB7XG5hcmNoL2FybTY0L2tlcm5lbC9zdXNwZW5kLmMtMTQ2LVx0XHQvKiBDYWxsIHRoZSBzdXNwZW5kIGZpbmlzaGVyICovXG4tLVxuYXJjaC9hcm02NC9rZXJuZWwvc3VzcGVuZC5jLTE1MC1cdFx0ICogTmV2ZXIgZ2V0cyBoZXJlLCB1bmxlc3MgdGhlIHN1c3BlbmQgZmluaXNoZXIgZmFpbHMuXG5hcmNoL2FybTY0L2tlcm5lbC9zdXNwZW5kLmM6MTUxOlx0XHQgKiBTdWNjZXNzZnVsIGNwdV9zdXNwZW5kKCkgc2hvdWxkIHJldHVybiBmcm9tIGNwdV9yZXN1bWUoKSxcbmFyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuYy0xNTItXHRcdCAqIHJldHVybmluZyB0aHJvdWdoIHRoaXMgY29kZSBwYXRoIGlzIGNvbnNpZGVyZWQgYW4gZXJyb3Jcbi0tXG5hcmNoL2FybTY0L2tlcm5lbC9zdXNwZW5kLmMtMTYzLVx0XHRcdGN0X2NwdWlkbGVfZXhpdCgpO1xuYXJjaC9hcm02NC9rZXJuZWwvc3VzcGVuZC5jOjE2NDpcdFx0X19jcHVfc3VzcGVuZF9leGl0KCk7XG5hcmNoL2FybTY0L2tlcm5lbC9zdXNwZW5kLmMtMTY1LVx0fVxuLS1cbmFyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuYy0xODAtXG5hcmNoL2FybTY0L2tlcm5lbC9zdXNwZW5kLmM6MTgxOnN0YXRpYyBpbnQgX19pbml0IGNwdV9zdXNwZW5kX2luaXQodm9pZClcbmFyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuYy0xODIte1xuLS1cbmFyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuYy0xOTEtfVxuYXJjaC9hcm02NC9rZXJuZWwvc3VzcGVuZC5jOjE5MjplYXJseV9pbml0Y2FsbChjcHVfc3VzcGVuZF9pbml0KTtcbi0tXG5hcmNoL2FybTY0L2t2bS9hcm0uYz03Njk9Ym9vbCBrdm1fYXJtX3ZjcHVfc3RvcHBlZChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC9hcm02NC9rdm0vYXJtLmMtNzczLVxuYXJjaC9hcm02NC9rdm0vYXJtLmM6Nzc0OnN0YXRpYyB2b2lkIGt2bV9hcm1fdmNwdV9zdXNwZW5kKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbmFyY2gvYXJtNjQva3ZtL2FybS5jLTc3NS17XG4tLVxuYXJjaC9hcm02NC9rdm0vYXJtLmMtNzgwLVxuYXJjaC9hcm02NC9rdm0vYXJtLmM6NzgxOnN0YXRpYyBib29sIGt2bV9hcm1fdmNwdV9zdXNwZW5kZWQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuYXJjaC9hcm02NC9rdm0vYXJtLmMtNzgyLXtcbi0tXG5hcmNoL2FybTY0L2t2bS9hcm0uYz03OTQ9aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X21wc3RhdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuLS1cbmFyY2gvYXJtNjQva3ZtL2FybS5jLTgwOC1cdGNhc2UgS1ZNX01QX1NUQVRFX1NVU1BFTkRFRDpcbmFyY2gvYXJtNjQva3ZtL2FybS5jOjgwOTpcdFx0a3ZtX2FybV92Y3B1X3N1c3BlbmQodmNwdSk7XG5hcmNoL2FybTY0L2t2bS9hcm0uYy04MTAtXHRcdGJyZWFrO1xuLS1cbmFyY2gvYXJtNjQva3ZtL2FybS5jPTEwNDA9dm9pZCBrdm1fdmNwdV93Zmkoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gvYXJtNjQva3ZtL2FybS5jLTEwNjUtXG5hcmNoL2FybTY0L2t2bS9hcm0uYzoxMDY2OnN0YXRpYyBpbnQga3ZtX3ZjcHVfc3VzcGVuZChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG5hcmNoL2FybTY0L2t2bS9hcm0uYy0xMDY3LXtcbmFyY2gvYXJtNjQva3ZtL2FybS5jOjEwNjg6XHRpZiAoIWt2bV9hcm1fdmNwdV9zdXNwZW5kZWQodmNwdSkpXG5hcmNoL2FybTY0L2t2bS9hcm0uYy0xMDY5LVx0XHRyZXR1cm4gMTtcbi0tXG5hcmNoL2FybTY0L2t2bS9hcm0uYz0xMTA4PXN0YXRpYyBpbnQgY2hlY2tfdmNwdV9yZXF1ZXN0cyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC9hcm02NC9rdm0vYXJtLmMtMTE0Ny1cdFx0aWYgKGt2bV9jaGVja19yZXF1ZXN0KEtWTV9SRVFfU1VTUEVORCwgdmNwdSkpXG5hcmNoL2FybTY0L2t2bS9hcm0uYzoxMTQ4Olx0XHRcdHJldHVybiBrdm1fdmNwdV9zdXNwZW5kKHZjcHUpO1xuYXJjaC9hcm02NC9rdm0vYXJtLmMtMTE0OS1cbi0tXG5hcmNoL2FybTY0L2t2bS9hcm0uYz0yMzk5PXN0YXRpYyBib29sIF9faW5pdCBpbml0X3BzY2lfcmVsYXkodm9pZClcbi0tXG5hcmNoL2FybTY0L2t2bS9hcm0uYy0yNDE0LVx0XHRrdm1faG9zdF9wc2NpX2NvbmZpZy5mdW5jdGlvbl9pZHNfMF8xID0gZ2V0X3BzY2lfMF8xX2Z1bmN0aW9uX2lkcygpO1xuYXJjaC9hcm02NC9rdm0vYXJtLmM6MjQxNTpcdFx0aW5pdF9wc2NpXzBfMV9pbXBsX3N0YXRlKGt2bV9ob3N0X3BzY2lfY29uZmlnLCBjcHVfc3VzcGVuZCk7XG5hcmNoL2FybTY0L2t2bS9hcm0uYy0yNDE2LVx0XHRpbml0X3BzY2lfMF8xX2ltcGxfc3RhdGUoa3ZtX2hvc3RfcHNjaV9jb25maWcsIGNwdV9vbik7XG4tLVxuYXJjaC9hcm02NC9rdm0vaHlwL252aGUvcHNjaS1yZWxheS5jPTQ5PXN0YXRpYyBib29sIGlzX3BzY2lfMF8xX2NhbGwodTY0IGZ1bmNfaWQpXG5hcmNoL2FybTY0L2t2bS9oeXAvbnZoZS9wc2NpLXJlbGF5LmMtNTAte1xuYXJjaC9hcm02NC9rdm0vaHlwL252aGUvcHNjaS1yZWxheS5jOjUxOlx0cmV0dXJuIChpc19wc2NpXzBfMShjcHVfc3VzcGVuZCwgZnVuY19pZCkgfHxcbmFyY2gvYXJtNjQva3ZtL2h5cC9udmhlL3BzY2ktcmVsYXkuYy01Mi1cdFx0aXNfcHNjaV8wXzEoY3B1X29uLCBmdW5jX2lkKSB8fFxuLS1cbmFyY2gvYXJtNjQva3ZtL2h5cC9udmhlL3BzY2ktcmVsYXkuYz0xMDg9c3RhdGljIGludCBwc2NpX2NwdV9vbih1NjQgZnVuY19pZCwgc3RydWN0IGt2bV9jcHVfY29udGV4dCAqaG9zdF9jdHh0KVxuLS1cbmFyY2gvYXJtNjQva3ZtL2h5cC9udmhlL3BzY2ktcmVsYXkuYy0xNTEtXG5hcmNoL2FybTY0L2t2bS9oeXAvbnZoZS9wc2NpLXJlbGF5LmM6MTUyOnN0YXRpYyBpbnQgcHNjaV9jcHVfc3VzcGVuZCh1NjQgZnVuY19pZCwgc3RydWN0IGt2bV9jcHVfY29udGV4dCAqaG9zdF9jdHh0KVxuYXJjaC9hcm02NC9rdm0vaHlwL252aGUvcHNjaS1yZWxheS5jLTE1My17XG4tLVxuYXJjaC9hcm02NC9rdm0vaHlwL252aGUvcHNjaS1yZWxheS5jPTI0MD1zdGF0aWMgdW5zaWduZWQgbG9uZyBwc2NpXzBfMV9oYW5kbGVyKHU2NCBmdW5jX2lkLCBzdHJ1Y3Qga3ZtX2NwdV9jb250ZXh0ICpob3N0X2N0eHQpXG4tLVxuYXJjaC9hcm02NC9rdm0vaHlwL252aGUvcHNjaS1yZWxheS5jLTI0NS1cdFx0cmV0dXJuIHBzY2lfY3B1X29uKGZ1bmNfaWQsIGhvc3RfY3R4dCk7XG5hcmNoL2FybTY0L2t2bS9oeXAvbnZoZS9wc2NpLXJlbGF5LmM6MjQ2Olx0aWYgKGlzX3BzY2lfMF8xKGNwdV9zdXNwZW5kLCBmdW5jX2lkKSlcbmFyY2gvYXJtNjQva3ZtL2h5cC9udmhlL3BzY2ktcmVsYXkuYzoyNDc6XHRcdHJldHVybiBwc2NpX2NwdV9zdXNwZW5kKGZ1bmNfaWQsIGhvc3RfY3R4dCk7XG5hcmNoL2FybTY0L2t2bS9oeXAvbnZoZS9wc2NpLXJlbGF5LmMtMjQ4LVxuLS1cbmFyY2gvYXJtNjQva3ZtL2h5cC9udmhlL3BzY2ktcmVsYXkuYz0yNTI9c3RhdGljIHVuc2lnbmVkIGxvbmcgcHNjaV8wXzJfaGFuZGxlcih1NjQgZnVuY19pZCwgc3RydWN0IGt2bV9jcHVfY29udGV4dCAqaG9zdF9jdHh0KVxuLS1cbmFyY2gvYXJtNjQva3ZtL2h5cC9udmhlL3BzY2ktcmVsYXkuYy0yNjktXHRjYXNlIFBTQ0lfMF8yX0ZONjRfQ1BVX1NVU1BFTkQ6XG5hcmNoL2FybTY0L2t2bS9oeXAvbnZoZS9wc2NpLXJlbGF5LmM6MjcwOlx0XHRyZXR1cm4gcHNjaV9jcHVfc3VzcGVuZChmdW5jX2lkLCBob3N0X2N0eHQpO1xuYXJjaC9hcm02NC9rdm0vaHlwL252aGUvcHNjaS1yZWxheS5jLTI3MS1cdGNhc2UgUFNDSV8wXzJfRk42NF9DUFVfT046XG4tLVxuYXJjaC9hcm02NC9rdm0vcHNjaS5jPTI2PXN0YXRpYyB1bnNpZ25lZCBsb25nIHBzY2lfYWZmaW5pdHlfbWFzayh1bnNpZ25lZCBsb25nIGFmZmluaXR5X2xldmVsKVxuLS1cbmFyY2gvYXJtNjQva3ZtL3BzY2kuYy0zMy1cbmFyY2gvYXJtNjQva3ZtL3BzY2kuYzozNDpzdGF0aWMgdW5zaWduZWQgbG9uZyBrdm1fcHNjaV92Y3B1X3N1c3BlbmQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuYXJjaC9hcm02NC9rdm0vcHNjaS5jLTM1LXtcbi0tXG5hcmNoL2FybTY0L2t2bS9wc2NpLmM9MjQ2PXN0YXRpYyBpbnQga3ZtX3BzY2lfMF8yX2NhbGwoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gvYXJtNjQva3ZtL3BzY2kuYy0yNjEtXHRjYXNlIFBTQ0lfMF8yX0ZONjRfQ1BVX1NVU1BFTkQ6XG5hcmNoL2FybTY0L2t2bS9wc2NpLmM6MjYyOlx0XHR2YWwgPSBrdm1fcHNjaV92Y3B1X3N1c3BlbmQodmNwdSk7XG5hcmNoL2FybTY0L2t2bS9wc2NpLmMtMjYzLVx0XHRicmVhaztcbi0tXG5hcmNoL2FybTY0L21tL3Byb2MuUy04Ni0gKlxuYXJjaC9hcm02NC9tbS9wcm9jLlM6ODc6ICogVGhpcyBtdXN0IGJlIGtlcHQgaW4gc3luYyB3aXRoIHN0cnVjdCBjcHVfc3VzcGVuZF9jdHggaW4gXHUwMDNjYXNtL3N1c3BlbmQuaFx1MDAzZS5cbmFyY2gvYXJtNjQvbW0vcHJvYy5TLTg4LSAqL1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDE5OjI3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExMTQ2CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMzkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzOgoKKipDUFUgU3VzcGVuZCBGdW5jdGlvbiBJbnF1aXJ5KioKCk9rYXksIHNvIEkgc2VlIGBjcHVfc3VzcGVuZGAgaXMgZGVmaW5lZCBhbmQgZXhwb3J0ZWQsIHNwZWNpZmljYWxseSBpbiBgYXJjaC9hcm02NC9rZXJuZWwvc3VzcGVuZC5jYC4gU2VlbXMgc3RyYWlnaHRmb3J3YXJkIGVub3VnaC4gQnV0LCB3YWl0IGEgc2Vjb25kLCBJIG5lZWQgdG8gY29uZmlybSBzb21ldGhpbmcuIElzIHRoYXQgZXhwb3J0IGludGVuZGVkIGZvciB0aGUga2VybmVsIHByb3BlciAqb25seSosIG9yIGlzIGl0IGFsc28gdmlzaWJsZSBhbmQgdXNhYmxlIGJ5IG1vZHVsZXM/IFRoYXQmIzM5O3MgdGhlIGNyaXRpY2FsIHF1ZXN0aW9uIGhlcmUuIEkgbmVlZCB0byBrbm93IGlmIG1vZHVsZXMgY2FuIGhvb2sgaW50byB0aGlzIHN1c3BlbmQgZnVuY3Rpb24sIG9yIGlmIGl0JiMzOTtzIHN0cmljdGx5IGEgY29yZSBrZXJuZWwgY2FwYWJpbGl0eS4gTGV0JiMzOTtzIGRpZyBkZWVwZXIgYW5kIHZlcmlmeSB0aGUgZXhwb3J0IHZpc2liaWxpdHkuIFRoYXQmIzM5O3MgdGhlIG5leHQgc3RlcC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxOToyODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0VYUE9SVF9TWU1CT0wuKmNwdV9zdXNwZW5kJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9hcm02NC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDE5OjI4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExMzcyCgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogNzkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uCgoqKkludmVzdGlnYXRpbmcgdGhlIENhbGxlcnMgb2YgdGhpcyBGdW5jdGlvbioqCgpBbHJpZ2h0LCBzbyBpdCBzZWVtcyBJIHdhcyBtaXN0YWtlbiBhYm91dCB0aGUgZXhwb3J0IHN0YXR1cyBvZiB0aGlzIGZ1bmN0aW9uLiBJdCYjMzk7cyBub3QgZXhwb3J0ZWQuIFRoYXQgY2hhbmdlcyB0aGluZ3MgYSBiaXQuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoZXJlIGl0ICppcyogY2FsbGVkLiBGcm9tIHdoYXQgSSBjYW4gdGVsbCwgaXQmIzM5O3MgYmVpbmcgY2FsbGVkIGZyb20gYSBmZXcga2V5IHBsYWNlczogYGFyY2gvYXJtNjQva2VybmVsL2hpYmVybmF0ZS5jYCB3aXRoaW4gdGhlIGBzd3N1c3BfYXJjaF9zdXNwZW5kYCBmdW5jdGlvbiwgYW5kIGFsc28gZnJvbSBgYXJjaC9hcm02NC9rZXJuZWwvcHNjaS5jYCwgbGlrZWx5IHRyaWdnZXJlZCBkdXJpbmcgQ1BVIGlkbGUgb3IgdGhlIHN5c3RlbSBzdXNwZW5kIHByb2Nlc3MuIEhtbSwgdGhhdCBzdWdnZXN0cyBhIGNvcmUgcG93ZXIgbWFuYWdlbWVudCBvciBoaWJlcm5hdGlvbi1yZWxhdGVkIGZ1bmN0aW9uLiBPa2F5LCBpZiBpdCYjMzk7cyByZWxhdGVkIHRvIENQVSBpZGxlLCBJIHNob3VsZCBwcm9iYWJseSBjaGVjayBgYXJjaC9hcm02NC9rZXJuZWwvY3B1aWRsZS5jYCwgb3Igc29tZXRoaW5nIHNpbWlsYXIgdG8gaXQuIFRoYXQmIzM5O3MgbGlrZWx5IHdoZXJlIHRoZSBjb25uZWN0aW9uIHdpbGwgYmUuIFRpbWUgdG8gZGlnIGludG8gdGhvc2UgZmlsZXMgYW5kIHNlZSB3aGF0IEkgY2FuIGZpbmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDE5OjI4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NwdV9zdXNwZW5kJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9jcHVpZGxlLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2NwdWlkbGUvY3B1aWRsZS1iaWdfbGl0dGxlLmM9MTAyPXN0YXRpYyBpbnQgbm90cmFjZSBibF9wb3dlcmRvd25fZmluaXNoZXIodW5zaWduZWQgbG9uZyBhcmcpXG4tLVxuZHJpdmVycy9jcHVpZGxlL2NwdWlkbGUtYmlnX2xpdHRsZS5jLTEwOS1cdG1jcG1fc2V0X2VudHJ5X3ZlY3RvcihjcHUsIGNsdXN0ZXIsIGNwdV9yZXN1bWUpO1xuZHJpdmVycy9jcHVpZGxlL2NwdWlkbGUtYmlnX2xpdHRsZS5jOjExMDpcdG1jcG1fY3B1X3N1c3BlbmQoKTtcbmRyaXZlcnMvY3B1aWRsZS9jcHVpZGxlLWJpZ19saXR0bGUuYy0xMTEtXG4tLVxuZHJpdmVycy9jcHVpZGxlL2NwdWlkbGUtYmlnX2xpdHRsZS5jPTEyNT1zdGF0aWMgX19jcHVpZGxlIGludCBibF9lbnRlcl9wb3dlcmRvd24oc3RydWN0IGNwdWlkbGVfZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9jcHVpZGxlL2NwdWlkbGUtYmlnX2xpdHRsZS5jLTEzMC1cbmRyaXZlcnMvY3B1aWRsZS9jcHVpZGxlLWJpZ19saXR0bGUuYzoxMzE6XHRjcHVfc3VzcGVuZCgwLCBibF9wb3dlcmRvd25fZmluaXNoZXIpO1xuZHJpdmVycy9jcHVpZGxlL2NwdWlkbGUtYmlnX2xpdHRsZS5jLTEzMi1cbi0tXG5kcml2ZXJzL2NwdWlkbGUvY3B1aWRsZS1jYWx4ZWRhLmM9Mjk9c3RhdGljIGludCBjYWx4ZWRhX2lkbGVfZmluaXNoKHVuc2lnbmVkIGxvbmcgdmFsKVxuZHJpdmVycy9jcHVpZGxlL2NwdWlkbGUtY2FseGVkYS5jLTMwLXtcbmRyaXZlcnMvY3B1aWRsZS9jcHVpZGxlLWNhbHhlZGEuYzozMTpcdHJldHVybiBwc2NpX29wcy5jcHVfc3VzcGVuZChDQUxYRURBX0lETEVfUEFSQU0sIF9fcGEoY3B1X3Jlc3VtZSkpO1xuZHJpdmVycy9jcHVpZGxlL2NwdWlkbGUtY2FseGVkYS5jLTMyLX1cbi0tXG5kcml2ZXJzL2NwdWlkbGUvY3B1aWRsZS1jYWx4ZWRhLmM9MzQ9c3RhdGljIGludCBjYWx4ZWRhX3B3cmRvd25faWRsZShzdHJ1Y3QgY3B1aWRsZV9kZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL2NwdWlkbGUvY3B1aWRsZS1jYWx4ZWRhLmMtMzgtXHRjcHVfcG1fZW50ZXIoKTtcbmRyaXZlcnMvY3B1aWRsZS9jcHVpZGxlLWNhbHhlZGEuYzozOTpcdGNwdV9zdXNwZW5kKDAsIGNhbHhlZGFfaWRsZV9maW5pc2gpO1xuZHJpdmVycy9jcHVpZGxlL2NwdWlkbGUtY2FseGVkYS5jLTQwLVx0Y3B1X3BtX2V4aXQoKTtcbi0tXG5kcml2ZXJzL2NwdWlkbGUvY3B1aWRsZS1tdmVidS12Ny5jLTI1LVxuZHJpdmVycy9jcHVpZGxlL2NwdWlkbGUtbXZlYnUtdjcuYzoyNjpzdGF0aWMgaW50ICgqbXZlYnVfdjdfY3B1X3N1c3BlbmQpKGludCk7XG5kcml2ZXJzL2NwdWlkbGUvY3B1aWRsZS1tdmVidS12Ny5jLTI3LVxuZHJpdmVycy9jcHVpZGxlL2NwdWlkbGUtbXZlYnUtdjcuYz0yOD1zdGF0aWMgX19jcHVpZGxlIGludCBtdmVidV92N19lbnRlcl9pZGxlKHN0cnVjdCBjcHVpZGxlX2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvY3B1aWRsZS9jcHVpZGxlLW12ZWJ1LXY3LmMtMzktXHRjdF9jcHVpZGxlX2VudGVyKCk7XG5kcml2ZXJzL2NwdWlkbGUvY3B1aWRsZS1tdmVidS12Ny5jOjQwOlx0cmV0ID0gbXZlYnVfdjdfY3B1X3N1c3BlbmQoZGVlcGlkbGUpO1xuZHJpdmVycy9jcHVpZGxlL2NwdWlkbGUtbXZlYnUtdjcuYy00MS1cdGN0X2NwdWlkbGVfZXhpdCgpO1xuLS1cbmRyaXZlcnMvY3B1aWRsZS9jcHVpZGxlLW12ZWJ1LXY3LmM9MTA1PXN0YXRpYyBpbnQgbXZlYnVfdjdfY3B1aWRsZV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvY3B1aWRsZS9jcHVpZGxlLW12ZWJ1LXY3LmMtMTExLVxuZHJpdmVycy9jcHVpZGxlL2NwdWlkbGUtbXZlYnUtdjcuYzoxMTI6XHRtdmVidV92N19jcHVfc3VzcGVuZCA9IHBkZXYtXHUwMDNlZGV2LnBsYXRmb3JtX2RhdGE7XG5kcml2ZXJzL2NwdWlkbGUvY3B1aWRsZS1tdmVidS12Ny5jLTExMy1cbi0tXG5kcml2ZXJzL2NwdWlkbGUvY3B1aWRsZS1wc2NpLmM9NjQ9c3RhdGljIF9fY3B1aWRsZSBpbnQgX19wc2NpX2VudGVyX2RvbWFpbl9pZGxlX3N0YXRlKHN0cnVjdCBjcHVpZGxlX2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvY3B1aWRsZS9jcHVpZGxlLXBzY2kuYy04OS1cdHRyYWNlX3BzY2lfZG9tYWluX2lkbGVfZW50ZXIoZGV2LVx1MDAzZWNwdSwgc3RhdGUsIHMyaWRsZSk7XG5kcml2ZXJzL2NwdWlkbGUvY3B1aWRsZS1wc2NpLmM6OTA6XHRyZXQgPSBwc2NpX2NwdV9zdXNwZW5kX2VudGVyKHN0YXRlKSA/IC0xIDogaWR4O1xuZHJpdmVycy9jcHVpZGxlL2NwdWlkbGUtcHNjaS5jLTkxLVx0dHJhY2VfcHNjaV9kb21haW5faWRsZV9leGl0KGRldi1cdTAwM2VjcHUsIHN0YXRlLCBzMmlkbGUpO1xuLS1cbmRyaXZlcnMvY3B1aWRsZS9jcHVpZGxlLXBzY2kuYz0yMTg9c3RhdGljIF9fY3B1aWRsZSBpbnQgcHNjaV9lbnRlcl9pZGxlX3N0YXRlKHN0cnVjdCBjcHVpZGxlX2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvY3B1aWRsZS9jcHVpZGxlLXBzY2kuYy0yMjItXG5kcml2ZXJzL2NwdWlkbGUvY3B1aWRsZS1wc2NpLmM6MjIzOlx0cmV0dXJuIENQVV9QTV9DUFVfSURMRV9FTlRFUl9QQVJBTV9SQ1UocHNjaV9jcHVfc3VzcGVuZF9lbnRlciwgaWR4LCBzdGF0ZVtpZHhdKTtcbmRyaXZlcnMvY3B1aWRsZS9jcHVpZGxlLXBzY2kuYy0yMjQtfVxuLS1cbmRyaXZlcnMvY3B1aWRsZS9jcHVpZGxlLXBzY2kuYz0zMTg9c3RhdGljIGludCBwc2NpX2NwdV9pbml0X2lkbGUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgY3B1aWRsZV9kcml2ZXIgKmRydixcbi0tXG5kcml2ZXJzL2NwdWlkbGUvY3B1aWRsZS1wc2NpLmMtMzI0LVx0LypcbmRyaXZlcnMvY3B1aWRsZS9jcHVpZGxlLXBzY2kuYzozMjU6XHQgKiBJZiB0aGUgUFNDSSBjcHVfc3VzcGVuZCBmdW5jdGlvbiBob29rIGhhcyBub3QgYmVlbiBpbml0aWFsaXplZFxuZHJpdmVycy9jcHVpZGxlL2NwdWlkbGUtcHNjaS5jLTMyNi1cdCAqIGlkbGUgc3RhdGVzIG11c3Qgbm90IGJlIGVuYWJsZWQsIHNvIGJhaWwgb3V0XG5kcml2ZXJzL2NwdWlkbGUvY3B1aWRsZS1wc2NpLmMtMzI3LVx0ICovXG5kcml2ZXJzL2NwdWlkbGUvY3B1aWRsZS1wc2NpLmM6MzI4Olx0aWYgKCFwc2NpX29wcy5jcHVfc3VzcGVuZClcbmRyaXZlcnMvY3B1aWRsZS9jcHVpZGxlLXBzY2kuYy0zMjktXHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbi0tXG5kcml2ZXJzL2NwdWlkbGUvY3B1aWRsZS1xY29tLXNwbS5jPTQzPXN0YXRpYyBpbnQgcWNvbV9jcHVfc3BjKHN0cnVjdCBzcG1fZHJpdmVyX2RhdGEgKmRydilcbi0tXG5kcml2ZXJzL2NwdWlkbGUvY3B1aWRsZS1xY29tLXNwbS5jLTQ3LVx0c3BtX3NldF9sb3dfcG93ZXJfbW9kZShkcnYsIFBNX1NMRUVQX01PREVfU1BDKTtcbmRyaXZlcnMvY3B1aWRsZS9jcHVpZGxlLXFjb20tc3BtLmM6NDg6XHRyZXQgPSBjcHVfc3VzcGVuZCgwLCBxY29tX3BtX2NvbGxhcHNlKTtcbmRyaXZlcnMvY3B1aWRsZS9jcHVpZGxlLXFjb20tc3BtLmMtNDktXHQvKlxuLS1cbmRyaXZlcnMvY3B1aWRsZS9jcHVpZGxlLXRlZ3JhLmM9MTEyPXN0YXRpYyBpbnQgdGVncmFfY3B1aWRsZV9jYzZfZW50ZXIodW5zaWduZWQgaW50IGNwdSlcbi0tXG5kcml2ZXJzL2NwdWlkbGUvY3B1aWRsZS10ZWdyYS5jLTExNi1cdGlmIChjcHUgXHUwMDNlIDApIHtcbmRyaXZlcnMvY3B1aWRsZS9jcHVpZGxlLXRlZ3JhLmM6MTE3Olx0XHRyZXQgPSBjcHVfc3VzcGVuZChjcHUsIHRlZ3JhX3BtX3Bhcmtfc2Vjb25kYXJ5X2NwdSk7XG5kcml2ZXJzL2NwdWlkbGUvY3B1aWRsZS10ZWdyYS5jLTExOC1cdH0gZWxzZSB7XG4tLVxuZHJpdmVycy9jcHVpZGxlL2NwdWlkbGUtdGVncmEuYz0xMjk9c3RhdGljIGludCB0ZWdyYV9jcHVpZGxlX2M3X2VudGVyKHZvaWQpXG4tLVxuZHJpdmVycy9jcHVpZGxlL2NwdWlkbGUtdGVncmEuYy0xMzYtXG5kcml2ZXJzL2NwdWlkbGUvY3B1aWRsZS10ZWdyYS5jOjEzNzpcdHJldHVybiBjcHVfc3VzcGVuZCgwLCB0ZWdyYTMwX3BtX3NlY29uZGFyeV9jcHVfc3VzcGVuZCk7XG5kcml2ZXJzL2NwdWlkbGUvY3B1aWRsZS10ZWdyYS5jLTEzOC19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDE5OjI4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzNTUyCgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMzQyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgdGhlIENQVSBTdXNwZW5kIFBhdGgqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCB0d2Vha3MgYGNwdV9zdXNwZW5kYC4gSXQmIzM5O3MgdXNlZCBmb3IgYm90aCBDUFUgaWRsaW5nIGFuZCBmdWxsIHN5c3RlbSBzdXNwZW5kLCB3aGljaCBtYWtlcyBpdCBpbnRlcmVzdGluZy4gVGhlIG1vZGlmaWNhdGlvbiBpcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkIOKAkyBpdCBjb25kaXRpb25hbGx5IGNhbGxzIHRob3NlIGBjdF9jcHVpZGxlX2VudGVyKClgIGFuZCBgY3RfY3B1aWRsZV9leGl0KClgIGZ1bmN0aW9ucyAqb25seSogd2hlbiB0aGUgY3VycmVudCB0YXNrIGlzIGFjdHVhbGx5IHRoZSBpZGxlIHRhc2suIFRoZSByZWFzb24gaXMgcHJldHR5IGNsZWFyOiB3ZSBkb24mIzM5O3Qgd2FudCB0byBtZXNzIHdpdGggUkNVIGlkbGUgaGFuZGxpbmcgd2hlbiB3ZSYjMzk7cmUgc3VzcGVuZGluZyB0aGUgc3lzdGVtLCBiZWNhdXNlIGR1cmluZyBzdXNwZW5kIGBjdXJyZW50YCB3b24mIzM5O3QgYmUgdGhlIGlkbGUgdGFzay4KCklzIHRoaXMgc29tZXRoaW5nIHRoYXQgd2FycmFudHMgZnV6emluZyBhdHRlbnRpb24/IEFic29sdXRlbHksIHRoaXMgaXMgY29yZSBrZXJuZWwgY29kZSwgc28gYW55IHBvdGVudGlhbCBidWcgY291bGQgaGF2ZSBzaWduaWZpY2FudCBpbXBhY3QuIEFuZCB0aGVuIEkgdGhvdWdodCBhYm91dCBpdCwgYW5kIHJlYWxpemVkIHRoYXQgU3l6a2FsbGVyICpjYW4qIHRyaWdnZXIgc3lzdGVtIHN1c3BlbmQgdXNpbmcgYC9zeXMvcG93ZXIvc3RhdGVgISBQbHVzLCBDUFUgaWRsZSBpcyBhIGNvbnN0YW50bHktdHJpZ2dlcmVkIHBhdGguIFNvIHllcywgdGhpcyBpcyAqZGVmaW5pdGVseSogcmVhY2hhYmxlIGFuZCBmdXp6YWJsZS4KCk5vdywgbGV0JiMzOTtzIG5haWwgZG93biBleGFjdGx5ICp3aGVyZSogdG8gZm9jdXMuIFRoZSBtb2RpZmllZCBmdW5jdGlvbiBpcyBgY3B1X3N1c3BlbmRgLCBzbyB0aGF0JiMzOTtzIHRoZSBvYnZpb3VzIHRhcmdldC4gTGV0JiMzOTtzIG1ha2Ugc3VyZSB0aGF0JiMzOTtzIGEgZ29vZCBzeW1ib2wgdG8gZm9jdXMgb24uIExvb2tzIGxpa2UgaXQmIzM5O3MgbG9jYXRlZCBpbiBgYXJjaC9hcm02NC9rZXJuZWwvc3VzcGVuZC5jYC4gT2theSwgdGhhdCYjMzk7cyBub3Qgc3RhdGljIGFuZCBub3QgaW5saW5lZCwgd2hpY2ggbWFrZXMgaXQgYSBncmVhdCBlbnRyeSBwb2ludC4gSnVzdCBuZWVkIHRvIG1ha2Ugc3VyZSB0aGVyZSBhcmVuJiMzOTt0IG90aGVyIHJlbGF0ZWQgZXhwb3J0ZWQgZnVuY3Rpb25zIGluIHRoYXQgbW9kdWxlLCBidXQgaXQgbG9va3MgbGlrZSBgY3B1X3N1c3BlbmRgIGlzIHRoZSBvbmUuCgpPbmUgbGFzdCB0aGluZywgYXJlIHRoZXJlIGFueSBzcGVjaWZpYyBDT05GSUcgb3B0aW9ucyB0aGF0IG1pZ2h0IGJlIHJlbGV2YW50PyBMb29rcyBsaWtlIGBhcmNoL2FybTY0L2tlcm5lbC9zdXNwZW5kLmNgIGdldHMgY29tcGlsZWQgd2hlbiBgQ09ORklHX0FSTTY0YCBpcyBzZXQsIGFuZCBsZXQmIzM5O3MgcXVpY2tseSBjaGVjayB0aGUgYE1ha2VmaWxlYCB0byBtYWtlIHN1cmUuIFRoYXQgc2hvdWxkIGJlIGdvb2QgdG8gZ28uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDE5OjI4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N1c3BlbmQubyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvYXJtNjQva2VybmVsL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvYXJtNjQva2VybmVsL01ha2VmaWxlPTQ5PW9iai0kKENPTkZJR19IQVZFX1NUQVRJQ19DQUxMKVx0XHQmIzQzOz0gc3RhdGljX2NhbGwub1xuYXJjaC9hcm02NC9rZXJuZWwvTWFrZWZpbGU6NTA6b2JqLSQoQ09ORklHX0NQVV9QTSlcdFx0XHQmIzQzOz0gc2xlZXAubyBzdXNwZW5kLm9cbmFyY2gvYXJtNjQva2VybmVsL01ha2VmaWxlLTUxLW9iai0kKENPTkZJR19LR0RCKVx0XHRcdCYjNDM7PSBrZ2RiLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMTk6Mjg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQ0MjgKCQkJCQkJCW91dHB1dDogMjQKCQkJCQkJCXRob3VnaHRzOiAyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqSW52ZXN0aWdhdGluZyB0aGUgRGVwZW5kZW5jeSBvZiBDT05GSUdfQ1BVX1BNKioKCkFscmlnaHQsIHNvIHdlJiMzOTt2ZSBnb3QgYSByZXF1aXJlbWVudCDigJMgYENPTkZJR19DUFVfUE1gIGlzIGFic29sdXRlbHkgbmVjZXNzYXJ5IGZvciBzb21ldGhpbmcgaW4gdGhlIHByb2plY3QuIE15IGltbWVkaWF0ZSB0aG91Z2h0IHByb2Nlc3MgaXMgdG8gdW5kZXJzdGFuZCAqd2h5KiBpdCYjMzk7cyBuZWVkZWQsIHdoaWNoIG5hdHVyYWxseSBsZWFkcyB0byBmaWd1cmluZyBvdXQgd2hhdCYjMzk7cyBlbmFibGluZyBpdCB1cHN0cmVhbS4gVGltZSB0byB0cmFjZSB0aGUgZGVwZW5kZW5jeSBjaGFpbi4gSSBuZWVkIHRvIHF1aWNrbHkgaWRlbnRpZnkgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBvciBzeXN0ZW0gZWxlbWVudHMgdGhhdCB1bHRpbWF0ZWx5IHRyaWdnZXIgYENPTkZJR19DUFVfUE1gLiBJJiMzOTtsbCBwcm9iYWJseSBzdGFydCB3aXRoIGEgZ3JlcCB0aHJvdWdoIHRoZSBLY29uZmlnIGZpbGVzLCBidXQgSSYjMzk7bGwgbmVlZCB0byBrZWVwIGFuIG9wZW4gbWluZCBmb3IgbW9yZSBvYnNjdXJlIGRlcGVuZGVuY2llcyB0aGF0IG1pZ2h0IGJlIGxlc3Mgb2J2aW91cy4gQSBkZWVwZXIgZGl2ZSBpbnRvIHRoZSByZWxldmFudCBzb3VyY2UgY29kZSBtaWdodCBhbHNvIGJlIG5lZWRlZCB0byBzZWUgaWYgaXQmIzM5O3MgYmVpbmcgZW5hYmxlZCBpbmRpcmVjdGx5IHRocm91Z2ggc29tZSBjb21wbGV4IGxvZ2ljLiBMZXQmIzM5O3MgZGlnIGluIGFuZCBzZWUgd2hlcmUgdGhpcyByYWJiaXQgaG9sZSBsZWFkcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMTk6Mjg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIENQVV9QTSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL2Nza3kvS2NvbmZpZz0yMzI9Y2hvaWNlXG4tLVxuYXJjaC9jc2t5L0tjb25maWctMjM3LVxuYXJjaC9jc2t5L0tjb25maWc6MjM4OmNvbmZpZyBDUFVfUE1VX05PTkVcbmFyY2gvY3NreS9LY29uZmlnLTIzOS1cdGJvb2wgXCYjMzQ7Tm9uZVwmIzM0O1xuLS1cbmFyY2gvY3NreS9LY29uZmlnPTI0Nj1jaG9pY2Vcbi0tXG5hcmNoL2Nza3kvS2NvbmZpZy0yNDktXG5hcmNoL2Nza3kvS2NvbmZpZzoyNTA6Y29uZmlnIENQVV9QTV9OT05FXG5hcmNoL2Nza3kvS2NvbmZpZy0yNTEtXHRib29sIFwmIzM0O05vbmVcJiMzNDtcbmFyY2gvY3NreS9LY29uZmlnLTI1Mi1cbmFyY2gvY3NreS9LY29uZmlnOjI1Mzpjb25maWcgQ1BVX1BNX1dBSVRcbmFyY2gvY3NreS9LY29uZmlnLTI1NC1cdGJvb2wgXCYjMzQ7d2FpdFwmIzM0O1xuYXJjaC9jc2t5L0tjb25maWctMjU1LVxuYXJjaC9jc2t5L0tjb25maWc6MjU2OmNvbmZpZyBDUFVfUE1fRE9aRVxuYXJjaC9jc2t5L0tjb25maWctMjU3LVx0Ym9vbCBcJiMzNDtkb3plXCYjMzQ7XG5hcmNoL2Nza3kvS2NvbmZpZy0yNTgtXG5hcmNoL2Nza3kvS2NvbmZpZzoyNTk6Y29uZmlnIENQVV9QTV9TVE9QXG5hcmNoL2Nza3kvS2NvbmZpZy0yNjAtXHRib29sIFwmIzM0O3N0b3BcJiMzNDtcbi0tXG5rZXJuZWwvcG93ZXIvS2NvbmZpZz0zODY9Y29uZmlnIFBNX0dFTkVSSUNfRE9NQUlOU19PRlxuLS1cbmtlcm5lbC9wb3dlci9LY29uZmlnLTM4OS1cbmtlcm5lbC9wb3dlci9LY29uZmlnOjM5MDpjb25maWcgQ1BVX1BNXG5rZXJuZWwvcG93ZXIvS2NvbmZpZy0zOTEtXHRib29sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDE5OjI4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE1MDMyCgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogMjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGZyb20gYW4gZXhwZXJ0JiMzOTtzIHBlcnNwZWN0aXZlOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBgQ09ORklHX0NQVV9QTWAgS2VybmVsIENvbmZpZ3VyYXRpb24gT3B0aW9uKioKCkFscmlnaHQsIHNvIGBDT05GSUdfQ1BVX1BNYC4gIFRoYXQmIzM5O3MgYSBib29sZWFuIG9wdGlvbiwgbG9jYXRlZCByaWdodCB0aGVyZSBpbiBga2VybmVsL3Bvd2VyL0tjb25maWdgLiAgTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCAmIzM0O09rYXksIHBvd2VyIG1hbmFnZW1lbnQgYXQgdGhlIENQVSBsZXZlbCwgaW50ZXJlc3RpbmcuICBMZXQmIzM5O3Mgc2VlIHdoYXQgb3RoZXIgY29uZmlndXJhdGlvbnMgZGVwZW5kIG9uIHRoaXMgb25lLiYjMzQ7IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMgYW5kIGltcGxpY2F0aW9ucyBoZXJlLiBNeSBuZXh0IG1vdmUgaXMgY2xlYXI6IEkgbmVlZCB0byBxdWlja2x5IGZpZ3VyZSBvdXQgd2hpY2ggb3RoZXIgY29uZmlndXJhdGlvbnMgKnNlbGVjdCogdGhpcy4gVGhhdCB3aWxsIHRlbGwgbWUgd2hlcmUgdGhpcyBzZXR0aW5nIGlzIHBpdm90YWwgYW5kIHdoYXQgb3RoZXIgZmVhdHVyZXMgYXJlIHRpZWQgdG8gaXQuIFRoaXMgaW5mb3JtYXRpb24gaXMga2V5IHRvIHVuZGVyc3RhbmRpbmcgaXRzIG92ZXJhbGwgcm9sZSBhbmQgaW1wYWN0IG9uIHRoZSBrZXJuZWwmIzM5O3MgYmVoYXZpb3VyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxOToyODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzZWxlY3QgQ1BVX1BNJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvYXJtL0tjb25maWc9Mj1jb25maWcgQVJNXG4tLVxuYXJjaC9hcm0vS2NvbmZpZy01OC1cdHNlbGVjdCBDTE9ORV9CQUNLV0FSRFNcbmFyY2gvYXJtL0tjb25maWc6NTk6XHRzZWxlY3QgQ1BVX1BNIGlmIFNVU1BFTkQgfHwgQ1BVX0lETEVcbmFyY2gvYXJtL0tjb25maWctNjAtXHRzZWxlY3QgRENBQ0hFX1dPUkRfQUNDRVNTIGlmIEhBVkVfRUZGSUNJRU5UX1VOQUxJR05FRF9BQ0NFU1Ncbi0tXG5hcmNoL2FybS9LY29uZmlnPTk5Nj1jb25maWcgQkxfU1dJVENIRVJcbi0tXG5hcmNoL2FybS9LY29uZmlnLTk5OC1cdGRlcGVuZHMgb24gQklHX0xJVFRMRSBcdTAwMjZcdTAwMjYgTUNQTSBcdTAwMjZcdTAwMjYgSE9UUExVR19DUFUgXHUwMDI2XHUwMDI2IEFSTV9HSUNcbmFyY2gvYXJtL0tjb25maWc6OTk5Olx0c2VsZWN0IENQVV9QTVxuYXJjaC9hcm0vS2NvbmZpZy0xMDAwLVx0aGVscFxuLS1cbmFyY2gvYXJtNjQvS2NvbmZpZz0yPWNvbmZpZyBBUk02NFxuLS1cbmFyY2gvYXJtNjQvS2NvbmZpZy0xMTEtXHRzZWxlY3QgQ09NTU9OX0NMS1xuYXJjaC9hcm02NC9LY29uZmlnOjExMjpcdHNlbGVjdCBDUFVfUE0gaWYgKFNVU1BFTkQgfHwgQ1BVX0lETEUpXG5hcmNoL2FybTY0L0tjb25maWctMTEzLVx0c2VsZWN0IENQVU1BU0tfT0ZGU1RBQ0sgaWYgTlJfQ1BVUyBcdTAwM2UgMjU2XG4tLVxuYXJjaC9sb29uZ2FyY2gvS2NvbmZpZz0yPWNvbmZpZyBMT09OR0FSQ0hcbi0tXG5hcmNoL2xvb25nYXJjaC9LY29uZmlnLTg3LVx0c2VsZWN0IENPTU1PTl9DTEtcbmFyY2gvbG9vbmdhcmNoL0tjb25maWc6ODg6XHRzZWxlY3QgQ1BVX1BNXG5hcmNoL2xvb25nYXJjaC9LY29uZmlnLTg5LVx0c2VsZWN0IEVEQUNfU1VQUE9SVFxuLS1cbmFyY2gvbWlwcy9LY29uZmlnPTI9Y29uZmlnIE1JUFNcbi0tXG5hcmNoL21pcHMvS2NvbmZpZy0zNS1cdHNlbGVjdCBDUFVfTk9fRUZGSUNJRU5UX0ZGUyBpZiAoVEFSR0VUX0lTQV9SRVYgXHUwMDNjIDEpXG5hcmNoL21pcHMvS2NvbmZpZzozNjpcdHNlbGVjdCBDUFVfUE0gaWYgQ1BVX0lETEUgfHwgU1VTUEVORFxuYXJjaC9taXBzL0tjb25maWctMzctXHRzZWxlY3QgR0VORVJJQ19BVE9NSUM2NCBpZiAhNjRCSVRcbi0tXG5hcmNoL3Jpc2N2L0tjb25maWc9MTM9Y29uZmlnIFJJU0NWXG4tLVxuYXJjaC9yaXNjdi9LY29uZmlnLTk4LVx0c2VsZWN0IENQVV9OT19FRkZJQ0lFTlRfRkZTIGlmICFSSVNDVl9JU0FfWkJCXG5hcmNoL3Jpc2N2L0tjb25maWc6OTk6XHRzZWxlY3QgQ1BVX1BNIGlmIENQVV9JRExFIHx8IEhJQkVSTkFUSU9OIHx8IFNVU1BFTkRcbmFyY2gvcmlzY3YvS2NvbmZpZy0xMDAtXHRzZWxlY3QgRFlOQU1JQ19GVFJBQ0UgaWYgRlVOQ1RJT05fVFJBQ0VSXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDE5OjI4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE1ODIwCgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogNjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRXhhbWluaW5nIHRoZSBQb3dlciBNYW5hZ2VtZW50IENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBkaXZpbmcgaW50byB0aGlzIHBvd2VyIG1hbmFnZW1lbnQgY29uZmlndXJhdGlvbiBmb3IgdGhlIEFSTTY0IGFyY2hpdGVjdHVyZSwgYW5kIGl0IHNlZW1zIHByZXR0eSBzdHJhaWdodGZvcndhcmQgb24gdGhlIHN1cmZhY2UuIEl0IGxvb2tzIGxpa2UgYENPTkZJR19DUFVfUE1gIGlzIGF1dG9tYXRpY2FsbHkgc2VsZWN0ZWQsIG9yIGF0IGxlYXN0IHN1Z2dlc3RlZCwgYnkgdGhlIGBBUk02NGAgYXJjaGl0ZWN0dXJlLCBidXQgb25seSBpZiBlaXRoZXIgYFNVU1BFTkRgIG9yIGBDUFVfSURMRWAgaXMgZW5hYmxlZC4gVGhhdCBtYWtlcyBwZXJmZWN0IHNlbnNlOyBgQ1BVX1BNYCBpcyBlc3NlbnRpYWxseSB0aGUgdW1icmVsbGEgZmVhdHVyZSB0aGF0IGVuYWJsZXMgdGhlIGNvcmUgcG93ZXIgbWFuYWdlbWVudCBjYXBhYmlsaXRpZXMsIGFuZCBpdCYjMzk7cyBjb250aW5nZW50IG9uIGhhdmluZyBzcGVjaWZpYyBpZGxlIG9yIHN1c3BlbmQgc3RhdGVzLiBTbywgbXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gY29uZmlybSB0aGF0IGBTVVNQRU5EYCBvciBgQ1BVX0lETEVgIGFyZSBpbmRlZWQgZW5hYmxlZC4gSSBuZWVkIHRvIHZlcmlmeSB0aGF0IHRob3NlIGluZGl2aWR1YWwgY29tcG9uZW50cyBhcmUgaW4gcGxhY2UuIExldCYjMzk7cyBzdGFydCBieSBkaWdnaW5nIGludG8gdGhlIHNldHRpbmdzIGZvciB0aG9zZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMTk6Mjg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFNVU1BFTkQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvcG93ZXIvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvcG93ZXIvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxua2VybmVsL3Bvd2VyL0tjb25maWc6Mjpjb25maWcgU1VTUEVORFxua2VybmVsL3Bvd2VyL0tjb25maWctMy1cdGJvb2wgXCYjMzQ7U3VzcGVuZCB0byBSQU0gYW5kIHN0YW5kYnlcJiMzNDtcbi0tXG5rZXJuZWwvcG93ZXIvS2NvbmZpZy0xMC1cbmtlcm5lbC9wb3dlci9LY29uZmlnOjExOmNvbmZpZyBTVVNQRU5EX0ZSRUVaRVJcbmtlcm5lbC9wb3dlci9LY29uZmlnLTEyLVx0Ym9vbCBcJiMzNDtFbmFibGUgZnJlZXplciBmb3Igc3VzcGVuZCB0byBSQU0vc3RhbmRieVwmIzM0OyBcXFxuLS1cbmtlcm5lbC9wb3dlci9LY29uZmlnLTIxLVxua2VybmVsL3Bvd2VyL0tjb25maWc6MjI6Y29uZmlnIFNVU1BFTkRfU0tJUF9TWU5DXG5rZXJuZWwvcG93ZXIvS2NvbmZpZy0yMy1cdGJvb2wgXCYjMzQ7U2tpcCBrZXJuZWwmIzM5O3Mgc3lzX3N5bmMoKSBvbiBzdXNwZW5kIHRvIFJBTS9zdGFuZGJ5XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDE5OjI4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE2MjY1CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyBgQ1BVX0lETEVgKioKCkFscmlnaHQsIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBNeSBpbml0aWFsIHRob3VnaHQgaXMsICYjMzQ7TGV0JiMzOTtzIGNoZWNrIGBDUFVfSURMRWAuJiMzNDsgVGhhdCBzaW5nbGUgdmFyaWFibGUsIGBDUFVfSURMRWAsIG9mdGVuIGhvbGRzIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyBhIHN5c3RlbSYjMzk7cyB0cnVlIHBlcmZvcm1hbmNlIHN0YXRlLiBJdCYjMzk7cyBhIGZ1bmRhbWVudGFsIGluZGljYXRvciwgYW5kIEkgbmVlZCB0byBkZWx2ZSBpbnRvIGl0cyBiZWhhdmlvci4gQSBoaWdoIGlkbGUgcGVyY2VudGFnZSwgb3IgZmx1Y3R1YXRpb25zIGluIGlkbGUgdGltZSwgY2FuIHBvaW50IG1lIHRvd2FyZHMgYm90dGxlbmVja3Mgb3IgaW5lZmZpY2llbmNpZXMgZWxzZXdoZXJlIGluIHRoZSBzeXN0ZW0uIFRoZSBuZXh0IHN0ZXAgaXMgY2xlYXJseSB0byB1bmRlcnN0YW5kIGl0cyBjdXJyZW50IGFuZCBoaXN0b3JpY2FsIHZhbHVlcyBpbiByZWxhdGlvbiB0byB3b3JrbG9hZC4gSSYjMzk7bGwgbmVlZCB0byBrbm93IHdoZXRoZXIgSSYjMzk7bSBsb29raW5nIGF0IGV4cGVjdGVkIGJlaGF2aW9yLCBvciBzb21ldGhpbmcgdW51c3VhbCB0aGF0IG1pZ2h0IHBvaW50IHRvIGEgcmVzb3VyY2UgY29uc3RyYWludCwgbG9jayBjb250ZW50aW9uLCBpbmVmZmljaWVudCBJL08sIG9yIGV2ZW4gYSBoYXJkd2FyZSBpc3N1ZS4gVGltZSB0byBnZXQgdG8gd29yay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMTk6Mjg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIENQVV9JRExFJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9jcHVpZGxlL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9jcHVpZGxlL0tjb25maWc9Mj1tZW51IFwmIzM0O0NQVSBJZGxlXCYjMzQ7XG5kcml2ZXJzL2NwdWlkbGUvS2NvbmZpZy0zLVxuZHJpdmVycy9jcHVpZGxlL0tjb25maWc6NDpjb25maWcgQ1BVX0lETEVcbmRyaXZlcnMvY3B1aWRsZS9LY29uZmlnLTUtXHRib29sIFwmIzM0O0NQVSBpZGxlIFBNIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL2NwdWlkbGUvS2NvbmZpZz0xNj1pZiBDUFVfSURMRVxuZHJpdmVycy9jcHVpZGxlL0tjb25maWctMTctXG5kcml2ZXJzL2NwdWlkbGUvS2NvbmZpZzoxODpjb25maWcgQ1BVX0lETEVfTVVMVElQTEVfRFJJVkVSU1xuZHJpdmVycy9jcHVpZGxlL0tjb25maWctMTktXHRib29sXG5kcml2ZXJzL2NwdWlkbGUvS2NvbmZpZy0yMC1cbmRyaXZlcnMvY3B1aWRsZS9LY29uZmlnOjIxOmNvbmZpZyBDUFVfSURMRV9HT1ZfTEFEREVSXG5kcml2ZXJzL2NwdWlkbGUvS2NvbmZpZy0yMi1cdGJvb2wgXCYjMzQ7TGFkZGVyIGdvdmVybm9yIChmb3IgcGVyaW9kaWMgdGltZXIgdGljaylcJiMzNDtcbmRyaXZlcnMvY3B1aWRsZS9LY29uZmlnLTIzLVxuZHJpdmVycy9jcHVpZGxlL0tjb25maWc6MjQ6Y29uZmlnIENQVV9JRExFX0dPVl9NRU5VXG5kcml2ZXJzL2NwdWlkbGUvS2NvbmZpZy0yNS1cdGJvb2wgXCYjMzQ7TWVudSBnb3Zlcm5vciAoZm9yIHRpY2tsZXNzIHN5c3RlbSlcJiMzNDtcbmRyaXZlcnMvY3B1aWRsZS9LY29uZmlnLTI2LVxuZHJpdmVycy9jcHVpZGxlL0tjb25maWc6Mjc6Y29uZmlnIENQVV9JRExFX0dPVl9URU9cbmRyaXZlcnMvY3B1aWRsZS9LY29uZmlnLTI4LVx0Ym9vbCBcJiMzNDtUaW1lciBldmVudHMgb3JpZW50ZWQgKFRFTykgZ292ZXJub3IgKGZvciB0aWNrbGVzcyBzeXN0ZW1zKVwmIzM0O1xuLS1cbmRyaXZlcnMvY3B1aWRsZS9LY29uZmlnLTM1LVxuZHJpdmVycy9jcHVpZGxlL0tjb25maWc6MzY6Y29uZmlnIENQVV9JRExFX0dPVl9IQUxUUE9MTFxuZHJpdmVycy9jcHVpZGxlL0tjb25maWctMzctXHRib29sIFwmIzM0O0hhbHRwb2xsIGdvdmVybm9yIChmb3IgdmlydHVhbGl6ZWQgc3lzdGVtcylcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMTk6Mjg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTY4OTYKCQkJCQkJCW91dHB1dDogMTAwCgkJCQkJCQl0aG91Z2h0czogMTg2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQVJNNjQgQ1BVIFN1c3BlbmQgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IHRoaXMgcGF0Y2ggaW4gZnJvbnQgb2YgbWUsIGFuZCBpdCBzZWVtcyBsaWtlIGl0JiMzOTtzIHRvdWNoaW5nIHRoZSBjb3JlIHN1c3BlbmQvaWRsZSBsb2dpYyBvbiB0aGUgQVJNNjQgYXJjaGl0ZWN0dXJlLiBTcGVjaWZpY2FsbHksIGl0JiMzOTtzIG1vZGlmeWluZyB0aGUgYGNwdV9zdXNwZW5kYCBmdW5jdGlvbiwgd2hpY2ggcmVzaWRlcyBpbiBgYXJjaC9hcm02NC9rZXJuZWwvc3VzcGVuZC5jYC4gVGhlIHBhdGNoJiMzOTtzIHJlYXNvbmluZyBpcyBwcmV0dHkgY2xlYXI6IGl0JiMzOTtzIGFib3V0IGNvbmRpdGlvbmFsbHkgY2FsbGluZyBSQ1UgaWRsZSBmdW5jdGlvbnMsIGFuZCB0aGF0IGNvbmRpdGlvbiBpcyB3aGV0aGVyIG9yIG5vdCB0aGUgY3VycmVudCB0YXNrIGlzIHRoZSBpZGxlIHRhc2sgaXRzZWxmLiBJdCBsb29rcyBsaWtlIGl0JiMzOTtzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIHRvdWNoaW5nIG9uIHRoZSBjb3JlIGFyY2hpdGVjdHVyZSBjb2RlLCBhbmQgaXQmIzM5O3MgcmVhY2hhYmxlIHRocm91Z2ggZWl0aGVyIHN5c3RlbSBzdXNwZW5kIG9yIENQVSBpZGxlIHdpdGhpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuCgpUaGUgY29uZmlndXJhdGlvbiBmbGFncyB0aGF0IHRyaWdnZXIgdGhpcyBhcmUgYFNVU1BFTkRgIGFuZCBgQ1BVX0lETEVgLiBUaGUgbm90ZSBpbmRpY2F0ZXMgdGhpcyBpcyBzb21ldGhpbmcgd29ydGggZnV6emluZywgd2hpY2ggbWFrZXMgc2Vuc2UgZ2l2ZW4gaXRzIGxvY2F0aW9uLiBUaGUgYEZvY3VzU3ltYm9sc2AgZW50cnkgY29ycmVjdGx5IHplcm9lcyBpbiBvbiBgY3B1X3N1c3BlbmRgLgoKSSBqdXN0IGNvbmZpcm1lZCB0aGF0IGBjcHVfc3VzcGVuZGAgKmlzKiB0aGUgb25seSBmdW5jdGlvbiB0aGF0IHRoaXMgcGF0Y2ggYWN0dWFsbHkgdG91Y2hlcywgc28gd2UmIzM5O3JlIGdvb2QgdGhlcmUuIFRoaXMgbWVhbnMgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBhIGZvY3VzZWQgYW5kIHBvdGVudGlhbGx5IGltcGFjdGZ1bCBjaGFuZ2UuCgpUaW1lIHRvIHVzZSBgc2V0LXJlc3VsdHNgIHRvIHBhc3MgdGhpcyBpbmZvcm1hdGlvbiBhbG9uZywgbWFraW5nIHN1cmUgaXQmIzM5O3MgYWNjdXJhdGVseSByZWZsZWN0ZWQgaW4gdGhlIHN5c3RlbS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMTk6Mjg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NVU1BFTkQmIzM0OywKICAgICYjMzQ7Q1BVX0lETEUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtjcHVfc3VzcGVuZCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBhcm02NCBDUFUgc3VzcGVuZC9pZGxlIGxvZ2ljIHRvIGNvbmRpdGlvbmFsbHkgY2FsbCBSQ1UgaWRsZSBmdW5jdGlvbnMgYmFzZWQgb24gd2hldGhlciB0aGUgY3VycmVudCB0YXNrIGlzIHRoZSBpZGxlIHRhc2suIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIGFyY2hpdGVjdHVyZSBjb2RlIHRoYXQgaXMgcmVhY2hhYmxlIHZpYSBzeXN0ZW0gc3VzcGVuZCBvciBDUFUgaWRsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NVU1BFTkQmIzM0OywKICAgICYjMzQ7Q1BVX0lETEUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtjcHVfc3VzcGVuZCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBhcm02NCBDUFUgc3VzcGVuZC9pZGxlIGxvZ2ljIHRvIGNvbmRpdGlvbmFsbHkgY2FsbCBSQ1UgaWRsZSBmdW5jdGlvbnMgYmFzZWQgb24gd2hldGhlciB0aGUgY3VycmVudCB0YXNrIGlzIHRoZSBpZGxlIHRhc2suIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIGFyY2hpdGVjdHVyZSBjb2RlIHRoYXQgaXMgcmVhY2hhYmxlIHZpYSBzeXN0ZW0gc3VzcGVuZCBvciBDUFUgaWRsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxOToyNzo0Ny4xOTEyOTcyNzFaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NDAxNjY1Njc4MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJTVVNQRU5EXCIsXG4gICAgXCJDUFVfSURMRVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImNwdV9zdXNwZW5kXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYXJtNjQgQ1BVIHN1c3BlbmQvaWRsZSBsb2dpYyB0byBjb25kaXRpb25hbGx5IGNhbGwgUkNVIGlkbGUgZnVuY3Rpb25zIGJhc2VkIG9uIHdoZXRoZXIgdGhlIGN1cnJlbnQgdGFzayBpcyB0aGUgaWRsZSB0YXNrLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBhcmNoaXRlY3R1cmUgY29kZSB0aGF0IGlzIHJlYWNoYWJsZSB2aWEgc3lzdGVtIHN1c3BlbmQgb3IgQ1BVIGlkbGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxOToyNzo0Ny4xOTEzMDIyMTFaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUyNzQ5MjMxOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDljMTM3YWJiYzUwYmM3OGRmZWFhNWNlYTUxNDYxN2MwYjNjYjdiNTRcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBKdWwgMjkgMTk6Mjc6NDYgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9rZXJuZWwvc3VzcGVuZC5jIGIvYXJjaC9hcm02NC9rZXJuZWwvc3VzcGVuZC5jXFxuaW5kZXggZWFhZmY5NDMyOWNkZC4uYzZiNmIxY2FjYmYzNyAxMDA2NDRcXG4tLS0gYS9hcmNoL2FybTY0L2tlcm5lbC9zdXNwZW5kLmNcXG4rKysgYi9hcmNoL2FybTY0L2tlcm5lbC9zdXNwZW5kLmNcXG5AQCAtNSw2ICs1LDcgQEBcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3VhY2Nlc3MuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3BndGFibGUuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2NwdWlkbGUuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3NjaGVkLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2Nhc20vYWx0ZXJuYXRpdmUuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2FzbS9jYWNoZWZsdXNoLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2Nhc20vY3B1ZmVhdHVyZS5oXFx1MDAzZVxcbkBAIC05OSw2ICsxMDAsNyBAQCBpbnQgY3B1X3N1c3BlbmQodW5zaWduZWQgbG9uZyBhcmcsIGludCAoKmZuKSh1bnNpZ25lZCBsb25nKSlcXG4gXFx0aW50IHJldCA9IDA7XFxuIFxcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XFxuIFxcdHN0cnVjdCBzbGVlcF9zdGFja19kYXRhIHN0YXRlO1xcbitcXHRib29sIGlkbGUgPSBpc19pZGxlX3Rhc2soY3VycmVudCk7XFxuIFxcdHN0cnVjdCBhcm1fY3B1aWRsZV9pcnFfY29udGV4dCBjb250ZXh0O1xcbiBcXG4gXFx0LypcXG5AQCAtMTM3LDcgKzEzOSw4IEBAIGludCBjcHVfc3VzcGVuZCh1bnNpZ25lZCBsb25nIGFyZywgaW50ICgqZm4pKHVuc2lnbmVkIGxvbmcpKVxcbiBcXHQgKi9cXG4gXFx0YXJtX2NwdWlkbGVfc2F2ZV9pcnFfY29udGV4dChcXHUwMDI2Y29udGV4dCk7XFxuIFxcbi1cXHRjdF9jcHVpZGxlX2VudGVyKCk7XFxuK1xcdGlmIChpZGxlKVxcbitcXHRcXHRjdF9jcHVpZGxlX2VudGVyKCk7XFxuIFxcbiBcXHRpZiAoX19jcHVfc3VzcGVuZF9lbnRlcihcXHUwMDI2c3RhdGUpKSB7XFxuIFxcdFxcdC8qIENhbGwgdGhlIHN1c3BlbmQgZmluaXNoZXIgKi9cXG5AQCAtMTUzLDkgKzE1NiwxMSBAQCBpbnQgY3B1X3N1c3BlbmQodW5zaWduZWQgbG9uZyBhcmcsIGludCAoKmZuKSh1bnNpZ25lZCBsb25nKSlcXG4gXFx0XFx0aWYgKCFyZXQpXFxuIFxcdFxcdFxcdHJldCA9IC1FT1BOT1RTVVBQO1xcbiBcXG4tXFx0XFx0Y3RfY3B1aWRsZV9leGl0KCk7XFxuK1xcdFxcdGlmIChpZGxlKVxcbitcXHRcXHRcXHRjdF9jcHVpZGxlX2V4aXQoKTtcXG4gXFx0fSBlbHNlIHtcXG4tXFx0XFx0Y3RfY3B1aWRsZV9leGl0KCk7XFxuK1xcdFxcdGlmIChpZGxlKVxcbitcXHRcXHRcXHRjdF9jcHVpZGxlX2V4aXQoKTtcXG4gXFx0XFx0X19jcHVfc3VzcGVuZF9leGl0KCk7XFxuIFxcdH1cXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDE5OjI3OjQ3LjcxOTQ5MDQ1OVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjUzNDg4NDU0NjMyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlNVU1BFTkRcIixcbiAgICBcIkNQVV9JRExFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiY3B1X3N1c3BlbmRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBhcm02NCBDUFUgc3VzcGVuZC9pZGxlIGxvZ2ljIHRvIGNvbmRpdGlvbmFsbHkgY2FsbCBSQ1UgaWRsZSBmdW5jdGlvbnMgYmFzZWQgb24gd2hldGhlciB0aGUgY3VycmVudCB0YXNrIGlzIHRoZSBpZGxlIHRhc2suIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIGFyY2hpdGVjdHVyZSBjb2RlIHRoYXQgaXMgcmVhY2hhYmxlIHZpYSBzeXN0ZW0gc3VzcGVuZCBvciBDUFUgaWRsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDljMTM3YWJiYzUwYmM3OGRmZWFhNWNlYTUxNDYxN2MwYjNjYjdiNTRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEp1bCAyOSAxOToyNzo0NiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuYyBiL2FyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuY1xuaW5kZXggZWFhZmY5NDMyOWNkZC4uYzZiNmIxY2FjYmYzNyAxMDA2NDRcbi0tLSBhL2FyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuY1xuKysrIGIvYXJjaC9hcm02NC9rZXJuZWwvc3VzcGVuZC5jXG5AQCAtNSw2ICs1LDcgQEBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC91YWNjZXNzLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9wZ3RhYmxlLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9jcHVpZGxlLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9zY2hlZC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjYXNtL2FsdGVybmF0aXZlLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2Nhc20vY2FjaGVmbHVzaC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjYXNtL2NwdWZlYXR1cmUuaFx1MDAzZVxuQEAgLTk5LDYgKzEwMCw3IEBAIGludCBjcHVfc3VzcGVuZCh1bnNpZ25lZCBsb25nIGFyZywgaW50ICgqZm4pKHVuc2lnbmVkIGxvbmcpKVxuIFx0aW50IHJldCA9IDA7XG4gXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xuIFx0c3RydWN0IHNsZWVwX3N0YWNrX2RhdGEgc3RhdGU7XG4rXHRib29sIGlkbGUgPSBpc19pZGxlX3Rhc2soY3VycmVudCk7XG4gXHRzdHJ1Y3QgYXJtX2NwdWlkbGVfaXJxX2NvbnRleHQgY29udGV4dDtcbiBcbiBcdC8qXG5AQCAtMTM3LDcgKzEzOSw4IEBAIGludCBjcHVfc3VzcGVuZCh1bnNpZ25lZCBsb25nIGFyZywgaW50ICgqZm4pKHVuc2lnbmVkIGxvbmcpKVxuIFx0ICovXG4gXHRhcm1fY3B1aWRsZV9zYXZlX2lycV9jb250ZXh0KFx1MDAyNmNvbnRleHQpO1xuIFxuLVx0Y3RfY3B1aWRsZV9lbnRlcigpO1xuK1x0aWYgKGlkbGUpXG4rXHRcdGN0X2NwdWlkbGVfZW50ZXIoKTtcbiBcbiBcdGlmIChfX2NwdV9zdXNwZW5kX2VudGVyKFx1MDAyNnN0YXRlKSkge1xuIFx0XHQvKiBDYWxsIHRoZSBzdXNwZW5kIGZpbmlzaGVyICovXG5AQCAtMTUzLDkgKzE1NiwxMSBAQCBpbnQgY3B1X3N1c3BlbmQodW5zaWduZWQgbG9uZyBhcmcsIGludCAoKmZuKSh1bnNpZ25lZCBsb25nKSlcbiBcdFx0aWYgKCFyZXQpXG4gXHRcdFx0cmV0ID0gLUVPUE5PVFNVUFA7XG4gXG4tXHRcdGN0X2NwdWlkbGVfZXhpdCgpO1xuK1x0XHRpZiAoaWRsZSlcbitcdFx0XHRjdF9jcHVpZGxlX2V4aXQoKTtcbiBcdH0gZWxzZSB7XG4tXHRcdGN0X2NwdWlkbGVfZXhpdCgpO1xuK1x0XHRpZiAoaWRsZSlcbitcdFx0XHRjdF9jcHVpZGxlX2V4aXQoKTtcbiBcdFx0X19jcHVfc3VzcGVuZF9leGl0KCk7XG4gXHR9XG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxOToyNzo0Ny43MTk0OTIzMzlaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1ODkwNDQ5NDk4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgdGhlIGBjcHVfc3VzcGVuZGAgRnVuY3Rpb24qKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIOKAkyBzZWVtcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLiBJdCdzIHRvdWNoaW5nIGBhcmNoL2FybTY0L2tlcm5lbC9zdXNwZW5kLmNgLCBzcGVjaWZpY2FsbHkgdGhlIGBjcHVfc3VzcGVuZGAgZnVuY3Rpb24uIFRoZSBrZXkgY2hhbmdlIGlzIHRoaXMgYGlzX2lkbGVfdGFzayhjdXJyZW50KWAgY2hlY2ssIGFuZCB0aGUgY29uZGl0aW9uYWwgY2FsbHMgdG8gYGN0X2NwdWlkbGVfZW50ZXIoKWAgYW5kIGBjdF9jcHVpZGxlX2V4aXQoKWAuIEJhc2ljYWxseSwgaXQncyBlbnN1cmluZyB0aG9zZSBpZGxlLXJlbGF0ZWQgZnVuY3Rpb25zIGFyZW4ndCBjYWxsZWQgb3V0c2lkZSBvZiB0aGUgaWRsZSB0YXNrIGNvbnRleHQuXG5cblJpZ2h0LCB0aGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2Ugd2l0aGluIHRoZSBhcm02NCBhcmNoaXRlY3R1cmUncyBzdXNwZW5kIGNvZGUuIFRoZSBxdWVzdGlvbiBpcywgaXMgdGhpcyBzb21ldGhpbmcgd29ydGggZnV6emluZz8gTGV0J3MgYnJlYWsgaXQgZG93bi4gVGhlIGZ1bmN0aW9uIGluIHF1ZXN0aW9uLCBgY3B1X3N1c3BlbmRgLCBpcyBhbGwgYWJvdXQgQ1BVIHN1c3BlbmQgYW5kIGlkbGUuIENhbiB3ZSBhY3R1YWxseSByZWFjaCB0aGlzIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQ/IEFic29sdXRlbHksIENQVSBzdXNwZW5kIGFuZCBpZGxlICpjYW4qIGJlIHRyaWdnZXJlZC4gVGhlIGZhY3QgdGhhdCBpdCdzIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBtZWFucyBpdCBtaWdodCBiZSBhIGJpdCB0cmlja2llciB0byBnZXQgdG8sIGJ1dCBpdCdzIGRlZmluaXRlbHkgZmVhc2libGUuXG5cblRoZSByZWFsIHF1ZXN0aW9uIGlzICpob3cqIGRvIHdlIHRyaWdnZXIgaXQ/IE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBpbnZlc3RpZ2F0ZSBpZiB0aGVyZSBhcmUgYW55IHN5c2NhbGxzIHRoYXQgY2FsbCB0aGlzIGZ1bmN0aW9uLiBJdCdzIGNhbGxlZCBkdXJpbmcgc3lzdGVtIHN1c3BlbmQgb3IgQ1BVIGlkbGUuIE9rYXksIHNvIHRoYXQgc3VnZ2VzdHMgYSByb3V0ZTogc3lzdGVtIHN1c3BlbmQgY2FuIGJlIGluaXRpYXRlZCB0aHJvdWdoIGAvc3lzL3Bvd2VyL3N0YXRlYC4gQW5kIENQVSBpZGxlIGlzIG5hdHVyYWxseSB0cmlnZ2VyZWQgYnkgdGhlIGlkbGUgbG9vcC4gVGhpbmtpbmcgYWJvdXQgaXQsIHRoaXMgaXMgcHJvYmFibHkgd29ydGggYSBmdXp6aW5nIHJ1bi4gVGhpcyBwYXRjaCBkaXJlY3RseSBhZGRyZXNzZXMgYSBidWcgd2hlcmUgYGN0X2NwdWlkbGVfZW50ZXIoKWAgd2FzIGJlaW5nIGNhbGxlZCBpbmFwcHJvcHJpYXRlbHksIHNwZWNpZmljYWxseSB3aGVuIHdlICp3ZXJlbid0KiBpbiB0aGUgaWRsZSB0YXNrIOKAkyBsaWtlIGR1cmluZyBzeXN0ZW0gc3VzcGVuZC4gVGhpcyBpcyBhbiBleGNlbGxlbnQgY2FuZGlkYXRlIGZvciBmdXp6aW5nLlxuXG5Ob3csIGxldCBtZSBnbyBiYWNrIGFuZCBnaXZlIGBjcHVfc3VzcGVuZGAgaW4gYGFyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuY2AgYSBjbG9zZSBsb29rLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzU1LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mjk0LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMTk6Mjc6NTMuNjA5OTQ0NjE3WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgzNTUxNTM5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNwdV9zdXNwZW5kXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL2FybTY0L2tlcm5lbC9zdXNwZW5kLmMtMjMtLypcXG5hcmNoL2FybTY0L2tlcm5lbC9zdXNwZW5kLmM6MjQ6ICogVGhpcyBpcyBhbGxvY2F0ZWQgYnkgY3B1X3N1c3BlbmRfaW5pdCgpLCBhbmQgdXNlZCB0byBzdG9yZSBhIHBvaW50ZXIgdG9cXG5hcmNoL2FybTY0L2tlcm5lbC9zdXNwZW5kLmMtMjUtICogdGhlICdzdHJ1Y3Qgc2xlZXBfc3RhY2tfZGF0YScgdGhlIGNvbnRhaW5zIGEgcGFydGljdWxhciBDUFVzIHN0YXRlLlxcbi0tXFxuYXJjaC9hcm02NC9rZXJuZWwvc3VzcGVuZC5jPTI3PXVuc2lnbmVkIGxvbmcgKnNsZWVwX3NhdmVfc3Rhc2g7XFxuLS1cXG5hcmNoL2FybTY0L2tlcm5lbC9zdXNwZW5kLmMtMjktLypcXG5hcmNoL2FybTY0L2tlcm5lbC9zdXNwZW5kLmM6MzA6ICogVGhpcyBob29rIGlzIHByb3ZpZGVkIHNvIHRoYXQgY3B1X3N1c3BlbmQgY29kZSBjYW4gcmVzdG9yZSBIV1xcbmFyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuYy0zMS0gKiBicmVha3BvaW50cyBhcyBlYXJseSBhcyBwb3NzaWJsZSBpbiB0aGUgcmVzdW1lIHBhdGgsIGJlZm9yZSByZWVuYWJsaW5nXFxuLS1cXG5hcmNoL2FybTY0L2tlcm5lbC9zdXNwZW5kLmM9MzY9c3RhdGljIGludCAoKmh3X2JyZWFrcG9pbnRfcmVzdG9yZSkodW5zaWduZWQgaW50KTtcXG5hcmNoL2FybTY0L2tlcm5lbC9zdXNwZW5kLmM6Mzc6dm9pZCBfX2luaXQgY3B1X3N1c3BlbmRfc2V0X2RiZ19yZXN0b3JlcihpbnQgKCpod19icF9yZXN0b3JlKSh1bnNpZ25lZCBpbnQpKVxcbmFyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuYy0zOC17XFxuLS1cXG5hcmNoL2FybTY0L2tlcm5lbC9zdXNwZW5kLmMtNDQtXFxuYXJjaC9hcm02NC9rZXJuZWwvc3VzcGVuZC5jOjQ1OnZvaWQgbm90cmFjZSBfX2NwdV9zdXNwZW5kX2V4aXQodm9pZClcXG5hcmNoL2FybTY0L2tlcm5lbC9zdXNwZW5kLmMtNDYte1xcbi0tXFxuYXJjaC9hcm02NC9rZXJuZWwvc3VzcGVuZC5jLTcyLVxcdCAqIGJlZm9yZSBkZWJ1ZyBleGNlcHRpb25zIGFyZSBwb3NzaWJseSByZWVuYWJsZWRcXG5hcmNoL2FybTY0L2tlcm5lbC9zdXNwZW5kLmM6NzM6XFx0ICogYnkgY3B1X3N1c3BlbmQoKXMgbG9jYWxfZGFpZl9yZXN0b3JlKCkgY2FsbC5cXG5hcmNoL2FybTY0L2tlcm5lbC9zdXNwZW5kLmMtNzQtXFx0ICovXFxuLS1cXG5hcmNoL2FybTY0L2tlcm5lbC9zdXNwZW5kLmMtOTEtLypcXG5hcmNoL2FybTY0L2tlcm5lbC9zdXNwZW5kLmM6OTI6ICogY3B1X3N1c3BlbmRcXG5hcmNoL2FybTY0L2tlcm5lbC9zdXNwZW5kLmMtOTMtICpcXG4tLVxcbmFyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuYy05Ny0gKi9cXG5hcmNoL2FybTY0L2tlcm5lbC9zdXNwZW5kLmM6OTg6aW50IGNwdV9zdXNwZW5kKHVuc2lnbmVkIGxvbmcgYXJnLCBpbnQgKCpmbikodW5zaWduZWQgbG9uZykpXFxuYXJjaC9hcm02NC9rZXJuZWwvc3VzcGVuZC5jLTk5LXtcXG4tLVxcbmFyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuYy0xMDgtXFx0ICogYmVmb3JlIGFsdGVybmF0aXZlcyBhcmUgcGF0Y2hlZCwgYnV0IGFyZSBvbmx5IHJlc3RvcmVkIGJ5XFxuYXJjaC9hcm02NC9rZXJuZWwvc3VzcGVuZC5jOjEwOTpcXHQgKiBfX2NwdV9zdXNwZW5kX2V4aXQoKSBhZnRlciBhbHRlcm5hdGl2ZXMgYXJlIHBhdGNoZWQuIFRvIGF2b2lkXFxuYXJjaC9hcm02NC9rZXJuZWwvc3VzcGVuZC5jLTExMC1cXHQgKiBhY2NpZGVudGFsbHkgbG9zaW5nIHRoZXNlIGJpdHMgd2UgbXVzdCBub3QgYXR0ZW1wdCB0byBzdXNwZW5kIHVudGlsXFxuLS1cXG5hcmNoL2FybTY0L2tlcm5lbC9zdXNwZW5kLmMtMTQ0LVxcbmFyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuYzoxNDU6XFx0aWYgKF9fY3B1X3N1c3BlbmRfZW50ZXIoXFx1MDAyNnN0YXRlKSkge1xcbmFyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuYy0xNDYtXFx0XFx0LyogQ2FsbCB0aGUgc3VzcGVuZCBmaW5pc2hlciAqL1xcbi0tXFxuYXJjaC9hcm02NC9rZXJuZWwvc3VzcGVuZC5jLTE1MC1cXHRcXHQgKiBOZXZlciBnZXRzIGhlcmUsIHVubGVzcyB0aGUgc3VzcGVuZCBmaW5pc2hlciBmYWlscy5cXG5hcmNoL2FybTY0L2tlcm5lbC9zdXNwZW5kLmM6MTUxOlxcdFxcdCAqIFN1Y2Nlc3NmdWwgY3B1X3N1c3BlbmQoKSBzaG91bGQgcmV0dXJuIGZyb20gY3B1X3Jlc3VtZSgpLFxcbmFyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuYy0xNTItXFx0XFx0ICogcmV0dXJuaW5nIHRocm91Z2ggdGhpcyBjb2RlIHBhdGggaXMgY29uc2lkZXJlZCBhbiBlcnJvclxcbi0tXFxuYXJjaC9hcm02NC9rZXJuZWwvc3VzcGVuZC5jLTE2My1cXHRcXHRcXHRjdF9jcHVpZGxlX2V4aXQoKTtcXG5hcmNoL2FybTY0L2tlcm5lbC9zdXNwZW5kLmM6MTY0OlxcdFxcdF9fY3B1X3N1c3BlbmRfZXhpdCgpO1xcbmFyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuYy0xNjUtXFx0fVxcbi0tXFxuYXJjaC9hcm02NC9rZXJuZWwvc3VzcGVuZC5jLTE4MC1cXG5hcmNoL2FybTY0L2tlcm5lbC9zdXNwZW5kLmM6MTgxOnN0YXRpYyBpbnQgX19pbml0IGNwdV9zdXNwZW5kX2luaXQodm9pZClcXG5hcmNoL2FybTY0L2tlcm5lbC9zdXNwZW5kLmMtMTgyLXtcXG4tLVxcbmFyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuYy0xOTEtfVxcbmFyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuYzoxOTI6ZWFybHlfaW5pdGNhbGwoY3B1X3N1c3BlbmRfaW5pdCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDE5OjI3OjUzLjY5MzUwMDE0NVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyMDkxODg3NTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyB0aGUgYGNwdV9zdXNwZW5kYCBGdW5jdGlvbioqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYGNwdV9zdXNwZW5kYCB3aXRoaW4gdGhlIEFSTTY0IGFyY2hpdGVjdHVyZSdzIHN1c3BlbmQgY29kZS4gSW50ZXJlc3RpbmcuIFRoaXMgZnVuY3Rpb24gaXMgYSBrZXkgcGxheWVyIGluIGJvdGggQ1BVIGlkbGUgYW5kIHN5c3RlbS13aWRlIHN1c3BlbmQgb3BlcmF0aW9ucyDigJMgZGVmaW5pdGVseSBhIHRhcmdldCB3b3J0aCBjb25zaWRlcmluZyBmb3IgZnV6emluZy4gR2l2ZW4gaXRzIGNlbnRyYWwgcm9sZSBhbmQgZnVuY3Rpb25hbCBuYXR1cmUsIGV2ZW4gc3VidGxlIGJ1Z3MgaGVyZSBjb3VsZCBoYXZlIGJyb2FkIGNvbnNlcXVlbmNlcy5cblxuVGhlIG9ubHkgcmVhbCBjYXZlYXQgaXMgdGhhdCBpdCdzIGFyY2hpdGVjdHVyZS1zcGVjaWZpYy4gQnV0IHdhaXQsIHdlJ3JlIHRhbGtpbmcgQVJNNjQgaGVyZSwgYW5kIHRoYXQncyB3ZWxsIHN1cHBvcnRlZCBieSBlbXVsYXRvcnMgbGlrZSBRRU1VLCB3aGljaCBoYW5kbGVzIENQVSBpZGxlIGFuZCBzeXN0ZW0gc3VzcGVuZC4gVGhhdCBtZWFucyB3ZSBzaG91bGQgYmUgYWJsZSB0byB0cmlnZ2VyIHRoaXMgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gRXhjZWxsZW50LiBOb3csIGJlZm9yZSBJIGRpdmUgaW4gdG9vIGRlZXAsIGxldCBtZSB0YWtlIGEgcXVpY2sgbG9vayBhdCB3aG8ncyBhY3R1YWxseSBjYWxsaW5nIGBjcHVfc3VzcGVuZGAgdG8gZ2V0IGEgYmV0dGVyIGhhbmRsZSBvbiB0aGUgcG90ZW50aWFsIGF0dGFjayBzdXJmYWNlLiBJdCdzIGFsd2F5cyBnb29kIHRvIHVuZGVyc3RhbmQgdGhlIGNhbGwgZ3JhcGggYmVmb3JlIGxhdW5jaGluZyBhbnkgZnV6emluZyBjYW1wYWlnbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NDEyNSwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxOToyNzo1Ny45MDI2OTIzNzdaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjEwMDcxMjE1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNwdV9zdXNwZW5kXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvYXJtNjQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvYXJtNjQvYm9vdC9kdHMvYW1hem9uL2FscGluZS12Mi5kdHNpPTc5PVxcdHBzY2kge1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9hbWF6b24vYWxwaW5lLXYyLmR0c2ktODEtXFx0XFx0bWV0aG9kID0gXFxcInNtY1xcXCI7XFxuYXJjaC9hcm02NC9ib290L2R0cy9hbWF6b24vYWxwaW5lLXYyLmR0c2k6ODI6XFx0XFx0Y3B1X3N1c3BlbmQgPSBcXHUwMDNjMHg4NDAwMDAwMVxcdTAwM2U7XFxuYXJjaC9hcm02NC9ib290L2R0cy9hbWF6b24vYWxwaW5lLXYyLmR0c2ktODMtXFx0XFx0Y3B1X29mZiA9IFxcdTAwM2MweDg0MDAwMDAyXFx1MDAzZTtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZXh5bm9zL2V4eW5vczc4NzAuZHRzaT0xMjg9XFx0cHNjaSB7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2V4eW5vcy9leHlub3M3ODcwLmR0c2ktMTMwLVxcdFxcdG1ldGhvZCA9IFxcXCJzbWNcXFwiO1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZXh5bm9zL2V4eW5vczc4NzAuZHRzaToxMzE6XFx0XFx0Y3B1X3N1c3BlbmQgPSBcXHUwMDNjMHhjNDAwMDAwMVxcdTAwM2U7XFxuYXJjaC9hcm02NC9ib290L2R0cy9leHlub3MvZXh5bm9zNzg3MC5kdHNpLTEzMi1cXHRcXHRjcHVfb2ZmID0gXFx1MDAzYzB4ODQwMDAwMDJcXHUwMDNlO1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9leHlub3MvZXh5bm9zNzg4NS5kdHNpPTE0Mz1cXHRwc2NpIHtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZXh5bm9zL2V4eW5vczc4ODUuZHRzaS0xNDUtXFx0XFx0bWV0aG9kID0gXFxcInNtY1xcXCI7XFxuYXJjaC9hcm02NC9ib290L2R0cy9leHlub3MvZXh5bm9zNzg4NS5kdHNpOjE0NjpcXHRcXHRjcHVfc3VzcGVuZCA9IFxcdTAwM2MweGM0MDAwMDAxXFx1MDAzZTtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2V4eW5vcy9leHlub3M3ODg1LmR0c2ktMTQ3LVxcdFxcdGNwdV9vZmYgPSBcXHUwMDNjMHg4NDAwMDAwMlxcdTAwM2U7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2V4eW5vcy9leHlub3M4ODk1LmR0c2k9MTUyPVxcdHBzY2kge1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9leHlub3MvZXh5bm9zODg5NS5kdHNpLTE1Ni1cXHRcXHRjcHVfb24gPSBcXHUwMDNjMHhjNDAwMDAwM1xcdTAwM2U7XFxuYXJjaC9hcm02NC9ib290L2R0cy9leHlub3MvZXh5bm9zODg5NS5kdHNpOjE1NzpcXHRcXHRjcHVfc3VzcGVuZCA9IFxcdTAwM2MweGM0MDAwMDAxXFx1MDAzZTtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2V4eW5vcy9leHlub3M4ODk1LmR0c2ktMTU4LVxcdH07XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2V4eW5vcy9leHlub3M5ODEwLmR0c2k9MTUzPVxcdHBzY2kge1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9leHlub3MvZXh5bm9zOTgxMC5kdHNpLTE1Ny1cXHRcXHRjcHVfb24gPSBcXHUwMDNjMHhjNDAwMDAwM1xcdTAwM2U7XFxuYXJjaC9hcm02NC9ib290L2R0cy9leHlub3MvZXh5bm9zOTgxMC5kdHNpOjE1ODpcXHRcXHRjcHVfc3VzcGVuZCA9IFxcdTAwM2MweGM0MDAwMDAxXFx1MDAzZTtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2V4eW5vcy9leHlub3M5ODEwLmR0c2ktMTU5LVxcdH07XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2V4eW5vcy9leHlub3NhdXRvdjkuZHRzaT0xMzg9XFx0cHNjaSB7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2V4eW5vcy9leHlub3NhdXRvdjkuZHRzaS0xNDAtXFx0XFx0bWV0aG9kID0gXFxcInNtY1xcXCI7XFxuYXJjaC9hcm02NC9ib290L2R0cy9leHlub3MvZXh5bm9zYXV0b3Y5LmR0c2k6MTQxOlxcdFxcdGNwdV9zdXNwZW5kID0gXFx1MDAzYzB4YzQwMDAwMDFcXHUwMDNlO1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZXh5bm9zL2V4eW5vc2F1dG92OS5kdHNpLTE0Mi1cXHRcXHRjcHVfb2ZmID0gXFx1MDAzYzB4ODQwMDAwMDJcXHUwMDNlO1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9sZy9sZzEzMXguZHRzaT01NT1cXHRwc2NpIHtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvbGcvbGcxMzF4LmR0c2ktNTctXFx0XFx0bWV0aG9kID0gXFxcInNtY1xcXCI7XFxuYXJjaC9hcm02NC9ib290L2R0cy9sZy9sZzEzMXguZHRzaTo1ODpcXHRcXHRjcHVfc3VzcGVuZCA9IFxcdTAwM2MweDg0MDAwMDAxXFx1MDAzZTtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2xnL2xnMTMxeC5kdHNpLTU5LVxcdFxcdGNwdV9vZmYgPSBcXHUwMDNjMHg4NDAwMDAwMlxcdTAwM2U7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL21lZGlhdGVrL210ODE3My5kdHNpPTIzOT1cXHRwc2NpIHtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvbWVkaWF0ZWsvbXQ4MTczLmR0c2ktMjQxLVxcdFxcdG1ldGhvZCA9IFxcXCJzbWNcXFwiO1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvbWVkaWF0ZWsvbXQ4MTczLmR0c2k6MjQyOlxcdFxcdGNwdV9zdXNwZW5kID0gXFx1MDAzYzB4ODQwMDAwMDFcXHUwMDNlO1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvbWVkaWF0ZWsvbXQ4MTczLmR0c2ktMjQzLVxcdFxcdGNwdV9vZmZcXHQgPSBcXHUwMDNjMHg4NDAwMDAwMlxcdTAwM2U7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL3NwcmQvc2M5ODM2LmR0c2k9MjA4PVxcdHBzY2kge1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9zcHJkL3NjOTgzNi5kdHNpLTIxMi1cXHRcXHRjcHVfb2ZmID0gXFx1MDAzYzB4ODQwMDAwMDJcXHUwMDNlO1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvc3ByZC9zYzk4MzYuZHRzaToyMTM6XFx0XFx0Y3B1X3N1c3BlbmQgPSBcXHUwMDNjMHhjNDAwMDAwMVxcdTAwM2U7XFxuYXJjaC9hcm02NC9ib290L2R0cy9zcHJkL3NjOTgzNi5kdHNpLTIxNC1cXHR9O1xcbi0tXFxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9od19icmVha3BvaW50Lmg9MTQ4PXN0YXRpYyBpbmxpbmUgaW50IGdldF9udW1fd3Jwcyh2b2lkKVxcbi0tXFxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9od19icmVha3BvaW50LmgtMTU2LSNpZmRlZiBDT05GSUdfQ1BVX1BNXFxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9od19icmVha3BvaW50Lmg6MTU3OmV4dGVybiB2b2lkIGNwdV9zdXNwZW5kX3NldF9kYmdfcmVzdG9yZXIoaW50ICgqaHdfYnBfcmVzdG9yZSkodW5zaWduZWQgaW50KSk7XFxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9od19icmVha3BvaW50LmgtMTU4LSNlbHNlXFxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9od19icmVha3BvaW50Lmg6MTU5OnN0YXRpYyBpbmxpbmUgdm9pZCBjcHVfc3VzcGVuZF9zZXRfZGJnX3Jlc3RvcmVyKGludCAoKmh3X2JwX3Jlc3RvcmUpKHVuc2lnbmVkIGludCkpXFxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9od19icmVha3BvaW50LmgtMTYwLXtcXG4tLVxcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20va3ZtX2hvc3QuaD04MTE9c3RydWN0IGt2bV9ob3N0X3BzY2lfY29uZmlnIHtcXG4tLVxcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20va3ZtX2hvc3QuaC04MTgtXFxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9rdm1faG9zdC5oOjgxOTpcXHRib29sIHBzY2lfMF8xX2NwdV9zdXNwZW5kX2ltcGxlbWVudGVkO1xcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20va3ZtX2hvc3QuaC04MjAtXFx0Ym9vbCBwc2NpXzBfMV9jcHVfb25faW1wbGVtZW50ZWQ7XFxuLS1cXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL21tdV9jb250ZXh0Lmg9MTA0PXN0YXRpYyBpbmxpbmUgdm9pZCBjcHVfaW5zdGFsbF9pZG1hcCh2b2lkKVxcbi0tXFxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9tbXVfY29udGV4dC5oLTEyMy0gKiBXZSBjaGFuZ2UgVDBTWiBhcyBwYXJ0IG9mIGluc3RhbGxpbmcgdGhlIGlkbWFwLiBUaGlzIGlzIHVuZG9uZSBieVxcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vbW11X2NvbnRleHQuaDoxMjQ6ICogY3B1X3VuaW5zdGFsbF9pZG1hcCgpIGluIF9fY3B1X3N1c3BlbmRfZXhpdCgpLlxcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vbW11X2NvbnRleHQuaC0xMjUtICovXFxuLS1cXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3Byb2MtZm5zLmgtMTUtXFxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9wcm9jLWZucy5oOjE2OnN0cnVjdCBjcHVfc3VzcGVuZF9jdHg7XFxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9wcm9jLWZucy5oLTE3LVxcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vcHJvYy1mbnMuaD0xOD1leHRlcm4gdm9pZCBjcHVfZG9faWRsZSh2b2lkKTtcXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3Byb2MtZm5zLmg6MTk6ZXh0ZXJuIHZvaWQgY3B1X2RvX3N1c3BlbmQoc3RydWN0IGNwdV9zdXNwZW5kX2N0eCAqcHRyKTtcXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3Byb2MtZm5zLmgtMjAtZXh0ZXJuIHU2NCBjcHVfZG9fcmVzdW1lKHBoeXNfYWRkcl90IHB0ciwgdTY0IGlkbWFwX3R0YnIpO1xcbi0tXFxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9zdXNwZW5kLmgtOC0vKlxcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vc3VzcGVuZC5oOjk6ICogc3RydWN0IGNwdV9zdXNwZW5kX2N0eCBtdXN0IGJlIDE2LWJ5dGUgYWxpZ25lZCBzaW5jZSBpdCBpcyBhbGxvY2F0ZWQgb25cXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3N1c3BlbmQuaC0xMC0gKiB0aGUgc3RhY2ssIHdoaWNoIG11c3QgYmUgMTYtYnl0ZSBhbGlnbmVkIG9uIHY4XFxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9zdXNwZW5kLmgtMTEtICovXFxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9zdXNwZW5kLmg6MTI6c3RydWN0IGNwdV9zdXNwZW5kX2N0eCB7XFxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9zdXNwZW5kLmgtMTMtXFx0LypcXG4tLVxcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vc3VzcGVuZC5oLTIyLSAqIE1lbW9yeSB0byBzYXZlIHRoZSBjcHUgc3RhdGUgaXMgYWxsb2NhdGVkIG9uIHRoZSBzdGFjayBieVxcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vc3VzcGVuZC5oOjIzOiAqIF9fY3B1X3N1c3BlbmRfZW50ZXIoKSdzIGNhbGxlciwgYW5kIHBvcHVsYXRlZCBieSBfX2NwdV9zdXNwZW5kX2VudGVyKCkuXFxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9zdXNwZW5kLmgtMjQtICogVGhpcyBkYXRhIG11c3Qgc3Vydml2ZSB1bnRpbCBjcHVfcmVzdW1lKCkgaXMgY2FsbGVkLlxcbi0tXFxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9zdXNwZW5kLmgtMjctICogVGhlIGxheW91dCBvZiB0aGUgY2FsbGVlX3NhdmVkX3JlZ3MgaXMgZGVmaW5lZCBieSB0aGUgaW1wbGVtZW50YXRpb25cXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3N1c3BlbmQuaDoyODogKiBvZiBfX2NwdV9zdXNwZW5kX2VudGVyKCksIGFuZCBjcHVfcmVzdW1lKCkuIFRoaXMgc3RydWN0IG11c3QgYmUgcGFzc2VkXFxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9zdXNwZW5kLmg6Mjk6ICogaW4gYnkgdGhlIGNhbGxlciBhcyBfX2NwdV9zdXNwZW5kX2VudGVyKCkncyBzdGFjay1mcmFtZSBpcyBnb25lIG9uY2UgaXRcXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3N1c3BlbmQuaC0zMC0gKiByZXR1cm5zLCBhbmQgdGhlIGRhdGEgd291bGQgYmUgc3Vic2VxdWVudGx5IGNvcnJ1cHRlZCBieSB0aGUgY2FsbCB0byB0aGVcXG4tLVxcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vc3VzcGVuZC5oPTMzPXN0cnVjdCBzbGVlcF9zdGFja19kYXRhIHtcXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3N1c3BlbmQuaDozNDpcXHRzdHJ1Y3QgY3B1X3N1c3BlbmRfY3R4XFx0c3lzdGVtX3JlZ3M7XFxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9zdXNwZW5kLmgtMzUtXFx0dW5zaWduZWQgbG9uZ1xcdFxcdGNhbGxlZV9zYXZlZF9yZWdzW05SX0NBTExFRV9TQVZFRF9SRUdTXTtcXG4tLVxcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vc3VzcGVuZC5oPTM4PWV4dGVybiB1bnNpZ25lZCBsb25nICpzbGVlcF9zYXZlX3N0YXNoO1xcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vc3VzcGVuZC5oLTM5LVxcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vc3VzcGVuZC5oOjQwOmV4dGVybiBpbnQgY3B1X3N1c3BlbmQodW5zaWduZWQgbG9uZyBhcmcsIGludCAoKmZuKSh1bnNpZ25lZCBsb25nKSk7XFxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9zdXNwZW5kLmgtNDEtZXh0ZXJuIHZvaWQgY3B1X3Jlc3VtZSh2b2lkKTtcXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3N1c3BlbmQuaDo0MjppbnQgX19jcHVfc3VzcGVuZF9lbnRlcihzdHJ1Y3Qgc2xlZXBfc3RhY2tfZGF0YSAqc3RhdGUpO1xcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vc3VzcGVuZC5oOjQzOnZvaWQgX19jcHVfc3VzcGVuZF9leGl0KHZvaWQpO1xcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vc3VzcGVuZC5oLTQ0LXZvaWQgX2NwdV9yZXN1bWUodm9pZCk7XFxuLS1cXG5hcmNoL2FybTY0L2tlcm5lbC9hc20tb2Zmc2V0cy5jPTI3PWludCBtYWluKHZvaWQpXFxuLS1cXG5hcmNoL2FybTY0L2tlcm5lbC9hc20tb2Zmc2V0cy5jLTEyOS0jaWZkZWYgQ09ORklHX0NQVV9QTVxcbmFyY2gvYXJtNjQva2VybmVsL2FzbS1vZmZzZXRzLmM6MTMwOiAgREVGSU5FKENQVV9DVFhfU1AsXFx0XFx0b2Zmc2V0b2Yoc3RydWN0IGNwdV9zdXNwZW5kX2N0eCwgc3ApKTtcXG5hcmNoL2FybTY0L2tlcm5lbC9hc20tb2Zmc2V0cy5jLTEzMS0gIERFRklORShNUElEUl9IQVNIX01BU0ssXFx0b2Zmc2V0b2Yoc3RydWN0IG1waWRyX2hhc2gsIG1hc2spKTtcXG4tLVxcbmFyY2gvYXJtNjQva2VybmVsL2hpYmVybmF0ZS5jPTEwOD1pbnQgYXJjaF9oaWJlcm5hdGlvbl9oZWFkZXJfc2F2ZSh2b2lkICphZGRyLCB1bnNpZ25lZCBpbnQgbWF4X3NpemUpXFxuLS1cXG5hcmNoL2FybTY0L2tlcm5lbC9oaWJlcm5hdGUuYy0xMjQtXFxuYXJjaC9hcm02NC9rZXJuZWwvaGliZXJuYXRlLmM6MTI1OlxcdC8qIFNhdmUgdGhlIG1waWRyIG9mIHRoZSBjcHUgd2UgY2FsbGVkIGNwdV9zdXNwZW5kKCkgb24uLi4gKi9cXG5hcmNoL2FybTY0L2tlcm5lbC9oaWJlcm5hdGUuYy0xMjYtXFx0aWYgKHNsZWVwX2NwdSBcXHUwMDNjIDApIHtcXG4tLVxcbmFyY2gvYXJtNjQva2VybmVsL2hpYmVybmF0ZS5jPTMzMz1pbnQgc3dzdXNwX2FyY2hfc3VzcGVuZCh2b2lkKVxcbi0tXFxuYXJjaC9hcm02NC9rZXJuZWwvaGliZXJuYXRlLmMtMzQ1LVxcbmFyY2gvYXJtNjQva2VybmVsL2hpYmVybmF0ZS5jOjM0NjpcXHRpZiAoX19jcHVfc3VzcGVuZF9lbnRlcihcXHUwMDI2c3RhdGUpKSB7XFxuYXJjaC9hcm02NC9rZXJuZWwvaGliZXJuYXRlLmMtMzQ3LVxcdFxcdC8qIG1ha2UgdGhlIGNyYXNoIGR1bXAga2VybmVsIGltYWdlIHZpc2libGUvc2F2ZWFibGUgKi9cXG4tLVxcbmFyY2gvYXJtNjQva2VybmVsL2hpYmVybmF0ZS5jLTM4My1cXHRcXHRzbGVlcF9jcHUgPSAtRUlOVkFMO1xcbmFyY2gvYXJtNjQva2VybmVsL2hpYmVybmF0ZS5jOjM4NDpcXHRcXHRfX2NwdV9zdXNwZW5kX2V4aXQoKTtcXG5hcmNoL2FybTY0L2tlcm5lbC9oaWJlcm5hdGUuYy0zODUtXFxuLS1cXG5hcmNoL2FybTY0L2tlcm5lbC9od19icmVha3BvaW50LmM9OTgzPXN0YXRpYyBpbnQgX19pbml0IGFyY2hfaHdfYnJlYWtwb2ludF9pbml0KHZvaWQpXFxuLS1cXG5hcmNoL2FybTY0L2tlcm5lbC9od19icmVha3BvaW50LmMtMTAwMi1cXG5hcmNoL2FybTY0L2tlcm5lbC9od19icmVha3BvaW50LmM6MTAwMzpcXHQvKiBSZWdpc3RlciBjcHVfc3VzcGVuZCBodyBicmVha3BvaW50IHJlc3RvcmUgaG9vayAqL1xcbmFyY2gvYXJtNjQva2VybmVsL2h3X2JyZWFrcG9pbnQuYzoxMDA0OlxcdGNwdV9zdXNwZW5kX3NldF9kYmdfcmVzdG9yZXIoaHdfYnJlYWtwb2ludF9yZXNldCk7XFxuYXJjaC9hcm02NC9rZXJuZWwvaHdfYnJlYWtwb2ludC5jLTEwMDUtXFxuLS1cXG5hcmNoL2FybTY0L2tlcm5lbC9zbGVlcC5TLTU5LSAqIGZ1bmN0aW9uLiBTbyB0aGF0IHRoZSBjYWxsZXIgY2FuIHRlbGwgdGhlIHN1c3BlbmQvcmVzdW1lIHBhdGhzIGFwYXJ0LFxcbmFyY2gvYXJtNjQva2VybmVsL3NsZWVwLlM6NjA6ICogX19jcHVfc3VzcGVuZF9lbnRlcigpIHdpbGwgYWx3YXlzIHJldHVybiBhIG5vbi16ZXJvIHZhbHVlLCB3aGVyZWFzIHRoZVxcbmFyY2gvYXJtNjQva2VybmVsL3NsZWVwLlMtNjEtICogcGF0aCB0aHJvdWdoIGNwdV9yZXN1bWUoKSB3aWxsIHJldHVybiAwLlxcbi0tXFxuYXJjaC9hcm02NC9rZXJuZWwvc2xlZXAuUy02NC0gKi9cXG5hcmNoL2FybTY0L2tlcm5lbC9zbGVlcC5TOjY1OlNZTV9GVU5DX1NUQVJUKF9fY3B1X3N1c3BlbmRfZW50ZXIpXFxuYXJjaC9hcm02NC9rZXJuZWwvc2xlZXAuUy02Ni1cXHRzdHBcXHR4MjksIGxyLCBbeDAsICNTTEVFUF9TVEFDS19EQVRBX0NBTExFRV9SRUdTXVxcbi0tXFxuYXJjaC9hcm02NC9rZXJuZWwvc2xlZXAuUy03Mi1cXG5hcmNoL2FybTY0L2tlcm5lbC9zbGVlcC5TOjczOlxcdC8qIHNhdmUgdGhlIHNwIGluIGNwdV9zdXNwZW5kX2N0eCAqL1xcbmFyY2gvYXJtNjQva2VybmVsL3NsZWVwLlMtNzQtXFx0bW92XFx0eDIsIHNwXFxuLS1cXG5hcmNoL2FybTY0L2tlcm5lbC9zbGVlcC5TLTk3LVxcdHJldFxcbmFyY2gvYXJtNjQva2VybmVsL3NsZWVwLlM6OTg6U1lNX0ZVTkNfRU5EKF9fY3B1X3N1c3BlbmRfZW50ZXIpXFxuYXJjaC9hcm02NC9rZXJuZWwvc2xlZXAuUy05OS1cXG4tLVxcbmFyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuYy0yMy0vKlxcbmFyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuYzoyNDogKiBUaGlzIGlzIGFsbG9jYXRlZCBieSBjcHVfc3VzcGVuZF9pbml0KCksIGFuZCB1c2VkIHRvIHN0b3JlIGEgcG9pbnRlciB0b1xcbmFyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuYy0yNS0gKiB0aGUgJ3N0cnVjdCBzbGVlcF9zdGFja19kYXRhJyB0aGUgY29udGFpbnMgYSBwYXJ0aWN1bGFyIENQVXMgc3RhdGUuXFxuLS1cXG5hcmNoL2FybTY0L2tlcm5lbC9zdXNwZW5kLmM9Mjc9dW5zaWduZWQgbG9uZyAqc2xlZXBfc2F2ZV9zdGFzaDtcXG4tLVxcbmFyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuYy0yOS0vKlxcbmFyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuYzozMDogKiBUaGlzIGhvb2sgaXMgcHJvdmlkZWQgc28gdGhhdCBjcHVfc3VzcGVuZCBjb2RlIGNhbiByZXN0b3JlIEhXXFxuYXJjaC9hcm02NC9rZXJuZWwvc3VzcGVuZC5jLTMxLSAqIGJyZWFrcG9pbnRzIGFzIGVhcmx5IGFzIHBvc3NpYmxlIGluIHRoZSByZXN1bWUgcGF0aCwgYmVmb3JlIHJlZW5hYmxpbmdcXG4tLVxcbmFyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuYz0zNj1zdGF0aWMgaW50ICgqaHdfYnJlYWtwb2ludF9yZXN0b3JlKSh1bnNpZ25lZCBpbnQpO1xcbmFyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuYzozNzp2b2lkIF9faW5pdCBjcHVfc3VzcGVuZF9zZXRfZGJnX3Jlc3RvcmVyKGludCAoKmh3X2JwX3Jlc3RvcmUpKHVuc2lnbmVkIGludCkpXFxuYXJjaC9hcm02NC9rZXJuZWwvc3VzcGVuZC5jLTM4LXtcXG4tLVxcbmFyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuYy00NC1cXG5hcmNoL2FybTY0L2tlcm5lbC9zdXNwZW5kLmM6NDU6dm9pZCBub3RyYWNlIF9fY3B1X3N1c3BlbmRfZXhpdCh2b2lkKVxcbmFyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuYy00Ni17XFxuLS1cXG5hcmNoL2FybTY0L2tlcm5lbC9zdXNwZW5kLmMtNzItXFx0ICogYmVmb3JlIGRlYnVnIGV4Y2VwdGlvbnMgYXJlIHBvc3NpYmx5IHJlZW5hYmxlZFxcbmFyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuYzo3MzpcXHQgKiBieSBjcHVfc3VzcGVuZCgpcyBsb2NhbF9kYWlmX3Jlc3RvcmUoKSBjYWxsLlxcbmFyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuYy03NC1cXHQgKi9cXG4tLVxcbmFyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuYy05MS0vKlxcbmFyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuYzo5MjogKiBjcHVfc3VzcGVuZFxcbmFyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuYy05My0gKlxcbi0tXFxuYXJjaC9hcm02NC9rZXJuZWwvc3VzcGVuZC5jLTk3LSAqL1xcbmFyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuYzo5ODppbnQgY3B1X3N1c3BlbmQodW5zaWduZWQgbG9uZyBhcmcsIGludCAoKmZuKSh1bnNpZ25lZCBsb25nKSlcXG5hcmNoL2FybTY0L2tlcm5lbC9zdXNwZW5kLmMtOTkte1xcbi0tXFxuYXJjaC9hcm02NC9rZXJuZWwvc3VzcGVuZC5jLTEwOC1cXHQgKiBiZWZvcmUgYWx0ZXJuYXRpdmVzIGFyZSBwYXRjaGVkLCBidXQgYXJlIG9ubHkgcmVzdG9yZWQgYnlcXG5hcmNoL2FybTY0L2tlcm5lbC9zdXNwZW5kLmM6MTA5OlxcdCAqIF9fY3B1X3N1c3BlbmRfZXhpdCgpIGFmdGVyIGFsdGVybmF0aXZlcyBhcmUgcGF0Y2hlZC4gVG8gYXZvaWRcXG5hcmNoL2FybTY0L2tlcm5lbC9zdXNwZW5kLmMtMTEwLVxcdCAqIGFjY2lkZW50YWxseSBsb3NpbmcgdGhlc2UgYml0cyB3ZSBtdXN0IG5vdCBhdHRlbXB0IHRvIHN1c3BlbmQgdW50aWxcXG4tLVxcbmFyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuYy0xNDQtXFxuYXJjaC9hcm02NC9rZXJuZWwvc3VzcGVuZC5jOjE0NTpcXHRpZiAoX19jcHVfc3VzcGVuZF9lbnRlcihcXHUwMDI2c3RhdGUpKSB7XFxuYXJjaC9hcm02NC9rZXJuZWwvc3VzcGVuZC5jLTE0Ni1cXHRcXHQvKiBDYWxsIHRoZSBzdXNwZW5kIGZpbmlzaGVyICovXFxuLS1cXG5hcmNoL2FybTY0L2tlcm5lbC9zdXNwZW5kLmMtMTUwLVxcdFxcdCAqIE5ldmVyIGdldHMgaGVyZSwgdW5sZXNzIHRoZSBzdXNwZW5kIGZpbmlzaGVyIGZhaWxzLlxcbmFyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuYzoxNTE6XFx0XFx0ICogU3VjY2Vzc2Z1bCBjcHVfc3VzcGVuZCgpIHNob3VsZCByZXR1cm4gZnJvbSBjcHVfcmVzdW1lKCksXFxuYXJjaC9hcm02NC9rZXJuZWwvc3VzcGVuZC5jLTE1Mi1cXHRcXHQgKiByZXR1cm5pbmcgdGhyb3VnaCB0aGlzIGNvZGUgcGF0aCBpcyBjb25zaWRlcmVkIGFuIGVycm9yXFxuLS1cXG5hcmNoL2FybTY0L2tlcm5lbC9zdXNwZW5kLmMtMTYzLVxcdFxcdFxcdGN0X2NwdWlkbGVfZXhpdCgpO1xcbmFyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuYzoxNjQ6XFx0XFx0X19jcHVfc3VzcGVuZF9leGl0KCk7XFxuYXJjaC9hcm02NC9rZXJuZWwvc3VzcGVuZC5jLTE2NS1cXHR9XFxuLS1cXG5hcmNoL2FybTY0L2tlcm5lbC9zdXNwZW5kLmMtMTgwLVxcbmFyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuYzoxODE6c3RhdGljIGludCBfX2luaXQgY3B1X3N1c3BlbmRfaW5pdCh2b2lkKVxcbmFyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuYy0xODIte1xcbi0tXFxuYXJjaC9hcm02NC9rZXJuZWwvc3VzcGVuZC5jLTE5MS19XFxuYXJjaC9hcm02NC9rZXJuZWwvc3VzcGVuZC5jOjE5MjplYXJseV9pbml0Y2FsbChjcHVfc3VzcGVuZF9pbml0KTtcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL2FybS5jPTc2OT1ib29sIGt2bV9hcm1fdmNwdV9zdG9wcGVkKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL2FybS5jLTc3My1cXG5hcmNoL2FybTY0L2t2bS9hcm0uYzo3NzQ6c3RhdGljIHZvaWQga3ZtX2FybV92Y3B1X3N1c3BlbmQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbmFyY2gvYXJtNjQva3ZtL2FybS5jLTc3NS17XFxuLS1cXG5hcmNoL2FybTY0L2t2bS9hcm0uYy03ODAtXFxuYXJjaC9hcm02NC9rdm0vYXJtLmM6NzgxOnN0YXRpYyBib29sIGt2bV9hcm1fdmNwdV9zdXNwZW5kZWQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbmFyY2gvYXJtNjQva3ZtL2FybS5jLTc4Mi17XFxuLS1cXG5hcmNoL2FybTY0L2t2bS9hcm0uYz03OTQ9aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X21wc3RhdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbi0tXFxuYXJjaC9hcm02NC9rdm0vYXJtLmMtODA4LVxcdGNhc2UgS1ZNX01QX1NUQVRFX1NVU1BFTkRFRDpcXG5hcmNoL2FybTY0L2t2bS9hcm0uYzo4MDk6XFx0XFx0a3ZtX2FybV92Y3B1X3N1c3BlbmQodmNwdSk7XFxuYXJjaC9hcm02NC9rdm0vYXJtLmMtODEwLVxcdFxcdGJyZWFrO1xcbi0tXFxuYXJjaC9hcm02NC9rdm0vYXJtLmM9MTA0MD12b2lkIGt2bV92Y3B1X3dmaShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL2FybTY0L2t2bS9hcm0uYy0xMDY1LVxcbmFyY2gvYXJtNjQva3ZtL2FybS5jOjEwNjY6c3RhdGljIGludCBrdm1fdmNwdV9zdXNwZW5kKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG5hcmNoL2FybTY0L2t2bS9hcm0uYy0xMDY3LXtcXG5hcmNoL2FybTY0L2t2bS9hcm0uYzoxMDY4OlxcdGlmICgha3ZtX2FybV92Y3B1X3N1c3BlbmRlZCh2Y3B1KSlcXG5hcmNoL2FybTY0L2t2bS9hcm0uYy0xMDY5LVxcdFxcdHJldHVybiAxO1xcbi0tXFxuYXJjaC9hcm02NC9rdm0vYXJtLmM9MTEwOD1zdGF0aWMgaW50IGNoZWNrX3ZjcHVfcmVxdWVzdHMoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vYXJtLmMtMTE0Ny1cXHRcXHRpZiAoa3ZtX2NoZWNrX3JlcXVlc3QoS1ZNX1JFUV9TVVNQRU5ELCB2Y3B1KSlcXG5hcmNoL2FybTY0L2t2bS9hcm0uYzoxMTQ4OlxcdFxcdFxcdHJldHVybiBrdm1fdmNwdV9zdXNwZW5kKHZjcHUpO1xcbmFyY2gvYXJtNjQva3ZtL2FybS5jLTExNDktXFxuLS1cXG5hcmNoL2FybTY0L2t2bS9hcm0uYz0yMzk5PXN0YXRpYyBib29sIF9faW5pdCBpbml0X3BzY2lfcmVsYXkodm9pZClcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL2FybS5jLTI0MTQtXFx0XFx0a3ZtX2hvc3RfcHNjaV9jb25maWcuZnVuY3Rpb25faWRzXzBfMSA9IGdldF9wc2NpXzBfMV9mdW5jdGlvbl9pZHMoKTtcXG5hcmNoL2FybTY0L2t2bS9hcm0uYzoyNDE1OlxcdFxcdGluaXRfcHNjaV8wXzFfaW1wbF9zdGF0ZShrdm1faG9zdF9wc2NpX2NvbmZpZywgY3B1X3N1c3BlbmQpO1xcbmFyY2gvYXJtNjQva3ZtL2FybS5jLTI0MTYtXFx0XFx0aW5pdF9wc2NpXzBfMV9pbXBsX3N0YXRlKGt2bV9ob3N0X3BzY2lfY29uZmlnLCBjcHVfb24pO1xcbi0tXFxuYXJjaC9hcm02NC9rdm0vaHlwL252aGUvcHNjaS1yZWxheS5jPTQ5PXN0YXRpYyBib29sIGlzX3BzY2lfMF8xX2NhbGwodTY0IGZ1bmNfaWQpXFxuYXJjaC9hcm02NC9rdm0vaHlwL252aGUvcHNjaS1yZWxheS5jLTUwLXtcXG5hcmNoL2FybTY0L2t2bS9oeXAvbnZoZS9wc2NpLXJlbGF5LmM6NTE6XFx0cmV0dXJuIChpc19wc2NpXzBfMShjcHVfc3VzcGVuZCwgZnVuY19pZCkgfHxcXG5hcmNoL2FybTY0L2t2bS9oeXAvbnZoZS9wc2NpLXJlbGF5LmMtNTItXFx0XFx0aXNfcHNjaV8wXzEoY3B1X29uLCBmdW5jX2lkKSB8fFxcbi0tXFxuYXJjaC9hcm02NC9rdm0vaHlwL252aGUvcHNjaS1yZWxheS5jPTEwOD1zdGF0aWMgaW50IHBzY2lfY3B1X29uKHU2NCBmdW5jX2lkLCBzdHJ1Y3Qga3ZtX2NwdV9jb250ZXh0ICpob3N0X2N0eHQpXFxuLS1cXG5hcmNoL2FybTY0L2t2bS9oeXAvbnZoZS9wc2NpLXJlbGF5LmMtMTUxLVxcbmFyY2gvYXJtNjQva3ZtL2h5cC9udmhlL3BzY2ktcmVsYXkuYzoxNTI6c3RhdGljIGludCBwc2NpX2NwdV9zdXNwZW5kKHU2NCBmdW5jX2lkLCBzdHJ1Y3Qga3ZtX2NwdV9jb250ZXh0ICpob3N0X2N0eHQpXFxuYXJjaC9hcm02NC9rdm0vaHlwL252aGUvcHNjaS1yZWxheS5jLTE1My17XFxuLS1cXG5hcmNoL2FybTY0L2t2bS9oeXAvbnZoZS9wc2NpLXJlbGF5LmM9MjQwPXN0YXRpYyB1bnNpZ25lZCBsb25nIHBzY2lfMF8xX2hhbmRsZXIodTY0IGZ1bmNfaWQsIHN0cnVjdCBrdm1fY3B1X2NvbnRleHQgKmhvc3RfY3R4dClcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL2h5cC9udmhlL3BzY2ktcmVsYXkuYy0yNDUtXFx0XFx0cmV0dXJuIHBzY2lfY3B1X29uKGZ1bmNfaWQsIGhvc3RfY3R4dCk7XFxuYXJjaC9hcm02NC9rdm0vaHlwL252aGUvcHNjaS1yZWxheS5jOjI0NjpcXHRpZiAoaXNfcHNjaV8wXzEoY3B1X3N1c3BlbmQsIGZ1bmNfaWQpKVxcbmFyY2gvYXJtNjQva3ZtL2h5cC9udmhlL3BzY2ktcmVsYXkuYzoyNDc6XFx0XFx0cmV0dXJuIHBzY2lfY3B1X3N1c3BlbmQoZnVuY19pZCwgaG9zdF9jdHh0KTtcXG5hcmNoL2FybTY0L2t2bS9oeXAvbnZoZS9wc2NpLXJlbGF5LmMtMjQ4LVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vaHlwL252aGUvcHNjaS1yZWxheS5jPTI1Mj1zdGF0aWMgdW5zaWduZWQgbG9uZyBwc2NpXzBfMl9oYW5kbGVyKHU2NCBmdW5jX2lkLCBzdHJ1Y3Qga3ZtX2NwdV9jb250ZXh0ICpob3N0X2N0eHQpXFxuLS1cXG5hcmNoL2FybTY0L2t2bS9oeXAvbnZoZS9wc2NpLXJlbGF5LmMtMjY5LVxcdGNhc2UgUFNDSV8wXzJfRk42NF9DUFVfU1VTUEVORDpcXG5hcmNoL2FybTY0L2t2bS9oeXAvbnZoZS9wc2NpLXJlbGF5LmM6MjcwOlxcdFxcdHJldHVybiBwc2NpX2NwdV9zdXNwZW5kKGZ1bmNfaWQsIGhvc3RfY3R4dCk7XFxuYXJjaC9hcm02NC9rdm0vaHlwL252aGUvcHNjaS1yZWxheS5jLTI3MS1cXHRjYXNlIFBTQ0lfMF8yX0ZONjRfQ1BVX09OOlxcbi0tXFxuYXJjaC9hcm02NC9rdm0vcHNjaS5jPTI2PXN0YXRpYyB1bnNpZ25lZCBsb25nIHBzY2lfYWZmaW5pdHlfbWFzayh1bnNpZ25lZCBsb25nIGFmZmluaXR5X2xldmVsKVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vcHNjaS5jLTMzLVxcbmFyY2gvYXJtNjQva3ZtL3BzY2kuYzozNDpzdGF0aWMgdW5zaWduZWQgbG9uZyBrdm1fcHNjaV92Y3B1X3N1c3BlbmQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbmFyY2gvYXJtNjQva3ZtL3BzY2kuYy0zNS17XFxuLS1cXG5hcmNoL2FybTY0L2t2bS9wc2NpLmM9MjQ2PXN0YXRpYyBpbnQga3ZtX3BzY2lfMF8yX2NhbGwoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vcHNjaS5jLTI2MS1cXHRjYXNlIFBTQ0lfMF8yX0ZONjRfQ1BVX1NVU1BFTkQ6XFxuYXJjaC9hcm02NC9rdm0vcHNjaS5jOjI2MjpcXHRcXHR2YWwgPSBrdm1fcHNjaV92Y3B1X3N1c3BlbmQodmNwdSk7XFxuYXJjaC9hcm02NC9rdm0vcHNjaS5jLTI2My1cXHRcXHRicmVhaztcXG4tLVxcbmFyY2gvYXJtNjQvbW0vcHJvYy5TLTg2LSAqXFxuYXJjaC9hcm02NC9tbS9wcm9jLlM6ODc6ICogVGhpcyBtdXN0IGJlIGtlcHQgaW4gc3luYyB3aXRoIHN0cnVjdCBjcHVfc3VzcGVuZF9jdHggaW4gXFx1MDAzY2FzbS9zdXNwZW5kLmhcXHUwMDNlLlxcbmFyY2gvYXJtNjQvbW0vcHJvYy5TLTg4LSAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxOToyNzo1OC4xMTI3Njg3MTNaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTQ3NzE0NDI2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzOlxuXG4qKkNQVSBTdXNwZW5kIEZ1bmN0aW9uIElucXVpcnkqKlxuXG5Pa2F5LCBzbyBJIHNlZSBgY3B1X3N1c3BlbmRgIGlzIGRlZmluZWQgYW5kIGV4cG9ydGVkLCBzcGVjaWZpY2FsbHkgaW4gYGFyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuY2AuIFNlZW1zIHN0cmFpZ2h0Zm9yd2FyZCBlbm91Z2guIEJ1dCwgd2FpdCBhIHNlY29uZCwgSSBuZWVkIHRvIGNvbmZpcm0gc29tZXRoaW5nLiBJcyB0aGF0IGV4cG9ydCBpbnRlbmRlZCBmb3IgdGhlIGtlcm5lbCBwcm9wZXIgKm9ubHkqLCBvciBpcyBpdCBhbHNvIHZpc2libGUgYW5kIHVzYWJsZSBieSBtb2R1bGVzPyBUaGF0J3MgdGhlIGNyaXRpY2FsIHF1ZXN0aW9uIGhlcmUuIEkgbmVlZCB0byBrbm93IGlmIG1vZHVsZXMgY2FuIGhvb2sgaW50byB0aGlzIHN1c3BlbmQgZnVuY3Rpb24sIG9yIGlmIGl0J3Mgc3RyaWN0bHkgYSBjb3JlIGtlcm5lbCBjYXBhYmlsaXR5LiBMZXQncyBkaWcgZGVlcGVyIGFuZCB2ZXJpZnkgdGhlIGV4cG9ydCB2aXNpYmlsaXR5LiBUaGF0J3MgdGhlIG5leHQgc3RlcC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTExNDYsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxOToyODowMS42NjA0ODU1MjlaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTc5NjI0ODQ2LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJFWFBPUlRfU1lNQk9MLipjcHVfc3VzcGVuZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL2FybTY0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMTk6Mjg6MDEuODQwMTE4NDk1WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDAyMDI1MjMzOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIENhbGxlcnMgb2YgdGhpcyBGdW5jdGlvbioqXG5cbkFscmlnaHQsIHNvIGl0IHNlZW1zIEkgd2FzIG1pc3Rha2VuIGFib3V0IHRoZSBleHBvcnQgc3RhdHVzIG9mIHRoaXMgZnVuY3Rpb24uIEl0J3Mgbm90IGV4cG9ydGVkLiBUaGF0IGNoYW5nZXMgdGhpbmdzIGEgYml0LiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGVyZSBpdCAqaXMqIGNhbGxlZC4gRnJvbSB3aGF0IEkgY2FuIHRlbGwsIGl0J3MgYmVpbmcgY2FsbGVkIGZyb20gYSBmZXcga2V5IHBsYWNlczogYGFyY2gvYXJtNjQva2VybmVsL2hpYmVybmF0ZS5jYCB3aXRoaW4gdGhlIGBzd3N1c3BfYXJjaF9zdXNwZW5kYCBmdW5jdGlvbiwgYW5kIGFsc28gZnJvbSBgYXJjaC9hcm02NC9rZXJuZWwvcHNjaS5jYCwgbGlrZWx5IHRyaWdnZXJlZCBkdXJpbmcgQ1BVIGlkbGUgb3IgdGhlIHN5c3RlbSBzdXNwZW5kIHByb2Nlc3MuIEhtbSwgdGhhdCBzdWdnZXN0cyBhIGNvcmUgcG93ZXIgbWFuYWdlbWVudCBvciBoaWJlcm5hdGlvbi1yZWxhdGVkIGZ1bmN0aW9uLiBPa2F5LCBpZiBpdCdzIHJlbGF0ZWQgdG8gQ1BVIGlkbGUsIEkgc2hvdWxkIHByb2JhYmx5IGNoZWNrIGBhcmNoL2FybTY0L2tlcm5lbC9jcHVpZGxlLmNgLCBvciBzb21ldGhpbmcgc2ltaWxhciB0byBpdC4gVGhhdCdzIGxpa2VseSB3aGVyZSB0aGUgY29ubmVjdGlvbiB3aWxsIGJlLiBUaW1lIHRvIGRpZyBpbnRvIHRob3NlIGZpbGVzIGFuZCBzZWUgd2hhdCBJIGNhbiBmaW5kLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTM3MiwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDE5OjI4OjA1Ljg2MDM3NDkxNFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTg0NTQ5MTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY3B1X3N1c3BlbmRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9jcHVpZGxlL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2NwdWlkbGUvY3B1aWRsZS1iaWdfbGl0dGxlLmM9MTAyPXN0YXRpYyBpbnQgbm90cmFjZSBibF9wb3dlcmRvd25fZmluaXNoZXIodW5zaWduZWQgbG9uZyBhcmcpXFxuLS1cXG5kcml2ZXJzL2NwdWlkbGUvY3B1aWRsZS1iaWdfbGl0dGxlLmMtMTA5LVxcdG1jcG1fc2V0X2VudHJ5X3ZlY3RvcihjcHUsIGNsdXN0ZXIsIGNwdV9yZXN1bWUpO1xcbmRyaXZlcnMvY3B1aWRsZS9jcHVpZGxlLWJpZ19saXR0bGUuYzoxMTA6XFx0bWNwbV9jcHVfc3VzcGVuZCgpO1xcbmRyaXZlcnMvY3B1aWRsZS9jcHVpZGxlLWJpZ19saXR0bGUuYy0xMTEtXFxuLS1cXG5kcml2ZXJzL2NwdWlkbGUvY3B1aWRsZS1iaWdfbGl0dGxlLmM9MTI1PXN0YXRpYyBfX2NwdWlkbGUgaW50IGJsX2VudGVyX3Bvd2VyZG93bihzdHJ1Y3QgY3B1aWRsZV9kZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvY3B1aWRsZS9jcHVpZGxlLWJpZ19saXR0bGUuYy0xMzAtXFxuZHJpdmVycy9jcHVpZGxlL2NwdWlkbGUtYmlnX2xpdHRsZS5jOjEzMTpcXHRjcHVfc3VzcGVuZCgwLCBibF9wb3dlcmRvd25fZmluaXNoZXIpO1xcbmRyaXZlcnMvY3B1aWRsZS9jcHVpZGxlLWJpZ19saXR0bGUuYy0xMzItXFxuLS1cXG5kcml2ZXJzL2NwdWlkbGUvY3B1aWRsZS1jYWx4ZWRhLmM9Mjk9c3RhdGljIGludCBjYWx4ZWRhX2lkbGVfZmluaXNoKHVuc2lnbmVkIGxvbmcgdmFsKVxcbmRyaXZlcnMvY3B1aWRsZS9jcHVpZGxlLWNhbHhlZGEuYy0zMC17XFxuZHJpdmVycy9jcHVpZGxlL2NwdWlkbGUtY2FseGVkYS5jOjMxOlxcdHJldHVybiBwc2NpX29wcy5jcHVfc3VzcGVuZChDQUxYRURBX0lETEVfUEFSQU0sIF9fcGEoY3B1X3Jlc3VtZSkpO1xcbmRyaXZlcnMvY3B1aWRsZS9jcHVpZGxlLWNhbHhlZGEuYy0zMi19XFxuLS1cXG5kcml2ZXJzL2NwdWlkbGUvY3B1aWRsZS1jYWx4ZWRhLmM9MzQ9c3RhdGljIGludCBjYWx4ZWRhX3B3cmRvd25faWRsZShzdHJ1Y3QgY3B1aWRsZV9kZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvY3B1aWRsZS9jcHVpZGxlLWNhbHhlZGEuYy0zOC1cXHRjcHVfcG1fZW50ZXIoKTtcXG5kcml2ZXJzL2NwdWlkbGUvY3B1aWRsZS1jYWx4ZWRhLmM6Mzk6XFx0Y3B1X3N1c3BlbmQoMCwgY2FseGVkYV9pZGxlX2ZpbmlzaCk7XFxuZHJpdmVycy9jcHVpZGxlL2NwdWlkbGUtY2FseGVkYS5jLTQwLVxcdGNwdV9wbV9leGl0KCk7XFxuLS1cXG5kcml2ZXJzL2NwdWlkbGUvY3B1aWRsZS1tdmVidS12Ny5jLTI1LVxcbmRyaXZlcnMvY3B1aWRsZS9jcHVpZGxlLW12ZWJ1LXY3LmM6MjY6c3RhdGljIGludCAoKm12ZWJ1X3Y3X2NwdV9zdXNwZW5kKShpbnQpO1xcbmRyaXZlcnMvY3B1aWRsZS9jcHVpZGxlLW12ZWJ1LXY3LmMtMjctXFxuZHJpdmVycy9jcHVpZGxlL2NwdWlkbGUtbXZlYnUtdjcuYz0yOD1zdGF0aWMgX19jcHVpZGxlIGludCBtdmVidV92N19lbnRlcl9pZGxlKHN0cnVjdCBjcHVpZGxlX2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9jcHVpZGxlL2NwdWlkbGUtbXZlYnUtdjcuYy0zOS1cXHRjdF9jcHVpZGxlX2VudGVyKCk7XFxuZHJpdmVycy9jcHVpZGxlL2NwdWlkbGUtbXZlYnUtdjcuYzo0MDpcXHRyZXQgPSBtdmVidV92N19jcHVfc3VzcGVuZChkZWVwaWRsZSk7XFxuZHJpdmVycy9jcHVpZGxlL2NwdWlkbGUtbXZlYnUtdjcuYy00MS1cXHRjdF9jcHVpZGxlX2V4aXQoKTtcXG4tLVxcbmRyaXZlcnMvY3B1aWRsZS9jcHVpZGxlLW12ZWJ1LXY3LmM9MTA1PXN0YXRpYyBpbnQgbXZlYnVfdjdfY3B1aWRsZV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9jcHVpZGxlL2NwdWlkbGUtbXZlYnUtdjcuYy0xMTEtXFxuZHJpdmVycy9jcHVpZGxlL2NwdWlkbGUtbXZlYnUtdjcuYzoxMTI6XFx0bXZlYnVfdjdfY3B1X3N1c3BlbmQgPSBwZGV2LVxcdTAwM2VkZXYucGxhdGZvcm1fZGF0YTtcXG5kcml2ZXJzL2NwdWlkbGUvY3B1aWRsZS1tdmVidS12Ny5jLTExMy1cXG4tLVxcbmRyaXZlcnMvY3B1aWRsZS9jcHVpZGxlLXBzY2kuYz02ND1zdGF0aWMgX19jcHVpZGxlIGludCBfX3BzY2lfZW50ZXJfZG9tYWluX2lkbGVfc3RhdGUoc3RydWN0IGNwdWlkbGVfZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL2NwdWlkbGUvY3B1aWRsZS1wc2NpLmMtODktXFx0dHJhY2VfcHNjaV9kb21haW5faWRsZV9lbnRlcihkZXYtXFx1MDAzZWNwdSwgc3RhdGUsIHMyaWRsZSk7XFxuZHJpdmVycy9jcHVpZGxlL2NwdWlkbGUtcHNjaS5jOjkwOlxcdHJldCA9IHBzY2lfY3B1X3N1c3BlbmRfZW50ZXIoc3RhdGUpID8gLTEgOiBpZHg7XFxuZHJpdmVycy9jcHVpZGxlL2NwdWlkbGUtcHNjaS5jLTkxLVxcdHRyYWNlX3BzY2lfZG9tYWluX2lkbGVfZXhpdChkZXYtXFx1MDAzZWNwdSwgc3RhdGUsIHMyaWRsZSk7XFxuLS1cXG5kcml2ZXJzL2NwdWlkbGUvY3B1aWRsZS1wc2NpLmM9MjE4PXN0YXRpYyBfX2NwdWlkbGUgaW50IHBzY2lfZW50ZXJfaWRsZV9zdGF0ZShzdHJ1Y3QgY3B1aWRsZV9kZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvY3B1aWRsZS9jcHVpZGxlLXBzY2kuYy0yMjItXFxuZHJpdmVycy9jcHVpZGxlL2NwdWlkbGUtcHNjaS5jOjIyMzpcXHRyZXR1cm4gQ1BVX1BNX0NQVV9JRExFX0VOVEVSX1BBUkFNX1JDVShwc2NpX2NwdV9zdXNwZW5kX2VudGVyLCBpZHgsIHN0YXRlW2lkeF0pO1xcbmRyaXZlcnMvY3B1aWRsZS9jcHVpZGxlLXBzY2kuYy0yMjQtfVxcbi0tXFxuZHJpdmVycy9jcHVpZGxlL2NwdWlkbGUtcHNjaS5jPTMxOD1zdGF0aWMgaW50IHBzY2lfY3B1X2luaXRfaWRsZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBjcHVpZGxlX2RyaXZlciAqZHJ2LFxcbi0tXFxuZHJpdmVycy9jcHVpZGxlL2NwdWlkbGUtcHNjaS5jLTMyNC1cXHQvKlxcbmRyaXZlcnMvY3B1aWRsZS9jcHVpZGxlLXBzY2kuYzozMjU6XFx0ICogSWYgdGhlIFBTQ0kgY3B1X3N1c3BlbmQgZnVuY3Rpb24gaG9vayBoYXMgbm90IGJlZW4gaW5pdGlhbGl6ZWRcXG5kcml2ZXJzL2NwdWlkbGUvY3B1aWRsZS1wc2NpLmMtMzI2LVxcdCAqIGlkbGUgc3RhdGVzIG11c3Qgbm90IGJlIGVuYWJsZWQsIHNvIGJhaWwgb3V0XFxuZHJpdmVycy9jcHVpZGxlL2NwdWlkbGUtcHNjaS5jLTMyNy1cXHQgKi9cXG5kcml2ZXJzL2NwdWlkbGUvY3B1aWRsZS1wc2NpLmM6MzI4OlxcdGlmICghcHNjaV9vcHMuY3B1X3N1c3BlbmQpXFxuZHJpdmVycy9jcHVpZGxlL2NwdWlkbGUtcHNjaS5jLTMyOS1cXHRcXHRyZXR1cm4gLUVPUE5PVFNVUFA7XFxuLS1cXG5kcml2ZXJzL2NwdWlkbGUvY3B1aWRsZS1xY29tLXNwbS5jPTQzPXN0YXRpYyBpbnQgcWNvbV9jcHVfc3BjKHN0cnVjdCBzcG1fZHJpdmVyX2RhdGEgKmRydilcXG4tLVxcbmRyaXZlcnMvY3B1aWRsZS9jcHVpZGxlLXFjb20tc3BtLmMtNDctXFx0c3BtX3NldF9sb3dfcG93ZXJfbW9kZShkcnYsIFBNX1NMRUVQX01PREVfU1BDKTtcXG5kcml2ZXJzL2NwdWlkbGUvY3B1aWRsZS1xY29tLXNwbS5jOjQ4OlxcdHJldCA9IGNwdV9zdXNwZW5kKDAsIHFjb21fcG1fY29sbGFwc2UpO1xcbmRyaXZlcnMvY3B1aWRsZS9jcHVpZGxlLXFjb20tc3BtLmMtNDktXFx0LypcXG4tLVxcbmRyaXZlcnMvY3B1aWRsZS9jcHVpZGxlLXRlZ3JhLmM9MTEyPXN0YXRpYyBpbnQgdGVncmFfY3B1aWRsZV9jYzZfZW50ZXIodW5zaWduZWQgaW50IGNwdSlcXG4tLVxcbmRyaXZlcnMvY3B1aWRsZS9jcHVpZGxlLXRlZ3JhLmMtMTE2LVxcdGlmIChjcHUgXFx1MDAzZSAwKSB7XFxuZHJpdmVycy9jcHVpZGxlL2NwdWlkbGUtdGVncmEuYzoxMTc6XFx0XFx0cmV0ID0gY3B1X3N1c3BlbmQoY3B1LCB0ZWdyYV9wbV9wYXJrX3NlY29uZGFyeV9jcHUpO1xcbmRyaXZlcnMvY3B1aWRsZS9jcHVpZGxlLXRlZ3JhLmMtMTE4LVxcdH0gZWxzZSB7XFxuLS1cXG5kcml2ZXJzL2NwdWlkbGUvY3B1aWRsZS10ZWdyYS5jPTEyOT1zdGF0aWMgaW50IHRlZ3JhX2NwdWlkbGVfYzdfZW50ZXIodm9pZClcXG4tLVxcbmRyaXZlcnMvY3B1aWRsZS9jcHVpZGxlLXRlZ3JhLmMtMTM2LVxcbmRyaXZlcnMvY3B1aWRsZS9jcHVpZGxlLXRlZ3JhLmM6MTM3OlxcdHJldHVybiBjcHVfc3VzcGVuZCgwLCB0ZWdyYTMwX3BtX3NlY29uZGFyeV9jcHVfc3VzcGVuZCk7XFxuZHJpdmVycy9jcHVpZGxlL2NwdWlkbGUtdGVncmEuYy0xMzgtfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxOToyODowNS45MTg4Mzc5MzNaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Njc5MTYzMjczMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIHRoZSBDUFUgU3VzcGVuZCBQYXRoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IHR3ZWFrcyBgY3B1X3N1c3BlbmRgLiBJdCdzIHVzZWQgZm9yIGJvdGggQ1BVIGlkbGluZyBhbmQgZnVsbCBzeXN0ZW0gc3VzcGVuZCwgd2hpY2ggbWFrZXMgaXQgaW50ZXJlc3RpbmcuIFRoZSBtb2RpZmljYXRpb24gaXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCDigJMgaXQgY29uZGl0aW9uYWxseSBjYWxscyB0aG9zZSBgY3RfY3B1aWRsZV9lbnRlcigpYCBhbmQgYGN0X2NwdWlkbGVfZXhpdCgpYCBmdW5jdGlvbnMgKm9ubHkqIHdoZW4gdGhlIGN1cnJlbnQgdGFzayBpcyBhY3R1YWxseSB0aGUgaWRsZSB0YXNrLiBUaGUgcmVhc29uIGlzIHByZXR0eSBjbGVhcjogd2UgZG9uJ3Qgd2FudCB0byBtZXNzIHdpdGggUkNVIGlkbGUgaGFuZGxpbmcgd2hlbiB3ZSdyZSBzdXNwZW5kaW5nIHRoZSBzeXN0ZW0sIGJlY2F1c2UgZHVyaW5nIHN1c3BlbmQgYGN1cnJlbnRgIHdvbid0IGJlIHRoZSBpZGxlIHRhc2suXG5cbklzIHRoaXMgc29tZXRoaW5nIHRoYXQgd2FycmFudHMgZnV6emluZyBhdHRlbnRpb24/IEFic29sdXRlbHksIHRoaXMgaXMgY29yZSBrZXJuZWwgY29kZSwgc28gYW55IHBvdGVudGlhbCBidWcgY291bGQgaGF2ZSBzaWduaWZpY2FudCBpbXBhY3QuIEFuZCB0aGVuIEkgdGhvdWdodCBhYm91dCBpdCwgYW5kIHJlYWxpemVkIHRoYXQgU3l6a2FsbGVyICpjYW4qIHRyaWdnZXIgc3lzdGVtIHN1c3BlbmQgdXNpbmcgYC9zeXMvcG93ZXIvc3RhdGVgISBQbHVzLCBDUFUgaWRsZSBpcyBhIGNvbnN0YW50bHktdHJpZ2dlcmVkIHBhdGguIFNvIHllcywgdGhpcyBpcyAqZGVmaW5pdGVseSogcmVhY2hhYmxlIGFuZCBmdXp6YWJsZS5cblxuTm93LCBsZXQncyBuYWlsIGRvd24gZXhhY3RseSAqd2hlcmUqIHRvIGZvY3VzLiBUaGUgbW9kaWZpZWQgZnVuY3Rpb24gaXMgYGNwdV9zdXNwZW5kYCwgc28gdGhhdCdzIHRoZSBvYnZpb3VzIHRhcmdldC4gTGV0J3MgbWFrZSBzdXJlIHRoYXQncyBhIGdvb2Qgc3ltYm9sIHRvIGZvY3VzIG9uLiBMb29rcyBsaWtlIGl0J3MgbG9jYXRlZCBpbiBgYXJjaC9hcm02NC9rZXJuZWwvc3VzcGVuZC5jYC4gT2theSwgdGhhdCdzIG5vdCBzdGF0aWMgYW5kIG5vdCBpbmxpbmVkLCB3aGljaCBtYWtlcyBpdCBhIGdyZWF0IGVudHJ5IHBvaW50LiBKdXN0IG5lZWQgdG8gbWFrZSBzdXJlIHRoZXJlIGFyZW4ndCBvdGhlciByZWxhdGVkIGV4cG9ydGVkIGZ1bmN0aW9ucyBpbiB0aGF0IG1vZHVsZSwgYnV0IGl0IGxvb2tzIGxpa2UgYGNwdV9zdXNwZW5kYCBpcyB0aGUgb25lLlxuXG5PbmUgbGFzdCB0aGluZywgYXJlIHRoZXJlIGFueSBzcGVjaWZpYyBDT05GSUcgb3B0aW9ucyB0aGF0IG1pZ2h0IGJlIHJlbGV2YW50PyBMb29rcyBsaWtlIGBhcmNoL2FybTY0L2tlcm5lbC9zdXNwZW5kLmNgIGdldHMgY29tcGlsZWQgd2hlbiBgQ09ORklHX0FSTTY0YCBpcyBzZXQsIGFuZCBsZXQncyBxdWlja2x5IGNoZWNrIHRoZSBgTWFrZWZpbGVgIHRvIG1ha2Ugc3VyZS4gVGhhdCBzaG91bGQgYmUgZ29vZCB0byBnby5cblxuXG4iLCJJbnB1dFRva2VucyI6MTM1NTIsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNDIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMTk6Mjg6MTIuNzEwNDcyOTE1WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5NDk2NDYwOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdXNwZW5kLm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9hcm02NC9rZXJuZWwvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9hcm02NC9rZXJuZWwvTWFrZWZpbGU9NDk9b2JqLSQoQ09ORklHX0hBVkVfU1RBVElDX0NBTEwpXFx0XFx0Kz0gc3RhdGljX2NhbGwub1xcbmFyY2gvYXJtNjQva2VybmVsL01ha2VmaWxlOjUwOm9iai0kKENPTkZJR19DUFVfUE0pXFx0XFx0XFx0Kz0gc2xlZXAubyBzdXNwZW5kLm9cXG5hcmNoL2FybTY0L2tlcm5lbC9NYWtlZmlsZS01MS1vYmotJChDT05GSUdfS0dEQilcXHRcXHRcXHQrPSBrZ2RiLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMTk6Mjg6MTIuODA1NDQyMTQzWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1ODc3NzYwNTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBEZXBlbmRlbmN5IG9mIENPTkZJR19DUFVfUE0qKlxuXG5BbHJpZ2h0LCBzbyB3ZSd2ZSBnb3QgYSByZXF1aXJlbWVudCDigJMgYENPTkZJR19DUFVfUE1gIGlzIGFic29sdXRlbHkgbmVjZXNzYXJ5IGZvciBzb21ldGhpbmcgaW4gdGhlIHByb2plY3QuIE15IGltbWVkaWF0ZSB0aG91Z2h0IHByb2Nlc3MgaXMgdG8gdW5kZXJzdGFuZCAqd2h5KiBpdCdzIG5lZWRlZCwgd2hpY2ggbmF0dXJhbGx5IGxlYWRzIHRvIGZpZ3VyaW5nIG91dCB3aGF0J3MgZW5hYmxpbmcgaXQgdXBzdHJlYW0uIFRpbWUgdG8gdHJhY2UgdGhlIGRlcGVuZGVuY3kgY2hhaW4uIEkgbmVlZCB0byBxdWlja2x5IGlkZW50aWZ5IHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgb3Igc3lzdGVtIGVsZW1lbnRzIHRoYXQgdWx0aW1hdGVseSB0cmlnZ2VyIGBDT05GSUdfQ1BVX1BNYC4gSSdsbCBwcm9iYWJseSBzdGFydCB3aXRoIGEgZ3JlcCB0aHJvdWdoIHRoZSBLY29uZmlnIGZpbGVzLCBidXQgSSdsbCBuZWVkIHRvIGtlZXAgYW4gb3BlbiBtaW5kIGZvciBtb3JlIG9ic2N1cmUgZGVwZW5kZW5jaWVzIHRoYXQgbWlnaHQgYmUgbGVzcyBvYnZpb3VzLiBBIGRlZXBlciBkaXZlIGludG8gdGhlIHJlbGV2YW50IHNvdXJjZSBjb2RlIG1pZ2h0IGFsc28gYmUgbmVlZGVkIHRvIHNlZSBpZiBpdCdzIGJlaW5nIGVuYWJsZWQgaW5kaXJlY3RseSB0aHJvdWdoIHNvbWUgY29tcGxleCBsb2dpYy4gTGV0J3MgZGlnIGluIGFuZCBzZWUgd2hlcmUgdGhpcyByYWJiaXQgaG9sZSBsZWFkcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTQ0MjgsIk91dHB1dFRva2VucyI6MjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxOToyODoxNi4zOTMyMjEyMzZaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0NDg1Mzg1MTMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIENQVV9QTVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9jc2t5L0tjb25maWc9MjMyPWNob2ljZVxcbi0tXFxuYXJjaC9jc2t5L0tjb25maWctMjM3LVxcbmFyY2gvY3NreS9LY29uZmlnOjIzODpjb25maWcgQ1BVX1BNVV9OT05FXFxuYXJjaC9jc2t5L0tjb25maWctMjM5LVxcdGJvb2wgXFxcIk5vbmVcXFwiXFxuLS1cXG5hcmNoL2Nza3kvS2NvbmZpZz0yNDY9Y2hvaWNlXFxuLS1cXG5hcmNoL2Nza3kvS2NvbmZpZy0yNDktXFxuYXJjaC9jc2t5L0tjb25maWc6MjUwOmNvbmZpZyBDUFVfUE1fTk9ORVxcbmFyY2gvY3NreS9LY29uZmlnLTI1MS1cXHRib29sIFxcXCJOb25lXFxcIlxcbmFyY2gvY3NreS9LY29uZmlnLTI1Mi1cXG5hcmNoL2Nza3kvS2NvbmZpZzoyNTM6Y29uZmlnIENQVV9QTV9XQUlUXFxuYXJjaC9jc2t5L0tjb25maWctMjU0LVxcdGJvb2wgXFxcIndhaXRcXFwiXFxuYXJjaC9jc2t5L0tjb25maWctMjU1LVxcbmFyY2gvY3NreS9LY29uZmlnOjI1Njpjb25maWcgQ1BVX1BNX0RPWkVcXG5hcmNoL2Nza3kvS2NvbmZpZy0yNTctXFx0Ym9vbCBcXFwiZG96ZVxcXCJcXG5hcmNoL2Nza3kvS2NvbmZpZy0yNTgtXFxuYXJjaC9jc2t5L0tjb25maWc6MjU5OmNvbmZpZyBDUFVfUE1fU1RPUFxcbmFyY2gvY3NreS9LY29uZmlnLTI2MC1cXHRib29sIFxcXCJzdG9wXFxcIlxcbi0tXFxua2VybmVsL3Bvd2VyL0tjb25maWc9Mzg2PWNvbmZpZyBQTV9HRU5FUklDX0RPTUFJTlNfT0ZcXG4tLVxcbmtlcm5lbC9wb3dlci9LY29uZmlnLTM4OS1cXG5rZXJuZWwvcG93ZXIvS2NvbmZpZzozOTA6Y29uZmlnIENQVV9QTVxcbmtlcm5lbC9wb3dlci9LY29uZmlnLTM5MS1cXHRib29sXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDE5OjI4OjE4Ljg0MTc2NjI3OVoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzE1NTI2OTM5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGZyb20gYW4gZXhwZXJ0J3MgcGVyc3BlY3RpdmU6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgYENPTkZJR19DUFVfUE1gIEtlcm5lbCBDb25maWd1cmF0aW9uIE9wdGlvbioqXG5cbkFscmlnaHQsIHNvIGBDT05GSUdfQ1BVX1BNYC4gIFRoYXQncyBhIGJvb2xlYW4gb3B0aW9uLCBsb2NhdGVkIHJpZ2h0IHRoZXJlIGluIGBrZXJuZWwvcG93ZXIvS2NvbmZpZ2AuICBNeSBpbml0aWFsIHRob3VnaHQgaXMsIFwiT2theSwgcG93ZXIgbWFuYWdlbWVudCBhdCB0aGUgQ1BVIGxldmVsLCBpbnRlcmVzdGluZy4gIExldCdzIHNlZSB3aGF0IG90aGVyIGNvbmZpZ3VyYXRpb25zIGRlcGVuZCBvbiB0aGlzIG9uZS5cIiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzIGFuZCBpbXBsaWNhdGlvbnMgaGVyZS4gTXkgbmV4dCBtb3ZlIGlzIGNsZWFyOiBJIG5lZWQgdG8gcXVpY2tseSBmaWd1cmUgb3V0IHdoaWNoIG90aGVyIGNvbmZpZ3VyYXRpb25zICpzZWxlY3QqIHRoaXMuIFRoYXQgd2lsbCB0ZWxsIG1lIHdoZXJlIHRoaXMgc2V0dGluZyBpcyBwaXZvdGFsIGFuZCB3aGF0IG90aGVyIGZlYXR1cmVzIGFyZSB0aWVkIHRvIGl0LiBUaGlzIGluZm9ybWF0aW9uIGlzIGtleSB0byB1bmRlcnN0YW5kaW5nIGl0cyBvdmVyYWxsIHJvbGUgYW5kIGltcGFjdCBvbiB0aGUga2VybmVsJ3MgYmVoYXZpb3VyLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTAzMiwiT3V0cHV0VG9rZW5zIjoyNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDE5OjI4OjIyLjE1NzI5ODIwOFoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjM0OTQ1MzAwNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzZWxlY3QgQ1BVX1BNXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL2FybS9LY29uZmlnPTI9Y29uZmlnIEFSTVxcbi0tXFxuYXJjaC9hcm0vS2NvbmZpZy01OC1cXHRzZWxlY3QgQ0xPTkVfQkFDS1dBUkRTXFxuYXJjaC9hcm0vS2NvbmZpZzo1OTpcXHRzZWxlY3QgQ1BVX1BNIGlmIFNVU1BFTkQgfHwgQ1BVX0lETEVcXG5hcmNoL2FybS9LY29uZmlnLTYwLVxcdHNlbGVjdCBEQ0FDSEVfV09SRF9BQ0NFU1MgaWYgSEFWRV9FRkZJQ0lFTlRfVU5BTElHTkVEX0FDQ0VTU1xcbi0tXFxuYXJjaC9hcm0vS2NvbmZpZz05OTY9Y29uZmlnIEJMX1NXSVRDSEVSXFxuLS1cXG5hcmNoL2FybS9LY29uZmlnLTk5OC1cXHRkZXBlbmRzIG9uIEJJR19MSVRUTEUgXFx1MDAyNlxcdTAwMjYgTUNQTSBcXHUwMDI2XFx1MDAyNiBIT1RQTFVHX0NQVSBcXHUwMDI2XFx1MDAyNiBBUk1fR0lDXFxuYXJjaC9hcm0vS2NvbmZpZzo5OTk6XFx0c2VsZWN0IENQVV9QTVxcbmFyY2gvYXJtL0tjb25maWctMTAwMC1cXHRoZWxwXFxuLS1cXG5hcmNoL2FybTY0L0tjb25maWc9Mj1jb25maWcgQVJNNjRcXG4tLVxcbmFyY2gvYXJtNjQvS2NvbmZpZy0xMTEtXFx0c2VsZWN0IENPTU1PTl9DTEtcXG5hcmNoL2FybTY0L0tjb25maWc6MTEyOlxcdHNlbGVjdCBDUFVfUE0gaWYgKFNVU1BFTkQgfHwgQ1BVX0lETEUpXFxuYXJjaC9hcm02NC9LY29uZmlnLTExMy1cXHRzZWxlY3QgQ1BVTUFTS19PRkZTVEFDSyBpZiBOUl9DUFVTIFxcdTAwM2UgMjU2XFxuLS1cXG5hcmNoL2xvb25nYXJjaC9LY29uZmlnPTI9Y29uZmlnIExPT05HQVJDSFxcbi0tXFxuYXJjaC9sb29uZ2FyY2gvS2NvbmZpZy04Ny1cXHRzZWxlY3QgQ09NTU9OX0NMS1xcbmFyY2gvbG9vbmdhcmNoL0tjb25maWc6ODg6XFx0c2VsZWN0IENQVV9QTVxcbmFyY2gvbG9vbmdhcmNoL0tjb25maWctODktXFx0c2VsZWN0IEVEQUNfU1VQUE9SVFxcbi0tXFxuYXJjaC9taXBzL0tjb25maWc9Mj1jb25maWcgTUlQU1xcbi0tXFxuYXJjaC9taXBzL0tjb25maWctMzUtXFx0c2VsZWN0IENQVV9OT19FRkZJQ0lFTlRfRkZTIGlmIChUQVJHRVRfSVNBX1JFViBcXHUwMDNjIDEpXFxuYXJjaC9taXBzL0tjb25maWc6MzY6XFx0c2VsZWN0IENQVV9QTSBpZiBDUFVfSURMRSB8fCBTVVNQRU5EXFxuYXJjaC9taXBzL0tjb25maWctMzctXFx0c2VsZWN0IEdFTkVSSUNfQVRPTUlDNjQgaWYgITY0QklUXFxuLS1cXG5hcmNoL3Jpc2N2L0tjb25maWc9MTM9Y29uZmlnIFJJU0NWXFxuLS1cXG5hcmNoL3Jpc2N2L0tjb25maWctOTgtXFx0c2VsZWN0IENQVV9OT19FRkZJQ0lFTlRfRkZTIGlmICFSSVNDVl9JU0FfWkJCXFxuYXJjaC9yaXNjdi9LY29uZmlnOjk5OlxcdHNlbGVjdCBDUFVfUE0gaWYgQ1BVX0lETEUgfHwgSElCRVJOQVRJT04gfHwgU1VTUEVORFxcbmFyY2gvcmlzY3YvS2NvbmZpZy0xMDAtXFx0c2VsZWN0IERZTkFNSUNfRlRSQUNFIGlmIEZVTkNUSU9OX1RSQUNFUlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxOToyODoyNC41MDY3NTg4MzNaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ1NTYyNjg5NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipFeGFtaW5pbmcgdGhlIFBvd2VyIE1hbmFnZW1lbnQgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEknbSBkaXZpbmcgaW50byB0aGlzIHBvd2VyIG1hbmFnZW1lbnQgY29uZmlndXJhdGlvbiBmb3IgdGhlIEFSTTY0IGFyY2hpdGVjdHVyZSwgYW5kIGl0IHNlZW1zIHByZXR0eSBzdHJhaWdodGZvcndhcmQgb24gdGhlIHN1cmZhY2UuIEl0IGxvb2tzIGxpa2UgYENPTkZJR19DUFVfUE1gIGlzIGF1dG9tYXRpY2FsbHkgc2VsZWN0ZWQsIG9yIGF0IGxlYXN0IHN1Z2dlc3RlZCwgYnkgdGhlIGBBUk02NGAgYXJjaGl0ZWN0dXJlLCBidXQgb25seSBpZiBlaXRoZXIgYFNVU1BFTkRgIG9yIGBDUFVfSURMRWAgaXMgZW5hYmxlZC4gVGhhdCBtYWtlcyBwZXJmZWN0IHNlbnNlOyBgQ1BVX1BNYCBpcyBlc3NlbnRpYWxseSB0aGUgdW1icmVsbGEgZmVhdHVyZSB0aGF0IGVuYWJsZXMgdGhlIGNvcmUgcG93ZXIgbWFuYWdlbWVudCBjYXBhYmlsaXRpZXMsIGFuZCBpdCdzIGNvbnRpbmdlbnQgb24gaGF2aW5nIHNwZWNpZmljIGlkbGUgb3Igc3VzcGVuZCBzdGF0ZXMuIFNvLCBteSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byBjb25maXJtIHRoYXQgYFNVU1BFTkRgIG9yIGBDUFVfSURMRWAgYXJlIGluZGVlZCBlbmFibGVkLiBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgdGhvc2UgaW5kaXZpZHVhbCBjb21wb25lbnRzIGFyZSBpbiBwbGFjZS4gTGV0J3Mgc3RhcnQgYnkgZGlnZ2luZyBpbnRvIHRoZSBzZXR0aW5ncyBmb3IgdGhvc2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1ODIwLCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMTk6Mjg6MjcuOTYyMzg5MDg5WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTE3MzQyMTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFNVU1BFTkRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL3Bvd2VyL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL3Bvd2VyL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5rZXJuZWwvcG93ZXIvS2NvbmZpZzoyOmNvbmZpZyBTVVNQRU5EXFxua2VybmVsL3Bvd2VyL0tjb25maWctMy1cXHRib29sIFxcXCJTdXNwZW5kIHRvIFJBTSBhbmQgc3RhbmRieVxcXCJcXG4tLVxcbmtlcm5lbC9wb3dlci9LY29uZmlnLTEwLVxcbmtlcm5lbC9wb3dlci9LY29uZmlnOjExOmNvbmZpZyBTVVNQRU5EX0ZSRUVaRVJcXG5rZXJuZWwvcG93ZXIvS2NvbmZpZy0xMi1cXHRib29sIFxcXCJFbmFibGUgZnJlZXplciBmb3Igc3VzcGVuZCB0byBSQU0vc3RhbmRieVxcXCIgXFxcXFxcbi0tXFxua2VybmVsL3Bvd2VyL0tjb25maWctMjEtXFxua2VybmVsL3Bvd2VyL0tjb25maWc6MjI6Y29uZmlnIFNVU1BFTkRfU0tJUF9TWU5DXFxua2VybmVsL3Bvd2VyL0tjb25maWctMjMtXFx0Ym9vbCBcXFwiU2tpcCBrZXJuZWwncyBzeXNfc3luYygpIG9uIHN1c3BlbmQgdG8gUkFNL3N0YW5kYnlcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDE5OjI4OjI4LjA3NDEzMDgzN1oiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjA2OTcxMzAyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIGBDUFVfSURMRWAqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBcIkxldCdzIGNoZWNrIGBDUFVfSURMRWAuXCIgVGhhdCBzaW5nbGUgdmFyaWFibGUsIGBDUFVfSURMRWAsIG9mdGVuIGhvbGRzIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyBhIHN5c3RlbSdzIHRydWUgcGVyZm9ybWFuY2Ugc3RhdGUuIEl0J3MgYSBmdW5kYW1lbnRhbCBpbmRpY2F0b3IsIGFuZCBJIG5lZWQgdG8gZGVsdmUgaW50byBpdHMgYmVoYXZpb3IuIEEgaGlnaCBpZGxlIHBlcmNlbnRhZ2UsIG9yIGZsdWN0dWF0aW9ucyBpbiBpZGxlIHRpbWUsIGNhbiBwb2ludCBtZSB0b3dhcmRzIGJvdHRsZW5lY2tzIG9yIGluZWZmaWNpZW5jaWVzIGVsc2V3aGVyZSBpbiB0aGUgc3lzdGVtLiBUaGUgbmV4dCBzdGVwIGlzIGNsZWFybHkgdG8gdW5kZXJzdGFuZCBpdHMgY3VycmVudCBhbmQgaGlzdG9yaWNhbCB2YWx1ZXMgaW4gcmVsYXRpb24gdG8gd29ya2xvYWQuIEknbGwgbmVlZCB0byBrbm93IHdoZXRoZXIgSSdtIGxvb2tpbmcgYXQgZXhwZWN0ZWQgYmVoYXZpb3IsIG9yIHNvbWV0aGluZyB1bnVzdWFsIHRoYXQgbWlnaHQgcG9pbnQgdG8gYSByZXNvdXJjZSBjb25zdHJhaW50LCBsb2NrIGNvbnRlbnRpb24sIGluZWZmaWNpZW50IEkvTywgb3IgZXZlbiBhIGhhcmR3YXJlIGlzc3VlLiBUaW1lIHRvIGdldCB0byB3b3JrLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjI2NSwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDE5OjI4OjMxLjY4MTEwNjkyOVoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTExMjcwMjc4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBDUFVfSURMRVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2NwdWlkbGUvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2NwdWlkbGUvS2NvbmZpZz0yPW1lbnUgXFxcIkNQVSBJZGxlXFxcIlxcbmRyaXZlcnMvY3B1aWRsZS9LY29uZmlnLTMtXFxuZHJpdmVycy9jcHVpZGxlL0tjb25maWc6NDpjb25maWcgQ1BVX0lETEVcXG5kcml2ZXJzL2NwdWlkbGUvS2NvbmZpZy01LVxcdGJvb2wgXFxcIkNQVSBpZGxlIFBNIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL2NwdWlkbGUvS2NvbmZpZz0xNj1pZiBDUFVfSURMRVxcbmRyaXZlcnMvY3B1aWRsZS9LY29uZmlnLTE3LVxcbmRyaXZlcnMvY3B1aWRsZS9LY29uZmlnOjE4OmNvbmZpZyBDUFVfSURMRV9NVUxUSVBMRV9EUklWRVJTXFxuZHJpdmVycy9jcHVpZGxlL0tjb25maWctMTktXFx0Ym9vbFxcbmRyaXZlcnMvY3B1aWRsZS9LY29uZmlnLTIwLVxcbmRyaXZlcnMvY3B1aWRsZS9LY29uZmlnOjIxOmNvbmZpZyBDUFVfSURMRV9HT1ZfTEFEREVSXFxuZHJpdmVycy9jcHVpZGxlL0tjb25maWctMjItXFx0Ym9vbCBcXFwiTGFkZGVyIGdvdmVybm9yIChmb3IgcGVyaW9kaWMgdGltZXIgdGljaylcXFwiXFxuZHJpdmVycy9jcHVpZGxlL0tjb25maWctMjMtXFxuZHJpdmVycy9jcHVpZGxlL0tjb25maWc6MjQ6Y29uZmlnIENQVV9JRExFX0dPVl9NRU5VXFxuZHJpdmVycy9jcHVpZGxlL0tjb25maWctMjUtXFx0Ym9vbCBcXFwiTWVudSBnb3Zlcm5vciAoZm9yIHRpY2tsZXNzIHN5c3RlbSlcXFwiXFxuZHJpdmVycy9jcHVpZGxlL0tjb25maWctMjYtXFxuZHJpdmVycy9jcHVpZGxlL0tjb25maWc6Mjc6Y29uZmlnIENQVV9JRExFX0dPVl9URU9cXG5kcml2ZXJzL2NwdWlkbGUvS2NvbmZpZy0yOC1cXHRib29sIFxcXCJUaW1lciBldmVudHMgb3JpZW50ZWQgKFRFTykgZ292ZXJub3IgKGZvciB0aWNrbGVzcyBzeXN0ZW1zKVxcXCJcXG4tLVxcbmRyaXZlcnMvY3B1aWRsZS9LY29uZmlnLTM1LVxcbmRyaXZlcnMvY3B1aWRsZS9LY29uZmlnOjM2OmNvbmZpZyBDUFVfSURMRV9HT1ZfSEFMVFBPTExcXG5kcml2ZXJzL2NwdWlkbGUvS2NvbmZpZy0zNy1cXHRib29sIFxcXCJIYWx0cG9sbCBnb3Zlcm5vciAoZm9yIHZpcnR1YWxpemVkIHN5c3RlbXMpXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxOToyODozMS43OTIzODUwNDdaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTI4ODkzODQ4NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEFSTTY0IENQVSBTdXNwZW5kIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBnb3QgdGhpcyBwYXRjaCBpbiBmcm9udCBvZiBtZSwgYW5kIGl0IHNlZW1zIGxpa2UgaXQncyB0b3VjaGluZyB0aGUgY29yZSBzdXNwZW5kL2lkbGUgbG9naWMgb24gdGhlIEFSTTY0IGFyY2hpdGVjdHVyZS4gU3BlY2lmaWNhbGx5LCBpdCdzIG1vZGlmeWluZyB0aGUgYGNwdV9zdXNwZW5kYCBmdW5jdGlvbiwgd2hpY2ggcmVzaWRlcyBpbiBgYXJjaC9hcm02NC9rZXJuZWwvc3VzcGVuZC5jYC4gVGhlIHBhdGNoJ3MgcmVhc29uaW5nIGlzIHByZXR0eSBjbGVhcjogaXQncyBhYm91dCBjb25kaXRpb25hbGx5IGNhbGxpbmcgUkNVIGlkbGUgZnVuY3Rpb25zLCBhbmQgdGhhdCBjb25kaXRpb24gaXMgd2hldGhlciBvciBub3QgdGhlIGN1cnJlbnQgdGFzayBpcyB0aGUgaWRsZSB0YXNrIGl0c2VsZi4gSXQgbG9va3MgbGlrZSBpdCdzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIHRvdWNoaW5nIG9uIHRoZSBjb3JlIGFyY2hpdGVjdHVyZSBjb2RlLCBhbmQgaXQncyByZWFjaGFibGUgdGhyb3VnaCBlaXRoZXIgc3lzdGVtIHN1c3BlbmQgb3IgQ1BVIGlkbGUgd2l0aGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy5cblxuVGhlIGNvbmZpZ3VyYXRpb24gZmxhZ3MgdGhhdCB0cmlnZ2VyIHRoaXMgYXJlIGBTVVNQRU5EYCBhbmQgYENQVV9JRExFYC4gVGhlIG5vdGUgaW5kaWNhdGVzIHRoaXMgaXMgc29tZXRoaW5nIHdvcnRoIGZ1enppbmcsIHdoaWNoIG1ha2VzIHNlbnNlIGdpdmVuIGl0cyBsb2NhdGlvbi4gVGhlIGBGb2N1c1N5bWJvbHNgIGVudHJ5IGNvcnJlY3RseSB6ZXJvZXMgaW4gb24gYGNwdV9zdXNwZW5kYC5cblxuSSBqdXN0IGNvbmZpcm1lZCB0aGF0IGBjcHVfc3VzcGVuZGAgKmlzKiB0aGUgb25seSBmdW5jdGlvbiB0aGF0IHRoaXMgcGF0Y2ggYWN0dWFsbHkgdG91Y2hlcywgc28gd2UncmUgZ29vZCB0aGVyZS4gVGhpcyBtZWFucyB3ZSdyZSBkZWFsaW5nIHdpdGggYSBmb2N1c2VkIGFuZCBwb3RlbnRpYWxseSBpbXBhY3RmdWwgY2hhbmdlLlxuXG5UaW1lIHRvIHVzZSBgc2V0LXJlc3VsdHNgIHRvIHBhc3MgdGhpcyBpbmZvcm1hdGlvbiBhbG9uZywgbWFraW5nIHN1cmUgaXQncyBhY2N1cmF0ZWx5IHJlZmxlY3RlZCBpbiB0aGUgc3lzdGVtLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjg5NiwiT3V0cHV0VG9rZW5zIjoxMDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxODYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMTk6Mjg6NDEuMDgxMzI2NTI0WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI2NjE1MzE4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJTVVNQRU5EXCIsXG4gICAgXCJDUFVfSURMRVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImNwdV9zdXNwZW5kXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYXJtNjQgQ1BVIHN1c3BlbmQvaWRsZSBsb2dpYyB0byBjb25kaXRpb25hbGx5IGNhbGwgUkNVIGlkbGUgZnVuY3Rpb25zIGJhc2VkIG9uIHdoZXRoZXIgdGhlIGN1cnJlbnQgdGFzayBpcyB0aGUgaWRsZSB0YXNrLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBhcmNoaXRlY3R1cmUgY29kZSB0aGF0IGlzIHJlYWNoYWJsZSB2aWEgc3lzdGVtIHN1c3BlbmQgb3IgQ1BVIGlkbGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlNVU1BFTkRcIixcbiAgICBcIkNQVV9JRExFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiY3B1X3N1c3BlbmRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBhcm02NCBDUFUgc3VzcGVuZC9pZGxlIGxvZ2ljIHRvIGNvbmRpdGlvbmFsbHkgY2FsbCBSQ1UgaWRsZSBmdW5jdGlvbnMgYmFzZWQgb24gd2hldGhlciB0aGUgY3VycmVudCB0YXNrIGlzIHRoZSBpZGxlIHRhc2suIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIGFyY2hpdGVjdHVyZSBjb2RlIHRoYXQgaXMgcmVhY2hhYmxlIHZpYSBzeXN0ZW0gc3VzcGVuZCBvciBDUFUgaWRsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow2t54t[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-29 19:22:48 +0000 UTC FinishedAt: 2026-07-29 19:28:42 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "f5098b6bae761e346ebcd9da7f95622c04733cff", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "SUSPEND", "CPU_IDLE" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "f5098b6bae761e346ebcd9da7f95622c04733cff", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "SUSPEND", "CPU_IDLE" ], "series_id": "fcbe0133-76a0-4fd5-8f6c-92c9f951e6f0" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "cpu_suspend" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDE5OjI3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NVU1BFTkQmIzM0OywKICAgICYjMzQ7Q1BVX0lETEUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtjcHVfc3VzcGVuZCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBhcm02NCBDUFUgc3VzcGVuZC9pZGxlIGxvZ2ljIHRvIGNvbmRpdGlvbmFsbHkgY2FsbCBSQ1UgaWRsZSBmdW5jdGlvbnMgYmFzZWQgb24gd2hldGhlciB0aGUgY3VycmVudCB0YXNrIGlzIHRoZSBpZGxlIHRhc2suIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIGFyY2hpdGVjdHVyZSBjb2RlIHRoYXQgaXMgcmVhY2hhYmxlIHZpYSBzeXN0ZW0gc3VzcGVuZCBvciBDUFUgaWRsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMTk6Mjc8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA5YzEzN2FiYmM1MGJjNzhkZmVhYTVjZWE1MTQ2MTdjMGIzY2I3YjU0XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgMjkgMTk6Mjc6NDYgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9rZXJuZWwvc3VzcGVuZC5jIGIvYXJjaC9hcm02NC9rZXJuZWwvc3VzcGVuZC5jXG5pbmRleCBlYWFmZjk0MzI5Y2RkLi5jNmI2YjFjYWNiZjM3IDEwMDY0NFxuLS0tIGEvYXJjaC9hcm02NC9rZXJuZWwvc3VzcGVuZC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL2FybTY0L2tlcm5lbC9zdXNwZW5kLmNcbkBAIC01LDYgJiM0Mzs1LDcgQEBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC91YWNjZXNzLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9wZ3RhYmxlLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9jcHVpZGxlLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvc2NoZWQuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2FzbS9hbHRlcm5hdGl2ZS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjYXNtL2NhY2hlZmx1c2guaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2FzbS9jcHVmZWF0dXJlLmhcdTAwM2VcbkBAIC05OSw2ICYjNDM7MTAwLDcgQEAgaW50IGNwdV9zdXNwZW5kKHVuc2lnbmVkIGxvbmcgYXJnLCBpbnQgKCpmbikodW5zaWduZWQgbG9uZykpXG4gXHRpbnQgcmV0ID0gMDtcbiBcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XG4gXHRzdHJ1Y3Qgc2xlZXBfc3RhY2tfZGF0YSBzdGF0ZTtcbiYjNDM7XHRib29sIGlkbGUgPSBpc19pZGxlX3Rhc2soY3VycmVudCk7XG4gXHRzdHJ1Y3QgYXJtX2NwdWlkbGVfaXJxX2NvbnRleHQgY29udGV4dDtcbiBcbiBcdC8qXG5AQCAtMTM3LDcgJiM0MzsxMzksOCBAQCBpbnQgY3B1X3N1c3BlbmQodW5zaWduZWQgbG9uZyBhcmcsIGludCAoKmZuKSh1bnNpZ25lZCBsb25nKSlcbiBcdCAqL1xuIFx0YXJtX2NwdWlkbGVfc2F2ZV9pcnFfY29udGV4dChcdTAwMjZjb250ZXh0KTtcbiBcbi1cdGN0X2NwdWlkbGVfZW50ZXIoKTtcbiYjNDM7XHRpZiAoaWRsZSlcbiYjNDM7XHRcdGN0X2NwdWlkbGVfZW50ZXIoKTtcbiBcbiBcdGlmIChfX2NwdV9zdXNwZW5kX2VudGVyKFx1MDAyNnN0YXRlKSkge1xuIFx0XHQvKiBDYWxsIHRoZSBzdXNwZW5kIGZpbmlzaGVyICovXG5AQCAtMTUzLDkgJiM0MzsxNTYsMTEgQEAgaW50IGNwdV9zdXNwZW5kKHVuc2lnbmVkIGxvbmcgYXJnLCBpbnQgKCpmbikodW5zaWduZWQgbG9uZykpXG4gXHRcdGlmICghcmV0KVxuIFx0XHRcdHJldCA9IC1FT1BOT1RTVVBQO1xuIFxuLVx0XHRjdF9jcHVpZGxlX2V4aXQoKTtcbiYjNDM7XHRcdGlmIChpZGxlKVxuJiM0MztcdFx0XHRjdF9jcHVpZGxlX2V4aXQoKTtcbiBcdH0gZWxzZSB7XG4tXHRcdGN0X2NwdWlkbGVfZXhpdCgpO1xuJiM0MztcdFx0aWYgKGlkbGUpXG4mIzQzO1x0XHRcdGN0X2NwdWlkbGVfZXhpdCgpO1xuIFx0XHRfX2NwdV9zdXNwZW5kX2V4aXQoKTtcbiBcdH1cbiBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxOToyNzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7U1VTUEVORCYjMzQ7LAogICAgJiMzNDtDUFVfSURMRSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2NwdV9zdXNwZW5kJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGFybTY0IENQVSBzdXNwZW5kL2lkbGUgbG9naWMgdG8gY29uZGl0aW9uYWxseSBjYWxsIFJDVSBpZGxlIGZ1bmN0aW9ucyBiYXNlZCBvbiB3aGV0aGVyIHRoZSBjdXJyZW50IHRhc2sgaXMgdGhlIGlkbGUgdGFzay4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgYXJjaGl0ZWN0dXJlIGNvZGUgdGhhdCBpcyByZWFjaGFibGUgdmlhIHN5c3RlbSBzdXNwZW5kIG9yIENQVSBpZGxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDljMTM3YWJiYzUwYmM3OGRmZWFhNWNlYTUxNDYxN2MwYjNjYjdiNTQKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEp1bCAyOSAxOToyNzo0NiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuYyBiL2FyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuYwppbmRleCBlYWFmZjk0MzI5Y2RkLi5jNmI2YjFjYWNiZjM3IDEwMDY0NAotLS0gYS9hcmNoL2FybTY0L2tlcm5lbC9zdXNwZW5kLmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9hcm02NC9rZXJuZWwvc3VzcGVuZC5jCkBAIC01LDYgJiM0Mzs1LDcgQEAKICNpbmNsdWRlICZsdDtsaW51eC91YWNjZXNzLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvcGd0YWJsZS5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L2NwdWlkbGUuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvc2NoZWQuaCZndDsKICNpbmNsdWRlICZsdDthc20vYWx0ZXJuYXRpdmUuaCZndDsKICNpbmNsdWRlICZsdDthc20vY2FjaGVmbHVzaC5oJmd0OwogI2luY2x1ZGUgJmx0O2FzbS9jcHVmZWF0dXJlLmgmZ3Q7CkBAIC05OSw2ICYjNDM7MTAwLDcgQEAgaW50IGNwdV9zdXNwZW5kKHVuc2lnbmVkIGxvbmcgYXJnLCBpbnQgKCpmbikodW5zaWduZWQgbG9uZykpCiAJaW50IHJldCA9IDA7CiAJdW5zaWduZWQgbG9uZyBmbGFnczsKIAlzdHJ1Y3Qgc2xlZXBfc3RhY2tfZGF0YSBzdGF0ZTsKJiM0MzsJYm9vbCBpZGxlID0gaXNfaWRsZV90YXNrKGN1cnJlbnQpOwogCXN0cnVjdCBhcm1fY3B1aWRsZV9pcnFfY29udGV4dCBjb250ZXh0OwogCiAJLyoKQEAgLTEzNyw3ICYjNDM7MTM5LDggQEAgaW50IGNwdV9zdXNwZW5kKHVuc2lnbmVkIGxvbmcgYXJnLCBpbnQgKCpmbikodW5zaWduZWQgbG9uZykpCiAJICovCiAJYXJtX2NwdWlkbGVfc2F2ZV9pcnFfY29udGV4dCgmYW1wO2NvbnRleHQpOwogCi0JY3RfY3B1aWRsZV9lbnRlcigpOwomIzQzOwlpZiAoaWRsZSkKJiM0MzsJCWN0X2NwdWlkbGVfZW50ZXIoKTsKIAogCWlmIChfX2NwdV9zdXNwZW5kX2VudGVyKCZhbXA7c3RhdGUpKSB7CiAJCS8qIENhbGwgdGhlIHN1c3BlbmQgZmluaXNoZXIgKi8KQEAgLTE1Myw5ICYjNDM7MTU2LDExIEBAIGludCBjcHVfc3VzcGVuZCh1bnNpZ25lZCBsb25nIGFyZywgaW50ICgqZm4pKHVuc2lnbmVkIGxvbmcpKQogCQlpZiAoIXJldCkKIAkJCXJldCA9IC1FT1BOT1RTVVBQOwogCi0JCWN0X2NwdWlkbGVfZXhpdCgpOwomIzQzOwkJaWYgKGlkbGUpCiYjNDM7CQkJY3RfY3B1aWRsZV9leGl0KCk7CiAJfSBlbHNlIHsKLQkJY3RfY3B1aWRsZV9leGl0KCk7CiYjNDM7CQlpZiAoaWRsZSkKJiM0MzsJCQljdF9jcHVpZGxlX2V4aXQoKTsKIAkJX19jcHVfc3VzcGVuZF9leGl0KCk7CiAJfQogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDE5OjI3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzNTUKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAyOTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyB0aGUgYGNwdV9zdXNwZW5kYCBGdW5jdGlvbioqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCDigJMgc2VlbXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZC4gSXQmIzM5O3MgdG91Y2hpbmcgYGFyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuY2AsIHNwZWNpZmljYWxseSB0aGUgYGNwdV9zdXNwZW5kYCBmdW5jdGlvbi4gVGhlIGtleSBjaGFuZ2UgaXMgdGhpcyBgaXNfaWRsZV90YXNrKGN1cnJlbnQpYCBjaGVjaywgYW5kIHRoZSBjb25kaXRpb25hbCBjYWxscyB0byBgY3RfY3B1aWRsZV9lbnRlcigpYCBhbmQgYGN0X2NwdWlkbGVfZXhpdCgpYC4gQmFzaWNhbGx5LCBpdCYjMzk7cyBlbnN1cmluZyB0aG9zZSBpZGxlLXJlbGF0ZWQgZnVuY3Rpb25zIGFyZW4mIzM5O3QgY2FsbGVkIG91dHNpZGUgb2YgdGhlIGlkbGUgdGFzayBjb250ZXh0LgoKUmlnaHQsIHRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB3aXRoaW4gdGhlIGFybTY0IGFyY2hpdGVjdHVyZSYjMzk7cyBzdXNwZW5kIGNvZGUuIFRoZSBxdWVzdGlvbiBpcywgaXMgdGhpcyBzb21ldGhpbmcgd29ydGggZnV6emluZz8gTGV0JiMzOTtzIGJyZWFrIGl0IGRvd24uIFRoZSBmdW5jdGlvbiBpbiBxdWVzdGlvbiwgYGNwdV9zdXNwZW5kYCwgaXMgYWxsIGFib3V0IENQVSBzdXNwZW5kIGFuZCBpZGxlLiBDYW4gd2UgYWN0dWFsbHkgcmVhY2ggdGhpcyBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50PyBBYnNvbHV0ZWx5LCBDUFUgc3VzcGVuZCBhbmQgaWRsZSAqY2FuKiBiZSB0cmlnZ2VyZWQuIFRoZSBmYWN0IHRoYXQgaXQmIzM5O3MgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIG1lYW5zIGl0IG1pZ2h0IGJlIGEgYml0IHRyaWNraWVyIHRvIGdldCB0bywgYnV0IGl0JiMzOTtzIGRlZmluaXRlbHkgZmVhc2libGUuCgpUaGUgcmVhbCBxdWVzdGlvbiBpcyAqaG93KiBkbyB3ZSB0cmlnZ2VyIGl0PyBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gaW52ZXN0aWdhdGUgaWYgdGhlcmUgYXJlIGFueSBzeXNjYWxscyB0aGF0IGNhbGwgdGhpcyBmdW5jdGlvbi4gSXQmIzM5O3MgY2FsbGVkIGR1cmluZyBzeXN0ZW0gc3VzcGVuZCBvciBDUFUgaWRsZS4gT2theSwgc28gdGhhdCBzdWdnZXN0cyBhIHJvdXRlOiBzeXN0ZW0gc3VzcGVuZCBjYW4gYmUgaW5pdGlhdGVkIHRocm91Z2ggYC9zeXMvcG93ZXIvc3RhdGVgLiBBbmQgQ1BVIGlkbGUgaXMgbmF0dXJhbGx5IHRyaWdnZXJlZCBieSB0aGUgaWRsZSBsb29wLiBUaGlua2luZyBhYm91dCBpdCwgdGhpcyBpcyBwcm9iYWJseSB3b3J0aCBhIGZ1enppbmcgcnVuLiBUaGlzIHBhdGNoIGRpcmVjdGx5IGFkZHJlc3NlcyBhIGJ1ZyB3aGVyZSBgY3RfY3B1aWRsZV9lbnRlcigpYCB3YXMgYmVpbmcgY2FsbGVkIGluYXBwcm9wcmlhdGVseSwgc3BlY2lmaWNhbGx5IHdoZW4gd2UgKndlcmVuJiMzOTt0KiBpbiB0aGUgaWRsZSB0YXNrIOKAkyBsaWtlIGR1cmluZyBzeXN0ZW0gc3VzcGVuZC4gVGhpcyBpcyBhbiBleGNlbGxlbnQgY2FuZGlkYXRlIGZvciBmdXp6aW5nLgoKTm93LCBsZXQgbWUgZ28gYmFjayBhbmQgZ2l2ZSBgY3B1X3N1c3BlbmRgIGluIGBhcmNoL2FybTY0L2tlcm5lbC9zdXNwZW5kLmNgIGEgY2xvc2UgbG9vay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxOToyNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjcHVfc3VzcGVuZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL2FybTY0L2tlcm5lbC9zdXNwZW5kLmMtMjMtLypcbmFyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuYzoyNDogKiBUaGlzIGlzIGFsbG9jYXRlZCBieSBjcHVfc3VzcGVuZF9pbml0KCksIGFuZCB1c2VkIHRvIHN0b3JlIGEgcG9pbnRlciB0b1xuYXJjaC9hcm02NC9rZXJuZWwvc3VzcGVuZC5jLTI1LSAqIHRoZSAmIzM5O3N0cnVjdCBzbGVlcF9zdGFja19kYXRhJiMzOTsgdGhlIGNvbnRhaW5zIGEgcGFydGljdWxhciBDUFVzIHN0YXRlLlxuLS1cbmFyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuYz0yNz11bnNpZ25lZCBsb25nICpzbGVlcF9zYXZlX3N0YXNoO1xuLS1cbmFyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuYy0yOS0vKlxuYXJjaC9hcm02NC9rZXJuZWwvc3VzcGVuZC5jOjMwOiAqIFRoaXMgaG9vayBpcyBwcm92aWRlZCBzbyB0aGF0IGNwdV9zdXNwZW5kIGNvZGUgY2FuIHJlc3RvcmUgSFdcbmFyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuYy0zMS0gKiBicmVha3BvaW50cyBhcyBlYXJseSBhcyBwb3NzaWJsZSBpbiB0aGUgcmVzdW1lIHBhdGgsIGJlZm9yZSByZWVuYWJsaW5nXG4tLVxuYXJjaC9hcm02NC9rZXJuZWwvc3VzcGVuZC5jPTM2PXN0YXRpYyBpbnQgKCpod19icmVha3BvaW50X3Jlc3RvcmUpKHVuc2lnbmVkIGludCk7XG5hcmNoL2FybTY0L2tlcm5lbC9zdXNwZW5kLmM6Mzc6dm9pZCBfX2luaXQgY3B1X3N1c3BlbmRfc2V0X2RiZ19yZXN0b3JlcihpbnQgKCpod19icF9yZXN0b3JlKSh1bnNpZ25lZCBpbnQpKVxuYXJjaC9hcm02NC9rZXJuZWwvc3VzcGVuZC5jLTM4LXtcbi0tXG5hcmNoL2FybTY0L2tlcm5lbC9zdXNwZW5kLmMtNDQtXG5hcmNoL2FybTY0L2tlcm5lbC9zdXNwZW5kLmM6NDU6dm9pZCBub3RyYWNlIF9fY3B1X3N1c3BlbmRfZXhpdCh2b2lkKVxuYXJjaC9hcm02NC9rZXJuZWwvc3VzcGVuZC5jLTQ2LXtcbi0tXG5hcmNoL2FybTY0L2tlcm5lbC9zdXNwZW5kLmMtNzItXHQgKiBiZWZvcmUgZGVidWcgZXhjZXB0aW9ucyBhcmUgcG9zc2libHkgcmVlbmFibGVkXG5hcmNoL2FybTY0L2tlcm5lbC9zdXNwZW5kLmM6NzM6XHQgKiBieSBjcHVfc3VzcGVuZCgpcyBsb2NhbF9kYWlmX3Jlc3RvcmUoKSBjYWxsLlxuYXJjaC9hcm02NC9rZXJuZWwvc3VzcGVuZC5jLTc0LVx0ICovXG4tLVxuYXJjaC9hcm02NC9rZXJuZWwvc3VzcGVuZC5jLTkxLS8qXG5hcmNoL2FybTY0L2tlcm5lbC9zdXNwZW5kLmM6OTI6ICogY3B1X3N1c3BlbmRcbmFyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuYy05My0gKlxuLS1cbmFyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuYy05Ny0gKi9cbmFyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuYzo5ODppbnQgY3B1X3N1c3BlbmQodW5zaWduZWQgbG9uZyBhcmcsIGludCAoKmZuKSh1bnNpZ25lZCBsb25nKSlcbmFyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuYy05OS17XG4tLVxuYXJjaC9hcm02NC9rZXJuZWwvc3VzcGVuZC5jLTEwOC1cdCAqIGJlZm9yZSBhbHRlcm5hdGl2ZXMgYXJlIHBhdGNoZWQsIGJ1dCBhcmUgb25seSByZXN0b3JlZCBieVxuYXJjaC9hcm02NC9rZXJuZWwvc3VzcGVuZC5jOjEwOTpcdCAqIF9fY3B1X3N1c3BlbmRfZXhpdCgpIGFmdGVyIGFsdGVybmF0aXZlcyBhcmUgcGF0Y2hlZC4gVG8gYXZvaWRcbmFyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuYy0xMTAtXHQgKiBhY2NpZGVudGFsbHkgbG9zaW5nIHRoZXNlIGJpdHMgd2UgbXVzdCBub3QgYXR0ZW1wdCB0byBzdXNwZW5kIHVudGlsXG4tLVxuYXJjaC9hcm02NC9rZXJuZWwvc3VzcGVuZC5jLTE0NC1cbmFyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuYzoxNDU6XHRpZiAoX19jcHVfc3VzcGVuZF9lbnRlcihcdTAwMjZzdGF0ZSkpIHtcbmFyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuYy0xNDYtXHRcdC8qIENhbGwgdGhlIHN1c3BlbmQgZmluaXNoZXIgKi9cbi0tXG5hcmNoL2FybTY0L2tlcm5lbC9zdXNwZW5kLmMtMTUwLVx0XHQgKiBOZXZlciBnZXRzIGhlcmUsIHVubGVzcyB0aGUgc3VzcGVuZCBmaW5pc2hlciBmYWlscy5cbmFyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuYzoxNTE6XHRcdCAqIFN1Y2Nlc3NmdWwgY3B1X3N1c3BlbmQoKSBzaG91bGQgcmV0dXJuIGZyb20gY3B1X3Jlc3VtZSgpLFxuYXJjaC9hcm02NC9rZXJuZWwvc3VzcGVuZC5jLTE1Mi1cdFx0ICogcmV0dXJuaW5nIHRocm91Z2ggdGhpcyBjb2RlIHBhdGggaXMgY29uc2lkZXJlZCBhbiBlcnJvclxuLS1cbmFyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuYy0xNjMtXHRcdFx0Y3RfY3B1aWRsZV9leGl0KCk7XG5hcmNoL2FybTY0L2tlcm5lbC9zdXNwZW5kLmM6MTY0Olx0XHRfX2NwdV9zdXNwZW5kX2V4aXQoKTtcbmFyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuYy0xNjUtXHR9XG4tLVxuYXJjaC9hcm02NC9rZXJuZWwvc3VzcGVuZC5jLTE4MC1cbmFyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuYzoxODE6c3RhdGljIGludCBfX2luaXQgY3B1X3N1c3BlbmRfaW5pdCh2b2lkKVxuYXJjaC9hcm02NC9rZXJuZWwvc3VzcGVuZC5jLTE4Mi17XG4tLVxuYXJjaC9hcm02NC9rZXJuZWwvc3VzcGVuZC5jLTE5MS19XG5hcmNoL2FybTY0L2tlcm5lbC9zdXNwZW5kLmM6MTkyOmVhcmx5X2luaXRjYWxsKGNwdV9zdXNwZW5kX2luaXQpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDE5OjI3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQxMjUKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAxMDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyB0aGUgYGNwdV9zdXNwZW5kYCBGdW5jdGlvbioqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIGBjcHVfc3VzcGVuZGAgd2l0aGluIHRoZSBBUk02NCBhcmNoaXRlY3R1cmUmIzM5O3Mgc3VzcGVuZCBjb2RlLiBJbnRlcmVzdGluZy4gVGhpcyBmdW5jdGlvbiBpcyBhIGtleSBwbGF5ZXIgaW4gYm90aCBDUFUgaWRsZSBhbmQgc3lzdGVtLXdpZGUgc3VzcGVuZCBvcGVyYXRpb25zIOKAkyBkZWZpbml0ZWx5IGEgdGFyZ2V0IHdvcnRoIGNvbnNpZGVyaW5nIGZvciBmdXp6aW5nLiBHaXZlbiBpdHMgY2VudHJhbCByb2xlIGFuZCBmdW5jdGlvbmFsIG5hdHVyZSwgZXZlbiBzdWJ0bGUgYnVncyBoZXJlIGNvdWxkIGhhdmUgYnJvYWQgY29uc2VxdWVuY2VzLgoKVGhlIG9ubHkgcmVhbCBjYXZlYXQgaXMgdGhhdCBpdCYjMzk7cyBhcmNoaXRlY3R1cmUtc3BlY2lmaWMuIEJ1dCB3YWl0LCB3ZSYjMzk7cmUgdGFsa2luZyBBUk02NCBoZXJlLCBhbmQgdGhhdCYjMzk7cyB3ZWxsIHN1cHBvcnRlZCBieSBlbXVsYXRvcnMgbGlrZSBRRU1VLCB3aGljaCBoYW5kbGVzIENQVSBpZGxlIGFuZCBzeXN0ZW0gc3VzcGVuZC4gVGhhdCBtZWFucyB3ZSBzaG91bGQgYmUgYWJsZSB0byB0cmlnZ2VyIHRoaXMgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gRXhjZWxsZW50LiBOb3csIGJlZm9yZSBJIGRpdmUgaW4gdG9vIGRlZXAsIGxldCBtZSB0YWtlIGEgcXVpY2sgbG9vayBhdCB3aG8mIzM5O3MgYWN0dWFsbHkgY2FsbGluZyBgY3B1X3N1c3BlbmRgIHRvIGdldCBhIGJldHRlciBoYW5kbGUgb24gdGhlIHBvdGVudGlhbCBhdHRhY2sgc3VyZmFjZS4gSXQmIzM5O3MgYWx3YXlzIGdvb2QgdG8gdW5kZXJzdGFuZCB0aGUgY2FsbCBncmFwaCBiZWZvcmUgbGF1bmNoaW5nIGFueSBmdXp6aW5nIGNhbXBhaWduLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDE5OjI3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NwdV9zdXNwZW5kJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9hcm02NC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9hcm02NC9ib290L2R0cy9hbWF6b24vYWxwaW5lLXYyLmR0c2k9Nzk9XHRwc2NpIHtcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2FtYXpvbi9hbHBpbmUtdjIuZHRzaS04MS1cdFx0bWV0aG9kID0gXCYjMzQ7c21jXCYjMzQ7O1xuYXJjaC9hcm02NC9ib290L2R0cy9hbWF6b24vYWxwaW5lLXYyLmR0c2k6ODI6XHRcdGNwdV9zdXNwZW5kID0gXHUwMDNjMHg4NDAwMDAwMVx1MDAzZTtcbmFyY2gvYXJtNjQvYm9vdC9kdHMvYW1hem9uL2FscGluZS12Mi5kdHNpLTgzLVx0XHRjcHVfb2ZmID0gXHUwMDNjMHg4NDAwMDAwMlx1MDAzZTtcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2V4eW5vcy9leHlub3M3ODcwLmR0c2k9MTI4PVx0cHNjaSB7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9leHlub3MvZXh5bm9zNzg3MC5kdHNpLTEzMC1cdFx0bWV0aG9kID0gXCYjMzQ7c21jXCYjMzQ7O1xuYXJjaC9hcm02NC9ib290L2R0cy9leHlub3MvZXh5bm9zNzg3MC5kdHNpOjEzMTpcdFx0Y3B1X3N1c3BlbmQgPSBcdTAwM2MweGM0MDAwMDAxXHUwMDNlO1xuYXJjaC9hcm02NC9ib290L2R0cy9leHlub3MvZXh5bm9zNzg3MC5kdHNpLTEzMi1cdFx0Y3B1X29mZiA9IFx1MDAzYzB4ODQwMDAwMDJcdTAwM2U7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9leHlub3MvZXh5bm9zNzg4NS5kdHNpPTE0Mz1cdHBzY2kge1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvZXh5bm9zL2V4eW5vczc4ODUuZHRzaS0xNDUtXHRcdG1ldGhvZCA9IFwmIzM0O3NtY1wmIzM0OztcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZXh5bm9zL2V4eW5vczc4ODUuZHRzaToxNDY6XHRcdGNwdV9zdXNwZW5kID0gXHUwMDNjMHhjNDAwMDAwMVx1MDAzZTtcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZXh5bm9zL2V4eW5vczc4ODUuZHRzaS0xNDctXHRcdGNwdV9vZmYgPSBcdTAwM2MweDg0MDAwMDAyXHUwMDNlO1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvZXh5bm9zL2V4eW5vczg4OTUuZHRzaT0xNTI9XHRwc2NpIHtcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2V4eW5vcy9leHlub3M4ODk1LmR0c2ktMTU2LVx0XHRjcHVfb24gPSBcdTAwM2MweGM0MDAwMDAzXHUwMDNlO1xuYXJjaC9hcm02NC9ib290L2R0cy9leHlub3MvZXh5bm9zODg5NS5kdHNpOjE1NzpcdFx0Y3B1X3N1c3BlbmQgPSBcdTAwM2MweGM0MDAwMDAxXHUwMDNlO1xuYXJjaC9hcm02NC9ib290L2R0cy9leHlub3MvZXh5bm9zODg5NS5kdHNpLTE1OC1cdH07XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9leHlub3MvZXh5bm9zOTgxMC5kdHNpPTE1Mz1cdHBzY2kge1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvZXh5bm9zL2V4eW5vczk4MTAuZHRzaS0xNTctXHRcdGNwdV9vbiA9IFx1MDAzYzB4YzQwMDAwMDNcdTAwM2U7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL2V4eW5vcy9leHlub3M5ODEwLmR0c2k6MTU4Olx0XHRjcHVfc3VzcGVuZCA9IFx1MDAzYzB4YzQwMDAwMDFcdTAwM2U7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL2V4eW5vcy9leHlub3M5ODEwLmR0c2ktMTU5LVx0fTtcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2V4eW5vcy9leHlub3NhdXRvdjkuZHRzaT0xMzg9XHRwc2NpIHtcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2V4eW5vcy9leHlub3NhdXRvdjkuZHRzaS0xNDAtXHRcdG1ldGhvZCA9IFwmIzM0O3NtY1wmIzM0OztcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZXh5bm9zL2V4eW5vc2F1dG92OS5kdHNpOjE0MTpcdFx0Y3B1X3N1c3BlbmQgPSBcdTAwM2MweGM0MDAwMDAxXHUwMDNlO1xuYXJjaC9hcm02NC9ib290L2R0cy9leHlub3MvZXh5bm9zYXV0b3Y5LmR0c2ktMTQyLVx0XHRjcHVfb2ZmID0gXHUwMDNjMHg4NDAwMDAwMlx1MDAzZTtcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2xnL2xnMTMxeC5kdHNpPTU1PVx0cHNjaSB7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9sZy9sZzEzMXguZHRzaS01Ny1cdFx0bWV0aG9kID0gXCYjMzQ7c21jXCYjMzQ7O1xuYXJjaC9hcm02NC9ib290L2R0cy9sZy9sZzEzMXguZHRzaTo1ODpcdFx0Y3B1X3N1c3BlbmQgPSBcdTAwM2MweDg0MDAwMDAxXHUwMDNlO1xuYXJjaC9hcm02NC9ib290L2R0cy9sZy9sZzEzMXguZHRzaS01OS1cdFx0Y3B1X29mZiA9IFx1MDAzYzB4ODQwMDAwMDJcdTAwM2U7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9tZWRpYXRlay9tdDgxNzMuZHRzaT0yMzk9XHRwc2NpIHtcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL21lZGlhdGVrL210ODE3My5kdHNpLTI0MS1cdFx0bWV0aG9kID0gXCYjMzQ7c21jXCYjMzQ7O1xuYXJjaC9hcm02NC9ib290L2R0cy9tZWRpYXRlay9tdDgxNzMuZHRzaToyNDI6XHRcdGNwdV9zdXNwZW5kID0gXHUwMDNjMHg4NDAwMDAwMVx1MDAzZTtcbmFyY2gvYXJtNjQvYm9vdC9kdHMvbWVkaWF0ZWsvbXQ4MTczLmR0c2ktMjQzLVx0XHRjcHVfb2ZmXHQgPSBcdTAwM2MweDg0MDAwMDAyXHUwMDNlO1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvc3ByZC9zYzk4MzYuZHRzaT0yMDg9XHRwc2NpIHtcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL3NwcmQvc2M5ODM2LmR0c2ktMjEyLVx0XHRjcHVfb2ZmID0gXHUwMDNjMHg4NDAwMDAwMlx1MDAzZTtcbmFyY2gvYXJtNjQvYm9vdC9kdHMvc3ByZC9zYzk4MzYuZHRzaToyMTM6XHRcdGNwdV9zdXNwZW5kID0gXHUwMDNjMHhjNDAwMDAwMVx1MDAzZTtcbmFyY2gvYXJtNjQvYm9vdC9kdHMvc3ByZC9zYzk4MzYuZHRzaS0yMTQtXHR9O1xuLS1cbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vaHdfYnJlYWtwb2ludC5oPTE0OD1zdGF0aWMgaW5saW5lIGludCBnZXRfbnVtX3dycHModm9pZClcbi0tXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2h3X2JyZWFrcG9pbnQuaC0xNTYtI2lmZGVmIENPTkZJR19DUFVfUE1cbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vaHdfYnJlYWtwb2ludC5oOjE1NzpleHRlcm4gdm9pZCBjcHVfc3VzcGVuZF9zZXRfZGJnX3Jlc3RvcmVyKGludCAoKmh3X2JwX3Jlc3RvcmUpKHVuc2lnbmVkIGludCkpO1xuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9od19icmVha3BvaW50LmgtMTU4LSNlbHNlXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2h3X2JyZWFrcG9pbnQuaDoxNTk6c3RhdGljIGlubGluZSB2b2lkIGNwdV9zdXNwZW5kX3NldF9kYmdfcmVzdG9yZXIoaW50ICgqaHdfYnBfcmVzdG9yZSkodW5zaWduZWQgaW50KSlcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vaHdfYnJlYWtwb2ludC5oLTE2MC17XG4tLVxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9rdm1faG9zdC5oPTgxMT1zdHJ1Y3Qga3ZtX2hvc3RfcHNjaV9jb25maWcge1xuLS1cbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20va3ZtX2hvc3QuaC04MTgtXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2t2bV9ob3N0Lmg6ODE5Olx0Ym9vbCBwc2NpXzBfMV9jcHVfc3VzcGVuZF9pbXBsZW1lbnRlZDtcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20va3ZtX2hvc3QuaC04MjAtXHRib29sIHBzY2lfMF8xX2NwdV9vbl9pbXBsZW1lbnRlZDtcbi0tXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL21tdV9jb250ZXh0Lmg9MTA0PXN0YXRpYyBpbmxpbmUgdm9pZCBjcHVfaW5zdGFsbF9pZG1hcCh2b2lkKVxuLS1cbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vbW11X2NvbnRleHQuaC0xMjMtICogV2UgY2hhbmdlIFQwU1ogYXMgcGFydCBvZiBpbnN0YWxsaW5nIHRoZSBpZG1hcC4gVGhpcyBpcyB1bmRvbmUgYnlcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vbW11X2NvbnRleHQuaDoxMjQ6ICogY3B1X3VuaW5zdGFsbF9pZG1hcCgpIGluIF9fY3B1X3N1c3BlbmRfZXhpdCgpLlxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9tbXVfY29udGV4dC5oLTEyNS0gKi9cbi0tXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3Byb2MtZm5zLmgtMTUtXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3Byb2MtZm5zLmg6MTY6c3RydWN0IGNwdV9zdXNwZW5kX2N0eDtcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vcHJvYy1mbnMuaC0xNy1cbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vcHJvYy1mbnMuaD0xOD1leHRlcm4gdm9pZCBjcHVfZG9faWRsZSh2b2lkKTtcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vcHJvYy1mbnMuaDoxOTpleHRlcm4gdm9pZCBjcHVfZG9fc3VzcGVuZChzdHJ1Y3QgY3B1X3N1c3BlbmRfY3R4ICpwdHIpO1xuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9wcm9jLWZucy5oLTIwLWV4dGVybiB1NjQgY3B1X2RvX3Jlc3VtZShwaHlzX2FkZHJfdCBwdHIsIHU2NCBpZG1hcF90dGJyKTtcbi0tXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3N1c3BlbmQuaC04LS8qXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3N1c3BlbmQuaDo5OiAqIHN0cnVjdCBjcHVfc3VzcGVuZF9jdHggbXVzdCBiZSAxNi1ieXRlIGFsaWduZWQgc2luY2UgaXQgaXMgYWxsb2NhdGVkIG9uXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3N1c3BlbmQuaC0xMC0gKiB0aGUgc3RhY2ssIHdoaWNoIG11c3QgYmUgMTYtYnl0ZSBhbGlnbmVkIG9uIHY4XG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3N1c3BlbmQuaC0xMS0gKi9cbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vc3VzcGVuZC5oOjEyOnN0cnVjdCBjcHVfc3VzcGVuZF9jdHgge1xuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9zdXNwZW5kLmgtMTMtXHQvKlxuLS1cbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vc3VzcGVuZC5oLTIyLSAqIE1lbW9yeSB0byBzYXZlIHRoZSBjcHUgc3RhdGUgaXMgYWxsb2NhdGVkIG9uIHRoZSBzdGFjayBieVxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9zdXNwZW5kLmg6MjM6ICogX19jcHVfc3VzcGVuZF9lbnRlcigpJiMzOTtzIGNhbGxlciwgYW5kIHBvcHVsYXRlZCBieSBfX2NwdV9zdXNwZW5kX2VudGVyKCkuXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3N1c3BlbmQuaC0yNC0gKiBUaGlzIGRhdGEgbXVzdCBzdXJ2aXZlIHVudGlsIGNwdV9yZXN1bWUoKSBpcyBjYWxsZWQuXG4tLVxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9zdXNwZW5kLmgtMjctICogVGhlIGxheW91dCBvZiB0aGUgY2FsbGVlX3NhdmVkX3JlZ3MgaXMgZGVmaW5lZCBieSB0aGUgaW1wbGVtZW50YXRpb25cbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vc3VzcGVuZC5oOjI4OiAqIG9mIF9fY3B1X3N1c3BlbmRfZW50ZXIoKSwgYW5kIGNwdV9yZXN1bWUoKS4gVGhpcyBzdHJ1Y3QgbXVzdCBiZSBwYXNzZWRcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vc3VzcGVuZC5oOjI5OiAqIGluIGJ5IHRoZSBjYWxsZXIgYXMgX19jcHVfc3VzcGVuZF9lbnRlcigpJiMzOTtzIHN0YWNrLWZyYW1lIGlzIGdvbmUgb25jZSBpdFxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9zdXNwZW5kLmgtMzAtICogcmV0dXJucywgYW5kIHRoZSBkYXRhIHdvdWxkIGJlIHN1YnNlcXVlbnRseSBjb3JydXB0ZWQgYnkgdGhlIGNhbGwgdG8gdGhlXG4tLVxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9zdXNwZW5kLmg9MzM9c3RydWN0IHNsZWVwX3N0YWNrX2RhdGEge1xuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9zdXNwZW5kLmg6MzQ6XHRzdHJ1Y3QgY3B1X3N1c3BlbmRfY3R4XHRzeXN0ZW1fcmVncztcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vc3VzcGVuZC5oLTM1LVx0dW5zaWduZWQgbG9uZ1x0XHRjYWxsZWVfc2F2ZWRfcmVnc1tOUl9DQUxMRUVfU0FWRURfUkVHU107XG4tLVxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9zdXNwZW5kLmg9Mzg9ZXh0ZXJuIHVuc2lnbmVkIGxvbmcgKnNsZWVwX3NhdmVfc3Rhc2g7XG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3N1c3BlbmQuaC0zOS1cbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vc3VzcGVuZC5oOjQwOmV4dGVybiBpbnQgY3B1X3N1c3BlbmQodW5zaWduZWQgbG9uZyBhcmcsIGludCAoKmZuKSh1bnNpZ25lZCBsb25nKSk7XG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3N1c3BlbmQuaC00MS1leHRlcm4gdm9pZCBjcHVfcmVzdW1lKHZvaWQpO1xuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9zdXNwZW5kLmg6NDI6aW50IF9fY3B1X3N1c3BlbmRfZW50ZXIoc3RydWN0IHNsZWVwX3N0YWNrX2RhdGEgKnN0YXRlKTtcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vc3VzcGVuZC5oOjQzOnZvaWQgX19jcHVfc3VzcGVuZF9leGl0KHZvaWQpO1xuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9zdXNwZW5kLmgtNDQtdm9pZCBfY3B1X3Jlc3VtZSh2b2lkKTtcbi0tXG5hcmNoL2FybTY0L2tlcm5lbC9hc20tb2Zmc2V0cy5jPTI3PWludCBtYWluKHZvaWQpXG4tLVxuYXJjaC9hcm02NC9rZXJuZWwvYXNtLW9mZnNldHMuYy0xMjktI2lmZGVmIENPTkZJR19DUFVfUE1cbmFyY2gvYXJtNjQva2VybmVsL2FzbS1vZmZzZXRzLmM6MTMwOiAgREVGSU5FKENQVV9DVFhfU1AsXHRcdG9mZnNldG9mKHN0cnVjdCBjcHVfc3VzcGVuZF9jdHgsIHNwKSk7XG5hcmNoL2FybTY0L2tlcm5lbC9hc20tb2Zmc2V0cy5jLTEzMS0gIERFRklORShNUElEUl9IQVNIX01BU0ssXHRvZmZzZXRvZihzdHJ1Y3QgbXBpZHJfaGFzaCwgbWFzaykpO1xuLS1cbmFyY2gvYXJtNjQva2VybmVsL2hpYmVybmF0ZS5jPTEwOD1pbnQgYXJjaF9oaWJlcm5hdGlvbl9oZWFkZXJfc2F2ZSh2b2lkICphZGRyLCB1bnNpZ25lZCBpbnQgbWF4X3NpemUpXG4tLVxuYXJjaC9hcm02NC9rZXJuZWwvaGliZXJuYXRlLmMtMTI0LVxuYXJjaC9hcm02NC9rZXJuZWwvaGliZXJuYXRlLmM6MTI1Olx0LyogU2F2ZSB0aGUgbXBpZHIgb2YgdGhlIGNwdSB3ZSBjYWxsZWQgY3B1X3N1c3BlbmQoKSBvbi4uLiAqL1xuYXJjaC9hcm02NC9rZXJuZWwvaGliZXJuYXRlLmMtMTI2LVx0aWYgKHNsZWVwX2NwdSBcdTAwM2MgMCkge1xuLS1cbmFyY2gvYXJtNjQva2VybmVsL2hpYmVybmF0ZS5jPTMzMz1pbnQgc3dzdXNwX2FyY2hfc3VzcGVuZCh2b2lkKVxuLS1cbmFyY2gvYXJtNjQva2VybmVsL2hpYmVybmF0ZS5jLTM0NS1cbmFyY2gvYXJtNjQva2VybmVsL2hpYmVybmF0ZS5jOjM0NjpcdGlmIChfX2NwdV9zdXNwZW5kX2VudGVyKFx1MDAyNnN0YXRlKSkge1xuYXJjaC9hcm02NC9rZXJuZWwvaGliZXJuYXRlLmMtMzQ3LVx0XHQvKiBtYWtlIHRoZSBjcmFzaCBkdW1wIGtlcm5lbCBpbWFnZSB2aXNpYmxlL3NhdmVhYmxlICovXG4tLVxuYXJjaC9hcm02NC9rZXJuZWwvaGliZXJuYXRlLmMtMzgzLVx0XHRzbGVlcF9jcHUgPSAtRUlOVkFMO1xuYXJjaC9hcm02NC9rZXJuZWwvaGliZXJuYXRlLmM6Mzg0Olx0XHRfX2NwdV9zdXNwZW5kX2V4aXQoKTtcbmFyY2gvYXJtNjQva2VybmVsL2hpYmVybmF0ZS5jLTM4NS1cbi0tXG5hcmNoL2FybTY0L2tlcm5lbC9od19icmVha3BvaW50LmM9OTgzPXN0YXRpYyBpbnQgX19pbml0IGFyY2hfaHdfYnJlYWtwb2ludF9pbml0KHZvaWQpXG4tLVxuYXJjaC9hcm02NC9rZXJuZWwvaHdfYnJlYWtwb2ludC5jLTEwMDItXG5hcmNoL2FybTY0L2tlcm5lbC9od19icmVha3BvaW50LmM6MTAwMzpcdC8qIFJlZ2lzdGVyIGNwdV9zdXNwZW5kIGh3IGJyZWFrcG9pbnQgcmVzdG9yZSBob29rICovXG5hcmNoL2FybTY0L2tlcm5lbC9od19icmVha3BvaW50LmM6MTAwNDpcdGNwdV9zdXNwZW5kX3NldF9kYmdfcmVzdG9yZXIoaHdfYnJlYWtwb2ludF9yZXNldCk7XG5hcmNoL2FybTY0L2tlcm5lbC9od19icmVha3BvaW50LmMtMTAwNS1cbi0tXG5hcmNoL2FybTY0L2tlcm5lbC9zbGVlcC5TLTU5LSAqIGZ1bmN0aW9uLiBTbyB0aGF0IHRoZSBjYWxsZXIgY2FuIHRlbGwgdGhlIHN1c3BlbmQvcmVzdW1lIHBhdGhzIGFwYXJ0LFxuYXJjaC9hcm02NC9rZXJuZWwvc2xlZXAuUzo2MDogKiBfX2NwdV9zdXNwZW5kX2VudGVyKCkgd2lsbCBhbHdheXMgcmV0dXJuIGEgbm9uLXplcm8gdmFsdWUsIHdoZXJlYXMgdGhlXG5hcmNoL2FybTY0L2tlcm5lbC9zbGVlcC5TLTYxLSAqIHBhdGggdGhyb3VnaCBjcHVfcmVzdW1lKCkgd2lsbCByZXR1cm4gMC5cbi0tXG5hcmNoL2FybTY0L2tlcm5lbC9zbGVlcC5TLTY0LSAqL1xuYXJjaC9hcm02NC9rZXJuZWwvc2xlZXAuUzo2NTpTWU1fRlVOQ19TVEFSVChfX2NwdV9zdXNwZW5kX2VudGVyKVxuYXJjaC9hcm02NC9rZXJuZWwvc2xlZXAuUy02Ni1cdHN0cFx0eDI5LCBsciwgW3gwLCAjU0xFRVBfU1RBQ0tfREFUQV9DQUxMRUVfUkVHU11cbi0tXG5hcmNoL2FybTY0L2tlcm5lbC9zbGVlcC5TLTcyLVxuYXJjaC9hcm02NC9rZXJuZWwvc2xlZXAuUzo3MzpcdC8qIHNhdmUgdGhlIHNwIGluIGNwdV9zdXNwZW5kX2N0eCAqL1xuYXJjaC9hcm02NC9rZXJuZWwvc2xlZXAuUy03NC1cdG1vdlx0eDIsIHNwXG4tLVxuYXJjaC9hcm02NC9rZXJuZWwvc2xlZXAuUy05Ny1cdHJldFxuYXJjaC9hcm02NC9rZXJuZWwvc2xlZXAuUzo5ODpTWU1fRlVOQ19FTkQoX19jcHVfc3VzcGVuZF9lbnRlcilcbmFyY2gvYXJtNjQva2VybmVsL3NsZWVwLlMtOTktXG4tLVxuYXJjaC9hcm02NC9rZXJuZWwvc3VzcGVuZC5jLTIzLS8qXG5hcmNoL2FybTY0L2tlcm5lbC9zdXNwZW5kLmM6MjQ6ICogVGhpcyBpcyBhbGxvY2F0ZWQgYnkgY3B1X3N1c3BlbmRfaW5pdCgpLCBhbmQgdXNlZCB0byBzdG9yZSBhIHBvaW50ZXIgdG9cbmFyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuYy0yNS0gKiB0aGUgJiMzOTtzdHJ1Y3Qgc2xlZXBfc3RhY2tfZGF0YSYjMzk7IHRoZSBjb250YWlucyBhIHBhcnRpY3VsYXIgQ1BVcyBzdGF0ZS5cbi0tXG5hcmNoL2FybTY0L2tlcm5lbC9zdXNwZW5kLmM9Mjc9dW5zaWduZWQgbG9uZyAqc2xlZXBfc2F2ZV9zdGFzaDtcbi0tXG5hcmNoL2FybTY0L2tlcm5lbC9zdXNwZW5kLmMtMjktLypcbmFyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuYzozMDogKiBUaGlzIGhvb2sgaXMgcHJvdmlkZWQgc28gdGhhdCBjcHVfc3VzcGVuZCBjb2RlIGNhbiByZXN0b3JlIEhXXG5hcmNoL2FybTY0L2tlcm5lbC9zdXNwZW5kLmMtMzEtICogYnJlYWtwb2ludHMgYXMgZWFybHkgYXMgcG9zc2libGUgaW4gdGhlIHJlc3VtZSBwYXRoLCBiZWZvcmUgcmVlbmFibGluZ1xuLS1cbmFyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuYz0zNj1zdGF0aWMgaW50ICgqaHdfYnJlYWtwb2ludF9yZXN0b3JlKSh1bnNpZ25lZCBpbnQpO1xuYXJjaC9hcm02NC9rZXJuZWwvc3VzcGVuZC5jOjM3OnZvaWQgX19pbml0IGNwdV9zdXNwZW5kX3NldF9kYmdfcmVzdG9yZXIoaW50ICgqaHdfYnBfcmVzdG9yZSkodW5zaWduZWQgaW50KSlcbmFyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuYy0zOC17XG4tLVxuYXJjaC9hcm02NC9rZXJuZWwvc3VzcGVuZC5jLTQ0LVxuYXJjaC9hcm02NC9rZXJuZWwvc3VzcGVuZC5jOjQ1OnZvaWQgbm90cmFjZSBfX2NwdV9zdXNwZW5kX2V4aXQodm9pZClcbmFyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuYy00Ni17XG4tLVxuYXJjaC9hcm02NC9rZXJuZWwvc3VzcGVuZC5jLTcyLVx0ICogYmVmb3JlIGRlYnVnIGV4Y2VwdGlvbnMgYXJlIHBvc3NpYmx5IHJlZW5hYmxlZFxuYXJjaC9hcm02NC9rZXJuZWwvc3VzcGVuZC5jOjczOlx0ICogYnkgY3B1X3N1c3BlbmQoKXMgbG9jYWxfZGFpZl9yZXN0b3JlKCkgY2FsbC5cbmFyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuYy03NC1cdCAqL1xuLS1cbmFyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuYy05MS0vKlxuYXJjaC9hcm02NC9rZXJuZWwvc3VzcGVuZC5jOjkyOiAqIGNwdV9zdXNwZW5kXG5hcmNoL2FybTY0L2tlcm5lbC9zdXNwZW5kLmMtOTMtICpcbi0tXG5hcmNoL2FybTY0L2tlcm5lbC9zdXNwZW5kLmMtOTctICovXG5hcmNoL2FybTY0L2tlcm5lbC9zdXNwZW5kLmM6OTg6aW50IGNwdV9zdXNwZW5kKHVuc2lnbmVkIGxvbmcgYXJnLCBpbnQgKCpmbikodW5zaWduZWQgbG9uZykpXG5hcmNoL2FybTY0L2tlcm5lbC9zdXNwZW5kLmMtOTkte1xuLS1cbmFyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuYy0xMDgtXHQgKiBiZWZvcmUgYWx0ZXJuYXRpdmVzIGFyZSBwYXRjaGVkLCBidXQgYXJlIG9ubHkgcmVzdG9yZWQgYnlcbmFyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuYzoxMDk6XHQgKiBfX2NwdV9zdXNwZW5kX2V4aXQoKSBhZnRlciBhbHRlcm5hdGl2ZXMgYXJlIHBhdGNoZWQuIFRvIGF2b2lkXG5hcmNoL2FybTY0L2tlcm5lbC9zdXNwZW5kLmMtMTEwLVx0ICogYWNjaWRlbnRhbGx5IGxvc2luZyB0aGVzZSBiaXRzIHdlIG11c3Qgbm90IGF0dGVtcHQgdG8gc3VzcGVuZCB1bnRpbFxuLS1cbmFyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuYy0xNDQtXG5hcmNoL2FybTY0L2tlcm5lbC9zdXNwZW5kLmM6MTQ1Olx0aWYgKF9fY3B1X3N1c3BlbmRfZW50ZXIoXHUwMDI2c3RhdGUpKSB7XG5hcmNoL2FybTY0L2tlcm5lbC9zdXNwZW5kLmMtMTQ2LVx0XHQvKiBDYWxsIHRoZSBzdXNwZW5kIGZpbmlzaGVyICovXG4tLVxuYXJjaC9hcm02NC9rZXJuZWwvc3VzcGVuZC5jLTE1MC1cdFx0ICogTmV2ZXIgZ2V0cyBoZXJlLCB1bmxlc3MgdGhlIHN1c3BlbmQgZmluaXNoZXIgZmFpbHMuXG5hcmNoL2FybTY0L2tlcm5lbC9zdXNwZW5kLmM6MTUxOlx0XHQgKiBTdWNjZXNzZnVsIGNwdV9zdXNwZW5kKCkgc2hvdWxkIHJldHVybiBmcm9tIGNwdV9yZXN1bWUoKSxcbmFyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuYy0xNTItXHRcdCAqIHJldHVybmluZyB0aHJvdWdoIHRoaXMgY29kZSBwYXRoIGlzIGNvbnNpZGVyZWQgYW4gZXJyb3Jcbi0tXG5hcmNoL2FybTY0L2tlcm5lbC9zdXNwZW5kLmMtMTYzLVx0XHRcdGN0X2NwdWlkbGVfZXhpdCgpO1xuYXJjaC9hcm02NC9rZXJuZWwvc3VzcGVuZC5jOjE2NDpcdFx0X19jcHVfc3VzcGVuZF9leGl0KCk7XG5hcmNoL2FybTY0L2tlcm5lbC9zdXNwZW5kLmMtMTY1LVx0fVxuLS1cbmFyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuYy0xODAtXG5hcmNoL2FybTY0L2tlcm5lbC9zdXNwZW5kLmM6MTgxOnN0YXRpYyBpbnQgX19pbml0IGNwdV9zdXNwZW5kX2luaXQodm9pZClcbmFyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuYy0xODIte1xuLS1cbmFyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuYy0xOTEtfVxuYXJjaC9hcm02NC9rZXJuZWwvc3VzcGVuZC5jOjE5MjplYXJseV9pbml0Y2FsbChjcHVfc3VzcGVuZF9pbml0KTtcbi0tXG5hcmNoL2FybTY0L2t2bS9hcm0uYz03Njk9Ym9vbCBrdm1fYXJtX3ZjcHVfc3RvcHBlZChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC9hcm02NC9rdm0vYXJtLmMtNzczLVxuYXJjaC9hcm02NC9rdm0vYXJtLmM6Nzc0OnN0YXRpYyB2b2lkIGt2bV9hcm1fdmNwdV9zdXNwZW5kKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbmFyY2gvYXJtNjQva3ZtL2FybS5jLTc3NS17XG4tLVxuYXJjaC9hcm02NC9rdm0vYXJtLmMtNzgwLVxuYXJjaC9hcm02NC9rdm0vYXJtLmM6NzgxOnN0YXRpYyBib29sIGt2bV9hcm1fdmNwdV9zdXNwZW5kZWQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuYXJjaC9hcm02NC9rdm0vYXJtLmMtNzgyLXtcbi0tXG5hcmNoL2FybTY0L2t2bS9hcm0uYz03OTQ9aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X21wc3RhdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuLS1cbmFyY2gvYXJtNjQva3ZtL2FybS5jLTgwOC1cdGNhc2UgS1ZNX01QX1NUQVRFX1NVU1BFTkRFRDpcbmFyY2gvYXJtNjQva3ZtL2FybS5jOjgwOTpcdFx0a3ZtX2FybV92Y3B1X3N1c3BlbmQodmNwdSk7XG5hcmNoL2FybTY0L2t2bS9hcm0uYy04MTAtXHRcdGJyZWFrO1xuLS1cbmFyY2gvYXJtNjQva3ZtL2FybS5jPTEwNDA9dm9pZCBrdm1fdmNwdV93Zmkoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gvYXJtNjQva3ZtL2FybS5jLTEwNjUtXG5hcmNoL2FybTY0L2t2bS9hcm0uYzoxMDY2OnN0YXRpYyBpbnQga3ZtX3ZjcHVfc3VzcGVuZChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG5hcmNoL2FybTY0L2t2bS9hcm0uYy0xMDY3LXtcbmFyY2gvYXJtNjQva3ZtL2FybS5jOjEwNjg6XHRpZiAoIWt2bV9hcm1fdmNwdV9zdXNwZW5kZWQodmNwdSkpXG5hcmNoL2FybTY0L2t2bS9hcm0uYy0xMDY5LVx0XHRyZXR1cm4gMTtcbi0tXG5hcmNoL2FybTY0L2t2bS9hcm0uYz0xMTA4PXN0YXRpYyBpbnQgY2hlY2tfdmNwdV9yZXF1ZXN0cyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC9hcm02NC9rdm0vYXJtLmMtMTE0Ny1cdFx0aWYgKGt2bV9jaGVja19yZXF1ZXN0KEtWTV9SRVFfU1VTUEVORCwgdmNwdSkpXG5hcmNoL2FybTY0L2t2bS9hcm0uYzoxMTQ4Olx0XHRcdHJldHVybiBrdm1fdmNwdV9zdXNwZW5kKHZjcHUpO1xuYXJjaC9hcm02NC9rdm0vYXJtLmMtMTE0OS1cbi0tXG5hcmNoL2FybTY0L2t2bS9hcm0uYz0yMzk5PXN0YXRpYyBib29sIF9faW5pdCBpbml0X3BzY2lfcmVsYXkodm9pZClcbi0tXG5hcmNoL2FybTY0L2t2bS9hcm0uYy0yNDE0LVx0XHRrdm1faG9zdF9wc2NpX2NvbmZpZy5mdW5jdGlvbl9pZHNfMF8xID0gZ2V0X3BzY2lfMF8xX2Z1bmN0aW9uX2lkcygpO1xuYXJjaC9hcm02NC9rdm0vYXJtLmM6MjQxNTpcdFx0aW5pdF9wc2NpXzBfMV9pbXBsX3N0YXRlKGt2bV9ob3N0X3BzY2lfY29uZmlnLCBjcHVfc3VzcGVuZCk7XG5hcmNoL2FybTY0L2t2bS9hcm0uYy0yNDE2LVx0XHRpbml0X3BzY2lfMF8xX2ltcGxfc3RhdGUoa3ZtX2hvc3RfcHNjaV9jb25maWcsIGNwdV9vbik7XG4tLVxuYXJjaC9hcm02NC9rdm0vaHlwL252aGUvcHNjaS1yZWxheS5jPTQ5PXN0YXRpYyBib29sIGlzX3BzY2lfMF8xX2NhbGwodTY0IGZ1bmNfaWQpXG5hcmNoL2FybTY0L2t2bS9oeXAvbnZoZS9wc2NpLXJlbGF5LmMtNTAte1xuYXJjaC9hcm02NC9rdm0vaHlwL252aGUvcHNjaS1yZWxheS5jOjUxOlx0cmV0dXJuIChpc19wc2NpXzBfMShjcHVfc3VzcGVuZCwgZnVuY19pZCkgfHxcbmFyY2gvYXJtNjQva3ZtL2h5cC9udmhlL3BzY2ktcmVsYXkuYy01Mi1cdFx0aXNfcHNjaV8wXzEoY3B1X29uLCBmdW5jX2lkKSB8fFxuLS1cbmFyY2gvYXJtNjQva3ZtL2h5cC9udmhlL3BzY2ktcmVsYXkuYz0xMDg9c3RhdGljIGludCBwc2NpX2NwdV9vbih1NjQgZnVuY19pZCwgc3RydWN0IGt2bV9jcHVfY29udGV4dCAqaG9zdF9jdHh0KVxuLS1cbmFyY2gvYXJtNjQva3ZtL2h5cC9udmhlL3BzY2ktcmVsYXkuYy0xNTEtXG5hcmNoL2FybTY0L2t2bS9oeXAvbnZoZS9wc2NpLXJlbGF5LmM6MTUyOnN0YXRpYyBpbnQgcHNjaV9jcHVfc3VzcGVuZCh1NjQgZnVuY19pZCwgc3RydWN0IGt2bV9jcHVfY29udGV4dCAqaG9zdF9jdHh0KVxuYXJjaC9hcm02NC9rdm0vaHlwL252aGUvcHNjaS1yZWxheS5jLTE1My17XG4tLVxuYXJjaC9hcm02NC9rdm0vaHlwL252aGUvcHNjaS1yZWxheS5jPTI0MD1zdGF0aWMgdW5zaWduZWQgbG9uZyBwc2NpXzBfMV9oYW5kbGVyKHU2NCBmdW5jX2lkLCBzdHJ1Y3Qga3ZtX2NwdV9jb250ZXh0ICpob3N0X2N0eHQpXG4tLVxuYXJjaC9hcm02NC9rdm0vaHlwL252aGUvcHNjaS1yZWxheS5jLTI0NS1cdFx0cmV0dXJuIHBzY2lfY3B1X29uKGZ1bmNfaWQsIGhvc3RfY3R4dCk7XG5hcmNoL2FybTY0L2t2bS9oeXAvbnZoZS9wc2NpLXJlbGF5LmM6MjQ2Olx0aWYgKGlzX3BzY2lfMF8xKGNwdV9zdXNwZW5kLCBmdW5jX2lkKSlcbmFyY2gvYXJtNjQva3ZtL2h5cC9udmhlL3BzY2ktcmVsYXkuYzoyNDc6XHRcdHJldHVybiBwc2NpX2NwdV9zdXNwZW5kKGZ1bmNfaWQsIGhvc3RfY3R4dCk7XG5hcmNoL2FybTY0L2t2bS9oeXAvbnZoZS9wc2NpLXJlbGF5LmMtMjQ4LVxuLS1cbmFyY2gvYXJtNjQva3ZtL2h5cC9udmhlL3BzY2ktcmVsYXkuYz0yNTI9c3RhdGljIHVuc2lnbmVkIGxvbmcgcHNjaV8wXzJfaGFuZGxlcih1NjQgZnVuY19pZCwgc3RydWN0IGt2bV9jcHVfY29udGV4dCAqaG9zdF9jdHh0KVxuLS1cbmFyY2gvYXJtNjQva3ZtL2h5cC9udmhlL3BzY2ktcmVsYXkuYy0yNjktXHRjYXNlIFBTQ0lfMF8yX0ZONjRfQ1BVX1NVU1BFTkQ6XG5hcmNoL2FybTY0L2t2bS9oeXAvbnZoZS9wc2NpLXJlbGF5LmM6MjcwOlx0XHRyZXR1cm4gcHNjaV9jcHVfc3VzcGVuZChmdW5jX2lkLCBob3N0X2N0eHQpO1xuYXJjaC9hcm02NC9rdm0vaHlwL252aGUvcHNjaS1yZWxheS5jLTI3MS1cdGNhc2UgUFNDSV8wXzJfRk42NF9DUFVfT046XG4tLVxuYXJjaC9hcm02NC9rdm0vcHNjaS5jPTI2PXN0YXRpYyB1bnNpZ25lZCBsb25nIHBzY2lfYWZmaW5pdHlfbWFzayh1bnNpZ25lZCBsb25nIGFmZmluaXR5X2xldmVsKVxuLS1cbmFyY2gvYXJtNjQva3ZtL3BzY2kuYy0zMy1cbmFyY2gvYXJtNjQva3ZtL3BzY2kuYzozNDpzdGF0aWMgdW5zaWduZWQgbG9uZyBrdm1fcHNjaV92Y3B1X3N1c3BlbmQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuYXJjaC9hcm02NC9rdm0vcHNjaS5jLTM1LXtcbi0tXG5hcmNoL2FybTY0L2t2bS9wc2NpLmM9MjQ2PXN0YXRpYyBpbnQga3ZtX3BzY2lfMF8yX2NhbGwoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gvYXJtNjQva3ZtL3BzY2kuYy0yNjEtXHRjYXNlIFBTQ0lfMF8yX0ZONjRfQ1BVX1NVU1BFTkQ6XG5hcmNoL2FybTY0L2t2bS9wc2NpLmM6MjYyOlx0XHR2YWwgPSBrdm1fcHNjaV92Y3B1X3N1c3BlbmQodmNwdSk7XG5hcmNoL2FybTY0L2t2bS9wc2NpLmMtMjYzLVx0XHRicmVhaztcbi0tXG5hcmNoL2FybTY0L21tL3Byb2MuUy04Ni0gKlxuYXJjaC9hcm02NC9tbS9wcm9jLlM6ODc6ICogVGhpcyBtdXN0IGJlIGtlcHQgaW4gc3luYyB3aXRoIHN0cnVjdCBjcHVfc3VzcGVuZF9jdHggaW4gXHUwMDNjYXNtL3N1c3BlbmQuaFx1MDAzZS5cbmFyY2gvYXJtNjQvbW0vcHJvYy5TLTg4LSAqL1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDE5OjI3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExMTQ2CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMzkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzOgoKKipDUFUgU3VzcGVuZCBGdW5jdGlvbiBJbnF1aXJ5KioKCk9rYXksIHNvIEkgc2VlIGBjcHVfc3VzcGVuZGAgaXMgZGVmaW5lZCBhbmQgZXhwb3J0ZWQsIHNwZWNpZmljYWxseSBpbiBgYXJjaC9hcm02NC9rZXJuZWwvc3VzcGVuZC5jYC4gU2VlbXMgc3RyYWlnaHRmb3J3YXJkIGVub3VnaC4gQnV0LCB3YWl0IGEgc2Vjb25kLCBJIG5lZWQgdG8gY29uZmlybSBzb21ldGhpbmcuIElzIHRoYXQgZXhwb3J0IGludGVuZGVkIGZvciB0aGUga2VybmVsIHByb3BlciAqb25seSosIG9yIGlzIGl0IGFsc28gdmlzaWJsZSBhbmQgdXNhYmxlIGJ5IG1vZHVsZXM/IFRoYXQmIzM5O3MgdGhlIGNyaXRpY2FsIHF1ZXN0aW9uIGhlcmUuIEkgbmVlZCB0byBrbm93IGlmIG1vZHVsZXMgY2FuIGhvb2sgaW50byB0aGlzIHN1c3BlbmQgZnVuY3Rpb24sIG9yIGlmIGl0JiMzOTtzIHN0cmljdGx5IGEgY29yZSBrZXJuZWwgY2FwYWJpbGl0eS4gTGV0JiMzOTtzIGRpZyBkZWVwZXIgYW5kIHZlcmlmeSB0aGUgZXhwb3J0IHZpc2liaWxpdHkuIFRoYXQmIzM5O3MgdGhlIG5leHQgc3RlcC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxOToyODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0VYUE9SVF9TWU1CT0wuKmNwdV9zdXNwZW5kJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9hcm02NC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDE5OjI4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExMzcyCgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogNzkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uCgoqKkludmVzdGlnYXRpbmcgdGhlIENhbGxlcnMgb2YgdGhpcyBGdW5jdGlvbioqCgpBbHJpZ2h0LCBzbyBpdCBzZWVtcyBJIHdhcyBtaXN0YWtlbiBhYm91dCB0aGUgZXhwb3J0IHN0YXR1cyBvZiB0aGlzIGZ1bmN0aW9uLiBJdCYjMzk7cyBub3QgZXhwb3J0ZWQuIFRoYXQgY2hhbmdlcyB0aGluZ3MgYSBiaXQuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoZXJlIGl0ICppcyogY2FsbGVkLiBGcm9tIHdoYXQgSSBjYW4gdGVsbCwgaXQmIzM5O3MgYmVpbmcgY2FsbGVkIGZyb20gYSBmZXcga2V5IHBsYWNlczogYGFyY2gvYXJtNjQva2VybmVsL2hpYmVybmF0ZS5jYCB3aXRoaW4gdGhlIGBzd3N1c3BfYXJjaF9zdXNwZW5kYCBmdW5jdGlvbiwgYW5kIGFsc28gZnJvbSBgYXJjaC9hcm02NC9rZXJuZWwvcHNjaS5jYCwgbGlrZWx5IHRyaWdnZXJlZCBkdXJpbmcgQ1BVIGlkbGUgb3IgdGhlIHN5c3RlbSBzdXNwZW5kIHByb2Nlc3MuIEhtbSwgdGhhdCBzdWdnZXN0cyBhIGNvcmUgcG93ZXIgbWFuYWdlbWVudCBvciBoaWJlcm5hdGlvbi1yZWxhdGVkIGZ1bmN0aW9uLiBPa2F5LCBpZiBpdCYjMzk7cyByZWxhdGVkIHRvIENQVSBpZGxlLCBJIHNob3VsZCBwcm9iYWJseSBjaGVjayBgYXJjaC9hcm02NC9rZXJuZWwvY3B1aWRsZS5jYCwgb3Igc29tZXRoaW5nIHNpbWlsYXIgdG8gaXQuIFRoYXQmIzM5O3MgbGlrZWx5IHdoZXJlIHRoZSBjb25uZWN0aW9uIHdpbGwgYmUuIFRpbWUgdG8gZGlnIGludG8gdGhvc2UgZmlsZXMgYW5kIHNlZSB3aGF0IEkgY2FuIGZpbmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDE5OjI4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NwdV9zdXNwZW5kJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9jcHVpZGxlLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2NwdWlkbGUvY3B1aWRsZS1iaWdfbGl0dGxlLmM9MTAyPXN0YXRpYyBpbnQgbm90cmFjZSBibF9wb3dlcmRvd25fZmluaXNoZXIodW5zaWduZWQgbG9uZyBhcmcpXG4tLVxuZHJpdmVycy9jcHVpZGxlL2NwdWlkbGUtYmlnX2xpdHRsZS5jLTEwOS1cdG1jcG1fc2V0X2VudHJ5X3ZlY3RvcihjcHUsIGNsdXN0ZXIsIGNwdV9yZXN1bWUpO1xuZHJpdmVycy9jcHVpZGxlL2NwdWlkbGUtYmlnX2xpdHRsZS5jOjExMDpcdG1jcG1fY3B1X3N1c3BlbmQoKTtcbmRyaXZlcnMvY3B1aWRsZS9jcHVpZGxlLWJpZ19saXR0bGUuYy0xMTEtXG4tLVxuZHJpdmVycy9jcHVpZGxlL2NwdWlkbGUtYmlnX2xpdHRsZS5jPTEyNT1zdGF0aWMgX19jcHVpZGxlIGludCBibF9lbnRlcl9wb3dlcmRvd24oc3RydWN0IGNwdWlkbGVfZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9jcHVpZGxlL2NwdWlkbGUtYmlnX2xpdHRsZS5jLTEzMC1cbmRyaXZlcnMvY3B1aWRsZS9jcHVpZGxlLWJpZ19saXR0bGUuYzoxMzE6XHRjcHVfc3VzcGVuZCgwLCBibF9wb3dlcmRvd25fZmluaXNoZXIpO1xuZHJpdmVycy9jcHVpZGxlL2NwdWlkbGUtYmlnX2xpdHRsZS5jLTEzMi1cbi0tXG5kcml2ZXJzL2NwdWlkbGUvY3B1aWRsZS1jYWx4ZWRhLmM9Mjk9c3RhdGljIGludCBjYWx4ZWRhX2lkbGVfZmluaXNoKHVuc2lnbmVkIGxvbmcgdmFsKVxuZHJpdmVycy9jcHVpZGxlL2NwdWlkbGUtY2FseGVkYS5jLTMwLXtcbmRyaXZlcnMvY3B1aWRsZS9jcHVpZGxlLWNhbHhlZGEuYzozMTpcdHJldHVybiBwc2NpX29wcy5jcHVfc3VzcGVuZChDQUxYRURBX0lETEVfUEFSQU0sIF9fcGEoY3B1X3Jlc3VtZSkpO1xuZHJpdmVycy9jcHVpZGxlL2NwdWlkbGUtY2FseGVkYS5jLTMyLX1cbi0tXG5kcml2ZXJzL2NwdWlkbGUvY3B1aWRsZS1jYWx4ZWRhLmM9MzQ9c3RhdGljIGludCBjYWx4ZWRhX3B3cmRvd25faWRsZShzdHJ1Y3QgY3B1aWRsZV9kZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL2NwdWlkbGUvY3B1aWRsZS1jYWx4ZWRhLmMtMzgtXHRjcHVfcG1fZW50ZXIoKTtcbmRyaXZlcnMvY3B1aWRsZS9jcHVpZGxlLWNhbHhlZGEuYzozOTpcdGNwdV9zdXNwZW5kKDAsIGNhbHhlZGFfaWRsZV9maW5pc2gpO1xuZHJpdmVycy9jcHVpZGxlL2NwdWlkbGUtY2FseGVkYS5jLTQwLVx0Y3B1X3BtX2V4aXQoKTtcbi0tXG5kcml2ZXJzL2NwdWlkbGUvY3B1aWRsZS1tdmVidS12Ny5jLTI1LVxuZHJpdmVycy9jcHVpZGxlL2NwdWlkbGUtbXZlYnUtdjcuYzoyNjpzdGF0aWMgaW50ICgqbXZlYnVfdjdfY3B1X3N1c3BlbmQpKGludCk7XG5kcml2ZXJzL2NwdWlkbGUvY3B1aWRsZS1tdmVidS12Ny5jLTI3LVxuZHJpdmVycy9jcHVpZGxlL2NwdWlkbGUtbXZlYnUtdjcuYz0yOD1zdGF0aWMgX19jcHVpZGxlIGludCBtdmVidV92N19lbnRlcl9pZGxlKHN0cnVjdCBjcHVpZGxlX2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvY3B1aWRsZS9jcHVpZGxlLW12ZWJ1LXY3LmMtMzktXHRjdF9jcHVpZGxlX2VudGVyKCk7XG5kcml2ZXJzL2NwdWlkbGUvY3B1aWRsZS1tdmVidS12Ny5jOjQwOlx0cmV0ID0gbXZlYnVfdjdfY3B1X3N1c3BlbmQoZGVlcGlkbGUpO1xuZHJpdmVycy9jcHVpZGxlL2NwdWlkbGUtbXZlYnUtdjcuYy00MS1cdGN0X2NwdWlkbGVfZXhpdCgpO1xuLS1cbmRyaXZlcnMvY3B1aWRsZS9jcHVpZGxlLW12ZWJ1LXY3LmM9MTA1PXN0YXRpYyBpbnQgbXZlYnVfdjdfY3B1aWRsZV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvY3B1aWRsZS9jcHVpZGxlLW12ZWJ1LXY3LmMtMTExLVxuZHJpdmVycy9jcHVpZGxlL2NwdWlkbGUtbXZlYnUtdjcuYzoxMTI6XHRtdmVidV92N19jcHVfc3VzcGVuZCA9IHBkZXYtXHUwMDNlZGV2LnBsYXRmb3JtX2RhdGE7XG5kcml2ZXJzL2NwdWlkbGUvY3B1aWRsZS1tdmVidS12Ny5jLTExMy1cbi0tXG5kcml2ZXJzL2NwdWlkbGUvY3B1aWRsZS1wc2NpLmM9NjQ9c3RhdGljIF9fY3B1aWRsZSBpbnQgX19wc2NpX2VudGVyX2RvbWFpbl9pZGxlX3N0YXRlKHN0cnVjdCBjcHVpZGxlX2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvY3B1aWRsZS9jcHVpZGxlLXBzY2kuYy04OS1cdHRyYWNlX3BzY2lfZG9tYWluX2lkbGVfZW50ZXIoZGV2LVx1MDAzZWNwdSwgc3RhdGUsIHMyaWRsZSk7XG5kcml2ZXJzL2NwdWlkbGUvY3B1aWRsZS1wc2NpLmM6OTA6XHRyZXQgPSBwc2NpX2NwdV9zdXNwZW5kX2VudGVyKHN0YXRlKSA/IC0xIDogaWR4O1xuZHJpdmVycy9jcHVpZGxlL2NwdWlkbGUtcHNjaS5jLTkxLVx0dHJhY2VfcHNjaV9kb21haW5faWRsZV9leGl0KGRldi1cdTAwM2VjcHUsIHN0YXRlLCBzMmlkbGUpO1xuLS1cbmRyaXZlcnMvY3B1aWRsZS9jcHVpZGxlLXBzY2kuYz0yMTg9c3RhdGljIF9fY3B1aWRsZSBpbnQgcHNjaV9lbnRlcl9pZGxlX3N0YXRlKHN0cnVjdCBjcHVpZGxlX2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvY3B1aWRsZS9jcHVpZGxlLXBzY2kuYy0yMjItXG5kcml2ZXJzL2NwdWlkbGUvY3B1aWRsZS1wc2NpLmM6MjIzOlx0cmV0dXJuIENQVV9QTV9DUFVfSURMRV9FTlRFUl9QQVJBTV9SQ1UocHNjaV9jcHVfc3VzcGVuZF9lbnRlciwgaWR4LCBzdGF0ZVtpZHhdKTtcbmRyaXZlcnMvY3B1aWRsZS9jcHVpZGxlLXBzY2kuYy0yMjQtfVxuLS1cbmRyaXZlcnMvY3B1aWRsZS9jcHVpZGxlLXBzY2kuYz0zMTg9c3RhdGljIGludCBwc2NpX2NwdV9pbml0X2lkbGUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgY3B1aWRsZV9kcml2ZXIgKmRydixcbi0tXG5kcml2ZXJzL2NwdWlkbGUvY3B1aWRsZS1wc2NpLmMtMzI0LVx0LypcbmRyaXZlcnMvY3B1aWRsZS9jcHVpZGxlLXBzY2kuYzozMjU6XHQgKiBJZiB0aGUgUFNDSSBjcHVfc3VzcGVuZCBmdW5jdGlvbiBob29rIGhhcyBub3QgYmVlbiBpbml0aWFsaXplZFxuZHJpdmVycy9jcHVpZGxlL2NwdWlkbGUtcHNjaS5jLTMyNi1cdCAqIGlkbGUgc3RhdGVzIG11c3Qgbm90IGJlIGVuYWJsZWQsIHNvIGJhaWwgb3V0XG5kcml2ZXJzL2NwdWlkbGUvY3B1aWRsZS1wc2NpLmMtMzI3LVx0ICovXG5kcml2ZXJzL2NwdWlkbGUvY3B1aWRsZS1wc2NpLmM6MzI4Olx0aWYgKCFwc2NpX29wcy5jcHVfc3VzcGVuZClcbmRyaXZlcnMvY3B1aWRsZS9jcHVpZGxlLXBzY2kuYy0zMjktXHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbi0tXG5kcml2ZXJzL2NwdWlkbGUvY3B1aWRsZS1xY29tLXNwbS5jPTQzPXN0YXRpYyBpbnQgcWNvbV9jcHVfc3BjKHN0cnVjdCBzcG1fZHJpdmVyX2RhdGEgKmRydilcbi0tXG5kcml2ZXJzL2NwdWlkbGUvY3B1aWRsZS1xY29tLXNwbS5jLTQ3LVx0c3BtX3NldF9sb3dfcG93ZXJfbW9kZShkcnYsIFBNX1NMRUVQX01PREVfU1BDKTtcbmRyaXZlcnMvY3B1aWRsZS9jcHVpZGxlLXFjb20tc3BtLmM6NDg6XHRyZXQgPSBjcHVfc3VzcGVuZCgwLCBxY29tX3BtX2NvbGxhcHNlKTtcbmRyaXZlcnMvY3B1aWRsZS9jcHVpZGxlLXFjb20tc3BtLmMtNDktXHQvKlxuLS1cbmRyaXZlcnMvY3B1aWRsZS9jcHVpZGxlLXRlZ3JhLmM9MTEyPXN0YXRpYyBpbnQgdGVncmFfY3B1aWRsZV9jYzZfZW50ZXIodW5zaWduZWQgaW50IGNwdSlcbi0tXG5kcml2ZXJzL2NwdWlkbGUvY3B1aWRsZS10ZWdyYS5jLTExNi1cdGlmIChjcHUgXHUwMDNlIDApIHtcbmRyaXZlcnMvY3B1aWRsZS9jcHVpZGxlLXRlZ3JhLmM6MTE3Olx0XHRyZXQgPSBjcHVfc3VzcGVuZChjcHUsIHRlZ3JhX3BtX3Bhcmtfc2Vjb25kYXJ5X2NwdSk7XG5kcml2ZXJzL2NwdWlkbGUvY3B1aWRsZS10ZWdyYS5jLTExOC1cdH0gZWxzZSB7XG4tLVxuZHJpdmVycy9jcHVpZGxlL2NwdWlkbGUtdGVncmEuYz0xMjk9c3RhdGljIGludCB0ZWdyYV9jcHVpZGxlX2M3X2VudGVyKHZvaWQpXG4tLVxuZHJpdmVycy9jcHVpZGxlL2NwdWlkbGUtdGVncmEuYy0xMzYtXG5kcml2ZXJzL2NwdWlkbGUvY3B1aWRsZS10ZWdyYS5jOjEzNzpcdHJldHVybiBjcHVfc3VzcGVuZCgwLCB0ZWdyYTMwX3BtX3NlY29uZGFyeV9jcHVfc3VzcGVuZCk7XG5kcml2ZXJzL2NwdWlkbGUvY3B1aWRsZS10ZWdyYS5jLTEzOC19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDE5OjI4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzNTUyCgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMzQyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgdGhlIENQVSBTdXNwZW5kIFBhdGgqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCB0d2Vha3MgYGNwdV9zdXNwZW5kYC4gSXQmIzM5O3MgdXNlZCBmb3IgYm90aCBDUFUgaWRsaW5nIGFuZCBmdWxsIHN5c3RlbSBzdXNwZW5kLCB3aGljaCBtYWtlcyBpdCBpbnRlcmVzdGluZy4gVGhlIG1vZGlmaWNhdGlvbiBpcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkIOKAkyBpdCBjb25kaXRpb25hbGx5IGNhbGxzIHRob3NlIGBjdF9jcHVpZGxlX2VudGVyKClgIGFuZCBgY3RfY3B1aWRsZV9leGl0KClgIGZ1bmN0aW9ucyAqb25seSogd2hlbiB0aGUgY3VycmVudCB0YXNrIGlzIGFjdHVhbGx5IHRoZSBpZGxlIHRhc2suIFRoZSByZWFzb24gaXMgcHJldHR5IGNsZWFyOiB3ZSBkb24mIzM5O3Qgd2FudCB0byBtZXNzIHdpdGggUkNVIGlkbGUgaGFuZGxpbmcgd2hlbiB3ZSYjMzk7cmUgc3VzcGVuZGluZyB0aGUgc3lzdGVtLCBiZWNhdXNlIGR1cmluZyBzdXNwZW5kIGBjdXJyZW50YCB3b24mIzM5O3QgYmUgdGhlIGlkbGUgdGFzay4KCklzIHRoaXMgc29tZXRoaW5nIHRoYXQgd2FycmFudHMgZnV6emluZyBhdHRlbnRpb24/IEFic29sdXRlbHksIHRoaXMgaXMgY29yZSBrZXJuZWwgY29kZSwgc28gYW55IHBvdGVudGlhbCBidWcgY291bGQgaGF2ZSBzaWduaWZpY2FudCBpbXBhY3QuIEFuZCB0aGVuIEkgdGhvdWdodCBhYm91dCBpdCwgYW5kIHJlYWxpemVkIHRoYXQgU3l6a2FsbGVyICpjYW4qIHRyaWdnZXIgc3lzdGVtIHN1c3BlbmQgdXNpbmcgYC9zeXMvcG93ZXIvc3RhdGVgISBQbHVzLCBDUFUgaWRsZSBpcyBhIGNvbnN0YW50bHktdHJpZ2dlcmVkIHBhdGguIFNvIHllcywgdGhpcyBpcyAqZGVmaW5pdGVseSogcmVhY2hhYmxlIGFuZCBmdXp6YWJsZS4KCk5vdywgbGV0JiMzOTtzIG5haWwgZG93biBleGFjdGx5ICp3aGVyZSogdG8gZm9jdXMuIFRoZSBtb2RpZmllZCBmdW5jdGlvbiBpcyBgY3B1X3N1c3BlbmRgLCBzbyB0aGF0JiMzOTtzIHRoZSBvYnZpb3VzIHRhcmdldC4gTGV0JiMzOTtzIG1ha2Ugc3VyZSB0aGF0JiMzOTtzIGEgZ29vZCBzeW1ib2wgdG8gZm9jdXMgb24uIExvb2tzIGxpa2UgaXQmIzM5O3MgbG9jYXRlZCBpbiBgYXJjaC9hcm02NC9rZXJuZWwvc3VzcGVuZC5jYC4gT2theSwgdGhhdCYjMzk7cyBub3Qgc3RhdGljIGFuZCBub3QgaW5saW5lZCwgd2hpY2ggbWFrZXMgaXQgYSBncmVhdCBlbnRyeSBwb2ludC4gSnVzdCBuZWVkIHRvIG1ha2Ugc3VyZSB0aGVyZSBhcmVuJiMzOTt0IG90aGVyIHJlbGF0ZWQgZXhwb3J0ZWQgZnVuY3Rpb25zIGluIHRoYXQgbW9kdWxlLCBidXQgaXQgbG9va3MgbGlrZSBgY3B1X3N1c3BlbmRgIGlzIHRoZSBvbmUuCgpPbmUgbGFzdCB0aGluZywgYXJlIHRoZXJlIGFueSBzcGVjaWZpYyBDT05GSUcgb3B0aW9ucyB0aGF0IG1pZ2h0IGJlIHJlbGV2YW50PyBMb29rcyBsaWtlIGBhcmNoL2FybTY0L2tlcm5lbC9zdXNwZW5kLmNgIGdldHMgY29tcGlsZWQgd2hlbiBgQ09ORklHX0FSTTY0YCBpcyBzZXQsIGFuZCBsZXQmIzM5O3MgcXVpY2tseSBjaGVjayB0aGUgYE1ha2VmaWxlYCB0byBtYWtlIHN1cmUuIFRoYXQgc2hvdWxkIGJlIGdvb2QgdG8gZ28uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDE5OjI4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N1c3BlbmQubyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvYXJtNjQva2VybmVsL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvYXJtNjQva2VybmVsL01ha2VmaWxlPTQ5PW9iai0kKENPTkZJR19IQVZFX1NUQVRJQ19DQUxMKVx0XHQmIzQzOz0gc3RhdGljX2NhbGwub1xuYXJjaC9hcm02NC9rZXJuZWwvTWFrZWZpbGU6NTA6b2JqLSQoQ09ORklHX0NQVV9QTSlcdFx0XHQmIzQzOz0gc2xlZXAubyBzdXNwZW5kLm9cbmFyY2gvYXJtNjQva2VybmVsL01ha2VmaWxlLTUxLW9iai0kKENPTkZJR19LR0RCKVx0XHRcdCYjNDM7PSBrZ2RiLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMTk6Mjg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQ0MjgKCQkJCQkJCW91dHB1dDogMjQKCQkJCQkJCXRob3VnaHRzOiAyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqSW52ZXN0aWdhdGluZyB0aGUgRGVwZW5kZW5jeSBvZiBDT05GSUdfQ1BVX1BNKioKCkFscmlnaHQsIHNvIHdlJiMzOTt2ZSBnb3QgYSByZXF1aXJlbWVudCDigJMgYENPTkZJR19DUFVfUE1gIGlzIGFic29sdXRlbHkgbmVjZXNzYXJ5IGZvciBzb21ldGhpbmcgaW4gdGhlIHByb2plY3QuIE15IGltbWVkaWF0ZSB0aG91Z2h0IHByb2Nlc3MgaXMgdG8gdW5kZXJzdGFuZCAqd2h5KiBpdCYjMzk7cyBuZWVkZWQsIHdoaWNoIG5hdHVyYWxseSBsZWFkcyB0byBmaWd1cmluZyBvdXQgd2hhdCYjMzk7cyBlbmFibGluZyBpdCB1cHN0cmVhbS4gVGltZSB0byB0cmFjZSB0aGUgZGVwZW5kZW5jeSBjaGFpbi4gSSBuZWVkIHRvIHF1aWNrbHkgaWRlbnRpZnkgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBvciBzeXN0ZW0gZWxlbWVudHMgdGhhdCB1bHRpbWF0ZWx5IHRyaWdnZXIgYENPTkZJR19DUFVfUE1gLiBJJiMzOTtsbCBwcm9iYWJseSBzdGFydCB3aXRoIGEgZ3JlcCB0aHJvdWdoIHRoZSBLY29uZmlnIGZpbGVzLCBidXQgSSYjMzk7bGwgbmVlZCB0byBrZWVwIGFuIG9wZW4gbWluZCBmb3IgbW9yZSBvYnNjdXJlIGRlcGVuZGVuY2llcyB0aGF0IG1pZ2h0IGJlIGxlc3Mgb2J2aW91cy4gQSBkZWVwZXIgZGl2ZSBpbnRvIHRoZSByZWxldmFudCBzb3VyY2UgY29kZSBtaWdodCBhbHNvIGJlIG5lZWRlZCB0byBzZWUgaWYgaXQmIzM5O3MgYmVpbmcgZW5hYmxlZCBpbmRpcmVjdGx5IHRocm91Z2ggc29tZSBjb21wbGV4IGxvZ2ljLiBMZXQmIzM5O3MgZGlnIGluIGFuZCBzZWUgd2hlcmUgdGhpcyByYWJiaXQgaG9sZSBsZWFkcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMTk6Mjg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIENQVV9QTSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL2Nza3kvS2NvbmZpZz0yMzI9Y2hvaWNlXG4tLVxuYXJjaC9jc2t5L0tjb25maWctMjM3LVxuYXJjaC9jc2t5L0tjb25maWc6MjM4OmNvbmZpZyBDUFVfUE1VX05PTkVcbmFyY2gvY3NreS9LY29uZmlnLTIzOS1cdGJvb2wgXCYjMzQ7Tm9uZVwmIzM0O1xuLS1cbmFyY2gvY3NreS9LY29uZmlnPTI0Nj1jaG9pY2Vcbi0tXG5hcmNoL2Nza3kvS2NvbmZpZy0yNDktXG5hcmNoL2Nza3kvS2NvbmZpZzoyNTA6Y29uZmlnIENQVV9QTV9OT05FXG5hcmNoL2Nza3kvS2NvbmZpZy0yNTEtXHRib29sIFwmIzM0O05vbmVcJiMzNDtcbmFyY2gvY3NreS9LY29uZmlnLTI1Mi1cbmFyY2gvY3NreS9LY29uZmlnOjI1Mzpjb25maWcgQ1BVX1BNX1dBSVRcbmFyY2gvY3NreS9LY29uZmlnLTI1NC1cdGJvb2wgXCYjMzQ7d2FpdFwmIzM0O1xuYXJjaC9jc2t5L0tjb25maWctMjU1LVxuYXJjaC9jc2t5L0tjb25maWc6MjU2OmNvbmZpZyBDUFVfUE1fRE9aRVxuYXJjaC9jc2t5L0tjb25maWctMjU3LVx0Ym9vbCBcJiMzNDtkb3plXCYjMzQ7XG5hcmNoL2Nza3kvS2NvbmZpZy0yNTgtXG5hcmNoL2Nza3kvS2NvbmZpZzoyNTk6Y29uZmlnIENQVV9QTV9TVE9QXG5hcmNoL2Nza3kvS2NvbmZpZy0yNjAtXHRib29sIFwmIzM0O3N0b3BcJiMzNDtcbi0tXG5rZXJuZWwvcG93ZXIvS2NvbmZpZz0zODY9Y29uZmlnIFBNX0dFTkVSSUNfRE9NQUlOU19PRlxuLS1cbmtlcm5lbC9wb3dlci9LY29uZmlnLTM4OS1cbmtlcm5lbC9wb3dlci9LY29uZmlnOjM5MDpjb25maWcgQ1BVX1BNXG5rZXJuZWwvcG93ZXIvS2NvbmZpZy0zOTEtXHRib29sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDE5OjI4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE1MDMyCgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogMjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGZyb20gYW4gZXhwZXJ0JiMzOTtzIHBlcnNwZWN0aXZlOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBgQ09ORklHX0NQVV9QTWAgS2VybmVsIENvbmZpZ3VyYXRpb24gT3B0aW9uKioKCkFscmlnaHQsIHNvIGBDT05GSUdfQ1BVX1BNYC4gIFRoYXQmIzM5O3MgYSBib29sZWFuIG9wdGlvbiwgbG9jYXRlZCByaWdodCB0aGVyZSBpbiBga2VybmVsL3Bvd2VyL0tjb25maWdgLiAgTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCAmIzM0O09rYXksIHBvd2VyIG1hbmFnZW1lbnQgYXQgdGhlIENQVSBsZXZlbCwgaW50ZXJlc3RpbmcuICBMZXQmIzM5O3Mgc2VlIHdoYXQgb3RoZXIgY29uZmlndXJhdGlvbnMgZGVwZW5kIG9uIHRoaXMgb25lLiYjMzQ7IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMgYW5kIGltcGxpY2F0aW9ucyBoZXJlLiBNeSBuZXh0IG1vdmUgaXMgY2xlYXI6IEkgbmVlZCB0byBxdWlja2x5IGZpZ3VyZSBvdXQgd2hpY2ggb3RoZXIgY29uZmlndXJhdGlvbnMgKnNlbGVjdCogdGhpcy4gVGhhdCB3aWxsIHRlbGwgbWUgd2hlcmUgdGhpcyBzZXR0aW5nIGlzIHBpdm90YWwgYW5kIHdoYXQgb3RoZXIgZmVhdHVyZXMgYXJlIHRpZWQgdG8gaXQuIFRoaXMgaW5mb3JtYXRpb24gaXMga2V5IHRvIHVuZGVyc3RhbmRpbmcgaXRzIG92ZXJhbGwgcm9sZSBhbmQgaW1wYWN0IG9uIHRoZSBrZXJuZWwmIzM5O3MgYmVoYXZpb3VyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxOToyODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzZWxlY3QgQ1BVX1BNJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvYXJtL0tjb25maWc9Mj1jb25maWcgQVJNXG4tLVxuYXJjaC9hcm0vS2NvbmZpZy01OC1cdHNlbGVjdCBDTE9ORV9CQUNLV0FSRFNcbmFyY2gvYXJtL0tjb25maWc6NTk6XHRzZWxlY3QgQ1BVX1BNIGlmIFNVU1BFTkQgfHwgQ1BVX0lETEVcbmFyY2gvYXJtL0tjb25maWctNjAtXHRzZWxlY3QgRENBQ0hFX1dPUkRfQUNDRVNTIGlmIEhBVkVfRUZGSUNJRU5UX1VOQUxJR05FRF9BQ0NFU1Ncbi0tXG5hcmNoL2FybS9LY29uZmlnPTk5Nj1jb25maWcgQkxfU1dJVENIRVJcbi0tXG5hcmNoL2FybS9LY29uZmlnLTk5OC1cdGRlcGVuZHMgb24gQklHX0xJVFRMRSBcdTAwMjZcdTAwMjYgTUNQTSBcdTAwMjZcdTAwMjYgSE9UUExVR19DUFUgXHUwMDI2XHUwMDI2IEFSTV9HSUNcbmFyY2gvYXJtL0tjb25maWc6OTk5Olx0c2VsZWN0IENQVV9QTVxuYXJjaC9hcm0vS2NvbmZpZy0xMDAwLVx0aGVscFxuLS1cbmFyY2gvYXJtNjQvS2NvbmZpZz0yPWNvbmZpZyBBUk02NFxuLS1cbmFyY2gvYXJtNjQvS2NvbmZpZy0xMTEtXHRzZWxlY3QgQ09NTU9OX0NMS1xuYXJjaC9hcm02NC9LY29uZmlnOjExMjpcdHNlbGVjdCBDUFVfUE0gaWYgKFNVU1BFTkQgfHwgQ1BVX0lETEUpXG5hcmNoL2FybTY0L0tjb25maWctMTEzLVx0c2VsZWN0IENQVU1BU0tfT0ZGU1RBQ0sgaWYgTlJfQ1BVUyBcdTAwM2UgMjU2XG4tLVxuYXJjaC9sb29uZ2FyY2gvS2NvbmZpZz0yPWNvbmZpZyBMT09OR0FSQ0hcbi0tXG5hcmNoL2xvb25nYXJjaC9LY29uZmlnLTg3LVx0c2VsZWN0IENPTU1PTl9DTEtcbmFyY2gvbG9vbmdhcmNoL0tjb25maWc6ODg6XHRzZWxlY3QgQ1BVX1BNXG5hcmNoL2xvb25nYXJjaC9LY29uZmlnLTg5LVx0c2VsZWN0IEVEQUNfU1VQUE9SVFxuLS1cbmFyY2gvbWlwcy9LY29uZmlnPTI9Y29uZmlnIE1JUFNcbi0tXG5hcmNoL21pcHMvS2NvbmZpZy0zNS1cdHNlbGVjdCBDUFVfTk9fRUZGSUNJRU5UX0ZGUyBpZiAoVEFSR0VUX0lTQV9SRVYgXHUwMDNjIDEpXG5hcmNoL21pcHMvS2NvbmZpZzozNjpcdHNlbGVjdCBDUFVfUE0gaWYgQ1BVX0lETEUgfHwgU1VTUEVORFxuYXJjaC9taXBzL0tjb25maWctMzctXHRzZWxlY3QgR0VORVJJQ19BVE9NSUM2NCBpZiAhNjRCSVRcbi0tXG5hcmNoL3Jpc2N2L0tjb25maWc9MTM9Y29uZmlnIFJJU0NWXG4tLVxuYXJjaC9yaXNjdi9LY29uZmlnLTk4LVx0c2VsZWN0IENQVV9OT19FRkZJQ0lFTlRfRkZTIGlmICFSSVNDVl9JU0FfWkJCXG5hcmNoL3Jpc2N2L0tjb25maWc6OTk6XHRzZWxlY3QgQ1BVX1BNIGlmIENQVV9JRExFIHx8IEhJQkVSTkFUSU9OIHx8IFNVU1BFTkRcbmFyY2gvcmlzY3YvS2NvbmZpZy0xMDAtXHRzZWxlY3QgRFlOQU1JQ19GVFJBQ0UgaWYgRlVOQ1RJT05fVFJBQ0VSXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDE5OjI4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE1ODIwCgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogNjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRXhhbWluaW5nIHRoZSBQb3dlciBNYW5hZ2VtZW50IENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBkaXZpbmcgaW50byB0aGlzIHBvd2VyIG1hbmFnZW1lbnQgY29uZmlndXJhdGlvbiBmb3IgdGhlIEFSTTY0IGFyY2hpdGVjdHVyZSwgYW5kIGl0IHNlZW1zIHByZXR0eSBzdHJhaWdodGZvcndhcmQgb24gdGhlIHN1cmZhY2UuIEl0IGxvb2tzIGxpa2UgYENPTkZJR19DUFVfUE1gIGlzIGF1dG9tYXRpY2FsbHkgc2VsZWN0ZWQsIG9yIGF0IGxlYXN0IHN1Z2dlc3RlZCwgYnkgdGhlIGBBUk02NGAgYXJjaGl0ZWN0dXJlLCBidXQgb25seSBpZiBlaXRoZXIgYFNVU1BFTkRgIG9yIGBDUFVfSURMRWAgaXMgZW5hYmxlZC4gVGhhdCBtYWtlcyBwZXJmZWN0IHNlbnNlOyBgQ1BVX1BNYCBpcyBlc3NlbnRpYWxseSB0aGUgdW1icmVsbGEgZmVhdHVyZSB0aGF0IGVuYWJsZXMgdGhlIGNvcmUgcG93ZXIgbWFuYWdlbWVudCBjYXBhYmlsaXRpZXMsIGFuZCBpdCYjMzk7cyBjb250aW5nZW50IG9uIGhhdmluZyBzcGVjaWZpYyBpZGxlIG9yIHN1c3BlbmQgc3RhdGVzLiBTbywgbXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gY29uZmlybSB0aGF0IGBTVVNQRU5EYCBvciBgQ1BVX0lETEVgIGFyZSBpbmRlZWQgZW5hYmxlZC4gSSBuZWVkIHRvIHZlcmlmeSB0aGF0IHRob3NlIGluZGl2aWR1YWwgY29tcG9uZW50cyBhcmUgaW4gcGxhY2UuIExldCYjMzk7cyBzdGFydCBieSBkaWdnaW5nIGludG8gdGhlIHNldHRpbmdzIGZvciB0aG9zZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMTk6Mjg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFNVU1BFTkQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvcG93ZXIvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvcG93ZXIvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxua2VybmVsL3Bvd2VyL0tjb25maWc6Mjpjb25maWcgU1VTUEVORFxua2VybmVsL3Bvd2VyL0tjb25maWctMy1cdGJvb2wgXCYjMzQ7U3VzcGVuZCB0byBSQU0gYW5kIHN0YW5kYnlcJiMzNDtcbi0tXG5rZXJuZWwvcG93ZXIvS2NvbmZpZy0xMC1cbmtlcm5lbC9wb3dlci9LY29uZmlnOjExOmNvbmZpZyBTVVNQRU5EX0ZSRUVaRVJcbmtlcm5lbC9wb3dlci9LY29uZmlnLTEyLVx0Ym9vbCBcJiMzNDtFbmFibGUgZnJlZXplciBmb3Igc3VzcGVuZCB0byBSQU0vc3RhbmRieVwmIzM0OyBcXFxuLS1cbmtlcm5lbC9wb3dlci9LY29uZmlnLTIxLVxua2VybmVsL3Bvd2VyL0tjb25maWc6MjI6Y29uZmlnIFNVU1BFTkRfU0tJUF9TWU5DXG5rZXJuZWwvcG93ZXIvS2NvbmZpZy0yMy1cdGJvb2wgXCYjMzQ7U2tpcCBrZXJuZWwmIzM5O3Mgc3lzX3N5bmMoKSBvbiBzdXNwZW5kIHRvIFJBTS9zdGFuZGJ5XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDE5OjI4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE2MjY1CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyBgQ1BVX0lETEVgKioKCkFscmlnaHQsIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBNeSBpbml0aWFsIHRob3VnaHQgaXMsICYjMzQ7TGV0JiMzOTtzIGNoZWNrIGBDUFVfSURMRWAuJiMzNDsgVGhhdCBzaW5nbGUgdmFyaWFibGUsIGBDUFVfSURMRWAsIG9mdGVuIGhvbGRzIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyBhIHN5c3RlbSYjMzk7cyB0cnVlIHBlcmZvcm1hbmNlIHN0YXRlLiBJdCYjMzk7cyBhIGZ1bmRhbWVudGFsIGluZGljYXRvciwgYW5kIEkgbmVlZCB0byBkZWx2ZSBpbnRvIGl0cyBiZWhhdmlvci4gQSBoaWdoIGlkbGUgcGVyY2VudGFnZSwgb3IgZmx1Y3R1YXRpb25zIGluIGlkbGUgdGltZSwgY2FuIHBvaW50IG1lIHRvd2FyZHMgYm90dGxlbmVja3Mgb3IgaW5lZmZpY2llbmNpZXMgZWxzZXdoZXJlIGluIHRoZSBzeXN0ZW0uIFRoZSBuZXh0IHN0ZXAgaXMgY2xlYXJseSB0byB1bmRlcnN0YW5kIGl0cyBjdXJyZW50IGFuZCBoaXN0b3JpY2FsIHZhbHVlcyBpbiByZWxhdGlvbiB0byB3b3JrbG9hZC4gSSYjMzk7bGwgbmVlZCB0byBrbm93IHdoZXRoZXIgSSYjMzk7bSBsb29raW5nIGF0IGV4cGVjdGVkIGJlaGF2aW9yLCBvciBzb21ldGhpbmcgdW51c3VhbCB0aGF0IG1pZ2h0IHBvaW50IHRvIGEgcmVzb3VyY2UgY29uc3RyYWludCwgbG9jayBjb250ZW50aW9uLCBpbmVmZmljaWVudCBJL08sIG9yIGV2ZW4gYSBoYXJkd2FyZSBpc3N1ZS4gVGltZSB0byBnZXQgdG8gd29yay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMTk6Mjg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIENQVV9JRExFJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9jcHVpZGxlL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9jcHVpZGxlL0tjb25maWc9Mj1tZW51IFwmIzM0O0NQVSBJZGxlXCYjMzQ7XG5kcml2ZXJzL2NwdWlkbGUvS2NvbmZpZy0zLVxuZHJpdmVycy9jcHVpZGxlL0tjb25maWc6NDpjb25maWcgQ1BVX0lETEVcbmRyaXZlcnMvY3B1aWRsZS9LY29uZmlnLTUtXHRib29sIFwmIzM0O0NQVSBpZGxlIFBNIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL2NwdWlkbGUvS2NvbmZpZz0xNj1pZiBDUFVfSURMRVxuZHJpdmVycy9jcHVpZGxlL0tjb25maWctMTctXG5kcml2ZXJzL2NwdWlkbGUvS2NvbmZpZzoxODpjb25maWcgQ1BVX0lETEVfTVVMVElQTEVfRFJJVkVSU1xuZHJpdmVycy9jcHVpZGxlL0tjb25maWctMTktXHRib29sXG5kcml2ZXJzL2NwdWlkbGUvS2NvbmZpZy0yMC1cbmRyaXZlcnMvY3B1aWRsZS9LY29uZmlnOjIxOmNvbmZpZyBDUFVfSURMRV9HT1ZfTEFEREVSXG5kcml2ZXJzL2NwdWlkbGUvS2NvbmZpZy0yMi1cdGJvb2wgXCYjMzQ7TGFkZGVyIGdvdmVybm9yIChmb3IgcGVyaW9kaWMgdGltZXIgdGljaylcJiMzNDtcbmRyaXZlcnMvY3B1aWRsZS9LY29uZmlnLTIzLVxuZHJpdmVycy9jcHVpZGxlL0tjb25maWc6MjQ6Y29uZmlnIENQVV9JRExFX0dPVl9NRU5VXG5kcml2ZXJzL2NwdWlkbGUvS2NvbmZpZy0yNS1cdGJvb2wgXCYjMzQ7TWVudSBnb3Zlcm5vciAoZm9yIHRpY2tsZXNzIHN5c3RlbSlcJiMzNDtcbmRyaXZlcnMvY3B1aWRsZS9LY29uZmlnLTI2LVxuZHJpdmVycy9jcHVpZGxlL0tjb25maWc6Mjc6Y29uZmlnIENQVV9JRExFX0dPVl9URU9cbmRyaXZlcnMvY3B1aWRsZS9LY29uZmlnLTI4LVx0Ym9vbCBcJiMzNDtUaW1lciBldmVudHMgb3JpZW50ZWQgKFRFTykgZ292ZXJub3IgKGZvciB0aWNrbGVzcyBzeXN0ZW1zKVwmIzM0O1xuLS1cbmRyaXZlcnMvY3B1aWRsZS9LY29uZmlnLTM1LVxuZHJpdmVycy9jcHVpZGxlL0tjb25maWc6MzY6Y29uZmlnIENQVV9JRExFX0dPVl9IQUxUUE9MTFxuZHJpdmVycy9jcHVpZGxlL0tjb25maWctMzctXHRib29sIFwmIzM0O0hhbHRwb2xsIGdvdmVybm9yIChmb3IgdmlydHVhbGl6ZWQgc3lzdGVtcylcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMTk6Mjg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTY4OTYKCQkJCQkJCW91dHB1dDogMTAwCgkJCQkJCQl0aG91Z2h0czogMTg2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQVJNNjQgQ1BVIFN1c3BlbmQgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IHRoaXMgcGF0Y2ggaW4gZnJvbnQgb2YgbWUsIGFuZCBpdCBzZWVtcyBsaWtlIGl0JiMzOTtzIHRvdWNoaW5nIHRoZSBjb3JlIHN1c3BlbmQvaWRsZSBsb2dpYyBvbiB0aGUgQVJNNjQgYXJjaGl0ZWN0dXJlLiBTcGVjaWZpY2FsbHksIGl0JiMzOTtzIG1vZGlmeWluZyB0aGUgYGNwdV9zdXNwZW5kYCBmdW5jdGlvbiwgd2hpY2ggcmVzaWRlcyBpbiBgYXJjaC9hcm02NC9rZXJuZWwvc3VzcGVuZC5jYC4gVGhlIHBhdGNoJiMzOTtzIHJlYXNvbmluZyBpcyBwcmV0dHkgY2xlYXI6IGl0JiMzOTtzIGFib3V0IGNvbmRpdGlvbmFsbHkgY2FsbGluZyBSQ1UgaWRsZSBmdW5jdGlvbnMsIGFuZCB0aGF0IGNvbmRpdGlvbiBpcyB3aGV0aGVyIG9yIG5vdCB0aGUgY3VycmVudCB0YXNrIGlzIHRoZSBpZGxlIHRhc2sgaXRzZWxmLiBJdCBsb29rcyBsaWtlIGl0JiMzOTtzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIHRvdWNoaW5nIG9uIHRoZSBjb3JlIGFyY2hpdGVjdHVyZSBjb2RlLCBhbmQgaXQmIzM5O3MgcmVhY2hhYmxlIHRocm91Z2ggZWl0aGVyIHN5c3RlbSBzdXNwZW5kIG9yIENQVSBpZGxlIHdpdGhpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuCgpUaGUgY29uZmlndXJhdGlvbiBmbGFncyB0aGF0IHRyaWdnZXIgdGhpcyBhcmUgYFNVU1BFTkRgIGFuZCBgQ1BVX0lETEVgLiBUaGUgbm90ZSBpbmRpY2F0ZXMgdGhpcyBpcyBzb21ldGhpbmcgd29ydGggZnV6emluZywgd2hpY2ggbWFrZXMgc2Vuc2UgZ2l2ZW4gaXRzIGxvY2F0aW9uLiBUaGUgYEZvY3VzU3ltYm9sc2AgZW50cnkgY29ycmVjdGx5IHplcm9lcyBpbiBvbiBgY3B1X3N1c3BlbmRgLgoKSSBqdXN0IGNvbmZpcm1lZCB0aGF0IGBjcHVfc3VzcGVuZGAgKmlzKiB0aGUgb25seSBmdW5jdGlvbiB0aGF0IHRoaXMgcGF0Y2ggYWN0dWFsbHkgdG91Y2hlcywgc28gd2UmIzM5O3JlIGdvb2QgdGhlcmUuIFRoaXMgbWVhbnMgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBhIGZvY3VzZWQgYW5kIHBvdGVudGlhbGx5IGltcGFjdGZ1bCBjaGFuZ2UuCgpUaW1lIHRvIHVzZSBgc2V0LXJlc3VsdHNgIHRvIHBhc3MgdGhpcyBpbmZvcm1hdGlvbiBhbG9uZywgbWFraW5nIHN1cmUgaXQmIzM5O3MgYWNjdXJhdGVseSByZWZsZWN0ZWQgaW4gdGhlIHN5c3RlbS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMTk6Mjg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NVU1BFTkQmIzM0OywKICAgICYjMzQ7Q1BVX0lETEUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtjcHVfc3VzcGVuZCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBhcm02NCBDUFUgc3VzcGVuZC9pZGxlIGxvZ2ljIHRvIGNvbmRpdGlvbmFsbHkgY2FsbCBSQ1UgaWRsZSBmdW5jdGlvbnMgYmFzZWQgb24gd2hldGhlciB0aGUgY3VycmVudCB0YXNrIGlzIHRoZSBpZGxlIHRhc2suIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIGFyY2hpdGVjdHVyZSBjb2RlIHRoYXQgaXMgcmVhY2hhYmxlIHZpYSBzeXN0ZW0gc3VzcGVuZCBvciBDUFUgaWRsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NVU1BFTkQmIzM0OywKICAgICYjMzQ7Q1BVX0lETEUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtjcHVfc3VzcGVuZCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBhcm02NCBDUFUgc3VzcGVuZC9pZGxlIGxvZ2ljIHRvIGNvbmRpdGlvbmFsbHkgY2FsbCBSQ1UgaWRsZSBmdW5jdGlvbnMgYmFzZWQgb24gd2hldGhlciB0aGUgY3VycmVudCB0YXNrIGlzIHRoZSBpZGxlIHRhc2suIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIGFyY2hpdGVjdHVyZSBjb2RlIHRoYXQgaXMgcmVhY2hhYmxlIHZpYSBzeXN0ZW0gc3VzcGVuZCBvciBDUFUgaWRsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxOToyNzo0Ny4xOTEyOTcyNzFaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NDAxNjY1Njc4MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJTVVNQRU5EXCIsXG4gICAgXCJDUFVfSURMRVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImNwdV9zdXNwZW5kXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYXJtNjQgQ1BVIHN1c3BlbmQvaWRsZSBsb2dpYyB0byBjb25kaXRpb25hbGx5IGNhbGwgUkNVIGlkbGUgZnVuY3Rpb25zIGJhc2VkIG9uIHdoZXRoZXIgdGhlIGN1cnJlbnQgdGFzayBpcyB0aGUgaWRsZSB0YXNrLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBhcmNoaXRlY3R1cmUgY29kZSB0aGF0IGlzIHJlYWNoYWJsZSB2aWEgc3lzdGVtIHN1c3BlbmQgb3IgQ1BVIGlkbGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxOToyNzo0Ny4xOTEzMDIyMTFaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUyNzQ5MjMxOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDljMTM3YWJiYzUwYmM3OGRmZWFhNWNlYTUxNDYxN2MwYjNjYjdiNTRcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBKdWwgMjkgMTk6Mjc6NDYgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9rZXJuZWwvc3VzcGVuZC5jIGIvYXJjaC9hcm02NC9rZXJuZWwvc3VzcGVuZC5jXFxuaW5kZXggZWFhZmY5NDMyOWNkZC4uYzZiNmIxY2FjYmYzNyAxMDA2NDRcXG4tLS0gYS9hcmNoL2FybTY0L2tlcm5lbC9zdXNwZW5kLmNcXG4rKysgYi9hcmNoL2FybTY0L2tlcm5lbC9zdXNwZW5kLmNcXG5AQCAtNSw2ICs1LDcgQEBcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3VhY2Nlc3MuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3BndGFibGUuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2NwdWlkbGUuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3NjaGVkLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2Nhc20vYWx0ZXJuYXRpdmUuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2FzbS9jYWNoZWZsdXNoLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2Nhc20vY3B1ZmVhdHVyZS5oXFx1MDAzZVxcbkBAIC05OSw2ICsxMDAsNyBAQCBpbnQgY3B1X3N1c3BlbmQodW5zaWduZWQgbG9uZyBhcmcsIGludCAoKmZuKSh1bnNpZ25lZCBsb25nKSlcXG4gXFx0aW50IHJldCA9IDA7XFxuIFxcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XFxuIFxcdHN0cnVjdCBzbGVlcF9zdGFja19kYXRhIHN0YXRlO1xcbitcXHRib29sIGlkbGUgPSBpc19pZGxlX3Rhc2soY3VycmVudCk7XFxuIFxcdHN0cnVjdCBhcm1fY3B1aWRsZV9pcnFfY29udGV4dCBjb250ZXh0O1xcbiBcXG4gXFx0LypcXG5AQCAtMTM3LDcgKzEzOSw4IEBAIGludCBjcHVfc3VzcGVuZCh1bnNpZ25lZCBsb25nIGFyZywgaW50ICgqZm4pKHVuc2lnbmVkIGxvbmcpKVxcbiBcXHQgKi9cXG4gXFx0YXJtX2NwdWlkbGVfc2F2ZV9pcnFfY29udGV4dChcXHUwMDI2Y29udGV4dCk7XFxuIFxcbi1cXHRjdF9jcHVpZGxlX2VudGVyKCk7XFxuK1xcdGlmIChpZGxlKVxcbitcXHRcXHRjdF9jcHVpZGxlX2VudGVyKCk7XFxuIFxcbiBcXHRpZiAoX19jcHVfc3VzcGVuZF9lbnRlcihcXHUwMDI2c3RhdGUpKSB7XFxuIFxcdFxcdC8qIENhbGwgdGhlIHN1c3BlbmQgZmluaXNoZXIgKi9cXG5AQCAtMTUzLDkgKzE1NiwxMSBAQCBpbnQgY3B1X3N1c3BlbmQodW5zaWduZWQgbG9uZyBhcmcsIGludCAoKmZuKSh1bnNpZ25lZCBsb25nKSlcXG4gXFx0XFx0aWYgKCFyZXQpXFxuIFxcdFxcdFxcdHJldCA9IC1FT1BOT1RTVVBQO1xcbiBcXG4tXFx0XFx0Y3RfY3B1aWRsZV9leGl0KCk7XFxuK1xcdFxcdGlmIChpZGxlKVxcbitcXHRcXHRcXHRjdF9jcHVpZGxlX2V4aXQoKTtcXG4gXFx0fSBlbHNlIHtcXG4tXFx0XFx0Y3RfY3B1aWRsZV9leGl0KCk7XFxuK1xcdFxcdGlmIChpZGxlKVxcbitcXHRcXHRcXHRjdF9jcHVpZGxlX2V4aXQoKTtcXG4gXFx0XFx0X19jcHVfc3VzcGVuZF9leGl0KCk7XFxuIFxcdH1cXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDE5OjI3OjQ3LjcxOTQ5MDQ1OVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjUzNDg4NDU0NjMyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlNVU1BFTkRcIixcbiAgICBcIkNQVV9JRExFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiY3B1X3N1c3BlbmRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBhcm02NCBDUFUgc3VzcGVuZC9pZGxlIGxvZ2ljIHRvIGNvbmRpdGlvbmFsbHkgY2FsbCBSQ1UgaWRsZSBmdW5jdGlvbnMgYmFzZWQgb24gd2hldGhlciB0aGUgY3VycmVudCB0YXNrIGlzIHRoZSBpZGxlIHRhc2suIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIGFyY2hpdGVjdHVyZSBjb2RlIHRoYXQgaXMgcmVhY2hhYmxlIHZpYSBzeXN0ZW0gc3VzcGVuZCBvciBDUFUgaWRsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDljMTM3YWJiYzUwYmM3OGRmZWFhNWNlYTUxNDYxN2MwYjNjYjdiNTRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEp1bCAyOSAxOToyNzo0NiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuYyBiL2FyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuY1xuaW5kZXggZWFhZmY5NDMyOWNkZC4uYzZiNmIxY2FjYmYzNyAxMDA2NDRcbi0tLSBhL2FyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuY1xuKysrIGIvYXJjaC9hcm02NC9rZXJuZWwvc3VzcGVuZC5jXG5AQCAtNSw2ICs1LDcgQEBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC91YWNjZXNzLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9wZ3RhYmxlLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9jcHVpZGxlLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9zY2hlZC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjYXNtL2FsdGVybmF0aXZlLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2Nhc20vY2FjaGVmbHVzaC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjYXNtL2NwdWZlYXR1cmUuaFx1MDAzZVxuQEAgLTk5LDYgKzEwMCw3IEBAIGludCBjcHVfc3VzcGVuZCh1bnNpZ25lZCBsb25nIGFyZywgaW50ICgqZm4pKHVuc2lnbmVkIGxvbmcpKVxuIFx0aW50IHJldCA9IDA7XG4gXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xuIFx0c3RydWN0IHNsZWVwX3N0YWNrX2RhdGEgc3RhdGU7XG4rXHRib29sIGlkbGUgPSBpc19pZGxlX3Rhc2soY3VycmVudCk7XG4gXHRzdHJ1Y3QgYXJtX2NwdWlkbGVfaXJxX2NvbnRleHQgY29udGV4dDtcbiBcbiBcdC8qXG5AQCAtMTM3LDcgKzEzOSw4IEBAIGludCBjcHVfc3VzcGVuZCh1bnNpZ25lZCBsb25nIGFyZywgaW50ICgqZm4pKHVuc2lnbmVkIGxvbmcpKVxuIFx0ICovXG4gXHRhcm1fY3B1aWRsZV9zYXZlX2lycV9jb250ZXh0KFx1MDAyNmNvbnRleHQpO1xuIFxuLVx0Y3RfY3B1aWRsZV9lbnRlcigpO1xuK1x0aWYgKGlkbGUpXG4rXHRcdGN0X2NwdWlkbGVfZW50ZXIoKTtcbiBcbiBcdGlmIChfX2NwdV9zdXNwZW5kX2VudGVyKFx1MDAyNnN0YXRlKSkge1xuIFx0XHQvKiBDYWxsIHRoZSBzdXNwZW5kIGZpbmlzaGVyICovXG5AQCAtMTUzLDkgKzE1NiwxMSBAQCBpbnQgY3B1X3N1c3BlbmQodW5zaWduZWQgbG9uZyBhcmcsIGludCAoKmZuKSh1bnNpZ25lZCBsb25nKSlcbiBcdFx0aWYgKCFyZXQpXG4gXHRcdFx0cmV0ID0gLUVPUE5PVFNVUFA7XG4gXG4tXHRcdGN0X2NwdWlkbGVfZXhpdCgpO1xuK1x0XHRpZiAoaWRsZSlcbitcdFx0XHRjdF9jcHVpZGxlX2V4aXQoKTtcbiBcdH0gZWxzZSB7XG4tXHRcdGN0X2NwdWlkbGVfZXhpdCgpO1xuK1x0XHRpZiAoaWRsZSlcbitcdFx0XHRjdF9jcHVpZGxlX2V4aXQoKTtcbiBcdFx0X19jcHVfc3VzcGVuZF9leGl0KCk7XG4gXHR9XG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxOToyNzo0Ny43MTk0OTIzMzlaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1ODkwNDQ5NDk4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgdGhlIGBjcHVfc3VzcGVuZGAgRnVuY3Rpb24qKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIOKAkyBzZWVtcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLiBJdCdzIHRvdWNoaW5nIGBhcmNoL2FybTY0L2tlcm5lbC9zdXNwZW5kLmNgLCBzcGVjaWZpY2FsbHkgdGhlIGBjcHVfc3VzcGVuZGAgZnVuY3Rpb24uIFRoZSBrZXkgY2hhbmdlIGlzIHRoaXMgYGlzX2lkbGVfdGFzayhjdXJyZW50KWAgY2hlY2ssIGFuZCB0aGUgY29uZGl0aW9uYWwgY2FsbHMgdG8gYGN0X2NwdWlkbGVfZW50ZXIoKWAgYW5kIGBjdF9jcHVpZGxlX2V4aXQoKWAuIEJhc2ljYWxseSwgaXQncyBlbnN1cmluZyB0aG9zZSBpZGxlLXJlbGF0ZWQgZnVuY3Rpb25zIGFyZW4ndCBjYWxsZWQgb3V0c2lkZSBvZiB0aGUgaWRsZSB0YXNrIGNvbnRleHQuXG5cblJpZ2h0LCB0aGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2Ugd2l0aGluIHRoZSBhcm02NCBhcmNoaXRlY3R1cmUncyBzdXNwZW5kIGNvZGUuIFRoZSBxdWVzdGlvbiBpcywgaXMgdGhpcyBzb21ldGhpbmcgd29ydGggZnV6emluZz8gTGV0J3MgYnJlYWsgaXQgZG93bi4gVGhlIGZ1bmN0aW9uIGluIHF1ZXN0aW9uLCBgY3B1X3N1c3BlbmRgLCBpcyBhbGwgYWJvdXQgQ1BVIHN1c3BlbmQgYW5kIGlkbGUuIENhbiB3ZSBhY3R1YWxseSByZWFjaCB0aGlzIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQ/IEFic29sdXRlbHksIENQVSBzdXNwZW5kIGFuZCBpZGxlICpjYW4qIGJlIHRyaWdnZXJlZC4gVGhlIGZhY3QgdGhhdCBpdCdzIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBtZWFucyBpdCBtaWdodCBiZSBhIGJpdCB0cmlja2llciB0byBnZXQgdG8sIGJ1dCBpdCdzIGRlZmluaXRlbHkgZmVhc2libGUuXG5cblRoZSByZWFsIHF1ZXN0aW9uIGlzICpob3cqIGRvIHdlIHRyaWdnZXIgaXQ/IE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBpbnZlc3RpZ2F0ZSBpZiB0aGVyZSBhcmUgYW55IHN5c2NhbGxzIHRoYXQgY2FsbCB0aGlzIGZ1bmN0aW9uLiBJdCdzIGNhbGxlZCBkdXJpbmcgc3lzdGVtIHN1c3BlbmQgb3IgQ1BVIGlkbGUuIE9rYXksIHNvIHRoYXQgc3VnZ2VzdHMgYSByb3V0ZTogc3lzdGVtIHN1c3BlbmQgY2FuIGJlIGluaXRpYXRlZCB0aHJvdWdoIGAvc3lzL3Bvd2VyL3N0YXRlYC4gQW5kIENQVSBpZGxlIGlzIG5hdHVyYWxseSB0cmlnZ2VyZWQgYnkgdGhlIGlkbGUgbG9vcC4gVGhpbmtpbmcgYWJvdXQgaXQsIHRoaXMgaXMgcHJvYmFibHkgd29ydGggYSBmdXp6aW5nIHJ1bi4gVGhpcyBwYXRjaCBkaXJlY3RseSBhZGRyZXNzZXMgYSBidWcgd2hlcmUgYGN0X2NwdWlkbGVfZW50ZXIoKWAgd2FzIGJlaW5nIGNhbGxlZCBpbmFwcHJvcHJpYXRlbHksIHNwZWNpZmljYWxseSB3aGVuIHdlICp3ZXJlbid0KiBpbiB0aGUgaWRsZSB0YXNrIOKAkyBsaWtlIGR1cmluZyBzeXN0ZW0gc3VzcGVuZC4gVGhpcyBpcyBhbiBleGNlbGxlbnQgY2FuZGlkYXRlIGZvciBmdXp6aW5nLlxuXG5Ob3csIGxldCBtZSBnbyBiYWNrIGFuZCBnaXZlIGBjcHVfc3VzcGVuZGAgaW4gYGFyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuY2AgYSBjbG9zZSBsb29rLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzU1LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mjk0LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMTk6Mjc6NTMuNjA5OTQ0NjE3WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgzNTUxNTM5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNwdV9zdXNwZW5kXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL2FybTY0L2tlcm5lbC9zdXNwZW5kLmMtMjMtLypcXG5hcmNoL2FybTY0L2tlcm5lbC9zdXNwZW5kLmM6MjQ6ICogVGhpcyBpcyBhbGxvY2F0ZWQgYnkgY3B1X3N1c3BlbmRfaW5pdCgpLCBhbmQgdXNlZCB0byBzdG9yZSBhIHBvaW50ZXIgdG9cXG5hcmNoL2FybTY0L2tlcm5lbC9zdXNwZW5kLmMtMjUtICogdGhlICdzdHJ1Y3Qgc2xlZXBfc3RhY2tfZGF0YScgdGhlIGNvbnRhaW5zIGEgcGFydGljdWxhciBDUFVzIHN0YXRlLlxcbi0tXFxuYXJjaC9hcm02NC9rZXJuZWwvc3VzcGVuZC5jPTI3PXVuc2lnbmVkIGxvbmcgKnNsZWVwX3NhdmVfc3Rhc2g7XFxuLS1cXG5hcmNoL2FybTY0L2tlcm5lbC9zdXNwZW5kLmMtMjktLypcXG5hcmNoL2FybTY0L2tlcm5lbC9zdXNwZW5kLmM6MzA6ICogVGhpcyBob29rIGlzIHByb3ZpZGVkIHNvIHRoYXQgY3B1X3N1c3BlbmQgY29kZSBjYW4gcmVzdG9yZSBIV1xcbmFyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuYy0zMS0gKiBicmVha3BvaW50cyBhcyBlYXJseSBhcyBwb3NzaWJsZSBpbiB0aGUgcmVzdW1lIHBhdGgsIGJlZm9yZSByZWVuYWJsaW5nXFxuLS1cXG5hcmNoL2FybTY0L2tlcm5lbC9zdXNwZW5kLmM9MzY9c3RhdGljIGludCAoKmh3X2JyZWFrcG9pbnRfcmVzdG9yZSkodW5zaWduZWQgaW50KTtcXG5hcmNoL2FybTY0L2tlcm5lbC9zdXNwZW5kLmM6Mzc6dm9pZCBfX2luaXQgY3B1X3N1c3BlbmRfc2V0X2RiZ19yZXN0b3JlcihpbnQgKCpod19icF9yZXN0b3JlKSh1bnNpZ25lZCBpbnQpKVxcbmFyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuYy0zOC17XFxuLS1cXG5hcmNoL2FybTY0L2tlcm5lbC9zdXNwZW5kLmMtNDQtXFxuYXJjaC9hcm02NC9rZXJuZWwvc3VzcGVuZC5jOjQ1OnZvaWQgbm90cmFjZSBfX2NwdV9zdXNwZW5kX2V4aXQodm9pZClcXG5hcmNoL2FybTY0L2tlcm5lbC9zdXNwZW5kLmMtNDYte1xcbi0tXFxuYXJjaC9hcm02NC9rZXJuZWwvc3VzcGVuZC5jLTcyLVxcdCAqIGJlZm9yZSBkZWJ1ZyBleGNlcHRpb25zIGFyZSBwb3NzaWJseSByZWVuYWJsZWRcXG5hcmNoL2FybTY0L2tlcm5lbC9zdXNwZW5kLmM6NzM6XFx0ICogYnkgY3B1X3N1c3BlbmQoKXMgbG9jYWxfZGFpZl9yZXN0b3JlKCkgY2FsbC5cXG5hcmNoL2FybTY0L2tlcm5lbC9zdXNwZW5kLmMtNzQtXFx0ICovXFxuLS1cXG5hcmNoL2FybTY0L2tlcm5lbC9zdXNwZW5kLmMtOTEtLypcXG5hcmNoL2FybTY0L2tlcm5lbC9zdXNwZW5kLmM6OTI6ICogY3B1X3N1c3BlbmRcXG5hcmNoL2FybTY0L2tlcm5lbC9zdXNwZW5kLmMtOTMtICpcXG4tLVxcbmFyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuYy05Ny0gKi9cXG5hcmNoL2FybTY0L2tlcm5lbC9zdXNwZW5kLmM6OTg6aW50IGNwdV9zdXNwZW5kKHVuc2lnbmVkIGxvbmcgYXJnLCBpbnQgKCpmbikodW5zaWduZWQgbG9uZykpXFxuYXJjaC9hcm02NC9rZXJuZWwvc3VzcGVuZC5jLTk5LXtcXG4tLVxcbmFyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuYy0xMDgtXFx0ICogYmVmb3JlIGFsdGVybmF0aXZlcyBhcmUgcGF0Y2hlZCwgYnV0IGFyZSBvbmx5IHJlc3RvcmVkIGJ5XFxuYXJjaC9hcm02NC9rZXJuZWwvc3VzcGVuZC5jOjEwOTpcXHQgKiBfX2NwdV9zdXNwZW5kX2V4aXQoKSBhZnRlciBhbHRlcm5hdGl2ZXMgYXJlIHBhdGNoZWQuIFRvIGF2b2lkXFxuYXJjaC9hcm02NC9rZXJuZWwvc3VzcGVuZC5jLTExMC1cXHQgKiBhY2NpZGVudGFsbHkgbG9zaW5nIHRoZXNlIGJpdHMgd2UgbXVzdCBub3QgYXR0ZW1wdCB0byBzdXNwZW5kIHVudGlsXFxuLS1cXG5hcmNoL2FybTY0L2tlcm5lbC9zdXNwZW5kLmMtMTQ0LVxcbmFyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuYzoxNDU6XFx0aWYgKF9fY3B1X3N1c3BlbmRfZW50ZXIoXFx1MDAyNnN0YXRlKSkge1xcbmFyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuYy0xNDYtXFx0XFx0LyogQ2FsbCB0aGUgc3VzcGVuZCBmaW5pc2hlciAqL1xcbi0tXFxuYXJjaC9hcm02NC9rZXJuZWwvc3VzcGVuZC5jLTE1MC1cXHRcXHQgKiBOZXZlciBnZXRzIGhlcmUsIHVubGVzcyB0aGUgc3VzcGVuZCBmaW5pc2hlciBmYWlscy5cXG5hcmNoL2FybTY0L2tlcm5lbC9zdXNwZW5kLmM6MTUxOlxcdFxcdCAqIFN1Y2Nlc3NmdWwgY3B1X3N1c3BlbmQoKSBzaG91bGQgcmV0dXJuIGZyb20gY3B1X3Jlc3VtZSgpLFxcbmFyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuYy0xNTItXFx0XFx0ICogcmV0dXJuaW5nIHRocm91Z2ggdGhpcyBjb2RlIHBhdGggaXMgY29uc2lkZXJlZCBhbiBlcnJvclxcbi0tXFxuYXJjaC9hcm02NC9rZXJuZWwvc3VzcGVuZC5jLTE2My1cXHRcXHRcXHRjdF9jcHVpZGxlX2V4aXQoKTtcXG5hcmNoL2FybTY0L2tlcm5lbC9zdXNwZW5kLmM6MTY0OlxcdFxcdF9fY3B1X3N1c3BlbmRfZXhpdCgpO1xcbmFyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuYy0xNjUtXFx0fVxcbi0tXFxuYXJjaC9hcm02NC9rZXJuZWwvc3VzcGVuZC5jLTE4MC1cXG5hcmNoL2FybTY0L2tlcm5lbC9zdXNwZW5kLmM6MTgxOnN0YXRpYyBpbnQgX19pbml0IGNwdV9zdXNwZW5kX2luaXQodm9pZClcXG5hcmNoL2FybTY0L2tlcm5lbC9zdXNwZW5kLmMtMTgyLXtcXG4tLVxcbmFyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuYy0xOTEtfVxcbmFyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuYzoxOTI6ZWFybHlfaW5pdGNhbGwoY3B1X3N1c3BlbmRfaW5pdCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDE5OjI3OjUzLjY5MzUwMDE0NVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyMDkxODg3NTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyB0aGUgYGNwdV9zdXNwZW5kYCBGdW5jdGlvbioqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYGNwdV9zdXNwZW5kYCB3aXRoaW4gdGhlIEFSTTY0IGFyY2hpdGVjdHVyZSdzIHN1c3BlbmQgY29kZS4gSW50ZXJlc3RpbmcuIFRoaXMgZnVuY3Rpb24gaXMgYSBrZXkgcGxheWVyIGluIGJvdGggQ1BVIGlkbGUgYW5kIHN5c3RlbS13aWRlIHN1c3BlbmQgb3BlcmF0aW9ucyDigJMgZGVmaW5pdGVseSBhIHRhcmdldCB3b3J0aCBjb25zaWRlcmluZyBmb3IgZnV6emluZy4gR2l2ZW4gaXRzIGNlbnRyYWwgcm9sZSBhbmQgZnVuY3Rpb25hbCBuYXR1cmUsIGV2ZW4gc3VidGxlIGJ1Z3MgaGVyZSBjb3VsZCBoYXZlIGJyb2FkIGNvbnNlcXVlbmNlcy5cblxuVGhlIG9ubHkgcmVhbCBjYXZlYXQgaXMgdGhhdCBpdCdzIGFyY2hpdGVjdHVyZS1zcGVjaWZpYy4gQnV0IHdhaXQsIHdlJ3JlIHRhbGtpbmcgQVJNNjQgaGVyZSwgYW5kIHRoYXQncyB3ZWxsIHN1cHBvcnRlZCBieSBlbXVsYXRvcnMgbGlrZSBRRU1VLCB3aGljaCBoYW5kbGVzIENQVSBpZGxlIGFuZCBzeXN0ZW0gc3VzcGVuZC4gVGhhdCBtZWFucyB3ZSBzaG91bGQgYmUgYWJsZSB0byB0cmlnZ2VyIHRoaXMgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gRXhjZWxsZW50LiBOb3csIGJlZm9yZSBJIGRpdmUgaW4gdG9vIGRlZXAsIGxldCBtZSB0YWtlIGEgcXVpY2sgbG9vayBhdCB3aG8ncyBhY3R1YWxseSBjYWxsaW5nIGBjcHVfc3VzcGVuZGAgdG8gZ2V0IGEgYmV0dGVyIGhhbmRsZSBvbiB0aGUgcG90ZW50aWFsIGF0dGFjayBzdXJmYWNlLiBJdCdzIGFsd2F5cyBnb29kIHRvIHVuZGVyc3RhbmQgdGhlIGNhbGwgZ3JhcGggYmVmb3JlIGxhdW5jaGluZyBhbnkgZnV6emluZyBjYW1wYWlnbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NDEyNSwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxOToyNzo1Ny45MDI2OTIzNzdaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjEwMDcxMjE1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNwdV9zdXNwZW5kXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvYXJtNjQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvYXJtNjQvYm9vdC9kdHMvYW1hem9uL2FscGluZS12Mi5kdHNpPTc5PVxcdHBzY2kge1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9hbWF6b24vYWxwaW5lLXYyLmR0c2ktODEtXFx0XFx0bWV0aG9kID0gXFxcInNtY1xcXCI7XFxuYXJjaC9hcm02NC9ib290L2R0cy9hbWF6b24vYWxwaW5lLXYyLmR0c2k6ODI6XFx0XFx0Y3B1X3N1c3BlbmQgPSBcXHUwMDNjMHg4NDAwMDAwMVxcdTAwM2U7XFxuYXJjaC9hcm02NC9ib290L2R0cy9hbWF6b24vYWxwaW5lLXYyLmR0c2ktODMtXFx0XFx0Y3B1X29mZiA9IFxcdTAwM2MweDg0MDAwMDAyXFx1MDAzZTtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZXh5bm9zL2V4eW5vczc4NzAuZHRzaT0xMjg9XFx0cHNjaSB7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2V4eW5vcy9leHlub3M3ODcwLmR0c2ktMTMwLVxcdFxcdG1ldGhvZCA9IFxcXCJzbWNcXFwiO1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZXh5bm9zL2V4eW5vczc4NzAuZHRzaToxMzE6XFx0XFx0Y3B1X3N1c3BlbmQgPSBcXHUwMDNjMHhjNDAwMDAwMVxcdTAwM2U7XFxuYXJjaC9hcm02NC9ib290L2R0cy9leHlub3MvZXh5bm9zNzg3MC5kdHNpLTEzMi1cXHRcXHRjcHVfb2ZmID0gXFx1MDAzYzB4ODQwMDAwMDJcXHUwMDNlO1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9leHlub3MvZXh5bm9zNzg4NS5kdHNpPTE0Mz1cXHRwc2NpIHtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZXh5bm9zL2V4eW5vczc4ODUuZHRzaS0xNDUtXFx0XFx0bWV0aG9kID0gXFxcInNtY1xcXCI7XFxuYXJjaC9hcm02NC9ib290L2R0cy9leHlub3MvZXh5bm9zNzg4NS5kdHNpOjE0NjpcXHRcXHRjcHVfc3VzcGVuZCA9IFxcdTAwM2MweGM0MDAwMDAxXFx1MDAzZTtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2V4eW5vcy9leHlub3M3ODg1LmR0c2ktMTQ3LVxcdFxcdGNwdV9vZmYgPSBcXHUwMDNjMHg4NDAwMDAwMlxcdTAwM2U7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2V4eW5vcy9leHlub3M4ODk1LmR0c2k9MTUyPVxcdHBzY2kge1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9leHlub3MvZXh5bm9zODg5NS5kdHNpLTE1Ni1cXHRcXHRjcHVfb24gPSBcXHUwMDNjMHhjNDAwMDAwM1xcdTAwM2U7XFxuYXJjaC9hcm02NC9ib290L2R0cy9leHlub3MvZXh5bm9zODg5NS5kdHNpOjE1NzpcXHRcXHRjcHVfc3VzcGVuZCA9IFxcdTAwM2MweGM0MDAwMDAxXFx1MDAzZTtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2V4eW5vcy9leHlub3M4ODk1LmR0c2ktMTU4LVxcdH07XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2V4eW5vcy9leHlub3M5ODEwLmR0c2k9MTUzPVxcdHBzY2kge1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9leHlub3MvZXh5bm9zOTgxMC5kdHNpLTE1Ny1cXHRcXHRjcHVfb24gPSBcXHUwMDNjMHhjNDAwMDAwM1xcdTAwM2U7XFxuYXJjaC9hcm02NC9ib290L2R0cy9leHlub3MvZXh5bm9zOTgxMC5kdHNpOjE1ODpcXHRcXHRjcHVfc3VzcGVuZCA9IFxcdTAwM2MweGM0MDAwMDAxXFx1MDAzZTtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2V4eW5vcy9leHlub3M5ODEwLmR0c2ktMTU5LVxcdH07XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2V4eW5vcy9leHlub3NhdXRvdjkuZHRzaT0xMzg9XFx0cHNjaSB7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2V4eW5vcy9leHlub3NhdXRvdjkuZHRzaS0xNDAtXFx0XFx0bWV0aG9kID0gXFxcInNtY1xcXCI7XFxuYXJjaC9hcm02NC9ib290L2R0cy9leHlub3MvZXh5bm9zYXV0b3Y5LmR0c2k6MTQxOlxcdFxcdGNwdV9zdXNwZW5kID0gXFx1MDAzYzB4YzQwMDAwMDFcXHUwMDNlO1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZXh5bm9zL2V4eW5vc2F1dG92OS5kdHNpLTE0Mi1cXHRcXHRjcHVfb2ZmID0gXFx1MDAzYzB4ODQwMDAwMDJcXHUwMDNlO1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9sZy9sZzEzMXguZHRzaT01NT1cXHRwc2NpIHtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvbGcvbGcxMzF4LmR0c2ktNTctXFx0XFx0bWV0aG9kID0gXFxcInNtY1xcXCI7XFxuYXJjaC9hcm02NC9ib290L2R0cy9sZy9sZzEzMXguZHRzaTo1ODpcXHRcXHRjcHVfc3VzcGVuZCA9IFxcdTAwM2MweDg0MDAwMDAxXFx1MDAzZTtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2xnL2xnMTMxeC5kdHNpLTU5LVxcdFxcdGNwdV9vZmYgPSBcXHUwMDNjMHg4NDAwMDAwMlxcdTAwM2U7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL21lZGlhdGVrL210ODE3My5kdHNpPTIzOT1cXHRwc2NpIHtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvbWVkaWF0ZWsvbXQ4MTczLmR0c2ktMjQxLVxcdFxcdG1ldGhvZCA9IFxcXCJzbWNcXFwiO1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvbWVkaWF0ZWsvbXQ4MTczLmR0c2k6MjQyOlxcdFxcdGNwdV9zdXNwZW5kID0gXFx1MDAzYzB4ODQwMDAwMDFcXHUwMDNlO1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvbWVkaWF0ZWsvbXQ4MTczLmR0c2ktMjQzLVxcdFxcdGNwdV9vZmZcXHQgPSBcXHUwMDNjMHg4NDAwMDAwMlxcdTAwM2U7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL3NwcmQvc2M5ODM2LmR0c2k9MjA4PVxcdHBzY2kge1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9zcHJkL3NjOTgzNi5kdHNpLTIxMi1cXHRcXHRjcHVfb2ZmID0gXFx1MDAzYzB4ODQwMDAwMDJcXHUwMDNlO1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvc3ByZC9zYzk4MzYuZHRzaToyMTM6XFx0XFx0Y3B1X3N1c3BlbmQgPSBcXHUwMDNjMHhjNDAwMDAwMVxcdTAwM2U7XFxuYXJjaC9hcm02NC9ib290L2R0cy9zcHJkL3NjOTgzNi5kdHNpLTIxNC1cXHR9O1xcbi0tXFxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9od19icmVha3BvaW50Lmg9MTQ4PXN0YXRpYyBpbmxpbmUgaW50IGdldF9udW1fd3Jwcyh2b2lkKVxcbi0tXFxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9od19icmVha3BvaW50LmgtMTU2LSNpZmRlZiBDT05GSUdfQ1BVX1BNXFxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9od19icmVha3BvaW50Lmg6MTU3OmV4dGVybiB2b2lkIGNwdV9zdXNwZW5kX3NldF9kYmdfcmVzdG9yZXIoaW50ICgqaHdfYnBfcmVzdG9yZSkodW5zaWduZWQgaW50KSk7XFxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9od19icmVha3BvaW50LmgtMTU4LSNlbHNlXFxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9od19icmVha3BvaW50Lmg6MTU5OnN0YXRpYyBpbmxpbmUgdm9pZCBjcHVfc3VzcGVuZF9zZXRfZGJnX3Jlc3RvcmVyKGludCAoKmh3X2JwX3Jlc3RvcmUpKHVuc2lnbmVkIGludCkpXFxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9od19icmVha3BvaW50LmgtMTYwLXtcXG4tLVxcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20va3ZtX2hvc3QuaD04MTE9c3RydWN0IGt2bV9ob3N0X3BzY2lfY29uZmlnIHtcXG4tLVxcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20va3ZtX2hvc3QuaC04MTgtXFxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9rdm1faG9zdC5oOjgxOTpcXHRib29sIHBzY2lfMF8xX2NwdV9zdXNwZW5kX2ltcGxlbWVudGVkO1xcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20va3ZtX2hvc3QuaC04MjAtXFx0Ym9vbCBwc2NpXzBfMV9jcHVfb25faW1wbGVtZW50ZWQ7XFxuLS1cXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL21tdV9jb250ZXh0Lmg9MTA0PXN0YXRpYyBpbmxpbmUgdm9pZCBjcHVfaW5zdGFsbF9pZG1hcCh2b2lkKVxcbi0tXFxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9tbXVfY29udGV4dC5oLTEyMy0gKiBXZSBjaGFuZ2UgVDBTWiBhcyBwYXJ0IG9mIGluc3RhbGxpbmcgdGhlIGlkbWFwLiBUaGlzIGlzIHVuZG9uZSBieVxcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vbW11X2NvbnRleHQuaDoxMjQ6ICogY3B1X3VuaW5zdGFsbF9pZG1hcCgpIGluIF9fY3B1X3N1c3BlbmRfZXhpdCgpLlxcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vbW11X2NvbnRleHQuaC0xMjUtICovXFxuLS1cXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3Byb2MtZm5zLmgtMTUtXFxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9wcm9jLWZucy5oOjE2OnN0cnVjdCBjcHVfc3VzcGVuZF9jdHg7XFxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9wcm9jLWZucy5oLTE3LVxcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vcHJvYy1mbnMuaD0xOD1leHRlcm4gdm9pZCBjcHVfZG9faWRsZSh2b2lkKTtcXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3Byb2MtZm5zLmg6MTk6ZXh0ZXJuIHZvaWQgY3B1X2RvX3N1c3BlbmQoc3RydWN0IGNwdV9zdXNwZW5kX2N0eCAqcHRyKTtcXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3Byb2MtZm5zLmgtMjAtZXh0ZXJuIHU2NCBjcHVfZG9fcmVzdW1lKHBoeXNfYWRkcl90IHB0ciwgdTY0IGlkbWFwX3R0YnIpO1xcbi0tXFxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9zdXNwZW5kLmgtOC0vKlxcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vc3VzcGVuZC5oOjk6ICogc3RydWN0IGNwdV9zdXNwZW5kX2N0eCBtdXN0IGJlIDE2LWJ5dGUgYWxpZ25lZCBzaW5jZSBpdCBpcyBhbGxvY2F0ZWQgb25cXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3N1c3BlbmQuaC0xMC0gKiB0aGUgc3RhY2ssIHdoaWNoIG11c3QgYmUgMTYtYnl0ZSBhbGlnbmVkIG9uIHY4XFxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9zdXNwZW5kLmgtMTEtICovXFxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9zdXNwZW5kLmg6MTI6c3RydWN0IGNwdV9zdXNwZW5kX2N0eCB7XFxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9zdXNwZW5kLmgtMTMtXFx0LypcXG4tLVxcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vc3VzcGVuZC5oLTIyLSAqIE1lbW9yeSB0byBzYXZlIHRoZSBjcHUgc3RhdGUgaXMgYWxsb2NhdGVkIG9uIHRoZSBzdGFjayBieVxcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vc3VzcGVuZC5oOjIzOiAqIF9fY3B1X3N1c3BlbmRfZW50ZXIoKSdzIGNhbGxlciwgYW5kIHBvcHVsYXRlZCBieSBfX2NwdV9zdXNwZW5kX2VudGVyKCkuXFxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9zdXNwZW5kLmgtMjQtICogVGhpcyBkYXRhIG11c3Qgc3Vydml2ZSB1bnRpbCBjcHVfcmVzdW1lKCkgaXMgY2FsbGVkLlxcbi0tXFxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9zdXNwZW5kLmgtMjctICogVGhlIGxheW91dCBvZiB0aGUgY2FsbGVlX3NhdmVkX3JlZ3MgaXMgZGVmaW5lZCBieSB0aGUgaW1wbGVtZW50YXRpb25cXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3N1c3BlbmQuaDoyODogKiBvZiBfX2NwdV9zdXNwZW5kX2VudGVyKCksIGFuZCBjcHVfcmVzdW1lKCkuIFRoaXMgc3RydWN0IG11c3QgYmUgcGFzc2VkXFxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9zdXNwZW5kLmg6Mjk6ICogaW4gYnkgdGhlIGNhbGxlciBhcyBfX2NwdV9zdXNwZW5kX2VudGVyKCkncyBzdGFjay1mcmFtZSBpcyBnb25lIG9uY2UgaXRcXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3N1c3BlbmQuaC0zMC0gKiByZXR1cm5zLCBhbmQgdGhlIGRhdGEgd291bGQgYmUgc3Vic2VxdWVudGx5IGNvcnJ1cHRlZCBieSB0aGUgY2FsbCB0byB0aGVcXG4tLVxcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vc3VzcGVuZC5oPTMzPXN0cnVjdCBzbGVlcF9zdGFja19kYXRhIHtcXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3N1c3BlbmQuaDozNDpcXHRzdHJ1Y3QgY3B1X3N1c3BlbmRfY3R4XFx0c3lzdGVtX3JlZ3M7XFxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9zdXNwZW5kLmgtMzUtXFx0dW5zaWduZWQgbG9uZ1xcdFxcdGNhbGxlZV9zYXZlZF9yZWdzW05SX0NBTExFRV9TQVZFRF9SRUdTXTtcXG4tLVxcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vc3VzcGVuZC5oPTM4PWV4dGVybiB1bnNpZ25lZCBsb25nICpzbGVlcF9zYXZlX3N0YXNoO1xcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vc3VzcGVuZC5oLTM5LVxcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vc3VzcGVuZC5oOjQwOmV4dGVybiBpbnQgY3B1X3N1c3BlbmQodW5zaWduZWQgbG9uZyBhcmcsIGludCAoKmZuKSh1bnNpZ25lZCBsb25nKSk7XFxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9zdXNwZW5kLmgtNDEtZXh0ZXJuIHZvaWQgY3B1X3Jlc3VtZSh2b2lkKTtcXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3N1c3BlbmQuaDo0MjppbnQgX19jcHVfc3VzcGVuZF9lbnRlcihzdHJ1Y3Qgc2xlZXBfc3RhY2tfZGF0YSAqc3RhdGUpO1xcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vc3VzcGVuZC5oOjQzOnZvaWQgX19jcHVfc3VzcGVuZF9leGl0KHZvaWQpO1xcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vc3VzcGVuZC5oLTQ0LXZvaWQgX2NwdV9yZXN1bWUodm9pZCk7XFxuLS1cXG5hcmNoL2FybTY0L2tlcm5lbC9hc20tb2Zmc2V0cy5jPTI3PWludCBtYWluKHZvaWQpXFxuLS1cXG5hcmNoL2FybTY0L2tlcm5lbC9hc20tb2Zmc2V0cy5jLTEyOS0jaWZkZWYgQ09ORklHX0NQVV9QTVxcbmFyY2gvYXJtNjQva2VybmVsL2FzbS1vZmZzZXRzLmM6MTMwOiAgREVGSU5FKENQVV9DVFhfU1AsXFx0XFx0b2Zmc2V0b2Yoc3RydWN0IGNwdV9zdXNwZW5kX2N0eCwgc3ApKTtcXG5hcmNoL2FybTY0L2tlcm5lbC9hc20tb2Zmc2V0cy5jLTEzMS0gIERFRklORShNUElEUl9IQVNIX01BU0ssXFx0b2Zmc2V0b2Yoc3RydWN0IG1waWRyX2hhc2gsIG1hc2spKTtcXG4tLVxcbmFyY2gvYXJtNjQva2VybmVsL2hpYmVybmF0ZS5jPTEwOD1pbnQgYXJjaF9oaWJlcm5hdGlvbl9oZWFkZXJfc2F2ZSh2b2lkICphZGRyLCB1bnNpZ25lZCBpbnQgbWF4X3NpemUpXFxuLS1cXG5hcmNoL2FybTY0L2tlcm5lbC9oaWJlcm5hdGUuYy0xMjQtXFxuYXJjaC9hcm02NC9rZXJuZWwvaGliZXJuYXRlLmM6MTI1OlxcdC8qIFNhdmUgdGhlIG1waWRyIG9mIHRoZSBjcHUgd2UgY2FsbGVkIGNwdV9zdXNwZW5kKCkgb24uLi4gKi9cXG5hcmNoL2FybTY0L2tlcm5lbC9oaWJlcm5hdGUuYy0xMjYtXFx0aWYgKHNsZWVwX2NwdSBcXHUwMDNjIDApIHtcXG4tLVxcbmFyY2gvYXJtNjQva2VybmVsL2hpYmVybmF0ZS5jPTMzMz1pbnQgc3dzdXNwX2FyY2hfc3VzcGVuZCh2b2lkKVxcbi0tXFxuYXJjaC9hcm02NC9rZXJuZWwvaGliZXJuYXRlLmMtMzQ1LVxcbmFyY2gvYXJtNjQva2VybmVsL2hpYmVybmF0ZS5jOjM0NjpcXHRpZiAoX19jcHVfc3VzcGVuZF9lbnRlcihcXHUwMDI2c3RhdGUpKSB7XFxuYXJjaC9hcm02NC9rZXJuZWwvaGliZXJuYXRlLmMtMzQ3LVxcdFxcdC8qIG1ha2UgdGhlIGNyYXNoIGR1bXAga2VybmVsIGltYWdlIHZpc2libGUvc2F2ZWFibGUgKi9cXG4tLVxcbmFyY2gvYXJtNjQva2VybmVsL2hpYmVybmF0ZS5jLTM4My1cXHRcXHRzbGVlcF9jcHUgPSAtRUlOVkFMO1xcbmFyY2gvYXJtNjQva2VybmVsL2hpYmVybmF0ZS5jOjM4NDpcXHRcXHRfX2NwdV9zdXNwZW5kX2V4aXQoKTtcXG5hcmNoL2FybTY0L2tlcm5lbC9oaWJlcm5hdGUuYy0zODUtXFxuLS1cXG5hcmNoL2FybTY0L2tlcm5lbC9od19icmVha3BvaW50LmM9OTgzPXN0YXRpYyBpbnQgX19pbml0IGFyY2hfaHdfYnJlYWtwb2ludF9pbml0KHZvaWQpXFxuLS1cXG5hcmNoL2FybTY0L2tlcm5lbC9od19icmVha3BvaW50LmMtMTAwMi1cXG5hcmNoL2FybTY0L2tlcm5lbC9od19icmVha3BvaW50LmM6MTAwMzpcXHQvKiBSZWdpc3RlciBjcHVfc3VzcGVuZCBodyBicmVha3BvaW50IHJlc3RvcmUgaG9vayAqL1xcbmFyY2gvYXJtNjQva2VybmVsL2h3X2JyZWFrcG9pbnQuYzoxMDA0OlxcdGNwdV9zdXNwZW5kX3NldF9kYmdfcmVzdG9yZXIoaHdfYnJlYWtwb2ludF9yZXNldCk7XFxuYXJjaC9hcm02NC9rZXJuZWwvaHdfYnJlYWtwb2ludC5jLTEwMDUtXFxuLS1cXG5hcmNoL2FybTY0L2tlcm5lbC9zbGVlcC5TLTU5LSAqIGZ1bmN0aW9uLiBTbyB0aGF0IHRoZSBjYWxsZXIgY2FuIHRlbGwgdGhlIHN1c3BlbmQvcmVzdW1lIHBhdGhzIGFwYXJ0LFxcbmFyY2gvYXJtNjQva2VybmVsL3NsZWVwLlM6NjA6ICogX19jcHVfc3VzcGVuZF9lbnRlcigpIHdpbGwgYWx3YXlzIHJldHVybiBhIG5vbi16ZXJvIHZhbHVlLCB3aGVyZWFzIHRoZVxcbmFyY2gvYXJtNjQva2VybmVsL3NsZWVwLlMtNjEtICogcGF0aCB0aHJvdWdoIGNwdV9yZXN1bWUoKSB3aWxsIHJldHVybiAwLlxcbi0tXFxuYXJjaC9hcm02NC9rZXJuZWwvc2xlZXAuUy02NC0gKi9cXG5hcmNoL2FybTY0L2tlcm5lbC9zbGVlcC5TOjY1OlNZTV9GVU5DX1NUQVJUKF9fY3B1X3N1c3BlbmRfZW50ZXIpXFxuYXJjaC9hcm02NC9rZXJuZWwvc2xlZXAuUy02Ni1cXHRzdHBcXHR4MjksIGxyLCBbeDAsICNTTEVFUF9TVEFDS19EQVRBX0NBTExFRV9SRUdTXVxcbi0tXFxuYXJjaC9hcm02NC9rZXJuZWwvc2xlZXAuUy03Mi1cXG5hcmNoL2FybTY0L2tlcm5lbC9zbGVlcC5TOjczOlxcdC8qIHNhdmUgdGhlIHNwIGluIGNwdV9zdXNwZW5kX2N0eCAqL1xcbmFyY2gvYXJtNjQva2VybmVsL3NsZWVwLlMtNzQtXFx0bW92XFx0eDIsIHNwXFxuLS1cXG5hcmNoL2FybTY0L2tlcm5lbC9zbGVlcC5TLTk3LVxcdHJldFxcbmFyY2gvYXJtNjQva2VybmVsL3NsZWVwLlM6OTg6U1lNX0ZVTkNfRU5EKF9fY3B1X3N1c3BlbmRfZW50ZXIpXFxuYXJjaC9hcm02NC9rZXJuZWwvc2xlZXAuUy05OS1cXG4tLVxcbmFyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuYy0yMy0vKlxcbmFyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuYzoyNDogKiBUaGlzIGlzIGFsbG9jYXRlZCBieSBjcHVfc3VzcGVuZF9pbml0KCksIGFuZCB1c2VkIHRvIHN0b3JlIGEgcG9pbnRlciB0b1xcbmFyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuYy0yNS0gKiB0aGUgJ3N0cnVjdCBzbGVlcF9zdGFja19kYXRhJyB0aGUgY29udGFpbnMgYSBwYXJ0aWN1bGFyIENQVXMgc3RhdGUuXFxuLS1cXG5hcmNoL2FybTY0L2tlcm5lbC9zdXNwZW5kLmM9Mjc9dW5zaWduZWQgbG9uZyAqc2xlZXBfc2F2ZV9zdGFzaDtcXG4tLVxcbmFyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuYy0yOS0vKlxcbmFyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuYzozMDogKiBUaGlzIGhvb2sgaXMgcHJvdmlkZWQgc28gdGhhdCBjcHVfc3VzcGVuZCBjb2RlIGNhbiByZXN0b3JlIEhXXFxuYXJjaC9hcm02NC9rZXJuZWwvc3VzcGVuZC5jLTMxLSAqIGJyZWFrcG9pbnRzIGFzIGVhcmx5IGFzIHBvc3NpYmxlIGluIHRoZSByZXN1bWUgcGF0aCwgYmVmb3JlIHJlZW5hYmxpbmdcXG4tLVxcbmFyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuYz0zNj1zdGF0aWMgaW50ICgqaHdfYnJlYWtwb2ludF9yZXN0b3JlKSh1bnNpZ25lZCBpbnQpO1xcbmFyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuYzozNzp2b2lkIF9faW5pdCBjcHVfc3VzcGVuZF9zZXRfZGJnX3Jlc3RvcmVyKGludCAoKmh3X2JwX3Jlc3RvcmUpKHVuc2lnbmVkIGludCkpXFxuYXJjaC9hcm02NC9rZXJuZWwvc3VzcGVuZC5jLTM4LXtcXG4tLVxcbmFyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuYy00NC1cXG5hcmNoL2FybTY0L2tlcm5lbC9zdXNwZW5kLmM6NDU6dm9pZCBub3RyYWNlIF9fY3B1X3N1c3BlbmRfZXhpdCh2b2lkKVxcbmFyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuYy00Ni17XFxuLS1cXG5hcmNoL2FybTY0L2tlcm5lbC9zdXNwZW5kLmMtNzItXFx0ICogYmVmb3JlIGRlYnVnIGV4Y2VwdGlvbnMgYXJlIHBvc3NpYmx5IHJlZW5hYmxlZFxcbmFyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuYzo3MzpcXHQgKiBieSBjcHVfc3VzcGVuZCgpcyBsb2NhbF9kYWlmX3Jlc3RvcmUoKSBjYWxsLlxcbmFyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuYy03NC1cXHQgKi9cXG4tLVxcbmFyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuYy05MS0vKlxcbmFyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuYzo5MjogKiBjcHVfc3VzcGVuZFxcbmFyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuYy05My0gKlxcbi0tXFxuYXJjaC9hcm02NC9rZXJuZWwvc3VzcGVuZC5jLTk3LSAqL1xcbmFyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuYzo5ODppbnQgY3B1X3N1c3BlbmQodW5zaWduZWQgbG9uZyBhcmcsIGludCAoKmZuKSh1bnNpZ25lZCBsb25nKSlcXG5hcmNoL2FybTY0L2tlcm5lbC9zdXNwZW5kLmMtOTkte1xcbi0tXFxuYXJjaC9hcm02NC9rZXJuZWwvc3VzcGVuZC5jLTEwOC1cXHQgKiBiZWZvcmUgYWx0ZXJuYXRpdmVzIGFyZSBwYXRjaGVkLCBidXQgYXJlIG9ubHkgcmVzdG9yZWQgYnlcXG5hcmNoL2FybTY0L2tlcm5lbC9zdXNwZW5kLmM6MTA5OlxcdCAqIF9fY3B1X3N1c3BlbmRfZXhpdCgpIGFmdGVyIGFsdGVybmF0aXZlcyBhcmUgcGF0Y2hlZC4gVG8gYXZvaWRcXG5hcmNoL2FybTY0L2tlcm5lbC9zdXNwZW5kLmMtMTEwLVxcdCAqIGFjY2lkZW50YWxseSBsb3NpbmcgdGhlc2UgYml0cyB3ZSBtdXN0IG5vdCBhdHRlbXB0IHRvIHN1c3BlbmQgdW50aWxcXG4tLVxcbmFyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuYy0xNDQtXFxuYXJjaC9hcm02NC9rZXJuZWwvc3VzcGVuZC5jOjE0NTpcXHRpZiAoX19jcHVfc3VzcGVuZF9lbnRlcihcXHUwMDI2c3RhdGUpKSB7XFxuYXJjaC9hcm02NC9rZXJuZWwvc3VzcGVuZC5jLTE0Ni1cXHRcXHQvKiBDYWxsIHRoZSBzdXNwZW5kIGZpbmlzaGVyICovXFxuLS1cXG5hcmNoL2FybTY0L2tlcm5lbC9zdXNwZW5kLmMtMTUwLVxcdFxcdCAqIE5ldmVyIGdldHMgaGVyZSwgdW5sZXNzIHRoZSBzdXNwZW5kIGZpbmlzaGVyIGZhaWxzLlxcbmFyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuYzoxNTE6XFx0XFx0ICogU3VjY2Vzc2Z1bCBjcHVfc3VzcGVuZCgpIHNob3VsZCByZXR1cm4gZnJvbSBjcHVfcmVzdW1lKCksXFxuYXJjaC9hcm02NC9rZXJuZWwvc3VzcGVuZC5jLTE1Mi1cXHRcXHQgKiByZXR1cm5pbmcgdGhyb3VnaCB0aGlzIGNvZGUgcGF0aCBpcyBjb25zaWRlcmVkIGFuIGVycm9yXFxuLS1cXG5hcmNoL2FybTY0L2tlcm5lbC9zdXNwZW5kLmMtMTYzLVxcdFxcdFxcdGN0X2NwdWlkbGVfZXhpdCgpO1xcbmFyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuYzoxNjQ6XFx0XFx0X19jcHVfc3VzcGVuZF9leGl0KCk7XFxuYXJjaC9hcm02NC9rZXJuZWwvc3VzcGVuZC5jLTE2NS1cXHR9XFxuLS1cXG5hcmNoL2FybTY0L2tlcm5lbC9zdXNwZW5kLmMtMTgwLVxcbmFyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuYzoxODE6c3RhdGljIGludCBfX2luaXQgY3B1X3N1c3BlbmRfaW5pdCh2b2lkKVxcbmFyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuYy0xODIte1xcbi0tXFxuYXJjaC9hcm02NC9rZXJuZWwvc3VzcGVuZC5jLTE5MS19XFxuYXJjaC9hcm02NC9rZXJuZWwvc3VzcGVuZC5jOjE5MjplYXJseV9pbml0Y2FsbChjcHVfc3VzcGVuZF9pbml0KTtcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL2FybS5jPTc2OT1ib29sIGt2bV9hcm1fdmNwdV9zdG9wcGVkKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL2FybS5jLTc3My1cXG5hcmNoL2FybTY0L2t2bS9hcm0uYzo3NzQ6c3RhdGljIHZvaWQga3ZtX2FybV92Y3B1X3N1c3BlbmQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbmFyY2gvYXJtNjQva3ZtL2FybS5jLTc3NS17XFxuLS1cXG5hcmNoL2FybTY0L2t2bS9hcm0uYy03ODAtXFxuYXJjaC9hcm02NC9rdm0vYXJtLmM6NzgxOnN0YXRpYyBib29sIGt2bV9hcm1fdmNwdV9zdXNwZW5kZWQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbmFyY2gvYXJtNjQva3ZtL2FybS5jLTc4Mi17XFxuLS1cXG5hcmNoL2FybTY0L2t2bS9hcm0uYz03OTQ9aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X21wc3RhdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbi0tXFxuYXJjaC9hcm02NC9rdm0vYXJtLmMtODA4LVxcdGNhc2UgS1ZNX01QX1NUQVRFX1NVU1BFTkRFRDpcXG5hcmNoL2FybTY0L2t2bS9hcm0uYzo4MDk6XFx0XFx0a3ZtX2FybV92Y3B1X3N1c3BlbmQodmNwdSk7XFxuYXJjaC9hcm02NC9rdm0vYXJtLmMtODEwLVxcdFxcdGJyZWFrO1xcbi0tXFxuYXJjaC9hcm02NC9rdm0vYXJtLmM9MTA0MD12b2lkIGt2bV92Y3B1X3dmaShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL2FybTY0L2t2bS9hcm0uYy0xMDY1LVxcbmFyY2gvYXJtNjQva3ZtL2FybS5jOjEwNjY6c3RhdGljIGludCBrdm1fdmNwdV9zdXNwZW5kKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG5hcmNoL2FybTY0L2t2bS9hcm0uYy0xMDY3LXtcXG5hcmNoL2FybTY0L2t2bS9hcm0uYzoxMDY4OlxcdGlmICgha3ZtX2FybV92Y3B1X3N1c3BlbmRlZCh2Y3B1KSlcXG5hcmNoL2FybTY0L2t2bS9hcm0uYy0xMDY5LVxcdFxcdHJldHVybiAxO1xcbi0tXFxuYXJjaC9hcm02NC9rdm0vYXJtLmM9MTEwOD1zdGF0aWMgaW50IGNoZWNrX3ZjcHVfcmVxdWVzdHMoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vYXJtLmMtMTE0Ny1cXHRcXHRpZiAoa3ZtX2NoZWNrX3JlcXVlc3QoS1ZNX1JFUV9TVVNQRU5ELCB2Y3B1KSlcXG5hcmNoL2FybTY0L2t2bS9hcm0uYzoxMTQ4OlxcdFxcdFxcdHJldHVybiBrdm1fdmNwdV9zdXNwZW5kKHZjcHUpO1xcbmFyY2gvYXJtNjQva3ZtL2FybS5jLTExNDktXFxuLS1cXG5hcmNoL2FybTY0L2t2bS9hcm0uYz0yMzk5PXN0YXRpYyBib29sIF9faW5pdCBpbml0X3BzY2lfcmVsYXkodm9pZClcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL2FybS5jLTI0MTQtXFx0XFx0a3ZtX2hvc3RfcHNjaV9jb25maWcuZnVuY3Rpb25faWRzXzBfMSA9IGdldF9wc2NpXzBfMV9mdW5jdGlvbl9pZHMoKTtcXG5hcmNoL2FybTY0L2t2bS9hcm0uYzoyNDE1OlxcdFxcdGluaXRfcHNjaV8wXzFfaW1wbF9zdGF0ZShrdm1faG9zdF9wc2NpX2NvbmZpZywgY3B1X3N1c3BlbmQpO1xcbmFyY2gvYXJtNjQva3ZtL2FybS5jLTI0MTYtXFx0XFx0aW5pdF9wc2NpXzBfMV9pbXBsX3N0YXRlKGt2bV9ob3N0X3BzY2lfY29uZmlnLCBjcHVfb24pO1xcbi0tXFxuYXJjaC9hcm02NC9rdm0vaHlwL252aGUvcHNjaS1yZWxheS5jPTQ5PXN0YXRpYyBib29sIGlzX3BzY2lfMF8xX2NhbGwodTY0IGZ1bmNfaWQpXFxuYXJjaC9hcm02NC9rdm0vaHlwL252aGUvcHNjaS1yZWxheS5jLTUwLXtcXG5hcmNoL2FybTY0L2t2bS9oeXAvbnZoZS9wc2NpLXJlbGF5LmM6NTE6XFx0cmV0dXJuIChpc19wc2NpXzBfMShjcHVfc3VzcGVuZCwgZnVuY19pZCkgfHxcXG5hcmNoL2FybTY0L2t2bS9oeXAvbnZoZS9wc2NpLXJlbGF5LmMtNTItXFx0XFx0aXNfcHNjaV8wXzEoY3B1X29uLCBmdW5jX2lkKSB8fFxcbi0tXFxuYXJjaC9hcm02NC9rdm0vaHlwL252aGUvcHNjaS1yZWxheS5jPTEwOD1zdGF0aWMgaW50IHBzY2lfY3B1X29uKHU2NCBmdW5jX2lkLCBzdHJ1Y3Qga3ZtX2NwdV9jb250ZXh0ICpob3N0X2N0eHQpXFxuLS1cXG5hcmNoL2FybTY0L2t2bS9oeXAvbnZoZS9wc2NpLXJlbGF5LmMtMTUxLVxcbmFyY2gvYXJtNjQva3ZtL2h5cC9udmhlL3BzY2ktcmVsYXkuYzoxNTI6c3RhdGljIGludCBwc2NpX2NwdV9zdXNwZW5kKHU2NCBmdW5jX2lkLCBzdHJ1Y3Qga3ZtX2NwdV9jb250ZXh0ICpob3N0X2N0eHQpXFxuYXJjaC9hcm02NC9rdm0vaHlwL252aGUvcHNjaS1yZWxheS5jLTE1My17XFxuLS1cXG5hcmNoL2FybTY0L2t2bS9oeXAvbnZoZS9wc2NpLXJlbGF5LmM9MjQwPXN0YXRpYyB1bnNpZ25lZCBsb25nIHBzY2lfMF8xX2hhbmRsZXIodTY0IGZ1bmNfaWQsIHN0cnVjdCBrdm1fY3B1X2NvbnRleHQgKmhvc3RfY3R4dClcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL2h5cC9udmhlL3BzY2ktcmVsYXkuYy0yNDUtXFx0XFx0cmV0dXJuIHBzY2lfY3B1X29uKGZ1bmNfaWQsIGhvc3RfY3R4dCk7XFxuYXJjaC9hcm02NC9rdm0vaHlwL252aGUvcHNjaS1yZWxheS5jOjI0NjpcXHRpZiAoaXNfcHNjaV8wXzEoY3B1X3N1c3BlbmQsIGZ1bmNfaWQpKVxcbmFyY2gvYXJtNjQva3ZtL2h5cC9udmhlL3BzY2ktcmVsYXkuYzoyNDc6XFx0XFx0cmV0dXJuIHBzY2lfY3B1X3N1c3BlbmQoZnVuY19pZCwgaG9zdF9jdHh0KTtcXG5hcmNoL2FybTY0L2t2bS9oeXAvbnZoZS9wc2NpLXJlbGF5LmMtMjQ4LVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vaHlwL252aGUvcHNjaS1yZWxheS5jPTI1Mj1zdGF0aWMgdW5zaWduZWQgbG9uZyBwc2NpXzBfMl9oYW5kbGVyKHU2NCBmdW5jX2lkLCBzdHJ1Y3Qga3ZtX2NwdV9jb250ZXh0ICpob3N0X2N0eHQpXFxuLS1cXG5hcmNoL2FybTY0L2t2bS9oeXAvbnZoZS9wc2NpLXJlbGF5LmMtMjY5LVxcdGNhc2UgUFNDSV8wXzJfRk42NF9DUFVfU1VTUEVORDpcXG5hcmNoL2FybTY0L2t2bS9oeXAvbnZoZS9wc2NpLXJlbGF5LmM6MjcwOlxcdFxcdHJldHVybiBwc2NpX2NwdV9zdXNwZW5kKGZ1bmNfaWQsIGhvc3RfY3R4dCk7XFxuYXJjaC9hcm02NC9rdm0vaHlwL252aGUvcHNjaS1yZWxheS5jLTI3MS1cXHRjYXNlIFBTQ0lfMF8yX0ZONjRfQ1BVX09OOlxcbi0tXFxuYXJjaC9hcm02NC9rdm0vcHNjaS5jPTI2PXN0YXRpYyB1bnNpZ25lZCBsb25nIHBzY2lfYWZmaW5pdHlfbWFzayh1bnNpZ25lZCBsb25nIGFmZmluaXR5X2xldmVsKVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vcHNjaS5jLTMzLVxcbmFyY2gvYXJtNjQva3ZtL3BzY2kuYzozNDpzdGF0aWMgdW5zaWduZWQgbG9uZyBrdm1fcHNjaV92Y3B1X3N1c3BlbmQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbmFyY2gvYXJtNjQva3ZtL3BzY2kuYy0zNS17XFxuLS1cXG5hcmNoL2FybTY0L2t2bS9wc2NpLmM9MjQ2PXN0YXRpYyBpbnQga3ZtX3BzY2lfMF8yX2NhbGwoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vcHNjaS5jLTI2MS1cXHRjYXNlIFBTQ0lfMF8yX0ZONjRfQ1BVX1NVU1BFTkQ6XFxuYXJjaC9hcm02NC9rdm0vcHNjaS5jOjI2MjpcXHRcXHR2YWwgPSBrdm1fcHNjaV92Y3B1X3N1c3BlbmQodmNwdSk7XFxuYXJjaC9hcm02NC9rdm0vcHNjaS5jLTI2My1cXHRcXHRicmVhaztcXG4tLVxcbmFyY2gvYXJtNjQvbW0vcHJvYy5TLTg2LSAqXFxuYXJjaC9hcm02NC9tbS9wcm9jLlM6ODc6ICogVGhpcyBtdXN0IGJlIGtlcHQgaW4gc3luYyB3aXRoIHN0cnVjdCBjcHVfc3VzcGVuZF9jdHggaW4gXFx1MDAzY2FzbS9zdXNwZW5kLmhcXHUwMDNlLlxcbmFyY2gvYXJtNjQvbW0vcHJvYy5TLTg4LSAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxOToyNzo1OC4xMTI3Njg3MTNaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTQ3NzE0NDI2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzOlxuXG4qKkNQVSBTdXNwZW5kIEZ1bmN0aW9uIElucXVpcnkqKlxuXG5Pa2F5LCBzbyBJIHNlZSBgY3B1X3N1c3BlbmRgIGlzIGRlZmluZWQgYW5kIGV4cG9ydGVkLCBzcGVjaWZpY2FsbHkgaW4gYGFyY2gvYXJtNjQva2VybmVsL3N1c3BlbmQuY2AuIFNlZW1zIHN0cmFpZ2h0Zm9yd2FyZCBlbm91Z2guIEJ1dCwgd2FpdCBhIHNlY29uZCwgSSBuZWVkIHRvIGNvbmZpcm0gc29tZXRoaW5nLiBJcyB0aGF0IGV4cG9ydCBpbnRlbmRlZCBmb3IgdGhlIGtlcm5lbCBwcm9wZXIgKm9ubHkqLCBvciBpcyBpdCBhbHNvIHZpc2libGUgYW5kIHVzYWJsZSBieSBtb2R1bGVzPyBUaGF0J3MgdGhlIGNyaXRpY2FsIHF1ZXN0aW9uIGhlcmUuIEkgbmVlZCB0byBrbm93IGlmIG1vZHVsZXMgY2FuIGhvb2sgaW50byB0aGlzIHN1c3BlbmQgZnVuY3Rpb24sIG9yIGlmIGl0J3Mgc3RyaWN0bHkgYSBjb3JlIGtlcm5lbCBjYXBhYmlsaXR5LiBMZXQncyBkaWcgZGVlcGVyIGFuZCB2ZXJpZnkgdGhlIGV4cG9ydCB2aXNpYmlsaXR5LiBUaGF0J3MgdGhlIG5leHQgc3RlcC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTExNDYsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxOToyODowMS42NjA0ODU1MjlaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTc5NjI0ODQ2LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJFWFBPUlRfU1lNQk9MLipjcHVfc3VzcGVuZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL2FybTY0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMTk6Mjg6MDEuODQwMTE4NDk1WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDAyMDI1MjMzOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIENhbGxlcnMgb2YgdGhpcyBGdW5jdGlvbioqXG5cbkFscmlnaHQsIHNvIGl0IHNlZW1zIEkgd2FzIG1pc3Rha2VuIGFib3V0IHRoZSBleHBvcnQgc3RhdHVzIG9mIHRoaXMgZnVuY3Rpb24uIEl0J3Mgbm90IGV4cG9ydGVkLiBUaGF0IGNoYW5nZXMgdGhpbmdzIGEgYml0LiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGVyZSBpdCAqaXMqIGNhbGxlZC4gRnJvbSB3aGF0IEkgY2FuIHRlbGwsIGl0J3MgYmVpbmcgY2FsbGVkIGZyb20gYSBmZXcga2V5IHBsYWNlczogYGFyY2gvYXJtNjQva2VybmVsL2hpYmVybmF0ZS5jYCB3aXRoaW4gdGhlIGBzd3N1c3BfYXJjaF9zdXNwZW5kYCBmdW5jdGlvbiwgYW5kIGFsc28gZnJvbSBgYXJjaC9hcm02NC9rZXJuZWwvcHNjaS5jYCwgbGlrZWx5IHRyaWdnZXJlZCBkdXJpbmcgQ1BVIGlkbGUgb3IgdGhlIHN5c3RlbSBzdXNwZW5kIHByb2Nlc3MuIEhtbSwgdGhhdCBzdWdnZXN0cyBhIGNvcmUgcG93ZXIgbWFuYWdlbWVudCBvciBoaWJlcm5hdGlvbi1yZWxhdGVkIGZ1bmN0aW9uLiBPa2F5LCBpZiBpdCdzIHJlbGF0ZWQgdG8gQ1BVIGlkbGUsIEkgc2hvdWxkIHByb2JhYmx5IGNoZWNrIGBhcmNoL2FybTY0L2tlcm5lbC9jcHVpZGxlLmNgLCBvciBzb21ldGhpbmcgc2ltaWxhciB0byBpdC4gVGhhdCdzIGxpa2VseSB3aGVyZSB0aGUgY29ubmVjdGlvbiB3aWxsIGJlLiBUaW1lIHRvIGRpZyBpbnRvIHRob3NlIGZpbGVzIGFuZCBzZWUgd2hhdCBJIGNhbiBmaW5kLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTM3MiwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDE5OjI4OjA1Ljg2MDM3NDkxNFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTg0NTQ5MTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY3B1X3N1c3BlbmRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9jcHVpZGxlL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2NwdWlkbGUvY3B1aWRsZS1iaWdfbGl0dGxlLmM9MTAyPXN0YXRpYyBpbnQgbm90cmFjZSBibF9wb3dlcmRvd25fZmluaXNoZXIodW5zaWduZWQgbG9uZyBhcmcpXFxuLS1cXG5kcml2ZXJzL2NwdWlkbGUvY3B1aWRsZS1iaWdfbGl0dGxlLmMtMTA5LVxcdG1jcG1fc2V0X2VudHJ5X3ZlY3RvcihjcHUsIGNsdXN0ZXIsIGNwdV9yZXN1bWUpO1xcbmRyaXZlcnMvY3B1aWRsZS9jcHVpZGxlLWJpZ19saXR0bGUuYzoxMTA6XFx0bWNwbV9jcHVfc3VzcGVuZCgpO1xcbmRyaXZlcnMvY3B1aWRsZS9jcHVpZGxlLWJpZ19saXR0bGUuYy0xMTEtXFxuLS1cXG5kcml2ZXJzL2NwdWlkbGUvY3B1aWRsZS1iaWdfbGl0dGxlLmM9MTI1PXN0YXRpYyBfX2NwdWlkbGUgaW50IGJsX2VudGVyX3Bvd2VyZG93bihzdHJ1Y3QgY3B1aWRsZV9kZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvY3B1aWRsZS9jcHVpZGxlLWJpZ19saXR0bGUuYy0xMzAtXFxuZHJpdmVycy9jcHVpZGxlL2NwdWlkbGUtYmlnX2xpdHRsZS5jOjEzMTpcXHRjcHVfc3VzcGVuZCgwLCBibF9wb3dlcmRvd25fZmluaXNoZXIpO1xcbmRyaXZlcnMvY3B1aWRsZS9jcHVpZGxlLWJpZ19saXR0bGUuYy0xMzItXFxuLS1cXG5kcml2ZXJzL2NwdWlkbGUvY3B1aWRsZS1jYWx4ZWRhLmM9Mjk9c3RhdGljIGludCBjYWx4ZWRhX2lkbGVfZmluaXNoKHVuc2lnbmVkIGxvbmcgdmFsKVxcbmRyaXZlcnMvY3B1aWRsZS9jcHVpZGxlLWNhbHhlZGEuYy0zMC17XFxuZHJpdmVycy9jcHVpZGxlL2NwdWlkbGUtY2FseGVkYS5jOjMxOlxcdHJldHVybiBwc2NpX29wcy5jcHVfc3VzcGVuZChDQUxYRURBX0lETEVfUEFSQU0sIF9fcGEoY3B1X3Jlc3VtZSkpO1xcbmRyaXZlcnMvY3B1aWRsZS9jcHVpZGxlLWNhbHhlZGEuYy0zMi19XFxuLS1cXG5kcml2ZXJzL2NwdWlkbGUvY3B1aWRsZS1jYWx4ZWRhLmM9MzQ9c3RhdGljIGludCBjYWx4ZWRhX3B3cmRvd25faWRsZShzdHJ1Y3QgY3B1aWRsZV9kZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvY3B1aWRsZS9jcHVpZGxlLWNhbHhlZGEuYy0zOC1cXHRjcHVfcG1fZW50ZXIoKTtcXG5kcml2ZXJzL2NwdWlkbGUvY3B1aWRsZS1jYWx4ZWRhLmM6Mzk6XFx0Y3B1X3N1c3BlbmQoMCwgY2FseGVkYV9pZGxlX2ZpbmlzaCk7XFxuZHJpdmVycy9jcHVpZGxlL2NwdWlkbGUtY2FseGVkYS5jLTQwLVxcdGNwdV9wbV9leGl0KCk7XFxuLS1cXG5kcml2ZXJzL2NwdWlkbGUvY3B1aWRsZS1tdmVidS12Ny5jLTI1LVxcbmRyaXZlcnMvY3B1aWRsZS9jcHVpZGxlLW12ZWJ1LXY3LmM6MjY6c3RhdGljIGludCAoKm12ZWJ1X3Y3X2NwdV9zdXNwZW5kKShpbnQpO1xcbmRyaXZlcnMvY3B1aWRsZS9jcHVpZGxlLW12ZWJ1LXY3LmMtMjctXFxuZHJpdmVycy9jcHVpZGxlL2NwdWlkbGUtbXZlYnUtdjcuYz0yOD1zdGF0aWMgX19jcHVpZGxlIGludCBtdmVidV92N19lbnRlcl9pZGxlKHN0cnVjdCBjcHVpZGxlX2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9jcHVpZGxlL2NwdWlkbGUtbXZlYnUtdjcuYy0zOS1cXHRjdF9jcHVpZGxlX2VudGVyKCk7XFxuZHJpdmVycy9jcHVpZGxlL2NwdWlkbGUtbXZlYnUtdjcuYzo0MDpcXHRyZXQgPSBtdmVidV92N19jcHVfc3VzcGVuZChkZWVwaWRsZSk7XFxuZHJpdmVycy9jcHVpZGxlL2NwdWlkbGUtbXZlYnUtdjcuYy00MS1cXHRjdF9jcHVpZGxlX2V4aXQoKTtcXG4tLVxcbmRyaXZlcnMvY3B1aWRsZS9jcHVpZGxlLW12ZWJ1LXY3LmM9MTA1PXN0YXRpYyBpbnQgbXZlYnVfdjdfY3B1aWRsZV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9jcHVpZGxlL2NwdWlkbGUtbXZlYnUtdjcuYy0xMTEtXFxuZHJpdmVycy9jcHVpZGxlL2NwdWlkbGUtbXZlYnUtdjcuYzoxMTI6XFx0bXZlYnVfdjdfY3B1X3N1c3BlbmQgPSBwZGV2LVxcdTAwM2VkZXYucGxhdGZvcm1fZGF0YTtcXG5kcml2ZXJzL2NwdWlkbGUvY3B1aWRsZS1tdmVidS12Ny5jLTExMy1cXG4tLVxcbmRyaXZlcnMvY3B1aWRsZS9jcHVpZGxlLXBzY2kuYz02ND1zdGF0aWMgX19jcHVpZGxlIGludCBfX3BzY2lfZW50ZXJfZG9tYWluX2lkbGVfc3RhdGUoc3RydWN0IGNwdWlkbGVfZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL2NwdWlkbGUvY3B1aWRsZS1wc2NpLmMtODktXFx0dHJhY2VfcHNjaV9kb21haW5faWRsZV9lbnRlcihkZXYtXFx1MDAzZWNwdSwgc3RhdGUsIHMyaWRsZSk7XFxuZHJpdmVycy9jcHVpZGxlL2NwdWlkbGUtcHNjaS5jOjkwOlxcdHJldCA9IHBzY2lfY3B1X3N1c3BlbmRfZW50ZXIoc3RhdGUpID8gLTEgOiBpZHg7XFxuZHJpdmVycy9jcHVpZGxlL2NwdWlkbGUtcHNjaS5jLTkxLVxcdHRyYWNlX3BzY2lfZG9tYWluX2lkbGVfZXhpdChkZXYtXFx1MDAzZWNwdSwgc3RhdGUsIHMyaWRsZSk7XFxuLS1cXG5kcml2ZXJzL2NwdWlkbGUvY3B1aWRsZS1wc2NpLmM9MjE4PXN0YXRpYyBfX2NwdWlkbGUgaW50IHBzY2lfZW50ZXJfaWRsZV9zdGF0ZShzdHJ1Y3QgY3B1aWRsZV9kZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvY3B1aWRsZS9jcHVpZGxlLXBzY2kuYy0yMjItXFxuZHJpdmVycy9jcHVpZGxlL2NwdWlkbGUtcHNjaS5jOjIyMzpcXHRyZXR1cm4gQ1BVX1BNX0NQVV9JRExFX0VOVEVSX1BBUkFNX1JDVShwc2NpX2NwdV9zdXNwZW5kX2VudGVyLCBpZHgsIHN0YXRlW2lkeF0pO1xcbmRyaXZlcnMvY3B1aWRsZS9jcHVpZGxlLXBzY2kuYy0yMjQtfVxcbi0tXFxuZHJpdmVycy9jcHVpZGxlL2NwdWlkbGUtcHNjaS5jPTMxOD1zdGF0aWMgaW50IHBzY2lfY3B1X2luaXRfaWRsZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBjcHVpZGxlX2RyaXZlciAqZHJ2LFxcbi0tXFxuZHJpdmVycy9jcHVpZGxlL2NwdWlkbGUtcHNjaS5jLTMyNC1cXHQvKlxcbmRyaXZlcnMvY3B1aWRsZS9jcHVpZGxlLXBzY2kuYzozMjU6XFx0ICogSWYgdGhlIFBTQ0kgY3B1X3N1c3BlbmQgZnVuY3Rpb24gaG9vayBoYXMgbm90IGJlZW4gaW5pdGlhbGl6ZWRcXG5kcml2ZXJzL2NwdWlkbGUvY3B1aWRsZS1wc2NpLmMtMzI2LVxcdCAqIGlkbGUgc3RhdGVzIG11c3Qgbm90IGJlIGVuYWJsZWQsIHNvIGJhaWwgb3V0XFxuZHJpdmVycy9jcHVpZGxlL2NwdWlkbGUtcHNjaS5jLTMyNy1cXHQgKi9cXG5kcml2ZXJzL2NwdWlkbGUvY3B1aWRsZS1wc2NpLmM6MzI4OlxcdGlmICghcHNjaV9vcHMuY3B1X3N1c3BlbmQpXFxuZHJpdmVycy9jcHVpZGxlL2NwdWlkbGUtcHNjaS5jLTMyOS1cXHRcXHRyZXR1cm4gLUVPUE5PVFNVUFA7XFxuLS1cXG5kcml2ZXJzL2NwdWlkbGUvY3B1aWRsZS1xY29tLXNwbS5jPTQzPXN0YXRpYyBpbnQgcWNvbV9jcHVfc3BjKHN0cnVjdCBzcG1fZHJpdmVyX2RhdGEgKmRydilcXG4tLVxcbmRyaXZlcnMvY3B1aWRsZS9jcHVpZGxlLXFjb20tc3BtLmMtNDctXFx0c3BtX3NldF9sb3dfcG93ZXJfbW9kZShkcnYsIFBNX1NMRUVQX01PREVfU1BDKTtcXG5kcml2ZXJzL2NwdWlkbGUvY3B1aWRsZS1xY29tLXNwbS5jOjQ4OlxcdHJldCA9IGNwdV9zdXNwZW5kKDAsIHFjb21fcG1fY29sbGFwc2UpO1xcbmRyaXZlcnMvY3B1aWRsZS9jcHVpZGxlLXFjb20tc3BtLmMtNDktXFx0LypcXG4tLVxcbmRyaXZlcnMvY3B1aWRsZS9jcHVpZGxlLXRlZ3JhLmM9MTEyPXN0YXRpYyBpbnQgdGVncmFfY3B1aWRsZV9jYzZfZW50ZXIodW5zaWduZWQgaW50IGNwdSlcXG4tLVxcbmRyaXZlcnMvY3B1aWRsZS9jcHVpZGxlLXRlZ3JhLmMtMTE2LVxcdGlmIChjcHUgXFx1MDAzZSAwKSB7XFxuZHJpdmVycy9jcHVpZGxlL2NwdWlkbGUtdGVncmEuYzoxMTc6XFx0XFx0cmV0ID0gY3B1X3N1c3BlbmQoY3B1LCB0ZWdyYV9wbV9wYXJrX3NlY29uZGFyeV9jcHUpO1xcbmRyaXZlcnMvY3B1aWRsZS9jcHVpZGxlLXRlZ3JhLmMtMTE4LVxcdH0gZWxzZSB7XFxuLS1cXG5kcml2ZXJzL2NwdWlkbGUvY3B1aWRsZS10ZWdyYS5jPTEyOT1zdGF0aWMgaW50IHRlZ3JhX2NwdWlkbGVfYzdfZW50ZXIodm9pZClcXG4tLVxcbmRyaXZlcnMvY3B1aWRsZS9jcHVpZGxlLXRlZ3JhLmMtMTM2LVxcbmRyaXZlcnMvY3B1aWRsZS9jcHVpZGxlLXRlZ3JhLmM6MTM3OlxcdHJldHVybiBjcHVfc3VzcGVuZCgwLCB0ZWdyYTMwX3BtX3NlY29uZGFyeV9jcHVfc3VzcGVuZCk7XFxuZHJpdmVycy9jcHVpZGxlL2NwdWlkbGUtdGVncmEuYy0xMzgtfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxOToyODowNS45MTg4Mzc5MzNaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Njc5MTYzMjczMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIHRoZSBDUFUgU3VzcGVuZCBQYXRoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IHR3ZWFrcyBgY3B1X3N1c3BlbmRgLiBJdCdzIHVzZWQgZm9yIGJvdGggQ1BVIGlkbGluZyBhbmQgZnVsbCBzeXN0ZW0gc3VzcGVuZCwgd2hpY2ggbWFrZXMgaXQgaW50ZXJlc3RpbmcuIFRoZSBtb2RpZmljYXRpb24gaXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCDigJMgaXQgY29uZGl0aW9uYWxseSBjYWxscyB0aG9zZSBgY3RfY3B1aWRsZV9lbnRlcigpYCBhbmQgYGN0X2NwdWlkbGVfZXhpdCgpYCBmdW5jdGlvbnMgKm9ubHkqIHdoZW4gdGhlIGN1cnJlbnQgdGFzayBpcyBhY3R1YWxseSB0aGUgaWRsZSB0YXNrLiBUaGUgcmVhc29uIGlzIHByZXR0eSBjbGVhcjogd2UgZG9uJ3Qgd2FudCB0byBtZXNzIHdpdGggUkNVIGlkbGUgaGFuZGxpbmcgd2hlbiB3ZSdyZSBzdXNwZW5kaW5nIHRoZSBzeXN0ZW0sIGJlY2F1c2UgZHVyaW5nIHN1c3BlbmQgYGN1cnJlbnRgIHdvbid0IGJlIHRoZSBpZGxlIHRhc2suXG5cbklzIHRoaXMgc29tZXRoaW5nIHRoYXQgd2FycmFudHMgZnV6emluZyBhdHRlbnRpb24/IEFic29sdXRlbHksIHRoaXMgaXMgY29yZSBrZXJuZWwgY29kZSwgc28gYW55IHBvdGVudGlhbCBidWcgY291bGQgaGF2ZSBzaWduaWZpY2FudCBpbXBhY3QuIEFuZCB0aGVuIEkgdGhvdWdodCBhYm91dCBpdCwgYW5kIHJlYWxpemVkIHRoYXQgU3l6a2FsbGVyICpjYW4qIHRyaWdnZXIgc3lzdGVtIHN1c3BlbmQgdXNpbmcgYC9zeXMvcG93ZXIvc3RhdGVgISBQbHVzLCBDUFUgaWRsZSBpcyBhIGNvbnN0YW50bHktdHJpZ2dlcmVkIHBhdGguIFNvIHllcywgdGhpcyBpcyAqZGVmaW5pdGVseSogcmVhY2hhYmxlIGFuZCBmdXp6YWJsZS5cblxuTm93LCBsZXQncyBuYWlsIGRvd24gZXhhY3RseSAqd2hlcmUqIHRvIGZvY3VzLiBUaGUgbW9kaWZpZWQgZnVuY3Rpb24gaXMgYGNwdV9zdXNwZW5kYCwgc28gdGhhdCdzIHRoZSBvYnZpb3VzIHRhcmdldC4gTGV0J3MgbWFrZSBzdXJlIHRoYXQncyBhIGdvb2Qgc3ltYm9sIHRvIGZvY3VzIG9uLiBMb29rcyBsaWtlIGl0J3MgbG9jYXRlZCBpbiBgYXJjaC9hcm02NC9rZXJuZWwvc3VzcGVuZC5jYC4gT2theSwgdGhhdCdzIG5vdCBzdGF0aWMgYW5kIG5vdCBpbmxpbmVkLCB3aGljaCBtYWtlcyBpdCBhIGdyZWF0IGVudHJ5IHBvaW50LiBKdXN0IG5lZWQgdG8gbWFrZSBzdXJlIHRoZXJlIGFyZW4ndCBvdGhlciByZWxhdGVkIGV4cG9ydGVkIGZ1bmN0aW9ucyBpbiB0aGF0IG1vZHVsZSwgYnV0IGl0IGxvb2tzIGxpa2UgYGNwdV9zdXNwZW5kYCBpcyB0aGUgb25lLlxuXG5PbmUgbGFzdCB0aGluZywgYXJlIHRoZXJlIGFueSBzcGVjaWZpYyBDT05GSUcgb3B0aW9ucyB0aGF0IG1pZ2h0IGJlIHJlbGV2YW50PyBMb29rcyBsaWtlIGBhcmNoL2FybTY0L2tlcm5lbC9zdXNwZW5kLmNgIGdldHMgY29tcGlsZWQgd2hlbiBgQ09ORklHX0FSTTY0YCBpcyBzZXQsIGFuZCBsZXQncyBxdWlja2x5IGNoZWNrIHRoZSBgTWFrZWZpbGVgIHRvIG1ha2Ugc3VyZS4gVGhhdCBzaG91bGQgYmUgZ29vZCB0byBnby5cblxuXG4iLCJJbnB1dFRva2VucyI6MTM1NTIsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNDIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMTk6Mjg6MTIuNzEwNDcyOTE1WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5NDk2NDYwOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdXNwZW5kLm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9hcm02NC9rZXJuZWwvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9hcm02NC9rZXJuZWwvTWFrZWZpbGU9NDk9b2JqLSQoQ09ORklHX0hBVkVfU1RBVElDX0NBTEwpXFx0XFx0Kz0gc3RhdGljX2NhbGwub1xcbmFyY2gvYXJtNjQva2VybmVsL01ha2VmaWxlOjUwOm9iai0kKENPTkZJR19DUFVfUE0pXFx0XFx0XFx0Kz0gc2xlZXAubyBzdXNwZW5kLm9cXG5hcmNoL2FybTY0L2tlcm5lbC9NYWtlZmlsZS01MS1vYmotJChDT05GSUdfS0dEQilcXHRcXHRcXHQrPSBrZ2RiLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMTk6Mjg6MTIuODA1NDQyMTQzWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1ODc3NzYwNTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBEZXBlbmRlbmN5IG9mIENPTkZJR19DUFVfUE0qKlxuXG5BbHJpZ2h0LCBzbyB3ZSd2ZSBnb3QgYSByZXF1aXJlbWVudCDigJMgYENPTkZJR19DUFVfUE1gIGlzIGFic29sdXRlbHkgbmVjZXNzYXJ5IGZvciBzb21ldGhpbmcgaW4gdGhlIHByb2plY3QuIE15IGltbWVkaWF0ZSB0aG91Z2h0IHByb2Nlc3MgaXMgdG8gdW5kZXJzdGFuZCAqd2h5KiBpdCdzIG5lZWRlZCwgd2hpY2ggbmF0dXJhbGx5IGxlYWRzIHRvIGZpZ3VyaW5nIG91dCB3aGF0J3MgZW5hYmxpbmcgaXQgdXBzdHJlYW0uIFRpbWUgdG8gdHJhY2UgdGhlIGRlcGVuZGVuY3kgY2hhaW4uIEkgbmVlZCB0byBxdWlja2x5IGlkZW50aWZ5IHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgb3Igc3lzdGVtIGVsZW1lbnRzIHRoYXQgdWx0aW1hdGVseSB0cmlnZ2VyIGBDT05GSUdfQ1BVX1BNYC4gSSdsbCBwcm9iYWJseSBzdGFydCB3aXRoIGEgZ3JlcCB0aHJvdWdoIHRoZSBLY29uZmlnIGZpbGVzLCBidXQgSSdsbCBuZWVkIHRvIGtlZXAgYW4gb3BlbiBtaW5kIGZvciBtb3JlIG9ic2N1cmUgZGVwZW5kZW5jaWVzIHRoYXQgbWlnaHQgYmUgbGVzcyBvYnZpb3VzLiBBIGRlZXBlciBkaXZlIGludG8gdGhlIHJlbGV2YW50IHNvdXJjZSBjb2RlIG1pZ2h0IGFsc28gYmUgbmVlZGVkIHRvIHNlZSBpZiBpdCdzIGJlaW5nIGVuYWJsZWQgaW5kaXJlY3RseSB0aHJvdWdoIHNvbWUgY29tcGxleCBsb2dpYy4gTGV0J3MgZGlnIGluIGFuZCBzZWUgd2hlcmUgdGhpcyByYWJiaXQgaG9sZSBsZWFkcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTQ0MjgsIk91dHB1dFRva2VucyI6MjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxOToyODoxNi4zOTMyMjEyMzZaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0NDg1Mzg1MTMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIENQVV9QTVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9jc2t5L0tjb25maWc9MjMyPWNob2ljZVxcbi0tXFxuYXJjaC9jc2t5L0tjb25maWctMjM3LVxcbmFyY2gvY3NreS9LY29uZmlnOjIzODpjb25maWcgQ1BVX1BNVV9OT05FXFxuYXJjaC9jc2t5L0tjb25maWctMjM5LVxcdGJvb2wgXFxcIk5vbmVcXFwiXFxuLS1cXG5hcmNoL2Nza3kvS2NvbmZpZz0yNDY9Y2hvaWNlXFxuLS1cXG5hcmNoL2Nza3kvS2NvbmZpZy0yNDktXFxuYXJjaC9jc2t5L0tjb25maWc6MjUwOmNvbmZpZyBDUFVfUE1fTk9ORVxcbmFyY2gvY3NreS9LY29uZmlnLTI1MS1cXHRib29sIFxcXCJOb25lXFxcIlxcbmFyY2gvY3NreS9LY29uZmlnLTI1Mi1cXG5hcmNoL2Nza3kvS2NvbmZpZzoyNTM6Y29uZmlnIENQVV9QTV9XQUlUXFxuYXJjaC9jc2t5L0tjb25maWctMjU0LVxcdGJvb2wgXFxcIndhaXRcXFwiXFxuYXJjaC9jc2t5L0tjb25maWctMjU1LVxcbmFyY2gvY3NreS9LY29uZmlnOjI1Njpjb25maWcgQ1BVX1BNX0RPWkVcXG5hcmNoL2Nza3kvS2NvbmZpZy0yNTctXFx0Ym9vbCBcXFwiZG96ZVxcXCJcXG5hcmNoL2Nza3kvS2NvbmZpZy0yNTgtXFxuYXJjaC9jc2t5L0tjb25maWc6MjU5OmNvbmZpZyBDUFVfUE1fU1RPUFxcbmFyY2gvY3NreS9LY29uZmlnLTI2MC1cXHRib29sIFxcXCJzdG9wXFxcIlxcbi0tXFxua2VybmVsL3Bvd2VyL0tjb25maWc9Mzg2PWNvbmZpZyBQTV9HRU5FUklDX0RPTUFJTlNfT0ZcXG4tLVxcbmtlcm5lbC9wb3dlci9LY29uZmlnLTM4OS1cXG5rZXJuZWwvcG93ZXIvS2NvbmZpZzozOTA6Y29uZmlnIENQVV9QTVxcbmtlcm5lbC9wb3dlci9LY29uZmlnLTM5MS1cXHRib29sXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDE5OjI4OjE4Ljg0MTc2NjI3OVoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzE1NTI2OTM5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGZyb20gYW4gZXhwZXJ0J3MgcGVyc3BlY3RpdmU6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgYENPTkZJR19DUFVfUE1gIEtlcm5lbCBDb25maWd1cmF0aW9uIE9wdGlvbioqXG5cbkFscmlnaHQsIHNvIGBDT05GSUdfQ1BVX1BNYC4gIFRoYXQncyBhIGJvb2xlYW4gb3B0aW9uLCBsb2NhdGVkIHJpZ2h0IHRoZXJlIGluIGBrZXJuZWwvcG93ZXIvS2NvbmZpZ2AuICBNeSBpbml0aWFsIHRob3VnaHQgaXMsIFwiT2theSwgcG93ZXIgbWFuYWdlbWVudCBhdCB0aGUgQ1BVIGxldmVsLCBpbnRlcmVzdGluZy4gIExldCdzIHNlZSB3aGF0IG90aGVyIGNvbmZpZ3VyYXRpb25zIGRlcGVuZCBvbiB0aGlzIG9uZS5cIiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzIGFuZCBpbXBsaWNhdGlvbnMgaGVyZS4gTXkgbmV4dCBtb3ZlIGlzIGNsZWFyOiBJIG5lZWQgdG8gcXVpY2tseSBmaWd1cmUgb3V0IHdoaWNoIG90aGVyIGNvbmZpZ3VyYXRpb25zICpzZWxlY3QqIHRoaXMuIFRoYXQgd2lsbCB0ZWxsIG1lIHdoZXJlIHRoaXMgc2V0dGluZyBpcyBwaXZvdGFsIGFuZCB3aGF0IG90aGVyIGZlYXR1cmVzIGFyZSB0aWVkIHRvIGl0LiBUaGlzIGluZm9ybWF0aW9uIGlzIGtleSB0byB1bmRlcnN0YW5kaW5nIGl0cyBvdmVyYWxsIHJvbGUgYW5kIGltcGFjdCBvbiB0aGUga2VybmVsJ3MgYmVoYXZpb3VyLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTAzMiwiT3V0cHV0VG9rZW5zIjoyNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDE5OjI4OjIyLjE1NzI5ODIwOFoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjM0OTQ1MzAwNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzZWxlY3QgQ1BVX1BNXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL2FybS9LY29uZmlnPTI9Y29uZmlnIEFSTVxcbi0tXFxuYXJjaC9hcm0vS2NvbmZpZy01OC1cXHRzZWxlY3QgQ0xPTkVfQkFDS1dBUkRTXFxuYXJjaC9hcm0vS2NvbmZpZzo1OTpcXHRzZWxlY3QgQ1BVX1BNIGlmIFNVU1BFTkQgfHwgQ1BVX0lETEVcXG5hcmNoL2FybS9LY29uZmlnLTYwLVxcdHNlbGVjdCBEQ0FDSEVfV09SRF9BQ0NFU1MgaWYgSEFWRV9FRkZJQ0lFTlRfVU5BTElHTkVEX0FDQ0VTU1xcbi0tXFxuYXJjaC9hcm0vS2NvbmZpZz05OTY9Y29uZmlnIEJMX1NXSVRDSEVSXFxuLS1cXG5hcmNoL2FybS9LY29uZmlnLTk5OC1cXHRkZXBlbmRzIG9uIEJJR19MSVRUTEUgXFx1MDAyNlxcdTAwMjYgTUNQTSBcXHUwMDI2XFx1MDAyNiBIT1RQTFVHX0NQVSBcXHUwMDI2XFx1MDAyNiBBUk1fR0lDXFxuYXJjaC9hcm0vS2NvbmZpZzo5OTk6XFx0c2VsZWN0IENQVV9QTVxcbmFyY2gvYXJtL0tjb25maWctMTAwMC1cXHRoZWxwXFxuLS1cXG5hcmNoL2FybTY0L0tjb25maWc9Mj1jb25maWcgQVJNNjRcXG4tLVxcbmFyY2gvYXJtNjQvS2NvbmZpZy0xMTEtXFx0c2VsZWN0IENPTU1PTl9DTEtcXG5hcmNoL2FybTY0L0tjb25maWc6MTEyOlxcdHNlbGVjdCBDUFVfUE0gaWYgKFNVU1BFTkQgfHwgQ1BVX0lETEUpXFxuYXJjaC9hcm02NC9LY29uZmlnLTExMy1cXHRzZWxlY3QgQ1BVTUFTS19PRkZTVEFDSyBpZiBOUl9DUFVTIFxcdTAwM2UgMjU2XFxuLS1cXG5hcmNoL2xvb25nYXJjaC9LY29uZmlnPTI9Y29uZmlnIExPT05HQVJDSFxcbi0tXFxuYXJjaC9sb29uZ2FyY2gvS2NvbmZpZy04Ny1cXHRzZWxlY3QgQ09NTU9OX0NMS1xcbmFyY2gvbG9vbmdhcmNoL0tjb25maWc6ODg6XFx0c2VsZWN0IENQVV9QTVxcbmFyY2gvbG9vbmdhcmNoL0tjb25maWctODktXFx0c2VsZWN0IEVEQUNfU1VQUE9SVFxcbi0tXFxuYXJjaC9taXBzL0tjb25maWc9Mj1jb25maWcgTUlQU1xcbi0tXFxuYXJjaC9taXBzL0tjb25maWctMzUtXFx0c2VsZWN0IENQVV9OT19FRkZJQ0lFTlRfRkZTIGlmIChUQVJHRVRfSVNBX1JFViBcXHUwMDNjIDEpXFxuYXJjaC9taXBzL0tjb25maWc6MzY6XFx0c2VsZWN0IENQVV9QTSBpZiBDUFVfSURMRSB8fCBTVVNQRU5EXFxuYXJjaC9taXBzL0tjb25maWctMzctXFx0c2VsZWN0IEdFTkVSSUNfQVRPTUlDNjQgaWYgITY0QklUXFxuLS1cXG5hcmNoL3Jpc2N2L0tjb25maWc9MTM9Y29uZmlnIFJJU0NWXFxuLS1cXG5hcmNoL3Jpc2N2L0tjb25maWctOTgtXFx0c2VsZWN0IENQVV9OT19FRkZJQ0lFTlRfRkZTIGlmICFSSVNDVl9JU0FfWkJCXFxuYXJjaC9yaXNjdi9LY29uZmlnOjk5OlxcdHNlbGVjdCBDUFVfUE0gaWYgQ1BVX0lETEUgfHwgSElCRVJOQVRJT04gfHwgU1VTUEVORFxcbmFyY2gvcmlzY3YvS2NvbmZpZy0xMDAtXFx0c2VsZWN0IERZTkFNSUNfRlRSQUNFIGlmIEZVTkNUSU9OX1RSQUNFUlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxOToyODoyNC41MDY3NTg4MzNaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ1NTYyNjg5NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipFeGFtaW5pbmcgdGhlIFBvd2VyIE1hbmFnZW1lbnQgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEknbSBkaXZpbmcgaW50byB0aGlzIHBvd2VyIG1hbmFnZW1lbnQgY29uZmlndXJhdGlvbiBmb3IgdGhlIEFSTTY0IGFyY2hpdGVjdHVyZSwgYW5kIGl0IHNlZW1zIHByZXR0eSBzdHJhaWdodGZvcndhcmQgb24gdGhlIHN1cmZhY2UuIEl0IGxvb2tzIGxpa2UgYENPTkZJR19DUFVfUE1gIGlzIGF1dG9tYXRpY2FsbHkgc2VsZWN0ZWQsIG9yIGF0IGxlYXN0IHN1Z2dlc3RlZCwgYnkgdGhlIGBBUk02NGAgYXJjaGl0ZWN0dXJlLCBidXQgb25seSBpZiBlaXRoZXIgYFNVU1BFTkRgIG9yIGBDUFVfSURMRWAgaXMgZW5hYmxlZC4gVGhhdCBtYWtlcyBwZXJmZWN0IHNlbnNlOyBgQ1BVX1BNYCBpcyBlc3NlbnRpYWxseSB0aGUgdW1icmVsbGEgZmVhdHVyZSB0aGF0IGVuYWJsZXMgdGhlIGNvcmUgcG93ZXIgbWFuYWdlbWVudCBjYXBhYmlsaXRpZXMsIGFuZCBpdCdzIGNvbnRpbmdlbnQgb24gaGF2aW5nIHNwZWNpZmljIGlkbGUgb3Igc3VzcGVuZCBzdGF0ZXMuIFNvLCBteSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byBjb25maXJtIHRoYXQgYFNVU1BFTkRgIG9yIGBDUFVfSURMRWAgYXJlIGluZGVlZCBlbmFibGVkLiBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgdGhvc2UgaW5kaXZpZHVhbCBjb21wb25lbnRzIGFyZSBpbiBwbGFjZS4gTGV0J3Mgc3RhcnQgYnkgZGlnZ2luZyBpbnRvIHRoZSBzZXR0aW5ncyBmb3IgdGhvc2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1ODIwLCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMTk6Mjg6MjcuOTYyMzg5MDg5WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTE3MzQyMTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFNVU1BFTkRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL3Bvd2VyL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL3Bvd2VyL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5rZXJuZWwvcG93ZXIvS2NvbmZpZzoyOmNvbmZpZyBTVVNQRU5EXFxua2VybmVsL3Bvd2VyL0tjb25maWctMy1cXHRib29sIFxcXCJTdXNwZW5kIHRvIFJBTSBhbmQgc3RhbmRieVxcXCJcXG4tLVxcbmtlcm5lbC9wb3dlci9LY29uZmlnLTEwLVxcbmtlcm5lbC9wb3dlci9LY29uZmlnOjExOmNvbmZpZyBTVVNQRU5EX0ZSRUVaRVJcXG5rZXJuZWwvcG93ZXIvS2NvbmZpZy0xMi1cXHRib29sIFxcXCJFbmFibGUgZnJlZXplciBmb3Igc3VzcGVuZCB0byBSQU0vc3RhbmRieVxcXCIgXFxcXFxcbi0tXFxua2VybmVsL3Bvd2VyL0tjb25maWctMjEtXFxua2VybmVsL3Bvd2VyL0tjb25maWc6MjI6Y29uZmlnIFNVU1BFTkRfU0tJUF9TWU5DXFxua2VybmVsL3Bvd2VyL0tjb25maWctMjMtXFx0Ym9vbCBcXFwiU2tpcCBrZXJuZWwncyBzeXNfc3luYygpIG9uIHN1c3BlbmQgdG8gUkFNL3N0YW5kYnlcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDE5OjI4OjI4LjA3NDEzMDgzN1oiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjA2OTcxMzAyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIGBDUFVfSURMRWAqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBcIkxldCdzIGNoZWNrIGBDUFVfSURMRWAuXCIgVGhhdCBzaW5nbGUgdmFyaWFibGUsIGBDUFVfSURMRWAsIG9mdGVuIGhvbGRzIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyBhIHN5c3RlbSdzIHRydWUgcGVyZm9ybWFuY2Ugc3RhdGUuIEl0J3MgYSBmdW5kYW1lbnRhbCBpbmRpY2F0b3IsIGFuZCBJIG5lZWQgdG8gZGVsdmUgaW50byBpdHMgYmVoYXZpb3IuIEEgaGlnaCBpZGxlIHBlcmNlbnRhZ2UsIG9yIGZsdWN0dWF0aW9ucyBpbiBpZGxlIHRpbWUsIGNhbiBwb2ludCBtZSB0b3dhcmRzIGJvdHRsZW5lY2tzIG9yIGluZWZmaWNpZW5jaWVzIGVsc2V3aGVyZSBpbiB0aGUgc3lzdGVtLiBUaGUgbmV4dCBzdGVwIGlzIGNsZWFybHkgdG8gdW5kZXJzdGFuZCBpdHMgY3VycmVudCBhbmQgaGlzdG9yaWNhbCB2YWx1ZXMgaW4gcmVsYXRpb24gdG8gd29ya2xvYWQuIEknbGwgbmVlZCB0byBrbm93IHdoZXRoZXIgSSdtIGxvb2tpbmcgYXQgZXhwZWN0ZWQgYmVoYXZpb3IsIG9yIHNvbWV0aGluZyB1bnVzdWFsIHRoYXQgbWlnaHQgcG9pbnQgdG8gYSByZXNvdXJjZSBjb25zdHJhaW50LCBsb2NrIGNvbnRlbnRpb24sIGluZWZmaWNpZW50IEkvTywgb3IgZXZlbiBhIGhhcmR3YXJlIGlzc3VlLiBUaW1lIHRvIGdldCB0byB3b3JrLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjI2NSwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDE5OjI4OjMxLjY4MTEwNjkyOVoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTExMjcwMjc4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBDUFVfSURMRVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2NwdWlkbGUvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2NwdWlkbGUvS2NvbmZpZz0yPW1lbnUgXFxcIkNQVSBJZGxlXFxcIlxcbmRyaXZlcnMvY3B1aWRsZS9LY29uZmlnLTMtXFxuZHJpdmVycy9jcHVpZGxlL0tjb25maWc6NDpjb25maWcgQ1BVX0lETEVcXG5kcml2ZXJzL2NwdWlkbGUvS2NvbmZpZy01LVxcdGJvb2wgXFxcIkNQVSBpZGxlIFBNIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL2NwdWlkbGUvS2NvbmZpZz0xNj1pZiBDUFVfSURMRVxcbmRyaXZlcnMvY3B1aWRsZS9LY29uZmlnLTE3LVxcbmRyaXZlcnMvY3B1aWRsZS9LY29uZmlnOjE4OmNvbmZpZyBDUFVfSURMRV9NVUxUSVBMRV9EUklWRVJTXFxuZHJpdmVycy9jcHVpZGxlL0tjb25maWctMTktXFx0Ym9vbFxcbmRyaXZlcnMvY3B1aWRsZS9LY29uZmlnLTIwLVxcbmRyaXZlcnMvY3B1aWRsZS9LY29uZmlnOjIxOmNvbmZpZyBDUFVfSURMRV9HT1ZfTEFEREVSXFxuZHJpdmVycy9jcHVpZGxlL0tjb25maWctMjItXFx0Ym9vbCBcXFwiTGFkZGVyIGdvdmVybm9yIChmb3IgcGVyaW9kaWMgdGltZXIgdGljaylcXFwiXFxuZHJpdmVycy9jcHVpZGxlL0tjb25maWctMjMtXFxuZHJpdmVycy9jcHVpZGxlL0tjb25maWc6MjQ6Y29uZmlnIENQVV9JRExFX0dPVl9NRU5VXFxuZHJpdmVycy9jcHVpZGxlL0tjb25maWctMjUtXFx0Ym9vbCBcXFwiTWVudSBnb3Zlcm5vciAoZm9yIHRpY2tsZXNzIHN5c3RlbSlcXFwiXFxuZHJpdmVycy9jcHVpZGxlL0tjb25maWctMjYtXFxuZHJpdmVycy9jcHVpZGxlL0tjb25maWc6Mjc6Y29uZmlnIENQVV9JRExFX0dPVl9URU9cXG5kcml2ZXJzL2NwdWlkbGUvS2NvbmZpZy0yOC1cXHRib29sIFxcXCJUaW1lciBldmVudHMgb3JpZW50ZWQgKFRFTykgZ292ZXJub3IgKGZvciB0aWNrbGVzcyBzeXN0ZW1zKVxcXCJcXG4tLVxcbmRyaXZlcnMvY3B1aWRsZS9LY29uZmlnLTM1LVxcbmRyaXZlcnMvY3B1aWRsZS9LY29uZmlnOjM2OmNvbmZpZyBDUFVfSURMRV9HT1ZfSEFMVFBPTExcXG5kcml2ZXJzL2NwdWlkbGUvS2NvbmZpZy0zNy1cXHRib29sIFxcXCJIYWx0cG9sbCBnb3Zlcm5vciAoZm9yIHZpcnR1YWxpemVkIHN5c3RlbXMpXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxOToyODozMS43OTIzODUwNDdaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTI4ODkzODQ4NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEFSTTY0IENQVSBTdXNwZW5kIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBnb3QgdGhpcyBwYXRjaCBpbiBmcm9udCBvZiBtZSwgYW5kIGl0IHNlZW1zIGxpa2UgaXQncyB0b3VjaGluZyB0aGUgY29yZSBzdXNwZW5kL2lkbGUgbG9naWMgb24gdGhlIEFSTTY0IGFyY2hpdGVjdHVyZS4gU3BlY2lmaWNhbGx5LCBpdCdzIG1vZGlmeWluZyB0aGUgYGNwdV9zdXNwZW5kYCBmdW5jdGlvbiwgd2hpY2ggcmVzaWRlcyBpbiBgYXJjaC9hcm02NC9rZXJuZWwvc3VzcGVuZC5jYC4gVGhlIHBhdGNoJ3MgcmVhc29uaW5nIGlzIHByZXR0eSBjbGVhcjogaXQncyBhYm91dCBjb25kaXRpb25hbGx5IGNhbGxpbmcgUkNVIGlkbGUgZnVuY3Rpb25zLCBhbmQgdGhhdCBjb25kaXRpb24gaXMgd2hldGhlciBvciBub3QgdGhlIGN1cnJlbnQgdGFzayBpcyB0aGUgaWRsZSB0YXNrIGl0c2VsZi4gSXQgbG9va3MgbGlrZSBpdCdzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIHRvdWNoaW5nIG9uIHRoZSBjb3JlIGFyY2hpdGVjdHVyZSBjb2RlLCBhbmQgaXQncyByZWFjaGFibGUgdGhyb3VnaCBlaXRoZXIgc3lzdGVtIHN1c3BlbmQgb3IgQ1BVIGlkbGUgd2l0aGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy5cblxuVGhlIGNvbmZpZ3VyYXRpb24gZmxhZ3MgdGhhdCB0cmlnZ2VyIHRoaXMgYXJlIGBTVVNQRU5EYCBhbmQgYENQVV9JRExFYC4gVGhlIG5vdGUgaW5kaWNhdGVzIHRoaXMgaXMgc29tZXRoaW5nIHdvcnRoIGZ1enppbmcsIHdoaWNoIG1ha2VzIHNlbnNlIGdpdmVuIGl0cyBsb2NhdGlvbi4gVGhlIGBGb2N1c1N5bWJvbHNgIGVudHJ5IGNvcnJlY3RseSB6ZXJvZXMgaW4gb24gYGNwdV9zdXNwZW5kYC5cblxuSSBqdXN0IGNvbmZpcm1lZCB0aGF0IGBjcHVfc3VzcGVuZGAgKmlzKiB0aGUgb25seSBmdW5jdGlvbiB0aGF0IHRoaXMgcGF0Y2ggYWN0dWFsbHkgdG91Y2hlcywgc28gd2UncmUgZ29vZCB0aGVyZS4gVGhpcyBtZWFucyB3ZSdyZSBkZWFsaW5nIHdpdGggYSBmb2N1c2VkIGFuZCBwb3RlbnRpYWxseSBpbXBhY3RmdWwgY2hhbmdlLlxuXG5UaW1lIHRvIHVzZSBgc2V0LXJlc3VsdHNgIHRvIHBhc3MgdGhpcyBpbmZvcm1hdGlvbiBhbG9uZywgbWFraW5nIHN1cmUgaXQncyBhY2N1cmF0ZWx5IHJlZmxlY3RlZCBpbiB0aGUgc3lzdGVtLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjg5NiwiT3V0cHV0VG9rZW5zIjoxMDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxODYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMTk6Mjg6NDEuMDgxMzI2NTI0WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI2NjE1MzE4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJTVVNQRU5EXCIsXG4gICAgXCJDUFVfSURMRVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImNwdV9zdXNwZW5kXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYXJtNjQgQ1BVIHN1c3BlbmQvaWRsZSBsb2dpYyB0byBjb25kaXRpb25hbGx5IGNhbGwgUkNVIGlkbGUgZnVuY3Rpb25zIGJhc2VkIG9uIHdoZXRoZXIgdGhlIGN1cnJlbnQgdGFzayBpcyB0aGUgaWRsZSB0YXNrLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBhcmNoaXRlY3R1cmUgY29kZSB0aGF0IGlzIHJlYWNoYWJsZSB2aWEgc3lzdGVtIHN1c3BlbmQgb3IgQ1BVIGlkbGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlNVU1BFTkRcIixcbiAgICBcIkNQVV9JRExFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiY3B1X3N1c3BlbmRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBhcm02NCBDUFUgc3VzcGVuZC9pZGxlIGxvZ2ljIHRvIGNvbmRpdGlvbmFsbHkgY2FsbCBSQ1UgaWRsZSBmdW5jdGlvbnMgYmFzZWQgb24gd2hldGhlciB0aGUgY3VycmVudCB0YXNrIGlzIHRoZSBpZGxlIHRhc2suIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIGFyY2hpdGVjdHVyZSBjb2RlIHRoYXQgaXMgcmVhY2hhYmxlIHZpYSBzeXN0ZW0gc3VzcGVuZCBvciBDUFUgaWRsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow2t54t[1] Phase: Succeeded StartedAt: 2026-07-29 19:28:52 +0000 UTC FinishedAt: 2026-07-29 19:28:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2t54t[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-29 19:28:52 +0000 UTC FinishedAt: 2026-07-29 19:28:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2t54t[2] Phase: Succeeded StartedAt: 2026-07-29 19:28:52 +0000 UTC FinishedAt: 2026-07-29 20:21:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2t54t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["SUSPEND","CPU_IDLE"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cpu_suspend"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["SUSPEND","CPU_IDLE"],"series_id":"fcbe0133-76a0-4fd5-8f6c-92c9f951e6f0","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-29 19:28:52 +0000 UTC FinishedAt: 2026-07-29 20:21:39 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["SUSPEND","CPU_IDLE"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cpu_suspend"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["SUSPEND","CPU_IDLE"],"series_id":"fcbe0133-76a0-4fd5-8f6c-92c9f951e6f0","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow2t54t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["SUSPEND","CPU_IDLE"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cpu_suspend"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["SUSPEND","CPU_IDLE"],"series_id":"fcbe0133-76a0-4fd5-8f6c-92c9f951e6f0","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-29 19:28:52 +0000 UTC FinishedAt: 2026-07-29 19:29:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2t54t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["SUSPEND","CPU_IDLE"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cpu_suspend"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["SUSPEND","CPU_IDLE"],"series_id":"fcbe0133-76a0-4fd5-8f6c-92c9f951e6f0","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-29 19:28:52 +0000 UTC FinishedAt: 2026-07-29 19:28:57 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["SUSPEND","CPU_IDLE"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow2t54t/series-workflow2t54t-convert-artifact-473102022/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow2t54t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["SUSPEND","CPU_IDLE"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cpu_suspend"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["SUSPEND","CPU_IDLE"],"series_id":"fcbe0133-76a0-4fd5-8f6c-92c9f951e6f0","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-29 19:29:03 +0000 UTC FinishedAt: 2026-07-29 19:50:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2t54t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["SUSPEND","CPU_IDLE"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cpu_suspend"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["SUSPEND","CPU_IDLE"],"series_id":"fcbe0133-76a0-4fd5-8f6c-92c9f951e6f0","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-29 19:29:03 +0000 UTC FinishedAt: 2026-07-29 19:50:34 +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:*4e7361b5-51ed-4e2a-982d-0b1f3ca48141,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-workflow2t54t/series-workflow2t54t-convert-artifact-473102022/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": "29892d7e-98a8-4bb0-b673-c90f0395464b", "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-workflow2t54t/series-workflow2t54t-build-action-1746912348/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow2t54t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["SUSPEND","CPU_IDLE"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cpu_suspend"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["SUSPEND","CPU_IDLE"],"series_id":"fcbe0133-76a0-4fd5-8f6c-92c9f951e6f0","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-29 19:29:03 +0000 UTC FinishedAt: 2026-07-29 19:50:25 +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:*4e7361b5-51ed-4e2a-982d-0b1f3ca48141,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-workflow2t54t/series-workflow2t54t-convert-artifact-473102022/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": "29892d7e-98a8-4bb0-b673-c90f0395464b", "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-workflow2t54t/series-workflow2t54t-build-action-1746912348/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow2t54t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["SUSPEND","CPU_IDLE"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cpu_suspend"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["SUSPEND","CPU_IDLE"],"series_id":"fcbe0133-76a0-4fd5-8f6c-92c9f951e6f0","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-29 19:50:34 +0000 UTC FinishedAt: 2026-07-29 19:50:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2t54t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["SUSPEND","CPU_IDLE"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cpu_suspend"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["SUSPEND","CPU_IDLE"],"series_id":"fcbe0133-76a0-4fd5-8f6c-92c9f951e6f0","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-29 19:50:34 +0000 UTC FinishedAt: 2026-07-29 19:50:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2t54t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["SUSPEND","CPU_IDLE"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cpu_suspend"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["SUSPEND","CPU_IDLE"],"series_id":"fcbe0133-76a0-4fd5-8f6c-92c9f951e6f0","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-29 19:50:34 +0000 UTC FinishedAt: 2026-07-29 19:50:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2t54t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["SUSPEND","CPU_IDLE"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cpu_suspend"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["SUSPEND","CPU_IDLE"],"series_id":"fcbe0133-76a0-4fd5-8f6c-92c9f951e6f0","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-29 19:50:34 +0000 UTC FinishedAt: 2026-07-29 19:50:39 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["SUSPEND","CPU_IDLE"],"series_id":"fcbe0133-76a0-4fd5-8f6c-92c9f951e6f0","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow2t54t/series-workflow2t54t-convert-artifact-2841764633/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow2t54t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["SUSPEND","CPU_IDLE"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cpu_suspend"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["SUSPEND","CPU_IDLE"],"series_id":"fcbe0133-76a0-4fd5-8f6c-92c9f951e6f0","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-29 19:50:44 +0000 UTC FinishedAt: 2026-07-29 19:52:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2t54t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["SUSPEND","CPU_IDLE"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cpu_suspend"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["SUSPEND","CPU_IDLE"],"series_id":"fcbe0133-76a0-4fd5-8f6c-92c9f951e6f0","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-29 19:50:44 +0000 UTC FinishedAt: 2026-07-29 19:52:24 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*29892d7e-98a8-4bb0-b673-c90f0395464b,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-workflow2t54t/series-workflow2t54t-build-action-1746912348/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-workflow2t54t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["SUSPEND","CPU_IDLE"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cpu_suspend"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["SUSPEND","CPU_IDLE"],"series_id":"fcbe0133-76a0-4fd5-8f6c-92c9f951e6f0","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-29 19:52:34 +0000 UTC FinishedAt: 2026-07-29 19:52:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2t54t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["SUSPEND","CPU_IDLE"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cpu_suspend"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["SUSPEND","CPU_IDLE"],"series_id":"fcbe0133-76a0-4fd5-8f6c-92c9f951e6f0","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-29 19:52:34 +0000 UTC FinishedAt: 2026-07-29 19:52:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2t54t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["SUSPEND","CPU_IDLE"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cpu_suspend"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["SUSPEND","CPU_IDLE"],"series_id":"fcbe0133-76a0-4fd5-8f6c-92c9f951e6f0","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-29 19:52:34 +0000 UTC FinishedAt: 2026-07-29 20:12:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2t54t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["SUSPEND","CPU_IDLE"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cpu_suspend"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["SUSPEND","CPU_IDLE"],"series_id":"fcbe0133-76a0-4fd5-8f6c-92c9f951e6f0","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-29 19:52:34 +0000 UTC FinishedAt: 2026-07-29 20:12:58 +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:*4e7361b5-51ed-4e2a-982d-0b1f3ca48141,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-workflow2t54t/series-workflow2t54t-convert-artifact-2841764633/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": "51e8b93b-1420-4dad-a4ee-9a11ac5a864f", "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-workflow2t54t/series-workflow2t54t-build-action-491516533/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow2t54t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["SUSPEND","CPU_IDLE"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cpu_suspend"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["SUSPEND","CPU_IDLE"],"series_id":"fcbe0133-76a0-4fd5-8f6c-92c9f951e6f0","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-29 19:52:34 +0000 UTC FinishedAt: 2026-07-29 20:12:48 +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:*4e7361b5-51ed-4e2a-982d-0b1f3ca48141,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-workflow2t54t/series-workflow2t54t-convert-artifact-2841764633/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": "51e8b93b-1420-4dad-a4ee-9a11ac5a864f", "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-workflow2t54t/series-workflow2t54t-build-action-491516533/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow2t54t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["SUSPEND","CPU_IDLE"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cpu_suspend"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["SUSPEND","CPU_IDLE"],"series_id":"fcbe0133-76a0-4fd5-8f6c-92c9f951e6f0","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-29 20:12:58 +0000 UTC FinishedAt: 2026-07-29 20:12:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2t54t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["SUSPEND","CPU_IDLE"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cpu_suspend"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["SUSPEND","CPU_IDLE"],"series_id":"fcbe0133-76a0-4fd5-8f6c-92c9f951e6f0","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-29 20:12:58 +0000 UTC FinishedAt: 2026-07-29 20:12:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2t54t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["SUSPEND","CPU_IDLE"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cpu_suspend"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["SUSPEND","CPU_IDLE"],"series_id":"fcbe0133-76a0-4fd5-8f6c-92c9f951e6f0","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-29 20:12:58 +0000 UTC FinishedAt: 2026-07-29 20:15:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2t54t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["SUSPEND","CPU_IDLE"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cpu_suspend"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["SUSPEND","CPU_IDLE"],"series_id":"fcbe0133-76a0-4fd5-8f6c-92c9f951e6f0","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-29 20:12:58 +0000 UTC FinishedAt: 2026-07-29 20:15:07 +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:*51e8b93b-1420-4dad-a4ee-9a11ac5a864f,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-workflow2t54t/series-workflow2t54t-build-action-491516533/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-workflow2t54t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["SUSPEND","CPU_IDLE"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cpu_suspend"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["SUSPEND","CPU_IDLE"],"series_id":"fcbe0133-76a0-4fd5-8f6c-92c9f951e6f0","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-29 20:15:17 +0000 UTC FinishedAt: 2026-07-29 20:21:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2t54t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["SUSPEND","CPU_IDLE"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cpu_suspend"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["SUSPEND","CPU_IDLE"],"series_id":"fcbe0133-76a0-4fd5-8f6c-92c9f951e6f0","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-29 20:15:17 +0000 UTC FinishedAt: 2026-07-29 20:21:39 +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":["cpu_suspend"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*29892d7e-98a8-4bb0-b673-c90f0395464b,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*51e8b93b-1420-4dad-a4ee-9a11ac5a864f,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-workflow2t54t/series-workflow2t54t-build-action-1746912348/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-workflow2t54t/series-workflow2t54t-build-action-491516533/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow2t54t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["SUSPEND","CPU_IDLE"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cpu_suspend"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["SUSPEND","CPU_IDLE"],"series_id":"fcbe0133-76a0-4fd5-8f6c-92c9f951e6f0","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-29 20:15:17 +0000 UTC FinishedAt: 2026-07-29 20:15:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2t54t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["SUSPEND","CPU_IDLE"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cpu_suspend"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["SUSPEND","CPU_IDLE"],"series_id":"fcbe0133-76a0-4fd5-8f6c-92c9f951e6f0","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-29 20:15:17 +0000 UTC FinishedAt: 2026-07-29 20:15:22 +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":["cpu_suspend"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow2t54t/series-workflow2t54t-convert-artifact-2666190862/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow2t54t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["SUSPEND","CPU_IDLE"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cpu_suspend"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["SUSPEND","CPU_IDLE"],"series_id":"fcbe0133-76a0-4fd5-8f6c-92c9f951e6f0","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-29 20:15:17 +0000 UTC FinishedAt: 2026-07-29 20:15:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2t54t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["SUSPEND","CPU_IDLE"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cpu_suspend"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["SUSPEND","CPU_IDLE"],"series_id":"fcbe0133-76a0-4fd5-8f6c-92c9f951e6f0","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-29 20:15:17 +0000 UTC FinishedAt: 2026-07-29 20:15:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2t54t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["SUSPEND","CPU_IDLE"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cpu_suspend"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["SUSPEND","CPU_IDLE"],"series_id":"fcbe0133-76a0-4fd5-8f6c-92c9f951e6f0","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-29 20:15:17 +0000 UTC FinishedAt: 2026-07-29 20:15:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2t54t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["SUSPEND","CPU_IDLE"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cpu_suspend"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["SUSPEND","CPU_IDLE"],"series_id":"fcbe0133-76a0-4fd5-8f6c-92c9f951e6f0","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-29 20:15:27 +0000 UTC FinishedAt: 2026-07-29 20:21:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2t54t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["SUSPEND","CPU_IDLE"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cpu_suspend"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["SUSPEND","CPU_IDLE"],"series_id":"fcbe0133-76a0-4fd5-8f6c-92c9f951e6f0","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-29 20:15:27 +0000 UTC FinishedAt: 2026-07-29 20:21:19 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*29892d7e-98a8-4bb0-b673-c90f0395464b,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*51e8b93b-1420-4dad-a4ee-9a11ac5a864f,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-workflow2t54t/series-workflow2t54t-build-action-1746912348/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-workflow2t54t/series-workflow2t54t-build-action-491516533/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-workflow2t54t/series-workflow2t54t-convert-artifact-2666190862/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,}