Name: series-workflowxnswh Phase: Succeeded StartedAt: 2026-07-03 09:59:57 +0000 UTC FinishedAt: 2026-07-03 14:37:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxnswh[0] Phase: Succeeded StartedAt: 2026-07-03 09:59:57 +0000 UTC FinishedAt: 2026-07-03 10:20:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxnswh[0].run-triage Phase: Succeeded StartedAt: 2026-07-03 09:59:57 +0000 UTC FinishedAt: 2026-07-03 10:20:28 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "drm-next", "tree_url": "https://gitlab.freedesktop.org/drm/kernel.git", "commit_hash": "dc59e4fea9d83f03bad6bddf3fa2e52491777482", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "CFG80211", "MAC80211", "MAC80211_HWSIM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "drm-next", "tree_url": "https://gitlab.freedesktop.org/drm/kernel.git", "commit_hash": "dc59e4fea9d83f03bad6bddf3fa2e52491777482", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "CFG80211", "MAC80211", "MAC80211_HWSIM" ], "series_id": "bcb78d17-9f19-486d-b7e7-d3b32c975990" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "cfg80211_pmsr_free_wk", "cfg80211_pmsr_wdev_down", "cfg80211_release_pmsr", "cfg80211_init_wdev" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDEwOjE5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0NGRzgwMjExJiMzNDssCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O01BQzgwMjExX0hXU0lNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Y2ZnODAyMTFfcG1zcl9mcmVlX3drJiMzNDssCiAgICAmIzM0O2NmZzgwMjExX3Btc3Jfd2Rldl9kb3duJiMzNDssCiAgICAmIzM0O2NmZzgwMjExX3JlbGVhc2VfcG1zciYjMzQ7LAogICAgJiMzNDtjZmc4MDIxMV9pbml0X3dkZXYmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggY2hhbmdlcyB0aGUgcG1zcl9mcmVlX3drIHdvcmsgaXRlbSBpbiBzdHJ1Y3Qgd2lyZWxlc3NfZGV2IGZyb20gYSBzdGFuZGFyZCB3b3JrX3N0cnVjdCB0byBhIHdpcGh5X3dvcmsuIFRoaXMgYWx0ZXJzIHRoZSBsb2NraW5nIHNlbWFudGljcywgYXMgd2lwaHlfd29yayBpcyBleGVjdXRlZCB3aXRoIHRoZSB3aXBoeSBsb2NrIGhlbGQsIGFsbG93aW5nIHRoZSByZW1vdmFsIG9mIHRoZSBleHBsaWNpdCBndWFyZCh3aXBoeSkgaW4gdGhlIHdvcmsgaGFuZGxlci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjZmc4MDIxMSBzdWJzeXN0ZW0gdGhhdCBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBtYWM4MDIxMV9od3NpbS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAxMDoxOTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGE5MDJmZWEwOTIzMTllZjQ0NTc5YzNmOWYxMWEwYzIyMTRlNmY4MWVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEp1bCAzIDEwOjE5OjE1IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L2NmZzgwMjExLmggYi9pbmNsdWRlL25ldC9jZmc4MDIxMS5oXG5pbmRleCA4MTg4YWQyMDBkZTUzOS4uMzc1MWExZDc0NzY1YWIgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL25ldC9jZmc4MDIxMS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL25ldC9jZmc4MDIxMS5oXG5AQCAtNzI2NSw3ICYjNDM7NzI2NSw3IEBAIHN0cnVjdCB3aXJlbGVzc19kZXYge1xuIFxuIFx0c3RydWN0IGxpc3RfaGVhZCBwbXNyX2xpc3Q7XG4gXHRzcGlubG9ja190IHBtc3JfbG9jaztcbi1cdHN0cnVjdCB3b3JrX3N0cnVjdCBwbXNyX2ZyZWVfd2s7XG4mIzQzO1x0c3RydWN0IHdpcGh5X3dvcmsgcG1zcl9mcmVlX3drO1xuIFxuIFx0dW5zaWduZWQgbG9uZyB1bnByb3RfYmVhY29uX3JlcG9ydGVkO1xuIFxuZGlmZiAtLWdpdCBhL25ldC93aXJlbGVzcy9jb3JlLmMgYi9uZXQvd2lyZWxlc3MvY29yZS5jXG5pbmRleCAzZGNmNjNiMDRjNDFkYi4uYjZiYjI1ZWU4OWNkMmUgMTAwNjQ0XG4tLS0gYS9uZXQvd2lyZWxlc3MvY29yZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvd2lyZWxlc3MvY29yZS5jXG5AQCAtMTYxMyw3ICYjNDM7MTYxMyw3IEBAIHZvaWQgY2ZnODAyMTFfaW5pdF93ZGV2KHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYpXG4gXHRJTklUX0xJU1RfSEVBRChcdTAwMjZ3ZGV2LVx1MDAzZW1nbXRfcmVnaXN0cmF0aW9ucyk7XG4gXHRJTklUX0xJU1RfSEVBRChcdTAwMjZ3ZGV2LVx1MDAzZXBtc3JfbGlzdCk7XG4gXHRzcGluX2xvY2tfaW5pdChcdTAwMjZ3ZGV2LVx1MDAzZXBtc3JfbG9jayk7XG4tXHRJTklUX1dPUksoXHUwMDI2d2Rldi1cdTAwM2VwbXNyX2ZyZWVfd2ssIGNmZzgwMjExX3Btc3JfZnJlZV93ayk7XG4mIzQzO1x0d2lwaHlfd29ya19pbml0KFx1MDAyNndkZXYtXHUwMDNlcG1zcl9mcmVlX3drLCBjZmc4MDIxMV9wbXNyX2ZyZWVfd2spO1xuIFxuICNpZmRlZiBDT05GSUdfQ0ZHODAyMTFfV0VYVFxuIFx0d2Rldi1cdTAwM2V3ZXh0LmRlZmF1bHRfa2V5ID0gLTE7XG5AQCAtMTc0Nyw3ICYjNDM7MTc0Nyw2IEBAIHN0YXRpYyBpbnQgY2ZnODAyMTFfbmV0ZGV2X25vdGlmaWVyX2NhbGwoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYixcbiBcdFx0XHRjZmc4MDIxMV9yZW1vdmVfbGlua3Mod2Rldik7XG4gXHRcdC8qIHNpbmNlIHdlIGp1c3QgZGlkIGNmZzgwMjExX2xlYXZlKCkgbm90aGluZyB0byBkbyB0aGVyZSAqL1xuIFx0XHRjYW5jZWxfd29ya19zeW5jKFx1MDAyNndkZXYtXHUwMDNlZGlzY29ubmVjdF93ayk7XG4tXHRcdGNhbmNlbF93b3JrX3N5bmMoXHUwMDI2d2Rldi1cdTAwM2VwbXNyX2ZyZWVfd2spO1xuIFx0XHRicmVhaztcbiBcdGNhc2UgTkVUREVWX0RPV046XG4gXHRcdHdpcGh5X2xvY2soXHUwMDI2cmRldi1cdTAwM2V3aXBoeSk7XG5kaWZmIC0tZ2l0IGEvbmV0L3dpcmVsZXNzL2NvcmUuaCBiL25ldC93aXJlbGVzcy9jb3JlLmhcbmluZGV4IGRmNDdlZDYyMDhhNTBkLi5mNjBjNjZiODg2NzcyNSAxMDA2NDRcbi0tLSBhL25ldC93aXJlbGVzcy9jb3JlLmhcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC93aXJlbGVzcy9jb3JlLmhcbkBAIC01ODYsNyAmIzQzOzU4Niw3IEBAIGNmZzgwMjExX2dldF82Z2h6X3Bvd2VyX3R5cGUoY29uc3QgdTggKmVsZW1zLCBzaXplX3QgZWxlbXNfbGVuLFxuIFxuIHZvaWQgY2ZnODAyMTFfcmVsZWFzZV9wbXNyKHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsIHUzMiBwb3J0aWQpO1xuIHZvaWQgY2ZnODAyMTFfcG1zcl93ZGV2X2Rvd24oc3RydWN0IHdpcmVsZXNzX2RldiAqd2Rldik7XG4tdm9pZCBjZmc4MDIxMV9wbXNyX2ZyZWVfd2soc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKTtcbiYjNDM7dm9pZCBjZmc4MDIxMV9wbXNyX2ZyZWVfd2soc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcGh5X3dvcmsgKndvcmspO1xuIFxuIHZvaWQgY2ZnODAyMTFfcmVtb3ZlX2xpbmsoc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldiwgdW5zaWduZWQgaW50IGxpbmtfaWQpO1xuIHZvaWQgY2ZnODAyMTFfcmVtb3ZlX2xpbmtzKHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYpO1xuZGlmZiAtLWdpdCBhL25ldC93aXJlbGVzcy9wbXNyLmMgYi9uZXQvd2lyZWxlc3MvcG1zci5jXG5pbmRleCBjODQ0NzQ0OGYzYTUwNS4uMmM4ZGIzM2Q5YzMwOTggMTAwNjQ0XG4tLS0gYS9uZXQvd2lyZWxlc3MvcG1zci5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvd2lyZWxlc3MvcG1zci5jXG5AQCAtODA3LDEzICYjNDM7ODA3LDExIEBAIHN0YXRpYyB2b2lkIGNmZzgwMjExX3Btc3JfcHJvY2Vzc19hYm9ydChzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2KVxuIFx0fVxuIH1cbiBcbi12b2lkIGNmZzgwMjExX3Btc3JfZnJlZV93ayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4mIzQzO3ZvaWQgY2ZnODAyMTFfcG1zcl9mcmVlX3drKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXBoeV93b3JrICp3b3JrKVxuIHtcbiBcdHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IHdpcmVsZXNzX2RldixcbiBcdFx0XHRcdFx0XHQgcG1zcl9mcmVlX3drKTtcbiBcbi1cdGd1YXJkKHdpcGh5KSh3ZGV2LVx1MDAzZXdpcGh5KTtcbi1cbiBcdGNmZzgwMjExX3Btc3JfcHJvY2Vzc19hYm9ydCh3ZGV2KTtcbiB9XG4gXG5AQCAtODI5LDcgJiM0Mzs4MjcsNyBAQCB2b2lkIGNmZzgwMjExX3Btc3Jfd2Rldl9kb3duKHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYpXG4gXHR9XG4gXHRzcGluX3VubG9ja19iaChcdTAwMjZ3ZGV2LVx1MDAzZXBtc3JfbG9jayk7XG4gXG4tXHRjYW5jZWxfd29ya19zeW5jKFx1MDAyNndkZXYtXHUwMDNlcG1zcl9mcmVlX3drKTtcbiYjNDM7XHR3aXBoeV93b3JrX2NhbmNlbCh3ZGV2LVx1MDAzZXdpcGh5LCBcdTAwMjZ3ZGV2LVx1MDAzZXBtc3JfZnJlZV93ayk7XG4gXHRpZiAoZm91bmQpXG4gXHRcdGNmZzgwMjExX3Btc3JfcHJvY2Vzc19hYm9ydCh3ZGV2KTtcbiBcbkBAIC04NDQsNyAmIzQzOzg0Miw3IEBAIHZvaWQgY2ZnODAyMTFfcmVsZWFzZV9wbXNyKHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsIHUzMiBwb3J0aWQpXG4gXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KHJlcSwgXHUwMDI2d2Rldi1cdTAwM2VwbXNyX2xpc3QsIGxpc3QpIHtcbiBcdFx0aWYgKHJlcS1cdTAwM2VubF9wb3J0aWQgPT0gcG9ydGlkKSB7XG4gXHRcdFx0cmVxLVx1MDAzZW5sX3BvcnRpZCA9IDA7XG4tXHRcdFx0c2NoZWR1bGVfd29yayhcdTAwMjZ3ZGV2LVx1MDAzZXBtc3JfZnJlZV93ayk7XG4mIzQzO1x0XHRcdHdpcGh5X3dvcmtfcXVldWUod2Rldi1cdTAwM2V3aXBoeSwgXHUwMDI2d2Rldi1cdTAwM2VwbXNyX2ZyZWVfd2spO1xuIFx0XHR9XG4gXHR9XG4gXHRzcGluX3VubG9ja19iaChcdTAwMjZ3ZGV2LVx1MDAzZXBtc3JfbG9jayk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMTA6MTk8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7Q0ZHODAyMTEmIzM0OywKICAgICYjMzQ7TUFDODAyMTEmIzM0OywKICAgICYjMzQ7TUFDODAyMTFfSFdTSU0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtjZmc4MDIxMV9wbXNyX2ZyZWVfd2smIzM0OywKICAgICYjMzQ7Y2ZnODAyMTFfcG1zcl93ZGV2X2Rvd24mIzM0OywKICAgICYjMzQ7Y2ZnODAyMTFfcmVsZWFzZV9wbXNyJiMzNDssCiAgICAmIzM0O2NmZzgwMjExX2luaXRfd2RldiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBjaGFuZ2VzIHRoZSBwbXNyX2ZyZWVfd2sgd29yayBpdGVtIGluIHN0cnVjdCB3aXJlbGVzc19kZXYgZnJvbSBhIHN0YW5kYXJkIHdvcmtfc3RydWN0IHRvIGEgd2lwaHlfd29yay4gVGhpcyBhbHRlcnMgdGhlIGxvY2tpbmcgc2VtYW50aWNzLCBhcyB3aXBoeV93b3JrIGlzIGV4ZWN1dGVkIHdpdGggdGhlIHdpcGh5IGxvY2sgaGVsZCwgYWxsb3dpbmcgdGhlIHJlbW92YWwgb2YgdGhlIGV4cGxpY2l0IGd1YXJkKHdpcGh5KSBpbiB0aGUgd29yayBoYW5kbGVyLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNmZzgwMjExIHN1YnN5c3RlbSB0aGF0IGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIG1hYzgwMjExX2h3c2ltLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBhOTAyZmVhMDkyMzE5ZWY0NDU3OWMzZjlmMTFhMGMyMjE0ZTZmODFlCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIEZyaSBKdWwgMyAxMDoxOToxNSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L2NmZzgwMjExLmggYi9pbmNsdWRlL25ldC9jZmc4MDIxMS5oCmluZGV4IDgxODhhZDIwMGRlNTM5Li4zNzUxYTFkNzQ3NjVhYiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQvY2ZnODAyMTEuaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL25ldC9jZmc4MDIxMS5oCkBAIC03MjY1LDcgJiM0Mzs3MjY1LDcgQEAgc3RydWN0IHdpcmVsZXNzX2RldiB7CiAKIAlzdHJ1Y3QgbGlzdF9oZWFkIHBtc3JfbGlzdDsKIAlzcGlubG9ja190IHBtc3JfbG9jazsKLQlzdHJ1Y3Qgd29ya19zdHJ1Y3QgcG1zcl9mcmVlX3drOwomIzQzOwlzdHJ1Y3Qgd2lwaHlfd29yayBwbXNyX2ZyZWVfd2s7CiAKIAl1bnNpZ25lZCBsb25nIHVucHJvdF9iZWFjb25fcmVwb3J0ZWQ7CiAKZGlmZiAtLWdpdCBhL25ldC93aXJlbGVzcy9jb3JlLmMgYi9uZXQvd2lyZWxlc3MvY29yZS5jCmluZGV4IDNkY2Y2M2IwNGM0MWRiLi5iNmJiMjVlZTg5Y2QyZSAxMDA2NDQKLS0tIGEvbmV0L3dpcmVsZXNzL2NvcmUuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvd2lyZWxlc3MvY29yZS5jCkBAIC0xNjEzLDcgJiM0MzsxNjEzLDcgQEAgdm9pZCBjZmc4MDIxMV9pbml0X3dkZXYoc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldikKIAlJTklUX0xJU1RfSEVBRCgmYW1wO3dkZXYtJmd0O21nbXRfcmVnaXN0cmF0aW9ucyk7CiAJSU5JVF9MSVNUX0hFQUQoJmFtcDt3ZGV2LSZndDtwbXNyX2xpc3QpOwogCXNwaW5fbG9ja19pbml0KCZhbXA7d2Rldi0mZ3Q7cG1zcl9sb2NrKTsKLQlJTklUX1dPUksoJmFtcDt3ZGV2LSZndDtwbXNyX2ZyZWVfd2ssIGNmZzgwMjExX3Btc3JfZnJlZV93ayk7CiYjNDM7CXdpcGh5X3dvcmtfaW5pdCgmYW1wO3dkZXYtJmd0O3Btc3JfZnJlZV93aywgY2ZnODAyMTFfcG1zcl9mcmVlX3drKTsKIAogI2lmZGVmIENPTkZJR19DRkc4MDIxMV9XRVhUCiAJd2Rldi0mZ3Q7d2V4dC5kZWZhdWx0X2tleSA9IC0xOwpAQCAtMTc0Nyw3ICYjNDM7MTc0Nyw2IEBAIHN0YXRpYyBpbnQgY2ZnODAyMTFfbmV0ZGV2X25vdGlmaWVyX2NhbGwoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYiwKIAkJCWNmZzgwMjExX3JlbW92ZV9saW5rcyh3ZGV2KTsKIAkJLyogc2luY2Ugd2UganVzdCBkaWQgY2ZnODAyMTFfbGVhdmUoKSBub3RoaW5nIHRvIGRvIHRoZXJlICovCiAJCWNhbmNlbF93b3JrX3N5bmMoJmFtcDt3ZGV2LSZndDtkaXNjb25uZWN0X3drKTsKLQkJY2FuY2VsX3dvcmtfc3luYygmYW1wO3dkZXYtJmd0O3Btc3JfZnJlZV93ayk7CiAJCWJyZWFrOwogCWNhc2UgTkVUREVWX0RPV046CiAJCXdpcGh5X2xvY2soJmFtcDtyZGV2LSZndDt3aXBoeSk7CmRpZmYgLS1naXQgYS9uZXQvd2lyZWxlc3MvY29yZS5oIGIvbmV0L3dpcmVsZXNzL2NvcmUuaAppbmRleCBkZjQ3ZWQ2MjA4YTUwZC4uZjYwYzY2Yjg4Njc3MjUgMTAwNjQ0Ci0tLSBhL25ldC93aXJlbGVzcy9jb3JlLmgKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3dpcmVsZXNzL2NvcmUuaApAQCAtNTg2LDcgJiM0Mzs1ODYsNyBAQCBjZmc4MDIxMV9nZXRfNmdoel9wb3dlcl90eXBlKGNvbnN0IHU4ICplbGVtcywgc2l6ZV90IGVsZW1zX2xlbiwKIAogdm9pZCBjZmc4MDIxMV9yZWxlYXNlX3Btc3Ioc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldiwgdTMyIHBvcnRpZCk7CiB2b2lkIGNmZzgwMjExX3Btc3Jfd2Rldl9kb3duKHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYpOwotdm9pZCBjZmc4MDIxMV9wbXNyX2ZyZWVfd2soc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKTsKJiM0Mzt2b2lkIGNmZzgwMjExX3Btc3JfZnJlZV93ayhzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lwaHlfd29yayAqd29yayk7CiAKIHZvaWQgY2ZnODAyMTFfcmVtb3ZlX2xpbmsoc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldiwgdW5zaWduZWQgaW50IGxpbmtfaWQpOwogdm9pZCBjZmc4MDIxMV9yZW1vdmVfbGlua3Moc3RydWN0IHdpcmVsZXNzX2RldiAqd2Rldik7CmRpZmYgLS1naXQgYS9uZXQvd2lyZWxlc3MvcG1zci5jIGIvbmV0L3dpcmVsZXNzL3Btc3IuYwppbmRleCBjODQ0NzQ0OGYzYTUwNS4uMmM4ZGIzM2Q5YzMwOTggMTAwNjQ0Ci0tLSBhL25ldC93aXJlbGVzcy9wbXNyLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3dpcmVsZXNzL3Btc3IuYwpAQCAtODA3LDEzICYjNDM7ODA3LDExIEBAIHN0YXRpYyB2b2lkIGNmZzgwMjExX3Btc3JfcHJvY2Vzc19hYm9ydChzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2KQogCX0KIH0KIAotdm9pZCBjZmc4MDIxMV9wbXNyX2ZyZWVfd2soc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQomIzQzO3ZvaWQgY2ZnODAyMTFfcG1zcl9mcmVlX3drKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXBoeV93b3JrICp3b3JrKQogewogCXN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IHdpcmVsZXNzX2RldiwKIAkJCQkJCSBwbXNyX2ZyZWVfd2spOwogCi0JZ3VhcmQod2lwaHkpKHdkZXYtJmd0O3dpcGh5KTsKLQogCWNmZzgwMjExX3Btc3JfcHJvY2Vzc19hYm9ydCh3ZGV2KTsKIH0KIApAQCAtODI5LDcgJiM0Mzs4MjcsNyBAQCB2b2lkIGNmZzgwMjExX3Btc3Jfd2Rldl9kb3duKHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYpCiAJfQogCXNwaW5fdW5sb2NrX2JoKCZhbXA7d2Rldi0mZ3Q7cG1zcl9sb2NrKTsKIAotCWNhbmNlbF93b3JrX3N5bmMoJmFtcDt3ZGV2LSZndDtwbXNyX2ZyZWVfd2spOwomIzQzOwl3aXBoeV93b3JrX2NhbmNlbCh3ZGV2LSZndDt3aXBoeSwgJmFtcDt3ZGV2LSZndDtwbXNyX2ZyZWVfd2spOwogCWlmIChmb3VuZCkKIAkJY2ZnODAyMTFfcG1zcl9wcm9jZXNzX2Fib3J0KHdkZXYpOwogCkBAIC04NDQsNyAmIzQzOzg0Miw3IEBAIHZvaWQgY2ZnODAyMTFfcmVsZWFzZV9wbXNyKHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsIHUzMiBwb3J0aWQpCiAJbGlzdF9mb3JfZWFjaF9lbnRyeShyZXEsICZhbXA7d2Rldi0mZ3Q7cG1zcl9saXN0LCBsaXN0KSB7CiAJCWlmIChyZXEtJmd0O25sX3BvcnRpZCA9PSBwb3J0aWQpIHsKIAkJCXJlcS0mZ3Q7bmxfcG9ydGlkID0gMDsKLQkJCXNjaGVkdWxlX3dvcmsoJmFtcDt3ZGV2LSZndDtwbXNyX2ZyZWVfd2spOwomIzQzOwkJCXdpcGh5X3dvcmtfcXVldWUod2Rldi0mZ3Q7d2lwaHksICZhbXA7d2Rldi0mZ3Q7cG1zcl9mcmVlX3drKTsKIAkJfQogCX0KIAlzcGluX3VubG9ja19iaCgmYW1wO3dkZXYtJmd0O3Btc3JfbG9jayk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDEwOjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMxMTAKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAzNzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBhIHN0cmFpZ2h0Zm9yd2FyZCBidXQgaW1wb3J0YW50IGNoYW5nZSB3aXRoaW4gdGhlIGBjZmc4MDIxMWAgc3Vic3lzdGVtLCBzcGVjaWZpY2FsbHkgdG91Y2hpbmcgaG93IFBlZXIgTWVhc3VyZW1lbnQgU3VydmV5IFJlcG9ydHMgKFBNU1IpIGFyZSBoYW5kbGVkLiBJdCYjMzk7cyBlc3NlbnRpYWxseSByZWZhY3RvcmluZyB0aGUgYHBtc3JfZnJlZV93a2Agd29yayBxdWV1ZSBpbiB0aGUgYHdpcmVsZXNzX2RldmAgc3RydWN0LiBJIHNlZSB0aGV5JiMzOTtyZSB1cGdyYWRpbmcgZnJvbSBhIHN0YW5kYXJkIGBzdHJ1Y3Qgd29ya19zdHJ1Y3RgIHRvIGEgYHN0cnVjdCB3aXBoeV93b3JrYCwgd2hpY2ggaXMgZ2VuZXJhbGx5IGEgZ29vZCBtb3ZlIGZvciBiZXR0ZXIgaW50ZWdyYXRpb24gYW5kIHBvdGVudGlhbGx5IG1vcmUgY29udHJvbGxlZCBleGVjdXRpb24gd2l0aGluIHRoZSBXaS1GaSBzdWJzeXN0ZW0uCgpUaGUgY2hhbmdlcyB0byB0aGUgd29yayBxdWV1ZSBtYWNyb3MsIGBJTklUX1dPUktgIGJlY29taW5nIGB3aXBoeV93b3JrX2luaXRgLCBgY2FuY2VsX3dvcmtfc3luY2AgZXZvbHZpbmcgaW50byBgd2lwaHlfd29ya19jYW5jZWxgLCBhbmQgYHNjaGVkdWxlX3dvcmtgIG5vdyBiZWluZyBgd2lwaHlfd29ya19xdWV1ZWAsIGNvbmZpcm0gdGhpcyB3b3JrIHF1ZXVlIHJlZmFjdG9yaW5nIGFuZCBhcmUgc3RhbmRhcmQgcHJvY2VkdXJlIGZvciB0aGlzIHR5cGUgb2YgY2hhbmdlLiBUaGUgc2lnbmF0dXJlIGNoYW5nZSBmb3IgYGNmZzgwMjExX3Btc3JfZnJlZV93a2AgdG8gYWNjZXB0IHRoZSBgd2lwaHlgIHBvaW50ZXIgZGlyZWN0bHkgaXMgbG9naWNhbCwgZ2l2ZW4gdGhlIGB3aXBoeV93b3JrYCBjb250ZXh0IGFuZCB0aGUgcmVtb3ZhbCBvZiB0aGUgcmVkdW5kYW50IGxvY2sgZ3VhcmRpbmcuIFRoZXkmIzM5O3JlIGNvcnJlY3RseSBlbnN1cmluZyB0aGUgYHdpcGh5YCBsb2NrIGlzIGhlbGQsIHdoaWNoIHNpbXBsaWZpZXMgdGhlIGNvZGUuCgpUaGlzIHRvdWNoZXMgYGNmZzgwMjExYCwgYSBzdWJzeXN0ZW0gdGhhdCYjMzk7cyBkaXJlY3RseSBhY2Nlc3NpYmxlIHRocm91Z2ggYG1hYzgwMjExX2h3c2ltYCwgd2hpY2ggSSBrbm93IGZyb20gZXhwZXJpZW5jZSBpcyBjcnVjaWFsIGluIHZpcnR1YWxpemVkIHRlc3RpbmcgZW52aXJvbm1lbnRzLiBUaGlzIG1lYW5zIHRoaXMgY2hhbmdlIGlzIGZ1bmN0aW9uYWxseSBzaWduaWZpY2FudCBmb3IgdGVzdGluZyBhbmQgZGVidWdnaW5nLCB0aGVyZWZvcmUgSSB3aWxsIHNldCBgV29ydGhGdXp6aW5nPXRydWVgLgoKTm93LCB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSBmdWxsIHNjb3BlIG9mIHRoaXMgY2hhbmdlLCBJIG5lZWQgdG8gZm9jdXMgb24gYSBmZXcga2V5IHN5bWJvbHM6IGBjZmc4MDIxMV9wbXNyX2ZyZWVfd2tgLCBvZiBjb3Vyc2UsIGJ1dCBhbHNvIGBjZmc4MDIxMV9wbXNyX3dkZXZfZG93bmAgYW5kIGBjZmc4MDIxMV9yZWxlYXNlX3Btc3JgIHRvIGdldCBhIGNvbXBsZXRlIHBpY3R1cmUgb2YgdGhlIFBNU1IgaGFuZGxpbmcgZmxvdy4gSSYjMzk7bGwgbmVlZCB0byBlbmFibGUgYSBmZXcgY29uZmlncyB0byByZXBsaWNhdGUgYW5kIHRlc3QgdGhlIGVudmlyb25tZW50IHByb3Blcmx5LiBgQ0ZHODAyMTFgIGlzIG9idmlvdXMsIGFuZCBJJiMzOTtsbCBuZWVkIGBNQUM4MDIxMWAsIHdoaWNoIGlzIGdlbmVyYWxseSBhIHByZS1yZXF1aXNpdGUgZm9yIGBNQUM4MDIxMV9IV1NJTWAuCgpGaW5hbGx5LCB0byBzZWUgaWYgdGhlcmUmIzM5O3MgYW55dGhpbmcgZWxzZSByZWxhdGVkIHRvIFBNU1IgdGhhdCBJIG1pZ2h0IGJlIG1pc3NpbmcsIEkmIzM5O2xsIHJ1biBhIHF1aWNrIGdyZXAgb24gdGhlIGBuZXQvd2lyZWxlc3MvYCBkaXJlY3RvcnkgZm9yIGVpdGhlciBgY2ZnODAyMTFfcG1zcl9mcmVlX3drYCBvciBqdXN0IGBwbXNyYC4gVGhpcyB3aWxsIGhlbHAgbWUgZW5zdXJlIHRoYXQgdGhlcmUgYXJlIG5vIG9ic2N1cmUgUE1TUi1yZWxhdGVkIGNvbmZpZ3VyYXRpb25zIHRoYXQgSSYjMzk7bSBvdmVybG9va2luZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAxMDoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjZmc4MDIxMV9wbXNyX2ZyZWVfd2smIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvd2lyZWxlc3MvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC93aXJlbGVzcy9jb3JlLmM9MTYwOT12b2lkIGNmZzgwMjExX2luaXRfd2RldihzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2KVxuLS1cbm5ldC93aXJlbGVzcy9jb3JlLmMtMTYxNS1cdHNwaW5fbG9ja19pbml0KFx1MDAyNndkZXYtXHUwMDNlcG1zcl9sb2NrKTtcbm5ldC93aXJlbGVzcy9jb3JlLmM6MTYxNjpcdHdpcGh5X3dvcmtfaW5pdChcdTAwMjZ3ZGV2LVx1MDAzZXBtc3JfZnJlZV93aywgY2ZnODAyMTFfcG1zcl9mcmVlX3drKTtcbm5ldC93aXJlbGVzcy9jb3JlLmMtMTYxNy1cbi0tXG5uZXQvd2lyZWxlc3MvY29yZS5oPTU4OD12b2lkIGNmZzgwMjExX3Btc3Jfd2Rldl9kb3duKHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYpO1xubmV0L3dpcmVsZXNzL2NvcmUuaDo1ODk6dm9pZCBjZmc4MDIxMV9wbXNyX2ZyZWVfd2soc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcGh5X3dvcmsgKndvcmspO1xubmV0L3dpcmVsZXNzL2NvcmUuaC01OTAtXG4tLVxubmV0L3dpcmVsZXNzL3Btc3IuYz03ODc9c3RhdGljIHZvaWQgY2ZnODAyMTFfcG1zcl9wcm9jZXNzX2Fib3J0KHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYpXG4tLVxubmV0L3dpcmVsZXNzL3Btc3IuYy04MDktXG5uZXQvd2lyZWxlc3MvcG1zci5jOjgxMDp2b2lkIGNmZzgwMjExX3Btc3JfZnJlZV93ayhzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lwaHlfd29yayAqd29yaylcbm5ldC93aXJlbGVzcy9wbXNyLmMtODExLXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAxMDoxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NDM4CgkJCQkJCQlvdXRwdXQ6IDI2CgkJCQkJCQl0aG91Z2h0czogMTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6CgoqKktjb25maWcgRGl2ZSBmb3IgUE1TUioqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZmluZCBvdXQgYWJvdXQgUE1TUi4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gZ28gc3RyYWlnaHQgdG8gdGhlIHNvdXJjZSwgdGhlIGNvcmUgb2YgaG93IHRoZSB3aXJlbGVzcyBjb25maWd1cmF0aW9uIGlzIHN0cnVjdHVyZWQuIFRoYXQgbWVhbnMgZGl2aW5nIGludG8gdGhlIGBuZXQvd2lyZWxlc3MvS2NvbmZpZ2AgZmlsZS4gSXQmIzM5O3MgdGhlIGNlbnRyYWwgY29uZmlndXJhdGlvbiBmaWxlIGZvciBhbnl0aGluZyBhbmQgZXZlcnl0aGluZyB3aXJlbGVzcyByZWxhdGVkIGluIHRoZSBrZXJuZWwuIFRoaXMgaXMgd2hlcmUgSSYjMzk7ZCBleHBlY3QgdG8gZmluZCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gUE1TUi4gSG9wZWZ1bGx5LCBpdCYjMzk7cyBjbGVhcmx5IG5hbWVkIG9yIGhhcyBzb21lIG9idmlvdXMgZGVwZW5kZW5jaWVzIHRoYXQgd2lsbCBwb2ludCBtZSBpbiB0aGUgcmlnaHQgZGlyZWN0aW9uLiBJdCYjMzk7cyBhIGJpdCBvZiBhIGRhdGEtbWluaW5nIGV4ZXJjaXNlLCBidXQgdGhpcyBpcyB0aGUgbG9naWNhbCBmaXJzdCBzdGVwIGZvciB1bmRlcnN0YW5kaW5nIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXZhaWxhYmxlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiBQTVNSIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCwgaG93IGl0IGlzIGV4cG9zZWQgdG8gdGhlIHVzZXIsIGFuZCBpZiBpdCYjMzk7cyBkZXBlbmRlbnQgb24gYW55IG90aGVyIG9wdGlvbnMuIExldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyBpbiB0aGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAxMDoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtQTVNSJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3dpcmVsZXNzLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNTY4IGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jPTQ2MT1zdGF0aWMgY29uc3Qgc3RydWN0IG5sYV9wb2xpY3lcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6NDYyOm5sODAyMTFfcG1zcl9mdG1fcmVxX2F0dHJfcG9saWN5W05MODAyMTFfUE1TUl9GVE1fUkVRX0FUVFJfTUFYICYjNDM7IDFdID0ge1xubmV0L3dpcmVsZXNzL25sODAyMTEuYzo0NjM6XHRbTkw4MDIxMV9QTVNSX0ZUTV9SRVFfQVRUUl9BU0FQXSA9IHsgLnR5cGUgPSBOTEFfRkxBRyB9LFxubmV0L3dpcmVsZXNzL25sODAyMTEuYzo0NjQ6XHRbTkw4MDIxMV9QTVNSX0ZUTV9SRVFfQVRUUl9QUkVBTUJMRV0gPSB7IC50eXBlID0gTkxBX1UzMiB9LFxubmV0L3dpcmVsZXNzL25sODAyMTEuYzo0NjU6XHRbTkw4MDIxMV9QTVNSX0ZUTV9SRVFfQVRUUl9OVU1fQlVSU1RTX0VYUF0gPVxubmV0L3dpcmVsZXNzL25sODAyMTEuYy00NjYtXHRcdE5MQV9QT0xJQ1lfTUFYKE5MQV9VOCwgMTUpLFxubmV0L3dpcmVsZXNzL25sODAyMTEuYzo0Njc6XHRbTkw4MDIxMV9QTVNSX0ZUTV9SRVFfQVRUUl9CVVJTVF9QRVJJT0RdID0geyAudHlwZSA9IE5MQV9VMTYgfSxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6NDY4Olx0W05MODAyMTFfUE1TUl9GVE1fUkVRX0FUVFJfQlVSU1RfRFVSQVRJT05dID1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtNDY5LVx0XHROTEFfUE9MSUNZX01BWChOTEFfVTgsIDE1KSxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6NDcwOlx0W05MODAyMTFfUE1TUl9GVE1fUkVRX0FUVFJfRlRNU19QRVJfQlVSU1RdID0geyAudHlwZSA9IE5MQV9VOCB9LFxubmV0L3dpcmVsZXNzL25sODAyMTEuYzo0NzE6XHRbTkw4MDIxMV9QTVNSX0ZUTV9SRVFfQVRUUl9OVU1fRlRNUl9SRVRSSUVTXSA9IHsgLnR5cGUgPSBOTEFfVTggfSxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6NDcyOlx0W05MODAyMTFfUE1TUl9GVE1fUkVRX0FUVFJfUkVRVUVTVF9MQ0ldID0geyAudHlwZSA9IE5MQV9GTEFHIH0sXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjQ3MzpcdFtOTDgwMjExX1BNU1JfRlRNX1JFUV9BVFRSX1JFUVVFU1RfQ0lWSUNMT0NdID0geyAudHlwZSA9IE5MQV9GTEFHIH0sXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjQ3NDpcdFtOTDgwMjExX1BNU1JfRlRNX1JFUV9BVFRSX1RSSUdHRVJfQkFTRURdID0geyAudHlwZSA9IE5MQV9GTEFHIH0sXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjQ3NTpcdFtOTDgwMjExX1BNU1JfRlRNX1JFUV9BVFRSX05PTl9UUklHR0VSX0JBU0VEXSA9IHsgLnR5cGUgPSBOTEFfRkxBRyB9LFxubmV0L3dpcmVsZXNzL25sODAyMTEuYzo0NzY6XHRbTkw4MDIxMV9QTVNSX0ZUTV9SRVFfQVRUUl9MTVJfRkVFREJBQ0tdID0geyAudHlwZSA9IE5MQV9GTEFHIH0sXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjQ3NzpcdFtOTDgwMjExX1BNU1JfRlRNX1JFUV9BVFRSX0JTU19DT0xPUl0gPSB7IC50eXBlID0gTkxBX1U4IH0sXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjQ3ODpcdFtOTDgwMjExX1BNU1JfRlRNX1JFUV9BVFRSX1JTVEFdID0geyAudHlwZSA9IE5MQV9GTEFHIH0sXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjQ3OTpcdFtOTDgwMjExX1BNU1JfRlRNX1JFUV9BVFRSX01JTl9USU1FX0JFVFdFRU5fTUVBU1VSRU1FTlRTXSA9IHtcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtNDgwLVx0XHQudHlwZSA9IE5MQV9VMzJcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtNDgxLVx0fSxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6NDgyOlx0W05MODAyMTFfUE1TUl9GVE1fUkVRX0FUVFJfTUFYX1RJTUVfQkVUV0VFTl9NRUFTVVJFTUVOVFNdID0ge1xubmV0L3dpcmVsZXNzL25sODAyMTEuYy00ODMtXHRcdC50eXBlID0gTkxBX1UzMlxubmV0L3dpcmVsZXNzL25sODAyMTEuYy00ODQtXHR9LFxubmV0L3dpcmVsZXNzL25sODAyMTEuYzo0ODU6XHRbTkw4MDIxMV9QTVNSX0ZUTV9SRVFfQVRUUl9OT01JTkFMX1RJTUVdID0geyAudHlwZSA9IE5MQV9VMzIgfSxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6NDg2Olx0W05MODAyMTFfUE1TUl9GVE1fUkVRX0FUVFJfQVdfRFVSQVRJT05dID0gTkxBX1BPTElDWV9NQVgoTkxBX1UzMiwgMjU1KSxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6NDg3Olx0W05MODAyMTFfUE1TUl9GVE1fUkVRX0FUVFJfTlVNX01FQVNVUkVNRU5UU10gPSB7IC50eXBlID0gTkxBX1UzMiB9LFxubmV0L3dpcmVsZXNzL25sODAyMTEuYzo0ODg6XHRbTkw4MDIxMV9QTVNSX0ZUTV9SRVFfQVRUUl9JTkdSRVNTXSA9IHsgLnR5cGUgPSBOTEFfVTY0IH0sXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjQ4OTpcdFtOTDgwMjExX1BNU1JfRlRNX1JFUV9BVFRSX0VHUkVTU10gPSB7IC50eXBlID0gTkxBX1U2NCB9LFxubmV0L3dpcmVsZXNzL25sODAyMTEuYzo0OTA6XHRbTkw4MDIxMV9QTVNSX0ZUTV9SRVFfQVRUUl9QRF9TVVBQUkVTU19SRVNVTFRTXSA9IHsgLnR5cGUgPSBOTEFfRkxBRyB9LFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy00OTEtfTtcbi0tXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jPTQ5Mz1zdGF0aWMgY29uc3Qgc3RydWN0IG5sYV9wb2xpY3lcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6NDk0Om5sODAyMTFfcG1zcl9yZXFfZGF0YV9wb2xpY3lbTkw4MDIxMV9QTVNSX1RZUEVfTUFYICYjNDM7IDFdID0ge1xubmV0L3dpcmVsZXNzL25sODAyMTEuYzo0OTU6XHRbTkw4MDIxMV9QTVNSX1RZUEVfRlRNXSA9XG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTQ5Ni1cdFx0TkxBX1BPTElDWV9ORVNURUQobmw4MDIxMV9wbXNyX2Z0bV9yZXFfYXR0cl9wb2xpY3kpLFxuLS1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmM9NDk5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeVxubmV0L3dpcmVsZXNzL25sODAyMTEuYzo1MDA6bmw4MDIxMV9wbXNyX3JlcV9hdHRyX3BvbGljeVtOTDgwMjExX1BNU1JfUkVRX0FUVFJfTUFYICYjNDM7IDFdID0ge1xubmV0L3dpcmVsZXNzL25sODAyMTEuYzo1MDE6XHRbTkw4MDIxMV9QTVNSX1JFUV9BVFRSX0RBVEFdID1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtNTAyLVx0XHROTEFfUE9MSUNZX05FU1RFRChubDgwMjExX3Btc3JfcmVxX2RhdGFfcG9saWN5KSxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6NTAzOlx0W05MODAyMTFfUE1TUl9SRVFfQVRUUl9HRVRfQVBfVFNGXSA9IHsgLnR5cGUgPSBOTEFfRkxBRyB9LFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy01MDQtfTtcbi0tXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jPTUwNj1zdGF0aWMgY29uc3Qgc3RydWN0IG5sYV9wb2xpY3lcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6NTA3Om5sODAyMTFfcG1zcl9wZWVyX2F0dHJfcG9saWN5W05MODAyMTFfUE1TUl9QRUVSX0FUVFJfTUFYICYjNDM7IDFdID0ge1xubmV0L3dpcmVsZXNzL25sODAyMTEuYzo1MDg6XHRbTkw4MDIxMV9QTVNSX1BFRVJfQVRUUl9BRERSXSA9IE5MQV9QT0xJQ1lfRVRIX0FERFIsXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjUwOTpcdFtOTDgwMjExX1BNU1JfUEVFUl9BVFRSX0NIQU5dID0gTkxBX1BPTElDWV9ORVNURUQobmw4MDIxMV9wb2xpY3kpLFxubmV0L3dpcmVsZXNzL25sODAyMTEuYzo1MTA6XHRbTkw4MDIxMV9QTVNSX1BFRVJfQVRUUl9SRVFdID1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtNTExLVx0XHROTEFfUE9MSUNZX05FU1RFRChubDgwMjExX3Btc3JfcmVxX2F0dHJfcG9saWN5KSxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6NTEyOlx0W05MODAyMTFfUE1TUl9QRUVSX0FUVFJfUkVTUF0gPSB7IC50eXBlID0gTkxBX1JFSkVDVCB9LFxubmV0L3dpcmVsZXNzL25sODAyMTEuYzo1MTM6XHRbTkw4MDIxMV9QTVNSX1BFRVJfQVRUUl9SRVFfVFlQRV0gPVxubmV0L3dpcmVsZXNzL25sODAyMTEuYzo1MTQ6XHRcdE5MQV9QT0xJQ1lfTUFYKE5MQV9VMzIsIE5MODAyMTFfUE1TUl9GVE1fUkVRX1RZUEVfTUFYKSxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtNTE1LX07XG4tLVxubmV0L3dpcmVsZXNzL25sODAyMTEuYz01MTc9c3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5XG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjUxODpubDgwMjExX3Btc3JfYXR0cl9wb2xpY3lbTkw4MDIxMV9QTVNSX0FUVFJfTUFYICYjNDM7IDFdID0ge1xubmV0L3dpcmVsZXNzL25sODAyMTEuYzo1MTk6XHRbTkw4MDIxMV9QTVNSX0FUVFJfTUFYX1BFRVJTXSA9IHsgLnR5cGUgPSBOTEFfUkVKRUNUIH0sXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjUyMDpcdFtOTDgwMjExX1BNU1JfQVRUUl9SRVBPUlRfQVBfVFNGXSA9IHsgLnR5cGUgPSBOTEFfUkVKRUNUIH0sXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjUyMTpcdFtOTDgwMjExX1BNU1JfQVRUUl9SQU5ET01JWkVfTUFDX0FERFJdID0geyAudHlwZSA9IE5MQV9SRUpFQ1QgfSxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6NTIyOlx0W05MODAyMTFfUE1TUl9BVFRSX1RZUEVfQ0FQQV0gPSB7IC50eXBlID0gTkxBX1JFSkVDVCB9LFxubmV0L3dpcmVsZXNzL25sODAyMTEuYzo1MjM6XHRbTkw4MDIxMV9QTVNSX0FUVFJfUEVFUlNdID1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtNTI0LVx0XHROTEFfUE9MSUNZX05FU1RFRF9BUlJBWShubDgwMjExX3Btc3JfcGVlcl9hdHRyX3BvbGljeSksXG4tLVxubmV0L3dpcmVsZXNzL25sODAyMTEuYz0yNDc4PW5sODAyMTFfc2VuZF9wbXNyX2Z0bV9jYXBhKGNvbnN0IHN0cnVjdCBjZmc4MDIxMV9wbXNyX2NhcGFiaWxpdGllcyAqY2FwLFxuLS1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjQ4NS1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MjQ4NjpcdGZ0bSA9IG5sYV9uZXN0X3N0YXJ0X25vZmxhZyhtc2csIE5MODAyMTFfUE1TUl9UWVBFX0ZUTSk7XG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTI0ODctXHRpZiAoIWZ0bSlcbi0tXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTI0ODktXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjI0OTA6XHRpZiAoY2FwLVx1MDAzZWZ0bS5hc2FwIFx1MDAyNlx1MDAyNiBubGFfcHV0X2ZsYWcobXNnLCBOTDgwMjExX1BNU1JfRlRNX0NBUEFfQVRUUl9BU0FQKSlcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjQ5MS1cdFx0cmV0dXJuIC1FTk9CVUZTO1xubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yNDkyLVx0aWYgKGNhcC1cdTAwM2VmdG0ubm9uX2FzYXAgXHUwMDI2XHUwMDI2XG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjI0OTM6XHQgICAgbmxhX3B1dF9mbGFnKG1zZywgTkw4MDIxMV9QTVNSX0ZUTV9DQVBBX0FUVFJfTk9OX0FTQVApKVxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yNDk0LVx0XHRyZXR1cm4gLUVOT0JVRlM7XG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTI0OTUtXHRpZiAoY2FwLVx1MDAzZWZ0bS5yZXF1ZXN0X2xjaSBcdTAwMjZcdTAwMjZcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MjQ5NjpcdCAgICBubGFfcHV0X2ZsYWcobXNnLCBOTDgwMjExX1BNU1JfRlRNX0NBUEFfQVRUUl9SRVFfTENJKSlcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjQ5Ny1cdFx0cmV0dXJuIC1FTk9CVUZTO1xubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yNDk4LVx0aWYgKGNhcC1cdTAwM2VmdG0ucmVxdWVzdF9jaXZpY2xvYyBcdTAwMjZcdTAwMjZcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MjQ5OTpcdCAgICBubGFfcHV0X2ZsYWcobXNnLCBOTDgwMjExX1BNU1JfRlRNX0NBUEFfQVRUUl9SRVFfQ0lWSUNMT0MpKVxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yNTAwLVx0XHRyZXR1cm4gLUVOT0JVRlM7XG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjI1MDE6XHRpZiAobmxhX3B1dF91MzIobXNnLCBOTDgwMjExX1BNU1JfRlRNX0NBUEFfQVRUUl9QUkVBTUJMRVMsXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTI1MDItXHRcdFx0Y2FwLVx1MDAzZWZ0bS5wcmVhbWJsZXMpKVxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yNTAzLVx0XHRyZXR1cm4gLUVOT0JVRlM7XG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjI1MDQ6XHRpZiAobmxhX3B1dF91MzIobXNnLCBOTDgwMjExX1BNU1JfRlRNX0NBUEFfQVRUUl9CQU5EV0lEVEhTLFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yNTA1LVx0XHRcdGNhcC1cdTAwM2VmdG0uYmFuZHdpZHRocykpXG4tLVxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yNTA3LVx0aWYgKGNhcC1cdTAwM2VmdG0ubWF4X2J1cnN0c19leHBvbmVudCBcdTAwM2U9IDAgXHUwMDI2XHUwMDI2XG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjI1MDg6XHQgICAgbmxhX3B1dF91MzIobXNnLCBOTDgwMjExX1BNU1JfRlRNX0NBUEFfQVRUUl9NQVhfQlVSU1RTX0VYUE9ORU5ULFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yNTA5LVx0XHRcdGNhcC1cdTAwM2VmdG0ubWF4X2J1cnN0c19leHBvbmVudCkpXG4tLVxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yNTExLVx0aWYgKGNhcC1cdTAwM2VmdG0ubWF4X2Z0bXNfcGVyX2J1cnN0IFx1MDAyNlx1MDAyNlxubmV0L3dpcmVsZXNzL25sODAyMTEuYzoyNTEyOlx0ICAgIG5sYV9wdXRfdTMyKG1zZywgTkw4MDIxMV9QTVNSX0ZUTV9DQVBBX0FUVFJfTUFYX0ZUTVNfUEVSX0JVUlNULFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yNTEzLVx0XHRcdGNhcC1cdTAwM2VmdG0ubWF4X2Z0bXNfcGVyX2J1cnN0KSlcbi0tXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTI1MTUtXHRpZiAoY2FwLVx1MDAzZWZ0bS50cmlnZ2VyX2Jhc2VkIFx1MDAyNlx1MDAyNlxubmV0L3dpcmVsZXNzL25sODAyMTEuYzoyNTE2Olx0ICAgIG5sYV9wdXRfZmxhZyhtc2csIE5MODAyMTFfUE1TUl9GVE1fQ0FQQV9BVFRSX1RSSUdHRVJfQkFTRUQpKVxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yNTE3LVx0XHRyZXR1cm4gLUVOT0JVRlM7XG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTI1MTgtXHRpZiAoY2FwLVx1MDAzZWZ0bS5ub25fdHJpZ2dlcl9iYXNlZCBcdTAwMjZcdTAwMjZcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MjUxOTpcdCAgICBubGFfcHV0X2ZsYWcobXNnLCBOTDgwMjExX1BNU1JfRlRNX0NBUEFfQVRUUl9OT05fVFJJR0dFUl9CQVNFRCkpXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTI1MjAtXHRcdHJldHVybiAtRU5PQlVGUztcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjUyMS1cdGlmIChjYXAtXHUwMDNlZnRtLnN1cHBvcnRfNmdoeiBcdTAwMjZcdTAwMjZcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MjUyMjpcdCAgICBubGFfcHV0X2ZsYWcobXNnLCBOTDgwMjExX1BNU1JfRlRNX0NBUEFfQVRUUl82R0haX1NVUFBPUlQpKVxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yNTIzLVx0XHRyZXR1cm4gLUVOT0JVRlM7XG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjI1MjQ6XHRpZiAobmxhX3B1dF91MzIobXNnLCBOTDgwMjExX1BNU1JfRlRNX0NBUEFfQVRUUl9NQVhfVFhfTFRGX1JFUCxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjUyNS1cdFx0XHRjYXAtXHUwMDNlZnRtLm1heF90eF9sdGZfcmVwKSlcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjUyNi1cdFx0cmV0dXJuIC1FTk9CVUZTO1xubmV0L3dpcmVsZXNzL25sODAyMTEuYzoyNTI3Olx0aWYgKG5sYV9wdXRfdTMyKG1zZywgTkw4MDIxMV9QTVNSX0ZUTV9DQVBBX0FUVFJfTUFYX1JYX0xURl9SRVAsXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTI1MjgtXHRcdFx0Y2FwLVx1MDAzZWZ0bS5tYXhfcnhfbHRmX3JlcCkpXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTI1MjktXHRcdHJldHVybiAtRU5PQlVGUztcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MjUzMDpcdGlmIChubGFfcHV0X3UzMihtc2csIE5MODAyMTFfUE1TUl9GVE1fQ0FQQV9BVFRSX01BWF9UWF9TVFMsXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTI1MzEtXHRcdFx0Y2FwLVx1MDAzZWZ0bS5tYXhfdHhfc3RzKSlcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjUzMi1cdFx0cmV0dXJuIC1FTk9CVUZTO1xubmV0L3dpcmVsZXNzL25sODAyMTEuYzoyNTMzOlx0aWYgKG5sYV9wdXRfdTMyKG1zZywgTkw4MDIxMV9QTVNSX0ZUTV9DQVBBX0FUVFJfTUFYX1JYX1NUUyxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjUzNC1cdFx0XHRjYXAtXHUwMDNlZnRtLm1heF9yeF9zdHMpKVxuLS1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjUzNi1cdGlmIChjYXAtXHUwMDNlZnRtLm1heF90b3RhbF9sdGZfdHggXHUwMDNlIDAgXHUwMDI2XHUwMDI2XG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjI1Mzc6XHQgICAgbmxhX3B1dF91MzIobXNnLCBOTDgwMjExX1BNU1JfRlRNX0NBUEFfQVRUUl9NQVhfVE9UQUxfTFRGX1RYLFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yNTM4LVx0XHRcdGNhcC1cdTAwM2VmdG0ubWF4X3RvdGFsX2x0Zl90eCkpXG4tLVxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yNTQwLVx0aWYgKGNhcC1cdTAwM2VmdG0ubWF4X3RvdGFsX2x0Zl9yeCBcdTAwM2UgMCBcdTAwMjZcdTAwMjZcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MjU0MTpcdCAgICBubGFfcHV0X3UzMihtc2csIE5MODAyMTFfUE1TUl9GVE1fQ0FQQV9BVFRSX01BWF9UT1RBTF9MVEZfUlgsXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTI1NDItXHRcdFx0Y2FwLVx1MDAzZWZ0bS5tYXhfdG90YWxfbHRmX3J4KSlcbi0tXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTI1NDktXHRcdGlzdGFfY2FwcyA9IG5sYV9uZXN0X3N0YXJ0X25vZmxhZyhtc2csXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjI1NTA6XHRcdFx0XHRcdFx0ICBOTDgwMjExX1BNU1JfRlRNX0NBUEFfQVRUUl9JU1RBX0NBUFMpO1xubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yNTUxLVx0XHRpZiAoIWlzdGFfY2Fwcylcbi0tXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTI1NTMtXHRcdGlmIChjYXAtXHUwMDNlZnRtLmlzdGEuc3VwcG9ydF9udGIgXHUwMDI2XHUwMDI2XG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjI1NTQ6XHRcdCAgICBubGFfcHV0X2ZsYWcobXNnLCBOTDgwMjExX1BNU1JfRlRNX0NBUEFfQVRUUl9TVVBQT1JUX05UQikpXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTI1NTUtXHRcdFx0cmV0dXJuIC1FTk9CVUZTO1xubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yNTU2LVx0XHRpZiAoY2FwLVx1MDAzZWZ0bS5pc3RhLnN1cHBvcnRfdGIgXHUwMDI2XHUwMDI2XG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjI1NTc6XHRcdCAgICBubGFfcHV0X2ZsYWcobXNnLCBOTDgwMjExX1BNU1JfRlRNX0NBUEFfQVRUUl9TVVBQT1JUX1RCKSlcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjU1OC1cdFx0XHRyZXR1cm4gLUVOT0JVRlM7XG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTI1NTktXHRcdGlmIChjYXAtXHUwMDNlZnRtLmlzdGEuc3VwcG9ydF9lZGNhIFx1MDAyNlx1MDAyNlxubmV0L3dpcmVsZXNzL25sODAyMTEuYzoyNTYwOlx0XHQgICAgbmxhX3B1dF9mbGFnKG1zZywgTkw4MDIxMV9QTVNSX0ZUTV9DQVBBX0FUVFJfU1VQUE9SVF9FRENBKSlcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjU2MS1cdFx0XHRyZXR1cm4gLUVOT0JVRlM7XG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTI1NjItXHRcdGlmIChjYXAtXHUwMDNlZnRtLmlzdGEubWF4X3BlZXJzIFx1MDAyNlx1MDAyNlxubmV0L3dpcmVsZXNzL25sODAyMTEuYzoyNTYzOlx0XHQgICAgbmxhX3B1dF91MzIobXNnLCBOTDgwMjExX1BNU1JfQVRUUl9NQVhfUEVFUl9JU1RBX1JPTEUsXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTI1NjQtXHRcdFx0XHRjYXAtXHUwMDNlZnRtLmlzdGEubWF4X3BlZXJzKSlcbi0tXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTI1NzctXHRcdCAqL1xubmV0L3dpcmVsZXNzL25sODAyMTEuYzoyNTc4Olx0XHRpZiAobmxhX3B1dF9mbGFnKG1zZywgTkw4MDIxMV9QTVNSX0ZUTV9DQVBBX0FUVFJfUlNUQV9TVVBQT1JUKSlcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjU3OS1cdFx0XHRyZXR1cm4gLUVOT0JVRlM7XG4tLVxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yNTgxLVx0XHRyc3RhX2NhcHMgPSBubGFfbmVzdF9zdGFydF9ub2ZsYWcobXNnLFxubmV0L3dpcmVsZXNzL25sODAyMTEuYzoyNTgyOlx0XHRcdFx0XHRcdCAgTkw4MDIxMV9QTVNSX0ZUTV9DQVBBX0FUVFJfUlNUQV9DQVBTKTtcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjU4My1cdFx0aWYgKCFyc3RhX2NhcHMpXG4tLVxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yNTg1LVx0XHRpZiAoY2FwLVx1MDAzZWZ0bS5yc3RhLnN1cHBvcnRfbnRiIFx1MDAyNlx1MDAyNlxubmV0L3dpcmVsZXNzL25sODAyMTEuYzoyNTg2Olx0XHQgICAgbmxhX3B1dF9mbGFnKG1zZywgTkw4MDIxMV9QTVNSX0ZUTV9DQVBBX0FUVFJfU1VQUE9SVF9OVEIpKVxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yNTg3LVx0XHRcdHJldHVybiAtRU5PQlVGUztcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjU4OC1cdFx0aWYgKGNhcC1cdTAwM2VmdG0ucnN0YS5zdXBwb3J0X3RiIFx1MDAyNlx1MDAyNlxubmV0L3dpcmVsZXNzL25sODAyMTEuYzoyNTg5Olx0XHQgICAgbmxhX3B1dF9mbGFnKG1zZywgTkw4MDIxMV9QTVNSX0ZUTV9DQVBBX0FUVFJfU1VQUE9SVF9UQikpXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTI1OTAtXHRcdFx0cmV0dXJuIC1FTk9CVUZTO1xubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yNTkxLVx0XHRpZiAoY2FwLVx1MDAzZWZ0bS5yc3RhLnN1cHBvcnRfZWRjYSBcdTAwMjZcdTAwMjZcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MjU5MjpcdFx0ICAgIG5sYV9wdXRfZmxhZyhtc2csIE5MODAyMTFfUE1TUl9GVE1fQ0FQQV9BVFRSX1NVUFBPUlRfRURDQSkpXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTI1OTMtXHRcdFx0cmV0dXJuIC1FTk9CVUZTO1xubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yNTk0LVx0XHRpZiAoY2FwLVx1MDAzZWZ0bS5yc3RhLm1heF9wZWVycyBcdTAwMjZcdTAwMjZcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MjU5NTpcdFx0ICAgIG5sYV9wdXRfdTMyKG1zZywgTkw4MDIxMV9QTVNSX0FUVFJfTUFYX1BFRVJfUlNUQV9ST0xFLFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yNTk2LVx0XHRcdFx0Y2FwLVx1MDAzZWZ0bS5yc3RhLm1heF9wZWVycykpXG4tLVxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yNjAxLVx0aWYgKGNhcC1cdTAwM2VmdG0ubWF4X25vX29mX3R4X2FudGVubmFzIFx1MDAyNlx1MDAyNlxubmV0L3dpcmVsZXNzL25sODAyMTEuYzoyNjAyOlx0ICAgIG5sYV9wdXRfdTgobXNnLCBOTDgwMjExX1BNU1JfRlRNX0NBUEFfQVRUUl9NQVhfTlVNX1RYX0FOVEVOTkFTLFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yNjAzLVx0XHQgICAgICAgY2FwLVx1MDAzZWZ0bS5tYXhfbm9fb2ZfdHhfYW50ZW5uYXMpKVxuLS1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjYwNi1cdGlmIChjYXAtXHUwMDNlZnRtLm1heF9ub19vZl9yeF9hbnRlbm5hcyBcdTAwMjZcdTAwMjZcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MjYwNzpcdCAgICBubGFfcHV0X3U4KG1zZywgTkw4MDIxMV9QTVNSX0ZUTV9DQVBBX0FUVFJfTUFYX05VTV9SWF9BTlRFTk5BUyxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjYwOC1cdFx0ICAgICAgIGNhcC1cdTAwM2VmdG0ubWF4X25vX29mX3J4X2FudGVubmFzKSlcbi0tXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTI2MTEtXHRpZiAoY2FwLVx1MDAzZWZ0bS5taW5fYWxsb3dlZF9yYW5naW5nX2ludGVydmFsX2VkY2EgXHUwMDI2XHUwMDI2XG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjI2MTI6XHQgICAgbmxhX3B1dF91MzIobXNnLCBOTDgwMjExX1BNU1JfRlRNX0NBUEFfQVRUUl9NSU5fSU5URVJWQUxfRURDQSxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjYxMy1cdFx0XHRjYXAtXHUwMDNlZnRtLm1pbl9hbGxvd2VkX3JhbmdpbmdfaW50ZXJ2YWxfZWRjYSkpXG4tLVxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yNjE2LVx0aWYgKGNhcC1cdTAwM2VmdG0ubWluX2FsbG93ZWRfcmFuZ2luZ19pbnRlcnZhbF9udGIgXHUwMDI2XHUwMDI2XG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjI2MTc6XHQgICAgbmxhX3B1dF91MzIobXNnLCBOTDgwMjExX1BNU1JfRlRNX0NBUEFfQVRUUl9NSU5fSU5URVJWQUxfTlRCLFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yNjE4LVx0XHRcdGNhcC1cdTAwM2VmdG0ubWluX2FsbG93ZWRfcmFuZ2luZ19pbnRlcnZhbF9udGIpKVxuLS1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjYyNC1cdFx0cGRfY2FwcyA9IG5sYV9uZXN0X3N0YXJ0X25vZmxhZyhtc2csXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjI2MjU6XHRcdFx0XHRcdFx0Tkw4MDIxMV9QTVNSX0ZUTV9DQVBBX0FUVFJfVFlQRV9DQVBTKTtcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjYyNi1cdFx0aWYgKCFwZF9jYXBzKVxuLS1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjYyOS1cdFx0aWYgKGNhcC1cdTAwM2VmdG0udHlwZS5pbmZyYV9zdXBwb3J0IFx1MDAyNlx1MDAyNlxubmV0L3dpcmVsZXNzL25sODAyMTEuYzoyNjMwOlx0XHQgICAgbmxhX3B1dF9mbGFnKG1zZywgTkw4MDIxMV9QTVNSX0ZUTV9UWVBFX0NBUEFfQVRUUl9JTkZSQV9TVVBQT1JUKSlcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjYzMS1cdFx0XHRyZXR1cm4gLUVOT0JVRlM7XG4tLVxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yNjMzLVx0XHRpZiAoY2FwLVx1MDAzZWZ0bS50eXBlLnBkX3N1cHBvcnQgXHUwMDI2XHUwMDI2XG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjI2MzQ6XHRcdCAgICBubGFfcHV0X2ZsYWcobXNnLCBOTDgwMjExX1BNU1JfRlRNX1RZUEVfQ0FQQV9BVFRSX1BEX1NVUFBPUlQpKVxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yNjM1LVx0XHRcdHJldHVybiAtRU5PQlVGUztcbi0tXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTI2NDAtXHRpZiAoY2FwLVx1MDAzZWZ0bS5jb25jdXJyZW50X2lzdGFfcnN0YV9zdXBwb3J0IFx1MDAyNlx1MDAyNlxubmV0L3dpcmVsZXNzL25sODAyMTEuYzoyNjQxOlx0ICAgIG5sYV9wdXRfZmxhZyhtc2csIE5MODAyMTFfUE1TUl9GVE1fQ0FQQV9BVFRSX0NPTkNVUlJFTlRfSVNUQV9SU1RBX1NVUFBPUlQpKVxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yNjQyLVx0XHRyZXR1cm4gLUVOT0JVRlM7XG4tLVxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yNjQ1LVx0XHRpZiAoY2FwLVx1MDAzZWZ0bS5wZF9wcmVhbWJsZXMgXHUwMDI2XHUwMDI2XG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjI2NDY6XHRcdCAgICBubGFfcHV0X3UzMihtc2csIE5MODAyMTFfUE1TUl9GVE1fQ0FQQV9BVFRSX1BEX1BSRUFNQkxFUyxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjY0Ny1cdFx0XHRcdGNhcC1cdTAwM2VmdG0ucGRfcHJlYW1ibGVzKSlcbi0tXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTI2NDktXHRcdGlmIChjYXAtXHUwMDNlZnRtLnBkX2JhbmR3aWR0aHMgXHUwMDI2XHUwMDI2XG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjI2NTA6XHRcdCAgICBubGFfcHV0X3UzMihtc2csIE5MODAyMTFfUE1TUl9GVE1fQ0FQQV9BVFRSX1BEX0JBTkRXSURUSFMsXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTI2NTEtXHRcdFx0XHRjYXAtXHUwMDNlZnRtLnBkX2JhbmR3aWR0aHMpKVxuLS1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmM9MjY1OT1zdGF0aWMgaW50IG5sODAyMTFfc2VuZF9wbXNyX2NhcGEoc3RydWN0IGNmZzgwMjExX3JlZ2lzdGVyZWRfZGV2aWNlICpyZGV2LFxuLS1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjY3Ni1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MjY3NzpcdGlmIChubGFfcHV0X3UzMihtc2csIE5MODAyMTFfUE1TUl9BVFRSX01BWF9QRUVSUywgY2FwLVx1MDAzZW1heF9wZWVycykpXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTI2NzgtXHRcdHJldHVybiAtRU5PQlVGUztcbi0tXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTI2ODAtXHRpZiAoY2FwLVx1MDAzZXJlcG9ydF9hcF90c2YgXHUwMDI2XHUwMDI2XG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjI2ODE6XHQgICAgbmxhX3B1dF9mbGFnKG1zZywgTkw4MDIxMV9QTVNSX0FUVFJfUkVQT1JUX0FQX1RTRikpXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTI2ODItXHRcdHJldHVybiAtRU5PQlVGUztcbi0tXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTI2ODQtXHRpZiAoY2FwLVx1MDAzZXJhbmRvbWl6ZV9tYWNfYWRkciBcdTAwMjZcdTAwMjZcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MjY4NTpcdCAgICBubGFfcHV0X2ZsYWcobXNnLCBOTDgwMjExX1BNU1JfQVRUUl9SQU5ET01JWkVfTUFDX0FERFIpKVxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yNjg2LVx0XHRyZXR1cm4gLUVOT0JVRlM7XG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTI2ODctXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjI2ODg6XHRjYXBzID0gbmxhX25lc3Rfc3RhcnRfbm9mbGFnKG1zZywgTkw4MDIxMV9QTVNSX0FUVFJfVFlQRV9DQVBBKTtcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjY4OS1cdGlmICghY2Fwcylcbi0tXG5uZXQvd2lyZWxlc3MvcG1zci5jPTEwPXN0YXRpYyBpbnQgcG1zcl9wYXJzZV9mdG0oc3RydWN0IGNmZzgwMjExX3JlZ2lzdGVyZWRfZGV2aWNlICpyZGV2LFxuLS1cbm5ldC93aXJlbGVzcy9wbXNyLmMtMTUtXHRjb25zdCBzdHJ1Y3QgY2ZnODAyMTFfcG1zcl9jYXBhYmlsaXRpZXMgKmNhcGEgPSByZGV2LVx1MDAzZXdpcGh5LnBtc3JfY2FwYTtcbm5ldC93aXJlbGVzcy9wbXNyLmM6MTY6XHRzdHJ1Y3QgbmxhdHRyICp0YltOTDgwMjExX1BNU1JfRlRNX1JFUV9BVFRSX01BWCAmIzQzOyAxXTtcbm5ldC93aXJlbGVzcy9wbXNyLmMtMTctXHR1MzIgcHJlYW1ibGUgPSBOTDgwMjExX1BSRUFNQkxFX0RNRzsgLyogb25seSBvcHRpb25hbCBpbiBETUcgKi9cbi0tXG5uZXQvd2lyZWxlc3MvcG1zci5jLTE5LVx0LyogdmFsaWRhdGUgZXhpc3RpbmcgZGF0YSAqL1xubmV0L3dpcmVsZXNzL3Btc3IuYzoyMDpcdGlmIChvdXQtXHUwMDNlZnRtLnJlcXVlc3RfdHlwZSA9PSBOTDgwMjExX1BNU1JfRlRNX1JFUV9UWVBFX0lORlJBIFx1MDAyNlx1MDAyNlxubmV0L3dpcmVsZXNzL3Btc3IuYy0yMS1cdCAgICAhKGNhcGEtXHUwMDNlZnRtLmJhbmR3aWR0aHMgXHUwMDI2IEJJVChvdXQtXHUwMDNlY2hhbmRlZi53aWR0aCkpKSB7XG4tLVxubmV0L3dpcmVsZXNzL3Btc3IuYy0yNS1cbm5ldC93aXJlbGVzcy9wbXNyLmM6MjY6XHRpZiAob3V0LVx1MDAzZWZ0bS5yZXF1ZXN0X3R5cGUgPT0gTkw4MDIxMV9QTVNSX0ZUTV9SRVFfVFlQRV9QRCBcdTAwMjZcdTAwMjZcbm5ldC93aXJlbGVzcy9wbXNyLmMtMjctXHQgICAgIShjYXBhLVx1MDAzZWZ0bS5wZF9iYW5kd2lkdGhzIFx1MDAyNiBCSVQob3V0LVx1MDAzZWNoYW5kZWYud2lkdGgpKSkge1xuLS1cbm5ldC93aXJlbGVzcy9wbXNyLmMtMzMtXHQvKiBubyB2YWxpZGF0aW9uIG5lZWRlZCAtIHdhcyBhbHJlYWR5IGRvbmUgdmlhIG5lc3RlZCBwb2xpY3kgKi9cbm5ldC93aXJlbGVzcy9wbXNyLmM6MzQ6XHRubGFfcGFyc2VfbmVzdGVkX2RlcHJlY2F0ZWQodGIsIE5MODAyMTFfUE1TUl9GVE1fUkVRX0FUVFJfTUFYLCBmdG1yZXEsXG5uZXQvd2lyZWxlc3MvcG1zci5jLTM1LVx0XHRcdFx0ICAgIE5VTEwsIE5VTEwpO1xubmV0L3dpcmVsZXNzL3Btc3IuYy0zNi1cbm5ldC93aXJlbGVzcy9wbXNyLmM6Mzc6XHRpZiAodGJbTkw4MDIxMV9QTVNSX0ZUTV9SRVFfQVRUUl9QUkVBTUJMRV0pXG5uZXQvd2lyZWxlc3MvcG1zci5jOjM4Olx0XHRwcmVhbWJsZSA9IG5sYV9nZXRfdTMyKHRiW05MODAyMTFfUE1TUl9GVE1fUkVRX0FUVFJfUFJFQU1CTEVdKTtcbm5ldC93aXJlbGVzcy9wbXNyLmMtMzktXG4tLVxubmV0L3dpcmVsZXNzL3Btc3IuYy00Ny1cdGRlZmF1bHQ6XG5uZXQvd2lyZWxlc3MvcG1zci5jOjQ4Olx0XHRpZiAoIXRiW05MODAyMTFfUE1TUl9GVE1fUkVRX0FUVFJfUFJFQU1CTEVdKSB7XG5uZXQvd2lyZWxlc3MvcG1zci5jLTQ5LVx0XHRcdE5MX1NFVF9FUlJfTVNHKGluZm8tXHUwMDNlZXh0YWNrLFxuLS1cbm5ldC93aXJlbGVzcy9wbXNyLmMtNTQtXG5uZXQvd2lyZWxlc3MvcG1zci5jOjU1Olx0aWYgKG91dC1cdTAwM2VmdG0ucmVxdWVzdF90eXBlID09IE5MODAyMTFfUE1TUl9GVE1fUkVRX1RZUEVfSU5GUkEgXHUwMDI2XHUwMDI2XG5uZXQvd2lyZWxlc3MvcG1zci5jLTU2LVx0ICAgICEoY2FwYS1cdTAwM2VmdG0ucHJlYW1ibGVzIFx1MDAyNiBCSVQocHJlYW1ibGUpKSkge1xubmV0L3dpcmVsZXNzL3Btc3IuYy01Ny1cdFx0TkxfU0VUX0VSUl9NU0dfQVRUUihpbmZvLVx1MDAzZWV4dGFjayxcbm5ldC93aXJlbGVzcy9wbXNyLmM6NTg6XHRcdFx0XHQgICAgdGJbTkw4MDIxMV9QTVNSX0ZUTV9SRVFfQVRUUl9QUkVBTUJMRV0sXG5uZXQvd2lyZWxlc3MvcG1zci5jLTU5LVx0XHRcdFx0ICAgIFwmIzM0O0ZUTTogaW52YWxpZCBwcmVhbWJsZVwmIzM0Oyk7XG4tLVxubmV0L3dpcmVsZXNzL3Btc3IuYy02Mi1cbm5ldC93aXJlbGVzcy9wbXNyLmM6NjM6XHRpZiAob3V0LVx1MDAzZWZ0bS5yZXF1ZXN0X3R5cGUgPT0gTkw4MDIxMV9QTVNSX0ZUTV9SRVFfVFlQRV9QRCBcdTAwMjZcdTAwMjZcbm5ldC93aXJlbGVzcy9wbXNyLmMtNjQtXHQgICAgIShjYXBhLVx1MDAzZWZ0bS5wZF9wcmVhbWJsZXMgXHUwMDI2IEJJVChwcmVhbWJsZSkpKSB7XG5uZXQvd2lyZWxlc3MvcG1zci5jLTY1LVx0XHROTF9TRVRfRVJSX01TR19BVFRSKGluZm8tXHUwMDNlZXh0YWNrLFxubmV0L3dpcmVsZXNzL3Btc3IuYzo2NjpcdFx0XHRcdCAgICB0YltOTDgwMjExX1BNU1JfRlRNX1JFUV9BVFRSX1BSRUFNQkxFXSxcbm5ldC93aXJlbGVzcy9wbXNyLmMtNjctXHRcdFx0XHQgICAgXCYjMzQ7RlRNOiBpbnZhbGlkIHByZWFtYmxlIGZvciBQRCByZXF1ZXN0XCYjMzQ7KTtcbi0tXG5uZXQvd2lyZWxlc3MvcG1zci5jLTczLVx0b3V0LVx1MDAzZWZ0bS5idXJzdF9wZXJpb2QgPSAwO1xubmV0L3dpcmVsZXNzL3Btc3IuYzo3NDpcdGlmICh0YltOTDgwMjExX1BNU1JfRlRNX1JFUV9BVFRSX0JVUlNUX1BFUklPRF0pXG5uZXQvd2lyZWxlc3MvcG1zci5jLTc1LVx0XHRvdXQtXHUwMDNlZnRtLmJ1cnN0X3BlcmlvZCA9XG5uZXQvd2lyZWxlc3MvcG1zci5jOjc2Olx0XHRcdG5sYV9nZXRfdTE2KHRiW05MODAyMTFfUE1TUl9GVE1fUkVRX0FUVFJfQlVSU1RfUEVSSU9EXSk7XG5uZXQvd2lyZWxlc3MvcG1zci5jLTc3LVxubmV0L3dpcmVsZXNzL3Btc3IuYzo3ODpcdG91dC1cdTAwM2VmdG0uYXNhcCA9ICEhdGJbTkw4MDIxMV9QTVNSX0ZUTV9SRVFfQVRUUl9BU0FQXTtcbm5ldC93aXJlbGVzcy9wbXNyLmMtNzktXHRpZiAob3V0LVx1MDAzZWZ0bS5hc2FwIFx1MDAyNlx1MDAyNiAhY2FwYS1cdTAwM2VmdG0uYXNhcCkge1xubmV0L3dpcmVsZXNzL3Btc3IuYy04MC1cdFx0TkxfU0VUX0VSUl9NU0dfQVRUUihpbmZvLVx1MDAzZWV4dGFjayxcbm5ldC93aXJlbGVzcy9wbXNyLmM6ODE6XHRcdFx0XHQgICAgdGJbTkw4MDIxMV9QTVNSX0ZUTV9SRVFfQVRUUl9BU0FQXSxcbm5ldC93aXJlbGVzcy9wbXNyLmMtODItXHRcdFx0XHQgICAgXCYjMzQ7RlRNOiBBU0FQIG1vZGUgbm90IHN1cHBvcnRlZFwmIzM0Oyk7XG4tLVxubmV0L3dpcmVsZXNzL3Btc3IuYy05Mi1cdG91dC1cdTAwM2VmdG0ubnVtX2J1cnN0c19leHAgPSAwO1xubmV0L3dpcmVsZXNzL3Btc3IuYzo5MzpcdGlmICh0YltOTDgwMjExX1BNU1JfRlRNX1JFUV9BVFRSX05VTV9CVVJTVFNfRVhQXSlcbm5ldC93aXJlbGVzcy9wbXNyLmMtOTQtXHRcdG91dC1cdTAwM2VmdG0ubnVtX2J1cnN0c19leHAgPVxubmV0L3dpcmVsZXNzL3Btc3IuYzo5NTpcdFx0XHRubGFfZ2V0X3U4KHRiW05MODAyMTFfUE1TUl9GVE1fUkVRX0FUVFJfTlVNX0JVUlNUU19FWFBdKTtcbm5ldC93aXJlbGVzcy9wbXNyLmMtOTYtXG4tLVxubmV0L3dpcmVsZXNzL3Btc3IuYy05OS1cdFx0TkxfU0VUX0VSUl9NU0dfQVRUUihpbmZvLVx1MDAzZWV4dGFjayxcbm5ldC93aXJlbGVzcy9wbXNyLmM6MTAwOlx0XHRcdFx0ICAgIHRiW05MODAyMTFfUE1TUl9GVE1fUkVRX0FUVFJfTlVNX0JVUlNUU19FWFBdLFxubmV0L3dpcmVsZXNzL3Btc3IuYy0xMDEtXHRcdFx0XHQgICAgXCYjMzQ7RlRNOiBtYXggTlVNX0JVUlNUU19FWFAgbXVzdCBiZSBzZXQgbG93ZXIgdGhhbiB0aGUgZGV2aWNlIGxpbWl0XCYjMzQ7KTtcbi0tXG5uZXQvd2lyZWxlc3MvcG1zci5jLTEwNS1cdG91dC1cdTAwM2VmdG0uZnRtc19wZXJfYnVyc3QgPSAwO1xubmV0L3dpcmVsZXNzL3Btc3IuYzoxMDY6XHRpZiAodGJbTkw4MDIxMV9QTVNSX0ZUTV9SRVFfQVRUUl9GVE1TX1BFUl9CVVJTVF0pXG5uZXQvd2lyZWxlc3MvcG1zci5jLTEwNy1cdFx0b3V0LVx1MDAzZWZ0bS5mdG1zX3Blcl9idXJzdCA9XG5uZXQvd2lyZWxlc3MvcG1zci5jOjEwODpcdFx0XHRubGFfZ2V0X3U4KHRiW05MODAyMTFfUE1TUl9GVE1fUkVRX0FUVFJfRlRNU19QRVJfQlVSU1RdKTtcbm5ldC93aXJlbGVzcy9wbXNyLmMtMTA5LVxuLS1cbm5ldC93aXJlbGVzcy9wbXNyLmMtMTEyLVx0XHROTF9TRVRfRVJSX01TR19BVFRSKGluZm8tXHUwMDNlZXh0YWNrLFxubmV0L3dpcmVsZXNzL3Btc3IuYzoxMTM6XHRcdFx0XHQgICAgdGJbTkw4MDIxMV9QTVNSX0ZUTV9SRVFfQVRUUl9GVE1TX1BFUl9CVVJTVF0sXG5uZXQvd2lyZWxlc3MvcG1zci5jLTExNC1cdFx0XHRcdCAgICBcJiMzNDtGVE06IEZUTXMgcGVyIGJ1cnN0IG11c3QgYmUgc2V0IGxvd2VyIHRoYW4gdGhlIGRldmljZSBsaW1pdFwmIzM0Oyk7XG4tLVxubmV0L3dpcmVsZXNzL3Btc3IuYy0xMTgtXHRvdXQtXHUwMDNlZnRtLmZ0bXJfcmV0cmllcyA9IDM7XG5uZXQvd2lyZWxlc3MvcG1zci5jOjExOTpcdGlmICh0YltOTDgwMjExX1BNU1JfRlRNX1JFUV9BVFRSX05VTV9GVE1SX1JFVFJJRVNdKVxubmV0L3dpcmVsZXNzL3Btc3IuYy0xMjAtXHRcdG91dC1cdTAwM2VmdG0uZnRtcl9yZXRyaWVzID1cbm5ldC93aXJlbGVzcy9wbXNyLmM6MTIxOlx0XHRcdG5sYV9nZXRfdTgodGJbTkw4MDIxMV9QTVNSX0ZUTV9SRVFfQVRUUl9OVU1fRlRNUl9SRVRSSUVTXSk7XG5uZXQvd2lyZWxlc3MvcG1zci5jLTEyMi1cbm5ldC93aXJlbGVzcy9wbXNyLmM6MTIzOlx0b3V0LVx1MDAzZWZ0bS5yZXF1ZXN0X2xjaSA9ICEhdGJbTkw4MDIxMV9QTVNSX0ZUTV9SRVFfQVRUUl9SRVFVRVNUX0xDSV07XG5uZXQvd2lyZWxlc3MvcG1zci5jLTEyNC1cdGlmIChvdXQtXHUwMDNlZnRtLnJlcXVlc3RfbGNpIFx1MDAyNlx1MDAyNiAhY2FwYS1cdTAwM2VmdG0ucmVxdWVzdF9sY2kpIHtcbm5ldC93aXJlbGVzcy9wbXNyLmMtMTI1LVx0XHROTF9TRVRfRVJSX01TR19BVFRSKGluZm8tXHUwMDNlZXh0YWNrLFxubmV0L3dpcmVsZXNzL3Btc3IuYzoxMjY6XHRcdFx0XHQgICAgdGJbTkw4MDIxMV9QTVNSX0ZUTV9SRVFfQVRUUl9SRVFVRVNUX0xDSV0sXG5uZXQvd2lyZWxlc3MvcG1zci5jLTEyNy1cdFx0XHRcdCAgICBcJiMzNDtGVE06IExDSSByZXF1ZXN0IG5vdCBzdXBwb3J0ZWRcJiMzNDspO1xuLS1cbm5ldC93aXJlbGVzcy9wbXNyLmMtMTMwLVx0b3V0LVx1MDAzZWZ0bS5yZXF1ZXN0X2NpdmljbG9jID1cbm5ldC93aXJlbGVzcy9wbXNyLmM6MTMxOlx0XHQhIXRiW05MODAyMTFfUE1TUl9GVE1fUkVRX0FUVFJfUkVRVUVTVF9DSVZJQ0xPQ107XG5uZXQvd2lyZWxlc3MvcG1zci5jLTEzMi1cdGlmIChvdXQtXHUwMDNlZnRtLnJlcXVlc3RfY2l2aWNsb2MgXHUwMDI2XHUwMDI2ICFjYXBhLVx1MDAzZWZ0bS5yZXF1ZXN0X2NpdmljbG9jKSB7XG5uZXQvd2lyZWxlc3MvcG1zci5jLTEzMy1cdFx0TkxfU0VUX0VSUl9NU0dfQVRUUihpbmZvLVx1MDAzZWV4dGFjayxcbm5ldC93aXJlbGVzcy9wbXNyLmM6MTM0Olx0XHRcdFx0ICAgIHRiW05MODAyMTFfUE1TUl9GVE1fUkVRX0FUVFJfUkVRVUVTVF9DSVZJQ0xPQ10sXG5uZXQvd2lyZWxlc3MvcG1zci5jLTEzNS1cdFx0XHQgICAgXCYjMzQ7RlRNOiBjaXZpYyBsb2NhdGlvbiByZXF1ZXN0IG5vdCBzdXBwb3J0ZWRcJiMzNDspO1xuLS1cbm5ldC93aXJlbGVzcy9wbXNyLmMtMTM4LVx0b3V0LVx1MDAzZWZ0bS50cmlnZ2VyX2Jhc2VkID1cbm5ldC93aXJlbGVzcy9wbXNyLmM6MTM5Olx0XHQhIXRiW05MODAyMTFfUE1TUl9GVE1fUkVRX0FUVFJfVFJJR0dFUl9CQVNFRF07XG5uZXQvd2lyZWxlc3MvcG1zci5jLTE0MC1cdGlmIChvdXQtXHUwMDNlZnRtLnRyaWdnZXJfYmFzZWQgXHUwMDI2XHUwMDI2ICFjYXBhLVx1MDAzZWZ0bS50cmlnZ2VyX2Jhc2VkKSB7XG5uZXQvd2lyZWxlc3MvcG1zci5jLTE0MS1cdFx0TkxfU0VUX0VSUl9NU0dfQVRUUihpbmZvLVx1MDAzZWV4dGFjayxcbm5ldC93aXJlbGVzcy9wbXNyLmM6MTQyOlx0XHRcdFx0ICAgIHRiW05MODAyMTFfUE1TUl9GVE1fUkVRX0FUVFJfVFJJR0dFUl9CQVNFRF0sXG5uZXQvd2lyZWxlc3MvcG1zci5jLTE0My1cdFx0XHRcdCAgICBcJiMzNDtGVE06IHRyaWdnZXIgYmFzZWQgcmFuZ2luZyBpcyBub3Qgc3VwcG9ydGVkXCYjMzQ7KTtcbi0tXG5uZXQvd2lyZWxlc3MvcG1zci5jLTE0Ni1cbm5ldC93aXJlbGVzcy9wbXNyLmM6MTQ3Olx0aWYgKG91dC1cdTAwM2VmdG0ucmVxdWVzdF90eXBlID09IE5MODAyMTFfUE1TUl9GVE1fUkVRX1RZUEVfUEQgXHUwMDI2XHUwMDI2XG5uZXQvd2lyZWxlc3MvcG1zci5jLTE0OC1cdCAgICBvdXQtXHUwMDNlZnRtLnRyaWdnZXJfYmFzZWQpIHtcbi0tXG5uZXQvd2lyZWxlc3MvcG1zci5jLTE1NS1cdG91dC1cdTAwM2VmdG0ubm9uX3RyaWdnZXJfYmFzZWQgPVxubmV0L3dpcmVsZXNzL3Btc3IuYzoxNTY6XHRcdCEhdGJbTkw4MDIxMV9QTVNSX0ZUTV9SRVFfQVRUUl9OT05fVFJJR0dFUl9CQVNFRF07XG5uZXQvd2lyZWxlc3MvcG1zci5jLTE1Ny1cdGlmIChvdXQtXHUwMDNlZnRtLm5vbl90cmlnZ2VyX2Jhc2VkIFx1MDAyNlx1MDAyNiAhY2FwYS1cdTAwM2VmdG0ubm9uX3RyaWdnZXJfYmFzZWQpIHtcbm5ldC93aXJlbGVzcy9wbXNyLmMtMTU4LVx0XHROTF9TRVRfRVJSX01TR19BVFRSKGluZm8tXHUwMDNlZXh0YWNrLFxubmV0L3dpcmVsZXNzL3Btc3IuYzoxNTk6XHRcdFx0XHQgICAgdGJbTkw4MDIxMV9QTVNSX0ZUTV9SRVFfQVRUUl9OT05fVFJJR0dFUl9CQVNFRF0sXG5uZXQvd2lyZWxlc3MvcG1zci5jLTE2MC1cdFx0XHRcdCAgICBcJiMzNDtGVE06IHRyaWdnZXIgYmFzZWQgcmFuZ2luZyBpcyBub3Qgc3VwcG9ydGVkXCYjMzQ7KTtcbi0tXG5uZXQvd2lyZWxlc3MvcG1zci5jLTE2OS1cbm5ldC93aXJlbGVzcy9wbXNyLmM6MTcwOlx0aWYgKG91dC1cdTAwM2VmdG0ucmVxdWVzdF90eXBlID09IE5MODAyMTFfUE1TUl9GVE1fUkVRX1RZUEVfUEQgXHUwMDI2XHUwMDI2XG5uZXQvd2lyZWxlc3MvcG1zci5jLTE3MS1cdCAgICBvdXQtXHUwMDNlZnRtLm5vbl90cmlnZ2VyX2Jhc2VkIFx1MDAyNlx1MDAyNiBvdXQtXHUwMDNlZnRtLmZ0bXNfcGVyX2J1cnN0IFx1MDAzZSA0KSB7XG5uZXQvd2lyZWxlc3MvcG1zci5jLTE3Mi1cdFx0TkxfU0VUX0VSUl9NU0dfQVRUUihpbmZvLVx1MDAzZWV4dGFjayxcbm5ldC93aXJlbGVzcy9wbXNyLmM6MTczOlx0XHRcdFx0ICAgIHRiW05MODAyMTFfUE1TUl9GVE1fUkVRX0FUVFJfRlRNU19QRVJfQlVSU1RdLFxubmV0L3dpcmVsZXNzL3Btc3IuYy0xNzQtXHRcdFx0XHQgICAgXCYjMzQ7RlRNOiBGVE1zIHBlciBidXJzdCBtdXN0IG5vdCBleGNlZWQgNCBmb3IgUEQgTlRCIHJhbmdpbmdcJiMzNDspO1xuLS1cbm5ldC93aXJlbGVzcy9wbXNyLmMtMTgwLVx0XHROTF9TRVRfRVJSX01TR19BVFRSKGluZm8tXHUwMDNlZXh0YWNrLFxubmV0L3dpcmVsZXNzL3Btc3IuYzoxODE6XHRcdFx0XHQgICAgdGJbTkw4MDIxMV9QTVNSX0ZUTV9SRVFfQVRUUl9GVE1TX1BFUl9CVVJTVF0sXG5uZXQvd2lyZWxlc3MvcG1zci5jLTE4Mi1cdFx0XHRcdCAgICBcJiMzNDtGVE06IEZUTXMgcGVyIGJ1cnN0IG11c3QgYmUgc2V0IGxvd2VyIHRoYW4gMzFcJiMzNDspO1xuLS1cbm5ldC93aXJlbGVzcy9wbXNyLmMtMTg4LVx0XHROTF9TRVRfRVJSX01TR19BVFRSKGluZm8tXHUwMDNlZXh0YWNrLFxubmV0L3dpcmVsZXNzL3Btc3IuYzoxODk6XHRcdFx0XHQgICAgdGJbTkw4MDIxMV9QTVNSX0ZUTV9SRVFfQVRUUl9QUkVBTUJMRV0sXG5uZXQvd2lyZWxlc3MvcG1zci5jLTE5MC1cdFx0XHRcdCAgICBcJiMzNDtGVE06IG5vbiBFRENBIGJhc2VkIHJhbmdpbmcgbXVzdCB1c2UgSEUgcHJlYW1ibGVcJiMzNDspO1xuLS1cbm5ldC93aXJlbGVzcy9wbXNyLmMtMTkzLVxubmV0L3dpcmVsZXNzL3Btc3IuYzoxOTQ6XHRpZiAodGJbTkw4MDIxMV9QTVNSX0ZUTV9SRVFfQVRUUl9CVVJTVF9EVVJBVElPTl0pXG5uZXQvd2lyZWxlc3MvcG1zci5jLTE5NS1cdFx0b3V0LVx1MDAzZWZ0bS5idXJzdF9kdXJhdGlvbiA9XG5uZXQvd2lyZWxlc3MvcG1zci5jOjE5NjpcdFx0XHRubGFfZ2V0X3U4KHRiW05MODAyMTFfUE1TUl9GVE1fUkVRX0FUVFJfQlVSU1RfRFVSQVRJT05dKTtcbm5ldC93aXJlbGVzcy9wbXNyLmMtMTk3LVx0ZWxzZSBpZiAoIW91dC1cdTAwM2VmdG0ubm9uX3RyaWdnZXJfYmFzZWQgXHUwMDI2XHUwMDI2ICFvdXQtXHUwMDNlZnRtLnRyaWdnZXJfYmFzZWQpXG4tLVxubmV0L3dpcmVsZXNzL3Btc3IuYy0yMDAtXHRvdXQtXHUwMDNlZnRtLmxtcl9mZWVkYmFjayA9XG5uZXQvd2lyZWxlc3MvcG1zci5jOjIwMTpcdFx0ISF0YltOTDgwMjExX1BNU1JfRlRNX1JFUV9BVFRSX0xNUl9GRUVEQkFDS107XG5uZXQvd2lyZWxlc3MvcG1zci5jLTIwMi1cdGlmICghb3V0LVx1MDAzZWZ0bS50cmlnZ2VyX2Jhc2VkIFx1MDAyNlx1MDAyNiAhb3V0LVx1MDAzZWZ0bS5ub25fdHJpZ2dlcl9iYXNlZCBcdTAwMjZcdTAwMjZcbi0tXG5uZXQvd2lyZWxlc3MvcG1zci5jLTIwNC1cdFx0TkxfU0VUX0VSUl9NU0dfQVRUUihpbmZvLVx1MDAzZWV4dGFjayxcbm5ldC93aXJlbGVzcy9wbXNyLmM6MjA1Olx0XHRcdFx0ICAgIHRiW05MODAyMTFfUE1TUl9GVE1fUkVRX0FUVFJfTE1SX0ZFRURCQUNLXSxcbm5ldC93aXJlbGVzcy9wbXNyLmMtMjA2LVx0XHRcdFx0ICAgIFwmIzM0O0ZUTTogTE1SIGZlZWRiYWNrIHNldCBmb3IgRURDQSBiYXNlZCByYW5naW5nXCYjMzQ7KTtcbi0tXG5uZXQvd2lyZWxlc3MvcG1zci5jLTIwOS1cbm5ldC93aXJlbGVzcy9wbXNyLmM6MjEwOlx0aWYgKHRiW05MODAyMTFfUE1TUl9GVE1fUkVRX0FUVFJfQlNTX0NPTE9SXSkge1xubmV0L3dpcmVsZXNzL3Btc3IuYy0yMTEtXHRcdGlmICghb3V0LVx1MDAzZWZ0bS5ub25fdHJpZ2dlcl9iYXNlZCBcdTAwMjZcdTAwMjYgIW91dC1cdTAwM2VmdG0udHJpZ2dlcl9iYXNlZCkge1xubmV0L3dpcmVsZXNzL3Btc3IuYy0yMTItXHRcdFx0TkxfU0VUX0VSUl9NU0dfQVRUUihpbmZvLVx1MDAzZWV4dGFjayxcbm5ldC93aXJlbGVzcy9wbXNyLmM6MjEzOlx0XHRcdFx0XHQgICAgdGJbTkw4MDIxMV9QTVNSX0ZUTV9SRVFfQVRUUl9CU1NfQ09MT1JdLFxubmV0L3dpcmVsZXNzL3Btc3IuYy0yMTQtXHRcdFx0XHRcdCAgICBcJiMzNDtGVE06IEJTUyBjb2xvciBzZXQgZm9yIEVEQ0EgYmFzZWQgcmFuZ2luZ1wmIzM0Oyk7XG4tLVxubmV0L3dpcmVsZXNzL3Btc3IuYy0yMTgtXHRcdG91dC1cdTAwM2VmdG0uYnNzX2NvbG9yID1cbm5ldC93aXJlbGVzcy9wbXNyLmM6MjE5Olx0XHRcdG5sYV9nZXRfdTgodGJbTkw4MDIxMV9QTVNSX0ZUTV9SRVFfQVRUUl9CU1NfQ09MT1JdKTtcbm5ldC93aXJlbGVzcy9wbXNyLmMtMjIwLVx0fVxubmV0L3dpcmVsZXNzL3Btc3IuYy0yMjEtXG5uZXQvd2lyZWxlc3MvcG1zci5jOjIyMjpcdG91dC1cdTAwM2VmdG0ucnN0YSA9ICEhdGJbTkw4MDIxMV9QTVNSX0ZUTV9SRVFfQVRUUl9SU1RBXTtcbm5ldC93aXJlbGVzcy9wbXNyLmMtMjIzLVx0aWYgKG91dC1cdTAwM2VmdG0ucnN0YSBcdTAwMjZcdTAwMjYgb3V0LVx1MDAzZWZ0bS5ub25fdHJpZ2dlcl9iYXNlZCBcdTAwMjZcdTAwMjZcbi0tXG5uZXQvd2lyZWxlc3MvcG1zci5jLTIyNS1cdFx0TkxfU0VUX0VSUl9NU0dfQVRUUihpbmZvLVx1MDAzZWV4dGFjayxcbm5ldC93aXJlbGVzcy9wbXNyLmM6MjI2Olx0XHRcdFx0ICAgIHRiW05MODAyMTFfUE1TUl9GVE1fUkVRX0FUVFJfUlNUQV0sXG5uZXQvd2lyZWxlc3MvcG1zci5jLTIyNy1cdFx0XHRcdCAgICBcJiMzNDtGVE06IE5UQiBSU1RBIG5vdCBzdXBwb3J0ZWQgYnkgZGV2aWNlXCYjMzQ7KTtcbi0tXG5uZXQvd2lyZWxlc3MvcG1zci5jLTIzMy1cdFx0TkxfU0VUX0VSUl9NU0dfQVRUUihpbmZvLVx1MDAzZWV4dGFjayxcbm5ldC93aXJlbGVzcy9wbXNyLmM6MjM0Olx0XHRcdFx0ICAgIHRiW05MODAyMTFfUE1TUl9GVE1fUkVRX0FUVFJfUlNUQV0sXG5uZXQvd2lyZWxlc3MvcG1zci5jLTIzNS1cdFx0XHRcdCAgICBcJiMzNDtGVE06IFRCIFJTVEEgbm90IHN1cHBvcnRlZCBieSBkZXZpY2VcJiMzNDspO1xuLS1cbm5ldC93aXJlbGVzcy9wbXNyLmMtMjQyLVx0XHROTF9TRVRfRVJSX01TR19BVFRSKGluZm8tXHUwMDNlZXh0YWNrLFxubmV0L3dpcmVsZXNzL3Btc3IuYzoyNDM6XHRcdFx0XHQgICAgdGJbTkw4MDIxMV9QTVNSX0ZUTV9SRVFfQVRUUl9SU1RBXSxcbm5ldC93aXJlbGVzcy9wbXNyLmMtMjQ0LVx0XHRcdFx0ICAgIFwmIzM0O0ZUTTogRURDQSBSU1RBIG5vdCBzdXBwb3J0ZWQgYnkgZGV2aWNlXCYjMzQ7KTtcbi0tXG5uZXQvd2lyZWxlc3MvcG1zci5jLTI1MS1cdFx0TkxfU0VUX0VSUl9NU0dfQVRUUihpbmZvLVx1MDAzZWV4dGFjayxcbm5ldC93aXJlbGVzcy9wbXNyLmM6MjUyOlx0XHRcdFx0ICAgIHRiW05MODAyMTFfUE1TUl9GVE1fUkVRX0FUVFJfUlNUQV0sXG5uZXQvd2lyZWxlc3MvcG1zci5jLTI1My1cdFx0XHRcdCAgICBcJiMzNDtGVE06IFJTVEEgc2V0IHdpdGhvdXQgTE1SIGZlZWRiYWNrXCYjMzQ7KTtcbi0tXG5uZXQvd2lyZWxlc3MvcG1zci5jLTI1Ny1cdGlmIChvdXQtXHUwMDNlZnRtLm5vbl90cmlnZ2VyX2Jhc2VkKSB7XG5uZXQvd2lyZWxlc3MvcG1zci5jOjI1ODpcdFx0aWYgKG91dC1cdTAwM2VmdG0ucmVxdWVzdF90eXBlID09IE5MODAyMTFfUE1TUl9GVE1fUkVRX1RZUEVfUEQgXHUwMDI2XHUwMDI2XG5uZXQvd2lyZWxlc3MvcG1zci5jOjI1OTpcdFx0ICAgICF0YltOTDgwMjExX1BNU1JfRlRNX1JFUV9BVFRSX05PTUlOQUxfVElNRV0pIHtcbm5ldC93aXJlbGVzcy9wbXNyLmMtMjYwLVx0XHRcdE5MX1NFVF9FUlJfTVNHKGluZm8tXHUwMDNlZXh0YWNrLFxuLS1cbm5ldC93aXJlbGVzcy9wbXNyLmMtMjY0LVx0XHRvdXQtXHUwMDNlZnRtLm5vbWluYWxfdGltZSA9XG5uZXQvd2lyZWxlc3MvcG1zci5jOjI2NTpcdFx0XHRubGFfZ2V0X3UzMih0YltOTDgwMjExX1BNU1JfRlRNX1JFUV9BVFRSX05PTUlOQUxfVElNRV0pO1xubmV0L3dpcmVsZXNzL3Btc3IuYy0yNjYtXG5uZXQvd2lyZWxlc3MvcG1zci5jOjI2NzpcdFx0aWYgKHRiW05MODAyMTFfUE1TUl9GVE1fUkVRX0FUVFJfTUlOX1RJTUVfQkVUV0VFTl9NRUFTVVJFTUVOVFNdKVxubmV0L3dpcmVsZXNzL3Btc3IuYy0yNjgtXHRcdFx0b3V0LVx1MDAzZWZ0bS5taW5fdGltZV9iZXR3ZWVuX21lYXN1cmVtZW50cyA9XG5uZXQvd2lyZWxlc3MvcG1zci5jOjI2OTpcdFx0XHRubGFfZ2V0X3UzMih0YltOTDgwMjExX1BNU1JfRlRNX1JFUV9BVFRSX01JTl9USU1FX0JFVFdFRU5fTUVBU1VSRU1FTlRTXSk7XG5uZXQvd2lyZWxlc3MvcG1zci5jLTI3MC1cbm5ldC93aXJlbGVzcy9wbXNyLmM6MjcxOlx0XHRpZiAodGJbTkw4MDIxMV9QTVNSX0ZUTV9SRVFfQVRUUl9NQVhfVElNRV9CRVRXRUVOX01FQVNVUkVNRU5UU10pXG5uZXQvd2lyZWxlc3MvcG1zci5jLTI3Mi1cdFx0XHRvdXQtXHUwMDNlZnRtLm1heF90aW1lX2JldHdlZW5fbWVhc3VyZW1lbnRzID1cbm5ldC93aXJlbGVzcy9wbXNyLmM6MjczOlx0XHRcdG5sYV9nZXRfdTMyKHRiW05MODAyMTFfUE1TUl9GVE1fUkVRX0FUVFJfTUFYX1RJTUVfQkVUV0VFTl9NRUFTVVJFTUVOVFNdKTtcbm5ldC93aXJlbGVzcy9wbXNyLmMtMjc0LVxubmV0L3dpcmVsZXNzL3Btc3IuYzoyNzU6XHRcdGlmICh0YltOTDgwMjExX1BNU1JfRlRNX1JFUV9BVFRSX0FXX0RVUkFUSU9OXSlcbm5ldC93aXJlbGVzcy9wbXNyLmMtMjc2LVx0XHRcdG91dC1cdTAwM2VmdG0uYXZhaWxhYmlsaXR5X3dpbmRvdyA9XG5uZXQvd2lyZWxlc3MvcG1zci5jOjI3NzpcdFx0XHRcdG5sYV9nZXRfdTgodGJbTkw4MDIxMV9QTVNSX0ZUTV9SRVFfQVRUUl9BV19EVVJBVElPTl0pO1xubmV0L3dpcmVsZXNzL3Btc3IuYy0yNzgtXG5uZXQvd2lyZWxlc3MvcG1zci5jOjI3OTpcdFx0aWYgKHRiW05MODAyMTFfUE1TUl9GVE1fUkVRX0FUVFJfTlVNX01FQVNVUkVNRU5UU10pXG5uZXQvd2lyZWxlc3MvcG1zci5jLTI4MC1cdFx0XHRvdXQtXHUwMDNlZnRtLm51bV9tZWFzdXJlbWVudHMgPVxubmV0L3dpcmVsZXNzL3Btc3IuYzoyODE6XHRcdFx0XHRubGFfZ2V0X3UzMih0YltOTDgwMjExX1BNU1JfRlRNX1JFUV9BVFRSX05VTV9NRUFTVVJFTUVOVFNdKTtcbm5ldC93aXJlbGVzcy9wbXNyLmMtMjgyLVx0fVxubmV0L3dpcmVsZXNzL3Btc3IuYy0yODMtXG5uZXQvd2lyZWxlc3MvcG1zci5jOjI4NDpcdGlmICh0YltOTDgwMjExX1BNU1JfRlRNX1JFUV9BVFRSX0lOR1JFU1NdKVxubmV0L3dpcmVsZXNzL3Btc3IuYy0yODUtXHRcdG91dC1cdTAwM2VmdG0uaW5ncmVzc19kaXN0YW5jZSA9XG5uZXQvd2lyZWxlc3MvcG1zci5jOjI4NjpcdFx0XHRubGFfZ2V0X3U2NCh0YltOTDgwMjExX1BNU1JfRlRNX1JFUV9BVFRSX0lOR1JFU1NdKTtcbm5ldC93aXJlbGVzcy9wbXNyLmMtMjg3LVxubmV0L3dpcmVsZXNzL3Btc3IuYzoyODg6XHRpZiAodGJbTkw4MDIxMV9QTVNSX0ZUTV9SRVFfQVRUUl9FR1JFU1NdKVxubmV0L3dpcmVsZXNzL3Btc3IuYy0yODktXHRcdG91dC1cdTAwM2VmdG0uZWdyZXNzX2Rpc3RhbmNlID1cbm5ldC93aXJlbGVzcy9wbXNyLmM6MjkwOlx0XHRcdG5sYV9nZXRfdTY0KHRiW05MODAyMTFfUE1TUl9GVE1fUkVRX0FUVFJfRUdSRVNTXSk7XG5uZXQvd2lyZWxlc3MvcG1zci5jLTI5MS1cbm5ldC93aXJlbGVzcy9wbXNyLmMtMjkyLVx0b3V0LVx1MDAzZWZ0bS5wZF9zdXBwcmVzc19yYW5nZV9yZXN1bHRzID1cbm5ldC93aXJlbGVzcy9wbXNyLmM6MjkzOlx0XHRubGFfZ2V0X2ZsYWcodGJbTkw4MDIxMV9QTVNSX0ZUTV9SRVFfQVRUUl9QRF9TVVBQUkVTU19SRVNVTFRTXSk7XG5uZXQvd2lyZWxlc3MvcG1zci5jLTI5NC1cbm5ldC93aXJlbGVzcy9wbXNyLmM6Mjk1Olx0aWYgKG91dC1cdTAwM2VmdG0ucmVxdWVzdF90eXBlICE9IE5MODAyMTFfUE1TUl9GVE1fUkVRX1RZUEVfUEQgXHUwMDI2XHUwMDI2XG5uZXQvd2lyZWxlc3MvcG1zci5jLTI5Ni1cdCAgICBvdXQtXHUwMDNlZnRtLnBkX3N1cHByZXNzX3JhbmdlX3Jlc3VsdHMpIHtcbm5ldC93aXJlbGVzcy9wbXNyLmMtMjk3LVx0XHROTF9TRVRfRVJSX01TR19BVFRSKGluZm8tXHUwMDNlZXh0YWNrLFxubmV0L3dpcmVsZXNzL3Btc3IuYzoyOTg6XHRcdFx0XHQgICAgdGJbTkw4MDIxMV9QTVNSX0ZUTV9SRVFfQVRUUl9QRF9TVVBQUkVTU19SRVNVTFRTXSxcbm5ldC93aXJlbGVzcy9wbXNyLmMtMjk5LVx0XHRcdFx0ICAgIFwmIzM0O0ZUTTogc3VwcHJlc3MgcmFuZ2UgcmVzdWx0IGZsYWcgb25seSB2YWxpZCBmb3IgUEQgcmVxdWVzdHNcJiMzNDspO1xuLS1cbm5ldC93aXJlbGVzcy9wbXNyLmM9MzA2PXN0YXRpYyBpbnQgcG1zcl9wYXJzZV9wZWVyKHN0cnVjdCBjZmc4MDIxMV9yZWdpc3RlcmVkX2RldmljZSAqcmRldixcbi0tXG5uZXQvd2lyZWxlc3MvcG1zci5jLTMxMC17XG5uZXQvd2lyZWxlc3MvcG1zci5jOjMxMTpcdHN0cnVjdCBubGF0dHIgKnRiW05MODAyMTFfUE1TUl9QRUVSX0FUVFJfTUFYICYjNDM7IDFdO1xubmV0L3dpcmVsZXNzL3Btc3IuYzozMTI6XHRzdHJ1Y3QgbmxhdHRyICpyZXFbTkw4MDIxMV9QTVNSX1JFUV9BVFRSX01BWCAmIzQzOyAxXTtcbm5ldC93aXJlbGVzcy9wbXNyLmMtMzEzLVx0c3RydWN0IG5sYXR0ciAqdHJlcTtcbi0tXG5uZXQvd2lyZWxlc3MvcG1zci5jLTMxNi1cdC8qIG5vIHZhbGlkYXRpb24gbmVlZGVkIC0gd2FzIGFscmVhZHkgZG9uZSB2aWEgbmVzdGVkIHBvbGljeSAqL1xubmV0L3dpcmVsZXNzL3Btc3IuYzozMTc6XHRubGFfcGFyc2VfbmVzdGVkX2RlcHJlY2F0ZWQodGIsIE5MODAyMTFfUE1TUl9QRUVSX0FUVFJfTUFYLCBwZWVyLFxubmV0L3dpcmVsZXNzL3Btc3IuYy0zMTgtXHRcdFx0XHQgICAgTlVMTCwgTlVMTCk7XG5uZXQvd2lyZWxlc3MvcG1zci5jLTMxOS1cbm5ldC93aXJlbGVzcy9wbXNyLmM6MzIwOlx0aWYgKCF0YltOTDgwMjExX1BNU1JfUEVFUl9BVFRSX0FERFJdIHx8XG5uZXQvd2lyZWxlc3MvcG1zci5jOjMyMTpcdCAgICAhdGJbTkw4MDIxMV9QTVNSX1BFRVJfQVRUUl9DSEFOXSB8fFxubmV0L3dpcmVsZXNzL3Btc3IuYzozMjI6XHQgICAgIXRiW05MODAyMTFfUE1TUl9QRUVSX0FUVFJfUkVRXSkge1xubmV0L3dpcmVsZXNzL3Btc3IuYy0zMjMtXHRcdE5MX1NFVF9FUlJfTVNHX0FUVFIoaW5mby1cdTAwM2VleHRhY2ssIHBlZXIsXG4tLVxubmV0L3dpcmVsZXNzL3Btc3IuYy0zMjctXG5uZXQvd2lyZWxlc3MvcG1zci5jOjMyODpcdG1lbWNweShvdXQtXHUwMDNlYWRkciwgbmxhX2RhdGEodGJbTkw4MDIxMV9QTVNSX1BFRVJfQVRUUl9BRERSXSksIEVUSF9BTEVOKTtcbm5ldC93aXJlbGVzcy9wbXNyLmMtMzI5LVxubmV0L3dpcmVsZXNzL3Btc3IuYzozMzA6XHRpZiAodGJbTkw4MDIxMV9QTVNSX1BFRVJfQVRUUl9SRVFfVFlQRV0pXG5uZXQvd2lyZWxlc3MvcG1zci5jLTMzMS1cdFx0b3V0LVx1MDAzZWZ0bS5yZXF1ZXN0X3R5cGUgPVxubmV0L3dpcmVsZXNzL3Btc3IuYzozMzI6XHRcdFx0bmxhX2dldF91MzIodGJbTkw4MDIxMV9QTVNSX1BFRVJfQVRUUl9SRVFfVFlQRV0pO1xubmV0L3dpcmVsZXNzL3Btc3IuYy0zMzMtXHRlbHNlXG5uZXQvd2lyZWxlc3MvcG1zci5jOjMzNDpcdFx0b3V0LVx1MDAzZWZ0bS5yZXF1ZXN0X3R5cGUgPSBOTDgwMjExX1BNU1JfRlRNX1JFUV9UWVBFX0lORlJBO1xubmV0L3dpcmVsZXNzL3Btc3IuYy0zMzUtXG5uZXQvd2lyZWxlc3MvcG1zci5jOjMzNjpcdGlmIChvdXQtXHUwMDNlZnRtLnJlcXVlc3RfdHlwZSA9PSBOTDgwMjExX1BNU1JfRlRNX1JFUV9UWVBFX1BEIFx1MDAyNlx1MDAyNlxubmV0L3dpcmVsZXNzL3Btc3IuYy0zMzctXHQgICAgIXJkZXYtXHUwMDNld2lwaHkucG1zcl9jYXBhLVx1MDAzZWZ0bS50eXBlLnBkX3N1cHBvcnQpIHtcbm5ldC93aXJlbGVzcy9wbXNyLmMtMzM4LVx0XHROTF9TRVRfRVJSX01TR19BVFRSKGluZm8tXHUwMDNlZXh0YWNrLFxubmV0L3dpcmVsZXNzL3Btc3IuYzozMzk6XHRcdFx0XHQgICAgdGJbTkw4MDIxMV9QTVNSX1BFRVJfQVRUUl9SRVFfVFlQRV0sXG5uZXQvd2lyZWxlc3MvcG1zci5jLTM0MC1cdFx0XHRcdCAgICBcJiMzNDtGVE06IFBEIHJlcXVlc3QgdHlwZSBub3Qgc3VwcG9ydGVkIGJ5IGRldmljZVwmIzM0Oyk7XG4tLVxubmV0L3dpcmVsZXNzL3Btc3IuYy0zNDUtXHRlcnIgPSBubGFfcGFyc2VfbmVzdGVkX2RlcHJlY2F0ZWQoaW5mby1cdTAwM2VhdHRycywgTkw4MDIxMV9BVFRSX01BWCxcbm5ldC93aXJlbGVzcy9wbXNyLmM6MzQ2Olx0XHRcdFx0XHQgIHRiW05MODAyMTFfUE1TUl9QRUVSX0FUVFJfQ0hBTl0sXG5uZXQvd2lyZWxlc3MvcG1zci5jLTM0Ny1cdFx0XHRcdFx0ICBOVUxMLCBpbmZvLVx1MDAzZWV4dGFjayk7XG4tLVxubmV0L3dpcmVsZXNzL3Btc3IuYy0zNTYtXHQvKiBubyB2YWxpZGF0aW9uIG5lZWRlZCAtIHdhcyBhbHJlYWR5IGRvbmUgdmlhIG5lc3RlZCBwb2xpY3kgKi9cbm5ldC93aXJlbGVzcy9wbXNyLmM6MzU3Olx0bmxhX3BhcnNlX25lc3RlZF9kZXByZWNhdGVkKHJlcSwgTkw4MDIxMV9QTVNSX1JFUV9BVFRSX01BWCxcbm5ldC93aXJlbGVzcy9wbXNyLmM6MzU4Olx0XHRcdFx0ICAgIHRiW05MODAyMTFfUE1TUl9QRUVSX0FUVFJfUkVRXSwgTlVMTCxcbm5ldC93aXJlbGVzcy9wbXNyLmMtMzU5LVx0XHRcdFx0ICAgIE5VTEwpO1xubmV0L3dpcmVsZXNzL3Btc3IuYy0zNjAtXG5uZXQvd2lyZWxlc3MvcG1zci5jOjM2MTpcdGlmICghcmVxW05MODAyMTFfUE1TUl9SRVFfQVRUUl9EQVRBXSkge1xubmV0L3dpcmVsZXNzL3Btc3IuYy0zNjItXHRcdE5MX1NFVF9FUlJfTVNHX0FUVFIoaW5mby1cdTAwM2VleHRhY2ssXG5uZXQvd2lyZWxlc3MvcG1zci5jOjM2MzpcdFx0XHRcdCAgICB0YltOTDgwMjExX1BNU1JfUEVFUl9BVFRSX1JFUV0sXG5uZXQvd2lyZWxlc3MvcG1zci5jLTM2NC1cdFx0XHRcdCAgICBcJiMzNDttaXNzaW5nIHJlcXVlc3QgdHlwZS9kYXRhXCYjMzQ7KTtcbi0tXG5uZXQvd2lyZWxlc3MvcG1zci5jLTM2Ny1cbm5ldC93aXJlbGVzcy9wbXNyLmM6MzY4Olx0aWYgKHJlcVtOTDgwMjExX1BNU1JfUkVRX0FUVFJfR0VUX0FQX1RTRl0pXG5uZXQvd2lyZWxlc3MvcG1zci5jLTM2OS1cdFx0b3V0LVx1MDAzZXJlcG9ydF9hcF90c2YgPSB0cnVlO1xuLS1cbm5ldC93aXJlbGVzcy9wbXNyLmMtMzcyLVx0XHROTF9TRVRfRVJSX01TR19BVFRSKGluZm8tXHUwMDNlZXh0YWNrLFxubmV0L3dpcmVsZXNzL3Btc3IuYzozNzM6XHRcdFx0XHQgICAgcmVxW05MODAyMTFfUE1TUl9SRVFfQVRUUl9HRVRfQVBfVFNGXSxcbm5ldC93aXJlbGVzcy9wbXNyLmMtMzc0LVx0XHRcdFx0ICAgIFwmIzM0O3JlcG9ydGluZyBBUCBUU0YgaXMgbm90IHN1cHBvcnRlZFwmIzM0Oyk7XG4tLVxubmV0L3dpcmVsZXNzL3Btc3IuYy0zNzctXG5uZXQvd2lyZWxlc3MvcG1zci5jOjM3ODpcdG5sYV9mb3JfZWFjaF9uZXN0ZWQodHJlcSwgcmVxW05MODAyMTFfUE1TUl9SRVFfQVRUUl9EQVRBXSwgcmVtKSB7XG5uZXQvd2lyZWxlc3MvcG1zci5jLTM3OS1cdFx0c3dpdGNoIChubGFfdHlwZSh0cmVxKSkge1xubmV0L3dpcmVsZXNzL3Btc3IuYzozODA6XHRcdGNhc2UgTkw4MDIxMV9QTVNSX1RZUEVfRlRNOlxubmV0L3dpcmVsZXNzL3Btc3IuYy0zODEtXHRcdFx0ZXJyID0gcG1zcl9wYXJzZV9mdG0ocmRldiwgdHJlcSwgb3V0LCBpbmZvKTtcbi0tXG5uZXQvd2lyZWxlc3MvcG1zci5jPTM5Nj1pbnQgbmw4MDIxMV9wbXNyX3N0YXJ0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXG4tLVxubmV0L3dpcmVsZXNzL3Btc3IuYy00MTQtXHRwZWVycyA9IG5sYV9maW5kKG5sYV9kYXRhKHJlcWF0dHIpLCBubGFfbGVuKHJlcWF0dHIpLFxubmV0L3dpcmVsZXNzL3Btc3IuYzo0MTU6XHRcdFx0IE5MODAyMTFfUE1TUl9BVFRSX1BFRVJTKTtcbm5ldC93aXJlbGVzcy9wbXNyLmMtNDE2LVx0aWYgKCFwZWVycylcbi0tXG5uZXQvd2lyZWxlc3MvcG1zci5jPTU2OD1zdGF0aWMgaW50IG5sODAyMTFfcG1zcl9zZW5kX2Z0bV9yZXMoc3RydWN0IHNrX2J1ZmYgKm1zZyxcbi0tXG5uZXQvd2lyZWxlc3MvcG1zci5jLTU3MC17XG5uZXQvd2lyZWxlc3MvcG1zci5jOjU3MTpcdGlmIChyZXMtXHUwMDNlc3RhdHVzID09IE5MODAyMTFfUE1TUl9TVEFUVVNfRkFJTFVSRSkge1xubmV0L3dpcmVsZXNzL3Btc3IuYzo1NzI6XHRcdGlmIChubGFfcHV0X3UzMihtc2csIE5MODAyMTFfUE1TUl9GVE1fUkVTUF9BVFRSX0ZBSUxfUkVBU09OLFxubmV0L3dpcmVsZXNzL3Btc3IuYy01NzMtXHRcdFx0XHRyZXMtXHUwMDNlZnRtLmZhaWx1cmVfcmVhc29uKSlcbi0tXG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAxMDoxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDMwMQoJCQkJCQkJb3V0cHV0OiAyNwoJCQkJCQkJdGhvdWdodHM6IDEwOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipQTVNSIENvbnRleHR1YWxpemF0aW9uIGFuZCBDb25maWd1cmF0aW9uIFN0cmF0ZWd5KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBgY2ZnODAyMTFfcG1zcl9mcmVlX3drYCBoZXJlLCB3aGljaCBpbW1lZGlhdGVseSB0ZWxscyBtZSB0aGlzIGlzIHJlbGF0ZWQgdG8gUGVlciBNZWFzdXJlbWVudCwgb3IgUE1TUi4gVGhhdCBtYWtlcyBzZW5zZTsgSSYjMzk7bSBwcmV0dHkgZmFtaWxpYXIgd2l0aCB0aGUgUE1TUiBmcmFtZXdvcmsuIE5vdywgYSBrZXkgcG9pbnQgdG8gcmVtZW1iZXIsIGFuZCBpdCYjMzk7cyBlYXN5IHRvIG92ZXJsb29rLCBpcyB0aGF0IHRoZSBjb25maWd1cmF0aW9uIGZvciBQTVNSIGlzbiYjMzk7dCBpc29sYXRlZC4gSXQmIzM5O3MgZGVlcGx5IGludGVydHdpbmVkIHdpdGggdGhlIGJyb2FkZXIgYENGRzgwMjExYCBhbmQgYE5MODAyMTFgIGluZnJhc3RydWN0dXJlLgoKVG8gZW5zdXJlIHByb3BlciBlbmFibGVtZW50LCBJJiMzOTtsbCBuZWVkIHRvIGV4cGxpY2l0bHkgc3BlY2lmeSBgQ0ZHODAyMTFgLCBgTUFDODAyMTFgLCBhbmQgYE1BQzgwMjExX0hXU0lNYCBhcyBFbmFibGVDb25maWdzLiBUaGlzIGlzIHRoZSBmb3VuZGF0aW9uIEkgbmVlZCB0byBidWlsZCB1cG9uLiBJJiMzOTttIHRha2luZyB0aGUgcmlnaHQgc3RlcHMgaGVyZSBieSB0aGlua2luZyBhYm91dCB0aGlzIGFzIGEgZGlyZWN0IGRlcGVuZGVuY3kgb24gdGhlIGhpZ2hlci1sZXZlbCBjb25maWd1cmF0aW9ucy4KCkp1c3QgYSBtb21lbnQsIEkgc2hvdWxkIHByb2JhYmx5IGRvIGEgcXVpY2sgc2FuaXR5IGNoZWNrLiBMZXQgbWUganVzdCBzY2FuIHRvIG1ha2UgYWJzb2x1dGVseSBzdXJlIHRoZXJlIGFyZW4mIzM5O3QgYW55IG90aGVyIHN1YnRseSByZWxhdGVkIGNvbmZpZ3VyYXRpb25zIHRoYXQgSSYjMzk7bSBtaXNzaW5nLiBBbHdheXMgYSBnb29kIHByYWN0aWNlIHRvIGJlIHRob3JvdWdoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDEwOjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFBNU1ImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvd2lyZWxlc3MvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAxMDoxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDcwMAoJCQkJCQkJb3V0cHV0OiAyMjQKCQkJCQkJCXRob3VnaHRzOiA0MzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQTVNSIFBhdGNoKioKCk9rYXksIHNvIHRoZXJlIGlzbiYjMzk7dCBhbnkgc3BlY2lmaWMgY29uZmlndXJhdGlvbiBpdGVtIGRpcmVjdGx5IHJlbGF0ZWQgdG8gUE1TUiBpbiB0aGlzIHBhdGNoLCB3aGljaCBpcyBnb29kIHRvIG5vdGUgdXAgZnJvbnQuIE15IGZvY3VzIG5lZWRzIHRvIGJlIG9uIHRoZSBjb2RlIG1vZGlmaWNhdGlvbnMgdGhlbXNlbHZlcywgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgYGNmZzgwMjExYCBzdWJzeXN0ZW0uIFRoZSBwYXRjaCBwcmltYXJpbHkgdG91Y2hlcyBgY2ZnODAyMTFfcG1zcl9mcmVlX3drYCwgYGNmZzgwMjExX3Btc3Jfd2Rldl9kb3duYCwgYW5kIGBjZmc4MDIxMV9yZWxlYXNlX3Btc3JgLiBJJiMzOTtsbCBpbW1lZGlhdGVseSBhZGQgdGhlc2UgdG8gbXkgRm9jdXNTeW1ib2xzIGxpc3Qg4oCTIHRob3NlIGFyZSB0aGUga2V5IGZ1bmN0aW9ucyB0byBkaWcgaW50by4gSSYjMzk7bGwgYWxzbyBhZGQgYGNmZzgwMjExX2luaXRfd2RldmAsIGl0IHNlZW1zIHJlbGF0ZWQsIGFuZCBpdCYjMzk7cyBhbHdheXMgZ29vZCB0byBoYXZlIHRoYXQgZnVuY3Rpb24gaW4gbWluZCBhcyB0aGUgd2lyZWxlc3MgZGV2aWNlIGlzIGJlaW5nIGluaXRpYWxpemVkLgoKTm93LCBsZXQgbWUgcmV2aWV3IHRoZSBjaGFuZ2UgdG8gYGNmZzgwMjExX3Btc3JfZnJlZV93a2AgbW9yZSBjbG9zZWx5LiBUaGUgc25pcHBldCBzaG93cyB0aGUgd29yayBxdWV1ZSBpdGVtIGFuZCBpdHMgZXhlY3V0aW9uIGNvbnRleHQ6CgpgYGBjCnZvaWQgY2ZnODAyMTFfcG1zcl9mcmVlX3drKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXBoeV93b3JrICp3b3JrKQp7CglzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2ID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCB3aXJlbGVzc19kZXYsCgkJCQkJCSBwbXNyX2ZyZWVfd2spOwoKCWNmZzgwMjExX3Btc3JfcHJvY2Vzc19hYm9ydCh3ZGV2KTsKfQpgYGAKCkFoLCByaWdodC4gVGhlIGtleSBoZXJlIGlzIHRoZSBzd2l0Y2ggZnJvbSBhIHBsYWluIGB3b3JrX3N0cnVjdGAgdG8gYSBgd2lwaHlfd29ya2AuIFRoaXMgaXMgKnNpZ25pZmljYW50Ki4gSXQgbWVhbnMgdGhhdCB0aGUgYHdpcGh5YCBsb2NrIGlzIG5vdyBoZWxkICpkdXJpbmcqIHRoZSBleGVjdXRpb24gb2YgdGhpcyB3b3JrIGl0ZW0uIENvbnNlcXVlbnRseSwgdGhlIGV4cGxpY2l0IGd1YXJkIGNvbmRpdGlvbiB0aGF0IHdhcyBwcmV2aW91c2x5IHByZXNlbnQgY2FuIGJlIHNhZmVseSByZW1vdmVkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIGEgcmVmaW5lbWVudCBvZiB0aGUgbG9ja2luZyBzZW1hbnRpY3Mgd2l0aGluIHRoZSBgY2ZnODAyMTFgIGxheWVyLiBJdCYjMzk7cyBhIHN1YnRsZSBidXQgaW1wb3J0YW50IGNoYW5nZS4KCkNvbnNpZGVyaW5nIHRoZSBlbnZpcm9ubWVudCwgdGhpcyBpcyByZWxldmFudCBpbiB0aGUgY29udGV4dCBvZiB2aXJ0dWFsaXphdGlvbiwgcGFydGljdWxhcmx5IGlmIHVzaW5nIGBtYWM4MDIxMV9od3NpbWAuIFRoaXMgY2hhbmdlIHdpbGwgYmUgcmVhY2hhYmxlIGluIHRoZSBzaW11bGF0b3IsIHNvIEkgbmVlZCB0byBtYWtlIHN1cmUgdG8gYnVpbGQgd2l0aCB0aGUgYXBwcm9wcmlhdGUgY29uZmlndXJhdGlvbnMgdG8gcHJvcGVybHkgYXNzZXNzLiBNeSBlbmFibGluZyBjb25maWd1cmF0aW9ucyBhcmUgZ29pbmcgdG8gYmU6IGBDRkc4MDIxMWAsIGBNQUM4MDIxMWAsIGFuZCBgTUFDODAyMTFfSFdTSU1gLgoKV2l0aCB0aGF0IGFuYWx5c2lzIGNvbXBsZXRlLCBJJiMzOTttIGNvbWZvcnRhYmxlIHRoYXQgSSBoYXZlIGEgY2xlYXIgdW5kZXJzdGFuZGluZyBvZiB0aGUgcGF0Y2gmIzM5O3MgaW1wYWN0LiBUaW1lIHRvIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDEwOjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtDRkc4MDIxMSYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMSYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMV9IV1NJTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2NmZzgwMjExX3Btc3JfZnJlZV93ayYjMzQ7LAogICAgJiMzNDtjZmc4MDIxMV9wbXNyX3dkZXZfZG93biYjMzQ7LAogICAgJiMzNDtjZmc4MDIxMV9yZWxlYXNlX3Btc3ImIzM0OywKICAgICYjMzQ7Y2ZnODAyMTFfaW5pdF93ZGV2JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGNoYW5nZXMgdGhlIHBtc3JfZnJlZV93ayB3b3JrIGl0ZW0gaW4gc3RydWN0IHdpcmVsZXNzX2RldiBmcm9tIGEgc3RhbmRhcmQgd29ya19zdHJ1Y3QgdG8gYSB3aXBoeV93b3JrLiBUaGlzIGFsdGVycyB0aGUgbG9ja2luZyBzZW1hbnRpY3MsIGFzIHdpcGh5X3dvcmsgaXMgZXhlY3V0ZWQgd2l0aCB0aGUgd2lwaHkgbG9jayBoZWxkLCBhbGxvd2luZyB0aGUgcmVtb3ZhbCBvZiB0aGUgZXhwbGljaXQgZ3VhcmQod2lwaHkpIGluIHRoZSB3b3JrIGhhbmRsZXIuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY2ZnODAyMTEgc3Vic3lzdGVtIHRoYXQgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgbWFjODAyMTFfaHdzaW0uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0NGRzgwMjExJiMzNDssCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O01BQzgwMjExX0hXU0lNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Y2ZnODAyMTFfcG1zcl9mcmVlX3drJiMzNDssCiAgICAmIzM0O2NmZzgwMjExX3Btc3Jfd2Rldl9kb3duJiMzNDssCiAgICAmIzM0O2NmZzgwMjExX3JlbGVhc2VfcG1zciYjMzQ7LAogICAgJiMzNDtjZmc4MDIxMV9pbml0X3dkZXYmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggY2hhbmdlcyB0aGUgcG1zcl9mcmVlX3drIHdvcmsgaXRlbSBpbiBzdHJ1Y3Qgd2lyZWxlc3NfZGV2IGZyb20gYSBzdGFuZGFyZCB3b3JrX3N0cnVjdCB0byBhIHdpcGh5X3dvcmsuIFRoaXMgYWx0ZXJzIHRoZSBsb2NraW5nIHNlbWFudGljcywgYXMgd2lwaHlfd29yayBpcyBleGVjdXRlZCB3aXRoIHRoZSB3aXBoeSBsb2NrIGhlbGQsIGFsbG93aW5nIHRoZSByZW1vdmFsIG9mIHRoZSBleHBsaWNpdCBndWFyZCh3aXBoeSkgaW4gdGhlIHdvcmsgaGFuZGxlci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjZmc4MDIxMSBzdWJzeXN0ZW0gdGhhdCBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBtYWM4MDIxMV9od3NpbS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDEwOjE5OjE2Ljk5NDIzMTE5WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTk0ODY0NzAzNDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQ0ZHODAyMTFcIixcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJNQUM4MDIxMV9IV1NJTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImNmZzgwMjExX3Btc3JfZnJlZV93a1wiLFxuICAgIFwiY2ZnODAyMTFfcG1zcl93ZGV2X2Rvd25cIixcbiAgICBcImNmZzgwMjExX3JlbGVhc2VfcG1zclwiLFxuICAgIFwiY2ZnODAyMTFfaW5pdF93ZGV2XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggY2hhbmdlcyB0aGUgcG1zcl9mcmVlX3drIHdvcmsgaXRlbSBpbiBzdHJ1Y3Qgd2lyZWxlc3NfZGV2IGZyb20gYSBzdGFuZGFyZCB3b3JrX3N0cnVjdCB0byBhIHdpcGh5X3dvcmsuIFRoaXMgYWx0ZXJzIHRoZSBsb2NraW5nIHNlbWFudGljcywgYXMgd2lwaHlfd29yayBpcyBleGVjdXRlZCB3aXRoIHRoZSB3aXBoeSBsb2NrIGhlbGQsIGFsbG93aW5nIHRoZSByZW1vdmFsIG9mIHRoZSBleHBsaWNpdCBndWFyZCh3aXBoeSkgaW4gdGhlIHdvcmsgaGFuZGxlci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjZmc4MDIxMSBzdWJzeXN0ZW0gdGhhdCBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBtYWM4MDIxMV9od3NpbS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMTA6MTk6MTYuOTk0MjM3NDVaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcwODc5MzMzNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGE5MDJmZWEwOTIzMTllZjQ0NTc5YzNmOWYxMWEwYzIyMTRlNmY4MWVcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIEZyaSBKdWwgMyAxMDoxOToxNSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9jZmc4MDIxMS5oIGIvaW5jbHVkZS9uZXQvY2ZnODAyMTEuaFxcbmluZGV4IDgxODhhZDIwMGRlNTM5Li4zNzUxYTFkNzQ3NjVhYiAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL25ldC9jZmc4MDIxMS5oXFxuKysrIGIvaW5jbHVkZS9uZXQvY2ZnODAyMTEuaFxcbkBAIC03MjY1LDcgKzcyNjUsNyBAQCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2IHtcXG4gXFxuIFxcdHN0cnVjdCBsaXN0X2hlYWQgcG1zcl9saXN0O1xcbiBcXHRzcGlubG9ja190IHBtc3JfbG9jaztcXG4tXFx0c3RydWN0IHdvcmtfc3RydWN0IHBtc3JfZnJlZV93aztcXG4rXFx0c3RydWN0IHdpcGh5X3dvcmsgcG1zcl9mcmVlX3drO1xcbiBcXG4gXFx0dW5zaWduZWQgbG9uZyB1bnByb3RfYmVhY29uX3JlcG9ydGVkO1xcbiBcXG5kaWZmIC0tZ2l0IGEvbmV0L3dpcmVsZXNzL2NvcmUuYyBiL25ldC93aXJlbGVzcy9jb3JlLmNcXG5pbmRleCAzZGNmNjNiMDRjNDFkYi4uYjZiYjI1ZWU4OWNkMmUgMTAwNjQ0XFxuLS0tIGEvbmV0L3dpcmVsZXNzL2NvcmUuY1xcbisrKyBiL25ldC93aXJlbGVzcy9jb3JlLmNcXG5AQCAtMTYxMyw3ICsxNjEzLDcgQEAgdm9pZCBjZmc4MDIxMV9pbml0X3dkZXYoc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldilcXG4gXFx0SU5JVF9MSVNUX0hFQUQoXFx1MDAyNndkZXYtXFx1MDAzZW1nbXRfcmVnaXN0cmF0aW9ucyk7XFxuIFxcdElOSVRfTElTVF9IRUFEKFxcdTAwMjZ3ZGV2LVxcdTAwM2VwbXNyX2xpc3QpO1xcbiBcXHRzcGluX2xvY2tfaW5pdChcXHUwMDI2d2Rldi1cXHUwMDNlcG1zcl9sb2NrKTtcXG4tXFx0SU5JVF9XT1JLKFxcdTAwMjZ3ZGV2LVxcdTAwM2VwbXNyX2ZyZWVfd2ssIGNmZzgwMjExX3Btc3JfZnJlZV93ayk7XFxuK1xcdHdpcGh5X3dvcmtfaW5pdChcXHUwMDI2d2Rldi1cXHUwMDNlcG1zcl9mcmVlX3drLCBjZmc4MDIxMV9wbXNyX2ZyZWVfd2spO1xcbiBcXG4gI2lmZGVmIENPTkZJR19DRkc4MDIxMV9XRVhUXFxuIFxcdHdkZXYtXFx1MDAzZXdleHQuZGVmYXVsdF9rZXkgPSAtMTtcXG5AQCAtMTc0Nyw3ICsxNzQ3LDYgQEAgc3RhdGljIGludCBjZmc4MDIxMV9uZXRkZXZfbm90aWZpZXJfY2FsbChzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5iLFxcbiBcXHRcXHRcXHRjZmc4MDIxMV9yZW1vdmVfbGlua3Mod2Rldik7XFxuIFxcdFxcdC8qIHNpbmNlIHdlIGp1c3QgZGlkIGNmZzgwMjExX2xlYXZlKCkgbm90aGluZyB0byBkbyB0aGVyZSAqL1xcbiBcXHRcXHRjYW5jZWxfd29ya19zeW5jKFxcdTAwMjZ3ZGV2LVxcdTAwM2VkaXNjb25uZWN0X3drKTtcXG4tXFx0XFx0Y2FuY2VsX3dvcmtfc3luYyhcXHUwMDI2d2Rldi1cXHUwMDNlcG1zcl9mcmVlX3drKTtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdGNhc2UgTkVUREVWX0RPV046XFxuIFxcdFxcdHdpcGh5X2xvY2soXFx1MDAyNnJkZXYtXFx1MDAzZXdpcGh5KTtcXG5kaWZmIC0tZ2l0IGEvbmV0L3dpcmVsZXNzL2NvcmUuaCBiL25ldC93aXJlbGVzcy9jb3JlLmhcXG5pbmRleCBkZjQ3ZWQ2MjA4YTUwZC4uZjYwYzY2Yjg4Njc3MjUgMTAwNjQ0XFxuLS0tIGEvbmV0L3dpcmVsZXNzL2NvcmUuaFxcbisrKyBiL25ldC93aXJlbGVzcy9jb3JlLmhcXG5AQCAtNTg2LDcgKzU4Niw3IEBAIGNmZzgwMjExX2dldF82Z2h6X3Bvd2VyX3R5cGUoY29uc3QgdTggKmVsZW1zLCBzaXplX3QgZWxlbXNfbGVuLFxcbiBcXG4gdm9pZCBjZmc4MDIxMV9yZWxlYXNlX3Btc3Ioc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldiwgdTMyIHBvcnRpZCk7XFxuIHZvaWQgY2ZnODAyMTFfcG1zcl93ZGV2X2Rvd24oc3RydWN0IHdpcmVsZXNzX2RldiAqd2Rldik7XFxuLXZvaWQgY2ZnODAyMTFfcG1zcl9mcmVlX3drKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yayk7XFxuK3ZvaWQgY2ZnODAyMTFfcG1zcl9mcmVlX3drKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXBoeV93b3JrICp3b3JrKTtcXG4gXFxuIHZvaWQgY2ZnODAyMTFfcmVtb3ZlX2xpbmsoc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldiwgdW5zaWduZWQgaW50IGxpbmtfaWQpO1xcbiB2b2lkIGNmZzgwMjExX3JlbW92ZV9saW5rcyhzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2KTtcXG5kaWZmIC0tZ2l0IGEvbmV0L3dpcmVsZXNzL3Btc3IuYyBiL25ldC93aXJlbGVzcy9wbXNyLmNcXG5pbmRleCBjODQ0NzQ0OGYzYTUwNS4uMmM4ZGIzM2Q5YzMwOTggMTAwNjQ0XFxuLS0tIGEvbmV0L3dpcmVsZXNzL3Btc3IuY1xcbisrKyBiL25ldC93aXJlbGVzcy9wbXNyLmNcXG5AQCAtODA3LDEzICs4MDcsMTEgQEAgc3RhdGljIHZvaWQgY2ZnODAyMTFfcG1zcl9wcm9jZXNzX2Fib3J0KHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYpXFxuIFxcdH1cXG4gfVxcbiBcXG4tdm9pZCBjZmc4MDIxMV9wbXNyX2ZyZWVfd2soc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbit2b2lkIGNmZzgwMjExX3Btc3JfZnJlZV93ayhzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lwaHlfd29yayAqd29yaylcXG4ge1xcbiBcXHRzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2ID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCB3aXJlbGVzc19kZXYsXFxuIFxcdFxcdFxcdFxcdFxcdFxcdCBwbXNyX2ZyZWVfd2spO1xcbiBcXG4tXFx0Z3VhcmQod2lwaHkpKHdkZXYtXFx1MDAzZXdpcGh5KTtcXG4tXFxuIFxcdGNmZzgwMjExX3Btc3JfcHJvY2Vzc19hYm9ydCh3ZGV2KTtcXG4gfVxcbiBcXG5AQCAtODI5LDcgKzgyNyw3IEBAIHZvaWQgY2ZnODAyMTFfcG1zcl93ZGV2X2Rvd24oc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldilcXG4gXFx0fVxcbiBcXHRzcGluX3VubG9ja19iaChcXHUwMDI2d2Rldi1cXHUwMDNlcG1zcl9sb2NrKTtcXG4gXFxuLVxcdGNhbmNlbF93b3JrX3N5bmMoXFx1MDAyNndkZXYtXFx1MDAzZXBtc3JfZnJlZV93ayk7XFxuK1xcdHdpcGh5X3dvcmtfY2FuY2VsKHdkZXYtXFx1MDAzZXdpcGh5LCBcXHUwMDI2d2Rldi1cXHUwMDNlcG1zcl9mcmVlX3drKTtcXG4gXFx0aWYgKGZvdW5kKVxcbiBcXHRcXHRjZmc4MDIxMV9wbXNyX3Byb2Nlc3NfYWJvcnQod2Rldik7XFxuIFxcbkBAIC04NDQsNyArODQyLDcgQEAgdm9pZCBjZmc4MDIxMV9yZWxlYXNlX3Btc3Ioc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldiwgdTMyIHBvcnRpZClcXG4gXFx0bGlzdF9mb3JfZWFjaF9lbnRyeShyZXEsIFxcdTAwMjZ3ZGV2LVxcdTAwM2VwbXNyX2xpc3QsIGxpc3QpIHtcXG4gXFx0XFx0aWYgKHJlcS1cXHUwMDNlbmxfcG9ydGlkID09IHBvcnRpZCkge1xcbiBcXHRcXHRcXHRyZXEtXFx1MDAzZW5sX3BvcnRpZCA9IDA7XFxuLVxcdFxcdFxcdHNjaGVkdWxlX3dvcmsoXFx1MDAyNndkZXYtXFx1MDAzZXBtc3JfZnJlZV93ayk7XFxuK1xcdFxcdFxcdHdpcGh5X3dvcmtfcXVldWUod2Rldi1cXHUwMDNld2lwaHksIFxcdTAwMjZ3ZGV2LVxcdTAwM2VwbXNyX2ZyZWVfd2spO1xcbiBcXHRcXHR9XFxuIFxcdH1cXG4gXFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNndkZXYtXFx1MDAzZXBtc3JfbG9jayk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDEwOjE5OjE3LjcwNDMyMDg0NloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTg3NzYzNjgxNzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQ0ZHODAyMTFcIixcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJNQUM4MDIxMV9IV1NJTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImNmZzgwMjExX3Btc3JfZnJlZV93a1wiLFxuICAgIFwiY2ZnODAyMTFfcG1zcl93ZGV2X2Rvd25cIixcbiAgICBcImNmZzgwMjExX3JlbGVhc2VfcG1zclwiLFxuICAgIFwiY2ZnODAyMTFfaW5pdF93ZGV2XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggY2hhbmdlcyB0aGUgcG1zcl9mcmVlX3drIHdvcmsgaXRlbSBpbiBzdHJ1Y3Qgd2lyZWxlc3NfZGV2IGZyb20gYSBzdGFuZGFyZCB3b3JrX3N0cnVjdCB0byBhIHdpcGh5X3dvcmsuIFRoaXMgYWx0ZXJzIHRoZSBsb2NraW5nIHNlbWFudGljcywgYXMgd2lwaHlfd29yayBpcyBleGVjdXRlZCB3aXRoIHRoZSB3aXBoeSBsb2NrIGhlbGQsIGFsbG93aW5nIHRoZSByZW1vdmFsIG9mIHRoZSBleHBsaWNpdCBndWFyZCh3aXBoeSkgaW4gdGhlIHdvcmsgaGFuZGxlci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjZmc4MDIxMSBzdWJzeXN0ZW0gdGhhdCBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBtYWM4MDIxMV9od3NpbS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBhOTAyZmVhMDkyMzE5ZWY0NDU3OWMzZjlmMTFhMGMyMjE0ZTZmODFlXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBKdWwgMyAxMDoxOToxNSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L2NmZzgwMjExLmggYi9pbmNsdWRlL25ldC9jZmc4MDIxMS5oXG5pbmRleCA4MTg4YWQyMDBkZTUzOS4uMzc1MWExZDc0NzY1YWIgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL25ldC9jZmc4MDIxMS5oXG4rKysgYi9pbmNsdWRlL25ldC9jZmc4MDIxMS5oXG5AQCAtNzI2NSw3ICs3MjY1LDcgQEAgc3RydWN0IHdpcmVsZXNzX2RldiB7XG4gXG4gXHRzdHJ1Y3QgbGlzdF9oZWFkIHBtc3JfbGlzdDtcbiBcdHNwaW5sb2NrX3QgcG1zcl9sb2NrO1xuLVx0c3RydWN0IHdvcmtfc3RydWN0IHBtc3JfZnJlZV93aztcbitcdHN0cnVjdCB3aXBoeV93b3JrIHBtc3JfZnJlZV93aztcbiBcbiBcdHVuc2lnbmVkIGxvbmcgdW5wcm90X2JlYWNvbl9yZXBvcnRlZDtcbiBcbmRpZmYgLS1naXQgYS9uZXQvd2lyZWxlc3MvY29yZS5jIGIvbmV0L3dpcmVsZXNzL2NvcmUuY1xuaW5kZXggM2RjZjYzYjA0YzQxZGIuLmI2YmIyNWVlODljZDJlIDEwMDY0NFxuLS0tIGEvbmV0L3dpcmVsZXNzL2NvcmUuY1xuKysrIGIvbmV0L3dpcmVsZXNzL2NvcmUuY1xuQEAgLTE2MTMsNyArMTYxMyw3IEBAIHZvaWQgY2ZnODAyMTFfaW5pdF93ZGV2KHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYpXG4gXHRJTklUX0xJU1RfSEVBRChcdTAwMjZ3ZGV2LVx1MDAzZW1nbXRfcmVnaXN0cmF0aW9ucyk7XG4gXHRJTklUX0xJU1RfSEVBRChcdTAwMjZ3ZGV2LVx1MDAzZXBtc3JfbGlzdCk7XG4gXHRzcGluX2xvY2tfaW5pdChcdTAwMjZ3ZGV2LVx1MDAzZXBtc3JfbG9jayk7XG4tXHRJTklUX1dPUksoXHUwMDI2d2Rldi1cdTAwM2VwbXNyX2ZyZWVfd2ssIGNmZzgwMjExX3Btc3JfZnJlZV93ayk7XG4rXHR3aXBoeV93b3JrX2luaXQoXHUwMDI2d2Rldi1cdTAwM2VwbXNyX2ZyZWVfd2ssIGNmZzgwMjExX3Btc3JfZnJlZV93ayk7XG4gXG4gI2lmZGVmIENPTkZJR19DRkc4MDIxMV9XRVhUXG4gXHR3ZGV2LVx1MDAzZXdleHQuZGVmYXVsdF9rZXkgPSAtMTtcbkBAIC0xNzQ3LDcgKzE3NDcsNiBAQCBzdGF0aWMgaW50IGNmZzgwMjExX25ldGRldl9ub3RpZmllcl9jYWxsKHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIsXG4gXHRcdFx0Y2ZnODAyMTFfcmVtb3ZlX2xpbmtzKHdkZXYpO1xuIFx0XHQvKiBzaW5jZSB3ZSBqdXN0IGRpZCBjZmc4MDIxMV9sZWF2ZSgpIG5vdGhpbmcgdG8gZG8gdGhlcmUgKi9cbiBcdFx0Y2FuY2VsX3dvcmtfc3luYyhcdTAwMjZ3ZGV2LVx1MDAzZWRpc2Nvbm5lY3Rfd2spO1xuLVx0XHRjYW5jZWxfd29ya19zeW5jKFx1MDAyNndkZXYtXHUwMDNlcG1zcl9mcmVlX3drKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIE5FVERFVl9ET1dOOlxuIFx0XHR3aXBoeV9sb2NrKFx1MDAyNnJkZXYtXHUwMDNld2lwaHkpO1xuZGlmZiAtLWdpdCBhL25ldC93aXJlbGVzcy9jb3JlLmggYi9uZXQvd2lyZWxlc3MvY29yZS5oXG5pbmRleCBkZjQ3ZWQ2MjA4YTUwZC4uZjYwYzY2Yjg4Njc3MjUgMTAwNjQ0XG4tLS0gYS9uZXQvd2lyZWxlc3MvY29yZS5oXG4rKysgYi9uZXQvd2lyZWxlc3MvY29yZS5oXG5AQCAtNTg2LDcgKzU4Niw3IEBAIGNmZzgwMjExX2dldF82Z2h6X3Bvd2VyX3R5cGUoY29uc3QgdTggKmVsZW1zLCBzaXplX3QgZWxlbXNfbGVuLFxuIFxuIHZvaWQgY2ZnODAyMTFfcmVsZWFzZV9wbXNyKHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsIHUzMiBwb3J0aWQpO1xuIHZvaWQgY2ZnODAyMTFfcG1zcl93ZGV2X2Rvd24oc3RydWN0IHdpcmVsZXNzX2RldiAqd2Rldik7XG4tdm9pZCBjZmc4MDIxMV9wbXNyX2ZyZWVfd2soc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKTtcbit2b2lkIGNmZzgwMjExX3Btc3JfZnJlZV93ayhzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lwaHlfd29yayAqd29yayk7XG4gXG4gdm9pZCBjZmc4MDIxMV9yZW1vdmVfbGluayhzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LCB1bnNpZ25lZCBpbnQgbGlua19pZCk7XG4gdm9pZCBjZmc4MDIxMV9yZW1vdmVfbGlua3Moc3RydWN0IHdpcmVsZXNzX2RldiAqd2Rldik7XG5kaWZmIC0tZ2l0IGEvbmV0L3dpcmVsZXNzL3Btc3IuYyBiL25ldC93aXJlbGVzcy9wbXNyLmNcbmluZGV4IGM4NDQ3NDQ4ZjNhNTA1Li4yYzhkYjMzZDljMzA5OCAxMDA2NDRcbi0tLSBhL25ldC93aXJlbGVzcy9wbXNyLmNcbisrKyBiL25ldC93aXJlbGVzcy9wbXNyLmNcbkBAIC04MDcsMTMgKzgwNywxMSBAQCBzdGF0aWMgdm9pZCBjZmc4MDIxMV9wbXNyX3Byb2Nlc3NfYWJvcnQoc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldilcbiBcdH1cbiB9XG4gXG4tdm9pZCBjZmc4MDIxMV9wbXNyX2ZyZWVfd2soc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuK3ZvaWQgY2ZnODAyMTFfcG1zcl9mcmVlX3drKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXBoeV93b3JrICp3b3JrKVxuIHtcbiBcdHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IHdpcmVsZXNzX2RldixcbiBcdFx0XHRcdFx0XHQgcG1zcl9mcmVlX3drKTtcbiBcbi1cdGd1YXJkKHdpcGh5KSh3ZGV2LVx1MDAzZXdpcGh5KTtcbi1cbiBcdGNmZzgwMjExX3Btc3JfcHJvY2Vzc19hYm9ydCh3ZGV2KTtcbiB9XG4gXG5AQCAtODI5LDcgKzgyNyw3IEBAIHZvaWQgY2ZnODAyMTFfcG1zcl93ZGV2X2Rvd24oc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldilcbiBcdH1cbiBcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNndkZXYtXHUwMDNlcG1zcl9sb2NrKTtcbiBcbi1cdGNhbmNlbF93b3JrX3N5bmMoXHUwMDI2d2Rldi1cdTAwM2VwbXNyX2ZyZWVfd2spO1xuK1x0d2lwaHlfd29ya19jYW5jZWwod2Rldi1cdTAwM2V3aXBoeSwgXHUwMDI2d2Rldi1cdTAwM2VwbXNyX2ZyZWVfd2spO1xuIFx0aWYgKGZvdW5kKVxuIFx0XHRjZmc4MDIxMV9wbXNyX3Byb2Nlc3NfYWJvcnQod2Rldik7XG4gXG5AQCAtODQ0LDcgKzg0Miw3IEBAIHZvaWQgY2ZnODAyMTFfcmVsZWFzZV9wbXNyKHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsIHUzMiBwb3J0aWQpXG4gXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KHJlcSwgXHUwMDI2d2Rldi1cdTAwM2VwbXNyX2xpc3QsIGxpc3QpIHtcbiBcdFx0aWYgKHJlcS1cdTAwM2VubF9wb3J0aWQgPT0gcG9ydGlkKSB7XG4gXHRcdFx0cmVxLVx1MDAzZW5sX3BvcnRpZCA9IDA7XG4tXHRcdFx0c2NoZWR1bGVfd29yayhcdTAwMjZ3ZGV2LVx1MDAzZXBtc3JfZnJlZV93ayk7XG4rXHRcdFx0d2lwaHlfd29ya19xdWV1ZSh3ZGV2LVx1MDAzZXdpcGh5LCBcdTAwMjZ3ZGV2LVx1MDAzZXBtc3JfZnJlZV93ayk7XG4gXHRcdH1cbiBcdH1cbiBcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNndkZXYtXHUwMDNlcG1zcl9sb2NrKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDEwOjE5OjE3LjcwNDMyMjQ5NloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI2MzQ2MDg3MDgzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBhIHN0cmFpZ2h0Zm9yd2FyZCBidXQgaW1wb3J0YW50IGNoYW5nZSB3aXRoaW4gdGhlIGBjZmc4MDIxMWAgc3Vic3lzdGVtLCBzcGVjaWZpY2FsbHkgdG91Y2hpbmcgaG93IFBlZXIgTWVhc3VyZW1lbnQgU3VydmV5IFJlcG9ydHMgKFBNU1IpIGFyZSBoYW5kbGVkLiBJdCdzIGVzc2VudGlhbGx5IHJlZmFjdG9yaW5nIHRoZSBgcG1zcl9mcmVlX3drYCB3b3JrIHF1ZXVlIGluIHRoZSBgd2lyZWxlc3NfZGV2YCBzdHJ1Y3QuIEkgc2VlIHRoZXkncmUgdXBncmFkaW5nIGZyb20gYSBzdGFuZGFyZCBgc3RydWN0IHdvcmtfc3RydWN0YCB0byBhIGBzdHJ1Y3Qgd2lwaHlfd29ya2AsIHdoaWNoIGlzIGdlbmVyYWxseSBhIGdvb2QgbW92ZSBmb3IgYmV0dGVyIGludGVncmF0aW9uIGFuZCBwb3RlbnRpYWxseSBtb3JlIGNvbnRyb2xsZWQgZXhlY3V0aW9uIHdpdGhpbiB0aGUgV2ktRmkgc3Vic3lzdGVtLlxuXG5UaGUgY2hhbmdlcyB0byB0aGUgd29yayBxdWV1ZSBtYWNyb3MsIGBJTklUX1dPUktgIGJlY29taW5nIGB3aXBoeV93b3JrX2luaXRgLCBgY2FuY2VsX3dvcmtfc3luY2AgZXZvbHZpbmcgaW50byBgd2lwaHlfd29ya19jYW5jZWxgLCBhbmQgYHNjaGVkdWxlX3dvcmtgIG5vdyBiZWluZyBgd2lwaHlfd29ya19xdWV1ZWAsIGNvbmZpcm0gdGhpcyB3b3JrIHF1ZXVlIHJlZmFjdG9yaW5nIGFuZCBhcmUgc3RhbmRhcmQgcHJvY2VkdXJlIGZvciB0aGlzIHR5cGUgb2YgY2hhbmdlLiBUaGUgc2lnbmF0dXJlIGNoYW5nZSBmb3IgYGNmZzgwMjExX3Btc3JfZnJlZV93a2AgdG8gYWNjZXB0IHRoZSBgd2lwaHlgIHBvaW50ZXIgZGlyZWN0bHkgaXMgbG9naWNhbCwgZ2l2ZW4gdGhlIGB3aXBoeV93b3JrYCBjb250ZXh0IGFuZCB0aGUgcmVtb3ZhbCBvZiB0aGUgcmVkdW5kYW50IGxvY2sgZ3VhcmRpbmcuIFRoZXkncmUgY29ycmVjdGx5IGVuc3VyaW5nIHRoZSBgd2lwaHlgIGxvY2sgaXMgaGVsZCwgd2hpY2ggc2ltcGxpZmllcyB0aGUgY29kZS5cblxuVGhpcyB0b3VjaGVzIGBjZmc4MDIxMWAsIGEgc3Vic3lzdGVtIHRoYXQncyBkaXJlY3RseSBhY2Nlc3NpYmxlIHRocm91Z2ggYG1hYzgwMjExX2h3c2ltYCwgd2hpY2ggSSBrbm93IGZyb20gZXhwZXJpZW5jZSBpcyBjcnVjaWFsIGluIHZpcnR1YWxpemVkIHRlc3RpbmcgZW52aXJvbm1lbnRzLiBUaGlzIG1lYW5zIHRoaXMgY2hhbmdlIGlzIGZ1bmN0aW9uYWxseSBzaWduaWZpY2FudCBmb3IgdGVzdGluZyBhbmQgZGVidWdnaW5nLCB0aGVyZWZvcmUgSSB3aWxsIHNldCBgV29ydGhGdXp6aW5nPXRydWVgLlxuXG5Ob3csIHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGZ1bGwgc2NvcGUgb2YgdGhpcyBjaGFuZ2UsIEkgbmVlZCB0byBmb2N1cyBvbiBhIGZldyBrZXkgc3ltYm9sczogYGNmZzgwMjExX3Btc3JfZnJlZV93a2AsIG9mIGNvdXJzZSwgYnV0IGFsc28gYGNmZzgwMjExX3Btc3Jfd2Rldl9kb3duYCBhbmQgYGNmZzgwMjExX3JlbGVhc2VfcG1zcmAgdG8gZ2V0IGEgY29tcGxldGUgcGljdHVyZSBvZiB0aGUgUE1TUiBoYW5kbGluZyBmbG93LiBJJ2xsIG5lZWQgdG8gZW5hYmxlIGEgZmV3IGNvbmZpZ3MgdG8gcmVwbGljYXRlIGFuZCB0ZXN0IHRoZSBlbnZpcm9ubWVudCBwcm9wZXJseS4gYENGRzgwMjExYCBpcyBvYnZpb3VzLCBhbmQgSSdsbCBuZWVkIGBNQUM4MDIxMWAsIHdoaWNoIGlzIGdlbmVyYWxseSBhIHByZS1yZXF1aXNpdGUgZm9yIGBNQUM4MDIxMV9IV1NJTWAuXG5cbkZpbmFsbHksIHRvIHNlZSBpZiB0aGVyZSdzIGFueXRoaW5nIGVsc2UgcmVsYXRlZCB0byBQTVNSIHRoYXQgSSBtaWdodCBiZSBtaXNzaW5nLCBJJ2xsIHJ1biBhIHF1aWNrIGdyZXAgb24gdGhlIGBuZXQvd2lyZWxlc3MvYCBkaXJlY3RvcnkgZm9yIGVpdGhlciBgY2ZnODAyMTFfcG1zcl9mcmVlX3drYCBvciBqdXN0IGBwbXNyYC4gVGhpcyB3aWxsIGhlbHAgbWUgZW5zdXJlIHRoYXQgdGhlcmUgYXJlIG5vIG9ic2N1cmUgUE1TUi1yZWxhdGVkIGNvbmZpZ3VyYXRpb25zIHRoYXQgSSdtIG92ZXJsb29raW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMTEwLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzcwLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMTA6MTk6NDQuMDUwNDEyOTM5WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM1Nzc1ODgwMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjZmc4MDIxMV9wbXNyX2ZyZWVfd2tcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3dpcmVsZXNzL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvd2lyZWxlc3MvY29yZS5jPTE2MDk9dm9pZCBjZmc4MDIxMV9pbml0X3dkZXYoc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldilcXG4tLVxcbm5ldC93aXJlbGVzcy9jb3JlLmMtMTYxNS1cXHRzcGluX2xvY2tfaW5pdChcXHUwMDI2d2Rldi1cXHUwMDNlcG1zcl9sb2NrKTtcXG5uZXQvd2lyZWxlc3MvY29yZS5jOjE2MTY6XFx0d2lwaHlfd29ya19pbml0KFxcdTAwMjZ3ZGV2LVxcdTAwM2VwbXNyX2ZyZWVfd2ssIGNmZzgwMjExX3Btc3JfZnJlZV93ayk7XFxubmV0L3dpcmVsZXNzL2NvcmUuYy0xNjE3LVxcbi0tXFxubmV0L3dpcmVsZXNzL2NvcmUuaD01ODg9dm9pZCBjZmc4MDIxMV9wbXNyX3dkZXZfZG93bihzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2KTtcXG5uZXQvd2lyZWxlc3MvY29yZS5oOjU4OTp2b2lkIGNmZzgwMjExX3Btc3JfZnJlZV93ayhzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lwaHlfd29yayAqd29yayk7XFxubmV0L3dpcmVsZXNzL2NvcmUuaC01OTAtXFxuLS1cXG5uZXQvd2lyZWxlc3MvcG1zci5jPTc4Nz1zdGF0aWMgdm9pZCBjZmc4MDIxMV9wbXNyX3Byb2Nlc3NfYWJvcnQoc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldilcXG4tLVxcbm5ldC93aXJlbGVzcy9wbXNyLmMtODA5LVxcbm5ldC93aXJlbGVzcy9wbXNyLmM6ODEwOnZvaWQgY2ZnODAyMTFfcG1zcl9mcmVlX3drKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXBoeV93b3JrICp3b3JrKVxcbm5ldC93aXJlbGVzcy9wbXNyLmMtODExLXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMTA6MTk6NDQuNDA4MjA1NjUxWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ4NTY1OTkxMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOlxuXG4qKktjb25maWcgRGl2ZSBmb3IgUE1TUioqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBmaW5kIG91dCBhYm91dCBQTVNSLiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byBnbyBzdHJhaWdodCB0byB0aGUgc291cmNlLCB0aGUgY29yZSBvZiBob3cgdGhlIHdpcmVsZXNzIGNvbmZpZ3VyYXRpb24gaXMgc3RydWN0dXJlZC4gVGhhdCBtZWFucyBkaXZpbmcgaW50byB0aGUgYG5ldC93aXJlbGVzcy9LY29uZmlnYCBmaWxlLiBJdCdzIHRoZSBjZW50cmFsIGNvbmZpZ3VyYXRpb24gZmlsZSBmb3IgYW55dGhpbmcgYW5kIGV2ZXJ5dGhpbmcgd2lyZWxlc3MgcmVsYXRlZCBpbiB0aGUga2VybmVsLiBUaGlzIGlzIHdoZXJlIEknZCBleHBlY3QgdG8gZmluZCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gUE1TUi4gSG9wZWZ1bGx5LCBpdCdzIGNsZWFybHkgbmFtZWQgb3IgaGFzIHNvbWUgb2J2aW91cyBkZXBlbmRlbmNpZXMgdGhhdCB3aWxsIHBvaW50IG1lIGluIHRoZSByaWdodCBkaXJlY3Rpb24uIEl0J3MgYSBiaXQgb2YgYSBkYXRhLW1pbmluZyBleGVyY2lzZSwgYnV0IHRoaXMgaXMgdGhlIGxvZ2ljYWwgZmlyc3Qgc3RlcCBmb3IgdW5kZXJzdGFuZGluZyB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGF2YWlsYWJsZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaWYgUE1TUiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQsIGhvdyBpdCBpcyBleHBvc2VkIHRvIHRoZSB1c2VyLCBhbmQgaWYgaXQncyBkZXBlbmRlbnQgb24gYW55IG90aGVyIG9wdGlvbnMuIExldCdzIHNlZSB3aGF0J3MgaW4gdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ0MzgsIk91dHB1dFRva2VucyI6MjYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wM1QxMDoxOTo0Ny44OTM4Njc1ODNaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzA0ODU3ODE3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIlBNU1JcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3dpcmVsZXNzL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDU2OCBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYz00NjE9c3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5XFxubmV0L3dpcmVsZXNzL25sODAyMTEuYzo0NjI6bmw4MDIxMV9wbXNyX2Z0bV9yZXFfYXR0cl9wb2xpY3lbTkw4MDIxMV9QTVNSX0ZUTV9SRVFfQVRUUl9NQVggKyAxXSA9IHtcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjQ2MzpcXHRbTkw4MDIxMV9QTVNSX0ZUTV9SRVFfQVRUUl9BU0FQXSA9IHsgLnR5cGUgPSBOTEFfRkxBRyB9LFxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6NDY0OlxcdFtOTDgwMjExX1BNU1JfRlRNX1JFUV9BVFRSX1BSRUFNQkxFXSA9IHsgLnR5cGUgPSBOTEFfVTMyIH0sXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYzo0NjU6XFx0W05MODAyMTFfUE1TUl9GVE1fUkVRX0FUVFJfTlVNX0JVUlNUU19FWFBdID1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTQ2Ni1cXHRcXHROTEFfUE9MSUNZX01BWChOTEFfVTgsIDE1KSxcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjQ2NzpcXHRbTkw4MDIxMV9QTVNSX0ZUTV9SRVFfQVRUUl9CVVJTVF9QRVJJT0RdID0geyAudHlwZSA9IE5MQV9VMTYgfSxcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjQ2ODpcXHRbTkw4MDIxMV9QTVNSX0ZUTV9SRVFfQVRUUl9CVVJTVF9EVVJBVElPTl0gPVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtNDY5LVxcdFxcdE5MQV9QT0xJQ1lfTUFYKE5MQV9VOCwgMTUpLFxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6NDcwOlxcdFtOTDgwMjExX1BNU1JfRlRNX1JFUV9BVFRSX0ZUTVNfUEVSX0JVUlNUXSA9IHsgLnR5cGUgPSBOTEFfVTggfSxcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjQ3MTpcXHRbTkw4MDIxMV9QTVNSX0ZUTV9SRVFfQVRUUl9OVU1fRlRNUl9SRVRSSUVTXSA9IHsgLnR5cGUgPSBOTEFfVTggfSxcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjQ3MjpcXHRbTkw4MDIxMV9QTVNSX0ZUTV9SRVFfQVRUUl9SRVFVRVNUX0xDSV0gPSB7IC50eXBlID0gTkxBX0ZMQUcgfSxcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjQ3MzpcXHRbTkw4MDIxMV9QTVNSX0ZUTV9SRVFfQVRUUl9SRVFVRVNUX0NJVklDTE9DXSA9IHsgLnR5cGUgPSBOTEFfRkxBRyB9LFxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6NDc0OlxcdFtOTDgwMjExX1BNU1JfRlRNX1JFUV9BVFRSX1RSSUdHRVJfQkFTRURdID0geyAudHlwZSA9IE5MQV9GTEFHIH0sXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYzo0NzU6XFx0W05MODAyMTFfUE1TUl9GVE1fUkVRX0FUVFJfTk9OX1RSSUdHRVJfQkFTRURdID0geyAudHlwZSA9IE5MQV9GTEFHIH0sXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYzo0NzY6XFx0W05MODAyMTFfUE1TUl9GVE1fUkVRX0FUVFJfTE1SX0ZFRURCQUNLXSA9IHsgLnR5cGUgPSBOTEFfRkxBRyB9LFxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6NDc3OlxcdFtOTDgwMjExX1BNU1JfRlRNX1JFUV9BVFRSX0JTU19DT0xPUl0gPSB7IC50eXBlID0gTkxBX1U4IH0sXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYzo0Nzg6XFx0W05MODAyMTFfUE1TUl9GVE1fUkVRX0FUVFJfUlNUQV0gPSB7IC50eXBlID0gTkxBX0ZMQUcgfSxcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjQ3OTpcXHRbTkw4MDIxMV9QTVNSX0ZUTV9SRVFfQVRUUl9NSU5fVElNRV9CRVRXRUVOX01FQVNVUkVNRU5UU10gPSB7XFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy00ODAtXFx0XFx0LnR5cGUgPSBOTEFfVTMyXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy00ODEtXFx0fSxcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjQ4MjpcXHRbTkw4MDIxMV9QTVNSX0ZUTV9SRVFfQVRUUl9NQVhfVElNRV9CRVRXRUVOX01FQVNVUkVNRU5UU10gPSB7XFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy00ODMtXFx0XFx0LnR5cGUgPSBOTEFfVTMyXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy00ODQtXFx0fSxcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjQ4NTpcXHRbTkw4MDIxMV9QTVNSX0ZUTV9SRVFfQVRUUl9OT01JTkFMX1RJTUVdID0geyAudHlwZSA9IE5MQV9VMzIgfSxcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjQ4NjpcXHRbTkw4MDIxMV9QTVNSX0ZUTV9SRVFfQVRUUl9BV19EVVJBVElPTl0gPSBOTEFfUE9MSUNZX01BWChOTEFfVTMyLCAyNTUpLFxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6NDg3OlxcdFtOTDgwMjExX1BNU1JfRlRNX1JFUV9BVFRSX05VTV9NRUFTVVJFTUVOVFNdID0geyAudHlwZSA9IE5MQV9VMzIgfSxcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjQ4ODpcXHRbTkw4MDIxMV9QTVNSX0ZUTV9SRVFfQVRUUl9JTkdSRVNTXSA9IHsgLnR5cGUgPSBOTEFfVTY0IH0sXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYzo0ODk6XFx0W05MODAyMTFfUE1TUl9GVE1fUkVRX0FUVFJfRUdSRVNTXSA9IHsgLnR5cGUgPSBOTEFfVTY0IH0sXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYzo0OTA6XFx0W05MODAyMTFfUE1TUl9GVE1fUkVRX0FUVFJfUERfU1VQUFJFU1NfUkVTVUxUU10gPSB7IC50eXBlID0gTkxBX0ZMQUcgfSxcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTQ5MS19O1xcbi0tXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYz00OTM9c3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5XFxubmV0L3dpcmVsZXNzL25sODAyMTEuYzo0OTQ6bmw4MDIxMV9wbXNyX3JlcV9kYXRhX3BvbGljeVtOTDgwMjExX1BNU1JfVFlQRV9NQVggKyAxXSA9IHtcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjQ5NTpcXHRbTkw4MDIxMV9QTVNSX1RZUEVfRlRNXSA9XFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy00OTYtXFx0XFx0TkxBX1BPTElDWV9ORVNURUQobmw4MDIxMV9wbXNyX2Z0bV9yZXFfYXR0cl9wb2xpY3kpLFxcbi0tXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYz00OTk9c3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5XFxubmV0L3dpcmVsZXNzL25sODAyMTEuYzo1MDA6bmw4MDIxMV9wbXNyX3JlcV9hdHRyX3BvbGljeVtOTDgwMjExX1BNU1JfUkVRX0FUVFJfTUFYICsgMV0gPSB7XFxubmV0L3dpcmVsZXNzL25sODAyMTEuYzo1MDE6XFx0W05MODAyMTFfUE1TUl9SRVFfQVRUUl9EQVRBXSA9XFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy01MDItXFx0XFx0TkxBX1BPTElDWV9ORVNURUQobmw4MDIxMV9wbXNyX3JlcV9kYXRhX3BvbGljeSksXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYzo1MDM6XFx0W05MODAyMTFfUE1TUl9SRVFfQVRUUl9HRVRfQVBfVFNGXSA9IHsgLnR5cGUgPSBOTEFfRkxBRyB9LFxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtNTA0LX07XFxuLS1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jPTUwNj1zdGF0aWMgY29uc3Qgc3RydWN0IG5sYV9wb2xpY3lcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjUwNzpubDgwMjExX3Btc3JfcGVlcl9hdHRyX3BvbGljeVtOTDgwMjExX1BNU1JfUEVFUl9BVFRSX01BWCArIDFdID0ge1xcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6NTA4OlxcdFtOTDgwMjExX1BNU1JfUEVFUl9BVFRSX0FERFJdID0gTkxBX1BPTElDWV9FVEhfQUREUixcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjUwOTpcXHRbTkw4MDIxMV9QTVNSX1BFRVJfQVRUUl9DSEFOXSA9IE5MQV9QT0xJQ1lfTkVTVEVEKG5sODAyMTFfcG9saWN5KSxcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjUxMDpcXHRbTkw4MDIxMV9QTVNSX1BFRVJfQVRUUl9SRVFdID1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTUxMS1cXHRcXHROTEFfUE9MSUNZX05FU1RFRChubDgwMjExX3Btc3JfcmVxX2F0dHJfcG9saWN5KSxcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjUxMjpcXHRbTkw4MDIxMV9QTVNSX1BFRVJfQVRUUl9SRVNQXSA9IHsgLnR5cGUgPSBOTEFfUkVKRUNUIH0sXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYzo1MTM6XFx0W05MODAyMTFfUE1TUl9QRUVSX0FUVFJfUkVRX1RZUEVdID1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjUxNDpcXHRcXHROTEFfUE9MSUNZX01BWChOTEFfVTMyLCBOTDgwMjExX1BNU1JfRlRNX1JFUV9UWVBFX01BWCksXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy01MTUtfTtcXG4tLVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM9NTE3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6NTE4Om5sODAyMTFfcG1zcl9hdHRyX3BvbGljeVtOTDgwMjExX1BNU1JfQVRUUl9NQVggKyAxXSA9IHtcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjUxOTpcXHRbTkw4MDIxMV9QTVNSX0FUVFJfTUFYX1BFRVJTXSA9IHsgLnR5cGUgPSBOTEFfUkVKRUNUIH0sXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYzo1MjA6XFx0W05MODAyMTFfUE1TUl9BVFRSX1JFUE9SVF9BUF9UU0ZdID0geyAudHlwZSA9IE5MQV9SRUpFQ1QgfSxcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjUyMTpcXHRbTkw4MDIxMV9QTVNSX0FUVFJfUkFORE9NSVpFX01BQ19BRERSXSA9IHsgLnR5cGUgPSBOTEFfUkVKRUNUIH0sXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYzo1MjI6XFx0W05MODAyMTFfUE1TUl9BVFRSX1RZUEVfQ0FQQV0gPSB7IC50eXBlID0gTkxBX1JFSkVDVCB9LFxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6NTIzOlxcdFtOTDgwMjExX1BNU1JfQVRUUl9QRUVSU10gPVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtNTI0LVxcdFxcdE5MQV9QT0xJQ1lfTkVTVEVEX0FSUkFZKG5sODAyMTFfcG1zcl9wZWVyX2F0dHJfcG9saWN5KSxcXG4tLVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM9MjQ3OD1ubDgwMjExX3NlbmRfcG1zcl9mdG1fY2FwYShjb25zdCBzdHJ1Y3QgY2ZnODAyMTFfcG1zcl9jYXBhYmlsaXRpZXMgKmNhcCxcXG4tLVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjQ4NS1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjI0ODY6XFx0ZnRtID0gbmxhX25lc3Rfc3RhcnRfbm9mbGFnKG1zZywgTkw4MDIxMV9QTVNSX1RZUEVfRlRNKTtcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTI0ODctXFx0aWYgKCFmdG0pXFxuLS1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTI0ODktXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYzoyNDkwOlxcdGlmIChjYXAtXFx1MDAzZWZ0bS5hc2FwIFxcdTAwMjZcXHUwMDI2IG5sYV9wdXRfZmxhZyhtc2csIE5MODAyMTFfUE1TUl9GVE1fQ0FQQV9BVFRSX0FTQVApKVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjQ5MS1cXHRcXHRyZXR1cm4gLUVOT0JVRlM7XFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yNDkyLVxcdGlmIChjYXAtXFx1MDAzZWZ0bS5ub25fYXNhcCBcXHUwMDI2XFx1MDAyNlxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MjQ5MzpcXHQgICAgbmxhX3B1dF9mbGFnKG1zZywgTkw4MDIxMV9QTVNSX0ZUTV9DQVBBX0FUVFJfTk9OX0FTQVApKVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjQ5NC1cXHRcXHRyZXR1cm4gLUVOT0JVRlM7XFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yNDk1LVxcdGlmIChjYXAtXFx1MDAzZWZ0bS5yZXF1ZXN0X2xjaSBcXHUwMDI2XFx1MDAyNlxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MjQ5NjpcXHQgICAgbmxhX3B1dF9mbGFnKG1zZywgTkw4MDIxMV9QTVNSX0ZUTV9DQVBBX0FUVFJfUkVRX0xDSSkpXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yNDk3LVxcdFxcdHJldHVybiAtRU5PQlVGUztcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTI0OTgtXFx0aWYgKGNhcC1cXHUwMDNlZnRtLnJlcXVlc3RfY2l2aWNsb2MgXFx1MDAyNlxcdTAwMjZcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjI0OTk6XFx0ICAgIG5sYV9wdXRfZmxhZyhtc2csIE5MODAyMTFfUE1TUl9GVE1fQ0FQQV9BVFRSX1JFUV9DSVZJQ0xPQykpXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yNTAwLVxcdFxcdHJldHVybiAtRU5PQlVGUztcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjI1MDE6XFx0aWYgKG5sYV9wdXRfdTMyKG1zZywgTkw4MDIxMV9QTVNSX0ZUTV9DQVBBX0FUVFJfUFJFQU1CTEVTLFxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjUwMi1cXHRcXHRcXHRjYXAtXFx1MDAzZWZ0bS5wcmVhbWJsZXMpKVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjUwMy1cXHRcXHRyZXR1cm4gLUVOT0JVRlM7XFxubmV0L3dpcmVsZXNzL25sODAyMTEuYzoyNTA0OlxcdGlmIChubGFfcHV0X3UzMihtc2csIE5MODAyMTFfUE1TUl9GVE1fQ0FQQV9BVFRSX0JBTkRXSURUSFMsXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yNTA1LVxcdFxcdFxcdGNhcC1cXHUwMDNlZnRtLmJhbmR3aWR0aHMpKVxcbi0tXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yNTA3LVxcdGlmIChjYXAtXFx1MDAzZWZ0bS5tYXhfYnVyc3RzX2V4cG9uZW50IFxcdTAwM2U9IDAgXFx1MDAyNlxcdTAwMjZcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjI1MDg6XFx0ICAgIG5sYV9wdXRfdTMyKG1zZywgTkw4MDIxMV9QTVNSX0ZUTV9DQVBBX0FUVFJfTUFYX0JVUlNUU19FWFBPTkVOVCxcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTI1MDktXFx0XFx0XFx0Y2FwLVxcdTAwM2VmdG0ubWF4X2J1cnN0c19leHBvbmVudCkpXFxuLS1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTI1MTEtXFx0aWYgKGNhcC1cXHUwMDNlZnRtLm1heF9mdG1zX3Blcl9idXJzdCBcXHUwMDI2XFx1MDAyNlxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MjUxMjpcXHQgICAgbmxhX3B1dF91MzIobXNnLCBOTDgwMjExX1BNU1JfRlRNX0NBUEFfQVRUUl9NQVhfRlRNU19QRVJfQlVSU1QsXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yNTEzLVxcdFxcdFxcdGNhcC1cXHUwMDNlZnRtLm1heF9mdG1zX3Blcl9idXJzdCkpXFxuLS1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTI1MTUtXFx0aWYgKGNhcC1cXHUwMDNlZnRtLnRyaWdnZXJfYmFzZWQgXFx1MDAyNlxcdTAwMjZcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjI1MTY6XFx0ICAgIG5sYV9wdXRfZmxhZyhtc2csIE5MODAyMTFfUE1TUl9GVE1fQ0FQQV9BVFRSX1RSSUdHRVJfQkFTRUQpKVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjUxNy1cXHRcXHRyZXR1cm4gLUVOT0JVRlM7XFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yNTE4LVxcdGlmIChjYXAtXFx1MDAzZWZ0bS5ub25fdHJpZ2dlcl9iYXNlZCBcXHUwMDI2XFx1MDAyNlxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MjUxOTpcXHQgICAgbmxhX3B1dF9mbGFnKG1zZywgTkw4MDIxMV9QTVNSX0ZUTV9DQVBBX0FUVFJfTk9OX1RSSUdHRVJfQkFTRUQpKVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjUyMC1cXHRcXHRyZXR1cm4gLUVOT0JVRlM7XFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yNTIxLVxcdGlmIChjYXAtXFx1MDAzZWZ0bS5zdXBwb3J0XzZnaHogXFx1MDAyNlxcdTAwMjZcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjI1MjI6XFx0ICAgIG5sYV9wdXRfZmxhZyhtc2csIE5MODAyMTFfUE1TUl9GVE1fQ0FQQV9BVFRSXzZHSFpfU1VQUE9SVCkpXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yNTIzLVxcdFxcdHJldHVybiAtRU5PQlVGUztcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjI1MjQ6XFx0aWYgKG5sYV9wdXRfdTMyKG1zZywgTkw4MDIxMV9QTVNSX0ZUTV9DQVBBX0FUVFJfTUFYX1RYX0xURl9SRVAsXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yNTI1LVxcdFxcdFxcdGNhcC1cXHUwMDNlZnRtLm1heF90eF9sdGZfcmVwKSlcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTI1MjYtXFx0XFx0cmV0dXJuIC1FTk9CVUZTO1xcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MjUyNzpcXHRpZiAobmxhX3B1dF91MzIobXNnLCBOTDgwMjExX1BNU1JfRlRNX0NBUEFfQVRUUl9NQVhfUlhfTFRGX1JFUCxcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTI1MjgtXFx0XFx0XFx0Y2FwLVxcdTAwM2VmdG0ubWF4X3J4X2x0Zl9yZXApKVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjUyOS1cXHRcXHRyZXR1cm4gLUVOT0JVRlM7XFxubmV0L3dpcmVsZXNzL25sODAyMTEuYzoyNTMwOlxcdGlmIChubGFfcHV0X3UzMihtc2csIE5MODAyMTFfUE1TUl9GVE1fQ0FQQV9BVFRSX01BWF9UWF9TVFMsXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yNTMxLVxcdFxcdFxcdGNhcC1cXHUwMDNlZnRtLm1heF90eF9zdHMpKVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjUzMi1cXHRcXHRyZXR1cm4gLUVOT0JVRlM7XFxubmV0L3dpcmVsZXNzL25sODAyMTEuYzoyNTMzOlxcdGlmIChubGFfcHV0X3UzMihtc2csIE5MODAyMTFfUE1TUl9GVE1fQ0FQQV9BVFRSX01BWF9SWF9TVFMsXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yNTM0LVxcdFxcdFxcdGNhcC1cXHUwMDNlZnRtLm1heF9yeF9zdHMpKVxcbi0tXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yNTM2LVxcdGlmIChjYXAtXFx1MDAzZWZ0bS5tYXhfdG90YWxfbHRmX3R4IFxcdTAwM2UgMCBcXHUwMDI2XFx1MDAyNlxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MjUzNzpcXHQgICAgbmxhX3B1dF91MzIobXNnLCBOTDgwMjExX1BNU1JfRlRNX0NBUEFfQVRUUl9NQVhfVE9UQUxfTFRGX1RYLFxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjUzOC1cXHRcXHRcXHRjYXAtXFx1MDAzZWZ0bS5tYXhfdG90YWxfbHRmX3R4KSlcXG4tLVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjU0MC1cXHRpZiAoY2FwLVxcdTAwM2VmdG0ubWF4X3RvdGFsX2x0Zl9yeCBcXHUwMDNlIDAgXFx1MDAyNlxcdTAwMjZcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjI1NDE6XFx0ICAgIG5sYV9wdXRfdTMyKG1zZywgTkw4MDIxMV9QTVNSX0ZUTV9DQVBBX0FUVFJfTUFYX1RPVEFMX0xURl9SWCxcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTI1NDItXFx0XFx0XFx0Y2FwLVxcdTAwM2VmdG0ubWF4X3RvdGFsX2x0Zl9yeCkpXFxuLS1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTI1NDktXFx0XFx0aXN0YV9jYXBzID0gbmxhX25lc3Rfc3RhcnRfbm9mbGFnKG1zZyxcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjI1NTA6XFx0XFx0XFx0XFx0XFx0XFx0ICBOTDgwMjExX1BNU1JfRlRNX0NBUEFfQVRUUl9JU1RBX0NBUFMpO1xcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjU1MS1cXHRcXHRpZiAoIWlzdGFfY2FwcylcXG4tLVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjU1My1cXHRcXHRpZiAoY2FwLVxcdTAwM2VmdG0uaXN0YS5zdXBwb3J0X250YiBcXHUwMDI2XFx1MDAyNlxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MjU1NDpcXHRcXHQgICAgbmxhX3B1dF9mbGFnKG1zZywgTkw4MDIxMV9QTVNSX0ZUTV9DQVBBX0FUVFJfU1VQUE9SVF9OVEIpKVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjU1NS1cXHRcXHRcXHRyZXR1cm4gLUVOT0JVRlM7XFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yNTU2LVxcdFxcdGlmIChjYXAtXFx1MDAzZWZ0bS5pc3RhLnN1cHBvcnRfdGIgXFx1MDAyNlxcdTAwMjZcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjI1NTc6XFx0XFx0ICAgIG5sYV9wdXRfZmxhZyhtc2csIE5MODAyMTFfUE1TUl9GVE1fQ0FQQV9BVFRSX1NVUFBPUlRfVEIpKVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjU1OC1cXHRcXHRcXHRyZXR1cm4gLUVOT0JVRlM7XFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yNTU5LVxcdFxcdGlmIChjYXAtXFx1MDAzZWZ0bS5pc3RhLnN1cHBvcnRfZWRjYSBcXHUwMDI2XFx1MDAyNlxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MjU2MDpcXHRcXHQgICAgbmxhX3B1dF9mbGFnKG1zZywgTkw4MDIxMV9QTVNSX0ZUTV9DQVBBX0FUVFJfU1VQUE9SVF9FRENBKSlcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTI1NjEtXFx0XFx0XFx0cmV0dXJuIC1FTk9CVUZTO1xcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjU2Mi1cXHRcXHRpZiAoY2FwLVxcdTAwM2VmdG0uaXN0YS5tYXhfcGVlcnMgXFx1MDAyNlxcdTAwMjZcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjI1NjM6XFx0XFx0ICAgIG5sYV9wdXRfdTMyKG1zZywgTkw4MDIxMV9QTVNSX0FUVFJfTUFYX1BFRVJfSVNUQV9ST0xFLFxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjU2NC1cXHRcXHRcXHRcXHRjYXAtXFx1MDAzZWZ0bS5pc3RhLm1heF9wZWVycykpXFxuLS1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTI1NzctXFx0XFx0ICovXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYzoyNTc4OlxcdFxcdGlmIChubGFfcHV0X2ZsYWcobXNnLCBOTDgwMjExX1BNU1JfRlRNX0NBUEFfQVRUUl9SU1RBX1NVUFBPUlQpKVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjU3OS1cXHRcXHRcXHRyZXR1cm4gLUVOT0JVRlM7XFxuLS1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTI1ODEtXFx0XFx0cnN0YV9jYXBzID0gbmxhX25lc3Rfc3RhcnRfbm9mbGFnKG1zZyxcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjI1ODI6XFx0XFx0XFx0XFx0XFx0XFx0ICBOTDgwMjExX1BNU1JfRlRNX0NBUEFfQVRUUl9SU1RBX0NBUFMpO1xcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjU4My1cXHRcXHRpZiAoIXJzdGFfY2FwcylcXG4tLVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjU4NS1cXHRcXHRpZiAoY2FwLVxcdTAwM2VmdG0ucnN0YS5zdXBwb3J0X250YiBcXHUwMDI2XFx1MDAyNlxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MjU4NjpcXHRcXHQgICAgbmxhX3B1dF9mbGFnKG1zZywgTkw4MDIxMV9QTVNSX0ZUTV9DQVBBX0FUVFJfU1VQUE9SVF9OVEIpKVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjU4Ny1cXHRcXHRcXHRyZXR1cm4gLUVOT0JVRlM7XFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yNTg4LVxcdFxcdGlmIChjYXAtXFx1MDAzZWZ0bS5yc3RhLnN1cHBvcnRfdGIgXFx1MDAyNlxcdTAwMjZcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjI1ODk6XFx0XFx0ICAgIG5sYV9wdXRfZmxhZyhtc2csIE5MODAyMTFfUE1TUl9GVE1fQ0FQQV9BVFRSX1NVUFBPUlRfVEIpKVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjU5MC1cXHRcXHRcXHRyZXR1cm4gLUVOT0JVRlM7XFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yNTkxLVxcdFxcdGlmIChjYXAtXFx1MDAzZWZ0bS5yc3RhLnN1cHBvcnRfZWRjYSBcXHUwMDI2XFx1MDAyNlxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MjU5MjpcXHRcXHQgICAgbmxhX3B1dF9mbGFnKG1zZywgTkw4MDIxMV9QTVNSX0ZUTV9DQVBBX0FUVFJfU1VQUE9SVF9FRENBKSlcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTI1OTMtXFx0XFx0XFx0cmV0dXJuIC1FTk9CVUZTO1xcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjU5NC1cXHRcXHRpZiAoY2FwLVxcdTAwM2VmdG0ucnN0YS5tYXhfcGVlcnMgXFx1MDAyNlxcdTAwMjZcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjI1OTU6XFx0XFx0ICAgIG5sYV9wdXRfdTMyKG1zZywgTkw4MDIxMV9QTVNSX0FUVFJfTUFYX1BFRVJfUlNUQV9ST0xFLFxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjU5Ni1cXHRcXHRcXHRcXHRjYXAtXFx1MDAzZWZ0bS5yc3RhLm1heF9wZWVycykpXFxuLS1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTI2MDEtXFx0aWYgKGNhcC1cXHUwMDNlZnRtLm1heF9ub19vZl90eF9hbnRlbm5hcyBcXHUwMDI2XFx1MDAyNlxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MjYwMjpcXHQgICAgbmxhX3B1dF91OChtc2csIE5MODAyMTFfUE1TUl9GVE1fQ0FQQV9BVFRSX01BWF9OVU1fVFhfQU5URU5OQVMsXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yNjAzLVxcdFxcdCAgICAgICBjYXAtXFx1MDAzZWZ0bS5tYXhfbm9fb2ZfdHhfYW50ZW5uYXMpKVxcbi0tXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yNjA2LVxcdGlmIChjYXAtXFx1MDAzZWZ0bS5tYXhfbm9fb2ZfcnhfYW50ZW5uYXMgXFx1MDAyNlxcdTAwMjZcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjI2MDc6XFx0ICAgIG5sYV9wdXRfdTgobXNnLCBOTDgwMjExX1BNU1JfRlRNX0NBUEFfQVRUUl9NQVhfTlVNX1JYX0FOVEVOTkFTLFxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjYwOC1cXHRcXHQgICAgICAgY2FwLVxcdTAwM2VmdG0ubWF4X25vX29mX3J4X2FudGVubmFzKSlcXG4tLVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjYxMS1cXHRpZiAoY2FwLVxcdTAwM2VmdG0ubWluX2FsbG93ZWRfcmFuZ2luZ19pbnRlcnZhbF9lZGNhIFxcdTAwMjZcXHUwMDI2XFxubmV0L3dpcmVsZXNzL25sODAyMTEuYzoyNjEyOlxcdCAgICBubGFfcHV0X3UzMihtc2csIE5MODAyMTFfUE1TUl9GVE1fQ0FQQV9BVFRSX01JTl9JTlRFUlZBTF9FRENBLFxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjYxMy1cXHRcXHRcXHRjYXAtXFx1MDAzZWZ0bS5taW5fYWxsb3dlZF9yYW5naW5nX2ludGVydmFsX2VkY2EpKVxcbi0tXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yNjE2LVxcdGlmIChjYXAtXFx1MDAzZWZ0bS5taW5fYWxsb3dlZF9yYW5naW5nX2ludGVydmFsX250YiBcXHUwMDI2XFx1MDAyNlxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MjYxNzpcXHQgICAgbmxhX3B1dF91MzIobXNnLCBOTDgwMjExX1BNU1JfRlRNX0NBUEFfQVRUUl9NSU5fSU5URVJWQUxfTlRCLFxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjYxOC1cXHRcXHRcXHRjYXAtXFx1MDAzZWZ0bS5taW5fYWxsb3dlZF9yYW5naW5nX2ludGVydmFsX250YikpXFxuLS1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTI2MjQtXFx0XFx0cGRfY2FwcyA9IG5sYV9uZXN0X3N0YXJ0X25vZmxhZyhtc2csXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYzoyNjI1OlxcdFxcdFxcdFxcdFxcdFxcdE5MODAyMTFfUE1TUl9GVE1fQ0FQQV9BVFRSX1RZUEVfQ0FQUyk7XFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yNjI2LVxcdFxcdGlmICghcGRfY2FwcylcXG4tLVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjYyOS1cXHRcXHRpZiAoY2FwLVxcdTAwM2VmdG0udHlwZS5pbmZyYV9zdXBwb3J0IFxcdTAwMjZcXHUwMDI2XFxubmV0L3dpcmVsZXNzL25sODAyMTEuYzoyNjMwOlxcdFxcdCAgICBubGFfcHV0X2ZsYWcobXNnLCBOTDgwMjExX1BNU1JfRlRNX1RZUEVfQ0FQQV9BVFRSX0lORlJBX1NVUFBPUlQpKVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjYzMS1cXHRcXHRcXHRyZXR1cm4gLUVOT0JVRlM7XFxuLS1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTI2MzMtXFx0XFx0aWYgKGNhcC1cXHUwMDNlZnRtLnR5cGUucGRfc3VwcG9ydCBcXHUwMDI2XFx1MDAyNlxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MjYzNDpcXHRcXHQgICAgbmxhX3B1dF9mbGFnKG1zZywgTkw4MDIxMV9QTVNSX0ZUTV9UWVBFX0NBUEFfQVRUUl9QRF9TVVBQT1JUKSlcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTI2MzUtXFx0XFx0XFx0cmV0dXJuIC1FTk9CVUZTO1xcbi0tXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yNjQwLVxcdGlmIChjYXAtXFx1MDAzZWZ0bS5jb25jdXJyZW50X2lzdGFfcnN0YV9zdXBwb3J0IFxcdTAwMjZcXHUwMDI2XFxubmV0L3dpcmVsZXNzL25sODAyMTEuYzoyNjQxOlxcdCAgICBubGFfcHV0X2ZsYWcobXNnLCBOTDgwMjExX1BNU1JfRlRNX0NBUEFfQVRUUl9DT05DVVJSRU5UX0lTVEFfUlNUQV9TVVBQT1JUKSlcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTI2NDItXFx0XFx0cmV0dXJuIC1FTk9CVUZTO1xcbi0tXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yNjQ1LVxcdFxcdGlmIChjYXAtXFx1MDAzZWZ0bS5wZF9wcmVhbWJsZXMgXFx1MDAyNlxcdTAwMjZcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjI2NDY6XFx0XFx0ICAgIG5sYV9wdXRfdTMyKG1zZywgTkw4MDIxMV9QTVNSX0ZUTV9DQVBBX0FUVFJfUERfUFJFQU1CTEVTLFxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjY0Ny1cXHRcXHRcXHRcXHRjYXAtXFx1MDAzZWZ0bS5wZF9wcmVhbWJsZXMpKVxcbi0tXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yNjQ5LVxcdFxcdGlmIChjYXAtXFx1MDAzZWZ0bS5wZF9iYW5kd2lkdGhzIFxcdTAwMjZcXHUwMDI2XFxubmV0L3dpcmVsZXNzL25sODAyMTEuYzoyNjUwOlxcdFxcdCAgICBubGFfcHV0X3UzMihtc2csIE5MODAyMTFfUE1TUl9GVE1fQ0FQQV9BVFRSX1BEX0JBTkRXSURUSFMsXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yNjUxLVxcdFxcdFxcdFxcdGNhcC1cXHUwMDNlZnRtLnBkX2JhbmR3aWR0aHMpKVxcbi0tXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYz0yNjU5PXN0YXRpYyBpbnQgbmw4MDIxMV9zZW5kX3Btc3JfY2FwYShzdHJ1Y3QgY2ZnODAyMTFfcmVnaXN0ZXJlZF9kZXZpY2UgKnJkZXYsXFxuLS1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTI2NzYtXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYzoyNjc3OlxcdGlmIChubGFfcHV0X3UzMihtc2csIE5MODAyMTFfUE1TUl9BVFRSX01BWF9QRUVSUywgY2FwLVxcdTAwM2VtYXhfcGVlcnMpKVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjY3OC1cXHRcXHRyZXR1cm4gLUVOT0JVRlM7XFxuLS1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTI2ODAtXFx0aWYgKGNhcC1cXHUwMDNlcmVwb3J0X2FwX3RzZiBcXHUwMDI2XFx1MDAyNlxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MjY4MTpcXHQgICAgbmxhX3B1dF9mbGFnKG1zZywgTkw4MDIxMV9QTVNSX0FUVFJfUkVQT1JUX0FQX1RTRikpXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yNjgyLVxcdFxcdHJldHVybiAtRU5PQlVGUztcXG4tLVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjY4NC1cXHRpZiAoY2FwLVxcdTAwM2VyYW5kb21pemVfbWFjX2FkZHIgXFx1MDAyNlxcdTAwMjZcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjI2ODU6XFx0ICAgIG5sYV9wdXRfZmxhZyhtc2csIE5MODAyMTFfUE1TUl9BVFRSX1JBTkRPTUlaRV9NQUNfQUREUikpXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yNjg2LVxcdFxcdHJldHVybiAtRU5PQlVGUztcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTI2ODctXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYzoyNjg4OlxcdGNhcHMgPSBubGFfbmVzdF9zdGFydF9ub2ZsYWcobXNnLCBOTDgwMjExX1BNU1JfQVRUUl9UWVBFX0NBUEEpO1xcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjY4OS1cXHRpZiAoIWNhcHMpXFxuLS1cXG5uZXQvd2lyZWxlc3MvcG1zci5jPTEwPXN0YXRpYyBpbnQgcG1zcl9wYXJzZV9mdG0oc3RydWN0IGNmZzgwMjExX3JlZ2lzdGVyZWRfZGV2aWNlICpyZGV2LFxcbi0tXFxubmV0L3dpcmVsZXNzL3Btc3IuYy0xNS1cXHRjb25zdCBzdHJ1Y3QgY2ZnODAyMTFfcG1zcl9jYXBhYmlsaXRpZXMgKmNhcGEgPSByZGV2LVxcdTAwM2V3aXBoeS5wbXNyX2NhcGE7XFxubmV0L3dpcmVsZXNzL3Btc3IuYzoxNjpcXHRzdHJ1Y3QgbmxhdHRyICp0YltOTDgwMjExX1BNU1JfRlRNX1JFUV9BVFRSX01BWCArIDFdO1xcbm5ldC93aXJlbGVzcy9wbXNyLmMtMTctXFx0dTMyIHByZWFtYmxlID0gTkw4MDIxMV9QUkVBTUJMRV9ETUc7IC8qIG9ubHkgb3B0aW9uYWwgaW4gRE1HICovXFxuLS1cXG5uZXQvd2lyZWxlc3MvcG1zci5jLTE5LVxcdC8qIHZhbGlkYXRlIGV4aXN0aW5nIGRhdGEgKi9cXG5uZXQvd2lyZWxlc3MvcG1zci5jOjIwOlxcdGlmIChvdXQtXFx1MDAzZWZ0bS5yZXF1ZXN0X3R5cGUgPT0gTkw4MDIxMV9QTVNSX0ZUTV9SRVFfVFlQRV9JTkZSQSBcXHUwMDI2XFx1MDAyNlxcbm5ldC93aXJlbGVzcy9wbXNyLmMtMjEtXFx0ICAgICEoY2FwYS1cXHUwMDNlZnRtLmJhbmR3aWR0aHMgXFx1MDAyNiBCSVQob3V0LVxcdTAwM2VjaGFuZGVmLndpZHRoKSkpIHtcXG4tLVxcbm5ldC93aXJlbGVzcy9wbXNyLmMtMjUtXFxubmV0L3dpcmVsZXNzL3Btc3IuYzoyNjpcXHRpZiAob3V0LVxcdTAwM2VmdG0ucmVxdWVzdF90eXBlID09IE5MODAyMTFfUE1TUl9GVE1fUkVRX1RZUEVfUEQgXFx1MDAyNlxcdTAwMjZcXG5uZXQvd2lyZWxlc3MvcG1zci5jLTI3LVxcdCAgICAhKGNhcGEtXFx1MDAzZWZ0bS5wZF9iYW5kd2lkdGhzIFxcdTAwMjYgQklUKG91dC1cXHUwMDNlY2hhbmRlZi53aWR0aCkpKSB7XFxuLS1cXG5uZXQvd2lyZWxlc3MvcG1zci5jLTMzLVxcdC8qIG5vIHZhbGlkYXRpb24gbmVlZGVkIC0gd2FzIGFscmVhZHkgZG9uZSB2aWEgbmVzdGVkIHBvbGljeSAqL1xcbm5ldC93aXJlbGVzcy9wbXNyLmM6MzQ6XFx0bmxhX3BhcnNlX25lc3RlZF9kZXByZWNhdGVkKHRiLCBOTDgwMjExX1BNU1JfRlRNX1JFUV9BVFRSX01BWCwgZnRtcmVxLFxcbm5ldC93aXJlbGVzcy9wbXNyLmMtMzUtXFx0XFx0XFx0XFx0ICAgIE5VTEwsIE5VTEwpO1xcbm5ldC93aXJlbGVzcy9wbXNyLmMtMzYtXFxubmV0L3dpcmVsZXNzL3Btc3IuYzozNzpcXHRpZiAodGJbTkw4MDIxMV9QTVNSX0ZUTV9SRVFfQVRUUl9QUkVBTUJMRV0pXFxubmV0L3dpcmVsZXNzL3Btc3IuYzozODpcXHRcXHRwcmVhbWJsZSA9IG5sYV9nZXRfdTMyKHRiW05MODAyMTFfUE1TUl9GVE1fUkVRX0FUVFJfUFJFQU1CTEVdKTtcXG5uZXQvd2lyZWxlc3MvcG1zci5jLTM5LVxcbi0tXFxubmV0L3dpcmVsZXNzL3Btc3IuYy00Ny1cXHRkZWZhdWx0Olxcbm5ldC93aXJlbGVzcy9wbXNyLmM6NDg6XFx0XFx0aWYgKCF0YltOTDgwMjExX1BNU1JfRlRNX1JFUV9BVFRSX1BSRUFNQkxFXSkge1xcbm5ldC93aXJlbGVzcy9wbXNyLmMtNDktXFx0XFx0XFx0TkxfU0VUX0VSUl9NU0coaW5mby1cXHUwMDNlZXh0YWNrLFxcbi0tXFxubmV0L3dpcmVsZXNzL3Btc3IuYy01NC1cXG5uZXQvd2lyZWxlc3MvcG1zci5jOjU1OlxcdGlmIChvdXQtXFx1MDAzZWZ0bS5yZXF1ZXN0X3R5cGUgPT0gTkw4MDIxMV9QTVNSX0ZUTV9SRVFfVFlQRV9JTkZSQSBcXHUwMDI2XFx1MDAyNlxcbm5ldC93aXJlbGVzcy9wbXNyLmMtNTYtXFx0ICAgICEoY2FwYS1cXHUwMDNlZnRtLnByZWFtYmxlcyBcXHUwMDI2IEJJVChwcmVhbWJsZSkpKSB7XFxubmV0L3dpcmVsZXNzL3Btc3IuYy01Ny1cXHRcXHROTF9TRVRfRVJSX01TR19BVFRSKGluZm8tXFx1MDAzZWV4dGFjayxcXG5uZXQvd2lyZWxlc3MvcG1zci5jOjU4OlxcdFxcdFxcdFxcdCAgICB0YltOTDgwMjExX1BNU1JfRlRNX1JFUV9BVFRSX1BSRUFNQkxFXSxcXG5uZXQvd2lyZWxlc3MvcG1zci5jLTU5LVxcdFxcdFxcdFxcdCAgICBcXFwiRlRNOiBpbnZhbGlkIHByZWFtYmxlXFxcIik7XFxuLS1cXG5uZXQvd2lyZWxlc3MvcG1zci5jLTYyLVxcbm5ldC93aXJlbGVzcy9wbXNyLmM6NjM6XFx0aWYgKG91dC1cXHUwMDNlZnRtLnJlcXVlc3RfdHlwZSA9PSBOTDgwMjExX1BNU1JfRlRNX1JFUV9UWVBFX1BEIFxcdTAwMjZcXHUwMDI2XFxubmV0L3dpcmVsZXNzL3Btc3IuYy02NC1cXHQgICAgIShjYXBhLVxcdTAwM2VmdG0ucGRfcHJlYW1ibGVzIFxcdTAwMjYgQklUKHByZWFtYmxlKSkpIHtcXG5uZXQvd2lyZWxlc3MvcG1zci5jLTY1LVxcdFxcdE5MX1NFVF9FUlJfTVNHX0FUVFIoaW5mby1cXHUwMDNlZXh0YWNrLFxcbm5ldC93aXJlbGVzcy9wbXNyLmM6NjY6XFx0XFx0XFx0XFx0ICAgIHRiW05MODAyMTFfUE1TUl9GVE1fUkVRX0FUVFJfUFJFQU1CTEVdLFxcbm5ldC93aXJlbGVzcy9wbXNyLmMtNjctXFx0XFx0XFx0XFx0ICAgIFxcXCJGVE06IGludmFsaWQgcHJlYW1ibGUgZm9yIFBEIHJlcXVlc3RcXFwiKTtcXG4tLVxcbm5ldC93aXJlbGVzcy9wbXNyLmMtNzMtXFx0b3V0LVxcdTAwM2VmdG0uYnVyc3RfcGVyaW9kID0gMDtcXG5uZXQvd2lyZWxlc3MvcG1zci5jOjc0OlxcdGlmICh0YltOTDgwMjExX1BNU1JfRlRNX1JFUV9BVFRSX0JVUlNUX1BFUklPRF0pXFxubmV0L3dpcmVsZXNzL3Btc3IuYy03NS1cXHRcXHRvdXQtXFx1MDAzZWZ0bS5idXJzdF9wZXJpb2QgPVxcbm5ldC93aXJlbGVzcy9wbXNyLmM6NzY6XFx0XFx0XFx0bmxhX2dldF91MTYodGJbTkw4MDIxMV9QTVNSX0ZUTV9SRVFfQVRUUl9CVVJTVF9QRVJJT0RdKTtcXG5uZXQvd2lyZWxlc3MvcG1zci5jLTc3LVxcbm5ldC93aXJlbGVzcy9wbXNyLmM6Nzg6XFx0b3V0LVxcdTAwM2VmdG0uYXNhcCA9ICEhdGJbTkw4MDIxMV9QTVNSX0ZUTV9SRVFfQVRUUl9BU0FQXTtcXG5uZXQvd2lyZWxlc3MvcG1zci5jLTc5LVxcdGlmIChvdXQtXFx1MDAzZWZ0bS5hc2FwIFxcdTAwMjZcXHUwMDI2ICFjYXBhLVxcdTAwM2VmdG0uYXNhcCkge1xcbm5ldC93aXJlbGVzcy9wbXNyLmMtODAtXFx0XFx0TkxfU0VUX0VSUl9NU0dfQVRUUihpbmZvLVxcdTAwM2VleHRhY2ssXFxubmV0L3dpcmVsZXNzL3Btc3IuYzo4MTpcXHRcXHRcXHRcXHQgICAgdGJbTkw4MDIxMV9QTVNSX0ZUTV9SRVFfQVRUUl9BU0FQXSxcXG5uZXQvd2lyZWxlc3MvcG1zci5jLTgyLVxcdFxcdFxcdFxcdCAgICBcXFwiRlRNOiBBU0FQIG1vZGUgbm90IHN1cHBvcnRlZFxcXCIpO1xcbi0tXFxubmV0L3dpcmVsZXNzL3Btc3IuYy05Mi1cXHRvdXQtXFx1MDAzZWZ0bS5udW1fYnVyc3RzX2V4cCA9IDA7XFxubmV0L3dpcmVsZXNzL3Btc3IuYzo5MzpcXHRpZiAodGJbTkw4MDIxMV9QTVNSX0ZUTV9SRVFfQVRUUl9OVU1fQlVSU1RTX0VYUF0pXFxubmV0L3dpcmVsZXNzL3Btc3IuYy05NC1cXHRcXHRvdXQtXFx1MDAzZWZ0bS5udW1fYnVyc3RzX2V4cCA9XFxubmV0L3dpcmVsZXNzL3Btc3IuYzo5NTpcXHRcXHRcXHRubGFfZ2V0X3U4KHRiW05MODAyMTFfUE1TUl9GVE1fUkVRX0FUVFJfTlVNX0JVUlNUU19FWFBdKTtcXG5uZXQvd2lyZWxlc3MvcG1zci5jLTk2LVxcbi0tXFxubmV0L3dpcmVsZXNzL3Btc3IuYy05OS1cXHRcXHROTF9TRVRfRVJSX01TR19BVFRSKGluZm8tXFx1MDAzZWV4dGFjayxcXG5uZXQvd2lyZWxlc3MvcG1zci5jOjEwMDpcXHRcXHRcXHRcXHQgICAgdGJbTkw4MDIxMV9QTVNSX0ZUTV9SRVFfQVRUUl9OVU1fQlVSU1RTX0VYUF0sXFxubmV0L3dpcmVsZXNzL3Btc3IuYy0xMDEtXFx0XFx0XFx0XFx0ICAgIFxcXCJGVE06IG1heCBOVU1fQlVSU1RTX0VYUCBtdXN0IGJlIHNldCBsb3dlciB0aGFuIHRoZSBkZXZpY2UgbGltaXRcXFwiKTtcXG4tLVxcbm5ldC93aXJlbGVzcy9wbXNyLmMtMTA1LVxcdG91dC1cXHUwMDNlZnRtLmZ0bXNfcGVyX2J1cnN0ID0gMDtcXG5uZXQvd2lyZWxlc3MvcG1zci5jOjEwNjpcXHRpZiAodGJbTkw4MDIxMV9QTVNSX0ZUTV9SRVFfQVRUUl9GVE1TX1BFUl9CVVJTVF0pXFxubmV0L3dpcmVsZXNzL3Btc3IuYy0xMDctXFx0XFx0b3V0LVxcdTAwM2VmdG0uZnRtc19wZXJfYnVyc3QgPVxcbm5ldC93aXJlbGVzcy9wbXNyLmM6MTA4OlxcdFxcdFxcdG5sYV9nZXRfdTgodGJbTkw4MDIxMV9QTVNSX0ZUTV9SRVFfQVRUUl9GVE1TX1BFUl9CVVJTVF0pO1xcbm5ldC93aXJlbGVzcy9wbXNyLmMtMTA5LVxcbi0tXFxubmV0L3dpcmVsZXNzL3Btc3IuYy0xMTItXFx0XFx0TkxfU0VUX0VSUl9NU0dfQVRUUihpbmZvLVxcdTAwM2VleHRhY2ssXFxubmV0L3dpcmVsZXNzL3Btc3IuYzoxMTM6XFx0XFx0XFx0XFx0ICAgIHRiW05MODAyMTFfUE1TUl9GVE1fUkVRX0FUVFJfRlRNU19QRVJfQlVSU1RdLFxcbm5ldC93aXJlbGVzcy9wbXNyLmMtMTE0LVxcdFxcdFxcdFxcdCAgICBcXFwiRlRNOiBGVE1zIHBlciBidXJzdCBtdXN0IGJlIHNldCBsb3dlciB0aGFuIHRoZSBkZXZpY2UgbGltaXRcXFwiKTtcXG4tLVxcbm5ldC93aXJlbGVzcy9wbXNyLmMtMTE4LVxcdG91dC1cXHUwMDNlZnRtLmZ0bXJfcmV0cmllcyA9IDM7XFxubmV0L3dpcmVsZXNzL3Btc3IuYzoxMTk6XFx0aWYgKHRiW05MODAyMTFfUE1TUl9GVE1fUkVRX0FUVFJfTlVNX0ZUTVJfUkVUUklFU10pXFxubmV0L3dpcmVsZXNzL3Btc3IuYy0xMjAtXFx0XFx0b3V0LVxcdTAwM2VmdG0uZnRtcl9yZXRyaWVzID1cXG5uZXQvd2lyZWxlc3MvcG1zci5jOjEyMTpcXHRcXHRcXHRubGFfZ2V0X3U4KHRiW05MODAyMTFfUE1TUl9GVE1fUkVRX0FUVFJfTlVNX0ZUTVJfUkVUUklFU10pO1xcbm5ldC93aXJlbGVzcy9wbXNyLmMtMTIyLVxcbm5ldC93aXJlbGVzcy9wbXNyLmM6MTIzOlxcdG91dC1cXHUwMDNlZnRtLnJlcXVlc3RfbGNpID0gISF0YltOTDgwMjExX1BNU1JfRlRNX1JFUV9BVFRSX1JFUVVFU1RfTENJXTtcXG5uZXQvd2lyZWxlc3MvcG1zci5jLTEyNC1cXHRpZiAob3V0LVxcdTAwM2VmdG0ucmVxdWVzdF9sY2kgXFx1MDAyNlxcdTAwMjYgIWNhcGEtXFx1MDAzZWZ0bS5yZXF1ZXN0X2xjaSkge1xcbm5ldC93aXJlbGVzcy9wbXNyLmMtMTI1LVxcdFxcdE5MX1NFVF9FUlJfTVNHX0FUVFIoaW5mby1cXHUwMDNlZXh0YWNrLFxcbm5ldC93aXJlbGVzcy9wbXNyLmM6MTI2OlxcdFxcdFxcdFxcdCAgICB0YltOTDgwMjExX1BNU1JfRlRNX1JFUV9BVFRSX1JFUVVFU1RfTENJXSxcXG5uZXQvd2lyZWxlc3MvcG1zci5jLTEyNy1cXHRcXHRcXHRcXHQgICAgXFxcIkZUTTogTENJIHJlcXVlc3Qgbm90IHN1cHBvcnRlZFxcXCIpO1xcbi0tXFxubmV0L3dpcmVsZXNzL3Btc3IuYy0xMzAtXFx0b3V0LVxcdTAwM2VmdG0ucmVxdWVzdF9jaXZpY2xvYyA9XFxubmV0L3dpcmVsZXNzL3Btc3IuYzoxMzE6XFx0XFx0ISF0YltOTDgwMjExX1BNU1JfRlRNX1JFUV9BVFRSX1JFUVVFU1RfQ0lWSUNMT0NdO1xcbm5ldC93aXJlbGVzcy9wbXNyLmMtMTMyLVxcdGlmIChvdXQtXFx1MDAzZWZ0bS5yZXF1ZXN0X2NpdmljbG9jIFxcdTAwMjZcXHUwMDI2ICFjYXBhLVxcdTAwM2VmdG0ucmVxdWVzdF9jaXZpY2xvYykge1xcbm5ldC93aXJlbGVzcy9wbXNyLmMtMTMzLVxcdFxcdE5MX1NFVF9FUlJfTVNHX0FUVFIoaW5mby1cXHUwMDNlZXh0YWNrLFxcbm5ldC93aXJlbGVzcy9wbXNyLmM6MTM0OlxcdFxcdFxcdFxcdCAgICB0YltOTDgwMjExX1BNU1JfRlRNX1JFUV9BVFRSX1JFUVVFU1RfQ0lWSUNMT0NdLFxcbm5ldC93aXJlbGVzcy9wbXNyLmMtMTM1LVxcdFxcdFxcdCAgICBcXFwiRlRNOiBjaXZpYyBsb2NhdGlvbiByZXF1ZXN0IG5vdCBzdXBwb3J0ZWRcXFwiKTtcXG4tLVxcbm5ldC93aXJlbGVzcy9wbXNyLmMtMTM4LVxcdG91dC1cXHUwMDNlZnRtLnRyaWdnZXJfYmFzZWQgPVxcbm5ldC93aXJlbGVzcy9wbXNyLmM6MTM5OlxcdFxcdCEhdGJbTkw4MDIxMV9QTVNSX0ZUTV9SRVFfQVRUUl9UUklHR0VSX0JBU0VEXTtcXG5uZXQvd2lyZWxlc3MvcG1zci5jLTE0MC1cXHRpZiAob3V0LVxcdTAwM2VmdG0udHJpZ2dlcl9iYXNlZCBcXHUwMDI2XFx1MDAyNiAhY2FwYS1cXHUwMDNlZnRtLnRyaWdnZXJfYmFzZWQpIHtcXG5uZXQvd2lyZWxlc3MvcG1zci5jLTE0MS1cXHRcXHROTF9TRVRfRVJSX01TR19BVFRSKGluZm8tXFx1MDAzZWV4dGFjayxcXG5uZXQvd2lyZWxlc3MvcG1zci5jOjE0MjpcXHRcXHRcXHRcXHQgICAgdGJbTkw4MDIxMV9QTVNSX0ZUTV9SRVFfQVRUUl9UUklHR0VSX0JBU0VEXSxcXG5uZXQvd2lyZWxlc3MvcG1zci5jLTE0My1cXHRcXHRcXHRcXHQgICAgXFxcIkZUTTogdHJpZ2dlciBiYXNlZCByYW5naW5nIGlzIG5vdCBzdXBwb3J0ZWRcXFwiKTtcXG4tLVxcbm5ldC93aXJlbGVzcy9wbXNyLmMtMTQ2LVxcbm5ldC93aXJlbGVzcy9wbXNyLmM6MTQ3OlxcdGlmIChvdXQtXFx1MDAzZWZ0bS5yZXF1ZXN0X3R5cGUgPT0gTkw4MDIxMV9QTVNSX0ZUTV9SRVFfVFlQRV9QRCBcXHUwMDI2XFx1MDAyNlxcbm5ldC93aXJlbGVzcy9wbXNyLmMtMTQ4LVxcdCAgICBvdXQtXFx1MDAzZWZ0bS50cmlnZ2VyX2Jhc2VkKSB7XFxuLS1cXG5uZXQvd2lyZWxlc3MvcG1zci5jLTE1NS1cXHRvdXQtXFx1MDAzZWZ0bS5ub25fdHJpZ2dlcl9iYXNlZCA9XFxubmV0L3dpcmVsZXNzL3Btc3IuYzoxNTY6XFx0XFx0ISF0YltOTDgwMjExX1BNU1JfRlRNX1JFUV9BVFRSX05PTl9UUklHR0VSX0JBU0VEXTtcXG5uZXQvd2lyZWxlc3MvcG1zci5jLTE1Ny1cXHRpZiAob3V0LVxcdTAwM2VmdG0ubm9uX3RyaWdnZXJfYmFzZWQgXFx1MDAyNlxcdTAwMjYgIWNhcGEtXFx1MDAzZWZ0bS5ub25fdHJpZ2dlcl9iYXNlZCkge1xcbm5ldC93aXJlbGVzcy9wbXNyLmMtMTU4LVxcdFxcdE5MX1NFVF9FUlJfTVNHX0FUVFIoaW5mby1cXHUwMDNlZXh0YWNrLFxcbm5ldC93aXJlbGVzcy9wbXNyLmM6MTU5OlxcdFxcdFxcdFxcdCAgICB0YltOTDgwMjExX1BNU1JfRlRNX1JFUV9BVFRSX05PTl9UUklHR0VSX0JBU0VEXSxcXG5uZXQvd2lyZWxlc3MvcG1zci5jLTE2MC1cXHRcXHRcXHRcXHQgICAgXFxcIkZUTTogdHJpZ2dlciBiYXNlZCByYW5naW5nIGlzIG5vdCBzdXBwb3J0ZWRcXFwiKTtcXG4tLVxcbm5ldC93aXJlbGVzcy9wbXNyLmMtMTY5LVxcbm5ldC93aXJlbGVzcy9wbXNyLmM6MTcwOlxcdGlmIChvdXQtXFx1MDAzZWZ0bS5yZXF1ZXN0X3R5cGUgPT0gTkw4MDIxMV9QTVNSX0ZUTV9SRVFfVFlQRV9QRCBcXHUwMDI2XFx1MDAyNlxcbm5ldC93aXJlbGVzcy9wbXNyLmMtMTcxLVxcdCAgICBvdXQtXFx1MDAzZWZ0bS5ub25fdHJpZ2dlcl9iYXNlZCBcXHUwMDI2XFx1MDAyNiBvdXQtXFx1MDAzZWZ0bS5mdG1zX3Blcl9idXJzdCBcXHUwMDNlIDQpIHtcXG5uZXQvd2lyZWxlc3MvcG1zci5jLTE3Mi1cXHRcXHROTF9TRVRfRVJSX01TR19BVFRSKGluZm8tXFx1MDAzZWV4dGFjayxcXG5uZXQvd2lyZWxlc3MvcG1zci5jOjE3MzpcXHRcXHRcXHRcXHQgICAgdGJbTkw4MDIxMV9QTVNSX0ZUTV9SRVFfQVRUUl9GVE1TX1BFUl9CVVJTVF0sXFxubmV0L3dpcmVsZXNzL3Btc3IuYy0xNzQtXFx0XFx0XFx0XFx0ICAgIFxcXCJGVE06IEZUTXMgcGVyIGJ1cnN0IG11c3Qgbm90IGV4Y2VlZCA0IGZvciBQRCBOVEIgcmFuZ2luZ1xcXCIpO1xcbi0tXFxubmV0L3dpcmVsZXNzL3Btc3IuYy0xODAtXFx0XFx0TkxfU0VUX0VSUl9NU0dfQVRUUihpbmZvLVxcdTAwM2VleHRhY2ssXFxubmV0L3dpcmVsZXNzL3Btc3IuYzoxODE6XFx0XFx0XFx0XFx0ICAgIHRiW05MODAyMTFfUE1TUl9GVE1fUkVRX0FUVFJfRlRNU19QRVJfQlVSU1RdLFxcbm5ldC93aXJlbGVzcy9wbXNyLmMtMTgyLVxcdFxcdFxcdFxcdCAgICBcXFwiRlRNOiBGVE1zIHBlciBidXJzdCBtdXN0IGJlIHNldCBsb3dlciB0aGFuIDMxXFxcIik7XFxuLS1cXG5uZXQvd2lyZWxlc3MvcG1zci5jLTE4OC1cXHRcXHROTF9TRVRfRVJSX01TR19BVFRSKGluZm8tXFx1MDAzZWV4dGFjayxcXG5uZXQvd2lyZWxlc3MvcG1zci5jOjE4OTpcXHRcXHRcXHRcXHQgICAgdGJbTkw4MDIxMV9QTVNSX0ZUTV9SRVFfQVRUUl9QUkVBTUJMRV0sXFxubmV0L3dpcmVsZXNzL3Btc3IuYy0xOTAtXFx0XFx0XFx0XFx0ICAgIFxcXCJGVE06IG5vbiBFRENBIGJhc2VkIHJhbmdpbmcgbXVzdCB1c2UgSEUgcHJlYW1ibGVcXFwiKTtcXG4tLVxcbm5ldC93aXJlbGVzcy9wbXNyLmMtMTkzLVxcbm5ldC93aXJlbGVzcy9wbXNyLmM6MTk0OlxcdGlmICh0YltOTDgwMjExX1BNU1JfRlRNX1JFUV9BVFRSX0JVUlNUX0RVUkFUSU9OXSlcXG5uZXQvd2lyZWxlc3MvcG1zci5jLTE5NS1cXHRcXHRvdXQtXFx1MDAzZWZ0bS5idXJzdF9kdXJhdGlvbiA9XFxubmV0L3dpcmVsZXNzL3Btc3IuYzoxOTY6XFx0XFx0XFx0bmxhX2dldF91OCh0YltOTDgwMjExX1BNU1JfRlRNX1JFUV9BVFRSX0JVUlNUX0RVUkFUSU9OXSk7XFxubmV0L3dpcmVsZXNzL3Btc3IuYy0xOTctXFx0ZWxzZSBpZiAoIW91dC1cXHUwMDNlZnRtLm5vbl90cmlnZ2VyX2Jhc2VkIFxcdTAwMjZcXHUwMDI2ICFvdXQtXFx1MDAzZWZ0bS50cmlnZ2VyX2Jhc2VkKVxcbi0tXFxubmV0L3dpcmVsZXNzL3Btc3IuYy0yMDAtXFx0b3V0LVxcdTAwM2VmdG0ubG1yX2ZlZWRiYWNrID1cXG5uZXQvd2lyZWxlc3MvcG1zci5jOjIwMTpcXHRcXHQhIXRiW05MODAyMTFfUE1TUl9GVE1fUkVRX0FUVFJfTE1SX0ZFRURCQUNLXTtcXG5uZXQvd2lyZWxlc3MvcG1zci5jLTIwMi1cXHRpZiAoIW91dC1cXHUwMDNlZnRtLnRyaWdnZXJfYmFzZWQgXFx1MDAyNlxcdTAwMjYgIW91dC1cXHUwMDNlZnRtLm5vbl90cmlnZ2VyX2Jhc2VkIFxcdTAwMjZcXHUwMDI2XFxuLS1cXG5uZXQvd2lyZWxlc3MvcG1zci5jLTIwNC1cXHRcXHROTF9TRVRfRVJSX01TR19BVFRSKGluZm8tXFx1MDAzZWV4dGFjayxcXG5uZXQvd2lyZWxlc3MvcG1zci5jOjIwNTpcXHRcXHRcXHRcXHQgICAgdGJbTkw4MDIxMV9QTVNSX0ZUTV9SRVFfQVRUUl9MTVJfRkVFREJBQ0tdLFxcbm5ldC93aXJlbGVzcy9wbXNyLmMtMjA2LVxcdFxcdFxcdFxcdCAgICBcXFwiRlRNOiBMTVIgZmVlZGJhY2sgc2V0IGZvciBFRENBIGJhc2VkIHJhbmdpbmdcXFwiKTtcXG4tLVxcbm5ldC93aXJlbGVzcy9wbXNyLmMtMjA5LVxcbm5ldC93aXJlbGVzcy9wbXNyLmM6MjEwOlxcdGlmICh0YltOTDgwMjExX1BNU1JfRlRNX1JFUV9BVFRSX0JTU19DT0xPUl0pIHtcXG5uZXQvd2lyZWxlc3MvcG1zci5jLTIxMS1cXHRcXHRpZiAoIW91dC1cXHUwMDNlZnRtLm5vbl90cmlnZ2VyX2Jhc2VkIFxcdTAwMjZcXHUwMDI2ICFvdXQtXFx1MDAzZWZ0bS50cmlnZ2VyX2Jhc2VkKSB7XFxubmV0L3dpcmVsZXNzL3Btc3IuYy0yMTItXFx0XFx0XFx0TkxfU0VUX0VSUl9NU0dfQVRUUihpbmZvLVxcdTAwM2VleHRhY2ssXFxubmV0L3dpcmVsZXNzL3Btc3IuYzoyMTM6XFx0XFx0XFx0XFx0XFx0ICAgIHRiW05MODAyMTFfUE1TUl9GVE1fUkVRX0FUVFJfQlNTX0NPTE9SXSxcXG5uZXQvd2lyZWxlc3MvcG1zci5jLTIxNC1cXHRcXHRcXHRcXHRcXHQgICAgXFxcIkZUTTogQlNTIGNvbG9yIHNldCBmb3IgRURDQSBiYXNlZCByYW5naW5nXFxcIik7XFxuLS1cXG5uZXQvd2lyZWxlc3MvcG1zci5jLTIxOC1cXHRcXHRvdXQtXFx1MDAzZWZ0bS5ic3NfY29sb3IgPVxcbm5ldC93aXJlbGVzcy9wbXNyLmM6MjE5OlxcdFxcdFxcdG5sYV9nZXRfdTgodGJbTkw4MDIxMV9QTVNSX0ZUTV9SRVFfQVRUUl9CU1NfQ09MT1JdKTtcXG5uZXQvd2lyZWxlc3MvcG1zci5jLTIyMC1cXHR9XFxubmV0L3dpcmVsZXNzL3Btc3IuYy0yMjEtXFxubmV0L3dpcmVsZXNzL3Btc3IuYzoyMjI6XFx0b3V0LVxcdTAwM2VmdG0ucnN0YSA9ICEhdGJbTkw4MDIxMV9QTVNSX0ZUTV9SRVFfQVRUUl9SU1RBXTtcXG5uZXQvd2lyZWxlc3MvcG1zci5jLTIyMy1cXHRpZiAob3V0LVxcdTAwM2VmdG0ucnN0YSBcXHUwMDI2XFx1MDAyNiBvdXQtXFx1MDAzZWZ0bS5ub25fdHJpZ2dlcl9iYXNlZCBcXHUwMDI2XFx1MDAyNlxcbi0tXFxubmV0L3dpcmVsZXNzL3Btc3IuYy0yMjUtXFx0XFx0TkxfU0VUX0VSUl9NU0dfQVRUUihpbmZvLVxcdTAwM2VleHRhY2ssXFxubmV0L3dpcmVsZXNzL3Btc3IuYzoyMjY6XFx0XFx0XFx0XFx0ICAgIHRiW05MODAyMTFfUE1TUl9GVE1fUkVRX0FUVFJfUlNUQV0sXFxubmV0L3dpcmVsZXNzL3Btc3IuYy0yMjctXFx0XFx0XFx0XFx0ICAgIFxcXCJGVE06IE5UQiBSU1RBIG5vdCBzdXBwb3J0ZWQgYnkgZGV2aWNlXFxcIik7XFxuLS1cXG5uZXQvd2lyZWxlc3MvcG1zci5jLTIzMy1cXHRcXHROTF9TRVRfRVJSX01TR19BVFRSKGluZm8tXFx1MDAzZWV4dGFjayxcXG5uZXQvd2lyZWxlc3MvcG1zci5jOjIzNDpcXHRcXHRcXHRcXHQgICAgdGJbTkw4MDIxMV9QTVNSX0ZUTV9SRVFfQVRUUl9SU1RBXSxcXG5uZXQvd2lyZWxlc3MvcG1zci5jLTIzNS1cXHRcXHRcXHRcXHQgICAgXFxcIkZUTTogVEIgUlNUQSBub3Qgc3VwcG9ydGVkIGJ5IGRldmljZVxcXCIpO1xcbi0tXFxubmV0L3dpcmVsZXNzL3Btc3IuYy0yNDItXFx0XFx0TkxfU0VUX0VSUl9NU0dfQVRUUihpbmZvLVxcdTAwM2VleHRhY2ssXFxubmV0L3dpcmVsZXNzL3Btc3IuYzoyNDM6XFx0XFx0XFx0XFx0ICAgIHRiW05MODAyMTFfUE1TUl9GVE1fUkVRX0FUVFJfUlNUQV0sXFxubmV0L3dpcmVsZXNzL3Btc3IuYy0yNDQtXFx0XFx0XFx0XFx0ICAgIFxcXCJGVE06IEVEQ0EgUlNUQSBub3Qgc3VwcG9ydGVkIGJ5IGRldmljZVxcXCIpO1xcbi0tXFxubmV0L3dpcmVsZXNzL3Btc3IuYy0yNTEtXFx0XFx0TkxfU0VUX0VSUl9NU0dfQVRUUihpbmZvLVxcdTAwM2VleHRhY2ssXFxubmV0L3dpcmVsZXNzL3Btc3IuYzoyNTI6XFx0XFx0XFx0XFx0ICAgIHRiW05MODAyMTFfUE1TUl9GVE1fUkVRX0FUVFJfUlNUQV0sXFxubmV0L3dpcmVsZXNzL3Btc3IuYy0yNTMtXFx0XFx0XFx0XFx0ICAgIFxcXCJGVE06IFJTVEEgc2V0IHdpdGhvdXQgTE1SIGZlZWRiYWNrXFxcIik7XFxuLS1cXG5uZXQvd2lyZWxlc3MvcG1zci5jLTI1Ny1cXHRpZiAob3V0LVxcdTAwM2VmdG0ubm9uX3RyaWdnZXJfYmFzZWQpIHtcXG5uZXQvd2lyZWxlc3MvcG1zci5jOjI1ODpcXHRcXHRpZiAob3V0LVxcdTAwM2VmdG0ucmVxdWVzdF90eXBlID09IE5MODAyMTFfUE1TUl9GVE1fUkVRX1RZUEVfUEQgXFx1MDAyNlxcdTAwMjZcXG5uZXQvd2lyZWxlc3MvcG1zci5jOjI1OTpcXHRcXHQgICAgIXRiW05MODAyMTFfUE1TUl9GVE1fUkVRX0FUVFJfTk9NSU5BTF9USU1FXSkge1xcbm5ldC93aXJlbGVzcy9wbXNyLmMtMjYwLVxcdFxcdFxcdE5MX1NFVF9FUlJfTVNHKGluZm8tXFx1MDAzZWV4dGFjayxcXG4tLVxcbm5ldC93aXJlbGVzcy9wbXNyLmMtMjY0LVxcdFxcdG91dC1cXHUwMDNlZnRtLm5vbWluYWxfdGltZSA9XFxubmV0L3dpcmVsZXNzL3Btc3IuYzoyNjU6XFx0XFx0XFx0bmxhX2dldF91MzIodGJbTkw4MDIxMV9QTVNSX0ZUTV9SRVFfQVRUUl9OT01JTkFMX1RJTUVdKTtcXG5uZXQvd2lyZWxlc3MvcG1zci5jLTI2Ni1cXG5uZXQvd2lyZWxlc3MvcG1zci5jOjI2NzpcXHRcXHRpZiAodGJbTkw4MDIxMV9QTVNSX0ZUTV9SRVFfQVRUUl9NSU5fVElNRV9CRVRXRUVOX01FQVNVUkVNRU5UU10pXFxubmV0L3dpcmVsZXNzL3Btc3IuYy0yNjgtXFx0XFx0XFx0b3V0LVxcdTAwM2VmdG0ubWluX3RpbWVfYmV0d2Vlbl9tZWFzdXJlbWVudHMgPVxcbm5ldC93aXJlbGVzcy9wbXNyLmM6MjY5OlxcdFxcdFxcdG5sYV9nZXRfdTMyKHRiW05MODAyMTFfUE1TUl9GVE1fUkVRX0FUVFJfTUlOX1RJTUVfQkVUV0VFTl9NRUFTVVJFTUVOVFNdKTtcXG5uZXQvd2lyZWxlc3MvcG1zci5jLTI3MC1cXG5uZXQvd2lyZWxlc3MvcG1zci5jOjI3MTpcXHRcXHRpZiAodGJbTkw4MDIxMV9QTVNSX0ZUTV9SRVFfQVRUUl9NQVhfVElNRV9CRVRXRUVOX01FQVNVUkVNRU5UU10pXFxubmV0L3dpcmVsZXNzL3Btc3IuYy0yNzItXFx0XFx0XFx0b3V0LVxcdTAwM2VmdG0ubWF4X3RpbWVfYmV0d2Vlbl9tZWFzdXJlbWVudHMgPVxcbm5ldC93aXJlbGVzcy9wbXNyLmM6MjczOlxcdFxcdFxcdG5sYV9nZXRfdTMyKHRiW05MODAyMTFfUE1TUl9GVE1fUkVRX0FUVFJfTUFYX1RJTUVfQkVUV0VFTl9NRUFTVVJFTUVOVFNdKTtcXG5uZXQvd2lyZWxlc3MvcG1zci5jLTI3NC1cXG5uZXQvd2lyZWxlc3MvcG1zci5jOjI3NTpcXHRcXHRpZiAodGJbTkw4MDIxMV9QTVNSX0ZUTV9SRVFfQVRUUl9BV19EVVJBVElPTl0pXFxubmV0L3dpcmVsZXNzL3Btc3IuYy0yNzYtXFx0XFx0XFx0b3V0LVxcdTAwM2VmdG0uYXZhaWxhYmlsaXR5X3dpbmRvdyA9XFxubmV0L3dpcmVsZXNzL3Btc3IuYzoyNzc6XFx0XFx0XFx0XFx0bmxhX2dldF91OCh0YltOTDgwMjExX1BNU1JfRlRNX1JFUV9BVFRSX0FXX0RVUkFUSU9OXSk7XFxubmV0L3dpcmVsZXNzL3Btc3IuYy0yNzgtXFxubmV0L3dpcmVsZXNzL3Btc3IuYzoyNzk6XFx0XFx0aWYgKHRiW05MODAyMTFfUE1TUl9GVE1fUkVRX0FUVFJfTlVNX01FQVNVUkVNRU5UU10pXFxubmV0L3dpcmVsZXNzL3Btc3IuYy0yODAtXFx0XFx0XFx0b3V0LVxcdTAwM2VmdG0ubnVtX21lYXN1cmVtZW50cyA9XFxubmV0L3dpcmVsZXNzL3Btc3IuYzoyODE6XFx0XFx0XFx0XFx0bmxhX2dldF91MzIodGJbTkw4MDIxMV9QTVNSX0ZUTV9SRVFfQVRUUl9OVU1fTUVBU1VSRU1FTlRTXSk7XFxubmV0L3dpcmVsZXNzL3Btc3IuYy0yODItXFx0fVxcbm5ldC93aXJlbGVzcy9wbXNyLmMtMjgzLVxcbm5ldC93aXJlbGVzcy9wbXNyLmM6Mjg0OlxcdGlmICh0YltOTDgwMjExX1BNU1JfRlRNX1JFUV9BVFRSX0lOR1JFU1NdKVxcbm5ldC93aXJlbGVzcy9wbXNyLmMtMjg1LVxcdFxcdG91dC1cXHUwMDNlZnRtLmluZ3Jlc3NfZGlzdGFuY2UgPVxcbm5ldC93aXJlbGVzcy9wbXNyLmM6Mjg2OlxcdFxcdFxcdG5sYV9nZXRfdTY0KHRiW05MODAyMTFfUE1TUl9GVE1fUkVRX0FUVFJfSU5HUkVTU10pO1xcbm5ldC93aXJlbGVzcy9wbXNyLmMtMjg3LVxcbm5ldC93aXJlbGVzcy9wbXNyLmM6Mjg4OlxcdGlmICh0YltOTDgwMjExX1BNU1JfRlRNX1JFUV9BVFRSX0VHUkVTU10pXFxubmV0L3dpcmVsZXNzL3Btc3IuYy0yODktXFx0XFx0b3V0LVxcdTAwM2VmdG0uZWdyZXNzX2Rpc3RhbmNlID1cXG5uZXQvd2lyZWxlc3MvcG1zci5jOjI5MDpcXHRcXHRcXHRubGFfZ2V0X3U2NCh0YltOTDgwMjExX1BNU1JfRlRNX1JFUV9BVFRSX0VHUkVTU10pO1xcbm5ldC93aXJlbGVzcy9wbXNyLmMtMjkxLVxcbm5ldC93aXJlbGVzcy9wbXNyLmMtMjkyLVxcdG91dC1cXHUwMDNlZnRtLnBkX3N1cHByZXNzX3JhbmdlX3Jlc3VsdHMgPVxcbm5ldC93aXJlbGVzcy9wbXNyLmM6MjkzOlxcdFxcdG5sYV9nZXRfZmxhZyh0YltOTDgwMjExX1BNU1JfRlRNX1JFUV9BVFRSX1BEX1NVUFBSRVNTX1JFU1VMVFNdKTtcXG5uZXQvd2lyZWxlc3MvcG1zci5jLTI5NC1cXG5uZXQvd2lyZWxlc3MvcG1zci5jOjI5NTpcXHRpZiAob3V0LVxcdTAwM2VmdG0ucmVxdWVzdF90eXBlICE9IE5MODAyMTFfUE1TUl9GVE1fUkVRX1RZUEVfUEQgXFx1MDAyNlxcdTAwMjZcXG5uZXQvd2lyZWxlc3MvcG1zci5jLTI5Ni1cXHQgICAgb3V0LVxcdTAwM2VmdG0ucGRfc3VwcHJlc3NfcmFuZ2VfcmVzdWx0cykge1xcbm5ldC93aXJlbGVzcy9wbXNyLmMtMjk3LVxcdFxcdE5MX1NFVF9FUlJfTVNHX0FUVFIoaW5mby1cXHUwMDNlZXh0YWNrLFxcbm5ldC93aXJlbGVzcy9wbXNyLmM6Mjk4OlxcdFxcdFxcdFxcdCAgICB0YltOTDgwMjExX1BNU1JfRlRNX1JFUV9BVFRSX1BEX1NVUFBSRVNTX1JFU1VMVFNdLFxcbm5ldC93aXJlbGVzcy9wbXNyLmMtMjk5LVxcdFxcdFxcdFxcdCAgICBcXFwiRlRNOiBzdXBwcmVzcyByYW5nZSByZXN1bHQgZmxhZyBvbmx5IHZhbGlkIGZvciBQRCByZXF1ZXN0c1xcXCIpO1xcbi0tXFxubmV0L3dpcmVsZXNzL3Btc3IuYz0zMDY9c3RhdGljIGludCBwbXNyX3BhcnNlX3BlZXIoc3RydWN0IGNmZzgwMjExX3JlZ2lzdGVyZWRfZGV2aWNlICpyZGV2LFxcbi0tXFxubmV0L3dpcmVsZXNzL3Btc3IuYy0zMTAte1xcbm5ldC93aXJlbGVzcy9wbXNyLmM6MzExOlxcdHN0cnVjdCBubGF0dHIgKnRiW05MODAyMTFfUE1TUl9QRUVSX0FUVFJfTUFYICsgMV07XFxubmV0L3dpcmVsZXNzL3Btc3IuYzozMTI6XFx0c3RydWN0IG5sYXR0ciAqcmVxW05MODAyMTFfUE1TUl9SRVFfQVRUUl9NQVggKyAxXTtcXG5uZXQvd2lyZWxlc3MvcG1zci5jLTMxMy1cXHRzdHJ1Y3QgbmxhdHRyICp0cmVxO1xcbi0tXFxubmV0L3dpcmVsZXNzL3Btc3IuYy0zMTYtXFx0Lyogbm8gdmFsaWRhdGlvbiBuZWVkZWQgLSB3YXMgYWxyZWFkeSBkb25lIHZpYSBuZXN0ZWQgcG9saWN5ICovXFxubmV0L3dpcmVsZXNzL3Btc3IuYzozMTc6XFx0bmxhX3BhcnNlX25lc3RlZF9kZXByZWNhdGVkKHRiLCBOTDgwMjExX1BNU1JfUEVFUl9BVFRSX01BWCwgcGVlcixcXG5uZXQvd2lyZWxlc3MvcG1zci5jLTMxOC1cXHRcXHRcXHRcXHQgICAgTlVMTCwgTlVMTCk7XFxubmV0L3dpcmVsZXNzL3Btc3IuYy0zMTktXFxubmV0L3dpcmVsZXNzL3Btc3IuYzozMjA6XFx0aWYgKCF0YltOTDgwMjExX1BNU1JfUEVFUl9BVFRSX0FERFJdIHx8XFxubmV0L3dpcmVsZXNzL3Btc3IuYzozMjE6XFx0ICAgICF0YltOTDgwMjExX1BNU1JfUEVFUl9BVFRSX0NIQU5dIHx8XFxubmV0L3dpcmVsZXNzL3Btc3IuYzozMjI6XFx0ICAgICF0YltOTDgwMjExX1BNU1JfUEVFUl9BVFRSX1JFUV0pIHtcXG5uZXQvd2lyZWxlc3MvcG1zci5jLTMyMy1cXHRcXHROTF9TRVRfRVJSX01TR19BVFRSKGluZm8tXFx1MDAzZWV4dGFjaywgcGVlcixcXG4tLVxcbm5ldC93aXJlbGVzcy9wbXNyLmMtMzI3LVxcbm5ldC93aXJlbGVzcy9wbXNyLmM6MzI4OlxcdG1lbWNweShvdXQtXFx1MDAzZWFkZHIsIG5sYV9kYXRhKHRiW05MODAyMTFfUE1TUl9QRUVSX0FUVFJfQUREUl0pLCBFVEhfQUxFTik7XFxubmV0L3dpcmVsZXNzL3Btc3IuYy0zMjktXFxubmV0L3dpcmVsZXNzL3Btc3IuYzozMzA6XFx0aWYgKHRiW05MODAyMTFfUE1TUl9QRUVSX0FUVFJfUkVRX1RZUEVdKVxcbm5ldC93aXJlbGVzcy9wbXNyLmMtMzMxLVxcdFxcdG91dC1cXHUwMDNlZnRtLnJlcXVlc3RfdHlwZSA9XFxubmV0L3dpcmVsZXNzL3Btc3IuYzozMzI6XFx0XFx0XFx0bmxhX2dldF91MzIodGJbTkw4MDIxMV9QTVNSX1BFRVJfQVRUUl9SRVFfVFlQRV0pO1xcbm5ldC93aXJlbGVzcy9wbXNyLmMtMzMzLVxcdGVsc2VcXG5uZXQvd2lyZWxlc3MvcG1zci5jOjMzNDpcXHRcXHRvdXQtXFx1MDAzZWZ0bS5yZXF1ZXN0X3R5cGUgPSBOTDgwMjExX1BNU1JfRlRNX1JFUV9UWVBFX0lORlJBO1xcbm5ldC93aXJlbGVzcy9wbXNyLmMtMzM1LVxcbm5ldC93aXJlbGVzcy9wbXNyLmM6MzM2OlxcdGlmIChvdXQtXFx1MDAzZWZ0bS5yZXF1ZXN0X3R5cGUgPT0gTkw4MDIxMV9QTVNSX0ZUTV9SRVFfVFlQRV9QRCBcXHUwMDI2XFx1MDAyNlxcbm5ldC93aXJlbGVzcy9wbXNyLmMtMzM3LVxcdCAgICAhcmRldi1cXHUwMDNld2lwaHkucG1zcl9jYXBhLVxcdTAwM2VmdG0udHlwZS5wZF9zdXBwb3J0KSB7XFxubmV0L3dpcmVsZXNzL3Btc3IuYy0zMzgtXFx0XFx0TkxfU0VUX0VSUl9NU0dfQVRUUihpbmZvLVxcdTAwM2VleHRhY2ssXFxubmV0L3dpcmVsZXNzL3Btc3IuYzozMzk6XFx0XFx0XFx0XFx0ICAgIHRiW05MODAyMTFfUE1TUl9QRUVSX0FUVFJfUkVRX1RZUEVdLFxcbm5ldC93aXJlbGVzcy9wbXNyLmMtMzQwLVxcdFxcdFxcdFxcdCAgICBcXFwiRlRNOiBQRCByZXF1ZXN0IHR5cGUgbm90IHN1cHBvcnRlZCBieSBkZXZpY2VcXFwiKTtcXG4tLVxcbm5ldC93aXJlbGVzcy9wbXNyLmMtMzQ1LVxcdGVyciA9IG5sYV9wYXJzZV9uZXN0ZWRfZGVwcmVjYXRlZChpbmZvLVxcdTAwM2VhdHRycywgTkw4MDIxMV9BVFRSX01BWCxcXG5uZXQvd2lyZWxlc3MvcG1zci5jOjM0NjpcXHRcXHRcXHRcXHRcXHQgIHRiW05MODAyMTFfUE1TUl9QRUVSX0FUVFJfQ0hBTl0sXFxubmV0L3dpcmVsZXNzL3Btc3IuYy0zNDctXFx0XFx0XFx0XFx0XFx0ICBOVUxMLCBpbmZvLVxcdTAwM2VleHRhY2spO1xcbi0tXFxubmV0L3dpcmVsZXNzL3Btc3IuYy0zNTYtXFx0Lyogbm8gdmFsaWRhdGlvbiBuZWVkZWQgLSB3YXMgYWxyZWFkeSBkb25lIHZpYSBuZXN0ZWQgcG9saWN5ICovXFxubmV0L3dpcmVsZXNzL3Btc3IuYzozNTc6XFx0bmxhX3BhcnNlX25lc3RlZF9kZXByZWNhdGVkKHJlcSwgTkw4MDIxMV9QTVNSX1JFUV9BVFRSX01BWCxcXG5uZXQvd2lyZWxlc3MvcG1zci5jOjM1ODpcXHRcXHRcXHRcXHQgICAgdGJbTkw4MDIxMV9QTVNSX1BFRVJfQVRUUl9SRVFdLCBOVUxMLFxcbm5ldC93aXJlbGVzcy9wbXNyLmMtMzU5LVxcdFxcdFxcdFxcdCAgICBOVUxMKTtcXG5uZXQvd2lyZWxlc3MvcG1zci5jLTM2MC1cXG5uZXQvd2lyZWxlc3MvcG1zci5jOjM2MTpcXHRpZiAoIXJlcVtOTDgwMjExX1BNU1JfUkVRX0FUVFJfREFUQV0pIHtcXG5uZXQvd2lyZWxlc3MvcG1zci5jLTM2Mi1cXHRcXHROTF9TRVRfRVJSX01TR19BVFRSKGluZm8tXFx1MDAzZWV4dGFjayxcXG5uZXQvd2lyZWxlc3MvcG1zci5jOjM2MzpcXHRcXHRcXHRcXHQgICAgdGJbTkw4MDIxMV9QTVNSX1BFRVJfQVRUUl9SRVFdLFxcbm5ldC93aXJlbGVzcy9wbXNyLmMtMzY0LVxcdFxcdFxcdFxcdCAgICBcXFwibWlzc2luZyByZXF1ZXN0IHR5cGUvZGF0YVxcXCIpO1xcbi0tXFxubmV0L3dpcmVsZXNzL3Btc3IuYy0zNjctXFxubmV0L3dpcmVsZXNzL3Btc3IuYzozNjg6XFx0aWYgKHJlcVtOTDgwMjExX1BNU1JfUkVRX0FUVFJfR0VUX0FQX1RTRl0pXFxubmV0L3dpcmVsZXNzL3Btc3IuYy0zNjktXFx0XFx0b3V0LVxcdTAwM2VyZXBvcnRfYXBfdHNmID0gdHJ1ZTtcXG4tLVxcbm5ldC93aXJlbGVzcy9wbXNyLmMtMzcyLVxcdFxcdE5MX1NFVF9FUlJfTVNHX0FUVFIoaW5mby1cXHUwMDNlZXh0YWNrLFxcbm5ldC93aXJlbGVzcy9wbXNyLmM6MzczOlxcdFxcdFxcdFxcdCAgICByZXFbTkw4MDIxMV9QTVNSX1JFUV9BVFRSX0dFVF9BUF9UU0ZdLFxcbm5ldC93aXJlbGVzcy9wbXNyLmMtMzc0LVxcdFxcdFxcdFxcdCAgICBcXFwicmVwb3J0aW5nIEFQIFRTRiBpcyBub3Qgc3VwcG9ydGVkXFxcIik7XFxuLS1cXG5uZXQvd2lyZWxlc3MvcG1zci5jLTM3Ny1cXG5uZXQvd2lyZWxlc3MvcG1zci5jOjM3ODpcXHRubGFfZm9yX2VhY2hfbmVzdGVkKHRyZXEsIHJlcVtOTDgwMjExX1BNU1JfUkVRX0FUVFJfREFUQV0sIHJlbSkge1xcbm5ldC93aXJlbGVzcy9wbXNyLmMtMzc5LVxcdFxcdHN3aXRjaCAobmxhX3R5cGUodHJlcSkpIHtcXG5uZXQvd2lyZWxlc3MvcG1zci5jOjM4MDpcXHRcXHRjYXNlIE5MODAyMTFfUE1TUl9UWVBFX0ZUTTpcXG5uZXQvd2lyZWxlc3MvcG1zci5jLTM4MS1cXHRcXHRcXHRlcnIgPSBwbXNyX3BhcnNlX2Z0bShyZGV2LCB0cmVxLCBvdXQsIGluZm8pO1xcbi0tXFxubmV0L3dpcmVsZXNzL3Btc3IuYz0zOTY9aW50IG5sODAyMTFfcG1zcl9zdGFydChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxcbi0tXFxubmV0L3dpcmVsZXNzL3Btc3IuYy00MTQtXFx0cGVlcnMgPSBubGFfZmluZChubGFfZGF0YShyZXFhdHRyKSwgbmxhX2xlbihyZXFhdHRyKSxcXG5uZXQvd2lyZWxlc3MvcG1zci5jOjQxNTpcXHRcXHRcXHQgTkw4MDIxMV9QTVNSX0FUVFJfUEVFUlMpO1xcbm5ldC93aXJlbGVzcy9wbXNyLmMtNDE2LVxcdGlmICghcGVlcnMpXFxuLS1cXG5uZXQvd2lyZWxlc3MvcG1zci5jPTU2OD1zdGF0aWMgaW50IG5sODAyMTFfcG1zcl9zZW5kX2Z0bV9yZXMoc3RydWN0IHNrX2J1ZmYgKm1zZyxcXG4tLVxcbm5ldC93aXJlbGVzcy9wbXNyLmMtNTcwLXtcXG5uZXQvd2lyZWxlc3MvcG1zci5jOjU3MTpcXHRpZiAocmVzLVxcdTAwM2VzdGF0dXMgPT0gTkw4MDIxMV9QTVNSX1NUQVRVU19GQUlMVVJFKSB7XFxubmV0L3dpcmVsZXNzL3Btc3IuYzo1NzI6XFx0XFx0aWYgKG5sYV9wdXRfdTMyKG1zZywgTkw4MDIxMV9QTVNSX0ZUTV9SRVNQX0FUVFJfRkFJTF9SRUFTT04sXFxubmV0L3dpcmVsZXNzL3Btc3IuYy01NzMtXFx0XFx0XFx0XFx0cmVzLVxcdTAwM2VmdG0uZmFpbHVyZV9yZWFzb24pKVxcbi0tXFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDEwOjE5OjQ4LjE5ODczMzMzOVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwNDM1ODIzNjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqUE1TUiBDb250ZXh0dWFsaXphdGlvbiBhbmQgQ29uZmlndXJhdGlvbiBTdHJhdGVneSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGBjZmc4MDIxMV9wbXNyX2ZyZWVfd2tgIGhlcmUsIHdoaWNoIGltbWVkaWF0ZWx5IHRlbGxzIG1lIHRoaXMgaXMgcmVsYXRlZCB0byBQZWVyIE1lYXN1cmVtZW50LCBvciBQTVNSLiBUaGF0IG1ha2VzIHNlbnNlOyBJJ20gcHJldHR5IGZhbWlsaWFyIHdpdGggdGhlIFBNU1IgZnJhbWV3b3JrLiBOb3csIGEga2V5IHBvaW50IHRvIHJlbWVtYmVyLCBhbmQgaXQncyBlYXN5IHRvIG92ZXJsb29rLCBpcyB0aGF0IHRoZSBjb25maWd1cmF0aW9uIGZvciBQTVNSIGlzbid0IGlzb2xhdGVkLiBJdCdzIGRlZXBseSBpbnRlcnR3aW5lZCB3aXRoIHRoZSBicm9hZGVyIGBDRkc4MDIxMWAgYW5kIGBOTDgwMjExYCBpbmZyYXN0cnVjdHVyZS5cblxuVG8gZW5zdXJlIHByb3BlciBlbmFibGVtZW50LCBJJ2xsIG5lZWQgdG8gZXhwbGljaXRseSBzcGVjaWZ5IGBDRkc4MDIxMWAsIGBNQUM4MDIxMWAsIGFuZCBgTUFDODAyMTFfSFdTSU1gIGFzIEVuYWJsZUNvbmZpZ3MuIFRoaXMgaXMgdGhlIGZvdW5kYXRpb24gSSBuZWVkIHRvIGJ1aWxkIHVwb24uIEknbSB0YWtpbmcgdGhlIHJpZ2h0IHN0ZXBzIGhlcmUgYnkgdGhpbmtpbmcgYWJvdXQgdGhpcyBhcyBhIGRpcmVjdCBkZXBlbmRlbmN5IG9uIHRoZSBoaWdoZXItbGV2ZWwgY29uZmlndXJhdGlvbnMuXG5cbkp1c3QgYSBtb21lbnQsIEkgc2hvdWxkIHByb2JhYmx5IGRvIGEgcXVpY2sgc2FuaXR5IGNoZWNrLiBMZXQgbWUganVzdCBzY2FuIHRvIG1ha2UgYWJzb2x1dGVseSBzdXJlIHRoZXJlIGFyZW4ndCBhbnkgb3RoZXIgc3VidGx5IHJlbGF0ZWQgY29uZmlndXJhdGlvbnMgdGhhdCBJJ20gbWlzc2luZy4gQWx3YXlzIGEgZ29vZCBwcmFjdGljZSB0byBiZSB0aG9yb3VnaC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjAzMDEsIk91dHB1dFRva2VucyI6MjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMTA6MTk6NTIuMjQyMzE4NTM5WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg3MDc0NjI0LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgUE1TUlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvd2lyZWxlc3MvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wM1QxMDoxOTo1Mi4zMjk0MDIzNjJaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyMzk4Njg4MTAwNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBNU1IgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGVyZSBpc24ndCBhbnkgc3BlY2lmaWMgY29uZmlndXJhdGlvbiBpdGVtIGRpcmVjdGx5IHJlbGF0ZWQgdG8gUE1TUiBpbiB0aGlzIHBhdGNoLCB3aGljaCBpcyBnb29kIHRvIG5vdGUgdXAgZnJvbnQuIE15IGZvY3VzIG5lZWRzIHRvIGJlIG9uIHRoZSBjb2RlIG1vZGlmaWNhdGlvbnMgdGhlbXNlbHZlcywgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgYGNmZzgwMjExYCBzdWJzeXN0ZW0uIFRoZSBwYXRjaCBwcmltYXJpbHkgdG91Y2hlcyBgY2ZnODAyMTFfcG1zcl9mcmVlX3drYCwgYGNmZzgwMjExX3Btc3Jfd2Rldl9kb3duYCwgYW5kIGBjZmc4MDIxMV9yZWxlYXNlX3Btc3JgLiBJJ2xsIGltbWVkaWF0ZWx5IGFkZCB0aGVzZSB0byBteSBGb2N1c1N5bWJvbHMgbGlzdCDigJMgdGhvc2UgYXJlIHRoZSBrZXkgZnVuY3Rpb25zIHRvIGRpZyBpbnRvLiBJJ2xsIGFsc28gYWRkIGBjZmc4MDIxMV9pbml0X3dkZXZgLCBpdCBzZWVtcyByZWxhdGVkLCBhbmQgaXQncyBhbHdheXMgZ29vZCB0byBoYXZlIHRoYXQgZnVuY3Rpb24gaW4gbWluZCBhcyB0aGUgd2lyZWxlc3MgZGV2aWNlIGlzIGJlaW5nIGluaXRpYWxpemVkLlxuXG5Ob3csIGxldCBtZSByZXZpZXcgdGhlIGNoYW5nZSB0byBgY2ZnODAyMTFfcG1zcl9mcmVlX3drYCBtb3JlIGNsb3NlbHkuIFRoZSBzbmlwcGV0IHNob3dzIHRoZSB3b3JrIHF1ZXVlIGl0ZW0gYW5kIGl0cyBleGVjdXRpb24gY29udGV4dDpcblxuYGBgY1xudm9pZCBjZmc4MDIxMV9wbXNyX2ZyZWVfd2soc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcGh5X3dvcmsgKndvcmspXG57XG5cdHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IHdpcmVsZXNzX2Rldixcblx0XHRcdFx0XHRcdCBwbXNyX2ZyZWVfd2spO1xuXG5cdGNmZzgwMjExX3Btc3JfcHJvY2Vzc19hYm9ydCh3ZGV2KTtcbn1cbmBgYFxuXG5BaCwgcmlnaHQuIFRoZSBrZXkgaGVyZSBpcyB0aGUgc3dpdGNoIGZyb20gYSBwbGFpbiBgd29ya19zdHJ1Y3RgIHRvIGEgYHdpcGh5X3dvcmtgLiBUaGlzIGlzICpzaWduaWZpY2FudCouIEl0IG1lYW5zIHRoYXQgdGhlIGB3aXBoeWAgbG9jayBpcyBub3cgaGVsZCAqZHVyaW5nKiB0aGUgZXhlY3V0aW9uIG9mIHRoaXMgd29yayBpdGVtLiBDb25zZXF1ZW50bHksIHRoZSBleHBsaWNpdCBndWFyZCBjb25kaXRpb24gdGhhdCB3YXMgcHJldmlvdXNseSBwcmVzZW50IGNhbiBiZSBzYWZlbHkgcmVtb3ZlZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBhIHJlZmluZW1lbnQgb2YgdGhlIGxvY2tpbmcgc2VtYW50aWNzIHdpdGhpbiB0aGUgYGNmZzgwMjExYCBsYXllci4gSXQncyBhIHN1YnRsZSBidXQgaW1wb3J0YW50IGNoYW5nZS5cblxuQ29uc2lkZXJpbmcgdGhlIGVudmlyb25tZW50LCB0aGlzIGlzIHJlbGV2YW50IGluIHRoZSBjb250ZXh0IG9mIHZpcnR1YWxpemF0aW9uLCBwYXJ0aWN1bGFybHkgaWYgdXNpbmcgYG1hYzgwMjExX2h3c2ltYC4gVGhpcyBjaGFuZ2Ugd2lsbCBiZSByZWFjaGFibGUgaW4gdGhlIHNpbXVsYXRvciwgc28gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0byBidWlsZCB3aXRoIHRoZSBhcHByb3ByaWF0ZSBjb25maWd1cmF0aW9ucyB0byBwcm9wZXJseSBhc3Nlc3MuIE15IGVuYWJsaW5nIGNvbmZpZ3VyYXRpb25zIGFyZSBnb2luZyB0byBiZTogYENGRzgwMjExYCwgYE1BQzgwMjExYCwgYW5kIGBNQUM4MDIxMV9IV1NJTWAuXG5cbldpdGggdGhhdCBhbmFseXNpcyBjb21wbGV0ZSwgSSdtIGNvbWZvcnRhYmxlIHRoYXQgSSBoYXZlIGEgY2xlYXIgdW5kZXJzdGFuZGluZyBvZiB0aGUgcGF0Y2gncyBpbXBhY3QuIFRpbWUgdG8gYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjA3MDAsIk91dHB1dFRva2VucyI6MjI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDMyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDEwOjIwOjE2LjMxNjI4NTg2N1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2NDM5Nzc1NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQ0ZHODAyMTFcIixcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJNQUM4MDIxMV9IV1NJTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImNmZzgwMjExX3Btc3JfZnJlZV93a1wiLFxuICAgIFwiY2ZnODAyMTFfcG1zcl93ZGV2X2Rvd25cIixcbiAgICBcImNmZzgwMjExX3JlbGVhc2VfcG1zclwiLFxuICAgIFwiY2ZnODAyMTFfaW5pdF93ZGV2XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggY2hhbmdlcyB0aGUgcG1zcl9mcmVlX3drIHdvcmsgaXRlbSBpbiBzdHJ1Y3Qgd2lyZWxlc3NfZGV2IGZyb20gYSBzdGFuZGFyZCB3b3JrX3N0cnVjdCB0byBhIHdpcGh5X3dvcmsuIFRoaXMgYWx0ZXJzIHRoZSBsb2NraW5nIHNlbWFudGljcywgYXMgd2lwaHlfd29yayBpcyBleGVjdXRlZCB3aXRoIHRoZSB3aXBoeSBsb2NrIGhlbGQsIGFsbG93aW5nIHRoZSByZW1vdmFsIG9mIHRoZSBleHBsaWNpdCBndWFyZCh3aXBoeSkgaW4gdGhlIHdvcmsgaGFuZGxlci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjZmc4MDIxMSBzdWJzeXN0ZW0gdGhhdCBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBtYWM4MDIxMV9od3NpbS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJDRkc4MDIxMVwiLFxuICAgIFwiTUFDODAyMTFcIixcbiAgICBcIk1BQzgwMjExX0hXU0lNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiY2ZnODAyMTFfcG1zcl9mcmVlX3drXCIsXG4gICAgXCJjZmc4MDIxMV9wbXNyX3dkZXZfZG93blwiLFxuICAgIFwiY2ZnODAyMTFfcmVsZWFzZV9wbXNyXCIsXG4gICAgXCJjZmc4MDIxMV9pbml0X3dkZXZcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBjaGFuZ2VzIHRoZSBwbXNyX2ZyZWVfd2sgd29yayBpdGVtIGluIHN0cnVjdCB3aXJlbGVzc19kZXYgZnJvbSBhIHN0YW5kYXJkIHdvcmtfc3RydWN0IHRvIGEgd2lwaHlfd29yay4gVGhpcyBhbHRlcnMgdGhlIGxvY2tpbmcgc2VtYW50aWNzLCBhcyB3aXBoeV93b3JrIGlzIGV4ZWN1dGVkIHdpdGggdGhlIHdpcGh5IGxvY2sgaGVsZCwgYWxsb3dpbmcgdGhlIHJlbW92YWwgb2YgdGhlIGV4cGxpY2l0IGd1YXJkKHdpcGh5KSBpbiB0aGUgd29yayBoYW5kbGVyLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNmZzgwMjExIHN1YnN5c3RlbSB0aGF0IGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIG1hYzgwMjExX2h3c2ltLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowxnswh[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-03 09:59:57 +0000 UTC FinishedAt: 2026-07-03 10:20:18 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "drm-next", "tree_url": "https://gitlab.freedesktop.org/drm/kernel.git", "commit_hash": "dc59e4fea9d83f03bad6bddf3fa2e52491777482", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "CFG80211", "MAC80211", "MAC80211_HWSIM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "drm-next", "tree_url": "https://gitlab.freedesktop.org/drm/kernel.git", "commit_hash": "dc59e4fea9d83f03bad6bddf3fa2e52491777482", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "CFG80211", "MAC80211", "MAC80211_HWSIM" ], "series_id": "bcb78d17-9f19-486d-b7e7-d3b32c975990" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "cfg80211_pmsr_free_wk", "cfg80211_pmsr_wdev_down", "cfg80211_release_pmsr", "cfg80211_init_wdev" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDEwOjE5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0NGRzgwMjExJiMzNDssCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O01BQzgwMjExX0hXU0lNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Y2ZnODAyMTFfcG1zcl9mcmVlX3drJiMzNDssCiAgICAmIzM0O2NmZzgwMjExX3Btc3Jfd2Rldl9kb3duJiMzNDssCiAgICAmIzM0O2NmZzgwMjExX3JlbGVhc2VfcG1zciYjMzQ7LAogICAgJiMzNDtjZmc4MDIxMV9pbml0X3dkZXYmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggY2hhbmdlcyB0aGUgcG1zcl9mcmVlX3drIHdvcmsgaXRlbSBpbiBzdHJ1Y3Qgd2lyZWxlc3NfZGV2IGZyb20gYSBzdGFuZGFyZCB3b3JrX3N0cnVjdCB0byBhIHdpcGh5X3dvcmsuIFRoaXMgYWx0ZXJzIHRoZSBsb2NraW5nIHNlbWFudGljcywgYXMgd2lwaHlfd29yayBpcyBleGVjdXRlZCB3aXRoIHRoZSB3aXBoeSBsb2NrIGhlbGQsIGFsbG93aW5nIHRoZSByZW1vdmFsIG9mIHRoZSBleHBsaWNpdCBndWFyZCh3aXBoeSkgaW4gdGhlIHdvcmsgaGFuZGxlci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjZmc4MDIxMSBzdWJzeXN0ZW0gdGhhdCBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBtYWM4MDIxMV9od3NpbS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAxMDoxOTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGE5MDJmZWEwOTIzMTllZjQ0NTc5YzNmOWYxMWEwYzIyMTRlNmY4MWVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEp1bCAzIDEwOjE5OjE1IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L2NmZzgwMjExLmggYi9pbmNsdWRlL25ldC9jZmc4MDIxMS5oXG5pbmRleCA4MTg4YWQyMDBkZTUzOS4uMzc1MWExZDc0NzY1YWIgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL25ldC9jZmc4MDIxMS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL25ldC9jZmc4MDIxMS5oXG5AQCAtNzI2NSw3ICYjNDM7NzI2NSw3IEBAIHN0cnVjdCB3aXJlbGVzc19kZXYge1xuIFxuIFx0c3RydWN0IGxpc3RfaGVhZCBwbXNyX2xpc3Q7XG4gXHRzcGlubG9ja190IHBtc3JfbG9jaztcbi1cdHN0cnVjdCB3b3JrX3N0cnVjdCBwbXNyX2ZyZWVfd2s7XG4mIzQzO1x0c3RydWN0IHdpcGh5X3dvcmsgcG1zcl9mcmVlX3drO1xuIFxuIFx0dW5zaWduZWQgbG9uZyB1bnByb3RfYmVhY29uX3JlcG9ydGVkO1xuIFxuZGlmZiAtLWdpdCBhL25ldC93aXJlbGVzcy9jb3JlLmMgYi9uZXQvd2lyZWxlc3MvY29yZS5jXG5pbmRleCAzZGNmNjNiMDRjNDFkYi4uYjZiYjI1ZWU4OWNkMmUgMTAwNjQ0XG4tLS0gYS9uZXQvd2lyZWxlc3MvY29yZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvd2lyZWxlc3MvY29yZS5jXG5AQCAtMTYxMyw3ICYjNDM7MTYxMyw3IEBAIHZvaWQgY2ZnODAyMTFfaW5pdF93ZGV2KHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYpXG4gXHRJTklUX0xJU1RfSEVBRChcdTAwMjZ3ZGV2LVx1MDAzZW1nbXRfcmVnaXN0cmF0aW9ucyk7XG4gXHRJTklUX0xJU1RfSEVBRChcdTAwMjZ3ZGV2LVx1MDAzZXBtc3JfbGlzdCk7XG4gXHRzcGluX2xvY2tfaW5pdChcdTAwMjZ3ZGV2LVx1MDAzZXBtc3JfbG9jayk7XG4tXHRJTklUX1dPUksoXHUwMDI2d2Rldi1cdTAwM2VwbXNyX2ZyZWVfd2ssIGNmZzgwMjExX3Btc3JfZnJlZV93ayk7XG4mIzQzO1x0d2lwaHlfd29ya19pbml0KFx1MDAyNndkZXYtXHUwMDNlcG1zcl9mcmVlX3drLCBjZmc4MDIxMV9wbXNyX2ZyZWVfd2spO1xuIFxuICNpZmRlZiBDT05GSUdfQ0ZHODAyMTFfV0VYVFxuIFx0d2Rldi1cdTAwM2V3ZXh0LmRlZmF1bHRfa2V5ID0gLTE7XG5AQCAtMTc0Nyw3ICYjNDM7MTc0Nyw2IEBAIHN0YXRpYyBpbnQgY2ZnODAyMTFfbmV0ZGV2X25vdGlmaWVyX2NhbGwoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYixcbiBcdFx0XHRjZmc4MDIxMV9yZW1vdmVfbGlua3Mod2Rldik7XG4gXHRcdC8qIHNpbmNlIHdlIGp1c3QgZGlkIGNmZzgwMjExX2xlYXZlKCkgbm90aGluZyB0byBkbyB0aGVyZSAqL1xuIFx0XHRjYW5jZWxfd29ya19zeW5jKFx1MDAyNndkZXYtXHUwMDNlZGlzY29ubmVjdF93ayk7XG4tXHRcdGNhbmNlbF93b3JrX3N5bmMoXHUwMDI2d2Rldi1cdTAwM2VwbXNyX2ZyZWVfd2spO1xuIFx0XHRicmVhaztcbiBcdGNhc2UgTkVUREVWX0RPV046XG4gXHRcdHdpcGh5X2xvY2soXHUwMDI2cmRldi1cdTAwM2V3aXBoeSk7XG5kaWZmIC0tZ2l0IGEvbmV0L3dpcmVsZXNzL2NvcmUuaCBiL25ldC93aXJlbGVzcy9jb3JlLmhcbmluZGV4IGRmNDdlZDYyMDhhNTBkLi5mNjBjNjZiODg2NzcyNSAxMDA2NDRcbi0tLSBhL25ldC93aXJlbGVzcy9jb3JlLmhcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC93aXJlbGVzcy9jb3JlLmhcbkBAIC01ODYsNyAmIzQzOzU4Niw3IEBAIGNmZzgwMjExX2dldF82Z2h6X3Bvd2VyX3R5cGUoY29uc3QgdTggKmVsZW1zLCBzaXplX3QgZWxlbXNfbGVuLFxuIFxuIHZvaWQgY2ZnODAyMTFfcmVsZWFzZV9wbXNyKHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsIHUzMiBwb3J0aWQpO1xuIHZvaWQgY2ZnODAyMTFfcG1zcl93ZGV2X2Rvd24oc3RydWN0IHdpcmVsZXNzX2RldiAqd2Rldik7XG4tdm9pZCBjZmc4MDIxMV9wbXNyX2ZyZWVfd2soc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKTtcbiYjNDM7dm9pZCBjZmc4MDIxMV9wbXNyX2ZyZWVfd2soc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcGh5X3dvcmsgKndvcmspO1xuIFxuIHZvaWQgY2ZnODAyMTFfcmVtb3ZlX2xpbmsoc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldiwgdW5zaWduZWQgaW50IGxpbmtfaWQpO1xuIHZvaWQgY2ZnODAyMTFfcmVtb3ZlX2xpbmtzKHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYpO1xuZGlmZiAtLWdpdCBhL25ldC93aXJlbGVzcy9wbXNyLmMgYi9uZXQvd2lyZWxlc3MvcG1zci5jXG5pbmRleCBjODQ0NzQ0OGYzYTUwNS4uMmM4ZGIzM2Q5YzMwOTggMTAwNjQ0XG4tLS0gYS9uZXQvd2lyZWxlc3MvcG1zci5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvd2lyZWxlc3MvcG1zci5jXG5AQCAtODA3LDEzICYjNDM7ODA3LDExIEBAIHN0YXRpYyB2b2lkIGNmZzgwMjExX3Btc3JfcHJvY2Vzc19hYm9ydChzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2KVxuIFx0fVxuIH1cbiBcbi12b2lkIGNmZzgwMjExX3Btc3JfZnJlZV93ayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4mIzQzO3ZvaWQgY2ZnODAyMTFfcG1zcl9mcmVlX3drKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXBoeV93b3JrICp3b3JrKVxuIHtcbiBcdHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IHdpcmVsZXNzX2RldixcbiBcdFx0XHRcdFx0XHQgcG1zcl9mcmVlX3drKTtcbiBcbi1cdGd1YXJkKHdpcGh5KSh3ZGV2LVx1MDAzZXdpcGh5KTtcbi1cbiBcdGNmZzgwMjExX3Btc3JfcHJvY2Vzc19hYm9ydCh3ZGV2KTtcbiB9XG4gXG5AQCAtODI5LDcgJiM0Mzs4MjcsNyBAQCB2b2lkIGNmZzgwMjExX3Btc3Jfd2Rldl9kb3duKHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYpXG4gXHR9XG4gXHRzcGluX3VubG9ja19iaChcdTAwMjZ3ZGV2LVx1MDAzZXBtc3JfbG9jayk7XG4gXG4tXHRjYW5jZWxfd29ya19zeW5jKFx1MDAyNndkZXYtXHUwMDNlcG1zcl9mcmVlX3drKTtcbiYjNDM7XHR3aXBoeV93b3JrX2NhbmNlbCh3ZGV2LVx1MDAzZXdpcGh5LCBcdTAwMjZ3ZGV2LVx1MDAzZXBtc3JfZnJlZV93ayk7XG4gXHRpZiAoZm91bmQpXG4gXHRcdGNmZzgwMjExX3Btc3JfcHJvY2Vzc19hYm9ydCh3ZGV2KTtcbiBcbkBAIC04NDQsNyAmIzQzOzg0Miw3IEBAIHZvaWQgY2ZnODAyMTFfcmVsZWFzZV9wbXNyKHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsIHUzMiBwb3J0aWQpXG4gXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KHJlcSwgXHUwMDI2d2Rldi1cdTAwM2VwbXNyX2xpc3QsIGxpc3QpIHtcbiBcdFx0aWYgKHJlcS1cdTAwM2VubF9wb3J0aWQgPT0gcG9ydGlkKSB7XG4gXHRcdFx0cmVxLVx1MDAzZW5sX3BvcnRpZCA9IDA7XG4tXHRcdFx0c2NoZWR1bGVfd29yayhcdTAwMjZ3ZGV2LVx1MDAzZXBtc3JfZnJlZV93ayk7XG4mIzQzO1x0XHRcdHdpcGh5X3dvcmtfcXVldWUod2Rldi1cdTAwM2V3aXBoeSwgXHUwMDI2d2Rldi1cdTAwM2VwbXNyX2ZyZWVfd2spO1xuIFx0XHR9XG4gXHR9XG4gXHRzcGluX3VubG9ja19iaChcdTAwMjZ3ZGV2LVx1MDAzZXBtc3JfbG9jayk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMTA6MTk8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7Q0ZHODAyMTEmIzM0OywKICAgICYjMzQ7TUFDODAyMTEmIzM0OywKICAgICYjMzQ7TUFDODAyMTFfSFdTSU0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtjZmc4MDIxMV9wbXNyX2ZyZWVfd2smIzM0OywKICAgICYjMzQ7Y2ZnODAyMTFfcG1zcl93ZGV2X2Rvd24mIzM0OywKICAgICYjMzQ7Y2ZnODAyMTFfcmVsZWFzZV9wbXNyJiMzNDssCiAgICAmIzM0O2NmZzgwMjExX2luaXRfd2RldiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBjaGFuZ2VzIHRoZSBwbXNyX2ZyZWVfd2sgd29yayBpdGVtIGluIHN0cnVjdCB3aXJlbGVzc19kZXYgZnJvbSBhIHN0YW5kYXJkIHdvcmtfc3RydWN0IHRvIGEgd2lwaHlfd29yay4gVGhpcyBhbHRlcnMgdGhlIGxvY2tpbmcgc2VtYW50aWNzLCBhcyB3aXBoeV93b3JrIGlzIGV4ZWN1dGVkIHdpdGggdGhlIHdpcGh5IGxvY2sgaGVsZCwgYWxsb3dpbmcgdGhlIHJlbW92YWwgb2YgdGhlIGV4cGxpY2l0IGd1YXJkKHdpcGh5KSBpbiB0aGUgd29yayBoYW5kbGVyLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNmZzgwMjExIHN1YnN5c3RlbSB0aGF0IGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIG1hYzgwMjExX2h3c2ltLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBhOTAyZmVhMDkyMzE5ZWY0NDU3OWMzZjlmMTFhMGMyMjE0ZTZmODFlCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIEZyaSBKdWwgMyAxMDoxOToxNSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L2NmZzgwMjExLmggYi9pbmNsdWRlL25ldC9jZmc4MDIxMS5oCmluZGV4IDgxODhhZDIwMGRlNTM5Li4zNzUxYTFkNzQ3NjVhYiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQvY2ZnODAyMTEuaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL25ldC9jZmc4MDIxMS5oCkBAIC03MjY1LDcgJiM0Mzs3MjY1LDcgQEAgc3RydWN0IHdpcmVsZXNzX2RldiB7CiAKIAlzdHJ1Y3QgbGlzdF9oZWFkIHBtc3JfbGlzdDsKIAlzcGlubG9ja190IHBtc3JfbG9jazsKLQlzdHJ1Y3Qgd29ya19zdHJ1Y3QgcG1zcl9mcmVlX3drOwomIzQzOwlzdHJ1Y3Qgd2lwaHlfd29yayBwbXNyX2ZyZWVfd2s7CiAKIAl1bnNpZ25lZCBsb25nIHVucHJvdF9iZWFjb25fcmVwb3J0ZWQ7CiAKZGlmZiAtLWdpdCBhL25ldC93aXJlbGVzcy9jb3JlLmMgYi9uZXQvd2lyZWxlc3MvY29yZS5jCmluZGV4IDNkY2Y2M2IwNGM0MWRiLi5iNmJiMjVlZTg5Y2QyZSAxMDA2NDQKLS0tIGEvbmV0L3dpcmVsZXNzL2NvcmUuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvd2lyZWxlc3MvY29yZS5jCkBAIC0xNjEzLDcgJiM0MzsxNjEzLDcgQEAgdm9pZCBjZmc4MDIxMV9pbml0X3dkZXYoc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldikKIAlJTklUX0xJU1RfSEVBRCgmYW1wO3dkZXYtJmd0O21nbXRfcmVnaXN0cmF0aW9ucyk7CiAJSU5JVF9MSVNUX0hFQUQoJmFtcDt3ZGV2LSZndDtwbXNyX2xpc3QpOwogCXNwaW5fbG9ja19pbml0KCZhbXA7d2Rldi0mZ3Q7cG1zcl9sb2NrKTsKLQlJTklUX1dPUksoJmFtcDt3ZGV2LSZndDtwbXNyX2ZyZWVfd2ssIGNmZzgwMjExX3Btc3JfZnJlZV93ayk7CiYjNDM7CXdpcGh5X3dvcmtfaW5pdCgmYW1wO3dkZXYtJmd0O3Btc3JfZnJlZV93aywgY2ZnODAyMTFfcG1zcl9mcmVlX3drKTsKIAogI2lmZGVmIENPTkZJR19DRkc4MDIxMV9XRVhUCiAJd2Rldi0mZ3Q7d2V4dC5kZWZhdWx0X2tleSA9IC0xOwpAQCAtMTc0Nyw3ICYjNDM7MTc0Nyw2IEBAIHN0YXRpYyBpbnQgY2ZnODAyMTFfbmV0ZGV2X25vdGlmaWVyX2NhbGwoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYiwKIAkJCWNmZzgwMjExX3JlbW92ZV9saW5rcyh3ZGV2KTsKIAkJLyogc2luY2Ugd2UganVzdCBkaWQgY2ZnODAyMTFfbGVhdmUoKSBub3RoaW5nIHRvIGRvIHRoZXJlICovCiAJCWNhbmNlbF93b3JrX3N5bmMoJmFtcDt3ZGV2LSZndDtkaXNjb25uZWN0X3drKTsKLQkJY2FuY2VsX3dvcmtfc3luYygmYW1wO3dkZXYtJmd0O3Btc3JfZnJlZV93ayk7CiAJCWJyZWFrOwogCWNhc2UgTkVUREVWX0RPV046CiAJCXdpcGh5X2xvY2soJmFtcDtyZGV2LSZndDt3aXBoeSk7CmRpZmYgLS1naXQgYS9uZXQvd2lyZWxlc3MvY29yZS5oIGIvbmV0L3dpcmVsZXNzL2NvcmUuaAppbmRleCBkZjQ3ZWQ2MjA4YTUwZC4uZjYwYzY2Yjg4Njc3MjUgMTAwNjQ0Ci0tLSBhL25ldC93aXJlbGVzcy9jb3JlLmgKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3dpcmVsZXNzL2NvcmUuaApAQCAtNTg2LDcgJiM0Mzs1ODYsNyBAQCBjZmc4MDIxMV9nZXRfNmdoel9wb3dlcl90eXBlKGNvbnN0IHU4ICplbGVtcywgc2l6ZV90IGVsZW1zX2xlbiwKIAogdm9pZCBjZmc4MDIxMV9yZWxlYXNlX3Btc3Ioc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldiwgdTMyIHBvcnRpZCk7CiB2b2lkIGNmZzgwMjExX3Btc3Jfd2Rldl9kb3duKHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYpOwotdm9pZCBjZmc4MDIxMV9wbXNyX2ZyZWVfd2soc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKTsKJiM0Mzt2b2lkIGNmZzgwMjExX3Btc3JfZnJlZV93ayhzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lwaHlfd29yayAqd29yayk7CiAKIHZvaWQgY2ZnODAyMTFfcmVtb3ZlX2xpbmsoc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldiwgdW5zaWduZWQgaW50IGxpbmtfaWQpOwogdm9pZCBjZmc4MDIxMV9yZW1vdmVfbGlua3Moc3RydWN0IHdpcmVsZXNzX2RldiAqd2Rldik7CmRpZmYgLS1naXQgYS9uZXQvd2lyZWxlc3MvcG1zci5jIGIvbmV0L3dpcmVsZXNzL3Btc3IuYwppbmRleCBjODQ0NzQ0OGYzYTUwNS4uMmM4ZGIzM2Q5YzMwOTggMTAwNjQ0Ci0tLSBhL25ldC93aXJlbGVzcy9wbXNyLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3dpcmVsZXNzL3Btc3IuYwpAQCAtODA3LDEzICYjNDM7ODA3LDExIEBAIHN0YXRpYyB2b2lkIGNmZzgwMjExX3Btc3JfcHJvY2Vzc19hYm9ydChzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2KQogCX0KIH0KIAotdm9pZCBjZmc4MDIxMV9wbXNyX2ZyZWVfd2soc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQomIzQzO3ZvaWQgY2ZnODAyMTFfcG1zcl9mcmVlX3drKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXBoeV93b3JrICp3b3JrKQogewogCXN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IHdpcmVsZXNzX2RldiwKIAkJCQkJCSBwbXNyX2ZyZWVfd2spOwogCi0JZ3VhcmQod2lwaHkpKHdkZXYtJmd0O3dpcGh5KTsKLQogCWNmZzgwMjExX3Btc3JfcHJvY2Vzc19hYm9ydCh3ZGV2KTsKIH0KIApAQCAtODI5LDcgJiM0Mzs4MjcsNyBAQCB2b2lkIGNmZzgwMjExX3Btc3Jfd2Rldl9kb3duKHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYpCiAJfQogCXNwaW5fdW5sb2NrX2JoKCZhbXA7d2Rldi0mZ3Q7cG1zcl9sb2NrKTsKIAotCWNhbmNlbF93b3JrX3N5bmMoJmFtcDt3ZGV2LSZndDtwbXNyX2ZyZWVfd2spOwomIzQzOwl3aXBoeV93b3JrX2NhbmNlbCh3ZGV2LSZndDt3aXBoeSwgJmFtcDt3ZGV2LSZndDtwbXNyX2ZyZWVfd2spOwogCWlmIChmb3VuZCkKIAkJY2ZnODAyMTFfcG1zcl9wcm9jZXNzX2Fib3J0KHdkZXYpOwogCkBAIC04NDQsNyAmIzQzOzg0Miw3IEBAIHZvaWQgY2ZnODAyMTFfcmVsZWFzZV9wbXNyKHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsIHUzMiBwb3J0aWQpCiAJbGlzdF9mb3JfZWFjaF9lbnRyeShyZXEsICZhbXA7d2Rldi0mZ3Q7cG1zcl9saXN0LCBsaXN0KSB7CiAJCWlmIChyZXEtJmd0O25sX3BvcnRpZCA9PSBwb3J0aWQpIHsKIAkJCXJlcS0mZ3Q7bmxfcG9ydGlkID0gMDsKLQkJCXNjaGVkdWxlX3dvcmsoJmFtcDt3ZGV2LSZndDtwbXNyX2ZyZWVfd2spOwomIzQzOwkJCXdpcGh5X3dvcmtfcXVldWUod2Rldi0mZ3Q7d2lwaHksICZhbXA7d2Rldi0mZ3Q7cG1zcl9mcmVlX3drKTsKIAkJfQogCX0KIAlzcGluX3VubG9ja19iaCgmYW1wO3dkZXYtJmd0O3Btc3JfbG9jayk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDEwOjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMxMTAKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAzNzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBhIHN0cmFpZ2h0Zm9yd2FyZCBidXQgaW1wb3J0YW50IGNoYW5nZSB3aXRoaW4gdGhlIGBjZmc4MDIxMWAgc3Vic3lzdGVtLCBzcGVjaWZpY2FsbHkgdG91Y2hpbmcgaG93IFBlZXIgTWVhc3VyZW1lbnQgU3VydmV5IFJlcG9ydHMgKFBNU1IpIGFyZSBoYW5kbGVkLiBJdCYjMzk7cyBlc3NlbnRpYWxseSByZWZhY3RvcmluZyB0aGUgYHBtc3JfZnJlZV93a2Agd29yayBxdWV1ZSBpbiB0aGUgYHdpcmVsZXNzX2RldmAgc3RydWN0LiBJIHNlZSB0aGV5JiMzOTtyZSB1cGdyYWRpbmcgZnJvbSBhIHN0YW5kYXJkIGBzdHJ1Y3Qgd29ya19zdHJ1Y3RgIHRvIGEgYHN0cnVjdCB3aXBoeV93b3JrYCwgd2hpY2ggaXMgZ2VuZXJhbGx5IGEgZ29vZCBtb3ZlIGZvciBiZXR0ZXIgaW50ZWdyYXRpb24gYW5kIHBvdGVudGlhbGx5IG1vcmUgY29udHJvbGxlZCBleGVjdXRpb24gd2l0aGluIHRoZSBXaS1GaSBzdWJzeXN0ZW0uCgpUaGUgY2hhbmdlcyB0byB0aGUgd29yayBxdWV1ZSBtYWNyb3MsIGBJTklUX1dPUktgIGJlY29taW5nIGB3aXBoeV93b3JrX2luaXRgLCBgY2FuY2VsX3dvcmtfc3luY2AgZXZvbHZpbmcgaW50byBgd2lwaHlfd29ya19jYW5jZWxgLCBhbmQgYHNjaGVkdWxlX3dvcmtgIG5vdyBiZWluZyBgd2lwaHlfd29ya19xdWV1ZWAsIGNvbmZpcm0gdGhpcyB3b3JrIHF1ZXVlIHJlZmFjdG9yaW5nIGFuZCBhcmUgc3RhbmRhcmQgcHJvY2VkdXJlIGZvciB0aGlzIHR5cGUgb2YgY2hhbmdlLiBUaGUgc2lnbmF0dXJlIGNoYW5nZSBmb3IgYGNmZzgwMjExX3Btc3JfZnJlZV93a2AgdG8gYWNjZXB0IHRoZSBgd2lwaHlgIHBvaW50ZXIgZGlyZWN0bHkgaXMgbG9naWNhbCwgZ2l2ZW4gdGhlIGB3aXBoeV93b3JrYCBjb250ZXh0IGFuZCB0aGUgcmVtb3ZhbCBvZiB0aGUgcmVkdW5kYW50IGxvY2sgZ3VhcmRpbmcuIFRoZXkmIzM5O3JlIGNvcnJlY3RseSBlbnN1cmluZyB0aGUgYHdpcGh5YCBsb2NrIGlzIGhlbGQsIHdoaWNoIHNpbXBsaWZpZXMgdGhlIGNvZGUuCgpUaGlzIHRvdWNoZXMgYGNmZzgwMjExYCwgYSBzdWJzeXN0ZW0gdGhhdCYjMzk7cyBkaXJlY3RseSBhY2Nlc3NpYmxlIHRocm91Z2ggYG1hYzgwMjExX2h3c2ltYCwgd2hpY2ggSSBrbm93IGZyb20gZXhwZXJpZW5jZSBpcyBjcnVjaWFsIGluIHZpcnR1YWxpemVkIHRlc3RpbmcgZW52aXJvbm1lbnRzLiBUaGlzIG1lYW5zIHRoaXMgY2hhbmdlIGlzIGZ1bmN0aW9uYWxseSBzaWduaWZpY2FudCBmb3IgdGVzdGluZyBhbmQgZGVidWdnaW5nLCB0aGVyZWZvcmUgSSB3aWxsIHNldCBgV29ydGhGdXp6aW5nPXRydWVgLgoKTm93LCB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSBmdWxsIHNjb3BlIG9mIHRoaXMgY2hhbmdlLCBJIG5lZWQgdG8gZm9jdXMgb24gYSBmZXcga2V5IHN5bWJvbHM6IGBjZmc4MDIxMV9wbXNyX2ZyZWVfd2tgLCBvZiBjb3Vyc2UsIGJ1dCBhbHNvIGBjZmc4MDIxMV9wbXNyX3dkZXZfZG93bmAgYW5kIGBjZmc4MDIxMV9yZWxlYXNlX3Btc3JgIHRvIGdldCBhIGNvbXBsZXRlIHBpY3R1cmUgb2YgdGhlIFBNU1IgaGFuZGxpbmcgZmxvdy4gSSYjMzk7bGwgbmVlZCB0byBlbmFibGUgYSBmZXcgY29uZmlncyB0byByZXBsaWNhdGUgYW5kIHRlc3QgdGhlIGVudmlyb25tZW50IHByb3Blcmx5LiBgQ0ZHODAyMTFgIGlzIG9idmlvdXMsIGFuZCBJJiMzOTtsbCBuZWVkIGBNQUM4MDIxMWAsIHdoaWNoIGlzIGdlbmVyYWxseSBhIHByZS1yZXF1aXNpdGUgZm9yIGBNQUM4MDIxMV9IV1NJTWAuCgpGaW5hbGx5LCB0byBzZWUgaWYgdGhlcmUmIzM5O3MgYW55dGhpbmcgZWxzZSByZWxhdGVkIHRvIFBNU1IgdGhhdCBJIG1pZ2h0IGJlIG1pc3NpbmcsIEkmIzM5O2xsIHJ1biBhIHF1aWNrIGdyZXAgb24gdGhlIGBuZXQvd2lyZWxlc3MvYCBkaXJlY3RvcnkgZm9yIGVpdGhlciBgY2ZnODAyMTFfcG1zcl9mcmVlX3drYCBvciBqdXN0IGBwbXNyYC4gVGhpcyB3aWxsIGhlbHAgbWUgZW5zdXJlIHRoYXQgdGhlcmUgYXJlIG5vIG9ic2N1cmUgUE1TUi1yZWxhdGVkIGNvbmZpZ3VyYXRpb25zIHRoYXQgSSYjMzk7bSBvdmVybG9va2luZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAxMDoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjZmc4MDIxMV9wbXNyX2ZyZWVfd2smIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvd2lyZWxlc3MvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC93aXJlbGVzcy9jb3JlLmM9MTYwOT12b2lkIGNmZzgwMjExX2luaXRfd2RldihzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2KVxuLS1cbm5ldC93aXJlbGVzcy9jb3JlLmMtMTYxNS1cdHNwaW5fbG9ja19pbml0KFx1MDAyNndkZXYtXHUwMDNlcG1zcl9sb2NrKTtcbm5ldC93aXJlbGVzcy9jb3JlLmM6MTYxNjpcdHdpcGh5X3dvcmtfaW5pdChcdTAwMjZ3ZGV2LVx1MDAzZXBtc3JfZnJlZV93aywgY2ZnODAyMTFfcG1zcl9mcmVlX3drKTtcbm5ldC93aXJlbGVzcy9jb3JlLmMtMTYxNy1cbi0tXG5uZXQvd2lyZWxlc3MvY29yZS5oPTU4OD12b2lkIGNmZzgwMjExX3Btc3Jfd2Rldl9kb3duKHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYpO1xubmV0L3dpcmVsZXNzL2NvcmUuaDo1ODk6dm9pZCBjZmc4MDIxMV9wbXNyX2ZyZWVfd2soc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcGh5X3dvcmsgKndvcmspO1xubmV0L3dpcmVsZXNzL2NvcmUuaC01OTAtXG4tLVxubmV0L3dpcmVsZXNzL3Btc3IuYz03ODc9c3RhdGljIHZvaWQgY2ZnODAyMTFfcG1zcl9wcm9jZXNzX2Fib3J0KHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYpXG4tLVxubmV0L3dpcmVsZXNzL3Btc3IuYy04MDktXG5uZXQvd2lyZWxlc3MvcG1zci5jOjgxMDp2b2lkIGNmZzgwMjExX3Btc3JfZnJlZV93ayhzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lwaHlfd29yayAqd29yaylcbm5ldC93aXJlbGVzcy9wbXNyLmMtODExLXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAxMDoxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NDM4CgkJCQkJCQlvdXRwdXQ6IDI2CgkJCQkJCQl0aG91Z2h0czogMTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6CgoqKktjb25maWcgRGl2ZSBmb3IgUE1TUioqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZmluZCBvdXQgYWJvdXQgUE1TUi4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gZ28gc3RyYWlnaHQgdG8gdGhlIHNvdXJjZSwgdGhlIGNvcmUgb2YgaG93IHRoZSB3aXJlbGVzcyBjb25maWd1cmF0aW9uIGlzIHN0cnVjdHVyZWQuIFRoYXQgbWVhbnMgZGl2aW5nIGludG8gdGhlIGBuZXQvd2lyZWxlc3MvS2NvbmZpZ2AgZmlsZS4gSXQmIzM5O3MgdGhlIGNlbnRyYWwgY29uZmlndXJhdGlvbiBmaWxlIGZvciBhbnl0aGluZyBhbmQgZXZlcnl0aGluZyB3aXJlbGVzcyByZWxhdGVkIGluIHRoZSBrZXJuZWwuIFRoaXMgaXMgd2hlcmUgSSYjMzk7ZCBleHBlY3QgdG8gZmluZCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gUE1TUi4gSG9wZWZ1bGx5LCBpdCYjMzk7cyBjbGVhcmx5IG5hbWVkIG9yIGhhcyBzb21lIG9idmlvdXMgZGVwZW5kZW5jaWVzIHRoYXQgd2lsbCBwb2ludCBtZSBpbiB0aGUgcmlnaHQgZGlyZWN0aW9uLiBJdCYjMzk7cyBhIGJpdCBvZiBhIGRhdGEtbWluaW5nIGV4ZXJjaXNlLCBidXQgdGhpcyBpcyB0aGUgbG9naWNhbCBmaXJzdCBzdGVwIGZvciB1bmRlcnN0YW5kaW5nIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXZhaWxhYmxlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiBQTVNSIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCwgaG93IGl0IGlzIGV4cG9zZWQgdG8gdGhlIHVzZXIsIGFuZCBpZiBpdCYjMzk7cyBkZXBlbmRlbnQgb24gYW55IG90aGVyIG9wdGlvbnMuIExldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyBpbiB0aGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAxMDoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtQTVNSJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3dpcmVsZXNzLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNTY4IGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jPTQ2MT1zdGF0aWMgY29uc3Qgc3RydWN0IG5sYV9wb2xpY3lcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6NDYyOm5sODAyMTFfcG1zcl9mdG1fcmVxX2F0dHJfcG9saWN5W05MODAyMTFfUE1TUl9GVE1fUkVRX0FUVFJfTUFYICYjNDM7IDFdID0ge1xubmV0L3dpcmVsZXNzL25sODAyMTEuYzo0NjM6XHRbTkw4MDIxMV9QTVNSX0ZUTV9SRVFfQVRUUl9BU0FQXSA9IHsgLnR5cGUgPSBOTEFfRkxBRyB9LFxubmV0L3dpcmVsZXNzL25sODAyMTEuYzo0NjQ6XHRbTkw4MDIxMV9QTVNSX0ZUTV9SRVFfQVRUUl9QUkVBTUJMRV0gPSB7IC50eXBlID0gTkxBX1UzMiB9LFxubmV0L3dpcmVsZXNzL25sODAyMTEuYzo0NjU6XHRbTkw4MDIxMV9QTVNSX0ZUTV9SRVFfQVRUUl9OVU1fQlVSU1RTX0VYUF0gPVxubmV0L3dpcmVsZXNzL25sODAyMTEuYy00NjYtXHRcdE5MQV9QT0xJQ1lfTUFYKE5MQV9VOCwgMTUpLFxubmV0L3dpcmVsZXNzL25sODAyMTEuYzo0Njc6XHRbTkw4MDIxMV9QTVNSX0ZUTV9SRVFfQVRUUl9CVVJTVF9QRVJJT0RdID0geyAudHlwZSA9IE5MQV9VMTYgfSxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6NDY4Olx0W05MODAyMTFfUE1TUl9GVE1fUkVRX0FUVFJfQlVSU1RfRFVSQVRJT05dID1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtNDY5LVx0XHROTEFfUE9MSUNZX01BWChOTEFfVTgsIDE1KSxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6NDcwOlx0W05MODAyMTFfUE1TUl9GVE1fUkVRX0FUVFJfRlRNU19QRVJfQlVSU1RdID0geyAudHlwZSA9IE5MQV9VOCB9LFxubmV0L3dpcmVsZXNzL25sODAyMTEuYzo0NzE6XHRbTkw4MDIxMV9QTVNSX0ZUTV9SRVFfQVRUUl9OVU1fRlRNUl9SRVRSSUVTXSA9IHsgLnR5cGUgPSBOTEFfVTggfSxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6NDcyOlx0W05MODAyMTFfUE1TUl9GVE1fUkVRX0FUVFJfUkVRVUVTVF9MQ0ldID0geyAudHlwZSA9IE5MQV9GTEFHIH0sXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjQ3MzpcdFtOTDgwMjExX1BNU1JfRlRNX1JFUV9BVFRSX1JFUVVFU1RfQ0lWSUNMT0NdID0geyAudHlwZSA9IE5MQV9GTEFHIH0sXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjQ3NDpcdFtOTDgwMjExX1BNU1JfRlRNX1JFUV9BVFRSX1RSSUdHRVJfQkFTRURdID0geyAudHlwZSA9IE5MQV9GTEFHIH0sXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjQ3NTpcdFtOTDgwMjExX1BNU1JfRlRNX1JFUV9BVFRSX05PTl9UUklHR0VSX0JBU0VEXSA9IHsgLnR5cGUgPSBOTEFfRkxBRyB9LFxubmV0L3dpcmVsZXNzL25sODAyMTEuYzo0NzY6XHRbTkw4MDIxMV9QTVNSX0ZUTV9SRVFfQVRUUl9MTVJfRkVFREJBQ0tdID0geyAudHlwZSA9IE5MQV9GTEFHIH0sXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjQ3NzpcdFtOTDgwMjExX1BNU1JfRlRNX1JFUV9BVFRSX0JTU19DT0xPUl0gPSB7IC50eXBlID0gTkxBX1U4IH0sXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjQ3ODpcdFtOTDgwMjExX1BNU1JfRlRNX1JFUV9BVFRSX1JTVEFdID0geyAudHlwZSA9IE5MQV9GTEFHIH0sXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjQ3OTpcdFtOTDgwMjExX1BNU1JfRlRNX1JFUV9BVFRSX01JTl9USU1FX0JFVFdFRU5fTUVBU1VSRU1FTlRTXSA9IHtcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtNDgwLVx0XHQudHlwZSA9IE5MQV9VMzJcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtNDgxLVx0fSxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6NDgyOlx0W05MODAyMTFfUE1TUl9GVE1fUkVRX0FUVFJfTUFYX1RJTUVfQkVUV0VFTl9NRUFTVVJFTUVOVFNdID0ge1xubmV0L3dpcmVsZXNzL25sODAyMTEuYy00ODMtXHRcdC50eXBlID0gTkxBX1UzMlxubmV0L3dpcmVsZXNzL25sODAyMTEuYy00ODQtXHR9LFxubmV0L3dpcmVsZXNzL25sODAyMTEuYzo0ODU6XHRbTkw4MDIxMV9QTVNSX0ZUTV9SRVFfQVRUUl9OT01JTkFMX1RJTUVdID0geyAudHlwZSA9IE5MQV9VMzIgfSxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6NDg2Olx0W05MODAyMTFfUE1TUl9GVE1fUkVRX0FUVFJfQVdfRFVSQVRJT05dID0gTkxBX1BPTElDWV9NQVgoTkxBX1UzMiwgMjU1KSxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6NDg3Olx0W05MODAyMTFfUE1TUl9GVE1fUkVRX0FUVFJfTlVNX01FQVNVUkVNRU5UU10gPSB7IC50eXBlID0gTkxBX1UzMiB9LFxubmV0L3dpcmVsZXNzL25sODAyMTEuYzo0ODg6XHRbTkw4MDIxMV9QTVNSX0ZUTV9SRVFfQVRUUl9JTkdSRVNTXSA9IHsgLnR5cGUgPSBOTEFfVTY0IH0sXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjQ4OTpcdFtOTDgwMjExX1BNU1JfRlRNX1JFUV9BVFRSX0VHUkVTU10gPSB7IC50eXBlID0gTkxBX1U2NCB9LFxubmV0L3dpcmVsZXNzL25sODAyMTEuYzo0OTA6XHRbTkw4MDIxMV9QTVNSX0ZUTV9SRVFfQVRUUl9QRF9TVVBQUkVTU19SRVNVTFRTXSA9IHsgLnR5cGUgPSBOTEFfRkxBRyB9LFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy00OTEtfTtcbi0tXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jPTQ5Mz1zdGF0aWMgY29uc3Qgc3RydWN0IG5sYV9wb2xpY3lcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6NDk0Om5sODAyMTFfcG1zcl9yZXFfZGF0YV9wb2xpY3lbTkw4MDIxMV9QTVNSX1RZUEVfTUFYICYjNDM7IDFdID0ge1xubmV0L3dpcmVsZXNzL25sODAyMTEuYzo0OTU6XHRbTkw4MDIxMV9QTVNSX1RZUEVfRlRNXSA9XG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTQ5Ni1cdFx0TkxBX1BPTElDWV9ORVNURUQobmw4MDIxMV9wbXNyX2Z0bV9yZXFfYXR0cl9wb2xpY3kpLFxuLS1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmM9NDk5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeVxubmV0L3dpcmVsZXNzL25sODAyMTEuYzo1MDA6bmw4MDIxMV9wbXNyX3JlcV9hdHRyX3BvbGljeVtOTDgwMjExX1BNU1JfUkVRX0FUVFJfTUFYICYjNDM7IDFdID0ge1xubmV0L3dpcmVsZXNzL25sODAyMTEuYzo1MDE6XHRbTkw4MDIxMV9QTVNSX1JFUV9BVFRSX0RBVEFdID1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtNTAyLVx0XHROTEFfUE9MSUNZX05FU1RFRChubDgwMjExX3Btc3JfcmVxX2RhdGFfcG9saWN5KSxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6NTAzOlx0W05MODAyMTFfUE1TUl9SRVFfQVRUUl9HRVRfQVBfVFNGXSA9IHsgLnR5cGUgPSBOTEFfRkxBRyB9LFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy01MDQtfTtcbi0tXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jPTUwNj1zdGF0aWMgY29uc3Qgc3RydWN0IG5sYV9wb2xpY3lcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6NTA3Om5sODAyMTFfcG1zcl9wZWVyX2F0dHJfcG9saWN5W05MODAyMTFfUE1TUl9QRUVSX0FUVFJfTUFYICYjNDM7IDFdID0ge1xubmV0L3dpcmVsZXNzL25sODAyMTEuYzo1MDg6XHRbTkw4MDIxMV9QTVNSX1BFRVJfQVRUUl9BRERSXSA9IE5MQV9QT0xJQ1lfRVRIX0FERFIsXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjUwOTpcdFtOTDgwMjExX1BNU1JfUEVFUl9BVFRSX0NIQU5dID0gTkxBX1BPTElDWV9ORVNURUQobmw4MDIxMV9wb2xpY3kpLFxubmV0L3dpcmVsZXNzL25sODAyMTEuYzo1MTA6XHRbTkw4MDIxMV9QTVNSX1BFRVJfQVRUUl9SRVFdID1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtNTExLVx0XHROTEFfUE9MSUNZX05FU1RFRChubDgwMjExX3Btc3JfcmVxX2F0dHJfcG9saWN5KSxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6NTEyOlx0W05MODAyMTFfUE1TUl9QRUVSX0FUVFJfUkVTUF0gPSB7IC50eXBlID0gTkxBX1JFSkVDVCB9LFxubmV0L3dpcmVsZXNzL25sODAyMTEuYzo1MTM6XHRbTkw4MDIxMV9QTVNSX1BFRVJfQVRUUl9SRVFfVFlQRV0gPVxubmV0L3dpcmVsZXNzL25sODAyMTEuYzo1MTQ6XHRcdE5MQV9QT0xJQ1lfTUFYKE5MQV9VMzIsIE5MODAyMTFfUE1TUl9GVE1fUkVRX1RZUEVfTUFYKSxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtNTE1LX07XG4tLVxubmV0L3dpcmVsZXNzL25sODAyMTEuYz01MTc9c3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5XG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjUxODpubDgwMjExX3Btc3JfYXR0cl9wb2xpY3lbTkw4MDIxMV9QTVNSX0FUVFJfTUFYICYjNDM7IDFdID0ge1xubmV0L3dpcmVsZXNzL25sODAyMTEuYzo1MTk6XHRbTkw4MDIxMV9QTVNSX0FUVFJfTUFYX1BFRVJTXSA9IHsgLnR5cGUgPSBOTEFfUkVKRUNUIH0sXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjUyMDpcdFtOTDgwMjExX1BNU1JfQVRUUl9SRVBPUlRfQVBfVFNGXSA9IHsgLnR5cGUgPSBOTEFfUkVKRUNUIH0sXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjUyMTpcdFtOTDgwMjExX1BNU1JfQVRUUl9SQU5ET01JWkVfTUFDX0FERFJdID0geyAudHlwZSA9IE5MQV9SRUpFQ1QgfSxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6NTIyOlx0W05MODAyMTFfUE1TUl9BVFRSX1RZUEVfQ0FQQV0gPSB7IC50eXBlID0gTkxBX1JFSkVDVCB9LFxubmV0L3dpcmVsZXNzL25sODAyMTEuYzo1MjM6XHRbTkw4MDIxMV9QTVNSX0FUVFJfUEVFUlNdID1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtNTI0LVx0XHROTEFfUE9MSUNZX05FU1RFRF9BUlJBWShubDgwMjExX3Btc3JfcGVlcl9hdHRyX3BvbGljeSksXG4tLVxubmV0L3dpcmVsZXNzL25sODAyMTEuYz0yNDc4PW5sODAyMTFfc2VuZF9wbXNyX2Z0bV9jYXBhKGNvbnN0IHN0cnVjdCBjZmc4MDIxMV9wbXNyX2NhcGFiaWxpdGllcyAqY2FwLFxuLS1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjQ4NS1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MjQ4NjpcdGZ0bSA9IG5sYV9uZXN0X3N0YXJ0X25vZmxhZyhtc2csIE5MODAyMTFfUE1TUl9UWVBFX0ZUTSk7XG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTI0ODctXHRpZiAoIWZ0bSlcbi0tXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTI0ODktXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjI0OTA6XHRpZiAoY2FwLVx1MDAzZWZ0bS5hc2FwIFx1MDAyNlx1MDAyNiBubGFfcHV0X2ZsYWcobXNnLCBOTDgwMjExX1BNU1JfRlRNX0NBUEFfQVRUUl9BU0FQKSlcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjQ5MS1cdFx0cmV0dXJuIC1FTk9CVUZTO1xubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yNDkyLVx0aWYgKGNhcC1cdTAwM2VmdG0ubm9uX2FzYXAgXHUwMDI2XHUwMDI2XG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjI0OTM6XHQgICAgbmxhX3B1dF9mbGFnKG1zZywgTkw4MDIxMV9QTVNSX0ZUTV9DQVBBX0FUVFJfTk9OX0FTQVApKVxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yNDk0LVx0XHRyZXR1cm4gLUVOT0JVRlM7XG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTI0OTUtXHRpZiAoY2FwLVx1MDAzZWZ0bS5yZXF1ZXN0X2xjaSBcdTAwMjZcdTAwMjZcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MjQ5NjpcdCAgICBubGFfcHV0X2ZsYWcobXNnLCBOTDgwMjExX1BNU1JfRlRNX0NBUEFfQVRUUl9SRVFfTENJKSlcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjQ5Ny1cdFx0cmV0dXJuIC1FTk9CVUZTO1xubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yNDk4LVx0aWYgKGNhcC1cdTAwM2VmdG0ucmVxdWVzdF9jaXZpY2xvYyBcdTAwMjZcdTAwMjZcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MjQ5OTpcdCAgICBubGFfcHV0X2ZsYWcobXNnLCBOTDgwMjExX1BNU1JfRlRNX0NBUEFfQVRUUl9SRVFfQ0lWSUNMT0MpKVxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yNTAwLVx0XHRyZXR1cm4gLUVOT0JVRlM7XG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjI1MDE6XHRpZiAobmxhX3B1dF91MzIobXNnLCBOTDgwMjExX1BNU1JfRlRNX0NBUEFfQVRUUl9QUkVBTUJMRVMsXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTI1MDItXHRcdFx0Y2FwLVx1MDAzZWZ0bS5wcmVhbWJsZXMpKVxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yNTAzLVx0XHRyZXR1cm4gLUVOT0JVRlM7XG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjI1MDQ6XHRpZiAobmxhX3B1dF91MzIobXNnLCBOTDgwMjExX1BNU1JfRlRNX0NBUEFfQVRUUl9CQU5EV0lEVEhTLFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yNTA1LVx0XHRcdGNhcC1cdTAwM2VmdG0uYmFuZHdpZHRocykpXG4tLVxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yNTA3LVx0aWYgKGNhcC1cdTAwM2VmdG0ubWF4X2J1cnN0c19leHBvbmVudCBcdTAwM2U9IDAgXHUwMDI2XHUwMDI2XG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjI1MDg6XHQgICAgbmxhX3B1dF91MzIobXNnLCBOTDgwMjExX1BNU1JfRlRNX0NBUEFfQVRUUl9NQVhfQlVSU1RTX0VYUE9ORU5ULFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yNTA5LVx0XHRcdGNhcC1cdTAwM2VmdG0ubWF4X2J1cnN0c19leHBvbmVudCkpXG4tLVxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yNTExLVx0aWYgKGNhcC1cdTAwM2VmdG0ubWF4X2Z0bXNfcGVyX2J1cnN0IFx1MDAyNlx1MDAyNlxubmV0L3dpcmVsZXNzL25sODAyMTEuYzoyNTEyOlx0ICAgIG5sYV9wdXRfdTMyKG1zZywgTkw4MDIxMV9QTVNSX0ZUTV9DQVBBX0FUVFJfTUFYX0ZUTVNfUEVSX0JVUlNULFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yNTEzLVx0XHRcdGNhcC1cdTAwM2VmdG0ubWF4X2Z0bXNfcGVyX2J1cnN0KSlcbi0tXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTI1MTUtXHRpZiAoY2FwLVx1MDAzZWZ0bS50cmlnZ2VyX2Jhc2VkIFx1MDAyNlx1MDAyNlxubmV0L3dpcmVsZXNzL25sODAyMTEuYzoyNTE2Olx0ICAgIG5sYV9wdXRfZmxhZyhtc2csIE5MODAyMTFfUE1TUl9GVE1fQ0FQQV9BVFRSX1RSSUdHRVJfQkFTRUQpKVxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yNTE3LVx0XHRyZXR1cm4gLUVOT0JVRlM7XG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTI1MTgtXHRpZiAoY2FwLVx1MDAzZWZ0bS5ub25fdHJpZ2dlcl9iYXNlZCBcdTAwMjZcdTAwMjZcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MjUxOTpcdCAgICBubGFfcHV0X2ZsYWcobXNnLCBOTDgwMjExX1BNU1JfRlRNX0NBUEFfQVRUUl9OT05fVFJJR0dFUl9CQVNFRCkpXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTI1MjAtXHRcdHJldHVybiAtRU5PQlVGUztcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjUyMS1cdGlmIChjYXAtXHUwMDNlZnRtLnN1cHBvcnRfNmdoeiBcdTAwMjZcdTAwMjZcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MjUyMjpcdCAgICBubGFfcHV0X2ZsYWcobXNnLCBOTDgwMjExX1BNU1JfRlRNX0NBUEFfQVRUUl82R0haX1NVUFBPUlQpKVxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yNTIzLVx0XHRyZXR1cm4gLUVOT0JVRlM7XG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjI1MjQ6XHRpZiAobmxhX3B1dF91MzIobXNnLCBOTDgwMjExX1BNU1JfRlRNX0NBUEFfQVRUUl9NQVhfVFhfTFRGX1JFUCxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjUyNS1cdFx0XHRjYXAtXHUwMDNlZnRtLm1heF90eF9sdGZfcmVwKSlcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjUyNi1cdFx0cmV0dXJuIC1FTk9CVUZTO1xubmV0L3dpcmVsZXNzL25sODAyMTEuYzoyNTI3Olx0aWYgKG5sYV9wdXRfdTMyKG1zZywgTkw4MDIxMV9QTVNSX0ZUTV9DQVBBX0FUVFJfTUFYX1JYX0xURl9SRVAsXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTI1MjgtXHRcdFx0Y2FwLVx1MDAzZWZ0bS5tYXhfcnhfbHRmX3JlcCkpXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTI1MjktXHRcdHJldHVybiAtRU5PQlVGUztcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MjUzMDpcdGlmIChubGFfcHV0X3UzMihtc2csIE5MODAyMTFfUE1TUl9GVE1fQ0FQQV9BVFRSX01BWF9UWF9TVFMsXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTI1MzEtXHRcdFx0Y2FwLVx1MDAzZWZ0bS5tYXhfdHhfc3RzKSlcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjUzMi1cdFx0cmV0dXJuIC1FTk9CVUZTO1xubmV0L3dpcmVsZXNzL25sODAyMTEuYzoyNTMzOlx0aWYgKG5sYV9wdXRfdTMyKG1zZywgTkw4MDIxMV9QTVNSX0ZUTV9DQVBBX0FUVFJfTUFYX1JYX1NUUyxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjUzNC1cdFx0XHRjYXAtXHUwMDNlZnRtLm1heF9yeF9zdHMpKVxuLS1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjUzNi1cdGlmIChjYXAtXHUwMDNlZnRtLm1heF90b3RhbF9sdGZfdHggXHUwMDNlIDAgXHUwMDI2XHUwMDI2XG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjI1Mzc6XHQgICAgbmxhX3B1dF91MzIobXNnLCBOTDgwMjExX1BNU1JfRlRNX0NBUEFfQVRUUl9NQVhfVE9UQUxfTFRGX1RYLFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yNTM4LVx0XHRcdGNhcC1cdTAwM2VmdG0ubWF4X3RvdGFsX2x0Zl90eCkpXG4tLVxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yNTQwLVx0aWYgKGNhcC1cdTAwM2VmdG0ubWF4X3RvdGFsX2x0Zl9yeCBcdTAwM2UgMCBcdTAwMjZcdTAwMjZcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MjU0MTpcdCAgICBubGFfcHV0X3UzMihtc2csIE5MODAyMTFfUE1TUl9GVE1fQ0FQQV9BVFRSX01BWF9UT1RBTF9MVEZfUlgsXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTI1NDItXHRcdFx0Y2FwLVx1MDAzZWZ0bS5tYXhfdG90YWxfbHRmX3J4KSlcbi0tXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTI1NDktXHRcdGlzdGFfY2FwcyA9IG5sYV9uZXN0X3N0YXJ0X25vZmxhZyhtc2csXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjI1NTA6XHRcdFx0XHRcdFx0ICBOTDgwMjExX1BNU1JfRlRNX0NBUEFfQVRUUl9JU1RBX0NBUFMpO1xubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yNTUxLVx0XHRpZiAoIWlzdGFfY2Fwcylcbi0tXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTI1NTMtXHRcdGlmIChjYXAtXHUwMDNlZnRtLmlzdGEuc3VwcG9ydF9udGIgXHUwMDI2XHUwMDI2XG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjI1NTQ6XHRcdCAgICBubGFfcHV0X2ZsYWcobXNnLCBOTDgwMjExX1BNU1JfRlRNX0NBUEFfQVRUUl9TVVBQT1JUX05UQikpXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTI1NTUtXHRcdFx0cmV0dXJuIC1FTk9CVUZTO1xubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yNTU2LVx0XHRpZiAoY2FwLVx1MDAzZWZ0bS5pc3RhLnN1cHBvcnRfdGIgXHUwMDI2XHUwMDI2XG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjI1NTc6XHRcdCAgICBubGFfcHV0X2ZsYWcobXNnLCBOTDgwMjExX1BNU1JfRlRNX0NBUEFfQVRUUl9TVVBQT1JUX1RCKSlcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjU1OC1cdFx0XHRyZXR1cm4gLUVOT0JVRlM7XG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTI1NTktXHRcdGlmIChjYXAtXHUwMDNlZnRtLmlzdGEuc3VwcG9ydF9lZGNhIFx1MDAyNlx1MDAyNlxubmV0L3dpcmVsZXNzL25sODAyMTEuYzoyNTYwOlx0XHQgICAgbmxhX3B1dF9mbGFnKG1zZywgTkw4MDIxMV9QTVNSX0ZUTV9DQVBBX0FUVFJfU1VQUE9SVF9FRENBKSlcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjU2MS1cdFx0XHRyZXR1cm4gLUVOT0JVRlM7XG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTI1NjItXHRcdGlmIChjYXAtXHUwMDNlZnRtLmlzdGEubWF4X3BlZXJzIFx1MDAyNlx1MDAyNlxubmV0L3dpcmVsZXNzL25sODAyMTEuYzoyNTYzOlx0XHQgICAgbmxhX3B1dF91MzIobXNnLCBOTDgwMjExX1BNU1JfQVRUUl9NQVhfUEVFUl9JU1RBX1JPTEUsXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTI1NjQtXHRcdFx0XHRjYXAtXHUwMDNlZnRtLmlzdGEubWF4X3BlZXJzKSlcbi0tXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTI1NzctXHRcdCAqL1xubmV0L3dpcmVsZXNzL25sODAyMTEuYzoyNTc4Olx0XHRpZiAobmxhX3B1dF9mbGFnKG1zZywgTkw4MDIxMV9QTVNSX0ZUTV9DQVBBX0FUVFJfUlNUQV9TVVBQT1JUKSlcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjU3OS1cdFx0XHRyZXR1cm4gLUVOT0JVRlM7XG4tLVxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yNTgxLVx0XHRyc3RhX2NhcHMgPSBubGFfbmVzdF9zdGFydF9ub2ZsYWcobXNnLFxubmV0L3dpcmVsZXNzL25sODAyMTEuYzoyNTgyOlx0XHRcdFx0XHRcdCAgTkw4MDIxMV9QTVNSX0ZUTV9DQVBBX0FUVFJfUlNUQV9DQVBTKTtcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjU4My1cdFx0aWYgKCFyc3RhX2NhcHMpXG4tLVxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yNTg1LVx0XHRpZiAoY2FwLVx1MDAzZWZ0bS5yc3RhLnN1cHBvcnRfbnRiIFx1MDAyNlx1MDAyNlxubmV0L3dpcmVsZXNzL25sODAyMTEuYzoyNTg2Olx0XHQgICAgbmxhX3B1dF9mbGFnKG1zZywgTkw4MDIxMV9QTVNSX0ZUTV9DQVBBX0FUVFJfU1VQUE9SVF9OVEIpKVxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yNTg3LVx0XHRcdHJldHVybiAtRU5PQlVGUztcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjU4OC1cdFx0aWYgKGNhcC1cdTAwM2VmdG0ucnN0YS5zdXBwb3J0X3RiIFx1MDAyNlx1MDAyNlxubmV0L3dpcmVsZXNzL25sODAyMTEuYzoyNTg5Olx0XHQgICAgbmxhX3B1dF9mbGFnKG1zZywgTkw4MDIxMV9QTVNSX0ZUTV9DQVBBX0FUVFJfU1VQUE9SVF9UQikpXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTI1OTAtXHRcdFx0cmV0dXJuIC1FTk9CVUZTO1xubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yNTkxLVx0XHRpZiAoY2FwLVx1MDAzZWZ0bS5yc3RhLnN1cHBvcnRfZWRjYSBcdTAwMjZcdTAwMjZcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MjU5MjpcdFx0ICAgIG5sYV9wdXRfZmxhZyhtc2csIE5MODAyMTFfUE1TUl9GVE1fQ0FQQV9BVFRSX1NVUFBPUlRfRURDQSkpXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTI1OTMtXHRcdFx0cmV0dXJuIC1FTk9CVUZTO1xubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yNTk0LVx0XHRpZiAoY2FwLVx1MDAzZWZ0bS5yc3RhLm1heF9wZWVycyBcdTAwMjZcdTAwMjZcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MjU5NTpcdFx0ICAgIG5sYV9wdXRfdTMyKG1zZywgTkw4MDIxMV9QTVNSX0FUVFJfTUFYX1BFRVJfUlNUQV9ST0xFLFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yNTk2LVx0XHRcdFx0Y2FwLVx1MDAzZWZ0bS5yc3RhLm1heF9wZWVycykpXG4tLVxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yNjAxLVx0aWYgKGNhcC1cdTAwM2VmdG0ubWF4X25vX29mX3R4X2FudGVubmFzIFx1MDAyNlx1MDAyNlxubmV0L3dpcmVsZXNzL25sODAyMTEuYzoyNjAyOlx0ICAgIG5sYV9wdXRfdTgobXNnLCBOTDgwMjExX1BNU1JfRlRNX0NBUEFfQVRUUl9NQVhfTlVNX1RYX0FOVEVOTkFTLFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yNjAzLVx0XHQgICAgICAgY2FwLVx1MDAzZWZ0bS5tYXhfbm9fb2ZfdHhfYW50ZW5uYXMpKVxuLS1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjYwNi1cdGlmIChjYXAtXHUwMDNlZnRtLm1heF9ub19vZl9yeF9hbnRlbm5hcyBcdTAwMjZcdTAwMjZcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MjYwNzpcdCAgICBubGFfcHV0X3U4KG1zZywgTkw4MDIxMV9QTVNSX0ZUTV9DQVBBX0FUVFJfTUFYX05VTV9SWF9BTlRFTk5BUyxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjYwOC1cdFx0ICAgICAgIGNhcC1cdTAwM2VmdG0ubWF4X25vX29mX3J4X2FudGVubmFzKSlcbi0tXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTI2MTEtXHRpZiAoY2FwLVx1MDAzZWZ0bS5taW5fYWxsb3dlZF9yYW5naW5nX2ludGVydmFsX2VkY2EgXHUwMDI2XHUwMDI2XG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjI2MTI6XHQgICAgbmxhX3B1dF91MzIobXNnLCBOTDgwMjExX1BNU1JfRlRNX0NBUEFfQVRUUl9NSU5fSU5URVJWQUxfRURDQSxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjYxMy1cdFx0XHRjYXAtXHUwMDNlZnRtLm1pbl9hbGxvd2VkX3JhbmdpbmdfaW50ZXJ2YWxfZWRjYSkpXG4tLVxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yNjE2LVx0aWYgKGNhcC1cdTAwM2VmdG0ubWluX2FsbG93ZWRfcmFuZ2luZ19pbnRlcnZhbF9udGIgXHUwMDI2XHUwMDI2XG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjI2MTc6XHQgICAgbmxhX3B1dF91MzIobXNnLCBOTDgwMjExX1BNU1JfRlRNX0NBUEFfQVRUUl9NSU5fSU5URVJWQUxfTlRCLFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yNjE4LVx0XHRcdGNhcC1cdTAwM2VmdG0ubWluX2FsbG93ZWRfcmFuZ2luZ19pbnRlcnZhbF9udGIpKVxuLS1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjYyNC1cdFx0cGRfY2FwcyA9IG5sYV9uZXN0X3N0YXJ0X25vZmxhZyhtc2csXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjI2MjU6XHRcdFx0XHRcdFx0Tkw4MDIxMV9QTVNSX0ZUTV9DQVBBX0FUVFJfVFlQRV9DQVBTKTtcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjYyNi1cdFx0aWYgKCFwZF9jYXBzKVxuLS1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjYyOS1cdFx0aWYgKGNhcC1cdTAwM2VmdG0udHlwZS5pbmZyYV9zdXBwb3J0IFx1MDAyNlx1MDAyNlxubmV0L3dpcmVsZXNzL25sODAyMTEuYzoyNjMwOlx0XHQgICAgbmxhX3B1dF9mbGFnKG1zZywgTkw4MDIxMV9QTVNSX0ZUTV9UWVBFX0NBUEFfQVRUUl9JTkZSQV9TVVBQT1JUKSlcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjYzMS1cdFx0XHRyZXR1cm4gLUVOT0JVRlM7XG4tLVxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yNjMzLVx0XHRpZiAoY2FwLVx1MDAzZWZ0bS50eXBlLnBkX3N1cHBvcnQgXHUwMDI2XHUwMDI2XG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjI2MzQ6XHRcdCAgICBubGFfcHV0X2ZsYWcobXNnLCBOTDgwMjExX1BNU1JfRlRNX1RZUEVfQ0FQQV9BVFRSX1BEX1NVUFBPUlQpKVxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yNjM1LVx0XHRcdHJldHVybiAtRU5PQlVGUztcbi0tXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTI2NDAtXHRpZiAoY2FwLVx1MDAzZWZ0bS5jb25jdXJyZW50X2lzdGFfcnN0YV9zdXBwb3J0IFx1MDAyNlx1MDAyNlxubmV0L3dpcmVsZXNzL25sODAyMTEuYzoyNjQxOlx0ICAgIG5sYV9wdXRfZmxhZyhtc2csIE5MODAyMTFfUE1TUl9GVE1fQ0FQQV9BVFRSX0NPTkNVUlJFTlRfSVNUQV9SU1RBX1NVUFBPUlQpKVxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yNjQyLVx0XHRyZXR1cm4gLUVOT0JVRlM7XG4tLVxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yNjQ1LVx0XHRpZiAoY2FwLVx1MDAzZWZ0bS5wZF9wcmVhbWJsZXMgXHUwMDI2XHUwMDI2XG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjI2NDY6XHRcdCAgICBubGFfcHV0X3UzMihtc2csIE5MODAyMTFfUE1TUl9GVE1fQ0FQQV9BVFRSX1BEX1BSRUFNQkxFUyxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjY0Ny1cdFx0XHRcdGNhcC1cdTAwM2VmdG0ucGRfcHJlYW1ibGVzKSlcbi0tXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTI2NDktXHRcdGlmIChjYXAtXHUwMDNlZnRtLnBkX2JhbmR3aWR0aHMgXHUwMDI2XHUwMDI2XG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjI2NTA6XHRcdCAgICBubGFfcHV0X3UzMihtc2csIE5MODAyMTFfUE1TUl9GVE1fQ0FQQV9BVFRSX1BEX0JBTkRXSURUSFMsXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTI2NTEtXHRcdFx0XHRjYXAtXHUwMDNlZnRtLnBkX2JhbmR3aWR0aHMpKVxuLS1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmM9MjY1OT1zdGF0aWMgaW50IG5sODAyMTFfc2VuZF9wbXNyX2NhcGEoc3RydWN0IGNmZzgwMjExX3JlZ2lzdGVyZWRfZGV2aWNlICpyZGV2LFxuLS1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjY3Ni1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MjY3NzpcdGlmIChubGFfcHV0X3UzMihtc2csIE5MODAyMTFfUE1TUl9BVFRSX01BWF9QRUVSUywgY2FwLVx1MDAzZW1heF9wZWVycykpXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTI2NzgtXHRcdHJldHVybiAtRU5PQlVGUztcbi0tXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTI2ODAtXHRpZiAoY2FwLVx1MDAzZXJlcG9ydF9hcF90c2YgXHUwMDI2XHUwMDI2XG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjI2ODE6XHQgICAgbmxhX3B1dF9mbGFnKG1zZywgTkw4MDIxMV9QTVNSX0FUVFJfUkVQT1JUX0FQX1RTRikpXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTI2ODItXHRcdHJldHVybiAtRU5PQlVGUztcbi0tXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTI2ODQtXHRpZiAoY2FwLVx1MDAzZXJhbmRvbWl6ZV9tYWNfYWRkciBcdTAwMjZcdTAwMjZcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MjY4NTpcdCAgICBubGFfcHV0X2ZsYWcobXNnLCBOTDgwMjExX1BNU1JfQVRUUl9SQU5ET01JWkVfTUFDX0FERFIpKVxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yNjg2LVx0XHRyZXR1cm4gLUVOT0JVRlM7XG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTI2ODctXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjI2ODg6XHRjYXBzID0gbmxhX25lc3Rfc3RhcnRfbm9mbGFnKG1zZywgTkw4MDIxMV9QTVNSX0FUVFJfVFlQRV9DQVBBKTtcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjY4OS1cdGlmICghY2Fwcylcbi0tXG5uZXQvd2lyZWxlc3MvcG1zci5jPTEwPXN0YXRpYyBpbnQgcG1zcl9wYXJzZV9mdG0oc3RydWN0IGNmZzgwMjExX3JlZ2lzdGVyZWRfZGV2aWNlICpyZGV2LFxuLS1cbm5ldC93aXJlbGVzcy9wbXNyLmMtMTUtXHRjb25zdCBzdHJ1Y3QgY2ZnODAyMTFfcG1zcl9jYXBhYmlsaXRpZXMgKmNhcGEgPSByZGV2LVx1MDAzZXdpcGh5LnBtc3JfY2FwYTtcbm5ldC93aXJlbGVzcy9wbXNyLmM6MTY6XHRzdHJ1Y3QgbmxhdHRyICp0YltOTDgwMjExX1BNU1JfRlRNX1JFUV9BVFRSX01BWCAmIzQzOyAxXTtcbm5ldC93aXJlbGVzcy9wbXNyLmMtMTctXHR1MzIgcHJlYW1ibGUgPSBOTDgwMjExX1BSRUFNQkxFX0RNRzsgLyogb25seSBvcHRpb25hbCBpbiBETUcgKi9cbi0tXG5uZXQvd2lyZWxlc3MvcG1zci5jLTE5LVx0LyogdmFsaWRhdGUgZXhpc3RpbmcgZGF0YSAqL1xubmV0L3dpcmVsZXNzL3Btc3IuYzoyMDpcdGlmIChvdXQtXHUwMDNlZnRtLnJlcXVlc3RfdHlwZSA9PSBOTDgwMjExX1BNU1JfRlRNX1JFUV9UWVBFX0lORlJBIFx1MDAyNlx1MDAyNlxubmV0L3dpcmVsZXNzL3Btc3IuYy0yMS1cdCAgICAhKGNhcGEtXHUwMDNlZnRtLmJhbmR3aWR0aHMgXHUwMDI2IEJJVChvdXQtXHUwMDNlY2hhbmRlZi53aWR0aCkpKSB7XG4tLVxubmV0L3dpcmVsZXNzL3Btc3IuYy0yNS1cbm5ldC93aXJlbGVzcy9wbXNyLmM6MjY6XHRpZiAob3V0LVx1MDAzZWZ0bS5yZXF1ZXN0X3R5cGUgPT0gTkw4MDIxMV9QTVNSX0ZUTV9SRVFfVFlQRV9QRCBcdTAwMjZcdTAwMjZcbm5ldC93aXJlbGVzcy9wbXNyLmMtMjctXHQgICAgIShjYXBhLVx1MDAzZWZ0bS5wZF9iYW5kd2lkdGhzIFx1MDAyNiBCSVQob3V0LVx1MDAzZWNoYW5kZWYud2lkdGgpKSkge1xuLS1cbm5ldC93aXJlbGVzcy9wbXNyLmMtMzMtXHQvKiBubyB2YWxpZGF0aW9uIG5lZWRlZCAtIHdhcyBhbHJlYWR5IGRvbmUgdmlhIG5lc3RlZCBwb2xpY3kgKi9cbm5ldC93aXJlbGVzcy9wbXNyLmM6MzQ6XHRubGFfcGFyc2VfbmVzdGVkX2RlcHJlY2F0ZWQodGIsIE5MODAyMTFfUE1TUl9GVE1fUkVRX0FUVFJfTUFYLCBmdG1yZXEsXG5uZXQvd2lyZWxlc3MvcG1zci5jLTM1LVx0XHRcdFx0ICAgIE5VTEwsIE5VTEwpO1xubmV0L3dpcmVsZXNzL3Btc3IuYy0zNi1cbm5ldC93aXJlbGVzcy9wbXNyLmM6Mzc6XHRpZiAodGJbTkw4MDIxMV9QTVNSX0ZUTV9SRVFfQVRUUl9QUkVBTUJMRV0pXG5uZXQvd2lyZWxlc3MvcG1zci5jOjM4Olx0XHRwcmVhbWJsZSA9IG5sYV9nZXRfdTMyKHRiW05MODAyMTFfUE1TUl9GVE1fUkVRX0FUVFJfUFJFQU1CTEVdKTtcbm5ldC93aXJlbGVzcy9wbXNyLmMtMzktXG4tLVxubmV0L3dpcmVsZXNzL3Btc3IuYy00Ny1cdGRlZmF1bHQ6XG5uZXQvd2lyZWxlc3MvcG1zci5jOjQ4Olx0XHRpZiAoIXRiW05MODAyMTFfUE1TUl9GVE1fUkVRX0FUVFJfUFJFQU1CTEVdKSB7XG5uZXQvd2lyZWxlc3MvcG1zci5jLTQ5LVx0XHRcdE5MX1NFVF9FUlJfTVNHKGluZm8tXHUwMDNlZXh0YWNrLFxuLS1cbm5ldC93aXJlbGVzcy9wbXNyLmMtNTQtXG5uZXQvd2lyZWxlc3MvcG1zci5jOjU1Olx0aWYgKG91dC1cdTAwM2VmdG0ucmVxdWVzdF90eXBlID09IE5MODAyMTFfUE1TUl9GVE1fUkVRX1RZUEVfSU5GUkEgXHUwMDI2XHUwMDI2XG5uZXQvd2lyZWxlc3MvcG1zci5jLTU2LVx0ICAgICEoY2FwYS1cdTAwM2VmdG0ucHJlYW1ibGVzIFx1MDAyNiBCSVQocHJlYW1ibGUpKSkge1xubmV0L3dpcmVsZXNzL3Btc3IuYy01Ny1cdFx0TkxfU0VUX0VSUl9NU0dfQVRUUihpbmZvLVx1MDAzZWV4dGFjayxcbm5ldC93aXJlbGVzcy9wbXNyLmM6NTg6XHRcdFx0XHQgICAgdGJbTkw4MDIxMV9QTVNSX0ZUTV9SRVFfQVRUUl9QUkVBTUJMRV0sXG5uZXQvd2lyZWxlc3MvcG1zci5jLTU5LVx0XHRcdFx0ICAgIFwmIzM0O0ZUTTogaW52YWxpZCBwcmVhbWJsZVwmIzM0Oyk7XG4tLVxubmV0L3dpcmVsZXNzL3Btc3IuYy02Mi1cbm5ldC93aXJlbGVzcy9wbXNyLmM6NjM6XHRpZiAob3V0LVx1MDAzZWZ0bS5yZXF1ZXN0X3R5cGUgPT0gTkw4MDIxMV9QTVNSX0ZUTV9SRVFfVFlQRV9QRCBcdTAwMjZcdTAwMjZcbm5ldC93aXJlbGVzcy9wbXNyLmMtNjQtXHQgICAgIShjYXBhLVx1MDAzZWZ0bS5wZF9wcmVhbWJsZXMgXHUwMDI2IEJJVChwcmVhbWJsZSkpKSB7XG5uZXQvd2lyZWxlc3MvcG1zci5jLTY1LVx0XHROTF9TRVRfRVJSX01TR19BVFRSKGluZm8tXHUwMDNlZXh0YWNrLFxubmV0L3dpcmVsZXNzL3Btc3IuYzo2NjpcdFx0XHRcdCAgICB0YltOTDgwMjExX1BNU1JfRlRNX1JFUV9BVFRSX1BSRUFNQkxFXSxcbm5ldC93aXJlbGVzcy9wbXNyLmMtNjctXHRcdFx0XHQgICAgXCYjMzQ7RlRNOiBpbnZhbGlkIHByZWFtYmxlIGZvciBQRCByZXF1ZXN0XCYjMzQ7KTtcbi0tXG5uZXQvd2lyZWxlc3MvcG1zci5jLTczLVx0b3V0LVx1MDAzZWZ0bS5idXJzdF9wZXJpb2QgPSAwO1xubmV0L3dpcmVsZXNzL3Btc3IuYzo3NDpcdGlmICh0YltOTDgwMjExX1BNU1JfRlRNX1JFUV9BVFRSX0JVUlNUX1BFUklPRF0pXG5uZXQvd2lyZWxlc3MvcG1zci5jLTc1LVx0XHRvdXQtXHUwMDNlZnRtLmJ1cnN0X3BlcmlvZCA9XG5uZXQvd2lyZWxlc3MvcG1zci5jOjc2Olx0XHRcdG5sYV9nZXRfdTE2KHRiW05MODAyMTFfUE1TUl9GVE1fUkVRX0FUVFJfQlVSU1RfUEVSSU9EXSk7XG5uZXQvd2lyZWxlc3MvcG1zci5jLTc3LVxubmV0L3dpcmVsZXNzL3Btc3IuYzo3ODpcdG91dC1cdTAwM2VmdG0uYXNhcCA9ICEhdGJbTkw4MDIxMV9QTVNSX0ZUTV9SRVFfQVRUUl9BU0FQXTtcbm5ldC93aXJlbGVzcy9wbXNyLmMtNzktXHRpZiAob3V0LVx1MDAzZWZ0bS5hc2FwIFx1MDAyNlx1MDAyNiAhY2FwYS1cdTAwM2VmdG0uYXNhcCkge1xubmV0L3dpcmVsZXNzL3Btc3IuYy04MC1cdFx0TkxfU0VUX0VSUl9NU0dfQVRUUihpbmZvLVx1MDAzZWV4dGFjayxcbm5ldC93aXJlbGVzcy9wbXNyLmM6ODE6XHRcdFx0XHQgICAgdGJbTkw4MDIxMV9QTVNSX0ZUTV9SRVFfQVRUUl9BU0FQXSxcbm5ldC93aXJlbGVzcy9wbXNyLmMtODItXHRcdFx0XHQgICAgXCYjMzQ7RlRNOiBBU0FQIG1vZGUgbm90IHN1cHBvcnRlZFwmIzM0Oyk7XG4tLVxubmV0L3dpcmVsZXNzL3Btc3IuYy05Mi1cdG91dC1cdTAwM2VmdG0ubnVtX2J1cnN0c19leHAgPSAwO1xubmV0L3dpcmVsZXNzL3Btc3IuYzo5MzpcdGlmICh0YltOTDgwMjExX1BNU1JfRlRNX1JFUV9BVFRSX05VTV9CVVJTVFNfRVhQXSlcbm5ldC93aXJlbGVzcy9wbXNyLmMtOTQtXHRcdG91dC1cdTAwM2VmdG0ubnVtX2J1cnN0c19leHAgPVxubmV0L3dpcmVsZXNzL3Btc3IuYzo5NTpcdFx0XHRubGFfZ2V0X3U4KHRiW05MODAyMTFfUE1TUl9GVE1fUkVRX0FUVFJfTlVNX0JVUlNUU19FWFBdKTtcbm5ldC93aXJlbGVzcy9wbXNyLmMtOTYtXG4tLVxubmV0L3dpcmVsZXNzL3Btc3IuYy05OS1cdFx0TkxfU0VUX0VSUl9NU0dfQVRUUihpbmZvLVx1MDAzZWV4dGFjayxcbm5ldC93aXJlbGVzcy9wbXNyLmM6MTAwOlx0XHRcdFx0ICAgIHRiW05MODAyMTFfUE1TUl9GVE1fUkVRX0FUVFJfTlVNX0JVUlNUU19FWFBdLFxubmV0L3dpcmVsZXNzL3Btc3IuYy0xMDEtXHRcdFx0XHQgICAgXCYjMzQ7RlRNOiBtYXggTlVNX0JVUlNUU19FWFAgbXVzdCBiZSBzZXQgbG93ZXIgdGhhbiB0aGUgZGV2aWNlIGxpbWl0XCYjMzQ7KTtcbi0tXG5uZXQvd2lyZWxlc3MvcG1zci5jLTEwNS1cdG91dC1cdTAwM2VmdG0uZnRtc19wZXJfYnVyc3QgPSAwO1xubmV0L3dpcmVsZXNzL3Btc3IuYzoxMDY6XHRpZiAodGJbTkw4MDIxMV9QTVNSX0ZUTV9SRVFfQVRUUl9GVE1TX1BFUl9CVVJTVF0pXG5uZXQvd2lyZWxlc3MvcG1zci5jLTEwNy1cdFx0b3V0LVx1MDAzZWZ0bS5mdG1zX3Blcl9idXJzdCA9XG5uZXQvd2lyZWxlc3MvcG1zci5jOjEwODpcdFx0XHRubGFfZ2V0X3U4KHRiW05MODAyMTFfUE1TUl9GVE1fUkVRX0FUVFJfRlRNU19QRVJfQlVSU1RdKTtcbm5ldC93aXJlbGVzcy9wbXNyLmMtMTA5LVxuLS1cbm5ldC93aXJlbGVzcy9wbXNyLmMtMTEyLVx0XHROTF9TRVRfRVJSX01TR19BVFRSKGluZm8tXHUwMDNlZXh0YWNrLFxubmV0L3dpcmVsZXNzL3Btc3IuYzoxMTM6XHRcdFx0XHQgICAgdGJbTkw4MDIxMV9QTVNSX0ZUTV9SRVFfQVRUUl9GVE1TX1BFUl9CVVJTVF0sXG5uZXQvd2lyZWxlc3MvcG1zci5jLTExNC1cdFx0XHRcdCAgICBcJiMzNDtGVE06IEZUTXMgcGVyIGJ1cnN0IG11c3QgYmUgc2V0IGxvd2VyIHRoYW4gdGhlIGRldmljZSBsaW1pdFwmIzM0Oyk7XG4tLVxubmV0L3dpcmVsZXNzL3Btc3IuYy0xMTgtXHRvdXQtXHUwMDNlZnRtLmZ0bXJfcmV0cmllcyA9IDM7XG5uZXQvd2lyZWxlc3MvcG1zci5jOjExOTpcdGlmICh0YltOTDgwMjExX1BNU1JfRlRNX1JFUV9BVFRSX05VTV9GVE1SX1JFVFJJRVNdKVxubmV0L3dpcmVsZXNzL3Btc3IuYy0xMjAtXHRcdG91dC1cdTAwM2VmdG0uZnRtcl9yZXRyaWVzID1cbm5ldC93aXJlbGVzcy9wbXNyLmM6MTIxOlx0XHRcdG5sYV9nZXRfdTgodGJbTkw4MDIxMV9QTVNSX0ZUTV9SRVFfQVRUUl9OVU1fRlRNUl9SRVRSSUVTXSk7XG5uZXQvd2lyZWxlc3MvcG1zci5jLTEyMi1cbm5ldC93aXJlbGVzcy9wbXNyLmM6MTIzOlx0b3V0LVx1MDAzZWZ0bS5yZXF1ZXN0X2xjaSA9ICEhdGJbTkw4MDIxMV9QTVNSX0ZUTV9SRVFfQVRUUl9SRVFVRVNUX0xDSV07XG5uZXQvd2lyZWxlc3MvcG1zci5jLTEyNC1cdGlmIChvdXQtXHUwMDNlZnRtLnJlcXVlc3RfbGNpIFx1MDAyNlx1MDAyNiAhY2FwYS1cdTAwM2VmdG0ucmVxdWVzdF9sY2kpIHtcbm5ldC93aXJlbGVzcy9wbXNyLmMtMTI1LVx0XHROTF9TRVRfRVJSX01TR19BVFRSKGluZm8tXHUwMDNlZXh0YWNrLFxubmV0L3dpcmVsZXNzL3Btc3IuYzoxMjY6XHRcdFx0XHQgICAgdGJbTkw4MDIxMV9QTVNSX0ZUTV9SRVFfQVRUUl9SRVFVRVNUX0xDSV0sXG5uZXQvd2lyZWxlc3MvcG1zci5jLTEyNy1cdFx0XHRcdCAgICBcJiMzNDtGVE06IExDSSByZXF1ZXN0IG5vdCBzdXBwb3J0ZWRcJiMzNDspO1xuLS1cbm5ldC93aXJlbGVzcy9wbXNyLmMtMTMwLVx0b3V0LVx1MDAzZWZ0bS5yZXF1ZXN0X2NpdmljbG9jID1cbm5ldC93aXJlbGVzcy9wbXNyLmM6MTMxOlx0XHQhIXRiW05MODAyMTFfUE1TUl9GVE1fUkVRX0FUVFJfUkVRVUVTVF9DSVZJQ0xPQ107XG5uZXQvd2lyZWxlc3MvcG1zci5jLTEzMi1cdGlmIChvdXQtXHUwMDNlZnRtLnJlcXVlc3RfY2l2aWNsb2MgXHUwMDI2XHUwMDI2ICFjYXBhLVx1MDAzZWZ0bS5yZXF1ZXN0X2NpdmljbG9jKSB7XG5uZXQvd2lyZWxlc3MvcG1zci5jLTEzMy1cdFx0TkxfU0VUX0VSUl9NU0dfQVRUUihpbmZvLVx1MDAzZWV4dGFjayxcbm5ldC93aXJlbGVzcy9wbXNyLmM6MTM0Olx0XHRcdFx0ICAgIHRiW05MODAyMTFfUE1TUl9GVE1fUkVRX0FUVFJfUkVRVUVTVF9DSVZJQ0xPQ10sXG5uZXQvd2lyZWxlc3MvcG1zci5jLTEzNS1cdFx0XHQgICAgXCYjMzQ7RlRNOiBjaXZpYyBsb2NhdGlvbiByZXF1ZXN0IG5vdCBzdXBwb3J0ZWRcJiMzNDspO1xuLS1cbm5ldC93aXJlbGVzcy9wbXNyLmMtMTM4LVx0b3V0LVx1MDAzZWZ0bS50cmlnZ2VyX2Jhc2VkID1cbm5ldC93aXJlbGVzcy9wbXNyLmM6MTM5Olx0XHQhIXRiW05MODAyMTFfUE1TUl9GVE1fUkVRX0FUVFJfVFJJR0dFUl9CQVNFRF07XG5uZXQvd2lyZWxlc3MvcG1zci5jLTE0MC1cdGlmIChvdXQtXHUwMDNlZnRtLnRyaWdnZXJfYmFzZWQgXHUwMDI2XHUwMDI2ICFjYXBhLVx1MDAzZWZ0bS50cmlnZ2VyX2Jhc2VkKSB7XG5uZXQvd2lyZWxlc3MvcG1zci5jLTE0MS1cdFx0TkxfU0VUX0VSUl9NU0dfQVRUUihpbmZvLVx1MDAzZWV4dGFjayxcbm5ldC93aXJlbGVzcy9wbXNyLmM6MTQyOlx0XHRcdFx0ICAgIHRiW05MODAyMTFfUE1TUl9GVE1fUkVRX0FUVFJfVFJJR0dFUl9CQVNFRF0sXG5uZXQvd2lyZWxlc3MvcG1zci5jLTE0My1cdFx0XHRcdCAgICBcJiMzNDtGVE06IHRyaWdnZXIgYmFzZWQgcmFuZ2luZyBpcyBub3Qgc3VwcG9ydGVkXCYjMzQ7KTtcbi0tXG5uZXQvd2lyZWxlc3MvcG1zci5jLTE0Ni1cbm5ldC93aXJlbGVzcy9wbXNyLmM6MTQ3Olx0aWYgKG91dC1cdTAwM2VmdG0ucmVxdWVzdF90eXBlID09IE5MODAyMTFfUE1TUl9GVE1fUkVRX1RZUEVfUEQgXHUwMDI2XHUwMDI2XG5uZXQvd2lyZWxlc3MvcG1zci5jLTE0OC1cdCAgICBvdXQtXHUwMDNlZnRtLnRyaWdnZXJfYmFzZWQpIHtcbi0tXG5uZXQvd2lyZWxlc3MvcG1zci5jLTE1NS1cdG91dC1cdTAwM2VmdG0ubm9uX3RyaWdnZXJfYmFzZWQgPVxubmV0L3dpcmVsZXNzL3Btc3IuYzoxNTY6XHRcdCEhdGJbTkw4MDIxMV9QTVNSX0ZUTV9SRVFfQVRUUl9OT05fVFJJR0dFUl9CQVNFRF07XG5uZXQvd2lyZWxlc3MvcG1zci5jLTE1Ny1cdGlmIChvdXQtXHUwMDNlZnRtLm5vbl90cmlnZ2VyX2Jhc2VkIFx1MDAyNlx1MDAyNiAhY2FwYS1cdTAwM2VmdG0ubm9uX3RyaWdnZXJfYmFzZWQpIHtcbm5ldC93aXJlbGVzcy9wbXNyLmMtMTU4LVx0XHROTF9TRVRfRVJSX01TR19BVFRSKGluZm8tXHUwMDNlZXh0YWNrLFxubmV0L3dpcmVsZXNzL3Btc3IuYzoxNTk6XHRcdFx0XHQgICAgdGJbTkw4MDIxMV9QTVNSX0ZUTV9SRVFfQVRUUl9OT05fVFJJR0dFUl9CQVNFRF0sXG5uZXQvd2lyZWxlc3MvcG1zci5jLTE2MC1cdFx0XHRcdCAgICBcJiMzNDtGVE06IHRyaWdnZXIgYmFzZWQgcmFuZ2luZyBpcyBub3Qgc3VwcG9ydGVkXCYjMzQ7KTtcbi0tXG5uZXQvd2lyZWxlc3MvcG1zci5jLTE2OS1cbm5ldC93aXJlbGVzcy9wbXNyLmM6MTcwOlx0aWYgKG91dC1cdTAwM2VmdG0ucmVxdWVzdF90eXBlID09IE5MODAyMTFfUE1TUl9GVE1fUkVRX1RZUEVfUEQgXHUwMDI2XHUwMDI2XG5uZXQvd2lyZWxlc3MvcG1zci5jLTE3MS1cdCAgICBvdXQtXHUwMDNlZnRtLm5vbl90cmlnZ2VyX2Jhc2VkIFx1MDAyNlx1MDAyNiBvdXQtXHUwMDNlZnRtLmZ0bXNfcGVyX2J1cnN0IFx1MDAzZSA0KSB7XG5uZXQvd2lyZWxlc3MvcG1zci5jLTE3Mi1cdFx0TkxfU0VUX0VSUl9NU0dfQVRUUihpbmZvLVx1MDAzZWV4dGFjayxcbm5ldC93aXJlbGVzcy9wbXNyLmM6MTczOlx0XHRcdFx0ICAgIHRiW05MODAyMTFfUE1TUl9GVE1fUkVRX0FUVFJfRlRNU19QRVJfQlVSU1RdLFxubmV0L3dpcmVsZXNzL3Btc3IuYy0xNzQtXHRcdFx0XHQgICAgXCYjMzQ7RlRNOiBGVE1zIHBlciBidXJzdCBtdXN0IG5vdCBleGNlZWQgNCBmb3IgUEQgTlRCIHJhbmdpbmdcJiMzNDspO1xuLS1cbm5ldC93aXJlbGVzcy9wbXNyLmMtMTgwLVx0XHROTF9TRVRfRVJSX01TR19BVFRSKGluZm8tXHUwMDNlZXh0YWNrLFxubmV0L3dpcmVsZXNzL3Btc3IuYzoxODE6XHRcdFx0XHQgICAgdGJbTkw4MDIxMV9QTVNSX0ZUTV9SRVFfQVRUUl9GVE1TX1BFUl9CVVJTVF0sXG5uZXQvd2lyZWxlc3MvcG1zci5jLTE4Mi1cdFx0XHRcdCAgICBcJiMzNDtGVE06IEZUTXMgcGVyIGJ1cnN0IG11c3QgYmUgc2V0IGxvd2VyIHRoYW4gMzFcJiMzNDspO1xuLS1cbm5ldC93aXJlbGVzcy9wbXNyLmMtMTg4LVx0XHROTF9TRVRfRVJSX01TR19BVFRSKGluZm8tXHUwMDNlZXh0YWNrLFxubmV0L3dpcmVsZXNzL3Btc3IuYzoxODk6XHRcdFx0XHQgICAgdGJbTkw4MDIxMV9QTVNSX0ZUTV9SRVFfQVRUUl9QUkVBTUJMRV0sXG5uZXQvd2lyZWxlc3MvcG1zci5jLTE5MC1cdFx0XHRcdCAgICBcJiMzNDtGVE06IG5vbiBFRENBIGJhc2VkIHJhbmdpbmcgbXVzdCB1c2UgSEUgcHJlYW1ibGVcJiMzNDspO1xuLS1cbm5ldC93aXJlbGVzcy9wbXNyLmMtMTkzLVxubmV0L3dpcmVsZXNzL3Btc3IuYzoxOTQ6XHRpZiAodGJbTkw4MDIxMV9QTVNSX0ZUTV9SRVFfQVRUUl9CVVJTVF9EVVJBVElPTl0pXG5uZXQvd2lyZWxlc3MvcG1zci5jLTE5NS1cdFx0b3V0LVx1MDAzZWZ0bS5idXJzdF9kdXJhdGlvbiA9XG5uZXQvd2lyZWxlc3MvcG1zci5jOjE5NjpcdFx0XHRubGFfZ2V0X3U4KHRiW05MODAyMTFfUE1TUl9GVE1fUkVRX0FUVFJfQlVSU1RfRFVSQVRJT05dKTtcbm5ldC93aXJlbGVzcy9wbXNyLmMtMTk3LVx0ZWxzZSBpZiAoIW91dC1cdTAwM2VmdG0ubm9uX3RyaWdnZXJfYmFzZWQgXHUwMDI2XHUwMDI2ICFvdXQtXHUwMDNlZnRtLnRyaWdnZXJfYmFzZWQpXG4tLVxubmV0L3dpcmVsZXNzL3Btc3IuYy0yMDAtXHRvdXQtXHUwMDNlZnRtLmxtcl9mZWVkYmFjayA9XG5uZXQvd2lyZWxlc3MvcG1zci5jOjIwMTpcdFx0ISF0YltOTDgwMjExX1BNU1JfRlRNX1JFUV9BVFRSX0xNUl9GRUVEQkFDS107XG5uZXQvd2lyZWxlc3MvcG1zci5jLTIwMi1cdGlmICghb3V0LVx1MDAzZWZ0bS50cmlnZ2VyX2Jhc2VkIFx1MDAyNlx1MDAyNiAhb3V0LVx1MDAzZWZ0bS5ub25fdHJpZ2dlcl9iYXNlZCBcdTAwMjZcdTAwMjZcbi0tXG5uZXQvd2lyZWxlc3MvcG1zci5jLTIwNC1cdFx0TkxfU0VUX0VSUl9NU0dfQVRUUihpbmZvLVx1MDAzZWV4dGFjayxcbm5ldC93aXJlbGVzcy9wbXNyLmM6MjA1Olx0XHRcdFx0ICAgIHRiW05MODAyMTFfUE1TUl9GVE1fUkVRX0FUVFJfTE1SX0ZFRURCQUNLXSxcbm5ldC93aXJlbGVzcy9wbXNyLmMtMjA2LVx0XHRcdFx0ICAgIFwmIzM0O0ZUTTogTE1SIGZlZWRiYWNrIHNldCBmb3IgRURDQSBiYXNlZCByYW5naW5nXCYjMzQ7KTtcbi0tXG5uZXQvd2lyZWxlc3MvcG1zci5jLTIwOS1cbm5ldC93aXJlbGVzcy9wbXNyLmM6MjEwOlx0aWYgKHRiW05MODAyMTFfUE1TUl9GVE1fUkVRX0FUVFJfQlNTX0NPTE9SXSkge1xubmV0L3dpcmVsZXNzL3Btc3IuYy0yMTEtXHRcdGlmICghb3V0LVx1MDAzZWZ0bS5ub25fdHJpZ2dlcl9iYXNlZCBcdTAwMjZcdTAwMjYgIW91dC1cdTAwM2VmdG0udHJpZ2dlcl9iYXNlZCkge1xubmV0L3dpcmVsZXNzL3Btc3IuYy0yMTItXHRcdFx0TkxfU0VUX0VSUl9NU0dfQVRUUihpbmZvLVx1MDAzZWV4dGFjayxcbm5ldC93aXJlbGVzcy9wbXNyLmM6MjEzOlx0XHRcdFx0XHQgICAgdGJbTkw4MDIxMV9QTVNSX0ZUTV9SRVFfQVRUUl9CU1NfQ09MT1JdLFxubmV0L3dpcmVsZXNzL3Btc3IuYy0yMTQtXHRcdFx0XHRcdCAgICBcJiMzNDtGVE06IEJTUyBjb2xvciBzZXQgZm9yIEVEQ0EgYmFzZWQgcmFuZ2luZ1wmIzM0Oyk7XG4tLVxubmV0L3dpcmVsZXNzL3Btc3IuYy0yMTgtXHRcdG91dC1cdTAwM2VmdG0uYnNzX2NvbG9yID1cbm5ldC93aXJlbGVzcy9wbXNyLmM6MjE5Olx0XHRcdG5sYV9nZXRfdTgodGJbTkw4MDIxMV9QTVNSX0ZUTV9SRVFfQVRUUl9CU1NfQ09MT1JdKTtcbm5ldC93aXJlbGVzcy9wbXNyLmMtMjIwLVx0fVxubmV0L3dpcmVsZXNzL3Btc3IuYy0yMjEtXG5uZXQvd2lyZWxlc3MvcG1zci5jOjIyMjpcdG91dC1cdTAwM2VmdG0ucnN0YSA9ICEhdGJbTkw4MDIxMV9QTVNSX0ZUTV9SRVFfQVRUUl9SU1RBXTtcbm5ldC93aXJlbGVzcy9wbXNyLmMtMjIzLVx0aWYgKG91dC1cdTAwM2VmdG0ucnN0YSBcdTAwMjZcdTAwMjYgb3V0LVx1MDAzZWZ0bS5ub25fdHJpZ2dlcl9iYXNlZCBcdTAwMjZcdTAwMjZcbi0tXG5uZXQvd2lyZWxlc3MvcG1zci5jLTIyNS1cdFx0TkxfU0VUX0VSUl9NU0dfQVRUUihpbmZvLVx1MDAzZWV4dGFjayxcbm5ldC93aXJlbGVzcy9wbXNyLmM6MjI2Olx0XHRcdFx0ICAgIHRiW05MODAyMTFfUE1TUl9GVE1fUkVRX0FUVFJfUlNUQV0sXG5uZXQvd2lyZWxlc3MvcG1zci5jLTIyNy1cdFx0XHRcdCAgICBcJiMzNDtGVE06IE5UQiBSU1RBIG5vdCBzdXBwb3J0ZWQgYnkgZGV2aWNlXCYjMzQ7KTtcbi0tXG5uZXQvd2lyZWxlc3MvcG1zci5jLTIzMy1cdFx0TkxfU0VUX0VSUl9NU0dfQVRUUihpbmZvLVx1MDAzZWV4dGFjayxcbm5ldC93aXJlbGVzcy9wbXNyLmM6MjM0Olx0XHRcdFx0ICAgIHRiW05MODAyMTFfUE1TUl9GVE1fUkVRX0FUVFJfUlNUQV0sXG5uZXQvd2lyZWxlc3MvcG1zci5jLTIzNS1cdFx0XHRcdCAgICBcJiMzNDtGVE06IFRCIFJTVEEgbm90IHN1cHBvcnRlZCBieSBkZXZpY2VcJiMzNDspO1xuLS1cbm5ldC93aXJlbGVzcy9wbXNyLmMtMjQyLVx0XHROTF9TRVRfRVJSX01TR19BVFRSKGluZm8tXHUwMDNlZXh0YWNrLFxubmV0L3dpcmVsZXNzL3Btc3IuYzoyNDM6XHRcdFx0XHQgICAgdGJbTkw4MDIxMV9QTVNSX0ZUTV9SRVFfQVRUUl9SU1RBXSxcbm5ldC93aXJlbGVzcy9wbXNyLmMtMjQ0LVx0XHRcdFx0ICAgIFwmIzM0O0ZUTTogRURDQSBSU1RBIG5vdCBzdXBwb3J0ZWQgYnkgZGV2aWNlXCYjMzQ7KTtcbi0tXG5uZXQvd2lyZWxlc3MvcG1zci5jLTI1MS1cdFx0TkxfU0VUX0VSUl9NU0dfQVRUUihpbmZvLVx1MDAzZWV4dGFjayxcbm5ldC93aXJlbGVzcy9wbXNyLmM6MjUyOlx0XHRcdFx0ICAgIHRiW05MODAyMTFfUE1TUl9GVE1fUkVRX0FUVFJfUlNUQV0sXG5uZXQvd2lyZWxlc3MvcG1zci5jLTI1My1cdFx0XHRcdCAgICBcJiMzNDtGVE06IFJTVEEgc2V0IHdpdGhvdXQgTE1SIGZlZWRiYWNrXCYjMzQ7KTtcbi0tXG5uZXQvd2lyZWxlc3MvcG1zci5jLTI1Ny1cdGlmIChvdXQtXHUwMDNlZnRtLm5vbl90cmlnZ2VyX2Jhc2VkKSB7XG5uZXQvd2lyZWxlc3MvcG1zci5jOjI1ODpcdFx0aWYgKG91dC1cdTAwM2VmdG0ucmVxdWVzdF90eXBlID09IE5MODAyMTFfUE1TUl9GVE1fUkVRX1RZUEVfUEQgXHUwMDI2XHUwMDI2XG5uZXQvd2lyZWxlc3MvcG1zci5jOjI1OTpcdFx0ICAgICF0YltOTDgwMjExX1BNU1JfRlRNX1JFUV9BVFRSX05PTUlOQUxfVElNRV0pIHtcbm5ldC93aXJlbGVzcy9wbXNyLmMtMjYwLVx0XHRcdE5MX1NFVF9FUlJfTVNHKGluZm8tXHUwMDNlZXh0YWNrLFxuLS1cbm5ldC93aXJlbGVzcy9wbXNyLmMtMjY0LVx0XHRvdXQtXHUwMDNlZnRtLm5vbWluYWxfdGltZSA9XG5uZXQvd2lyZWxlc3MvcG1zci5jOjI2NTpcdFx0XHRubGFfZ2V0X3UzMih0YltOTDgwMjExX1BNU1JfRlRNX1JFUV9BVFRSX05PTUlOQUxfVElNRV0pO1xubmV0L3dpcmVsZXNzL3Btc3IuYy0yNjYtXG5uZXQvd2lyZWxlc3MvcG1zci5jOjI2NzpcdFx0aWYgKHRiW05MODAyMTFfUE1TUl9GVE1fUkVRX0FUVFJfTUlOX1RJTUVfQkVUV0VFTl9NRUFTVVJFTUVOVFNdKVxubmV0L3dpcmVsZXNzL3Btc3IuYy0yNjgtXHRcdFx0b3V0LVx1MDAzZWZ0bS5taW5fdGltZV9iZXR3ZWVuX21lYXN1cmVtZW50cyA9XG5uZXQvd2lyZWxlc3MvcG1zci5jOjI2OTpcdFx0XHRubGFfZ2V0X3UzMih0YltOTDgwMjExX1BNU1JfRlRNX1JFUV9BVFRSX01JTl9USU1FX0JFVFdFRU5fTUVBU1VSRU1FTlRTXSk7XG5uZXQvd2lyZWxlc3MvcG1zci5jLTI3MC1cbm5ldC93aXJlbGVzcy9wbXNyLmM6MjcxOlx0XHRpZiAodGJbTkw4MDIxMV9QTVNSX0ZUTV9SRVFfQVRUUl9NQVhfVElNRV9CRVRXRUVOX01FQVNVUkVNRU5UU10pXG5uZXQvd2lyZWxlc3MvcG1zci5jLTI3Mi1cdFx0XHRvdXQtXHUwMDNlZnRtLm1heF90aW1lX2JldHdlZW5fbWVhc3VyZW1lbnRzID1cbm5ldC93aXJlbGVzcy9wbXNyLmM6MjczOlx0XHRcdG5sYV9nZXRfdTMyKHRiW05MODAyMTFfUE1TUl9GVE1fUkVRX0FUVFJfTUFYX1RJTUVfQkVUV0VFTl9NRUFTVVJFTUVOVFNdKTtcbm5ldC93aXJlbGVzcy9wbXNyLmMtMjc0LVxubmV0L3dpcmVsZXNzL3Btc3IuYzoyNzU6XHRcdGlmICh0YltOTDgwMjExX1BNU1JfRlRNX1JFUV9BVFRSX0FXX0RVUkFUSU9OXSlcbm5ldC93aXJlbGVzcy9wbXNyLmMtMjc2LVx0XHRcdG91dC1cdTAwM2VmdG0uYXZhaWxhYmlsaXR5X3dpbmRvdyA9XG5uZXQvd2lyZWxlc3MvcG1zci5jOjI3NzpcdFx0XHRcdG5sYV9nZXRfdTgodGJbTkw4MDIxMV9QTVNSX0ZUTV9SRVFfQVRUUl9BV19EVVJBVElPTl0pO1xubmV0L3dpcmVsZXNzL3Btc3IuYy0yNzgtXG5uZXQvd2lyZWxlc3MvcG1zci5jOjI3OTpcdFx0aWYgKHRiW05MODAyMTFfUE1TUl9GVE1fUkVRX0FUVFJfTlVNX01FQVNVUkVNRU5UU10pXG5uZXQvd2lyZWxlc3MvcG1zci5jLTI4MC1cdFx0XHRvdXQtXHUwMDNlZnRtLm51bV9tZWFzdXJlbWVudHMgPVxubmV0L3dpcmVsZXNzL3Btc3IuYzoyODE6XHRcdFx0XHRubGFfZ2V0X3UzMih0YltOTDgwMjExX1BNU1JfRlRNX1JFUV9BVFRSX05VTV9NRUFTVVJFTUVOVFNdKTtcbm5ldC93aXJlbGVzcy9wbXNyLmMtMjgyLVx0fVxubmV0L3dpcmVsZXNzL3Btc3IuYy0yODMtXG5uZXQvd2lyZWxlc3MvcG1zci5jOjI4NDpcdGlmICh0YltOTDgwMjExX1BNU1JfRlRNX1JFUV9BVFRSX0lOR1JFU1NdKVxubmV0L3dpcmVsZXNzL3Btc3IuYy0yODUtXHRcdG91dC1cdTAwM2VmdG0uaW5ncmVzc19kaXN0YW5jZSA9XG5uZXQvd2lyZWxlc3MvcG1zci5jOjI4NjpcdFx0XHRubGFfZ2V0X3U2NCh0YltOTDgwMjExX1BNU1JfRlRNX1JFUV9BVFRSX0lOR1JFU1NdKTtcbm5ldC93aXJlbGVzcy9wbXNyLmMtMjg3LVxubmV0L3dpcmVsZXNzL3Btc3IuYzoyODg6XHRpZiAodGJbTkw4MDIxMV9QTVNSX0ZUTV9SRVFfQVRUUl9FR1JFU1NdKVxubmV0L3dpcmVsZXNzL3Btc3IuYy0yODktXHRcdG91dC1cdTAwM2VmdG0uZWdyZXNzX2Rpc3RhbmNlID1cbm5ldC93aXJlbGVzcy9wbXNyLmM6MjkwOlx0XHRcdG5sYV9nZXRfdTY0KHRiW05MODAyMTFfUE1TUl9GVE1fUkVRX0FUVFJfRUdSRVNTXSk7XG5uZXQvd2lyZWxlc3MvcG1zci5jLTI5MS1cbm5ldC93aXJlbGVzcy9wbXNyLmMtMjkyLVx0b3V0LVx1MDAzZWZ0bS5wZF9zdXBwcmVzc19yYW5nZV9yZXN1bHRzID1cbm5ldC93aXJlbGVzcy9wbXNyLmM6MjkzOlx0XHRubGFfZ2V0X2ZsYWcodGJbTkw4MDIxMV9QTVNSX0ZUTV9SRVFfQVRUUl9QRF9TVVBQUkVTU19SRVNVTFRTXSk7XG5uZXQvd2lyZWxlc3MvcG1zci5jLTI5NC1cbm5ldC93aXJlbGVzcy9wbXNyLmM6Mjk1Olx0aWYgKG91dC1cdTAwM2VmdG0ucmVxdWVzdF90eXBlICE9IE5MODAyMTFfUE1TUl9GVE1fUkVRX1RZUEVfUEQgXHUwMDI2XHUwMDI2XG5uZXQvd2lyZWxlc3MvcG1zci5jLTI5Ni1cdCAgICBvdXQtXHUwMDNlZnRtLnBkX3N1cHByZXNzX3JhbmdlX3Jlc3VsdHMpIHtcbm5ldC93aXJlbGVzcy9wbXNyLmMtMjk3LVx0XHROTF9TRVRfRVJSX01TR19BVFRSKGluZm8tXHUwMDNlZXh0YWNrLFxubmV0L3dpcmVsZXNzL3Btc3IuYzoyOTg6XHRcdFx0XHQgICAgdGJbTkw4MDIxMV9QTVNSX0ZUTV9SRVFfQVRUUl9QRF9TVVBQUkVTU19SRVNVTFRTXSxcbm5ldC93aXJlbGVzcy9wbXNyLmMtMjk5LVx0XHRcdFx0ICAgIFwmIzM0O0ZUTTogc3VwcHJlc3MgcmFuZ2UgcmVzdWx0IGZsYWcgb25seSB2YWxpZCBmb3IgUEQgcmVxdWVzdHNcJiMzNDspO1xuLS1cbm5ldC93aXJlbGVzcy9wbXNyLmM9MzA2PXN0YXRpYyBpbnQgcG1zcl9wYXJzZV9wZWVyKHN0cnVjdCBjZmc4MDIxMV9yZWdpc3RlcmVkX2RldmljZSAqcmRldixcbi0tXG5uZXQvd2lyZWxlc3MvcG1zci5jLTMxMC17XG5uZXQvd2lyZWxlc3MvcG1zci5jOjMxMTpcdHN0cnVjdCBubGF0dHIgKnRiW05MODAyMTFfUE1TUl9QRUVSX0FUVFJfTUFYICYjNDM7IDFdO1xubmV0L3dpcmVsZXNzL3Btc3IuYzozMTI6XHRzdHJ1Y3QgbmxhdHRyICpyZXFbTkw4MDIxMV9QTVNSX1JFUV9BVFRSX01BWCAmIzQzOyAxXTtcbm5ldC93aXJlbGVzcy9wbXNyLmMtMzEzLVx0c3RydWN0IG5sYXR0ciAqdHJlcTtcbi0tXG5uZXQvd2lyZWxlc3MvcG1zci5jLTMxNi1cdC8qIG5vIHZhbGlkYXRpb24gbmVlZGVkIC0gd2FzIGFscmVhZHkgZG9uZSB2aWEgbmVzdGVkIHBvbGljeSAqL1xubmV0L3dpcmVsZXNzL3Btc3IuYzozMTc6XHRubGFfcGFyc2VfbmVzdGVkX2RlcHJlY2F0ZWQodGIsIE5MODAyMTFfUE1TUl9QRUVSX0FUVFJfTUFYLCBwZWVyLFxubmV0L3dpcmVsZXNzL3Btc3IuYy0zMTgtXHRcdFx0XHQgICAgTlVMTCwgTlVMTCk7XG5uZXQvd2lyZWxlc3MvcG1zci5jLTMxOS1cbm5ldC93aXJlbGVzcy9wbXNyLmM6MzIwOlx0aWYgKCF0YltOTDgwMjExX1BNU1JfUEVFUl9BVFRSX0FERFJdIHx8XG5uZXQvd2lyZWxlc3MvcG1zci5jOjMyMTpcdCAgICAhdGJbTkw4MDIxMV9QTVNSX1BFRVJfQVRUUl9DSEFOXSB8fFxubmV0L3dpcmVsZXNzL3Btc3IuYzozMjI6XHQgICAgIXRiW05MODAyMTFfUE1TUl9QRUVSX0FUVFJfUkVRXSkge1xubmV0L3dpcmVsZXNzL3Btc3IuYy0zMjMtXHRcdE5MX1NFVF9FUlJfTVNHX0FUVFIoaW5mby1cdTAwM2VleHRhY2ssIHBlZXIsXG4tLVxubmV0L3dpcmVsZXNzL3Btc3IuYy0zMjctXG5uZXQvd2lyZWxlc3MvcG1zci5jOjMyODpcdG1lbWNweShvdXQtXHUwMDNlYWRkciwgbmxhX2RhdGEodGJbTkw4MDIxMV9QTVNSX1BFRVJfQVRUUl9BRERSXSksIEVUSF9BTEVOKTtcbm5ldC93aXJlbGVzcy9wbXNyLmMtMzI5LVxubmV0L3dpcmVsZXNzL3Btc3IuYzozMzA6XHRpZiAodGJbTkw4MDIxMV9QTVNSX1BFRVJfQVRUUl9SRVFfVFlQRV0pXG5uZXQvd2lyZWxlc3MvcG1zci5jLTMzMS1cdFx0b3V0LVx1MDAzZWZ0bS5yZXF1ZXN0X3R5cGUgPVxubmV0L3dpcmVsZXNzL3Btc3IuYzozMzI6XHRcdFx0bmxhX2dldF91MzIodGJbTkw4MDIxMV9QTVNSX1BFRVJfQVRUUl9SRVFfVFlQRV0pO1xubmV0L3dpcmVsZXNzL3Btc3IuYy0zMzMtXHRlbHNlXG5uZXQvd2lyZWxlc3MvcG1zci5jOjMzNDpcdFx0b3V0LVx1MDAzZWZ0bS5yZXF1ZXN0X3R5cGUgPSBOTDgwMjExX1BNU1JfRlRNX1JFUV9UWVBFX0lORlJBO1xubmV0L3dpcmVsZXNzL3Btc3IuYy0zMzUtXG5uZXQvd2lyZWxlc3MvcG1zci5jOjMzNjpcdGlmIChvdXQtXHUwMDNlZnRtLnJlcXVlc3RfdHlwZSA9PSBOTDgwMjExX1BNU1JfRlRNX1JFUV9UWVBFX1BEIFx1MDAyNlx1MDAyNlxubmV0L3dpcmVsZXNzL3Btc3IuYy0zMzctXHQgICAgIXJkZXYtXHUwMDNld2lwaHkucG1zcl9jYXBhLVx1MDAzZWZ0bS50eXBlLnBkX3N1cHBvcnQpIHtcbm5ldC93aXJlbGVzcy9wbXNyLmMtMzM4LVx0XHROTF9TRVRfRVJSX01TR19BVFRSKGluZm8tXHUwMDNlZXh0YWNrLFxubmV0L3dpcmVsZXNzL3Btc3IuYzozMzk6XHRcdFx0XHQgICAgdGJbTkw4MDIxMV9QTVNSX1BFRVJfQVRUUl9SRVFfVFlQRV0sXG5uZXQvd2lyZWxlc3MvcG1zci5jLTM0MC1cdFx0XHRcdCAgICBcJiMzNDtGVE06IFBEIHJlcXVlc3QgdHlwZSBub3Qgc3VwcG9ydGVkIGJ5IGRldmljZVwmIzM0Oyk7XG4tLVxubmV0L3dpcmVsZXNzL3Btc3IuYy0zNDUtXHRlcnIgPSBubGFfcGFyc2VfbmVzdGVkX2RlcHJlY2F0ZWQoaW5mby1cdTAwM2VhdHRycywgTkw4MDIxMV9BVFRSX01BWCxcbm5ldC93aXJlbGVzcy9wbXNyLmM6MzQ2Olx0XHRcdFx0XHQgIHRiW05MODAyMTFfUE1TUl9QRUVSX0FUVFJfQ0hBTl0sXG5uZXQvd2lyZWxlc3MvcG1zci5jLTM0Ny1cdFx0XHRcdFx0ICBOVUxMLCBpbmZvLVx1MDAzZWV4dGFjayk7XG4tLVxubmV0L3dpcmVsZXNzL3Btc3IuYy0zNTYtXHQvKiBubyB2YWxpZGF0aW9uIG5lZWRlZCAtIHdhcyBhbHJlYWR5IGRvbmUgdmlhIG5lc3RlZCBwb2xpY3kgKi9cbm5ldC93aXJlbGVzcy9wbXNyLmM6MzU3Olx0bmxhX3BhcnNlX25lc3RlZF9kZXByZWNhdGVkKHJlcSwgTkw4MDIxMV9QTVNSX1JFUV9BVFRSX01BWCxcbm5ldC93aXJlbGVzcy9wbXNyLmM6MzU4Olx0XHRcdFx0ICAgIHRiW05MODAyMTFfUE1TUl9QRUVSX0FUVFJfUkVRXSwgTlVMTCxcbm5ldC93aXJlbGVzcy9wbXNyLmMtMzU5LVx0XHRcdFx0ICAgIE5VTEwpO1xubmV0L3dpcmVsZXNzL3Btc3IuYy0zNjAtXG5uZXQvd2lyZWxlc3MvcG1zci5jOjM2MTpcdGlmICghcmVxW05MODAyMTFfUE1TUl9SRVFfQVRUUl9EQVRBXSkge1xubmV0L3dpcmVsZXNzL3Btc3IuYy0zNjItXHRcdE5MX1NFVF9FUlJfTVNHX0FUVFIoaW5mby1cdTAwM2VleHRhY2ssXG5uZXQvd2lyZWxlc3MvcG1zci5jOjM2MzpcdFx0XHRcdCAgICB0YltOTDgwMjExX1BNU1JfUEVFUl9BVFRSX1JFUV0sXG5uZXQvd2lyZWxlc3MvcG1zci5jLTM2NC1cdFx0XHRcdCAgICBcJiMzNDttaXNzaW5nIHJlcXVlc3QgdHlwZS9kYXRhXCYjMzQ7KTtcbi0tXG5uZXQvd2lyZWxlc3MvcG1zci5jLTM2Ny1cbm5ldC93aXJlbGVzcy9wbXNyLmM6MzY4Olx0aWYgKHJlcVtOTDgwMjExX1BNU1JfUkVRX0FUVFJfR0VUX0FQX1RTRl0pXG5uZXQvd2lyZWxlc3MvcG1zci5jLTM2OS1cdFx0b3V0LVx1MDAzZXJlcG9ydF9hcF90c2YgPSB0cnVlO1xuLS1cbm5ldC93aXJlbGVzcy9wbXNyLmMtMzcyLVx0XHROTF9TRVRfRVJSX01TR19BVFRSKGluZm8tXHUwMDNlZXh0YWNrLFxubmV0L3dpcmVsZXNzL3Btc3IuYzozNzM6XHRcdFx0XHQgICAgcmVxW05MODAyMTFfUE1TUl9SRVFfQVRUUl9HRVRfQVBfVFNGXSxcbm5ldC93aXJlbGVzcy9wbXNyLmMtMzc0LVx0XHRcdFx0ICAgIFwmIzM0O3JlcG9ydGluZyBBUCBUU0YgaXMgbm90IHN1cHBvcnRlZFwmIzM0Oyk7XG4tLVxubmV0L3dpcmVsZXNzL3Btc3IuYy0zNzctXG5uZXQvd2lyZWxlc3MvcG1zci5jOjM3ODpcdG5sYV9mb3JfZWFjaF9uZXN0ZWQodHJlcSwgcmVxW05MODAyMTFfUE1TUl9SRVFfQVRUUl9EQVRBXSwgcmVtKSB7XG5uZXQvd2lyZWxlc3MvcG1zci5jLTM3OS1cdFx0c3dpdGNoIChubGFfdHlwZSh0cmVxKSkge1xubmV0L3dpcmVsZXNzL3Btc3IuYzozODA6XHRcdGNhc2UgTkw4MDIxMV9QTVNSX1RZUEVfRlRNOlxubmV0L3dpcmVsZXNzL3Btc3IuYy0zODEtXHRcdFx0ZXJyID0gcG1zcl9wYXJzZV9mdG0ocmRldiwgdHJlcSwgb3V0LCBpbmZvKTtcbi0tXG5uZXQvd2lyZWxlc3MvcG1zci5jPTM5Nj1pbnQgbmw4MDIxMV9wbXNyX3N0YXJ0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXG4tLVxubmV0L3dpcmVsZXNzL3Btc3IuYy00MTQtXHRwZWVycyA9IG5sYV9maW5kKG5sYV9kYXRhKHJlcWF0dHIpLCBubGFfbGVuKHJlcWF0dHIpLFxubmV0L3dpcmVsZXNzL3Btc3IuYzo0MTU6XHRcdFx0IE5MODAyMTFfUE1TUl9BVFRSX1BFRVJTKTtcbm5ldC93aXJlbGVzcy9wbXNyLmMtNDE2LVx0aWYgKCFwZWVycylcbi0tXG5uZXQvd2lyZWxlc3MvcG1zci5jPTU2OD1zdGF0aWMgaW50IG5sODAyMTFfcG1zcl9zZW5kX2Z0bV9yZXMoc3RydWN0IHNrX2J1ZmYgKm1zZyxcbi0tXG5uZXQvd2lyZWxlc3MvcG1zci5jLTU3MC17XG5uZXQvd2lyZWxlc3MvcG1zci5jOjU3MTpcdGlmIChyZXMtXHUwMDNlc3RhdHVzID09IE5MODAyMTFfUE1TUl9TVEFUVVNfRkFJTFVSRSkge1xubmV0L3dpcmVsZXNzL3Btc3IuYzo1NzI6XHRcdGlmIChubGFfcHV0X3UzMihtc2csIE5MODAyMTFfUE1TUl9GVE1fUkVTUF9BVFRSX0ZBSUxfUkVBU09OLFxubmV0L3dpcmVsZXNzL3Btc3IuYy01NzMtXHRcdFx0XHRyZXMtXHUwMDNlZnRtLmZhaWx1cmVfcmVhc29uKSlcbi0tXG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAxMDoxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDMwMQoJCQkJCQkJb3V0cHV0OiAyNwoJCQkJCQkJdGhvdWdodHM6IDEwOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipQTVNSIENvbnRleHR1YWxpemF0aW9uIGFuZCBDb25maWd1cmF0aW9uIFN0cmF0ZWd5KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBgY2ZnODAyMTFfcG1zcl9mcmVlX3drYCBoZXJlLCB3aGljaCBpbW1lZGlhdGVseSB0ZWxscyBtZSB0aGlzIGlzIHJlbGF0ZWQgdG8gUGVlciBNZWFzdXJlbWVudCwgb3IgUE1TUi4gVGhhdCBtYWtlcyBzZW5zZTsgSSYjMzk7bSBwcmV0dHkgZmFtaWxpYXIgd2l0aCB0aGUgUE1TUiBmcmFtZXdvcmsuIE5vdywgYSBrZXkgcG9pbnQgdG8gcmVtZW1iZXIsIGFuZCBpdCYjMzk7cyBlYXN5IHRvIG92ZXJsb29rLCBpcyB0aGF0IHRoZSBjb25maWd1cmF0aW9uIGZvciBQTVNSIGlzbiYjMzk7dCBpc29sYXRlZC4gSXQmIzM5O3MgZGVlcGx5IGludGVydHdpbmVkIHdpdGggdGhlIGJyb2FkZXIgYENGRzgwMjExYCBhbmQgYE5MODAyMTFgIGluZnJhc3RydWN0dXJlLgoKVG8gZW5zdXJlIHByb3BlciBlbmFibGVtZW50LCBJJiMzOTtsbCBuZWVkIHRvIGV4cGxpY2l0bHkgc3BlY2lmeSBgQ0ZHODAyMTFgLCBgTUFDODAyMTFgLCBhbmQgYE1BQzgwMjExX0hXU0lNYCBhcyBFbmFibGVDb25maWdzLiBUaGlzIGlzIHRoZSBmb3VuZGF0aW9uIEkgbmVlZCB0byBidWlsZCB1cG9uLiBJJiMzOTttIHRha2luZyB0aGUgcmlnaHQgc3RlcHMgaGVyZSBieSB0aGlua2luZyBhYm91dCB0aGlzIGFzIGEgZGlyZWN0IGRlcGVuZGVuY3kgb24gdGhlIGhpZ2hlci1sZXZlbCBjb25maWd1cmF0aW9ucy4KCkp1c3QgYSBtb21lbnQsIEkgc2hvdWxkIHByb2JhYmx5IGRvIGEgcXVpY2sgc2FuaXR5IGNoZWNrLiBMZXQgbWUganVzdCBzY2FuIHRvIG1ha2UgYWJzb2x1dGVseSBzdXJlIHRoZXJlIGFyZW4mIzM5O3QgYW55IG90aGVyIHN1YnRseSByZWxhdGVkIGNvbmZpZ3VyYXRpb25zIHRoYXQgSSYjMzk7bSBtaXNzaW5nLiBBbHdheXMgYSBnb29kIHByYWN0aWNlIHRvIGJlIHRob3JvdWdoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDEwOjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFBNU1ImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvd2lyZWxlc3MvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAxMDoxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDcwMAoJCQkJCQkJb3V0cHV0OiAyMjQKCQkJCQkJCXRob3VnaHRzOiA0MzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQTVNSIFBhdGNoKioKCk9rYXksIHNvIHRoZXJlIGlzbiYjMzk7dCBhbnkgc3BlY2lmaWMgY29uZmlndXJhdGlvbiBpdGVtIGRpcmVjdGx5IHJlbGF0ZWQgdG8gUE1TUiBpbiB0aGlzIHBhdGNoLCB3aGljaCBpcyBnb29kIHRvIG5vdGUgdXAgZnJvbnQuIE15IGZvY3VzIG5lZWRzIHRvIGJlIG9uIHRoZSBjb2RlIG1vZGlmaWNhdGlvbnMgdGhlbXNlbHZlcywgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgYGNmZzgwMjExYCBzdWJzeXN0ZW0uIFRoZSBwYXRjaCBwcmltYXJpbHkgdG91Y2hlcyBgY2ZnODAyMTFfcG1zcl9mcmVlX3drYCwgYGNmZzgwMjExX3Btc3Jfd2Rldl9kb3duYCwgYW5kIGBjZmc4MDIxMV9yZWxlYXNlX3Btc3JgLiBJJiMzOTtsbCBpbW1lZGlhdGVseSBhZGQgdGhlc2UgdG8gbXkgRm9jdXNTeW1ib2xzIGxpc3Qg4oCTIHRob3NlIGFyZSB0aGUga2V5IGZ1bmN0aW9ucyB0byBkaWcgaW50by4gSSYjMzk7bGwgYWxzbyBhZGQgYGNmZzgwMjExX2luaXRfd2RldmAsIGl0IHNlZW1zIHJlbGF0ZWQsIGFuZCBpdCYjMzk7cyBhbHdheXMgZ29vZCB0byBoYXZlIHRoYXQgZnVuY3Rpb24gaW4gbWluZCBhcyB0aGUgd2lyZWxlc3MgZGV2aWNlIGlzIGJlaW5nIGluaXRpYWxpemVkLgoKTm93LCBsZXQgbWUgcmV2aWV3IHRoZSBjaGFuZ2UgdG8gYGNmZzgwMjExX3Btc3JfZnJlZV93a2AgbW9yZSBjbG9zZWx5LiBUaGUgc25pcHBldCBzaG93cyB0aGUgd29yayBxdWV1ZSBpdGVtIGFuZCBpdHMgZXhlY3V0aW9uIGNvbnRleHQ6CgpgYGBjCnZvaWQgY2ZnODAyMTFfcG1zcl9mcmVlX3drKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXBoeV93b3JrICp3b3JrKQp7CglzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2ID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCB3aXJlbGVzc19kZXYsCgkJCQkJCSBwbXNyX2ZyZWVfd2spOwoKCWNmZzgwMjExX3Btc3JfcHJvY2Vzc19hYm9ydCh3ZGV2KTsKfQpgYGAKCkFoLCByaWdodC4gVGhlIGtleSBoZXJlIGlzIHRoZSBzd2l0Y2ggZnJvbSBhIHBsYWluIGB3b3JrX3N0cnVjdGAgdG8gYSBgd2lwaHlfd29ya2AuIFRoaXMgaXMgKnNpZ25pZmljYW50Ki4gSXQgbWVhbnMgdGhhdCB0aGUgYHdpcGh5YCBsb2NrIGlzIG5vdyBoZWxkICpkdXJpbmcqIHRoZSBleGVjdXRpb24gb2YgdGhpcyB3b3JrIGl0ZW0uIENvbnNlcXVlbnRseSwgdGhlIGV4cGxpY2l0IGd1YXJkIGNvbmRpdGlvbiB0aGF0IHdhcyBwcmV2aW91c2x5IHByZXNlbnQgY2FuIGJlIHNhZmVseSByZW1vdmVkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIGEgcmVmaW5lbWVudCBvZiB0aGUgbG9ja2luZyBzZW1hbnRpY3Mgd2l0aGluIHRoZSBgY2ZnODAyMTFgIGxheWVyLiBJdCYjMzk7cyBhIHN1YnRsZSBidXQgaW1wb3J0YW50IGNoYW5nZS4KCkNvbnNpZGVyaW5nIHRoZSBlbnZpcm9ubWVudCwgdGhpcyBpcyByZWxldmFudCBpbiB0aGUgY29udGV4dCBvZiB2aXJ0dWFsaXphdGlvbiwgcGFydGljdWxhcmx5IGlmIHVzaW5nIGBtYWM4MDIxMV9od3NpbWAuIFRoaXMgY2hhbmdlIHdpbGwgYmUgcmVhY2hhYmxlIGluIHRoZSBzaW11bGF0b3IsIHNvIEkgbmVlZCB0byBtYWtlIHN1cmUgdG8gYnVpbGQgd2l0aCB0aGUgYXBwcm9wcmlhdGUgY29uZmlndXJhdGlvbnMgdG8gcHJvcGVybHkgYXNzZXNzLiBNeSBlbmFibGluZyBjb25maWd1cmF0aW9ucyBhcmUgZ29pbmcgdG8gYmU6IGBDRkc4MDIxMWAsIGBNQUM4MDIxMWAsIGFuZCBgTUFDODAyMTFfSFdTSU1gLgoKV2l0aCB0aGF0IGFuYWx5c2lzIGNvbXBsZXRlLCBJJiMzOTttIGNvbWZvcnRhYmxlIHRoYXQgSSBoYXZlIGEgY2xlYXIgdW5kZXJzdGFuZGluZyBvZiB0aGUgcGF0Y2gmIzM5O3MgaW1wYWN0LiBUaW1lIHRvIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDEwOjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtDRkc4MDIxMSYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMSYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMV9IV1NJTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2NmZzgwMjExX3Btc3JfZnJlZV93ayYjMzQ7LAogICAgJiMzNDtjZmc4MDIxMV9wbXNyX3dkZXZfZG93biYjMzQ7LAogICAgJiMzNDtjZmc4MDIxMV9yZWxlYXNlX3Btc3ImIzM0OywKICAgICYjMzQ7Y2ZnODAyMTFfaW5pdF93ZGV2JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGNoYW5nZXMgdGhlIHBtc3JfZnJlZV93ayB3b3JrIGl0ZW0gaW4gc3RydWN0IHdpcmVsZXNzX2RldiBmcm9tIGEgc3RhbmRhcmQgd29ya19zdHJ1Y3QgdG8gYSB3aXBoeV93b3JrLiBUaGlzIGFsdGVycyB0aGUgbG9ja2luZyBzZW1hbnRpY3MsIGFzIHdpcGh5X3dvcmsgaXMgZXhlY3V0ZWQgd2l0aCB0aGUgd2lwaHkgbG9jayBoZWxkLCBhbGxvd2luZyB0aGUgcmVtb3ZhbCBvZiB0aGUgZXhwbGljaXQgZ3VhcmQod2lwaHkpIGluIHRoZSB3b3JrIGhhbmRsZXIuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY2ZnODAyMTEgc3Vic3lzdGVtIHRoYXQgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgbWFjODAyMTFfaHdzaW0uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0NGRzgwMjExJiMzNDssCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O01BQzgwMjExX0hXU0lNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Y2ZnODAyMTFfcG1zcl9mcmVlX3drJiMzNDssCiAgICAmIzM0O2NmZzgwMjExX3Btc3Jfd2Rldl9kb3duJiMzNDssCiAgICAmIzM0O2NmZzgwMjExX3JlbGVhc2VfcG1zciYjMzQ7LAogICAgJiMzNDtjZmc4MDIxMV9pbml0X3dkZXYmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggY2hhbmdlcyB0aGUgcG1zcl9mcmVlX3drIHdvcmsgaXRlbSBpbiBzdHJ1Y3Qgd2lyZWxlc3NfZGV2IGZyb20gYSBzdGFuZGFyZCB3b3JrX3N0cnVjdCB0byBhIHdpcGh5X3dvcmsuIFRoaXMgYWx0ZXJzIHRoZSBsb2NraW5nIHNlbWFudGljcywgYXMgd2lwaHlfd29yayBpcyBleGVjdXRlZCB3aXRoIHRoZSB3aXBoeSBsb2NrIGhlbGQsIGFsbG93aW5nIHRoZSByZW1vdmFsIG9mIHRoZSBleHBsaWNpdCBndWFyZCh3aXBoeSkgaW4gdGhlIHdvcmsgaGFuZGxlci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjZmc4MDIxMSBzdWJzeXN0ZW0gdGhhdCBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBtYWM4MDIxMV9od3NpbS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDEwOjE5OjE2Ljk5NDIzMTE5WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTk0ODY0NzAzNDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQ0ZHODAyMTFcIixcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJNQUM4MDIxMV9IV1NJTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImNmZzgwMjExX3Btc3JfZnJlZV93a1wiLFxuICAgIFwiY2ZnODAyMTFfcG1zcl93ZGV2X2Rvd25cIixcbiAgICBcImNmZzgwMjExX3JlbGVhc2VfcG1zclwiLFxuICAgIFwiY2ZnODAyMTFfaW5pdF93ZGV2XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggY2hhbmdlcyB0aGUgcG1zcl9mcmVlX3drIHdvcmsgaXRlbSBpbiBzdHJ1Y3Qgd2lyZWxlc3NfZGV2IGZyb20gYSBzdGFuZGFyZCB3b3JrX3N0cnVjdCB0byBhIHdpcGh5X3dvcmsuIFRoaXMgYWx0ZXJzIHRoZSBsb2NraW5nIHNlbWFudGljcywgYXMgd2lwaHlfd29yayBpcyBleGVjdXRlZCB3aXRoIHRoZSB3aXBoeSBsb2NrIGhlbGQsIGFsbG93aW5nIHRoZSByZW1vdmFsIG9mIHRoZSBleHBsaWNpdCBndWFyZCh3aXBoeSkgaW4gdGhlIHdvcmsgaGFuZGxlci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjZmc4MDIxMSBzdWJzeXN0ZW0gdGhhdCBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBtYWM4MDIxMV9od3NpbS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMTA6MTk6MTYuOTk0MjM3NDVaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcwODc5MzMzNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGE5MDJmZWEwOTIzMTllZjQ0NTc5YzNmOWYxMWEwYzIyMTRlNmY4MWVcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIEZyaSBKdWwgMyAxMDoxOToxNSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9jZmc4MDIxMS5oIGIvaW5jbHVkZS9uZXQvY2ZnODAyMTEuaFxcbmluZGV4IDgxODhhZDIwMGRlNTM5Li4zNzUxYTFkNzQ3NjVhYiAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL25ldC9jZmc4MDIxMS5oXFxuKysrIGIvaW5jbHVkZS9uZXQvY2ZnODAyMTEuaFxcbkBAIC03MjY1LDcgKzcyNjUsNyBAQCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2IHtcXG4gXFxuIFxcdHN0cnVjdCBsaXN0X2hlYWQgcG1zcl9saXN0O1xcbiBcXHRzcGlubG9ja190IHBtc3JfbG9jaztcXG4tXFx0c3RydWN0IHdvcmtfc3RydWN0IHBtc3JfZnJlZV93aztcXG4rXFx0c3RydWN0IHdpcGh5X3dvcmsgcG1zcl9mcmVlX3drO1xcbiBcXG4gXFx0dW5zaWduZWQgbG9uZyB1bnByb3RfYmVhY29uX3JlcG9ydGVkO1xcbiBcXG5kaWZmIC0tZ2l0IGEvbmV0L3dpcmVsZXNzL2NvcmUuYyBiL25ldC93aXJlbGVzcy9jb3JlLmNcXG5pbmRleCAzZGNmNjNiMDRjNDFkYi4uYjZiYjI1ZWU4OWNkMmUgMTAwNjQ0XFxuLS0tIGEvbmV0L3dpcmVsZXNzL2NvcmUuY1xcbisrKyBiL25ldC93aXJlbGVzcy9jb3JlLmNcXG5AQCAtMTYxMyw3ICsxNjEzLDcgQEAgdm9pZCBjZmc4MDIxMV9pbml0X3dkZXYoc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldilcXG4gXFx0SU5JVF9MSVNUX0hFQUQoXFx1MDAyNndkZXYtXFx1MDAzZW1nbXRfcmVnaXN0cmF0aW9ucyk7XFxuIFxcdElOSVRfTElTVF9IRUFEKFxcdTAwMjZ3ZGV2LVxcdTAwM2VwbXNyX2xpc3QpO1xcbiBcXHRzcGluX2xvY2tfaW5pdChcXHUwMDI2d2Rldi1cXHUwMDNlcG1zcl9sb2NrKTtcXG4tXFx0SU5JVF9XT1JLKFxcdTAwMjZ3ZGV2LVxcdTAwM2VwbXNyX2ZyZWVfd2ssIGNmZzgwMjExX3Btc3JfZnJlZV93ayk7XFxuK1xcdHdpcGh5X3dvcmtfaW5pdChcXHUwMDI2d2Rldi1cXHUwMDNlcG1zcl9mcmVlX3drLCBjZmc4MDIxMV9wbXNyX2ZyZWVfd2spO1xcbiBcXG4gI2lmZGVmIENPTkZJR19DRkc4MDIxMV9XRVhUXFxuIFxcdHdkZXYtXFx1MDAzZXdleHQuZGVmYXVsdF9rZXkgPSAtMTtcXG5AQCAtMTc0Nyw3ICsxNzQ3LDYgQEAgc3RhdGljIGludCBjZmc4MDIxMV9uZXRkZXZfbm90aWZpZXJfY2FsbChzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5iLFxcbiBcXHRcXHRcXHRjZmc4MDIxMV9yZW1vdmVfbGlua3Mod2Rldik7XFxuIFxcdFxcdC8qIHNpbmNlIHdlIGp1c3QgZGlkIGNmZzgwMjExX2xlYXZlKCkgbm90aGluZyB0byBkbyB0aGVyZSAqL1xcbiBcXHRcXHRjYW5jZWxfd29ya19zeW5jKFxcdTAwMjZ3ZGV2LVxcdTAwM2VkaXNjb25uZWN0X3drKTtcXG4tXFx0XFx0Y2FuY2VsX3dvcmtfc3luYyhcXHUwMDI2d2Rldi1cXHUwMDNlcG1zcl9mcmVlX3drKTtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdGNhc2UgTkVUREVWX0RPV046XFxuIFxcdFxcdHdpcGh5X2xvY2soXFx1MDAyNnJkZXYtXFx1MDAzZXdpcGh5KTtcXG5kaWZmIC0tZ2l0IGEvbmV0L3dpcmVsZXNzL2NvcmUuaCBiL25ldC93aXJlbGVzcy9jb3JlLmhcXG5pbmRleCBkZjQ3ZWQ2MjA4YTUwZC4uZjYwYzY2Yjg4Njc3MjUgMTAwNjQ0XFxuLS0tIGEvbmV0L3dpcmVsZXNzL2NvcmUuaFxcbisrKyBiL25ldC93aXJlbGVzcy9jb3JlLmhcXG5AQCAtNTg2LDcgKzU4Niw3IEBAIGNmZzgwMjExX2dldF82Z2h6X3Bvd2VyX3R5cGUoY29uc3QgdTggKmVsZW1zLCBzaXplX3QgZWxlbXNfbGVuLFxcbiBcXG4gdm9pZCBjZmc4MDIxMV9yZWxlYXNlX3Btc3Ioc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldiwgdTMyIHBvcnRpZCk7XFxuIHZvaWQgY2ZnODAyMTFfcG1zcl93ZGV2X2Rvd24oc3RydWN0IHdpcmVsZXNzX2RldiAqd2Rldik7XFxuLXZvaWQgY2ZnODAyMTFfcG1zcl9mcmVlX3drKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yayk7XFxuK3ZvaWQgY2ZnODAyMTFfcG1zcl9mcmVlX3drKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXBoeV93b3JrICp3b3JrKTtcXG4gXFxuIHZvaWQgY2ZnODAyMTFfcmVtb3ZlX2xpbmsoc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldiwgdW5zaWduZWQgaW50IGxpbmtfaWQpO1xcbiB2b2lkIGNmZzgwMjExX3JlbW92ZV9saW5rcyhzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2KTtcXG5kaWZmIC0tZ2l0IGEvbmV0L3dpcmVsZXNzL3Btc3IuYyBiL25ldC93aXJlbGVzcy9wbXNyLmNcXG5pbmRleCBjODQ0NzQ0OGYzYTUwNS4uMmM4ZGIzM2Q5YzMwOTggMTAwNjQ0XFxuLS0tIGEvbmV0L3dpcmVsZXNzL3Btc3IuY1xcbisrKyBiL25ldC93aXJlbGVzcy9wbXNyLmNcXG5AQCAtODA3LDEzICs4MDcsMTEgQEAgc3RhdGljIHZvaWQgY2ZnODAyMTFfcG1zcl9wcm9jZXNzX2Fib3J0KHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYpXFxuIFxcdH1cXG4gfVxcbiBcXG4tdm9pZCBjZmc4MDIxMV9wbXNyX2ZyZWVfd2soc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbit2b2lkIGNmZzgwMjExX3Btc3JfZnJlZV93ayhzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lwaHlfd29yayAqd29yaylcXG4ge1xcbiBcXHRzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2ID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCB3aXJlbGVzc19kZXYsXFxuIFxcdFxcdFxcdFxcdFxcdFxcdCBwbXNyX2ZyZWVfd2spO1xcbiBcXG4tXFx0Z3VhcmQod2lwaHkpKHdkZXYtXFx1MDAzZXdpcGh5KTtcXG4tXFxuIFxcdGNmZzgwMjExX3Btc3JfcHJvY2Vzc19hYm9ydCh3ZGV2KTtcXG4gfVxcbiBcXG5AQCAtODI5LDcgKzgyNyw3IEBAIHZvaWQgY2ZnODAyMTFfcG1zcl93ZGV2X2Rvd24oc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldilcXG4gXFx0fVxcbiBcXHRzcGluX3VubG9ja19iaChcXHUwMDI2d2Rldi1cXHUwMDNlcG1zcl9sb2NrKTtcXG4gXFxuLVxcdGNhbmNlbF93b3JrX3N5bmMoXFx1MDAyNndkZXYtXFx1MDAzZXBtc3JfZnJlZV93ayk7XFxuK1xcdHdpcGh5X3dvcmtfY2FuY2VsKHdkZXYtXFx1MDAzZXdpcGh5LCBcXHUwMDI2d2Rldi1cXHUwMDNlcG1zcl9mcmVlX3drKTtcXG4gXFx0aWYgKGZvdW5kKVxcbiBcXHRcXHRjZmc4MDIxMV9wbXNyX3Byb2Nlc3NfYWJvcnQod2Rldik7XFxuIFxcbkBAIC04NDQsNyArODQyLDcgQEAgdm9pZCBjZmc4MDIxMV9yZWxlYXNlX3Btc3Ioc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldiwgdTMyIHBvcnRpZClcXG4gXFx0bGlzdF9mb3JfZWFjaF9lbnRyeShyZXEsIFxcdTAwMjZ3ZGV2LVxcdTAwM2VwbXNyX2xpc3QsIGxpc3QpIHtcXG4gXFx0XFx0aWYgKHJlcS1cXHUwMDNlbmxfcG9ydGlkID09IHBvcnRpZCkge1xcbiBcXHRcXHRcXHRyZXEtXFx1MDAzZW5sX3BvcnRpZCA9IDA7XFxuLVxcdFxcdFxcdHNjaGVkdWxlX3dvcmsoXFx1MDAyNndkZXYtXFx1MDAzZXBtc3JfZnJlZV93ayk7XFxuK1xcdFxcdFxcdHdpcGh5X3dvcmtfcXVldWUod2Rldi1cXHUwMDNld2lwaHksIFxcdTAwMjZ3ZGV2LVxcdTAwM2VwbXNyX2ZyZWVfd2spO1xcbiBcXHRcXHR9XFxuIFxcdH1cXG4gXFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNndkZXYtXFx1MDAzZXBtc3JfbG9jayk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDEwOjE5OjE3LjcwNDMyMDg0NloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTg3NzYzNjgxNzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQ0ZHODAyMTFcIixcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJNQUM4MDIxMV9IV1NJTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImNmZzgwMjExX3Btc3JfZnJlZV93a1wiLFxuICAgIFwiY2ZnODAyMTFfcG1zcl93ZGV2X2Rvd25cIixcbiAgICBcImNmZzgwMjExX3JlbGVhc2VfcG1zclwiLFxuICAgIFwiY2ZnODAyMTFfaW5pdF93ZGV2XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggY2hhbmdlcyB0aGUgcG1zcl9mcmVlX3drIHdvcmsgaXRlbSBpbiBzdHJ1Y3Qgd2lyZWxlc3NfZGV2IGZyb20gYSBzdGFuZGFyZCB3b3JrX3N0cnVjdCB0byBhIHdpcGh5X3dvcmsuIFRoaXMgYWx0ZXJzIHRoZSBsb2NraW5nIHNlbWFudGljcywgYXMgd2lwaHlfd29yayBpcyBleGVjdXRlZCB3aXRoIHRoZSB3aXBoeSBsb2NrIGhlbGQsIGFsbG93aW5nIHRoZSByZW1vdmFsIG9mIHRoZSBleHBsaWNpdCBndWFyZCh3aXBoeSkgaW4gdGhlIHdvcmsgaGFuZGxlci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjZmc4MDIxMSBzdWJzeXN0ZW0gdGhhdCBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBtYWM4MDIxMV9od3NpbS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBhOTAyZmVhMDkyMzE5ZWY0NDU3OWMzZjlmMTFhMGMyMjE0ZTZmODFlXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBKdWwgMyAxMDoxOToxNSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L2NmZzgwMjExLmggYi9pbmNsdWRlL25ldC9jZmc4MDIxMS5oXG5pbmRleCA4MTg4YWQyMDBkZTUzOS4uMzc1MWExZDc0NzY1YWIgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL25ldC9jZmc4MDIxMS5oXG4rKysgYi9pbmNsdWRlL25ldC9jZmc4MDIxMS5oXG5AQCAtNzI2NSw3ICs3MjY1LDcgQEAgc3RydWN0IHdpcmVsZXNzX2RldiB7XG4gXG4gXHRzdHJ1Y3QgbGlzdF9oZWFkIHBtc3JfbGlzdDtcbiBcdHNwaW5sb2NrX3QgcG1zcl9sb2NrO1xuLVx0c3RydWN0IHdvcmtfc3RydWN0IHBtc3JfZnJlZV93aztcbitcdHN0cnVjdCB3aXBoeV93b3JrIHBtc3JfZnJlZV93aztcbiBcbiBcdHVuc2lnbmVkIGxvbmcgdW5wcm90X2JlYWNvbl9yZXBvcnRlZDtcbiBcbmRpZmYgLS1naXQgYS9uZXQvd2lyZWxlc3MvY29yZS5jIGIvbmV0L3dpcmVsZXNzL2NvcmUuY1xuaW5kZXggM2RjZjYzYjA0YzQxZGIuLmI2YmIyNWVlODljZDJlIDEwMDY0NFxuLS0tIGEvbmV0L3dpcmVsZXNzL2NvcmUuY1xuKysrIGIvbmV0L3dpcmVsZXNzL2NvcmUuY1xuQEAgLTE2MTMsNyArMTYxMyw3IEBAIHZvaWQgY2ZnODAyMTFfaW5pdF93ZGV2KHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYpXG4gXHRJTklUX0xJU1RfSEVBRChcdTAwMjZ3ZGV2LVx1MDAzZW1nbXRfcmVnaXN0cmF0aW9ucyk7XG4gXHRJTklUX0xJU1RfSEVBRChcdTAwMjZ3ZGV2LVx1MDAzZXBtc3JfbGlzdCk7XG4gXHRzcGluX2xvY2tfaW5pdChcdTAwMjZ3ZGV2LVx1MDAzZXBtc3JfbG9jayk7XG4tXHRJTklUX1dPUksoXHUwMDI2d2Rldi1cdTAwM2VwbXNyX2ZyZWVfd2ssIGNmZzgwMjExX3Btc3JfZnJlZV93ayk7XG4rXHR3aXBoeV93b3JrX2luaXQoXHUwMDI2d2Rldi1cdTAwM2VwbXNyX2ZyZWVfd2ssIGNmZzgwMjExX3Btc3JfZnJlZV93ayk7XG4gXG4gI2lmZGVmIENPTkZJR19DRkc4MDIxMV9XRVhUXG4gXHR3ZGV2LVx1MDAzZXdleHQuZGVmYXVsdF9rZXkgPSAtMTtcbkBAIC0xNzQ3LDcgKzE3NDcsNiBAQCBzdGF0aWMgaW50IGNmZzgwMjExX25ldGRldl9ub3RpZmllcl9jYWxsKHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIsXG4gXHRcdFx0Y2ZnODAyMTFfcmVtb3ZlX2xpbmtzKHdkZXYpO1xuIFx0XHQvKiBzaW5jZSB3ZSBqdXN0IGRpZCBjZmc4MDIxMV9sZWF2ZSgpIG5vdGhpbmcgdG8gZG8gdGhlcmUgKi9cbiBcdFx0Y2FuY2VsX3dvcmtfc3luYyhcdTAwMjZ3ZGV2LVx1MDAzZWRpc2Nvbm5lY3Rfd2spO1xuLVx0XHRjYW5jZWxfd29ya19zeW5jKFx1MDAyNndkZXYtXHUwMDNlcG1zcl9mcmVlX3drKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIE5FVERFVl9ET1dOOlxuIFx0XHR3aXBoeV9sb2NrKFx1MDAyNnJkZXYtXHUwMDNld2lwaHkpO1xuZGlmZiAtLWdpdCBhL25ldC93aXJlbGVzcy9jb3JlLmggYi9uZXQvd2lyZWxlc3MvY29yZS5oXG5pbmRleCBkZjQ3ZWQ2MjA4YTUwZC4uZjYwYzY2Yjg4Njc3MjUgMTAwNjQ0XG4tLS0gYS9uZXQvd2lyZWxlc3MvY29yZS5oXG4rKysgYi9uZXQvd2lyZWxlc3MvY29yZS5oXG5AQCAtNTg2LDcgKzU4Niw3IEBAIGNmZzgwMjExX2dldF82Z2h6X3Bvd2VyX3R5cGUoY29uc3QgdTggKmVsZW1zLCBzaXplX3QgZWxlbXNfbGVuLFxuIFxuIHZvaWQgY2ZnODAyMTFfcmVsZWFzZV9wbXNyKHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsIHUzMiBwb3J0aWQpO1xuIHZvaWQgY2ZnODAyMTFfcG1zcl93ZGV2X2Rvd24oc3RydWN0IHdpcmVsZXNzX2RldiAqd2Rldik7XG4tdm9pZCBjZmc4MDIxMV9wbXNyX2ZyZWVfd2soc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKTtcbit2b2lkIGNmZzgwMjExX3Btc3JfZnJlZV93ayhzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lwaHlfd29yayAqd29yayk7XG4gXG4gdm9pZCBjZmc4MDIxMV9yZW1vdmVfbGluayhzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LCB1bnNpZ25lZCBpbnQgbGlua19pZCk7XG4gdm9pZCBjZmc4MDIxMV9yZW1vdmVfbGlua3Moc3RydWN0IHdpcmVsZXNzX2RldiAqd2Rldik7XG5kaWZmIC0tZ2l0IGEvbmV0L3dpcmVsZXNzL3Btc3IuYyBiL25ldC93aXJlbGVzcy9wbXNyLmNcbmluZGV4IGM4NDQ3NDQ4ZjNhNTA1Li4yYzhkYjMzZDljMzA5OCAxMDA2NDRcbi0tLSBhL25ldC93aXJlbGVzcy9wbXNyLmNcbisrKyBiL25ldC93aXJlbGVzcy9wbXNyLmNcbkBAIC04MDcsMTMgKzgwNywxMSBAQCBzdGF0aWMgdm9pZCBjZmc4MDIxMV9wbXNyX3Byb2Nlc3NfYWJvcnQoc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldilcbiBcdH1cbiB9XG4gXG4tdm9pZCBjZmc4MDIxMV9wbXNyX2ZyZWVfd2soc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuK3ZvaWQgY2ZnODAyMTFfcG1zcl9mcmVlX3drKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXBoeV93b3JrICp3b3JrKVxuIHtcbiBcdHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IHdpcmVsZXNzX2RldixcbiBcdFx0XHRcdFx0XHQgcG1zcl9mcmVlX3drKTtcbiBcbi1cdGd1YXJkKHdpcGh5KSh3ZGV2LVx1MDAzZXdpcGh5KTtcbi1cbiBcdGNmZzgwMjExX3Btc3JfcHJvY2Vzc19hYm9ydCh3ZGV2KTtcbiB9XG4gXG5AQCAtODI5LDcgKzgyNyw3IEBAIHZvaWQgY2ZnODAyMTFfcG1zcl93ZGV2X2Rvd24oc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldilcbiBcdH1cbiBcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNndkZXYtXHUwMDNlcG1zcl9sb2NrKTtcbiBcbi1cdGNhbmNlbF93b3JrX3N5bmMoXHUwMDI2d2Rldi1cdTAwM2VwbXNyX2ZyZWVfd2spO1xuK1x0d2lwaHlfd29ya19jYW5jZWwod2Rldi1cdTAwM2V3aXBoeSwgXHUwMDI2d2Rldi1cdTAwM2VwbXNyX2ZyZWVfd2spO1xuIFx0aWYgKGZvdW5kKVxuIFx0XHRjZmc4MDIxMV9wbXNyX3Byb2Nlc3NfYWJvcnQod2Rldik7XG4gXG5AQCAtODQ0LDcgKzg0Miw3IEBAIHZvaWQgY2ZnODAyMTFfcmVsZWFzZV9wbXNyKHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsIHUzMiBwb3J0aWQpXG4gXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KHJlcSwgXHUwMDI2d2Rldi1cdTAwM2VwbXNyX2xpc3QsIGxpc3QpIHtcbiBcdFx0aWYgKHJlcS1cdTAwM2VubF9wb3J0aWQgPT0gcG9ydGlkKSB7XG4gXHRcdFx0cmVxLVx1MDAzZW5sX3BvcnRpZCA9IDA7XG4tXHRcdFx0c2NoZWR1bGVfd29yayhcdTAwMjZ3ZGV2LVx1MDAzZXBtc3JfZnJlZV93ayk7XG4rXHRcdFx0d2lwaHlfd29ya19xdWV1ZSh3ZGV2LVx1MDAzZXdpcGh5LCBcdTAwMjZ3ZGV2LVx1MDAzZXBtc3JfZnJlZV93ayk7XG4gXHRcdH1cbiBcdH1cbiBcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNndkZXYtXHUwMDNlcG1zcl9sb2NrKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDEwOjE5OjE3LjcwNDMyMjQ5NloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI2MzQ2MDg3MDgzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBhIHN0cmFpZ2h0Zm9yd2FyZCBidXQgaW1wb3J0YW50IGNoYW5nZSB3aXRoaW4gdGhlIGBjZmc4MDIxMWAgc3Vic3lzdGVtLCBzcGVjaWZpY2FsbHkgdG91Y2hpbmcgaG93IFBlZXIgTWVhc3VyZW1lbnQgU3VydmV5IFJlcG9ydHMgKFBNU1IpIGFyZSBoYW5kbGVkLiBJdCdzIGVzc2VudGlhbGx5IHJlZmFjdG9yaW5nIHRoZSBgcG1zcl9mcmVlX3drYCB3b3JrIHF1ZXVlIGluIHRoZSBgd2lyZWxlc3NfZGV2YCBzdHJ1Y3QuIEkgc2VlIHRoZXkncmUgdXBncmFkaW5nIGZyb20gYSBzdGFuZGFyZCBgc3RydWN0IHdvcmtfc3RydWN0YCB0byBhIGBzdHJ1Y3Qgd2lwaHlfd29ya2AsIHdoaWNoIGlzIGdlbmVyYWxseSBhIGdvb2QgbW92ZSBmb3IgYmV0dGVyIGludGVncmF0aW9uIGFuZCBwb3RlbnRpYWxseSBtb3JlIGNvbnRyb2xsZWQgZXhlY3V0aW9uIHdpdGhpbiB0aGUgV2ktRmkgc3Vic3lzdGVtLlxuXG5UaGUgY2hhbmdlcyB0byB0aGUgd29yayBxdWV1ZSBtYWNyb3MsIGBJTklUX1dPUktgIGJlY29taW5nIGB3aXBoeV93b3JrX2luaXRgLCBgY2FuY2VsX3dvcmtfc3luY2AgZXZvbHZpbmcgaW50byBgd2lwaHlfd29ya19jYW5jZWxgLCBhbmQgYHNjaGVkdWxlX3dvcmtgIG5vdyBiZWluZyBgd2lwaHlfd29ya19xdWV1ZWAsIGNvbmZpcm0gdGhpcyB3b3JrIHF1ZXVlIHJlZmFjdG9yaW5nIGFuZCBhcmUgc3RhbmRhcmQgcHJvY2VkdXJlIGZvciB0aGlzIHR5cGUgb2YgY2hhbmdlLiBUaGUgc2lnbmF0dXJlIGNoYW5nZSBmb3IgYGNmZzgwMjExX3Btc3JfZnJlZV93a2AgdG8gYWNjZXB0IHRoZSBgd2lwaHlgIHBvaW50ZXIgZGlyZWN0bHkgaXMgbG9naWNhbCwgZ2l2ZW4gdGhlIGB3aXBoeV93b3JrYCBjb250ZXh0IGFuZCB0aGUgcmVtb3ZhbCBvZiB0aGUgcmVkdW5kYW50IGxvY2sgZ3VhcmRpbmcuIFRoZXkncmUgY29ycmVjdGx5IGVuc3VyaW5nIHRoZSBgd2lwaHlgIGxvY2sgaXMgaGVsZCwgd2hpY2ggc2ltcGxpZmllcyB0aGUgY29kZS5cblxuVGhpcyB0b3VjaGVzIGBjZmc4MDIxMWAsIGEgc3Vic3lzdGVtIHRoYXQncyBkaXJlY3RseSBhY2Nlc3NpYmxlIHRocm91Z2ggYG1hYzgwMjExX2h3c2ltYCwgd2hpY2ggSSBrbm93IGZyb20gZXhwZXJpZW5jZSBpcyBjcnVjaWFsIGluIHZpcnR1YWxpemVkIHRlc3RpbmcgZW52aXJvbm1lbnRzLiBUaGlzIG1lYW5zIHRoaXMgY2hhbmdlIGlzIGZ1bmN0aW9uYWxseSBzaWduaWZpY2FudCBmb3IgdGVzdGluZyBhbmQgZGVidWdnaW5nLCB0aGVyZWZvcmUgSSB3aWxsIHNldCBgV29ydGhGdXp6aW5nPXRydWVgLlxuXG5Ob3csIHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGZ1bGwgc2NvcGUgb2YgdGhpcyBjaGFuZ2UsIEkgbmVlZCB0byBmb2N1cyBvbiBhIGZldyBrZXkgc3ltYm9sczogYGNmZzgwMjExX3Btc3JfZnJlZV93a2AsIG9mIGNvdXJzZSwgYnV0IGFsc28gYGNmZzgwMjExX3Btc3Jfd2Rldl9kb3duYCBhbmQgYGNmZzgwMjExX3JlbGVhc2VfcG1zcmAgdG8gZ2V0IGEgY29tcGxldGUgcGljdHVyZSBvZiB0aGUgUE1TUiBoYW5kbGluZyBmbG93LiBJJ2xsIG5lZWQgdG8gZW5hYmxlIGEgZmV3IGNvbmZpZ3MgdG8gcmVwbGljYXRlIGFuZCB0ZXN0IHRoZSBlbnZpcm9ubWVudCBwcm9wZXJseS4gYENGRzgwMjExYCBpcyBvYnZpb3VzLCBhbmQgSSdsbCBuZWVkIGBNQUM4MDIxMWAsIHdoaWNoIGlzIGdlbmVyYWxseSBhIHByZS1yZXF1aXNpdGUgZm9yIGBNQUM4MDIxMV9IV1NJTWAuXG5cbkZpbmFsbHksIHRvIHNlZSBpZiB0aGVyZSdzIGFueXRoaW5nIGVsc2UgcmVsYXRlZCB0byBQTVNSIHRoYXQgSSBtaWdodCBiZSBtaXNzaW5nLCBJJ2xsIHJ1biBhIHF1aWNrIGdyZXAgb24gdGhlIGBuZXQvd2lyZWxlc3MvYCBkaXJlY3RvcnkgZm9yIGVpdGhlciBgY2ZnODAyMTFfcG1zcl9mcmVlX3drYCBvciBqdXN0IGBwbXNyYC4gVGhpcyB3aWxsIGhlbHAgbWUgZW5zdXJlIHRoYXQgdGhlcmUgYXJlIG5vIG9ic2N1cmUgUE1TUi1yZWxhdGVkIGNvbmZpZ3VyYXRpb25zIHRoYXQgSSdtIG92ZXJsb29raW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMTEwLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzcwLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMTA6MTk6NDQuMDUwNDEyOTM5WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM1Nzc1ODgwMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjZmc4MDIxMV9wbXNyX2ZyZWVfd2tcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3dpcmVsZXNzL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvd2lyZWxlc3MvY29yZS5jPTE2MDk9dm9pZCBjZmc4MDIxMV9pbml0X3dkZXYoc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldilcXG4tLVxcbm5ldC93aXJlbGVzcy9jb3JlLmMtMTYxNS1cXHRzcGluX2xvY2tfaW5pdChcXHUwMDI2d2Rldi1cXHUwMDNlcG1zcl9sb2NrKTtcXG5uZXQvd2lyZWxlc3MvY29yZS5jOjE2MTY6XFx0d2lwaHlfd29ya19pbml0KFxcdTAwMjZ3ZGV2LVxcdTAwM2VwbXNyX2ZyZWVfd2ssIGNmZzgwMjExX3Btc3JfZnJlZV93ayk7XFxubmV0L3dpcmVsZXNzL2NvcmUuYy0xNjE3LVxcbi0tXFxubmV0L3dpcmVsZXNzL2NvcmUuaD01ODg9dm9pZCBjZmc4MDIxMV9wbXNyX3dkZXZfZG93bihzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2KTtcXG5uZXQvd2lyZWxlc3MvY29yZS5oOjU4OTp2b2lkIGNmZzgwMjExX3Btc3JfZnJlZV93ayhzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lwaHlfd29yayAqd29yayk7XFxubmV0L3dpcmVsZXNzL2NvcmUuaC01OTAtXFxuLS1cXG5uZXQvd2lyZWxlc3MvcG1zci5jPTc4Nz1zdGF0aWMgdm9pZCBjZmc4MDIxMV9wbXNyX3Byb2Nlc3NfYWJvcnQoc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldilcXG4tLVxcbm5ldC93aXJlbGVzcy9wbXNyLmMtODA5LVxcbm5ldC93aXJlbGVzcy9wbXNyLmM6ODEwOnZvaWQgY2ZnODAyMTFfcG1zcl9mcmVlX3drKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXBoeV93b3JrICp3b3JrKVxcbm5ldC93aXJlbGVzcy9wbXNyLmMtODExLXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMTA6MTk6NDQuNDA4MjA1NjUxWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ4NTY1OTkxMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOlxuXG4qKktjb25maWcgRGl2ZSBmb3IgUE1TUioqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBmaW5kIG91dCBhYm91dCBQTVNSLiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byBnbyBzdHJhaWdodCB0byB0aGUgc291cmNlLCB0aGUgY29yZSBvZiBob3cgdGhlIHdpcmVsZXNzIGNvbmZpZ3VyYXRpb24gaXMgc3RydWN0dXJlZC4gVGhhdCBtZWFucyBkaXZpbmcgaW50byB0aGUgYG5ldC93aXJlbGVzcy9LY29uZmlnYCBmaWxlLiBJdCdzIHRoZSBjZW50cmFsIGNvbmZpZ3VyYXRpb24gZmlsZSBmb3IgYW55dGhpbmcgYW5kIGV2ZXJ5dGhpbmcgd2lyZWxlc3MgcmVsYXRlZCBpbiB0aGUga2VybmVsLiBUaGlzIGlzIHdoZXJlIEknZCBleHBlY3QgdG8gZmluZCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gUE1TUi4gSG9wZWZ1bGx5LCBpdCdzIGNsZWFybHkgbmFtZWQgb3IgaGFzIHNvbWUgb2J2aW91cyBkZXBlbmRlbmNpZXMgdGhhdCB3aWxsIHBvaW50IG1lIGluIHRoZSByaWdodCBkaXJlY3Rpb24uIEl0J3MgYSBiaXQgb2YgYSBkYXRhLW1pbmluZyBleGVyY2lzZSwgYnV0IHRoaXMgaXMgdGhlIGxvZ2ljYWwgZmlyc3Qgc3RlcCBmb3IgdW5kZXJzdGFuZGluZyB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGF2YWlsYWJsZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaWYgUE1TUiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQsIGhvdyBpdCBpcyBleHBvc2VkIHRvIHRoZSB1c2VyLCBhbmQgaWYgaXQncyBkZXBlbmRlbnQgb24gYW55IG90aGVyIG9wdGlvbnMuIExldCdzIHNlZSB3aGF0J3MgaW4gdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ0MzgsIk91dHB1dFRva2VucyI6MjYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wM1QxMDoxOTo0Ny44OTM4Njc1ODNaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzA0ODU3ODE3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIlBNU1JcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3dpcmVsZXNzL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDU2OCBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYz00NjE9c3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5XFxubmV0L3dpcmVsZXNzL25sODAyMTEuYzo0NjI6bmw4MDIxMV9wbXNyX2Z0bV9yZXFfYXR0cl9wb2xpY3lbTkw4MDIxMV9QTVNSX0ZUTV9SRVFfQVRUUl9NQVggKyAxXSA9IHtcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjQ2MzpcXHRbTkw4MDIxMV9QTVNSX0ZUTV9SRVFfQVRUUl9BU0FQXSA9IHsgLnR5cGUgPSBOTEFfRkxBRyB9LFxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6NDY0OlxcdFtOTDgwMjExX1BNU1JfRlRNX1JFUV9BVFRSX1BSRUFNQkxFXSA9IHsgLnR5cGUgPSBOTEFfVTMyIH0sXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYzo0NjU6XFx0W05MODAyMTFfUE1TUl9GVE1fUkVRX0FUVFJfTlVNX0JVUlNUU19FWFBdID1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTQ2Ni1cXHRcXHROTEFfUE9MSUNZX01BWChOTEFfVTgsIDE1KSxcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjQ2NzpcXHRbTkw4MDIxMV9QTVNSX0ZUTV9SRVFfQVRUUl9CVVJTVF9QRVJJT0RdID0geyAudHlwZSA9IE5MQV9VMTYgfSxcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjQ2ODpcXHRbTkw4MDIxMV9QTVNSX0ZUTV9SRVFfQVRUUl9CVVJTVF9EVVJBVElPTl0gPVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtNDY5LVxcdFxcdE5MQV9QT0xJQ1lfTUFYKE5MQV9VOCwgMTUpLFxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6NDcwOlxcdFtOTDgwMjExX1BNU1JfRlRNX1JFUV9BVFRSX0ZUTVNfUEVSX0JVUlNUXSA9IHsgLnR5cGUgPSBOTEFfVTggfSxcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjQ3MTpcXHRbTkw4MDIxMV9QTVNSX0ZUTV9SRVFfQVRUUl9OVU1fRlRNUl9SRVRSSUVTXSA9IHsgLnR5cGUgPSBOTEFfVTggfSxcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjQ3MjpcXHRbTkw4MDIxMV9QTVNSX0ZUTV9SRVFfQVRUUl9SRVFVRVNUX0xDSV0gPSB7IC50eXBlID0gTkxBX0ZMQUcgfSxcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjQ3MzpcXHRbTkw4MDIxMV9QTVNSX0ZUTV9SRVFfQVRUUl9SRVFVRVNUX0NJVklDTE9DXSA9IHsgLnR5cGUgPSBOTEFfRkxBRyB9LFxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6NDc0OlxcdFtOTDgwMjExX1BNU1JfRlRNX1JFUV9BVFRSX1RSSUdHRVJfQkFTRURdID0geyAudHlwZSA9IE5MQV9GTEFHIH0sXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYzo0NzU6XFx0W05MODAyMTFfUE1TUl9GVE1fUkVRX0FUVFJfTk9OX1RSSUdHRVJfQkFTRURdID0geyAudHlwZSA9IE5MQV9GTEFHIH0sXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYzo0NzY6XFx0W05MODAyMTFfUE1TUl9GVE1fUkVRX0FUVFJfTE1SX0ZFRURCQUNLXSA9IHsgLnR5cGUgPSBOTEFfRkxBRyB9LFxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6NDc3OlxcdFtOTDgwMjExX1BNU1JfRlRNX1JFUV9BVFRSX0JTU19DT0xPUl0gPSB7IC50eXBlID0gTkxBX1U4IH0sXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYzo0Nzg6XFx0W05MODAyMTFfUE1TUl9GVE1fUkVRX0FUVFJfUlNUQV0gPSB7IC50eXBlID0gTkxBX0ZMQUcgfSxcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjQ3OTpcXHRbTkw4MDIxMV9QTVNSX0ZUTV9SRVFfQVRUUl9NSU5fVElNRV9CRVRXRUVOX01FQVNVUkVNRU5UU10gPSB7XFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy00ODAtXFx0XFx0LnR5cGUgPSBOTEFfVTMyXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy00ODEtXFx0fSxcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjQ4MjpcXHRbTkw4MDIxMV9QTVNSX0ZUTV9SRVFfQVRUUl9NQVhfVElNRV9CRVRXRUVOX01FQVNVUkVNRU5UU10gPSB7XFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy00ODMtXFx0XFx0LnR5cGUgPSBOTEFfVTMyXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy00ODQtXFx0fSxcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjQ4NTpcXHRbTkw4MDIxMV9QTVNSX0ZUTV9SRVFfQVRUUl9OT01JTkFMX1RJTUVdID0geyAudHlwZSA9IE5MQV9VMzIgfSxcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjQ4NjpcXHRbTkw4MDIxMV9QTVNSX0ZUTV9SRVFfQVRUUl9BV19EVVJBVElPTl0gPSBOTEFfUE9MSUNZX01BWChOTEFfVTMyLCAyNTUpLFxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6NDg3OlxcdFtOTDgwMjExX1BNU1JfRlRNX1JFUV9BVFRSX05VTV9NRUFTVVJFTUVOVFNdID0geyAudHlwZSA9IE5MQV9VMzIgfSxcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjQ4ODpcXHRbTkw4MDIxMV9QTVNSX0ZUTV9SRVFfQVRUUl9JTkdSRVNTXSA9IHsgLnR5cGUgPSBOTEFfVTY0IH0sXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYzo0ODk6XFx0W05MODAyMTFfUE1TUl9GVE1fUkVRX0FUVFJfRUdSRVNTXSA9IHsgLnR5cGUgPSBOTEFfVTY0IH0sXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYzo0OTA6XFx0W05MODAyMTFfUE1TUl9GVE1fUkVRX0FUVFJfUERfU1VQUFJFU1NfUkVTVUxUU10gPSB7IC50eXBlID0gTkxBX0ZMQUcgfSxcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTQ5MS19O1xcbi0tXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYz00OTM9c3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5XFxubmV0L3dpcmVsZXNzL25sODAyMTEuYzo0OTQ6bmw4MDIxMV9wbXNyX3JlcV9kYXRhX3BvbGljeVtOTDgwMjExX1BNU1JfVFlQRV9NQVggKyAxXSA9IHtcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjQ5NTpcXHRbTkw4MDIxMV9QTVNSX1RZUEVfRlRNXSA9XFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy00OTYtXFx0XFx0TkxBX1BPTElDWV9ORVNURUQobmw4MDIxMV9wbXNyX2Z0bV9yZXFfYXR0cl9wb2xpY3kpLFxcbi0tXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYz00OTk9c3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5XFxubmV0L3dpcmVsZXNzL25sODAyMTEuYzo1MDA6bmw4MDIxMV9wbXNyX3JlcV9hdHRyX3BvbGljeVtOTDgwMjExX1BNU1JfUkVRX0FUVFJfTUFYICsgMV0gPSB7XFxubmV0L3dpcmVsZXNzL25sODAyMTEuYzo1MDE6XFx0W05MODAyMTFfUE1TUl9SRVFfQVRUUl9EQVRBXSA9XFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy01MDItXFx0XFx0TkxBX1BPTElDWV9ORVNURUQobmw4MDIxMV9wbXNyX3JlcV9kYXRhX3BvbGljeSksXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYzo1MDM6XFx0W05MODAyMTFfUE1TUl9SRVFfQVRUUl9HRVRfQVBfVFNGXSA9IHsgLnR5cGUgPSBOTEFfRkxBRyB9LFxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtNTA0LX07XFxuLS1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jPTUwNj1zdGF0aWMgY29uc3Qgc3RydWN0IG5sYV9wb2xpY3lcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjUwNzpubDgwMjExX3Btc3JfcGVlcl9hdHRyX3BvbGljeVtOTDgwMjExX1BNU1JfUEVFUl9BVFRSX01BWCArIDFdID0ge1xcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6NTA4OlxcdFtOTDgwMjExX1BNU1JfUEVFUl9BVFRSX0FERFJdID0gTkxBX1BPTElDWV9FVEhfQUREUixcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjUwOTpcXHRbTkw4MDIxMV9QTVNSX1BFRVJfQVRUUl9DSEFOXSA9IE5MQV9QT0xJQ1lfTkVTVEVEKG5sODAyMTFfcG9saWN5KSxcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjUxMDpcXHRbTkw4MDIxMV9QTVNSX1BFRVJfQVRUUl9SRVFdID1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTUxMS1cXHRcXHROTEFfUE9MSUNZX05FU1RFRChubDgwMjExX3Btc3JfcmVxX2F0dHJfcG9saWN5KSxcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjUxMjpcXHRbTkw4MDIxMV9QTVNSX1BFRVJfQVRUUl9SRVNQXSA9IHsgLnR5cGUgPSBOTEFfUkVKRUNUIH0sXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYzo1MTM6XFx0W05MODAyMTFfUE1TUl9QRUVSX0FUVFJfUkVRX1RZUEVdID1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjUxNDpcXHRcXHROTEFfUE9MSUNZX01BWChOTEFfVTMyLCBOTDgwMjExX1BNU1JfRlRNX1JFUV9UWVBFX01BWCksXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy01MTUtfTtcXG4tLVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM9NTE3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6NTE4Om5sODAyMTFfcG1zcl9hdHRyX3BvbGljeVtOTDgwMjExX1BNU1JfQVRUUl9NQVggKyAxXSA9IHtcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjUxOTpcXHRbTkw4MDIxMV9QTVNSX0FUVFJfTUFYX1BFRVJTXSA9IHsgLnR5cGUgPSBOTEFfUkVKRUNUIH0sXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYzo1MjA6XFx0W05MODAyMTFfUE1TUl9BVFRSX1JFUE9SVF9BUF9UU0ZdID0geyAudHlwZSA9IE5MQV9SRUpFQ1QgfSxcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjUyMTpcXHRbTkw4MDIxMV9QTVNSX0FUVFJfUkFORE9NSVpFX01BQ19BRERSXSA9IHsgLnR5cGUgPSBOTEFfUkVKRUNUIH0sXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYzo1MjI6XFx0W05MODAyMTFfUE1TUl9BVFRSX1RZUEVfQ0FQQV0gPSB7IC50eXBlID0gTkxBX1JFSkVDVCB9LFxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6NTIzOlxcdFtOTDgwMjExX1BNU1JfQVRUUl9QRUVSU10gPVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtNTI0LVxcdFxcdE5MQV9QT0xJQ1lfTkVTVEVEX0FSUkFZKG5sODAyMTFfcG1zcl9wZWVyX2F0dHJfcG9saWN5KSxcXG4tLVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM9MjQ3OD1ubDgwMjExX3NlbmRfcG1zcl9mdG1fY2FwYShjb25zdCBzdHJ1Y3QgY2ZnODAyMTFfcG1zcl9jYXBhYmlsaXRpZXMgKmNhcCxcXG4tLVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjQ4NS1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjI0ODY6XFx0ZnRtID0gbmxhX25lc3Rfc3RhcnRfbm9mbGFnKG1zZywgTkw4MDIxMV9QTVNSX1RZUEVfRlRNKTtcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTI0ODctXFx0aWYgKCFmdG0pXFxuLS1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTI0ODktXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYzoyNDkwOlxcdGlmIChjYXAtXFx1MDAzZWZ0bS5hc2FwIFxcdTAwMjZcXHUwMDI2IG5sYV9wdXRfZmxhZyhtc2csIE5MODAyMTFfUE1TUl9GVE1fQ0FQQV9BVFRSX0FTQVApKVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjQ5MS1cXHRcXHRyZXR1cm4gLUVOT0JVRlM7XFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yNDkyLVxcdGlmIChjYXAtXFx1MDAzZWZ0bS5ub25fYXNhcCBcXHUwMDI2XFx1MDAyNlxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MjQ5MzpcXHQgICAgbmxhX3B1dF9mbGFnKG1zZywgTkw4MDIxMV9QTVNSX0ZUTV9DQVBBX0FUVFJfTk9OX0FTQVApKVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjQ5NC1cXHRcXHRyZXR1cm4gLUVOT0JVRlM7XFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yNDk1LVxcdGlmIChjYXAtXFx1MDAzZWZ0bS5yZXF1ZXN0X2xjaSBcXHUwMDI2XFx1MDAyNlxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MjQ5NjpcXHQgICAgbmxhX3B1dF9mbGFnKG1zZywgTkw4MDIxMV9QTVNSX0ZUTV9DQVBBX0FUVFJfUkVRX0xDSSkpXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yNDk3LVxcdFxcdHJldHVybiAtRU5PQlVGUztcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTI0OTgtXFx0aWYgKGNhcC1cXHUwMDNlZnRtLnJlcXVlc3RfY2l2aWNsb2MgXFx1MDAyNlxcdTAwMjZcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjI0OTk6XFx0ICAgIG5sYV9wdXRfZmxhZyhtc2csIE5MODAyMTFfUE1TUl9GVE1fQ0FQQV9BVFRSX1JFUV9DSVZJQ0xPQykpXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yNTAwLVxcdFxcdHJldHVybiAtRU5PQlVGUztcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjI1MDE6XFx0aWYgKG5sYV9wdXRfdTMyKG1zZywgTkw4MDIxMV9QTVNSX0ZUTV9DQVBBX0FUVFJfUFJFQU1CTEVTLFxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjUwMi1cXHRcXHRcXHRjYXAtXFx1MDAzZWZ0bS5wcmVhbWJsZXMpKVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjUwMy1cXHRcXHRyZXR1cm4gLUVOT0JVRlM7XFxubmV0L3dpcmVsZXNzL25sODAyMTEuYzoyNTA0OlxcdGlmIChubGFfcHV0X3UzMihtc2csIE5MODAyMTFfUE1TUl9GVE1fQ0FQQV9BVFRSX0JBTkRXSURUSFMsXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yNTA1LVxcdFxcdFxcdGNhcC1cXHUwMDNlZnRtLmJhbmR3aWR0aHMpKVxcbi0tXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yNTA3LVxcdGlmIChjYXAtXFx1MDAzZWZ0bS5tYXhfYnVyc3RzX2V4cG9uZW50IFxcdTAwM2U9IDAgXFx1MDAyNlxcdTAwMjZcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjI1MDg6XFx0ICAgIG5sYV9wdXRfdTMyKG1zZywgTkw4MDIxMV9QTVNSX0ZUTV9DQVBBX0FUVFJfTUFYX0JVUlNUU19FWFBPTkVOVCxcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTI1MDktXFx0XFx0XFx0Y2FwLVxcdTAwM2VmdG0ubWF4X2J1cnN0c19leHBvbmVudCkpXFxuLS1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTI1MTEtXFx0aWYgKGNhcC1cXHUwMDNlZnRtLm1heF9mdG1zX3Blcl9idXJzdCBcXHUwMDI2XFx1MDAyNlxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MjUxMjpcXHQgICAgbmxhX3B1dF91MzIobXNnLCBOTDgwMjExX1BNU1JfRlRNX0NBUEFfQVRUUl9NQVhfRlRNU19QRVJfQlVSU1QsXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yNTEzLVxcdFxcdFxcdGNhcC1cXHUwMDNlZnRtLm1heF9mdG1zX3Blcl9idXJzdCkpXFxuLS1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTI1MTUtXFx0aWYgKGNhcC1cXHUwMDNlZnRtLnRyaWdnZXJfYmFzZWQgXFx1MDAyNlxcdTAwMjZcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjI1MTY6XFx0ICAgIG5sYV9wdXRfZmxhZyhtc2csIE5MODAyMTFfUE1TUl9GVE1fQ0FQQV9BVFRSX1RSSUdHRVJfQkFTRUQpKVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjUxNy1cXHRcXHRyZXR1cm4gLUVOT0JVRlM7XFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yNTE4LVxcdGlmIChjYXAtXFx1MDAzZWZ0bS5ub25fdHJpZ2dlcl9iYXNlZCBcXHUwMDI2XFx1MDAyNlxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MjUxOTpcXHQgICAgbmxhX3B1dF9mbGFnKG1zZywgTkw4MDIxMV9QTVNSX0ZUTV9DQVBBX0FUVFJfTk9OX1RSSUdHRVJfQkFTRUQpKVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjUyMC1cXHRcXHRyZXR1cm4gLUVOT0JVRlM7XFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yNTIxLVxcdGlmIChjYXAtXFx1MDAzZWZ0bS5zdXBwb3J0XzZnaHogXFx1MDAyNlxcdTAwMjZcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjI1MjI6XFx0ICAgIG5sYV9wdXRfZmxhZyhtc2csIE5MODAyMTFfUE1TUl9GVE1fQ0FQQV9BVFRSXzZHSFpfU1VQUE9SVCkpXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yNTIzLVxcdFxcdHJldHVybiAtRU5PQlVGUztcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjI1MjQ6XFx0aWYgKG5sYV9wdXRfdTMyKG1zZywgTkw4MDIxMV9QTVNSX0ZUTV9DQVBBX0FUVFJfTUFYX1RYX0xURl9SRVAsXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yNTI1LVxcdFxcdFxcdGNhcC1cXHUwMDNlZnRtLm1heF90eF9sdGZfcmVwKSlcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTI1MjYtXFx0XFx0cmV0dXJuIC1FTk9CVUZTO1xcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MjUyNzpcXHRpZiAobmxhX3B1dF91MzIobXNnLCBOTDgwMjExX1BNU1JfRlRNX0NBUEFfQVRUUl9NQVhfUlhfTFRGX1JFUCxcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTI1MjgtXFx0XFx0XFx0Y2FwLVxcdTAwM2VmdG0ubWF4X3J4X2x0Zl9yZXApKVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjUyOS1cXHRcXHRyZXR1cm4gLUVOT0JVRlM7XFxubmV0L3dpcmVsZXNzL25sODAyMTEuYzoyNTMwOlxcdGlmIChubGFfcHV0X3UzMihtc2csIE5MODAyMTFfUE1TUl9GVE1fQ0FQQV9BVFRSX01BWF9UWF9TVFMsXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yNTMxLVxcdFxcdFxcdGNhcC1cXHUwMDNlZnRtLm1heF90eF9zdHMpKVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjUzMi1cXHRcXHRyZXR1cm4gLUVOT0JVRlM7XFxubmV0L3dpcmVsZXNzL25sODAyMTEuYzoyNTMzOlxcdGlmIChubGFfcHV0X3UzMihtc2csIE5MODAyMTFfUE1TUl9GVE1fQ0FQQV9BVFRSX01BWF9SWF9TVFMsXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yNTM0LVxcdFxcdFxcdGNhcC1cXHUwMDNlZnRtLm1heF9yeF9zdHMpKVxcbi0tXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yNTM2LVxcdGlmIChjYXAtXFx1MDAzZWZ0bS5tYXhfdG90YWxfbHRmX3R4IFxcdTAwM2UgMCBcXHUwMDI2XFx1MDAyNlxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MjUzNzpcXHQgICAgbmxhX3B1dF91MzIobXNnLCBOTDgwMjExX1BNU1JfRlRNX0NBUEFfQVRUUl9NQVhfVE9UQUxfTFRGX1RYLFxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjUzOC1cXHRcXHRcXHRjYXAtXFx1MDAzZWZ0bS5tYXhfdG90YWxfbHRmX3R4KSlcXG4tLVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjU0MC1cXHRpZiAoY2FwLVxcdTAwM2VmdG0ubWF4X3RvdGFsX2x0Zl9yeCBcXHUwMDNlIDAgXFx1MDAyNlxcdTAwMjZcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjI1NDE6XFx0ICAgIG5sYV9wdXRfdTMyKG1zZywgTkw4MDIxMV9QTVNSX0ZUTV9DQVBBX0FUVFJfTUFYX1RPVEFMX0xURl9SWCxcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTI1NDItXFx0XFx0XFx0Y2FwLVxcdTAwM2VmdG0ubWF4X3RvdGFsX2x0Zl9yeCkpXFxuLS1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTI1NDktXFx0XFx0aXN0YV9jYXBzID0gbmxhX25lc3Rfc3RhcnRfbm9mbGFnKG1zZyxcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjI1NTA6XFx0XFx0XFx0XFx0XFx0XFx0ICBOTDgwMjExX1BNU1JfRlRNX0NBUEFfQVRUUl9JU1RBX0NBUFMpO1xcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjU1MS1cXHRcXHRpZiAoIWlzdGFfY2FwcylcXG4tLVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjU1My1cXHRcXHRpZiAoY2FwLVxcdTAwM2VmdG0uaXN0YS5zdXBwb3J0X250YiBcXHUwMDI2XFx1MDAyNlxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MjU1NDpcXHRcXHQgICAgbmxhX3B1dF9mbGFnKG1zZywgTkw4MDIxMV9QTVNSX0ZUTV9DQVBBX0FUVFJfU1VQUE9SVF9OVEIpKVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjU1NS1cXHRcXHRcXHRyZXR1cm4gLUVOT0JVRlM7XFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yNTU2LVxcdFxcdGlmIChjYXAtXFx1MDAzZWZ0bS5pc3RhLnN1cHBvcnRfdGIgXFx1MDAyNlxcdTAwMjZcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjI1NTc6XFx0XFx0ICAgIG5sYV9wdXRfZmxhZyhtc2csIE5MODAyMTFfUE1TUl9GVE1fQ0FQQV9BVFRSX1NVUFBPUlRfVEIpKVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjU1OC1cXHRcXHRcXHRyZXR1cm4gLUVOT0JVRlM7XFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yNTU5LVxcdFxcdGlmIChjYXAtXFx1MDAzZWZ0bS5pc3RhLnN1cHBvcnRfZWRjYSBcXHUwMDI2XFx1MDAyNlxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MjU2MDpcXHRcXHQgICAgbmxhX3B1dF9mbGFnKG1zZywgTkw4MDIxMV9QTVNSX0ZUTV9DQVBBX0FUVFJfU1VQUE9SVF9FRENBKSlcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTI1NjEtXFx0XFx0XFx0cmV0dXJuIC1FTk9CVUZTO1xcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjU2Mi1cXHRcXHRpZiAoY2FwLVxcdTAwM2VmdG0uaXN0YS5tYXhfcGVlcnMgXFx1MDAyNlxcdTAwMjZcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjI1NjM6XFx0XFx0ICAgIG5sYV9wdXRfdTMyKG1zZywgTkw4MDIxMV9QTVNSX0FUVFJfTUFYX1BFRVJfSVNUQV9ST0xFLFxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjU2NC1cXHRcXHRcXHRcXHRjYXAtXFx1MDAzZWZ0bS5pc3RhLm1heF9wZWVycykpXFxuLS1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTI1NzctXFx0XFx0ICovXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYzoyNTc4OlxcdFxcdGlmIChubGFfcHV0X2ZsYWcobXNnLCBOTDgwMjExX1BNU1JfRlRNX0NBUEFfQVRUUl9SU1RBX1NVUFBPUlQpKVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjU3OS1cXHRcXHRcXHRyZXR1cm4gLUVOT0JVRlM7XFxuLS1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTI1ODEtXFx0XFx0cnN0YV9jYXBzID0gbmxhX25lc3Rfc3RhcnRfbm9mbGFnKG1zZyxcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjI1ODI6XFx0XFx0XFx0XFx0XFx0XFx0ICBOTDgwMjExX1BNU1JfRlRNX0NBUEFfQVRUUl9SU1RBX0NBUFMpO1xcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjU4My1cXHRcXHRpZiAoIXJzdGFfY2FwcylcXG4tLVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjU4NS1cXHRcXHRpZiAoY2FwLVxcdTAwM2VmdG0ucnN0YS5zdXBwb3J0X250YiBcXHUwMDI2XFx1MDAyNlxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MjU4NjpcXHRcXHQgICAgbmxhX3B1dF9mbGFnKG1zZywgTkw4MDIxMV9QTVNSX0ZUTV9DQVBBX0FUVFJfU1VQUE9SVF9OVEIpKVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjU4Ny1cXHRcXHRcXHRyZXR1cm4gLUVOT0JVRlM7XFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yNTg4LVxcdFxcdGlmIChjYXAtXFx1MDAzZWZ0bS5yc3RhLnN1cHBvcnRfdGIgXFx1MDAyNlxcdTAwMjZcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjI1ODk6XFx0XFx0ICAgIG5sYV9wdXRfZmxhZyhtc2csIE5MODAyMTFfUE1TUl9GVE1fQ0FQQV9BVFRSX1NVUFBPUlRfVEIpKVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjU5MC1cXHRcXHRcXHRyZXR1cm4gLUVOT0JVRlM7XFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yNTkxLVxcdFxcdGlmIChjYXAtXFx1MDAzZWZ0bS5yc3RhLnN1cHBvcnRfZWRjYSBcXHUwMDI2XFx1MDAyNlxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MjU5MjpcXHRcXHQgICAgbmxhX3B1dF9mbGFnKG1zZywgTkw4MDIxMV9QTVNSX0ZUTV9DQVBBX0FUVFJfU1VQUE9SVF9FRENBKSlcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTI1OTMtXFx0XFx0XFx0cmV0dXJuIC1FTk9CVUZTO1xcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjU5NC1cXHRcXHRpZiAoY2FwLVxcdTAwM2VmdG0ucnN0YS5tYXhfcGVlcnMgXFx1MDAyNlxcdTAwMjZcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjI1OTU6XFx0XFx0ICAgIG5sYV9wdXRfdTMyKG1zZywgTkw4MDIxMV9QTVNSX0FUVFJfTUFYX1BFRVJfUlNUQV9ST0xFLFxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjU5Ni1cXHRcXHRcXHRcXHRjYXAtXFx1MDAzZWZ0bS5yc3RhLm1heF9wZWVycykpXFxuLS1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTI2MDEtXFx0aWYgKGNhcC1cXHUwMDNlZnRtLm1heF9ub19vZl90eF9hbnRlbm5hcyBcXHUwMDI2XFx1MDAyNlxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MjYwMjpcXHQgICAgbmxhX3B1dF91OChtc2csIE5MODAyMTFfUE1TUl9GVE1fQ0FQQV9BVFRSX01BWF9OVU1fVFhfQU5URU5OQVMsXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yNjAzLVxcdFxcdCAgICAgICBjYXAtXFx1MDAzZWZ0bS5tYXhfbm9fb2ZfdHhfYW50ZW5uYXMpKVxcbi0tXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yNjA2LVxcdGlmIChjYXAtXFx1MDAzZWZ0bS5tYXhfbm9fb2ZfcnhfYW50ZW5uYXMgXFx1MDAyNlxcdTAwMjZcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjI2MDc6XFx0ICAgIG5sYV9wdXRfdTgobXNnLCBOTDgwMjExX1BNU1JfRlRNX0NBUEFfQVRUUl9NQVhfTlVNX1JYX0FOVEVOTkFTLFxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjYwOC1cXHRcXHQgICAgICAgY2FwLVxcdTAwM2VmdG0ubWF4X25vX29mX3J4X2FudGVubmFzKSlcXG4tLVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjYxMS1cXHRpZiAoY2FwLVxcdTAwM2VmdG0ubWluX2FsbG93ZWRfcmFuZ2luZ19pbnRlcnZhbF9lZGNhIFxcdTAwMjZcXHUwMDI2XFxubmV0L3dpcmVsZXNzL25sODAyMTEuYzoyNjEyOlxcdCAgICBubGFfcHV0X3UzMihtc2csIE5MODAyMTFfUE1TUl9GVE1fQ0FQQV9BVFRSX01JTl9JTlRFUlZBTF9FRENBLFxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjYxMy1cXHRcXHRcXHRjYXAtXFx1MDAzZWZ0bS5taW5fYWxsb3dlZF9yYW5naW5nX2ludGVydmFsX2VkY2EpKVxcbi0tXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yNjE2LVxcdGlmIChjYXAtXFx1MDAzZWZ0bS5taW5fYWxsb3dlZF9yYW5naW5nX2ludGVydmFsX250YiBcXHUwMDI2XFx1MDAyNlxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MjYxNzpcXHQgICAgbmxhX3B1dF91MzIobXNnLCBOTDgwMjExX1BNU1JfRlRNX0NBUEFfQVRUUl9NSU5fSU5URVJWQUxfTlRCLFxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjYxOC1cXHRcXHRcXHRjYXAtXFx1MDAzZWZ0bS5taW5fYWxsb3dlZF9yYW5naW5nX2ludGVydmFsX250YikpXFxuLS1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTI2MjQtXFx0XFx0cGRfY2FwcyA9IG5sYV9uZXN0X3N0YXJ0X25vZmxhZyhtc2csXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYzoyNjI1OlxcdFxcdFxcdFxcdFxcdFxcdE5MODAyMTFfUE1TUl9GVE1fQ0FQQV9BVFRSX1RZUEVfQ0FQUyk7XFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yNjI2LVxcdFxcdGlmICghcGRfY2FwcylcXG4tLVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjYyOS1cXHRcXHRpZiAoY2FwLVxcdTAwM2VmdG0udHlwZS5pbmZyYV9zdXBwb3J0IFxcdTAwMjZcXHUwMDI2XFxubmV0L3dpcmVsZXNzL25sODAyMTEuYzoyNjMwOlxcdFxcdCAgICBubGFfcHV0X2ZsYWcobXNnLCBOTDgwMjExX1BNU1JfRlRNX1RZUEVfQ0FQQV9BVFRSX0lORlJBX1NVUFBPUlQpKVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjYzMS1cXHRcXHRcXHRyZXR1cm4gLUVOT0JVRlM7XFxuLS1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTI2MzMtXFx0XFx0aWYgKGNhcC1cXHUwMDNlZnRtLnR5cGUucGRfc3VwcG9ydCBcXHUwMDI2XFx1MDAyNlxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MjYzNDpcXHRcXHQgICAgbmxhX3B1dF9mbGFnKG1zZywgTkw4MDIxMV9QTVNSX0ZUTV9UWVBFX0NBUEFfQVRUUl9QRF9TVVBQT1JUKSlcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTI2MzUtXFx0XFx0XFx0cmV0dXJuIC1FTk9CVUZTO1xcbi0tXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yNjQwLVxcdGlmIChjYXAtXFx1MDAzZWZ0bS5jb25jdXJyZW50X2lzdGFfcnN0YV9zdXBwb3J0IFxcdTAwMjZcXHUwMDI2XFxubmV0L3dpcmVsZXNzL25sODAyMTEuYzoyNjQxOlxcdCAgICBubGFfcHV0X2ZsYWcobXNnLCBOTDgwMjExX1BNU1JfRlRNX0NBUEFfQVRUUl9DT05DVVJSRU5UX0lTVEFfUlNUQV9TVVBQT1JUKSlcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTI2NDItXFx0XFx0cmV0dXJuIC1FTk9CVUZTO1xcbi0tXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yNjQ1LVxcdFxcdGlmIChjYXAtXFx1MDAzZWZ0bS5wZF9wcmVhbWJsZXMgXFx1MDAyNlxcdTAwMjZcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjI2NDY6XFx0XFx0ICAgIG5sYV9wdXRfdTMyKG1zZywgTkw4MDIxMV9QTVNSX0ZUTV9DQVBBX0FUVFJfUERfUFJFQU1CTEVTLFxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjY0Ny1cXHRcXHRcXHRcXHRjYXAtXFx1MDAzZWZ0bS5wZF9wcmVhbWJsZXMpKVxcbi0tXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yNjQ5LVxcdFxcdGlmIChjYXAtXFx1MDAzZWZ0bS5wZF9iYW5kd2lkdGhzIFxcdTAwMjZcXHUwMDI2XFxubmV0L3dpcmVsZXNzL25sODAyMTEuYzoyNjUwOlxcdFxcdCAgICBubGFfcHV0X3UzMihtc2csIE5MODAyMTFfUE1TUl9GVE1fQ0FQQV9BVFRSX1BEX0JBTkRXSURUSFMsXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yNjUxLVxcdFxcdFxcdFxcdGNhcC1cXHUwMDNlZnRtLnBkX2JhbmR3aWR0aHMpKVxcbi0tXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYz0yNjU5PXN0YXRpYyBpbnQgbmw4MDIxMV9zZW5kX3Btc3JfY2FwYShzdHJ1Y3QgY2ZnODAyMTFfcmVnaXN0ZXJlZF9kZXZpY2UgKnJkZXYsXFxuLS1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTI2NzYtXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYzoyNjc3OlxcdGlmIChubGFfcHV0X3UzMihtc2csIE5MODAyMTFfUE1TUl9BVFRSX01BWF9QRUVSUywgY2FwLVxcdTAwM2VtYXhfcGVlcnMpKVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjY3OC1cXHRcXHRyZXR1cm4gLUVOT0JVRlM7XFxuLS1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTI2ODAtXFx0aWYgKGNhcC1cXHUwMDNlcmVwb3J0X2FwX3RzZiBcXHUwMDI2XFx1MDAyNlxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MjY4MTpcXHQgICAgbmxhX3B1dF9mbGFnKG1zZywgTkw4MDIxMV9QTVNSX0FUVFJfUkVQT1JUX0FQX1RTRikpXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yNjgyLVxcdFxcdHJldHVybiAtRU5PQlVGUztcXG4tLVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjY4NC1cXHRpZiAoY2FwLVxcdTAwM2VyYW5kb21pemVfbWFjX2FkZHIgXFx1MDAyNlxcdTAwMjZcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjI2ODU6XFx0ICAgIG5sYV9wdXRfZmxhZyhtc2csIE5MODAyMTFfUE1TUl9BVFRSX1JBTkRPTUlaRV9NQUNfQUREUikpXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yNjg2LVxcdFxcdHJldHVybiAtRU5PQlVGUztcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTI2ODctXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYzoyNjg4OlxcdGNhcHMgPSBubGFfbmVzdF9zdGFydF9ub2ZsYWcobXNnLCBOTDgwMjExX1BNU1JfQVRUUl9UWVBFX0NBUEEpO1xcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjY4OS1cXHRpZiAoIWNhcHMpXFxuLS1cXG5uZXQvd2lyZWxlc3MvcG1zci5jPTEwPXN0YXRpYyBpbnQgcG1zcl9wYXJzZV9mdG0oc3RydWN0IGNmZzgwMjExX3JlZ2lzdGVyZWRfZGV2aWNlICpyZGV2LFxcbi0tXFxubmV0L3dpcmVsZXNzL3Btc3IuYy0xNS1cXHRjb25zdCBzdHJ1Y3QgY2ZnODAyMTFfcG1zcl9jYXBhYmlsaXRpZXMgKmNhcGEgPSByZGV2LVxcdTAwM2V3aXBoeS5wbXNyX2NhcGE7XFxubmV0L3dpcmVsZXNzL3Btc3IuYzoxNjpcXHRzdHJ1Y3QgbmxhdHRyICp0YltOTDgwMjExX1BNU1JfRlRNX1JFUV9BVFRSX01BWCArIDFdO1xcbm5ldC93aXJlbGVzcy9wbXNyLmMtMTctXFx0dTMyIHByZWFtYmxlID0gTkw4MDIxMV9QUkVBTUJMRV9ETUc7IC8qIG9ubHkgb3B0aW9uYWwgaW4gRE1HICovXFxuLS1cXG5uZXQvd2lyZWxlc3MvcG1zci5jLTE5LVxcdC8qIHZhbGlkYXRlIGV4aXN0aW5nIGRhdGEgKi9cXG5uZXQvd2lyZWxlc3MvcG1zci5jOjIwOlxcdGlmIChvdXQtXFx1MDAzZWZ0bS5yZXF1ZXN0X3R5cGUgPT0gTkw4MDIxMV9QTVNSX0ZUTV9SRVFfVFlQRV9JTkZSQSBcXHUwMDI2XFx1MDAyNlxcbm5ldC93aXJlbGVzcy9wbXNyLmMtMjEtXFx0ICAgICEoY2FwYS1cXHUwMDNlZnRtLmJhbmR3aWR0aHMgXFx1MDAyNiBCSVQob3V0LVxcdTAwM2VjaGFuZGVmLndpZHRoKSkpIHtcXG4tLVxcbm5ldC93aXJlbGVzcy9wbXNyLmMtMjUtXFxubmV0L3dpcmVsZXNzL3Btc3IuYzoyNjpcXHRpZiAob3V0LVxcdTAwM2VmdG0ucmVxdWVzdF90eXBlID09IE5MODAyMTFfUE1TUl9GVE1fUkVRX1RZUEVfUEQgXFx1MDAyNlxcdTAwMjZcXG5uZXQvd2lyZWxlc3MvcG1zci5jLTI3LVxcdCAgICAhKGNhcGEtXFx1MDAzZWZ0bS5wZF9iYW5kd2lkdGhzIFxcdTAwMjYgQklUKG91dC1cXHUwMDNlY2hhbmRlZi53aWR0aCkpKSB7XFxuLS1cXG5uZXQvd2lyZWxlc3MvcG1zci5jLTMzLVxcdC8qIG5vIHZhbGlkYXRpb24gbmVlZGVkIC0gd2FzIGFscmVhZHkgZG9uZSB2aWEgbmVzdGVkIHBvbGljeSAqL1xcbm5ldC93aXJlbGVzcy9wbXNyLmM6MzQ6XFx0bmxhX3BhcnNlX25lc3RlZF9kZXByZWNhdGVkKHRiLCBOTDgwMjExX1BNU1JfRlRNX1JFUV9BVFRSX01BWCwgZnRtcmVxLFxcbm5ldC93aXJlbGVzcy9wbXNyLmMtMzUtXFx0XFx0XFx0XFx0ICAgIE5VTEwsIE5VTEwpO1xcbm5ldC93aXJlbGVzcy9wbXNyLmMtMzYtXFxubmV0L3dpcmVsZXNzL3Btc3IuYzozNzpcXHRpZiAodGJbTkw4MDIxMV9QTVNSX0ZUTV9SRVFfQVRUUl9QUkVBTUJMRV0pXFxubmV0L3dpcmVsZXNzL3Btc3IuYzozODpcXHRcXHRwcmVhbWJsZSA9IG5sYV9nZXRfdTMyKHRiW05MODAyMTFfUE1TUl9GVE1fUkVRX0FUVFJfUFJFQU1CTEVdKTtcXG5uZXQvd2lyZWxlc3MvcG1zci5jLTM5LVxcbi0tXFxubmV0L3dpcmVsZXNzL3Btc3IuYy00Ny1cXHRkZWZhdWx0Olxcbm5ldC93aXJlbGVzcy9wbXNyLmM6NDg6XFx0XFx0aWYgKCF0YltOTDgwMjExX1BNU1JfRlRNX1JFUV9BVFRSX1BSRUFNQkxFXSkge1xcbm5ldC93aXJlbGVzcy9wbXNyLmMtNDktXFx0XFx0XFx0TkxfU0VUX0VSUl9NU0coaW5mby1cXHUwMDNlZXh0YWNrLFxcbi0tXFxubmV0L3dpcmVsZXNzL3Btc3IuYy01NC1cXG5uZXQvd2lyZWxlc3MvcG1zci5jOjU1OlxcdGlmIChvdXQtXFx1MDAzZWZ0bS5yZXF1ZXN0X3R5cGUgPT0gTkw4MDIxMV9QTVNSX0ZUTV9SRVFfVFlQRV9JTkZSQSBcXHUwMDI2XFx1MDAyNlxcbm5ldC93aXJlbGVzcy9wbXNyLmMtNTYtXFx0ICAgICEoY2FwYS1cXHUwMDNlZnRtLnByZWFtYmxlcyBcXHUwMDI2IEJJVChwcmVhbWJsZSkpKSB7XFxubmV0L3dpcmVsZXNzL3Btc3IuYy01Ny1cXHRcXHROTF9TRVRfRVJSX01TR19BVFRSKGluZm8tXFx1MDAzZWV4dGFjayxcXG5uZXQvd2lyZWxlc3MvcG1zci5jOjU4OlxcdFxcdFxcdFxcdCAgICB0YltOTDgwMjExX1BNU1JfRlRNX1JFUV9BVFRSX1BSRUFNQkxFXSxcXG5uZXQvd2lyZWxlc3MvcG1zci5jLTU5LVxcdFxcdFxcdFxcdCAgICBcXFwiRlRNOiBpbnZhbGlkIHByZWFtYmxlXFxcIik7XFxuLS1cXG5uZXQvd2lyZWxlc3MvcG1zci5jLTYyLVxcbm5ldC93aXJlbGVzcy9wbXNyLmM6NjM6XFx0aWYgKG91dC1cXHUwMDNlZnRtLnJlcXVlc3RfdHlwZSA9PSBOTDgwMjExX1BNU1JfRlRNX1JFUV9UWVBFX1BEIFxcdTAwMjZcXHUwMDI2XFxubmV0L3dpcmVsZXNzL3Btc3IuYy02NC1cXHQgICAgIShjYXBhLVxcdTAwM2VmdG0ucGRfcHJlYW1ibGVzIFxcdTAwMjYgQklUKHByZWFtYmxlKSkpIHtcXG5uZXQvd2lyZWxlc3MvcG1zci5jLTY1LVxcdFxcdE5MX1NFVF9FUlJfTVNHX0FUVFIoaW5mby1cXHUwMDNlZXh0YWNrLFxcbm5ldC93aXJlbGVzcy9wbXNyLmM6NjY6XFx0XFx0XFx0XFx0ICAgIHRiW05MODAyMTFfUE1TUl9GVE1fUkVRX0FUVFJfUFJFQU1CTEVdLFxcbm5ldC93aXJlbGVzcy9wbXNyLmMtNjctXFx0XFx0XFx0XFx0ICAgIFxcXCJGVE06IGludmFsaWQgcHJlYW1ibGUgZm9yIFBEIHJlcXVlc3RcXFwiKTtcXG4tLVxcbm5ldC93aXJlbGVzcy9wbXNyLmMtNzMtXFx0b3V0LVxcdTAwM2VmdG0uYnVyc3RfcGVyaW9kID0gMDtcXG5uZXQvd2lyZWxlc3MvcG1zci5jOjc0OlxcdGlmICh0YltOTDgwMjExX1BNU1JfRlRNX1JFUV9BVFRSX0JVUlNUX1BFUklPRF0pXFxubmV0L3dpcmVsZXNzL3Btc3IuYy03NS1cXHRcXHRvdXQtXFx1MDAzZWZ0bS5idXJzdF9wZXJpb2QgPVxcbm5ldC93aXJlbGVzcy9wbXNyLmM6NzY6XFx0XFx0XFx0bmxhX2dldF91MTYodGJbTkw4MDIxMV9QTVNSX0ZUTV9SRVFfQVRUUl9CVVJTVF9QRVJJT0RdKTtcXG5uZXQvd2lyZWxlc3MvcG1zci5jLTc3LVxcbm5ldC93aXJlbGVzcy9wbXNyLmM6Nzg6XFx0b3V0LVxcdTAwM2VmdG0uYXNhcCA9ICEhdGJbTkw4MDIxMV9QTVNSX0ZUTV9SRVFfQVRUUl9BU0FQXTtcXG5uZXQvd2lyZWxlc3MvcG1zci5jLTc5LVxcdGlmIChvdXQtXFx1MDAzZWZ0bS5hc2FwIFxcdTAwMjZcXHUwMDI2ICFjYXBhLVxcdTAwM2VmdG0uYXNhcCkge1xcbm5ldC93aXJlbGVzcy9wbXNyLmMtODAtXFx0XFx0TkxfU0VUX0VSUl9NU0dfQVRUUihpbmZvLVxcdTAwM2VleHRhY2ssXFxubmV0L3dpcmVsZXNzL3Btc3IuYzo4MTpcXHRcXHRcXHRcXHQgICAgdGJbTkw4MDIxMV9QTVNSX0ZUTV9SRVFfQVRUUl9BU0FQXSxcXG5uZXQvd2lyZWxlc3MvcG1zci5jLTgyLVxcdFxcdFxcdFxcdCAgICBcXFwiRlRNOiBBU0FQIG1vZGUgbm90IHN1cHBvcnRlZFxcXCIpO1xcbi0tXFxubmV0L3dpcmVsZXNzL3Btc3IuYy05Mi1cXHRvdXQtXFx1MDAzZWZ0bS5udW1fYnVyc3RzX2V4cCA9IDA7XFxubmV0L3dpcmVsZXNzL3Btc3IuYzo5MzpcXHRpZiAodGJbTkw4MDIxMV9QTVNSX0ZUTV9SRVFfQVRUUl9OVU1fQlVSU1RTX0VYUF0pXFxubmV0L3dpcmVsZXNzL3Btc3IuYy05NC1cXHRcXHRvdXQtXFx1MDAzZWZ0bS5udW1fYnVyc3RzX2V4cCA9XFxubmV0L3dpcmVsZXNzL3Btc3IuYzo5NTpcXHRcXHRcXHRubGFfZ2V0X3U4KHRiW05MODAyMTFfUE1TUl9GVE1fUkVRX0FUVFJfTlVNX0JVUlNUU19FWFBdKTtcXG5uZXQvd2lyZWxlc3MvcG1zci5jLTk2LVxcbi0tXFxubmV0L3dpcmVsZXNzL3Btc3IuYy05OS1cXHRcXHROTF9TRVRfRVJSX01TR19BVFRSKGluZm8tXFx1MDAzZWV4dGFjayxcXG5uZXQvd2lyZWxlc3MvcG1zci5jOjEwMDpcXHRcXHRcXHRcXHQgICAgdGJbTkw4MDIxMV9QTVNSX0ZUTV9SRVFfQVRUUl9OVU1fQlVSU1RTX0VYUF0sXFxubmV0L3dpcmVsZXNzL3Btc3IuYy0xMDEtXFx0XFx0XFx0XFx0ICAgIFxcXCJGVE06IG1heCBOVU1fQlVSU1RTX0VYUCBtdXN0IGJlIHNldCBsb3dlciB0aGFuIHRoZSBkZXZpY2UgbGltaXRcXFwiKTtcXG4tLVxcbm5ldC93aXJlbGVzcy9wbXNyLmMtMTA1LVxcdG91dC1cXHUwMDNlZnRtLmZ0bXNfcGVyX2J1cnN0ID0gMDtcXG5uZXQvd2lyZWxlc3MvcG1zci5jOjEwNjpcXHRpZiAodGJbTkw4MDIxMV9QTVNSX0ZUTV9SRVFfQVRUUl9GVE1TX1BFUl9CVVJTVF0pXFxubmV0L3dpcmVsZXNzL3Btc3IuYy0xMDctXFx0XFx0b3V0LVxcdTAwM2VmdG0uZnRtc19wZXJfYnVyc3QgPVxcbm5ldC93aXJlbGVzcy9wbXNyLmM6MTA4OlxcdFxcdFxcdG5sYV9nZXRfdTgodGJbTkw4MDIxMV9QTVNSX0ZUTV9SRVFfQVRUUl9GVE1TX1BFUl9CVVJTVF0pO1xcbm5ldC93aXJlbGVzcy9wbXNyLmMtMTA5LVxcbi0tXFxubmV0L3dpcmVsZXNzL3Btc3IuYy0xMTItXFx0XFx0TkxfU0VUX0VSUl9NU0dfQVRUUihpbmZvLVxcdTAwM2VleHRhY2ssXFxubmV0L3dpcmVsZXNzL3Btc3IuYzoxMTM6XFx0XFx0XFx0XFx0ICAgIHRiW05MODAyMTFfUE1TUl9GVE1fUkVRX0FUVFJfRlRNU19QRVJfQlVSU1RdLFxcbm5ldC93aXJlbGVzcy9wbXNyLmMtMTE0LVxcdFxcdFxcdFxcdCAgICBcXFwiRlRNOiBGVE1zIHBlciBidXJzdCBtdXN0IGJlIHNldCBsb3dlciB0aGFuIHRoZSBkZXZpY2UgbGltaXRcXFwiKTtcXG4tLVxcbm5ldC93aXJlbGVzcy9wbXNyLmMtMTE4LVxcdG91dC1cXHUwMDNlZnRtLmZ0bXJfcmV0cmllcyA9IDM7XFxubmV0L3dpcmVsZXNzL3Btc3IuYzoxMTk6XFx0aWYgKHRiW05MODAyMTFfUE1TUl9GVE1fUkVRX0FUVFJfTlVNX0ZUTVJfUkVUUklFU10pXFxubmV0L3dpcmVsZXNzL3Btc3IuYy0xMjAtXFx0XFx0b3V0LVxcdTAwM2VmdG0uZnRtcl9yZXRyaWVzID1cXG5uZXQvd2lyZWxlc3MvcG1zci5jOjEyMTpcXHRcXHRcXHRubGFfZ2V0X3U4KHRiW05MODAyMTFfUE1TUl9GVE1fUkVRX0FUVFJfTlVNX0ZUTVJfUkVUUklFU10pO1xcbm5ldC93aXJlbGVzcy9wbXNyLmMtMTIyLVxcbm5ldC93aXJlbGVzcy9wbXNyLmM6MTIzOlxcdG91dC1cXHUwMDNlZnRtLnJlcXVlc3RfbGNpID0gISF0YltOTDgwMjExX1BNU1JfRlRNX1JFUV9BVFRSX1JFUVVFU1RfTENJXTtcXG5uZXQvd2lyZWxlc3MvcG1zci5jLTEyNC1cXHRpZiAob3V0LVxcdTAwM2VmdG0ucmVxdWVzdF9sY2kgXFx1MDAyNlxcdTAwMjYgIWNhcGEtXFx1MDAzZWZ0bS5yZXF1ZXN0X2xjaSkge1xcbm5ldC93aXJlbGVzcy9wbXNyLmMtMTI1LVxcdFxcdE5MX1NFVF9FUlJfTVNHX0FUVFIoaW5mby1cXHUwMDNlZXh0YWNrLFxcbm5ldC93aXJlbGVzcy9wbXNyLmM6MTI2OlxcdFxcdFxcdFxcdCAgICB0YltOTDgwMjExX1BNU1JfRlRNX1JFUV9BVFRSX1JFUVVFU1RfTENJXSxcXG5uZXQvd2lyZWxlc3MvcG1zci5jLTEyNy1cXHRcXHRcXHRcXHQgICAgXFxcIkZUTTogTENJIHJlcXVlc3Qgbm90IHN1cHBvcnRlZFxcXCIpO1xcbi0tXFxubmV0L3dpcmVsZXNzL3Btc3IuYy0xMzAtXFx0b3V0LVxcdTAwM2VmdG0ucmVxdWVzdF9jaXZpY2xvYyA9XFxubmV0L3dpcmVsZXNzL3Btc3IuYzoxMzE6XFx0XFx0ISF0YltOTDgwMjExX1BNU1JfRlRNX1JFUV9BVFRSX1JFUVVFU1RfQ0lWSUNMT0NdO1xcbm5ldC93aXJlbGVzcy9wbXNyLmMtMTMyLVxcdGlmIChvdXQtXFx1MDAzZWZ0bS5yZXF1ZXN0X2NpdmljbG9jIFxcdTAwMjZcXHUwMDI2ICFjYXBhLVxcdTAwM2VmdG0ucmVxdWVzdF9jaXZpY2xvYykge1xcbm5ldC93aXJlbGVzcy9wbXNyLmMtMTMzLVxcdFxcdE5MX1NFVF9FUlJfTVNHX0FUVFIoaW5mby1cXHUwMDNlZXh0YWNrLFxcbm5ldC93aXJlbGVzcy9wbXNyLmM6MTM0OlxcdFxcdFxcdFxcdCAgICB0YltOTDgwMjExX1BNU1JfRlRNX1JFUV9BVFRSX1JFUVVFU1RfQ0lWSUNMT0NdLFxcbm5ldC93aXJlbGVzcy9wbXNyLmMtMTM1LVxcdFxcdFxcdCAgICBcXFwiRlRNOiBjaXZpYyBsb2NhdGlvbiByZXF1ZXN0IG5vdCBzdXBwb3J0ZWRcXFwiKTtcXG4tLVxcbm5ldC93aXJlbGVzcy9wbXNyLmMtMTM4LVxcdG91dC1cXHUwMDNlZnRtLnRyaWdnZXJfYmFzZWQgPVxcbm5ldC93aXJlbGVzcy9wbXNyLmM6MTM5OlxcdFxcdCEhdGJbTkw4MDIxMV9QTVNSX0ZUTV9SRVFfQVRUUl9UUklHR0VSX0JBU0VEXTtcXG5uZXQvd2lyZWxlc3MvcG1zci5jLTE0MC1cXHRpZiAob3V0LVxcdTAwM2VmdG0udHJpZ2dlcl9iYXNlZCBcXHUwMDI2XFx1MDAyNiAhY2FwYS1cXHUwMDNlZnRtLnRyaWdnZXJfYmFzZWQpIHtcXG5uZXQvd2lyZWxlc3MvcG1zci5jLTE0MS1cXHRcXHROTF9TRVRfRVJSX01TR19BVFRSKGluZm8tXFx1MDAzZWV4dGFjayxcXG5uZXQvd2lyZWxlc3MvcG1zci5jOjE0MjpcXHRcXHRcXHRcXHQgICAgdGJbTkw4MDIxMV9QTVNSX0ZUTV9SRVFfQVRUUl9UUklHR0VSX0JBU0VEXSxcXG5uZXQvd2lyZWxlc3MvcG1zci5jLTE0My1cXHRcXHRcXHRcXHQgICAgXFxcIkZUTTogdHJpZ2dlciBiYXNlZCByYW5naW5nIGlzIG5vdCBzdXBwb3J0ZWRcXFwiKTtcXG4tLVxcbm5ldC93aXJlbGVzcy9wbXNyLmMtMTQ2LVxcbm5ldC93aXJlbGVzcy9wbXNyLmM6MTQ3OlxcdGlmIChvdXQtXFx1MDAzZWZ0bS5yZXF1ZXN0X3R5cGUgPT0gTkw4MDIxMV9QTVNSX0ZUTV9SRVFfVFlQRV9QRCBcXHUwMDI2XFx1MDAyNlxcbm5ldC93aXJlbGVzcy9wbXNyLmMtMTQ4LVxcdCAgICBvdXQtXFx1MDAzZWZ0bS50cmlnZ2VyX2Jhc2VkKSB7XFxuLS1cXG5uZXQvd2lyZWxlc3MvcG1zci5jLTE1NS1cXHRvdXQtXFx1MDAzZWZ0bS5ub25fdHJpZ2dlcl9iYXNlZCA9XFxubmV0L3dpcmVsZXNzL3Btc3IuYzoxNTY6XFx0XFx0ISF0YltOTDgwMjExX1BNU1JfRlRNX1JFUV9BVFRSX05PTl9UUklHR0VSX0JBU0VEXTtcXG5uZXQvd2lyZWxlc3MvcG1zci5jLTE1Ny1cXHRpZiAob3V0LVxcdTAwM2VmdG0ubm9uX3RyaWdnZXJfYmFzZWQgXFx1MDAyNlxcdTAwMjYgIWNhcGEtXFx1MDAzZWZ0bS5ub25fdHJpZ2dlcl9iYXNlZCkge1xcbm5ldC93aXJlbGVzcy9wbXNyLmMtMTU4LVxcdFxcdE5MX1NFVF9FUlJfTVNHX0FUVFIoaW5mby1cXHUwMDNlZXh0YWNrLFxcbm5ldC93aXJlbGVzcy9wbXNyLmM6MTU5OlxcdFxcdFxcdFxcdCAgICB0YltOTDgwMjExX1BNU1JfRlRNX1JFUV9BVFRSX05PTl9UUklHR0VSX0JBU0VEXSxcXG5uZXQvd2lyZWxlc3MvcG1zci5jLTE2MC1cXHRcXHRcXHRcXHQgICAgXFxcIkZUTTogdHJpZ2dlciBiYXNlZCByYW5naW5nIGlzIG5vdCBzdXBwb3J0ZWRcXFwiKTtcXG4tLVxcbm5ldC93aXJlbGVzcy9wbXNyLmMtMTY5LVxcbm5ldC93aXJlbGVzcy9wbXNyLmM6MTcwOlxcdGlmIChvdXQtXFx1MDAzZWZ0bS5yZXF1ZXN0X3R5cGUgPT0gTkw4MDIxMV9QTVNSX0ZUTV9SRVFfVFlQRV9QRCBcXHUwMDI2XFx1MDAyNlxcbm5ldC93aXJlbGVzcy9wbXNyLmMtMTcxLVxcdCAgICBvdXQtXFx1MDAzZWZ0bS5ub25fdHJpZ2dlcl9iYXNlZCBcXHUwMDI2XFx1MDAyNiBvdXQtXFx1MDAzZWZ0bS5mdG1zX3Blcl9idXJzdCBcXHUwMDNlIDQpIHtcXG5uZXQvd2lyZWxlc3MvcG1zci5jLTE3Mi1cXHRcXHROTF9TRVRfRVJSX01TR19BVFRSKGluZm8tXFx1MDAzZWV4dGFjayxcXG5uZXQvd2lyZWxlc3MvcG1zci5jOjE3MzpcXHRcXHRcXHRcXHQgICAgdGJbTkw4MDIxMV9QTVNSX0ZUTV9SRVFfQVRUUl9GVE1TX1BFUl9CVVJTVF0sXFxubmV0L3dpcmVsZXNzL3Btc3IuYy0xNzQtXFx0XFx0XFx0XFx0ICAgIFxcXCJGVE06IEZUTXMgcGVyIGJ1cnN0IG11c3Qgbm90IGV4Y2VlZCA0IGZvciBQRCBOVEIgcmFuZ2luZ1xcXCIpO1xcbi0tXFxubmV0L3dpcmVsZXNzL3Btc3IuYy0xODAtXFx0XFx0TkxfU0VUX0VSUl9NU0dfQVRUUihpbmZvLVxcdTAwM2VleHRhY2ssXFxubmV0L3dpcmVsZXNzL3Btc3IuYzoxODE6XFx0XFx0XFx0XFx0ICAgIHRiW05MODAyMTFfUE1TUl9GVE1fUkVRX0FUVFJfRlRNU19QRVJfQlVSU1RdLFxcbm5ldC93aXJlbGVzcy9wbXNyLmMtMTgyLVxcdFxcdFxcdFxcdCAgICBcXFwiRlRNOiBGVE1zIHBlciBidXJzdCBtdXN0IGJlIHNldCBsb3dlciB0aGFuIDMxXFxcIik7XFxuLS1cXG5uZXQvd2lyZWxlc3MvcG1zci5jLTE4OC1cXHRcXHROTF9TRVRfRVJSX01TR19BVFRSKGluZm8tXFx1MDAzZWV4dGFjayxcXG5uZXQvd2lyZWxlc3MvcG1zci5jOjE4OTpcXHRcXHRcXHRcXHQgICAgdGJbTkw4MDIxMV9QTVNSX0ZUTV9SRVFfQVRUUl9QUkVBTUJMRV0sXFxubmV0L3dpcmVsZXNzL3Btc3IuYy0xOTAtXFx0XFx0XFx0XFx0ICAgIFxcXCJGVE06IG5vbiBFRENBIGJhc2VkIHJhbmdpbmcgbXVzdCB1c2UgSEUgcHJlYW1ibGVcXFwiKTtcXG4tLVxcbm5ldC93aXJlbGVzcy9wbXNyLmMtMTkzLVxcbm5ldC93aXJlbGVzcy9wbXNyLmM6MTk0OlxcdGlmICh0YltOTDgwMjExX1BNU1JfRlRNX1JFUV9BVFRSX0JVUlNUX0RVUkFUSU9OXSlcXG5uZXQvd2lyZWxlc3MvcG1zci5jLTE5NS1cXHRcXHRvdXQtXFx1MDAzZWZ0bS5idXJzdF9kdXJhdGlvbiA9XFxubmV0L3dpcmVsZXNzL3Btc3IuYzoxOTY6XFx0XFx0XFx0bmxhX2dldF91OCh0YltOTDgwMjExX1BNU1JfRlRNX1JFUV9BVFRSX0JVUlNUX0RVUkFUSU9OXSk7XFxubmV0L3dpcmVsZXNzL3Btc3IuYy0xOTctXFx0ZWxzZSBpZiAoIW91dC1cXHUwMDNlZnRtLm5vbl90cmlnZ2VyX2Jhc2VkIFxcdTAwMjZcXHUwMDI2ICFvdXQtXFx1MDAzZWZ0bS50cmlnZ2VyX2Jhc2VkKVxcbi0tXFxubmV0L3dpcmVsZXNzL3Btc3IuYy0yMDAtXFx0b3V0LVxcdTAwM2VmdG0ubG1yX2ZlZWRiYWNrID1cXG5uZXQvd2lyZWxlc3MvcG1zci5jOjIwMTpcXHRcXHQhIXRiW05MODAyMTFfUE1TUl9GVE1fUkVRX0FUVFJfTE1SX0ZFRURCQUNLXTtcXG5uZXQvd2lyZWxlc3MvcG1zci5jLTIwMi1cXHRpZiAoIW91dC1cXHUwMDNlZnRtLnRyaWdnZXJfYmFzZWQgXFx1MDAyNlxcdTAwMjYgIW91dC1cXHUwMDNlZnRtLm5vbl90cmlnZ2VyX2Jhc2VkIFxcdTAwMjZcXHUwMDI2XFxuLS1cXG5uZXQvd2lyZWxlc3MvcG1zci5jLTIwNC1cXHRcXHROTF9TRVRfRVJSX01TR19BVFRSKGluZm8tXFx1MDAzZWV4dGFjayxcXG5uZXQvd2lyZWxlc3MvcG1zci5jOjIwNTpcXHRcXHRcXHRcXHQgICAgdGJbTkw4MDIxMV9QTVNSX0ZUTV9SRVFfQVRUUl9MTVJfRkVFREJBQ0tdLFxcbm5ldC93aXJlbGVzcy9wbXNyLmMtMjA2LVxcdFxcdFxcdFxcdCAgICBcXFwiRlRNOiBMTVIgZmVlZGJhY2sgc2V0IGZvciBFRENBIGJhc2VkIHJhbmdpbmdcXFwiKTtcXG4tLVxcbm5ldC93aXJlbGVzcy9wbXNyLmMtMjA5LVxcbm5ldC93aXJlbGVzcy9wbXNyLmM6MjEwOlxcdGlmICh0YltOTDgwMjExX1BNU1JfRlRNX1JFUV9BVFRSX0JTU19DT0xPUl0pIHtcXG5uZXQvd2lyZWxlc3MvcG1zci5jLTIxMS1cXHRcXHRpZiAoIW91dC1cXHUwMDNlZnRtLm5vbl90cmlnZ2VyX2Jhc2VkIFxcdTAwMjZcXHUwMDI2ICFvdXQtXFx1MDAzZWZ0bS50cmlnZ2VyX2Jhc2VkKSB7XFxubmV0L3dpcmVsZXNzL3Btc3IuYy0yMTItXFx0XFx0XFx0TkxfU0VUX0VSUl9NU0dfQVRUUihpbmZvLVxcdTAwM2VleHRhY2ssXFxubmV0L3dpcmVsZXNzL3Btc3IuYzoyMTM6XFx0XFx0XFx0XFx0XFx0ICAgIHRiW05MODAyMTFfUE1TUl9GVE1fUkVRX0FUVFJfQlNTX0NPTE9SXSxcXG5uZXQvd2lyZWxlc3MvcG1zci5jLTIxNC1cXHRcXHRcXHRcXHRcXHQgICAgXFxcIkZUTTogQlNTIGNvbG9yIHNldCBmb3IgRURDQSBiYXNlZCByYW5naW5nXFxcIik7XFxuLS1cXG5uZXQvd2lyZWxlc3MvcG1zci5jLTIxOC1cXHRcXHRvdXQtXFx1MDAzZWZ0bS5ic3NfY29sb3IgPVxcbm5ldC93aXJlbGVzcy9wbXNyLmM6MjE5OlxcdFxcdFxcdG5sYV9nZXRfdTgodGJbTkw4MDIxMV9QTVNSX0ZUTV9SRVFfQVRUUl9CU1NfQ09MT1JdKTtcXG5uZXQvd2lyZWxlc3MvcG1zci5jLTIyMC1cXHR9XFxubmV0L3dpcmVsZXNzL3Btc3IuYy0yMjEtXFxubmV0L3dpcmVsZXNzL3Btc3IuYzoyMjI6XFx0b3V0LVxcdTAwM2VmdG0ucnN0YSA9ICEhdGJbTkw4MDIxMV9QTVNSX0ZUTV9SRVFfQVRUUl9SU1RBXTtcXG5uZXQvd2lyZWxlc3MvcG1zci5jLTIyMy1cXHRpZiAob3V0LVxcdTAwM2VmdG0ucnN0YSBcXHUwMDI2XFx1MDAyNiBvdXQtXFx1MDAzZWZ0bS5ub25fdHJpZ2dlcl9iYXNlZCBcXHUwMDI2XFx1MDAyNlxcbi0tXFxubmV0L3dpcmVsZXNzL3Btc3IuYy0yMjUtXFx0XFx0TkxfU0VUX0VSUl9NU0dfQVRUUihpbmZvLVxcdTAwM2VleHRhY2ssXFxubmV0L3dpcmVsZXNzL3Btc3IuYzoyMjY6XFx0XFx0XFx0XFx0ICAgIHRiW05MODAyMTFfUE1TUl9GVE1fUkVRX0FUVFJfUlNUQV0sXFxubmV0L3dpcmVsZXNzL3Btc3IuYy0yMjctXFx0XFx0XFx0XFx0ICAgIFxcXCJGVE06IE5UQiBSU1RBIG5vdCBzdXBwb3J0ZWQgYnkgZGV2aWNlXFxcIik7XFxuLS1cXG5uZXQvd2lyZWxlc3MvcG1zci5jLTIzMy1cXHRcXHROTF9TRVRfRVJSX01TR19BVFRSKGluZm8tXFx1MDAzZWV4dGFjayxcXG5uZXQvd2lyZWxlc3MvcG1zci5jOjIzNDpcXHRcXHRcXHRcXHQgICAgdGJbTkw4MDIxMV9QTVNSX0ZUTV9SRVFfQVRUUl9SU1RBXSxcXG5uZXQvd2lyZWxlc3MvcG1zci5jLTIzNS1cXHRcXHRcXHRcXHQgICAgXFxcIkZUTTogVEIgUlNUQSBub3Qgc3VwcG9ydGVkIGJ5IGRldmljZVxcXCIpO1xcbi0tXFxubmV0L3dpcmVsZXNzL3Btc3IuYy0yNDItXFx0XFx0TkxfU0VUX0VSUl9NU0dfQVRUUihpbmZvLVxcdTAwM2VleHRhY2ssXFxubmV0L3dpcmVsZXNzL3Btc3IuYzoyNDM6XFx0XFx0XFx0XFx0ICAgIHRiW05MODAyMTFfUE1TUl9GVE1fUkVRX0FUVFJfUlNUQV0sXFxubmV0L3dpcmVsZXNzL3Btc3IuYy0yNDQtXFx0XFx0XFx0XFx0ICAgIFxcXCJGVE06IEVEQ0EgUlNUQSBub3Qgc3VwcG9ydGVkIGJ5IGRldmljZVxcXCIpO1xcbi0tXFxubmV0L3dpcmVsZXNzL3Btc3IuYy0yNTEtXFx0XFx0TkxfU0VUX0VSUl9NU0dfQVRUUihpbmZvLVxcdTAwM2VleHRhY2ssXFxubmV0L3dpcmVsZXNzL3Btc3IuYzoyNTI6XFx0XFx0XFx0XFx0ICAgIHRiW05MODAyMTFfUE1TUl9GVE1fUkVRX0FUVFJfUlNUQV0sXFxubmV0L3dpcmVsZXNzL3Btc3IuYy0yNTMtXFx0XFx0XFx0XFx0ICAgIFxcXCJGVE06IFJTVEEgc2V0IHdpdGhvdXQgTE1SIGZlZWRiYWNrXFxcIik7XFxuLS1cXG5uZXQvd2lyZWxlc3MvcG1zci5jLTI1Ny1cXHRpZiAob3V0LVxcdTAwM2VmdG0ubm9uX3RyaWdnZXJfYmFzZWQpIHtcXG5uZXQvd2lyZWxlc3MvcG1zci5jOjI1ODpcXHRcXHRpZiAob3V0LVxcdTAwM2VmdG0ucmVxdWVzdF90eXBlID09IE5MODAyMTFfUE1TUl9GVE1fUkVRX1RZUEVfUEQgXFx1MDAyNlxcdTAwMjZcXG5uZXQvd2lyZWxlc3MvcG1zci5jOjI1OTpcXHRcXHQgICAgIXRiW05MODAyMTFfUE1TUl9GVE1fUkVRX0FUVFJfTk9NSU5BTF9USU1FXSkge1xcbm5ldC93aXJlbGVzcy9wbXNyLmMtMjYwLVxcdFxcdFxcdE5MX1NFVF9FUlJfTVNHKGluZm8tXFx1MDAzZWV4dGFjayxcXG4tLVxcbm5ldC93aXJlbGVzcy9wbXNyLmMtMjY0LVxcdFxcdG91dC1cXHUwMDNlZnRtLm5vbWluYWxfdGltZSA9XFxubmV0L3dpcmVsZXNzL3Btc3IuYzoyNjU6XFx0XFx0XFx0bmxhX2dldF91MzIodGJbTkw4MDIxMV9QTVNSX0ZUTV9SRVFfQVRUUl9OT01JTkFMX1RJTUVdKTtcXG5uZXQvd2lyZWxlc3MvcG1zci5jLTI2Ni1cXG5uZXQvd2lyZWxlc3MvcG1zci5jOjI2NzpcXHRcXHRpZiAodGJbTkw4MDIxMV9QTVNSX0ZUTV9SRVFfQVRUUl9NSU5fVElNRV9CRVRXRUVOX01FQVNVUkVNRU5UU10pXFxubmV0L3dpcmVsZXNzL3Btc3IuYy0yNjgtXFx0XFx0XFx0b3V0LVxcdTAwM2VmdG0ubWluX3RpbWVfYmV0d2Vlbl9tZWFzdXJlbWVudHMgPVxcbm5ldC93aXJlbGVzcy9wbXNyLmM6MjY5OlxcdFxcdFxcdG5sYV9nZXRfdTMyKHRiW05MODAyMTFfUE1TUl9GVE1fUkVRX0FUVFJfTUlOX1RJTUVfQkVUV0VFTl9NRUFTVVJFTUVOVFNdKTtcXG5uZXQvd2lyZWxlc3MvcG1zci5jLTI3MC1cXG5uZXQvd2lyZWxlc3MvcG1zci5jOjI3MTpcXHRcXHRpZiAodGJbTkw4MDIxMV9QTVNSX0ZUTV9SRVFfQVRUUl9NQVhfVElNRV9CRVRXRUVOX01FQVNVUkVNRU5UU10pXFxubmV0L3dpcmVsZXNzL3Btc3IuYy0yNzItXFx0XFx0XFx0b3V0LVxcdTAwM2VmdG0ubWF4X3RpbWVfYmV0d2Vlbl9tZWFzdXJlbWVudHMgPVxcbm5ldC93aXJlbGVzcy9wbXNyLmM6MjczOlxcdFxcdFxcdG5sYV9nZXRfdTMyKHRiW05MODAyMTFfUE1TUl9GVE1fUkVRX0FUVFJfTUFYX1RJTUVfQkVUV0VFTl9NRUFTVVJFTUVOVFNdKTtcXG5uZXQvd2lyZWxlc3MvcG1zci5jLTI3NC1cXG5uZXQvd2lyZWxlc3MvcG1zci5jOjI3NTpcXHRcXHRpZiAodGJbTkw4MDIxMV9QTVNSX0ZUTV9SRVFfQVRUUl9BV19EVVJBVElPTl0pXFxubmV0L3dpcmVsZXNzL3Btc3IuYy0yNzYtXFx0XFx0XFx0b3V0LVxcdTAwM2VmdG0uYXZhaWxhYmlsaXR5X3dpbmRvdyA9XFxubmV0L3dpcmVsZXNzL3Btc3IuYzoyNzc6XFx0XFx0XFx0XFx0bmxhX2dldF91OCh0YltOTDgwMjExX1BNU1JfRlRNX1JFUV9BVFRSX0FXX0RVUkFUSU9OXSk7XFxubmV0L3dpcmVsZXNzL3Btc3IuYy0yNzgtXFxubmV0L3dpcmVsZXNzL3Btc3IuYzoyNzk6XFx0XFx0aWYgKHRiW05MODAyMTFfUE1TUl9GVE1fUkVRX0FUVFJfTlVNX01FQVNVUkVNRU5UU10pXFxubmV0L3dpcmVsZXNzL3Btc3IuYy0yODAtXFx0XFx0XFx0b3V0LVxcdTAwM2VmdG0ubnVtX21lYXN1cmVtZW50cyA9XFxubmV0L3dpcmVsZXNzL3Btc3IuYzoyODE6XFx0XFx0XFx0XFx0bmxhX2dldF91MzIodGJbTkw4MDIxMV9QTVNSX0ZUTV9SRVFfQVRUUl9OVU1fTUVBU1VSRU1FTlRTXSk7XFxubmV0L3dpcmVsZXNzL3Btc3IuYy0yODItXFx0fVxcbm5ldC93aXJlbGVzcy9wbXNyLmMtMjgzLVxcbm5ldC93aXJlbGVzcy9wbXNyLmM6Mjg0OlxcdGlmICh0YltOTDgwMjExX1BNU1JfRlRNX1JFUV9BVFRSX0lOR1JFU1NdKVxcbm5ldC93aXJlbGVzcy9wbXNyLmMtMjg1LVxcdFxcdG91dC1cXHUwMDNlZnRtLmluZ3Jlc3NfZGlzdGFuY2UgPVxcbm5ldC93aXJlbGVzcy9wbXNyLmM6Mjg2OlxcdFxcdFxcdG5sYV9nZXRfdTY0KHRiW05MODAyMTFfUE1TUl9GVE1fUkVRX0FUVFJfSU5HUkVTU10pO1xcbm5ldC93aXJlbGVzcy9wbXNyLmMtMjg3LVxcbm5ldC93aXJlbGVzcy9wbXNyLmM6Mjg4OlxcdGlmICh0YltOTDgwMjExX1BNU1JfRlRNX1JFUV9BVFRSX0VHUkVTU10pXFxubmV0L3dpcmVsZXNzL3Btc3IuYy0yODktXFx0XFx0b3V0LVxcdTAwM2VmdG0uZWdyZXNzX2Rpc3RhbmNlID1cXG5uZXQvd2lyZWxlc3MvcG1zci5jOjI5MDpcXHRcXHRcXHRubGFfZ2V0X3U2NCh0YltOTDgwMjExX1BNU1JfRlRNX1JFUV9BVFRSX0VHUkVTU10pO1xcbm5ldC93aXJlbGVzcy9wbXNyLmMtMjkxLVxcbm5ldC93aXJlbGVzcy9wbXNyLmMtMjkyLVxcdG91dC1cXHUwMDNlZnRtLnBkX3N1cHByZXNzX3JhbmdlX3Jlc3VsdHMgPVxcbm5ldC93aXJlbGVzcy9wbXNyLmM6MjkzOlxcdFxcdG5sYV9nZXRfZmxhZyh0YltOTDgwMjExX1BNU1JfRlRNX1JFUV9BVFRSX1BEX1NVUFBSRVNTX1JFU1VMVFNdKTtcXG5uZXQvd2lyZWxlc3MvcG1zci5jLTI5NC1cXG5uZXQvd2lyZWxlc3MvcG1zci5jOjI5NTpcXHRpZiAob3V0LVxcdTAwM2VmdG0ucmVxdWVzdF90eXBlICE9IE5MODAyMTFfUE1TUl9GVE1fUkVRX1RZUEVfUEQgXFx1MDAyNlxcdTAwMjZcXG5uZXQvd2lyZWxlc3MvcG1zci5jLTI5Ni1cXHQgICAgb3V0LVxcdTAwM2VmdG0ucGRfc3VwcHJlc3NfcmFuZ2VfcmVzdWx0cykge1xcbm5ldC93aXJlbGVzcy9wbXNyLmMtMjk3LVxcdFxcdE5MX1NFVF9FUlJfTVNHX0FUVFIoaW5mby1cXHUwMDNlZXh0YWNrLFxcbm5ldC93aXJlbGVzcy9wbXNyLmM6Mjk4OlxcdFxcdFxcdFxcdCAgICB0YltOTDgwMjExX1BNU1JfRlRNX1JFUV9BVFRSX1BEX1NVUFBSRVNTX1JFU1VMVFNdLFxcbm5ldC93aXJlbGVzcy9wbXNyLmMtMjk5LVxcdFxcdFxcdFxcdCAgICBcXFwiRlRNOiBzdXBwcmVzcyByYW5nZSByZXN1bHQgZmxhZyBvbmx5IHZhbGlkIGZvciBQRCByZXF1ZXN0c1xcXCIpO1xcbi0tXFxubmV0L3dpcmVsZXNzL3Btc3IuYz0zMDY9c3RhdGljIGludCBwbXNyX3BhcnNlX3BlZXIoc3RydWN0IGNmZzgwMjExX3JlZ2lzdGVyZWRfZGV2aWNlICpyZGV2LFxcbi0tXFxubmV0L3dpcmVsZXNzL3Btc3IuYy0zMTAte1xcbm5ldC93aXJlbGVzcy9wbXNyLmM6MzExOlxcdHN0cnVjdCBubGF0dHIgKnRiW05MODAyMTFfUE1TUl9QRUVSX0FUVFJfTUFYICsgMV07XFxubmV0L3dpcmVsZXNzL3Btc3IuYzozMTI6XFx0c3RydWN0IG5sYXR0ciAqcmVxW05MODAyMTFfUE1TUl9SRVFfQVRUUl9NQVggKyAxXTtcXG5uZXQvd2lyZWxlc3MvcG1zci5jLTMxMy1cXHRzdHJ1Y3QgbmxhdHRyICp0cmVxO1xcbi0tXFxubmV0L3dpcmVsZXNzL3Btc3IuYy0zMTYtXFx0Lyogbm8gdmFsaWRhdGlvbiBuZWVkZWQgLSB3YXMgYWxyZWFkeSBkb25lIHZpYSBuZXN0ZWQgcG9saWN5ICovXFxubmV0L3dpcmVsZXNzL3Btc3IuYzozMTc6XFx0bmxhX3BhcnNlX25lc3RlZF9kZXByZWNhdGVkKHRiLCBOTDgwMjExX1BNU1JfUEVFUl9BVFRSX01BWCwgcGVlcixcXG5uZXQvd2lyZWxlc3MvcG1zci5jLTMxOC1cXHRcXHRcXHRcXHQgICAgTlVMTCwgTlVMTCk7XFxubmV0L3dpcmVsZXNzL3Btc3IuYy0zMTktXFxubmV0L3dpcmVsZXNzL3Btc3IuYzozMjA6XFx0aWYgKCF0YltOTDgwMjExX1BNU1JfUEVFUl9BVFRSX0FERFJdIHx8XFxubmV0L3dpcmVsZXNzL3Btc3IuYzozMjE6XFx0ICAgICF0YltOTDgwMjExX1BNU1JfUEVFUl9BVFRSX0NIQU5dIHx8XFxubmV0L3dpcmVsZXNzL3Btc3IuYzozMjI6XFx0ICAgICF0YltOTDgwMjExX1BNU1JfUEVFUl9BVFRSX1JFUV0pIHtcXG5uZXQvd2lyZWxlc3MvcG1zci5jLTMyMy1cXHRcXHROTF9TRVRfRVJSX01TR19BVFRSKGluZm8tXFx1MDAzZWV4dGFjaywgcGVlcixcXG4tLVxcbm5ldC93aXJlbGVzcy9wbXNyLmMtMzI3LVxcbm5ldC93aXJlbGVzcy9wbXNyLmM6MzI4OlxcdG1lbWNweShvdXQtXFx1MDAzZWFkZHIsIG5sYV9kYXRhKHRiW05MODAyMTFfUE1TUl9QRUVSX0FUVFJfQUREUl0pLCBFVEhfQUxFTik7XFxubmV0L3dpcmVsZXNzL3Btc3IuYy0zMjktXFxubmV0L3dpcmVsZXNzL3Btc3IuYzozMzA6XFx0aWYgKHRiW05MODAyMTFfUE1TUl9QRUVSX0FUVFJfUkVRX1RZUEVdKVxcbm5ldC93aXJlbGVzcy9wbXNyLmMtMzMxLVxcdFxcdG91dC1cXHUwMDNlZnRtLnJlcXVlc3RfdHlwZSA9XFxubmV0L3dpcmVsZXNzL3Btc3IuYzozMzI6XFx0XFx0XFx0bmxhX2dldF91MzIodGJbTkw4MDIxMV9QTVNSX1BFRVJfQVRUUl9SRVFfVFlQRV0pO1xcbm5ldC93aXJlbGVzcy9wbXNyLmMtMzMzLVxcdGVsc2VcXG5uZXQvd2lyZWxlc3MvcG1zci5jOjMzNDpcXHRcXHRvdXQtXFx1MDAzZWZ0bS5yZXF1ZXN0X3R5cGUgPSBOTDgwMjExX1BNU1JfRlRNX1JFUV9UWVBFX0lORlJBO1xcbm5ldC93aXJlbGVzcy9wbXNyLmMtMzM1LVxcbm5ldC93aXJlbGVzcy9wbXNyLmM6MzM2OlxcdGlmIChvdXQtXFx1MDAzZWZ0bS5yZXF1ZXN0X3R5cGUgPT0gTkw4MDIxMV9QTVNSX0ZUTV9SRVFfVFlQRV9QRCBcXHUwMDI2XFx1MDAyNlxcbm5ldC93aXJlbGVzcy9wbXNyLmMtMzM3LVxcdCAgICAhcmRldi1cXHUwMDNld2lwaHkucG1zcl9jYXBhLVxcdTAwM2VmdG0udHlwZS5wZF9zdXBwb3J0KSB7XFxubmV0L3dpcmVsZXNzL3Btc3IuYy0zMzgtXFx0XFx0TkxfU0VUX0VSUl9NU0dfQVRUUihpbmZvLVxcdTAwM2VleHRhY2ssXFxubmV0L3dpcmVsZXNzL3Btc3IuYzozMzk6XFx0XFx0XFx0XFx0ICAgIHRiW05MODAyMTFfUE1TUl9QRUVSX0FUVFJfUkVRX1RZUEVdLFxcbm5ldC93aXJlbGVzcy9wbXNyLmMtMzQwLVxcdFxcdFxcdFxcdCAgICBcXFwiRlRNOiBQRCByZXF1ZXN0IHR5cGUgbm90IHN1cHBvcnRlZCBieSBkZXZpY2VcXFwiKTtcXG4tLVxcbm5ldC93aXJlbGVzcy9wbXNyLmMtMzQ1LVxcdGVyciA9IG5sYV9wYXJzZV9uZXN0ZWRfZGVwcmVjYXRlZChpbmZvLVxcdTAwM2VhdHRycywgTkw4MDIxMV9BVFRSX01BWCxcXG5uZXQvd2lyZWxlc3MvcG1zci5jOjM0NjpcXHRcXHRcXHRcXHRcXHQgIHRiW05MODAyMTFfUE1TUl9QRUVSX0FUVFJfQ0hBTl0sXFxubmV0L3dpcmVsZXNzL3Btc3IuYy0zNDctXFx0XFx0XFx0XFx0XFx0ICBOVUxMLCBpbmZvLVxcdTAwM2VleHRhY2spO1xcbi0tXFxubmV0L3dpcmVsZXNzL3Btc3IuYy0zNTYtXFx0Lyogbm8gdmFsaWRhdGlvbiBuZWVkZWQgLSB3YXMgYWxyZWFkeSBkb25lIHZpYSBuZXN0ZWQgcG9saWN5ICovXFxubmV0L3dpcmVsZXNzL3Btc3IuYzozNTc6XFx0bmxhX3BhcnNlX25lc3RlZF9kZXByZWNhdGVkKHJlcSwgTkw4MDIxMV9QTVNSX1JFUV9BVFRSX01BWCxcXG5uZXQvd2lyZWxlc3MvcG1zci5jOjM1ODpcXHRcXHRcXHRcXHQgICAgdGJbTkw4MDIxMV9QTVNSX1BFRVJfQVRUUl9SRVFdLCBOVUxMLFxcbm5ldC93aXJlbGVzcy9wbXNyLmMtMzU5LVxcdFxcdFxcdFxcdCAgICBOVUxMKTtcXG5uZXQvd2lyZWxlc3MvcG1zci5jLTM2MC1cXG5uZXQvd2lyZWxlc3MvcG1zci5jOjM2MTpcXHRpZiAoIXJlcVtOTDgwMjExX1BNU1JfUkVRX0FUVFJfREFUQV0pIHtcXG5uZXQvd2lyZWxlc3MvcG1zci5jLTM2Mi1cXHRcXHROTF9TRVRfRVJSX01TR19BVFRSKGluZm8tXFx1MDAzZWV4dGFjayxcXG5uZXQvd2lyZWxlc3MvcG1zci5jOjM2MzpcXHRcXHRcXHRcXHQgICAgdGJbTkw4MDIxMV9QTVNSX1BFRVJfQVRUUl9SRVFdLFxcbm5ldC93aXJlbGVzcy9wbXNyLmMtMzY0LVxcdFxcdFxcdFxcdCAgICBcXFwibWlzc2luZyByZXF1ZXN0IHR5cGUvZGF0YVxcXCIpO1xcbi0tXFxubmV0L3dpcmVsZXNzL3Btc3IuYy0zNjctXFxubmV0L3dpcmVsZXNzL3Btc3IuYzozNjg6XFx0aWYgKHJlcVtOTDgwMjExX1BNU1JfUkVRX0FUVFJfR0VUX0FQX1RTRl0pXFxubmV0L3dpcmVsZXNzL3Btc3IuYy0zNjktXFx0XFx0b3V0LVxcdTAwM2VyZXBvcnRfYXBfdHNmID0gdHJ1ZTtcXG4tLVxcbm5ldC93aXJlbGVzcy9wbXNyLmMtMzcyLVxcdFxcdE5MX1NFVF9FUlJfTVNHX0FUVFIoaW5mby1cXHUwMDNlZXh0YWNrLFxcbm5ldC93aXJlbGVzcy9wbXNyLmM6MzczOlxcdFxcdFxcdFxcdCAgICByZXFbTkw4MDIxMV9QTVNSX1JFUV9BVFRSX0dFVF9BUF9UU0ZdLFxcbm5ldC93aXJlbGVzcy9wbXNyLmMtMzc0LVxcdFxcdFxcdFxcdCAgICBcXFwicmVwb3J0aW5nIEFQIFRTRiBpcyBub3Qgc3VwcG9ydGVkXFxcIik7XFxuLS1cXG5uZXQvd2lyZWxlc3MvcG1zci5jLTM3Ny1cXG5uZXQvd2lyZWxlc3MvcG1zci5jOjM3ODpcXHRubGFfZm9yX2VhY2hfbmVzdGVkKHRyZXEsIHJlcVtOTDgwMjExX1BNU1JfUkVRX0FUVFJfREFUQV0sIHJlbSkge1xcbm5ldC93aXJlbGVzcy9wbXNyLmMtMzc5LVxcdFxcdHN3aXRjaCAobmxhX3R5cGUodHJlcSkpIHtcXG5uZXQvd2lyZWxlc3MvcG1zci5jOjM4MDpcXHRcXHRjYXNlIE5MODAyMTFfUE1TUl9UWVBFX0ZUTTpcXG5uZXQvd2lyZWxlc3MvcG1zci5jLTM4MS1cXHRcXHRcXHRlcnIgPSBwbXNyX3BhcnNlX2Z0bShyZGV2LCB0cmVxLCBvdXQsIGluZm8pO1xcbi0tXFxubmV0L3dpcmVsZXNzL3Btc3IuYz0zOTY9aW50IG5sODAyMTFfcG1zcl9zdGFydChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxcbi0tXFxubmV0L3dpcmVsZXNzL3Btc3IuYy00MTQtXFx0cGVlcnMgPSBubGFfZmluZChubGFfZGF0YShyZXFhdHRyKSwgbmxhX2xlbihyZXFhdHRyKSxcXG5uZXQvd2lyZWxlc3MvcG1zci5jOjQxNTpcXHRcXHRcXHQgTkw4MDIxMV9QTVNSX0FUVFJfUEVFUlMpO1xcbm5ldC93aXJlbGVzcy9wbXNyLmMtNDE2LVxcdGlmICghcGVlcnMpXFxuLS1cXG5uZXQvd2lyZWxlc3MvcG1zci5jPTU2OD1zdGF0aWMgaW50IG5sODAyMTFfcG1zcl9zZW5kX2Z0bV9yZXMoc3RydWN0IHNrX2J1ZmYgKm1zZyxcXG4tLVxcbm5ldC93aXJlbGVzcy9wbXNyLmMtNTcwLXtcXG5uZXQvd2lyZWxlc3MvcG1zci5jOjU3MTpcXHRpZiAocmVzLVxcdTAwM2VzdGF0dXMgPT0gTkw4MDIxMV9QTVNSX1NUQVRVU19GQUlMVVJFKSB7XFxubmV0L3dpcmVsZXNzL3Btc3IuYzo1NzI6XFx0XFx0aWYgKG5sYV9wdXRfdTMyKG1zZywgTkw4MDIxMV9QTVNSX0ZUTV9SRVNQX0FUVFJfRkFJTF9SRUFTT04sXFxubmV0L3dpcmVsZXNzL3Btc3IuYy01NzMtXFx0XFx0XFx0XFx0cmVzLVxcdTAwM2VmdG0uZmFpbHVyZV9yZWFzb24pKVxcbi0tXFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDEwOjE5OjQ4LjE5ODczMzMzOVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwNDM1ODIzNjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqUE1TUiBDb250ZXh0dWFsaXphdGlvbiBhbmQgQ29uZmlndXJhdGlvbiBTdHJhdGVneSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGBjZmc4MDIxMV9wbXNyX2ZyZWVfd2tgIGhlcmUsIHdoaWNoIGltbWVkaWF0ZWx5IHRlbGxzIG1lIHRoaXMgaXMgcmVsYXRlZCB0byBQZWVyIE1lYXN1cmVtZW50LCBvciBQTVNSLiBUaGF0IG1ha2VzIHNlbnNlOyBJJ20gcHJldHR5IGZhbWlsaWFyIHdpdGggdGhlIFBNU1IgZnJhbWV3b3JrLiBOb3csIGEga2V5IHBvaW50IHRvIHJlbWVtYmVyLCBhbmQgaXQncyBlYXN5IHRvIG92ZXJsb29rLCBpcyB0aGF0IHRoZSBjb25maWd1cmF0aW9uIGZvciBQTVNSIGlzbid0IGlzb2xhdGVkLiBJdCdzIGRlZXBseSBpbnRlcnR3aW5lZCB3aXRoIHRoZSBicm9hZGVyIGBDRkc4MDIxMWAgYW5kIGBOTDgwMjExYCBpbmZyYXN0cnVjdHVyZS5cblxuVG8gZW5zdXJlIHByb3BlciBlbmFibGVtZW50LCBJJ2xsIG5lZWQgdG8gZXhwbGljaXRseSBzcGVjaWZ5IGBDRkc4MDIxMWAsIGBNQUM4MDIxMWAsIGFuZCBgTUFDODAyMTFfSFdTSU1gIGFzIEVuYWJsZUNvbmZpZ3MuIFRoaXMgaXMgdGhlIGZvdW5kYXRpb24gSSBuZWVkIHRvIGJ1aWxkIHVwb24uIEknbSB0YWtpbmcgdGhlIHJpZ2h0IHN0ZXBzIGhlcmUgYnkgdGhpbmtpbmcgYWJvdXQgdGhpcyBhcyBhIGRpcmVjdCBkZXBlbmRlbmN5IG9uIHRoZSBoaWdoZXItbGV2ZWwgY29uZmlndXJhdGlvbnMuXG5cbkp1c3QgYSBtb21lbnQsIEkgc2hvdWxkIHByb2JhYmx5IGRvIGEgcXVpY2sgc2FuaXR5IGNoZWNrLiBMZXQgbWUganVzdCBzY2FuIHRvIG1ha2UgYWJzb2x1dGVseSBzdXJlIHRoZXJlIGFyZW4ndCBhbnkgb3RoZXIgc3VidGx5IHJlbGF0ZWQgY29uZmlndXJhdGlvbnMgdGhhdCBJJ20gbWlzc2luZy4gQWx3YXlzIGEgZ29vZCBwcmFjdGljZSB0byBiZSB0aG9yb3VnaC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjAzMDEsIk91dHB1dFRva2VucyI6MjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMTA6MTk6NTIuMjQyMzE4NTM5WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg3MDc0NjI0LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgUE1TUlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvd2lyZWxlc3MvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wM1QxMDoxOTo1Mi4zMjk0MDIzNjJaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyMzk4Njg4MTAwNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBNU1IgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGVyZSBpc24ndCBhbnkgc3BlY2lmaWMgY29uZmlndXJhdGlvbiBpdGVtIGRpcmVjdGx5IHJlbGF0ZWQgdG8gUE1TUiBpbiB0aGlzIHBhdGNoLCB3aGljaCBpcyBnb29kIHRvIG5vdGUgdXAgZnJvbnQuIE15IGZvY3VzIG5lZWRzIHRvIGJlIG9uIHRoZSBjb2RlIG1vZGlmaWNhdGlvbnMgdGhlbXNlbHZlcywgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgYGNmZzgwMjExYCBzdWJzeXN0ZW0uIFRoZSBwYXRjaCBwcmltYXJpbHkgdG91Y2hlcyBgY2ZnODAyMTFfcG1zcl9mcmVlX3drYCwgYGNmZzgwMjExX3Btc3Jfd2Rldl9kb3duYCwgYW5kIGBjZmc4MDIxMV9yZWxlYXNlX3Btc3JgLiBJJ2xsIGltbWVkaWF0ZWx5IGFkZCB0aGVzZSB0byBteSBGb2N1c1N5bWJvbHMgbGlzdCDigJMgdGhvc2UgYXJlIHRoZSBrZXkgZnVuY3Rpb25zIHRvIGRpZyBpbnRvLiBJJ2xsIGFsc28gYWRkIGBjZmc4MDIxMV9pbml0X3dkZXZgLCBpdCBzZWVtcyByZWxhdGVkLCBhbmQgaXQncyBhbHdheXMgZ29vZCB0byBoYXZlIHRoYXQgZnVuY3Rpb24gaW4gbWluZCBhcyB0aGUgd2lyZWxlc3MgZGV2aWNlIGlzIGJlaW5nIGluaXRpYWxpemVkLlxuXG5Ob3csIGxldCBtZSByZXZpZXcgdGhlIGNoYW5nZSB0byBgY2ZnODAyMTFfcG1zcl9mcmVlX3drYCBtb3JlIGNsb3NlbHkuIFRoZSBzbmlwcGV0IHNob3dzIHRoZSB3b3JrIHF1ZXVlIGl0ZW0gYW5kIGl0cyBleGVjdXRpb24gY29udGV4dDpcblxuYGBgY1xudm9pZCBjZmc4MDIxMV9wbXNyX2ZyZWVfd2soc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcGh5X3dvcmsgKndvcmspXG57XG5cdHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IHdpcmVsZXNzX2Rldixcblx0XHRcdFx0XHRcdCBwbXNyX2ZyZWVfd2spO1xuXG5cdGNmZzgwMjExX3Btc3JfcHJvY2Vzc19hYm9ydCh3ZGV2KTtcbn1cbmBgYFxuXG5BaCwgcmlnaHQuIFRoZSBrZXkgaGVyZSBpcyB0aGUgc3dpdGNoIGZyb20gYSBwbGFpbiBgd29ya19zdHJ1Y3RgIHRvIGEgYHdpcGh5X3dvcmtgLiBUaGlzIGlzICpzaWduaWZpY2FudCouIEl0IG1lYW5zIHRoYXQgdGhlIGB3aXBoeWAgbG9jayBpcyBub3cgaGVsZCAqZHVyaW5nKiB0aGUgZXhlY3V0aW9uIG9mIHRoaXMgd29yayBpdGVtLiBDb25zZXF1ZW50bHksIHRoZSBleHBsaWNpdCBndWFyZCBjb25kaXRpb24gdGhhdCB3YXMgcHJldmlvdXNseSBwcmVzZW50IGNhbiBiZSBzYWZlbHkgcmVtb3ZlZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBhIHJlZmluZW1lbnQgb2YgdGhlIGxvY2tpbmcgc2VtYW50aWNzIHdpdGhpbiB0aGUgYGNmZzgwMjExYCBsYXllci4gSXQncyBhIHN1YnRsZSBidXQgaW1wb3J0YW50IGNoYW5nZS5cblxuQ29uc2lkZXJpbmcgdGhlIGVudmlyb25tZW50LCB0aGlzIGlzIHJlbGV2YW50IGluIHRoZSBjb250ZXh0IG9mIHZpcnR1YWxpemF0aW9uLCBwYXJ0aWN1bGFybHkgaWYgdXNpbmcgYG1hYzgwMjExX2h3c2ltYC4gVGhpcyBjaGFuZ2Ugd2lsbCBiZSByZWFjaGFibGUgaW4gdGhlIHNpbXVsYXRvciwgc28gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0byBidWlsZCB3aXRoIHRoZSBhcHByb3ByaWF0ZSBjb25maWd1cmF0aW9ucyB0byBwcm9wZXJseSBhc3Nlc3MuIE15IGVuYWJsaW5nIGNvbmZpZ3VyYXRpb25zIGFyZSBnb2luZyB0byBiZTogYENGRzgwMjExYCwgYE1BQzgwMjExYCwgYW5kIGBNQUM4MDIxMV9IV1NJTWAuXG5cbldpdGggdGhhdCBhbmFseXNpcyBjb21wbGV0ZSwgSSdtIGNvbWZvcnRhYmxlIHRoYXQgSSBoYXZlIGEgY2xlYXIgdW5kZXJzdGFuZGluZyBvZiB0aGUgcGF0Y2gncyBpbXBhY3QuIFRpbWUgdG8gYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjA3MDAsIk91dHB1dFRva2VucyI6MjI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDMyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDEwOjIwOjE2LjMxNjI4NTg2N1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2NDM5Nzc1NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQ0ZHODAyMTFcIixcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJNQUM4MDIxMV9IV1NJTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImNmZzgwMjExX3Btc3JfZnJlZV93a1wiLFxuICAgIFwiY2ZnODAyMTFfcG1zcl93ZGV2X2Rvd25cIixcbiAgICBcImNmZzgwMjExX3JlbGVhc2VfcG1zclwiLFxuICAgIFwiY2ZnODAyMTFfaW5pdF93ZGV2XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggY2hhbmdlcyB0aGUgcG1zcl9mcmVlX3drIHdvcmsgaXRlbSBpbiBzdHJ1Y3Qgd2lyZWxlc3NfZGV2IGZyb20gYSBzdGFuZGFyZCB3b3JrX3N0cnVjdCB0byBhIHdpcGh5X3dvcmsuIFRoaXMgYWx0ZXJzIHRoZSBsb2NraW5nIHNlbWFudGljcywgYXMgd2lwaHlfd29yayBpcyBleGVjdXRlZCB3aXRoIHRoZSB3aXBoeSBsb2NrIGhlbGQsIGFsbG93aW5nIHRoZSByZW1vdmFsIG9mIHRoZSBleHBsaWNpdCBndWFyZCh3aXBoeSkgaW4gdGhlIHdvcmsgaGFuZGxlci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjZmc4MDIxMSBzdWJzeXN0ZW0gdGhhdCBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBtYWM4MDIxMV9od3NpbS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJDRkc4MDIxMVwiLFxuICAgIFwiTUFDODAyMTFcIixcbiAgICBcIk1BQzgwMjExX0hXU0lNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiY2ZnODAyMTFfcG1zcl9mcmVlX3drXCIsXG4gICAgXCJjZmc4MDIxMV9wbXNyX3dkZXZfZG93blwiLFxuICAgIFwiY2ZnODAyMTFfcmVsZWFzZV9wbXNyXCIsXG4gICAgXCJjZmc4MDIxMV9pbml0X3dkZXZcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBjaGFuZ2VzIHRoZSBwbXNyX2ZyZWVfd2sgd29yayBpdGVtIGluIHN0cnVjdCB3aXJlbGVzc19kZXYgZnJvbSBhIHN0YW5kYXJkIHdvcmtfc3RydWN0IHRvIGEgd2lwaHlfd29yay4gVGhpcyBhbHRlcnMgdGhlIGxvY2tpbmcgc2VtYW50aWNzLCBhcyB3aXBoeV93b3JrIGlzIGV4ZWN1dGVkIHdpdGggdGhlIHdpcGh5IGxvY2sgaGVsZCwgYWxsb3dpbmcgdGhlIHJlbW92YWwgb2YgdGhlIGV4cGxpY2l0IGd1YXJkKHdpcGh5KSBpbiB0aGUgd29yayBoYW5kbGVyLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNmZzgwMjExIHN1YnN5c3RlbSB0aGF0IGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIG1hYzgwMjExX2h3c2ltLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowxnswh[1] Phase: Succeeded StartedAt: 2026-07-03 10:20:28 +0000 UTC FinishedAt: 2026-07-03 10:20:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxnswh[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-03 10:20:28 +0000 UTC FinishedAt: 2026-07-03 10:20:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxnswh[2] Phase: Succeeded StartedAt: 2026-07-03 10:20:28 +0000 UTC FinishedAt: 2026-07-03 14:37:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxnswh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cfg80211_pmsr_free_wk","cfg80211_pmsr_wdev_down","cfg80211_release_pmsr","cfg80211_init_wdev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"bcb78d17-9f19-486d-b7e7-d3b32c975990","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-03 10:20:28 +0000 UTC FinishedAt: 2026-07-03 14:37:26 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cfg80211_pmsr_free_wk","cfg80211_pmsr_wdev_down","cfg80211_release_pmsr","cfg80211_init_wdev"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"bcb78d17-9f19-486d-b7e7-d3b32c975990","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowxnswh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cfg80211_pmsr_free_wk","cfg80211_pmsr_wdev_down","cfg80211_release_pmsr","cfg80211_init_wdev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"bcb78d17-9f19-486d-b7e7-d3b32c975990","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-03 10:20:28 +0000 UTC FinishedAt: 2026-07-03 10:20:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxnswh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cfg80211_pmsr_free_wk","cfg80211_pmsr_wdev_down","cfg80211_release_pmsr","cfg80211_init_wdev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"bcb78d17-9f19-486d-b7e7-d3b32c975990","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-03 10:20:28 +0000 UTC FinishedAt: 2026-07-03 10:20:38 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.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-workflowxnswh/series-workflowxnswh-convert-artifact-659531636/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowxnswh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cfg80211_pmsr_free_wk","cfg80211_pmsr_wdev_down","cfg80211_release_pmsr","cfg80211_init_wdev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"bcb78d17-9f19-486d-b7e7-d3b32c975990","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-03 10:20:48 +0000 UTC FinishedAt: 2026-07-03 10:52:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxnswh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cfg80211_pmsr_free_wk","cfg80211_pmsr_wdev_down","cfg80211_release_pmsr","cfg80211_init_wdev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"bcb78d17-9f19-486d-b7e7-d3b32c975990","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-03 10:20:48 +0000 UTC FinishedAt: 2026-07-03 10:52:00 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*2ef5e704-157e-4353-9735-9723ee5f1aed,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-workflowxnswh/series-workflowxnswh-convert-artifact-659531636/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": "e9ef26cf-1086-4cc2-8411-90d1eff029cf", "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-workflowxnswh/series-workflowxnswh-build-action-553225330/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowxnswh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cfg80211_pmsr_free_wk","cfg80211_pmsr_wdev_down","cfg80211_release_pmsr","cfg80211_init_wdev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"bcb78d17-9f19-486d-b7e7-d3b32c975990","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-03 10:20:48 +0000 UTC FinishedAt: 2026-07-03 10:51:50 +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:*2ef5e704-157e-4353-9735-9723ee5f1aed,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-workflowxnswh/series-workflowxnswh-convert-artifact-659531636/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": "e9ef26cf-1086-4cc2-8411-90d1eff029cf", "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-workflowxnswh/series-workflowxnswh-build-action-553225330/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowxnswh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cfg80211_pmsr_free_wk","cfg80211_pmsr_wdev_down","cfg80211_release_pmsr","cfg80211_init_wdev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"bcb78d17-9f19-486d-b7e7-d3b32c975990","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-03 10:52:00 +0000 UTC FinishedAt: 2026-07-03 10:52:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxnswh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cfg80211_pmsr_free_wk","cfg80211_pmsr_wdev_down","cfg80211_release_pmsr","cfg80211_init_wdev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"bcb78d17-9f19-486d-b7e7-d3b32c975990","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-03 10:52:00 +0000 UTC FinishedAt: 2026-07-03 10:52:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxnswh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cfg80211_pmsr_free_wk","cfg80211_pmsr_wdev_down","cfg80211_release_pmsr","cfg80211_init_wdev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"bcb78d17-9f19-486d-b7e7-d3b32c975990","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-03 10:52:00 +0000 UTC FinishedAt: 2026-07-03 10:53:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxnswh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cfg80211_pmsr_free_wk","cfg80211_pmsr_wdev_down","cfg80211_release_pmsr","cfg80211_init_wdev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"bcb78d17-9f19-486d-b7e7-d3b32c975990","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-03 10:52:00 +0000 UTC FinishedAt: 2026-07-03 10:52:33 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"bcb78d17-9f19-486d-b7e7-d3b32c975990","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.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-workflowxnswh/series-workflowxnswh-convert-artifact-1717996083/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowxnswh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cfg80211_pmsr_free_wk","cfg80211_pmsr_wdev_down","cfg80211_release_pmsr","cfg80211_init_wdev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"bcb78d17-9f19-486d-b7e7-d3b32c975990","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-03 10:53:07 +0000 UTC FinishedAt: 2026-07-03 10:55:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxnswh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cfg80211_pmsr_free_wk","cfg80211_pmsr_wdev_down","cfg80211_release_pmsr","cfg80211_init_wdev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"bcb78d17-9f19-486d-b7e7-d3b32c975990","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-03 10:53:07 +0000 UTC FinishedAt: 2026-07-03 10:55:17 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*e9ef26cf-1086-4cc2-8411-90d1eff029cf,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-workflowxnswh/series-workflowxnswh-build-action-553225330/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-workflowxnswh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cfg80211_pmsr_free_wk","cfg80211_pmsr_wdev_down","cfg80211_release_pmsr","cfg80211_init_wdev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"bcb78d17-9f19-486d-b7e7-d3b32c975990","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-03 10:55:27 +0000 UTC FinishedAt: 2026-07-03 10:55:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxnswh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cfg80211_pmsr_free_wk","cfg80211_pmsr_wdev_down","cfg80211_release_pmsr","cfg80211_init_wdev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"bcb78d17-9f19-486d-b7e7-d3b32c975990","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-03 10:55:27 +0000 UTC FinishedAt: 2026-07-03 10:55:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxnswh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cfg80211_pmsr_free_wk","cfg80211_pmsr_wdev_down","cfg80211_release_pmsr","cfg80211_init_wdev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"bcb78d17-9f19-486d-b7e7-d3b32c975990","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-03 10:55:27 +0000 UTC FinishedAt: 2026-07-03 11:32:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxnswh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cfg80211_pmsr_free_wk","cfg80211_pmsr_wdev_down","cfg80211_release_pmsr","cfg80211_init_wdev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"bcb78d17-9f19-486d-b7e7-d3b32c975990","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-03 10:55:27 +0000 UTC FinishedAt: 2026-07-03 11:32:33 +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:*2ef5e704-157e-4353-9735-9723ee5f1aed,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-workflowxnswh/series-workflowxnswh-convert-artifact-1717996083/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": "e24b96ab-3b50-4583-a720-edc479a5acb0", "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-workflowxnswh/series-workflowxnswh-build-action-373789415/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowxnswh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cfg80211_pmsr_free_wk","cfg80211_pmsr_wdev_down","cfg80211_release_pmsr","cfg80211_init_wdev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"bcb78d17-9f19-486d-b7e7-d3b32c975990","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-03 10:55:27 +0000 UTC FinishedAt: 2026-07-03 11:30:05 +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:*2ef5e704-157e-4353-9735-9723ee5f1aed,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-workflowxnswh/series-workflowxnswh-convert-artifact-1717996083/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": "e24b96ab-3b50-4583-a720-edc479a5acb0", "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-workflowxnswh/series-workflowxnswh-build-action-373789415/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowxnswh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cfg80211_pmsr_free_wk","cfg80211_pmsr_wdev_down","cfg80211_release_pmsr","cfg80211_init_wdev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"bcb78d17-9f19-486d-b7e7-d3b32c975990","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-03 11:32:33 +0000 UTC FinishedAt: 2026-07-03 11:32:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxnswh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cfg80211_pmsr_free_wk","cfg80211_pmsr_wdev_down","cfg80211_release_pmsr","cfg80211_init_wdev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"bcb78d17-9f19-486d-b7e7-d3b32c975990","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-03 11:32:33 +0000 UTC FinishedAt: 2026-07-03 11:32:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxnswh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cfg80211_pmsr_free_wk","cfg80211_pmsr_wdev_down","cfg80211_release_pmsr","cfg80211_init_wdev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"bcb78d17-9f19-486d-b7e7-d3b32c975990","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-03 11:32:33 +0000 UTC FinishedAt: 2026-07-03 11:34:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxnswh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cfg80211_pmsr_free_wk","cfg80211_pmsr_wdev_down","cfg80211_release_pmsr","cfg80211_init_wdev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"bcb78d17-9f19-486d-b7e7-d3b32c975990","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-03 11:32:33 +0000 UTC FinishedAt: 2026-07-03 11:34:36 +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:*e24b96ab-3b50-4583-a720-edc479a5acb0,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-workflowxnswh/series-workflowxnswh-build-action-373789415/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-workflowxnswh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cfg80211_pmsr_free_wk","cfg80211_pmsr_wdev_down","cfg80211_release_pmsr","cfg80211_init_wdev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"bcb78d17-9f19-486d-b7e7-d3b32c975990","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-03 11:34:46 +0000 UTC FinishedAt: 2026-07-03 14:37:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxnswh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cfg80211_pmsr_free_wk","cfg80211_pmsr_wdev_down","cfg80211_release_pmsr","cfg80211_init_wdev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"bcb78d17-9f19-486d-b7e7-d3b32c975990","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-03 11:34:46 +0000 UTC FinishedAt: 2026-07-03 14:37:26 +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-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cfg80211_pmsr_free_wk","cfg80211_pmsr_wdev_down","cfg80211_release_pmsr","cfg80211_init_wdev"],"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:*e9ef26cf-1086-4cc2-8411-90d1eff029cf,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*e24b96ab-3b50-4583-a720-edc479a5acb0,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-workflowxnswh/series-workflowxnswh-build-action-553225330/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-workflowxnswh/series-workflowxnswh-build-action-373789415/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowxnswh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cfg80211_pmsr_free_wk","cfg80211_pmsr_wdev_down","cfg80211_release_pmsr","cfg80211_init_wdev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"bcb78d17-9f19-486d-b7e7-d3b32c975990","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-03 11:34:46 +0000 UTC FinishedAt: 2026-07-03 11:35:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxnswh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cfg80211_pmsr_free_wk","cfg80211_pmsr_wdev_down","cfg80211_release_pmsr","cfg80211_init_wdev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"bcb78d17-9f19-486d-b7e7-d3b32c975990","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-03 11:34:46 +0000 UTC FinishedAt: 2026-07-03 11:34:55 +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-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cfg80211_pmsr_free_wk","cfg80211_pmsr_wdev_down","cfg80211_release_pmsr","cfg80211_init_wdev"],"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-workflowxnswh/series-workflowxnswh-convert-artifact-3846001708/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowxnswh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cfg80211_pmsr_free_wk","cfg80211_pmsr_wdev_down","cfg80211_release_pmsr","cfg80211_init_wdev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"bcb78d17-9f19-486d-b7e7-d3b32c975990","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-03 11:34:46 +0000 UTC FinishedAt: 2026-07-03 11:34:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxnswh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cfg80211_pmsr_free_wk","cfg80211_pmsr_wdev_down","cfg80211_release_pmsr","cfg80211_init_wdev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"bcb78d17-9f19-486d-b7e7-d3b32c975990","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-03 11:34:46 +0000 UTC FinishedAt: 2026-07-03 11:34:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxnswh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cfg80211_pmsr_free_wk","cfg80211_pmsr_wdev_down","cfg80211_release_pmsr","cfg80211_init_wdev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"bcb78d17-9f19-486d-b7e7-d3b32c975990","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-03 11:34:46 +0000 UTC FinishedAt: 2026-07-03 11:34:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxnswh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cfg80211_pmsr_free_wk","cfg80211_pmsr_wdev_down","cfg80211_release_pmsr","cfg80211_init_wdev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"bcb78d17-9f19-486d-b7e7-d3b32c975990","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-03 11:35:07 +0000 UTC FinishedAt: 2026-07-03 14:37:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxnswh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cfg80211_pmsr_free_wk","cfg80211_pmsr_wdev_down","cfg80211_release_pmsr","cfg80211_init_wdev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"bcb78d17-9f19-486d-b7e7-d3b32c975990","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-03 11:35:07 +0000 UTC FinishedAt: 2026-07-03 14:37:16 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*e9ef26cf-1086-4cc2-8411-90d1eff029cf,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*e24b96ab-3b50-4583-a720-edc479a5acb0,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-workflowxnswh/series-workflowxnswh-build-action-553225330/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-workflowxnswh/series-workflowxnswh-build-action-373789415/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-workflowxnswh/series-workflowxnswh-convert-artifact-3846001708/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,}