Name: series-workflowsclb4 Phase: Succeeded StartedAt: 2026-09-08 17:19:20 +0000 UTC FinishedAt: 2026-09-08 21:53:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsclb4[0] Phase: Succeeded StartedAt: 2026-09-08 17:19:20 +0000 UTC FinishedAt: 2026-09-08 18:11:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsclb4[0].run-triage Phase: Succeeded StartedAt: 2026-09-08 17:19:20 +0000 UTC FinishedAt: 2026-09-08 18:11:06 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "1b60ed34f712e9f606d80951f1586f4274ebadf1", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MAC80211", "CFG80211", "ATH11K", "MAC80211_DEBUGFS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "1b60ed34f712e9f606d80951f1586f4274ebadf1", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MAC80211", "CFG80211", "ATH11K", "MAC80211_DEBUGFS" ], "series_id": "0a30ddee-6301-45fc-a29d-da278b79e983" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "ieee80211_txq_airtime_check", "ieee80211_aql_sta_limit", "ieee80211_next_txq", "ieee80211_tx_dequeue", "__ath11k_mac_register" ], "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+CgkJCTx0ZD4yMDI2LzA5LzA4IDE4OjA5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O0NGRzgwMjExJiMzNDssCiAgICAmIzM0O0FUSDExSyYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMV9ERUJVR0ZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aWVlZTgwMjExX3R4cV9haXJ0aW1lX2NoZWNrJiMzNDssCiAgICAmIzM0O2llZWU4MDIxMV9hcWxfc3RhX2xpbWl0JiMzNDssCiAgICAmIzM0O2llZWU4MDIxMV9uZXh0X3R4cSYjMzQ7LAogICAgJiMzNDtpZWVlODAyMTFfdHhfZGVxdWV1ZSYjMzQ7LAogICAgJiMzNDtfX2F0aDExa19tYWNfcmVnaXN0ZXImIzM0OwogIF0sCiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIHRoZSBgSUVFRTgwMjExX0hXX1RYX05PX1BVU0hCQUNLYCBoYXJkd2FyZSBmbGFnIGZvciBtYWM4MDIxMS9hdGgxMWsgYW5kIGFkanVzdHMgc3RhdGlvbiBBaXJ0aW1lIFF1ZXVlIExpbWl0IChBUUwpIGNhbGN1bGF0aW9ucyBiYXNlZCBvbiBzdGF0aW9uIGFpcnRpbWUgd2VpZ2h0IHdoZW4gdGhpcyBmbGFnIGlzIGVuYWJsZWQuXG5cbkFsbCBzdHJ1Y3QgZmllbGRzIGFjY2Vzc2VkIChzdWNoIGFzIGBzdGEtXHUwMDNlYWlydGltZV93ZWlnaHRgLCBgbG9jYWwtXHUwMDNlYXFsX3RocmVzaG9sZGAsIGFuZCBgc3RhLVx1MDAzZWFpcnRpbWVbXS5hcWxfbGltaXRfKmApIGFyZSBzdGFuZGFyZCBpbnRlZ2VyIGZpZWxkcyBpbml0aWFsaXplZCBkdXJpbmcgc3RhdGlvbiBjcmVhdGlvbiBhbmQgZHJpdmVyIGNvbmZpZ3VyYXRpb24uIExvY2FsIHZhcmlhYmxlcyBpbiB0aGUgbmV3IGNhbGN1bGF0aW9uIGhlbHBlciBgaWVlZTgwMjExX2FxbF9zdGFfbGltaXQoKWAgYXJlIGV4cGxpY2l0bHkgYXNzaWduZWQgYmVmb3JlIHVzZS4gTm8gaGVhcC9zdGFjayBhbGxvY2F0aW9ucywgbWVtb3J5IGNvcHkgb3BlcmF0aW9ucyB0byB1c2VyIHNwYWNlLCBvciB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcyBhcmUgaW50cm9kdWNlZCBvciBtb2RpZmllZC5cblxuVGhlcmVmb3JlLCBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBpcyBub3QgbmVlZGVkOyBhbnkgc3RhbmRhcmQgY29uY3VycmVuY3kgb3IgbG9naWMgaXNzdWVzIGFyZSBjb3ZlcmVkIGJ5IHN0YW5kYXJkIEtBU0FOL2tlcm5lbCBkZWJ1Z2dpbmcgdG9vbHMuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgdGhlIElFRUU4MDIxMV9IV19UWF9OT19QVVNIQkFDSyBoYXJkd2FyZSBmbGFnIGFuZCBhZGRzIHN0YXRpb24gYWlydGltZSBxdWV1ZSBsaW1pdCBjYWxjdWxhdGlvbiAoaWVlZTgwMjExX2FxbF9zdGFfbGltaXQpIHRvIHRoZSBtYWM4MDIxMSBUWCBxdWV1ZSBhaXJ0aW1lIGNoZWNrIChpZWVlODAyMTFfdHhxX2FpcnRpbWVfY2hlY2spLiBUaGUgbWFjODAyMTEgc3Vic3lzdGVtIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIG1hYzgwMjExX2h3c2ltIGFuZCBubDgwMjExIGludGVyZmFjZXMsIG1ha2luZyB0aGVzZSBxdWV1ZSBzY2hlZHVsaW5nIGFuZCBhaXJ0aW1lIGNhbGN1bGF0aW9uIGNoYW5nZXMgd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAxODowOTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDExMTY1MWIxNTZmYzIxOTY2NjVkZGRmOWRiNjJiZWFjNjc3MTU1MDRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIFNlcCA4IDE4OjA5OjI3IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jXG5pbmRleCAyZDU1Y2RjNGQxNjVkLi44N2U2MDYyYzU1NTA5IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuY1xuQEAgLTEwNDk0LDYgJiM0MzsxMDQ5NCw3IEBAIHN0YXRpYyBpbnQgX19hdGgxMWtfbWFjX3JlZ2lzdGVyKHN0cnVjdCBhdGgxMWsgKmFyKVxuIFxuIFx0aWVlZTgwMjExX2h3X3NldChhci1cdTAwM2VodywgU0lHTkFMX0RCTSk7XG4gXHRpZWVlODAyMTFfaHdfc2V0KGFyLVx1MDAzZWh3LCBTVVBQT1JUU19QUyk7XG4mIzQzO1x0aWVlZTgwMjExX2h3X3NldChhci1cdTAwM2VodywgVFhfTk9fUFVTSEJBQ0spO1xuIFx0aWVlZTgwMjExX2h3X3NldChhci1cdTAwM2VodywgU1VQUE9SVFNfRFlOQU1JQ19QUyk7XG4gXHRpZWVlODAyMTFfaHdfc2V0KGFyLVx1MDAzZWh3LCBNRlBfQ0FQQUJMRSk7XG4gXHRpZWVlODAyMTFfaHdfc2V0KGFyLVx1MDAzZWh3LCBSRVBPUlRTX1RYX0FDS19TVEFUVVMpO1xuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L21hYzgwMjExLmggYi9pbmNsdWRlL25ldC9tYWM4MDIxMS5oXG5pbmRleCA3YmI0NjE4MDY1YjY3Li44MDM4MWM3YWJkODRhIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9uZXQvbWFjODAyMTEuaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9uZXQvbWFjODAyMTEuaFxuQEAgLTMwODYsNiAmIzQzOzMwODYsMTIgQEAgc3RydWN0IGllZWU4MDIxMV90eHEge1xuICAqIEBJRUVFODAyMTFfSFdfU1VQUE9SVFNfTkRQX0JMT0NLQUNLOiBIVyBjYW4gdHJhbnNtaXQvcmVjZWl2ZSBTMUcgTkRQXG4gICpcdEJsb2NrQWNrIGZyYW1lcy5cbiAgKlxuJiM0MzsgKiBASUVFRTgwMjExX0hXX1RYX05PX1BVU0hCQUNLOiBUaGUgZHJpdmVyIGhhbmRzIGV2ZXJ5IGZyYW1lIGl0IGRlcXVldWVzXG4mIzQzOyAqXHR0byB0aGUgaGFyZHdhcmUgYXQgb25jZSwgYW5kIHRoZSBoYXJkd2FyZSBwaWNrcyB0aGUgc3RhdGlvbiBpdCBzZXJ2ZXNcbiYjNDM7ICpcdG5leHQsIHNvIHRoZSBvcmRlciBpbiB3aGljaCBtYWM4MDIxMSBzY2hlZHVsZXMgdGhlIHF1ZXVlcyBkb2VzIG5vdFxuJiM0MzsgKlx0cmVhY2ggdGhlIGFpci4gbWFjODAyMTEgdGhlbiBhcHBsaWVzIHRoZSBhaXJ0aW1lIHdlaWdodCB0byB0aGVcbiYjNDM7ICpcdGFpcnRpbWUgcXVldWUgbGltaXQgaW5zdGVhZC5cbiYjNDM7ICpcbiAgKiBATlVNX0lFRUU4MDIxMV9IV19GTEFHUzogbnVtYmVyIG9mIGhhcmR3YXJlIGZsYWdzLCB1c2VkIGZvciBzaXppbmcgYXJyYXlzXG4gICovXG4gZW51bSBpZWVlODAyMTFfaHdfZmxhZ3Mge1xuQEAgLTMxNDcsNiAmIzQzOzMxNTMsNyBAQCBlbnVtIGllZWU4MDIxMV9od19mbGFncyB7XG4gXHRJRUVFODAyMTFfSFdfSEFORExFU19RVUlFVF9DU0EsXG4gXHRJRUVFODAyMTFfSFdfU1RSSUNULFxuIFx0SUVFRTgwMjExX0hXX1NVUFBPUlRTX05EUF9CTE9DS0FDSyxcbiYjNDM7XHRJRUVFODAyMTFfSFdfVFhfTk9fUFVTSEJBQ0ssXG4gXG4gXHQvKiBrZWVwIGxhc3QsIG9idmlvdXNseSAqL1xuIFx0TlVNX0lFRUU4MDIxMV9IV19GTEFHU1xuZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxMS9kZWJ1Z2ZzLmMgYi9uZXQvbWFjODAyMTEvZGVidWdmcy5jXG5pbmRleCA4OTQ2YjAyNzc4MmNmLi5kZGJmYTk5MWVjNzRlIDEwMDY0NFxuLS0tIGEvbmV0L21hYzgwMjExL2RlYnVnZnMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L21hYzgwMjExL2RlYnVnZnMuY1xuQEAgLTQ2Miw2ICYjNDM7NDYyLDcgQEAgc3RhdGljIGNvbnN0IGNoYXIgKmh3X2ZsYWdfbmFtZXNbXSA9IHtcbiBcdEZMQUcoSEFORExFU19RVUlFVF9DU0EpLFxuIFx0RkxBRyhTVFJJQ1QpLFxuIFx0RkxBRyhTVVBQT1JUU19ORFBfQkxPQ0tBQ0spLFxuJiM0MztcdEZMQUcoVFhfTk9fUFVTSEJBQ0spLFxuICN1bmRlZiBGTEFHXG4gfTtcbiBcbmRpZmYgLS1naXQgYS9uZXQvbWFjODAyMTEvdHguYyBiL25ldC9tYWM4MDIxMS90eC5jXG5pbmRleCBjMzMwOTI5NjBkZjI2Li5jOTRlZmZmNDhkNzQ3IDEwMDY0NFxuLS0tIGEvbmV0L21hYzgwMjExL3R4LmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9tYWM4MDIxMS90eC5jXG5AQCAtNDIxNyw2ICYjNDM7NDIxNywyMSBAQCBFWFBPUlRfU1lNQk9MKF9faWVlZTgwMjExX3NjaGVkdWxlX3R4cSk7XG4gXG4gREVGSU5FX1NUQVRJQ19LRVlfRkFMU0UoYXFsX2Rpc2FibGUpO1xuIFxuJiM0MztzdGF0aWMgdTMyIGllZWU4MDIxMV9hcWxfc3RhX2xpbWl0KHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxuJiM0MztcdFx0XHRcdCAgIHN0cnVjdCBzdGFfaW5mbyAqc3RhLCB1MzIgbGltaXQpXG4mIzQzO3tcbiYjNDM7XHR1MzIgc2NhbGVkO1xuJiM0MztcbiYjNDM7XHRpZiAoIWllZWU4MDIxMV9od19jaGVjayhcdTAwMjZsb2NhbC1cdTAwM2VodywgVFhfTk9fUFVTSEJBQ0spIHx8XG4mIzQzO1x0ICAgIHN0YS1cdTAwM2VhaXJ0aW1lX3dlaWdodCA9PSBJRUVFODAyMTFfREVGQVVMVF9BSVJUSU1FX1dFSUdIVClcbiYjNDM7XHRcdHJldHVybiBsaW1pdDtcbiYjNDM7XG4mIzQzO1x0c2NhbGVkID0gbXVsdF9mcmFjKGxpbWl0LCBzdGEtXHUwMDNlYWlydGltZV93ZWlnaHQsXG4mIzQzO1x0XHRcdCAgIElFRUU4MDIxMV9ERUZBVUxUX0FJUlRJTUVfV0VJR0hUKTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIG1pbihzY2FsZWQsIG1heChsaW1pdCwgbG9jYWwtXHUwMDNlYXFsX3RocmVzaG9sZCkpO1xuJiM0Mzt9XG4mIzQzO1xuIGJvb2wgaWVlZTgwMjExX3R4cV9haXJ0aW1lX2NoZWNrKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuIFx0XHRcdFx0IHN0cnVjdCBpZWVlODAyMTFfdHhxICp0eHEpXG4ge1xuQEAgLTQyMzgsMTMgJiM0Mzs0MjUzLDE1IEBAIGJvb2wgaWVlZTgwMjExX3R4cV9haXJ0aW1lX2NoZWNrKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuIFxuIFx0c3RhID0gY29udGFpbmVyX29mKHR4cS1cdTAwM2VzdGEsIHN0cnVjdCBzdGFfaW5mbywgc3RhKTtcbiBcdGlmIChhdG9taWNfcmVhZChcdTAwMjZzdGEtXHUwMDNlYWlydGltZVt0eHEtXHUwMDNlYWNdLmFxbF90eF9wZW5kaW5nKSBcdTAwM2Ncbi1cdCAgICBzdGEtXHUwMDNlYWlydGltZVt0eHEtXHUwMDNlYWNdLmFxbF9saW1pdF9sb3cpXG4mIzQzO1x0ICAgIGllZWU4MDIxMV9hcWxfc3RhX2xpbWl0KGxvY2FsLCBzdGEsXG4mIzQzO1x0XHRcdFx0ICAgIHN0YS1cdTAwM2VhaXJ0aW1lW3R4cS1cdTAwM2VhY10uYXFsX2xpbWl0X2xvdykpXG4gXHRcdHJldHVybiB0cnVlO1xuIFxuIFx0aWYgKGF0b21pY19yZWFkKFx1MDAyNmxvY2FsLVx1MDAzZWFxbF90b3RhbF9wZW5kaW5nX2FpcnRpbWUpIFx1MDAzY1xuIFx0ICAgIGxvY2FsLVx1MDAzZWFxbF90aHJlc2hvbGQgXHUwMDI2XHUwMDI2XG4gXHQgICAgYXRvbWljX3JlYWQoXHUwMDI2c3RhLVx1MDAzZWFpcnRpbWVbdHhxLVx1MDAzZWFjXS5hcWxfdHhfcGVuZGluZykgXHUwMDNjXG4tXHQgICAgc3RhLVx1MDAzZWFpcnRpbWVbdHhxLVx1MDAzZWFjXS5hcWxfbGltaXRfaGlnaClcbiYjNDM7XHQgICAgaWVlZTgwMjExX2FxbF9zdGFfbGltaXQobG9jYWwsIHN0YSxcbiYjNDM7XHRcdFx0XHQgICAgc3RhLVx1MDAzZWFpcnRpbWVbdHhxLVx1MDAzZWFjXS5hcWxfbGltaXRfaGlnaCkpXG4gXHRcdHJldHVybiB0cnVlO1xuIFxuIFx0cmV0dXJuIGZhbHNlO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDE4OjA5PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O0NGRzgwMjExJiMzNDssCiAgICAmIzM0O0FUSDExSyYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMV9ERUJVR0ZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aWVlZTgwMjExX3R4cV9haXJ0aW1lX2NoZWNrJiMzNDssCiAgICAmIzM0O2llZWU4MDIxMV9hcWxfc3RhX2xpbWl0JiMzNDssCiAgICAmIzM0O2llZWU4MDIxMV9uZXh0X3R4cSYjMzQ7LAogICAgJiMzNDtpZWVlODAyMTFfdHhfZGVxdWV1ZSYjMzQ7LAogICAgJiMzNDtfX2F0aDExa19tYWNfcmVnaXN0ZXImIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyB0aGUgSUVFRTgwMjExX0hXX1RYX05PX1BVU0hCQUNLIGhhcmR3YXJlIGZsYWcgYW5kIGFkZHMgc3RhdGlvbiBhaXJ0aW1lIHF1ZXVlIGxpbWl0IGNhbGN1bGF0aW9uIChpZWVlODAyMTFfYXFsX3N0YV9saW1pdCkgdG8gdGhlIG1hYzgwMjExIFRYIHF1ZXVlIGFpcnRpbWUgY2hlY2sgKGllZWU4MDIxMV90eHFfYWlydGltZV9jaGVjaykuIFRoZSBtYWM4MDIxMSBzdWJzeXN0ZW0gaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgbWFjODAyMTFfaHdzaW0gYW5kIG5sODAyMTEgaW50ZXJmYWNlcywgbWFraW5nIHRoZXNlIHF1ZXVlIHNjaGVkdWxpbmcgYW5kIGFpcnRpbWUgY2FsY3VsYXRpb24gY2hhbmdlcyB3b3J0aCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3MKdG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncywKYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy4KCi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6CiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZAogIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuCiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLAogIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy4KCi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgJiMzNDtOTyBGVU5DVElPTkFMIENIQU5HRSYjMzQ7IChORkNJKSBPUiAmIzM0O1JFRkFDVE9SSU5HJiMzNDsgQ0xBSU1TOgogIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgJiMzNDtjbGVhbnVwcyYjMzQ7LCAmIzM0O3JlZmFjdG9yaW5ncyYjMzQ7LCBvciBzdGF0ZQogICYjMzQ7Tm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWQmIzM0Oy4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuCiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50CiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuCiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC4KCi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6CiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLAogIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLgogIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXIKICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoyLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOgoKLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOgogICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLgogICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pCiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuCiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50cwogICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy4KICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy4KLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6CiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczoKICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZwogICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuCiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQozLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6Ci0gQ29yZSBTdWJzeXN0ZW1zOgogICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLAogICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLgotIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczoKICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy4KLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6CiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuCi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczoKICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpXaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjoKCi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOgogIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzCiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHQKICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS4KICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgJiMzNDtmb2N1c2VkJiMzNDssCiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLgoKLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6CiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzCiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuCgotIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKToKICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrCiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuCiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyCiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlncwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOgotIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCi0gQ2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC4KLSBTdHJpcCBhbnkgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMTExNjUxYjE1NmZjMjE5NjY2NWRkZGY5ZGI2MmJlYWM2NzcxNTUwNApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgU2VwIDggMTg6MDk6MjcgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYwppbmRleCAyZDU1Y2RjNGQxNjVkLi44N2U2MDYyYzU1NTA5IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmMKQEAgLTEwNDk0LDYgJiM0MzsxMDQ5NCw3IEBAIHN0YXRpYyBpbnQgX19hdGgxMWtfbWFjX3JlZ2lzdGVyKHN0cnVjdCBhdGgxMWsgKmFyKQogCiAJaWVlZTgwMjExX2h3X3NldChhci0mZ3Q7aHcsIFNJR05BTF9EQk0pOwogCWllZWU4MDIxMV9od19zZXQoYXItJmd0O2h3LCBTVVBQT1JUU19QUyk7CiYjNDM7CWllZWU4MDIxMV9od19zZXQoYXItJmd0O2h3LCBUWF9OT19QVVNIQkFDSyk7CiAJaWVlZTgwMjExX2h3X3NldChhci0mZ3Q7aHcsIFNVUFBPUlRTX0RZTkFNSUNfUFMpOwogCWllZWU4MDIxMV9od19zZXQoYXItJmd0O2h3LCBNRlBfQ0FQQUJMRSk7CiAJaWVlZTgwMjExX2h3X3NldChhci0mZ3Q7aHcsIFJFUE9SVFNfVFhfQUNLX1NUQVRVUyk7CmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9tYWM4MDIxMS5oIGIvaW5jbHVkZS9uZXQvbWFjODAyMTEuaAppbmRleCA3YmI0NjE4MDY1YjY3Li44MDM4MWM3YWJkODRhIDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC9tYWM4MDIxMS5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbmV0L21hYzgwMjExLmgKQEAgLTMwODYsNiAmIzQzOzMwODYsMTIgQEAgc3RydWN0IGllZWU4MDIxMV90eHEgewogICogQElFRUU4MDIxMV9IV19TVVBQT1JUU19ORFBfQkxPQ0tBQ0s6IEhXIGNhbiB0cmFuc21pdC9yZWNlaXZlIFMxRyBORFAKICAqCUJsb2NrQWNrIGZyYW1lcy4KICAqCiYjNDM7ICogQElFRUU4MDIxMV9IV19UWF9OT19QVVNIQkFDSzogVGhlIGRyaXZlciBoYW5kcyBldmVyeSBmcmFtZSBpdCBkZXF1ZXVlcwomIzQzOyAqCXRvIHRoZSBoYXJkd2FyZSBhdCBvbmNlLCBhbmQgdGhlIGhhcmR3YXJlIHBpY2tzIHRoZSBzdGF0aW9uIGl0IHNlcnZlcwomIzQzOyAqCW5leHQsIHNvIHRoZSBvcmRlciBpbiB3aGljaCBtYWM4MDIxMSBzY2hlZHVsZXMgdGhlIHF1ZXVlcyBkb2VzIG5vdAomIzQzOyAqCXJlYWNoIHRoZSBhaXIuIG1hYzgwMjExIHRoZW4gYXBwbGllcyB0aGUgYWlydGltZSB3ZWlnaHQgdG8gdGhlCiYjNDM7ICoJYWlydGltZSBxdWV1ZSBsaW1pdCBpbnN0ZWFkLgomIzQzOyAqCiAgKiBATlVNX0lFRUU4MDIxMV9IV19GTEFHUzogbnVtYmVyIG9mIGhhcmR3YXJlIGZsYWdzLCB1c2VkIGZvciBzaXppbmcgYXJyYXlzCiAgKi8KIGVudW0gaWVlZTgwMjExX2h3X2ZsYWdzIHsKQEAgLTMxNDcsNiAmIzQzOzMxNTMsNyBAQCBlbnVtIGllZWU4MDIxMV9od19mbGFncyB7CiAJSUVFRTgwMjExX0hXX0hBTkRMRVNfUVVJRVRfQ1NBLAogCUlFRUU4MDIxMV9IV19TVFJJQ1QsCiAJSUVFRTgwMjExX0hXX1NVUFBPUlRTX05EUF9CTE9DS0FDSywKJiM0MzsJSUVFRTgwMjExX0hXX1RYX05PX1BVU0hCQUNLLAogCiAJLyoga2VlcCBsYXN0LCBvYnZpb3VzbHkgKi8KIAlOVU1fSUVFRTgwMjExX0hXX0ZMQUdTCmRpZmYgLS1naXQgYS9uZXQvbWFjODAyMTEvZGVidWdmcy5jIGIvbmV0L21hYzgwMjExL2RlYnVnZnMuYwppbmRleCA4OTQ2YjAyNzc4MmNmLi5kZGJmYTk5MWVjNzRlIDEwMDY0NAotLS0gYS9uZXQvbWFjODAyMTEvZGVidWdmcy5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9tYWM4MDIxMS9kZWJ1Z2ZzLmMKQEAgLTQ2Miw2ICYjNDM7NDYyLDcgQEAgc3RhdGljIGNvbnN0IGNoYXIgKmh3X2ZsYWdfbmFtZXNbXSA9IHsKIAlGTEFHKEhBTkRMRVNfUVVJRVRfQ1NBKSwKIAlGTEFHKFNUUklDVCksCiAJRkxBRyhTVVBQT1JUU19ORFBfQkxPQ0tBQ0spLAomIzQzOwlGTEFHKFRYX05PX1BVU0hCQUNLKSwKICN1bmRlZiBGTEFHCiB9OwogCmRpZmYgLS1naXQgYS9uZXQvbWFjODAyMTEvdHguYyBiL25ldC9tYWM4MDIxMS90eC5jCmluZGV4IGMzMzA5Mjk2MGRmMjYuLmM5NGVmZmY0OGQ3NDcgMTAwNjQ0Ci0tLSBhL25ldC9tYWM4MDIxMS90eC5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9tYWM4MDIxMS90eC5jCkBAIC00MjE3LDYgJiM0Mzs0MjE3LDIxIEBAIEVYUE9SVF9TWU1CT0woX19pZWVlODAyMTFfc2NoZWR1bGVfdHhxKTsKIAogREVGSU5FX1NUQVRJQ19LRVlfRkFMU0UoYXFsX2Rpc2FibGUpOwogCiYjNDM7c3RhdGljIHUzMiBpZWVlODAyMTFfYXFsX3N0YV9saW1pdChzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCwKJiM0MzsJCQkJICAgc3RydWN0IHN0YV9pbmZvICpzdGEsIHUzMiBsaW1pdCkKJiM0Mzt7CiYjNDM7CXUzMiBzY2FsZWQ7CiYjNDM7CiYjNDM7CWlmICghaWVlZTgwMjExX2h3X2NoZWNrKCZhbXA7bG9jYWwtJmd0O2h3LCBUWF9OT19QVVNIQkFDSykgfHwKJiM0MzsJICAgIHN0YS0mZ3Q7YWlydGltZV93ZWlnaHQgPT0gSUVFRTgwMjExX0RFRkFVTFRfQUlSVElNRV9XRUlHSFQpCiYjNDM7CQlyZXR1cm4gbGltaXQ7CiYjNDM7CiYjNDM7CXNjYWxlZCA9IG11bHRfZnJhYyhsaW1pdCwgc3RhLSZndDthaXJ0aW1lX3dlaWdodCwKJiM0MzsJCQkgICBJRUVFODAyMTFfREVGQVVMVF9BSVJUSU1FX1dFSUdIVCk7CiYjNDM7CiYjNDM7CXJldHVybiBtaW4oc2NhbGVkLCBtYXgobGltaXQsIGxvY2FsLSZndDthcWxfdGhyZXNob2xkKSk7CiYjNDM7fQomIzQzOwogYm9vbCBpZWVlODAyMTFfdHhxX2FpcnRpbWVfY2hlY2soc3RydWN0IGllZWU4MDIxMV9odyAqaHcsCiAJCQkJIHN0cnVjdCBpZWVlODAyMTFfdHhxICp0eHEpCiB7CkBAIC00MjM4LDEzICYjNDM7NDI1MywxNSBAQCBib29sIGllZWU4MDIxMV90eHFfYWlydGltZV9jaGVjayhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywKIAogCXN0YSA9IGNvbnRhaW5lcl9vZih0eHEtJmd0O3N0YSwgc3RydWN0IHN0YV9pbmZvLCBzdGEpOwogCWlmIChhdG9taWNfcmVhZCgmYW1wO3N0YS0mZ3Q7YWlydGltZVt0eHEtJmd0O2FjXS5hcWxfdHhfcGVuZGluZykgJmx0OwotCSAgICBzdGEtJmd0O2FpcnRpbWVbdHhxLSZndDthY10uYXFsX2xpbWl0X2xvdykKJiM0MzsJICAgIGllZWU4MDIxMV9hcWxfc3RhX2xpbWl0KGxvY2FsLCBzdGEsCiYjNDM7CQkJCSAgICBzdGEtJmd0O2FpcnRpbWVbdHhxLSZndDthY10uYXFsX2xpbWl0X2xvdykpCiAJCXJldHVybiB0cnVlOwogCiAJaWYgKGF0b21pY19yZWFkKCZhbXA7bG9jYWwtJmd0O2FxbF90b3RhbF9wZW5kaW5nX2FpcnRpbWUpICZsdDsKIAkgICAgbG9jYWwtJmd0O2FxbF90aHJlc2hvbGQgJmFtcDsmYW1wOwogCSAgICBhdG9taWNfcmVhZCgmYW1wO3N0YS0mZ3Q7YWlydGltZVt0eHEtJmd0O2FjXS5hcWxfdHhfcGVuZGluZykgJmx0OwotCSAgICBzdGEtJmd0O2FpcnRpbWVbdHhxLSZndDthY10uYXFsX2xpbWl0X2hpZ2gpCiYjNDM7CSAgICBpZWVlODAyMTFfYXFsX3N0YV9saW1pdChsb2NhbCwgc3RhLAomIzQzOwkJCQkgICAgc3RhLSZndDthaXJ0aW1lW3R4cS0mZ3Q7YWNdLmFxbF9saW1pdF9oaWdoKSkKIAkJcmV0dXJuIHRydWU7CiAKIAlyZXR1cm4gZmFsc2U7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDE4OjA5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQyOTQKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiAzNzUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQYXRjaCBmb3IgRnV6emluZyBQb3RlbnRpYWwqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoaXMgcGF0Y2ggaXMgZXZlbiAqd29ydGgqIGZ1enppbmcuIFdlIGhhdmUgYSBwYXRjaCBkaWZmIHdpdGggY2hhbmdlcyBpbiBgYXRoMTFrL21hYy5jYCwgYG1hYzgwMjExLmhgLCBgZGVidWdmcy5jYCwgYW5kIGB0eC5jYC4gVGhlIGNvcmUgc2VlbXMgdG8gYmUgYXJvdW5kIGEgYFRYX05PX1BVU0hCQUNLYCBmbGFnLCBhbmQgdGhlIGFkZGl0aW9uIG9mIGBpZWVlODAyMTFfYXFsX3N0YV9saW1pdCgpYCBpbiB0aGUgdHJhbnNtaXQgcGF0aC4gVGhpcyBkZWZpbml0ZWx5IHdhcnJhbnRzIGEgY2xvc2VyIGxvb2suCgpNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZGV0ZXJtaW5lIHRoZSByZWFjaGFiaWxpdHkgb2YgdGhlc2UgYXJlYXMgb2YgY29kZSB3aXRoaW4gdGhlIGJyb2FkZXIgTGludXgga2VybmVsLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBtYWM4MDIxMSB3aXJlbGVzcyBzdWJzeXN0ZW0uIEdpdmVuIG1hYzgwMjExJiMzOTtzIGNvcmUgcm9sZSBpbiB3aXJlbGVzcyBuZXR3b3JraW5nLCBpdCBzaG91bGQgYmUgYSBqdWljeSB0YXJnZXQuIEx1Y2tpbHksIHNpbmNlIEkgYWxyZWFkeSBrbm93IHN5emthbGxlciBoYXMgaGFkIHN1Y2Nlc3MgZnV6emluZyBtYWM4MDIxMSB2aWEgYG1hYzgwMjExX2h3c2ltYCwgYHZpcnRfd2lmaWAsIGBjZmc4MDIxMWAsIGFuZCBgbmw4MDIxMWAsIHRoYXQmIzM5O3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBUaGlzIHN1Z2dlc3RzIGl0IGlzIGRlZmluaXRlbHkgZnV6emFibGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBhbmQgR0NFLCB3aGljaCBpcyBhIGdyZWF0IHNpZ24uCgpOZXh0IHN0ZXA6IGxldCYjMzk7cyB2ZXJpZnkgbWFjODAyMTEmIzM5O3MgcGxhY2UgaW4gdGhlIHdpcmVsZXNzIHN0YWNrLiBJIG5lZWQgdG8gY29uZmlybSBpdHMgcm9sZSBpbiB0aGlzIHNwZWNpZmljIGFyZWEg4oCTIGlzIGl0IGNvcmUsIG9yIHJlYWNoYWJsZSB0aHJvdWdoIHRoZSBpbnRlcmZhY2VzIEkgbWVudGlvbmVkPyBUaGVuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25maWcgb3B0aW9ucyBjb250cm9sbGluZyB0aGVzZSBiaXRzLiBJJiMzOTtsbCBuZWVkIHRvIHVzZSBzb21lIGBncmVwYCBtYWdpYyBpbiB0aGUga2VybmVsIHNvdXJjZSB0byBsb29rIGZvciBjb25maWd1cmF0aW9ucyBhbmQgY2FsbCBncmFwaHMuIEkgd2FudCB0byB1bmRlcnN0YW5kIGV4YWN0bHkgKmhvdyogdGhlc2UgbmV3IGNoYW5nZXMgYXJlIHVzZWQsIGFuZCB3aGF0IGNvbmZpZ3VyYXRpb25zIGFyZSByZXF1aXJlZCB0byB0cmlnZ2VyIHRoZW0uIFRoaXMgd2lsbCBndWlkZSBteSBmdXp6aW5nIHNldHVwLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDE4OjA5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2llZWU4MDIxMV90eHFfYWlydGltZV9jaGVjayYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvdHguYz0zODg2PXN0cnVjdCBza19idWZmICppZWVlODAyMTFfdHhfZGVxdWV1ZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbi0tXG5uZXQvbWFjODAyMTEvdHguYy0zOTA0LVxubmV0L21hYzgwMjExL3R4LmM6MzkwNTpcdGlmICghaWVlZTgwMjExX3R4cV9haXJ0aW1lX2NoZWNrKGh3LCB0eHEpKVxubmV0L21hYzgwMjExL3R4LmMtMzkwNi1cdFx0cmV0dXJuIE5VTEw7XG4tLVxubmV0L21hYzgwMjExL3R4LmM9NDExNT1zdHJ1Y3QgaWVlZTgwMjExX3R4cSAqaWVlZTgwMjExX25leHRfdHhxKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCB1OCBhYylcbi0tXG5uZXQvbWFjODAyMTEvdHguYy00MTQ0LVxubmV0L21hYzgwMjExL3R4LmM6NDE0NTpcdGFxbF9jaGVjayA9IGllZWU4MDIxMV90eHFfYWlydGltZV9jaGVjayhodywgXHUwMDI2dHhxaS1cdTAwM2V0eHEpO1xubmV0L21hYzgwMjExL3R4LmMtNDE0Ni1cdGlmIChhcWxfY2hlY2spXG4tLVxubmV0L21hYzgwMjExL3R4LmM9NDIyMD1zdGF0aWMgdTMyIGllZWU4MDIxMV9hcWxfc3RhX2xpbWl0KHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxuLS1cbm5ldC9tYWM4MDIxMS90eC5jLTQyMzQtXG5uZXQvbWFjODAyMTEvdHguYzo0MjM1OmJvb2wgaWVlZTgwMjExX3R4cV9haXJ0aW1lX2NoZWNrKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxubmV0L21hYzgwMjExL3R4LmMtNDIzNi1cdFx0XHRcdCBzdHJ1Y3QgaWVlZTgwMjExX3R4cSAqdHhxKVxuLS1cbm5ldC9tYWM4MDIxMS90eC5jLTQyNjgtfVxubmV0L21hYzgwMjExL3R4LmM6NDI2OTpFWFBPUlRfU1lNQk9MKGllZWU4MDIxMV90eHFfYWlydGltZV9jaGVjayk7XG5uZXQvbWFjODAyMTEvdHguYy00MjcwLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDE4OjA5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU2NDAKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiAzOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyBpZiBJIHdlcmUgdGhpbmtpbmcgdGhlc2UgdGhvdWdodHM6CgoqKkFuYWx5emluZyBgaWVlZTgwMjExX2FxbF9zdGFfbGltaXRgIGluIGBuZXQvbWFjODAyMTEvdHguY2AqKgoKT2theSwgSSBuZWVkIHRvIGRpZyBpbnRvIGhvdyB0aGlzIEFRTCAoQWlydGltZSBGYWlybmVzcyBRdWV1ZSBMZW5ndGgpIHN0YXRpb24gbGltaXQgaXMgYmVpbmcgaGFuZGxlZC4gVGhlIG9idmlvdXMgcGxhY2UgdG8gc3RhcnQgaXMgYG5ldC9tYWM4MDIxMS90eC5jYCwgd2hlcmUgSSBhc3N1bWUgdGhlIGFjdHVhbCB0cmFuc21pc3Npb24gbG9naWMgYW5kIHF1ZXVlIG1hbmFnZW1lbnQgcmVzaWRlLiBJJiMzOTtsbCBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IGBpZWVlODAyMTFfYXFsX3N0YV9saW1pdGAgaXMgKnVzZWQqIGZpcnN0LiBJcyBpdCBhIGhhcmQgbGltaXQ/IElzIGl0IGEgdGFyZ2V0PyBJcyBpdCBkeW5hbWljPyBJJiMzOTtsbCBiZSBsb29raW5nIGZvciB3aGVyZSB0aGlzIHZhcmlhYmxlIGlzIHJlYWQsIGNvbXBhcmVkLCBhbmQgbW9kaWZpZWQsIGFuZCB3aGF0IHRoYXQgcmV2ZWFscyBhYm91dCB0aGUgYmVoYXZpb3Igb2YgdGhlIEFRTSBzeXN0ZW0gYXMgYSB3aG9sZS4gS25vd2luZyB0aGUgY29udGV4dCBhcm91bmQgdGhpcyBmdW5jdGlvbiB3aWxsIGFsc28gYmUgdml0YWw7IGhvdyBhcmUgdGhlIHF1ZXVlcyBzdHJ1Y3R1cmVkLCB3aGF0IG90aGVyIGZhY3RvcnMgaW5mbHVlbmNlIHBhY2tldCBzY2hlZHVsaW5nLCBhbmQgd2hhdCBhcmUgdGhlIGltcGxpY2F0aW9ucyBmb3IgcGVyLXN0YXRpb24gZmFpcm5lc3MgYW5kIG92ZXJhbGwgdGhyb3VnaHB1dD8gSSYjMzk7bGwgcHJvYmFibHkgYWxzbyBuZWVkIHRvIGtlZXAgYW4gZXllIG9uIHJlbGF0ZWQgZnVuY3Rpb25zIGxpa2UgdGhvc2UgaGFuZGxpbmcgcmF0ZSBjb250cm9sIGFuZCBmcmFtZSBhZ2dyZWdhdGlvbiBhcyB0aGV5JiMzOTtyZSBhbGwgaW50ZXItcmVsYXRlZC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCYjMzk7cyBjYXVzaW5nIHRoZSBwcm9ibGVtLCBhbmQgdGhpcyBzZWVtcyBsaWtlIHRoZSBsaWtlbHkgcGxhY2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMTg6MDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvdHguYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDQyMTUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7NDIxNTpcdH1cbjQyMTY6XHRFWFBPUlRfU1lNQk9MKF9faWVlZTgwMjExX3NjaGVkdWxlX3R4cSk7XG40MjE3Olx0XG40MjE4Olx0REVGSU5FX1NUQVRJQ19LRVlfRkFMU0UoYXFsX2Rpc2FibGUpO1xuNDIxOTpcdFxuNDIyMDpcdHN0YXRpYyB1MzIgaWVlZTgwMjExX2FxbF9zdGFfbGltaXQoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXG40MjIxOlx0XHRcdFx0XHQgICBzdHJ1Y3Qgc3RhX2luZm8gKnN0YSwgdTMyIGxpbWl0KVxuNDIyMjpcdHtcbjQyMjM6XHRcdHUzMiBzY2FsZWQ7XG40MjI0Olx0XG40MjI1Olx0XHRpZiAoIWllZWU4MDIxMV9od19jaGVjayhcdTAwMjZsb2NhbC1cdTAwM2VodywgVFhfTk9fUFVTSEJBQ0spIHx8XG40MjI2Olx0XHQgICAgc3RhLVx1MDAzZWFpcnRpbWVfd2VpZ2h0ID09IElFRUU4MDIxMV9ERUZBVUxUX0FJUlRJTUVfV0VJR0hUKVxuNDIyNzpcdFx0XHRyZXR1cm4gbGltaXQ7XG40MjI4Olx0XG40MjI5Olx0XHRzY2FsZWQgPSBtdWx0X2ZyYWMobGltaXQsIHN0YS1cdTAwM2VhaXJ0aW1lX3dlaWdodCxcbjQyMzA6XHRcdFx0XHQgICBJRUVFODAyMTFfREVGQVVMVF9BSVJUSU1FX1dFSUdIVCk7XG40MjMxOlx0XG40MjMyOlx0XHRyZXR1cm4gbWluKHNjYWxlZCwgbWF4KGxpbWl0LCBsb2NhbC1cdTAwM2VhcWxfdGhyZXNob2xkKSk7XG40MjMzOlx0fVxuNDIzNDpcdFxuNDIzNTpcdGJvb2wgaWVlZTgwMjExX3R4cV9haXJ0aW1lX2NoZWNrKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuNDIzNjpcdFx0XHRcdFx0IHN0cnVjdCBpZWVlODAyMTFfdHhxICp0eHEpXG40MjM3Olx0e1xuNDIzODpcdFx0c3RydWN0IHN0YV9pbmZvICpzdGE7XG40MjM5Olx0XHRzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCA9IGh3X3RvX2xvY2FsKGh3KTtcbjQyNDA6XHRcbjQyNDE6XHRcdGlmICghd2lwaHlfZXh0X2ZlYXR1cmVfaXNzZXQobG9jYWwtXHUwMDNlaHcud2lwaHksIE5MODAyMTFfRVhUX0ZFQVRVUkVfQVFMKSlcbjQyNDI6XHRcdFx0cmV0dXJuIHRydWU7XG40MjQzOlx0XG40MjQ0Olx0XHRpZiAoc3RhdGljX2JyYW5jaF91bmxpa2VseShcdTAwMjZhcWxfZGlzYWJsZSkpXG40MjQ1Olx0XHRcdHJldHVybiB0cnVlO1xuNDI0NjpcdFxuNDI0NzpcdFx0aWYgKCF0eHEtXHUwMDNlc3RhKVxuNDI0ODpcdFx0XHRyZXR1cm4gYXRvbWljX3JlYWQoXHUwMDI2bG9jYWwtXHUwMDNlYXFsX21jX3BlbmRpbmdfYWlydGltZSkgXHUwMDNjXG40MjQ5Olx0XHRcdCAgICAgICBsb2NhbC1cdTAwM2VhcWxfdHhxX2xpbWl0X21jO1xuNDI1MDpcdFxuNDI1MTpcdFx0aWYgKHVubGlrZWx5KHR4cS1cdTAwM2V0aWQgPT0gSUVFRTgwMjExX05VTV9USURTKSlcbjQyNTI6XHRcdFx0cmV0dXJuIHRydWU7XG40MjUzOlx0XG40MjU0Olx0XHRzdGEgPSBjb250YWluZXJfb2YodHhxLVx1MDAzZXN0YSwgc3RydWN0IHN0YV9pbmZvLCBzdGEpO1xuNDI1NTpcdFx0aWYgKGF0b21pY19yZWFkKFx1MDAyNnN0YS1cdTAwM2VhaXJ0aW1lW3R4cS1cdTAwM2VhY10uYXFsX3R4X3BlbmRpbmcpIFx1MDAzY1xuNDI1NjpcdFx0ICAgIGllZWU4MDIxMV9hcWxfc3RhX2xpbWl0KGxvY2FsLCBzdGEsXG40MjU3Olx0XHRcdFx0XHQgICAgc3RhLVx1MDAzZWFpcnRpbWVbdHhxLVx1MDAzZWFjXS5hcWxfbGltaXRfbG93KSlcbjQyNTg6XHRcdFx0cmV0dXJuIHRydWU7XG40MjU5Olx0XG40MjYwOlx0XHRpZiAoYXRvbWljX3JlYWQoXHUwMDI2bG9jYWwtXHUwMDNlYXFsX3RvdGFsX3BlbmRpbmdfYWlydGltZSkgXHUwMDNjXG40MjYxOlx0XHQgICAgbG9jYWwtXHUwMDNlYXFsX3RocmVzaG9sZCBcdTAwMjZcdTAwMjZcbjQyNjI6XHRcdCAgICBhdG9taWNfcmVhZChcdTAwMjZzdGEtXHUwMDNlYWlydGltZVt0eHEtXHUwMDNlYWNdLmFxbF90eF9wZW5kaW5nKSBcdTAwM2NcbjQyNjM6XHRcdCAgICBpZWVlODAyMTFfYXFsX3N0YV9saW1pdChsb2NhbCwgc3RhLFxuNDI2NDpcdFx0XHRcdFx0ICAgIHN0YS1cdTAwM2VhaXJ0aW1lW3R4cS1cdTAwM2VhY10uYXFsX2xpbWl0X2hpZ2gpKVxuNDI2NTpcdFx0XHRyZXR1cm4gdHJ1ZTtcbjQyNjY6XHRcbjQyNjc6XHRcdHJldHVybiBmYWxzZTtcbjQyNjg6XHR9XG40MjY5Olx0RVhQT1JUX1NZTUJPTChpZWVlODAyMTFfdHhxX2FpcnRpbWVfY2hlY2spO1xuNDI3MDpcdFxuNDI3MTpcdHUzMiBpZWVlODAyMTFfdHhxX2FxbF9wZW5kaW5nKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuNDI3MjpcdFx0XHRcdCAgICAgIHN0cnVjdCBpZWVlODAyMTFfdHhxICp0eHEpXG40MjczOlx0e1xuNDI3NDpcdFx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBod190b19sb2NhbChodyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMTg6MDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzA2MQoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDYxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludmVzdGlnYXRpbmcgTUFDODAyMTEgQ29uZmlndXJhdGlvbiBhbmQgRHJpdmVyIERlcGVuZGVuY2llcyoqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbi4gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiBob3cgYG1hYzgwMjExYCBpcyBjb25maWd1cmVkIGFuZCB3aGljaCBkcml2ZXJzIGFyZSBhY3R1YWxseSB1c2luZyBpdC4gTXkgZmlyc3Qgc3RvcCBzaG91bGQgYmUgdG8gZXhhbWluZSB0aGUgY29uZmlndXJhdGlvbiBmaWxlcy4gTGV0JiMzOTtzIHN0YXJ0IHdpdGggYG5ldC9tYWM4MDIxMS9LY29uZmlnYC4gVGhpcyBzaG91bGQgZ2l2ZSBtZSBhIGhpZ2gtbGV2ZWwgdmlldyBvZiB0aGUgY29uZmlndXJhYmxlIG9wdGlvbnMgd2l0aGluIHRoZSBgbWFjODAyMTFgIGNvcmUuIFRoZW4sIHNpbmNlIEkga25vdyBhdGgxMWsgaXMgYSBtYWpvciB3aXJlbGVzcyBkcml2ZXIgdGhhdCByZWxpZXMgb24gdGhpcyBzdWJzeXN0ZW0sIEkgc2hvdWxkIGFsc28gbG9vayBhdCB0aGUgYXRoMTFrJiMzOTtzIEtjb25maWcgZmlsZSAoYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZ2ApLiBDb21wYXJpbmcgdGhlc2UgdHdvIHdpbGwgaWxsdW1pbmF0ZSBob3cgZGVwZW5kZW5jaWVzIGFyZSBoYW5kbGVkIGFuZCBob3cgdGhlIHNwZWNpZmljIGRyaXZlciBpbnRlcmFjdHMgd2l0aCB0aGUgbW9yZSBnZW5lcmFsIG1hYzgwMjExIGZyYW1ld29yay4gVGhpcyBzaG91bGQgcHJvdmlkZSBzb21lIHVzZWZ1bCBpbmZvcm1hdGlvbiByZWdhcmRpbmcgb3ZlcmFsbCBzeXN0ZW0gYmVoYXZpb3IuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMTg6MDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE1BQzgwMjExJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyOmNvbmZpZyBNQUM4MDIxMVxubmV0L21hYzgwMjExL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O0dlbmVyaWMgSUVFRSA4MDIuMTEgTmV0d29ya2luZyBTdGFjayAobWFjODAyMTEpXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWc9MTk9aWYgTUFDODAyMTEgIT0gblxubmV0L21hYzgwMjExL0tjb25maWctMjAtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMTpjb25maWcgTUFDODAyMTFfSEFTX1JDXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMi1cdGJvb2xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIzLVxubmV0L21hYzgwMjExL0tjb25maWc6MjQ6Y29uZmlnIE1BQzgwMjExX1JDX01JTlNUUkVMXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNS1cdGJvb2wgXCYjMzQ7TWluc3RyZWxcJiMzNDsgaWYgRVhQRVJUXG4tLVxubmV0L21hYzgwMjExL0tjb25maWc9MzE9Y2hvaWNlXG4tLVxubmV0L21hYzgwMjExL0tjb25maWctNDAtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo0MTpjb25maWcgTUFDODAyMTFfUkNfREVGQVVMVF9NSU5TVFJFTFxubmV0L21hYzgwMjExL0tjb25maWctNDItXHRib29sIFwmIzM0O01pbnN0cmVsXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWc9NDg9ZW5kY2hvaWNlXG5uZXQvbWFjODAyMTEvS2NvbmZpZy00OS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjUwOmNvbmZpZyBNQUM4MDIxMV9SQ19ERUZBVUxUXG5uZXQvbWFjODAyMTEvS2NvbmZpZy01MS1cdHN0cmluZ1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnPTU3PWNvbW1lbnQgXCYjMzQ7U29tZSB3aXJlbGVzcyBkcml2ZXJzIHJlcXVpcmUgYSByYXRlIGNvbnRyb2wgYWxnb3JpdGhtXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctNTktXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo2MDpjb25maWcgTUFDODAyMTFfS1VOSVRfVEVTVFxubmV0L21hYzgwMjExL0tjb25maWctNjEtXHR0cmlzdGF0ZSBcJiMzNDtLVW5pdCB0ZXN0cyBmb3IgbWFjODAyMTFcJiMzNDsgaWYgIUtVTklUX0FMTF9URVNUU1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTY5LVxubmV0L21hYzgwMjExL0tjb25maWc6NzA6Y29uZmlnIE1BQzgwMjExX01FU0hcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTcxLVx0Ym9vbCBcJiMzNDtFbmFibGUgbWFjODAyMTEgbWVzaCBuZXR3b3JraW5nIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy03OC1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjc5OmNvbmZpZyBNQUM4MDIxMV9MRURTXG5uZXQvbWFjODAyMTEvS2NvbmZpZy04MC1cdGJvb2wgXCYjMzQ7RW5hYmxlIExFRCB0cmlnZ2Vyc1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTg3LVxubmV0L21hYzgwMjExL0tjb25maWc6ODg6Y29uZmlnIE1BQzgwMjExX0RFQlVHRlNcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTg5LVx0Ym9vbCBcJiMzNDtFeHBvcnQgbWFjODAyMTEgaW50ZXJuYWxzIGluIERlYnVnRlNcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy05Ni1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjk3OmNvbmZpZyBNQUM4MDIxMV9NRVNTQUdFX1RSQUNJTkdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTk4LVx0Ym9vbCBcJiMzNDtUcmFjZSBhbGwgbWFjODAyMTEgZGVidWcgbWVzc2FnZXNcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMDktXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxMTA6bWVudWNvbmZpZyBNQUM4MDIxMV9ERUJVR19NRU5VXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMTEtXHRib29sIFwmIzM0O1NlbGVjdCBtYWM4MDIxMSBkZWJ1Z2dpbmcgZmVhdHVyZXNcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMTUtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxMTY6Y29uZmlnIE1BQzgwMjExX05PSU5MSU5FXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMTctXHRib29sIFwmIzM0O0RvIG5vdCBpbmxpbmUgVFgvUlggaGFuZGxlcnNcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMzEtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxMzI6Y29uZmlnIE1BQzgwMjExX1ZFUkJPU0VfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTEzMy1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBkZWJ1Z2dpbmcgb3V0cHV0XCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMTQyLVxubmV0L21hYzgwMjExL0tjb25maWc6MTQzOmNvbmZpZyBNQUM4MDIxMV9NTE1FX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNDQtXHRib29sIFwmIzM0O1ZlcmJvc2UgbWFuYWdlZCBNTE1FIG91dHB1dFwmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE1My1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE1NDpjb25maWcgTUFDODAyMTFfU1RBX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNTUtXHRib29sIFwmIzM0O1ZlcmJvc2Ugc3RhdGlvbiBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNjItXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxNjM6Y29uZmlnIE1BQzgwMjExX0hUX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNjQtXHRib29sIFwmIzM0O1ZlcmJvc2UgSFQgZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMTc0LVxubmV0L21hYzgwMjExL0tjb25maWc6MTc1OmNvbmZpZyBNQUM4MDIxMV9PQ0JfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE3Ni1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBPQ0IgZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMTg1LVxubmV0L21hYzgwMjExL0tjb25maWc6MTg2OmNvbmZpZyBNQUM4MDIxMV9JQlNTX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xODctXHRib29sIFwmIzM0O1ZlcmJvc2UgSUJTUyBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xOTYtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxOTc6Y29uZmlnIE1BQzgwMjExX1BTX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xOTgtXHRib29sIFwmIzM0O1ZlcmJvc2UgcG93ZXJzYXZlIG1vZGUgZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMjA4LVxubmV0L21hYzgwMjExL0tjb25maWc6MjA5OmNvbmZpZyBNQUM4MDIxMV9NUExfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIxMC1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBtZXNoIHBlZXIgbGluayBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMjEtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMjI6Y29uZmlnIE1BQzgwMjExX01QQVRIX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMjMtXHRib29sIFwmIzM0O1ZlcmJvc2UgbWVzaCBwYXRoIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIzNC1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIzNTpjb25maWcgTUFDODAyMTFfTUhXTVBfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIzNi1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBtZXNoIEhXTVAgcm91dGluZyBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNDctXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNDg6Y29uZmlnIE1BQzgwMjExX01FU0hfU1lOQ19ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMjQ5LVx0Ym9vbCBcJiMzNDtWZXJib3NlIG1lc2ggc3luY2hyb25pemF0aW9uIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI1OC1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI1OTpjb25maWcgTUFDODAyMTFfTUVTSF9DU0FfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI2MC1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBtZXNoIGNoYW5uZWwgc3dpdGNoIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI2OS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI3MDpjb25maWcgTUFDODAyMTFfTUVTSF9QU19ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMjcxLVx0Ym9vbCBcJiMzNDtWZXJib3NlIG1lc2ggcG93ZXJzYXZlIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI4MC1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI4MTpjb25maWcgTUFDODAyMTFfVERMU19ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMjgyLVx0Ym9vbCBcJiMzNDtWZXJib3NlIFRETFMgZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMjkyLVxubmV0L21hYzgwMjExL0tjb25maWc6MjkzOmNvbmZpZyBNQUM4MDIxMV9ERUJVR19DT1VOVEVSU1xubmV0L21hYzgwMjExL0tjb25maWctMjk0LVx0Ym9vbCBcJiMzNDtFeHRyYSBzdGF0aXN0aWNzIGZvciBUWC9SWCBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0zMDctXG5uZXQvbWFjODAyMTEvS2NvbmZpZzozMDg6Y29uZmlnIE1BQzgwMjExX1NUQV9IQVNIX01BWF9TSVpFXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0zMDktXHRpbnQgXCYjMzQ7U3RhdGlvbiBoYXNoIHRhYmxlIG1heGltdW0gc2l6ZVwmIzM0OyBpZiBNQUM4MDIxMV9ERUJVR19NRU5VXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMTg6MDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTUzMgoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDIxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKktlcm5lbCBDb25maWd1cmF0aW9uIENvbnRleHQgU2hpZnQ6IGF0aDExayBLY29uZmlnKioKCkFscmlnaHQsIHNvIHdlJiMzOTtyZSBkaXZpbmcgYmFjayBpbnRvIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiwgc3BlY2lmaWNhbGx5IHRoZSBhdGgxMWsgd2lyZWxlc3MgZHJpdmVyLiBJIG5lZWQgdG8gbWFrZSBhYnNvbHV0ZWx5IHN1cmUgd2UmIzM5O3ZlIGNvbnNpZGVyZWQgdGhlIHJlbGV2YW50IEtjb25maWcgb3B0aW9ucy4gSXQmIzM5O3MgdG9vIGVhc3kgdG8gb3Zlcmxvb2sgc29tZXRoaW5nLCBlc3BlY2lhbGx5IGluIGEgc3ByYXdsaW5nIHByb2plY3QgbGlrZSB0aGUga2VybmVsLiBTbywgSSBuZWVkIHRvIGdvIG92ZXIgdGhlIGRyaXZlciYjMzk7cyBLY29uZmlnIGZpbGUsIHdoaWNoIGlzIGxvY2F0ZWQgaW4gZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLiBJdCBpcyBpbXBvcnRhbnQgdG8gZnVsbHkgdW5kZXJzdGFuZCB0aGUgZmVhdHVyZXMgdGhhdCBoYXZlIGJlZW4gZW5hYmxlZCBhbmQgZGlzYWJsZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDE4OjA5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0FUSDExSyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDkzMTAgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhclxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnOjI6Y29uZmlnIEFUSDExS1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtRdWFsY29tbSA4MDIuMTFheCBjaGlwc2V0IHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWctMTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWc6MTM6Y29uZmlnIEFUSDExS19BSEJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZy0xNC1cdHRyaXN0YXRlIFwmIzM0O0F0aGVyb3MgYXRoMTFrIEFIQiBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWc6MTU6XHRkZXBlbmRzIG9uIEFUSDExS1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTE2LVx0ZGVwZW5kcyBvbiBSRU1PVEVQUk9DXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTE5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnOjIwOmNvbmZpZyBBVEgxMUtfUENJXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWctMjEtXHR0cmlzdGF0ZSBcJiMzNDtBdGhlcm9zIGF0aDExayBQQ0kgc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnOjIyOlx0ZGVwZW5kcyBvbiBBVEgxMUsgXHUwMDI2XHUwMDI2IFBDSVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTIzLVx0c2VsZWN0IE1ISV9CVVNcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWctMjktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWc6MzA6Y29uZmlnIEFUSDExS19ERUJVR1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTMxLVx0Ym9vbCBcJiMzNDtRQ0EgYXRoMTFrIGRlYnVnZ2luZ1wmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnOjMyOlx0ZGVwZW5kcyBvbiBBVEgxMUtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZy0zMy1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWctMzctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWc6Mzg6Y29uZmlnIEFUSDExS19ERUJVR0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWctMzktXHRib29sIFwmIzM0O1FDQSBhdGgxMWsgZGVidWdmcyBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWc6NDA6XHRkZXBlbmRzIG9uIEFUSDExSyBcdTAwMjZcdTAwMjYgREVCVUdfRlMgXHUwMDI2XHUwMDI2IE1BQzgwMjExX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZy00MS1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWctNDUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWc6NDY6Y29uZmlnIEFUSDExS19UUkFDSU5HXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWctNDctXHRib29sIFwmIzM0O2F0aDExayB0cmFjaW5nIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZzo0ODpcdGRlcGVuZHMgb24gQVRIMTFLIFx1MDAyNlx1MDAyNiBFVkVOVF9UUkFDSU5HXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWctNDktXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTUxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnOjUyOmNvbmZpZyBBVEgxMUtfU1BFQ1RSQUxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZy01My1cdGJvb2wgXCYjMzQ7UUNBIGF0aDExayBzcGVjdHJhbCBzY2FuIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZzo1NDpcdGRlcGVuZHMgb24gQVRIMTFLX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZy01NS1cdGRlcGVuZHMgb24gUkVMQVlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWctNjAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWc6NjE6Y29uZmlnIEFUSDExS19DRlJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZy02Mi1cdGJvb2wgXCYjMzQ7YXRoMTFrIGNoYW5uZWwgZnJlcXVlbmN5IHJlc3BvbnNlIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZzo2MzpcdGRlcGVuZHMgb24gQVRIMTFLX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZy02NC1cdGRlcGVuZHMgb24gUkVMQVlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL01ha2VmaWxlLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL01ha2VmaWxlOjI6b2JqLSQoQ09ORklHX0FUSDExSykgJiM0Mzs9IGF0aDExay5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL01ha2VmaWxlLTMtYXRoMTFrLXkgJiM0Mzs9IGNvcmUubyBcXFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvTWFrZWZpbGUtMjMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL01ha2VmaWxlOjI0OmF0aDExay0kKENPTkZJR19BVEgxMUtfREVCVUdGUykgJiM0Mzs9IGRlYnVnZnMubyBkZWJ1Z2ZzX2h0dF9zdGF0cy5vIGRlYnVnZnNfc3RhLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvTWFrZWZpbGUtMjUtYXRoMTFrLSQoQ09ORklHX05MODAyMTFfVEVTVE1PREUpICYjNDM7PSB0ZXN0bW9kZS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL01ha2VmaWxlOjI2OmF0aDExay0kKENPTkZJR19BVEgxMUtfVFJBQ0lORykgJiM0Mzs9IHRyYWNlLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvTWFrZWZpbGUtMjctYXRoMTFrLSQoQ09ORklHX1RIRVJNQUwpICYjNDM7PSB0aGVybWFsLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvTWFrZWZpbGU6Mjg6YXRoMTFrLSQoQ09ORklHX0FUSDExS19TUEVDVFJBTCkgJiM0Mzs9IHNwZWN0cmFsLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvTWFrZWZpbGUtMjktYXRoMTFrLSQoQ09ORklHX1BNKSAmIzQzOz0gd293Lm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvTWFrZWZpbGU9MzA9YXRoMTFrLSQoQ09ORklHX0RFVl9DT1JFRFVNUCkgJiM0Mzs9IGNvcmVkdW1wLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvTWFrZWZpbGU6MzE6YXRoMTFrLSQoQ09ORklHX0FUSDExS19DRlIpICYjNDM7PSBjZnIub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9NYWtlZmlsZS0zMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvTWFrZWZpbGU6MzM6b2JqLSQoQ09ORklHX0FUSDExS19BSEIpICYjNDM7PSBhdGgxMWtfYWhiLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvTWFrZWZpbGUtMzQtYXRoMTFrX2FoYi15ICYjNDM7PSBhaGIub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9NYWtlZmlsZS0zNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvTWFrZWZpbGU6MzY6b2JqLSQoQ09ORklHX0FUSDExS19QQ0kpICYjNDM7PSBhdGgxMWtfcGNpLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvTWFrZWZpbGUtMzctYXRoMTFrX3BjaS15ICYjNDM7PSBtaGkubyBwY2kub1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM9MjQ9c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgYXRoMTFrX2FoYl9vZl9tYXRjaFtdID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMjgtXHR7IC5jb21wYXRpYmxlID0gXCYjMzQ7cWNvbSxpcHE4MDc0LXdpZmlcJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjI5Olx0ICAuZGF0YSA9ICh2b2lkICopQVRIMTFLX0hXX0lQUTgwNzQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTMwLVx0fSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMzEtXHR7IC5jb21wYXRpYmxlID0gXCYjMzQ7cWNvbSxpcHE2MDE4LXdpZmlcJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjMyOlx0ICAuZGF0YSA9ICh2b2lkICopQVRIMTFLX0hXX0lQUTYwMThfSFcxMCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMzMtXHR9LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0zNC1cdHsgLmNvbXBhdGlibGUgPSBcJiMzNDtxY29tLHdjbjY3NTAtd2lmaVwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6MzU6XHQgIC5kYXRhID0gKHZvaWQgKilBVEgxMUtfSFdfV0NONjc1MF9IVzEwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0zNi1cdH0sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTM3LVx0eyAuY29tcGF0aWJsZSA9IFwmIzM0O3Fjb20saXBxNTAxOC13aWZpXCYjMzQ7LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzozODpcdCAgLmRhdGEgPSAodm9pZCAqKUFUSDExS19IV19JUFE1MDE4X0hXMTAsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTM5LVx0fSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jPTQzPU1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIGF0aDExa19haGJfb2ZfbWF0Y2gpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy00NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6NDU6I2RlZmluZSBBVEgxMUtfSVJRX0NFMF9PRkZTRVQgNFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy00Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6NDc6c3RhdGljIGNvbnN0IGNoYXIgKmlycV9uYW1lW0FUSDExS19JUlFfTlVNX01BWF0gPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTQ4LVx0XCYjMzQ7bWlzYy1wdWxzZTFcJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYz0xNTE9YXRoMTFrX2FoYl9nZXRfd2luZG93X3N0YXJ0X3djbjY3NTAoc3RydWN0IGF0aDExa19iYXNlICphYiwgdTMyIG9mZnNldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTE1NS1cdC8qIElmIG9mZnNldCBsaWVzIHdpdGhpbiBEUCByZWdpc3RlciByYW5nZSwgdXNlIDFzdCB3aW5kb3cgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6MTU2Olx0aWYgKChvZmZzZXQgXiBIQUxfU0VRX1dDU1NfVU1BQ19PRkZTRVQpIFx1MDAzYyBBVEgxMUtfUENJX1dJTkRPV19SQU5HRV9NQVNLKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzoxNTc6XHRcdHdpbmRvd19zdGFydCA9IEFUSDExS19QQ0lfV0lORE9XX1NUQVJUO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0xNTgtXHQvKiBJZiBvZmZzZXQgbGllcyB3aXRoaW4gQ0UgcmVnaXN0ZXIgcmFuZ2UsIHVzZSAybmQgd2luZG93ICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTE1OS1cdGVsc2UgaWYgKChvZmZzZXQgXiBIQUxfU0VRX1dDU1NfVU1BQ19DRTBfU1JDX1JFRyhhYikpIFx1MDAzY1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzoxNjA6XHRcdCBBVEgxMUtfUENJX1dJTkRPV19SQU5HRV9NQVNLKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzoxNjE6XHRcdHdpbmRvd19zdGFydCA9IDIgKiBBVEgxMUtfUENJX1dJTkRPV19TVEFSVDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMTYyLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM9MTY3PWF0aDExa19haGJfd2luZG93X3dyaXRlMzJfd2NuNjc1MChzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiLCB1MzIgb2Zmc2V0LCB1MzIgdmFsdWUpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0xNzQtXHRpb3dyaXRlMzIodmFsdWUsIGFiLVx1MDAzZW1lbSAmIzQzOyB3aW5kb3dfc3RhcnQgJiM0MztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6MTc1Olx0XHQgIChvZmZzZXQgXHUwMDI2IEFUSDExS19QQ0lfV0lORE9XX1JBTkdFX01BU0spKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMTc2LX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jPTE3OD1zdGF0aWMgdTMyIGF0aDExa19haGJfd2luZG93X3JlYWQzMl93Y242NzUwKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIsIHUzMiBvZmZzZXQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0xODYtXHR2YWwgPSBpb3JlYWQzMihhYi1cdTAwM2VtZW0gJiM0Mzsgd2luZG93X3N0YXJ0ICYjNDM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjE4NzpcdFx0ICAgICAgIChvZmZzZXQgXHUwMDI2IEFUSDExS19QQ0lfV0lORE9XX1JBTkdFX01BU0spKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMTg4LVx0cmV0dXJuIHZhbDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jPTIzMT1zdGF0aWMgdm9pZCBfX2F0aDExa19haGJfZXh0X2lycV9kaXNhYmxlKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0yMzQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjIzNTpcdGZvciAoaSA9IDA7IGkgXHUwMDNjIEFUSDExS19FWFRfSVJRX0dSUF9OVU1fTUFYOyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0yMzYtXHRcdHN0cnVjdCBhdGgxMWtfZXh0X2lycV9ncnAgKmlycV9ncnAgPSBcdTAwMjZhYi1cdTAwM2VleHRfaXJxX2dycFtpXTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jPTI3Mj1zdGF0aWMgdm9pZCBhdGgxMWtfYWhiX2NlX2lycV9lbmFibGUoc3RydWN0IGF0aDExa19iYXNlICphYiwgdTE2IGNlX2lkKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMjc3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzoyNzg6XHRpZTFfcmVnX2FkZHIgPSBjZV9pZV9hZGRyLVx1MDAzZWllMV9yZWdfYWRkciAmIzQzOyBBVEgxMUtfQ0VfT0ZGU0VUKGFiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6Mjc5Olx0aWUyX3JlZ19hZGRyID0gY2VfaWVfYWRkci1cdTAwM2VpZTJfcmVnX2FkZHIgJiM0MzsgQVRIMTFLX0NFX09GRlNFVChhYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjI4MDpcdGllM19yZWdfYWRkciA9IGNlX2llX2FkZHItXHUwMDNlaWUzX3JlZ19hZGRyICYjNDM7IEFUSDExS19DRV9PRkZTRVQoYWIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0yODEtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYz0yOTM9c3RhdGljIHZvaWQgYXRoMTFrX2FoYl9jZV9pcnFfZGlzYWJsZShzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiLCB1MTYgY2VfaWQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0yOTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjI5OTpcdGllMV9yZWdfYWRkciA9IGNlX2llX2FkZHItXHUwMDNlaWUxX3JlZ19hZGRyICYjNDM7IEFUSDExS19DRV9PRkZTRVQoYWIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzozMDA6XHRpZTJfcmVnX2FkZHIgPSBjZV9pZV9hZGRyLVx1MDAzZWllMl9yZWdfYWRkciAmIzQzOyBBVEgxMUtfQ0VfT0ZGU0VUKGFiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6MzAxOlx0aWUzX3JlZ19hZGRyID0gY2VfaWVfYWRkci1cdTAwM2VpZTNfcmVnX2FkZHIgJiM0MzsgQVRIMTFLX0NFX09GRlNFVChhYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTMwMi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jPTMxND1zdGF0aWMgdm9pZCBhdGgxMWtfYWhiX3N5bmNfY2VfaXJxcyhzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMzIyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzozMjM6XHRcdGlycV9pZHggPSBBVEgxMUtfSVJRX0NFMF9PRkZTRVQgJiM0MzsgaTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMzI0LVx0XHRzeW5jaHJvbml6ZV9pcnEoYWItXHUwMDNlaXJxX251bVtpcnFfaWR4XSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYz0zMjg9c3RhdGljIHZvaWQgYXRoMTFrX2FoYl9zeW5jX2V4dF9pcnFzKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0zMzItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjMzMzpcdGZvciAoaSA9IDA7IGkgXHUwMDNjIEFUSDExS19FWFRfSVJRX0dSUF9OVU1fTUFYOyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0zMzQtXHRcdHN0cnVjdCBhdGgxMWtfZXh0X2lycV9ncnAgKmlycV9ncnAgPSBcdTAwMjZhYi1cdTAwM2VleHRfaXJxX2dycFtpXTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jPTM3Mz1zdGF0aWMgdm9pZCBhdGgxMWtfYWhiX2V4dF9pcnFfZW5hYmxlKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0zNzYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjM3NzpcdGZvciAoaSA9IDA7IGkgXHUwMDNjIEFUSDExS19FWFRfSVJRX0dSUF9OVU1fTUFYOyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0zNzgtXHRcdHN0cnVjdCBhdGgxMWtfZXh0X2lycV9ncnAgKmlycV9ncnAgPSBcdTAwMjZhYi1cdTAwM2VleHRfaXJxX2dycFtpXTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jPTM5ND1zdGF0aWMgdm9pZCBhdGgxMWtfYWhiX3N0b3Aoc3RydWN0IGF0aDExa19iYXNlICphYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMzk1LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6Mzk2Olx0aWYgKCF0ZXN0X2JpdChBVEgxMUtfRkxBR19DUkFTSF9GTFVTSCwgXHUwMDI2YWItXHUwMDNlZGV2X2ZsYWdzKSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMzk3LVx0XHRhdGgxMWtfYWhiX2NlX2lycXNfZGlzYWJsZShhYik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYz00NDY9c3RhdGljIHZvaWQgYXRoMTFrX2FoYl9mcmVlX2V4dF9pcnEoc3RydWN0IGF0aDExa19iYXNlICphYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTQ0OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6NDUwOlx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVRIMTFLX0VYVF9JUlFfR1JQX05VTV9NQVg7IGkmIzQzOyYjNDM7KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy00NTEtXHRcdGF0aDExa19haGJfZnJlZV9leHRfaXJxX2dycChhYiwgXHUwMDI2YWItXHUwMDNlZXh0X2lycV9ncnBbaV0pO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM9NDU0PXN0YXRpYyB2b2lkIGF0aDExa19haGJfZnJlZV9jZV9pcnFzKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIsIGludCBtYXhfaWR4KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtNDYwLVx0XHRcdGNvbnRpbnVlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo0NjE6XHRcdGlycV9pZHggPSBBVEgxMUtfSVJRX0NFMF9PRkZTRVQgJiM0MzsgaTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtNDYyLVx0XHRmcmVlX2lycShhYi1cdTAwM2VpcnFfbnVtW2lycV9pZHhdLCBcdTAwMjZhYi1cdTAwM2VjZS5jZV9waXBlW2ldKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jPTUzMj1zdGF0aWMgaW50IGF0aDExa19haGJfY29uZmlnX2V4dF9pcnEoc3RydWN0IGF0aDExa19iYXNlICphYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTUzOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6NTQwOlx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVRIMTFLX0VYVF9JUlFfR1JQX05VTV9NQVg7IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTU0MS1cdFx0dTMyIG51bV9pcnEgPSAwO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtNTU3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo1NTg6XHRcdGZvciAoaiA9IDA7IGogXHUwMDNjIEFUSDExS19FWFRfSVJRX05VTV9NQVg7IGomIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTU1OS1cdFx0XHRpZiAoYWItXHUwMDNlaHdfcGFyYW1zLnJpbmdfbWFzay1cdTAwM2V0eFtpXSBcdTAwMjYgQklUKGopKSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYz02MzM9c3RhdGljIGludCBhdGgxMWtfYWhiX2NvbmZpZ19pcnEoc3RydWN0IGF0aDExa19iYXNlICphYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTY0Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6NjQ4Olx0XHRpcnFfaWR4ID0gQVRIMTFLX0lSUV9DRTBfT0ZGU0VUICYjNDM7IGk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTY0OS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jPTcxOD1zdGF0aWMgaW50IGF0aDExa19haGJfaGlmX3N1c3BlbmQoc3RydWN0IGF0aDExa19iYXNlICphYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTcyNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6NzI4Olx0d2FrZV9pcnEgPSBhYi1cdTAwM2VpcnFfbnVtW0FUSDExS19QQ0lfSVJRX0NFMF9PRkZTRVQgJiM0MzsgQVRIMTFLX1BDSV9DRV9XQUtFX0lSUV07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTcyOS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTczNi1cdHZhbHVlID0gdTMyX2VuY29kZV9iaXRzKGFiX2FoYi1cdTAwM2VzbXAycF9pbmZvLnNlcV9ubyYjNDM7JiM0MzssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjczNzpcdFx0XHRcdEFUSDExS19BSEJfU01QMlBfU01FTV9TRVFfTk8pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo3Mzg6XHR2YWx1ZSB8PSB1MzJfZW5jb2RlX2JpdHMoQVRIMTFLX0FIQl9QT1dFUl9TQVZFX0VOVEVSLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo3Mzk6XHRcdFx0XHQgQVRIMTFLX0FIQl9TTVAyUF9TTUVNX01TRyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTc0MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtNzQxLVx0cmV0ID0gcWNvbV9zbWVtX3N0YXRlX3VwZGF0ZV9iaXRzKGFiX2FoYi1cdTAwM2VzbXAycF9pbmZvLnNtZW1fc3RhdGUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjc0MjpcdFx0XHRcdFx0ICBBVEgxMUtfQUhCX1NNUDJQX1NNRU1fVkFMVUVfTUFTSywgdmFsdWUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy03NDMtXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy03NDctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjc0ODpcdGF0aDExa19kYmcoYWIsIEFUSDExS19EQkdfQUhCLCBcJiMzNDtkZXZpY2Ugc3VzcGVuZGVkXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtNzQ5LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM9NzUzPXN0YXRpYyBpbnQgYXRoMTFrX2FoYl9oaWZfcmVzdW1lKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy03NjItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjc2MzpcdHdha2VfaXJxID0gYWItXHUwMDNlaXJxX251bVtBVEgxMUtfUENJX0lSUV9DRTBfT0ZGU0VUICYjNDM7IEFUSDExS19QQ0lfQ0VfV0FLRV9JUlFdO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy03NjQtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy03NzMtXHR2YWx1ZSA9IHUzMl9lbmNvZGVfYml0cyhhYl9haGItXHUwMDNlc21wMnBfaW5mby5zZXFfbm8mIzQzOyYjNDM7LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo3NzQ6XHRcdFx0XHRBVEgxMUtfQUhCX1NNUDJQX1NNRU1fU0VRX05PKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6Nzc1Olx0dmFsdWUgfD0gdTMyX2VuY29kZV9iaXRzKEFUSDExS19BSEJfUE9XRVJfU0FWRV9FWElULFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo3NzY6XHRcdFx0XHQgQVRIMTFLX0FIQl9TTVAyUF9TTUVNX01TRyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTc3Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtNzc4LVx0cmV0ID0gcWNvbV9zbWVtX3N0YXRlX3VwZGF0ZV9iaXRzKGFiX2FoYi1cdTAwM2VzbXAycF9pbmZvLnNtZW1fc3RhdGUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjc3OTpcdFx0XHRcdFx0ICBBVEgxMUtfQUhCX1NNUDJQX1NNRU1fVkFMVUVfTUFTSywgdmFsdWUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy03ODAtXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy03OTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjc5MTpcdGF0aDExa19kYmcoYWIsIEFUSDExS19EQkdfQUhCLCBcJiMzNDtkZXZpY2UgcmVzdW1lZFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTc5Mi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jPTg0OD1zdGF0aWMgaW50IGF0aDExa19haGJfc2V0dXBfbXNpX3Jlc291cmNlcyhzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtODkyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo4OTM6XHRzZXRfYml0KEFUSDExS19GTEFHX01VTFRJX01TSV9WRUNUT1JTLCBcdTAwMjZhYi1cdTAwM2VkZXZfZmxhZ3MpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy04OTQtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYz0xMTM5PXN0YXRpYyBpbnQgYXRoMTFrX2FoYl9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMTE0OS1cdHN3aXRjaCAoaHdfcmV2KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjExNTA6XHRjYXNlIEFUSDExS19IV19JUFE4MDc0OlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzoxMTUxOlx0Y2FzZSBBVEgxMUtfSFdfSVBRNjAxOF9IVzEwOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzoxMTUyOlx0Y2FzZSBBVEgxMUtfSFdfSVBRNTAxOF9IVzEwOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0xMTUzLVx0XHRoaWZfb3BzID0gXHUwMDI2YXRoMTFrX2FoYl9oaWZfb3BzX2lwcTgwNzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0xMTU1LVx0XHRicmVhaztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6MTE1NjpcdGNhc2UgQVRIMTFLX0hXX1dDTjY3NTBfSFcxMDpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMTE1Ny1cdFx0aGlmX29wcyA9IFx1MDAyNmF0aDExa19haGJfaGlmX29wc193Y242NzUwO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMTE3MS1cdGFiID0gYXRoMTFrX2NvcmVfYWxsb2MoXHUwMDI2cGRldi1cdTAwM2VkZXYsIHNpemVvZihzdHJ1Y3QgYXRoMTFrX2FoYiksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjExNzI6XHRcdFx0ICAgICAgIEFUSDExS19CVVNfQUhCKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMTE3My1cdGlmICghYWIpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTExODAtXHRhYi1cdTAwM2Vod19yZXYgPSBod19yZXY7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjExODE6XHRhYi1cdTAwM2Vmd19tb2RlID0gQVRIMTFLX0ZJUk1XQVJFX01PREVfTk9STUFMO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0xMTgyLVx0cGxhdGZvcm1fc2V0X2RydmRhdGEocGRldiwgYWIpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM9MTI2ND1zdGF0aWMgdm9pZCBhdGgxMWtfYWhiX3JlbW92ZV9wcmVwYXJlKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0xMjY3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzoxMjY4Olx0aWYgKHRlc3RfYml0KEFUSDExS19GTEFHX1JFQ09WRVJZLCBcdTAwMjZhYi1cdTAwM2VkZXZfZmxhZ3MpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTEyNjktXHRcdGxlZnQgPSB3YWl0X2Zvcl9jb21wbGV0aW9uX3RpbWVvdXQoXHUwMDI2YWItXHUwMDNlZHJpdmVyX3JlY292ZXJ5LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzoxMjcwOlx0XHRcdFx0XHRcdCAgIEFUSDExS19BSEJfUkVDT1ZFUllfVElNRU9VVCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTEyNzEtXHRcdGlmICghbGVmdClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTEyNzQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjEyNzU6XHRzZXRfYml0KEFUSDExS19GTEFHX1VOUkVHSVNURVJJTkcsIFx1MDAyNmFiLVx1MDAzZWRldl9mbGFncyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTEyNzYtXHRjYW5jZWxfd29ya19zeW5jKFx1MDAyNmFiLVx1MDAzZXJlc3RhcnRfd29yayk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYz0xMjk1PXN0YXRpYyB2b2lkIGF0aDExa19haGJfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0xMjk4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzoxMjk5Olx0aWYgKHRlc3RfYml0KEFUSDExS19GTEFHX1FNSV9GQUlMLCBcdTAwMjZhYi1cdTAwM2VkZXZfZmxhZ3MpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTEzMDAtXHRcdGF0aDExa19haGJfcG93ZXJfZG93bihhYiwgZmFsc2UpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM9MTMxND1zdGF0aWMgdm9pZCBhdGgxMWtfYWhiX3NodXRkb3duKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0xMzIzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzoxMzI0Olx0aWYgKCEodGVzdF9iaXQoQVRIMTFLX0ZMQUdfUkVHSVNURVJFRCwgXHUwMDI2YWItXHUwMDNlZGV2X2ZsYWdzKSkpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTEzMjUtXHRcdGdvdG8gZnJlZV9yZXNvdXJjZXM7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuaC01LSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuaDo2OiNpZm5kZWYgQVRIMTFLX0FIQl9IXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5oOjc6I2RlZmluZSBBVEgxMUtfQUhCX0hcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmgtOC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5oLTEwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuaDoxMTojZGVmaW5lIEFUSDExS19BSEJfUkVDT1ZFUllfVElNRU9VVCAoMyAqIEhaKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuaC0xMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmg6MTM6I2RlZmluZSBBVEgxMUtfQUhCX1NNUDJQX1NNRU1fTVNHXHRcdEdFTk1BU0soMTUsIDApXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5oOjE0OiNkZWZpbmUgQVRIMTFLX0FIQl9TTVAyUF9TTUVNX1NFUV9OT1x0XHRHRU5NQVNLKDMxLCAxNilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmg6MTU6I2RlZmluZSBBVEgxMUtfQUhCX1NNUDJQX1NNRU1fVkFMVUVfTUFTS1x0MHhGRkZGRkZGRlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuaC0xNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmg9MTc9ZW51bSBhdGgxMWtfYWhiX3NtcDJwX21zZ19pZCB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5oOjE4Olx0QVRIMTFLX0FIQl9QT1dFUl9TQVZFX0VOVEVSID0gMSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmg6MTk6XHRBVEgxMUtfQUhCX1BPV0VSX1NBVkVfRVhJVCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmgtMjAtfTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NlLmM9MzIxPXN0YXRpYyBpbnQgYXRoMTFrX2NlX3J4X3Bvc3RfcGlwZShzdHJ1Y3QgYXRoMTFrX2NlX3BpcGUgKnBpcGUpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZS5jLTM1MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2UuYzozNTE6XHRcdEFUSDExS19TS0JfUlhDQihza2IpLVx1MDAzZXBhZGRyID0gcGFkZHI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NlLmMtMzUyLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2UuYy0zNTUtXHRcdGlmIChyZXQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2UuYzozNTY6XHRcdFx0YXRoMTFrX2RiZyhhYiwgQVRIMTFLX0RCR19DRSwgXCYjMzQ7ZmFpbGVkIHRvIGVucXVldWUgcnggYnVmOiAlZFxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2UuYy0zNTctXHRcdFx0XHQgICByZXQpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2UuYz00MTc9c3RhdGljIHZvaWQgYXRoMTFrX2NlX3JlY3ZfcHJvY2Vzc19jYihzdHJ1Y3QgYXRoMTFrX2NlX3BpcGUgKnBpcGUpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZS5jLTQyNy1cdFx0bWF4X25ieXRlcyA9IHNrYi1cdTAwM2VsZW4gJiM0Mzsgc2tiX3RhaWxyb29tKHNrYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NlLmM6NDI4Olx0XHRkbWFfdW5tYXBfc2luZ2xlKGFiLVx1MDAzZWRldiwgQVRIMTFLX1NLQl9SWENCKHNrYiktXHUwMDNlcGFkZHIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NlLmMtNDI5LVx0XHRcdFx0IG1heF9uYnl0ZXMsIERNQV9GUk9NX0RFVklDRSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZS5jLTQ0Mi1cdHdoaWxlICgoc2tiID0gX19za2JfZGVxdWV1ZShcdTAwMjZsaXN0KSkpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2UuYzo0NDM6XHRcdGF0aDExa19kYmcoYWIsIEFUSDExS19EQkdfQ0UsIFwmIzM0O3J4IGNlIHBpcGUgJWQgbGVuICVkXFxuXCYjMzQ7LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZS5jLTQ0NC1cdFx0XHQgICBwaXBlLVx1MDAzZXBpcGVfbnVtLCBza2ItXHUwMDNlbGVuKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NlLmMtNDUyLVx0XHRtb2RfdGltZXIoXHUwMDI2YWItXHUwMDNlcnhfcmVwbGVuaXNoX3JldHJ5LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZS5jOjQ1MzpcdFx0XHQgIGppZmZpZXMgJiM0MzsgQVRIMTFLX0NFX1JYX1BPU1RfUkVUUllfSklGRklFUyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NlLmMtNDU0LVx0fVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2UuYz00OTg9c3RhdGljIHZvaWQgYXRoMTFrX2NlX3R4X3Byb2Nlc3NfY2Ioc3RydWN0IGF0aDExa19jZV9waXBlICpwaXBlKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2UuYy01MDgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NlLmM6NTA5Olx0XHRkbWFfdW5tYXBfc2luZ2xlKGFiLVx1MDAzZWRldiwgQVRIMTFLX1NLQl9DQihza2IpLVx1MDAzZXBhZGRyLCBza2ItXHUwMDNlbGVuLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZS5jLTUxMC1cdFx0XHRcdCBETUFfVE9fREVWSUNFKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NlLmMtNTIwLVx0d2hpbGUgKChza2IgPSBfX3NrYl9kZXF1ZXVlKFx1MDAyNmxpc3QpKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZS5jOjUyMTpcdFx0YXRoMTFrX2RiZyhhYiwgQVRIMTFLX0RCR19DRSwgXCYjMzQ7dHggY2UgcGlwZSAlZCBsZW4gJWRcXG5cJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NlLmMtNTIyLVx0XHRcdCAgIHBpcGUtXHUwMDNlcGlwZV9udW0sIHNrYi1cdTAwM2VsZW4pO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2UuYz01NTM9c3RhdGljIGludCBhdGgxMWtfY2VfaW5pdF9yaW5nKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZS5jLTYwNC1cdFx0YXRoMTFrX2RwX3NoYWRvd19pbml0X3RpbWVyKGFiLCBcdTAwMjZhYi1cdTAwM2VjZS5ocF90aW1lcltjZV9pZF0sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NlLmM6NjA1Olx0XHRcdFx0XHQgICAgQVRIMTFLX1NIQURPV19DVFJMX1RJTUVSX0lOVEVSVkFMLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZS5jLTYwNi1cdFx0XHRcdFx0ICAgIGNlX3JpbmctXHUwMDNlaGFsX3JpbmdfaWQpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2UuYz03MDk9aW50IGF0aDExa19jZV9zZW5kKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIsIHN0cnVjdCBza19idWZmICpza2IsIHU4IHBpcGVfaWQsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZS5jLTczOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2UuYzo3Mzk6XHRcdGlmIChudW1fdXNlZCBcdTAwM2UgQVRIMTFLX0NFX1VTQUdFX1RIUkVTSE9MRClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2UuYy03NDAtXHRcdFx0YXRoMTFrX2NlX3BvbGxfc2VuZF9jb21wbGV0ZWQoYWIsIHBpcGUtXHUwMDNlcGlwZV9udW0pO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2UuYy03NDItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NlLmM6NzQzOlx0aWYgKHRlc3RfYml0KEFUSDExS19GTEFHX0NSQVNIX0ZMVVNILCBcdTAwMjZhYi1cdTAwM2VkZXZfZmxhZ3MpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZS5jLTc0NC1cdFx0cmV0dXJuIC1FU0hVVERPV047XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZS5jLTc3Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2UuYzo3NzM6XHRhdGgxMWtfaGFsX2NlX3NyY19zZXRfZGVzYyhkZXNjLCBBVEgxMUtfU0tCX0NCKHNrYiktXHUwMDNlcGFkZHIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NlLmMtNzc0LVx0XHRcdFx0ICAgc2tiLVx1MDAzZWxlbiwgdHJhbnNmZXJfaWQsIGJ5dGVfc3dhcF9kYXRhKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NlLmM9Nzk5PXN0YXRpYyB2b2lkIGF0aDExa19jZV9yeF9waXBlX2NsZWFudXAoc3RydWN0IGF0aDExa19jZV9waXBlICpwaXBlKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2UuYy04MTQtXHRcdHJpbmctXHUwMDNlc2tiW2ldID0gTlVMTDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2UuYzo4MTU6XHRcdGRtYV91bm1hcF9zaW5nbGUoYWItXHUwMDNlZGV2LCBBVEgxMUtfU0tCX1JYQ0Ioc2tiKS1cdTAwM2VwYWRkcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2UuYy04MTYtXHRcdFx0XHQgc2tiLVx1MDAzZWxlbiAmIzQzOyBza2JfdGFpbHJvb20oc2tiKSwgRE1BX0ZST01fREVWSUNFKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NlLmM9ODgzPXZvaWQgYXRoMTFrX2NlX3J4X3Bvc3RfYnVmKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZS5jLTg5OC1cdFx0XHRtb2RfdGltZXIoXHUwMDI2YWItXHUwMDNlcnhfcmVwbGVuaXNoX3JldHJ5LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZS5jOjg5OTpcdFx0XHRcdCAgamlmZmllcyAmIzQzOyBBVEgxMUtfQ0VfUlhfUE9TVF9SRVRSWV9KSUZGSUVTKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2UuYy05MDAtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZS5oLTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NlLmg6NzojaWZuZGVmIEFUSDExS19DRV9IXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NlLmg6ODojZGVmaW5lIEFUSDExS19DRV9IXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NlLmgtOS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NlLmgtMjUtLyogVGhyZXNob2xkIHRvIHBvbGwgZm9yIHR4IGNvbXBsZXRpb24gaW4gY2FzZSBvZiBJbnRlcnJ1cHQgZGlzYWJsZWQgQ0UmIzM5O3MgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2UuaDoyNjojZGVmaW5lIEFUSDExS19DRV9VU0FHRV9USFJFU0hPTEQgMzJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2UuaC0yNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2UuaD0yOD12b2lkIGF0aDExa19jZV9ieXRlX3N3YXAodm9pZCAqbWVtLCB1MzIgbGVuKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NlLmgtNjEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NlLmg6NjI6I2RlZmluZSBBVEgxMUtfQ0VfUlhfUE9TVF9SRVRSWV9KSUZGSUVTIDUwXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NlLmgtNjMtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYz0xOT1zdGF0aWMgaW50IGF0aDExa19jZnJfY2FsY3VsYXRlX3RvbmVzX2Zyb21fZG1hX2hkcihzdHJ1Y3QgYXRoMTFrX2Nmcl9kbWFfaGRyICpoZHIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYy0yNC1cdHN3aXRjaCAocHJlYW1ibGUpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmM6MjU6XHRjYXNlIEFUSDExS19DRlJfUFJFQU1CTEVfVFlQRV9MRUdBQ1k6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jLTI2LVx0XHRmYWxsdGhyb3VnaDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmM6Mjc6XHRjYXNlIEFUSDExS19DRlJfUFJFQU1CTEVfVFlQRV9WSFQ6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jLTI4LVx0XHRzd2l0Y2ggKGJ3KSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYy0zOS1cdFx0fVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYzo0MDpcdGNhc2UgQVRIMTFLX0NGUl9QUkVBTUJMRV9UWVBFX0hUOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYy00MS1cdFx0c3dpdGNoIChidykge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmM9MTE0PWF0aDExa19jZnJfY29ycmVsYXRlX2FuZF9yZWxheShzdHJ1Y3QgYXRoMTFrICphcixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jLTEyMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmM6MTIyOlx0aWYgKGV2ZW50X3R5cGUgPT0gQVRIMTFLX0NPUlJFTEFURV9UWF9FVkVOVCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYy0xMjMtXHRcdGlmIChsdXQtXHUwMDNldHhfcmVjdilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jLTEyNi1cdFx0bHV0LVx1MDAzZXR4X3JlY3YgPSB0cnVlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYzoxMjc6XHR9IGVsc2UgaWYgKGV2ZW50X3R5cGUgPT0gQVRIMTFLX0NPUlJFTEFURV9EQlJfRVZFTlQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmMtMTI4LVx0XHRjZnItXHUwMDNlZGJyX2V2dF9jbnQmIzQzOyYjNDM7O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmMtMTQwLVx0XHRcdFx0ZGlmZiA9IGx1dC1cdTAwM2VkYnJfdHN0YW1wIC0gbHV0LVx1MDAzZXR4cnhfdHN0YW1wO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYzoxNDE6XHRcdFx0XHRhdGgxMWtfZGJnKGFyLVx1MDAzZWFiLCBBVEgxMUtfREJHX0NGUixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmMtMTQyLVx0XHRcdFx0XHQgICBcJiMzNDt0eHJ4IGV2ZW50IC1cdTAwM2UgZGJyIGV2ZW50IGRlbGF5ID0gJXUgbXNcJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYy0xNDUtXHRcdFx0XHRkaWZmID0gbHV0LVx1MDAzZXR4cnhfdHN0YW1wIC0gbHV0LVx1MDAzZWRicl90c3RhbXA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jOjE0NjpcdFx0XHRcdGF0aDExa19kYmcoYXItXHUwMDNlYWIsIEFUSDExS19EQkdfQ0ZSLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYy0xNDctXHRcdFx0XHRcdCAgIFwmIzM0O2RiciBldmVudCAtXHUwMDNlIHR4cnggZXZlbnQgZGVsYXkgPSAldSBtc1wmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jLTE1My1cdFx0XHRjZnItXHUwMDNlcmVsZWFzZV9jbnQmIzQzOyYjNDM7O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYzoxNTQ6XHRcdFx0c3RhdHVzID0gQVRIMTFLX0NPUlJFTEFURV9TVEFUVVNfUkVMRUFTRTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmMtMTU1LVx0XHR9IGVsc2Uge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmMtMTYwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYzoxNjE6XHRcdFx0YXRoMTFrX2RiZyhhci1cdTAwM2VhYiwgQVRIMTFLX0RCR19DRlIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jLTE2Mi1cdFx0XHRcdCAgIFwmIzM0O1JlY2VpdmVkIGRiciBldmVudCB0d2ljZSBmb3IgdGhlIHNhbWUgbHV0IGVudHJ5XCYjMzQ7KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jLTE2Ni1cdFx0XHRjZnItXHUwMDNlY2ZyX2RtYV9hYm9ydHMmIzQzOyYjNDM7O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYzoxNjc6XHRcdFx0c3RhdHVzID0gQVRIMTFLX0NPUlJFTEFURV9TVEFUVVNfSE9MRDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmMtMTY4LVx0XHR9XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jLTE2OS1cdH0gZWxzZSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jOjE3MDpcdFx0c3RhdHVzID0gQVRIMTFLX0NPUlJFTEFURV9TVEFUVVNfSE9MRDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmMtMTcxLVx0fVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmM9MTc2PXN0YXRpYyBpbnQgYXRoMTFrX2Nmcl9wcm9jZXNzX2RhdGEoc3RydWN0IGF0aDExayAqYXIsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYy0xNzgte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYzoxNzk6XHR1MzIgZW5kX21hZ2ljID0gQVRIMTFLX0NGUl9FTkRfTUFHSUM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jLTE4MC1cdHN0cnVjdCBhdGgxMWtfY3NpX2Nmcl9oZWFkZXIgKmhlYWRlcjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jLTIxOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmM6MjE5Olx0YXRoMTFrX2RiZ19kdW1wKGFiLCBBVEgxMUtfREJHX0NGUl9EVU1QLCBcJiMzNDtkYXRhX2Zyb21fYnVmX3JlbDpcJiMzNDssIFwmIzM0O1wmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmMtMjIwLVx0XHRcdGRhdGEsIGxlbmd0aCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYy0yMzUtXHRzdGF0dXMgPSBhdGgxMWtfY2ZyX2NvcnJlbGF0ZV9hbmRfcmVsYXkoYXIsIGx1dCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmM6MjM2Olx0XHRcdFx0XHRcdEFUSDExS19DT1JSRUxBVEVfREJSX0VWRU5UKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmM6MjM3Olx0aWYgKHN0YXR1cyA9PSBBVEgxMUtfQ09SUkVMQVRFX1NUQVRVU19SRUxFQVNFKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jOjIzODpcdFx0YXRoMTFrX2RiZyhhYiwgQVRIMTFLX0RCR19DRlIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jLTIzOS1cdFx0XHQgICBcJiMzNDtyZWxlYXNpbmcgQ0ZSIGRhdGEgdG8gdXNlciBzcGFjZVwmIzM0Oyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYy0yNDQtXHRcdGF0aDExa19jZnJfcmVsZWFzZV9sdXRfZW50cnkobHV0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmM6MjQ1Olx0fSBlbHNlIGlmIChzdGF0dXMgPT0gQVRIMTFLX0NPUlJFTEFURV9TVEFUVVNfSE9MRCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYzoyNDY6XHRcdGF0aDExa19kYmcoYWIsIEFUSDExS19EQkdfQ0ZSLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYy0yNDctXHRcdFx0ICAgXCYjMzQ7dHggZXZlbnQgaXMgbm90IHlldCByZWNlaXZlZCBob2xkaW5nIHRoZSBidWZcJiMzNDspO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmM9MjU1PXN0YXRpYyB2b2lkIGF0aDExa19jZnJfZmlsbF9oZHJfaW5mbyhzdHJ1Y3QgYXRoMTFrICphcixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jLTI2MS1cdGNmciA9IFx1MDAyNmFyLVx1MDAzZWNmcjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmM6MjYyOlx0aGVhZGVyLVx1MDAzZWNmcl9tZXRhZGF0YV92ZXJzaW9uID0gQVRIMTFLX0NGUl9NRVRBX1ZFUlNJT05fNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmM6MjYzOlx0aGVhZGVyLVx1MDAzZWNmcl9kYXRhX3ZlcnNpb24gPSBBVEgxMUtfQ0ZSX0RBVEFfVkVSU0lPTl8xO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYy0yNjQtXHRoZWFkZXItXHUwMDNlY2ZyX21ldGFkYXRhX2xlbiA9IHNpemVvZihzdHJ1Y3QgY2ZyX21ldGFkYXRhKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jLTI4NS1cdGhlYWRlci1cdTAwM2VtZXRhX2RhdGEuY2FwdHVyZV9tb2RlID0gcGFyYW1zLVx1MDAzZWJhbmR3aWR0aCA/XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jOjI4NjpcdFx0QVRIMTFLX0NGUl9DQVBUVVJFX0RVUF9MRUdBQ1lfQUNLIDogQVRIMTFLX0NGUl9DQVBUVVJFX0xFR0FDWV9BQ0s7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jLTI4Ny1cdGhlYWRlci1cdTAwM2VtZXRhX2RhdGEuY2FwdHVyZV90eXBlID0gcGFyYW1zLVx1MDAzZWNhcHR1cmVfbWV0aG9kO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmM9MzAwPWludCBhdGgxMWtfcHJvY2Vzc19jZnJfY2FwdHVyZV9ldmVudChzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmMtMzAzLVx0c3RydWN0IGF0aDExa19sb29rX3VwX3RhYmxlICpsdXQgPSBOVUxMO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYzozMDQ6XHR1MzIgZW5kX21hZ2ljID0gQVRIMTFLX0NGUl9FTkRfTUFHSUM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jLTMwNS1cdHN0cnVjdCBhdGgxMWtfY3NpX2Nmcl9oZWFkZXIgKmhlYWRlcjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jLTM3OC1cdGhlYWRlciA9IFx1MDAyNmx1dC1cdTAwM2VoZWFkZXI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jOjM3OTpcdGhlYWRlci1cdTAwM2VzdGFydF9tYWdpY19udW0gPSBBVEgxMUtfQ0ZSX1NUQVJUX01BR0lDO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYy0zODAtXHRoZWFkZXItXHUwMDNldmVuZG9yaWQgPSBWRU5ET1JfUUNBO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmMtMzg1LVx0c3RhdHVzID0gYXRoMTFrX2Nmcl9jb3JyZWxhdGVfYW5kX3JlbGF5KGFyLCBsdXQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jOjM4NjpcdFx0XHRcdFx0XHRBVEgxMUtfQ09SUkVMQVRFX1RYX0VWRU5UKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmM6Mzg3Olx0aWYgKHN0YXR1cyA9PSBBVEgxMUtfQ09SUkVMQVRFX1NUQVRVU19SRUxFQVNFKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jOjM4ODpcdFx0YXRoMTFrX2RiZyhhYiwgQVRIMTFLX0RCR19DRlIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jLTM4OS1cdFx0XHQgICBcJiMzNDtSZWxlYXNpbmcgQ0ZSIGRhdGEgdG8gdXNlciBzcGFjZVwmIzM0Oyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYy0zOTgtXHRcdFx0XHRcdCAgICAgV01JX0RJUkVDVF9CVUZfQ0ZSKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmM6Mzk5Olx0fSBlbHNlIGlmIChzdGF0dXMgPT0gQVRIMTFLX0NPUlJFTEFURV9TVEFUVVNfSE9MRCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYzo0MDA6XHRcdGF0aDExa19kYmcoYWIsIEFUSDExS19EQkdfQ0ZSLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYy00MDEtXHRcdFx0ICAgXCYjMzQ7ZGJyIGV2ZW50IGlzIG5vdCB5ZXQgcmVjZWl2ZWQgaG9sZGluZyBidWZcXG5cJiMzNDspO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmM9NDEyPWJvb2wgYXRoMTFrX2Nmcl9wZWVyX2lzX2luX2Nmcl91bmFzc29jX3Bvb2woc3RydWN0IGF0aDExayAqYXIsIGNvbnN0IHU4ICpwZWVyX21hYylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jLTQyMS1cdHNwaW5fbG9ja19iaChcdTAwMjZjZnItXHUwMDNlbG9jayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jOjQyMjpcdGZvciAoaSA9IDA7IGkgXHUwMDNjIEFUSDExS19NQVhfQ0ZSX0VOQUJMRURfQ0xJRU5UUzsgaSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmMtNDIzLVx0XHRlbnRyeSA9IFx1MDAyNmNmci1cdTAwM2V1bmFzc29jX3Bvb2xbaV07XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYz00Mzg9dm9pZCBhdGgxMWtfY2ZyX3VwZGF0ZV91bmFzc29jX3Bvb2xfZW50cnkoc3RydWN0IGF0aDExayAqYXIsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYy00NDUtXHRzcGluX2xvY2tfYmgoXHUwMDI2Y2ZyLVx1MDAzZWxvY2spO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYzo0NDY6XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBBVEgxMUtfTUFYX0NGUl9FTkFCTEVEX0NMSUVOVFM7IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jLTQ0Ny1cdFx0ZW50cnkgPSBcdTAwMjZjZnItXHUwMDNldW5hc3NvY19wb29sW2ldO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmM9NDc3PWF0aDExa19jZnJfYndfdG9fZndfY2ZyX2J3KGVudW0gYXRoMTFrX2Nmcl9jYXB0dXJlX2J3IGJ3KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmMtNDc5LVx0c3dpdGNoIChidykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYzo0ODA6XHRjYXNlIEFUSDExS19DRlJfQ0FQVFVSRV9CV18yMDpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmMtNDgxLVx0XHRyZXR1cm4gV01JX1BFRVJfQ0ZSX0NBUFRVUkVfQldfMjA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jOjQ4MjpcdGNhc2UgQVRIMTFLX0NGUl9DQVBUVVJFX0JXXzQwOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYy00ODMtXHRcdHJldHVybiBXTUlfUEVFUl9DRlJfQ0FQVFVSRV9CV180MDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmM6NDg0Olx0Y2FzZSBBVEgxMUtfQ0ZSX0NBUFRVUkVfQldfODA6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jLTQ4NS1cdFx0cmV0dXJuIFdNSV9QRUVSX0NGUl9DQVBUVVJFX0JXXzgwO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmM9NDkyPWF0aDExa19jZnJfbWV0aG9kX3RvX2Z3X2Nmcl9tZXRob2QoZW51bSBhdGgxMWtfY2ZyX2NhcHR1cmVfbWV0aG9kIG1ldGhvZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jLTQ5NC1cdHN3aXRjaCAobWV0aG9kKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jOjQ5NTpcdGNhc2UgQVRIMTFLX0NGUl9DQVBUVVJFX01FVEhPRF9OVUxMX0ZSQU1FOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYy00OTYtXHRcdHJldHVybiBXTUlfQ0ZSX0NBUFRVUkVfTUVUSE9EX05VTExfRlJBTUU7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jOjQ5NzpcdGNhc2UgQVRIMTFLX0NGUl9DQVBUVVJFX01FVEhPRF9OVUxMX0ZSQU1FX1dJVEhfUEhBU0U6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jLTQ5OC1cdFx0cmV0dXJuIFdNSV9DRlJfQ0FQVFVSRV9NRVRIT0RfTlVMTF9GUkFNRV9XSVRIX1BIQVNFO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYzo0OTk6XHRjYXNlIEFUSDExS19DRlJfQ0FQVFVSRV9NRVRIT0RfUFJPQkVfUkVTUDpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmMtNTAwLVx0XHRyZXR1cm4gV01JX0NGUl9DQVBUVVJFX01FVEhPRF9QUk9CRV9SRVNQO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmM9NTA2PWludCBhdGgxMWtfY2ZyX3NlbmRfcGVlcl9jZnJfY2FwdHVyZV9jbWQoc3RydWN0IGF0aDExayAqYXIsXG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMTg6MDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjQyMDMKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiA2NjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBJbXBsaWNhdGlvbnMgb2YgQVFMIENoYW5nZXMgaW4gbWFjODAyMTEgZm9yIDgwMi4xMWF4IFN1cHBvcnQqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IGl0JiMzOTtzIHJlbGF0ZWQgdG8gdGhlIGBhdGgxMWtgIGRyaXZlciwgd2hpY2ggaGFuZGxlcyB0aGUgUXVhbGNvbW0gODAyLjExYXggY2hpcHNldC4gVGhhdCYjMzk7cyBhIHBoeXNpY2FsIGhhcmR3YXJlIGRyaXZlciwgd29ya2luZyB3aXRoIFBDSSBvciBBSEIuIEJ1dCB0aGUgcmVhbCBtZWF0IG9mIHRoaXMgY2hhbmdlIHNlZW1zIHRvIGJlIGluIGBuZXQvbWFjODAyMTEvdHguY2AsIGBuZXQvbWFjODAyMTEvZGVidWdmcy5jYCwgYW5kIGBpbmNsdWRlL25ldC9tYWM4MDIxMS5oYC4gVGhhdCYjMzk7cyB3aGVyZSBJIG5lZWQgdG8gZm9jdXMuCgpTcGVjaWZpY2FsbHksIEkgc2VlIGNoYW5nZXMgaW4gdGhlIGFpcnRpbWUgZmFpcm5lc3MgY2FsY3VsYXRpb24gd2l0aGluIGB0eC5jYC4gSXQgbG9va3MgbGlrZSB0aGUgcGF0Y2ggaXMgYWRkaW5nIG5ldyBsb2dpYyB0byBsaW1pdCB0aGUgbnVtYmVyIG9mIGZyYW1lcyBhIHN0YXRpb24gY2FuIHRyYW5zbWl0IGJhc2VkIG9uIGl0cyAmIzM0O2FpcnRpbWUgd2VpZ2h0LiYjMzQ7IFdlJiMzOTtyZSBsb29raW5nIGF0IGZ1bmN0aW9ucyBsaWtlIGBpZWVlODAyMTFfYXFsX3N0YV9saW1pdGAgYW5kIGBpZWVlODAyMTFfdHhxX2FpcnRpbWVfY2hlY2tgLiBJdCYjMzk7cyBjaGVja2luZyBpZiBhIHN0YXRpb24gaGFzIHJlYWNoZWQgYSBsaW1pdCBvbiBpdHMgYWlydGltZSB1dGlsaXphdGlvbiBiZWZvcmUgYWxsb3dpbmcgbW9yZSBwYWNrZXRzIHRvIGJlIHF1ZXVlZC4gVGhpcyBpcyBhbGwgYWJvdXQgZW5zdXJpbmcgZmFpciBhY2Nlc3MgdG8gdGhlIG1lZGl1bS4gVGhpcyBBUUwgKGFpcnRpbWUgZmFpcm5lc3MpIHN0dWZmIGlzIHF1aXRlIGludGVyZXN0aW5nLgoKTm93LCBoZXJlJiMzOTtzIHdoZXJlIGl0IGdldHMgcG90ZW50aWFsbHkgZmFzY2luYXRpbmcuIGBtYWM4MDIxMWAgY2FuIGFjdHVhbGx5IGJlIHVzZWQgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCB0aHJvdWdoIGBtYWM4MDIxMV9od3NpbWAsIHdoaWNoIGlzIGEgc29mdHdhcmUtZW11bGF0ZWQgODAyLjExIHJhZGlvLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgYW0gdGhpbmtpbmcgYWJvdXQgaG93IHRoaXMgY2hhbmdlIG1pZ2h0IGltcGFjdCB0aGF0LiBDaGVja2luZyB0aGUgZGVwZW5kZW5jaWVzLCB5ZXAsIGBNQUM4MDIxMV9IV1NJTWAgcmVsaWVzIG9uIGJvdGggYE1BQzgwMjExYCBhbmQgYENGRzgwMjExYC4gU28gYW55IGJlaGF2aW9yIGNoYW5nZXMgaW4gdGhlIGNvcmUgYG1hYzgwMjExYCBjb2RlLCAqZXNwZWNpYWxseSogdGhlc2UgYWlydGltZSBtYW5hZ2VtZW50IGNoYW5nZXMsIHdpbGwgYWxzbyBiZSByZWZsZWN0ZWQgaW4gdGhlIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBUaGF0JiMzOTtzIHNvbWV0aGluZyB0byBrZWVwIGluIG1pbmQgZm9yIHRlc3RpbmcuIExldCYjMzk7cyBkZWx2ZSBkZWVwZXIgaW50byBob3cgdGhlc2UgQVFMIGNoYW5nZXMgYXJlIGltcGxlbWVudGVkIGluIHRoZSBgbWFjODAyMTFfaHdzaW1gIGNvZGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDE4OjA5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O01BQzgwMjExX0hXU0lNJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9LY29uZmlnOjE6Y29uZmlnIE1BQzgwMjExX0hXU0lNXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL0tjb25maWctMi1cdHRyaXN0YXRlIFwmIzM0O1NpbXVsYXRlZCByYWRpbyB0ZXN0aW5nIHRvb2wgZm9yIG1hYzgwMjExXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9NYWtlZmlsZToxOm9iai0kKENPTkZJR19NQUM4MDIxMV9IV1NJTSlcdCYjNDM7PSBtYWM4MDIxMV9od3NpbS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL01ha2VmaWxlLTItbWFjODAyMTFfaHdzaW0tb2Jqc1x0XHQmIzQzOz0gbWFjODAyMTFfaHdzaW1fbWFpbi5vXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oLTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6OTojaWZuZGVmIF9fTUFDODAyMTFfSFdTSU1fSFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjEwOiNkZWZpbmUgX19NQUM4MDIxMV9IV1NJTV9IXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmgtMTEtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oPTIxNz1zdHJ1Y3QgaHdzaW1fdHhfcmF0ZSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oLTIzMC0gKlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjIzMTogKiBATUFDODAyMTFfSFdTSU1fVFhfUkNfVVNFX1JUU19DVFM6IFVzZSBSVFMvQ1RTIGV4Y2hhbmdlIGZvciB0aGlzIHJhdGUuXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjMyOiAqIEBNQUM4MDIxMV9IV1NJTV9UWF9SQ19VU0VfQ1RTX1BST1RFQ1Q6IENUUy10by1zZWxmIHByb3RlY3Rpb24gaXMgcmVxdWlyZWQuXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmgtMjMzLSAqXHRUaGlzIGlzIHNldCBpZiB0aGUgY3VycmVudCBCU1MgcmVxdWlyZXMgRVJQIHByb3RlY3Rpb24uXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjM0OiAqIEBNQUM4MDIxMV9IV1NJTV9UWF9SQ19VU0VfU0hPUlRfUFJFQU1CTEU6IFVzZSBzaG9ydCBwcmVhbWJsZS5cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyMzU6ICogQE1BQzgwMjExX0hXU0lNX1RYX1JDX01DUzogSFQgcmF0ZS5cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyMzY6ICogQE1BQzgwMjExX0hXU0lNX1RYX1JDX1ZIVF9NQ1M6IFZIVCBNQ1MgcmF0ZSwgaW4gdGhpcyBjYXNlIHRoZSBpZHggZmllbGQgaXNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaC0yMzctICpcdHNwbGl0IGludG8gYSBoaWdoZXIgNCBiaXRzIChOc3MpIGFuZCBsb3dlciA0IGJpdHMgKE1DUyBudW1iZXIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjM4OiAqIEBNQUM4MDIxMV9IV1NJTV9UWF9SQ19HUkVFTl9GSUVMRDogSW5kaWNhdGVzIHdoZXRoZXIgdGhpcyByYXRlIHNob3VsZCBiZSB1c2VkXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmgtMjM5LSAqXHRpbiBHcmVlbmZpZWxkIG1vZGUuXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjQwOiAqIEBNQUM4MDIxMV9IV1NJTV9UWF9SQ180MF9NSFpfV0lEVEg6IEluZGljYXRlcyBpZiB0aGUgQ2hhbm5lbCBXaWR0aCBzaG91bGQgYmVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaC0yNDEtICpcdDQwIE1Iei5cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyNDI6ICogQE1BQzgwMjExX0hXU0lNX1RYX1JDXzgwX01IWl9XSURUSDogSW5kaWNhdGVzIDgwIE1IeiB0cmFuc21pc3Npb25cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyNDM6ICogQE1BQzgwMjExX0hXU0lNX1RYX1JDXzE2MF9NSFpfV0lEVEg6IEluZGljYXRlcyAxNjAgTUh6IHRyYW5zbWlzc2lvblxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oLTI0NC0gKlx0KDgwJiM0Mzs4MCBpc24mIzM5O3Qgc3VwcG9ydGVkIHlldClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyNDU6ICogQE1BQzgwMjExX0hXU0lNX1RYX1JDX0RVUF9EQVRBOiBUaGUgZnJhbWUgc2hvdWxkIGJlIHRyYW5zbWl0dGVkIG9uIGJvdGggb2ZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaC0yNDYtICpcdHRoZSBhZGphY2VudCAyMCBNSHogY2hhbm5lbHMsIGlmIHRoZSBjdXJyZW50IGNoYW5uZWwgdHlwZSBpc1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oLTI0Ny0gKlx0Tkw4MDIxMV9DSEFOX0hUNDBNSU5VUyBvciBOTDgwMjExX0NIQU5fSFQ0MFBMVVMuXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjQ4OiAqIEBNQUM4MDIxMV9IV1NJTV9UWF9SQ19TSE9SVF9HSTogU2hvcnQgR3VhcmQgaW50ZXJ2YWwgc2hvdWxkIGJlIHVzZWQgZm9yIHRoaXNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaC0yNDktICpcdHJhdGUuXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oPTI1MT1lbnVtIGh3c2ltX3R4X3JhdGVfZmxhZ3Mge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjI1MjpcdE1BQzgwMjExX0hXU0lNX1RYX1JDX1VTRV9SVFNfQ1RTXHRcdD0gQklUKDApLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjI1MzpcdE1BQzgwMjExX0hXU0lNX1RYX1JDX1VTRV9DVFNfUFJPVEVDVFx0XHQ9IEJJVCgxKSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyNTQ6XHRNQUM4MDIxMV9IV1NJTV9UWF9SQ19VU0VfU0hPUlRfUFJFQU1CTEVcdD0gQklUKDIpLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oLTI1NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaC0yNTYtXHQvKiByYXRlIGluZGV4IGlzIGFuIEhUL1ZIVCBNQ1MgaW5zdGVhZCBvZiBhbiBpbmRleCAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjI1NzpcdE1BQzgwMjExX0hXU0lNX1RYX1JDX01DU1x0XHRcdD0gQklUKDMpLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjI1ODpcdE1BQzgwMjExX0hXU0lNX1RYX1JDX0dSRUVOX0ZJRUxEXHRcdD0gQklUKDQpLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjI1OTpcdE1BQzgwMjExX0hXU0lNX1RYX1JDXzQwX01IWl9XSURUSFx0XHQ9IEJJVCg1KSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyNjA6XHRNQUM4MDIxMV9IV1NJTV9UWF9SQ19EVVBfREFUQVx0XHQ9IEJJVCg2KSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyNjE6XHRNQUM4MDIxMV9IV1NJTV9UWF9SQ19TSE9SVF9HSVx0XHQ9IEJJVCg3KSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyNjI6XHRNQUM4MDIxMV9IV1NJTV9UWF9SQ19WSFRfTUNTXHRcdFx0PSBCSVQoOCksXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjYzOlx0TUFDODAyMTFfSFdTSU1fVFhfUkNfODBfTUhaX1dJRFRIXHRcdD0gQklUKDkpLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjI2NDpcdE1BQzgwMjExX0hXU0lNX1RYX1JDXzE2MF9NSFpfV0lEVEhcdFx0PSBCSVQoMTApLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oLTI2NS19O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaD0zMjg9ZW51bSBod3NpbV9yYXRlX2luZm9fYXR0cmlidXRlcyB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oLTM0Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDozNDg6I2VuZGlmIC8qIF9fTUFDODAyMTFfSFdTSU1fSCAqL1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1faS5oLTktXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX2kuaDoxMDojaWZuZGVmIF9fTUFDODAyMTFfSFdTSU1fSV9IXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX2kuaDoxMTojZGVmaW5lIF9fTUFDODAyMTFfSFdTSU1fSV9IXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX2kuaC0xMi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX2kuaD0xNjU9dm9pZCBpZWVlODAyMTFfaHdzaW1fd2FrZV90eF9xdWV1ZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX2kuaC0xNjctXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX2kuaDoxNjg6I2VuZGlmIC8qIF9fTUFDODAyMTFfSFdTSU1fSV9IICovXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9NzEyPXN0YXRpYyBzdHJ1Y3QgbWFjODAyMTFfaHdzaW1fZGF0YSAqZ2V0X2h3c2ltX2RhdGFfcmVmX2Zyb21fYWRkcihjb25zdCB1OCAqYWRkcilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy03MTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzo3MTc6LyogTUFDODAyMTFfSFdTSU0gbmV0bGluayBmYW1pbHkgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTcxOC1zdGF0aWMgc3RydWN0IGdlbmxfZmFtaWx5IGh3c2ltX2dlbmxfZmFtaWx5O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTcyND1zdGF0aWMgY29uc3Qgc3RydWN0IGdlbmxfbXVsdGljYXN0X2dyb3VwIGh3c2ltX21jZ3Jwc1tdID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTcyNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjcyODovKiBNQUM4MDIxMV9IV1NJTSBuZXRsaW5rIHBvbGljeSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNzI5LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTg2NT1zdGF0aWMgY29uc3Qgc3RydWN0IG5sYV9wb2xpY3kgaHdzaW1fZ2VubF9wb2xpY3lbSFdTSU1fQVRUUl9NQVggJiM0MzsgMV0gPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtOTAxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6OTAyOi8qIE1BQzgwMjExX0hXU0lNIHZpcnRpbyBxdWV1ZXMgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTkwMy1zdGF0aWMgc3RydWN0IHZpcnRxdWV1ZSAqaHdzaW1fdnFzW0hXU0lNX05VTV9WUVNdO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTE1NzU9c3RhdGljIGlubGluZSB1MTYgdHJhbnNfdHhfcmF0ZV9mbGFnc19pZWVlMmh3c2ltKHN0cnVjdCBpZWVlODAyMTFfdHhfcmF0ZSAqcmF0ZSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0xNTc5LVx0aWYgKHJhdGUtXHUwMDNlZmxhZ3MgXHUwMDI2IElFRUU4MDIxMV9UWF9SQ19VU0VfUlRTX0NUUylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjE1ODA6XHRcdHJlc3VsdCB8PSBNQUM4MDIxMV9IV1NJTV9UWF9SQ19VU0VfUlRTX0NUUztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTE1ODEtXHRpZiAocmF0ZS1cdTAwM2VmbGFncyBcdTAwMjYgSUVFRTgwMjExX1RYX1JDX1VTRV9DVFNfUFJPVEVDVClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjE1ODI6XHRcdHJlc3VsdCB8PSBNQUM4MDIxMV9IV1NJTV9UWF9SQ19VU0VfQ1RTX1BST1RFQ1Q7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0xNTgzLVx0aWYgKHJhdGUtXHUwMDNlZmxhZ3MgXHUwMDI2IElFRUU4MDIxMV9UWF9SQ19VU0VfU0hPUlRfUFJFQU1CTEUpXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzoxNTg0Olx0XHRyZXN1bHQgfD0gTUFDODAyMTFfSFdTSU1fVFhfUkNfVVNFX1NIT1JUX1BSRUFNQkxFO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMTU4NS1cdGlmIChyYXRlLVx1MDAzZWZsYWdzIFx1MDAyNiBJRUVFODAyMTFfVFhfUkNfTUNTKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6MTU4NjpcdFx0cmVzdWx0IHw9IE1BQzgwMjExX0hXU0lNX1RYX1JDX01DUztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTE1ODctXHRpZiAocmF0ZS1cdTAwM2VmbGFncyBcdTAwMjYgSUVFRTgwMjExX1RYX1JDX0dSRUVOX0ZJRUxEKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6MTU4ODpcdFx0cmVzdWx0IHw9IE1BQzgwMjExX0hXU0lNX1RYX1JDX0dSRUVOX0ZJRUxEO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMTU4OS1cdGlmIChyYXRlLVx1MDAzZWZsYWdzIFx1MDAyNiBJRUVFODAyMTFfVFhfUkNfNDBfTUhaX1dJRFRIKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6MTU5MDpcdFx0cmVzdWx0IHw9IE1BQzgwMjExX0hXU0lNX1RYX1JDXzQwX01IWl9XSURUSDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTE1OTEtXHRpZiAocmF0ZS1cdTAwM2VmbGFncyBcdTAwMjYgSUVFRTgwMjExX1RYX1JDX0RVUF9EQVRBKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6MTU5MjpcdFx0cmVzdWx0IHw9IE1BQzgwMjExX0hXU0lNX1RYX1JDX0RVUF9EQVRBO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMTU5My1cdGlmIChyYXRlLVx1MDAzZWZsYWdzIFx1MDAyNiBJRUVFODAyMTFfVFhfUkNfU0hPUlRfR0kpXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzoxNTk0Olx0XHRyZXN1bHQgfD0gTUFDODAyMTFfSFdTSU1fVFhfUkNfU0hPUlRfR0k7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0xNTk1LVx0aWYgKHJhdGUtXHUwMDNlZmxhZ3MgXHUwMDI2IElFRUU4MDIxMV9UWF9SQ19WSFRfTUNTKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6MTU5NjpcdFx0cmVzdWx0IHw9IE1BQzgwMjExX0hXU0lNX1RYX1JDX1ZIVF9NQ1M7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0xNTk3LVx0aWYgKHJhdGUtXHUwMDNlZmxhZ3MgXHUwMDI2IElFRUU4MDIxMV9UWF9SQ184MF9NSFpfV0lEVEgpXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzoxNTk4Olx0XHRyZXN1bHQgfD0gTUFDODAyMTFfSFdTSU1fVFhfUkNfODBfTUhaX1dJRFRIO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMTU5OS1cdGlmIChyYXRlLVx1MDAzZWZsYWdzIFx1MDAyNiBJRUVFODAyMTFfVFhfUkNfMTYwX01IWl9XSURUSClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjE2MDA6XHRcdHJlc3VsdCB8PSBNQUM4MDIxMV9IV1NJTV9UWF9SQ18xNjBfTUhaX1dJRFRIO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMTYwMS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz0zNDg0PXN0YXRpYyBjb25zdCBjaGFyIG1hYzgwMjExX2h3c2ltX2dzdHJpbmdzX3N0YXRzW11bRVRIX0dTVFJJTkdfTEVOXSA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0zNDk0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6MzQ5NTojZGVmaW5lIE1BQzgwMjExX0hXU0lNX1NTVEFUU19MRU4gQVJSQVlfU0laRShtYWM4MDIxMV9od3NpbV9nc3RyaW5nc19zdGF0cylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTM0OTYtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9MzUwNj1zdGF0aWMgaW50IG1hYzgwMjExX2h3c2ltX2dldF9ldF9zc2V0X2NvdW50KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTM1MDktXHRpZiAoc3NldCA9PSBFVEhfU1NfU1RBVFMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzozNTEwOlx0XHRyZXR1cm4gTUFDODAyMTFfSFdTSU1fU1NUQVRTX0xFTjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTM1MTEtXHRyZXR1cm4gMDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz0zNTE0PXN0YXRpYyB2b2lkIG1hYzgwMjExX2h3c2ltX2dldF9ldF9zdGF0cyhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0zNTI5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6MzUzMDpcdFdBUk5fT04oaSAhPSBNQUM4MDIxMV9IV1NJTV9TU1RBVFNfTEVOKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTM1MzEtfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTU2NDc9c3RhdGljIGNvbnN0IHU4IGlmdHlwZXNfZXh0X2NhcGFfYXBbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy01NjU1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6NTY1NjojZGVmaW5lIE1BQzgwMjExX0hXU0lNX01MRF9DQVBBX09QU1x0XHRcdFx0XFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTU2NTctXHRGSUVMRF9QUkVQX0NPTlNUKElFRUU4MDIxMV9NTERfQ0FQX09QX1RJRF9UT19MSU5LX01BUF9ORUdfU1VQUCwgXFxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz01NjYyPXN0YXRpYyBjb25zdCBzdHJ1Y3Qgd2lwaHlfaWZ0eXBlX2V4dF9jYXBhYiBtYWM4MDIxMV9od3NpbV9pZnR5cGVzX2V4dF9jYXBhW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNTY2OS1cdFx0XHRcdCAgICBJRUVFODAyMTFfRU1MX0NBUF9FTUxNUl9TVVBQT1JULFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6NTY3MDpcdFx0Lm1sZF9jYXBhX2FuZF9vcHMgPSBNQUM4MDIxMV9IV1NJTV9NTERfQ0FQQV9PUFMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy01NjcxLVx0fSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz03MTQ3PXN0YXRpYyBzdHJ1Y3QgZ2VubF9mYW1pbHkgaHdzaW1fZ2VubF9mYW1pbHkgX19yb19hZnRlcl9pbml0ID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6NzE0ODpcdC5uYW1lID0gXCYjMzQ7TUFDODAyMTFfSFdTSU1cJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy03MTQ5LVx0LnZlcnNpb24gPSAxLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTc0Njc9c3RhdGljIHZvaWQgaHdzaW1fdmlydGlvX3JlbW92ZShzdHJ1Y3QgdmlydGlvX2RldmljZSAqdmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy03NDc1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6NzQ3NjovKiBNQUM4MDIxMV9IV1NJTSB2aXJ0aW8gZGV2aWNlIGlkIHRhYmxlICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy03NDc3LXN0YXRpYyBjb25zdCBzdHJ1Y3QgdmlydGlvX2RldmljZV9pZCBpZF90YWJsZVtdID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6NzQ3ODpcdHsgVklSVElPX0lEX01BQzgwMjExX0hXU0lNLCBWSVJUSU9fREVWX0FOWV9JRCB9LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNzQ3OS1cdHsgMCB9XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYz03OD1zdGF0aWMgdTY0IGh3c2ltX25hbl9nZXRfbWFzdGVyX3Jhbmsoc3RydWN0IG1hYzgwMjExX2h3c2ltX2RhdGEgKmRhdGEpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy04Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6ODM6XHRpZiAoZGF0YS1cdTAwM2VuYW4ucGhhc2UgPT0gTUFDODAyMTFfSFdTSU1fTkFOX1BIQVNFX1VQKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTg0LVx0XHRtYXN0ZXJfcHJlZiA9IGRhdGEtXHUwMDNlbmFuLm1hc3Rlcl9wcmVmO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM9MjE2PXZvaWQgbWFjODAyMTFfaHdzaW1fbmFuX3J4KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtMjczLVx0aWYgKChzbG90ICE9IFNMT1RfMjRHSFpfRFcgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjI3NDpcdCAgICAgZGF0YS1cdTAwM2VuYW4ucGhhc2UgIT0gTUFDODAyMTFfSFdTSU1fTkFOX1BIQVNFX1NDQU4pIHx8XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTI3NS1cdCAgICByeF9zdGF0dXMuZnJlcSAhPSAyNDM3KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtNDM2LVx0XHQgICAgKGNnID09IG93bl9jZyBcdTAwMjZcdTAwMjYgZnJhbWVfYW1yIFx1MDAzZSBjdXJyX2FtcikgfHxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6NDM3Olx0XHQgICAgZGF0YS1cdTAwM2VuYW4ucGhhc2UgPT0gTUFDODAyMTFfSFdTSU1fTkFOX1BIQVNFX1NDQU4pIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtNDM4LVx0XHRcdC8qIEF2b2lkIGEgc3RhdGUgdHJhbnNpdGlvbiAqL1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtNDY4LVx0XHRcdCAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYzo0Njk6XHRcdFx0ZGF0YS1cdTAwM2VuYW4ucGhhc2UgPSBNQUM4MDIxMV9IV1NJTV9OQU5fUEhBU0VfVVA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTQ3MC1cdFx0XHRkYXRhLVx1MDAzZW5hbi5yYW5kb21fZmFjdG9yX3ZhbGlkX2R3c3QgPSAwO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM9NjEyPW1hYzgwMjExX2h3c2ltX25hbl9leGVjX3N0YXRlX3RyYW5zaXRpb25zKHN0cnVjdCBtYWM4MDIxMV9od3NpbV9kYXRhICpkYXRhKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtNjI1LVx0aWYgKGRhdGEtXHUwMDNlbmFuLm1hc3Rlcl90cmFuc2l0aW9uX3Njb3JlIFx1MDAzYyAzKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYzo2MjY6XHRcdGRhdGEtXHUwMDNlbmFuLnJvbGUgPSBNQUM4MDIxMV9IV1NJTV9OQU5fUk9MRV9NQVNURVI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjYyNzpcdGVsc2UgaWYgKGRhdGEtXHUwMDNlbmFuLnJvbGUgPT0gTUFDODAyMTFfSFdTSU1fTkFOX1JPTEVfTUFTVEVSIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy02MjgtXHRcdCBkYXRhLVx1MDAzZW5hbi5tYXN0ZXJfdHJhbnNpdGlvbl9zY29yZSBcdTAwM2U9IDMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjYyOTpcdFx0ZGF0YS1cdTAwM2VuYW4ucm9sZSA9IE1BQzgwMjExX0hXU0lNX05BTl9ST0xFX1NZTkM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjYzMDpcdGVsc2UgaWYgKGRhdGEtXHUwMDNlbmFuLnJvbGUgPT0gTUFDODAyMTFfSFdTSU1fTkFOX1JPTEVfU1lOQyBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtNjMxLVx0XHQgZGF0YS1cdTAwM2VuYW4uc3luY190cmFuc2l0aW9uX3Njb3JlIFx1MDAzZT0gMylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6NjMyOlx0XHRkYXRhLVx1MDAzZW5hbi5yb2xlID0gTUFDODAyMTFfSFdTSU1fTkFOX1JPTEVfTk9OX1NZTkM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjYzMzpcdGVsc2UgaWYgKGRhdGEtXHUwMDNlbmFuLnJvbGUgPT0gTUFDODAyMTFfSFdTSU1fTkFOX1JPTEVfTk9OX1NZTkMgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTYzNC1cdFx0IGRhdGEtXHUwMDNlbmFuLnN5bmNfdHJhbnNpdGlvbl9zY29yZSBcdTAwM2MgMylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6NjM1Olx0XHRkYXRhLVx1MDAzZW5hbi5yb2xlID0gTUFDODAyMTFfSFdTSU1fTkFOX1JPTEVfU1lOQztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtNjM2LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtNjQxLVx0ICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjY0MjpcdGlmIChkYXRhLVx1MDAzZW5hbi5yb2xlID09IE1BQzgwMjExX0hXU0lNX05BTl9ST0xFX01BU1RFUiBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtNjQzLVx0ICAgICFocnRpbWVyX2FjdGl2ZShcdTAwMjZkYXRhLVx1MDAzZW5hbi5kaXNjb3ZlcnlfYmVhY29uX3RpbWVyKSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTY1My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6NjU0Olx0XHRpZiAoZGF0YS1cdTAwM2VuYW4ucGhhc2UgPT0gTUFDODAyMTFfSFdTSU1fTkFOX1BIQVNFX1NDQU4pIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6NjU1Olx0XHRcdGRhdGEtXHUwMDNlbmFuLnBoYXNlID0gTUFDODAyMTFfSFdTSU1fTkFOX1BIQVNFX1dBUk1VUDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtNjU2LVx0XHRcdGRhdGEtXHUwMDNlbmFuLnJhbmRvbV9mYWN0b3JfdmFsaWRfZHdzdCA9IE5BTl9XQVJNVVBfRFdTVDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTY1OS1cdFx0fSBlbHNlIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6NjYwOlx0XHRcdGRhdGEtXHUwMDNlbmFuLnBoYXNlID0gTUFDODAyMTFfSFdTSU1fTkFOX1BIQVNFX1VQO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy02NjEtXHRcdFx0ZGF0YS1cdTAwM2VuYW4ucmFuZG9tX2ZhY3Rvcl92YWxpZF9kd3N0ID1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jPTY5NT1tYWM4MDIxMV9od3NpbV9uYW5fdHhfYmVhY29uKHN0cnVjdCBtYWM4MDIxMV9od3NpbV9kYXRhICpkYXRhLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtNzUwLVx0bmFuX2F0dHIubGVuZ3RoID0gY3B1X3RvX2xlMTYoc2l6ZW9mKG1hc3Rlcl9pbmRpY2F0aW9uKSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjc1MTpcdGlmIChkYXRhLVx1MDAzZW5hbi5waGFzZSA9PSBNQUM4MDIxMV9IV1NJTV9OQU5fUEhBU0VfVVApIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtNzUyLVx0XHRtYXN0ZXJfaW5kaWNhdGlvbi5tYXN0ZXJfcHJlZiA9IGRhdGEtXHUwMDNlbmFuLm1hc3Rlcl9wcmVmO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM9Nzc0PW1hYzgwMjExX2h3c2ltX25hbl9zbG90X3RpbWVyKHN0cnVjdCBocnRpbWVyICp0aW1lcilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTgwNy1cdFx0dHhfc3luY19iZWFjb24gPVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYzo4MDg6XHRcdFx0ZGF0YS1cdTAwM2VuYW4ucGhhc2UgIT0gTUFDODAyMTFfSFdTSU1fTkFOX1BIQVNFX1NDQU4gXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjgwOTpcdFx0XHRkYXRhLVx1MDAzZW5hbi5yb2xlICE9IE1BQzgwMjExX0hXU0lNX05BTl9ST0xFX05PTl9TWU5DO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy04MTAtXHR9XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYz04Njc9bWFjODAyMTFfaHdzaW1fbmFuX2Rpc2NvdmVyeV9iZWFjb25fdGltZXIoc3RydWN0IGhydGltZXIgKnRpbWVyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtODc5LVx0c2NvcGVkX2d1YXJkKHNwaW5sb2NrLCBcdTAwMjZkYXRhLVx1MDAzZW5hbi5zdGF0ZV9sb2NrKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjg4MDpcdFx0aWYgKGRhdGEtXHUwMDNlbmFuLnBoYXNlID09IE1BQzgwMjExX0hXU0lNX05BTl9QSEFTRV9TQ0FOIHx8XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjg4MTpcdFx0ICAgIGRhdGEtXHUwMDNlbmFuLnJvbGUgIT0gTUFDODAyMTFfSFdTSU1fTkFOX1JPTEVfTUFTVEVSKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy04ODItXHRcdFx0cmV0dXJuIEhSVElNRVJfTk9SRVNUQVJUO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM9OTA5PWludCBtYWM4MDIxMV9od3NpbV9uYW5fc3RhcnQoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy05MjYtXHRcdC8qIFN0YXJ0IGluIHRoZSBcJiMzNDtzY2FuXCYjMzQ7IHBoYXNlIGFuZCBzdGF5IHRoZXJlIGZvciBhIGxpdHRsZSBiaXQgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6OTI3Olx0XHRkYXRhLVx1MDAzZW5hbi5waGFzZSA9IE1BQzgwMjExX0hXU0lNX05BTl9QSEFTRV9TQ0FOO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy05MjgtXHRcdGRhdGEtXHUwMDNlbmFuLnJhbmRvbV9mYWN0b3JfdmFsaWRfZHdzdCA9IDE7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy05MzAtXHRcdGRhdGEtXHUwMDNlbmFuLm1hc3Rlcl9wcmVmID0gY29uZi1cdTAwM2VtYXN0ZXJfcHJlZjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6OTMxOlx0XHRkYXRhLVx1MDAzZW5hbi5yb2xlID0gTUFDODAyMTFfSFdTSU1fTkFOX1JPTEVfTUFTVEVSO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy05MzItXHRcdG1lbXNldChcdTAwMjZkYXRhLVx1MDAzZW5hbi5jdXJyZW50X2FtaSwgMCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jPTEyMjY9Ym9vbCBtYWM4MDIxMV9od3NpbV9uYW5fcmVjZWl2ZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTEyMzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjEyMzY6XHRpZiAoZGF0YS1cdTAwM2VuYW4ucGhhc2UgPT0gTUFDODAyMTFfSFdTSU1fTkFOX1BIQVNFX1NDQU4pXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTEyMzctXHRcdHJldHVybiBjaGFubmVsLVx1MDAzZWNlbnRlcl9mcmVxID09IDI0Mzc7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaC02LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaDo3OiNpZm5kZWYgX19NQUM4MDIxMV9IV1NJTV9OQU5fSFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaDo4OiNkZWZpbmUgX19NQUM4MDIxMV9IV1NJTV9OQU5fSFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaC05LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaD0xMD1lbnVtIG1hYzgwMjExX2h3c2ltX25hbl9waGFzZSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5oOjExOlx0TUFDODAyMTFfSFdTSU1fTkFOX1BIQVNFX1NDQU4sXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5oOjEyOlx0TUFDODAyMTFfSFdTSU1fTkFOX1BIQVNFX1dBUk1VUCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmg6MTM6XHRNQUM4MDIxMV9IV1NJTV9OQU5fUEhBU0VfVVAsXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5oLTE0LX07XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaD0xNj1lbnVtIG1hYzgwMjExX2h3c2ltX25hbl9yb2xlIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmg6MTc6XHRNQUM4MDIxMV9IV1NJTV9OQU5fUk9MRV9NQVNURVIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5oOjE4Olx0TUFDODAyMTFfSFdTSU1fTkFOX1JPTEVfU1lOQyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmg6MTk6XHRNQUM4MDIxMV9IV1NJTV9OQU5fUk9MRV9OT05fU1lOQyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmgtMjAtfTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5oPTk5PXZvaWQgbWFjODAyMTFfaHdzaW1fbmFuX2xvY2FsX3NjaGVkX2NoYW5nZWQoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaC0xMDEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5oOjEwMjojZW5kaWYgLyogX19NQUM4MDIxMV9IV1NJTV9OQU5fSCAqL1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAxODowOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNDMzMgoJCQkJCQkJb3V0cHV0OiA0NQoJCQkJCQkJdGhvdWdodHM6IDEwNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIDgwMi4xMSBUWCBRdWV1ZSBBaXJ0aW1lIENoZWNrKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IHVuZGVyc3RhbmRpbmcgaXMgdGhhdCBgaWVlZTgwMjExX3R4cV9haXJ0aW1lX2NoZWNrYCBpcyB0cmlnZ2VyZWQgZHVyaW5nIHRoZSB0cmFuc21pdCBwcm9jZXNzLCBzcGVjaWZpY2FsbHkgd2l0aGluIGBuZXQvbWFjODAyMTEvdHguY2AuIEkgbmVlZCB0byBjb25maXJtIHRoZSBleGFjdCBjYWxsIHBhdGguIEl0IHNlZW1zIHRoYXQgYGllZWU4MDIxMV90eF9kZXF1ZXVlYCBhbmQgYGllZWU4MDIxMV9uZXh0X3R4cWAgYXJlIHRoZSBrZXkgZnVuY3Rpb25zIHRvIGludmVzdGlnYXRlLCBhcyB0aGV5JiMzOTtyZSBsaWtlbHkgdGhlIHByaW1hcnkgY2FsbGVycyBvZiB0aGF0IGNoZWNrLiBNeSBuZXh0IHN0ZXAgd2lsbCBiZSB0byBkaXZlIGRlZXBlciBhbmQgYW5hbHl6ZSBhbGwgb2YgdGhlIGNhbGxlcnMgb2YgYm90aCBgaWVlZTgwMjExX3R4X2RlcXVldWVgIGFuZCBgaWVlZTgwMjExX25leHRfdHhxYC4gVGhpcyB3aWxsIGdpdmUgbWUgYSBjbGVhciBwaWN0dXJlIG9mIHRoZSBhaXJ0aW1lIGNoZWNrJiMzOTtzIGNvbnRleHQgYW5kIGhvdyBpdCBmaXRzIGludG8gdGhlIG92ZXJhbGwgdHJhbnNtaXQgcXVldWUgbWFuYWdlbWVudCBvZiB0aGUgODAyLjExIHN0YWNrLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAxODowOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpZWVlODAyMTFfKHR4X2RlcXVldWV8bmV4dF90eHEpJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS90eC5jPTM4NTQ9c3RhdGljIGJvb2wgaWVlZTgwMjExX2Ryb3BfdW5hdXRoX3BvcnQoc3RydWN0IGllZWU4MDIxMV90eF9kYXRhICp0eClcbi0tXG5uZXQvbWFjODAyMTEvdHguYy0zODg1LVxubmV0L21hYzgwMjExL3R4LmM6Mzg4NjpzdHJ1Y3Qgc2tfYnVmZiAqaWVlZTgwMjExX3R4X2RlcXVldWUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG5uZXQvbWFjODAyMTEvdHguYy0zODg3LVx0XHRcdFx0ICAgICBzdHJ1Y3QgaWVlZTgwMjExX3R4cSAqdHhxKVxuLS1cbm5ldC9tYWM4MDIxMS90eC5jLTQwNzgtfVxubmV0L21hYzgwMjExL3R4LmM6NDA3OTpFWFBPUlRfU1lNQk9MKGllZWU4MDIxMV90eF9kZXF1ZXVlKTtcbm5ldC9tYWM4MDIxMS90eC5jLTQwODAtXG4tLVxubmV0L21hYzgwMjExL3R4LmM9NDEwMT1pZWVlODAyMTFfdHhxX2tlZXBfYWN0aXZlKHN0cnVjdCB0eHFfaW5mbyAqdHhxaSlcbi0tXG5uZXQvbWFjODAyMTEvdHguYy00MTE0LVxubmV0L21hYzgwMjExL3R4LmM6NDExNTpzdHJ1Y3QgaWVlZTgwMjExX3R4cSAqaWVlZTgwMjExX25leHRfdHhxKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCB1OCBhYylcbm5ldC9tYWM4MDIxMS90eC5jLTQxMTYte1xuLS1cbm5ldC9tYWM4MDIxMS90eC5jLTQxNzctfVxubmV0L21hYzgwMjExL3R4LmM6NDE3ODpFWFBPUlRfU1lNQk9MKGllZWU4MDIxMV9uZXh0X3R4cSk7XG5uZXQvbWFjODAyMTEvdHguYy00MTc5LVxubmV0L21hYzgwMjExL3R4LmM9NDE4MD12b2lkIF9faWVlZTgwMjExX3NjaGVkdWxlX3R4cShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbi0tXG5uZXQvbWFjODAyMTEvdHguYy00MTk5LVx0XHQgKiBnZXQgaW1tZWRpYXRlbHkgbW92ZWQgdG8gdGhlIGJhY2sgb2YgdGhlIGxpc3Qgb24gdGhlIG5leHRcbm5ldC9tYWM4MDIxMS90eC5jOjQyMDA6XHRcdCAqIGNhbGwgdG8gaWVlZTgwMjExX25leHRfdHhxKCkuXG5uZXQvbWFjODAyMTEvdHguYy00MjAxLVx0XHQgKi9cbi0tXG5uZXQvbWFjODAyMTEvdXRpbC5jPTI4Nj1zdGF0aWMgdm9pZCB3YWtlX3R4X3B1c2hfcXVldWUoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXG4tLVxubmV0L21hYzgwMjExL3V0aWwuYy0yOTUtXHR3aGlsZSAoMSkge1xubmV0L21hYzgwMjExL3V0aWwuYzoyOTY6XHRcdHNrYiA9IGllZWU4MDIxMV90eF9kZXF1ZXVlKFx1MDAyNmxvY2FsLVx1MDAzZWh3LCBxdWV1ZSk7XG5uZXQvbWFjODAyMTEvdXRpbC5jLTI5Ny1cdFx0aWYgKCFza2IpXG4tLVxubmV0L21hYzgwMjExL3V0aWwuYz0zMDU9dm9pZCBpZWVlODAyMTFfaGFuZGxlX3dha2VfdHhfcXVldWUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4tLVxubmV0L21hYzgwMjExL3V0aWwuYy0zMTMtXG5uZXQvbWFjODAyMTEvdXRpbC5jOjMxNDpcdC8qIFVzZSBpZWVlODAyMTFfbmV4dF90eHEoKSBmb3IgYWlydGltZSBmYWlybmVzcyBhY2NvdW50aW5nICovXG5uZXQvbWFjODAyMTEvdXRpbC5jLTMxNS1cdGllZWU4MDIxMV90eHFfc2NoZWR1bGVfc3RhcnQoaHcsIHR4cS1cdTAwM2VhYyk7XG5uZXQvbWFjODAyMTEvdXRpbC5jOjMxNjpcdHdoaWxlICgocXVldWUgPSBpZWVlODAyMTFfbmV4dF90eHEoaHcsIHR4cS1cdTAwM2VhYykpKSB7XG5uZXQvbWFjODAyMTEvdXRpbC5jLTMxNy1cdFx0d2FrZV90eF9wdXNoX3F1ZXVlKGxvY2FsLCBzZGF0YSwgcXVldWUpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAxODowOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNTY1OQoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDk5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgV2lyZWxlc3MgVHJhbnNtaXNzaW9uIFF1ZXVlKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBpbnRvIHRoaXMgYGllZWU4MDIxMV90eHFfYWlydGltZV9jaGVja2AgZnVuY3Rpb24sIHdoaWNoIGZyb20gd2hhdCBJIHVuZGVyc3RhbmQsIGlzIGNydWNpYWwgZm9yIG1hbmFnaW5nIHBhY2tldCB0cmFuc21pc3Npb24gYW5kIHF1ZXVlIHByb2Nlc3Npbmcgd2l0aGluIHRoZSBtYWM4MDIxMSBmcmFtZXdvcmsuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgb2YgdGhlIGBUWF9OT19QVVNIQkFDS2AgZmxhZy4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgYGF0aDExa2AgaXMgdGhlIHNvbGUgZHJpdmVyIHJlc3BvbnNpYmxlIGZvciBzZXR0aW5nIHRoaXMgc3BlY2lmaWMgZmxhZy4gSSBuZWVkIHRvIGRldGVybWluZSBpZiBvdGhlciBkcml2ZXJzIG1pZ2h0IHV0aWxpemUgaXQsIG9yIGlmIHRoZXJlJiMzOTtzIGEgYnJvYWRlciBtZWNoYW5pc20gYXQgcGxheS4gVGhlcmVmb3JlLCB0aGUgbmV4dCBzdGVwIGlzIGEgbW9yZSBleGhhdXN0aXZlIGludmVzdGlnYXRpb24gaW50byB0aGUga2VybmVsIHNvdXJjZS4gSSYjMzk7bSBnb2luZyB0byBjb25kdWN0IGEgY29tcHJlaGVuc2l2ZSBzZWFyY2ggZm9yIGluc3RhbmNlcyBvZiBgVFhfTk9fUFVTSEJBQ0tgIHRocm91Z2hvdXQgdGhlIGVudGlyZSBrZXJuZWwgcmVwb3NpdG9yeSB0byBnYWluIGEgaG9saXN0aWMgdmlldyBvZiBpdHMgdXNhZ2UgYW5kIGltcGxpY2F0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMTg6MTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7VFhfTk9fUFVTSEJBQ0smIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYz0xMDQ0Mj1zdGF0aWMgaW50IF9fYXRoMTFrX21hY19yZWdpc3RlcihzdHJ1Y3QgYXRoMTFrICphcilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jLTEwNDk2LVx0aWVlZTgwMjExX2h3X3NldChhci1cdTAwM2VodywgU1VQUE9SVFNfUFMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYzoxMDQ5NzpcdGllZWU4MDIxMV9od19zZXQoYXItXHUwMDNlaHcsIFRYX05PX1BVU0hCQUNLKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmMtMTA0OTgtXHRpZWVlODAyMTFfaHdfc2V0KGFyLVx1MDAzZWh3LCBTVVBQT1JUU19EWU5BTUlDX1BTKTtcbi0tXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oPTI4MjU9c3RydWN0IGllZWU4MDIxMV90eHEge1xuLS1cbmluY2x1ZGUvbmV0L21hYzgwMjExLmgtMzA4OC0gKlxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaDozMDg5OiAqIEBJRUVFODAyMTFfSFdfVFhfTk9fUFVTSEJBQ0s6IFRoZSBkcml2ZXIgaGFuZHMgZXZlcnkgZnJhbWUgaXQgZGVxdWV1ZXNcbmluY2x1ZGUvbmV0L21hYzgwMjExLmgtMzA5MC0gKlx0dG8gdGhlIGhhcmR3YXJlIGF0IG9uY2UsIGFuZCB0aGUgaGFyZHdhcmUgcGlja3MgdGhlIHN0YXRpb24gaXQgc2VydmVzXG4tLVxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaD0zMDk3PWVudW0gaWVlZTgwMjExX2h3X2ZsYWdzIHtcbi0tXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oLTMxNTUtXHRJRUVFODAyMTFfSFdfU1VQUE9SVFNfTkRQX0JMT0NLQUNLLFxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaDozMTU2Olx0SUVFRTgwMjExX0hXX1RYX05PX1BVU0hCQUNLLFxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaC0zMTU3LVxuLS1cbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzLmM9NDA1PXN0YXRpYyBjb25zdCBjaGFyICpod19mbGFnX25hbWVzW10gPSB7XG4tLVxubmV0L21hYzgwMjExL2RlYnVnZnMuYy00NjQtXHRGTEFHKFNVUFBPUlRTX05EUF9CTE9DS0FDSyksXG5uZXQvbWFjODAyMTEvZGVidWdmcy5jOjQ2NTpcdEZMQUcoVFhfTk9fUFVTSEJBQ0spLFxubmV0L21hYzgwMjExL2RlYnVnZnMuYy00NjYtI3VuZGVmIEZMQUdcbi0tXG5uZXQvbWFjODAyMTEvdHguYz00MjIwPXN0YXRpYyB1MzIgaWVlZTgwMjExX2FxbF9zdGFfbGltaXQoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXG4tLVxubmV0L21hYzgwMjExL3R4LmMtNDIyNC1cbm5ldC9tYWM4MDIxMS90eC5jOjQyMjU6XHRpZiAoIWllZWU4MDIxMV9od19jaGVjayhcdTAwMjZsb2NhbC1cdTAwM2VodywgVFhfTk9fUFVTSEJBQ0spIHx8XG5uZXQvbWFjODAyMTEvdHguYy00MjI2LVx0ICAgIHN0YS1cdTAwM2VhaXJ0aW1lX3dlaWdodCA9PSBJRUVFODAyMTFfREVGQVVMVF9BSVJUSU1FX1dFSUdIVClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMTg6MTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzY2OTgKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiA5NTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqV29ydGggRnV6emluZyBBc3Nlc3NtZW50OiBBUUwgSW50ZWdyYXRpb24gaW4gbWFjODAyMTEqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBzY2FuIHNob3dzIHRoaXMgcGF0Y2ggdG91Y2hlcyBhIGZldyBrZXkgYXJlYXMuIEZpcnN0LCB3ZSBoYXZlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jYCwgd2hpY2ggaXMgc2V0dGluZyB0aGUgYFRYX05PX1BVU0hCQUNLYCBmbGFnIGR1cmluZyBgYXRoMTFrYCBoYXJkd2FyZSByZWdpc3RyYXRpb24uIFdlIGFsc28gc2VlIHRoZSBkZWZpbml0aW9uIG9mIHRoaXMgbmV3IGZsYWcsIGBJRUVFODAyMTFfSFdfVFhfTk9fUFVTSEJBQ0tgLCBpbiBgaW5jbHVkZS9uZXQvbWFjODAyMTEuaGAsIGFuZCBpdHMgYWRkaXRpb24gdG8gZGVidWdmcyBpbiBgbmV0L21hYzgwMjExL2RlYnVnZnMuY2AuICBGaW5hbGx5LCB0aGUgY3JpdGljYWwgcGllY2U6IGBuZXQvbWFjODAyMTEvdHguY2AsIHdoZXJlIHdlIGZpbmQgdGhlIGltcGxlbWVudGF0aW9uIG9mIGBpZWVlODAyMTFfYXFsX3N0YV9saW1pdGAgYW5kIGl0cyBpbnRlZ3JhdGlvbiBpbnRvIGBpZWVlODAyMTFfdHhxX2FpcnRpbWVfY2hlY2tgLgoKTm93LCB0aGUgaW1wb3J0YW50IHF1ZXN0aW9uIGlzIHJlYWNoYWJpbGl0eS4gQ2FuIHdlIGhpdCB0aGF0IGNvZGUgZHVyaW5nIGZ1enppbmc/IFRoZSBnb29kIG5ld3MgaXMsIGBpZWVlODAyMTFfdHhxX2FpcnRpbWVfY2hlY2soKWAgKmFsd2F5cyogZXhlY3V0ZXMgZm9yIGFpcnRpbWUgY2hlY2tzIGlmIEFRTCAoYWlydGltZSBxdWV1ZSBsaW1pdCkgaXMgZW5hYmxlZCBvbiBhIHdpcGh5LiBMb29raW5nIGF0IHRoZSBjb2RlOgoKYGBgYwoJaWYgKCF3aXBoeV9leHRfZmVhdHVyZV9pc3NldChsb2NhbC0mZ3Q7aHcud2lwaHksIE5MODAyMTFfRVhUX0ZFQVRVUkVfQVFMKSkKCQlyZXR1cm4gdHJ1ZTsKCglpZiAoc3RhdGljX2JyYW5jaF91bmxpa2VseSgmYW1wO2FxbF9kaXNhYmxlKSkKCQlyZXR1cm4gdHJ1ZTsKCglpZiAoIXR4cS0mZ3Q7c3RhKQoJCXJldHVybiBhdG9taWNfcmVhZCgmYW1wO2xvY2FsLSZndDthcWxfbWNfcGVuZGluZ19haXJ0aW1lKSAmbHQ7CgkJICAgICAgIGxvY2FsLSZndDthcWxfdHhxX2xpbWl0X21jOwoKCWlmICh1bmxpa2VseSh0eHEtJmd0O3RpZCA9PSBJRUVFODAyMTFfTlVNX1RJRFMpKQoJCXJldHVybiB0cnVlOwoKCXN0YSA9IGNvbnRhaW5lcl9vZih0eHEtJmd0O3N0YSwgc3RydWN0IHN0YV9pbmZvLCBzdGEpOwoJaWYgKGF0b21pY19yZWFkKCZhbXA7c3RhLSZndDthaXJ0aW1lW3R4cS0mZ3Q7YWNdLmFxbF90eF9wZW5kaW5nKSAmbHQ7CgkgICAgaWVlZTgwMjExX2FxbF9zdGFfbGltaXQobG9jYWwsIHN0YSwKCQkJCSAgICBzdGEtJmd0O2FpcnRpbWVbdHhxLSZndDthY10uYXFsX2xpbWl0X2xvdykpCgkJcmV0dXJuIHRydWU7CgoJaWYgKGF0b21pY19yZWFkKCZhbXA7bG9jYWwtJmd0O2FxbF90b3RhbF9wZW5kaW5nX2FpcnRpbWUpICZsdDsKCSAgICBsb2NhbC0mZ3Q7YXFsX3RocmVzaG9sZCAmYW1wOyZhbXA7CgkgICAgYXRvbWljX3JlYWQoJmFtcDtzdGEtJmd0O2FpcnRpbWVbdHhxLSZndDthY10uYXFsX3R4X3BlbmRpbmcpICZsdDsKCSAgICBpZWVlODAyMTFfYXFsX3N0YV9saW1pdChsb2NhbCwgc3RhLAoJCQkJICAgIHN0YS0mZ3Q7YWlydGltZVt0eHEtJmd0O2FjXS5hcWxfbGltaXRfaGlnaCkpCgkJcmV0dXJuIHRydWU7CgoJcmV0dXJuIGZhbHNlOwpgYGAKCkV2ZW4gaWYgYCFpZWVlODAyMTFfaHdfY2hlY2soJmFtcDtsb2NhbC0mZ3Q7aHcsIFRYX05PX1BVU0hCQUNLKWAsIHdoaWNoIGlzIHdoYXQgdGhpcyBwYXRjaCBpcyBsaWtlbHkgYWltZWQgYXQsICBgaWVlZTgwMjExX2FxbF9zdGFfbGltaXRgICp3aWxsKiBiZSBjYWxsZWQgZHVyaW5nIFRYIG9uIGBtYWM4MDIxMWAgd2hlbiBBUUwgaXMgYWN0aXZlLiBBbmQgbGV0JiMzOTtzIGJlIGNsZWFyOiBgbWFjODAyMTFgIGlzIGEgY29yZSBzdWJzeXN0ZW0uCgpOb3csIGNhbiB3ZSByZWFjaCBgbWFjODAyMTFgIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFPyBBYnNvbHV0ZWx5LiAgV2UgaGF2ZSBgbmV0bGluayAobmw4MDIxMSlgLCBgbWFjODAyMTFfaHdzaW1gLCB2aXJ0dWFsIGludGVyZmFjZXMsIHNvY2tldHMsIGV0Yy4sIGFsbCBwcm92aWRpbmcgcGF0aHMgaW4uIFN5emthbGxlciwgd2hpY2ggSSYjMzk7bSB2ZXJ5IGZhbWlsaWFyIHdpdGgsIGV4dGVuc2l2ZWx5IGV4ZXJjaXNlcyBgbWFjODAyMTFgIGFuZCBgbmw4MDIxMWAuCgpTbywgY29uc2lkZXJpbmcgb3VyIGNyaXRlcmlhOgoKKiAgICoqUmVhY2hhYmlsaXR5Kio6IFllcywgYG1hYzgwMjExYCBpcyByZWFjaGFibGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSB0aGUgbWV0aG9kcyBhYm92ZS4KKiAgICoqQ29yZSBTdWJzeXN0ZW0gTW9kaWZpY2F0aW9uKio6ICBXZSYjMzk7cmUgbW9kaWZ5aW5nIGBtYWM4MDIxMWAgdHggc2NoZWR1bGluZyAvIEFRTCBsb2dpYywgd2hpY2ggaXMgY3JpdGljYWwuCiogICAqKldvcnRoIEZ1enppbmcqKjogICoqVFJVRSoqLiAgVGhpcyBpcyBhIHByaW1lIHRhcmdldC4KCk5leHQsIEkmIzM5O2xsIGNoZWNrIHRoZSBLY29uZmlnIGRlcGVuZGVuY2llcyBmb3IgYE1BQzgwMjExYCBhbmQgYEFUSDExS2AgdG8gZW5zdXJlIHRoaXMgaXMgYWxsIHByb3Blcmx5IGVuYWJsZWQgZm9yIG91ciBmdXp6aW5nIHNldHVwcy4gIFdlJiMzOTtyZSBsb29raW5nIGZvciBhbnkgcG90ZW50aWFsIG9ic3RhY2xlcywgYnV0IGJhc2VkIG9uIHRoaXMgaW5pdGlhbCBhbmFseXNpcywgdGhpcyBwYXRjaCBkZWZpbml0ZWx5IHdhcnJhbnRzIGZ1cnRoZXIgaW52ZXN0aWdhdGlvbiBhbmQgZnV6emluZyBlZmZvcnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDE4OjEwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBNQUM4MDIxMSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxubmV0L21hYzgwMjExL0tjb25maWc6Mjpjb25maWcgTUFDODAyMTFcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtHZW5lcmljIElFRUUgODAyLjExIE5ldHdvcmtpbmcgU3RhY2sgKG1hYzgwMjExKVwmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnPTE5PWlmIE1BQzgwMjExICE9IG5cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIwLVxubmV0L21hYzgwMjExL0tjb25maWc6MjE6Y29uZmlnIE1BQzgwMjExX0hBU19SQ1xubmV0L21hYzgwMjExL0tjb25maWctMjItXHRib29sXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMy1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI0OmNvbmZpZyBNQUM4MDIxMV9SQ19NSU5TVFJFTFxubmV0L21hYzgwMjExL0tjb25maWctMjUtXHRib29sIFwmIzM0O01pbnN0cmVsXCYjMzQ7IGlmIEVYUEVSVFxuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnPTMxPWNob2ljZVxuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTQwLVxubmV0L21hYzgwMjExL0tjb25maWc6NDE6Y29uZmlnIE1BQzgwMjExX1JDX0RFRkFVTFRfTUlOU1RSRUxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTQyLVx0Ym9vbCBcJiMzNDtNaW5zdHJlbFwmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnPTQ4PWVuZGNob2ljZVxubmV0L21hYzgwMjExL0tjb25maWctNDktXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo1MDpjb25maWcgTUFDODAyMTFfUkNfREVGQVVMVFxubmV0L21hYzgwMjExL0tjb25maWctNTEtXHRzdHJpbmdcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZz01Nz1jb21tZW50IFwmIzM0O1NvbWUgd2lyZWxlc3MgZHJpdmVycyByZXF1aXJlIGEgcmF0ZSBjb250cm9sIGFsZ29yaXRobVwmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTU5LVxubmV0L21hYzgwMjExL0tjb25maWc6NjA6Y29uZmlnIE1BQzgwMjExX0tVTklUX1RFU1Rcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTYxLVx0dHJpc3RhdGUgXCYjMzQ7S1VuaXQgdGVzdHMgZm9yIG1hYzgwMjExXCYjMzQ7IGlmICFLVU5JVF9BTExfVEVTVFNcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy02OS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjcwOmNvbmZpZyBNQUM4MDIxMV9NRVNIXG5uZXQvbWFjODAyMTEvS2NvbmZpZy03MS1cdGJvb2wgXCYjMzQ7RW5hYmxlIG1hYzgwMjExIG1lc2ggbmV0d29ya2luZyBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctNzgtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo3OTpjb25maWcgTUFDODAyMTFfTEVEU1xubmV0L21hYzgwMjExL0tjb25maWctODAtXHRib29sIFwmIzM0O0VuYWJsZSBMRUQgdHJpZ2dlcnNcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy04Ny1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjg4OmNvbmZpZyBNQUM4MDIxMV9ERUJVR0ZTXG5uZXQvbWFjODAyMTEvS2NvbmZpZy04OS1cdGJvb2wgXCYjMzQ7RXhwb3J0IG1hYzgwMjExIGludGVybmFscyBpbiBEZWJ1Z0ZTXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctOTYtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo5Nzpjb25maWcgTUFDODAyMTFfTUVTU0FHRV9UUkFDSU5HXG5uZXQvbWFjODAyMTEvS2NvbmZpZy05OC1cdGJvb2wgXCYjMzQ7VHJhY2UgYWxsIG1hYzgwMjExIGRlYnVnIG1lc3NhZ2VzXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMTA5LVxubmV0L21hYzgwMjExL0tjb25maWc6MTEwOm1lbnVjb25maWcgTUFDODAyMTFfREVCVUdfTUVOVVxubmV0L21hYzgwMjExL0tjb25maWctMTExLVx0Ym9vbCBcJiMzNDtTZWxlY3QgbWFjODAyMTEgZGVidWdnaW5nIGZlYXR1cmVzXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMTE1LVxubmV0L21hYzgwMjExL0tjb25maWc6MTE2OmNvbmZpZyBNQUM4MDIxMV9OT0lOTElORVxubmV0L21hYzgwMjExL0tjb25maWctMTE3LVx0Ym9vbCBcJiMzNDtEbyBub3QgaW5saW5lIFRYL1JYIGhhbmRsZXJzXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMTMxLVxubmV0L21hYzgwMjExL0tjb25maWc6MTMyOmNvbmZpZyBNQUM4MDIxMV9WRVJCT1NFX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMzMtXHRib29sIFwmIzM0O1ZlcmJvc2UgZGVidWdnaW5nIG91dHB1dFwmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE0Mi1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE0Mzpjb25maWcgTUFDODAyMTFfTUxNRV9ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMTQ0LVx0Ym9vbCBcJiMzNDtWZXJib3NlIG1hbmFnZWQgTUxNRSBvdXRwdXRcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNTMtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxNTQ6Y29uZmlnIE1BQzgwMjExX1NUQV9ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMTU1LVx0Ym9vbCBcJiMzNDtWZXJib3NlIHN0YXRpb24gZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMTYyLVxubmV0L21hYzgwMjExL0tjb25maWc6MTYzOmNvbmZpZyBNQUM4MDIxMV9IVF9ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMTY0LVx0Ym9vbCBcJiMzNDtWZXJib3NlIEhUIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE3NC1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE3NTpjb25maWcgTUFDODAyMTFfT0NCX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNzYtXHRib29sIFwmIzM0O1ZlcmJvc2UgT0NCIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE4NS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE4Njpjb25maWcgTUFDODAyMTFfSUJTU19ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMTg3LVx0Ym9vbCBcJiMzNDtWZXJib3NlIElCU1MgZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMTk2LVxubmV0L21hYzgwMjExL0tjb25maWc6MTk3OmNvbmZpZyBNQUM4MDIxMV9QU19ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMTk4LVx0Ym9vbCBcJiMzNDtWZXJib3NlIHBvd2Vyc2F2ZSBtb2RlIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIwOC1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIwOTpjb25maWcgTUFDODAyMTFfTVBMX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMTAtXHRib29sIFwmIzM0O1ZlcmJvc2UgbWVzaCBwZWVyIGxpbmsgZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMjIxLVxubmV0L21hYzgwMjExL0tjb25maWc6MjIyOmNvbmZpZyBNQUM4MDIxMV9NUEFUSF9ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMjIzLVx0Ym9vbCBcJiMzNDtWZXJib3NlIG1lc2ggcGF0aCBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMzQtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMzU6Y29uZmlnIE1BQzgwMjExX01IV01QX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMzYtXHRib29sIFwmIzM0O1ZlcmJvc2UgbWVzaCBIV01QIHJvdXRpbmcgZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMjQ3LVxubmV0L21hYzgwMjExL0tjb25maWc6MjQ4OmNvbmZpZyBNQUM4MDIxMV9NRVNIX1NZTkNfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI0OS1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBtZXNoIHN5bmNocm9uaXphdGlvbiBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNTgtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNTk6Y29uZmlnIE1BQzgwMjExX01FU0hfQ1NBX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNjAtXHRib29sIFwmIzM0O1ZlcmJvc2UgbWVzaCBjaGFubmVsIHN3aXRjaCBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNjktXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNzA6Y29uZmlnIE1BQzgwMjExX01FU0hfUFNfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI3MS1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBtZXNoIHBvd2Vyc2F2ZSBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yODAtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyODE6Y29uZmlnIE1BQzgwMjExX1RETFNfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI4Mi1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBURExTIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI5Mi1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI5Mzpjb25maWcgTUFDODAyMTFfREVCVUdfQ09VTlRFUlNcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI5NC1cdGJvb2wgXCYjMzQ7RXh0cmEgc3RhdGlzdGljcyBmb3IgVFgvUlggZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMzA3LVxubmV0L21hYzgwMjExL0tjb25maWc6MzA4OmNvbmZpZyBNQUM4MDIxMV9TVEFfSEFTSF9NQVhfU0laRVxubmV0L21hYzgwMjExL0tjb25maWctMzA5LVx0aW50IFwmIzM0O1N0YXRpb24gaGFzaCB0YWJsZSBtYXhpbXVtIHNpemVcJiMzNDsgaWYgTUFDODAyMTFfREVCVUdfTUVOVVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAxODoxMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MDg0MwoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDM0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUmIzM5O3MgaG93IEkmIzM5O2QgYXBwcm9hY2ggdGhhdCBrZXJuZWwgY29uZmlndXJhdGlvbiBmaWxlIGNoZWNrOgoKKipFeGFtaW5pbmcgTUFDODAyMTEgRGVwZW5kZW5jaWVzKioKCkFscmlnaHQsIGJlZm9yZSBJIGdldCB0b28gZGVlcCBpbnRvIHRoaXMgcHJvYmxlbSwgSSB3YW50IHRvIHRha2UgYSBsb29rIGF0IHRoZSBgbmV0L21hYzgwMjExL0tjb25maWdgIGZpbGUsIHNwZWNpZmljYWxseSBsaW5lcyAxIHRocm91Z2ggMjAuIFRoYXQmIzM5O3MgdXN1YWxseSBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgdG8gdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzIGFuZCBjb3JlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIE1BQzgwMjExIHdpcmVsZXNzIHN0YWNrLiBJJiMzOTttIGV4cGVjdGluZyB0byBzZWUgdGhpbmdzIGxpa2UgcGxhdGZvcm0gZHJpdmVycyB0aGF0IGl0IHJlbGllcyBvbiwgdmFyaW91cyBmZWF0dXJlIGZsYWdzLCBhbmQgcG90ZW50aWFsbHkgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIGluIHRoYXQgaW5pdGlhbCBzZWN0aW9uLiBUaGlzJiMzOTtsbCBoZWxwIG1lIGJ1aWxkIGEgbWVudGFsIG1vZGVsIG9mIHRoZSByZXF1aXJlbWVudHMgYmVmb3JlIEkgc3RhcnQgZGlnZ2luZyBpbnRvIGFueSBwYXJ0aWN1bGFyIGlzc3VlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IG90aGVyIGNvbXBvbmVudHMgdGhlIE1BQzgwMjExIGxheWVyIGxpbmtzIHRvIHNvIEkgY2FuIGdldCBhIGZ1bGxlciBwaWN0dXJlIG9mIGl0cyByZWxhdGlvbnNoaXAgdG8gdGhlIHN5c3RlbSBhcyBhIHdob2xlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAxODoxMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyNQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0Y29uZmlnIE1BQzgwMjExXG4gICAzOlx0XHR0cmlzdGF0ZSBcJiMzNDtHZW5lcmljIElFRUUgODAyLjExIE5ldHdvcmtpbmcgU3RhY2sgKG1hYzgwMjExKVwmIzM0O1xuICAgNDpcdFx0ZGVwZW5kcyBvbiBDRkc4MDIxMVxuICAgNTpcdFx0c2VsZWN0IENSWVBUT1xuICAgNjpcdFx0c2VsZWN0IENSWVBUT19MSUJfQUVTX0NCQ19NQUNTXG4gICA3Olx0XHRzZWxlY3QgQ1JZUFRPX0xJQl9BUkM0XG4gICA4Olx0XHRzZWxlY3QgQ1JZUFRPX0FFU1xuICAgOTpcdFx0c2VsZWN0IENSWVBUT19DQ01cbiAgMTA6XHRcdHNlbGVjdCBDUllQVE9fR0NNXG4gIDExOlx0XHRzZWxlY3QgQ1JDMzJcbiAgMTI6XHRcdGhlbHBcbiAgMTM6XHRcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyB0aGUgaGFyZHdhcmUgaW5kZXBlbmRlbnQgSUVFRSA4MDIuMTFcbiAgMTQ6XHRcdCAgbmV0d29ya2luZyBzdGFjay5cbiAgMTU6XHRcbiAgMTY6XHRjb21tZW50IFwmIzM0O0NGRzgwMjExIG5lZWRzIHRvIGJlIGVuYWJsZWQgZm9yIE1BQzgwMjExXCYjMzQ7XG4gIDE3Olx0XHRkZXBlbmRzIG9uIENGRzgwMjExPW5cbiAgMTg6XHRcbiAgMTk6XHRpZiBNQUM4MDIxMSAhPSBuXG4gIDIwOlx0XG4gIDIxOlx0Y29uZmlnIE1BQzgwMjExX0hBU19SQ1xuICAyMjpcdFx0Ym9vbFxuICAyMzpcdFxuICAyNDpcdGNvbmZpZyBNQUM4MDIxMV9SQ19NSU5TVFJFTFxuICAyNTpcdFx0Ym9vbCBcJiMzNDtNaW5zdHJlbFwmIzM0OyBpZiBFWFBFUlRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMTg6MTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDE0NTIKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiAxNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgdGhlIG9uZSB0aGlua2luZyBpdDoKCioqRGlnZ2luZyBEZWVwZXI6IENGRzgwMjExIERlcGVuZGVuY2llcyoqCgpPa2F5LCBzbyB3ZSYjMzk7dmUgYmVlbiBsb29raW5nIGF0IHRoaXMgaXNzdWUgZnJvbSBhIGZldyBhbmdsZXMsIGFuZCBJIHRoaW5rIHdlIG5lZWQgdG8gYnJvYWRlbiBvdXIgc2NvcGUganVzdCBhIGJpdC4gV2hpbGUgdGhlIGluaXRpYWwgZm9jdXMgd2FzIFtvcmlnaW5hbCBwcm9ibGVtIGFyZWEsIGlmIGdpdmVuIGluIHRoZSBjb250ZXh0XSwgaXQmIzM5O3MgYWxzbyB3b3J0aCBjaGVja2luZyB0aGUgYENGRzgwMjExYCBkZXBlbmRlbmNpZXMuIEl0JiMzOTtzIGEga2V5IGNvbXBvbmVudCBpbiB0aGUgd2lyZWxlc3Mgc3RhY2ssIGFuZCBhIHBvdGVudGlhbCBoaWNjdXAgdGhlcmUgY291bGQgZWFzaWx5IGJlIGNhdXNpbmcgdGhlc2Ugc3ltcHRvbXMsIGVpdGhlciBkaXJlY3RseSBvciBpbmRpcmVjdGx5LiBJdCYjMzk7cyB0aGUgc29ydCBvZiBkZXRhaWwgdGhhdCBjYW4gZ2V0IG92ZXJsb29rZWQgaW4gdGhlIGJpZ2dlciBwaWN0dXJlLCBidXQgSSYjMzk7dmUgbGVhcm5lZCB0aGF0IG92ZXJsb29raW5nIGl0IGlzIG5vdCBhIGx1eHVyeSBJIGNhbiBhZmZvcmQgYXQgdGhpcyBwb2ludC4gVGltZSB0byB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgdGhhdCBtb2R1bGUgYW5kIGl0cyBpbnRlcmFjdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDE4OjEwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBDRkc4MDIxMSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC93aXJlbGVzcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvd2lyZWxlc3MvS2NvbmZpZz0xND1jb25maWcgV0VYVF9QUklWXG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctMTYtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxNzpjb25maWcgQ0ZHODAyMTFcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE4LVx0dHJpc3RhdGUgXCYjMzQ7Y2ZnODAyMTEgLSB3aXJlbGVzcyBjb25maWd1cmF0aW9uIEFQSVwmIzM0O1xuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnPTM4PWNvbmZpZyBOTDgwMjExX1RFU1RNT0RFXG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctNTEtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzo1Mjpjb25maWcgQ0ZHODAyMTFfREVWRUxPUEVSX1dBUk5JTkdTXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy01My1cdGJvb2wgXCYjMzQ7ZW5hYmxlIGRldmVsb3BlciB3YXJuaW5nc1wmIzM0O1xuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTY3LVxubmV0L3dpcmVsZXNzL0tjb25maWc6Njg6Y29uZmlnIENGRzgwMjExX0NFUlRJRklDQVRJT05fT05VU1xubmV0L3dpcmVsZXNzL0tjb25maWctNjktXHRib29sIFwmIzM0O2NmZzgwMjExIGNlcnRpZmljYXRpb24gb251c1wmIzM0O1xuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTg4LVxubmV0L3dpcmVsZXNzL0tjb25maWc6ODk6Y29uZmlnIENGRzgwMjExX1JFUVVJUkVfU0lHTkVEX1JFR0RCXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy05MC1cdGJvb2wgXCYjMzQ7cmVxdWlyZSByZWdkYiBzaWduYXR1cmVcJiMzNDsgaWYgQ0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTXG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctOTgtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzo5OTpjb25maWcgQ0ZHODAyMTFfVVNFX0tFUk5FTF9SRUdEQl9LRVlTXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMDAtXHRib29sIFwmIzM0O2FsbG93IHJlZ2RiIGtleXMgc2hpcHBlZCB3aXRoIHRoZSBrZXJuZWxcJiMzNDsgaWYgQ0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTXG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctMTEwLVxubmV0L3dpcmVsZXNzL0tjb25maWc6MTExOmNvbmZpZyBDRkc4MDIxMV9FWFRSQV9SRUdEQl9LRVlESVJcbm5ldC93aXJlbGVzcy9LY29uZmlnLTExMi1cdHN0cmluZyBcJiMzNDthZGRpdGlvbmFsIHJlZ2RiIGtleSBkaXJlY3RvcnlcJiMzNDsgaWYgQ0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTXG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctMTIxLVxubmV0L3dpcmVsZXNzL0tjb25maWc6MTIyOmNvbmZpZyBDRkc4MDIxMV9SRUdfQ0VMTFVMQVJfSElOVFNcbm5ldC93aXJlbGVzcy9LY29uZmlnLTEyMy1cdGJvb2wgXCYjMzQ7Y2ZnODAyMTEgcmVndWxhdG9yeSBzdXBwb3J0IGZvciBjZWxsdWxhciBiYXNlIHN0YXRpb24gaGludHNcJiMzNDtcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMzQtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxMzU6Y29uZmlnIENGRzgwMjExX1JFR19SRUxBWF9OT19JUlxubmV0L3dpcmVsZXNzL0tjb25maWctMTM2LVx0Ym9vbCBcJiMzNDtjZmc4MDIxMSBzdXBwb3J0IGZvciBOT19JUiByZWxheGF0aW9uXCYjMzQ7XG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctMTU4LVxubmV0L3dpcmVsZXNzL0tjb25maWc6MTU5OmNvbmZpZyBDRkc4MDIxMV9ERUZBVUxUX1BTXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNjAtXHRib29sIFwmIzM0O2VuYWJsZSBwb3dlcnNhdmUgYnkgZGVmYXVsdFwmIzM0O1xuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTE2OC1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjE2OTpjb25maWcgQ0ZHODAyMTFfREVCVUdGU1xubmV0L3dpcmVsZXNzL0tjb25maWctMTcwLVx0Ym9vbCBcJiMzNDtjZmc4MDIxMSBEZWJ1Z0ZTIGVudHJpZXNcJiMzNDtcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNzYtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxNzc6Y29uZmlnIENGRzgwMjExX0NSREFfU1VQUE9SVFxubmV0L3dpcmVsZXNzL0tjb25maWctMTc4LVx0Ym9vbCBcJiMzNDtzdXBwb3J0IENSREFcJiMzNDsgaWYgRVhQRVJUXG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctMTg2LVxubmV0L3dpcmVsZXNzL0tjb25maWc6MTg3OmNvbmZpZyBDRkc4MDIxMV9XRVhUXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xODgtXHRib29sIFwmIzM0O2NmZzgwMjExIHdpcmVsZXNzIGV4dGVuc2lvbnMgY29tcGF0aWJpbGl0eVwmIzM0O1xuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTE5My1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjE5NDpjb25maWcgQ0ZHODAyMTFfS1VOSVRfVEVTVFxubmV0L3dpcmVsZXNzL0tjb25maWctMTk1LVx0dHJpc3RhdGUgXCYjMzQ7S1VuaXQgdGVzdHMgZm9yIGNmZzgwMjExXCYjMzQ7IGlmICFLVU5JVF9BTExfVEVTVFNcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMTg6MTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDI1OTQKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAxMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSBkZXBlbmRlbmNpZXMsIGFzIGlmIEkgd2VyZSB0aGlua2luZyBpdDoKCioqRGlnZ2luZyBpbnRvIEFUSDExSyBEZXBlbmRlbmNpZXMqKgoKT2theSwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkgd2l0aCBgQVRIMTFLYC4gRmlyc3QgdGhpbmdzIGZpcnN0LCBsZXQmIzM5O3MgbmFpbCBkb3duIHRob3NlIGRlcGVuZGVuY2llcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGlzIHRoaW5nIGlzIGxlYW5pbmcgb24gdG8gbWFrZSBzdXJlIEkgZG9uJiMzOTt0IG1pc3MgYW55dGhpbmcgY3J1Y2lhbC4gSSYjMzk7bSB0aGlua2luZyBkcml2ZXJzLCBmaXJtd2FyZSB2ZXJzaW9ucywgc3BlY2lmaWMgaGFyZHdhcmUgcmV2aXNpb25zIOKAkyB0aGUgd2hvbGUgc2hlYmFuZy4gTGV0JiMzOTtzIHN0YXJ0IG1hcHBpbmcgb3V0IHRoZSByZWxhdGlvbnNoaXBzLCBwaWVjZSBieSBwaWVjZSwgc28gSSBjYW4gaGF2ZSBhIGNvbXBsZXRlIHBpY3R1cmUgb2YgaXRzIGVjb3N5c3RlbS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMTg6MTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEFUSDExSyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWc6Mjpjb25maWcgQVRIMTFLXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O1F1YWxjb21tIDgwMi4xMWF4IGNoaXBzZXQgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZy0xMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZzoxMzpjb25maWcgQVRIMTFLX0FIQlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTE0LVx0dHJpc3RhdGUgXCYjMzQ7QXRoZXJvcyBhdGgxMWsgQUhCIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWctMTktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWc6MjA6Y29uZmlnIEFUSDExS19QQ0lcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZy0yMS1cdHRyaXN0YXRlIFwmIzM0O0F0aGVyb3MgYXRoMTFrIFBDSSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTI5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnOjMwOmNvbmZpZyBBVEgxMUtfREVCVUdcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZy0zMS1cdGJvb2wgXCYjMzQ7UUNBIGF0aDExayBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWctMzctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWc6Mzg6Y29uZmlnIEFUSDExS19ERUJVR0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWctMzktXHRib29sIFwmIzM0O1FDQSBhdGgxMWsgZGVidWdmcyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTQ1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnOjQ2OmNvbmZpZyBBVEgxMUtfVFJBQ0lOR1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTQ3LVx0Ym9vbCBcJiMzNDthdGgxMWsgdHJhY2luZyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTUxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnOjUyOmNvbmZpZyBBVEgxMUtfU1BFQ1RSQUxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZy01My1cdGJvb2wgXCYjMzQ7UUNBIGF0aDExayBzcGVjdHJhbCBzY2FuIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWctNjAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWc6NjE6Y29uZmlnIEFUSDExS19DRlJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZy02Mi1cdGJvb2wgXCYjMzQ7YXRoMTFrIGNoYW5uZWwgZnJlcXVlbmN5IHJlc3BvbnNlIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMTg6MTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDM0NDQKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiAyOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyBpZiBJIHdlcmUgdGhpbmtpbmcgdGhlc2UgdGhvdWdodHM6CgoqKkV4YW1pbmluZyB0aGUgQXRoMTFrIEtjb25maWcgQ29uZmlndXJhdGlvbioqCgpPa2F5LCB0aW1lIHRvIGRpdmUgaW50byB0aGUgQXRoZXJvcyAxMWsgZHJpdmVyJiMzOTtzIGNvbmZpZ3VyYXRpb24uIExldCYjMzk7cyBzdGFydCBieSBzY3J1dGluaXppbmcgdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWdgIGZpbGUsIHNwZWNpZmljYWxseSB0aGUgZmlyc3QgMjUgbGluZXMuIFRoaXMgdXN1YWxseSBjb250YWlucyB0aGUgY29yZSBzZWxlY3Rpb24gb3B0aW9ucywgYW55IGRlcGVuZGVuY2llcyBvbiBvdGhlciBzdWJzeXN0ZW1zLCBhbmQgcG90ZW50aWFsbHkgc29tZSBiYXNpYyBkZWZhdWx0IHNldHRpbmdzLiBJJiMzOTttIGxvb2tpbmcgZm9yIHRoZSBmb3VuZGF0aW9uYWwgYnVpbGRpbmcgYmxvY2tzIG9mIGhvdyB0aGlzIGRyaXZlciBpcyBjb25maWd1cmVkIHdpdGhpbiB0aGUga2VybmVsLiBJIGV4cGVjdCB0byBzZWUgdGhlIG1haW4gZHJpdmVyIGVuYWJsZS9kaXNhYmxlIG9wdGlvbiwgbGlrZWx5IGBDT05GSUdfQVRIMTFLYCwgYW5kIGl0cyBkZXBlbmRlbmNpZXMgb24gY29yZSB3aXJlbGVzcyBpbmZyYXN0cnVjdHVyZSBsaWtlIHRoZSBjZmc4MDIxMSBsYXllciwgbWFjODAyMTEsIGFuZCB0aGUgYXRoIG1vZHVsZSBpbiBnZW5lcmFsLiBJ4oCZbGwgYmUgcGF5aW5nIGNsb3NlIGF0dGVudGlvbiB0byBhbnkgY29uZGl0aW9uYWwgZGVwZW5kZW5jaWVzIHRoYXQgbWlnaHQgcmVxdWlyZSBhIHNwZWNpZmljIGhhcmR3YXJlIHBsYXRmb3JtIG9yIGZpcm13YXJlIHZlcnNpb24uIFVuZGVyc3RhbmRpbmcgdGhpcyBpbml0aWFsIHNlY3Rpb24gd2lsbCBwYWludCBhIGNsZWFyIHBpY3R1cmUgb2YgaG93IHRvIGVuYWJsZSwgZGlzYWJsZSwgYW5kIHRhaWxvciB0aGUgQXRoMTFrIGRyaXZlciYjMzk7cyBmdW5jdGlvbmFsaXR5IGF0IGNvbXBpbGUgdGltZS4gSXTigJlzIHRoZSBzdGFydGluZyBwb2ludCBmb3IgdW5kZXJzdGFuZGluZyBob3cgdGhlIHVzZXIgY2FuIGV2ZW4gY2hvb3NlIHRvIGVuYWJsZSB0aGlzIGRyaXZlciBvciBub3QuIEFueSBpbml0aWFsIGFzc3VtcHRpb25zIG9yIGNvbmZpZ3VyYXRpb25zIHdpbGwgbGlrZWx5IGJlIHNldCBpbiB0aGVzZSBmaXJzdCAyNSBsaW5lcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMTg6MTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDI1Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcbiAgIDI6XHRjb25maWcgQVRIMTFLXG4gICAzOlx0XHR0cmlzdGF0ZSBcJiMzNDtRdWFsY29tbSA4MDIuMTFheCBjaGlwc2V0IHN1cHBvcnRcJiMzNDtcbiAgIDQ6XHRcdGRlcGVuZHMgb24gTUFDODAyMTEgXHUwMDI2XHUwMDI2IEhBU19ETUFcbiAgIDU6XHRcdHNlbGVjdCBBVEhfQ09NTU9OXG4gICA2Olx0XHRzZWxlY3QgUUNPTV9RTUlfSEVMUEVSU1xuICAgNzpcdFx0aGVscFxuICAgODpcdFx0ICBUaGlzIG1vZHVsZSBhZGRzIHN1cHBvcnQgZm9yIFF1YWxjb21tIFRlY2hub2xvZ2llcyA4MDIuMTFheCBmYW1pbHkgb2ZcbiAgIDk6XHRcdCAgY2hpcHNldHMuXG4gIDEwOlx0XG4gIDExOlx0XHQgIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgYSBtb2R1bGUsIGl0JiMzOTtsbCBiZSBjYWxsZWQgYXRoMTFrLlxuICAxMjpcdFxuICAxMzpcdGNvbmZpZyBBVEgxMUtfQUhCXG4gIDE0Olx0XHR0cmlzdGF0ZSBcJiMzNDtBdGhlcm9zIGF0aDExayBBSEIgc3VwcG9ydFwmIzM0O1xuICAxNTpcdFx0ZGVwZW5kcyBvbiBBVEgxMUtcbiAgMTY6XHRcdGRlcGVuZHMgb24gUkVNT1RFUFJPQ1xuICAxNzpcdFx0aGVscFxuICAxODpcdFx0ICBUaGlzIG1vZHVsZSBhZGRzIHN1cHBvcnQgZm9yIEFIQiBidXNcbiAgMTk6XHRcbiAgMjA6XHRjb25maWcgQVRIMTFLX1BDSVxuICAyMTpcdFx0dHJpc3RhdGUgXCYjMzQ7QXRoZXJvcyBhdGgxMWsgUENJIHN1cHBvcnRcJiMzNDtcbiAgMjI6XHRcdGRlcGVuZHMgb24gQVRIMTFLIFx1MDAyNlx1MDAyNiBQQ0lcbiAgMjM6XHRcdHNlbGVjdCBNSElfQlVTXG4gIDI0Olx0XHRzZWxlY3QgUVJUUlxuICAyNTpcdFx0c2VsZWN0IFFSVFJfTUhJXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDE4OjEwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ0MTIyCgkJCQkJCQlvdXRwdXQ6IDI2MwoJCQkJCQkJdGhvdWdodHM6IDExMjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRm9jdXNpbmcgb24gQWlydGltZSBRdWV1ZSBMaW1pdHM6IEEgRGVlcCBEaXZlKioKCk9rYXksIGxldCYjMzk7cyBuYWlsIGRvd24gdGhlc2UgRm9jdXNTeW1ib2xzLiBNeSBpbml0aWFsIHBhc3MgaGFzIGlkZW50aWZpZWQgYSBmZXcga2V5IGZ1bmN0aW9ucyB0aGF0IGhhdmUgYmVlbiBtb2RpZmllZCBvciBhZGRlZDoKCjEuICBgaWVlZTgwMjExX2FxbF9zdGFfbGltaXRgIChzdGF0aWMsIGluIGBuZXQvbWFjODAyMTEvdHguY2ApCjIuICBgaWVlZTgwMjExX3R4cV9haXJ0aW1lX2NoZWNrYCAoaW4gYG5ldC9tYWM4MDIxMS90eC5jYCkKMy4gIGBpZWVlODAyMTFfdHhfZGVxdWV1ZWAgKGNhbGxzIGBpZWVlODAyMTFfdHhxX2FpcnRpbWVfY2hlY2tgLCBpbiBgbmV0L21hYzgwMjExL3R4LmNgKQo0LiAgYGllZWU4MDIxMV9uZXh0X3R4cWAgKGFsc28gY2FsbHMgYGllZWU4MDIxMV90eHFfYWlydGltZV9jaGVja2AsIGluIGBuZXQvbWFjODAyMTEvdHguY2ApCjUuICBgX19hdGgxMWtfbWFjX3JlZ2lzdGVyYCAoaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmNgKQoKTm93LCBhIHF1aWNrIGNoZWNrIG9uIHRoZSBzdGF0aWMgbmF0dXJlIG9mIGBpZWVlODAyMTFfYXFsX3N0YV9saW1pdGAuLi4gQWgsIHllcywgaXQmIzM5O3Mgc3RhdGljLiBCdXQsIGNyaXRpY2FsbHksIGBpZWVlODAyMTFfdHhxX2FpcnRpbWVfY2hlY2tgIGlzIGV4cG9ydGVkLCBhcyBhcmUgYGllZWU4MDIxMV90eF9kZXF1ZXVlYCBhbmQgYGllZWU4MDIxMV9uZXh0X3R4cWAuIFRoaXMgbWVhbnMgdGhlIGFpcnRpbWUgY2hlY2tpbmcgaXMgZGVmaW5pdGVseSBleHBvc2VkLiBUaGUgY2FsY3VsYXRpb24gYW5kIHJlbGF0ZWQgY2FsbHMgd2VyZSBjaGFuZ2VkIGluIGBpZWVlODAyMTFfdHhxX2FpcnRpbWVfY2hlY2tgLCBzbyBpdCYjMzk7cyBhIHByaW1lIHRhcmdldC4gU2luY2UgYGllZWU4MDIxMV9hcWxfc3RhX2xpbWl0YCBpcyBhIHN0YXRpYyBDIGZ1bmN0aW9uLCBpdCYjMzk7cyBsaWtlbHkgdG8gYmUgaW5saW5lZCBpbnRvIGBpZWVlODAyMTFfdHhxX2FpcnRpbWVfY2hlY2tgLCBzbyBpdCYjMzk7cyBhbHNvIHdvcnRoIGV4YW1pbmluZy4KClRoZXJlZm9yZSwgYGllZWU4MDIxMV90eHFfYWlydGltZV9jaGVja2AgYmVjb21lcyBhIGtleSBmb2N1cyBzeW1ib2wsIGFsb25nIHdpdGggYGllZWU4MDIxMV9uZXh0X3R4cWAsIGBpZWVlODAyMTFfdHhfZGVxdWV1ZWAsIGFuZCBgX19hdGgxMWtfbWFjX3JlZ2lzdGVyYC4KCk5leHQsIEkgbmVlZCB0byBjaGVjayB0aGUgRW5hYmxlQ29uZmlncy4gVGhlIHJlbGV2YW50IG9uZXMgc2VlbSB0byBiZToKCiogICBgTUFDODAyMTFgCiogICBgQ0ZHODAyMTFgIChwYXJlbnQpCiogICBgQVRIMTFLYAoKSSBzaG91bGQgc2VlIGlmIGBNQUM4MDIxMV9ERUJVR0ZTYCwgYEFUSDExS19QQ0lgIC8gYEFUSDExS19BSEJgLCBvciBgTUFDODAyMTFfSFdTSU1gIGFyZSByZWxldmFudC4gYE1BQzgwMjExYCBpcyB0aGUgY29yZSwgYENGRzgwMjExYCBpcyBpdHMgcGFyZW50LiBgQVRIMTFLYCBzZWVtcyB0byBoYW5kbGUgdGhlIGRyaXZlciBzaWRlLCBjb21waWxpbmcgYGF0aDExay9tYWMuY2AuICBgTUFDODAyMTFfREVCVUdGU2AgaXMgd29ydGggaW5jbHVkaW5nLgoKTGV0JiMzOTtzIGRvIGEgZmluYWwgc2FuaXR5IGNoZWNrLCBlbnN1cmluZyBldmVyeXRoaW5nIGlzIGFzIGV4cGVjdGVkOgoKKiAgIGBXb3J0aEZ1enppbmc6IHRydWVgIC0gR29vZC4KKiAgIGBFbmFibGVDb25maWdzYDogYFsmIzM0O01BQzgwMjExJiMzNDssICYjMzQ7Q0ZHODAyMTEmIzM0OywgJiMzNDtBVEgxMUsmIzM0OywgJiMzNDtNQUM4MDIxMV9ERUJVR0ZTJiMzNDtdYCAtIFllcCwgYWxsIHNldC4KKiAgIGBGb2N1c1N5bWJvbHNgOiBgWyYjMzQ7aWVlZTgwMjExX3R4cV9haXJ0aW1lX2NoZWNrJiMzNDssICYjMzQ7aWVlZTgwMjExX2FxbF9zdGFfbGltaXQmIzM0OywgJiMzNDtpZWVlODAyMTFfbmV4dF90eHEmIzM0OywgJiMzNDtpZWVlODAyMTFfdHhfZGVxdWV1ZSYjMzQ7LCAmIzM0O19fYXRoMTFrX21hY19yZWdpc3RlciYjMzQ7XWAgLSBDb25zaXN0ZW50LgoKSnVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUsIGxldCYjMzk7cyB2ZXJpZnkgYWxsIHRoZSBzeW1ib2wgbmFtZXM6CgoqICAgYGllZWU4MDIxMV90eHFfYWlydGltZV9jaGVja2AgKG5ldC9tYWM4MDIxMS90eC5jKQoqICAgYGllZWU4MDIxMV9hcWxfc3RhX2xpbWl0YCAobmV0L21hYzgwMjExL3R4LmMpCiogICBgaWVlZTgwMjExX25leHRfdHhxYCAobmV0L21hYzgwMjExL3R4LmMpCiogICBgaWVlZTgwMjExX3R4X2RlcXVldWVgIChuZXQvbWFjODAyMTEvdHguYykKKiAgIGBfX2F0aDExa19tYWNfcmVnaXN0ZXJgIChkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jKQoKVGhlIHJlYXNvbmluZyBzZWVtcyBzb3VuZDogVGhpcyBwYXRjaCBpbnRyb2R1Y2VzCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMTg6MTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O0NGRzgwMjExJiMzNDssCiAgICAmIzM0O0FUSDExSyYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMV9ERUJVR0ZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aWVlZTgwMjExX3R4cV9haXJ0aW1lX2NoZWNrJiMzNDssCiAgICAmIzM0O2llZWU4MDIxMV9hcWxfc3RhX2xpbWl0JiMzNDssCiAgICAmIzM0O2llZWU4MDIxMV9uZXh0X3R4cSYjMzQ7LAogICAgJiMzNDtpZWVlODAyMTFfdHhfZGVxdWV1ZSYjMzQ7LAogICAgJiMzNDtfX2F0aDExa19tYWNfcmVnaXN0ZXImIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyB0aGUgSUVFRTgwMjExX0hXX1RYX05PX1BVU0hCQUNLIGhhcmR3YXJlIGZsYWcgYW5kIGFkZHMgc3RhdGlvbiBhaXJ0aW1lIHF1ZXVlIGxpbWl0IGNhbGN1bGF0aW9uIChpZWVlODAyMTFfYXFsX3N0YV9saW1pdCkgdG8gdGhlIG1hYzgwMjExIFRYIHF1ZXVlIGFpcnRpbWUgY2hlY2sgKGllZWU4MDIxMV90eHFfYWlydGltZV9jaGVjaykuIFRoZSBtYWM4MDIxMSBzdWJzeXN0ZW0gaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgbWFjODAyMTFfaHdzaW0gYW5kIG5sODAyMTEgaW50ZXJmYWNlcywgbWFraW5nIHRoZXNlIHF1ZXVlIHNjaGVkdWxpbmcgYW5kIGFpcnRpbWUgY2FsY3VsYXRpb24gY2hhbmdlcyB3b3J0aCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNQUM4MDIxMSYjMzQ7LAogICAgJiMzNDtDRkc4MDIxMSYjMzQ7LAogICAgJiMzNDtBVEgxMUsmIzM0OywKICAgICYjMzQ7TUFDODAyMTFfREVCVUdGUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2llZWU4MDIxMV90eHFfYWlydGltZV9jaGVjayYjMzQ7LAogICAgJiMzNDtpZWVlODAyMTFfYXFsX3N0YV9saW1pdCYjMzQ7LAogICAgJiMzNDtpZWVlODAyMTFfbmV4dF90eHEmIzM0OywKICAgICYjMzQ7aWVlZTgwMjExX3R4X2RlcXVldWUmIzM0OywKICAgICYjMzQ7X19hdGgxMWtfbWFjX3JlZ2lzdGVyJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgdGhlIElFRUU4MDIxMV9IV19UWF9OT19QVVNIQkFDSyBoYXJkd2FyZSBmbGFnIGFuZCBhZGRzIHN0YXRpb24gYWlydGltZSBxdWV1ZSBsaW1pdCBjYWxjdWxhdGlvbiAoaWVlZTgwMjExX2FxbF9zdGFfbGltaXQpIHRvIHRoZSBtYWM4MDIxMSBUWCBxdWV1ZSBhaXJ0aW1lIGNoZWNrIChpZWVlODAyMTFfdHhxX2FpcnRpbWVfY2hlY2spLiBUaGUgbWFjODAyMTEgc3Vic3lzdGVtIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIG1hYzgwMjExX2h3c2ltIGFuZCBubDgwMjExIGludGVyZmFjZXMsIG1ha2luZyB0aGVzZSBxdWV1ZSBzY2hlZHVsaW5nIGFuZCBhaXJ0aW1lIGNhbGN1bGF0aW9uIGNoYW5nZXMgd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMTg6MTA8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAxODoxMDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgdGhlIGBJRUVFODAyMTFfSFdfVFhfTk9fUFVTSEJBQ0tgIGhhcmR3YXJlIGZsYWcgZm9yIG1hYzgwMjExL2F0aDExayBhbmQgYWRqdXN0cyBzdGF0aW9uIEFpcnRpbWUgUXVldWUgTGltaXQgKEFRTCkgY2FsY3VsYXRpb25zIGJhc2VkIG9uIHN0YXRpb24gYWlydGltZSB3ZWlnaHQgd2hlbiB0aGlzIGZsYWcgaXMgZW5hYmxlZC5cblxuQWxsIHN0cnVjdCBmaWVsZHMgYWNjZXNzZWQgKHN1Y2ggYXMgYHN0YS1cdTAwM2VhaXJ0aW1lX3dlaWdodGAsIGBsb2NhbC1cdTAwM2VhcWxfdGhyZXNob2xkYCwgYW5kIGBzdGEtXHUwMDNlYWlydGltZVtdLmFxbF9saW1pdF8qYCkgYXJlIHN0YW5kYXJkIGludGVnZXIgZmllbGRzIGluaXRpYWxpemVkIGR1cmluZyBzdGF0aW9uIGNyZWF0aW9uIGFuZCBkcml2ZXIgY29uZmlndXJhdGlvbi4gTG9jYWwgdmFyaWFibGVzIGluIHRoZSBuZXcgY2FsY3VsYXRpb24gaGVscGVyIGBpZWVlODAyMTFfYXFsX3N0YV9saW1pdCgpYCBhcmUgZXhwbGljaXRseSBhc3NpZ25lZCBiZWZvcmUgdXNlLiBObyBoZWFwL3N0YWNrIGFsbG9jYXRpb25zLCBtZW1vcnkgY29weSBvcGVyYXRpb25zIHRvIHVzZXIgc3BhY2UsIG9yIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzIGFyZSBpbnRyb2R1Y2VkIG9yIG1vZGlmaWVkLlxuXG5UaGVyZWZvcmUsIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIGlzIG5vdCBuZWVkZWQ7IGFueSBzdGFuZGFyZCBjb25jdXJyZW5jeSBvciBsb2dpYyBpc3N1ZXMgYXJlIGNvdmVyZWQgYnkgc3RhbmRhcmQgS0FTQU4va2VybmVsIGRlYnVnZ2luZyB0b29scy4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0CgpGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDExMTY1MWIxNTZmYzIxOTY2NjVkZGRmOWRiNjJiZWFjNjc3MTU1MDQKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIFNlcCA4IDE4OjA5OjI3IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmMKaW5kZXggMmQ1NWNkYzRkMTY1ZC4uODdlNjA2MmM1NTUwOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jCkBAIC0xMDQ5NCw2ICYjNDM7MTA0OTQsNyBAQCBzdGF0aWMgaW50IF9fYXRoMTFrX21hY19yZWdpc3RlcihzdHJ1Y3QgYXRoMTFrICphcikKIAogCWllZWU4MDIxMV9od19zZXQoYXItJmd0O2h3LCBTSUdOQUxfREJNKTsKIAlpZWVlODAyMTFfaHdfc2V0KGFyLSZndDtodywgU1VQUE9SVFNfUFMpOwomIzQzOwlpZWVlODAyMTFfaHdfc2V0KGFyLSZndDtodywgVFhfTk9fUFVTSEJBQ0spOwogCWllZWU4MDIxMV9od19zZXQoYXItJmd0O2h3LCBTVVBQT1JUU19EWU5BTUlDX1BTKTsKIAlpZWVlODAyMTFfaHdfc2V0KGFyLSZndDtodywgTUZQX0NBUEFCTEUpOwogCWllZWU4MDIxMV9od19zZXQoYXItJmd0O2h3LCBSRVBPUlRTX1RYX0FDS19TVEFUVVMpOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvbWFjODAyMTEuaCBiL2luY2x1ZGUvbmV0L21hYzgwMjExLmgKaW5kZXggN2JiNDYxODA2NWI2Ny4uODAzODFjN2FiZDg0YSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQvbWFjODAyMTEuaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL25ldC9tYWM4MDIxMS5oCkBAIC0zMDg2LDYgJiM0MzszMDg2LDEyIEBAIHN0cnVjdCBpZWVlODAyMTFfdHhxIHsKICAqIEBJRUVFODAyMTFfSFdfU1VQUE9SVFNfTkRQX0JMT0NLQUNLOiBIVyBjYW4gdHJhbnNtaXQvcmVjZWl2ZSBTMUcgTkRQCiAgKglCbG9ja0FjayBmcmFtZXMuCiAgKgomIzQzOyAqIEBJRUVFODAyMTFfSFdfVFhfTk9fUFVTSEJBQ0s6IFRoZSBkcml2ZXIgaGFuZHMgZXZlcnkgZnJhbWUgaXQgZGVxdWV1ZXMKJiM0MzsgKgl0byB0aGUgaGFyZHdhcmUgYXQgb25jZSwgYW5kIHRoZSBoYXJkd2FyZSBwaWNrcyB0aGUgc3RhdGlvbiBpdCBzZXJ2ZXMKJiM0MzsgKgluZXh0LCBzbyB0aGUgb3JkZXIgaW4gd2hpY2ggbWFjODAyMTEgc2NoZWR1bGVzIHRoZSBxdWV1ZXMgZG9lcyBub3QKJiM0MzsgKglyZWFjaCB0aGUgYWlyLiBtYWM4MDIxMSB0aGVuIGFwcGxpZXMgdGhlIGFpcnRpbWUgd2VpZ2h0IHRvIHRoZQomIzQzOyAqCWFpcnRpbWUgcXVldWUgbGltaXQgaW5zdGVhZC4KJiM0MzsgKgogICogQE5VTV9JRUVFODAyMTFfSFdfRkxBR1M6IG51bWJlciBvZiBoYXJkd2FyZSBmbGFncywgdXNlZCBmb3Igc2l6aW5nIGFycmF5cwogICovCiBlbnVtIGllZWU4MDIxMV9od19mbGFncyB7CkBAIC0zMTQ3LDYgJiM0MzszMTUzLDcgQEAgZW51bSBpZWVlODAyMTFfaHdfZmxhZ3MgewogCUlFRUU4MDIxMV9IV19IQU5ETEVTX1FVSUVUX0NTQSwKIAlJRUVFODAyMTFfSFdfU1RSSUNULAogCUlFRUU4MDIxMV9IV19TVVBQT1JUU19ORFBfQkxPQ0tBQ0ssCiYjNDM7CUlFRUU4MDIxMV9IV19UWF9OT19QVVNIQkFDSywKIAogCS8qIGtlZXAgbGFzdCwgb2J2aW91c2x5ICovCiAJTlVNX0lFRUU4MDIxMV9IV19GTEFHUwpkaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjExL2RlYnVnZnMuYyBiL25ldC9tYWM4MDIxMS9kZWJ1Z2ZzLmMKaW5kZXggODk0NmIwMjc3ODJjZi4uZGRiZmE5OTFlYzc0ZSAxMDA2NDQKLS0tIGEvbmV0L21hYzgwMjExL2RlYnVnZnMuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbWFjODAyMTEvZGVidWdmcy5jCkBAIC00NjIsNiAmIzQzOzQ2Miw3IEBAIHN0YXRpYyBjb25zdCBjaGFyICpod19mbGFnX25hbWVzW10gPSB7CiAJRkxBRyhIQU5ETEVTX1FVSUVUX0NTQSksCiAJRkxBRyhTVFJJQ1QpLAogCUZMQUcoU1VQUE9SVFNfTkRQX0JMT0NLQUNLKSwKJiM0MzsJRkxBRyhUWF9OT19QVVNIQkFDSyksCiAjdW5kZWYgRkxBRwogfTsKIApkaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjExL3R4LmMgYi9uZXQvbWFjODAyMTEvdHguYwppbmRleCBjMzMwOTI5NjBkZjI2Li5jOTRlZmZmNDhkNzQ3IDEwMDY0NAotLS0gYS9uZXQvbWFjODAyMTEvdHguYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbWFjODAyMTEvdHguYwpAQCAtNDIxNyw2ICYjNDM7NDIxNywyMSBAQCBFWFBPUlRfU1lNQk9MKF9faWVlZTgwMjExX3NjaGVkdWxlX3R4cSk7CiAKIERFRklORV9TVEFUSUNfS0VZX0ZBTFNFKGFxbF9kaXNhYmxlKTsKIAomIzQzO3N0YXRpYyB1MzIgaWVlZTgwMjExX2FxbF9zdGFfbGltaXQoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsCiYjNDM7CQkJCSAgIHN0cnVjdCBzdGFfaW5mbyAqc3RhLCB1MzIgbGltaXQpCiYjNDM7ewomIzQzOwl1MzIgc2NhbGVkOwomIzQzOwomIzQzOwlpZiAoIWllZWU4MDIxMV9od19jaGVjaygmYW1wO2xvY2FsLSZndDtodywgVFhfTk9fUFVTSEJBQ0spIHx8CiYjNDM7CSAgICBzdGEtJmd0O2FpcnRpbWVfd2VpZ2h0ID09IElFRUU4MDIxMV9ERUZBVUxUX0FJUlRJTUVfV0VJR0hUKQomIzQzOwkJcmV0dXJuIGxpbWl0OwomIzQzOwomIzQzOwlzY2FsZWQgPSBtdWx0X2ZyYWMobGltaXQsIHN0YS0mZ3Q7YWlydGltZV93ZWlnaHQsCiYjNDM7CQkJICAgSUVFRTgwMjExX0RFRkFVTFRfQUlSVElNRV9XRUlHSFQpOwomIzQzOwomIzQzOwlyZXR1cm4gbWluKHNjYWxlZCwgbWF4KGxpbWl0LCBsb2NhbC0mZ3Q7YXFsX3RocmVzaG9sZCkpOwomIzQzO30KJiM0MzsKIGJvb2wgaWVlZTgwMjExX3R4cV9haXJ0aW1lX2NoZWNrKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LAogCQkJCSBzdHJ1Y3QgaWVlZTgwMjExX3R4cSAqdHhxKQogewpAQCAtNDIzOCwxMyAmIzQzOzQyNTMsMTUgQEAgYm9vbCBpZWVlODAyMTFfdHhxX2FpcnRpbWVfY2hlY2soc3RydWN0IGllZWU4MDIxMV9odyAqaHcsCiAKIAlzdGEgPSBjb250YWluZXJfb2YodHhxLSZndDtzdGEsIHN0cnVjdCBzdGFfaW5mbywgc3RhKTsKIAlpZiAoYXRvbWljX3JlYWQoJmFtcDtzdGEtJmd0O2FpcnRpbWVbdHhxLSZndDthY10uYXFsX3R4X3BlbmRpbmcpICZsdDsKLQkgICAgc3RhLSZndDthaXJ0aW1lW3R4cS0mZ3Q7YWNdLmFxbF9saW1pdF9sb3cpCiYjNDM7CSAgICBpZWVlODAyMTFfYXFsX3N0YV9saW1pdChsb2NhbCwgc3RhLAomIzQzOwkJCQkgICAgc3RhLSZndDthaXJ0aW1lW3R4cS0mZ3Q7YWNdLmFxbF9saW1pdF9sb3cpKQogCQlyZXR1cm4gdHJ1ZTsKIAogCWlmIChhdG9taWNfcmVhZCgmYW1wO2xvY2FsLSZndDthcWxfdG90YWxfcGVuZGluZ19haXJ0aW1lKSAmbHQ7CiAJICAgIGxvY2FsLSZndDthcWxfdGhyZXNob2xkICZhbXA7JmFtcDsKIAkgICAgYXRvbWljX3JlYWQoJmFtcDtzdGEtJmd0O2FpcnRpbWVbdHhxLSZndDthY10uYXFsX3R4X3BlbmRpbmcpICZsdDsKLQkgICAgc3RhLSZndDthaXJ0aW1lW3R4cS0mZ3Q7YWNdLmFxbF9saW1pdF9oaWdoKQomIzQzOwkgICAgaWVlZTgwMjExX2FxbF9zdGFfbGltaXQobG9jYWwsIHN0YSwKJiM0MzsJCQkJICAgIHN0YS0mZ3Q7YWlydGltZVt0eHEtJmd0O2FjXS5hcWxfbGltaXRfaGlnaCkpCiAJCXJldHVybiB0cnVlOwogCiAJcmV0dXJuIGZhbHNlOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMTg6MTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzUwNgoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDQ5MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBhdGNoIGZvciBVbmluaXRpYWxpemVkIE1lbW9yeSBSaXNrcyoqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgcGF0Y2ggYW5kIHNlZSBpZiB3ZSBuZWVkIHRvIGJyaW5nIGluIEtNU0FOLiBGaXJzdCB0aGluZ3MgZmlyc3QsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgY2hhbmdlZCBhbmQgd2hlcmUgdGhlIHBvdGVudGlhbCBmb3IgdW5pbml0aWFsaXplZCBtZW1vcnkgbGllcy4KClRoZSBwYXRjaCBpbmNsdWRlcyBhZGRpdGlvbnMgdG8gYSBmZXcgZmlsZXM6IGBhdGgxMWsvbWFjLmNgLCBgbWFjODAyMTEuaGAsIGBkZWJ1Z2ZzLmNgLCBhbmQgYHR4LmNgLiBJdCBsb29rcyBsaWtlIGl0JiMzOTtzIGVuYWJsaW5nIGBUWF9OT19QVVNIQkFDS2AgYW5kIGFkZGluZyBzb21lIGFpcnRpbWUgd2VpZ2h0IGNhbGN1bGF0aW9ucyByZWxhdGVkIHRvIGEgbmV3IGhlbHBlciBgaWVlZTgwMjExX2FxbF9zdGFfbGltaXRgLgoKU3BlY2lmaWNhbGx5LCB0aGlzIGBpZWVlODAyMTFfYXFsX3N0YV9saW1pdGAgZnVuY3Rpb24gaXMgd2hhdCBJIG5lZWQgdG8gZm9jdXMgb24uIEl0IHVzZXMgYHN0YS0mZ3Q7YWlydGltZV93ZWlnaHRgLiBUaGlzIGNvdWxkIGJlIGEgcHJvYmxlbSBpZiBgc3RhLSZndDthaXJ0aW1lX3dlaWdodGAgaXNuJiMzOTt0IHByb3Blcmx5IGluaXRpYWxpemVkLiBJIHNlZSB0aGF0IGlmIGBpZWVlODAyMTFfaHdfY2hlY2tgIHJldHVybnMgdHJ1ZSwgb3IgYHN0YS0mZ3Q7YWlydGltZV93ZWlnaHRgIGlzIHNldCB0byBgSUVFRTgwMjExX0RFRkFVTFRfQUlSVElNRV9XRUlHSFRgLCB0aGUgZnVuY3Rpb24gZGlyZWN0bHkgcmV0dXJucyBgbGltaXRgLiBJdCBvbmx5IGNhbGN1bGF0ZXMgc29tZXRoaW5nIHdoZW4gYHN0YS0mZ3Q7YWlydGltZV93ZWlnaHRgIGlzIHNldCB0byBzb21ldGhpbmcgZWxzZS4KClNvLCB0aGUga2V5IGhlcmUgaXMgdG8gY29uZmlybSBob3cgYHN0YS0mZ3Q7YWlydGltZV93ZWlnaHRgIGdldHMgaW5pdGlhbGl6ZWQuIEkgbmVlZCB0byB0cmFjZSB3aGVyZSBgc3RhYCBpcyBhbGxvY2F0ZWQgYW5kIHBvcHVsYXRlZCwgYW5kIHRoZW4gbG9vayBmb3Igd2hlcmUgYW5kIGhvdyBgYWlydGltZV93ZWlnaHRgIGlzIHNldC4gTGV0JiMzOTtzIHN0YXJ0IHdpdGggYSBzZWFyY2ggb2YgdGhlIG1hYzgwMjExIGNvZGUgZm9yIGFueSByZWxldmFudCByZWZlcmVuY2VzIHRvIGBhaXJ0aW1lX3dlaWdodGAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDE4OjEwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2FpcnRpbWVfd2VpZ2h0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS9jZmcuYz0yNDUwPXN0YXRpYyBpbnQgc3RhX2FwcGx5X3BhcmFtZXRlcnMoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXG4tLVxubmV0L21hYzgwMjExL2NmZy5jLTI1ODYtXG5uZXQvbWFjODAyMTEvY2ZnLmM6MjU4NzpcdGlmIChwYXJhbXMtXHUwMDNlYWlydGltZV93ZWlnaHQpXG5uZXQvbWFjODAyMTEvY2ZnLmM6MjU4ODpcdFx0c3RhLVx1MDAzZWFpcnRpbWVfd2VpZ2h0ID0gcGFyYW1zLVx1MDAzZWFpcnRpbWVfd2VpZ2h0O1xubmV0L21hYzgwMjExL2NmZy5jLTI1ODktXG4tLVxubmV0L21hYzgwMjExL2RlYnVnZnNfc3RhLmM9MTg4PXN0YXRpYyBzc2l6ZV90IHN0YV9haXJ0aW1lX3JlYWQoc3RydWN0IGZpbGUgKmZpbGUsIGNoYXIgX191c2VyICp1c2VyYnVmLFxuLS1cbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX3N0YS5jLTIxMy1cdFx0XCYjMzQ7RGVmaWNpdDogVk86ICVkIHVzIFZJOiAlZCB1cyBCRTogJWQgdXMgQks6ICVkIHVzXFxuXCYjMzQ7LFxubmV0L21hYzgwMjExL2RlYnVnZnNfc3RhLmM6MjE0Olx0XHRyeF9haXJ0aW1lLCB0eF9haXJ0aW1lLCBzdGEtXHUwMDNlYWlydGltZV93ZWlnaHQsXG5uZXQvbWFjODAyMTEvZGVidWdmc19zdGEuYy0yMTUtXHRcdGRlZmljaXRbMF0sIGRlZmljaXRbMV0sIGRlZmljaXRbMl0sIGRlZmljaXRbM10pO1xuLS1cbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX3N0YS5jPTIyMj1zdGF0aWMgc3NpemVfdCBzdGFfYWlydGltZV93cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgY29uc3QgY2hhciBfX3VzZXIgKnVzZXJidWYsXG4tLVxubmV0L21hYzgwMjExL2RlYnVnZnNfc3RhLmMtMjMyLVx0XHRzdGEtXHUwMDNlYWlydGltZVthY10udHhfYWlydGltZSA9IDA7XG5uZXQvbWFjODAyMTEvZGVidWdmc19zdGEuYzoyMzM6XHRcdHN0YS1cdTAwM2VhaXJ0aW1lW2FjXS5kZWZpY2l0ID0gc3RhLVx1MDAzZWFpcnRpbWVfd2VpZ2h0O1xubmV0L21hYzgwMjExL2RlYnVnZnNfc3RhLmMtMjM0LVx0XHRzcGluX3VubG9ja19iaChcdTAwMjZsb2NhbC1cdTAwM2VhY3RpdmVfdHhxX2xvY2tbYWNdKTtcbi0tXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYz02MzM9X19zdGFfaW5mb19hbGxvYyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbi0tXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy03MjktXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYzo3MzA6XHRzdGEtXHUwMDNlYWlydGltZV93ZWlnaHQgPSBJRUVFODAyMTFfREVGQVVMVF9BSVJUSU1FX1dFSUdIVDtcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jLTczMS1cbi0tXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy03MzQtXHRcdHNrYl9xdWV1ZV9oZWFkX2luaXQoXHUwMDI2c3RhLVx1MDAzZXR4X2ZpbHRlcmVkW2ldKTtcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jOjczNTpcdFx0c3RhLVx1MDAzZWFpcnRpbWVbaV0uZGVmaWNpdCA9IHN0YS1cdTAwM2VhaXJ0aW1lX3dlaWdodDtcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jLTczNi1cdFx0YXRvbWljX3NldChcdTAwMjZzdGEtXHUwMDNlYWlydGltZVtpXS5hcWxfdHhfcGVuZGluZywgMCk7XG4tLVxubmV0L21hYzgwMjExL3N0YV9pbmZvLmM9MjgzNz1zdGF0aWMgdm9pZCBzdGFfc2V0X2xpbmtfc2luZm8oc3RydWN0IHN0YV9pbmZvICpzdGEsXG4tLVxubmV0L21hYzgwMjExL3N0YV9pbmZvLmMtMjk1NS1cdGlmICghKGxpbmtfc2luZm8tXHUwMDNlZmlsbGVkIFx1MDAyNiBCSVRfVUxMKE5MODAyMTFfU1RBX0lORk9fQUlSVElNRV9XRUlHSFQpKSkge1xubmV0L21hYzgwMjExL3N0YV9pbmZvLmM6Mjk1NjpcdFx0bGlua19zaW5mby1cdTAwM2VhaXJ0aW1lX3dlaWdodCA9IHN0YS1cdTAwM2VhaXJ0aW1lX3dlaWdodDtcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jLTI5NTctXHRcdGxpbmtfc2luZm8tXHUwMDNlZmlsbGVkIHw9IEJJVF9VTEwoTkw4MDIxMV9TVEFfSU5GT19BSVJUSU1FX1dFSUdIVCk7XG4tLVxubmV0L21hYzgwMjExL3N0YV9pbmZvLmM9MzA3OT12b2lkIHN0YV9zZXRfc2luZm8oc3RydWN0IHN0YV9pbmZvICpzdGEsIHN0cnVjdCBzdGF0aW9uX2luZm8gKnNpbmZvLFxuLS1cbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jLTMxODctXHRpZiAoIShzaW5mby1cdTAwM2VmaWxsZWQgXHUwMDI2IEJJVF9VTEwoTkw4MDIxMV9TVEFfSU5GT19BSVJUSU1FX1dFSUdIVCkpKSB7XG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYzozMTg4Olx0XHRzaW5mby1cdTAwM2VhaXJ0aW1lX3dlaWdodCA9IHN0YS1cdTAwM2VhaXJ0aW1lX3dlaWdodDtcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jLTMxODktXHRcdHNpbmZvLVx1MDAzZWZpbGxlZCB8PSBCSVRfVUxMKE5MODAyMTFfU1RBX0lORk9fQUlSVElNRV9XRUlHSFQpO1xuLS1cbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5oPTYxOT1zdHJ1Y3QgaWVlZTgwMjExX3N0YV9yZW1vdmVkX2xpbmtfc3RhdHMge1xuLS1cbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5oLTY3Ni0gKlx0c3RhdGlvblxubmV0L21hYzgwMjExL3N0YV9pbmZvLmg6Njc3OiAqIEBhaXJ0aW1lX3dlaWdodDogc3RhdGlvbiB3ZWlnaHQgZm9yIGFpcnRpbWUgZmFpcm5lc3MgY2FsY3VsYXRpb24gcHVycG9zZXNcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5oLTY3OC0gKiBAYW1wZHVfbWxtZTogQS1NUERVIHN0YXRlIG1hY2hpbmUgc3RhdGVcbi0tXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uaD03MTU9c3RydWN0IHN0YV9pbmZvIHtcbi0tXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uaC03NjYtXHRzdHJ1Y3QgYWlydGltZV9pbmZvIGFpcnRpbWVbSUVFRTgwMjExX05VTV9BQ1NdO1xubmV0L21hYzgwMjExL3N0YV9pbmZvLmg6NzY3Olx0dTE2IGFpcnRpbWVfd2VpZ2h0O1xubmV0L21hYzgwMjExL3N0YV9pbmZvLmgtNzY4LVxuLS1cbm5ldC9tYWM4MDIxMS90eC5jPTQxMTU9c3RydWN0IGllZWU4MDIxMV90eHEgKmllZWU4MDIxMV9uZXh0X3R4cShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgdTggYWMpXG4tLVxubmV0L21hYzgwMjExL3R4LmMtNDE1NC1cdFx0XHRzdGEtXHUwMDNlYWlydGltZVt0eHFpLVx1MDAzZXR4cS5hY10uZGVmaWNpdCAmIzQzOz1cbm5ldC9tYWM4MDIxMS90eC5jOjQxNTU6XHRcdFx0XHRzdGEtXHUwMDNlYWlydGltZV93ZWlnaHQ7XG5uZXQvbWFjODAyMTEvdHguYy00MTU2LVxuLS1cbm5ldC9tYWM4MDIxMS90eC5jPTQyMjA9c3RhdGljIHUzMiBpZWVlODAyMTFfYXFsX3N0YV9saW1pdChzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcbi0tXG5uZXQvbWFjODAyMTEvdHguYy00MjI1LVx0aWYgKCFpZWVlODAyMTFfaHdfY2hlY2soXHUwMDI2bG9jYWwtXHUwMDNlaHcsIFRYX05PX1BVU0hCQUNLKSB8fFxubmV0L21hYzgwMjExL3R4LmM6NDIyNjpcdCAgICBzdGEtXHUwMDNlYWlydGltZV93ZWlnaHQgPT0gSUVFRTgwMjExX0RFRkFVTFRfQUlSVElNRV9XRUlHSFQpXG5uZXQvbWFjODAyMTEvdHguYy00MjI3LVx0XHRyZXR1cm4gbGltaXQ7XG5uZXQvbWFjODAyMTEvdHguYy00MjI4LVxubmV0L21hYzgwMjExL3R4LmM6NDIyOTpcdHNjYWxlZCA9IG11bHRfZnJhYyhsaW1pdCwgc3RhLVx1MDAzZWFpcnRpbWVfd2VpZ2h0LFxubmV0L21hYzgwMjExL3R4LmMtNDIzMC1cdFx0XHQgICBJRUVFODAyMTFfREVGQVVMVF9BSVJUSU1FX1dFSUdIVCk7XG4tLVxubmV0L21hYzgwMjExL3R4LmM9NDMwOD1ib29sIGllZWU4MDIxMV90eHFfbWF5X3RyYW5zbWl0KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuLS1cbm5ldC9tYWM4MDIxMS90eC5jLTQzMzgtXHRcdGlmIChpZWVlODAyMTFfc3RhX2RlZmljaXQoc3RhLCBhYykgXHUwMDNjIDApXG5uZXQvbWFjODAyMTEvdHguYzo0MzM5Olx0XHRcdHN0YS1cdTAwM2VhaXJ0aW1lW2FjXS5kZWZpY2l0ICYjNDM7PSBzdGEtXHUwMDNlYWlydGltZV93ZWlnaHQ7XG5uZXQvbWFjODAyMTEvdHguYy00MzQwLVx0XHRsaXN0X21vdmVfdGFpbChcdTAwMjZpdGVyLVx1MDAzZXNjaGVkdWxlX29yZGVyLCBcdTAwMjZsb2NhbC1cdTAwM2VhY3RpdmVfdHhxc1thY10pO1xuLS1cbm5ldC9tYWM4MDIxMS90eC5jLTQzNDYtXG5uZXQvbWFjODAyMTEvdHguYzo0MzQ3Olx0c3RhLVx1MDAzZWFpcnRpbWVbYWNdLmRlZmljaXQgJiM0Mzs9IHN0YS1cdTAwM2VhaXJ0aW1lX3dlaWdodDtcbm5ldC9tYWM4MDIxMS90eC5jLTQzNDgtXHRsaXN0X21vdmVfdGFpbChcdTAwMjZ0eHFpLVx1MDAzZXNjaGVkdWxlX29yZGVyLCBcdTAwMjZsb2NhbC1cdTAwM2VhY3RpdmVfdHhxc1thY10pO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAxODoxMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NDExCgkJCQkJCQlvdXRwdXQ6IDIxNwoJCQkJCQkJdGhvdWdodHM6IDQzOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBhdGNoIGZvciBVbmluaXRpYWxpemVkIE1lbW9yeSBSaXNrcyoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgZG93biB0aGlzIHBhdGNoIGFuZCBzZWUgaWYgaXQgaW50cm9kdWNlcyBhbnkgbmFzdHkgc3VycHJpc2VzLCBwYXJ0aWN1bGFybHkgYXJvdW5kIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBGaXJzdCwgd2UmIzM5O3JlIGFkZGluZyBhIG5ldyBoYXJkd2FyZSBmbGFnLCBgSUVFRTgwMjExX0hXX1RYX05PX1BVU0hCQUNLYCwgdG8gbWFjODAyMTEuIEdvb2QsIHN0YW5kYXJkIHByb2NlZHVyZS4gV2UmIzM5O3JlIGFsc28gYWRkaW5nIHRoZSBzdHJpbmcgbmFtZSBmb3IgZGVidWdmcywgd2hpY2ggaXMgYSBjb21tb24gcHJhY3RpY2UuIFRoaXMgaXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZC4gVGhlIGZsYWcgaXMgZ2V0dGluZyBzZXQgd2l0aGluIGBhdGgxMWtgLCB3aGljaCBtYWtlcyBzZW5zZSBnaXZlbiB0aGUgY29udGV4dC4KClRoZSBtZWF0IG9mIGl0IHNlZW1zIHRvIGJlIHRoaXMgbmV3IGhlbHBlciBmdW5jdGlvbiwgYGllZWU4MDIxMV9hcWxfc3RhX2xpbWl0YC4gVGhpcyBpcyB3aGVyZSB0aGUgYWlydGltZSB3ZWlnaHRpbmcgY29tZXMgaW4uIEl0IGFwcGVhcnMgdGhpcyBmdW5jdGlvbiBzY2FsZXMgdGhlIEFRTCBsaW1pdCBiYXNlZCBvbiBhIHN0YXRpb24mIzM5O3MgYWlydGltZSB3ZWlnaHQgd2hlbiBgVFhfTk9fUFVTSEJBQ0tgIGlzIGFjdGl2ZS4gTG9va2luZyBhdCB0aGUgdmFyaWFibGVzIHVzZWQsIGl0IHNlZW1zIGxpa2Ugd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBgbG9jYWxgLCBgc3RhYCwgYW5kIGBsaW1pdGAuIFRoZSBgc3RhYCBpcyBpbml0aWFsaXplZCBkdXJpbmcgc3RhdGlvbiBjcmVhdGlvbiB3aXRoIGBremFsbG9jYCBpbiBgX19zdGFfaW5mb19hbGxvY2AsIGFuZCwgaW1wb3J0YW50bHksIGl0cyBgYWlydGltZV93ZWlnaHRgIGlzIGluaXRpYWxpemVkIGFzIHdlbGwgd2l0aCBgSUVFRTgwMjExX0RFRkFVTFRfQUlSVElNRV9XRUlHSFRgLiBUaGUgYHNjYWxlZGAgdmFsdWUgaXMgYSBsb2NhbCBgdTMyYCB0aGF0IGlzIGV4cGxpY2l0bHkgY29tcHV0ZWQgYW5kIGFzc2lnbmVkIGJlZm9yZSBiZWluZyByZXR1cm5lZC4KCk5vdywgdGhlIGNydWNpYWwgcXVlc3Rpb246IGFyZSB3ZSBhY2NpZGVudGFsbHkgcmVhZGluZyB1bmluaXRpYWxpemVkIG1lbW9yeSwgbGVha2luZyBpbmZvcm1hdGlvbiwgb3IgaW50cm9kdWNpbmcgYSB1c2UtYWZ0ZXItZnJlZSBzaXR1YXRpb24/IEl0IGRvZXNuJiMzOTt0IGxvb2sgbGlrZSBpdC4gVGhlIGNhbGN1bGF0aW9uIG9mIGBzY2FsZWRgIHdpdGhpbiBgaWVlZTgwMjExX2FxbF9zdGFfbGltaXRgIHVzZXMgYG11bHRfZnJhYyguLi4pYCBhbmQgcmV0dXJucyBgbWluKC4uLilgLCBzbyBpdCBzZWVtcyBwcmV0dHkgc2VsZi1jb250YWluZWQuIFRoZSBuZXcgc3RyaW5nIGVudHJ5IGluIGBkZWJ1Z2ZzLmNgIGlzIGp1c3QgYSBzdHJpbmcsIHdoaWNoIGlzIGZpbmUuIFNldHRpbmcgdGhlIGJpdCBpbiBgYXRoMTFrYCB3aXRoIGBpZWVlODAyMTFfaHdfc2V0KClgIGlzbiYjMzk7dCBpbmhlcmVudGx5IHJpc2t5LiBUaGVyZSBhcmUgbm8gYGNvcHlfdG9fdXNlcmAgb3IgbmV0bGluayBjYWxscyB0aGF0IGNvdWxkIGJlIGxlYWtpbmcgaW5mby4gTm8gdW5pbml0aWFsaXplZCBmaWVsZHMgb3IgbWVtb3J5IGFsbG9jYXRpb25zIGFyZSBiZWluZyBkb25lIGJ5IHRoZXNlIGNoYW5nZXMsIGFuZCB3ZSYjMzk7cmUgbm90IG1vZGlmeWluZyBwb2ludGVycyBvciBidWZmZXIgc2l6ZXMgaW4gYSB3YXkgdGhhdCB3b3VsZCBvcGVuIHVwIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLgoKVGhlcmVmb3JlLCBteSBjb25jbHVzaW9uIGlzIHRoYXQgdGhpcyBwYXRjaCBkb2VzbiYjMzk7dCBpbnRyb2R1Y2UgYW55IG5ldyB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcy4gU3RhbmRhcmQgS0FTQU4gY2hlY2tzIGFuZCBleGlzdGluZyB0ZXN0cyBzaG91bGQgYmUgc3VmZmljaWVudCB0byBjYXRjaCBhbnkgcG90ZW50aWFsIHByb2JsZW1zLCBhbmQgd2UgY2FuIHNhZmVseSBzZXQgYE5lZWRzS01TQU4gPSBmYWxzZWAuIExldCYjMzk7cyBsb2cgdGhpcyB3aXRoIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzQvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDE4OjEwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgdGhlIGBJRUVFODAyMTFfSFdfVFhfTk9fUFVTSEJBQ0tgIGhhcmR3YXJlIGZsYWcgZm9yIG1hYzgwMjExL2F0aDExayBhbmQgYWRqdXN0cyBzdGF0aW9uIEFpcnRpbWUgUXVldWUgTGltaXQgKEFRTCkgY2FsY3VsYXRpb25zIGJhc2VkIG9uIHN0YXRpb24gYWlydGltZSB3ZWlnaHQgd2hlbiB0aGlzIGZsYWcgaXMgZW5hYmxlZC5cblxuQWxsIHN0cnVjdCBmaWVsZHMgYWNjZXNzZWQgKHN1Y2ggYXMgYHN0YS1cdTAwM2VhaXJ0aW1lX3dlaWdodGAsIGBsb2NhbC1cdTAwM2VhcWxfdGhyZXNob2xkYCwgYW5kIGBzdGEtXHUwMDNlYWlydGltZVtdLmFxbF9saW1pdF8qYCkgYXJlIHN0YW5kYXJkIGludGVnZXIgZmllbGRzIGluaXRpYWxpemVkIGR1cmluZyBzdGF0aW9uIGNyZWF0aW9uIGFuZCBkcml2ZXIgY29uZmlndXJhdGlvbi4gTG9jYWwgdmFyaWFibGVzIGluIHRoZSBuZXcgY2FsY3VsYXRpb24gaGVscGVyIGBpZWVlODAyMTFfYXFsX3N0YV9saW1pdCgpYCBhcmUgZXhwbGljaXRseSBhc3NpZ25lZCBiZWZvcmUgdXNlLiBObyBoZWFwL3N0YWNrIGFsbG9jYXRpb25zLCBtZW1vcnkgY29weSBvcGVyYXRpb25zIHRvIHVzZXIgc3BhY2UsIG9yIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzIGFyZSBpbnRyb2R1Y2VkIG9yIG1vZGlmaWVkLlxuXG5UaGVyZWZvcmUsIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIGlzIG5vdCBuZWVkZWQ7IGFueSBzdGFuZGFyZCBjb25jdXJyZW5jeSBvciBsb2dpYyBpc3N1ZXMgYXJlIGNvdmVyZWQgYnkgc3RhbmRhcmQgS0FTQU4va2VybmVsIGRlYnVnZ2luZyB0b29scy4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgdGhlIGBJRUVFODAyMTFfSFdfVFhfTk9fUFVTSEJBQ0tgIGhhcmR3YXJlIGZsYWcgZm9yIG1hYzgwMjExL2F0aDExayBhbmQgYWRqdXN0cyBzdGF0aW9uIEFpcnRpbWUgUXVldWUgTGltaXQgKEFRTCkgY2FsY3VsYXRpb25zIGJhc2VkIG9uIHN0YXRpb24gYWlydGltZSB3ZWlnaHQgd2hlbiB0aGlzIGZsYWcgaXMgZW5hYmxlZC5cblxuQWxsIHN0cnVjdCBmaWVsZHMgYWNjZXNzZWQgKHN1Y2ggYXMgYHN0YS1cdTAwM2VhaXJ0aW1lX3dlaWdodGAsIGBsb2NhbC1cdTAwM2VhcWxfdGhyZXNob2xkYCwgYW5kIGBzdGEtXHUwMDNlYWlydGltZVtdLmFxbF9saW1pdF8qYCkgYXJlIHN0YW5kYXJkIGludGVnZXIgZmllbGRzIGluaXRpYWxpemVkIGR1cmluZyBzdGF0aW9uIGNyZWF0aW9uIGFuZCBkcml2ZXIgY29uZmlndXJhdGlvbi4gTG9jYWwgdmFyaWFibGVzIGluIHRoZSBuZXcgY2FsY3VsYXRpb24gaGVscGVyIGBpZWVlODAyMTFfYXFsX3N0YV9saW1pdCgpYCBhcmUgZXhwbGljaXRseSBhc3NpZ25lZCBiZWZvcmUgdXNlLiBObyBoZWFwL3N0YWNrIGFsbG9jYXRpb25zLCBtZW1vcnkgY29weSBvcGVyYXRpb25zIHRvIHVzZXIgc3BhY2UsIG9yIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzIGFyZSBpbnRyb2R1Y2VkIG9yIG1vZGlmaWVkLlxuXG5UaGVyZWZvcmUsIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIGlzIG5vdCBuZWVkZWQ7IGFueSBzdGFuZGFyZCBjb25jdXJyZW5jeSBvciBsb2dpYyBpc3N1ZXMgYXJlIGNvdmVyZWQgYnkgc3RhbmRhcmQgS0FTQU4va2VybmVsIGRlYnVnZ2luZyB0b29scy4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDktMDhUMTg6MDk6MjkuNDUwODE1MTMxWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODU0MTI4NDM0MzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUFDODAyMTFcIixcbiAgICBcIkNGRzgwMjExXCIsXG4gICAgXCJBVEgxMUtcIixcbiAgICBcIk1BQzgwMjExX0RFQlVHRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpZWVlODAyMTFfdHhxX2FpcnRpbWVfY2hlY2tcIixcbiAgICBcImllZWU4MDIxMV9hcWxfc3RhX2xpbWl0XCIsXG4gICAgXCJpZWVlODAyMTFfbmV4dF90eHFcIixcbiAgICBcImllZWU4MDIxMV90eF9kZXF1ZXVlXCIsXG4gICAgXCJfX2F0aDExa19tYWNfcmVnaXN0ZXJcIlxuICBdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgdGhlIGBJRUVFODAyMTFfSFdfVFhfTk9fUFVTSEJBQ0tgIGhhcmR3YXJlIGZsYWcgZm9yIG1hYzgwMjExL2F0aDExayBhbmQgYWRqdXN0cyBzdGF0aW9uIEFpcnRpbWUgUXVldWUgTGltaXQgKEFRTCkgY2FsY3VsYXRpb25zIGJhc2VkIG9uIHN0YXRpb24gYWlydGltZSB3ZWlnaHQgd2hlbiB0aGlzIGZsYWcgaXMgZW5hYmxlZC5cXG5cXG5BbGwgc3RydWN0IGZpZWxkcyBhY2Nlc3NlZCAoc3VjaCBhcyBgc3RhLVxcdTAwM2VhaXJ0aW1lX3dlaWdodGAsIGBsb2NhbC1cXHUwMDNlYXFsX3RocmVzaG9sZGAsIGFuZCBgc3RhLVxcdTAwM2VhaXJ0aW1lW10uYXFsX2xpbWl0XypgKSBhcmUgc3RhbmRhcmQgaW50ZWdlciBmaWVsZHMgaW5pdGlhbGl6ZWQgZHVyaW5nIHN0YXRpb24gY3JlYXRpb24gYW5kIGRyaXZlciBjb25maWd1cmF0aW9uLiBMb2NhbCB2YXJpYWJsZXMgaW4gdGhlIG5ldyBjYWxjdWxhdGlvbiBoZWxwZXIgYGllZWU4MDIxMV9hcWxfc3RhX2xpbWl0KClgIGFyZSBleHBsaWNpdGx5IGFzc2lnbmVkIGJlZm9yZSB1c2UuIE5vIGhlYXAvc3RhY2sgYWxsb2NhdGlvbnMsIG1lbW9yeSBjb3B5IG9wZXJhdGlvbnMgdG8gdXNlciBzcGFjZSwgb3IgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMgYXJlIGludHJvZHVjZWQgb3IgbW9kaWZpZWQuXFxuXFxuVGhlcmVmb3JlLCBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBpcyBub3QgbmVlZGVkOyBhbnkgc3RhbmRhcmQgY29uY3VycmVuY3kgb3IgbG9naWMgaXNzdWVzIGFyZSBjb3ZlcmVkIGJ5IHN0YW5kYXJkIEtBU0FOL2tlcm5lbCBkZWJ1Z2dpbmcgdG9vbHMuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyB0aGUgSUVFRTgwMjExX0hXX1RYX05PX1BVU0hCQUNLIGhhcmR3YXJlIGZsYWcgYW5kIGFkZHMgc3RhdGlvbiBhaXJ0aW1lIHF1ZXVlIGxpbWl0IGNhbGN1bGF0aW9uIChpZWVlODAyMTFfYXFsX3N0YV9saW1pdCkgdG8gdGhlIG1hYzgwMjExIFRYIHF1ZXVlIGFpcnRpbWUgY2hlY2sgKGllZWU4MDIxMV90eHFfYWlydGltZV9jaGVjaykuIFRoZSBtYWM4MDIxMSBzdWJzeXN0ZW0gaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgbWFjODAyMTFfaHdzaW0gYW5kIG5sODAyMTEgaW50ZXJmYWNlcywgbWFraW5nIHRoZXNlIHF1ZXVlIHNjaGVkdWxpbmcgYW5kIGFpcnRpbWUgY2FsY3VsYXRpb24gY2hhbmdlcyB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQxODowOToyOS40NTA4MjU3NTFaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2NTE2NDg3NzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAxMTE2NTFiMTU2ZmMyMTk2NjY1ZGRkZjlkYjYyYmVhYzY3NzE1NTA0XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUdWUgU2VwIDggMTg6MDk6MjcgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmNcXG5pbmRleCAyZDU1Y2RjNGQxNjVkLi44N2U2MDYyYzU1NTA5IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jXFxuQEAgLTEwNDk0LDYgKzEwNDk0LDcgQEAgc3RhdGljIGludCBfX2F0aDExa19tYWNfcmVnaXN0ZXIoc3RydWN0IGF0aDExayAqYXIpXFxuIFxcbiBcXHRpZWVlODAyMTFfaHdfc2V0KGFyLVxcdTAwM2VodywgU0lHTkFMX0RCTSk7XFxuIFxcdGllZWU4MDIxMV9od19zZXQoYXItXFx1MDAzZWh3LCBTVVBQT1JUU19QUyk7XFxuK1xcdGllZWU4MDIxMV9od19zZXQoYXItXFx1MDAzZWh3LCBUWF9OT19QVVNIQkFDSyk7XFxuIFxcdGllZWU4MDIxMV9od19zZXQoYXItXFx1MDAzZWh3LCBTVVBQT1JUU19EWU5BTUlDX1BTKTtcXG4gXFx0aWVlZTgwMjExX2h3X3NldChhci1cXHUwMDNlaHcsIE1GUF9DQVBBQkxFKTtcXG4gXFx0aWVlZTgwMjExX2h3X3NldChhci1cXHUwMDNlaHcsIFJFUE9SVFNfVFhfQUNLX1NUQVRVUyk7XFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L21hYzgwMjExLmggYi9pbmNsdWRlL25ldC9tYWM4MDIxMS5oXFxuaW5kZXggN2JiNDYxODA2NWI2Ny4uODAzODFjN2FiZDg0YSAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL25ldC9tYWM4MDIxMS5oXFxuKysrIGIvaW5jbHVkZS9uZXQvbWFjODAyMTEuaFxcbkBAIC0zMDg2LDYgKzMwODYsMTIgQEAgc3RydWN0IGllZWU4MDIxMV90eHEge1xcbiAgKiBASUVFRTgwMjExX0hXX1NVUFBPUlRTX05EUF9CTE9DS0FDSzogSFcgY2FuIHRyYW5zbWl0L3JlY2VpdmUgUzFHIE5EUFxcbiAgKlxcdEJsb2NrQWNrIGZyYW1lcy5cXG4gICpcXG4rICogQElFRUU4MDIxMV9IV19UWF9OT19QVVNIQkFDSzogVGhlIGRyaXZlciBoYW5kcyBldmVyeSBmcmFtZSBpdCBkZXF1ZXVlc1xcbisgKlxcdHRvIHRoZSBoYXJkd2FyZSBhdCBvbmNlLCBhbmQgdGhlIGhhcmR3YXJlIHBpY2tzIHRoZSBzdGF0aW9uIGl0IHNlcnZlc1xcbisgKlxcdG5leHQsIHNvIHRoZSBvcmRlciBpbiB3aGljaCBtYWM4MDIxMSBzY2hlZHVsZXMgdGhlIHF1ZXVlcyBkb2VzIG5vdFxcbisgKlxcdHJlYWNoIHRoZSBhaXIuIG1hYzgwMjExIHRoZW4gYXBwbGllcyB0aGUgYWlydGltZSB3ZWlnaHQgdG8gdGhlXFxuKyAqXFx0YWlydGltZSBxdWV1ZSBsaW1pdCBpbnN0ZWFkLlxcbisgKlxcbiAgKiBATlVNX0lFRUU4MDIxMV9IV19GTEFHUzogbnVtYmVyIG9mIGhhcmR3YXJlIGZsYWdzLCB1c2VkIGZvciBzaXppbmcgYXJyYXlzXFxuICAqL1xcbiBlbnVtIGllZWU4MDIxMV9od19mbGFncyB7XFxuQEAgLTMxNDcsNiArMzE1Myw3IEBAIGVudW0gaWVlZTgwMjExX2h3X2ZsYWdzIHtcXG4gXFx0SUVFRTgwMjExX0hXX0hBTkRMRVNfUVVJRVRfQ1NBLFxcbiBcXHRJRUVFODAyMTFfSFdfU1RSSUNULFxcbiBcXHRJRUVFODAyMTFfSFdfU1VQUE9SVFNfTkRQX0JMT0NLQUNLLFxcbitcXHRJRUVFODAyMTFfSFdfVFhfTk9fUFVTSEJBQ0ssXFxuIFxcbiBcXHQvKiBrZWVwIGxhc3QsIG9idmlvdXNseSAqL1xcbiBcXHROVU1fSUVFRTgwMjExX0hXX0ZMQUdTXFxuZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxMS9kZWJ1Z2ZzLmMgYi9uZXQvbWFjODAyMTEvZGVidWdmcy5jXFxuaW5kZXggODk0NmIwMjc3ODJjZi4uZGRiZmE5OTFlYzc0ZSAxMDA2NDRcXG4tLS0gYS9uZXQvbWFjODAyMTEvZGVidWdmcy5jXFxuKysrIGIvbmV0L21hYzgwMjExL2RlYnVnZnMuY1xcbkBAIC00NjIsNiArNDYyLDcgQEAgc3RhdGljIGNvbnN0IGNoYXIgKmh3X2ZsYWdfbmFtZXNbXSA9IHtcXG4gXFx0RkxBRyhIQU5ETEVTX1FVSUVUX0NTQSksXFxuIFxcdEZMQUcoU1RSSUNUKSxcXG4gXFx0RkxBRyhTVVBQT1JUU19ORFBfQkxPQ0tBQ0spLFxcbitcXHRGTEFHKFRYX05PX1BVU0hCQUNLKSxcXG4gI3VuZGVmIEZMQUdcXG4gfTtcXG4gXFxuZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxMS90eC5jIGIvbmV0L21hYzgwMjExL3R4LmNcXG5pbmRleCBjMzMwOTI5NjBkZjI2Li5jOTRlZmZmNDhkNzQ3IDEwMDY0NFxcbi0tLSBhL25ldC9tYWM4MDIxMS90eC5jXFxuKysrIGIvbmV0L21hYzgwMjExL3R4LmNcXG5AQCAtNDIxNyw2ICs0MjE3LDIxIEBAIEVYUE9SVF9TWU1CT0woX19pZWVlODAyMTFfc2NoZWR1bGVfdHhxKTtcXG4gXFxuIERFRklORV9TVEFUSUNfS0VZX0ZBTFNFKGFxbF9kaXNhYmxlKTtcXG4gXFxuK3N0YXRpYyB1MzIgaWVlZTgwMjExX2FxbF9zdGFfbGltaXQoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXFxuK1xcdFxcdFxcdFxcdCAgIHN0cnVjdCBzdGFfaW5mbyAqc3RhLCB1MzIgbGltaXQpXFxuK3tcXG4rXFx0dTMyIHNjYWxlZDtcXG4rXFxuK1xcdGlmICghaWVlZTgwMjExX2h3X2NoZWNrKFxcdTAwMjZsb2NhbC1cXHUwMDNlaHcsIFRYX05PX1BVU0hCQUNLKSB8fFxcbitcXHQgICAgc3RhLVxcdTAwM2VhaXJ0aW1lX3dlaWdodCA9PSBJRUVFODAyMTFfREVGQVVMVF9BSVJUSU1FX1dFSUdIVClcXG4rXFx0XFx0cmV0dXJuIGxpbWl0O1xcbitcXG4rXFx0c2NhbGVkID0gbXVsdF9mcmFjKGxpbWl0LCBzdGEtXFx1MDAzZWFpcnRpbWVfd2VpZ2h0LFxcbitcXHRcXHRcXHQgICBJRUVFODAyMTFfREVGQVVMVF9BSVJUSU1FX1dFSUdIVCk7XFxuK1xcbitcXHRyZXR1cm4gbWluKHNjYWxlZCwgbWF4KGxpbWl0LCBsb2NhbC1cXHUwMDNlYXFsX3RocmVzaG9sZCkpO1xcbit9XFxuK1xcbiBib29sIGllZWU4MDIxMV90eHFfYWlydGltZV9jaGVjayhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4gXFx0XFx0XFx0XFx0IHN0cnVjdCBpZWVlODAyMTFfdHhxICp0eHEpXFxuIHtcXG5AQCAtNDIzOCwxMyArNDI1MywxNSBAQCBib29sIGllZWU4MDIxMV90eHFfYWlydGltZV9jaGVjayhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4gXFxuIFxcdHN0YSA9IGNvbnRhaW5lcl9vZih0eHEtXFx1MDAzZXN0YSwgc3RydWN0IHN0YV9pbmZvLCBzdGEpO1xcbiBcXHRpZiAoYXRvbWljX3JlYWQoXFx1MDAyNnN0YS1cXHUwMDNlYWlydGltZVt0eHEtXFx1MDAzZWFjXS5hcWxfdHhfcGVuZGluZykgXFx1MDAzY1xcbi1cXHQgICAgc3RhLVxcdTAwM2VhaXJ0aW1lW3R4cS1cXHUwMDNlYWNdLmFxbF9saW1pdF9sb3cpXFxuK1xcdCAgICBpZWVlODAyMTFfYXFsX3N0YV9saW1pdChsb2NhbCwgc3RhLFxcbitcXHRcXHRcXHRcXHQgICAgc3RhLVxcdTAwM2VhaXJ0aW1lW3R4cS1cXHUwMDNlYWNdLmFxbF9saW1pdF9sb3cpKVxcbiBcXHRcXHRyZXR1cm4gdHJ1ZTtcXG4gXFxuIFxcdGlmIChhdG9taWNfcmVhZChcXHUwMDI2bG9jYWwtXFx1MDAzZWFxbF90b3RhbF9wZW5kaW5nX2FpcnRpbWUpIFxcdTAwM2NcXG4gXFx0ICAgIGxvY2FsLVxcdTAwM2VhcWxfdGhyZXNob2xkIFxcdTAwMjZcXHUwMDI2XFxuIFxcdCAgICBhdG9taWNfcmVhZChcXHUwMDI2c3RhLVxcdTAwM2VhaXJ0aW1lW3R4cS1cXHUwMDNlYWNdLmFxbF90eF9wZW5kaW5nKSBcXHUwMDNjXFxuLVxcdCAgICBzdGEtXFx1MDAzZWFpcnRpbWVbdHhxLVxcdTAwM2VhY10uYXFsX2xpbWl0X2hpZ2gpXFxuK1xcdCAgICBpZWVlODAyMTFfYXFsX3N0YV9saW1pdChsb2NhbCwgc3RhLFxcbitcXHRcXHRcXHRcXHQgICAgc3RhLVxcdTAwM2VhaXJ0aW1lW3R4cS1cXHUwMDNlYWNdLmFxbF9saW1pdF9oaWdoKSlcXG4gXFx0XFx0cmV0dXJuIHRydWU7XFxuIFxcbiBcXHRyZXR1cm4gZmFsc2U7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDE4OjA5OjMxLjEwMzUwNDIzNVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6NzA1MjQxMjQyMzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUFDODAyMTFcIixcbiAgICBcIkNGRzgwMjExXCIsXG4gICAgXCJBVEgxMUtcIixcbiAgICBcIk1BQzgwMjExX0RFQlVHRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpZWVlODAyMTFfdHhxX2FpcnRpbWVfY2hlY2tcIixcbiAgICBcImllZWU4MDIxMV9hcWxfc3RhX2xpbWl0XCIsXG4gICAgXCJpZWVlODAyMTFfbmV4dF90eHFcIixcbiAgICBcImllZWU4MDIxMV90eF9kZXF1ZXVlXCIsXG4gICAgXCJfX2F0aDExa19tYWNfcmVnaXN0ZXJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIHRoZSBJRUVFODAyMTFfSFdfVFhfTk9fUFVTSEJBQ0sgaGFyZHdhcmUgZmxhZyBhbmQgYWRkcyBzdGF0aW9uIGFpcnRpbWUgcXVldWUgbGltaXQgY2FsY3VsYXRpb24gKGllZWU4MDIxMV9hcWxfc3RhX2xpbWl0KSB0byB0aGUgbWFjODAyMTEgVFggcXVldWUgYWlydGltZSBjaGVjayAoaWVlZTgwMjExX3R4cV9haXJ0aW1lX2NoZWNrKS4gVGhlIG1hYzgwMjExIHN1YnN5c3RlbSBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBtYWM4MDIxMV9od3NpbSBhbmQgbmw4MDIxMSBpbnRlcmZhY2VzLCBtYWtpbmcgdGhlc2UgcXVldWUgc2NoZWR1bGluZyBhbmQgYWlydGltZSBjYWxjdWxhdGlvbiBjaGFuZ2VzIHdvcnRoIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3NcbnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4xLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncyxcbmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuXG5cbi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6XG4gIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWRcbiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS5cbiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLFxuICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuXG5cbi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgXCJOTyBGVU5DVElPTkFMIENIQU5HRVwiIChORkNJKSBPUiBcIlJFRkFDVE9SSU5HXCIgQ0xBSU1TOlxuICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzIFwiY2xlYW51cHNcIiwgXCJyZWZhY3RvcmluZ3NcIiwgb3Igc3RhdGVcbiAgXCJObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZFwiLiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS5cbiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50XG4gIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLlxuICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLlxuXG4tIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOlxuICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosXG4gIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLlxuICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyXG4gIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczpcblxuLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOlxuICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy5cbiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLylcbiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuXG4gICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHNcbiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLlxuICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy5cbi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOlxuICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6XG4gICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nXG4gICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuXG4gICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6XG4tIENvcmUgU3Vic3lzdGVtczpcbiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksXG4gICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLlxuLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6XG4gICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLlxuLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6XG4gICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLlxuLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOlxuICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOlxuXG4tIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzpcbiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXNcbiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHRcbiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuXG4gIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyBcImZvY3VzZWRcIixcbiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLlxuXG4tIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzpcbiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzXG4gIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LlxuXG4tIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKTpcbiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFja1xuICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy5cbiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyXG4gIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3Ncbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5JZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOlxuLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuLSBDaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLlxuLSBTdHJpcCBhbnkgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiVGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjRcblxuRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMTExNjUxYjE1NmZjMjE5NjY2NWRkZGY5ZGI2MmJlYWM2NzcxNTUwNFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgU2VwIDggMTg6MDk6MjcgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuY1xuaW5kZXggMmQ1NWNkYzRkMTY1ZC4uODdlNjA2MmM1NTUwOSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmNcbkBAIC0xMDQ5NCw2ICsxMDQ5NCw3IEBAIHN0YXRpYyBpbnQgX19hdGgxMWtfbWFjX3JlZ2lzdGVyKHN0cnVjdCBhdGgxMWsgKmFyKVxuIFxuIFx0aWVlZTgwMjExX2h3X3NldChhci1cdTAwM2VodywgU0lHTkFMX0RCTSk7XG4gXHRpZWVlODAyMTFfaHdfc2V0KGFyLVx1MDAzZWh3LCBTVVBQT1JUU19QUyk7XG4rXHRpZWVlODAyMTFfaHdfc2V0KGFyLVx1MDAzZWh3LCBUWF9OT19QVVNIQkFDSyk7XG4gXHRpZWVlODAyMTFfaHdfc2V0KGFyLVx1MDAzZWh3LCBTVVBQT1JUU19EWU5BTUlDX1BTKTtcbiBcdGllZWU4MDIxMV9od19zZXQoYXItXHUwMDNlaHcsIE1GUF9DQVBBQkxFKTtcbiBcdGllZWU4MDIxMV9od19zZXQoYXItXHUwMDNlaHcsIFJFUE9SVFNfVFhfQUNLX1NUQVRVUyk7XG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvbWFjODAyMTEuaCBiL2luY2x1ZGUvbmV0L21hYzgwMjExLmhcbmluZGV4IDdiYjQ2MTgwNjViNjcuLjgwMzgxYzdhYmQ4NGEgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL25ldC9tYWM4MDIxMS5oXG4rKysgYi9pbmNsdWRlL25ldC9tYWM4MDIxMS5oXG5AQCAtMzA4Niw2ICszMDg2LDEyIEBAIHN0cnVjdCBpZWVlODAyMTFfdHhxIHtcbiAgKiBASUVFRTgwMjExX0hXX1NVUFBPUlRTX05EUF9CTE9DS0FDSzogSFcgY2FuIHRyYW5zbWl0L3JlY2VpdmUgUzFHIE5EUFxuICAqXHRCbG9ja0FjayBmcmFtZXMuXG4gICpcbisgKiBASUVFRTgwMjExX0hXX1RYX05PX1BVU0hCQUNLOiBUaGUgZHJpdmVyIGhhbmRzIGV2ZXJ5IGZyYW1lIGl0IGRlcXVldWVzXG4rICpcdHRvIHRoZSBoYXJkd2FyZSBhdCBvbmNlLCBhbmQgdGhlIGhhcmR3YXJlIHBpY2tzIHRoZSBzdGF0aW9uIGl0IHNlcnZlc1xuKyAqXHRuZXh0LCBzbyB0aGUgb3JkZXIgaW4gd2hpY2ggbWFjODAyMTEgc2NoZWR1bGVzIHRoZSBxdWV1ZXMgZG9lcyBub3RcbisgKlx0cmVhY2ggdGhlIGFpci4gbWFjODAyMTEgdGhlbiBhcHBsaWVzIHRoZSBhaXJ0aW1lIHdlaWdodCB0byB0aGVcbisgKlx0YWlydGltZSBxdWV1ZSBsaW1pdCBpbnN0ZWFkLlxuKyAqXG4gICogQE5VTV9JRUVFODAyMTFfSFdfRkxBR1M6IG51bWJlciBvZiBoYXJkd2FyZSBmbGFncywgdXNlZCBmb3Igc2l6aW5nIGFycmF5c1xuICAqL1xuIGVudW0gaWVlZTgwMjExX2h3X2ZsYWdzIHtcbkBAIC0zMTQ3LDYgKzMxNTMsNyBAQCBlbnVtIGllZWU4MDIxMV9od19mbGFncyB7XG4gXHRJRUVFODAyMTFfSFdfSEFORExFU19RVUlFVF9DU0EsXG4gXHRJRUVFODAyMTFfSFdfU1RSSUNULFxuIFx0SUVFRTgwMjExX0hXX1NVUFBPUlRTX05EUF9CTE9DS0FDSyxcbitcdElFRUU4MDIxMV9IV19UWF9OT19QVVNIQkFDSyxcbiBcbiBcdC8qIGtlZXAgbGFzdCwgb2J2aW91c2x5ICovXG4gXHROVU1fSUVFRTgwMjExX0hXX0ZMQUdTXG5kaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjExL2RlYnVnZnMuYyBiL25ldC9tYWM4MDIxMS9kZWJ1Z2ZzLmNcbmluZGV4IDg5NDZiMDI3NzgyY2YuLmRkYmZhOTkxZWM3NGUgMTAwNjQ0XG4tLS0gYS9uZXQvbWFjODAyMTEvZGVidWdmcy5jXG4rKysgYi9uZXQvbWFjODAyMTEvZGVidWdmcy5jXG5AQCAtNDYyLDYgKzQ2Miw3IEBAIHN0YXRpYyBjb25zdCBjaGFyICpod19mbGFnX25hbWVzW10gPSB7XG4gXHRGTEFHKEhBTkRMRVNfUVVJRVRfQ1NBKSxcbiBcdEZMQUcoU1RSSUNUKSxcbiBcdEZMQUcoU1VQUE9SVFNfTkRQX0JMT0NLQUNLKSxcbitcdEZMQUcoVFhfTk9fUFVTSEJBQ0spLFxuICN1bmRlZiBGTEFHXG4gfTtcbiBcbmRpZmYgLS1naXQgYS9uZXQvbWFjODAyMTEvdHguYyBiL25ldC9tYWM4MDIxMS90eC5jXG5pbmRleCBjMzMwOTI5NjBkZjI2Li5jOTRlZmZmNDhkNzQ3IDEwMDY0NFxuLS0tIGEvbmV0L21hYzgwMjExL3R4LmNcbisrKyBiL25ldC9tYWM4MDIxMS90eC5jXG5AQCAtNDIxNyw2ICs0MjE3LDIxIEBAIEVYUE9SVF9TWU1CT0woX19pZWVlODAyMTFfc2NoZWR1bGVfdHhxKTtcbiBcbiBERUZJTkVfU1RBVElDX0tFWV9GQUxTRShhcWxfZGlzYWJsZSk7XG4gXG4rc3RhdGljIHUzMiBpZWVlODAyMTFfYXFsX3N0YV9saW1pdChzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcbitcdFx0XHRcdCAgIHN0cnVjdCBzdGFfaW5mbyAqc3RhLCB1MzIgbGltaXQpXG4re1xuK1x0dTMyIHNjYWxlZDtcbitcbitcdGlmICghaWVlZTgwMjExX2h3X2NoZWNrKFx1MDAyNmxvY2FsLVx1MDAzZWh3LCBUWF9OT19QVVNIQkFDSykgfHxcbitcdCAgICBzdGEtXHUwMDNlYWlydGltZV93ZWlnaHQgPT0gSUVFRTgwMjExX0RFRkFVTFRfQUlSVElNRV9XRUlHSFQpXG4rXHRcdHJldHVybiBsaW1pdDtcbitcbitcdHNjYWxlZCA9IG11bHRfZnJhYyhsaW1pdCwgc3RhLVx1MDAzZWFpcnRpbWVfd2VpZ2h0LFxuK1x0XHRcdCAgIElFRUU4MDIxMV9ERUZBVUxUX0FJUlRJTUVfV0VJR0hUKTtcbitcbitcdHJldHVybiBtaW4oc2NhbGVkLCBtYXgobGltaXQsIGxvY2FsLVx1MDAzZWFxbF90aHJlc2hvbGQpKTtcbit9XG4rXG4gYm9vbCBpZWVlODAyMTFfdHhxX2FpcnRpbWVfY2hlY2soc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4gXHRcdFx0XHQgc3RydWN0IGllZWU4MDIxMV90eHEgKnR4cSlcbiB7XG5AQCAtNDIzOCwxMyArNDI1MywxNSBAQCBib29sIGllZWU4MDIxMV90eHFfYWlydGltZV9jaGVjayhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbiBcbiBcdHN0YSA9IGNvbnRhaW5lcl9vZih0eHEtXHUwMDNlc3RhLCBzdHJ1Y3Qgc3RhX2luZm8sIHN0YSk7XG4gXHRpZiAoYXRvbWljX3JlYWQoXHUwMDI2c3RhLVx1MDAzZWFpcnRpbWVbdHhxLVx1MDAzZWFjXS5hcWxfdHhfcGVuZGluZykgXHUwMDNjXG4tXHQgICAgc3RhLVx1MDAzZWFpcnRpbWVbdHhxLVx1MDAzZWFjXS5hcWxfbGltaXRfbG93KVxuK1x0ICAgIGllZWU4MDIxMV9hcWxfc3RhX2xpbWl0KGxvY2FsLCBzdGEsXG4rXHRcdFx0XHQgICAgc3RhLVx1MDAzZWFpcnRpbWVbdHhxLVx1MDAzZWFjXS5hcWxfbGltaXRfbG93KSlcbiBcdFx0cmV0dXJuIHRydWU7XG4gXG4gXHRpZiAoYXRvbWljX3JlYWQoXHUwMDI2bG9jYWwtXHUwMDNlYXFsX3RvdGFsX3BlbmRpbmdfYWlydGltZSkgXHUwMDNjXG4gXHQgICAgbG9jYWwtXHUwMDNlYXFsX3RocmVzaG9sZCBcdTAwMjZcdTAwMjZcbiBcdCAgICBhdG9taWNfcmVhZChcdTAwMjZzdGEtXHUwMDNlYWlydGltZVt0eHEtXHUwMDNlYWNdLmFxbF90eF9wZW5kaW5nKSBcdTAwM2Ncbi1cdCAgICBzdGEtXHUwMDNlYWlydGltZVt0eHEtXHUwMDNlYWNdLmFxbF9saW1pdF9oaWdoKVxuK1x0ICAgIGllZWU4MDIxMV9hcWxfc3RhX2xpbWl0KGxvY2FsLCBzdGEsXG4rXHRcdFx0XHQgICAgc3RhLVx1MDAzZWFpcnRpbWVbdHhxLVx1MDAzZWFjXS5hcWxfbGltaXRfaGlnaCkpXG4gXHRcdHJldHVybiB0cnVlO1xuIFxuIFx0cmV0dXJuIGZhbHNlO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMTg6MDk6MzEuMTAzNTA3MDc1WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6Nzg0MTA2NzIzNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBhdGNoIGZvciBGdXp6aW5nIFBvdGVudGlhbCoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoaXMgcGF0Y2ggaXMgZXZlbiAqd29ydGgqIGZ1enppbmcuIFdlIGhhdmUgYSBwYXRjaCBkaWZmIHdpdGggY2hhbmdlcyBpbiBgYXRoMTFrL21hYy5jYCwgYG1hYzgwMjExLmhgLCBgZGVidWdmcy5jYCwgYW5kIGB0eC5jYC4gVGhlIGNvcmUgc2VlbXMgdG8gYmUgYXJvdW5kIGEgYFRYX05PX1BVU0hCQUNLYCBmbGFnLCBhbmQgdGhlIGFkZGl0aW9uIG9mIGBpZWVlODAyMTFfYXFsX3N0YV9saW1pdCgpYCBpbiB0aGUgdHJhbnNtaXQgcGF0aC4gVGhpcyBkZWZpbml0ZWx5IHdhcnJhbnRzIGEgY2xvc2VyIGxvb2suXG5cbk15IGluaXRpYWwgdGhvdWdodCBpcyB0byBkZXRlcm1pbmUgdGhlIHJlYWNoYWJpbGl0eSBvZiB0aGVzZSBhcmVhcyBvZiBjb2RlIHdpdGhpbiB0aGUgYnJvYWRlciBMaW51eCBrZXJuZWwsIHNwZWNpZmljYWxseSB3aXRoaW4gdGhlIG1hYzgwMjExIHdpcmVsZXNzIHN1YnN5c3RlbS4gR2l2ZW4gbWFjODAyMTEncyBjb3JlIHJvbGUgaW4gd2lyZWxlc3MgbmV0d29ya2luZywgaXQgc2hvdWxkIGJlIGEganVpY3kgdGFyZ2V0LiBMdWNraWx5LCBzaW5jZSBJIGFscmVhZHkga25vdyBzeXprYWxsZXIgaGFzIGhhZCBzdWNjZXNzIGZ1enppbmcgbWFjODAyMTEgdmlhIGBtYWM4MDIxMV9od3NpbWAsIGB2aXJ0X3dpZmlgLCBgY2ZnODAyMTFgLCBhbmQgYG5sODAyMTFgLCB0aGF0J3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBUaGlzIHN1Z2dlc3RzIGl0IGlzIGRlZmluaXRlbHkgZnV6emFibGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBhbmQgR0NFLCB3aGljaCBpcyBhIGdyZWF0IHNpZ24uXG5cbk5leHQgc3RlcDogbGV0J3MgdmVyaWZ5IG1hYzgwMjExJ3MgcGxhY2UgaW4gdGhlIHdpcmVsZXNzIHN0YWNrLiBJIG5lZWQgdG8gY29uZmlybSBpdHMgcm9sZSBpbiB0aGlzIHNwZWNpZmljIGFyZWEg4oCTIGlzIGl0IGNvcmUsIG9yIHJlYWNoYWJsZSB0aHJvdWdoIHRoZSBpbnRlcmZhY2VzIEkgbWVudGlvbmVkPyBUaGVuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25maWcgb3B0aW9ucyBjb250cm9sbGluZyB0aGVzZSBiaXRzLiBJJ2xsIG5lZWQgdG8gdXNlIHNvbWUgYGdyZXBgIG1hZ2ljIGluIHRoZSBrZXJuZWwgc291cmNlIHRvIGxvb2sgZm9yIGNvbmZpZ3VyYXRpb25zIGFuZCBjYWxsIGdyYXBocy4gSSB3YW50IHRvIHVuZGVyc3RhbmQgZXhhY3RseSAqaG93KiB0aGVzZSBuZXcgY2hhbmdlcyBhcmUgdXNlZCwgYW5kIHdoYXQgY29uZmlndXJhdGlvbnMgYXJlIHJlcXVpcmVkIHRvIHRyaWdnZXIgdGhlbS4gVGhpcyB3aWxsIGd1aWRlIG15IGZ1enppbmcgc2V0dXAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQyOTQsIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNzUsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQxODowOTozOC45NDQ1NzczMzFaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTE1MjMyNzMxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImllZWU4MDIxMV90eHFfYWlydGltZV9jaGVja1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbWFjODAyMTFcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L21hYzgwMjExL3R4LmM9Mzg4Nj1zdHJ1Y3Qgc2tfYnVmZiAqaWVlZTgwMjExX3R4X2RlcXVldWUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYy0zOTA0LVxcbm5ldC9tYWM4MDIxMS90eC5jOjM5MDU6XFx0aWYgKCFpZWVlODAyMTFfdHhxX2FpcnRpbWVfY2hlY2soaHcsIHR4cSkpXFxubmV0L21hYzgwMjExL3R4LmMtMzkwNi1cXHRcXHRyZXR1cm4gTlVMTDtcXG4tLVxcbm5ldC9tYWM4MDIxMS90eC5jPTQxMTU9c3RydWN0IGllZWU4MDIxMV90eHEgKmllZWU4MDIxMV9uZXh0X3R4cShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgdTggYWMpXFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYy00MTQ0LVxcbm5ldC9tYWM4MDIxMS90eC5jOjQxNDU6XFx0YXFsX2NoZWNrID0gaWVlZTgwMjExX3R4cV9haXJ0aW1lX2NoZWNrKGh3LCBcXHUwMDI2dHhxaS1cXHUwMDNldHhxKTtcXG5uZXQvbWFjODAyMTEvdHguYy00MTQ2LVxcdGlmIChhcWxfY2hlY2spXFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYz00MjIwPXN0YXRpYyB1MzIgaWVlZTgwMjExX2FxbF9zdGFfbGltaXQoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYy00MjM0LVxcbm5ldC9tYWM4MDIxMS90eC5jOjQyMzU6Ym9vbCBpZWVlODAyMTFfdHhxX2FpcnRpbWVfY2hlY2soc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxubmV0L21hYzgwMjExL3R4LmMtNDIzNi1cXHRcXHRcXHRcXHQgc3RydWN0IGllZWU4MDIxMV90eHEgKnR4cSlcXG4tLVxcbm5ldC9tYWM4MDIxMS90eC5jLTQyNjgtfVxcbm5ldC9tYWM4MDIxMS90eC5jOjQyNjk6RVhQT1JUX1NZTUJPTChpZWVlODAyMTFfdHhxX2FpcnRpbWVfY2hlY2spO1xcbm5ldC9tYWM4MDIxMS90eC5jLTQyNzAtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDE4OjA5OjM5LjA1OTgxNTI0MloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI3ODg3MTY4OTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyBpZiBJIHdlcmUgdGhpbmtpbmcgdGhlc2UgdGhvdWdodHM6XG5cbioqQW5hbHl6aW5nIGBpZWVlODAyMTFfYXFsX3N0YV9saW1pdGAgaW4gYG5ldC9tYWM4MDIxMS90eC5jYCoqXG5cbk9rYXksIEkgbmVlZCB0byBkaWcgaW50byBob3cgdGhpcyBBUUwgKEFpcnRpbWUgRmFpcm5lc3MgUXVldWUgTGVuZ3RoKSBzdGF0aW9uIGxpbWl0IGlzIGJlaW5nIGhhbmRsZWQuIFRoZSBvYnZpb3VzIHBsYWNlIHRvIHN0YXJ0IGlzIGBuZXQvbWFjODAyMTEvdHguY2AsIHdoZXJlIEkgYXNzdW1lIHRoZSBhY3R1YWwgdHJhbnNtaXNzaW9uIGxvZ2ljIGFuZCBxdWV1ZSBtYW5hZ2VtZW50IHJlc2lkZS4gSSdsbCBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IGBpZWVlODAyMTFfYXFsX3N0YV9saW1pdGAgaXMgKnVzZWQqIGZpcnN0LiBJcyBpdCBhIGhhcmQgbGltaXQ/IElzIGl0IGEgdGFyZ2V0PyBJcyBpdCBkeW5hbWljPyBJJ2xsIGJlIGxvb2tpbmcgZm9yIHdoZXJlIHRoaXMgdmFyaWFibGUgaXMgcmVhZCwgY29tcGFyZWQsIGFuZCBtb2RpZmllZCwgYW5kIHdoYXQgdGhhdCByZXZlYWxzIGFib3V0IHRoZSBiZWhhdmlvciBvZiB0aGUgQVFNIHN5c3RlbSBhcyBhIHdob2xlLiBLbm93aW5nIHRoZSBjb250ZXh0IGFyb3VuZCB0aGlzIGZ1bmN0aW9uIHdpbGwgYWxzbyBiZSB2aXRhbDsgaG93IGFyZSB0aGUgcXVldWVzIHN0cnVjdHVyZWQsIHdoYXQgb3RoZXIgZmFjdG9ycyBpbmZsdWVuY2UgcGFja2V0IHNjaGVkdWxpbmcsIGFuZCB3aGF0IGFyZSB0aGUgaW1wbGljYXRpb25zIGZvciBwZXItc3RhdGlvbiBmYWlybmVzcyBhbmQgb3ZlcmFsbCB0aHJvdWdocHV0PyBJJ2xsIHByb2JhYmx5IGFsc28gbmVlZCB0byBrZWVwIGFuIGV5ZSBvbiByZWxhdGVkIGZ1bmN0aW9ucyBsaWtlIHRob3NlIGhhbmRsaW5nIHJhdGUgY29udHJvbCBhbmQgZnJhbWUgYWdncmVnYXRpb24gYXMgdGhleSdyZSBhbGwgaW50ZXItcmVsYXRlZC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCdzIGNhdXNpbmcgdGhlIHByb2JsZW0sIGFuZCB0aGlzIHNlZW1zIGxpa2UgdGhlIGxpa2VseSBwbGFjZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTY0MCwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDE4OjA5OjQxLjg0ODUzNDQ4MloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM1MTA0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvbWFjODAyMTEvdHguY1wiLFxuICBcIkZpcnN0TGluZVwiOiA0MjE1LFxuICBcIkxpbmVDb3VudFwiOiA2MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCI0MjE1OlxcdH1cXG40MjE2OlxcdEVYUE9SVF9TWU1CT0woX19pZWVlODAyMTFfc2NoZWR1bGVfdHhxKTtcXG40MjE3OlxcdFxcbjQyMTg6XFx0REVGSU5FX1NUQVRJQ19LRVlfRkFMU0UoYXFsX2Rpc2FibGUpO1xcbjQyMTk6XFx0XFxuNDIyMDpcXHRzdGF0aWMgdTMyIGllZWU4MDIxMV9hcWxfc3RhX2xpbWl0KHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxcbjQyMjE6XFx0XFx0XFx0XFx0XFx0ICAgc3RydWN0IHN0YV9pbmZvICpzdGEsIHUzMiBsaW1pdClcXG40MjIyOlxcdHtcXG40MjIzOlxcdFxcdHUzMiBzY2FsZWQ7XFxuNDIyNDpcXHRcXG40MjI1OlxcdFxcdGlmICghaWVlZTgwMjExX2h3X2NoZWNrKFxcdTAwMjZsb2NhbC1cXHUwMDNlaHcsIFRYX05PX1BVU0hCQUNLKSB8fFxcbjQyMjY6XFx0XFx0ICAgIHN0YS1cXHUwMDNlYWlydGltZV93ZWlnaHQgPT0gSUVFRTgwMjExX0RFRkFVTFRfQUlSVElNRV9XRUlHSFQpXFxuNDIyNzpcXHRcXHRcXHRyZXR1cm4gbGltaXQ7XFxuNDIyODpcXHRcXG40MjI5OlxcdFxcdHNjYWxlZCA9IG11bHRfZnJhYyhsaW1pdCwgc3RhLVxcdTAwM2VhaXJ0aW1lX3dlaWdodCxcXG40MjMwOlxcdFxcdFxcdFxcdCAgIElFRUU4MDIxMV9ERUZBVUxUX0FJUlRJTUVfV0VJR0hUKTtcXG40MjMxOlxcdFxcbjQyMzI6XFx0XFx0cmV0dXJuIG1pbihzY2FsZWQsIG1heChsaW1pdCwgbG9jYWwtXFx1MDAzZWFxbF90aHJlc2hvbGQpKTtcXG40MjMzOlxcdH1cXG40MjM0OlxcdFxcbjQyMzU6XFx0Ym9vbCBpZWVlODAyMTFfdHhxX2FpcnRpbWVfY2hlY2soc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuNDIzNjpcXHRcXHRcXHRcXHRcXHQgc3RydWN0IGllZWU4MDIxMV90eHEgKnR4cSlcXG40MjM3OlxcdHtcXG40MjM4OlxcdFxcdHN0cnVjdCBzdGFfaW5mbyAqc3RhO1xcbjQyMzk6XFx0XFx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBod190b19sb2NhbChodyk7XFxuNDI0MDpcXHRcXG40MjQxOlxcdFxcdGlmICghd2lwaHlfZXh0X2ZlYXR1cmVfaXNzZXQobG9jYWwtXFx1MDAzZWh3LndpcGh5LCBOTDgwMjExX0VYVF9GRUFUVVJFX0FRTCkpXFxuNDI0MjpcXHRcXHRcXHRyZXR1cm4gdHJ1ZTtcXG40MjQzOlxcdFxcbjQyNDQ6XFx0XFx0aWYgKHN0YXRpY19icmFuY2hfdW5saWtlbHkoXFx1MDAyNmFxbF9kaXNhYmxlKSlcXG40MjQ1OlxcdFxcdFxcdHJldHVybiB0cnVlO1xcbjQyNDY6XFx0XFxuNDI0NzpcXHRcXHRpZiAoIXR4cS1cXHUwMDNlc3RhKVxcbjQyNDg6XFx0XFx0XFx0cmV0dXJuIGF0b21pY19yZWFkKFxcdTAwMjZsb2NhbC1cXHUwMDNlYXFsX21jX3BlbmRpbmdfYWlydGltZSkgXFx1MDAzY1xcbjQyNDk6XFx0XFx0XFx0ICAgICAgIGxvY2FsLVxcdTAwM2VhcWxfdHhxX2xpbWl0X21jO1xcbjQyNTA6XFx0XFxuNDI1MTpcXHRcXHRpZiAodW5saWtlbHkodHhxLVxcdTAwM2V0aWQgPT0gSUVFRTgwMjExX05VTV9USURTKSlcXG40MjUyOlxcdFxcdFxcdHJldHVybiB0cnVlO1xcbjQyNTM6XFx0XFxuNDI1NDpcXHRcXHRzdGEgPSBjb250YWluZXJfb2YodHhxLVxcdTAwM2VzdGEsIHN0cnVjdCBzdGFfaW5mbywgc3RhKTtcXG40MjU1OlxcdFxcdGlmIChhdG9taWNfcmVhZChcXHUwMDI2c3RhLVxcdTAwM2VhaXJ0aW1lW3R4cS1cXHUwMDNlYWNdLmFxbF90eF9wZW5kaW5nKSBcXHUwMDNjXFxuNDI1NjpcXHRcXHQgICAgaWVlZTgwMjExX2FxbF9zdGFfbGltaXQobG9jYWwsIHN0YSxcXG40MjU3OlxcdFxcdFxcdFxcdFxcdCAgICBzdGEtXFx1MDAzZWFpcnRpbWVbdHhxLVxcdTAwM2VhY10uYXFsX2xpbWl0X2xvdykpXFxuNDI1ODpcXHRcXHRcXHRyZXR1cm4gdHJ1ZTtcXG40MjU5OlxcdFxcbjQyNjA6XFx0XFx0aWYgKGF0b21pY19yZWFkKFxcdTAwMjZsb2NhbC1cXHUwMDNlYXFsX3RvdGFsX3BlbmRpbmdfYWlydGltZSkgXFx1MDAzY1xcbjQyNjE6XFx0XFx0ICAgIGxvY2FsLVxcdTAwM2VhcWxfdGhyZXNob2xkIFxcdTAwMjZcXHUwMDI2XFxuNDI2MjpcXHRcXHQgICAgYXRvbWljX3JlYWQoXFx1MDAyNnN0YS1cXHUwMDNlYWlydGltZVt0eHEtXFx1MDAzZWFjXS5hcWxfdHhfcGVuZGluZykgXFx1MDAzY1xcbjQyNjM6XFx0XFx0ICAgIGllZWU4MDIxMV9hcWxfc3RhX2xpbWl0KGxvY2FsLCBzdGEsXFxuNDI2NDpcXHRcXHRcXHRcXHRcXHQgICAgc3RhLVxcdTAwM2VhaXJ0aW1lW3R4cS1cXHUwMDNlYWNdLmFxbF9saW1pdF9oaWdoKSlcXG40MjY1OlxcdFxcdFxcdHJldHVybiB0cnVlO1xcbjQyNjY6XFx0XFxuNDI2NzpcXHRcXHRyZXR1cm4gZmFsc2U7XFxuNDI2ODpcXHR9XFxuNDI2OTpcXHRFWFBPUlRfU1lNQk9MKGllZWU4MDIxMV90eHFfYWlydGltZV9jaGVjayk7XFxuNDI3MDpcXHRcXG40MjcxOlxcdHUzMiBpZWVlODAyMTFfdHhxX2FxbF9wZW5kaW5nKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbjQyNzI6XFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IGllZWU4MDIxMV90eHEgKnR4cSlcXG40MjczOlxcdHtcXG40Mjc0OlxcdFxcdHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsID0gaHdfdG9fbG9jYWwoaHcpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQxODowOTo0MS44NDg4ODg2NDJaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyODU4MDk2Mjg5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgTUFDODAyMTEgQ29uZmlndXJhdGlvbiBhbmQgRHJpdmVyIERlcGVuZGVuY2llcyoqXG5cbk9rYXksIGxldCdzIGRpdmUgaW4uIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gaG93IGBtYWM4MDIxMWAgaXMgY29uZmlndXJlZCBhbmQgd2hpY2ggZHJpdmVycyBhcmUgYWN0dWFsbHkgdXNpbmcgaXQuIE15IGZpcnN0IHN0b3Agc2hvdWxkIGJlIHRvIGV4YW1pbmUgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZXMuIExldCdzIHN0YXJ0IHdpdGggYG5ldC9tYWM4MDIxMS9LY29uZmlnYC4gVGhpcyBzaG91bGQgZ2l2ZSBtZSBhIGhpZ2gtbGV2ZWwgdmlldyBvZiB0aGUgY29uZmlndXJhYmxlIG9wdGlvbnMgd2l0aGluIHRoZSBgbWFjODAyMTFgIGNvcmUuIFRoZW4sIHNpbmNlIEkga25vdyBhdGgxMWsgaXMgYSBtYWpvciB3aXJlbGVzcyBkcml2ZXIgdGhhdCByZWxpZXMgb24gdGhpcyBzdWJzeXN0ZW0sIEkgc2hvdWxkIGFsc28gbG9vayBhdCB0aGUgYXRoMTFrJ3MgS2NvbmZpZyBmaWxlIChgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnYCkuIENvbXBhcmluZyB0aGVzZSB0d28gd2lsbCBpbGx1bWluYXRlIGhvdyBkZXBlbmRlbmNpZXMgYXJlIGhhbmRsZWQgYW5kIGhvdyB0aGUgc3BlY2lmaWMgZHJpdmVyIGludGVyYWN0cyB3aXRoIHRoZSBtb3JlIGdlbmVyYWwgbWFjODAyMTEgZnJhbWV3b3JrLiBUaGlzIHNob3VsZCBwcm92aWRlIHNvbWUgdXNlZnVsIGluZm9ybWF0aW9uIHJlZ2FyZGluZyBvdmVyYWxsIHN5c3RlbSBiZWhhdmlvci5cblxuXG4iLCJJbnB1dFRva2VucyI6NzA2MSwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYxLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMTg6MDk6NDQuNzA2OTg4NjExWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcwMzE2NTQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBNQUM4MDIxMVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbWFjODAyMTFcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L21hYzgwMjExL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyOmNvbmZpZyBNQUM4MDIxMVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIkdlbmVyaWMgSUVFRSA4MDIuMTEgTmV0d29ya2luZyBTdGFjayAobWFjODAyMTEpXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWc9MTk9aWYgTUFDODAyMTEgIT0gblxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIwLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIxOmNvbmZpZyBNQUM4MDIxMV9IQVNfUkNcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMi1cXHRib29sXFxubmV0L21hYzgwMjExL0tjb25maWctMjMtXFxubmV0L21hYzgwMjExL0tjb25maWc6MjQ6Y29uZmlnIE1BQzgwMjExX1JDX01JTlNUUkVMXFxubmV0L21hYzgwMjExL0tjb25maWctMjUtXFx0Ym9vbCBcXFwiTWluc3RyZWxcXFwiIGlmIEVYUEVSVFxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWc9MzE9Y2hvaWNlXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy00MC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo0MTpjb25maWcgTUFDODAyMTFfUkNfREVGQVVMVF9NSU5TVFJFTFxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTQyLVxcdGJvb2wgXFxcIk1pbnN0cmVsXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWc9NDg9ZW5kY2hvaWNlXFxubmV0L21hYzgwMjExL0tjb25maWctNDktXFxubmV0L21hYzgwMjExL0tjb25maWc6NTA6Y29uZmlnIE1BQzgwMjExX1JDX0RFRkFVTFRcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy01MS1cXHRzdHJpbmdcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnPTU3PWNvbW1lbnQgXFxcIlNvbWUgd2lyZWxlc3MgZHJpdmVycyByZXF1aXJlIGEgcmF0ZSBjb250cm9sIGFsZ29yaXRobVxcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTU5LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjYwOmNvbmZpZyBNQUM4MDIxMV9LVU5JVF9URVNUXFxubmV0L21hYzgwMjExL0tjb25maWctNjEtXFx0dHJpc3RhdGUgXFxcIktVbml0IHRlc3RzIGZvciBtYWM4MDIxMVxcXCIgaWYgIUtVTklUX0FMTF9URVNUU1xcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctNjktXFxubmV0L21hYzgwMjExL0tjb25maWc6NzA6Y29uZmlnIE1BQzgwMjExX01FU0hcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy03MS1cXHRib29sIFxcXCJFbmFibGUgbWFjODAyMTEgbWVzaCBuZXR3b3JraW5nIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy03OC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo3OTpjb25maWcgTUFDODAyMTFfTEVEU1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTgwLVxcdGJvb2wgXFxcIkVuYWJsZSBMRUQgdHJpZ2dlcnNcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy04Ny1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo4ODpjb25maWcgTUFDODAyMTFfREVCVUdGU1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTg5LVxcdGJvb2wgXFxcIkV4cG9ydCBtYWM4MDIxMSBpbnRlcm5hbHMgaW4gRGVidWdGU1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTk2LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjk3OmNvbmZpZyBNQUM4MDIxMV9NRVNTQUdFX1RSQUNJTkdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy05OC1cXHRib29sIFxcXCJUcmFjZSBhbGwgbWFjODAyMTEgZGVidWcgbWVzc2FnZXNcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMDktXFxubmV0L21hYzgwMjExL0tjb25maWc6MTEwOm1lbnVjb25maWcgTUFDODAyMTFfREVCVUdfTUVOVVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTExMS1cXHRib29sIFxcXCJTZWxlY3QgbWFjODAyMTEgZGVidWdnaW5nIGZlYXR1cmVzXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMTE1LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjExNjpjb25maWcgTUFDODAyMTFfTk9JTkxJTkVcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMTctXFx0Ym9vbCBcXFwiRG8gbm90IGlubGluZSBUWC9SWCBoYW5kbGVyc1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTEzMS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxMzI6Y29uZmlnIE1BQzgwMjExX1ZFUkJPU0VfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMzMtXFx0Ym9vbCBcXFwiVmVyYm9zZSBkZWJ1Z2dpbmcgb3V0cHV0XFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMTQyLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE0Mzpjb25maWcgTUFDODAyMTFfTUxNRV9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE0NC1cXHRib29sIFxcXCJWZXJib3NlIG1hbmFnZWQgTUxNRSBvdXRwdXRcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNTMtXFxubmV0L21hYzgwMjExL0tjb25maWc6MTU0OmNvbmZpZyBNQUM4MDIxMV9TVEFfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNTUtXFx0Ym9vbCBcXFwiVmVyYm9zZSBzdGF0aW9uIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE2Mi1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxNjM6Y29uZmlnIE1BQzgwMjExX0hUX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMTY0LVxcdGJvb2wgXFxcIlZlcmJvc2UgSFQgZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMTc0LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE3NTpjb25maWcgTUFDODAyMTFfT0NCX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMTc2LVxcdGJvb2wgXFxcIlZlcmJvc2UgT0NCIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE4NS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxODY6Y29uZmlnIE1BQzgwMjExX0lCU1NfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xODctXFx0Ym9vbCBcXFwiVmVyYm9zZSBJQlNTIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE5Ni1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxOTc6Y29uZmlnIE1BQzgwMjExX1BTX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMTk4LVxcdGJvb2wgXFxcIlZlcmJvc2UgcG93ZXJzYXZlIG1vZGUgZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMjA4LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIwOTpjb25maWcgTUFDODAyMTFfTVBMX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMjEwLVxcdGJvb2wgXFxcIlZlcmJvc2UgbWVzaCBwZWVyIGxpbmsgZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMjIxLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIyMjpjb25maWcgTUFDODAyMTFfTVBBVEhfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMjMtXFx0Ym9vbCBcXFwiVmVyYm9zZSBtZXNoIHBhdGggZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMjM0LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIzNTpjb25maWcgTUFDODAyMTFfTUhXTVBfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMzYtXFx0Ym9vbCBcXFwiVmVyYm9zZSBtZXNoIEhXTVAgcm91dGluZyBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNDctXFxubmV0L21hYzgwMjExL0tjb25maWc6MjQ4OmNvbmZpZyBNQUM4MDIxMV9NRVNIX1NZTkNfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNDktXFx0Ym9vbCBcXFwiVmVyYm9zZSBtZXNoIHN5bmNocm9uaXphdGlvbiBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNTgtXFxubmV0L21hYzgwMjExL0tjb25maWc6MjU5OmNvbmZpZyBNQUM4MDIxMV9NRVNIX0NTQV9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI2MC1cXHRib29sIFxcXCJWZXJib3NlIG1lc2ggY2hhbm5lbCBzd2l0Y2ggZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMjY5LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI3MDpjb25maWcgTUFDODAyMTFfTUVTSF9QU19ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI3MS1cXHRib29sIFxcXCJWZXJib3NlIG1lc2ggcG93ZXJzYXZlIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI4MC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyODE6Y29uZmlnIE1BQzgwMjExX1RETFNfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yODItXFx0Ym9vbCBcXFwiVmVyYm9zZSBURExTIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI5Mi1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyOTM6Y29uZmlnIE1BQzgwMjExX0RFQlVHX0NPVU5URVJTXFxubmV0L21hYzgwMjExL0tjb25maWctMjk0LVxcdGJvb2wgXFxcIkV4dHJhIHN0YXRpc3RpY3MgZm9yIFRYL1JYIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTMwNy1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzozMDg6Y29uZmlnIE1BQzgwMjExX1NUQV9IQVNIX01BWF9TSVpFXFxubmV0L21hYzgwMjExL0tjb25maWctMzA5LVxcdGludCBcXFwiU3RhdGlvbiBoYXNoIHRhYmxlIG1heGltdW0gc2l6ZVxcXCIgaWYgTUFDODAyMTFfREVCVUdfTUVOVVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQxODowOTo0NC43NzczMTUxMjlaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyNzkyMzQ4MDE5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipLZXJuZWwgQ29uZmlndXJhdGlvbiBDb250ZXh0IFNoaWZ0OiBhdGgxMWsgS2NvbmZpZyoqXG5cbkFscmlnaHQsIHNvIHdlJ3JlIGRpdmluZyBiYWNrIGludG8gdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uLCBzcGVjaWZpY2FsbHkgdGhlIGF0aDExayB3aXJlbGVzcyBkcml2ZXIuIEkgbmVlZCB0byBtYWtlIGFic29sdXRlbHkgc3VyZSB3ZSd2ZSBjb25zaWRlcmVkIHRoZSByZWxldmFudCBLY29uZmlnIG9wdGlvbnMuIEl0J3MgdG9vIGVhc3kgdG8gb3Zlcmxvb2sgc29tZXRoaW5nLCBlc3BlY2lhbGx5IGluIGEgc3ByYXdsaW5nIHByb2plY3QgbGlrZSB0aGUga2VybmVsLiBTbywgSSBuZWVkIHRvIGdvIG92ZXIgdGhlIGRyaXZlcidzIEtjb25maWcgZmlsZSwgd2hpY2ggaXMgbG9jYXRlZCBpbiBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWcuIEl0IGlzIGltcG9ydGFudCB0byBmdWxseSB1bmRlcnN0YW5kIHRoZSBmZWF0dXJlcyB0aGF0IGhhdmUgYmVlbiBlbmFibGVkIGFuZCBkaXNhYmxlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6OTUzMiwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDE4OjA5OjQ3LjU2OTY2NjIyOVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTA1Njg3ODYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiQVRIMTFLXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWtcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA5MzEwIGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWc6Mjpjb25maWcgQVRIMTFLXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIlF1YWxjb21tIDgwMi4xMWF4IGNoaXBzZXQgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZy0xMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWc6MTM6Y29uZmlnIEFUSDExS19BSEJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWctMTQtXFx0dHJpc3RhdGUgXFxcIkF0aGVyb3MgYXRoMTFrIEFIQiBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZzoxNTpcXHRkZXBlbmRzIG9uIEFUSDExS1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZy0xNi1cXHRkZXBlbmRzIG9uIFJFTU9URVBST0NcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZy0xOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWc6MjA6Y29uZmlnIEFUSDExS19QQ0lcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWctMjEtXFx0dHJpc3RhdGUgXFxcIkF0aGVyb3MgYXRoMTFrIFBDSSBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZzoyMjpcXHRkZXBlbmRzIG9uIEFUSDExSyBcXHUwMDI2XFx1MDAyNiBQQ0lcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWctMjMtXFx0c2VsZWN0IE1ISV9CVVNcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZy0yOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWc6MzA6Y29uZmlnIEFUSDExS19ERUJVR1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZy0zMS1cXHRib29sIFxcXCJRQ0EgYXRoMTFrIGRlYnVnZ2luZ1xcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWc6MzI6XFx0ZGVwZW5kcyBvbiBBVEgxMUtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWctMzMtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTM3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZzozODpjb25maWcgQVRIMTFLX0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWctMzktXFx0Ym9vbCBcXFwiUUNBIGF0aDExayBkZWJ1Z2ZzIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnOjQwOlxcdGRlcGVuZHMgb24gQVRIMTFLIFxcdTAwMjZcXHUwMDI2IERFQlVHX0ZTIFxcdTAwMjZcXHUwMDI2IE1BQzgwMjExX0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWctNDEtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTQ1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZzo0Njpjb25maWcgQVRIMTFLX1RSQUNJTkdcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWctNDctXFx0Ym9vbCBcXFwiYXRoMTFrIHRyYWNpbmcgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWc6NDg6XFx0ZGVwZW5kcyBvbiBBVEgxMUsgXFx1MDAyNlxcdTAwMjYgRVZFTlRfVFJBQ0lOR1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZy00OS1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWctNTEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnOjUyOmNvbmZpZyBBVEgxMUtfU1BFQ1RSQUxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWctNTMtXFx0Ym9vbCBcXFwiUUNBIGF0aDExayBzcGVjdHJhbCBzY2FuIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnOjU0OlxcdGRlcGVuZHMgb24gQVRIMTFLX0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWctNTUtXFx0ZGVwZW5kcyBvbiBSRUxBWVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTYwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZzo2MTpjb25maWcgQVRIMTFLX0NGUlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZy02Mi1cXHRib29sIFxcXCJhdGgxMWsgY2hhbm5lbCBmcmVxdWVuY3kgcmVzcG9uc2Ugc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWc6NjM6XFx0ZGVwZW5kcyBvbiBBVEgxMUtfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZy02NC1cXHRkZXBlbmRzIG9uIFJFTEFZXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL01ha2VmaWxlLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9NYWtlZmlsZToyOm9iai0kKENPTkZJR19BVEgxMUspICs9IGF0aDExay5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9NYWtlZmlsZS0zLWF0aDExay15ICs9IGNvcmUubyBcXFxcXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL01ha2VmaWxlLTIzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvTWFrZWZpbGU6MjQ6YXRoMTFrLSQoQ09ORklHX0FUSDExS19ERUJVR0ZTKSArPSBkZWJ1Z2ZzLm8gZGVidWdmc19odHRfc3RhdHMubyBkZWJ1Z2ZzX3N0YS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9NYWtlZmlsZS0yNS1hdGgxMWstJChDT05GSUdfTkw4MDIxMV9URVNUTU9ERSkgKz0gdGVzdG1vZGUub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvTWFrZWZpbGU6MjY6YXRoMTFrLSQoQ09ORklHX0FUSDExS19UUkFDSU5HKSArPSB0cmFjZS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9NYWtlZmlsZS0yNy1hdGgxMWstJChDT05GSUdfVEhFUk1BTCkgKz0gdGhlcm1hbC5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9NYWtlZmlsZToyODphdGgxMWstJChDT05GSUdfQVRIMTFLX1NQRUNUUkFMKSArPSBzcGVjdHJhbC5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9NYWtlZmlsZS0yOS1hdGgxMWstJChDT05GSUdfUE0pICs9IHdvdy5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9NYWtlZmlsZT0zMD1hdGgxMWstJChDT05GSUdfREVWX0NPUkVEVU1QKSArPSBjb3JlZHVtcC5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9NYWtlZmlsZTozMTphdGgxMWstJChDT05GSUdfQVRIMTFLX0NGUikgKz0gY2ZyLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL01ha2VmaWxlLTMyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvTWFrZWZpbGU6MzM6b2JqLSQoQ09ORklHX0FUSDExS19BSEIpICs9IGF0aDExa19haGIub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvTWFrZWZpbGUtMzQtYXRoMTFrX2FoYi15ICs9IGFoYi5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9NYWtlZmlsZS0zNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL01ha2VmaWxlOjM2Om9iai0kKENPTkZJR19BVEgxMUtfUENJKSArPSBhdGgxMWtfcGNpLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL01ha2VmaWxlLTM3LWF0aDExa19wY2kteSArPSBtaGkubyBwY2kub1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYz0yND1zdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBhdGgxMWtfYWhiX29mX21hdGNoW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTI4LVxcdHsgLmNvbXBhdGlibGUgPSBcXFwicWNvbSxpcHE4MDc0LXdpZmlcXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6Mjk6XFx0ICAuZGF0YSA9ICh2b2lkICopQVRIMTFLX0hXX0lQUTgwNzQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0zMC1cXHR9LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMzEtXFx0eyAuY29tcGF0aWJsZSA9IFxcXCJxY29tLGlwcTYwMTgtd2lmaVxcXCIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzozMjpcXHQgIC5kYXRhID0gKHZvaWQgKilBVEgxMUtfSFdfSVBRNjAxOF9IVzEwLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMzMtXFx0fSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTM0LVxcdHsgLmNvbXBhdGlibGUgPSBcXFwicWNvbSx3Y242NzUwLXdpZmlcXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6MzU6XFx0ICAuZGF0YSA9ICh2b2lkICopQVRIMTFLX0hXX1dDTjY3NTBfSFcxMCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTM2LVxcdH0sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0zNy1cXHR7IC5jb21wYXRpYmxlID0gXFxcInFjb20saXBxNTAxOC13aWZpXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjM4OlxcdCAgLmRhdGEgPSAodm9pZCAqKUFUSDExS19IV19JUFE1MDE4X0hXMTAsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0zOS1cXHR9LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYz00Mz1NT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBhdGgxMWtfYWhiX29mX21hdGNoKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTQ0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6NDU6I2RlZmluZSBBVEgxMUtfSVJRX0NFMF9PRkZTRVQgNFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtNDYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo0NzpzdGF0aWMgY29uc3QgY2hhciAqaXJxX25hbWVbQVRIMTFLX0lSUV9OVU1fTUFYXSA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTQ4LVxcdFxcXCJtaXNjLXB1bHNlMVxcXCIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jPTE1MT1hdGgxMWtfYWhiX2dldF93aW5kb3dfc3RhcnRfd2NuNjc1MChzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiLCB1MzIgb2Zmc2V0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0xNTUtXFx0LyogSWYgb2Zmc2V0IGxpZXMgd2l0aGluIERQIHJlZ2lzdGVyIHJhbmdlLCB1c2UgMXN0IHdpbmRvdyAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6MTU2OlxcdGlmICgob2Zmc2V0IF4gSEFMX1NFUV9XQ1NTX1VNQUNfT0ZGU0VUKSBcXHUwMDNjIEFUSDExS19QQ0lfV0lORE9XX1JBTkdFX01BU0spXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzoxNTc6XFx0XFx0d2luZG93X3N0YXJ0ID0gQVRIMTFLX1BDSV9XSU5ET1dfU1RBUlQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0xNTgtXFx0LyogSWYgb2Zmc2V0IGxpZXMgd2l0aGluIENFIHJlZ2lzdGVyIHJhbmdlLCB1c2UgMm5kIHdpbmRvdyAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMTU5LVxcdGVsc2UgaWYgKChvZmZzZXQgXiBIQUxfU0VRX1dDU1NfVU1BQ19DRTBfU1JDX1JFRyhhYikpIFxcdTAwM2NcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjE2MDpcXHRcXHQgQVRIMTFLX1BDSV9XSU5ET1dfUkFOR0VfTUFTSylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjE2MTpcXHRcXHR3aW5kb3dfc3RhcnQgPSAyICogQVRIMTFLX1BDSV9XSU5ET1dfU1RBUlQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0xNjItXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jPTE2Nz1hdGgxMWtfYWhiX3dpbmRvd193cml0ZTMyX3djbjY3NTAoc3RydWN0IGF0aDExa19iYXNlICphYiwgdTMyIG9mZnNldCwgdTMyIHZhbHVlKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0xNzQtXFx0aW93cml0ZTMyKHZhbHVlLCBhYi1cXHUwMDNlbWVtICsgd2luZG93X3N0YXJ0ICtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjE3NTpcXHRcXHQgIChvZmZzZXQgXFx1MDAyNiBBVEgxMUtfUENJX1dJTkRPV19SQU5HRV9NQVNLKSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0xNzYtfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYz0xNzg9c3RhdGljIHUzMiBhdGgxMWtfYWhiX3dpbmRvd19yZWFkMzJfd2NuNjc1MChzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiLCB1MzIgb2Zmc2V0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0xODYtXFx0dmFsID0gaW9yZWFkMzIoYWItXFx1MDAzZW1lbSArIHdpbmRvd19zdGFydCArXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzoxODc6XFx0XFx0ICAgICAgIChvZmZzZXQgXFx1MDAyNiBBVEgxMUtfUENJX1dJTkRPV19SQU5HRV9NQVNLKSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0xODgtXFx0cmV0dXJuIHZhbDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM9MjMxPXN0YXRpYyB2b2lkIF9fYXRoMTFrX2FoYl9leHRfaXJxX2Rpc2FibGUoc3RydWN0IGF0aDExa19iYXNlICphYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMjM0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6MjM1OlxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBBVEgxMUtfRVhUX0lSUV9HUlBfTlVNX01BWDsgaSsrKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0yMzYtXFx0XFx0c3RydWN0IGF0aDExa19leHRfaXJxX2dycCAqaXJxX2dycCA9IFxcdTAwMjZhYi1cXHUwMDNlZXh0X2lycV9ncnBbaV07XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jPTI3Mj1zdGF0aWMgdm9pZCBhdGgxMWtfYWhiX2NlX2lycV9lbmFibGUoc3RydWN0IGF0aDExa19iYXNlICphYiwgdTE2IGNlX2lkKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0yNzctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzoyNzg6XFx0aWUxX3JlZ19hZGRyID0gY2VfaWVfYWRkci1cXHUwMDNlaWUxX3JlZ19hZGRyICsgQVRIMTFLX0NFX09GRlNFVChhYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzoyNzk6XFx0aWUyX3JlZ19hZGRyID0gY2VfaWVfYWRkci1cXHUwMDNlaWUyX3JlZ19hZGRyICsgQVRIMTFLX0NFX09GRlNFVChhYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzoyODA6XFx0aWUzX3JlZ19hZGRyID0gY2VfaWVfYWRkci1cXHUwMDNlaWUzX3JlZ19hZGRyICsgQVRIMTFLX0NFX09GRlNFVChhYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0yODEtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jPTI5Mz1zdGF0aWMgdm9pZCBhdGgxMWtfYWhiX2NlX2lycV9kaXNhYmxlKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIsIHUxNiBjZV9pZClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMjk4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6Mjk5OlxcdGllMV9yZWdfYWRkciA9IGNlX2llX2FkZHItXFx1MDAzZWllMV9yZWdfYWRkciArIEFUSDExS19DRV9PRkZTRVQoYWIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6MzAwOlxcdGllMl9yZWdfYWRkciA9IGNlX2llX2FkZHItXFx1MDAzZWllMl9yZWdfYWRkciArIEFUSDExS19DRV9PRkZTRVQoYWIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6MzAxOlxcdGllM19yZWdfYWRkciA9IGNlX2llX2FkZHItXFx1MDAzZWllM19yZWdfYWRkciArIEFUSDExS19DRV9PRkZTRVQoYWIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMzAyLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYz0zMTQ9c3RhdGljIHZvaWQgYXRoMTFrX2FoYl9zeW5jX2NlX2lycXMoc3RydWN0IGF0aDExa19iYXNlICphYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMzIyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6MzIzOlxcdFxcdGlycV9pZHggPSBBVEgxMUtfSVJRX0NFMF9PRkZTRVQgKyBpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMzI0LVxcdFxcdHN5bmNocm9uaXplX2lycShhYi1cXHUwMDNlaXJxX251bVtpcnFfaWR4XSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jPTMyOD1zdGF0aWMgdm9pZCBhdGgxMWtfYWhiX3N5bmNfZXh0X2lycXMoc3RydWN0IGF0aDExa19iYXNlICphYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMzMyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6MzMzOlxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBBVEgxMUtfRVhUX0lSUV9HUlBfTlVNX01BWDsgaSsrKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0zMzQtXFx0XFx0c3RydWN0IGF0aDExa19leHRfaXJxX2dycCAqaXJxX2dycCA9IFxcdTAwMjZhYi1cXHUwMDNlZXh0X2lycV9ncnBbaV07XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jPTM3Mz1zdGF0aWMgdm9pZCBhdGgxMWtfYWhiX2V4dF9pcnFfZW5hYmxlKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTM3Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjM3NzpcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgQVRIMTFLX0VYVF9JUlFfR1JQX05VTV9NQVg7IGkrKykge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMzc4LVxcdFxcdHN0cnVjdCBhdGgxMWtfZXh0X2lycV9ncnAgKmlycV9ncnAgPSBcXHUwMDI2YWItXFx1MDAzZWV4dF9pcnFfZ3JwW2ldO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYz0zOTQ9c3RhdGljIHZvaWQgYXRoMTFrX2FoYl9zdG9wKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0zOTUte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6Mzk2OlxcdGlmICghdGVzdF9iaXQoQVRIMTFLX0ZMQUdfQ1JBU0hfRkxVU0gsIFxcdTAwMjZhYi1cXHUwMDNlZGV2X2ZsYWdzKSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTM5Ny1cXHRcXHRhdGgxMWtfYWhiX2NlX2lycXNfZGlzYWJsZShhYik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jPTQ0Nj1zdGF0aWMgdm9pZCBhdGgxMWtfYWhiX2ZyZWVfZXh0X2lycShzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy00NDktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo0NTA6XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEFUSDExS19FWFRfSVJRX0dSUF9OVU1fTUFYOyBpKyspXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy00NTEtXFx0XFx0YXRoMTFrX2FoYl9mcmVlX2V4dF9pcnFfZ3JwKGFiLCBcXHUwMDI2YWItXFx1MDAzZWV4dF9pcnFfZ3JwW2ldKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM9NDU0PXN0YXRpYyB2b2lkIGF0aDExa19haGJfZnJlZV9jZV9pcnFzKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIsIGludCBtYXhfaWR4KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy00NjAtXFx0XFx0XFx0Y29udGludWU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo0NjE6XFx0XFx0aXJxX2lkeCA9IEFUSDExS19JUlFfQ0UwX09GRlNFVCArIGk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy00NjItXFx0XFx0ZnJlZV9pcnEoYWItXFx1MDAzZWlycV9udW1baXJxX2lkeF0sIFxcdTAwMjZhYi1cXHUwMDNlY2UuY2VfcGlwZVtpXSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jPTUzMj1zdGF0aWMgaW50IGF0aDExa19haGJfY29uZmlnX2V4dF9pcnEoc3RydWN0IGF0aDExa19iYXNlICphYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtNTM5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6NTQwOlxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBBVEgxMUtfRVhUX0lSUV9HUlBfTlVNX01BWDsgaSsrKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy01NDEtXFx0XFx0dTMyIG51bV9pcnEgPSAwO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy01NTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo1NTg6XFx0XFx0Zm9yIChqID0gMDsgaiBcXHUwMDNjIEFUSDExS19FWFRfSVJRX05VTV9NQVg7IGorKykge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtNTU5LVxcdFxcdFxcdGlmIChhYi1cXHUwMDNlaHdfcGFyYW1zLnJpbmdfbWFzay1cXHUwMDNldHhbaV0gXFx1MDAyNiBCSVQoaikpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM9NjMzPXN0YXRpYyBpbnQgYXRoMTFrX2FoYl9jb25maWdfaXJxKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTY0Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjY0ODpcXHRcXHRpcnFfaWR4ID0gQVRIMTFLX0lSUV9DRTBfT0ZGU0VUICsgaTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTY0OS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM9NzE4PXN0YXRpYyBpbnQgYXRoMTFrX2FoYl9oaWZfc3VzcGVuZChzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy03MjctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo3Mjg6XFx0d2FrZV9pcnEgPSBhYi1cXHUwMDNlaXJxX251bVtBVEgxMUtfUENJX0lSUV9DRTBfT0ZGU0VUICsgQVRIMTFLX1BDSV9DRV9XQUtFX0lSUV07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy03MjktXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTczNi1cXHR2YWx1ZSA9IHUzMl9lbmNvZGVfYml0cyhhYl9haGItXFx1MDAzZXNtcDJwX2luZm8uc2VxX25vKyssXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo3Mzc6XFx0XFx0XFx0XFx0QVRIMTFLX0FIQl9TTVAyUF9TTUVNX1NFUV9OTyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo3Mzg6XFx0dmFsdWUgfD0gdTMyX2VuY29kZV9iaXRzKEFUSDExS19BSEJfUE9XRVJfU0FWRV9FTlRFUixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjczOTpcXHRcXHRcXHRcXHQgQVRIMTFLX0FIQl9TTVAyUF9TTUVNX01TRyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy03NDAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy03NDEtXFx0cmV0ID0gcWNvbV9zbWVtX3N0YXRlX3VwZGF0ZV9iaXRzKGFiX2FoYi1cXHUwMDNlc21wMnBfaW5mby5zbWVtX3N0YXRlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6NzQyOlxcdFxcdFxcdFxcdFxcdCAgQVRIMTFLX0FIQl9TTVAyUF9TTUVNX1ZBTFVFX01BU0ssIHZhbHVlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTc0My1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTc0Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjc0ODpcXHRhdGgxMWtfZGJnKGFiLCBBVEgxMUtfREJHX0FIQiwgXFxcImRldmljZSBzdXNwZW5kZWRcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtNzQ5LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYz03NTM9c3RhdGljIGludCBhdGgxMWtfYWhiX2hpZl9yZXN1bWUoc3RydWN0IGF0aDExa19iYXNlICphYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtNzYyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6NzYzOlxcdHdha2VfaXJxID0gYWItXFx1MDAzZWlycV9udW1bQVRIMTFLX1BDSV9JUlFfQ0UwX09GRlNFVCArIEFUSDExS19QQ0lfQ0VfV0FLRV9JUlFdO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtNzY0LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy03NzMtXFx0dmFsdWUgPSB1MzJfZW5jb2RlX2JpdHMoYWJfYWhiLVxcdTAwM2VzbXAycF9pbmZvLnNlcV9ubysrLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6Nzc0OlxcdFxcdFxcdFxcdEFUSDExS19BSEJfU01QMlBfU01FTV9TRVFfTk8pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6Nzc1OlxcdHZhbHVlIHw9IHUzMl9lbmNvZGVfYml0cyhBVEgxMUtfQUhCX1BPV0VSX1NBVkVfRVhJVCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjc3NjpcXHRcXHRcXHRcXHQgQVRIMTFLX0FIQl9TTVAyUF9TTUVNX01TRyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy03NzctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy03NzgtXFx0cmV0ID0gcWNvbV9zbWVtX3N0YXRlX3VwZGF0ZV9iaXRzKGFiX2FoYi1cXHUwMDNlc21wMnBfaW5mby5zbWVtX3N0YXRlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6Nzc5OlxcdFxcdFxcdFxcdFxcdCAgQVRIMTFLX0FIQl9TTVAyUF9TTUVNX1ZBTFVFX01BU0ssIHZhbHVlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTc4MC1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTc5MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjc5MTpcXHRhdGgxMWtfZGJnKGFiLCBBVEgxMUtfREJHX0FIQiwgXFxcImRldmljZSByZXN1bWVkXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTc5Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM9ODQ4PXN0YXRpYyBpbnQgYXRoMTFrX2FoYl9zZXR1cF9tc2lfcmVzb3VyY2VzKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTg5Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjg5MzpcXHRzZXRfYml0KEFUSDExS19GTEFHX01VTFRJX01TSV9WRUNUT1JTLCBcXHUwMDI2YWItXFx1MDAzZWRldl9mbGFncyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy04OTQtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jPTExMzk9c3RhdGljIGludCBhdGgxMWtfYWhiX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTExNDktXFx0c3dpdGNoIChod19yZXYpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjExNTA6XFx0Y2FzZSBBVEgxMUtfSFdfSVBRODA3NDpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjExNTE6XFx0Y2FzZSBBVEgxMUtfSFdfSVBRNjAxOF9IVzEwOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6MTE1MjpcXHRjYXNlIEFUSDExS19IV19JUFE1MDE4X0hXMTA6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0xMTUzLVxcdFxcdGhpZl9vcHMgPSBcXHUwMDI2YXRoMTFrX2FoYl9oaWZfb3BzX2lwcTgwNzQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTExNTUtXFx0XFx0YnJlYWs7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzoxMTU2OlxcdGNhc2UgQVRIMTFLX0hXX1dDTjY3NTBfSFcxMDpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTExNTctXFx0XFx0aGlmX29wcyA9IFxcdTAwMjZhdGgxMWtfYWhiX2hpZl9vcHNfd2NuNjc1MDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMTE3MS1cXHRhYiA9IGF0aDExa19jb3JlX2FsbG9jKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIHNpemVvZihzdHJ1Y3QgYXRoMTFrX2FoYiksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzoxMTcyOlxcdFxcdFxcdCAgICAgICBBVEgxMUtfQlVTX0FIQik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0xMTczLVxcdGlmICghYWIpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMTE4MC1cXHRhYi1cXHUwMDNlaHdfcmV2ID0gaHdfcmV2O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6MTE4MTpcXHRhYi1cXHUwMDNlZndfbW9kZSA9IEFUSDExS19GSVJNV0FSRV9NT0RFX05PUk1BTDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTExODItXFx0cGxhdGZvcm1fc2V0X2RydmRhdGEocGRldiwgYWIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYz0xMjY0PXN0YXRpYyB2b2lkIGF0aDExa19haGJfcmVtb3ZlX3ByZXBhcmUoc3RydWN0IGF0aDExa19iYXNlICphYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMTI2Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjEyNjg6XFx0aWYgKHRlc3RfYml0KEFUSDExS19GTEFHX1JFQ09WRVJZLCBcXHUwMDI2YWItXFx1MDAzZWRldl9mbGFncykpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTEyNjktXFx0XFx0bGVmdCA9IHdhaXRfZm9yX2NvbXBsZXRpb25fdGltZW91dChcXHUwMDI2YWItXFx1MDAzZWRyaXZlcl9yZWNvdmVyeSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjEyNzA6XFx0XFx0XFx0XFx0XFx0XFx0ICAgQVRIMTFLX0FIQl9SRUNPVkVSWV9USU1FT1VUKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTEyNzEtXFx0XFx0aWYgKCFsZWZ0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0xMjc0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6MTI3NTpcXHRzZXRfYml0KEFUSDExS19GTEFHX1VOUkVHSVNURVJJTkcsIFxcdTAwMjZhYi1cXHUwMDNlZGV2X2ZsYWdzKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTEyNzYtXFx0Y2FuY2VsX3dvcmtfc3luYyhcXHUwMDI2YWItXFx1MDAzZXJlc3RhcnRfd29yayk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jPTEyOTU9c3RhdGljIHZvaWQgYXRoMTFrX2FoYl9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMTI5OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjEyOTk6XFx0aWYgKHRlc3RfYml0KEFUSDExS19GTEFHX1FNSV9GQUlMLCBcXHUwMDI2YWItXFx1MDAzZWRldl9mbGFncykpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTEzMDAtXFx0XFx0YXRoMTFrX2FoYl9wb3dlcl9kb3duKGFiLCBmYWxzZSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jPTEzMTQ9c3RhdGljIHZvaWQgYXRoMTFrX2FoYl9zaHV0ZG93bihzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0xMzIzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6MTMyNDpcXHRpZiAoISh0ZXN0X2JpdChBVEgxMUtfRkxBR19SRUdJU1RFUkVELCBcXHUwMDI2YWItXFx1MDAzZWRldl9mbGFncykpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMTMyNS1cXHRcXHRnb3RvIGZyZWVfcmVzb3VyY2VzO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuaC01LSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmg6NjojaWZuZGVmIEFUSDExS19BSEJfSFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmg6NzojZGVmaW5lIEFUSDExS19BSEJfSFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmgtOC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmgtMTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuaDoxMTojZGVmaW5lIEFUSDExS19BSEJfUkVDT1ZFUllfVElNRU9VVCAoMyAqIEhaKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmgtMTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuaDoxMzojZGVmaW5lIEFUSDExS19BSEJfU01QMlBfU01FTV9NU0dcXHRcXHRHRU5NQVNLKDE1LCAwKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmg6MTQ6I2RlZmluZSBBVEgxMUtfQUhCX1NNUDJQX1NNRU1fU0VRX05PXFx0XFx0R0VOTUFTSygzMSwgMTYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuaDoxNTojZGVmaW5lIEFUSDExS19BSEJfU01QMlBfU01FTV9WQUxVRV9NQVNLXFx0MHhGRkZGRkZGRlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmgtMTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuaD0xNz1lbnVtIGF0aDExa19haGJfc21wMnBfbXNnX2lkIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5oOjE4OlxcdEFUSDExS19BSEJfUE9XRVJfU0FWRV9FTlRFUiA9IDEsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuaDoxOTpcXHRBVEgxMUtfQUhCX1BPV0VSX1NBVkVfRVhJVCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5oLTIwLX07XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NlLmM9MzIxPXN0YXRpYyBpbnQgYXRoMTFrX2NlX3J4X3Bvc3RfcGlwZShzdHJ1Y3QgYXRoMTFrX2NlX3BpcGUgKnBpcGUpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NlLmMtMzUwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2UuYzozNTE6XFx0XFx0QVRIMTFLX1NLQl9SWENCKHNrYiktXFx1MDAzZXBhZGRyID0gcGFkZHI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZS5jLTM1Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2UuYy0zNTUtXFx0XFx0aWYgKHJldCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2UuYzozNTY6XFx0XFx0XFx0YXRoMTFrX2RiZyhhYiwgQVRIMTFLX0RCR19DRSwgXFxcImZhaWxlZCB0byBlbnF1ZXVlIHJ4IGJ1ZjogJWRcXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZS5jLTM1Ny1cXHRcXHRcXHRcXHQgICByZXQpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZS5jPTQxNz1zdGF0aWMgdm9pZCBhdGgxMWtfY2VfcmVjdl9wcm9jZXNzX2NiKHN0cnVjdCBhdGgxMWtfY2VfcGlwZSAqcGlwZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2UuYy00MjctXFx0XFx0bWF4X25ieXRlcyA9IHNrYi1cXHUwMDNlbGVuICsgc2tiX3RhaWxyb29tKHNrYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZS5jOjQyODpcXHRcXHRkbWFfdW5tYXBfc2luZ2xlKGFiLVxcdTAwM2VkZXYsIEFUSDExS19TS0JfUlhDQihza2IpLVxcdTAwM2VwYWRkcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NlLmMtNDI5LVxcdFxcdFxcdFxcdCBtYXhfbmJ5dGVzLCBETUFfRlJPTV9ERVZJQ0UpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZS5jLTQ0Mi1cXHR3aGlsZSAoKHNrYiA9IF9fc2tiX2RlcXVldWUoXFx1MDAyNmxpc3QpKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2UuYzo0NDM6XFx0XFx0YXRoMTFrX2RiZyhhYiwgQVRIMTFLX0RCR19DRSwgXFxcInJ4IGNlIHBpcGUgJWQgbGVuICVkXFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2UuYy00NDQtXFx0XFx0XFx0ICAgcGlwZS1cXHUwMDNlcGlwZV9udW0sIHNrYi1cXHUwMDNlbGVuKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2UuYy00NTItXFx0XFx0bW9kX3RpbWVyKFxcdTAwMjZhYi1cXHUwMDNlcnhfcmVwbGVuaXNoX3JldHJ5LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2UuYzo0NTM6XFx0XFx0XFx0ICBqaWZmaWVzICsgQVRIMTFLX0NFX1JYX1BPU1RfUkVUUllfSklGRklFUyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZS5jLTQ1NC1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NlLmM9NDk4PXN0YXRpYyB2b2lkIGF0aDExa19jZV90eF9wcm9jZXNzX2NiKHN0cnVjdCBhdGgxMWtfY2VfcGlwZSAqcGlwZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2UuYy01MDgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZS5jOjUwOTpcXHRcXHRkbWFfdW5tYXBfc2luZ2xlKGFiLVxcdTAwM2VkZXYsIEFUSDExS19TS0JfQ0Ioc2tiKS1cXHUwMDNlcGFkZHIsIHNrYi1cXHUwMDNlbGVuLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2UuYy01MTAtXFx0XFx0XFx0XFx0IERNQV9UT19ERVZJQ0UpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZS5jLTUyMC1cXHR3aGlsZSAoKHNrYiA9IF9fc2tiX2RlcXVldWUoXFx1MDAyNmxpc3QpKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2UuYzo1MjE6XFx0XFx0YXRoMTFrX2RiZyhhYiwgQVRIMTFLX0RCR19DRSwgXFxcInR4IGNlIHBpcGUgJWQgbGVuICVkXFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2UuYy01MjItXFx0XFx0XFx0ICAgcGlwZS1cXHUwMDNlcGlwZV9udW0sIHNrYi1cXHUwMDNlbGVuKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2UuYz01NTM9c3RhdGljIGludCBhdGgxMWtfY2VfaW5pdF9yaW5nKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NlLmMtNjA0LVxcdFxcdGF0aDExa19kcF9zaGFkb3dfaW5pdF90aW1lcihhYiwgXFx1MDAyNmFiLVxcdTAwM2VjZS5ocF90aW1lcltjZV9pZF0sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZS5jOjYwNTpcXHRcXHRcXHRcXHRcXHQgICAgQVRIMTFLX1NIQURPV19DVFJMX1RJTUVSX0lOVEVSVkFMLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2UuYy02MDYtXFx0XFx0XFx0XFx0XFx0ICAgIGNlX3JpbmctXFx1MDAzZWhhbF9yaW5nX2lkKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2UuYz03MDk9aW50IGF0aDExa19jZV9zZW5kKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIsIHN0cnVjdCBza19idWZmICpza2IsIHU4IHBpcGVfaWQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NlLmMtNzM4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2UuYzo3Mzk6XFx0XFx0aWYgKG51bV91c2VkIFxcdTAwM2UgQVRIMTFLX0NFX1VTQUdFX1RIUkVTSE9MRClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NlLmMtNzQwLVxcdFxcdFxcdGF0aDExa19jZV9wb2xsX3NlbmRfY29tcGxldGVkKGFiLCBwaXBlLVxcdTAwM2VwaXBlX251bSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NlLmMtNzQyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2UuYzo3NDM6XFx0aWYgKHRlc3RfYml0KEFUSDExS19GTEFHX0NSQVNIX0ZMVVNILCBcXHUwMDI2YWItXFx1MDAzZWRldl9mbGFncykpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZS5jLTc0NC1cXHRcXHRyZXR1cm4gLUVTSFVURE9XTjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2UuYy03NzItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZS5jOjc3MzpcXHRhdGgxMWtfaGFsX2NlX3NyY19zZXRfZGVzYyhkZXNjLCBBVEgxMUtfU0tCX0NCKHNrYiktXFx1MDAzZXBhZGRyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2UuYy03NzQtXFx0XFx0XFx0XFx0ICAgc2tiLVxcdTAwM2VsZW4sIHRyYW5zZmVyX2lkLCBieXRlX3N3YXBfZGF0YSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NlLmM9Nzk5PXN0YXRpYyB2b2lkIGF0aDExa19jZV9yeF9waXBlX2NsZWFudXAoc3RydWN0IGF0aDExa19jZV9waXBlICpwaXBlKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZS5jLTgxNC1cXHRcXHRyaW5nLVxcdTAwM2Vza2JbaV0gPSBOVUxMO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2UuYzo4MTU6XFx0XFx0ZG1hX3VubWFwX3NpbmdsZShhYi1cXHUwMDNlZGV2LCBBVEgxMUtfU0tCX1JYQ0Ioc2tiKS1cXHUwMDNlcGFkZHIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZS5jLTgxNi1cXHRcXHRcXHRcXHQgc2tiLVxcdTAwM2VsZW4gKyBza2JfdGFpbHJvb20oc2tiKSwgRE1BX0ZST01fREVWSUNFKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2UuYz04ODM9dm9pZCBhdGgxMWtfY2VfcnhfcG9zdF9idWYoc3RydWN0IGF0aDExa19iYXNlICphYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2UuYy04OTgtXFx0XFx0XFx0bW9kX3RpbWVyKFxcdTAwMjZhYi1cXHUwMDNlcnhfcmVwbGVuaXNoX3JldHJ5LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2UuYzo4OTk6XFx0XFx0XFx0XFx0ICBqaWZmaWVzICsgQVRIMTFLX0NFX1JYX1BPU1RfUkVUUllfSklGRklFUyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZS5jLTkwMC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2UuaC02LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2UuaDo3OiNpZm5kZWYgQVRIMTFLX0NFX0hcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NlLmg6ODojZGVmaW5lIEFUSDExS19DRV9IXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZS5oLTktXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NlLmgtMjUtLyogVGhyZXNob2xkIHRvIHBvbGwgZm9yIHR4IGNvbXBsZXRpb24gaW4gY2FzZSBvZiBJbnRlcnJ1cHQgZGlzYWJsZWQgQ0UncyAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2UuaDoyNjojZGVmaW5lIEFUSDExS19DRV9VU0FHRV9USFJFU0hPTEQgMzJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NlLmgtMjctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZS5oPTI4PXZvaWQgYXRoMTFrX2NlX2J5dGVfc3dhcCh2b2lkICptZW0sIHUzMiBsZW4pO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZS5oLTYxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2UuaDo2MjojZGVmaW5lIEFUSDExS19DRV9SWF9QT1NUX1JFVFJZX0pJRkZJRVMgNTBcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NlLmgtNjMtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jPTE5PXN0YXRpYyBpbnQgYXRoMTFrX2Nmcl9jYWxjdWxhdGVfdG9uZXNfZnJvbV9kbWFfaGRyKHN0cnVjdCBhdGgxMWtfY2ZyX2RtYV9oZHIgKmhkcilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmMtMjQtXFx0c3dpdGNoIChwcmVhbWJsZSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmM6MjU6XFx0Y2FzZSBBVEgxMUtfQ0ZSX1BSRUFNQkxFX1RZUEVfTEVHQUNZOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmMtMjYtXFx0XFx0ZmFsbHRocm91Z2g7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYzoyNzpcXHRjYXNlIEFUSDExS19DRlJfUFJFQU1CTEVfVFlQRV9WSFQ6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYy0yOC1cXHRcXHRzd2l0Y2ggKGJ3KSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jLTM5LVxcdFxcdH1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jOjQwOlxcdGNhc2UgQVRIMTFLX0NGUl9QUkVBTUJMRV9UWVBFX0hUOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmMtNDEtXFx0XFx0c3dpdGNoIChidykge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYz0xMTQ9YXRoMTFrX2Nmcl9jb3JyZWxhdGVfYW5kX3JlbGF5KHN0cnVjdCBhdGgxMWsgKmFyLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYy0xMjEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYzoxMjI6XFx0aWYgKGV2ZW50X3R5cGUgPT0gQVRIMTFLX0NPUlJFTEFURV9UWF9FVkVOVCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmMtMTIzLVxcdFxcdGlmIChsdXQtXFx1MDAzZXR4X3JlY3YpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jLTEyNi1cXHRcXHRsdXQtXFx1MDAzZXR4X3JlY3YgPSB0cnVlO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmM6MTI3OlxcdH0gZWxzZSBpZiAoZXZlbnRfdHlwZSA9PSBBVEgxMUtfQ09SUkVMQVRFX0RCUl9FVkVOVCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmMtMTI4LVxcdFxcdGNmci1cXHUwMDNlZGJyX2V2dF9jbnQrKztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmMtMTQwLVxcdFxcdFxcdFxcdGRpZmYgPSBsdXQtXFx1MDAzZWRicl90c3RhbXAgLSBsdXQtXFx1MDAzZXR4cnhfdHN0YW1wO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmM6MTQxOlxcdFxcdFxcdFxcdGF0aDExa19kYmcoYXItXFx1MDAzZWFiLCBBVEgxMUtfREJHX0NGUixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jLTE0Mi1cXHRcXHRcXHRcXHRcXHQgICBcXFwidHhyeCBldmVudCAtXFx1MDAzZSBkYnIgZXZlbnQgZGVsYXkgPSAldSBtc1xcXCIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jLTE0NS1cXHRcXHRcXHRcXHRkaWZmID0gbHV0LVxcdTAwM2V0eHJ4X3RzdGFtcCAtIGx1dC1cXHUwMDNlZGJyX3RzdGFtcDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jOjE0NjpcXHRcXHRcXHRcXHRhdGgxMWtfZGJnKGFyLVxcdTAwM2VhYiwgQVRIMTFLX0RCR19DRlIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYy0xNDctXFx0XFx0XFx0XFx0XFx0ICAgXFxcImRiciBldmVudCAtXFx1MDAzZSB0eHJ4IGV2ZW50IGRlbGF5ID0gJXUgbXNcXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYy0xNTMtXFx0XFx0XFx0Y2ZyLVxcdTAwM2VyZWxlYXNlX2NudCsrO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmM6MTU0OlxcdFxcdFxcdHN0YXR1cyA9IEFUSDExS19DT1JSRUxBVEVfU1RBVFVTX1JFTEVBU0U7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYy0xNTUtXFx0XFx0fSBlbHNlIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmMtMTYwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmM6MTYxOlxcdFxcdFxcdGF0aDExa19kYmcoYXItXFx1MDAzZWFiLCBBVEgxMUtfREJHX0NGUixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jLTE2Mi1cXHRcXHRcXHRcXHQgICBcXFwiUmVjZWl2ZWQgZGJyIGV2ZW50IHR3aWNlIGZvciB0aGUgc2FtZSBsdXQgZW50cnlcXFwiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmMtMTY2LVxcdFxcdFxcdGNmci1cXHUwMDNlY2ZyX2RtYV9hYm9ydHMrKztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jOjE2NzpcXHRcXHRcXHRzdGF0dXMgPSBBVEgxMUtfQ09SUkVMQVRFX1NUQVRVU19IT0xEO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmMtMTY4LVxcdFxcdH1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jLTE2OS1cXHR9IGVsc2Uge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmM6MTcwOlxcdFxcdHN0YXR1cyA9IEFUSDExS19DT1JSRUxBVEVfU1RBVFVTX0hPTEQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYy0xNzEtXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYz0xNzY9c3RhdGljIGludCBhdGgxMWtfY2ZyX3Byb2Nlc3NfZGF0YShzdHJ1Y3QgYXRoMTFrICphcixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmMtMTc4LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jOjE3OTpcXHR1MzIgZW5kX21hZ2ljID0gQVRIMTFLX0NGUl9FTkRfTUFHSUM7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYy0xODAtXFx0c3RydWN0IGF0aDExa19jc2lfY2ZyX2hlYWRlciAqaGVhZGVyO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYy0yMTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYzoyMTk6XFx0YXRoMTFrX2RiZ19kdW1wKGFiLCBBVEgxMUtfREJHX0NGUl9EVU1QLCBcXFwiZGF0YV9mcm9tX2J1Zl9yZWw6XFxcIiwgXFxcIlxcXCIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYy0yMjAtXFx0XFx0XFx0ZGF0YSwgbGVuZ3RoKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmMtMjM1LVxcdHN0YXR1cyA9IGF0aDExa19jZnJfY29ycmVsYXRlX2FuZF9yZWxheShhciwgbHV0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmM6MjM2OlxcdFxcdFxcdFxcdFxcdFxcdEFUSDExS19DT1JSRUxBVEVfREJSX0VWRU5UKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jOjIzNzpcXHRpZiAoc3RhdHVzID09IEFUSDExS19DT1JSRUxBVEVfU1RBVFVTX1JFTEVBU0UpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jOjIzODpcXHRcXHRhdGgxMWtfZGJnKGFiLCBBVEgxMUtfREJHX0NGUixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jLTIzOS1cXHRcXHRcXHQgICBcXFwicmVsZWFzaW5nIENGUiBkYXRhIHRvIHVzZXIgc3BhY2VcXFwiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmMtMjQ0LVxcdFxcdGF0aDExa19jZnJfcmVsZWFzZV9sdXRfZW50cnkobHV0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jOjI0NTpcXHR9IGVsc2UgaWYgKHN0YXR1cyA9PSBBVEgxMUtfQ09SUkVMQVRFX1NUQVRVU19IT0xEKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYzoyNDY6XFx0XFx0YXRoMTFrX2RiZyhhYiwgQVRIMTFLX0RCR19DRlIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYy0yNDctXFx0XFx0XFx0ICAgXFxcInR4IGV2ZW50IGlzIG5vdCB5ZXQgcmVjZWl2ZWQgaG9sZGluZyB0aGUgYnVmXFxcIik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jPTI1NT1zdGF0aWMgdm9pZCBhdGgxMWtfY2ZyX2ZpbGxfaGRyX2luZm8oc3RydWN0IGF0aDExayAqYXIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jLTI2MS1cXHRjZnIgPSBcXHUwMDI2YXItXFx1MDAzZWNmcjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jOjI2MjpcXHRoZWFkZXItXFx1MDAzZWNmcl9tZXRhZGF0YV92ZXJzaW9uID0gQVRIMTFLX0NGUl9NRVRBX1ZFUlNJT05fNDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jOjI2MzpcXHRoZWFkZXItXFx1MDAzZWNmcl9kYXRhX3ZlcnNpb24gPSBBVEgxMUtfQ0ZSX0RBVEFfVkVSU0lPTl8xO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmMtMjY0LVxcdGhlYWRlci1cXHUwMDNlY2ZyX21ldGFkYXRhX2xlbiA9IHNpemVvZihzdHJ1Y3QgY2ZyX21ldGFkYXRhKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmMtMjg1LVxcdGhlYWRlci1cXHUwMDNlbWV0YV9kYXRhLmNhcHR1cmVfbW9kZSA9IHBhcmFtcy1cXHUwMDNlYmFuZHdpZHRoID9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jOjI4NjpcXHRcXHRBVEgxMUtfQ0ZSX0NBUFRVUkVfRFVQX0xFR0FDWV9BQ0sgOiBBVEgxMUtfQ0ZSX0NBUFRVUkVfTEVHQUNZX0FDSztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jLTI4Ny1cXHRoZWFkZXItXFx1MDAzZW1ldGFfZGF0YS5jYXB0dXJlX3R5cGUgPSBwYXJhbXMtXFx1MDAzZWNhcHR1cmVfbWV0aG9kO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYz0zMDA9aW50IGF0aDExa19wcm9jZXNzX2Nmcl9jYXB0dXJlX2V2ZW50KHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jLTMwMy1cXHRzdHJ1Y3QgYXRoMTFrX2xvb2tfdXBfdGFibGUgKmx1dCA9IE5VTEw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYzozMDQ6XFx0dTMyIGVuZF9tYWdpYyA9IEFUSDExS19DRlJfRU5EX01BR0lDO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmMtMzA1LVxcdHN0cnVjdCBhdGgxMWtfY3NpX2Nmcl9oZWFkZXIgKmhlYWRlcjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmMtMzc4LVxcdGhlYWRlciA9IFxcdTAwMjZsdXQtXFx1MDAzZWhlYWRlcjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jOjM3OTpcXHRoZWFkZXItXFx1MDAzZXN0YXJ0X21hZ2ljX251bSA9IEFUSDExS19DRlJfU1RBUlRfTUFHSUM7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYy0zODAtXFx0aGVhZGVyLVxcdTAwM2V2ZW5kb3JpZCA9IFZFTkRPUl9RQ0E7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jLTM4NS1cXHRzdGF0dXMgPSBhdGgxMWtfY2ZyX2NvcnJlbGF0ZV9hbmRfcmVsYXkoYXIsIGx1dCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jOjM4NjpcXHRcXHRcXHRcXHRcXHRcXHRBVEgxMUtfQ09SUkVMQVRFX1RYX0VWRU5UKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jOjM4NzpcXHRpZiAoc3RhdHVzID09IEFUSDExS19DT1JSRUxBVEVfU1RBVFVTX1JFTEVBU0UpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jOjM4ODpcXHRcXHRhdGgxMWtfZGJnKGFiLCBBVEgxMUtfREJHX0NGUixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jLTM4OS1cXHRcXHRcXHQgICBcXFwiUmVsZWFzaW5nIENGUiBkYXRhIHRvIHVzZXIgc3BhY2VcXFwiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmMtMzk4LVxcdFxcdFxcdFxcdFxcdCAgICAgV01JX0RJUkVDVF9CVUZfQ0ZSKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jOjM5OTpcXHR9IGVsc2UgaWYgKHN0YXR1cyA9PSBBVEgxMUtfQ09SUkVMQVRFX1NUQVRVU19IT0xEKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYzo0MDA6XFx0XFx0YXRoMTFrX2RiZyhhYiwgQVRIMTFLX0RCR19DRlIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYy00MDEtXFx0XFx0XFx0ICAgXFxcImRiciBldmVudCBpcyBub3QgeWV0IHJlY2VpdmVkIGhvbGRpbmcgYnVmXFxcXG5cXFwiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmM9NDEyPWJvb2wgYXRoMTFrX2Nmcl9wZWVyX2lzX2luX2Nmcl91bmFzc29jX3Bvb2woc3RydWN0IGF0aDExayAqYXIsIGNvbnN0IHU4ICpwZWVyX21hYylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmMtNDIxLVxcdHNwaW5fbG9ja19iaChcXHUwMDI2Y2ZyLVxcdTAwM2Vsb2NrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jOjQyMjpcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgQVRIMTFLX01BWF9DRlJfRU5BQkxFRF9DTElFTlRTOyBpKyspIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jLTQyMy1cXHRcXHRlbnRyeSA9IFxcdTAwMjZjZnItXFx1MDAzZXVuYXNzb2NfcG9vbFtpXTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmM9NDM4PXZvaWQgYXRoMTFrX2Nmcl91cGRhdGVfdW5hc3NvY19wb29sX2VudHJ5KHN0cnVjdCBhdGgxMWsgKmFyLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYy00NDUtXFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZjZnItXFx1MDAzZWxvY2spO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmM6NDQ2OlxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBBVEgxMUtfTUFYX0NGUl9FTkFCTEVEX0NMSUVOVFM7IGkrKykge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmMtNDQ3LVxcdFxcdGVudHJ5ID0gXFx1MDAyNmNmci1cXHUwMDNldW5hc3NvY19wb29sW2ldO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYz00Nzc9YXRoMTFrX2Nmcl9id190b19md19jZnJfYncoZW51bSBhdGgxMWtfY2ZyX2NhcHR1cmVfYncgYncpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jLTQ3OS1cXHRzd2l0Y2ggKGJ3KSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYzo0ODA6XFx0Y2FzZSBBVEgxMUtfQ0ZSX0NBUFRVUkVfQldfMjA6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYy00ODEtXFx0XFx0cmV0dXJuIFdNSV9QRUVSX0NGUl9DQVBUVVJFX0JXXzIwO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmM6NDgyOlxcdGNhc2UgQVRIMTFLX0NGUl9DQVBUVVJFX0JXXzQwOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmMtNDgzLVxcdFxcdHJldHVybiBXTUlfUEVFUl9DRlJfQ0FQVFVSRV9CV180MDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jOjQ4NDpcXHRjYXNlIEFUSDExS19DRlJfQ0FQVFVSRV9CV184MDpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jLTQ4NS1cXHRcXHRyZXR1cm4gV01JX1BFRVJfQ0ZSX0NBUFRVUkVfQldfODA7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jPTQ5Mj1hdGgxMWtfY2ZyX21ldGhvZF90b19md19jZnJfbWV0aG9kKGVudW0gYXRoMTFrX2Nmcl9jYXB0dXJlX21ldGhvZCBtZXRob2QpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jLTQ5NC1cXHRzd2l0Y2ggKG1ldGhvZCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmM6NDk1OlxcdGNhc2UgQVRIMTFLX0NGUl9DQVBUVVJFX01FVEhPRF9OVUxMX0ZSQU1FOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmMtNDk2LVxcdFxcdHJldHVybiBXTUlfQ0ZSX0NBUFRVUkVfTUVUSE9EX05VTExfRlJBTUU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYzo0OTc6XFx0Y2FzZSBBVEgxMUtfQ0ZSX0NBUFRVUkVfTUVUSE9EX05VTExfRlJBTUVfV0lUSF9QSEFTRTpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jLTQ5OC1cXHRcXHRyZXR1cm4gV01JX0NGUl9DQVBUVVJFX01FVEhPRF9OVUxMX0ZSQU1FX1dJVEhfUEhBU0U7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYzo0OTk6XFx0Y2FzZSBBVEgxMUtfQ0ZSX0NBUFRVUkVfTUVUSE9EX1BST0JFX1JFU1A6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYy01MDAtXFx0XFx0cmV0dXJuIFdNSV9DRlJfQ0FQVFVSRV9NRVRIT0RfUFJPQkVfUkVTUDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmM9NTA2PWludCBhdGgxMWtfY2ZyX3NlbmRfcGVlcl9jZnJfY2FwdHVyZV9jbWQoc3RydWN0IGF0aDExayAqYXIsXFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDE4OjA5OjQ3LjY2MDI0NDMzNVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo2MTU4MTYwMzM4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgSW1wbGljYXRpb25zIG9mIEFRTCBDaGFuZ2VzIGluIG1hYzgwMjExIGZvciA4MDIuMTFheCBTdXBwb3J0KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgbXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgaXQncyByZWxhdGVkIHRvIHRoZSBgYXRoMTFrYCBkcml2ZXIsIHdoaWNoIGhhbmRsZXMgdGhlIFF1YWxjb21tIDgwMi4xMWF4IGNoaXBzZXQuIFRoYXQncyBhIHBoeXNpY2FsIGhhcmR3YXJlIGRyaXZlciwgd29ya2luZyB3aXRoIFBDSSBvciBBSEIuIEJ1dCB0aGUgcmVhbCBtZWF0IG9mIHRoaXMgY2hhbmdlIHNlZW1zIHRvIGJlIGluIGBuZXQvbWFjODAyMTEvdHguY2AsIGBuZXQvbWFjODAyMTEvZGVidWdmcy5jYCwgYW5kIGBpbmNsdWRlL25ldC9tYWM4MDIxMS5oYC4gVGhhdCdzIHdoZXJlIEkgbmVlZCB0byBmb2N1cy5cblxuU3BlY2lmaWNhbGx5LCBJIHNlZSBjaGFuZ2VzIGluIHRoZSBhaXJ0aW1lIGZhaXJuZXNzIGNhbGN1bGF0aW9uIHdpdGhpbiBgdHguY2AuIEl0IGxvb2tzIGxpa2UgdGhlIHBhdGNoIGlzIGFkZGluZyBuZXcgbG9naWMgdG8gbGltaXQgdGhlIG51bWJlciBvZiBmcmFtZXMgYSBzdGF0aW9uIGNhbiB0cmFuc21pdCBiYXNlZCBvbiBpdHMgXCJhaXJ0aW1lIHdlaWdodC5cIiBXZSdyZSBsb29raW5nIGF0IGZ1bmN0aW9ucyBsaWtlIGBpZWVlODAyMTFfYXFsX3N0YV9saW1pdGAgYW5kIGBpZWVlODAyMTFfdHhxX2FpcnRpbWVfY2hlY2tgLiBJdCdzIGNoZWNraW5nIGlmIGEgc3RhdGlvbiBoYXMgcmVhY2hlZCBhIGxpbWl0IG9uIGl0cyBhaXJ0aW1lIHV0aWxpemF0aW9uIGJlZm9yZSBhbGxvd2luZyBtb3JlIHBhY2tldHMgdG8gYmUgcXVldWVkLiBUaGlzIGlzIGFsbCBhYm91dCBlbnN1cmluZyBmYWlyIGFjY2VzcyB0byB0aGUgbWVkaXVtLiBUaGlzIEFRTCAoYWlydGltZSBmYWlybmVzcykgc3R1ZmYgaXMgcXVpdGUgaW50ZXJlc3RpbmcuXG5cbk5vdywgaGVyZSdzIHdoZXJlIGl0IGdldHMgcG90ZW50aWFsbHkgZmFzY2luYXRpbmcuIGBtYWM4MDIxMWAgY2FuIGFjdHVhbGx5IGJlIHVzZWQgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCB0aHJvdWdoIGBtYWM4MDIxMV9od3NpbWAsIHdoaWNoIGlzIGEgc29mdHdhcmUtZW11bGF0ZWQgODAyLjExIHJhZGlvLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgYW0gdGhpbmtpbmcgYWJvdXQgaG93IHRoaXMgY2hhbmdlIG1pZ2h0IGltcGFjdCB0aGF0LiBDaGVja2luZyB0aGUgZGVwZW5kZW5jaWVzLCB5ZXAsIGBNQUM4MDIxMV9IV1NJTWAgcmVsaWVzIG9uIGJvdGggYE1BQzgwMjExYCBhbmQgYENGRzgwMjExYC4gU28gYW55IGJlaGF2aW9yIGNoYW5nZXMgaW4gdGhlIGNvcmUgYG1hYzgwMjExYCBjb2RlLCAqZXNwZWNpYWxseSogdGhlc2UgYWlydGltZSBtYW5hZ2VtZW50IGNoYW5nZXMsIHdpbGwgYWxzbyBiZSByZWZsZWN0ZWQgaW4gdGhlIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBUaGF0J3Mgc29tZXRoaW5nIHRvIGtlZXAgaW4gbWluZCBmb3IgdGVzdGluZy4gTGV0J3MgZGVsdmUgZGVlcGVyIGludG8gaG93IHRoZXNlIEFRTCBjaGFuZ2VzIGFyZSBpbXBsZW1lbnRlZCBpbiB0aGUgYG1hYzgwMjExX2h3c2ltYCBjb2RlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNDIwMywiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY2NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQxODowOTo1My44MTg0MDc4MjNaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzOTg4ODM4OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJNQUM4MDIxMV9IV1NJTVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzc1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL0tjb25maWc6MTpjb25maWcgTUFDODAyMTFfSFdTSU1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL0tjb25maWctMi1cXHR0cmlzdGF0ZSBcXFwiU2ltdWxhdGVkIHJhZGlvIHRlc3RpbmcgdG9vbCBmb3IgbWFjODAyMTFcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL01ha2VmaWxlOjE6b2JqLSQoQ09ORklHX01BQzgwMjExX0hXU0lNKVxcdCs9IG1hYzgwMjExX2h3c2ltLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL01ha2VmaWxlLTItbWFjODAyMTFfaHdzaW0tb2Jqc1xcdFxcdCs9IG1hYzgwMjExX2h3c2ltX21haW4ub1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oLTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjk6I2lmbmRlZiBfX01BQzgwMjExX0hXU0lNX0hcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MTA6I2RlZmluZSBfX01BQzgwMjExX0hXU0lNX0hcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmgtMTEtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg9MjE3PXN0cnVjdCBod3NpbV90eF9yYXRlIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaC0yMzAtICpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjMxOiAqIEBNQUM4MDIxMV9IV1NJTV9UWF9SQ19VU0VfUlRTX0NUUzogVXNlIFJUUy9DVFMgZXhjaGFuZ2UgZm9yIHRoaXMgcmF0ZS5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjMyOiAqIEBNQUM4MDIxMV9IV1NJTV9UWF9SQ19VU0VfQ1RTX1BST1RFQ1Q6IENUUy10by1zZWxmIHByb3RlY3Rpb24gaXMgcmVxdWlyZWQuXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oLTIzMy0gKlxcdFRoaXMgaXMgc2V0IGlmIHRoZSBjdXJyZW50IEJTUyByZXF1aXJlcyBFUlAgcHJvdGVjdGlvbi5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjM0OiAqIEBNQUM4MDIxMV9IV1NJTV9UWF9SQ19VU0VfU0hPUlRfUFJFQU1CTEU6IFVzZSBzaG9ydCBwcmVhbWJsZS5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjM1OiAqIEBNQUM4MDIxMV9IV1NJTV9UWF9SQ19NQ1M6IEhUIHJhdGUuXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjIzNjogKiBATUFDODAyMTFfSFdTSU1fVFhfUkNfVkhUX01DUzogVkhUIE1DUyByYXRlLCBpbiB0aGlzIGNhc2UgdGhlIGlkeCBmaWVsZCBpc1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaC0yMzctICpcXHRzcGxpdCBpbnRvIGEgaGlnaGVyIDQgYml0cyAoTnNzKSBhbmQgbG93ZXIgNCBiaXRzIChNQ1MgbnVtYmVyKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyMzg6ICogQE1BQzgwMjExX0hXU0lNX1RYX1JDX0dSRUVOX0ZJRUxEOiBJbmRpY2F0ZXMgd2hldGhlciB0aGlzIHJhdGUgc2hvdWxkIGJlIHVzZWRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmgtMjM5LSAqXFx0aW4gR3JlZW5maWVsZCBtb2RlLlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyNDA6ICogQE1BQzgwMjExX0hXU0lNX1RYX1JDXzQwX01IWl9XSURUSDogSW5kaWNhdGVzIGlmIHRoZSBDaGFubmVsIFdpZHRoIHNob3VsZCBiZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaC0yNDEtICpcXHQ0MCBNSHouXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjI0MjogKiBATUFDODAyMTFfSFdTSU1fVFhfUkNfODBfTUhaX1dJRFRIOiBJbmRpY2F0ZXMgODAgTUh6IHRyYW5zbWlzc2lvblxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyNDM6ICogQE1BQzgwMjExX0hXU0lNX1RYX1JDXzE2MF9NSFpfV0lEVEg6IEluZGljYXRlcyAxNjAgTUh6IHRyYW5zbWlzc2lvblxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaC0yNDQtICpcXHQoODArODAgaXNuJ3Qgc3VwcG9ydGVkIHlldClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjQ1OiAqIEBNQUM4MDIxMV9IV1NJTV9UWF9SQ19EVVBfREFUQTogVGhlIGZyYW1lIHNob3VsZCBiZSB0cmFuc21pdHRlZCBvbiBib3RoIG9mXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oLTI0Ni0gKlxcdHRoZSBhZGphY2VudCAyMCBNSHogY2hhbm5lbHMsIGlmIHRoZSBjdXJyZW50IGNoYW5uZWwgdHlwZSBpc1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaC0yNDctICpcXHROTDgwMjExX0NIQU5fSFQ0ME1JTlVTIG9yIE5MODAyMTFfQ0hBTl9IVDQwUExVUy5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjQ4OiAqIEBNQUM4MDIxMV9IV1NJTV9UWF9SQ19TSE9SVF9HSTogU2hvcnQgR3VhcmQgaW50ZXJ2YWwgc2hvdWxkIGJlIHVzZWQgZm9yIHRoaXNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmgtMjQ5LSAqXFx0cmF0ZS5cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaD0yNTE9ZW51bSBod3NpbV90eF9yYXRlX2ZsYWdzIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjUyOlxcdE1BQzgwMjExX0hXU0lNX1RYX1JDX1VTRV9SVFNfQ1RTXFx0XFx0PSBCSVQoMCksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjI1MzpcXHRNQUM4MDIxMV9IV1NJTV9UWF9SQ19VU0VfQ1RTX1BST1RFQ1RcXHRcXHQ9IEJJVCgxKSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjU0OlxcdE1BQzgwMjExX0hXU0lNX1RYX1JDX1VTRV9TSE9SVF9QUkVBTUJMRVxcdD0gQklUKDIpLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaC0yNTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oLTI1Ni1cXHQvKiByYXRlIGluZGV4IGlzIGFuIEhUL1ZIVCBNQ1MgaW5zdGVhZCBvZiBhbiBpbmRleCAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyNTc6XFx0TUFDODAyMTFfSFdTSU1fVFhfUkNfTUNTXFx0XFx0XFx0PSBCSVQoMyksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjI1ODpcXHRNQUM4MDIxMV9IV1NJTV9UWF9SQ19HUkVFTl9GSUVMRFxcdFxcdD0gQklUKDQpLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyNTk6XFx0TUFDODAyMTFfSFdTSU1fVFhfUkNfNDBfTUhaX1dJRFRIXFx0XFx0PSBCSVQoNSksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjI2MDpcXHRNQUM4MDIxMV9IV1NJTV9UWF9SQ19EVVBfREFUQVxcdFxcdD0gQklUKDYpLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyNjE6XFx0TUFDODAyMTFfSFdTSU1fVFhfUkNfU0hPUlRfR0lcXHRcXHQ9IEJJVCg3KSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjYyOlxcdE1BQzgwMjExX0hXU0lNX1RYX1JDX1ZIVF9NQ1NcXHRcXHRcXHQ9IEJJVCg4KSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjYzOlxcdE1BQzgwMjExX0hXU0lNX1RYX1JDXzgwX01IWl9XSURUSFxcdFxcdD0gQklUKDkpLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyNjQ6XFx0TUFDODAyMTFfSFdTSU1fVFhfUkNfMTYwX01IWl9XSURUSFxcdFxcdD0gQklUKDEwKSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmgtMjY1LX07XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg9MzI4PWVudW0gaHdzaW1fcmF0ZV9pbmZvX2F0dHJpYnV0ZXMge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oLTM0Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MzQ4OiNlbmRpZiAvKiBfX01BQzgwMjExX0hXU0lNX0ggKi9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1faS5oLTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9pLmg6MTA6I2lmbmRlZiBfX01BQzgwMjExX0hXU0lNX0lfSFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1faS5oOjExOiNkZWZpbmUgX19NQUM4MDIxMV9IV1NJTV9JX0hcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX2kuaC0xMi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1faS5oPTE2NT12b2lkIGllZWU4MDIxMV9od3NpbV93YWtlX3R4X3F1ZXVlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9pLmgtMTY3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1faS5oOjE2ODojZW5kaWYgLyogX19NQUM4MDIxMV9IV1NJTV9JX0ggKi9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTcxMj1zdGF0aWMgc3RydWN0IG1hYzgwMjExX2h3c2ltX2RhdGEgKmdldF9od3NpbV9kYXRhX3JlZl9mcm9tX2FkZHIoY29uc3QgdTggKmFkZHIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy03MTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6NzE3Oi8qIE1BQzgwMjExX0hXU0lNIG5ldGxpbmsgZmFtaWx5ICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNzE4LXN0YXRpYyBzdHJ1Y3QgZ2VubF9mYW1pbHkgaHdzaW1fZ2VubF9mYW1pbHk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz03MjQ9c3RhdGljIGNvbnN0IHN0cnVjdCBnZW5sX211bHRpY2FzdF9ncm91cCBod3NpbV9tY2dycHNbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTcyNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzo3Mjg6LyogTUFDODAyMTFfSFdTSU0gbmV0bGluayBwb2xpY3kgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy03MjktXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz04NjU9c3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IGh3c2ltX2dlbmxfcG9saWN5W0hXU0lNX0FUVFJfTUFYICsgMV0gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy05MDEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6OTAyOi8qIE1BQzgwMjExX0hXU0lNIHZpcnRpbyBxdWV1ZXMgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy05MDMtc3RhdGljIHN0cnVjdCB2aXJ0cXVldWUgKmh3c2ltX3Zxc1tIV1NJTV9OVU1fVlFTXTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTE1NzU9c3RhdGljIGlubGluZSB1MTYgdHJhbnNfdHhfcmF0ZV9mbGFnc19pZWVlMmh3c2ltKHN0cnVjdCBpZWVlODAyMTFfdHhfcmF0ZSAqcmF0ZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTE1NzktXFx0aWYgKHJhdGUtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSUVFRTgwMjExX1RYX1JDX1VTRV9SVFNfQ1RTKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjE1ODA6XFx0XFx0cmVzdWx0IHw9IE1BQzgwMjExX0hXU0lNX1RYX1JDX1VTRV9SVFNfQ1RTO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTE1ODEtXFx0aWYgKHJhdGUtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSUVFRTgwMjExX1RYX1JDX1VTRV9DVFNfUFJPVEVDVClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzoxNTgyOlxcdFxcdHJlc3VsdCB8PSBNQUM4MDIxMV9IV1NJTV9UWF9SQ19VU0VfQ1RTX1BST1RFQ1Q7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMTU4My1cXHRpZiAocmF0ZS1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJRUVFODAyMTFfVFhfUkNfVVNFX1NIT1JUX1BSRUFNQkxFKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjE1ODQ6XFx0XFx0cmVzdWx0IHw9IE1BQzgwMjExX0hXU0lNX1RYX1JDX1VTRV9TSE9SVF9QUkVBTUJMRTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0xNTg1LVxcdGlmIChyYXRlLVxcdTAwM2VmbGFncyBcXHUwMDI2IElFRUU4MDIxMV9UWF9SQ19NQ1MpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6MTU4NjpcXHRcXHRyZXN1bHQgfD0gTUFDODAyMTFfSFdTSU1fVFhfUkNfTUNTO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTE1ODctXFx0aWYgKHJhdGUtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSUVFRTgwMjExX1RYX1JDX0dSRUVOX0ZJRUxEKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjE1ODg6XFx0XFx0cmVzdWx0IHw9IE1BQzgwMjExX0hXU0lNX1RYX1JDX0dSRUVOX0ZJRUxEO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTE1ODktXFx0aWYgKHJhdGUtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSUVFRTgwMjExX1RYX1JDXzQwX01IWl9XSURUSClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzoxNTkwOlxcdFxcdHJlc3VsdCB8PSBNQUM4MDIxMV9IV1NJTV9UWF9SQ180MF9NSFpfV0lEVEg7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMTU5MS1cXHRpZiAocmF0ZS1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJRUVFODAyMTFfVFhfUkNfRFVQX0RBVEEpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6MTU5MjpcXHRcXHRyZXN1bHQgfD0gTUFDODAyMTFfSFdTSU1fVFhfUkNfRFVQX0RBVEE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMTU5My1cXHRpZiAocmF0ZS1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJRUVFODAyMTFfVFhfUkNfU0hPUlRfR0kpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6MTU5NDpcXHRcXHRyZXN1bHQgfD0gTUFDODAyMTFfSFdTSU1fVFhfUkNfU0hPUlRfR0k7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMTU5NS1cXHRpZiAocmF0ZS1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJRUVFODAyMTFfVFhfUkNfVkhUX01DUylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzoxNTk2OlxcdFxcdHJlc3VsdCB8PSBNQUM4MDIxMV9IV1NJTV9UWF9SQ19WSFRfTUNTO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTE1OTctXFx0aWYgKHJhdGUtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSUVFRTgwMjExX1RYX1JDXzgwX01IWl9XSURUSClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzoxNTk4OlxcdFxcdHJlc3VsdCB8PSBNQUM4MDIxMV9IV1NJTV9UWF9SQ184MF9NSFpfV0lEVEg7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMTU5OS1cXHRpZiAocmF0ZS1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJRUVFODAyMTFfVFhfUkNfMTYwX01IWl9XSURUSClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzoxNjAwOlxcdFxcdHJlc3VsdCB8PSBNQUM4MDIxMV9IV1NJTV9UWF9SQ18xNjBfTUhaX1dJRFRIO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTE2MDEtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz0zNDg0PXN0YXRpYyBjb25zdCBjaGFyIG1hYzgwMjExX2h3c2ltX2dzdHJpbmdzX3N0YXRzW11bRVRIX0dTVFJJTkdfTEVOXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTM0OTQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6MzQ5NTojZGVmaW5lIE1BQzgwMjExX0hXU0lNX1NTVEFUU19MRU4gQVJSQVlfU0laRShtYWM4MDIxMV9od3NpbV9nc3RyaW5nc19zdGF0cylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0zNDk2LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9MzUwNj1zdGF0aWMgaW50IG1hYzgwMjExX2h3c2ltX2dldF9ldF9zc2V0X2NvdW50KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMzUwOS1cXHRpZiAoc3NldCA9PSBFVEhfU1NfU1RBVFMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6MzUxMDpcXHRcXHRyZXR1cm4gTUFDODAyMTFfSFdTSU1fU1NUQVRTX0xFTjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0zNTExLVxcdHJldHVybiAwO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9MzUxND1zdGF0aWMgdm9pZCBtYWM4MDIxMV9od3NpbV9nZXRfZXRfc3RhdHMoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0zNTI5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjM1MzA6XFx0V0FSTl9PTihpICE9IE1BQzgwMjExX0hXU0lNX1NTVEFUU19MRU4pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTM1MzEtfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9NTY0Nz1zdGF0aWMgY29uc3QgdTggaWZ0eXBlc19leHRfY2FwYV9hcFtdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNTY1NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzo1NjU2OiNkZWZpbmUgTUFDODAyMTFfSFdTSU1fTUxEX0NBUEFfT1BTXFx0XFx0XFx0XFx0XFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTU2NTctXFx0RklFTERfUFJFUF9DT05TVChJRUVFODAyMTFfTUxEX0NBUF9PUF9USURfVE9fTElOS19NQVBfTkVHX1NVUFAsIFxcXFxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTU2NjI9c3RhdGljIGNvbnN0IHN0cnVjdCB3aXBoeV9pZnR5cGVfZXh0X2NhcGFiIG1hYzgwMjExX2h3c2ltX2lmdHlwZXNfZXh0X2NhcGFbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTU2NjktXFx0XFx0XFx0XFx0ICAgIElFRUU4MDIxMV9FTUxfQ0FQX0VNTE1SX1NVUFBPUlQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6NTY3MDpcXHRcXHQubWxkX2NhcGFfYW5kX29wcyA9IE1BQzgwMjExX0hXU0lNX01MRF9DQVBBX09QUyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy01NjcxLVxcdH0sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz03MTQ3PXN0YXRpYyBzdHJ1Y3QgZ2VubF9mYW1pbHkgaHdzaW1fZ2VubF9mYW1pbHkgX19yb19hZnRlcl9pbml0ID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjcxNDg6XFx0Lm5hbWUgPSBcXFwiTUFDODAyMTFfSFdTSU1cXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTcxNDktXFx0LnZlcnNpb24gPSAxLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9NzQ2Nz1zdGF0aWMgdm9pZCBod3NpbV92aXJ0aW9fcmVtb3ZlKHN0cnVjdCB2aXJ0aW9fZGV2aWNlICp2ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNzQ3NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzo3NDc2Oi8qIE1BQzgwMjExX0hXU0lNIHZpcnRpbyBkZXZpY2UgaWQgdGFibGUgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy03NDc3LXN0YXRpYyBjb25zdCBzdHJ1Y3QgdmlydGlvX2RldmljZV9pZCBpZF90YWJsZVtdID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjc0Nzg6XFx0eyBWSVJUSU9fSURfTUFDODAyMTFfSFdTSU0sIFZJUlRJT19ERVZfQU5ZX0lEIH0sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNzQ3OS1cXHR7IDAgfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYz03OD1zdGF0aWMgdTY0IGh3c2ltX25hbl9nZXRfbWFzdGVyX3Jhbmsoc3RydWN0IG1hYzgwMjExX2h3c2ltX2RhdGEgKmRhdGEpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTgyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6ODM6XFx0aWYgKGRhdGEtXFx1MDAzZW5hbi5waGFzZSA9PSBNQUM4MDIxMV9IV1NJTV9OQU5fUEhBU0VfVVApIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTg0LVxcdFxcdG1hc3Rlcl9wcmVmID0gZGF0YS1cXHUwMDNlbmFuLm1hc3Rlcl9wcmVmO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYz0yMTY9dm9pZCBtYWM4MDIxMV9od3NpbV9uYW5fcngoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTI3My1cXHRpZiAoKHNsb3QgIT0gU0xPVF8yNEdIWl9EVyBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6Mjc0OlxcdCAgICAgZGF0YS1cXHUwMDNlbmFuLnBoYXNlICE9IE1BQzgwMjExX0hXU0lNX05BTl9QSEFTRV9TQ0FOKSB8fFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtMjc1LVxcdCAgICByeF9zdGF0dXMuZnJlcSAhPSAyNDM3KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy00MzYtXFx0XFx0ICAgIChjZyA9PSBvd25fY2cgXFx1MDAyNlxcdTAwMjYgZnJhbWVfYW1yIFxcdTAwM2UgY3Vycl9hbXIpIHx8XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYzo0Mzc6XFx0XFx0ICAgIGRhdGEtXFx1MDAzZW5hbi5waGFzZSA9PSBNQUM4MDIxMV9IV1NJTV9OQU5fUEhBU0VfU0NBTikge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtNDM4LVxcdFxcdFxcdC8qIEF2b2lkIGEgc3RhdGUgdHJhbnNpdGlvbiAqL1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy00NjgtXFx0XFx0XFx0ICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYzo0Njk6XFx0XFx0XFx0ZGF0YS1cXHUwMDNlbmFuLnBoYXNlID0gTUFDODAyMTFfSFdTSU1fTkFOX1BIQVNFX1VQO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtNDcwLVxcdFxcdFxcdGRhdGEtXFx1MDAzZW5hbi5yYW5kb21fZmFjdG9yX3ZhbGlkX2R3c3QgPSAwO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYz02MTI9bWFjODAyMTFfaHdzaW1fbmFuX2V4ZWNfc3RhdGVfdHJhbnNpdGlvbnMoc3RydWN0IG1hYzgwMjExX2h3c2ltX2RhdGEgKmRhdGEpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTYyNS1cXHRpZiAoZGF0YS1cXHUwMDNlbmFuLm1hc3Rlcl90cmFuc2l0aW9uX3Njb3JlIFxcdTAwM2MgMylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjYyNjpcXHRcXHRkYXRhLVxcdTAwM2VuYW4ucm9sZSA9IE1BQzgwMjExX0hXU0lNX05BTl9ST0xFX01BU1RFUjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjYyNzpcXHRlbHNlIGlmIChkYXRhLVxcdTAwM2VuYW4ucm9sZSA9PSBNQUM4MDIxMV9IV1NJTV9OQU5fUk9MRV9NQVNURVIgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTYyOC1cXHRcXHQgZGF0YS1cXHUwMDNlbmFuLm1hc3Rlcl90cmFuc2l0aW9uX3Njb3JlIFxcdTAwM2U9IDMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYzo2Mjk6XFx0XFx0ZGF0YS1cXHUwMDNlbmFuLnJvbGUgPSBNQUM4MDIxMV9IV1NJTV9OQU5fUk9MRV9TWU5DO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6NjMwOlxcdGVsc2UgaWYgKGRhdGEtXFx1MDAzZW5hbi5yb2xlID09IE1BQzgwMjExX0hXU0lNX05BTl9ST0xFX1NZTkMgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTYzMS1cXHRcXHQgZGF0YS1cXHUwMDNlbmFuLnN5bmNfdHJhbnNpdGlvbl9zY29yZSBcXHUwMDNlPSAzKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6NjMyOlxcdFxcdGRhdGEtXFx1MDAzZW5hbi5yb2xlID0gTUFDODAyMTFfSFdTSU1fTkFOX1JPTEVfTk9OX1NZTkM7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYzo2MzM6XFx0ZWxzZSBpZiAoZGF0YS1cXHUwMDNlbmFuLnJvbGUgPT0gTUFDODAyMTFfSFdTSU1fTkFOX1JPTEVfTk9OX1NZTkMgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTYzNC1cXHRcXHQgZGF0YS1cXHUwMDNlbmFuLnN5bmNfdHJhbnNpdGlvbl9zY29yZSBcXHUwMDNjIDMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYzo2MzU6XFx0XFx0ZGF0YS1cXHUwMDNlbmFuLnJvbGUgPSBNQUM4MDIxMV9IV1NJTV9OQU5fUk9MRV9TWU5DO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtNjM2LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy02NDEtXFx0ICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYzo2NDI6XFx0aWYgKGRhdGEtXFx1MDAzZW5hbi5yb2xlID09IE1BQzgwMjExX0hXU0lNX05BTl9ST0xFX01BU1RFUiBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtNjQzLVxcdCAgICAhaHJ0aW1lcl9hY3RpdmUoXFx1MDAyNmRhdGEtXFx1MDAzZW5hbi5kaXNjb3ZlcnlfYmVhY29uX3RpbWVyKSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtNjUzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6NjU0OlxcdFxcdGlmIChkYXRhLVxcdTAwM2VuYW4ucGhhc2UgPT0gTUFDODAyMTFfSFdTSU1fTkFOX1BIQVNFX1NDQU4pIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjY1NTpcXHRcXHRcXHRkYXRhLVxcdTAwM2VuYW4ucGhhc2UgPSBNQUM4MDIxMV9IV1NJTV9OQU5fUEhBU0VfV0FSTVVQO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtNjU2LVxcdFxcdFxcdGRhdGEtXFx1MDAzZW5hbi5yYW5kb21fZmFjdG9yX3ZhbGlkX2R3c3QgPSBOQU5fV0FSTVVQX0RXU1Q7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTY1OS1cXHRcXHR9IGVsc2Uge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6NjYwOlxcdFxcdFxcdGRhdGEtXFx1MDAzZW5hbi5waGFzZSA9IE1BQzgwMjExX0hXU0lNX05BTl9QSEFTRV9VUDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTY2MS1cXHRcXHRcXHRkYXRhLVxcdTAwM2VuYW4ucmFuZG9tX2ZhY3Rvcl92YWxpZF9kd3N0ID1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM9Njk1PW1hYzgwMjExX2h3c2ltX25hbl90eF9iZWFjb24oc3RydWN0IG1hYzgwMjExX2h3c2ltX2RhdGEgKmRhdGEsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTc1MC1cXHRuYW5fYXR0ci5sZW5ndGggPSBjcHVfdG9fbGUxNihzaXplb2YobWFzdGVyX2luZGljYXRpb24pKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjc1MTpcXHRpZiAoZGF0YS1cXHUwMDNlbmFuLnBoYXNlID09IE1BQzgwMjExX0hXU0lNX05BTl9QSEFTRV9VUCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtNzUyLVxcdFxcdG1hc3Rlcl9pbmRpY2F0aW9uLm1hc3Rlcl9wcmVmID0gZGF0YS1cXHUwMDNlbmFuLm1hc3Rlcl9wcmVmO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYz03NzQ9bWFjODAyMTFfaHdzaW1fbmFuX3Nsb3RfdGltZXIoc3RydWN0IGhydGltZXIgKnRpbWVyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy04MDctXFx0XFx0dHhfc3luY19iZWFjb24gPVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6ODA4OlxcdFxcdFxcdGRhdGEtXFx1MDAzZW5hbi5waGFzZSAhPSBNQUM4MDIxMV9IV1NJTV9OQU5fUEhBU0VfU0NBTiBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6ODA5OlxcdFxcdFxcdGRhdGEtXFx1MDAzZW5hbi5yb2xlICE9IE1BQzgwMjExX0hXU0lNX05BTl9ST0xFX05PTl9TWU5DO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtODEwLVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM9ODY3PW1hYzgwMjExX2h3c2ltX25hbl9kaXNjb3ZlcnlfYmVhY29uX3RpbWVyKHN0cnVjdCBocnRpbWVyICp0aW1lcilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtODc5LVxcdHNjb3BlZF9ndWFyZChzcGlubG9jaywgXFx1MDAyNmRhdGEtXFx1MDAzZW5hbi5zdGF0ZV9sb2NrKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYzo4ODA6XFx0XFx0aWYgKGRhdGEtXFx1MDAzZW5hbi5waGFzZSA9PSBNQUM4MDIxMV9IV1NJTV9OQU5fUEhBU0VfU0NBTiB8fFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6ODgxOlxcdFxcdCAgICBkYXRhLVxcdTAwM2VuYW4ucm9sZSAhPSBNQUM4MDIxMV9IV1NJTV9OQU5fUk9MRV9NQVNURVIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy04ODItXFx0XFx0XFx0cmV0dXJuIEhSVElNRVJfTk9SRVNUQVJUO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYz05MDk9aW50IG1hYzgwMjExX2h3c2ltX25hbl9zdGFydChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtOTI2LVxcdFxcdC8qIFN0YXJ0IGluIHRoZSBcXFwic2NhblxcXCIgcGhhc2UgYW5kIHN0YXkgdGhlcmUgZm9yIGEgbGl0dGxlIGJpdCAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6OTI3OlxcdFxcdGRhdGEtXFx1MDAzZW5hbi5waGFzZSA9IE1BQzgwMjExX0hXU0lNX05BTl9QSEFTRV9TQ0FOO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtOTI4LVxcdFxcdGRhdGEtXFx1MDAzZW5hbi5yYW5kb21fZmFjdG9yX3ZhbGlkX2R3c3QgPSAxO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy05MzAtXFx0XFx0ZGF0YS1cXHUwMDNlbmFuLm1hc3Rlcl9wcmVmID0gY29uZi1cXHUwMDNlbWFzdGVyX3ByZWY7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYzo5MzE6XFx0XFx0ZGF0YS1cXHUwMDNlbmFuLnJvbGUgPSBNQUM4MDIxMV9IV1NJTV9OQU5fUk9MRV9NQVNURVI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy05MzItXFx0XFx0bWVtc2V0KFxcdTAwMjZkYXRhLVxcdTAwM2VuYW4uY3VycmVudF9hbWksIDAsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jPTEyMjY9Ym9vbCBtYWM4MDIxMV9od3NpbV9uYW5fcmVjZWl2ZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtMTIzNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjEyMzY6XFx0aWYgKGRhdGEtXFx1MDAzZW5hbi5waGFzZSA9PSBNQUM4MDIxMV9IV1NJTV9OQU5fUEhBU0VfU0NBTilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTEyMzctXFx0XFx0cmV0dXJuIGNoYW5uZWwtXFx1MDAzZWNlbnRlcl9mcmVxID09IDI0Mzc7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5oLTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaDo3OiNpZm5kZWYgX19NQUM4MDIxMV9IV1NJTV9OQU5fSFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmg6ODojZGVmaW5lIF9fTUFDODAyMTFfSFdTSU1fTkFOX0hcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5oLTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaD0xMD1lbnVtIG1hYzgwMjExX2h3c2ltX25hbl9waGFzZSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaDoxMTpcXHRNQUM4MDIxMV9IV1NJTV9OQU5fUEhBU0VfU0NBTixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5oOjEyOlxcdE1BQzgwMjExX0hXU0lNX05BTl9QSEFTRV9XQVJNVVAsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaDoxMzpcXHRNQUM4MDIxMV9IV1NJTV9OQU5fUEhBU0VfVVAsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaC0xNC19O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaD0xNj1lbnVtIG1hYzgwMjExX2h3c2ltX25hbl9yb2xlIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5oOjE3OlxcdE1BQzgwMjExX0hXU0lNX05BTl9ST0xFX01BU1RFUixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5oOjE4OlxcdE1BQzgwMjExX0hXU0lNX05BTl9ST0xFX1NZTkMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaDoxOTpcXHRNQUM4MDIxMV9IV1NJTV9OQU5fUk9MRV9OT05fU1lOQyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5oLTIwLX07XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5oPTk5PXZvaWQgbWFjODAyMTFfaHdzaW1fbmFuX2xvY2FsX3NjaGVkX2NoYW5nZWQoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5oLTEwMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5oOjEwMjojZW5kaWYgLyogX19NQUM4MDIxMV9IV1NJTV9OQU5fSCAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQxODowOTo1My45NTgzMDMyMVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo1MzgxMDkzMTIzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgODAyLjExIFRYIFF1ZXVlIEFpcnRpbWUgQ2hlY2sqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IHVuZGVyc3RhbmRpbmcgaXMgdGhhdCBgaWVlZTgwMjExX3R4cV9haXJ0aW1lX2NoZWNrYCBpcyB0cmlnZ2VyZWQgZHVyaW5nIHRoZSB0cmFuc21pdCBwcm9jZXNzLCBzcGVjaWZpY2FsbHkgd2l0aGluIGBuZXQvbWFjODAyMTEvdHguY2AuIEkgbmVlZCB0byBjb25maXJtIHRoZSBleGFjdCBjYWxsIHBhdGguIEl0IHNlZW1zIHRoYXQgYGllZWU4MDIxMV90eF9kZXF1ZXVlYCBhbmQgYGllZWU4MDIxMV9uZXh0X3R4cWAgYXJlIHRoZSBrZXkgZnVuY3Rpb25zIHRvIGludmVzdGlnYXRlLCBhcyB0aGV5J3JlIGxpa2VseSB0aGUgcHJpbWFyeSBjYWxsZXJzIG9mIHRoYXQgY2hlY2suIE15IG5leHQgc3RlcCB3aWxsIGJlIHRvIGRpdmUgZGVlcGVyIGFuZCBhbmFseXplIGFsbCBvZiB0aGUgY2FsbGVycyBvZiBib3RoIGBpZWVlODAyMTFfdHhfZGVxdWV1ZWAgYW5kIGBpZWVlODAyMTFfbmV4dF90eHFgLiBUaGlzIHdpbGwgZ2l2ZSBtZSBhIGNsZWFyIHBpY3R1cmUgb2YgdGhlIGFpcnRpbWUgY2hlY2sncyBjb250ZXh0IGFuZCBob3cgaXQgZml0cyBpbnRvIHRoZSBvdmVyYWxsIHRyYW5zbWl0IHF1ZXVlIG1hbmFnZW1lbnQgb2YgdGhlIDgwMi4xMSBzdGFjay5cblxuXG4iLCJJbnB1dFRva2VucyI6MzQzMzIsIk91dHB1dFRva2VucyI6NDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMTg6MDk6NTkuMzM5Mzk4NjgyWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTY1NzMyNjEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaWVlZTgwMjExXyh0eF9kZXF1ZXVlfG5leHRfdHhxKVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbWFjODAyMTFcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L21hYzgwMjExL3R4LmM9Mzg1ND1zdGF0aWMgYm9vbCBpZWVlODAyMTFfZHJvcF91bmF1dGhfcG9ydChzdHJ1Y3QgaWVlZTgwMjExX3R4X2RhdGEgKnR4KVxcbi0tXFxubmV0L21hYzgwMjExL3R4LmMtMzg4NS1cXG5uZXQvbWFjODAyMTEvdHguYzozODg2OnN0cnVjdCBza19idWZmICppZWVlODAyMTFfdHhfZGVxdWV1ZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG5uZXQvbWFjODAyMTEvdHguYy0zODg3LVxcdFxcdFxcdFxcdCAgICAgc3RydWN0IGllZWU4MDIxMV90eHEgKnR4cSlcXG4tLVxcbm5ldC9tYWM4MDIxMS90eC5jLTQwNzgtfVxcbm5ldC9tYWM4MDIxMS90eC5jOjQwNzk6RVhQT1JUX1NZTUJPTChpZWVlODAyMTFfdHhfZGVxdWV1ZSk7XFxubmV0L21hYzgwMjExL3R4LmMtNDA4MC1cXG4tLVxcbm5ldC9tYWM4MDIxMS90eC5jPTQxMDE9aWVlZTgwMjExX3R4cV9rZWVwX2FjdGl2ZShzdHJ1Y3QgdHhxX2luZm8gKnR4cWkpXFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYy00MTE0LVxcbm5ldC9tYWM4MDIxMS90eC5jOjQxMTU6c3RydWN0IGllZWU4MDIxMV90eHEgKmllZWU4MDIxMV9uZXh0X3R4cShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgdTggYWMpXFxubmV0L21hYzgwMjExL3R4LmMtNDExNi17XFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYy00MTc3LX1cXG5uZXQvbWFjODAyMTEvdHguYzo0MTc4OkVYUE9SVF9TWU1CT0woaWVlZTgwMjExX25leHRfdHhxKTtcXG5uZXQvbWFjODAyMTEvdHguYy00MTc5LVxcbm5ldC9tYWM4MDIxMS90eC5jPTQxODA9dm9pZCBfX2llZWU4MDIxMV9zY2hlZHVsZV90eHEoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYy00MTk5LVxcdFxcdCAqIGdldCBpbW1lZGlhdGVseSBtb3ZlZCB0byB0aGUgYmFjayBvZiB0aGUgbGlzdCBvbiB0aGUgbmV4dFxcbm5ldC9tYWM4MDIxMS90eC5jOjQyMDA6XFx0XFx0ICogY2FsbCB0byBpZWVlODAyMTFfbmV4dF90eHEoKS5cXG5uZXQvbWFjODAyMTEvdHguYy00MjAxLVxcdFxcdCAqL1xcbi0tXFxubmV0L21hYzgwMjExL3V0aWwuYz0yODY9c3RhdGljIHZvaWQgd2FrZV90eF9wdXNoX3F1ZXVlKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxcbi0tXFxubmV0L21hYzgwMjExL3V0aWwuYy0yOTUtXFx0d2hpbGUgKDEpIHtcXG5uZXQvbWFjODAyMTEvdXRpbC5jOjI5NjpcXHRcXHRza2IgPSBpZWVlODAyMTFfdHhfZGVxdWV1ZShcXHUwMDI2bG9jYWwtXFx1MDAzZWh3LCBxdWV1ZSk7XFxubmV0L21hYzgwMjExL3V0aWwuYy0yOTctXFx0XFx0aWYgKCFza2IpXFxuLS1cXG5uZXQvbWFjODAyMTEvdXRpbC5jPTMwNT12b2lkIGllZWU4MDIxMV9oYW5kbGVfd2FrZV90eF9xdWV1ZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4tLVxcbm5ldC9tYWM4MDIxMS91dGlsLmMtMzEzLVxcbm5ldC9tYWM4MDIxMS91dGlsLmM6MzE0OlxcdC8qIFVzZSBpZWVlODAyMTFfbmV4dF90eHEoKSBmb3IgYWlydGltZSBmYWlybmVzcyBhY2NvdW50aW5nICovXFxubmV0L21hYzgwMjExL3V0aWwuYy0zMTUtXFx0aWVlZTgwMjExX3R4cV9zY2hlZHVsZV9zdGFydChodywgdHhxLVxcdTAwM2VhYyk7XFxubmV0L21hYzgwMjExL3V0aWwuYzozMTY6XFx0d2hpbGUgKChxdWV1ZSA9IGllZWU4MDIxMV9uZXh0X3R4cShodywgdHhxLVxcdTAwM2VhYykpKSB7XFxubmV0L21hYzgwMjExL3V0aWwuYy0zMTctXFx0XFx0d2FrZV90eF9wdXNoX3F1ZXVlKGxvY2FsLCBzZGF0YSwgcXVldWUpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQxODowOTo1OS40NTU5NzYzNDRaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NDYxMTQ2MTQyNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFdpcmVsZXNzIFRyYW5zbWlzc2lvbiBRdWV1ZSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGludG8gdGhpcyBgaWVlZTgwMjExX3R4cV9haXJ0aW1lX2NoZWNrYCBmdW5jdGlvbiwgd2hpY2ggZnJvbSB3aGF0IEkgdW5kZXJzdGFuZCwgaXMgY3J1Y2lhbCBmb3IgbWFuYWdpbmcgcGFja2V0IHRyYW5zbWlzc2lvbiBhbmQgcXVldWUgcHJvY2Vzc2luZyB3aXRoaW4gdGhlIG1hYzgwMjExIGZyYW1ld29yay4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dCBvZiB0aGUgYFRYX05PX1BVU0hCQUNLYCBmbGFnLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiBgYXRoMTFrYCBpcyB0aGUgc29sZSBkcml2ZXIgcmVzcG9uc2libGUgZm9yIHNldHRpbmcgdGhpcyBzcGVjaWZpYyBmbGFnLiBJIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIG90aGVyIGRyaXZlcnMgbWlnaHQgdXRpbGl6ZSBpdCwgb3IgaWYgdGhlcmUncyBhIGJyb2FkZXIgbWVjaGFuaXNtIGF0IHBsYXkuIFRoZXJlZm9yZSwgdGhlIG5leHQgc3RlcCBpcyBhIG1vcmUgZXhoYXVzdGl2ZSBpbnZlc3RpZ2F0aW9uIGludG8gdGhlIGtlcm5lbCBzb3VyY2UuIEknbSBnb2luZyB0byBjb25kdWN0IGEgY29tcHJlaGVuc2l2ZSBzZWFyY2ggZm9yIGluc3RhbmNlcyBvZiBgVFhfTk9fUFVTSEJBQ0tgIHRocm91Z2hvdXQgdGhlIGVudGlyZSBrZXJuZWwgcmVwb3NpdG9yeSB0byBnYWluIGEgaG9saXN0aWMgdmlldyBvZiBpdHMgdXNhZ2UgYW5kIGltcGxpY2F0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzU2NTksIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQxODoxMDowNC4wNjc0NDA1MloiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjIzNjgwNDg2OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJUWF9OT19QVVNIQkFDS1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jPTEwNDQyPXN0YXRpYyBpbnQgX19hdGgxMWtfbWFjX3JlZ2lzdGVyKHN0cnVjdCBhdGgxMWsgKmFyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYy0xMDQ5Ni1cXHRpZWVlODAyMTFfaHdfc2V0KGFyLVxcdTAwM2VodywgU1VQUE9SVFNfUFMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmM6MTA0OTc6XFx0aWVlZTgwMjExX2h3X3NldChhci1cXHUwMDNlaHcsIFRYX05PX1BVU0hCQUNLKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jLTEwNDk4LVxcdGllZWU4MDIxMV9od19zZXQoYXItXFx1MDAzZWh3LCBTVVBQT1JUU19EWU5BTUlDX1BTKTtcXG4tLVxcbmluY2x1ZGUvbmV0L21hYzgwMjExLmg9MjgyNT1zdHJ1Y3QgaWVlZTgwMjExX3R4cSB7XFxuLS1cXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oLTMwODgtICpcXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oOjMwODk6ICogQElFRUU4MDIxMV9IV19UWF9OT19QVVNIQkFDSzogVGhlIGRyaXZlciBoYW5kcyBldmVyeSBmcmFtZSBpdCBkZXF1ZXVlc1xcbmluY2x1ZGUvbmV0L21hYzgwMjExLmgtMzA5MC0gKlxcdHRvIHRoZSBoYXJkd2FyZSBhdCBvbmNlLCBhbmQgdGhlIGhhcmR3YXJlIHBpY2tzIHRoZSBzdGF0aW9uIGl0IHNlcnZlc1xcbi0tXFxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaD0zMDk3PWVudW0gaWVlZTgwMjExX2h3X2ZsYWdzIHtcXG4tLVxcbmluY2x1ZGUvbmV0L21hYzgwMjExLmgtMzE1NS1cXHRJRUVFODAyMTFfSFdfU1VQUE9SVFNfTkRQX0JMT0NLQUNLLFxcbmluY2x1ZGUvbmV0L21hYzgwMjExLmg6MzE1NjpcXHRJRUVFODAyMTFfSFdfVFhfTk9fUFVTSEJBQ0ssXFxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaC0zMTU3LVxcbi0tXFxubmV0L21hYzgwMjExL2RlYnVnZnMuYz00MDU9c3RhdGljIGNvbnN0IGNoYXIgKmh3X2ZsYWdfbmFtZXNbXSA9IHtcXG4tLVxcbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzLmMtNDY0LVxcdEZMQUcoU1VQUE9SVFNfTkRQX0JMT0NLQUNLKSxcXG5uZXQvbWFjODAyMTEvZGVidWdmcy5jOjQ2NTpcXHRGTEFHKFRYX05PX1BVU0hCQUNLKSxcXG5uZXQvbWFjODAyMTEvZGVidWdmcy5jLTQ2Ni0jdW5kZWYgRkxBR1xcbi0tXFxubmV0L21hYzgwMjExL3R4LmM9NDIyMD1zdGF0aWMgdTMyIGllZWU4MDIxMV9hcWxfc3RhX2xpbWl0KHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxcbi0tXFxubmV0L21hYzgwMjExL3R4LmMtNDIyNC1cXG5uZXQvbWFjODAyMTEvdHguYzo0MjI1OlxcdGlmICghaWVlZTgwMjExX2h3X2NoZWNrKFxcdTAwMjZsb2NhbC1cXHUwMDNlaHcsIFRYX05PX1BVU0hCQUNLKSB8fFxcbm5ldC9tYWM4MDIxMS90eC5jLTQyMjYtXFx0ICAgIHN0YS1cXHUwMDNlYWlydGltZV93ZWlnaHQgPT0gSUVFRTgwMjExX0RFRkFVTFRfQUlSVElNRV9XRUlHSFQpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDE4OjEwOjA2LjMwNDI1MzU4OVoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo3OTg0MDM5ODgyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKldvcnRoIEZ1enppbmcgQXNzZXNzbWVudDogQVFMIEludGVncmF0aW9uIGluIG1hYzgwMjExKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIHNjYW4gc2hvd3MgdGhpcyBwYXRjaCB0b3VjaGVzIGEgZmV3IGtleSBhcmVhcy4gRmlyc3QsIHdlIGhhdmUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmNgLCB3aGljaCBpcyBzZXR0aW5nIHRoZSBgVFhfTk9fUFVTSEJBQ0tgIGZsYWcgZHVyaW5nIGBhdGgxMWtgIGhhcmR3YXJlIHJlZ2lzdHJhdGlvbi4gV2UgYWxzbyBzZWUgdGhlIGRlZmluaXRpb24gb2YgdGhpcyBuZXcgZmxhZywgYElFRUU4MDIxMV9IV19UWF9OT19QVVNIQkFDS2AsIGluIGBpbmNsdWRlL25ldC9tYWM4MDIxMS5oYCwgYW5kIGl0cyBhZGRpdGlvbiB0byBkZWJ1Z2ZzIGluIGBuZXQvbWFjODAyMTEvZGVidWdmcy5jYC4gIEZpbmFsbHksIHRoZSBjcml0aWNhbCBwaWVjZTogYG5ldC9tYWM4MDIxMS90eC5jYCwgd2hlcmUgd2UgZmluZCB0aGUgaW1wbGVtZW50YXRpb24gb2YgYGllZWU4MDIxMV9hcWxfc3RhX2xpbWl0YCBhbmQgaXRzIGludGVncmF0aW9uIGludG8gYGllZWU4MDIxMV90eHFfYWlydGltZV9jaGVja2AuXG5cbk5vdywgdGhlIGltcG9ydGFudCBxdWVzdGlvbiBpcyByZWFjaGFiaWxpdHkuIENhbiB3ZSBoaXQgdGhhdCBjb2RlIGR1cmluZyBmdXp6aW5nPyBUaGUgZ29vZCBuZXdzIGlzLCBgaWVlZTgwMjExX3R4cV9haXJ0aW1lX2NoZWNrKClgICphbHdheXMqIGV4ZWN1dGVzIGZvciBhaXJ0aW1lIGNoZWNrcyBpZiBBUUwgKGFpcnRpbWUgcXVldWUgbGltaXQpIGlzIGVuYWJsZWQgb24gYSB3aXBoeS4gTG9va2luZyBhdCB0aGUgY29kZTpcblxuYGBgY1xuXHRpZiAoIXdpcGh5X2V4dF9mZWF0dXJlX2lzc2V0KGxvY2FsLVx1MDAzZWh3LndpcGh5LCBOTDgwMjExX0VYVF9GRUFUVVJFX0FRTCkpXG5cdFx0cmV0dXJuIHRydWU7XG5cblx0aWYgKHN0YXRpY19icmFuY2hfdW5saWtlbHkoXHUwMDI2YXFsX2Rpc2FibGUpKVxuXHRcdHJldHVybiB0cnVlO1xuXG5cdGlmICghdHhxLVx1MDAzZXN0YSlcblx0XHRyZXR1cm4gYXRvbWljX3JlYWQoXHUwMDI2bG9jYWwtXHUwMDNlYXFsX21jX3BlbmRpbmdfYWlydGltZSkgXHUwMDNjXG5cdFx0ICAgICAgIGxvY2FsLVx1MDAzZWFxbF90eHFfbGltaXRfbWM7XG5cblx0aWYgKHVubGlrZWx5KHR4cS1cdTAwM2V0aWQgPT0gSUVFRTgwMjExX05VTV9USURTKSlcblx0XHRyZXR1cm4gdHJ1ZTtcblxuXHRzdGEgPSBjb250YWluZXJfb2YodHhxLVx1MDAzZXN0YSwgc3RydWN0IHN0YV9pbmZvLCBzdGEpO1xuXHRpZiAoYXRvbWljX3JlYWQoXHUwMDI2c3RhLVx1MDAzZWFpcnRpbWVbdHhxLVx1MDAzZWFjXS5hcWxfdHhfcGVuZGluZykgXHUwMDNjXG5cdCAgICBpZWVlODAyMTFfYXFsX3N0YV9saW1pdChsb2NhbCwgc3RhLFxuXHRcdFx0XHQgICAgc3RhLVx1MDAzZWFpcnRpbWVbdHhxLVx1MDAzZWFjXS5hcWxfbGltaXRfbG93KSlcblx0XHRyZXR1cm4gdHJ1ZTtcblxuXHRpZiAoYXRvbWljX3JlYWQoXHUwMDI2bG9jYWwtXHUwMDNlYXFsX3RvdGFsX3BlbmRpbmdfYWlydGltZSkgXHUwMDNjXG5cdCAgICBsb2NhbC1cdTAwM2VhcWxfdGhyZXNob2xkIFx1MDAyNlx1MDAyNlxuXHQgICAgYXRvbWljX3JlYWQoXHUwMDI2c3RhLVx1MDAzZWFpcnRpbWVbdHhxLVx1MDAzZWFjXS5hcWxfdHhfcGVuZGluZykgXHUwMDNjXG5cdCAgICBpZWVlODAyMTFfYXFsX3N0YV9saW1pdChsb2NhbCwgc3RhLFxuXHRcdFx0XHQgICAgc3RhLVx1MDAzZWFpcnRpbWVbdHhxLVx1MDAzZWFjXS5hcWxfbGltaXRfaGlnaCkpXG5cdFx0cmV0dXJuIHRydWU7XG5cblx0cmV0dXJuIGZhbHNlO1xuYGBgXG5cbkV2ZW4gaWYgYCFpZWVlODAyMTFfaHdfY2hlY2soXHUwMDI2bG9jYWwtXHUwMDNlaHcsIFRYX05PX1BVU0hCQUNLKWAsIHdoaWNoIGlzIHdoYXQgdGhpcyBwYXRjaCBpcyBsaWtlbHkgYWltZWQgYXQsICBgaWVlZTgwMjExX2FxbF9zdGFfbGltaXRgICp3aWxsKiBiZSBjYWxsZWQgZHVyaW5nIFRYIG9uIGBtYWM4MDIxMWAgd2hlbiBBUUwgaXMgYWN0aXZlLiBBbmQgbGV0J3MgYmUgY2xlYXI6IGBtYWM4MDIxMWAgaXMgYSBjb3JlIHN1YnN5c3RlbS5cblxuTm93LCBjYW4gd2UgcmVhY2ggYG1hYzgwMjExYCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRT8gQWJzb2x1dGVseS4gIFdlIGhhdmUgYG5ldGxpbmsgKG5sODAyMTEpYCwgYG1hYzgwMjExX2h3c2ltYCwgdmlydHVhbCBpbnRlcmZhY2VzLCBzb2NrZXRzLCBldGMuLCBhbGwgcHJvdmlkaW5nIHBhdGhzIGluLiBTeXprYWxsZXIsIHdoaWNoIEknbSB2ZXJ5IGZhbWlsaWFyIHdpdGgsIGV4dGVuc2l2ZWx5IGV4ZXJjaXNlcyBgbWFjODAyMTFgIGFuZCBgbmw4MDIxMWAuXG5cblNvLCBjb25zaWRlcmluZyBvdXIgY3JpdGVyaWE6XG5cbiogICAqKlJlYWNoYWJpbGl0eSoqOiBZZXMsIGBtYWM4MDIxMWAgaXMgcmVhY2hhYmxlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgdGhlIG1ldGhvZHMgYWJvdmUuXG4qICAgKipDb3JlIFN1YnN5c3RlbSBNb2RpZmljYXRpb24qKjogIFdlJ3JlIG1vZGlmeWluZyBgbWFjODAyMTFgIHR4IHNjaGVkdWxpbmcgLyBBUUwgbG9naWMsIHdoaWNoIGlzIGNyaXRpY2FsLlxuKiAgICoqV29ydGggRnV6emluZyoqOiAgKipUUlVFKiouICBUaGlzIGlzIGEgcHJpbWUgdGFyZ2V0LlxuXG5OZXh0LCBJJ2xsIGNoZWNrIHRoZSBLY29uZmlnIGRlcGVuZGVuY2llcyBmb3IgYE1BQzgwMjExYCBhbmQgYEFUSDExS2AgdG8gZW5zdXJlIHRoaXMgaXMgYWxsIHByb3Blcmx5IGVuYWJsZWQgZm9yIG91ciBmdXp6aW5nIHNldHVwcy4gIFdlJ3JlIGxvb2tpbmcgZm9yIGFueSBwb3RlbnRpYWwgb2JzdGFjbGVzLCBidXQgYmFzZWQgb24gdGhpcyBpbml0aWFsIGFuYWx5c2lzLCB0aGlzIHBhdGNoIGRlZmluaXRlbHkgd2FycmFudHMgZnVydGhlciBpbnZlc3RpZ2F0aW9uIGFuZCBmdXp6aW5nIGVmZm9ydC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzY2OTgsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5NTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMTg6MTA6MTQuMjg4Mjk3NzIxWiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NjQ4MDM0NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTUFDODAyMTFcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L21hYzgwMjExXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9tYWM4MDIxMS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxubmV0L21hYzgwMjExL0tjb25maWc6Mjpjb25maWcgTUFDODAyMTFcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJHZW5lcmljIElFRUUgODAyLjExIE5ldHdvcmtpbmcgU3RhY2sgKG1hYzgwMjExKVxcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnPTE5PWlmIE1BQzgwMjExICE9IG5cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMTpjb25maWcgTUFDODAyMTFfSEFTX1JDXFxubmV0L21hYzgwMjExL0tjb25maWctMjItXFx0Ym9vbFxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIzLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI0OmNvbmZpZyBNQUM4MDIxMV9SQ19NSU5TVFJFTFxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI1LVxcdGJvb2wgXFxcIk1pbnN0cmVsXFxcIiBpZiBFWFBFUlRcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnPTMxPWNob2ljZVxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctNDAtXFxubmV0L21hYzgwMjExL0tjb25maWc6NDE6Y29uZmlnIE1BQzgwMjExX1JDX0RFRkFVTFRfTUlOU1RSRUxcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy00Mi1cXHRib29sIFxcXCJNaW5zdHJlbFxcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnPTQ4PWVuZGNob2ljZVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTQ5LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjUwOmNvbmZpZyBNQUM4MDIxMV9SQ19ERUZBVUxUXFxubmV0L21hYzgwMjExL0tjb25maWctNTEtXFx0c3RyaW5nXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZz01Nz1jb21tZW50IFxcXCJTb21lIHdpcmVsZXNzIGRyaXZlcnMgcmVxdWlyZSBhIHJhdGUgY29udHJvbCBhbGdvcml0aG1cXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy01OS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo2MDpjb25maWcgTUFDODAyMTFfS1VOSVRfVEVTVFxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTYxLVxcdHRyaXN0YXRlIFxcXCJLVW5pdCB0ZXN0cyBmb3IgbWFjODAyMTFcXFwiIGlmICFLVU5JVF9BTExfVEVTVFNcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTY5LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjcwOmNvbmZpZyBNQUM4MDIxMV9NRVNIXFxubmV0L21hYzgwMjExL0tjb25maWctNzEtXFx0Ym9vbCBcXFwiRW5hYmxlIG1hYzgwMjExIG1lc2ggbmV0d29ya2luZyBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctNzgtXFxubmV0L21hYzgwMjExL0tjb25maWc6Nzk6Y29uZmlnIE1BQzgwMjExX0xFRFNcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy04MC1cXHRib29sIFxcXCJFbmFibGUgTEVEIHRyaWdnZXJzXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctODctXFxubmV0L21hYzgwMjExL0tjb25maWc6ODg6Y29uZmlnIE1BQzgwMjExX0RFQlVHRlNcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy04OS1cXHRib29sIFxcXCJFeHBvcnQgbWFjODAyMTEgaW50ZXJuYWxzIGluIERlYnVnRlNcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy05Ni1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo5Nzpjb25maWcgTUFDODAyMTFfTUVTU0FHRV9UUkFDSU5HXFxubmV0L21hYzgwMjExL0tjb25maWctOTgtXFx0Ym9vbCBcXFwiVHJhY2UgYWxsIG1hYzgwMjExIGRlYnVnIG1lc3NhZ2VzXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMTA5LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjExMDptZW51Y29uZmlnIE1BQzgwMjExX0RFQlVHX01FTlVcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMTEtXFx0Ym9vbCBcXFwiU2VsZWN0IG1hYzgwMjExIGRlYnVnZ2luZyBmZWF0dXJlc1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTExNS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxMTY6Y29uZmlnIE1BQzgwMjExX05PSU5MSU5FXFxubmV0L21hYzgwMjExL0tjb25maWctMTE3LVxcdGJvb2wgXFxcIkRvIG5vdCBpbmxpbmUgVFgvUlggaGFuZGxlcnNcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMzEtXFxubmV0L21hYzgwMjExL0tjb25maWc6MTMyOmNvbmZpZyBNQUM4MDIxMV9WRVJCT1NFX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMTMzLVxcdGJvb2wgXFxcIlZlcmJvc2UgZGVidWdnaW5nIG91dHB1dFxcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE0Mi1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxNDM6Y29uZmlnIE1BQzgwMjExX01MTUVfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNDQtXFx0Ym9vbCBcXFwiVmVyYm9zZSBtYW5hZ2VkIE1MTUUgb3V0cHV0XFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMTUzLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE1NDpjb25maWcgTUFDODAyMTFfU1RBX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMTU1LVxcdGJvb2wgXFxcIlZlcmJvc2Ugc3RhdGlvbiBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNjItXFxubmV0L21hYzgwMjExL0tjb25maWc6MTYzOmNvbmZpZyBNQUM4MDIxMV9IVF9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE2NC1cXHRib29sIFxcXCJWZXJib3NlIEhUIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE3NC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxNzU6Y29uZmlnIE1BQzgwMjExX09DQl9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE3Ni1cXHRib29sIFxcXCJWZXJib3NlIE9DQiBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xODUtXFxubmV0L21hYzgwMjExL0tjb25maWc6MTg2OmNvbmZpZyBNQUM4MDIxMV9JQlNTX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMTg3LVxcdGJvb2wgXFxcIlZlcmJvc2UgSUJTUyBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xOTYtXFxubmV0L21hYzgwMjExL0tjb25maWc6MTk3OmNvbmZpZyBNQUM4MDIxMV9QU19ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE5OC1cXHRib29sIFxcXCJWZXJib3NlIHBvd2Vyc2F2ZSBtb2RlIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIwOC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMDk6Y29uZmlnIE1BQzgwMjExX01QTF9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIxMC1cXHRib29sIFxcXCJWZXJib3NlIG1lc2ggcGVlciBsaW5rIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIyMS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMjI6Y29uZmlnIE1BQzgwMjExX01QQVRIX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMjIzLVxcdGJvb2wgXFxcIlZlcmJvc2UgbWVzaCBwYXRoIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIzNC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMzU6Y29uZmlnIE1BQzgwMjExX01IV01QX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMjM2LVxcdGJvb2wgXFxcIlZlcmJvc2UgbWVzaCBIV01QIHJvdXRpbmcgZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMjQ3LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI0ODpjb25maWcgTUFDODAyMTFfTUVTSF9TWU5DX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMjQ5LVxcdGJvb2wgXFxcIlZlcmJvc2UgbWVzaCBzeW5jaHJvbml6YXRpb24gZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMjU4LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI1OTpjb25maWcgTUFDODAyMTFfTUVTSF9DU0FfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNjAtXFx0Ym9vbCBcXFwiVmVyYm9zZSBtZXNoIGNoYW5uZWwgc3dpdGNoIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI2OS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNzA6Y29uZmlnIE1BQzgwMjExX01FU0hfUFNfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNzEtXFx0Ym9vbCBcXFwiVmVyYm9zZSBtZXNoIHBvd2Vyc2F2ZSBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yODAtXFxubmV0L21hYzgwMjExL0tjb25maWc6MjgxOmNvbmZpZyBNQUM4MDIxMV9URExTX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMjgyLVxcdGJvb2wgXFxcIlZlcmJvc2UgVERMUyBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yOTItXFxubmV0L21hYzgwMjExL0tjb25maWc6MjkzOmNvbmZpZyBNQUM4MDIxMV9ERUJVR19DT1VOVEVSU1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI5NC1cXHRib29sIFxcXCJFeHRyYSBzdGF0aXN0aWNzIGZvciBUWC9SWCBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0zMDctXFxubmV0L21hYzgwMjExL0tjb25maWc6MzA4OmNvbmZpZyBNQUM4MDIxMV9TVEFfSEFTSF9NQVhfU0laRVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTMwOS1cXHRpbnQgXFxcIlN0YXRpb24gaGFzaCB0YWJsZSBtYXhpbXVtIHNpemVcXFwiIGlmIE1BQzgwMjExX0RFQlVHX01FTlVcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMTg6MTA6MTQuMzY0NzgzMzA5WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjg4NzEzODU2MTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBIZXJlJ3MgaG93IEknZCBhcHByb2FjaCB0aGF0IGtlcm5lbCBjb25maWd1cmF0aW9uIGZpbGUgY2hlY2s6XG5cbioqRXhhbWluaW5nIE1BQzgwMjExIERlcGVuZGVuY2llcyoqXG5cbkFscmlnaHQsIGJlZm9yZSBJIGdldCB0b28gZGVlcCBpbnRvIHRoaXMgcHJvYmxlbSwgSSB3YW50IHRvIHRha2UgYSBsb29rIGF0IHRoZSBgbmV0L21hYzgwMjExL0tjb25maWdgIGZpbGUsIHNwZWNpZmljYWxseSBsaW5lcyAxIHRocm91Z2ggMjAuIFRoYXQncyB1c3VhbGx5IGEgZ29vZCBzdGFydGluZyBwb2ludCB0byB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMgYW5kIGNvcmUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgTUFDODAyMTEgd2lyZWxlc3Mgc3RhY2suIEknbSBleHBlY3RpbmcgdG8gc2VlIHRoaW5ncyBsaWtlIHBsYXRmb3JtIGRyaXZlcnMgdGhhdCBpdCByZWxpZXMgb24sIHZhcmlvdXMgZmVhdHVyZSBmbGFncywgYW5kIHBvdGVudGlhbGx5IGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBjb25maWd1cmF0aW9ucyBpbiB0aGF0IGluaXRpYWwgc2VjdGlvbi4gVGhpcydsbCBoZWxwIG1lIGJ1aWxkIGEgbWVudGFsIG1vZGVsIG9mIHRoZSByZXF1aXJlbWVudHMgYmVmb3JlIEkgc3RhcnQgZGlnZ2luZyBpbnRvIGFueSBwYXJ0aWN1bGFyIGlzc3VlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IG90aGVyIGNvbXBvbmVudHMgdGhlIE1BQzgwMjExIGxheWVyIGxpbmtzIHRvIHNvIEkgY2FuIGdldCBhIGZ1bGxlciBwaWN0dXJlIG9mIGl0cyByZWxhdGlvbnNoaXAgdG8gdGhlIHN5c3RlbSBhcyBhIHdob2xlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MDg0MywiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDE4OjEwOjIzLjIzNjE3MjM3OFoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDkyMjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L21hYzgwMjExL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMjVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdGNvbmZpZyBNQUM4MDIxMVxcbiAgIDM6XFx0XFx0dHJpc3RhdGUgXFxcIkdlbmVyaWMgSUVFRSA4MDIuMTEgTmV0d29ya2luZyBTdGFjayAobWFjODAyMTEpXFxcIlxcbiAgIDQ6XFx0XFx0ZGVwZW5kcyBvbiBDRkc4MDIxMVxcbiAgIDU6XFx0XFx0c2VsZWN0IENSWVBUT1xcbiAgIDY6XFx0XFx0c2VsZWN0IENSWVBUT19MSUJfQUVTX0NCQ19NQUNTXFxuICAgNzpcXHRcXHRzZWxlY3QgQ1JZUFRPX0xJQl9BUkM0XFxuICAgODpcXHRcXHRzZWxlY3QgQ1JZUFRPX0FFU1xcbiAgIDk6XFx0XFx0c2VsZWN0IENSWVBUT19DQ01cXG4gIDEwOlxcdFxcdHNlbGVjdCBDUllQVE9fR0NNXFxuICAxMTpcXHRcXHRzZWxlY3QgQ1JDMzJcXG4gIDEyOlxcdFxcdGhlbHBcXG4gIDEzOlxcdFxcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyB0aGUgaGFyZHdhcmUgaW5kZXBlbmRlbnQgSUVFRSA4MDIuMTFcXG4gIDE0OlxcdFxcdCAgbmV0d29ya2luZyBzdGFjay5cXG4gIDE1OlxcdFxcbiAgMTY6XFx0Y29tbWVudCBcXFwiQ0ZHODAyMTEgbmVlZHMgdG8gYmUgZW5hYmxlZCBmb3IgTUFDODAyMTFcXFwiXFxuICAxNzpcXHRcXHRkZXBlbmRzIG9uIENGRzgwMjExPW5cXG4gIDE4OlxcdFxcbiAgMTk6XFx0aWYgTUFDODAyMTEgIT0gblxcbiAgMjA6XFx0XFxuICAyMTpcXHRjb25maWcgTUFDODAyMTFfSEFTX1JDXFxuICAyMjpcXHRcXHRib29sXFxuICAyMzpcXHRcXG4gIDI0OlxcdGNvbmZpZyBNQUM4MDIxMV9SQ19NSU5TVFJFTFxcbiAgMjU6XFx0XFx0Ym9vbCBcXFwiTWluc3RyZWxcXFwiIGlmIEVYUEVSVFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQxODoxMDoyMy4yMzYyODM2MzhaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjE5NzQ4MjEyNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSB0aGUgb25lIHRoaW5raW5nIGl0OlxuXG4qKkRpZ2dpbmcgRGVlcGVyOiBDRkc4MDIxMSBEZXBlbmRlbmNpZXMqKlxuXG5Pa2F5LCBzbyB3ZSd2ZSBiZWVuIGxvb2tpbmcgYXQgdGhpcyBpc3N1ZSBmcm9tIGEgZmV3IGFuZ2xlcywgYW5kIEkgdGhpbmsgd2UgbmVlZCB0byBicm9hZGVuIG91ciBzY29wZSBqdXN0IGEgYml0LiBXaGlsZSB0aGUgaW5pdGlhbCBmb2N1cyB3YXMgW29yaWdpbmFsIHByb2JsZW0gYXJlYSwgaWYgZ2l2ZW4gaW4gdGhlIGNvbnRleHRdLCBpdCdzIGFsc28gd29ydGggY2hlY2tpbmcgdGhlIGBDRkc4MDIxMWAgZGVwZW5kZW5jaWVzLiBJdCdzIGEga2V5IGNvbXBvbmVudCBpbiB0aGUgd2lyZWxlc3Mgc3RhY2ssIGFuZCBhIHBvdGVudGlhbCBoaWNjdXAgdGhlcmUgY291bGQgZWFzaWx5IGJlIGNhdXNpbmcgdGhlc2Ugc3ltcHRvbXMsIGVpdGhlciBkaXJlY3RseSBvciBpbmRpcmVjdGx5LiBJdCdzIHRoZSBzb3J0IG9mIGRldGFpbCB0aGF0IGNhbiBnZXQgb3Zlcmxvb2tlZCBpbiB0aGUgYmlnZ2VyIHBpY3R1cmUsIGJ1dCBJJ3ZlIGxlYXJuZWQgdGhhdCBvdmVybG9va2luZyBpdCBpcyBub3QgYSBsdXh1cnkgSSBjYW4gYWZmb3JkIGF0IHRoaXMgcG9pbnQuIFRpbWUgdG8gdGFrZSBhIGNsb3NlciBsb29rIGF0IHRoYXQgbW9kdWxlIGFuZCBpdHMgaW50ZXJhY3Rpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MTQ1MiwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMTg6MTA6MjUuNDMzNzY4ODMzWiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjE2NTI1NzA5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBDRkc4MDIxMVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvd2lyZWxlc3NcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3dpcmVsZXNzL0tjb25maWc9MTQ9Y29uZmlnIFdFWFRfUFJJVlxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTYtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6MTc6Y29uZmlnIENGRzgwMjExXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTgtXFx0dHJpc3RhdGUgXFxcImNmZzgwMjExIC0gd2lyZWxlc3MgY29uZmlndXJhdGlvbiBBUElcXFwiXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZz0zOD1jb25maWcgTkw4MDIxMV9URVNUTU9ERVxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctNTEtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6NTI6Y29uZmlnIENGRzgwMjExX0RFVkVMT1BFUl9XQVJOSU5HU1xcbm5ldC93aXJlbGVzcy9LY29uZmlnLTUzLVxcdGJvb2wgXFxcImVuYWJsZSBkZXZlbG9wZXIgd2FybmluZ3NcXFwiXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy02Ny1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzo2ODpjb25maWcgQ0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTXFxubmV0L3dpcmVsZXNzL0tjb25maWctNjktXFx0Ym9vbCBcXFwiY2ZnODAyMTEgY2VydGlmaWNhdGlvbiBvbnVzXFxcIlxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctODgtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6ODk6Y29uZmlnIENGRzgwMjExX1JFUVVJUkVfU0lHTkVEX1JFR0RCXFxubmV0L3dpcmVsZXNzL0tjb25maWctOTAtXFx0Ym9vbCBcXFwicmVxdWlyZSByZWdkYiBzaWduYXR1cmVcXFwiIGlmIENGRzgwMjExX0NFUlRJRklDQVRJT05fT05VU1xcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctOTgtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6OTk6Y29uZmlnIENGRzgwMjExX1VTRV9LRVJORUxfUkVHREJfS0VZU1xcbm5ldC93aXJlbGVzcy9LY29uZmlnLTEwMC1cXHRib29sIFxcXCJhbGxvdyByZWdkYiBrZXlzIHNoaXBwZWQgd2l0aCB0aGUga2VybmVsXFxcIiBpZiBDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTExMC1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxMTE6Y29uZmlnIENGRzgwMjExX0VYVFJBX1JFR0RCX0tFWURJUlxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTExMi1cXHRzdHJpbmcgXFxcImFkZGl0aW9uYWwgcmVnZGIga2V5IGRpcmVjdG9yeVxcXCIgaWYgQ0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMjEtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6MTIyOmNvbmZpZyBDRkc4MDIxMV9SRUdfQ0VMTFVMQVJfSElOVFNcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMjMtXFx0Ym9vbCBcXFwiY2ZnODAyMTEgcmVndWxhdG9yeSBzdXBwb3J0IGZvciBjZWxsdWxhciBiYXNlIHN0YXRpb24gaGludHNcXFwiXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMzQtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6MTM1OmNvbmZpZyBDRkc4MDIxMV9SRUdfUkVMQVhfTk9fSVJcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMzYtXFx0Ym9vbCBcXFwiY2ZnODAyMTEgc3VwcG9ydCBmb3IgTk9fSVIgcmVsYXhhdGlvblxcXCJcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE1OC1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxNTk6Y29uZmlnIENGRzgwMjExX0RFRkFVTFRfUFNcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNjAtXFx0Ym9vbCBcXFwiZW5hYmxlIHBvd2Vyc2F2ZSBieSBkZWZhdWx0XFxcIlxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTY4LVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjE2OTpjb25maWcgQ0ZHODAyMTFfREVCVUdGU1xcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE3MC1cXHRib29sIFxcXCJjZmc4MDIxMSBEZWJ1Z0ZTIGVudHJpZXNcXFwiXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNzYtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6MTc3OmNvbmZpZyBDRkc4MDIxMV9DUkRBX1NVUFBPUlRcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNzgtXFx0Ym9vbCBcXFwic3VwcG9ydCBDUkRBXFxcIiBpZiBFWFBFUlRcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE4Ni1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxODc6Y29uZmlnIENGRzgwMjExX1dFWFRcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xODgtXFx0Ym9vbCBcXFwiY2ZnODAyMTEgd2lyZWxlc3MgZXh0ZW5zaW9ucyBjb21wYXRpYmlsaXR5XFxcIlxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTkzLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjE5NDpjb25maWcgQ0ZHODAyMTFfS1VOSVRfVEVTVFxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE5NS1cXHR0cmlzdGF0ZSBcXFwiS1VuaXQgdGVzdHMgZm9yIGNmZzgwMjExXFxcIiBpZiAhS1VOSVRfQUxMX1RFU1RTXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDE4OjEwOjI3LjA1MDI5ODgyMloiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozODUwNjEzNzQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgZGVwZW5kZW5jaWVzLCBhcyBpZiBJIHdlcmUgdGhpbmtpbmcgaXQ6XG5cbioqRGlnZ2luZyBpbnRvIEFUSDExSyBEZXBlbmRlbmNpZXMqKlxuXG5Pa2F5LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eSB3aXRoIGBBVEgxMUtgLiBGaXJzdCB0aGluZ3MgZmlyc3QsIGxldCdzIG5haWwgZG93biB0aG9zZSBkZXBlbmRlbmNpZXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdGhpcyB0aGluZyBpcyBsZWFuaW5nIG9uIHRvIG1ha2Ugc3VyZSBJIGRvbid0IG1pc3MgYW55dGhpbmcgY3J1Y2lhbC4gSSdtIHRoaW5raW5nIGRyaXZlcnMsIGZpcm13YXJlIHZlcnNpb25zLCBzcGVjaWZpYyBoYXJkd2FyZSByZXZpc2lvbnMg4oCTIHRoZSB3aG9sZSBzaGViYW5nLiBMZXQncyBzdGFydCBtYXBwaW5nIG91dCB0aGUgcmVsYXRpb25zaGlwcywgcGllY2UgYnkgcGllY2UsIHNvIEkgY2FuIGhhdmUgYSBjb21wbGV0ZSBwaWN0dXJlIG9mIGl0cyBlY29zeXN0ZW0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQyNTk0LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMTg6MTA6MzAuOTAwOTE3NzcxWiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2ODQ1NDE3OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQVRIMTFLXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWtcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnOjI6Y29uZmlnIEFUSDExS1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJRdWFsY29tbSA4MDIuMTFheCBjaGlwc2V0IHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWctMTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnOjEzOmNvbmZpZyBBVEgxMUtfQUhCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTE0LVxcdHRyaXN0YXRlIFxcXCJBdGhlcm9zIGF0aDExayBBSEIgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZy0xOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWc6MjA6Y29uZmlnIEFUSDExS19QQ0lcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWctMjEtXFx0dHJpc3RhdGUgXFxcIkF0aGVyb3MgYXRoMTFrIFBDSSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTI5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZzozMDpjb25maWcgQVRIMTFLX0RFQlVHXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTMxLVxcdGJvb2wgXFxcIlFDQSBhdGgxMWsgZGVidWdnaW5nXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTM3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZzozODpjb25maWcgQVRIMTFLX0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWctMzktXFx0Ym9vbCBcXFwiUUNBIGF0aDExayBkZWJ1Z2ZzIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWctNDUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnOjQ2OmNvbmZpZyBBVEgxMUtfVFJBQ0lOR1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZy00Ny1cXHRib29sIFxcXCJhdGgxMWsgdHJhY2luZyBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTUxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZzo1Mjpjb25maWcgQVRIMTFLX1NQRUNUUkFMXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTUzLVxcdGJvb2wgXFxcIlFDQSBhdGgxMWsgc3BlY3RyYWwgc2NhbiBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTYwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZzo2MTpjb25maWcgQVRIMTFLX0NGUlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZy02Mi1cXHRib29sIFxcXCJhdGgxMWsgY2hhbm5lbCBmcmVxdWVuY3kgcmVzcG9uc2Ugc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMTg6MTA6MzAuOTY5Mzc3MDZaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjU4NjkwNDExMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIGlmIEkgd2VyZSB0aGlua2luZyB0aGVzZSB0aG91Z2h0czpcblxuKipFeGFtaW5pbmcgdGhlIEF0aDExayBLY29uZmlnIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCB0aW1lIHRvIGRpdmUgaW50byB0aGUgQXRoZXJvcyAxMWsgZHJpdmVyJ3MgY29uZmlndXJhdGlvbi4gTGV0J3Mgc3RhcnQgYnkgc2NydXRpbml6aW5nIHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnYCBmaWxlLCBzcGVjaWZpY2FsbHkgdGhlIGZpcnN0IDI1IGxpbmVzLiBUaGlzIHVzdWFsbHkgY29udGFpbnMgdGhlIGNvcmUgc2VsZWN0aW9uIG9wdGlvbnMsIGFueSBkZXBlbmRlbmNpZXMgb24gb3RoZXIgc3Vic3lzdGVtcywgYW5kIHBvdGVudGlhbGx5IHNvbWUgYmFzaWMgZGVmYXVsdCBzZXR0aW5ncy4gSSdtIGxvb2tpbmcgZm9yIHRoZSBmb3VuZGF0aW9uYWwgYnVpbGRpbmcgYmxvY2tzIG9mIGhvdyB0aGlzIGRyaXZlciBpcyBjb25maWd1cmVkIHdpdGhpbiB0aGUga2VybmVsLiBJIGV4cGVjdCB0byBzZWUgdGhlIG1haW4gZHJpdmVyIGVuYWJsZS9kaXNhYmxlIG9wdGlvbiwgbGlrZWx5IGBDT05GSUdfQVRIMTFLYCwgYW5kIGl0cyBkZXBlbmRlbmNpZXMgb24gY29yZSB3aXJlbGVzcyBpbmZyYXN0cnVjdHVyZSBsaWtlIHRoZSBjZmc4MDIxMSBsYXllciwgbWFjODAyMTEsIGFuZCB0aGUgYXRoIG1vZHVsZSBpbiBnZW5lcmFsLiBJ4oCZbGwgYmUgcGF5aW5nIGNsb3NlIGF0dGVudGlvbiB0byBhbnkgY29uZGl0aW9uYWwgZGVwZW5kZW5jaWVzIHRoYXQgbWlnaHQgcmVxdWlyZSBhIHNwZWNpZmljIGhhcmR3YXJlIHBsYXRmb3JtIG9yIGZpcm13YXJlIHZlcnNpb24uIFVuZGVyc3RhbmRpbmcgdGhpcyBpbml0aWFsIHNlY3Rpb24gd2lsbCBwYWludCBhIGNsZWFyIHBpY3R1cmUgb2YgaG93IHRvIGVuYWJsZSwgZGlzYWJsZSwgYW5kIHRhaWxvciB0aGUgQXRoMTFrIGRyaXZlcidzIGZ1bmN0aW9uYWxpdHkgYXQgY29tcGlsZSB0aW1lLiBJdOKAmXMgdGhlIHN0YXJ0aW5nIHBvaW50IGZvciB1bmRlcnN0YW5kaW5nIGhvdyB0aGUgdXNlciBjYW4gZXZlbiBjaG9vc2UgdG8gZW5hYmxlIHRoaXMgZHJpdmVyIG9yIG5vdC4gQW55IGluaXRpYWwgYXNzdW1wdGlvbnMgb3IgY29uZmlndXJhdGlvbnMgd2lsbCBsaWtlbHkgYmUgc2V0IGluIHRoZXNlIGZpcnN0IDI1IGxpbmVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MzQ0NCwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDE4OjEwOjMzLjU1NjI4NDAwM1oiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1ODExMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMjVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcXG4gICAyOlxcdGNvbmZpZyBBVEgxMUtcXG4gICAzOlxcdFxcdHRyaXN0YXRlIFxcXCJRdWFsY29tbSA4MDIuMTFheCBjaGlwc2V0IHN1cHBvcnRcXFwiXFxuICAgNDpcXHRcXHRkZXBlbmRzIG9uIE1BQzgwMjExIFxcdTAwMjZcXHUwMDI2IEhBU19ETUFcXG4gICA1OlxcdFxcdHNlbGVjdCBBVEhfQ09NTU9OXFxuICAgNjpcXHRcXHRzZWxlY3QgUUNPTV9RTUlfSEVMUEVSU1xcbiAgIDc6XFx0XFx0aGVscFxcbiAgIDg6XFx0XFx0ICBUaGlzIG1vZHVsZSBhZGRzIHN1cHBvcnQgZm9yIFF1YWxjb21tIFRlY2hub2xvZ2llcyA4MDIuMTFheCBmYW1pbHkgb2ZcXG4gICA5OlxcdFxcdCAgY2hpcHNldHMuXFxuICAxMDpcXHRcXG4gIDExOlxcdFxcdCAgSWYgeW91IGNob29zZSB0byBidWlsZCBhIG1vZHVsZSwgaXQnbGwgYmUgY2FsbGVkIGF0aDExay5cXG4gIDEyOlxcdFxcbiAgMTM6XFx0Y29uZmlnIEFUSDExS19BSEJcXG4gIDE0OlxcdFxcdHRyaXN0YXRlIFxcXCJBdGhlcm9zIGF0aDExayBBSEIgc3VwcG9ydFxcXCJcXG4gIDE1OlxcdFxcdGRlcGVuZHMgb24gQVRIMTFLXFxuICAxNjpcXHRcXHRkZXBlbmRzIG9uIFJFTU9URVBST0NcXG4gIDE3OlxcdFxcdGhlbHBcXG4gIDE4OlxcdFxcdCAgVGhpcyBtb2R1bGUgYWRkcyBzdXBwb3J0IGZvciBBSEIgYnVzXFxuICAxOTpcXHRcXG4gIDIwOlxcdGNvbmZpZyBBVEgxMUtfUENJXFxuICAyMTpcXHRcXHR0cmlzdGF0ZSBcXFwiQXRoZXJvcyBhdGgxMWsgUENJIHN1cHBvcnRcXFwiXFxuICAyMjpcXHRcXHRkZXBlbmRzIG9uIEFUSDExSyBcXHUwMDI2XFx1MDAyNiBQQ0lcXG4gIDIzOlxcdFxcdHNlbGVjdCBNSElfQlVTXFxuICAyNDpcXHRcXHRzZWxlY3QgUVJUUlxcbiAgMjU6XFx0XFx0c2VsZWN0IFFSVFJfTUhJXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDE4OjEwOjMzLjU1NjM0MzYzM1oiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo3OTM0MzQ4OTkxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZvY3VzaW5nIG9uIEFpcnRpbWUgUXVldWUgTGltaXRzOiBBIERlZXAgRGl2ZSoqXG5cbk9rYXksIGxldCdzIG5haWwgZG93biB0aGVzZSBGb2N1c1N5bWJvbHMuIE15IGluaXRpYWwgcGFzcyBoYXMgaWRlbnRpZmllZCBhIGZldyBrZXkgZnVuY3Rpb25zIHRoYXQgaGF2ZSBiZWVuIG1vZGlmaWVkIG9yIGFkZGVkOlxuXG4xLiAgYGllZWU4MDIxMV9hcWxfc3RhX2xpbWl0YCAoc3RhdGljLCBpbiBgbmV0L21hYzgwMjExL3R4LmNgKVxuMi4gIGBpZWVlODAyMTFfdHhxX2FpcnRpbWVfY2hlY2tgIChpbiBgbmV0L21hYzgwMjExL3R4LmNgKVxuMy4gIGBpZWVlODAyMTFfdHhfZGVxdWV1ZWAgKGNhbGxzIGBpZWVlODAyMTFfdHhxX2FpcnRpbWVfY2hlY2tgLCBpbiBgbmV0L21hYzgwMjExL3R4LmNgKVxuNC4gIGBpZWVlODAyMTFfbmV4dF90eHFgIChhbHNvIGNhbGxzIGBpZWVlODAyMTFfdHhxX2FpcnRpbWVfY2hlY2tgLCBpbiBgbmV0L21hYzgwMjExL3R4LmNgKVxuNS4gIGBfX2F0aDExa19tYWNfcmVnaXN0ZXJgIChpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuY2ApXG5cbk5vdywgYSBxdWljayBjaGVjayBvbiB0aGUgc3RhdGljIG5hdHVyZSBvZiBgaWVlZTgwMjExX2FxbF9zdGFfbGltaXRgLi4uIEFoLCB5ZXMsIGl0J3Mgc3RhdGljLiBCdXQsIGNyaXRpY2FsbHksIGBpZWVlODAyMTFfdHhxX2FpcnRpbWVfY2hlY2tgIGlzIGV4cG9ydGVkLCBhcyBhcmUgYGllZWU4MDIxMV90eF9kZXF1ZXVlYCBhbmQgYGllZWU4MDIxMV9uZXh0X3R4cWAuIFRoaXMgbWVhbnMgdGhlIGFpcnRpbWUgY2hlY2tpbmcgaXMgZGVmaW5pdGVseSBleHBvc2VkLiBUaGUgY2FsY3VsYXRpb24gYW5kIHJlbGF0ZWQgY2FsbHMgd2VyZSBjaGFuZ2VkIGluIGBpZWVlODAyMTFfdHhxX2FpcnRpbWVfY2hlY2tgLCBzbyBpdCdzIGEgcHJpbWUgdGFyZ2V0LiBTaW5jZSBgaWVlZTgwMjExX2FxbF9zdGFfbGltaXRgIGlzIGEgc3RhdGljIEMgZnVuY3Rpb24sIGl0J3MgbGlrZWx5IHRvIGJlIGlubGluZWQgaW50byBgaWVlZTgwMjExX3R4cV9haXJ0aW1lX2NoZWNrYCwgc28gaXQncyBhbHNvIHdvcnRoIGV4YW1pbmluZy5cblxuVGhlcmVmb3JlLCBgaWVlZTgwMjExX3R4cV9haXJ0aW1lX2NoZWNrYCBiZWNvbWVzIGEga2V5IGZvY3VzIHN5bWJvbCwgYWxvbmcgd2l0aCBgaWVlZTgwMjExX25leHRfdHhxYCwgYGllZWU4MDIxMV90eF9kZXF1ZXVlYCwgYW5kIGBfX2F0aDExa19tYWNfcmVnaXN0ZXJgLlxuXG5OZXh0LCBJIG5lZWQgdG8gY2hlY2sgdGhlIEVuYWJsZUNvbmZpZ3MuIFRoZSByZWxldmFudCBvbmVzIHNlZW0gdG8gYmU6XG5cbiogICBgTUFDODAyMTFgXG4qICAgYENGRzgwMjExYCAocGFyZW50KVxuKiAgIGBBVEgxMUtgXG5cbkkgc2hvdWxkIHNlZSBpZiBgTUFDODAyMTFfREVCVUdGU2AsIGBBVEgxMUtfUENJYCAvIGBBVEgxMUtfQUhCYCwgb3IgYE1BQzgwMjExX0hXU0lNYCBhcmUgcmVsZXZhbnQuIGBNQUM4MDIxMWAgaXMgdGhlIGNvcmUsIGBDRkc4MDIxMWAgaXMgaXRzIHBhcmVudC4gYEFUSDExS2Agc2VlbXMgdG8gaGFuZGxlIHRoZSBkcml2ZXIgc2lkZSwgY29tcGlsaW5nIGBhdGgxMWsvbWFjLmNgLiAgYE1BQzgwMjExX0RFQlVHRlNgIGlzIHdvcnRoIGluY2x1ZGluZy5cblxuTGV0J3MgZG8gYSBmaW5hbCBzYW5pdHkgY2hlY2ssIGVuc3VyaW5nIGV2ZXJ5dGhpbmcgaXMgYXMgZXhwZWN0ZWQ6XG5cbiogICBgV29ydGhGdXp6aW5nOiB0cnVlYCAtIEdvb2QuXG4qICAgYEVuYWJsZUNvbmZpZ3NgOiBgW1wiTUFDODAyMTFcIiwgXCJDRkc4MDIxMVwiLCBcIkFUSDExS1wiLCBcIk1BQzgwMjExX0RFQlVHRlNcIl1gIC0gWWVwLCBhbGwgc2V0LlxuKiAgIGBGb2N1c1N5bWJvbHNgOiBgW1wiaWVlZTgwMjExX3R4cV9haXJ0aW1lX2NoZWNrXCIsIFwiaWVlZTgwMjExX2FxbF9zdGFfbGltaXRcIiwgXCJpZWVlODAyMTFfbmV4dF90eHFcIiwgXCJpZWVlODAyMTFfdHhfZGVxdWV1ZVwiLCBcIl9fYXRoMTFrX21hY19yZWdpc3RlclwiXWAgLSBDb25zaXN0ZW50LlxuXG5KdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgbGV0J3MgdmVyaWZ5IGFsbCB0aGUgc3ltYm9sIG5hbWVzOlxuXG4qICAgYGllZWU4MDIxMV90eHFfYWlydGltZV9jaGVja2AgKG5ldC9tYWM4MDIxMS90eC5jKVxuKiAgIGBpZWVlODAyMTFfYXFsX3N0YV9saW1pdGAgKG5ldC9tYWM4MDIxMS90eC5jKVxuKiAgIGBpZWVlODAyMTFfbmV4dF90eHFgIChuZXQvbWFjODAyMTEvdHguYylcbiogICBgaWVlZTgwMjExX3R4X2RlcXVldWVgIChuZXQvbWFjODAyMTEvdHguYylcbiogICBgX19hdGgxMWtfbWFjX3JlZ2lzdGVyYCAoZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYylcblxuVGhlIHJlYXNvbmluZyBzZWVtcyBzb3VuZDogVGhpcyBwYXRjaCBpbnRyb2R1Y2VzXG5cbiIsIklucHV0VG9rZW5zIjo0NDEyMiwiT3V0cHV0VG9rZW5zIjoyNjMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTI4LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMTg6MTA6NDEuNDkwNjk2MjM0WiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM2OTI3NjY3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJNQUM4MDIxMVwiLFxuICAgIFwiQ0ZHODAyMTFcIixcbiAgICBcIkFUSDExS1wiLFxuICAgIFwiTUFDODAyMTFfREVCVUdGU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImllZWU4MDIxMV90eHFfYWlydGltZV9jaGVja1wiLFxuICAgIFwiaWVlZTgwMjExX2FxbF9zdGFfbGltaXRcIixcbiAgICBcImllZWU4MDIxMV9uZXh0X3R4cVwiLFxuICAgIFwiaWVlZTgwMjExX3R4X2RlcXVldWVcIixcbiAgICBcIl9fYXRoMTFrX21hY19yZWdpc3RlclwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGludHJvZHVjZXMgdGhlIElFRUU4MDIxMV9IV19UWF9OT19QVVNIQkFDSyBoYXJkd2FyZSBmbGFnIGFuZCBhZGRzIHN0YXRpb24gYWlydGltZSBxdWV1ZSBsaW1pdCBjYWxjdWxhdGlvbiAoaWVlZTgwMjExX2FxbF9zdGFfbGltaXQpIHRvIHRoZSBtYWM4MDIxMSBUWCBxdWV1ZSBhaXJ0aW1lIGNoZWNrIChpZWVlODAyMTFfdHhxX2FpcnRpbWVfY2hlY2spLiBUaGUgbWFjODAyMTEgc3Vic3lzdGVtIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIG1hYzgwMjExX2h3c2ltIGFuZCBubDgwMjExIGludGVyZmFjZXMsIG1ha2luZyB0aGVzZSBxdWV1ZSBzY2hlZHVsaW5nIGFuZCBhaXJ0aW1lIGNhbGN1bGF0aW9uIGNoYW5nZXMgd29ydGggZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJNQUM4MDIxMVwiLFxuICAgIFwiQ0ZHODAyMTFcIixcbiAgICBcIkFUSDExS1wiLFxuICAgIFwiTUFDODAyMTFfREVCVUdGU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImllZWU4MDIxMV90eHFfYWlydGltZV9jaGVja1wiLFxuICAgIFwiaWVlZTgwMjExX2FxbF9zdGFfbGltaXRcIixcbiAgICBcImllZWU4MDIxMV9uZXh0X3R4cVwiLFxuICAgIFwiaWVlZTgwMjExX3R4X2RlcXVldWVcIixcbiAgICBcIl9fYXRoMTFrX21hY19yZWdpc3RlclwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGludHJvZHVjZXMgdGhlIElFRUU4MDIxMV9IV19UWF9OT19QVVNIQkFDSyBoYXJkd2FyZSBmbGFnIGFuZCBhZGRzIHN0YXRpb24gYWlydGltZSBxdWV1ZSBsaW1pdCBjYWxjdWxhdGlvbiAoaWVlZTgwMjExX2FxbF9zdGFfbGltaXQpIHRvIHRoZSBtYWM4MDIxMSBUWCBxdWV1ZSBhaXJ0aW1lIGNoZWNrIChpZWVlODAyMTFfdHhxX2FpcnRpbWVfY2hlY2spLiBUaGUgbWFjODAyMTEgc3Vic3lzdGVtIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIG1hYzgwMjExX2h3c2ltIGFuZCBubDgwMjExIGludGVyZmFjZXMsIG1ha2luZyB0aGVzZSBxdWV1ZSBzY2hlZHVsaW5nIGFuZCBhaXJ0aW1lIGNhbGN1bGF0aW9uIGNoYW5nZXMgd29ydGggZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMTg6MTA6NDEuNjI3NjMzMTExWiIsIlNlcSI6MjksIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzIzNjAxNjA0NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDE4OjEwOjQxLjYyODQ0NzQyMVoiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjEzMjM1MTk3MjM0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIHRoZSBgSUVFRTgwMjExX0hXX1RYX05PX1BVU0hCQUNLYCBoYXJkd2FyZSBmbGFnIGZvciBtYWM4MDIxMS9hdGgxMWsgYW5kIGFkanVzdHMgc3RhdGlvbiBBaXJ0aW1lIFF1ZXVlIExpbWl0IChBUUwpIGNhbGN1bGF0aW9ucyBiYXNlZCBvbiBzdGF0aW9uIGFpcnRpbWUgd2VpZ2h0IHdoZW4gdGhpcyBmbGFnIGlzIGVuYWJsZWQuXFxuXFxuQWxsIHN0cnVjdCBmaWVsZHMgYWNjZXNzZWQgKHN1Y2ggYXMgYHN0YS1cXHUwMDNlYWlydGltZV93ZWlnaHRgLCBgbG9jYWwtXFx1MDAzZWFxbF90aHJlc2hvbGRgLCBhbmQgYHN0YS1cXHUwMDNlYWlydGltZVtdLmFxbF9saW1pdF8qYCkgYXJlIHN0YW5kYXJkIGludGVnZXIgZmllbGRzIGluaXRpYWxpemVkIGR1cmluZyBzdGF0aW9uIGNyZWF0aW9uIGFuZCBkcml2ZXIgY29uZmlndXJhdGlvbi4gTG9jYWwgdmFyaWFibGVzIGluIHRoZSBuZXcgY2FsY3VsYXRpb24gaGVscGVyIGBpZWVlODAyMTFfYXFsX3N0YV9saW1pdCgpYCBhcmUgZXhwbGljaXRseSBhc3NpZ25lZCBiZWZvcmUgdXNlLiBObyBoZWFwL3N0YWNrIGFsbG9jYXRpb25zLCBtZW1vcnkgY29weSBvcGVyYXRpb25zIHRvIHVzZXIgc3BhY2UsIG9yIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzIGFyZSBpbnRyb2R1Y2VkIG9yIG1vZGlmaWVkLlxcblxcblRoZXJlZm9yZSwgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgaXMgbm90IG5lZWRlZDsgYW55IHN0YW5kYXJkIGNvbmN1cnJlbmN5IG9yIGxvZ2ljIGlzc3VlcyBhcmUgY292ZXJlZCBieSBzdGFuZGFyZCBLQVNBTi9rZXJuZWwgZGVidWdnaW5nIHRvb2xzLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDExMTY1MWIxNTZmYzIxOTY2NjVkZGRmOWRiNjJiZWFjNjc3MTU1MDRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIFNlcCA4IDE4OjA5OjI3IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmNcbmluZGV4IDJkNTVjZGM0ZDE2NWQuLjg3ZTYwNjJjNTU1MDkgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jXG5AQCAtMTA0OTQsNiArMTA0OTQsNyBAQCBzdGF0aWMgaW50IF9fYXRoMTFrX21hY19yZWdpc3RlcihzdHJ1Y3QgYXRoMTFrICphcilcbiBcbiBcdGllZWU4MDIxMV9od19zZXQoYXItXHUwMDNlaHcsIFNJR05BTF9EQk0pO1xuIFx0aWVlZTgwMjExX2h3X3NldChhci1cdTAwM2VodywgU1VQUE9SVFNfUFMpO1xuK1x0aWVlZTgwMjExX2h3X3NldChhci1cdTAwM2VodywgVFhfTk9fUFVTSEJBQ0spO1xuIFx0aWVlZTgwMjExX2h3X3NldChhci1cdTAwM2VodywgU1VQUE9SVFNfRFlOQU1JQ19QUyk7XG4gXHRpZWVlODAyMTFfaHdfc2V0KGFyLVx1MDAzZWh3LCBNRlBfQ0FQQUJMRSk7XG4gXHRpZWVlODAyMTFfaHdfc2V0KGFyLVx1MDAzZWh3LCBSRVBPUlRTX1RYX0FDS19TVEFUVVMpO1xuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L21hYzgwMjExLmggYi9pbmNsdWRlL25ldC9tYWM4MDIxMS5oXG5pbmRleCA3YmI0NjE4MDY1YjY3Li44MDM4MWM3YWJkODRhIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9uZXQvbWFjODAyMTEuaFxuKysrIGIvaW5jbHVkZS9uZXQvbWFjODAyMTEuaFxuQEAgLTMwODYsNiArMzA4NiwxMiBAQCBzdHJ1Y3QgaWVlZTgwMjExX3R4cSB7XG4gICogQElFRUU4MDIxMV9IV19TVVBQT1JUU19ORFBfQkxPQ0tBQ0s6IEhXIGNhbiB0cmFuc21pdC9yZWNlaXZlIFMxRyBORFBcbiAgKlx0QmxvY2tBY2sgZnJhbWVzLlxuICAqXG4rICogQElFRUU4MDIxMV9IV19UWF9OT19QVVNIQkFDSzogVGhlIGRyaXZlciBoYW5kcyBldmVyeSBmcmFtZSBpdCBkZXF1ZXVlc1xuKyAqXHR0byB0aGUgaGFyZHdhcmUgYXQgb25jZSwgYW5kIHRoZSBoYXJkd2FyZSBwaWNrcyB0aGUgc3RhdGlvbiBpdCBzZXJ2ZXNcbisgKlx0bmV4dCwgc28gdGhlIG9yZGVyIGluIHdoaWNoIG1hYzgwMjExIHNjaGVkdWxlcyB0aGUgcXVldWVzIGRvZXMgbm90XG4rICpcdHJlYWNoIHRoZSBhaXIuIG1hYzgwMjExIHRoZW4gYXBwbGllcyB0aGUgYWlydGltZSB3ZWlnaHQgdG8gdGhlXG4rICpcdGFpcnRpbWUgcXVldWUgbGltaXQgaW5zdGVhZC5cbisgKlxuICAqIEBOVU1fSUVFRTgwMjExX0hXX0ZMQUdTOiBudW1iZXIgb2YgaGFyZHdhcmUgZmxhZ3MsIHVzZWQgZm9yIHNpemluZyBhcnJheXNcbiAgKi9cbiBlbnVtIGllZWU4MDIxMV9od19mbGFncyB7XG5AQCAtMzE0Nyw2ICszMTUzLDcgQEAgZW51bSBpZWVlODAyMTFfaHdfZmxhZ3Mge1xuIFx0SUVFRTgwMjExX0hXX0hBTkRMRVNfUVVJRVRfQ1NBLFxuIFx0SUVFRTgwMjExX0hXX1NUUklDVCxcbiBcdElFRUU4MDIxMV9IV19TVVBQT1JUU19ORFBfQkxPQ0tBQ0ssXG4rXHRJRUVFODAyMTFfSFdfVFhfTk9fUFVTSEJBQ0ssXG4gXG4gXHQvKiBrZWVwIGxhc3QsIG9idmlvdXNseSAqL1xuIFx0TlVNX0lFRUU4MDIxMV9IV19GTEFHU1xuZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxMS9kZWJ1Z2ZzLmMgYi9uZXQvbWFjODAyMTEvZGVidWdmcy5jXG5pbmRleCA4OTQ2YjAyNzc4MmNmLi5kZGJmYTk5MWVjNzRlIDEwMDY0NFxuLS0tIGEvbmV0L21hYzgwMjExL2RlYnVnZnMuY1xuKysrIGIvbmV0L21hYzgwMjExL2RlYnVnZnMuY1xuQEAgLTQ2Miw2ICs0NjIsNyBAQCBzdGF0aWMgY29uc3QgY2hhciAqaHdfZmxhZ19uYW1lc1tdID0ge1xuIFx0RkxBRyhIQU5ETEVTX1FVSUVUX0NTQSksXG4gXHRGTEFHKFNUUklDVCksXG4gXHRGTEFHKFNVUFBPUlRTX05EUF9CTE9DS0FDSyksXG4rXHRGTEFHKFRYX05PX1BVU0hCQUNLKSxcbiAjdW5kZWYgRkxBR1xuIH07XG4gXG5kaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjExL3R4LmMgYi9uZXQvbWFjODAyMTEvdHguY1xuaW5kZXggYzMzMDkyOTYwZGYyNi4uYzk0ZWZmZjQ4ZDc0NyAxMDA2NDRcbi0tLSBhL25ldC9tYWM4MDIxMS90eC5jXG4rKysgYi9uZXQvbWFjODAyMTEvdHguY1xuQEAgLTQyMTcsNiArNDIxNywyMSBAQCBFWFBPUlRfU1lNQk9MKF9faWVlZTgwMjExX3NjaGVkdWxlX3R4cSk7XG4gXG4gREVGSU5FX1NUQVRJQ19LRVlfRkFMU0UoYXFsX2Rpc2FibGUpO1xuIFxuK3N0YXRpYyB1MzIgaWVlZTgwMjExX2FxbF9zdGFfbGltaXQoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXG4rXHRcdFx0XHQgICBzdHJ1Y3Qgc3RhX2luZm8gKnN0YSwgdTMyIGxpbWl0KVxuK3tcbitcdHUzMiBzY2FsZWQ7XG4rXG4rXHRpZiAoIWllZWU4MDIxMV9od19jaGVjayhcdTAwMjZsb2NhbC1cdTAwM2VodywgVFhfTk9fUFVTSEJBQ0spIHx8XG4rXHQgICAgc3RhLVx1MDAzZWFpcnRpbWVfd2VpZ2h0ID09IElFRUU4MDIxMV9ERUZBVUxUX0FJUlRJTUVfV0VJR0hUKVxuK1x0XHRyZXR1cm4gbGltaXQ7XG4rXG4rXHRzY2FsZWQgPSBtdWx0X2ZyYWMobGltaXQsIHN0YS1cdTAwM2VhaXJ0aW1lX3dlaWdodCxcbitcdFx0XHQgICBJRUVFODAyMTFfREVGQVVMVF9BSVJUSU1FX1dFSUdIVCk7XG4rXG4rXHRyZXR1cm4gbWluKHNjYWxlZCwgbWF4KGxpbWl0LCBsb2NhbC1cdTAwM2VhcWxfdGhyZXNob2xkKSk7XG4rfVxuK1xuIGJvb2wgaWVlZTgwMjExX3R4cV9haXJ0aW1lX2NoZWNrKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuIFx0XHRcdFx0IHN0cnVjdCBpZWVlODAyMTFfdHhxICp0eHEpXG4ge1xuQEAgLTQyMzgsMTMgKzQyNTMsMTUgQEAgYm9vbCBpZWVlODAyMTFfdHhxX2FpcnRpbWVfY2hlY2soc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4gXG4gXHRzdGEgPSBjb250YWluZXJfb2YodHhxLVx1MDAzZXN0YSwgc3RydWN0IHN0YV9pbmZvLCBzdGEpO1xuIFx0aWYgKGF0b21pY19yZWFkKFx1MDAyNnN0YS1cdTAwM2VhaXJ0aW1lW3R4cS1cdTAwM2VhY10uYXFsX3R4X3BlbmRpbmcpIFx1MDAzY1xuLVx0ICAgIHN0YS1cdTAwM2VhaXJ0aW1lW3R4cS1cdTAwM2VhY10uYXFsX2xpbWl0X2xvdylcbitcdCAgICBpZWVlODAyMTFfYXFsX3N0YV9saW1pdChsb2NhbCwgc3RhLFxuK1x0XHRcdFx0ICAgIHN0YS1cdTAwM2VhaXJ0aW1lW3R4cS1cdTAwM2VhY10uYXFsX2xpbWl0X2xvdykpXG4gXHRcdHJldHVybiB0cnVlO1xuIFxuIFx0aWYgKGF0b21pY19yZWFkKFx1MDAyNmxvY2FsLVx1MDAzZWFxbF90b3RhbF9wZW5kaW5nX2FpcnRpbWUpIFx1MDAzY1xuIFx0ICAgIGxvY2FsLVx1MDAzZWFxbF90aHJlc2hvbGQgXHUwMDI2XHUwMDI2XG4gXHQgICAgYXRvbWljX3JlYWQoXHUwMDI2c3RhLVx1MDAzZWFpcnRpbWVbdHhxLVx1MDAzZWFjXS5hcWxfdHhfcGVuZGluZykgXHUwMDNjXG4tXHQgICAgc3RhLVx1MDAzZWFpcnRpbWVbdHhxLVx1MDAzZWFjXS5hcWxfbGltaXRfaGlnaClcbitcdCAgICBpZWVlODAyMTFfYXFsX3N0YV9saW1pdChsb2NhbCwgc3RhLFxuK1x0XHRcdFx0ICAgIHN0YS1cdTAwM2VhaXJ0aW1lW3R4cS1cdTAwM2VhY10uYXFsX2xpbWl0X2hpZ2gpKVxuIFx0XHRyZXR1cm4gdHJ1ZTtcbiBcbiBcdHJldHVybiBmYWxzZTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDE4OjEwOjQxLjYyODQ0ODkxMVoiLCJTZXEiOjMxLCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo4MTc0MzcxNTkxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUGF0Y2ggZm9yIFVuaW5pdGlhbGl6ZWQgTWVtb3J5IFJpc2tzKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgcGF0Y2ggYW5kIHNlZSBpZiB3ZSBuZWVkIHRvIGJyaW5nIGluIEtNU0FOLiBGaXJzdCB0aGluZ3MgZmlyc3QsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQncyBjaGFuZ2VkIGFuZCB3aGVyZSB0aGUgcG90ZW50aWFsIGZvciB1bmluaXRpYWxpemVkIG1lbW9yeSBsaWVzLlxuXG5UaGUgcGF0Y2ggaW5jbHVkZXMgYWRkaXRpb25zIHRvIGEgZmV3IGZpbGVzOiBgYXRoMTFrL21hYy5jYCwgYG1hYzgwMjExLmhgLCBgZGVidWdmcy5jYCwgYW5kIGB0eC5jYC4gSXQgbG9va3MgbGlrZSBpdCdzIGVuYWJsaW5nIGBUWF9OT19QVVNIQkFDS2AgYW5kIGFkZGluZyBzb21lIGFpcnRpbWUgd2VpZ2h0IGNhbGN1bGF0aW9ucyByZWxhdGVkIHRvIGEgbmV3IGhlbHBlciBgaWVlZTgwMjExX2FxbF9zdGFfbGltaXRgLlxuXG5TcGVjaWZpY2FsbHksIHRoaXMgYGllZWU4MDIxMV9hcWxfc3RhX2xpbWl0YCBmdW5jdGlvbiBpcyB3aGF0IEkgbmVlZCB0byBmb2N1cyBvbi4gSXQgdXNlcyBgc3RhLVx1MDAzZWFpcnRpbWVfd2VpZ2h0YC4gVGhpcyBjb3VsZCBiZSBhIHByb2JsZW0gaWYgYHN0YS1cdTAwM2VhaXJ0aW1lX3dlaWdodGAgaXNuJ3QgcHJvcGVybHkgaW5pdGlhbGl6ZWQuIEkgc2VlIHRoYXQgaWYgYGllZWU4MDIxMV9od19jaGVja2AgcmV0dXJucyB0cnVlLCBvciBgc3RhLVx1MDAzZWFpcnRpbWVfd2VpZ2h0YCBpcyBzZXQgdG8gYElFRUU4MDIxMV9ERUZBVUxUX0FJUlRJTUVfV0VJR0hUYCwgdGhlIGZ1bmN0aW9uIGRpcmVjdGx5IHJldHVybnMgYGxpbWl0YC4gSXQgb25seSBjYWxjdWxhdGVzIHNvbWV0aGluZyB3aGVuIGBzdGEtXHUwMDNlYWlydGltZV93ZWlnaHRgIGlzIHNldCB0byBzb21ldGhpbmcgZWxzZS5cblxuU28sIHRoZSBrZXkgaGVyZSBpcyB0byBjb25maXJtIGhvdyBgc3RhLVx1MDAzZWFpcnRpbWVfd2VpZ2h0YCBnZXRzIGluaXRpYWxpemVkLiBJIG5lZWQgdG8gdHJhY2Ugd2hlcmUgYHN0YWAgaXMgYWxsb2NhdGVkIGFuZCBwb3B1bGF0ZWQsIGFuZCB0aGVuIGxvb2sgZm9yIHdoZXJlIGFuZCBob3cgYGFpcnRpbWVfd2VpZ2h0YCBpcyBzZXQuIExldCdzIHN0YXJ0IHdpdGggYSBzZWFyY2ggb2YgdGhlIG1hYzgwMjExIGNvZGUgZm9yIGFueSByZWxldmFudCByZWZlcmVuY2VzIHRvIGBhaXJ0aW1lX3dlaWdodGAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1MDYsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0OTMsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQxODoxMDo0OS44MDI4MjQ1NzJaIiwiU2VxIjozMiwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY2MjU0NjM5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImFpcnRpbWVfd2VpZ2h0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9tYWM4MDIxMVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbWFjODAyMTEvY2ZnLmM9MjQ1MD1zdGF0aWMgaW50IHN0YV9hcHBseV9wYXJhbWV0ZXJzKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jLTI1ODYtXFxubmV0L21hYzgwMjExL2NmZy5jOjI1ODc6XFx0aWYgKHBhcmFtcy1cXHUwMDNlYWlydGltZV93ZWlnaHQpXFxubmV0L21hYzgwMjExL2NmZy5jOjI1ODg6XFx0XFx0c3RhLVxcdTAwM2VhaXJ0aW1lX3dlaWdodCA9IHBhcmFtcy1cXHUwMDNlYWlydGltZV93ZWlnaHQ7XFxubmV0L21hYzgwMjExL2NmZy5jLTI1ODktXFxuLS1cXG5uZXQvbWFjODAyMTEvZGVidWdmc19zdGEuYz0xODg9c3RhdGljIHNzaXplX3Qgc3RhX2FpcnRpbWVfcmVhZChzdHJ1Y3QgZmlsZSAqZmlsZSwgY2hhciBfX3VzZXIgKnVzZXJidWYsXFxuLS1cXG5uZXQvbWFjODAyMTEvZGVidWdmc19zdGEuYy0yMTMtXFx0XFx0XFxcIkRlZmljaXQ6IFZPOiAlZCB1cyBWSTogJWQgdXMgQkU6ICVkIHVzIEJLOiAlZCB1c1xcXFxuXFxcIixcXG5uZXQvbWFjODAyMTEvZGVidWdmc19zdGEuYzoyMTQ6XFx0XFx0cnhfYWlydGltZSwgdHhfYWlydGltZSwgc3RhLVxcdTAwM2VhaXJ0aW1lX3dlaWdodCxcXG5uZXQvbWFjODAyMTEvZGVidWdmc19zdGEuYy0yMTUtXFx0XFx0ZGVmaWNpdFswXSwgZGVmaWNpdFsxXSwgZGVmaWNpdFsyXSwgZGVmaWNpdFszXSk7XFxuLS1cXG5uZXQvbWFjODAyMTEvZGVidWdmc19zdGEuYz0yMjI9c3RhdGljIHNzaXplX3Qgc3RhX2FpcnRpbWVfd3JpdGUoc3RydWN0IGZpbGUgKmZpbGUsIGNvbnN0IGNoYXIgX191c2VyICp1c2VyYnVmLFxcbi0tXFxubmV0L21hYzgwMjExL2RlYnVnZnNfc3RhLmMtMjMyLVxcdFxcdHN0YS1cXHUwMDNlYWlydGltZVthY10udHhfYWlydGltZSA9IDA7XFxubmV0L21hYzgwMjExL2RlYnVnZnNfc3RhLmM6MjMzOlxcdFxcdHN0YS1cXHUwMDNlYWlydGltZVthY10uZGVmaWNpdCA9IHN0YS1cXHUwMDNlYWlydGltZV93ZWlnaHQ7XFxubmV0L21hYzgwMjExL2RlYnVnZnNfc3RhLmMtMjM0LVxcdFxcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZsb2NhbC1cXHUwMDNlYWN0aXZlX3R4cV9sb2NrW2FjXSk7XFxuLS1cXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYz02MzM9X19zdGFfaW5mb19hbGxvYyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jLTcyOS1cXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYzo3MzA6XFx0c3RhLVxcdTAwM2VhaXJ0aW1lX3dlaWdodCA9IElFRUU4MDIxMV9ERUZBVUxUX0FJUlRJTUVfV0VJR0hUO1xcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jLTczMS1cXG4tLVxcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jLTczNC1cXHRcXHRza2JfcXVldWVfaGVhZF9pbml0KFxcdTAwMjZzdGEtXFx1MDAzZXR4X2ZpbHRlcmVkW2ldKTtcXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYzo3MzU6XFx0XFx0c3RhLVxcdTAwM2VhaXJ0aW1lW2ldLmRlZmljaXQgPSBzdGEtXFx1MDAzZWFpcnRpbWVfd2VpZ2h0O1xcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jLTczNi1cXHRcXHRhdG9taWNfc2V0KFxcdTAwMjZzdGEtXFx1MDAzZWFpcnRpbWVbaV0uYXFsX3R4X3BlbmRpbmcsIDApO1xcbi0tXFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmM9MjgzNz1zdGF0aWMgdm9pZCBzdGFfc2V0X2xpbmtfc2luZm8oc3RydWN0IHN0YV9pbmZvICpzdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy0yOTU1LVxcdGlmICghKGxpbmtfc2luZm8tXFx1MDAzZWZpbGxlZCBcXHUwMDI2IEJJVF9VTEwoTkw4MDIxMV9TVEFfSU5GT19BSVJUSU1FX1dFSUdIVCkpKSB7XFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmM6Mjk1NjpcXHRcXHRsaW5rX3NpbmZvLVxcdTAwM2VhaXJ0aW1lX3dlaWdodCA9IHN0YS1cXHUwMDNlYWlydGltZV93ZWlnaHQ7XFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmMtMjk1Ny1cXHRcXHRsaW5rX3NpbmZvLVxcdTAwM2VmaWxsZWQgfD0gQklUX1VMTChOTDgwMjExX1NUQV9JTkZPX0FJUlRJTUVfV0VJR0hUKTtcXG4tLVxcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jPTMwNzk9dm9pZCBzdGFfc2V0X3NpbmZvKHN0cnVjdCBzdGFfaW5mbyAqc3RhLCBzdHJ1Y3Qgc3RhdGlvbl9pbmZvICpzaW5mbyxcXG4tLVxcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jLTMxODctXFx0aWYgKCEoc2luZm8tXFx1MDAzZWZpbGxlZCBcXHUwMDI2IEJJVF9VTEwoTkw4MDIxMV9TVEFfSU5GT19BSVJUSU1FX1dFSUdIVCkpKSB7XFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmM6MzE4ODpcXHRcXHRzaW5mby1cXHUwMDNlYWlydGltZV93ZWlnaHQgPSBzdGEtXFx1MDAzZWFpcnRpbWVfd2VpZ2h0O1xcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jLTMxODktXFx0XFx0c2luZm8tXFx1MDAzZWZpbGxlZCB8PSBCSVRfVUxMKE5MODAyMTFfU1RBX0lORk9fQUlSVElNRV9XRUlHSFQpO1xcbi0tXFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmg9NjE5PXN0cnVjdCBpZWVlODAyMTFfc3RhX3JlbW92ZWRfbGlua19zdGF0cyB7XFxuLS1cXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uaC02NzYtICpcXHRzdGF0aW9uXFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmg6Njc3OiAqIEBhaXJ0aW1lX3dlaWdodDogc3RhdGlvbiB3ZWlnaHQgZm9yIGFpcnRpbWUgZmFpcm5lc3MgY2FsY3VsYXRpb24gcHVycG9zZXNcXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uaC02NzgtICogQGFtcGR1X21sbWU6IEEtTVBEVSBzdGF0ZSBtYWNoaW5lIHN0YXRlXFxuLS1cXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uaD03MTU9c3RydWN0IHN0YV9pbmZvIHtcXG4tLVxcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5oLTc2Ni1cXHRzdHJ1Y3QgYWlydGltZV9pbmZvIGFpcnRpbWVbSUVFRTgwMjExX05VTV9BQ1NdO1xcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5oOjc2NzpcXHR1MTYgYWlydGltZV93ZWlnaHQ7XFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmgtNzY4LVxcbi0tXFxubmV0L21hYzgwMjExL3R4LmM9NDExNT1zdHJ1Y3QgaWVlZTgwMjExX3R4cSAqaWVlZTgwMjExX25leHRfdHhxKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCB1OCBhYylcXG4tLVxcbm5ldC9tYWM4MDIxMS90eC5jLTQxNTQtXFx0XFx0XFx0c3RhLVxcdTAwM2VhaXJ0aW1lW3R4cWktXFx1MDAzZXR4cS5hY10uZGVmaWNpdCArPVxcbm5ldC9tYWM4MDIxMS90eC5jOjQxNTU6XFx0XFx0XFx0XFx0c3RhLVxcdTAwM2VhaXJ0aW1lX3dlaWdodDtcXG5uZXQvbWFjODAyMTEvdHguYy00MTU2LVxcbi0tXFxubmV0L21hYzgwMjExL3R4LmM9NDIyMD1zdGF0aWMgdTMyIGllZWU4MDIxMV9hcWxfc3RhX2xpbWl0KHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxcbi0tXFxubmV0L21hYzgwMjExL3R4LmMtNDIyNS1cXHRpZiAoIWllZWU4MDIxMV9od19jaGVjayhcXHUwMDI2bG9jYWwtXFx1MDAzZWh3LCBUWF9OT19QVVNIQkFDSykgfHxcXG5uZXQvbWFjODAyMTEvdHguYzo0MjI2OlxcdCAgICBzdGEtXFx1MDAzZWFpcnRpbWVfd2VpZ2h0ID09IElFRUU4MDIxMV9ERUZBVUxUX0FJUlRJTUVfV0VJR0hUKVxcbm5ldC9tYWM4MDIxMS90eC5jLTQyMjctXFx0XFx0cmV0dXJuIGxpbWl0O1xcbm5ldC9tYWM4MDIxMS90eC5jLTQyMjgtXFxubmV0L21hYzgwMjExL3R4LmM6NDIyOTpcXHRzY2FsZWQgPSBtdWx0X2ZyYWMobGltaXQsIHN0YS1cXHUwMDNlYWlydGltZV93ZWlnaHQsXFxubmV0L21hYzgwMjExL3R4LmMtNDIzMC1cXHRcXHRcXHQgICBJRUVFODAyMTFfREVGQVVMVF9BSVJUSU1FX1dFSUdIVCk7XFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYz00MzA4PWJvb2wgaWVlZTgwMjExX3R4cV9tYXlfdHJhbnNtaXQoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYy00MzM4LVxcdFxcdGlmIChpZWVlODAyMTFfc3RhX2RlZmljaXQoc3RhLCBhYykgXFx1MDAzYyAwKVxcbm5ldC9tYWM4MDIxMS90eC5jOjQzMzk6XFx0XFx0XFx0c3RhLVxcdTAwM2VhaXJ0aW1lW2FjXS5kZWZpY2l0ICs9IHN0YS1cXHUwMDNlYWlydGltZV93ZWlnaHQ7XFxubmV0L21hYzgwMjExL3R4LmMtNDM0MC1cXHRcXHRsaXN0X21vdmVfdGFpbChcXHUwMDI2aXRlci1cXHUwMDNlc2NoZWR1bGVfb3JkZXIsIFxcdTAwMjZsb2NhbC1cXHUwMDNlYWN0aXZlX3R4cXNbYWNdKTtcXG4tLVxcbm5ldC9tYWM4MDIxMS90eC5jLTQzNDYtXFxubmV0L21hYzgwMjExL3R4LmM6NDM0NzpcXHRzdGEtXFx1MDAzZWFpcnRpbWVbYWNdLmRlZmljaXQgKz0gc3RhLVxcdTAwM2VhaXJ0aW1lX3dlaWdodDtcXG5uZXQvbWFjODAyMTEvdHguYy00MzQ4LVxcdGxpc3RfbW92ZV90YWlsKFxcdTAwMjZ0eHFpLVxcdTAwM2VzY2hlZHVsZV9vcmRlciwgXFx1MDAyNmxvY2FsLVxcdTAwM2VhY3RpdmVfdHhxc1thY10pO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQxODoxMDo0OS44NjkwODM0MTFaIiwiU2VxIjozMywiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NDk5NDU0NDE0NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBhdGNoIGZvciBVbmluaXRpYWxpemVkIE1lbW9yeSBSaXNrcyoqXG5cbk9rYXksIGxldCdzIGJyZWFrIGRvd24gdGhpcyBwYXRjaCBhbmQgc2VlIGlmIGl0IGludHJvZHVjZXMgYW55IG5hc3R5IHN1cnByaXNlcywgcGFydGljdWxhcmx5IGFyb3VuZCB1bmluaXRpYWxpemVkIG1lbW9yeS4gRmlyc3QsIHdlJ3JlIGFkZGluZyBhIG5ldyBoYXJkd2FyZSBmbGFnLCBgSUVFRTgwMjExX0hXX1RYX05PX1BVU0hCQUNLYCwgdG8gbWFjODAyMTEuIEdvb2QsIHN0YW5kYXJkIHByb2NlZHVyZS4gV2UncmUgYWxzbyBhZGRpbmcgdGhlIHN0cmluZyBuYW1lIGZvciBkZWJ1Z2ZzLCB3aGljaCBpcyBhIGNvbW1vbiBwcmFjdGljZS4gVGhpcyBpcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLiBUaGUgZmxhZyBpcyBnZXR0aW5nIHNldCB3aXRoaW4gYGF0aDExa2AsIHdoaWNoIG1ha2VzIHNlbnNlIGdpdmVuIHRoZSBjb250ZXh0LlxuXG5UaGUgbWVhdCBvZiBpdCBzZWVtcyB0byBiZSB0aGlzIG5ldyBoZWxwZXIgZnVuY3Rpb24sIGBpZWVlODAyMTFfYXFsX3N0YV9saW1pdGAuIFRoaXMgaXMgd2hlcmUgdGhlIGFpcnRpbWUgd2VpZ2h0aW5nIGNvbWVzIGluLiBJdCBhcHBlYXJzIHRoaXMgZnVuY3Rpb24gc2NhbGVzIHRoZSBBUUwgbGltaXQgYmFzZWQgb24gYSBzdGF0aW9uJ3MgYWlydGltZSB3ZWlnaHQgd2hlbiBgVFhfTk9fUFVTSEJBQ0tgIGlzIGFjdGl2ZS4gTG9va2luZyBhdCB0aGUgdmFyaWFibGVzIHVzZWQsIGl0IHNlZW1zIGxpa2Ugd2UncmUgZGVhbGluZyB3aXRoIGBsb2NhbGAsIGBzdGFgLCBhbmQgYGxpbWl0YC4gVGhlIGBzdGFgIGlzIGluaXRpYWxpemVkIGR1cmluZyBzdGF0aW9uIGNyZWF0aW9uIHdpdGggYGt6YWxsb2NgIGluIGBfX3N0YV9pbmZvX2FsbG9jYCwgYW5kLCBpbXBvcnRhbnRseSwgaXRzIGBhaXJ0aW1lX3dlaWdodGAgaXMgaW5pdGlhbGl6ZWQgYXMgd2VsbCB3aXRoIGBJRUVFODAyMTFfREVGQVVMVF9BSVJUSU1FX1dFSUdIVGAuIFRoZSBgc2NhbGVkYCB2YWx1ZSBpcyBhIGxvY2FsIGB1MzJgIHRoYXQgaXMgZXhwbGljaXRseSBjb21wdXRlZCBhbmQgYXNzaWduZWQgYmVmb3JlIGJlaW5nIHJldHVybmVkLlxuXG5Ob3csIHRoZSBjcnVjaWFsIHF1ZXN0aW9uOiBhcmUgd2UgYWNjaWRlbnRhbGx5IHJlYWRpbmcgdW5pbml0aWFsaXplZCBtZW1vcnksIGxlYWtpbmcgaW5mb3JtYXRpb24sIG9yIGludHJvZHVjaW5nIGEgdXNlLWFmdGVyLWZyZWUgc2l0dWF0aW9uPyBJdCBkb2Vzbid0IGxvb2sgbGlrZSBpdC4gVGhlIGNhbGN1bGF0aW9uIG9mIGBzY2FsZWRgIHdpdGhpbiBgaWVlZTgwMjExX2FxbF9zdGFfbGltaXRgIHVzZXMgYG11bHRfZnJhYyguLi4pYCBhbmQgcmV0dXJucyBgbWluKC4uLilgLCBzbyBpdCBzZWVtcyBwcmV0dHkgc2VsZi1jb250YWluZWQuIFRoZSBuZXcgc3RyaW5nIGVudHJ5IGluIGBkZWJ1Z2ZzLmNgIGlzIGp1c3QgYSBzdHJpbmcsIHdoaWNoIGlzIGZpbmUuIFNldHRpbmcgdGhlIGJpdCBpbiBgYXRoMTFrYCB3aXRoIGBpZWVlODAyMTFfaHdfc2V0KClgIGlzbid0IGluaGVyZW50bHkgcmlza3kuIFRoZXJlIGFyZSBubyBgY29weV90b191c2VyYCBvciBuZXRsaW5rIGNhbGxzIHRoYXQgY291bGQgYmUgbGVha2luZyBpbmZvLiBObyB1bmluaXRpYWxpemVkIGZpZWxkcyBvciBtZW1vcnkgYWxsb2NhdGlvbnMgYXJlIGJlaW5nIGRvbmUgYnkgdGhlc2UgY2hhbmdlcywgYW5kIHdlJ3JlIG5vdCBtb2RpZnlpbmcgcG9pbnRlcnMgb3IgYnVmZmVyIHNpemVzIGluIGEgd2F5IHRoYXQgd291bGQgb3BlbiB1cCB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcy5cblxuVGhlcmVmb3JlLCBteSBjb25jbHVzaW9uIGlzIHRoYXQgdGhpcyBwYXRjaCBkb2Vzbid0IGludHJvZHVjZSBhbnkgbmV3IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzLiBTdGFuZGFyZCBLQVNBTiBjaGVja3MgYW5kIGV4aXN0aW5nIHRlc3RzIHNob3VsZCBiZSBzdWZmaWNpZW50IHRvIGNhdGNoIGFueSBwb3RlbnRpYWwgcHJvYmxlbXMsIGFuZCB3ZSBjYW4gc2FmZWx5IHNldCBgTmVlZHNLTVNBTiA9IGZhbHNlYC4gTGV0J3MgbG9nIHRoaXMgd2l0aCBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NDExLCJPdXRwdXRUb2tlbnMiOjIxNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQzOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQxODoxMDo1NC44NjM2Mjk4NTZaIiwiU2VxIjozNCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjg4OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgdGhlIGBJRUVFODAyMTFfSFdfVFhfTk9fUFVTSEJBQ0tgIGhhcmR3YXJlIGZsYWcgZm9yIG1hYzgwMjExL2F0aDExayBhbmQgYWRqdXN0cyBzdGF0aW9uIEFpcnRpbWUgUXVldWUgTGltaXQgKEFRTCkgY2FsY3VsYXRpb25zIGJhc2VkIG9uIHN0YXRpb24gYWlydGltZSB3ZWlnaHQgd2hlbiB0aGlzIGZsYWcgaXMgZW5hYmxlZC5cXG5cXG5BbGwgc3RydWN0IGZpZWxkcyBhY2Nlc3NlZCAoc3VjaCBhcyBgc3RhLVxcdTAwM2VhaXJ0aW1lX3dlaWdodGAsIGBsb2NhbC1cXHUwMDNlYXFsX3RocmVzaG9sZGAsIGFuZCBgc3RhLVxcdTAwM2VhaXJ0aW1lW10uYXFsX2xpbWl0XypgKSBhcmUgc3RhbmRhcmQgaW50ZWdlciBmaWVsZHMgaW5pdGlhbGl6ZWQgZHVyaW5nIHN0YXRpb24gY3JlYXRpb24gYW5kIGRyaXZlciBjb25maWd1cmF0aW9uLiBMb2NhbCB2YXJpYWJsZXMgaW4gdGhlIG5ldyBjYWxjdWxhdGlvbiBoZWxwZXIgYGllZWU4MDIxMV9hcWxfc3RhX2xpbWl0KClgIGFyZSBleHBsaWNpdGx5IGFzc2lnbmVkIGJlZm9yZSB1c2UuIE5vIGhlYXAvc3RhY2sgYWxsb2NhdGlvbnMsIG1lbW9yeSBjb3B5IG9wZXJhdGlvbnMgdG8gdXNlciBzcGFjZSwgb3IgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMgYXJlIGludHJvZHVjZWQgb3IgbW9kaWZpZWQuXFxuXFxuVGhlcmVmb3JlLCBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBpcyBub3QgbmVlZGVkOyBhbnkgc3RhbmRhcmQgY29uY3VycmVuY3kgb3IgbG9naWMgaXNzdWVzIGFyZSBjb3ZlcmVkIGJ5IHN0YW5kYXJkIEtBU0FOL2tlcm5lbCBkZWJ1Z2dpbmcgdG9vbHMuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyB0aGUgYElFRUU4MDIxMV9IV19UWF9OT19QVVNIQkFDS2AgaGFyZHdhcmUgZmxhZyBmb3IgbWFjODAyMTEvYXRoMTFrIGFuZCBhZGp1c3RzIHN0YXRpb24gQWlydGltZSBRdWV1ZSBMaW1pdCAoQVFMKSBjYWxjdWxhdGlvbnMgYmFzZWQgb24gc3RhdGlvbiBhaXJ0aW1lIHdlaWdodCB3aGVuIHRoaXMgZmxhZyBpcyBlbmFibGVkLlxcblxcbkFsbCBzdHJ1Y3QgZmllbGRzIGFjY2Vzc2VkIChzdWNoIGFzIGBzdGEtXFx1MDAzZWFpcnRpbWVfd2VpZ2h0YCwgYGxvY2FsLVxcdTAwM2VhcWxfdGhyZXNob2xkYCwgYW5kIGBzdGEtXFx1MDAzZWFpcnRpbWVbXS5hcWxfbGltaXRfKmApIGFyZSBzdGFuZGFyZCBpbnRlZ2VyIGZpZWxkcyBpbml0aWFsaXplZCBkdXJpbmcgc3RhdGlvbiBjcmVhdGlvbiBhbmQgZHJpdmVyIGNvbmZpZ3VyYXRpb24uIExvY2FsIHZhcmlhYmxlcyBpbiB0aGUgbmV3IGNhbGN1bGF0aW9uIGhlbHBlciBgaWVlZTgwMjExX2FxbF9zdGFfbGltaXQoKWAgYXJlIGV4cGxpY2l0bHkgYXNzaWduZWQgYmVmb3JlIHVzZS4gTm8gaGVhcC9zdGFjayBhbGxvY2F0aW9ucywgbWVtb3J5IGNvcHkgb3BlcmF0aW9ucyB0byB1c2VyIHNwYWNlLCBvciB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcyBhcmUgaW50cm9kdWNlZCBvciBtb2RpZmllZC5cXG5cXG5UaGVyZWZvcmUsIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIGlzIG5vdCBuZWVkZWQ7IGFueSBzdGFuZGFyZCBjb25jdXJyZW5jeSBvciBsb2dpYyBpc3N1ZXMgYXJlIGNvdmVyZWQgYnkgc3RhbmRhcmQgS0FTQU4va2VybmVsIGRlYnVnZ2luZyB0b29scy5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowsclb4[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-08 17:19:20 +0000 UTC FinishedAt: 2026-09-08 18:10:56 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "1b60ed34f712e9f606d80951f1586f4274ebadf1", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MAC80211", "CFG80211", "ATH11K", "MAC80211_DEBUGFS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "1b60ed34f712e9f606d80951f1586f4274ebadf1", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MAC80211", "CFG80211", "ATH11K", "MAC80211_DEBUGFS" ], "series_id": "0a30ddee-6301-45fc-a29d-da278b79e983" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "ieee80211_txq_airtime_check", "ieee80211_aql_sta_limit", "ieee80211_next_txq", "ieee80211_tx_dequeue", "__ath11k_mac_register" ], "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+CgkJCTx0ZD4yMDI2LzA5LzA4IDE4OjA5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O0NGRzgwMjExJiMzNDssCiAgICAmIzM0O0FUSDExSyYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMV9ERUJVR0ZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aWVlZTgwMjExX3R4cV9haXJ0aW1lX2NoZWNrJiMzNDssCiAgICAmIzM0O2llZWU4MDIxMV9hcWxfc3RhX2xpbWl0JiMzNDssCiAgICAmIzM0O2llZWU4MDIxMV9uZXh0X3R4cSYjMzQ7LAogICAgJiMzNDtpZWVlODAyMTFfdHhfZGVxdWV1ZSYjMzQ7LAogICAgJiMzNDtfX2F0aDExa19tYWNfcmVnaXN0ZXImIzM0OwogIF0sCiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIHRoZSBgSUVFRTgwMjExX0hXX1RYX05PX1BVU0hCQUNLYCBoYXJkd2FyZSBmbGFnIGZvciBtYWM4MDIxMS9hdGgxMWsgYW5kIGFkanVzdHMgc3RhdGlvbiBBaXJ0aW1lIFF1ZXVlIExpbWl0IChBUUwpIGNhbGN1bGF0aW9ucyBiYXNlZCBvbiBzdGF0aW9uIGFpcnRpbWUgd2VpZ2h0IHdoZW4gdGhpcyBmbGFnIGlzIGVuYWJsZWQuXG5cbkFsbCBzdHJ1Y3QgZmllbGRzIGFjY2Vzc2VkIChzdWNoIGFzIGBzdGEtXHUwMDNlYWlydGltZV93ZWlnaHRgLCBgbG9jYWwtXHUwMDNlYXFsX3RocmVzaG9sZGAsIGFuZCBgc3RhLVx1MDAzZWFpcnRpbWVbXS5hcWxfbGltaXRfKmApIGFyZSBzdGFuZGFyZCBpbnRlZ2VyIGZpZWxkcyBpbml0aWFsaXplZCBkdXJpbmcgc3RhdGlvbiBjcmVhdGlvbiBhbmQgZHJpdmVyIGNvbmZpZ3VyYXRpb24uIExvY2FsIHZhcmlhYmxlcyBpbiB0aGUgbmV3IGNhbGN1bGF0aW9uIGhlbHBlciBgaWVlZTgwMjExX2FxbF9zdGFfbGltaXQoKWAgYXJlIGV4cGxpY2l0bHkgYXNzaWduZWQgYmVmb3JlIHVzZS4gTm8gaGVhcC9zdGFjayBhbGxvY2F0aW9ucywgbWVtb3J5IGNvcHkgb3BlcmF0aW9ucyB0byB1c2VyIHNwYWNlLCBvciB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcyBhcmUgaW50cm9kdWNlZCBvciBtb2RpZmllZC5cblxuVGhlcmVmb3JlLCBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBpcyBub3QgbmVlZGVkOyBhbnkgc3RhbmRhcmQgY29uY3VycmVuY3kgb3IgbG9naWMgaXNzdWVzIGFyZSBjb3ZlcmVkIGJ5IHN0YW5kYXJkIEtBU0FOL2tlcm5lbCBkZWJ1Z2dpbmcgdG9vbHMuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgdGhlIElFRUU4MDIxMV9IV19UWF9OT19QVVNIQkFDSyBoYXJkd2FyZSBmbGFnIGFuZCBhZGRzIHN0YXRpb24gYWlydGltZSBxdWV1ZSBsaW1pdCBjYWxjdWxhdGlvbiAoaWVlZTgwMjExX2FxbF9zdGFfbGltaXQpIHRvIHRoZSBtYWM4MDIxMSBUWCBxdWV1ZSBhaXJ0aW1lIGNoZWNrIChpZWVlODAyMTFfdHhxX2FpcnRpbWVfY2hlY2spLiBUaGUgbWFjODAyMTEgc3Vic3lzdGVtIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIG1hYzgwMjExX2h3c2ltIGFuZCBubDgwMjExIGludGVyZmFjZXMsIG1ha2luZyB0aGVzZSBxdWV1ZSBzY2hlZHVsaW5nIGFuZCBhaXJ0aW1lIGNhbGN1bGF0aW9uIGNoYW5nZXMgd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAxODowOTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDExMTY1MWIxNTZmYzIxOTY2NjVkZGRmOWRiNjJiZWFjNjc3MTU1MDRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIFNlcCA4IDE4OjA5OjI3IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jXG5pbmRleCAyZDU1Y2RjNGQxNjVkLi44N2U2MDYyYzU1NTA5IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuY1xuQEAgLTEwNDk0LDYgJiM0MzsxMDQ5NCw3IEBAIHN0YXRpYyBpbnQgX19hdGgxMWtfbWFjX3JlZ2lzdGVyKHN0cnVjdCBhdGgxMWsgKmFyKVxuIFxuIFx0aWVlZTgwMjExX2h3X3NldChhci1cdTAwM2VodywgU0lHTkFMX0RCTSk7XG4gXHRpZWVlODAyMTFfaHdfc2V0KGFyLVx1MDAzZWh3LCBTVVBQT1JUU19QUyk7XG4mIzQzO1x0aWVlZTgwMjExX2h3X3NldChhci1cdTAwM2VodywgVFhfTk9fUFVTSEJBQ0spO1xuIFx0aWVlZTgwMjExX2h3X3NldChhci1cdTAwM2VodywgU1VQUE9SVFNfRFlOQU1JQ19QUyk7XG4gXHRpZWVlODAyMTFfaHdfc2V0KGFyLVx1MDAzZWh3LCBNRlBfQ0FQQUJMRSk7XG4gXHRpZWVlODAyMTFfaHdfc2V0KGFyLVx1MDAzZWh3LCBSRVBPUlRTX1RYX0FDS19TVEFUVVMpO1xuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L21hYzgwMjExLmggYi9pbmNsdWRlL25ldC9tYWM4MDIxMS5oXG5pbmRleCA3YmI0NjE4MDY1YjY3Li44MDM4MWM3YWJkODRhIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9uZXQvbWFjODAyMTEuaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9uZXQvbWFjODAyMTEuaFxuQEAgLTMwODYsNiAmIzQzOzMwODYsMTIgQEAgc3RydWN0IGllZWU4MDIxMV90eHEge1xuICAqIEBJRUVFODAyMTFfSFdfU1VQUE9SVFNfTkRQX0JMT0NLQUNLOiBIVyBjYW4gdHJhbnNtaXQvcmVjZWl2ZSBTMUcgTkRQXG4gICpcdEJsb2NrQWNrIGZyYW1lcy5cbiAgKlxuJiM0MzsgKiBASUVFRTgwMjExX0hXX1RYX05PX1BVU0hCQUNLOiBUaGUgZHJpdmVyIGhhbmRzIGV2ZXJ5IGZyYW1lIGl0IGRlcXVldWVzXG4mIzQzOyAqXHR0byB0aGUgaGFyZHdhcmUgYXQgb25jZSwgYW5kIHRoZSBoYXJkd2FyZSBwaWNrcyB0aGUgc3RhdGlvbiBpdCBzZXJ2ZXNcbiYjNDM7ICpcdG5leHQsIHNvIHRoZSBvcmRlciBpbiB3aGljaCBtYWM4MDIxMSBzY2hlZHVsZXMgdGhlIHF1ZXVlcyBkb2VzIG5vdFxuJiM0MzsgKlx0cmVhY2ggdGhlIGFpci4gbWFjODAyMTEgdGhlbiBhcHBsaWVzIHRoZSBhaXJ0aW1lIHdlaWdodCB0byB0aGVcbiYjNDM7ICpcdGFpcnRpbWUgcXVldWUgbGltaXQgaW5zdGVhZC5cbiYjNDM7ICpcbiAgKiBATlVNX0lFRUU4MDIxMV9IV19GTEFHUzogbnVtYmVyIG9mIGhhcmR3YXJlIGZsYWdzLCB1c2VkIGZvciBzaXppbmcgYXJyYXlzXG4gICovXG4gZW51bSBpZWVlODAyMTFfaHdfZmxhZ3Mge1xuQEAgLTMxNDcsNiAmIzQzOzMxNTMsNyBAQCBlbnVtIGllZWU4MDIxMV9od19mbGFncyB7XG4gXHRJRUVFODAyMTFfSFdfSEFORExFU19RVUlFVF9DU0EsXG4gXHRJRUVFODAyMTFfSFdfU1RSSUNULFxuIFx0SUVFRTgwMjExX0hXX1NVUFBPUlRTX05EUF9CTE9DS0FDSyxcbiYjNDM7XHRJRUVFODAyMTFfSFdfVFhfTk9fUFVTSEJBQ0ssXG4gXG4gXHQvKiBrZWVwIGxhc3QsIG9idmlvdXNseSAqL1xuIFx0TlVNX0lFRUU4MDIxMV9IV19GTEFHU1xuZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxMS9kZWJ1Z2ZzLmMgYi9uZXQvbWFjODAyMTEvZGVidWdmcy5jXG5pbmRleCA4OTQ2YjAyNzc4MmNmLi5kZGJmYTk5MWVjNzRlIDEwMDY0NFxuLS0tIGEvbmV0L21hYzgwMjExL2RlYnVnZnMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L21hYzgwMjExL2RlYnVnZnMuY1xuQEAgLTQ2Miw2ICYjNDM7NDYyLDcgQEAgc3RhdGljIGNvbnN0IGNoYXIgKmh3X2ZsYWdfbmFtZXNbXSA9IHtcbiBcdEZMQUcoSEFORExFU19RVUlFVF9DU0EpLFxuIFx0RkxBRyhTVFJJQ1QpLFxuIFx0RkxBRyhTVVBQT1JUU19ORFBfQkxPQ0tBQ0spLFxuJiM0MztcdEZMQUcoVFhfTk9fUFVTSEJBQ0spLFxuICN1bmRlZiBGTEFHXG4gfTtcbiBcbmRpZmYgLS1naXQgYS9uZXQvbWFjODAyMTEvdHguYyBiL25ldC9tYWM4MDIxMS90eC5jXG5pbmRleCBjMzMwOTI5NjBkZjI2Li5jOTRlZmZmNDhkNzQ3IDEwMDY0NFxuLS0tIGEvbmV0L21hYzgwMjExL3R4LmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9tYWM4MDIxMS90eC5jXG5AQCAtNDIxNyw2ICYjNDM7NDIxNywyMSBAQCBFWFBPUlRfU1lNQk9MKF9faWVlZTgwMjExX3NjaGVkdWxlX3R4cSk7XG4gXG4gREVGSU5FX1NUQVRJQ19LRVlfRkFMU0UoYXFsX2Rpc2FibGUpO1xuIFxuJiM0MztzdGF0aWMgdTMyIGllZWU4MDIxMV9hcWxfc3RhX2xpbWl0KHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxuJiM0MztcdFx0XHRcdCAgIHN0cnVjdCBzdGFfaW5mbyAqc3RhLCB1MzIgbGltaXQpXG4mIzQzO3tcbiYjNDM7XHR1MzIgc2NhbGVkO1xuJiM0MztcbiYjNDM7XHRpZiAoIWllZWU4MDIxMV9od19jaGVjayhcdTAwMjZsb2NhbC1cdTAwM2VodywgVFhfTk9fUFVTSEJBQ0spIHx8XG4mIzQzO1x0ICAgIHN0YS1cdTAwM2VhaXJ0aW1lX3dlaWdodCA9PSBJRUVFODAyMTFfREVGQVVMVF9BSVJUSU1FX1dFSUdIVClcbiYjNDM7XHRcdHJldHVybiBsaW1pdDtcbiYjNDM7XG4mIzQzO1x0c2NhbGVkID0gbXVsdF9mcmFjKGxpbWl0LCBzdGEtXHUwMDNlYWlydGltZV93ZWlnaHQsXG4mIzQzO1x0XHRcdCAgIElFRUU4MDIxMV9ERUZBVUxUX0FJUlRJTUVfV0VJR0hUKTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIG1pbihzY2FsZWQsIG1heChsaW1pdCwgbG9jYWwtXHUwMDNlYXFsX3RocmVzaG9sZCkpO1xuJiM0Mzt9XG4mIzQzO1xuIGJvb2wgaWVlZTgwMjExX3R4cV9haXJ0aW1lX2NoZWNrKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuIFx0XHRcdFx0IHN0cnVjdCBpZWVlODAyMTFfdHhxICp0eHEpXG4ge1xuQEAgLTQyMzgsMTMgJiM0Mzs0MjUzLDE1IEBAIGJvb2wgaWVlZTgwMjExX3R4cV9haXJ0aW1lX2NoZWNrKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuIFxuIFx0c3RhID0gY29udGFpbmVyX29mKHR4cS1cdTAwM2VzdGEsIHN0cnVjdCBzdGFfaW5mbywgc3RhKTtcbiBcdGlmIChhdG9taWNfcmVhZChcdTAwMjZzdGEtXHUwMDNlYWlydGltZVt0eHEtXHUwMDNlYWNdLmFxbF90eF9wZW5kaW5nKSBcdTAwM2Ncbi1cdCAgICBzdGEtXHUwMDNlYWlydGltZVt0eHEtXHUwMDNlYWNdLmFxbF9saW1pdF9sb3cpXG4mIzQzO1x0ICAgIGllZWU4MDIxMV9hcWxfc3RhX2xpbWl0KGxvY2FsLCBzdGEsXG4mIzQzO1x0XHRcdFx0ICAgIHN0YS1cdTAwM2VhaXJ0aW1lW3R4cS1cdTAwM2VhY10uYXFsX2xpbWl0X2xvdykpXG4gXHRcdHJldHVybiB0cnVlO1xuIFxuIFx0aWYgKGF0b21pY19yZWFkKFx1MDAyNmxvY2FsLVx1MDAzZWFxbF90b3RhbF9wZW5kaW5nX2FpcnRpbWUpIFx1MDAzY1xuIFx0ICAgIGxvY2FsLVx1MDAzZWFxbF90aHJlc2hvbGQgXHUwMDI2XHUwMDI2XG4gXHQgICAgYXRvbWljX3JlYWQoXHUwMDI2c3RhLVx1MDAzZWFpcnRpbWVbdHhxLVx1MDAzZWFjXS5hcWxfdHhfcGVuZGluZykgXHUwMDNjXG4tXHQgICAgc3RhLVx1MDAzZWFpcnRpbWVbdHhxLVx1MDAzZWFjXS5hcWxfbGltaXRfaGlnaClcbiYjNDM7XHQgICAgaWVlZTgwMjExX2FxbF9zdGFfbGltaXQobG9jYWwsIHN0YSxcbiYjNDM7XHRcdFx0XHQgICAgc3RhLVx1MDAzZWFpcnRpbWVbdHhxLVx1MDAzZWFjXS5hcWxfbGltaXRfaGlnaCkpXG4gXHRcdHJldHVybiB0cnVlO1xuIFxuIFx0cmV0dXJuIGZhbHNlO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDE4OjA5PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O0NGRzgwMjExJiMzNDssCiAgICAmIzM0O0FUSDExSyYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMV9ERUJVR0ZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aWVlZTgwMjExX3R4cV9haXJ0aW1lX2NoZWNrJiMzNDssCiAgICAmIzM0O2llZWU4MDIxMV9hcWxfc3RhX2xpbWl0JiMzNDssCiAgICAmIzM0O2llZWU4MDIxMV9uZXh0X3R4cSYjMzQ7LAogICAgJiMzNDtpZWVlODAyMTFfdHhfZGVxdWV1ZSYjMzQ7LAogICAgJiMzNDtfX2F0aDExa19tYWNfcmVnaXN0ZXImIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyB0aGUgSUVFRTgwMjExX0hXX1RYX05PX1BVU0hCQUNLIGhhcmR3YXJlIGZsYWcgYW5kIGFkZHMgc3RhdGlvbiBhaXJ0aW1lIHF1ZXVlIGxpbWl0IGNhbGN1bGF0aW9uIChpZWVlODAyMTFfYXFsX3N0YV9saW1pdCkgdG8gdGhlIG1hYzgwMjExIFRYIHF1ZXVlIGFpcnRpbWUgY2hlY2sgKGllZWU4MDIxMV90eHFfYWlydGltZV9jaGVjaykuIFRoZSBtYWM4MDIxMSBzdWJzeXN0ZW0gaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgbWFjODAyMTFfaHdzaW0gYW5kIG5sODAyMTEgaW50ZXJmYWNlcywgbWFraW5nIHRoZXNlIHF1ZXVlIHNjaGVkdWxpbmcgYW5kIGFpcnRpbWUgY2FsY3VsYXRpb24gY2hhbmdlcyB3b3J0aCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3MKdG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncywKYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy4KCi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6CiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZAogIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuCiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLAogIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy4KCi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgJiMzNDtOTyBGVU5DVElPTkFMIENIQU5HRSYjMzQ7IChORkNJKSBPUiAmIzM0O1JFRkFDVE9SSU5HJiMzNDsgQ0xBSU1TOgogIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgJiMzNDtjbGVhbnVwcyYjMzQ7LCAmIzM0O3JlZmFjdG9yaW5ncyYjMzQ7LCBvciBzdGF0ZQogICYjMzQ7Tm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWQmIzM0Oy4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuCiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50CiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuCiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC4KCi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6CiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLAogIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLgogIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXIKICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoyLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOgoKLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOgogICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLgogICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pCiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuCiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50cwogICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy4KICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy4KLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6CiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczoKICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZwogICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuCiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQozLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6Ci0gQ29yZSBTdWJzeXN0ZW1zOgogICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLAogICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLgotIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczoKICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy4KLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6CiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuCi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczoKICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpXaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjoKCi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOgogIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzCiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHQKICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS4KICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgJiMzNDtmb2N1c2VkJiMzNDssCiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLgoKLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6CiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzCiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuCgotIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKToKICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrCiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuCiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyCiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlncwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOgotIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCi0gQ2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC4KLSBTdHJpcCBhbnkgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMTExNjUxYjE1NmZjMjE5NjY2NWRkZGY5ZGI2MmJlYWM2NzcxNTUwNApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgU2VwIDggMTg6MDk6MjcgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYwppbmRleCAyZDU1Y2RjNGQxNjVkLi44N2U2MDYyYzU1NTA5IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmMKQEAgLTEwNDk0LDYgJiM0MzsxMDQ5NCw3IEBAIHN0YXRpYyBpbnQgX19hdGgxMWtfbWFjX3JlZ2lzdGVyKHN0cnVjdCBhdGgxMWsgKmFyKQogCiAJaWVlZTgwMjExX2h3X3NldChhci0mZ3Q7aHcsIFNJR05BTF9EQk0pOwogCWllZWU4MDIxMV9od19zZXQoYXItJmd0O2h3LCBTVVBQT1JUU19QUyk7CiYjNDM7CWllZWU4MDIxMV9od19zZXQoYXItJmd0O2h3LCBUWF9OT19QVVNIQkFDSyk7CiAJaWVlZTgwMjExX2h3X3NldChhci0mZ3Q7aHcsIFNVUFBPUlRTX0RZTkFNSUNfUFMpOwogCWllZWU4MDIxMV9od19zZXQoYXItJmd0O2h3LCBNRlBfQ0FQQUJMRSk7CiAJaWVlZTgwMjExX2h3X3NldChhci0mZ3Q7aHcsIFJFUE9SVFNfVFhfQUNLX1NUQVRVUyk7CmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9tYWM4MDIxMS5oIGIvaW5jbHVkZS9uZXQvbWFjODAyMTEuaAppbmRleCA3YmI0NjE4MDY1YjY3Li44MDM4MWM3YWJkODRhIDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC9tYWM4MDIxMS5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbmV0L21hYzgwMjExLmgKQEAgLTMwODYsNiAmIzQzOzMwODYsMTIgQEAgc3RydWN0IGllZWU4MDIxMV90eHEgewogICogQElFRUU4MDIxMV9IV19TVVBQT1JUU19ORFBfQkxPQ0tBQ0s6IEhXIGNhbiB0cmFuc21pdC9yZWNlaXZlIFMxRyBORFAKICAqCUJsb2NrQWNrIGZyYW1lcy4KICAqCiYjNDM7ICogQElFRUU4MDIxMV9IV19UWF9OT19QVVNIQkFDSzogVGhlIGRyaXZlciBoYW5kcyBldmVyeSBmcmFtZSBpdCBkZXF1ZXVlcwomIzQzOyAqCXRvIHRoZSBoYXJkd2FyZSBhdCBvbmNlLCBhbmQgdGhlIGhhcmR3YXJlIHBpY2tzIHRoZSBzdGF0aW9uIGl0IHNlcnZlcwomIzQzOyAqCW5leHQsIHNvIHRoZSBvcmRlciBpbiB3aGljaCBtYWM4MDIxMSBzY2hlZHVsZXMgdGhlIHF1ZXVlcyBkb2VzIG5vdAomIzQzOyAqCXJlYWNoIHRoZSBhaXIuIG1hYzgwMjExIHRoZW4gYXBwbGllcyB0aGUgYWlydGltZSB3ZWlnaHQgdG8gdGhlCiYjNDM7ICoJYWlydGltZSBxdWV1ZSBsaW1pdCBpbnN0ZWFkLgomIzQzOyAqCiAgKiBATlVNX0lFRUU4MDIxMV9IV19GTEFHUzogbnVtYmVyIG9mIGhhcmR3YXJlIGZsYWdzLCB1c2VkIGZvciBzaXppbmcgYXJyYXlzCiAgKi8KIGVudW0gaWVlZTgwMjExX2h3X2ZsYWdzIHsKQEAgLTMxNDcsNiAmIzQzOzMxNTMsNyBAQCBlbnVtIGllZWU4MDIxMV9od19mbGFncyB7CiAJSUVFRTgwMjExX0hXX0hBTkRMRVNfUVVJRVRfQ1NBLAogCUlFRUU4MDIxMV9IV19TVFJJQ1QsCiAJSUVFRTgwMjExX0hXX1NVUFBPUlRTX05EUF9CTE9DS0FDSywKJiM0MzsJSUVFRTgwMjExX0hXX1RYX05PX1BVU0hCQUNLLAogCiAJLyoga2VlcCBsYXN0LCBvYnZpb3VzbHkgKi8KIAlOVU1fSUVFRTgwMjExX0hXX0ZMQUdTCmRpZmYgLS1naXQgYS9uZXQvbWFjODAyMTEvZGVidWdmcy5jIGIvbmV0L21hYzgwMjExL2RlYnVnZnMuYwppbmRleCA4OTQ2YjAyNzc4MmNmLi5kZGJmYTk5MWVjNzRlIDEwMDY0NAotLS0gYS9uZXQvbWFjODAyMTEvZGVidWdmcy5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9tYWM4MDIxMS9kZWJ1Z2ZzLmMKQEAgLTQ2Miw2ICYjNDM7NDYyLDcgQEAgc3RhdGljIGNvbnN0IGNoYXIgKmh3X2ZsYWdfbmFtZXNbXSA9IHsKIAlGTEFHKEhBTkRMRVNfUVVJRVRfQ1NBKSwKIAlGTEFHKFNUUklDVCksCiAJRkxBRyhTVVBQT1JUU19ORFBfQkxPQ0tBQ0spLAomIzQzOwlGTEFHKFRYX05PX1BVU0hCQUNLKSwKICN1bmRlZiBGTEFHCiB9OwogCmRpZmYgLS1naXQgYS9uZXQvbWFjODAyMTEvdHguYyBiL25ldC9tYWM4MDIxMS90eC5jCmluZGV4IGMzMzA5Mjk2MGRmMjYuLmM5NGVmZmY0OGQ3NDcgMTAwNjQ0Ci0tLSBhL25ldC9tYWM4MDIxMS90eC5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9tYWM4MDIxMS90eC5jCkBAIC00MjE3LDYgJiM0Mzs0MjE3LDIxIEBAIEVYUE9SVF9TWU1CT0woX19pZWVlODAyMTFfc2NoZWR1bGVfdHhxKTsKIAogREVGSU5FX1NUQVRJQ19LRVlfRkFMU0UoYXFsX2Rpc2FibGUpOwogCiYjNDM7c3RhdGljIHUzMiBpZWVlODAyMTFfYXFsX3N0YV9saW1pdChzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCwKJiM0MzsJCQkJICAgc3RydWN0IHN0YV9pbmZvICpzdGEsIHUzMiBsaW1pdCkKJiM0Mzt7CiYjNDM7CXUzMiBzY2FsZWQ7CiYjNDM7CiYjNDM7CWlmICghaWVlZTgwMjExX2h3X2NoZWNrKCZhbXA7bG9jYWwtJmd0O2h3LCBUWF9OT19QVVNIQkFDSykgfHwKJiM0MzsJICAgIHN0YS0mZ3Q7YWlydGltZV93ZWlnaHQgPT0gSUVFRTgwMjExX0RFRkFVTFRfQUlSVElNRV9XRUlHSFQpCiYjNDM7CQlyZXR1cm4gbGltaXQ7CiYjNDM7CiYjNDM7CXNjYWxlZCA9IG11bHRfZnJhYyhsaW1pdCwgc3RhLSZndDthaXJ0aW1lX3dlaWdodCwKJiM0MzsJCQkgICBJRUVFODAyMTFfREVGQVVMVF9BSVJUSU1FX1dFSUdIVCk7CiYjNDM7CiYjNDM7CXJldHVybiBtaW4oc2NhbGVkLCBtYXgobGltaXQsIGxvY2FsLSZndDthcWxfdGhyZXNob2xkKSk7CiYjNDM7fQomIzQzOwogYm9vbCBpZWVlODAyMTFfdHhxX2FpcnRpbWVfY2hlY2soc3RydWN0IGllZWU4MDIxMV9odyAqaHcsCiAJCQkJIHN0cnVjdCBpZWVlODAyMTFfdHhxICp0eHEpCiB7CkBAIC00MjM4LDEzICYjNDM7NDI1MywxNSBAQCBib29sIGllZWU4MDIxMV90eHFfYWlydGltZV9jaGVjayhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywKIAogCXN0YSA9IGNvbnRhaW5lcl9vZih0eHEtJmd0O3N0YSwgc3RydWN0IHN0YV9pbmZvLCBzdGEpOwogCWlmIChhdG9taWNfcmVhZCgmYW1wO3N0YS0mZ3Q7YWlydGltZVt0eHEtJmd0O2FjXS5hcWxfdHhfcGVuZGluZykgJmx0OwotCSAgICBzdGEtJmd0O2FpcnRpbWVbdHhxLSZndDthY10uYXFsX2xpbWl0X2xvdykKJiM0MzsJICAgIGllZWU4MDIxMV9hcWxfc3RhX2xpbWl0KGxvY2FsLCBzdGEsCiYjNDM7CQkJCSAgICBzdGEtJmd0O2FpcnRpbWVbdHhxLSZndDthY10uYXFsX2xpbWl0X2xvdykpCiAJCXJldHVybiB0cnVlOwogCiAJaWYgKGF0b21pY19yZWFkKCZhbXA7bG9jYWwtJmd0O2FxbF90b3RhbF9wZW5kaW5nX2FpcnRpbWUpICZsdDsKIAkgICAgbG9jYWwtJmd0O2FxbF90aHJlc2hvbGQgJmFtcDsmYW1wOwogCSAgICBhdG9taWNfcmVhZCgmYW1wO3N0YS0mZ3Q7YWlydGltZVt0eHEtJmd0O2FjXS5hcWxfdHhfcGVuZGluZykgJmx0OwotCSAgICBzdGEtJmd0O2FpcnRpbWVbdHhxLSZndDthY10uYXFsX2xpbWl0X2hpZ2gpCiYjNDM7CSAgICBpZWVlODAyMTFfYXFsX3N0YV9saW1pdChsb2NhbCwgc3RhLAomIzQzOwkJCQkgICAgc3RhLSZndDthaXJ0aW1lW3R4cS0mZ3Q7YWNdLmFxbF9saW1pdF9oaWdoKSkKIAkJcmV0dXJuIHRydWU7CiAKIAlyZXR1cm4gZmFsc2U7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDE4OjA5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQyOTQKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiAzNzUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQYXRjaCBmb3IgRnV6emluZyBQb3RlbnRpYWwqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoaXMgcGF0Y2ggaXMgZXZlbiAqd29ydGgqIGZ1enppbmcuIFdlIGhhdmUgYSBwYXRjaCBkaWZmIHdpdGggY2hhbmdlcyBpbiBgYXRoMTFrL21hYy5jYCwgYG1hYzgwMjExLmhgLCBgZGVidWdmcy5jYCwgYW5kIGB0eC5jYC4gVGhlIGNvcmUgc2VlbXMgdG8gYmUgYXJvdW5kIGEgYFRYX05PX1BVU0hCQUNLYCBmbGFnLCBhbmQgdGhlIGFkZGl0aW9uIG9mIGBpZWVlODAyMTFfYXFsX3N0YV9saW1pdCgpYCBpbiB0aGUgdHJhbnNtaXQgcGF0aC4gVGhpcyBkZWZpbml0ZWx5IHdhcnJhbnRzIGEgY2xvc2VyIGxvb2suCgpNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZGV0ZXJtaW5lIHRoZSByZWFjaGFiaWxpdHkgb2YgdGhlc2UgYXJlYXMgb2YgY29kZSB3aXRoaW4gdGhlIGJyb2FkZXIgTGludXgga2VybmVsLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBtYWM4MDIxMSB3aXJlbGVzcyBzdWJzeXN0ZW0uIEdpdmVuIG1hYzgwMjExJiMzOTtzIGNvcmUgcm9sZSBpbiB3aXJlbGVzcyBuZXR3b3JraW5nLCBpdCBzaG91bGQgYmUgYSBqdWljeSB0YXJnZXQuIEx1Y2tpbHksIHNpbmNlIEkgYWxyZWFkeSBrbm93IHN5emthbGxlciBoYXMgaGFkIHN1Y2Nlc3MgZnV6emluZyBtYWM4MDIxMSB2aWEgYG1hYzgwMjExX2h3c2ltYCwgYHZpcnRfd2lmaWAsIGBjZmc4MDIxMWAsIGFuZCBgbmw4MDIxMWAsIHRoYXQmIzM5O3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBUaGlzIHN1Z2dlc3RzIGl0IGlzIGRlZmluaXRlbHkgZnV6emFibGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBhbmQgR0NFLCB3aGljaCBpcyBhIGdyZWF0IHNpZ24uCgpOZXh0IHN0ZXA6IGxldCYjMzk7cyB2ZXJpZnkgbWFjODAyMTEmIzM5O3MgcGxhY2UgaW4gdGhlIHdpcmVsZXNzIHN0YWNrLiBJIG5lZWQgdG8gY29uZmlybSBpdHMgcm9sZSBpbiB0aGlzIHNwZWNpZmljIGFyZWEg4oCTIGlzIGl0IGNvcmUsIG9yIHJlYWNoYWJsZSB0aHJvdWdoIHRoZSBpbnRlcmZhY2VzIEkgbWVudGlvbmVkPyBUaGVuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25maWcgb3B0aW9ucyBjb250cm9sbGluZyB0aGVzZSBiaXRzLiBJJiMzOTtsbCBuZWVkIHRvIHVzZSBzb21lIGBncmVwYCBtYWdpYyBpbiB0aGUga2VybmVsIHNvdXJjZSB0byBsb29rIGZvciBjb25maWd1cmF0aW9ucyBhbmQgY2FsbCBncmFwaHMuIEkgd2FudCB0byB1bmRlcnN0YW5kIGV4YWN0bHkgKmhvdyogdGhlc2UgbmV3IGNoYW5nZXMgYXJlIHVzZWQsIGFuZCB3aGF0IGNvbmZpZ3VyYXRpb25zIGFyZSByZXF1aXJlZCB0byB0cmlnZ2VyIHRoZW0uIFRoaXMgd2lsbCBndWlkZSBteSBmdXp6aW5nIHNldHVwLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDE4OjA5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2llZWU4MDIxMV90eHFfYWlydGltZV9jaGVjayYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvdHguYz0zODg2PXN0cnVjdCBza19idWZmICppZWVlODAyMTFfdHhfZGVxdWV1ZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbi0tXG5uZXQvbWFjODAyMTEvdHguYy0zOTA0LVxubmV0L21hYzgwMjExL3R4LmM6MzkwNTpcdGlmICghaWVlZTgwMjExX3R4cV9haXJ0aW1lX2NoZWNrKGh3LCB0eHEpKVxubmV0L21hYzgwMjExL3R4LmMtMzkwNi1cdFx0cmV0dXJuIE5VTEw7XG4tLVxubmV0L21hYzgwMjExL3R4LmM9NDExNT1zdHJ1Y3QgaWVlZTgwMjExX3R4cSAqaWVlZTgwMjExX25leHRfdHhxKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCB1OCBhYylcbi0tXG5uZXQvbWFjODAyMTEvdHguYy00MTQ0LVxubmV0L21hYzgwMjExL3R4LmM6NDE0NTpcdGFxbF9jaGVjayA9IGllZWU4MDIxMV90eHFfYWlydGltZV9jaGVjayhodywgXHUwMDI2dHhxaS1cdTAwM2V0eHEpO1xubmV0L21hYzgwMjExL3R4LmMtNDE0Ni1cdGlmIChhcWxfY2hlY2spXG4tLVxubmV0L21hYzgwMjExL3R4LmM9NDIyMD1zdGF0aWMgdTMyIGllZWU4MDIxMV9hcWxfc3RhX2xpbWl0KHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxuLS1cbm5ldC9tYWM4MDIxMS90eC5jLTQyMzQtXG5uZXQvbWFjODAyMTEvdHguYzo0MjM1OmJvb2wgaWVlZTgwMjExX3R4cV9haXJ0aW1lX2NoZWNrKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxubmV0L21hYzgwMjExL3R4LmMtNDIzNi1cdFx0XHRcdCBzdHJ1Y3QgaWVlZTgwMjExX3R4cSAqdHhxKVxuLS1cbm5ldC9tYWM4MDIxMS90eC5jLTQyNjgtfVxubmV0L21hYzgwMjExL3R4LmM6NDI2OTpFWFBPUlRfU1lNQk9MKGllZWU4MDIxMV90eHFfYWlydGltZV9jaGVjayk7XG5uZXQvbWFjODAyMTEvdHguYy00MjcwLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDE4OjA5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU2NDAKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiAzOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyBpZiBJIHdlcmUgdGhpbmtpbmcgdGhlc2UgdGhvdWdodHM6CgoqKkFuYWx5emluZyBgaWVlZTgwMjExX2FxbF9zdGFfbGltaXRgIGluIGBuZXQvbWFjODAyMTEvdHguY2AqKgoKT2theSwgSSBuZWVkIHRvIGRpZyBpbnRvIGhvdyB0aGlzIEFRTCAoQWlydGltZSBGYWlybmVzcyBRdWV1ZSBMZW5ndGgpIHN0YXRpb24gbGltaXQgaXMgYmVpbmcgaGFuZGxlZC4gVGhlIG9idmlvdXMgcGxhY2UgdG8gc3RhcnQgaXMgYG5ldC9tYWM4MDIxMS90eC5jYCwgd2hlcmUgSSBhc3N1bWUgdGhlIGFjdHVhbCB0cmFuc21pc3Npb24gbG9naWMgYW5kIHF1ZXVlIG1hbmFnZW1lbnQgcmVzaWRlLiBJJiMzOTtsbCBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IGBpZWVlODAyMTFfYXFsX3N0YV9saW1pdGAgaXMgKnVzZWQqIGZpcnN0LiBJcyBpdCBhIGhhcmQgbGltaXQ/IElzIGl0IGEgdGFyZ2V0PyBJcyBpdCBkeW5hbWljPyBJJiMzOTtsbCBiZSBsb29raW5nIGZvciB3aGVyZSB0aGlzIHZhcmlhYmxlIGlzIHJlYWQsIGNvbXBhcmVkLCBhbmQgbW9kaWZpZWQsIGFuZCB3aGF0IHRoYXQgcmV2ZWFscyBhYm91dCB0aGUgYmVoYXZpb3Igb2YgdGhlIEFRTSBzeXN0ZW0gYXMgYSB3aG9sZS4gS25vd2luZyB0aGUgY29udGV4dCBhcm91bmQgdGhpcyBmdW5jdGlvbiB3aWxsIGFsc28gYmUgdml0YWw7IGhvdyBhcmUgdGhlIHF1ZXVlcyBzdHJ1Y3R1cmVkLCB3aGF0IG90aGVyIGZhY3RvcnMgaW5mbHVlbmNlIHBhY2tldCBzY2hlZHVsaW5nLCBhbmQgd2hhdCBhcmUgdGhlIGltcGxpY2F0aW9ucyBmb3IgcGVyLXN0YXRpb24gZmFpcm5lc3MgYW5kIG92ZXJhbGwgdGhyb3VnaHB1dD8gSSYjMzk7bGwgcHJvYmFibHkgYWxzbyBuZWVkIHRvIGtlZXAgYW4gZXllIG9uIHJlbGF0ZWQgZnVuY3Rpb25zIGxpa2UgdGhvc2UgaGFuZGxpbmcgcmF0ZSBjb250cm9sIGFuZCBmcmFtZSBhZ2dyZWdhdGlvbiBhcyB0aGV5JiMzOTtyZSBhbGwgaW50ZXItcmVsYXRlZC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCYjMzk7cyBjYXVzaW5nIHRoZSBwcm9ibGVtLCBhbmQgdGhpcyBzZWVtcyBsaWtlIHRoZSBsaWtlbHkgcGxhY2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMTg6MDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvdHguYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDQyMTUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7NDIxNTpcdH1cbjQyMTY6XHRFWFBPUlRfU1lNQk9MKF9faWVlZTgwMjExX3NjaGVkdWxlX3R4cSk7XG40MjE3Olx0XG40MjE4Olx0REVGSU5FX1NUQVRJQ19LRVlfRkFMU0UoYXFsX2Rpc2FibGUpO1xuNDIxOTpcdFxuNDIyMDpcdHN0YXRpYyB1MzIgaWVlZTgwMjExX2FxbF9zdGFfbGltaXQoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXG40MjIxOlx0XHRcdFx0XHQgICBzdHJ1Y3Qgc3RhX2luZm8gKnN0YSwgdTMyIGxpbWl0KVxuNDIyMjpcdHtcbjQyMjM6XHRcdHUzMiBzY2FsZWQ7XG40MjI0Olx0XG40MjI1Olx0XHRpZiAoIWllZWU4MDIxMV9od19jaGVjayhcdTAwMjZsb2NhbC1cdTAwM2VodywgVFhfTk9fUFVTSEJBQ0spIHx8XG40MjI2Olx0XHQgICAgc3RhLVx1MDAzZWFpcnRpbWVfd2VpZ2h0ID09IElFRUU4MDIxMV9ERUZBVUxUX0FJUlRJTUVfV0VJR0hUKVxuNDIyNzpcdFx0XHRyZXR1cm4gbGltaXQ7XG40MjI4Olx0XG40MjI5Olx0XHRzY2FsZWQgPSBtdWx0X2ZyYWMobGltaXQsIHN0YS1cdTAwM2VhaXJ0aW1lX3dlaWdodCxcbjQyMzA6XHRcdFx0XHQgICBJRUVFODAyMTFfREVGQVVMVF9BSVJUSU1FX1dFSUdIVCk7XG40MjMxOlx0XG40MjMyOlx0XHRyZXR1cm4gbWluKHNjYWxlZCwgbWF4KGxpbWl0LCBsb2NhbC1cdTAwM2VhcWxfdGhyZXNob2xkKSk7XG40MjMzOlx0fVxuNDIzNDpcdFxuNDIzNTpcdGJvb2wgaWVlZTgwMjExX3R4cV9haXJ0aW1lX2NoZWNrKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuNDIzNjpcdFx0XHRcdFx0IHN0cnVjdCBpZWVlODAyMTFfdHhxICp0eHEpXG40MjM3Olx0e1xuNDIzODpcdFx0c3RydWN0IHN0YV9pbmZvICpzdGE7XG40MjM5Olx0XHRzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCA9IGh3X3RvX2xvY2FsKGh3KTtcbjQyNDA6XHRcbjQyNDE6XHRcdGlmICghd2lwaHlfZXh0X2ZlYXR1cmVfaXNzZXQobG9jYWwtXHUwMDNlaHcud2lwaHksIE5MODAyMTFfRVhUX0ZFQVRVUkVfQVFMKSlcbjQyNDI6XHRcdFx0cmV0dXJuIHRydWU7XG40MjQzOlx0XG40MjQ0Olx0XHRpZiAoc3RhdGljX2JyYW5jaF91bmxpa2VseShcdTAwMjZhcWxfZGlzYWJsZSkpXG40MjQ1Olx0XHRcdHJldHVybiB0cnVlO1xuNDI0NjpcdFxuNDI0NzpcdFx0aWYgKCF0eHEtXHUwMDNlc3RhKVxuNDI0ODpcdFx0XHRyZXR1cm4gYXRvbWljX3JlYWQoXHUwMDI2bG9jYWwtXHUwMDNlYXFsX21jX3BlbmRpbmdfYWlydGltZSkgXHUwMDNjXG40MjQ5Olx0XHRcdCAgICAgICBsb2NhbC1cdTAwM2VhcWxfdHhxX2xpbWl0X21jO1xuNDI1MDpcdFxuNDI1MTpcdFx0aWYgKHVubGlrZWx5KHR4cS1cdTAwM2V0aWQgPT0gSUVFRTgwMjExX05VTV9USURTKSlcbjQyNTI6XHRcdFx0cmV0dXJuIHRydWU7XG40MjUzOlx0XG40MjU0Olx0XHRzdGEgPSBjb250YWluZXJfb2YodHhxLVx1MDAzZXN0YSwgc3RydWN0IHN0YV9pbmZvLCBzdGEpO1xuNDI1NTpcdFx0aWYgKGF0b21pY19yZWFkKFx1MDAyNnN0YS1cdTAwM2VhaXJ0aW1lW3R4cS1cdTAwM2VhY10uYXFsX3R4X3BlbmRpbmcpIFx1MDAzY1xuNDI1NjpcdFx0ICAgIGllZWU4MDIxMV9hcWxfc3RhX2xpbWl0KGxvY2FsLCBzdGEsXG40MjU3Olx0XHRcdFx0XHQgICAgc3RhLVx1MDAzZWFpcnRpbWVbdHhxLVx1MDAzZWFjXS5hcWxfbGltaXRfbG93KSlcbjQyNTg6XHRcdFx0cmV0dXJuIHRydWU7XG40MjU5Olx0XG40MjYwOlx0XHRpZiAoYXRvbWljX3JlYWQoXHUwMDI2bG9jYWwtXHUwMDNlYXFsX3RvdGFsX3BlbmRpbmdfYWlydGltZSkgXHUwMDNjXG40MjYxOlx0XHQgICAgbG9jYWwtXHUwMDNlYXFsX3RocmVzaG9sZCBcdTAwMjZcdTAwMjZcbjQyNjI6XHRcdCAgICBhdG9taWNfcmVhZChcdTAwMjZzdGEtXHUwMDNlYWlydGltZVt0eHEtXHUwMDNlYWNdLmFxbF90eF9wZW5kaW5nKSBcdTAwM2NcbjQyNjM6XHRcdCAgICBpZWVlODAyMTFfYXFsX3N0YV9saW1pdChsb2NhbCwgc3RhLFxuNDI2NDpcdFx0XHRcdFx0ICAgIHN0YS1cdTAwM2VhaXJ0aW1lW3R4cS1cdTAwM2VhY10uYXFsX2xpbWl0X2hpZ2gpKVxuNDI2NTpcdFx0XHRyZXR1cm4gdHJ1ZTtcbjQyNjY6XHRcbjQyNjc6XHRcdHJldHVybiBmYWxzZTtcbjQyNjg6XHR9XG40MjY5Olx0RVhQT1JUX1NZTUJPTChpZWVlODAyMTFfdHhxX2FpcnRpbWVfY2hlY2spO1xuNDI3MDpcdFxuNDI3MTpcdHUzMiBpZWVlODAyMTFfdHhxX2FxbF9wZW5kaW5nKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuNDI3MjpcdFx0XHRcdCAgICAgIHN0cnVjdCBpZWVlODAyMTFfdHhxICp0eHEpXG40MjczOlx0e1xuNDI3NDpcdFx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBod190b19sb2NhbChodyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMTg6MDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzA2MQoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDYxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludmVzdGlnYXRpbmcgTUFDODAyMTEgQ29uZmlndXJhdGlvbiBhbmQgRHJpdmVyIERlcGVuZGVuY2llcyoqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbi4gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiBob3cgYG1hYzgwMjExYCBpcyBjb25maWd1cmVkIGFuZCB3aGljaCBkcml2ZXJzIGFyZSBhY3R1YWxseSB1c2luZyBpdC4gTXkgZmlyc3Qgc3RvcCBzaG91bGQgYmUgdG8gZXhhbWluZSB0aGUgY29uZmlndXJhdGlvbiBmaWxlcy4gTGV0JiMzOTtzIHN0YXJ0IHdpdGggYG5ldC9tYWM4MDIxMS9LY29uZmlnYC4gVGhpcyBzaG91bGQgZ2l2ZSBtZSBhIGhpZ2gtbGV2ZWwgdmlldyBvZiB0aGUgY29uZmlndXJhYmxlIG9wdGlvbnMgd2l0aGluIHRoZSBgbWFjODAyMTFgIGNvcmUuIFRoZW4sIHNpbmNlIEkga25vdyBhdGgxMWsgaXMgYSBtYWpvciB3aXJlbGVzcyBkcml2ZXIgdGhhdCByZWxpZXMgb24gdGhpcyBzdWJzeXN0ZW0sIEkgc2hvdWxkIGFsc28gbG9vayBhdCB0aGUgYXRoMTFrJiMzOTtzIEtjb25maWcgZmlsZSAoYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZ2ApLiBDb21wYXJpbmcgdGhlc2UgdHdvIHdpbGwgaWxsdW1pbmF0ZSBob3cgZGVwZW5kZW5jaWVzIGFyZSBoYW5kbGVkIGFuZCBob3cgdGhlIHNwZWNpZmljIGRyaXZlciBpbnRlcmFjdHMgd2l0aCB0aGUgbW9yZSBnZW5lcmFsIG1hYzgwMjExIGZyYW1ld29yay4gVGhpcyBzaG91bGQgcHJvdmlkZSBzb21lIHVzZWZ1bCBpbmZvcm1hdGlvbiByZWdhcmRpbmcgb3ZlcmFsbCBzeXN0ZW0gYmVoYXZpb3IuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMTg6MDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE1BQzgwMjExJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyOmNvbmZpZyBNQUM4MDIxMVxubmV0L21hYzgwMjExL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O0dlbmVyaWMgSUVFRSA4MDIuMTEgTmV0d29ya2luZyBTdGFjayAobWFjODAyMTEpXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWc9MTk9aWYgTUFDODAyMTEgIT0gblxubmV0L21hYzgwMjExL0tjb25maWctMjAtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMTpjb25maWcgTUFDODAyMTFfSEFTX1JDXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMi1cdGJvb2xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIzLVxubmV0L21hYzgwMjExL0tjb25maWc6MjQ6Y29uZmlnIE1BQzgwMjExX1JDX01JTlNUUkVMXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNS1cdGJvb2wgXCYjMzQ7TWluc3RyZWxcJiMzNDsgaWYgRVhQRVJUXG4tLVxubmV0L21hYzgwMjExL0tjb25maWc9MzE9Y2hvaWNlXG4tLVxubmV0L21hYzgwMjExL0tjb25maWctNDAtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo0MTpjb25maWcgTUFDODAyMTFfUkNfREVGQVVMVF9NSU5TVFJFTFxubmV0L21hYzgwMjExL0tjb25maWctNDItXHRib29sIFwmIzM0O01pbnN0cmVsXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWc9NDg9ZW5kY2hvaWNlXG5uZXQvbWFjODAyMTEvS2NvbmZpZy00OS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjUwOmNvbmZpZyBNQUM4MDIxMV9SQ19ERUZBVUxUXG5uZXQvbWFjODAyMTEvS2NvbmZpZy01MS1cdHN0cmluZ1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnPTU3PWNvbW1lbnQgXCYjMzQ7U29tZSB3aXJlbGVzcyBkcml2ZXJzIHJlcXVpcmUgYSByYXRlIGNvbnRyb2wgYWxnb3JpdGhtXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctNTktXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo2MDpjb25maWcgTUFDODAyMTFfS1VOSVRfVEVTVFxubmV0L21hYzgwMjExL0tjb25maWctNjEtXHR0cmlzdGF0ZSBcJiMzNDtLVW5pdCB0ZXN0cyBmb3IgbWFjODAyMTFcJiMzNDsgaWYgIUtVTklUX0FMTF9URVNUU1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTY5LVxubmV0L21hYzgwMjExL0tjb25maWc6NzA6Y29uZmlnIE1BQzgwMjExX01FU0hcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTcxLVx0Ym9vbCBcJiMzNDtFbmFibGUgbWFjODAyMTEgbWVzaCBuZXR3b3JraW5nIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy03OC1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjc5OmNvbmZpZyBNQUM4MDIxMV9MRURTXG5uZXQvbWFjODAyMTEvS2NvbmZpZy04MC1cdGJvb2wgXCYjMzQ7RW5hYmxlIExFRCB0cmlnZ2Vyc1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTg3LVxubmV0L21hYzgwMjExL0tjb25maWc6ODg6Y29uZmlnIE1BQzgwMjExX0RFQlVHRlNcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTg5LVx0Ym9vbCBcJiMzNDtFeHBvcnQgbWFjODAyMTEgaW50ZXJuYWxzIGluIERlYnVnRlNcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy05Ni1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjk3OmNvbmZpZyBNQUM4MDIxMV9NRVNTQUdFX1RSQUNJTkdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTk4LVx0Ym9vbCBcJiMzNDtUcmFjZSBhbGwgbWFjODAyMTEgZGVidWcgbWVzc2FnZXNcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMDktXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxMTA6bWVudWNvbmZpZyBNQUM4MDIxMV9ERUJVR19NRU5VXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMTEtXHRib29sIFwmIzM0O1NlbGVjdCBtYWM4MDIxMSBkZWJ1Z2dpbmcgZmVhdHVyZXNcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMTUtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxMTY6Y29uZmlnIE1BQzgwMjExX05PSU5MSU5FXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMTctXHRib29sIFwmIzM0O0RvIG5vdCBpbmxpbmUgVFgvUlggaGFuZGxlcnNcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMzEtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxMzI6Y29uZmlnIE1BQzgwMjExX1ZFUkJPU0VfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTEzMy1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBkZWJ1Z2dpbmcgb3V0cHV0XCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMTQyLVxubmV0L21hYzgwMjExL0tjb25maWc6MTQzOmNvbmZpZyBNQUM4MDIxMV9NTE1FX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNDQtXHRib29sIFwmIzM0O1ZlcmJvc2UgbWFuYWdlZCBNTE1FIG91dHB1dFwmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE1My1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE1NDpjb25maWcgTUFDODAyMTFfU1RBX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNTUtXHRib29sIFwmIzM0O1ZlcmJvc2Ugc3RhdGlvbiBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNjItXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxNjM6Y29uZmlnIE1BQzgwMjExX0hUX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNjQtXHRib29sIFwmIzM0O1ZlcmJvc2UgSFQgZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMTc0LVxubmV0L21hYzgwMjExL0tjb25maWc6MTc1OmNvbmZpZyBNQUM4MDIxMV9PQ0JfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE3Ni1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBPQ0IgZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMTg1LVxubmV0L21hYzgwMjExL0tjb25maWc6MTg2OmNvbmZpZyBNQUM4MDIxMV9JQlNTX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xODctXHRib29sIFwmIzM0O1ZlcmJvc2UgSUJTUyBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xOTYtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxOTc6Y29uZmlnIE1BQzgwMjExX1BTX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xOTgtXHRib29sIFwmIzM0O1ZlcmJvc2UgcG93ZXJzYXZlIG1vZGUgZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMjA4LVxubmV0L21hYzgwMjExL0tjb25maWc6MjA5OmNvbmZpZyBNQUM4MDIxMV9NUExfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIxMC1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBtZXNoIHBlZXIgbGluayBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMjEtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMjI6Y29uZmlnIE1BQzgwMjExX01QQVRIX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMjMtXHRib29sIFwmIzM0O1ZlcmJvc2UgbWVzaCBwYXRoIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIzNC1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIzNTpjb25maWcgTUFDODAyMTFfTUhXTVBfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIzNi1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBtZXNoIEhXTVAgcm91dGluZyBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNDctXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNDg6Y29uZmlnIE1BQzgwMjExX01FU0hfU1lOQ19ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMjQ5LVx0Ym9vbCBcJiMzNDtWZXJib3NlIG1lc2ggc3luY2hyb25pemF0aW9uIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI1OC1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI1OTpjb25maWcgTUFDODAyMTFfTUVTSF9DU0FfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI2MC1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBtZXNoIGNoYW5uZWwgc3dpdGNoIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI2OS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI3MDpjb25maWcgTUFDODAyMTFfTUVTSF9QU19ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMjcxLVx0Ym9vbCBcJiMzNDtWZXJib3NlIG1lc2ggcG93ZXJzYXZlIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI4MC1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI4MTpjb25maWcgTUFDODAyMTFfVERMU19ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMjgyLVx0Ym9vbCBcJiMzNDtWZXJib3NlIFRETFMgZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMjkyLVxubmV0L21hYzgwMjExL0tjb25maWc6MjkzOmNvbmZpZyBNQUM4MDIxMV9ERUJVR19DT1VOVEVSU1xubmV0L21hYzgwMjExL0tjb25maWctMjk0LVx0Ym9vbCBcJiMzNDtFeHRyYSBzdGF0aXN0aWNzIGZvciBUWC9SWCBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0zMDctXG5uZXQvbWFjODAyMTEvS2NvbmZpZzozMDg6Y29uZmlnIE1BQzgwMjExX1NUQV9IQVNIX01BWF9TSVpFXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0zMDktXHRpbnQgXCYjMzQ7U3RhdGlvbiBoYXNoIHRhYmxlIG1heGltdW0gc2l6ZVwmIzM0OyBpZiBNQUM4MDIxMV9ERUJVR19NRU5VXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMTg6MDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTUzMgoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDIxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKktlcm5lbCBDb25maWd1cmF0aW9uIENvbnRleHQgU2hpZnQ6IGF0aDExayBLY29uZmlnKioKCkFscmlnaHQsIHNvIHdlJiMzOTtyZSBkaXZpbmcgYmFjayBpbnRvIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiwgc3BlY2lmaWNhbGx5IHRoZSBhdGgxMWsgd2lyZWxlc3MgZHJpdmVyLiBJIG5lZWQgdG8gbWFrZSBhYnNvbHV0ZWx5IHN1cmUgd2UmIzM5O3ZlIGNvbnNpZGVyZWQgdGhlIHJlbGV2YW50IEtjb25maWcgb3B0aW9ucy4gSXQmIzM5O3MgdG9vIGVhc3kgdG8gb3Zlcmxvb2sgc29tZXRoaW5nLCBlc3BlY2lhbGx5IGluIGEgc3ByYXdsaW5nIHByb2plY3QgbGlrZSB0aGUga2VybmVsLiBTbywgSSBuZWVkIHRvIGdvIG92ZXIgdGhlIGRyaXZlciYjMzk7cyBLY29uZmlnIGZpbGUsIHdoaWNoIGlzIGxvY2F0ZWQgaW4gZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLiBJdCBpcyBpbXBvcnRhbnQgdG8gZnVsbHkgdW5kZXJzdGFuZCB0aGUgZmVhdHVyZXMgdGhhdCBoYXZlIGJlZW4gZW5hYmxlZCBhbmQgZGlzYWJsZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDE4OjA5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0FUSDExSyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDkzMTAgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhclxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnOjI6Y29uZmlnIEFUSDExS1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtRdWFsY29tbSA4MDIuMTFheCBjaGlwc2V0IHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWctMTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWc6MTM6Y29uZmlnIEFUSDExS19BSEJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZy0xNC1cdHRyaXN0YXRlIFwmIzM0O0F0aGVyb3MgYXRoMTFrIEFIQiBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWc6MTU6XHRkZXBlbmRzIG9uIEFUSDExS1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTE2LVx0ZGVwZW5kcyBvbiBSRU1PVEVQUk9DXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTE5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnOjIwOmNvbmZpZyBBVEgxMUtfUENJXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWctMjEtXHR0cmlzdGF0ZSBcJiMzNDtBdGhlcm9zIGF0aDExayBQQ0kgc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnOjIyOlx0ZGVwZW5kcyBvbiBBVEgxMUsgXHUwMDI2XHUwMDI2IFBDSVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTIzLVx0c2VsZWN0IE1ISV9CVVNcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWctMjktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWc6MzA6Y29uZmlnIEFUSDExS19ERUJVR1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTMxLVx0Ym9vbCBcJiMzNDtRQ0EgYXRoMTFrIGRlYnVnZ2luZ1wmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnOjMyOlx0ZGVwZW5kcyBvbiBBVEgxMUtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZy0zMy1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWctMzctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWc6Mzg6Y29uZmlnIEFUSDExS19ERUJVR0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWctMzktXHRib29sIFwmIzM0O1FDQSBhdGgxMWsgZGVidWdmcyBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWc6NDA6XHRkZXBlbmRzIG9uIEFUSDExSyBcdTAwMjZcdTAwMjYgREVCVUdfRlMgXHUwMDI2XHUwMDI2IE1BQzgwMjExX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZy00MS1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWctNDUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWc6NDY6Y29uZmlnIEFUSDExS19UUkFDSU5HXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWctNDctXHRib29sIFwmIzM0O2F0aDExayB0cmFjaW5nIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZzo0ODpcdGRlcGVuZHMgb24gQVRIMTFLIFx1MDAyNlx1MDAyNiBFVkVOVF9UUkFDSU5HXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWctNDktXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTUxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnOjUyOmNvbmZpZyBBVEgxMUtfU1BFQ1RSQUxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZy01My1cdGJvb2wgXCYjMzQ7UUNBIGF0aDExayBzcGVjdHJhbCBzY2FuIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZzo1NDpcdGRlcGVuZHMgb24gQVRIMTFLX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZy01NS1cdGRlcGVuZHMgb24gUkVMQVlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWctNjAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWc6NjE6Y29uZmlnIEFUSDExS19DRlJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZy02Mi1cdGJvb2wgXCYjMzQ7YXRoMTFrIGNoYW5uZWwgZnJlcXVlbmN5IHJlc3BvbnNlIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZzo2MzpcdGRlcGVuZHMgb24gQVRIMTFLX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZy02NC1cdGRlcGVuZHMgb24gUkVMQVlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL01ha2VmaWxlLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL01ha2VmaWxlOjI6b2JqLSQoQ09ORklHX0FUSDExSykgJiM0Mzs9IGF0aDExay5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL01ha2VmaWxlLTMtYXRoMTFrLXkgJiM0Mzs9IGNvcmUubyBcXFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvTWFrZWZpbGUtMjMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL01ha2VmaWxlOjI0OmF0aDExay0kKENPTkZJR19BVEgxMUtfREVCVUdGUykgJiM0Mzs9IGRlYnVnZnMubyBkZWJ1Z2ZzX2h0dF9zdGF0cy5vIGRlYnVnZnNfc3RhLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvTWFrZWZpbGUtMjUtYXRoMTFrLSQoQ09ORklHX05MODAyMTFfVEVTVE1PREUpICYjNDM7PSB0ZXN0bW9kZS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL01ha2VmaWxlOjI2OmF0aDExay0kKENPTkZJR19BVEgxMUtfVFJBQ0lORykgJiM0Mzs9IHRyYWNlLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvTWFrZWZpbGUtMjctYXRoMTFrLSQoQ09ORklHX1RIRVJNQUwpICYjNDM7PSB0aGVybWFsLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvTWFrZWZpbGU6Mjg6YXRoMTFrLSQoQ09ORklHX0FUSDExS19TUEVDVFJBTCkgJiM0Mzs9IHNwZWN0cmFsLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvTWFrZWZpbGUtMjktYXRoMTFrLSQoQ09ORklHX1BNKSAmIzQzOz0gd293Lm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvTWFrZWZpbGU9MzA9YXRoMTFrLSQoQ09ORklHX0RFVl9DT1JFRFVNUCkgJiM0Mzs9IGNvcmVkdW1wLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvTWFrZWZpbGU6MzE6YXRoMTFrLSQoQ09ORklHX0FUSDExS19DRlIpICYjNDM7PSBjZnIub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9NYWtlZmlsZS0zMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvTWFrZWZpbGU6MzM6b2JqLSQoQ09ORklHX0FUSDExS19BSEIpICYjNDM7PSBhdGgxMWtfYWhiLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvTWFrZWZpbGUtMzQtYXRoMTFrX2FoYi15ICYjNDM7PSBhaGIub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9NYWtlZmlsZS0zNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvTWFrZWZpbGU6MzY6b2JqLSQoQ09ORklHX0FUSDExS19QQ0kpICYjNDM7PSBhdGgxMWtfcGNpLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvTWFrZWZpbGUtMzctYXRoMTFrX3BjaS15ICYjNDM7PSBtaGkubyBwY2kub1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM9MjQ9c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgYXRoMTFrX2FoYl9vZl9tYXRjaFtdID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMjgtXHR7IC5jb21wYXRpYmxlID0gXCYjMzQ7cWNvbSxpcHE4MDc0LXdpZmlcJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjI5Olx0ICAuZGF0YSA9ICh2b2lkICopQVRIMTFLX0hXX0lQUTgwNzQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTMwLVx0fSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMzEtXHR7IC5jb21wYXRpYmxlID0gXCYjMzQ7cWNvbSxpcHE2MDE4LXdpZmlcJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjMyOlx0ICAuZGF0YSA9ICh2b2lkICopQVRIMTFLX0hXX0lQUTYwMThfSFcxMCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMzMtXHR9LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0zNC1cdHsgLmNvbXBhdGlibGUgPSBcJiMzNDtxY29tLHdjbjY3NTAtd2lmaVwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6MzU6XHQgIC5kYXRhID0gKHZvaWQgKilBVEgxMUtfSFdfV0NONjc1MF9IVzEwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0zNi1cdH0sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTM3LVx0eyAuY29tcGF0aWJsZSA9IFwmIzM0O3Fjb20saXBxNTAxOC13aWZpXCYjMzQ7LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzozODpcdCAgLmRhdGEgPSAodm9pZCAqKUFUSDExS19IV19JUFE1MDE4X0hXMTAsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTM5LVx0fSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jPTQzPU1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIGF0aDExa19haGJfb2ZfbWF0Y2gpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy00NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6NDU6I2RlZmluZSBBVEgxMUtfSVJRX0NFMF9PRkZTRVQgNFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy00Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6NDc6c3RhdGljIGNvbnN0IGNoYXIgKmlycV9uYW1lW0FUSDExS19JUlFfTlVNX01BWF0gPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTQ4LVx0XCYjMzQ7bWlzYy1wdWxzZTFcJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYz0xNTE9YXRoMTFrX2FoYl9nZXRfd2luZG93X3N0YXJ0X3djbjY3NTAoc3RydWN0IGF0aDExa19iYXNlICphYiwgdTMyIG9mZnNldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTE1NS1cdC8qIElmIG9mZnNldCBsaWVzIHdpdGhpbiBEUCByZWdpc3RlciByYW5nZSwgdXNlIDFzdCB3aW5kb3cgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6MTU2Olx0aWYgKChvZmZzZXQgXiBIQUxfU0VRX1dDU1NfVU1BQ19PRkZTRVQpIFx1MDAzYyBBVEgxMUtfUENJX1dJTkRPV19SQU5HRV9NQVNLKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzoxNTc6XHRcdHdpbmRvd19zdGFydCA9IEFUSDExS19QQ0lfV0lORE9XX1NUQVJUO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0xNTgtXHQvKiBJZiBvZmZzZXQgbGllcyB3aXRoaW4gQ0UgcmVnaXN0ZXIgcmFuZ2UsIHVzZSAybmQgd2luZG93ICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTE1OS1cdGVsc2UgaWYgKChvZmZzZXQgXiBIQUxfU0VRX1dDU1NfVU1BQ19DRTBfU1JDX1JFRyhhYikpIFx1MDAzY1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzoxNjA6XHRcdCBBVEgxMUtfUENJX1dJTkRPV19SQU5HRV9NQVNLKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzoxNjE6XHRcdHdpbmRvd19zdGFydCA9IDIgKiBBVEgxMUtfUENJX1dJTkRPV19TVEFSVDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMTYyLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM9MTY3PWF0aDExa19haGJfd2luZG93X3dyaXRlMzJfd2NuNjc1MChzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiLCB1MzIgb2Zmc2V0LCB1MzIgdmFsdWUpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0xNzQtXHRpb3dyaXRlMzIodmFsdWUsIGFiLVx1MDAzZW1lbSAmIzQzOyB3aW5kb3dfc3RhcnQgJiM0MztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6MTc1Olx0XHQgIChvZmZzZXQgXHUwMDI2IEFUSDExS19QQ0lfV0lORE9XX1JBTkdFX01BU0spKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMTc2LX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jPTE3OD1zdGF0aWMgdTMyIGF0aDExa19haGJfd2luZG93X3JlYWQzMl93Y242NzUwKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIsIHUzMiBvZmZzZXQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0xODYtXHR2YWwgPSBpb3JlYWQzMihhYi1cdTAwM2VtZW0gJiM0Mzsgd2luZG93X3N0YXJ0ICYjNDM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjE4NzpcdFx0ICAgICAgIChvZmZzZXQgXHUwMDI2IEFUSDExS19QQ0lfV0lORE9XX1JBTkdFX01BU0spKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMTg4LVx0cmV0dXJuIHZhbDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jPTIzMT1zdGF0aWMgdm9pZCBfX2F0aDExa19haGJfZXh0X2lycV9kaXNhYmxlKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0yMzQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjIzNTpcdGZvciAoaSA9IDA7IGkgXHUwMDNjIEFUSDExS19FWFRfSVJRX0dSUF9OVU1fTUFYOyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0yMzYtXHRcdHN0cnVjdCBhdGgxMWtfZXh0X2lycV9ncnAgKmlycV9ncnAgPSBcdTAwMjZhYi1cdTAwM2VleHRfaXJxX2dycFtpXTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jPTI3Mj1zdGF0aWMgdm9pZCBhdGgxMWtfYWhiX2NlX2lycV9lbmFibGUoc3RydWN0IGF0aDExa19iYXNlICphYiwgdTE2IGNlX2lkKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMjc3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzoyNzg6XHRpZTFfcmVnX2FkZHIgPSBjZV9pZV9hZGRyLVx1MDAzZWllMV9yZWdfYWRkciAmIzQzOyBBVEgxMUtfQ0VfT0ZGU0VUKGFiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6Mjc5Olx0aWUyX3JlZ19hZGRyID0gY2VfaWVfYWRkci1cdTAwM2VpZTJfcmVnX2FkZHIgJiM0MzsgQVRIMTFLX0NFX09GRlNFVChhYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjI4MDpcdGllM19yZWdfYWRkciA9IGNlX2llX2FkZHItXHUwMDNlaWUzX3JlZ19hZGRyICYjNDM7IEFUSDExS19DRV9PRkZTRVQoYWIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0yODEtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYz0yOTM9c3RhdGljIHZvaWQgYXRoMTFrX2FoYl9jZV9pcnFfZGlzYWJsZShzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiLCB1MTYgY2VfaWQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0yOTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjI5OTpcdGllMV9yZWdfYWRkciA9IGNlX2llX2FkZHItXHUwMDNlaWUxX3JlZ19hZGRyICYjNDM7IEFUSDExS19DRV9PRkZTRVQoYWIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzozMDA6XHRpZTJfcmVnX2FkZHIgPSBjZV9pZV9hZGRyLVx1MDAzZWllMl9yZWdfYWRkciAmIzQzOyBBVEgxMUtfQ0VfT0ZGU0VUKGFiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6MzAxOlx0aWUzX3JlZ19hZGRyID0gY2VfaWVfYWRkci1cdTAwM2VpZTNfcmVnX2FkZHIgJiM0MzsgQVRIMTFLX0NFX09GRlNFVChhYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTMwMi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jPTMxND1zdGF0aWMgdm9pZCBhdGgxMWtfYWhiX3N5bmNfY2VfaXJxcyhzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMzIyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzozMjM6XHRcdGlycV9pZHggPSBBVEgxMUtfSVJRX0NFMF9PRkZTRVQgJiM0MzsgaTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMzI0LVx0XHRzeW5jaHJvbml6ZV9pcnEoYWItXHUwMDNlaXJxX251bVtpcnFfaWR4XSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYz0zMjg9c3RhdGljIHZvaWQgYXRoMTFrX2FoYl9zeW5jX2V4dF9pcnFzKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0zMzItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjMzMzpcdGZvciAoaSA9IDA7IGkgXHUwMDNjIEFUSDExS19FWFRfSVJRX0dSUF9OVU1fTUFYOyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0zMzQtXHRcdHN0cnVjdCBhdGgxMWtfZXh0X2lycV9ncnAgKmlycV9ncnAgPSBcdTAwMjZhYi1cdTAwM2VleHRfaXJxX2dycFtpXTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jPTM3Mz1zdGF0aWMgdm9pZCBhdGgxMWtfYWhiX2V4dF9pcnFfZW5hYmxlKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0zNzYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjM3NzpcdGZvciAoaSA9IDA7IGkgXHUwMDNjIEFUSDExS19FWFRfSVJRX0dSUF9OVU1fTUFYOyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0zNzgtXHRcdHN0cnVjdCBhdGgxMWtfZXh0X2lycV9ncnAgKmlycV9ncnAgPSBcdTAwMjZhYi1cdTAwM2VleHRfaXJxX2dycFtpXTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jPTM5ND1zdGF0aWMgdm9pZCBhdGgxMWtfYWhiX3N0b3Aoc3RydWN0IGF0aDExa19iYXNlICphYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMzk1LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6Mzk2Olx0aWYgKCF0ZXN0X2JpdChBVEgxMUtfRkxBR19DUkFTSF9GTFVTSCwgXHUwMDI2YWItXHUwMDNlZGV2X2ZsYWdzKSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMzk3LVx0XHRhdGgxMWtfYWhiX2NlX2lycXNfZGlzYWJsZShhYik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYz00NDY9c3RhdGljIHZvaWQgYXRoMTFrX2FoYl9mcmVlX2V4dF9pcnEoc3RydWN0IGF0aDExa19iYXNlICphYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTQ0OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6NDUwOlx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVRIMTFLX0VYVF9JUlFfR1JQX05VTV9NQVg7IGkmIzQzOyYjNDM7KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy00NTEtXHRcdGF0aDExa19haGJfZnJlZV9leHRfaXJxX2dycChhYiwgXHUwMDI2YWItXHUwMDNlZXh0X2lycV9ncnBbaV0pO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM9NDU0PXN0YXRpYyB2b2lkIGF0aDExa19haGJfZnJlZV9jZV9pcnFzKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIsIGludCBtYXhfaWR4KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtNDYwLVx0XHRcdGNvbnRpbnVlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo0NjE6XHRcdGlycV9pZHggPSBBVEgxMUtfSVJRX0NFMF9PRkZTRVQgJiM0MzsgaTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtNDYyLVx0XHRmcmVlX2lycShhYi1cdTAwM2VpcnFfbnVtW2lycV9pZHhdLCBcdTAwMjZhYi1cdTAwM2VjZS5jZV9waXBlW2ldKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jPTUzMj1zdGF0aWMgaW50IGF0aDExa19haGJfY29uZmlnX2V4dF9pcnEoc3RydWN0IGF0aDExa19iYXNlICphYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTUzOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6NTQwOlx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVRIMTFLX0VYVF9JUlFfR1JQX05VTV9NQVg7IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTU0MS1cdFx0dTMyIG51bV9pcnEgPSAwO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtNTU3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo1NTg6XHRcdGZvciAoaiA9IDA7IGogXHUwMDNjIEFUSDExS19FWFRfSVJRX05VTV9NQVg7IGomIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTU1OS1cdFx0XHRpZiAoYWItXHUwMDNlaHdfcGFyYW1zLnJpbmdfbWFzay1cdTAwM2V0eFtpXSBcdTAwMjYgQklUKGopKSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYz02MzM9c3RhdGljIGludCBhdGgxMWtfYWhiX2NvbmZpZ19pcnEoc3RydWN0IGF0aDExa19iYXNlICphYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTY0Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6NjQ4Olx0XHRpcnFfaWR4ID0gQVRIMTFLX0lSUV9DRTBfT0ZGU0VUICYjNDM7IGk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTY0OS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jPTcxOD1zdGF0aWMgaW50IGF0aDExa19haGJfaGlmX3N1c3BlbmQoc3RydWN0IGF0aDExa19iYXNlICphYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTcyNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6NzI4Olx0d2FrZV9pcnEgPSBhYi1cdTAwM2VpcnFfbnVtW0FUSDExS19QQ0lfSVJRX0NFMF9PRkZTRVQgJiM0MzsgQVRIMTFLX1BDSV9DRV9XQUtFX0lSUV07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTcyOS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTczNi1cdHZhbHVlID0gdTMyX2VuY29kZV9iaXRzKGFiX2FoYi1cdTAwM2VzbXAycF9pbmZvLnNlcV9ubyYjNDM7JiM0MzssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjczNzpcdFx0XHRcdEFUSDExS19BSEJfU01QMlBfU01FTV9TRVFfTk8pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo3Mzg6XHR2YWx1ZSB8PSB1MzJfZW5jb2RlX2JpdHMoQVRIMTFLX0FIQl9QT1dFUl9TQVZFX0VOVEVSLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo3Mzk6XHRcdFx0XHQgQVRIMTFLX0FIQl9TTVAyUF9TTUVNX01TRyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTc0MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtNzQxLVx0cmV0ID0gcWNvbV9zbWVtX3N0YXRlX3VwZGF0ZV9iaXRzKGFiX2FoYi1cdTAwM2VzbXAycF9pbmZvLnNtZW1fc3RhdGUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjc0MjpcdFx0XHRcdFx0ICBBVEgxMUtfQUhCX1NNUDJQX1NNRU1fVkFMVUVfTUFTSywgdmFsdWUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy03NDMtXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy03NDctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjc0ODpcdGF0aDExa19kYmcoYWIsIEFUSDExS19EQkdfQUhCLCBcJiMzNDtkZXZpY2Ugc3VzcGVuZGVkXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtNzQ5LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM9NzUzPXN0YXRpYyBpbnQgYXRoMTFrX2FoYl9oaWZfcmVzdW1lKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy03NjItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjc2MzpcdHdha2VfaXJxID0gYWItXHUwMDNlaXJxX251bVtBVEgxMUtfUENJX0lSUV9DRTBfT0ZGU0VUICYjNDM7IEFUSDExS19QQ0lfQ0VfV0FLRV9JUlFdO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy03NjQtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy03NzMtXHR2YWx1ZSA9IHUzMl9lbmNvZGVfYml0cyhhYl9haGItXHUwMDNlc21wMnBfaW5mby5zZXFfbm8mIzQzOyYjNDM7LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo3NzQ6XHRcdFx0XHRBVEgxMUtfQUhCX1NNUDJQX1NNRU1fU0VRX05PKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6Nzc1Olx0dmFsdWUgfD0gdTMyX2VuY29kZV9iaXRzKEFUSDExS19BSEJfUE9XRVJfU0FWRV9FWElULFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo3NzY6XHRcdFx0XHQgQVRIMTFLX0FIQl9TTVAyUF9TTUVNX01TRyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTc3Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtNzc4LVx0cmV0ID0gcWNvbV9zbWVtX3N0YXRlX3VwZGF0ZV9iaXRzKGFiX2FoYi1cdTAwM2VzbXAycF9pbmZvLnNtZW1fc3RhdGUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjc3OTpcdFx0XHRcdFx0ICBBVEgxMUtfQUhCX1NNUDJQX1NNRU1fVkFMVUVfTUFTSywgdmFsdWUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy03ODAtXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy03OTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjc5MTpcdGF0aDExa19kYmcoYWIsIEFUSDExS19EQkdfQUhCLCBcJiMzNDtkZXZpY2UgcmVzdW1lZFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTc5Mi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jPTg0OD1zdGF0aWMgaW50IGF0aDExa19haGJfc2V0dXBfbXNpX3Jlc291cmNlcyhzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtODkyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo4OTM6XHRzZXRfYml0KEFUSDExS19GTEFHX01VTFRJX01TSV9WRUNUT1JTLCBcdTAwMjZhYi1cdTAwM2VkZXZfZmxhZ3MpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy04OTQtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYz0xMTM5PXN0YXRpYyBpbnQgYXRoMTFrX2FoYl9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMTE0OS1cdHN3aXRjaCAoaHdfcmV2KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjExNTA6XHRjYXNlIEFUSDExS19IV19JUFE4MDc0OlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzoxMTUxOlx0Y2FzZSBBVEgxMUtfSFdfSVBRNjAxOF9IVzEwOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzoxMTUyOlx0Y2FzZSBBVEgxMUtfSFdfSVBRNTAxOF9IVzEwOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0xMTUzLVx0XHRoaWZfb3BzID0gXHUwMDI2YXRoMTFrX2FoYl9oaWZfb3BzX2lwcTgwNzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0xMTU1LVx0XHRicmVhaztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6MTE1NjpcdGNhc2UgQVRIMTFLX0hXX1dDTjY3NTBfSFcxMDpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMTE1Ny1cdFx0aGlmX29wcyA9IFx1MDAyNmF0aDExa19haGJfaGlmX29wc193Y242NzUwO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMTE3MS1cdGFiID0gYXRoMTFrX2NvcmVfYWxsb2MoXHUwMDI2cGRldi1cdTAwM2VkZXYsIHNpemVvZihzdHJ1Y3QgYXRoMTFrX2FoYiksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjExNzI6XHRcdFx0ICAgICAgIEFUSDExS19CVVNfQUhCKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMTE3My1cdGlmICghYWIpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTExODAtXHRhYi1cdTAwM2Vod19yZXYgPSBod19yZXY7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjExODE6XHRhYi1cdTAwM2Vmd19tb2RlID0gQVRIMTFLX0ZJUk1XQVJFX01PREVfTk9STUFMO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0xMTgyLVx0cGxhdGZvcm1fc2V0X2RydmRhdGEocGRldiwgYWIpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM9MTI2ND1zdGF0aWMgdm9pZCBhdGgxMWtfYWhiX3JlbW92ZV9wcmVwYXJlKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0xMjY3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzoxMjY4Olx0aWYgKHRlc3RfYml0KEFUSDExS19GTEFHX1JFQ09WRVJZLCBcdTAwMjZhYi1cdTAwM2VkZXZfZmxhZ3MpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTEyNjktXHRcdGxlZnQgPSB3YWl0X2Zvcl9jb21wbGV0aW9uX3RpbWVvdXQoXHUwMDI2YWItXHUwMDNlZHJpdmVyX3JlY292ZXJ5LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzoxMjcwOlx0XHRcdFx0XHRcdCAgIEFUSDExS19BSEJfUkVDT1ZFUllfVElNRU9VVCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTEyNzEtXHRcdGlmICghbGVmdClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTEyNzQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjEyNzU6XHRzZXRfYml0KEFUSDExS19GTEFHX1VOUkVHSVNURVJJTkcsIFx1MDAyNmFiLVx1MDAzZWRldl9mbGFncyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTEyNzYtXHRjYW5jZWxfd29ya19zeW5jKFx1MDAyNmFiLVx1MDAzZXJlc3RhcnRfd29yayk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYz0xMjk1PXN0YXRpYyB2b2lkIGF0aDExa19haGJfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0xMjk4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzoxMjk5Olx0aWYgKHRlc3RfYml0KEFUSDExS19GTEFHX1FNSV9GQUlMLCBcdTAwMjZhYi1cdTAwM2VkZXZfZmxhZ3MpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTEzMDAtXHRcdGF0aDExa19haGJfcG93ZXJfZG93bihhYiwgZmFsc2UpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM9MTMxND1zdGF0aWMgdm9pZCBhdGgxMWtfYWhiX3NodXRkb3duKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0xMzIzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzoxMzI0Olx0aWYgKCEodGVzdF9iaXQoQVRIMTFLX0ZMQUdfUkVHSVNURVJFRCwgXHUwMDI2YWItXHUwMDNlZGV2X2ZsYWdzKSkpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTEzMjUtXHRcdGdvdG8gZnJlZV9yZXNvdXJjZXM7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuaC01LSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuaDo2OiNpZm5kZWYgQVRIMTFLX0FIQl9IXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5oOjc6I2RlZmluZSBBVEgxMUtfQUhCX0hcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmgtOC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5oLTEwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuaDoxMTojZGVmaW5lIEFUSDExS19BSEJfUkVDT1ZFUllfVElNRU9VVCAoMyAqIEhaKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuaC0xMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmg6MTM6I2RlZmluZSBBVEgxMUtfQUhCX1NNUDJQX1NNRU1fTVNHXHRcdEdFTk1BU0soMTUsIDApXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5oOjE0OiNkZWZpbmUgQVRIMTFLX0FIQl9TTVAyUF9TTUVNX1NFUV9OT1x0XHRHRU5NQVNLKDMxLCAxNilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmg6MTU6I2RlZmluZSBBVEgxMUtfQUhCX1NNUDJQX1NNRU1fVkFMVUVfTUFTS1x0MHhGRkZGRkZGRlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuaC0xNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmg9MTc9ZW51bSBhdGgxMWtfYWhiX3NtcDJwX21zZ19pZCB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5oOjE4Olx0QVRIMTFLX0FIQl9QT1dFUl9TQVZFX0VOVEVSID0gMSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmg6MTk6XHRBVEgxMUtfQUhCX1BPV0VSX1NBVkVfRVhJVCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmgtMjAtfTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NlLmM9MzIxPXN0YXRpYyBpbnQgYXRoMTFrX2NlX3J4X3Bvc3RfcGlwZShzdHJ1Y3QgYXRoMTFrX2NlX3BpcGUgKnBpcGUpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZS5jLTM1MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2UuYzozNTE6XHRcdEFUSDExS19TS0JfUlhDQihza2IpLVx1MDAzZXBhZGRyID0gcGFkZHI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NlLmMtMzUyLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2UuYy0zNTUtXHRcdGlmIChyZXQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2UuYzozNTY6XHRcdFx0YXRoMTFrX2RiZyhhYiwgQVRIMTFLX0RCR19DRSwgXCYjMzQ7ZmFpbGVkIHRvIGVucXVldWUgcnggYnVmOiAlZFxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2UuYy0zNTctXHRcdFx0XHQgICByZXQpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2UuYz00MTc9c3RhdGljIHZvaWQgYXRoMTFrX2NlX3JlY3ZfcHJvY2Vzc19jYihzdHJ1Y3QgYXRoMTFrX2NlX3BpcGUgKnBpcGUpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZS5jLTQyNy1cdFx0bWF4X25ieXRlcyA9IHNrYi1cdTAwM2VsZW4gJiM0Mzsgc2tiX3RhaWxyb29tKHNrYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NlLmM6NDI4Olx0XHRkbWFfdW5tYXBfc2luZ2xlKGFiLVx1MDAzZWRldiwgQVRIMTFLX1NLQl9SWENCKHNrYiktXHUwMDNlcGFkZHIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NlLmMtNDI5LVx0XHRcdFx0IG1heF9uYnl0ZXMsIERNQV9GUk9NX0RFVklDRSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZS5jLTQ0Mi1cdHdoaWxlICgoc2tiID0gX19za2JfZGVxdWV1ZShcdTAwMjZsaXN0KSkpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2UuYzo0NDM6XHRcdGF0aDExa19kYmcoYWIsIEFUSDExS19EQkdfQ0UsIFwmIzM0O3J4IGNlIHBpcGUgJWQgbGVuICVkXFxuXCYjMzQ7LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZS5jLTQ0NC1cdFx0XHQgICBwaXBlLVx1MDAzZXBpcGVfbnVtLCBza2ItXHUwMDNlbGVuKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NlLmMtNDUyLVx0XHRtb2RfdGltZXIoXHUwMDI2YWItXHUwMDNlcnhfcmVwbGVuaXNoX3JldHJ5LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZS5jOjQ1MzpcdFx0XHQgIGppZmZpZXMgJiM0MzsgQVRIMTFLX0NFX1JYX1BPU1RfUkVUUllfSklGRklFUyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NlLmMtNDU0LVx0fVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2UuYz00OTg9c3RhdGljIHZvaWQgYXRoMTFrX2NlX3R4X3Byb2Nlc3NfY2Ioc3RydWN0IGF0aDExa19jZV9waXBlICpwaXBlKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2UuYy01MDgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NlLmM6NTA5Olx0XHRkbWFfdW5tYXBfc2luZ2xlKGFiLVx1MDAzZWRldiwgQVRIMTFLX1NLQl9DQihza2IpLVx1MDAzZXBhZGRyLCBza2ItXHUwMDNlbGVuLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZS5jLTUxMC1cdFx0XHRcdCBETUFfVE9fREVWSUNFKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NlLmMtNTIwLVx0d2hpbGUgKChza2IgPSBfX3NrYl9kZXF1ZXVlKFx1MDAyNmxpc3QpKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZS5jOjUyMTpcdFx0YXRoMTFrX2RiZyhhYiwgQVRIMTFLX0RCR19DRSwgXCYjMzQ7dHggY2UgcGlwZSAlZCBsZW4gJWRcXG5cJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NlLmMtNTIyLVx0XHRcdCAgIHBpcGUtXHUwMDNlcGlwZV9udW0sIHNrYi1cdTAwM2VsZW4pO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2UuYz01NTM9c3RhdGljIGludCBhdGgxMWtfY2VfaW5pdF9yaW5nKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZS5jLTYwNC1cdFx0YXRoMTFrX2RwX3NoYWRvd19pbml0X3RpbWVyKGFiLCBcdTAwMjZhYi1cdTAwM2VjZS5ocF90aW1lcltjZV9pZF0sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NlLmM6NjA1Olx0XHRcdFx0XHQgICAgQVRIMTFLX1NIQURPV19DVFJMX1RJTUVSX0lOVEVSVkFMLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZS5jLTYwNi1cdFx0XHRcdFx0ICAgIGNlX3JpbmctXHUwMDNlaGFsX3JpbmdfaWQpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2UuYz03MDk9aW50IGF0aDExa19jZV9zZW5kKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIsIHN0cnVjdCBza19idWZmICpza2IsIHU4IHBpcGVfaWQsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZS5jLTczOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2UuYzo3Mzk6XHRcdGlmIChudW1fdXNlZCBcdTAwM2UgQVRIMTFLX0NFX1VTQUdFX1RIUkVTSE9MRClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2UuYy03NDAtXHRcdFx0YXRoMTFrX2NlX3BvbGxfc2VuZF9jb21wbGV0ZWQoYWIsIHBpcGUtXHUwMDNlcGlwZV9udW0pO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2UuYy03NDItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NlLmM6NzQzOlx0aWYgKHRlc3RfYml0KEFUSDExS19GTEFHX0NSQVNIX0ZMVVNILCBcdTAwMjZhYi1cdTAwM2VkZXZfZmxhZ3MpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZS5jLTc0NC1cdFx0cmV0dXJuIC1FU0hVVERPV047XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZS5jLTc3Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2UuYzo3NzM6XHRhdGgxMWtfaGFsX2NlX3NyY19zZXRfZGVzYyhkZXNjLCBBVEgxMUtfU0tCX0NCKHNrYiktXHUwMDNlcGFkZHIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NlLmMtNzc0LVx0XHRcdFx0ICAgc2tiLVx1MDAzZWxlbiwgdHJhbnNmZXJfaWQsIGJ5dGVfc3dhcF9kYXRhKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NlLmM9Nzk5PXN0YXRpYyB2b2lkIGF0aDExa19jZV9yeF9waXBlX2NsZWFudXAoc3RydWN0IGF0aDExa19jZV9waXBlICpwaXBlKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2UuYy04MTQtXHRcdHJpbmctXHUwMDNlc2tiW2ldID0gTlVMTDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2UuYzo4MTU6XHRcdGRtYV91bm1hcF9zaW5nbGUoYWItXHUwMDNlZGV2LCBBVEgxMUtfU0tCX1JYQ0Ioc2tiKS1cdTAwM2VwYWRkcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2UuYy04MTYtXHRcdFx0XHQgc2tiLVx1MDAzZWxlbiAmIzQzOyBza2JfdGFpbHJvb20oc2tiKSwgRE1BX0ZST01fREVWSUNFKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NlLmM9ODgzPXZvaWQgYXRoMTFrX2NlX3J4X3Bvc3RfYnVmKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZS5jLTg5OC1cdFx0XHRtb2RfdGltZXIoXHUwMDI2YWItXHUwMDNlcnhfcmVwbGVuaXNoX3JldHJ5LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZS5jOjg5OTpcdFx0XHRcdCAgamlmZmllcyAmIzQzOyBBVEgxMUtfQ0VfUlhfUE9TVF9SRVRSWV9KSUZGSUVTKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2UuYy05MDAtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZS5oLTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NlLmg6NzojaWZuZGVmIEFUSDExS19DRV9IXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NlLmg6ODojZGVmaW5lIEFUSDExS19DRV9IXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NlLmgtOS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NlLmgtMjUtLyogVGhyZXNob2xkIHRvIHBvbGwgZm9yIHR4IGNvbXBsZXRpb24gaW4gY2FzZSBvZiBJbnRlcnJ1cHQgZGlzYWJsZWQgQ0UmIzM5O3MgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2UuaDoyNjojZGVmaW5lIEFUSDExS19DRV9VU0FHRV9USFJFU0hPTEQgMzJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2UuaC0yNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2UuaD0yOD12b2lkIGF0aDExa19jZV9ieXRlX3N3YXAodm9pZCAqbWVtLCB1MzIgbGVuKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NlLmgtNjEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NlLmg6NjI6I2RlZmluZSBBVEgxMUtfQ0VfUlhfUE9TVF9SRVRSWV9KSUZGSUVTIDUwXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NlLmgtNjMtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYz0xOT1zdGF0aWMgaW50IGF0aDExa19jZnJfY2FsY3VsYXRlX3RvbmVzX2Zyb21fZG1hX2hkcihzdHJ1Y3QgYXRoMTFrX2Nmcl9kbWFfaGRyICpoZHIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYy0yNC1cdHN3aXRjaCAocHJlYW1ibGUpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmM6MjU6XHRjYXNlIEFUSDExS19DRlJfUFJFQU1CTEVfVFlQRV9MRUdBQ1k6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jLTI2LVx0XHRmYWxsdGhyb3VnaDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmM6Mjc6XHRjYXNlIEFUSDExS19DRlJfUFJFQU1CTEVfVFlQRV9WSFQ6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jLTI4LVx0XHRzd2l0Y2ggKGJ3KSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYy0zOS1cdFx0fVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYzo0MDpcdGNhc2UgQVRIMTFLX0NGUl9QUkVBTUJMRV9UWVBFX0hUOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYy00MS1cdFx0c3dpdGNoIChidykge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmM9MTE0PWF0aDExa19jZnJfY29ycmVsYXRlX2FuZF9yZWxheShzdHJ1Y3QgYXRoMTFrICphcixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jLTEyMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmM6MTIyOlx0aWYgKGV2ZW50X3R5cGUgPT0gQVRIMTFLX0NPUlJFTEFURV9UWF9FVkVOVCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYy0xMjMtXHRcdGlmIChsdXQtXHUwMDNldHhfcmVjdilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jLTEyNi1cdFx0bHV0LVx1MDAzZXR4X3JlY3YgPSB0cnVlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYzoxMjc6XHR9IGVsc2UgaWYgKGV2ZW50X3R5cGUgPT0gQVRIMTFLX0NPUlJFTEFURV9EQlJfRVZFTlQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmMtMTI4LVx0XHRjZnItXHUwMDNlZGJyX2V2dF9jbnQmIzQzOyYjNDM7O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmMtMTQwLVx0XHRcdFx0ZGlmZiA9IGx1dC1cdTAwM2VkYnJfdHN0YW1wIC0gbHV0LVx1MDAzZXR4cnhfdHN0YW1wO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYzoxNDE6XHRcdFx0XHRhdGgxMWtfZGJnKGFyLVx1MDAzZWFiLCBBVEgxMUtfREJHX0NGUixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmMtMTQyLVx0XHRcdFx0XHQgICBcJiMzNDt0eHJ4IGV2ZW50IC1cdTAwM2UgZGJyIGV2ZW50IGRlbGF5ID0gJXUgbXNcJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYy0xNDUtXHRcdFx0XHRkaWZmID0gbHV0LVx1MDAzZXR4cnhfdHN0YW1wIC0gbHV0LVx1MDAzZWRicl90c3RhbXA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jOjE0NjpcdFx0XHRcdGF0aDExa19kYmcoYXItXHUwMDNlYWIsIEFUSDExS19EQkdfQ0ZSLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYy0xNDctXHRcdFx0XHRcdCAgIFwmIzM0O2RiciBldmVudCAtXHUwMDNlIHR4cnggZXZlbnQgZGVsYXkgPSAldSBtc1wmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jLTE1My1cdFx0XHRjZnItXHUwMDNlcmVsZWFzZV9jbnQmIzQzOyYjNDM7O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYzoxNTQ6XHRcdFx0c3RhdHVzID0gQVRIMTFLX0NPUlJFTEFURV9TVEFUVVNfUkVMRUFTRTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmMtMTU1LVx0XHR9IGVsc2Uge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmMtMTYwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYzoxNjE6XHRcdFx0YXRoMTFrX2RiZyhhci1cdTAwM2VhYiwgQVRIMTFLX0RCR19DRlIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jLTE2Mi1cdFx0XHRcdCAgIFwmIzM0O1JlY2VpdmVkIGRiciBldmVudCB0d2ljZSBmb3IgdGhlIHNhbWUgbHV0IGVudHJ5XCYjMzQ7KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jLTE2Ni1cdFx0XHRjZnItXHUwMDNlY2ZyX2RtYV9hYm9ydHMmIzQzOyYjNDM7O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYzoxNjc6XHRcdFx0c3RhdHVzID0gQVRIMTFLX0NPUlJFTEFURV9TVEFUVVNfSE9MRDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmMtMTY4LVx0XHR9XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jLTE2OS1cdH0gZWxzZSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jOjE3MDpcdFx0c3RhdHVzID0gQVRIMTFLX0NPUlJFTEFURV9TVEFUVVNfSE9MRDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmMtMTcxLVx0fVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmM9MTc2PXN0YXRpYyBpbnQgYXRoMTFrX2Nmcl9wcm9jZXNzX2RhdGEoc3RydWN0IGF0aDExayAqYXIsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYy0xNzgte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYzoxNzk6XHR1MzIgZW5kX21hZ2ljID0gQVRIMTFLX0NGUl9FTkRfTUFHSUM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jLTE4MC1cdHN0cnVjdCBhdGgxMWtfY3NpX2Nmcl9oZWFkZXIgKmhlYWRlcjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jLTIxOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmM6MjE5Olx0YXRoMTFrX2RiZ19kdW1wKGFiLCBBVEgxMUtfREJHX0NGUl9EVU1QLCBcJiMzNDtkYXRhX2Zyb21fYnVmX3JlbDpcJiMzNDssIFwmIzM0O1wmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmMtMjIwLVx0XHRcdGRhdGEsIGxlbmd0aCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYy0yMzUtXHRzdGF0dXMgPSBhdGgxMWtfY2ZyX2NvcnJlbGF0ZV9hbmRfcmVsYXkoYXIsIGx1dCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmM6MjM2Olx0XHRcdFx0XHRcdEFUSDExS19DT1JSRUxBVEVfREJSX0VWRU5UKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmM6MjM3Olx0aWYgKHN0YXR1cyA9PSBBVEgxMUtfQ09SUkVMQVRFX1NUQVRVU19SRUxFQVNFKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jOjIzODpcdFx0YXRoMTFrX2RiZyhhYiwgQVRIMTFLX0RCR19DRlIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jLTIzOS1cdFx0XHQgICBcJiMzNDtyZWxlYXNpbmcgQ0ZSIGRhdGEgdG8gdXNlciBzcGFjZVwmIzM0Oyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYy0yNDQtXHRcdGF0aDExa19jZnJfcmVsZWFzZV9sdXRfZW50cnkobHV0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmM6MjQ1Olx0fSBlbHNlIGlmIChzdGF0dXMgPT0gQVRIMTFLX0NPUlJFTEFURV9TVEFUVVNfSE9MRCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYzoyNDY6XHRcdGF0aDExa19kYmcoYWIsIEFUSDExS19EQkdfQ0ZSLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYy0yNDctXHRcdFx0ICAgXCYjMzQ7dHggZXZlbnQgaXMgbm90IHlldCByZWNlaXZlZCBob2xkaW5nIHRoZSBidWZcJiMzNDspO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmM9MjU1PXN0YXRpYyB2b2lkIGF0aDExa19jZnJfZmlsbF9oZHJfaW5mbyhzdHJ1Y3QgYXRoMTFrICphcixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jLTI2MS1cdGNmciA9IFx1MDAyNmFyLVx1MDAzZWNmcjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmM6MjYyOlx0aGVhZGVyLVx1MDAzZWNmcl9tZXRhZGF0YV92ZXJzaW9uID0gQVRIMTFLX0NGUl9NRVRBX1ZFUlNJT05fNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmM6MjYzOlx0aGVhZGVyLVx1MDAzZWNmcl9kYXRhX3ZlcnNpb24gPSBBVEgxMUtfQ0ZSX0RBVEFfVkVSU0lPTl8xO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYy0yNjQtXHRoZWFkZXItXHUwMDNlY2ZyX21ldGFkYXRhX2xlbiA9IHNpemVvZihzdHJ1Y3QgY2ZyX21ldGFkYXRhKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jLTI4NS1cdGhlYWRlci1cdTAwM2VtZXRhX2RhdGEuY2FwdHVyZV9tb2RlID0gcGFyYW1zLVx1MDAzZWJhbmR3aWR0aCA/XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jOjI4NjpcdFx0QVRIMTFLX0NGUl9DQVBUVVJFX0RVUF9MRUdBQ1lfQUNLIDogQVRIMTFLX0NGUl9DQVBUVVJFX0xFR0FDWV9BQ0s7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jLTI4Ny1cdGhlYWRlci1cdTAwM2VtZXRhX2RhdGEuY2FwdHVyZV90eXBlID0gcGFyYW1zLVx1MDAzZWNhcHR1cmVfbWV0aG9kO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmM9MzAwPWludCBhdGgxMWtfcHJvY2Vzc19jZnJfY2FwdHVyZV9ldmVudChzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmMtMzAzLVx0c3RydWN0IGF0aDExa19sb29rX3VwX3RhYmxlICpsdXQgPSBOVUxMO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYzozMDQ6XHR1MzIgZW5kX21hZ2ljID0gQVRIMTFLX0NGUl9FTkRfTUFHSUM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jLTMwNS1cdHN0cnVjdCBhdGgxMWtfY3NpX2Nmcl9oZWFkZXIgKmhlYWRlcjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jLTM3OC1cdGhlYWRlciA9IFx1MDAyNmx1dC1cdTAwM2VoZWFkZXI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jOjM3OTpcdGhlYWRlci1cdTAwM2VzdGFydF9tYWdpY19udW0gPSBBVEgxMUtfQ0ZSX1NUQVJUX01BR0lDO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYy0zODAtXHRoZWFkZXItXHUwMDNldmVuZG9yaWQgPSBWRU5ET1JfUUNBO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmMtMzg1LVx0c3RhdHVzID0gYXRoMTFrX2Nmcl9jb3JyZWxhdGVfYW5kX3JlbGF5KGFyLCBsdXQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jOjM4NjpcdFx0XHRcdFx0XHRBVEgxMUtfQ09SUkVMQVRFX1RYX0VWRU5UKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmM6Mzg3Olx0aWYgKHN0YXR1cyA9PSBBVEgxMUtfQ09SUkVMQVRFX1NUQVRVU19SRUxFQVNFKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jOjM4ODpcdFx0YXRoMTFrX2RiZyhhYiwgQVRIMTFLX0RCR19DRlIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jLTM4OS1cdFx0XHQgICBcJiMzNDtSZWxlYXNpbmcgQ0ZSIGRhdGEgdG8gdXNlciBzcGFjZVwmIzM0Oyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYy0zOTgtXHRcdFx0XHRcdCAgICAgV01JX0RJUkVDVF9CVUZfQ0ZSKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmM6Mzk5Olx0fSBlbHNlIGlmIChzdGF0dXMgPT0gQVRIMTFLX0NPUlJFTEFURV9TVEFUVVNfSE9MRCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYzo0MDA6XHRcdGF0aDExa19kYmcoYWIsIEFUSDExS19EQkdfQ0ZSLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYy00MDEtXHRcdFx0ICAgXCYjMzQ7ZGJyIGV2ZW50IGlzIG5vdCB5ZXQgcmVjZWl2ZWQgaG9sZGluZyBidWZcXG5cJiMzNDspO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmM9NDEyPWJvb2wgYXRoMTFrX2Nmcl9wZWVyX2lzX2luX2Nmcl91bmFzc29jX3Bvb2woc3RydWN0IGF0aDExayAqYXIsIGNvbnN0IHU4ICpwZWVyX21hYylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jLTQyMS1cdHNwaW5fbG9ja19iaChcdTAwMjZjZnItXHUwMDNlbG9jayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jOjQyMjpcdGZvciAoaSA9IDA7IGkgXHUwMDNjIEFUSDExS19NQVhfQ0ZSX0VOQUJMRURfQ0xJRU5UUzsgaSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmMtNDIzLVx0XHRlbnRyeSA9IFx1MDAyNmNmci1cdTAwM2V1bmFzc29jX3Bvb2xbaV07XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYz00Mzg9dm9pZCBhdGgxMWtfY2ZyX3VwZGF0ZV91bmFzc29jX3Bvb2xfZW50cnkoc3RydWN0IGF0aDExayAqYXIsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYy00NDUtXHRzcGluX2xvY2tfYmgoXHUwMDI2Y2ZyLVx1MDAzZWxvY2spO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYzo0NDY6XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBBVEgxMUtfTUFYX0NGUl9FTkFCTEVEX0NMSUVOVFM7IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jLTQ0Ny1cdFx0ZW50cnkgPSBcdTAwMjZjZnItXHUwMDNldW5hc3NvY19wb29sW2ldO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmM9NDc3PWF0aDExa19jZnJfYndfdG9fZndfY2ZyX2J3KGVudW0gYXRoMTFrX2Nmcl9jYXB0dXJlX2J3IGJ3KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmMtNDc5LVx0c3dpdGNoIChidykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYzo0ODA6XHRjYXNlIEFUSDExS19DRlJfQ0FQVFVSRV9CV18yMDpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmMtNDgxLVx0XHRyZXR1cm4gV01JX1BFRVJfQ0ZSX0NBUFRVUkVfQldfMjA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jOjQ4MjpcdGNhc2UgQVRIMTFLX0NGUl9DQVBUVVJFX0JXXzQwOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYy00ODMtXHRcdHJldHVybiBXTUlfUEVFUl9DRlJfQ0FQVFVSRV9CV180MDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmM6NDg0Olx0Y2FzZSBBVEgxMUtfQ0ZSX0NBUFRVUkVfQldfODA6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jLTQ4NS1cdFx0cmV0dXJuIFdNSV9QRUVSX0NGUl9DQVBUVVJFX0JXXzgwO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmM9NDkyPWF0aDExa19jZnJfbWV0aG9kX3RvX2Z3X2Nmcl9tZXRob2QoZW51bSBhdGgxMWtfY2ZyX2NhcHR1cmVfbWV0aG9kIG1ldGhvZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jLTQ5NC1cdHN3aXRjaCAobWV0aG9kKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jOjQ5NTpcdGNhc2UgQVRIMTFLX0NGUl9DQVBUVVJFX01FVEhPRF9OVUxMX0ZSQU1FOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYy00OTYtXHRcdHJldHVybiBXTUlfQ0ZSX0NBUFRVUkVfTUVUSE9EX05VTExfRlJBTUU7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jOjQ5NzpcdGNhc2UgQVRIMTFLX0NGUl9DQVBUVVJFX01FVEhPRF9OVUxMX0ZSQU1FX1dJVEhfUEhBU0U6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jLTQ5OC1cdFx0cmV0dXJuIFdNSV9DRlJfQ0FQVFVSRV9NRVRIT0RfTlVMTF9GUkFNRV9XSVRIX1BIQVNFO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYzo0OTk6XHRjYXNlIEFUSDExS19DRlJfQ0FQVFVSRV9NRVRIT0RfUFJPQkVfUkVTUDpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmMtNTAwLVx0XHRyZXR1cm4gV01JX0NGUl9DQVBUVVJFX01FVEhPRF9QUk9CRV9SRVNQO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmM9NTA2PWludCBhdGgxMWtfY2ZyX3NlbmRfcGVlcl9jZnJfY2FwdHVyZV9jbWQoc3RydWN0IGF0aDExayAqYXIsXG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMTg6MDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjQyMDMKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiA2NjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBJbXBsaWNhdGlvbnMgb2YgQVFMIENoYW5nZXMgaW4gbWFjODAyMTEgZm9yIDgwMi4xMWF4IFN1cHBvcnQqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IGl0JiMzOTtzIHJlbGF0ZWQgdG8gdGhlIGBhdGgxMWtgIGRyaXZlciwgd2hpY2ggaGFuZGxlcyB0aGUgUXVhbGNvbW0gODAyLjExYXggY2hpcHNldC4gVGhhdCYjMzk7cyBhIHBoeXNpY2FsIGhhcmR3YXJlIGRyaXZlciwgd29ya2luZyB3aXRoIFBDSSBvciBBSEIuIEJ1dCB0aGUgcmVhbCBtZWF0IG9mIHRoaXMgY2hhbmdlIHNlZW1zIHRvIGJlIGluIGBuZXQvbWFjODAyMTEvdHguY2AsIGBuZXQvbWFjODAyMTEvZGVidWdmcy5jYCwgYW5kIGBpbmNsdWRlL25ldC9tYWM4MDIxMS5oYC4gVGhhdCYjMzk7cyB3aGVyZSBJIG5lZWQgdG8gZm9jdXMuCgpTcGVjaWZpY2FsbHksIEkgc2VlIGNoYW5nZXMgaW4gdGhlIGFpcnRpbWUgZmFpcm5lc3MgY2FsY3VsYXRpb24gd2l0aGluIGB0eC5jYC4gSXQgbG9va3MgbGlrZSB0aGUgcGF0Y2ggaXMgYWRkaW5nIG5ldyBsb2dpYyB0byBsaW1pdCB0aGUgbnVtYmVyIG9mIGZyYW1lcyBhIHN0YXRpb24gY2FuIHRyYW5zbWl0IGJhc2VkIG9uIGl0cyAmIzM0O2FpcnRpbWUgd2VpZ2h0LiYjMzQ7IFdlJiMzOTtyZSBsb29raW5nIGF0IGZ1bmN0aW9ucyBsaWtlIGBpZWVlODAyMTFfYXFsX3N0YV9saW1pdGAgYW5kIGBpZWVlODAyMTFfdHhxX2FpcnRpbWVfY2hlY2tgLiBJdCYjMzk7cyBjaGVja2luZyBpZiBhIHN0YXRpb24gaGFzIHJlYWNoZWQgYSBsaW1pdCBvbiBpdHMgYWlydGltZSB1dGlsaXphdGlvbiBiZWZvcmUgYWxsb3dpbmcgbW9yZSBwYWNrZXRzIHRvIGJlIHF1ZXVlZC4gVGhpcyBpcyBhbGwgYWJvdXQgZW5zdXJpbmcgZmFpciBhY2Nlc3MgdG8gdGhlIG1lZGl1bS4gVGhpcyBBUUwgKGFpcnRpbWUgZmFpcm5lc3MpIHN0dWZmIGlzIHF1aXRlIGludGVyZXN0aW5nLgoKTm93LCBoZXJlJiMzOTtzIHdoZXJlIGl0IGdldHMgcG90ZW50aWFsbHkgZmFzY2luYXRpbmcuIGBtYWM4MDIxMWAgY2FuIGFjdHVhbGx5IGJlIHVzZWQgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCB0aHJvdWdoIGBtYWM4MDIxMV9od3NpbWAsIHdoaWNoIGlzIGEgc29mdHdhcmUtZW11bGF0ZWQgODAyLjExIHJhZGlvLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgYW0gdGhpbmtpbmcgYWJvdXQgaG93IHRoaXMgY2hhbmdlIG1pZ2h0IGltcGFjdCB0aGF0LiBDaGVja2luZyB0aGUgZGVwZW5kZW5jaWVzLCB5ZXAsIGBNQUM4MDIxMV9IV1NJTWAgcmVsaWVzIG9uIGJvdGggYE1BQzgwMjExYCBhbmQgYENGRzgwMjExYC4gU28gYW55IGJlaGF2aW9yIGNoYW5nZXMgaW4gdGhlIGNvcmUgYG1hYzgwMjExYCBjb2RlLCAqZXNwZWNpYWxseSogdGhlc2UgYWlydGltZSBtYW5hZ2VtZW50IGNoYW5nZXMsIHdpbGwgYWxzbyBiZSByZWZsZWN0ZWQgaW4gdGhlIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBUaGF0JiMzOTtzIHNvbWV0aGluZyB0byBrZWVwIGluIG1pbmQgZm9yIHRlc3RpbmcuIExldCYjMzk7cyBkZWx2ZSBkZWVwZXIgaW50byBob3cgdGhlc2UgQVFMIGNoYW5nZXMgYXJlIGltcGxlbWVudGVkIGluIHRoZSBgbWFjODAyMTFfaHdzaW1gIGNvZGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDE4OjA5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O01BQzgwMjExX0hXU0lNJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9LY29uZmlnOjE6Y29uZmlnIE1BQzgwMjExX0hXU0lNXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL0tjb25maWctMi1cdHRyaXN0YXRlIFwmIzM0O1NpbXVsYXRlZCByYWRpbyB0ZXN0aW5nIHRvb2wgZm9yIG1hYzgwMjExXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9NYWtlZmlsZToxOm9iai0kKENPTkZJR19NQUM4MDIxMV9IV1NJTSlcdCYjNDM7PSBtYWM4MDIxMV9od3NpbS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL01ha2VmaWxlLTItbWFjODAyMTFfaHdzaW0tb2Jqc1x0XHQmIzQzOz0gbWFjODAyMTFfaHdzaW1fbWFpbi5vXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oLTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6OTojaWZuZGVmIF9fTUFDODAyMTFfSFdTSU1fSFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjEwOiNkZWZpbmUgX19NQUM4MDIxMV9IV1NJTV9IXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmgtMTEtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oPTIxNz1zdHJ1Y3QgaHdzaW1fdHhfcmF0ZSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oLTIzMC0gKlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjIzMTogKiBATUFDODAyMTFfSFdTSU1fVFhfUkNfVVNFX1JUU19DVFM6IFVzZSBSVFMvQ1RTIGV4Y2hhbmdlIGZvciB0aGlzIHJhdGUuXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjMyOiAqIEBNQUM4MDIxMV9IV1NJTV9UWF9SQ19VU0VfQ1RTX1BST1RFQ1Q6IENUUy10by1zZWxmIHByb3RlY3Rpb24gaXMgcmVxdWlyZWQuXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmgtMjMzLSAqXHRUaGlzIGlzIHNldCBpZiB0aGUgY3VycmVudCBCU1MgcmVxdWlyZXMgRVJQIHByb3RlY3Rpb24uXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjM0OiAqIEBNQUM4MDIxMV9IV1NJTV9UWF9SQ19VU0VfU0hPUlRfUFJFQU1CTEU6IFVzZSBzaG9ydCBwcmVhbWJsZS5cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyMzU6ICogQE1BQzgwMjExX0hXU0lNX1RYX1JDX01DUzogSFQgcmF0ZS5cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyMzY6ICogQE1BQzgwMjExX0hXU0lNX1RYX1JDX1ZIVF9NQ1M6IFZIVCBNQ1MgcmF0ZSwgaW4gdGhpcyBjYXNlIHRoZSBpZHggZmllbGQgaXNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaC0yMzctICpcdHNwbGl0IGludG8gYSBoaWdoZXIgNCBiaXRzIChOc3MpIGFuZCBsb3dlciA0IGJpdHMgKE1DUyBudW1iZXIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjM4OiAqIEBNQUM4MDIxMV9IV1NJTV9UWF9SQ19HUkVFTl9GSUVMRDogSW5kaWNhdGVzIHdoZXRoZXIgdGhpcyByYXRlIHNob3VsZCBiZSB1c2VkXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmgtMjM5LSAqXHRpbiBHcmVlbmZpZWxkIG1vZGUuXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjQwOiAqIEBNQUM4MDIxMV9IV1NJTV9UWF9SQ180MF9NSFpfV0lEVEg6IEluZGljYXRlcyBpZiB0aGUgQ2hhbm5lbCBXaWR0aCBzaG91bGQgYmVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaC0yNDEtICpcdDQwIE1Iei5cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyNDI6ICogQE1BQzgwMjExX0hXU0lNX1RYX1JDXzgwX01IWl9XSURUSDogSW5kaWNhdGVzIDgwIE1IeiB0cmFuc21pc3Npb25cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyNDM6ICogQE1BQzgwMjExX0hXU0lNX1RYX1JDXzE2MF9NSFpfV0lEVEg6IEluZGljYXRlcyAxNjAgTUh6IHRyYW5zbWlzc2lvblxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oLTI0NC0gKlx0KDgwJiM0Mzs4MCBpc24mIzM5O3Qgc3VwcG9ydGVkIHlldClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyNDU6ICogQE1BQzgwMjExX0hXU0lNX1RYX1JDX0RVUF9EQVRBOiBUaGUgZnJhbWUgc2hvdWxkIGJlIHRyYW5zbWl0dGVkIG9uIGJvdGggb2ZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaC0yNDYtICpcdHRoZSBhZGphY2VudCAyMCBNSHogY2hhbm5lbHMsIGlmIHRoZSBjdXJyZW50IGNoYW5uZWwgdHlwZSBpc1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oLTI0Ny0gKlx0Tkw4MDIxMV9DSEFOX0hUNDBNSU5VUyBvciBOTDgwMjExX0NIQU5fSFQ0MFBMVVMuXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjQ4OiAqIEBNQUM4MDIxMV9IV1NJTV9UWF9SQ19TSE9SVF9HSTogU2hvcnQgR3VhcmQgaW50ZXJ2YWwgc2hvdWxkIGJlIHVzZWQgZm9yIHRoaXNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaC0yNDktICpcdHJhdGUuXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oPTI1MT1lbnVtIGh3c2ltX3R4X3JhdGVfZmxhZ3Mge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjI1MjpcdE1BQzgwMjExX0hXU0lNX1RYX1JDX1VTRV9SVFNfQ1RTXHRcdD0gQklUKDApLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjI1MzpcdE1BQzgwMjExX0hXU0lNX1RYX1JDX1VTRV9DVFNfUFJPVEVDVFx0XHQ9IEJJVCgxKSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyNTQ6XHRNQUM4MDIxMV9IV1NJTV9UWF9SQ19VU0VfU0hPUlRfUFJFQU1CTEVcdD0gQklUKDIpLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oLTI1NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaC0yNTYtXHQvKiByYXRlIGluZGV4IGlzIGFuIEhUL1ZIVCBNQ1MgaW5zdGVhZCBvZiBhbiBpbmRleCAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjI1NzpcdE1BQzgwMjExX0hXU0lNX1RYX1JDX01DU1x0XHRcdD0gQklUKDMpLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjI1ODpcdE1BQzgwMjExX0hXU0lNX1RYX1JDX0dSRUVOX0ZJRUxEXHRcdD0gQklUKDQpLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjI1OTpcdE1BQzgwMjExX0hXU0lNX1RYX1JDXzQwX01IWl9XSURUSFx0XHQ9IEJJVCg1KSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyNjA6XHRNQUM4MDIxMV9IV1NJTV9UWF9SQ19EVVBfREFUQVx0XHQ9IEJJVCg2KSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyNjE6XHRNQUM4MDIxMV9IV1NJTV9UWF9SQ19TSE9SVF9HSVx0XHQ9IEJJVCg3KSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyNjI6XHRNQUM4MDIxMV9IV1NJTV9UWF9SQ19WSFRfTUNTXHRcdFx0PSBCSVQoOCksXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjYzOlx0TUFDODAyMTFfSFdTSU1fVFhfUkNfODBfTUhaX1dJRFRIXHRcdD0gQklUKDkpLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjI2NDpcdE1BQzgwMjExX0hXU0lNX1RYX1JDXzE2MF9NSFpfV0lEVEhcdFx0PSBCSVQoMTApLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oLTI2NS19O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaD0zMjg9ZW51bSBod3NpbV9yYXRlX2luZm9fYXR0cmlidXRlcyB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oLTM0Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDozNDg6I2VuZGlmIC8qIF9fTUFDODAyMTFfSFdTSU1fSCAqL1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1faS5oLTktXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX2kuaDoxMDojaWZuZGVmIF9fTUFDODAyMTFfSFdTSU1fSV9IXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX2kuaDoxMTojZGVmaW5lIF9fTUFDODAyMTFfSFdTSU1fSV9IXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX2kuaC0xMi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX2kuaD0xNjU9dm9pZCBpZWVlODAyMTFfaHdzaW1fd2FrZV90eF9xdWV1ZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX2kuaC0xNjctXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX2kuaDoxNjg6I2VuZGlmIC8qIF9fTUFDODAyMTFfSFdTSU1fSV9IICovXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9NzEyPXN0YXRpYyBzdHJ1Y3QgbWFjODAyMTFfaHdzaW1fZGF0YSAqZ2V0X2h3c2ltX2RhdGFfcmVmX2Zyb21fYWRkcihjb25zdCB1OCAqYWRkcilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy03MTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzo3MTc6LyogTUFDODAyMTFfSFdTSU0gbmV0bGluayBmYW1pbHkgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTcxOC1zdGF0aWMgc3RydWN0IGdlbmxfZmFtaWx5IGh3c2ltX2dlbmxfZmFtaWx5O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTcyND1zdGF0aWMgY29uc3Qgc3RydWN0IGdlbmxfbXVsdGljYXN0X2dyb3VwIGh3c2ltX21jZ3Jwc1tdID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTcyNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjcyODovKiBNQUM4MDIxMV9IV1NJTSBuZXRsaW5rIHBvbGljeSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNzI5LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTg2NT1zdGF0aWMgY29uc3Qgc3RydWN0IG5sYV9wb2xpY3kgaHdzaW1fZ2VubF9wb2xpY3lbSFdTSU1fQVRUUl9NQVggJiM0MzsgMV0gPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtOTAxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6OTAyOi8qIE1BQzgwMjExX0hXU0lNIHZpcnRpbyBxdWV1ZXMgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTkwMy1zdGF0aWMgc3RydWN0IHZpcnRxdWV1ZSAqaHdzaW1fdnFzW0hXU0lNX05VTV9WUVNdO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTE1NzU9c3RhdGljIGlubGluZSB1MTYgdHJhbnNfdHhfcmF0ZV9mbGFnc19pZWVlMmh3c2ltKHN0cnVjdCBpZWVlODAyMTFfdHhfcmF0ZSAqcmF0ZSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0xNTc5LVx0aWYgKHJhdGUtXHUwMDNlZmxhZ3MgXHUwMDI2IElFRUU4MDIxMV9UWF9SQ19VU0VfUlRTX0NUUylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjE1ODA6XHRcdHJlc3VsdCB8PSBNQUM4MDIxMV9IV1NJTV9UWF9SQ19VU0VfUlRTX0NUUztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTE1ODEtXHRpZiAocmF0ZS1cdTAwM2VmbGFncyBcdTAwMjYgSUVFRTgwMjExX1RYX1JDX1VTRV9DVFNfUFJPVEVDVClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjE1ODI6XHRcdHJlc3VsdCB8PSBNQUM4MDIxMV9IV1NJTV9UWF9SQ19VU0VfQ1RTX1BST1RFQ1Q7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0xNTgzLVx0aWYgKHJhdGUtXHUwMDNlZmxhZ3MgXHUwMDI2IElFRUU4MDIxMV9UWF9SQ19VU0VfU0hPUlRfUFJFQU1CTEUpXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzoxNTg0Olx0XHRyZXN1bHQgfD0gTUFDODAyMTFfSFdTSU1fVFhfUkNfVVNFX1NIT1JUX1BSRUFNQkxFO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMTU4NS1cdGlmIChyYXRlLVx1MDAzZWZsYWdzIFx1MDAyNiBJRUVFODAyMTFfVFhfUkNfTUNTKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6MTU4NjpcdFx0cmVzdWx0IHw9IE1BQzgwMjExX0hXU0lNX1RYX1JDX01DUztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTE1ODctXHRpZiAocmF0ZS1cdTAwM2VmbGFncyBcdTAwMjYgSUVFRTgwMjExX1RYX1JDX0dSRUVOX0ZJRUxEKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6MTU4ODpcdFx0cmVzdWx0IHw9IE1BQzgwMjExX0hXU0lNX1RYX1JDX0dSRUVOX0ZJRUxEO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMTU4OS1cdGlmIChyYXRlLVx1MDAzZWZsYWdzIFx1MDAyNiBJRUVFODAyMTFfVFhfUkNfNDBfTUhaX1dJRFRIKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6MTU5MDpcdFx0cmVzdWx0IHw9IE1BQzgwMjExX0hXU0lNX1RYX1JDXzQwX01IWl9XSURUSDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTE1OTEtXHRpZiAocmF0ZS1cdTAwM2VmbGFncyBcdTAwMjYgSUVFRTgwMjExX1RYX1JDX0RVUF9EQVRBKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6MTU5MjpcdFx0cmVzdWx0IHw9IE1BQzgwMjExX0hXU0lNX1RYX1JDX0RVUF9EQVRBO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMTU5My1cdGlmIChyYXRlLVx1MDAzZWZsYWdzIFx1MDAyNiBJRUVFODAyMTFfVFhfUkNfU0hPUlRfR0kpXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzoxNTk0Olx0XHRyZXN1bHQgfD0gTUFDODAyMTFfSFdTSU1fVFhfUkNfU0hPUlRfR0k7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0xNTk1LVx0aWYgKHJhdGUtXHUwMDNlZmxhZ3MgXHUwMDI2IElFRUU4MDIxMV9UWF9SQ19WSFRfTUNTKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6MTU5NjpcdFx0cmVzdWx0IHw9IE1BQzgwMjExX0hXU0lNX1RYX1JDX1ZIVF9NQ1M7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0xNTk3LVx0aWYgKHJhdGUtXHUwMDNlZmxhZ3MgXHUwMDI2IElFRUU4MDIxMV9UWF9SQ184MF9NSFpfV0lEVEgpXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzoxNTk4Olx0XHRyZXN1bHQgfD0gTUFDODAyMTFfSFdTSU1fVFhfUkNfODBfTUhaX1dJRFRIO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMTU5OS1cdGlmIChyYXRlLVx1MDAzZWZsYWdzIFx1MDAyNiBJRUVFODAyMTFfVFhfUkNfMTYwX01IWl9XSURUSClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjE2MDA6XHRcdHJlc3VsdCB8PSBNQUM4MDIxMV9IV1NJTV9UWF9SQ18xNjBfTUhaX1dJRFRIO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMTYwMS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz0zNDg0PXN0YXRpYyBjb25zdCBjaGFyIG1hYzgwMjExX2h3c2ltX2dzdHJpbmdzX3N0YXRzW11bRVRIX0dTVFJJTkdfTEVOXSA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0zNDk0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6MzQ5NTojZGVmaW5lIE1BQzgwMjExX0hXU0lNX1NTVEFUU19MRU4gQVJSQVlfU0laRShtYWM4MDIxMV9od3NpbV9nc3RyaW5nc19zdGF0cylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTM0OTYtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9MzUwNj1zdGF0aWMgaW50IG1hYzgwMjExX2h3c2ltX2dldF9ldF9zc2V0X2NvdW50KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTM1MDktXHRpZiAoc3NldCA9PSBFVEhfU1NfU1RBVFMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzozNTEwOlx0XHRyZXR1cm4gTUFDODAyMTFfSFdTSU1fU1NUQVRTX0xFTjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTM1MTEtXHRyZXR1cm4gMDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz0zNTE0PXN0YXRpYyB2b2lkIG1hYzgwMjExX2h3c2ltX2dldF9ldF9zdGF0cyhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0zNTI5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6MzUzMDpcdFdBUk5fT04oaSAhPSBNQUM4MDIxMV9IV1NJTV9TU1RBVFNfTEVOKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTM1MzEtfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTU2NDc9c3RhdGljIGNvbnN0IHU4IGlmdHlwZXNfZXh0X2NhcGFfYXBbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy01NjU1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6NTY1NjojZGVmaW5lIE1BQzgwMjExX0hXU0lNX01MRF9DQVBBX09QU1x0XHRcdFx0XFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTU2NTctXHRGSUVMRF9QUkVQX0NPTlNUKElFRUU4MDIxMV9NTERfQ0FQX09QX1RJRF9UT19MSU5LX01BUF9ORUdfU1VQUCwgXFxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz01NjYyPXN0YXRpYyBjb25zdCBzdHJ1Y3Qgd2lwaHlfaWZ0eXBlX2V4dF9jYXBhYiBtYWM4MDIxMV9od3NpbV9pZnR5cGVzX2V4dF9jYXBhW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNTY2OS1cdFx0XHRcdCAgICBJRUVFODAyMTFfRU1MX0NBUF9FTUxNUl9TVVBQT1JULFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6NTY3MDpcdFx0Lm1sZF9jYXBhX2FuZF9vcHMgPSBNQUM4MDIxMV9IV1NJTV9NTERfQ0FQQV9PUFMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy01NjcxLVx0fSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz03MTQ3PXN0YXRpYyBzdHJ1Y3QgZ2VubF9mYW1pbHkgaHdzaW1fZ2VubF9mYW1pbHkgX19yb19hZnRlcl9pbml0ID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6NzE0ODpcdC5uYW1lID0gXCYjMzQ7TUFDODAyMTFfSFdTSU1cJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy03MTQ5LVx0LnZlcnNpb24gPSAxLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTc0Njc9c3RhdGljIHZvaWQgaHdzaW1fdmlydGlvX3JlbW92ZShzdHJ1Y3QgdmlydGlvX2RldmljZSAqdmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy03NDc1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6NzQ3NjovKiBNQUM4MDIxMV9IV1NJTSB2aXJ0aW8gZGV2aWNlIGlkIHRhYmxlICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy03NDc3LXN0YXRpYyBjb25zdCBzdHJ1Y3QgdmlydGlvX2RldmljZV9pZCBpZF90YWJsZVtdID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6NzQ3ODpcdHsgVklSVElPX0lEX01BQzgwMjExX0hXU0lNLCBWSVJUSU9fREVWX0FOWV9JRCB9LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNzQ3OS1cdHsgMCB9XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYz03OD1zdGF0aWMgdTY0IGh3c2ltX25hbl9nZXRfbWFzdGVyX3Jhbmsoc3RydWN0IG1hYzgwMjExX2h3c2ltX2RhdGEgKmRhdGEpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy04Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6ODM6XHRpZiAoZGF0YS1cdTAwM2VuYW4ucGhhc2UgPT0gTUFDODAyMTFfSFdTSU1fTkFOX1BIQVNFX1VQKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTg0LVx0XHRtYXN0ZXJfcHJlZiA9IGRhdGEtXHUwMDNlbmFuLm1hc3Rlcl9wcmVmO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM9MjE2PXZvaWQgbWFjODAyMTFfaHdzaW1fbmFuX3J4KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtMjczLVx0aWYgKChzbG90ICE9IFNMT1RfMjRHSFpfRFcgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjI3NDpcdCAgICAgZGF0YS1cdTAwM2VuYW4ucGhhc2UgIT0gTUFDODAyMTFfSFdTSU1fTkFOX1BIQVNFX1NDQU4pIHx8XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTI3NS1cdCAgICByeF9zdGF0dXMuZnJlcSAhPSAyNDM3KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtNDM2LVx0XHQgICAgKGNnID09IG93bl9jZyBcdTAwMjZcdTAwMjYgZnJhbWVfYW1yIFx1MDAzZSBjdXJyX2FtcikgfHxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6NDM3Olx0XHQgICAgZGF0YS1cdTAwM2VuYW4ucGhhc2UgPT0gTUFDODAyMTFfSFdTSU1fTkFOX1BIQVNFX1NDQU4pIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtNDM4LVx0XHRcdC8qIEF2b2lkIGEgc3RhdGUgdHJhbnNpdGlvbiAqL1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtNDY4LVx0XHRcdCAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYzo0Njk6XHRcdFx0ZGF0YS1cdTAwM2VuYW4ucGhhc2UgPSBNQUM4MDIxMV9IV1NJTV9OQU5fUEhBU0VfVVA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTQ3MC1cdFx0XHRkYXRhLVx1MDAzZW5hbi5yYW5kb21fZmFjdG9yX3ZhbGlkX2R3c3QgPSAwO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM9NjEyPW1hYzgwMjExX2h3c2ltX25hbl9leGVjX3N0YXRlX3RyYW5zaXRpb25zKHN0cnVjdCBtYWM4MDIxMV9od3NpbV9kYXRhICpkYXRhKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtNjI1LVx0aWYgKGRhdGEtXHUwMDNlbmFuLm1hc3Rlcl90cmFuc2l0aW9uX3Njb3JlIFx1MDAzYyAzKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYzo2MjY6XHRcdGRhdGEtXHUwMDNlbmFuLnJvbGUgPSBNQUM4MDIxMV9IV1NJTV9OQU5fUk9MRV9NQVNURVI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjYyNzpcdGVsc2UgaWYgKGRhdGEtXHUwMDNlbmFuLnJvbGUgPT0gTUFDODAyMTFfSFdTSU1fTkFOX1JPTEVfTUFTVEVSIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy02MjgtXHRcdCBkYXRhLVx1MDAzZW5hbi5tYXN0ZXJfdHJhbnNpdGlvbl9zY29yZSBcdTAwM2U9IDMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjYyOTpcdFx0ZGF0YS1cdTAwM2VuYW4ucm9sZSA9IE1BQzgwMjExX0hXU0lNX05BTl9ST0xFX1NZTkM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjYzMDpcdGVsc2UgaWYgKGRhdGEtXHUwMDNlbmFuLnJvbGUgPT0gTUFDODAyMTFfSFdTSU1fTkFOX1JPTEVfU1lOQyBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtNjMxLVx0XHQgZGF0YS1cdTAwM2VuYW4uc3luY190cmFuc2l0aW9uX3Njb3JlIFx1MDAzZT0gMylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6NjMyOlx0XHRkYXRhLVx1MDAzZW5hbi5yb2xlID0gTUFDODAyMTFfSFdTSU1fTkFOX1JPTEVfTk9OX1NZTkM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjYzMzpcdGVsc2UgaWYgKGRhdGEtXHUwMDNlbmFuLnJvbGUgPT0gTUFDODAyMTFfSFdTSU1fTkFOX1JPTEVfTk9OX1NZTkMgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTYzNC1cdFx0IGRhdGEtXHUwMDNlbmFuLnN5bmNfdHJhbnNpdGlvbl9zY29yZSBcdTAwM2MgMylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6NjM1Olx0XHRkYXRhLVx1MDAzZW5hbi5yb2xlID0gTUFDODAyMTFfSFdTSU1fTkFOX1JPTEVfU1lOQztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtNjM2LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtNjQxLVx0ICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjY0MjpcdGlmIChkYXRhLVx1MDAzZW5hbi5yb2xlID09IE1BQzgwMjExX0hXU0lNX05BTl9ST0xFX01BU1RFUiBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtNjQzLVx0ICAgICFocnRpbWVyX2FjdGl2ZShcdTAwMjZkYXRhLVx1MDAzZW5hbi5kaXNjb3ZlcnlfYmVhY29uX3RpbWVyKSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTY1My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6NjU0Olx0XHRpZiAoZGF0YS1cdTAwM2VuYW4ucGhhc2UgPT0gTUFDODAyMTFfSFdTSU1fTkFOX1BIQVNFX1NDQU4pIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6NjU1Olx0XHRcdGRhdGEtXHUwMDNlbmFuLnBoYXNlID0gTUFDODAyMTFfSFdTSU1fTkFOX1BIQVNFX1dBUk1VUDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtNjU2LVx0XHRcdGRhdGEtXHUwMDNlbmFuLnJhbmRvbV9mYWN0b3JfdmFsaWRfZHdzdCA9IE5BTl9XQVJNVVBfRFdTVDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTY1OS1cdFx0fSBlbHNlIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6NjYwOlx0XHRcdGRhdGEtXHUwMDNlbmFuLnBoYXNlID0gTUFDODAyMTFfSFdTSU1fTkFOX1BIQVNFX1VQO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy02NjEtXHRcdFx0ZGF0YS1cdTAwM2VuYW4ucmFuZG9tX2ZhY3Rvcl92YWxpZF9kd3N0ID1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jPTY5NT1tYWM4MDIxMV9od3NpbV9uYW5fdHhfYmVhY29uKHN0cnVjdCBtYWM4MDIxMV9od3NpbV9kYXRhICpkYXRhLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtNzUwLVx0bmFuX2F0dHIubGVuZ3RoID0gY3B1X3RvX2xlMTYoc2l6ZW9mKG1hc3Rlcl9pbmRpY2F0aW9uKSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjc1MTpcdGlmIChkYXRhLVx1MDAzZW5hbi5waGFzZSA9PSBNQUM4MDIxMV9IV1NJTV9OQU5fUEhBU0VfVVApIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtNzUyLVx0XHRtYXN0ZXJfaW5kaWNhdGlvbi5tYXN0ZXJfcHJlZiA9IGRhdGEtXHUwMDNlbmFuLm1hc3Rlcl9wcmVmO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM9Nzc0PW1hYzgwMjExX2h3c2ltX25hbl9zbG90X3RpbWVyKHN0cnVjdCBocnRpbWVyICp0aW1lcilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTgwNy1cdFx0dHhfc3luY19iZWFjb24gPVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYzo4MDg6XHRcdFx0ZGF0YS1cdTAwM2VuYW4ucGhhc2UgIT0gTUFDODAyMTFfSFdTSU1fTkFOX1BIQVNFX1NDQU4gXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjgwOTpcdFx0XHRkYXRhLVx1MDAzZW5hbi5yb2xlICE9IE1BQzgwMjExX0hXU0lNX05BTl9ST0xFX05PTl9TWU5DO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy04MTAtXHR9XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYz04Njc9bWFjODAyMTFfaHdzaW1fbmFuX2Rpc2NvdmVyeV9iZWFjb25fdGltZXIoc3RydWN0IGhydGltZXIgKnRpbWVyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtODc5LVx0c2NvcGVkX2d1YXJkKHNwaW5sb2NrLCBcdTAwMjZkYXRhLVx1MDAzZW5hbi5zdGF0ZV9sb2NrKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjg4MDpcdFx0aWYgKGRhdGEtXHUwMDNlbmFuLnBoYXNlID09IE1BQzgwMjExX0hXU0lNX05BTl9QSEFTRV9TQ0FOIHx8XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjg4MTpcdFx0ICAgIGRhdGEtXHUwMDNlbmFuLnJvbGUgIT0gTUFDODAyMTFfSFdTSU1fTkFOX1JPTEVfTUFTVEVSKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy04ODItXHRcdFx0cmV0dXJuIEhSVElNRVJfTk9SRVNUQVJUO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM9OTA5PWludCBtYWM4MDIxMV9od3NpbV9uYW5fc3RhcnQoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy05MjYtXHRcdC8qIFN0YXJ0IGluIHRoZSBcJiMzNDtzY2FuXCYjMzQ7IHBoYXNlIGFuZCBzdGF5IHRoZXJlIGZvciBhIGxpdHRsZSBiaXQgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6OTI3Olx0XHRkYXRhLVx1MDAzZW5hbi5waGFzZSA9IE1BQzgwMjExX0hXU0lNX05BTl9QSEFTRV9TQ0FOO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy05MjgtXHRcdGRhdGEtXHUwMDNlbmFuLnJhbmRvbV9mYWN0b3JfdmFsaWRfZHdzdCA9IDE7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy05MzAtXHRcdGRhdGEtXHUwMDNlbmFuLm1hc3Rlcl9wcmVmID0gY29uZi1cdTAwM2VtYXN0ZXJfcHJlZjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6OTMxOlx0XHRkYXRhLVx1MDAzZW5hbi5yb2xlID0gTUFDODAyMTFfSFdTSU1fTkFOX1JPTEVfTUFTVEVSO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy05MzItXHRcdG1lbXNldChcdTAwMjZkYXRhLVx1MDAzZW5hbi5jdXJyZW50X2FtaSwgMCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jPTEyMjY9Ym9vbCBtYWM4MDIxMV9od3NpbV9uYW5fcmVjZWl2ZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTEyMzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjEyMzY6XHRpZiAoZGF0YS1cdTAwM2VuYW4ucGhhc2UgPT0gTUFDODAyMTFfSFdTSU1fTkFOX1BIQVNFX1NDQU4pXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTEyMzctXHRcdHJldHVybiBjaGFubmVsLVx1MDAzZWNlbnRlcl9mcmVxID09IDI0Mzc7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaC02LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaDo3OiNpZm5kZWYgX19NQUM4MDIxMV9IV1NJTV9OQU5fSFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaDo4OiNkZWZpbmUgX19NQUM4MDIxMV9IV1NJTV9OQU5fSFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaC05LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaD0xMD1lbnVtIG1hYzgwMjExX2h3c2ltX25hbl9waGFzZSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5oOjExOlx0TUFDODAyMTFfSFdTSU1fTkFOX1BIQVNFX1NDQU4sXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5oOjEyOlx0TUFDODAyMTFfSFdTSU1fTkFOX1BIQVNFX1dBUk1VUCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmg6MTM6XHRNQUM4MDIxMV9IV1NJTV9OQU5fUEhBU0VfVVAsXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5oLTE0LX07XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaD0xNj1lbnVtIG1hYzgwMjExX2h3c2ltX25hbl9yb2xlIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmg6MTc6XHRNQUM4MDIxMV9IV1NJTV9OQU5fUk9MRV9NQVNURVIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5oOjE4Olx0TUFDODAyMTFfSFdTSU1fTkFOX1JPTEVfU1lOQyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmg6MTk6XHRNQUM4MDIxMV9IV1NJTV9OQU5fUk9MRV9OT05fU1lOQyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmgtMjAtfTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5oPTk5PXZvaWQgbWFjODAyMTFfaHdzaW1fbmFuX2xvY2FsX3NjaGVkX2NoYW5nZWQoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaC0xMDEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5oOjEwMjojZW5kaWYgLyogX19NQUM4MDIxMV9IV1NJTV9OQU5fSCAqL1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAxODowOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNDMzMgoJCQkJCQkJb3V0cHV0OiA0NQoJCQkJCQkJdGhvdWdodHM6IDEwNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIDgwMi4xMSBUWCBRdWV1ZSBBaXJ0aW1lIENoZWNrKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IHVuZGVyc3RhbmRpbmcgaXMgdGhhdCBgaWVlZTgwMjExX3R4cV9haXJ0aW1lX2NoZWNrYCBpcyB0cmlnZ2VyZWQgZHVyaW5nIHRoZSB0cmFuc21pdCBwcm9jZXNzLCBzcGVjaWZpY2FsbHkgd2l0aGluIGBuZXQvbWFjODAyMTEvdHguY2AuIEkgbmVlZCB0byBjb25maXJtIHRoZSBleGFjdCBjYWxsIHBhdGguIEl0IHNlZW1zIHRoYXQgYGllZWU4MDIxMV90eF9kZXF1ZXVlYCBhbmQgYGllZWU4MDIxMV9uZXh0X3R4cWAgYXJlIHRoZSBrZXkgZnVuY3Rpb25zIHRvIGludmVzdGlnYXRlLCBhcyB0aGV5JiMzOTtyZSBsaWtlbHkgdGhlIHByaW1hcnkgY2FsbGVycyBvZiB0aGF0IGNoZWNrLiBNeSBuZXh0IHN0ZXAgd2lsbCBiZSB0byBkaXZlIGRlZXBlciBhbmQgYW5hbHl6ZSBhbGwgb2YgdGhlIGNhbGxlcnMgb2YgYm90aCBgaWVlZTgwMjExX3R4X2RlcXVldWVgIGFuZCBgaWVlZTgwMjExX25leHRfdHhxYC4gVGhpcyB3aWxsIGdpdmUgbWUgYSBjbGVhciBwaWN0dXJlIG9mIHRoZSBhaXJ0aW1lIGNoZWNrJiMzOTtzIGNvbnRleHQgYW5kIGhvdyBpdCBmaXRzIGludG8gdGhlIG92ZXJhbGwgdHJhbnNtaXQgcXVldWUgbWFuYWdlbWVudCBvZiB0aGUgODAyLjExIHN0YWNrLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAxODowOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpZWVlODAyMTFfKHR4X2RlcXVldWV8bmV4dF90eHEpJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS90eC5jPTM4NTQ9c3RhdGljIGJvb2wgaWVlZTgwMjExX2Ryb3BfdW5hdXRoX3BvcnQoc3RydWN0IGllZWU4MDIxMV90eF9kYXRhICp0eClcbi0tXG5uZXQvbWFjODAyMTEvdHguYy0zODg1LVxubmV0L21hYzgwMjExL3R4LmM6Mzg4NjpzdHJ1Y3Qgc2tfYnVmZiAqaWVlZTgwMjExX3R4X2RlcXVldWUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG5uZXQvbWFjODAyMTEvdHguYy0zODg3LVx0XHRcdFx0ICAgICBzdHJ1Y3QgaWVlZTgwMjExX3R4cSAqdHhxKVxuLS1cbm5ldC9tYWM4MDIxMS90eC5jLTQwNzgtfVxubmV0L21hYzgwMjExL3R4LmM6NDA3OTpFWFBPUlRfU1lNQk9MKGllZWU4MDIxMV90eF9kZXF1ZXVlKTtcbm5ldC9tYWM4MDIxMS90eC5jLTQwODAtXG4tLVxubmV0L21hYzgwMjExL3R4LmM9NDEwMT1pZWVlODAyMTFfdHhxX2tlZXBfYWN0aXZlKHN0cnVjdCB0eHFfaW5mbyAqdHhxaSlcbi0tXG5uZXQvbWFjODAyMTEvdHguYy00MTE0LVxubmV0L21hYzgwMjExL3R4LmM6NDExNTpzdHJ1Y3QgaWVlZTgwMjExX3R4cSAqaWVlZTgwMjExX25leHRfdHhxKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCB1OCBhYylcbm5ldC9tYWM4MDIxMS90eC5jLTQxMTYte1xuLS1cbm5ldC9tYWM4MDIxMS90eC5jLTQxNzctfVxubmV0L21hYzgwMjExL3R4LmM6NDE3ODpFWFBPUlRfU1lNQk9MKGllZWU4MDIxMV9uZXh0X3R4cSk7XG5uZXQvbWFjODAyMTEvdHguYy00MTc5LVxubmV0L21hYzgwMjExL3R4LmM9NDE4MD12b2lkIF9faWVlZTgwMjExX3NjaGVkdWxlX3R4cShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbi0tXG5uZXQvbWFjODAyMTEvdHguYy00MTk5LVx0XHQgKiBnZXQgaW1tZWRpYXRlbHkgbW92ZWQgdG8gdGhlIGJhY2sgb2YgdGhlIGxpc3Qgb24gdGhlIG5leHRcbm5ldC9tYWM4MDIxMS90eC5jOjQyMDA6XHRcdCAqIGNhbGwgdG8gaWVlZTgwMjExX25leHRfdHhxKCkuXG5uZXQvbWFjODAyMTEvdHguYy00MjAxLVx0XHQgKi9cbi0tXG5uZXQvbWFjODAyMTEvdXRpbC5jPTI4Nj1zdGF0aWMgdm9pZCB3YWtlX3R4X3B1c2hfcXVldWUoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXG4tLVxubmV0L21hYzgwMjExL3V0aWwuYy0yOTUtXHR3aGlsZSAoMSkge1xubmV0L21hYzgwMjExL3V0aWwuYzoyOTY6XHRcdHNrYiA9IGllZWU4MDIxMV90eF9kZXF1ZXVlKFx1MDAyNmxvY2FsLVx1MDAzZWh3LCBxdWV1ZSk7XG5uZXQvbWFjODAyMTEvdXRpbC5jLTI5Ny1cdFx0aWYgKCFza2IpXG4tLVxubmV0L21hYzgwMjExL3V0aWwuYz0zMDU9dm9pZCBpZWVlODAyMTFfaGFuZGxlX3dha2VfdHhfcXVldWUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4tLVxubmV0L21hYzgwMjExL3V0aWwuYy0zMTMtXG5uZXQvbWFjODAyMTEvdXRpbC5jOjMxNDpcdC8qIFVzZSBpZWVlODAyMTFfbmV4dF90eHEoKSBmb3IgYWlydGltZSBmYWlybmVzcyBhY2NvdW50aW5nICovXG5uZXQvbWFjODAyMTEvdXRpbC5jLTMxNS1cdGllZWU4MDIxMV90eHFfc2NoZWR1bGVfc3RhcnQoaHcsIHR4cS1cdTAwM2VhYyk7XG5uZXQvbWFjODAyMTEvdXRpbC5jOjMxNjpcdHdoaWxlICgocXVldWUgPSBpZWVlODAyMTFfbmV4dF90eHEoaHcsIHR4cS1cdTAwM2VhYykpKSB7XG5uZXQvbWFjODAyMTEvdXRpbC5jLTMxNy1cdFx0d2FrZV90eF9wdXNoX3F1ZXVlKGxvY2FsLCBzZGF0YSwgcXVldWUpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAxODowOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNTY1OQoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDk5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgV2lyZWxlc3MgVHJhbnNtaXNzaW9uIFF1ZXVlKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBpbnRvIHRoaXMgYGllZWU4MDIxMV90eHFfYWlydGltZV9jaGVja2AgZnVuY3Rpb24sIHdoaWNoIGZyb20gd2hhdCBJIHVuZGVyc3RhbmQsIGlzIGNydWNpYWwgZm9yIG1hbmFnaW5nIHBhY2tldCB0cmFuc21pc3Npb24gYW5kIHF1ZXVlIHByb2Nlc3Npbmcgd2l0aGluIHRoZSBtYWM4MDIxMSBmcmFtZXdvcmsuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgb2YgdGhlIGBUWF9OT19QVVNIQkFDS2AgZmxhZy4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgYGF0aDExa2AgaXMgdGhlIHNvbGUgZHJpdmVyIHJlc3BvbnNpYmxlIGZvciBzZXR0aW5nIHRoaXMgc3BlY2lmaWMgZmxhZy4gSSBuZWVkIHRvIGRldGVybWluZSBpZiBvdGhlciBkcml2ZXJzIG1pZ2h0IHV0aWxpemUgaXQsIG9yIGlmIHRoZXJlJiMzOTtzIGEgYnJvYWRlciBtZWNoYW5pc20gYXQgcGxheS4gVGhlcmVmb3JlLCB0aGUgbmV4dCBzdGVwIGlzIGEgbW9yZSBleGhhdXN0aXZlIGludmVzdGlnYXRpb24gaW50byB0aGUga2VybmVsIHNvdXJjZS4gSSYjMzk7bSBnb2luZyB0byBjb25kdWN0IGEgY29tcHJlaGVuc2l2ZSBzZWFyY2ggZm9yIGluc3RhbmNlcyBvZiBgVFhfTk9fUFVTSEJBQ0tgIHRocm91Z2hvdXQgdGhlIGVudGlyZSBrZXJuZWwgcmVwb3NpdG9yeSB0byBnYWluIGEgaG9saXN0aWMgdmlldyBvZiBpdHMgdXNhZ2UgYW5kIGltcGxpY2F0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMTg6MTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7VFhfTk9fUFVTSEJBQ0smIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYz0xMDQ0Mj1zdGF0aWMgaW50IF9fYXRoMTFrX21hY19yZWdpc3RlcihzdHJ1Y3QgYXRoMTFrICphcilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jLTEwNDk2LVx0aWVlZTgwMjExX2h3X3NldChhci1cdTAwM2VodywgU1VQUE9SVFNfUFMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYzoxMDQ5NzpcdGllZWU4MDIxMV9od19zZXQoYXItXHUwMDNlaHcsIFRYX05PX1BVU0hCQUNLKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmMtMTA0OTgtXHRpZWVlODAyMTFfaHdfc2V0KGFyLVx1MDAzZWh3LCBTVVBQT1JUU19EWU5BTUlDX1BTKTtcbi0tXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oPTI4MjU9c3RydWN0IGllZWU4MDIxMV90eHEge1xuLS1cbmluY2x1ZGUvbmV0L21hYzgwMjExLmgtMzA4OC0gKlxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaDozMDg5OiAqIEBJRUVFODAyMTFfSFdfVFhfTk9fUFVTSEJBQ0s6IFRoZSBkcml2ZXIgaGFuZHMgZXZlcnkgZnJhbWUgaXQgZGVxdWV1ZXNcbmluY2x1ZGUvbmV0L21hYzgwMjExLmgtMzA5MC0gKlx0dG8gdGhlIGhhcmR3YXJlIGF0IG9uY2UsIGFuZCB0aGUgaGFyZHdhcmUgcGlja3MgdGhlIHN0YXRpb24gaXQgc2VydmVzXG4tLVxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaD0zMDk3PWVudW0gaWVlZTgwMjExX2h3X2ZsYWdzIHtcbi0tXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oLTMxNTUtXHRJRUVFODAyMTFfSFdfU1VQUE9SVFNfTkRQX0JMT0NLQUNLLFxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaDozMTU2Olx0SUVFRTgwMjExX0hXX1RYX05PX1BVU0hCQUNLLFxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaC0zMTU3LVxuLS1cbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzLmM9NDA1PXN0YXRpYyBjb25zdCBjaGFyICpod19mbGFnX25hbWVzW10gPSB7XG4tLVxubmV0L21hYzgwMjExL2RlYnVnZnMuYy00NjQtXHRGTEFHKFNVUFBPUlRTX05EUF9CTE9DS0FDSyksXG5uZXQvbWFjODAyMTEvZGVidWdmcy5jOjQ2NTpcdEZMQUcoVFhfTk9fUFVTSEJBQ0spLFxubmV0L21hYzgwMjExL2RlYnVnZnMuYy00NjYtI3VuZGVmIEZMQUdcbi0tXG5uZXQvbWFjODAyMTEvdHguYz00MjIwPXN0YXRpYyB1MzIgaWVlZTgwMjExX2FxbF9zdGFfbGltaXQoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXG4tLVxubmV0L21hYzgwMjExL3R4LmMtNDIyNC1cbm5ldC9tYWM4MDIxMS90eC5jOjQyMjU6XHRpZiAoIWllZWU4MDIxMV9od19jaGVjayhcdTAwMjZsb2NhbC1cdTAwM2VodywgVFhfTk9fUFVTSEJBQ0spIHx8XG5uZXQvbWFjODAyMTEvdHguYy00MjI2LVx0ICAgIHN0YS1cdTAwM2VhaXJ0aW1lX3dlaWdodCA9PSBJRUVFODAyMTFfREVGQVVMVF9BSVJUSU1FX1dFSUdIVClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMTg6MTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzY2OTgKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiA5NTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqV29ydGggRnV6emluZyBBc3Nlc3NtZW50OiBBUUwgSW50ZWdyYXRpb24gaW4gbWFjODAyMTEqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBzY2FuIHNob3dzIHRoaXMgcGF0Y2ggdG91Y2hlcyBhIGZldyBrZXkgYXJlYXMuIEZpcnN0LCB3ZSBoYXZlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jYCwgd2hpY2ggaXMgc2V0dGluZyB0aGUgYFRYX05PX1BVU0hCQUNLYCBmbGFnIGR1cmluZyBgYXRoMTFrYCBoYXJkd2FyZSByZWdpc3RyYXRpb24uIFdlIGFsc28gc2VlIHRoZSBkZWZpbml0aW9uIG9mIHRoaXMgbmV3IGZsYWcsIGBJRUVFODAyMTFfSFdfVFhfTk9fUFVTSEJBQ0tgLCBpbiBgaW5jbHVkZS9uZXQvbWFjODAyMTEuaGAsIGFuZCBpdHMgYWRkaXRpb24gdG8gZGVidWdmcyBpbiBgbmV0L21hYzgwMjExL2RlYnVnZnMuY2AuICBGaW5hbGx5LCB0aGUgY3JpdGljYWwgcGllY2U6IGBuZXQvbWFjODAyMTEvdHguY2AsIHdoZXJlIHdlIGZpbmQgdGhlIGltcGxlbWVudGF0aW9uIG9mIGBpZWVlODAyMTFfYXFsX3N0YV9saW1pdGAgYW5kIGl0cyBpbnRlZ3JhdGlvbiBpbnRvIGBpZWVlODAyMTFfdHhxX2FpcnRpbWVfY2hlY2tgLgoKTm93LCB0aGUgaW1wb3J0YW50IHF1ZXN0aW9uIGlzIHJlYWNoYWJpbGl0eS4gQ2FuIHdlIGhpdCB0aGF0IGNvZGUgZHVyaW5nIGZ1enppbmc/IFRoZSBnb29kIG5ld3MgaXMsIGBpZWVlODAyMTFfdHhxX2FpcnRpbWVfY2hlY2soKWAgKmFsd2F5cyogZXhlY3V0ZXMgZm9yIGFpcnRpbWUgY2hlY2tzIGlmIEFRTCAoYWlydGltZSBxdWV1ZSBsaW1pdCkgaXMgZW5hYmxlZCBvbiBhIHdpcGh5LiBMb29raW5nIGF0IHRoZSBjb2RlOgoKYGBgYwoJaWYgKCF3aXBoeV9leHRfZmVhdHVyZV9pc3NldChsb2NhbC0mZ3Q7aHcud2lwaHksIE5MODAyMTFfRVhUX0ZFQVRVUkVfQVFMKSkKCQlyZXR1cm4gdHJ1ZTsKCglpZiAoc3RhdGljX2JyYW5jaF91bmxpa2VseSgmYW1wO2FxbF9kaXNhYmxlKSkKCQlyZXR1cm4gdHJ1ZTsKCglpZiAoIXR4cS0mZ3Q7c3RhKQoJCXJldHVybiBhdG9taWNfcmVhZCgmYW1wO2xvY2FsLSZndDthcWxfbWNfcGVuZGluZ19haXJ0aW1lKSAmbHQ7CgkJICAgICAgIGxvY2FsLSZndDthcWxfdHhxX2xpbWl0X21jOwoKCWlmICh1bmxpa2VseSh0eHEtJmd0O3RpZCA9PSBJRUVFODAyMTFfTlVNX1RJRFMpKQoJCXJldHVybiB0cnVlOwoKCXN0YSA9IGNvbnRhaW5lcl9vZih0eHEtJmd0O3N0YSwgc3RydWN0IHN0YV9pbmZvLCBzdGEpOwoJaWYgKGF0b21pY19yZWFkKCZhbXA7c3RhLSZndDthaXJ0aW1lW3R4cS0mZ3Q7YWNdLmFxbF90eF9wZW5kaW5nKSAmbHQ7CgkgICAgaWVlZTgwMjExX2FxbF9zdGFfbGltaXQobG9jYWwsIHN0YSwKCQkJCSAgICBzdGEtJmd0O2FpcnRpbWVbdHhxLSZndDthY10uYXFsX2xpbWl0X2xvdykpCgkJcmV0dXJuIHRydWU7CgoJaWYgKGF0b21pY19yZWFkKCZhbXA7bG9jYWwtJmd0O2FxbF90b3RhbF9wZW5kaW5nX2FpcnRpbWUpICZsdDsKCSAgICBsb2NhbC0mZ3Q7YXFsX3RocmVzaG9sZCAmYW1wOyZhbXA7CgkgICAgYXRvbWljX3JlYWQoJmFtcDtzdGEtJmd0O2FpcnRpbWVbdHhxLSZndDthY10uYXFsX3R4X3BlbmRpbmcpICZsdDsKCSAgICBpZWVlODAyMTFfYXFsX3N0YV9saW1pdChsb2NhbCwgc3RhLAoJCQkJICAgIHN0YS0mZ3Q7YWlydGltZVt0eHEtJmd0O2FjXS5hcWxfbGltaXRfaGlnaCkpCgkJcmV0dXJuIHRydWU7CgoJcmV0dXJuIGZhbHNlOwpgYGAKCkV2ZW4gaWYgYCFpZWVlODAyMTFfaHdfY2hlY2soJmFtcDtsb2NhbC0mZ3Q7aHcsIFRYX05PX1BVU0hCQUNLKWAsIHdoaWNoIGlzIHdoYXQgdGhpcyBwYXRjaCBpcyBsaWtlbHkgYWltZWQgYXQsICBgaWVlZTgwMjExX2FxbF9zdGFfbGltaXRgICp3aWxsKiBiZSBjYWxsZWQgZHVyaW5nIFRYIG9uIGBtYWM4MDIxMWAgd2hlbiBBUUwgaXMgYWN0aXZlLiBBbmQgbGV0JiMzOTtzIGJlIGNsZWFyOiBgbWFjODAyMTFgIGlzIGEgY29yZSBzdWJzeXN0ZW0uCgpOb3csIGNhbiB3ZSByZWFjaCBgbWFjODAyMTFgIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFPyBBYnNvbHV0ZWx5LiAgV2UgaGF2ZSBgbmV0bGluayAobmw4MDIxMSlgLCBgbWFjODAyMTFfaHdzaW1gLCB2aXJ0dWFsIGludGVyZmFjZXMsIHNvY2tldHMsIGV0Yy4sIGFsbCBwcm92aWRpbmcgcGF0aHMgaW4uIFN5emthbGxlciwgd2hpY2ggSSYjMzk7bSB2ZXJ5IGZhbWlsaWFyIHdpdGgsIGV4dGVuc2l2ZWx5IGV4ZXJjaXNlcyBgbWFjODAyMTFgIGFuZCBgbmw4MDIxMWAuCgpTbywgY29uc2lkZXJpbmcgb3VyIGNyaXRlcmlhOgoKKiAgICoqUmVhY2hhYmlsaXR5Kio6IFllcywgYG1hYzgwMjExYCBpcyByZWFjaGFibGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSB0aGUgbWV0aG9kcyBhYm92ZS4KKiAgICoqQ29yZSBTdWJzeXN0ZW0gTW9kaWZpY2F0aW9uKio6ICBXZSYjMzk7cmUgbW9kaWZ5aW5nIGBtYWM4MDIxMWAgdHggc2NoZWR1bGluZyAvIEFRTCBsb2dpYywgd2hpY2ggaXMgY3JpdGljYWwuCiogICAqKldvcnRoIEZ1enppbmcqKjogICoqVFJVRSoqLiAgVGhpcyBpcyBhIHByaW1lIHRhcmdldC4KCk5leHQsIEkmIzM5O2xsIGNoZWNrIHRoZSBLY29uZmlnIGRlcGVuZGVuY2llcyBmb3IgYE1BQzgwMjExYCBhbmQgYEFUSDExS2AgdG8gZW5zdXJlIHRoaXMgaXMgYWxsIHByb3Blcmx5IGVuYWJsZWQgZm9yIG91ciBmdXp6aW5nIHNldHVwcy4gIFdlJiMzOTtyZSBsb29raW5nIGZvciBhbnkgcG90ZW50aWFsIG9ic3RhY2xlcywgYnV0IGJhc2VkIG9uIHRoaXMgaW5pdGlhbCBhbmFseXNpcywgdGhpcyBwYXRjaCBkZWZpbml0ZWx5IHdhcnJhbnRzIGZ1cnRoZXIgaW52ZXN0aWdhdGlvbiBhbmQgZnV6emluZyBlZmZvcnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDE4OjEwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBNQUM4MDIxMSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxubmV0L21hYzgwMjExL0tjb25maWc6Mjpjb25maWcgTUFDODAyMTFcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtHZW5lcmljIElFRUUgODAyLjExIE5ldHdvcmtpbmcgU3RhY2sgKG1hYzgwMjExKVwmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnPTE5PWlmIE1BQzgwMjExICE9IG5cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIwLVxubmV0L21hYzgwMjExL0tjb25maWc6MjE6Y29uZmlnIE1BQzgwMjExX0hBU19SQ1xubmV0L21hYzgwMjExL0tjb25maWctMjItXHRib29sXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMy1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI0OmNvbmZpZyBNQUM4MDIxMV9SQ19NSU5TVFJFTFxubmV0L21hYzgwMjExL0tjb25maWctMjUtXHRib29sIFwmIzM0O01pbnN0cmVsXCYjMzQ7IGlmIEVYUEVSVFxuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnPTMxPWNob2ljZVxuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTQwLVxubmV0L21hYzgwMjExL0tjb25maWc6NDE6Y29uZmlnIE1BQzgwMjExX1JDX0RFRkFVTFRfTUlOU1RSRUxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTQyLVx0Ym9vbCBcJiMzNDtNaW5zdHJlbFwmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnPTQ4PWVuZGNob2ljZVxubmV0L21hYzgwMjExL0tjb25maWctNDktXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo1MDpjb25maWcgTUFDODAyMTFfUkNfREVGQVVMVFxubmV0L21hYzgwMjExL0tjb25maWctNTEtXHRzdHJpbmdcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZz01Nz1jb21tZW50IFwmIzM0O1NvbWUgd2lyZWxlc3MgZHJpdmVycyByZXF1aXJlIGEgcmF0ZSBjb250cm9sIGFsZ29yaXRobVwmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTU5LVxubmV0L21hYzgwMjExL0tjb25maWc6NjA6Y29uZmlnIE1BQzgwMjExX0tVTklUX1RFU1Rcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTYxLVx0dHJpc3RhdGUgXCYjMzQ7S1VuaXQgdGVzdHMgZm9yIG1hYzgwMjExXCYjMzQ7IGlmICFLVU5JVF9BTExfVEVTVFNcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy02OS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjcwOmNvbmZpZyBNQUM4MDIxMV9NRVNIXG5uZXQvbWFjODAyMTEvS2NvbmZpZy03MS1cdGJvb2wgXCYjMzQ7RW5hYmxlIG1hYzgwMjExIG1lc2ggbmV0d29ya2luZyBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctNzgtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo3OTpjb25maWcgTUFDODAyMTFfTEVEU1xubmV0L21hYzgwMjExL0tjb25maWctODAtXHRib29sIFwmIzM0O0VuYWJsZSBMRUQgdHJpZ2dlcnNcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy04Ny1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjg4OmNvbmZpZyBNQUM4MDIxMV9ERUJVR0ZTXG5uZXQvbWFjODAyMTEvS2NvbmZpZy04OS1cdGJvb2wgXCYjMzQ7RXhwb3J0IG1hYzgwMjExIGludGVybmFscyBpbiBEZWJ1Z0ZTXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctOTYtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo5Nzpjb25maWcgTUFDODAyMTFfTUVTU0FHRV9UUkFDSU5HXG5uZXQvbWFjODAyMTEvS2NvbmZpZy05OC1cdGJvb2wgXCYjMzQ7VHJhY2UgYWxsIG1hYzgwMjExIGRlYnVnIG1lc3NhZ2VzXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMTA5LVxubmV0L21hYzgwMjExL0tjb25maWc6MTEwOm1lbnVjb25maWcgTUFDODAyMTFfREVCVUdfTUVOVVxubmV0L21hYzgwMjExL0tjb25maWctMTExLVx0Ym9vbCBcJiMzNDtTZWxlY3QgbWFjODAyMTEgZGVidWdnaW5nIGZlYXR1cmVzXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMTE1LVxubmV0L21hYzgwMjExL0tjb25maWc6MTE2OmNvbmZpZyBNQUM4MDIxMV9OT0lOTElORVxubmV0L21hYzgwMjExL0tjb25maWctMTE3LVx0Ym9vbCBcJiMzNDtEbyBub3QgaW5saW5lIFRYL1JYIGhhbmRsZXJzXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMTMxLVxubmV0L21hYzgwMjExL0tjb25maWc6MTMyOmNvbmZpZyBNQUM4MDIxMV9WRVJCT1NFX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMzMtXHRib29sIFwmIzM0O1ZlcmJvc2UgZGVidWdnaW5nIG91dHB1dFwmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE0Mi1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE0Mzpjb25maWcgTUFDODAyMTFfTUxNRV9ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMTQ0LVx0Ym9vbCBcJiMzNDtWZXJib3NlIG1hbmFnZWQgTUxNRSBvdXRwdXRcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNTMtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxNTQ6Y29uZmlnIE1BQzgwMjExX1NUQV9ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMTU1LVx0Ym9vbCBcJiMzNDtWZXJib3NlIHN0YXRpb24gZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMTYyLVxubmV0L21hYzgwMjExL0tjb25maWc6MTYzOmNvbmZpZyBNQUM4MDIxMV9IVF9ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMTY0LVx0Ym9vbCBcJiMzNDtWZXJib3NlIEhUIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE3NC1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE3NTpjb25maWcgTUFDODAyMTFfT0NCX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNzYtXHRib29sIFwmIzM0O1ZlcmJvc2UgT0NCIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE4NS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE4Njpjb25maWcgTUFDODAyMTFfSUJTU19ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMTg3LVx0Ym9vbCBcJiMzNDtWZXJib3NlIElCU1MgZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMTk2LVxubmV0L21hYzgwMjExL0tjb25maWc6MTk3OmNvbmZpZyBNQUM4MDIxMV9QU19ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMTk4LVx0Ym9vbCBcJiMzNDtWZXJib3NlIHBvd2Vyc2F2ZSBtb2RlIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIwOC1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIwOTpjb25maWcgTUFDODAyMTFfTVBMX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMTAtXHRib29sIFwmIzM0O1ZlcmJvc2UgbWVzaCBwZWVyIGxpbmsgZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMjIxLVxubmV0L21hYzgwMjExL0tjb25maWc6MjIyOmNvbmZpZyBNQUM4MDIxMV9NUEFUSF9ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMjIzLVx0Ym9vbCBcJiMzNDtWZXJib3NlIG1lc2ggcGF0aCBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMzQtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMzU6Y29uZmlnIE1BQzgwMjExX01IV01QX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMzYtXHRib29sIFwmIzM0O1ZlcmJvc2UgbWVzaCBIV01QIHJvdXRpbmcgZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMjQ3LVxubmV0L21hYzgwMjExL0tjb25maWc6MjQ4OmNvbmZpZyBNQUM4MDIxMV9NRVNIX1NZTkNfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI0OS1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBtZXNoIHN5bmNocm9uaXphdGlvbiBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNTgtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNTk6Y29uZmlnIE1BQzgwMjExX01FU0hfQ1NBX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNjAtXHRib29sIFwmIzM0O1ZlcmJvc2UgbWVzaCBjaGFubmVsIHN3aXRjaCBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNjktXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNzA6Y29uZmlnIE1BQzgwMjExX01FU0hfUFNfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI3MS1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBtZXNoIHBvd2Vyc2F2ZSBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yODAtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyODE6Y29uZmlnIE1BQzgwMjExX1RETFNfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI4Mi1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBURExTIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI5Mi1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI5Mzpjb25maWcgTUFDODAyMTFfREVCVUdfQ09VTlRFUlNcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI5NC1cdGJvb2wgXCYjMzQ7RXh0cmEgc3RhdGlzdGljcyBmb3IgVFgvUlggZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMzA3LVxubmV0L21hYzgwMjExL0tjb25maWc6MzA4OmNvbmZpZyBNQUM4MDIxMV9TVEFfSEFTSF9NQVhfU0laRVxubmV0L21hYzgwMjExL0tjb25maWctMzA5LVx0aW50IFwmIzM0O1N0YXRpb24gaGFzaCB0YWJsZSBtYXhpbXVtIHNpemVcJiMzNDsgaWYgTUFDODAyMTFfREVCVUdfTUVOVVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAxODoxMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MDg0MwoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDM0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUmIzM5O3MgaG93IEkmIzM5O2QgYXBwcm9hY2ggdGhhdCBrZXJuZWwgY29uZmlndXJhdGlvbiBmaWxlIGNoZWNrOgoKKipFeGFtaW5pbmcgTUFDODAyMTEgRGVwZW5kZW5jaWVzKioKCkFscmlnaHQsIGJlZm9yZSBJIGdldCB0b28gZGVlcCBpbnRvIHRoaXMgcHJvYmxlbSwgSSB3YW50IHRvIHRha2UgYSBsb29rIGF0IHRoZSBgbmV0L21hYzgwMjExL0tjb25maWdgIGZpbGUsIHNwZWNpZmljYWxseSBsaW5lcyAxIHRocm91Z2ggMjAuIFRoYXQmIzM5O3MgdXN1YWxseSBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgdG8gdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzIGFuZCBjb3JlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIE1BQzgwMjExIHdpcmVsZXNzIHN0YWNrLiBJJiMzOTttIGV4cGVjdGluZyB0byBzZWUgdGhpbmdzIGxpa2UgcGxhdGZvcm0gZHJpdmVycyB0aGF0IGl0IHJlbGllcyBvbiwgdmFyaW91cyBmZWF0dXJlIGZsYWdzLCBhbmQgcG90ZW50aWFsbHkgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIGluIHRoYXQgaW5pdGlhbCBzZWN0aW9uLiBUaGlzJiMzOTtsbCBoZWxwIG1lIGJ1aWxkIGEgbWVudGFsIG1vZGVsIG9mIHRoZSByZXF1aXJlbWVudHMgYmVmb3JlIEkgc3RhcnQgZGlnZ2luZyBpbnRvIGFueSBwYXJ0aWN1bGFyIGlzc3VlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IG90aGVyIGNvbXBvbmVudHMgdGhlIE1BQzgwMjExIGxheWVyIGxpbmtzIHRvIHNvIEkgY2FuIGdldCBhIGZ1bGxlciBwaWN0dXJlIG9mIGl0cyByZWxhdGlvbnNoaXAgdG8gdGhlIHN5c3RlbSBhcyBhIHdob2xlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAxODoxMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyNQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0Y29uZmlnIE1BQzgwMjExXG4gICAzOlx0XHR0cmlzdGF0ZSBcJiMzNDtHZW5lcmljIElFRUUgODAyLjExIE5ldHdvcmtpbmcgU3RhY2sgKG1hYzgwMjExKVwmIzM0O1xuICAgNDpcdFx0ZGVwZW5kcyBvbiBDRkc4MDIxMVxuICAgNTpcdFx0c2VsZWN0IENSWVBUT1xuICAgNjpcdFx0c2VsZWN0IENSWVBUT19MSUJfQUVTX0NCQ19NQUNTXG4gICA3Olx0XHRzZWxlY3QgQ1JZUFRPX0xJQl9BUkM0XG4gICA4Olx0XHRzZWxlY3QgQ1JZUFRPX0FFU1xuICAgOTpcdFx0c2VsZWN0IENSWVBUT19DQ01cbiAgMTA6XHRcdHNlbGVjdCBDUllQVE9fR0NNXG4gIDExOlx0XHRzZWxlY3QgQ1JDMzJcbiAgMTI6XHRcdGhlbHBcbiAgMTM6XHRcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyB0aGUgaGFyZHdhcmUgaW5kZXBlbmRlbnQgSUVFRSA4MDIuMTFcbiAgMTQ6XHRcdCAgbmV0d29ya2luZyBzdGFjay5cbiAgMTU6XHRcbiAgMTY6XHRjb21tZW50IFwmIzM0O0NGRzgwMjExIG5lZWRzIHRvIGJlIGVuYWJsZWQgZm9yIE1BQzgwMjExXCYjMzQ7XG4gIDE3Olx0XHRkZXBlbmRzIG9uIENGRzgwMjExPW5cbiAgMTg6XHRcbiAgMTk6XHRpZiBNQUM4MDIxMSAhPSBuXG4gIDIwOlx0XG4gIDIxOlx0Y29uZmlnIE1BQzgwMjExX0hBU19SQ1xuICAyMjpcdFx0Ym9vbFxuICAyMzpcdFxuICAyNDpcdGNvbmZpZyBNQUM4MDIxMV9SQ19NSU5TVFJFTFxuICAyNTpcdFx0Ym9vbCBcJiMzNDtNaW5zdHJlbFwmIzM0OyBpZiBFWFBFUlRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMTg6MTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDE0NTIKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiAxNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgdGhlIG9uZSB0aGlua2luZyBpdDoKCioqRGlnZ2luZyBEZWVwZXI6IENGRzgwMjExIERlcGVuZGVuY2llcyoqCgpPa2F5LCBzbyB3ZSYjMzk7dmUgYmVlbiBsb29raW5nIGF0IHRoaXMgaXNzdWUgZnJvbSBhIGZldyBhbmdsZXMsIGFuZCBJIHRoaW5rIHdlIG5lZWQgdG8gYnJvYWRlbiBvdXIgc2NvcGUganVzdCBhIGJpdC4gV2hpbGUgdGhlIGluaXRpYWwgZm9jdXMgd2FzIFtvcmlnaW5hbCBwcm9ibGVtIGFyZWEsIGlmIGdpdmVuIGluIHRoZSBjb250ZXh0XSwgaXQmIzM5O3MgYWxzbyB3b3J0aCBjaGVja2luZyB0aGUgYENGRzgwMjExYCBkZXBlbmRlbmNpZXMuIEl0JiMzOTtzIGEga2V5IGNvbXBvbmVudCBpbiB0aGUgd2lyZWxlc3Mgc3RhY2ssIGFuZCBhIHBvdGVudGlhbCBoaWNjdXAgdGhlcmUgY291bGQgZWFzaWx5IGJlIGNhdXNpbmcgdGhlc2Ugc3ltcHRvbXMsIGVpdGhlciBkaXJlY3RseSBvciBpbmRpcmVjdGx5LiBJdCYjMzk7cyB0aGUgc29ydCBvZiBkZXRhaWwgdGhhdCBjYW4gZ2V0IG92ZXJsb29rZWQgaW4gdGhlIGJpZ2dlciBwaWN0dXJlLCBidXQgSSYjMzk7dmUgbGVhcm5lZCB0aGF0IG92ZXJsb29raW5nIGl0IGlzIG5vdCBhIGx1eHVyeSBJIGNhbiBhZmZvcmQgYXQgdGhpcyBwb2ludC4gVGltZSB0byB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgdGhhdCBtb2R1bGUgYW5kIGl0cyBpbnRlcmFjdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDE4OjEwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBDRkc4MDIxMSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC93aXJlbGVzcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvd2lyZWxlc3MvS2NvbmZpZz0xND1jb25maWcgV0VYVF9QUklWXG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctMTYtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxNzpjb25maWcgQ0ZHODAyMTFcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE4LVx0dHJpc3RhdGUgXCYjMzQ7Y2ZnODAyMTEgLSB3aXJlbGVzcyBjb25maWd1cmF0aW9uIEFQSVwmIzM0O1xuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnPTM4PWNvbmZpZyBOTDgwMjExX1RFU1RNT0RFXG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctNTEtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzo1Mjpjb25maWcgQ0ZHODAyMTFfREVWRUxPUEVSX1dBUk5JTkdTXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy01My1cdGJvb2wgXCYjMzQ7ZW5hYmxlIGRldmVsb3BlciB3YXJuaW5nc1wmIzM0O1xuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTY3LVxubmV0L3dpcmVsZXNzL0tjb25maWc6Njg6Y29uZmlnIENGRzgwMjExX0NFUlRJRklDQVRJT05fT05VU1xubmV0L3dpcmVsZXNzL0tjb25maWctNjktXHRib29sIFwmIzM0O2NmZzgwMjExIGNlcnRpZmljYXRpb24gb251c1wmIzM0O1xuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTg4LVxubmV0L3dpcmVsZXNzL0tjb25maWc6ODk6Y29uZmlnIENGRzgwMjExX1JFUVVJUkVfU0lHTkVEX1JFR0RCXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy05MC1cdGJvb2wgXCYjMzQ7cmVxdWlyZSByZWdkYiBzaWduYXR1cmVcJiMzNDsgaWYgQ0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTXG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctOTgtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzo5OTpjb25maWcgQ0ZHODAyMTFfVVNFX0tFUk5FTF9SRUdEQl9LRVlTXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMDAtXHRib29sIFwmIzM0O2FsbG93IHJlZ2RiIGtleXMgc2hpcHBlZCB3aXRoIHRoZSBrZXJuZWxcJiMzNDsgaWYgQ0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTXG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctMTEwLVxubmV0L3dpcmVsZXNzL0tjb25maWc6MTExOmNvbmZpZyBDRkc4MDIxMV9FWFRSQV9SRUdEQl9LRVlESVJcbm5ldC93aXJlbGVzcy9LY29uZmlnLTExMi1cdHN0cmluZyBcJiMzNDthZGRpdGlvbmFsIHJlZ2RiIGtleSBkaXJlY3RvcnlcJiMzNDsgaWYgQ0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTXG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctMTIxLVxubmV0L3dpcmVsZXNzL0tjb25maWc6MTIyOmNvbmZpZyBDRkc4MDIxMV9SRUdfQ0VMTFVMQVJfSElOVFNcbm5ldC93aXJlbGVzcy9LY29uZmlnLTEyMy1cdGJvb2wgXCYjMzQ7Y2ZnODAyMTEgcmVndWxhdG9yeSBzdXBwb3J0IGZvciBjZWxsdWxhciBiYXNlIHN0YXRpb24gaGludHNcJiMzNDtcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMzQtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxMzU6Y29uZmlnIENGRzgwMjExX1JFR19SRUxBWF9OT19JUlxubmV0L3dpcmVsZXNzL0tjb25maWctMTM2LVx0Ym9vbCBcJiMzNDtjZmc4MDIxMSBzdXBwb3J0IGZvciBOT19JUiByZWxheGF0aW9uXCYjMzQ7XG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctMTU4LVxubmV0L3dpcmVsZXNzL0tjb25maWc6MTU5OmNvbmZpZyBDRkc4MDIxMV9ERUZBVUxUX1BTXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNjAtXHRib29sIFwmIzM0O2VuYWJsZSBwb3dlcnNhdmUgYnkgZGVmYXVsdFwmIzM0O1xuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTE2OC1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjE2OTpjb25maWcgQ0ZHODAyMTFfREVCVUdGU1xubmV0L3dpcmVsZXNzL0tjb25maWctMTcwLVx0Ym9vbCBcJiMzNDtjZmc4MDIxMSBEZWJ1Z0ZTIGVudHJpZXNcJiMzNDtcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNzYtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxNzc6Y29uZmlnIENGRzgwMjExX0NSREFfU1VQUE9SVFxubmV0L3dpcmVsZXNzL0tjb25maWctMTc4LVx0Ym9vbCBcJiMzNDtzdXBwb3J0IENSREFcJiMzNDsgaWYgRVhQRVJUXG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctMTg2LVxubmV0L3dpcmVsZXNzL0tjb25maWc6MTg3OmNvbmZpZyBDRkc4MDIxMV9XRVhUXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xODgtXHRib29sIFwmIzM0O2NmZzgwMjExIHdpcmVsZXNzIGV4dGVuc2lvbnMgY29tcGF0aWJpbGl0eVwmIzM0O1xuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTE5My1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjE5NDpjb25maWcgQ0ZHODAyMTFfS1VOSVRfVEVTVFxubmV0L3dpcmVsZXNzL0tjb25maWctMTk1LVx0dHJpc3RhdGUgXCYjMzQ7S1VuaXQgdGVzdHMgZm9yIGNmZzgwMjExXCYjMzQ7IGlmICFLVU5JVF9BTExfVEVTVFNcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMTg6MTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDI1OTQKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAxMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSBkZXBlbmRlbmNpZXMsIGFzIGlmIEkgd2VyZSB0aGlua2luZyBpdDoKCioqRGlnZ2luZyBpbnRvIEFUSDExSyBEZXBlbmRlbmNpZXMqKgoKT2theSwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkgd2l0aCBgQVRIMTFLYC4gRmlyc3QgdGhpbmdzIGZpcnN0LCBsZXQmIzM5O3MgbmFpbCBkb3duIHRob3NlIGRlcGVuZGVuY2llcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGlzIHRoaW5nIGlzIGxlYW5pbmcgb24gdG8gbWFrZSBzdXJlIEkgZG9uJiMzOTt0IG1pc3MgYW55dGhpbmcgY3J1Y2lhbC4gSSYjMzk7bSB0aGlua2luZyBkcml2ZXJzLCBmaXJtd2FyZSB2ZXJzaW9ucywgc3BlY2lmaWMgaGFyZHdhcmUgcmV2aXNpb25zIOKAkyB0aGUgd2hvbGUgc2hlYmFuZy4gTGV0JiMzOTtzIHN0YXJ0IG1hcHBpbmcgb3V0IHRoZSByZWxhdGlvbnNoaXBzLCBwaWVjZSBieSBwaWVjZSwgc28gSSBjYW4gaGF2ZSBhIGNvbXBsZXRlIHBpY3R1cmUgb2YgaXRzIGVjb3N5c3RlbS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMTg6MTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEFUSDExSyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWc6Mjpjb25maWcgQVRIMTFLXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O1F1YWxjb21tIDgwMi4xMWF4IGNoaXBzZXQgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZy0xMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZzoxMzpjb25maWcgQVRIMTFLX0FIQlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTE0LVx0dHJpc3RhdGUgXCYjMzQ7QXRoZXJvcyBhdGgxMWsgQUhCIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWctMTktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWc6MjA6Y29uZmlnIEFUSDExS19QQ0lcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZy0yMS1cdHRyaXN0YXRlIFwmIzM0O0F0aGVyb3MgYXRoMTFrIFBDSSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTI5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnOjMwOmNvbmZpZyBBVEgxMUtfREVCVUdcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZy0zMS1cdGJvb2wgXCYjMzQ7UUNBIGF0aDExayBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWctMzctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWc6Mzg6Y29uZmlnIEFUSDExS19ERUJVR0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWctMzktXHRib29sIFwmIzM0O1FDQSBhdGgxMWsgZGVidWdmcyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTQ1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnOjQ2OmNvbmZpZyBBVEgxMUtfVFJBQ0lOR1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTQ3LVx0Ym9vbCBcJiMzNDthdGgxMWsgdHJhY2luZyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTUxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnOjUyOmNvbmZpZyBBVEgxMUtfU1BFQ1RSQUxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZy01My1cdGJvb2wgXCYjMzQ7UUNBIGF0aDExayBzcGVjdHJhbCBzY2FuIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWctNjAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWc6NjE6Y29uZmlnIEFUSDExS19DRlJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZy02Mi1cdGJvb2wgXCYjMzQ7YXRoMTFrIGNoYW5uZWwgZnJlcXVlbmN5IHJlc3BvbnNlIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMTg6MTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDM0NDQKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiAyOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyBpZiBJIHdlcmUgdGhpbmtpbmcgdGhlc2UgdGhvdWdodHM6CgoqKkV4YW1pbmluZyB0aGUgQXRoMTFrIEtjb25maWcgQ29uZmlndXJhdGlvbioqCgpPa2F5LCB0aW1lIHRvIGRpdmUgaW50byB0aGUgQXRoZXJvcyAxMWsgZHJpdmVyJiMzOTtzIGNvbmZpZ3VyYXRpb24uIExldCYjMzk7cyBzdGFydCBieSBzY3J1dGluaXppbmcgdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWdgIGZpbGUsIHNwZWNpZmljYWxseSB0aGUgZmlyc3QgMjUgbGluZXMuIFRoaXMgdXN1YWxseSBjb250YWlucyB0aGUgY29yZSBzZWxlY3Rpb24gb3B0aW9ucywgYW55IGRlcGVuZGVuY2llcyBvbiBvdGhlciBzdWJzeXN0ZW1zLCBhbmQgcG90ZW50aWFsbHkgc29tZSBiYXNpYyBkZWZhdWx0IHNldHRpbmdzLiBJJiMzOTttIGxvb2tpbmcgZm9yIHRoZSBmb3VuZGF0aW9uYWwgYnVpbGRpbmcgYmxvY2tzIG9mIGhvdyB0aGlzIGRyaXZlciBpcyBjb25maWd1cmVkIHdpdGhpbiB0aGUga2VybmVsLiBJIGV4cGVjdCB0byBzZWUgdGhlIG1haW4gZHJpdmVyIGVuYWJsZS9kaXNhYmxlIG9wdGlvbiwgbGlrZWx5IGBDT05GSUdfQVRIMTFLYCwgYW5kIGl0cyBkZXBlbmRlbmNpZXMgb24gY29yZSB3aXJlbGVzcyBpbmZyYXN0cnVjdHVyZSBsaWtlIHRoZSBjZmc4MDIxMSBsYXllciwgbWFjODAyMTEsIGFuZCB0aGUgYXRoIG1vZHVsZSBpbiBnZW5lcmFsLiBJ4oCZbGwgYmUgcGF5aW5nIGNsb3NlIGF0dGVudGlvbiB0byBhbnkgY29uZGl0aW9uYWwgZGVwZW5kZW5jaWVzIHRoYXQgbWlnaHQgcmVxdWlyZSBhIHNwZWNpZmljIGhhcmR3YXJlIHBsYXRmb3JtIG9yIGZpcm13YXJlIHZlcnNpb24uIFVuZGVyc3RhbmRpbmcgdGhpcyBpbml0aWFsIHNlY3Rpb24gd2lsbCBwYWludCBhIGNsZWFyIHBpY3R1cmUgb2YgaG93IHRvIGVuYWJsZSwgZGlzYWJsZSwgYW5kIHRhaWxvciB0aGUgQXRoMTFrIGRyaXZlciYjMzk7cyBmdW5jdGlvbmFsaXR5IGF0IGNvbXBpbGUgdGltZS4gSXTigJlzIHRoZSBzdGFydGluZyBwb2ludCBmb3IgdW5kZXJzdGFuZGluZyBob3cgdGhlIHVzZXIgY2FuIGV2ZW4gY2hvb3NlIHRvIGVuYWJsZSB0aGlzIGRyaXZlciBvciBub3QuIEFueSBpbml0aWFsIGFzc3VtcHRpb25zIG9yIGNvbmZpZ3VyYXRpb25zIHdpbGwgbGlrZWx5IGJlIHNldCBpbiB0aGVzZSBmaXJzdCAyNSBsaW5lcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMTg6MTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDI1Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcbiAgIDI6XHRjb25maWcgQVRIMTFLXG4gICAzOlx0XHR0cmlzdGF0ZSBcJiMzNDtRdWFsY29tbSA4MDIuMTFheCBjaGlwc2V0IHN1cHBvcnRcJiMzNDtcbiAgIDQ6XHRcdGRlcGVuZHMgb24gTUFDODAyMTEgXHUwMDI2XHUwMDI2IEhBU19ETUFcbiAgIDU6XHRcdHNlbGVjdCBBVEhfQ09NTU9OXG4gICA2Olx0XHRzZWxlY3QgUUNPTV9RTUlfSEVMUEVSU1xuICAgNzpcdFx0aGVscFxuICAgODpcdFx0ICBUaGlzIG1vZHVsZSBhZGRzIHN1cHBvcnQgZm9yIFF1YWxjb21tIFRlY2hub2xvZ2llcyA4MDIuMTFheCBmYW1pbHkgb2ZcbiAgIDk6XHRcdCAgY2hpcHNldHMuXG4gIDEwOlx0XG4gIDExOlx0XHQgIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgYSBtb2R1bGUsIGl0JiMzOTtsbCBiZSBjYWxsZWQgYXRoMTFrLlxuICAxMjpcdFxuICAxMzpcdGNvbmZpZyBBVEgxMUtfQUhCXG4gIDE0Olx0XHR0cmlzdGF0ZSBcJiMzNDtBdGhlcm9zIGF0aDExayBBSEIgc3VwcG9ydFwmIzM0O1xuICAxNTpcdFx0ZGVwZW5kcyBvbiBBVEgxMUtcbiAgMTY6XHRcdGRlcGVuZHMgb24gUkVNT1RFUFJPQ1xuICAxNzpcdFx0aGVscFxuICAxODpcdFx0ICBUaGlzIG1vZHVsZSBhZGRzIHN1cHBvcnQgZm9yIEFIQiBidXNcbiAgMTk6XHRcbiAgMjA6XHRjb25maWcgQVRIMTFLX1BDSVxuICAyMTpcdFx0dHJpc3RhdGUgXCYjMzQ7QXRoZXJvcyBhdGgxMWsgUENJIHN1cHBvcnRcJiMzNDtcbiAgMjI6XHRcdGRlcGVuZHMgb24gQVRIMTFLIFx1MDAyNlx1MDAyNiBQQ0lcbiAgMjM6XHRcdHNlbGVjdCBNSElfQlVTXG4gIDI0Olx0XHRzZWxlY3QgUVJUUlxuICAyNTpcdFx0c2VsZWN0IFFSVFJfTUhJXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDE4OjEwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ0MTIyCgkJCQkJCQlvdXRwdXQ6IDI2MwoJCQkJCQkJdGhvdWdodHM6IDExMjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRm9jdXNpbmcgb24gQWlydGltZSBRdWV1ZSBMaW1pdHM6IEEgRGVlcCBEaXZlKioKCk9rYXksIGxldCYjMzk7cyBuYWlsIGRvd24gdGhlc2UgRm9jdXNTeW1ib2xzLiBNeSBpbml0aWFsIHBhc3MgaGFzIGlkZW50aWZpZWQgYSBmZXcga2V5IGZ1bmN0aW9ucyB0aGF0IGhhdmUgYmVlbiBtb2RpZmllZCBvciBhZGRlZDoKCjEuICBgaWVlZTgwMjExX2FxbF9zdGFfbGltaXRgIChzdGF0aWMsIGluIGBuZXQvbWFjODAyMTEvdHguY2ApCjIuICBgaWVlZTgwMjExX3R4cV9haXJ0aW1lX2NoZWNrYCAoaW4gYG5ldC9tYWM4MDIxMS90eC5jYCkKMy4gIGBpZWVlODAyMTFfdHhfZGVxdWV1ZWAgKGNhbGxzIGBpZWVlODAyMTFfdHhxX2FpcnRpbWVfY2hlY2tgLCBpbiBgbmV0L21hYzgwMjExL3R4LmNgKQo0LiAgYGllZWU4MDIxMV9uZXh0X3R4cWAgKGFsc28gY2FsbHMgYGllZWU4MDIxMV90eHFfYWlydGltZV9jaGVja2AsIGluIGBuZXQvbWFjODAyMTEvdHguY2ApCjUuICBgX19hdGgxMWtfbWFjX3JlZ2lzdGVyYCAoaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmNgKQoKTm93LCBhIHF1aWNrIGNoZWNrIG9uIHRoZSBzdGF0aWMgbmF0dXJlIG9mIGBpZWVlODAyMTFfYXFsX3N0YV9saW1pdGAuLi4gQWgsIHllcywgaXQmIzM5O3Mgc3RhdGljLiBCdXQsIGNyaXRpY2FsbHksIGBpZWVlODAyMTFfdHhxX2FpcnRpbWVfY2hlY2tgIGlzIGV4cG9ydGVkLCBhcyBhcmUgYGllZWU4MDIxMV90eF9kZXF1ZXVlYCBhbmQgYGllZWU4MDIxMV9uZXh0X3R4cWAuIFRoaXMgbWVhbnMgdGhlIGFpcnRpbWUgY2hlY2tpbmcgaXMgZGVmaW5pdGVseSBleHBvc2VkLiBUaGUgY2FsY3VsYXRpb24gYW5kIHJlbGF0ZWQgY2FsbHMgd2VyZSBjaGFuZ2VkIGluIGBpZWVlODAyMTFfdHhxX2FpcnRpbWVfY2hlY2tgLCBzbyBpdCYjMzk7cyBhIHByaW1lIHRhcmdldC4gU2luY2UgYGllZWU4MDIxMV9hcWxfc3RhX2xpbWl0YCBpcyBhIHN0YXRpYyBDIGZ1bmN0aW9uLCBpdCYjMzk7cyBsaWtlbHkgdG8gYmUgaW5saW5lZCBpbnRvIGBpZWVlODAyMTFfdHhxX2FpcnRpbWVfY2hlY2tgLCBzbyBpdCYjMzk7cyBhbHNvIHdvcnRoIGV4YW1pbmluZy4KClRoZXJlZm9yZSwgYGllZWU4MDIxMV90eHFfYWlydGltZV9jaGVja2AgYmVjb21lcyBhIGtleSBmb2N1cyBzeW1ib2wsIGFsb25nIHdpdGggYGllZWU4MDIxMV9uZXh0X3R4cWAsIGBpZWVlODAyMTFfdHhfZGVxdWV1ZWAsIGFuZCBgX19hdGgxMWtfbWFjX3JlZ2lzdGVyYC4KCk5leHQsIEkgbmVlZCB0byBjaGVjayB0aGUgRW5hYmxlQ29uZmlncy4gVGhlIHJlbGV2YW50IG9uZXMgc2VlbSB0byBiZToKCiogICBgTUFDODAyMTFgCiogICBgQ0ZHODAyMTFgIChwYXJlbnQpCiogICBgQVRIMTFLYAoKSSBzaG91bGQgc2VlIGlmIGBNQUM4MDIxMV9ERUJVR0ZTYCwgYEFUSDExS19QQ0lgIC8gYEFUSDExS19BSEJgLCBvciBgTUFDODAyMTFfSFdTSU1gIGFyZSByZWxldmFudC4gYE1BQzgwMjExYCBpcyB0aGUgY29yZSwgYENGRzgwMjExYCBpcyBpdHMgcGFyZW50LiBgQVRIMTFLYCBzZWVtcyB0byBoYW5kbGUgdGhlIGRyaXZlciBzaWRlLCBjb21waWxpbmcgYGF0aDExay9tYWMuY2AuICBgTUFDODAyMTFfREVCVUdGU2AgaXMgd29ydGggaW5jbHVkaW5nLgoKTGV0JiMzOTtzIGRvIGEgZmluYWwgc2FuaXR5IGNoZWNrLCBlbnN1cmluZyBldmVyeXRoaW5nIGlzIGFzIGV4cGVjdGVkOgoKKiAgIGBXb3J0aEZ1enppbmc6IHRydWVgIC0gR29vZC4KKiAgIGBFbmFibGVDb25maWdzYDogYFsmIzM0O01BQzgwMjExJiMzNDssICYjMzQ7Q0ZHODAyMTEmIzM0OywgJiMzNDtBVEgxMUsmIzM0OywgJiMzNDtNQUM4MDIxMV9ERUJVR0ZTJiMzNDtdYCAtIFllcCwgYWxsIHNldC4KKiAgIGBGb2N1c1N5bWJvbHNgOiBgWyYjMzQ7aWVlZTgwMjExX3R4cV9haXJ0aW1lX2NoZWNrJiMzNDssICYjMzQ7aWVlZTgwMjExX2FxbF9zdGFfbGltaXQmIzM0OywgJiMzNDtpZWVlODAyMTFfbmV4dF90eHEmIzM0OywgJiMzNDtpZWVlODAyMTFfdHhfZGVxdWV1ZSYjMzQ7LCAmIzM0O19fYXRoMTFrX21hY19yZWdpc3RlciYjMzQ7XWAgLSBDb25zaXN0ZW50LgoKSnVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUsIGxldCYjMzk7cyB2ZXJpZnkgYWxsIHRoZSBzeW1ib2wgbmFtZXM6CgoqICAgYGllZWU4MDIxMV90eHFfYWlydGltZV9jaGVja2AgKG5ldC9tYWM4MDIxMS90eC5jKQoqICAgYGllZWU4MDIxMV9hcWxfc3RhX2xpbWl0YCAobmV0L21hYzgwMjExL3R4LmMpCiogICBgaWVlZTgwMjExX25leHRfdHhxYCAobmV0L21hYzgwMjExL3R4LmMpCiogICBgaWVlZTgwMjExX3R4X2RlcXVldWVgIChuZXQvbWFjODAyMTEvdHguYykKKiAgIGBfX2F0aDExa19tYWNfcmVnaXN0ZXJgIChkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jKQoKVGhlIHJlYXNvbmluZyBzZWVtcyBzb3VuZDogVGhpcyBwYXRjaCBpbnRyb2R1Y2VzCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMTg6MTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O0NGRzgwMjExJiMzNDssCiAgICAmIzM0O0FUSDExSyYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMV9ERUJVR0ZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aWVlZTgwMjExX3R4cV9haXJ0aW1lX2NoZWNrJiMzNDssCiAgICAmIzM0O2llZWU4MDIxMV9hcWxfc3RhX2xpbWl0JiMzNDssCiAgICAmIzM0O2llZWU4MDIxMV9uZXh0X3R4cSYjMzQ7LAogICAgJiMzNDtpZWVlODAyMTFfdHhfZGVxdWV1ZSYjMzQ7LAogICAgJiMzNDtfX2F0aDExa19tYWNfcmVnaXN0ZXImIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyB0aGUgSUVFRTgwMjExX0hXX1RYX05PX1BVU0hCQUNLIGhhcmR3YXJlIGZsYWcgYW5kIGFkZHMgc3RhdGlvbiBhaXJ0aW1lIHF1ZXVlIGxpbWl0IGNhbGN1bGF0aW9uIChpZWVlODAyMTFfYXFsX3N0YV9saW1pdCkgdG8gdGhlIG1hYzgwMjExIFRYIHF1ZXVlIGFpcnRpbWUgY2hlY2sgKGllZWU4MDIxMV90eHFfYWlydGltZV9jaGVjaykuIFRoZSBtYWM4MDIxMSBzdWJzeXN0ZW0gaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgbWFjODAyMTFfaHdzaW0gYW5kIG5sODAyMTEgaW50ZXJmYWNlcywgbWFraW5nIHRoZXNlIHF1ZXVlIHNjaGVkdWxpbmcgYW5kIGFpcnRpbWUgY2FsY3VsYXRpb24gY2hhbmdlcyB3b3J0aCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNQUM4MDIxMSYjMzQ7LAogICAgJiMzNDtDRkc4MDIxMSYjMzQ7LAogICAgJiMzNDtBVEgxMUsmIzM0OywKICAgICYjMzQ7TUFDODAyMTFfREVCVUdGUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2llZWU4MDIxMV90eHFfYWlydGltZV9jaGVjayYjMzQ7LAogICAgJiMzNDtpZWVlODAyMTFfYXFsX3N0YV9saW1pdCYjMzQ7LAogICAgJiMzNDtpZWVlODAyMTFfbmV4dF90eHEmIzM0OywKICAgICYjMzQ7aWVlZTgwMjExX3R4X2RlcXVldWUmIzM0OywKICAgICYjMzQ7X19hdGgxMWtfbWFjX3JlZ2lzdGVyJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgdGhlIElFRUU4MDIxMV9IV19UWF9OT19QVVNIQkFDSyBoYXJkd2FyZSBmbGFnIGFuZCBhZGRzIHN0YXRpb24gYWlydGltZSBxdWV1ZSBsaW1pdCBjYWxjdWxhdGlvbiAoaWVlZTgwMjExX2FxbF9zdGFfbGltaXQpIHRvIHRoZSBtYWM4MDIxMSBUWCBxdWV1ZSBhaXJ0aW1lIGNoZWNrIChpZWVlODAyMTFfdHhxX2FpcnRpbWVfY2hlY2spLiBUaGUgbWFjODAyMTEgc3Vic3lzdGVtIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIG1hYzgwMjExX2h3c2ltIGFuZCBubDgwMjExIGludGVyZmFjZXMsIG1ha2luZyB0aGVzZSBxdWV1ZSBzY2hlZHVsaW5nIGFuZCBhaXJ0aW1lIGNhbGN1bGF0aW9uIGNoYW5nZXMgd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMTg6MTA8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAxODoxMDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgdGhlIGBJRUVFODAyMTFfSFdfVFhfTk9fUFVTSEJBQ0tgIGhhcmR3YXJlIGZsYWcgZm9yIG1hYzgwMjExL2F0aDExayBhbmQgYWRqdXN0cyBzdGF0aW9uIEFpcnRpbWUgUXVldWUgTGltaXQgKEFRTCkgY2FsY3VsYXRpb25zIGJhc2VkIG9uIHN0YXRpb24gYWlydGltZSB3ZWlnaHQgd2hlbiB0aGlzIGZsYWcgaXMgZW5hYmxlZC5cblxuQWxsIHN0cnVjdCBmaWVsZHMgYWNjZXNzZWQgKHN1Y2ggYXMgYHN0YS1cdTAwM2VhaXJ0aW1lX3dlaWdodGAsIGBsb2NhbC1cdTAwM2VhcWxfdGhyZXNob2xkYCwgYW5kIGBzdGEtXHUwMDNlYWlydGltZVtdLmFxbF9saW1pdF8qYCkgYXJlIHN0YW5kYXJkIGludGVnZXIgZmllbGRzIGluaXRpYWxpemVkIGR1cmluZyBzdGF0aW9uIGNyZWF0aW9uIGFuZCBkcml2ZXIgY29uZmlndXJhdGlvbi4gTG9jYWwgdmFyaWFibGVzIGluIHRoZSBuZXcgY2FsY3VsYXRpb24gaGVscGVyIGBpZWVlODAyMTFfYXFsX3N0YV9saW1pdCgpYCBhcmUgZXhwbGljaXRseSBhc3NpZ25lZCBiZWZvcmUgdXNlLiBObyBoZWFwL3N0YWNrIGFsbG9jYXRpb25zLCBtZW1vcnkgY29weSBvcGVyYXRpb25zIHRvIHVzZXIgc3BhY2UsIG9yIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzIGFyZSBpbnRyb2R1Y2VkIG9yIG1vZGlmaWVkLlxuXG5UaGVyZWZvcmUsIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIGlzIG5vdCBuZWVkZWQ7IGFueSBzdGFuZGFyZCBjb25jdXJyZW5jeSBvciBsb2dpYyBpc3N1ZXMgYXJlIGNvdmVyZWQgYnkgc3RhbmRhcmQgS0FTQU4va2VybmVsIGRlYnVnZ2luZyB0b29scy4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0CgpGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDExMTY1MWIxNTZmYzIxOTY2NjVkZGRmOWRiNjJiZWFjNjc3MTU1MDQKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIFNlcCA4IDE4OjA5OjI3IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmMKaW5kZXggMmQ1NWNkYzRkMTY1ZC4uODdlNjA2MmM1NTUwOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jCkBAIC0xMDQ5NCw2ICYjNDM7MTA0OTQsNyBAQCBzdGF0aWMgaW50IF9fYXRoMTFrX21hY19yZWdpc3RlcihzdHJ1Y3QgYXRoMTFrICphcikKIAogCWllZWU4MDIxMV9od19zZXQoYXItJmd0O2h3LCBTSUdOQUxfREJNKTsKIAlpZWVlODAyMTFfaHdfc2V0KGFyLSZndDtodywgU1VQUE9SVFNfUFMpOwomIzQzOwlpZWVlODAyMTFfaHdfc2V0KGFyLSZndDtodywgVFhfTk9fUFVTSEJBQ0spOwogCWllZWU4MDIxMV9od19zZXQoYXItJmd0O2h3LCBTVVBQT1JUU19EWU5BTUlDX1BTKTsKIAlpZWVlODAyMTFfaHdfc2V0KGFyLSZndDtodywgTUZQX0NBUEFCTEUpOwogCWllZWU4MDIxMV9od19zZXQoYXItJmd0O2h3LCBSRVBPUlRTX1RYX0FDS19TVEFUVVMpOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvbWFjODAyMTEuaCBiL2luY2x1ZGUvbmV0L21hYzgwMjExLmgKaW5kZXggN2JiNDYxODA2NWI2Ny4uODAzODFjN2FiZDg0YSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQvbWFjODAyMTEuaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL25ldC9tYWM4MDIxMS5oCkBAIC0zMDg2LDYgJiM0MzszMDg2LDEyIEBAIHN0cnVjdCBpZWVlODAyMTFfdHhxIHsKICAqIEBJRUVFODAyMTFfSFdfU1VQUE9SVFNfTkRQX0JMT0NLQUNLOiBIVyBjYW4gdHJhbnNtaXQvcmVjZWl2ZSBTMUcgTkRQCiAgKglCbG9ja0FjayBmcmFtZXMuCiAgKgomIzQzOyAqIEBJRUVFODAyMTFfSFdfVFhfTk9fUFVTSEJBQ0s6IFRoZSBkcml2ZXIgaGFuZHMgZXZlcnkgZnJhbWUgaXQgZGVxdWV1ZXMKJiM0MzsgKgl0byB0aGUgaGFyZHdhcmUgYXQgb25jZSwgYW5kIHRoZSBoYXJkd2FyZSBwaWNrcyB0aGUgc3RhdGlvbiBpdCBzZXJ2ZXMKJiM0MzsgKgluZXh0LCBzbyB0aGUgb3JkZXIgaW4gd2hpY2ggbWFjODAyMTEgc2NoZWR1bGVzIHRoZSBxdWV1ZXMgZG9lcyBub3QKJiM0MzsgKglyZWFjaCB0aGUgYWlyLiBtYWM4MDIxMSB0aGVuIGFwcGxpZXMgdGhlIGFpcnRpbWUgd2VpZ2h0IHRvIHRoZQomIzQzOyAqCWFpcnRpbWUgcXVldWUgbGltaXQgaW5zdGVhZC4KJiM0MzsgKgogICogQE5VTV9JRUVFODAyMTFfSFdfRkxBR1M6IG51bWJlciBvZiBoYXJkd2FyZSBmbGFncywgdXNlZCBmb3Igc2l6aW5nIGFycmF5cwogICovCiBlbnVtIGllZWU4MDIxMV9od19mbGFncyB7CkBAIC0zMTQ3LDYgJiM0MzszMTUzLDcgQEAgZW51bSBpZWVlODAyMTFfaHdfZmxhZ3MgewogCUlFRUU4MDIxMV9IV19IQU5ETEVTX1FVSUVUX0NTQSwKIAlJRUVFODAyMTFfSFdfU1RSSUNULAogCUlFRUU4MDIxMV9IV19TVVBQT1JUU19ORFBfQkxPQ0tBQ0ssCiYjNDM7CUlFRUU4MDIxMV9IV19UWF9OT19QVVNIQkFDSywKIAogCS8qIGtlZXAgbGFzdCwgb2J2aW91c2x5ICovCiAJTlVNX0lFRUU4MDIxMV9IV19GTEFHUwpkaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjExL2RlYnVnZnMuYyBiL25ldC9tYWM4MDIxMS9kZWJ1Z2ZzLmMKaW5kZXggODk0NmIwMjc3ODJjZi4uZGRiZmE5OTFlYzc0ZSAxMDA2NDQKLS0tIGEvbmV0L21hYzgwMjExL2RlYnVnZnMuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbWFjODAyMTEvZGVidWdmcy5jCkBAIC00NjIsNiAmIzQzOzQ2Miw3IEBAIHN0YXRpYyBjb25zdCBjaGFyICpod19mbGFnX25hbWVzW10gPSB7CiAJRkxBRyhIQU5ETEVTX1FVSUVUX0NTQSksCiAJRkxBRyhTVFJJQ1QpLAogCUZMQUcoU1VQUE9SVFNfTkRQX0JMT0NLQUNLKSwKJiM0MzsJRkxBRyhUWF9OT19QVVNIQkFDSyksCiAjdW5kZWYgRkxBRwogfTsKIApkaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjExL3R4LmMgYi9uZXQvbWFjODAyMTEvdHguYwppbmRleCBjMzMwOTI5NjBkZjI2Li5jOTRlZmZmNDhkNzQ3IDEwMDY0NAotLS0gYS9uZXQvbWFjODAyMTEvdHguYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbWFjODAyMTEvdHguYwpAQCAtNDIxNyw2ICYjNDM7NDIxNywyMSBAQCBFWFBPUlRfU1lNQk9MKF9faWVlZTgwMjExX3NjaGVkdWxlX3R4cSk7CiAKIERFRklORV9TVEFUSUNfS0VZX0ZBTFNFKGFxbF9kaXNhYmxlKTsKIAomIzQzO3N0YXRpYyB1MzIgaWVlZTgwMjExX2FxbF9zdGFfbGltaXQoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsCiYjNDM7CQkJCSAgIHN0cnVjdCBzdGFfaW5mbyAqc3RhLCB1MzIgbGltaXQpCiYjNDM7ewomIzQzOwl1MzIgc2NhbGVkOwomIzQzOwomIzQzOwlpZiAoIWllZWU4MDIxMV9od19jaGVjaygmYW1wO2xvY2FsLSZndDtodywgVFhfTk9fUFVTSEJBQ0spIHx8CiYjNDM7CSAgICBzdGEtJmd0O2FpcnRpbWVfd2VpZ2h0ID09IElFRUU4MDIxMV9ERUZBVUxUX0FJUlRJTUVfV0VJR0hUKQomIzQzOwkJcmV0dXJuIGxpbWl0OwomIzQzOwomIzQzOwlzY2FsZWQgPSBtdWx0X2ZyYWMobGltaXQsIHN0YS0mZ3Q7YWlydGltZV93ZWlnaHQsCiYjNDM7CQkJICAgSUVFRTgwMjExX0RFRkFVTFRfQUlSVElNRV9XRUlHSFQpOwomIzQzOwomIzQzOwlyZXR1cm4gbWluKHNjYWxlZCwgbWF4KGxpbWl0LCBsb2NhbC0mZ3Q7YXFsX3RocmVzaG9sZCkpOwomIzQzO30KJiM0MzsKIGJvb2wgaWVlZTgwMjExX3R4cV9haXJ0aW1lX2NoZWNrKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LAogCQkJCSBzdHJ1Y3QgaWVlZTgwMjExX3R4cSAqdHhxKQogewpAQCAtNDIzOCwxMyAmIzQzOzQyNTMsMTUgQEAgYm9vbCBpZWVlODAyMTFfdHhxX2FpcnRpbWVfY2hlY2soc3RydWN0IGllZWU4MDIxMV9odyAqaHcsCiAKIAlzdGEgPSBjb250YWluZXJfb2YodHhxLSZndDtzdGEsIHN0cnVjdCBzdGFfaW5mbywgc3RhKTsKIAlpZiAoYXRvbWljX3JlYWQoJmFtcDtzdGEtJmd0O2FpcnRpbWVbdHhxLSZndDthY10uYXFsX3R4X3BlbmRpbmcpICZsdDsKLQkgICAgc3RhLSZndDthaXJ0aW1lW3R4cS0mZ3Q7YWNdLmFxbF9saW1pdF9sb3cpCiYjNDM7CSAgICBpZWVlODAyMTFfYXFsX3N0YV9saW1pdChsb2NhbCwgc3RhLAomIzQzOwkJCQkgICAgc3RhLSZndDthaXJ0aW1lW3R4cS0mZ3Q7YWNdLmFxbF9saW1pdF9sb3cpKQogCQlyZXR1cm4gdHJ1ZTsKIAogCWlmIChhdG9taWNfcmVhZCgmYW1wO2xvY2FsLSZndDthcWxfdG90YWxfcGVuZGluZ19haXJ0aW1lKSAmbHQ7CiAJICAgIGxvY2FsLSZndDthcWxfdGhyZXNob2xkICZhbXA7JmFtcDsKIAkgICAgYXRvbWljX3JlYWQoJmFtcDtzdGEtJmd0O2FpcnRpbWVbdHhxLSZndDthY10uYXFsX3R4X3BlbmRpbmcpICZsdDsKLQkgICAgc3RhLSZndDthaXJ0aW1lW3R4cS0mZ3Q7YWNdLmFxbF9saW1pdF9oaWdoKQomIzQzOwkgICAgaWVlZTgwMjExX2FxbF9zdGFfbGltaXQobG9jYWwsIHN0YSwKJiM0MzsJCQkJICAgIHN0YS0mZ3Q7YWlydGltZVt0eHEtJmd0O2FjXS5hcWxfbGltaXRfaGlnaCkpCiAJCXJldHVybiB0cnVlOwogCiAJcmV0dXJuIGZhbHNlOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMTg6MTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzUwNgoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDQ5MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBhdGNoIGZvciBVbmluaXRpYWxpemVkIE1lbW9yeSBSaXNrcyoqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgcGF0Y2ggYW5kIHNlZSBpZiB3ZSBuZWVkIHRvIGJyaW5nIGluIEtNU0FOLiBGaXJzdCB0aGluZ3MgZmlyc3QsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgY2hhbmdlZCBhbmQgd2hlcmUgdGhlIHBvdGVudGlhbCBmb3IgdW5pbml0aWFsaXplZCBtZW1vcnkgbGllcy4KClRoZSBwYXRjaCBpbmNsdWRlcyBhZGRpdGlvbnMgdG8gYSBmZXcgZmlsZXM6IGBhdGgxMWsvbWFjLmNgLCBgbWFjODAyMTEuaGAsIGBkZWJ1Z2ZzLmNgLCBhbmQgYHR4LmNgLiBJdCBsb29rcyBsaWtlIGl0JiMzOTtzIGVuYWJsaW5nIGBUWF9OT19QVVNIQkFDS2AgYW5kIGFkZGluZyBzb21lIGFpcnRpbWUgd2VpZ2h0IGNhbGN1bGF0aW9ucyByZWxhdGVkIHRvIGEgbmV3IGhlbHBlciBgaWVlZTgwMjExX2FxbF9zdGFfbGltaXRgLgoKU3BlY2lmaWNhbGx5LCB0aGlzIGBpZWVlODAyMTFfYXFsX3N0YV9saW1pdGAgZnVuY3Rpb24gaXMgd2hhdCBJIG5lZWQgdG8gZm9jdXMgb24uIEl0IHVzZXMgYHN0YS0mZ3Q7YWlydGltZV93ZWlnaHRgLiBUaGlzIGNvdWxkIGJlIGEgcHJvYmxlbSBpZiBgc3RhLSZndDthaXJ0aW1lX3dlaWdodGAgaXNuJiMzOTt0IHByb3Blcmx5IGluaXRpYWxpemVkLiBJIHNlZSB0aGF0IGlmIGBpZWVlODAyMTFfaHdfY2hlY2tgIHJldHVybnMgdHJ1ZSwgb3IgYHN0YS0mZ3Q7YWlydGltZV93ZWlnaHRgIGlzIHNldCB0byBgSUVFRTgwMjExX0RFRkFVTFRfQUlSVElNRV9XRUlHSFRgLCB0aGUgZnVuY3Rpb24gZGlyZWN0bHkgcmV0dXJucyBgbGltaXRgLiBJdCBvbmx5IGNhbGN1bGF0ZXMgc29tZXRoaW5nIHdoZW4gYHN0YS0mZ3Q7YWlydGltZV93ZWlnaHRgIGlzIHNldCB0byBzb21ldGhpbmcgZWxzZS4KClNvLCB0aGUga2V5IGhlcmUgaXMgdG8gY29uZmlybSBob3cgYHN0YS0mZ3Q7YWlydGltZV93ZWlnaHRgIGdldHMgaW5pdGlhbGl6ZWQuIEkgbmVlZCB0byB0cmFjZSB3aGVyZSBgc3RhYCBpcyBhbGxvY2F0ZWQgYW5kIHBvcHVsYXRlZCwgYW5kIHRoZW4gbG9vayBmb3Igd2hlcmUgYW5kIGhvdyBgYWlydGltZV93ZWlnaHRgIGlzIHNldC4gTGV0JiMzOTtzIHN0YXJ0IHdpdGggYSBzZWFyY2ggb2YgdGhlIG1hYzgwMjExIGNvZGUgZm9yIGFueSByZWxldmFudCByZWZlcmVuY2VzIHRvIGBhaXJ0aW1lX3dlaWdodGAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDE4OjEwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2FpcnRpbWVfd2VpZ2h0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS9jZmcuYz0yNDUwPXN0YXRpYyBpbnQgc3RhX2FwcGx5X3BhcmFtZXRlcnMoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXG4tLVxubmV0L21hYzgwMjExL2NmZy5jLTI1ODYtXG5uZXQvbWFjODAyMTEvY2ZnLmM6MjU4NzpcdGlmIChwYXJhbXMtXHUwMDNlYWlydGltZV93ZWlnaHQpXG5uZXQvbWFjODAyMTEvY2ZnLmM6MjU4ODpcdFx0c3RhLVx1MDAzZWFpcnRpbWVfd2VpZ2h0ID0gcGFyYW1zLVx1MDAzZWFpcnRpbWVfd2VpZ2h0O1xubmV0L21hYzgwMjExL2NmZy5jLTI1ODktXG4tLVxubmV0L21hYzgwMjExL2RlYnVnZnNfc3RhLmM9MTg4PXN0YXRpYyBzc2l6ZV90IHN0YV9haXJ0aW1lX3JlYWQoc3RydWN0IGZpbGUgKmZpbGUsIGNoYXIgX191c2VyICp1c2VyYnVmLFxuLS1cbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX3N0YS5jLTIxMy1cdFx0XCYjMzQ7RGVmaWNpdDogVk86ICVkIHVzIFZJOiAlZCB1cyBCRTogJWQgdXMgQks6ICVkIHVzXFxuXCYjMzQ7LFxubmV0L21hYzgwMjExL2RlYnVnZnNfc3RhLmM6MjE0Olx0XHRyeF9haXJ0aW1lLCB0eF9haXJ0aW1lLCBzdGEtXHUwMDNlYWlydGltZV93ZWlnaHQsXG5uZXQvbWFjODAyMTEvZGVidWdmc19zdGEuYy0yMTUtXHRcdGRlZmljaXRbMF0sIGRlZmljaXRbMV0sIGRlZmljaXRbMl0sIGRlZmljaXRbM10pO1xuLS1cbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX3N0YS5jPTIyMj1zdGF0aWMgc3NpemVfdCBzdGFfYWlydGltZV93cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgY29uc3QgY2hhciBfX3VzZXIgKnVzZXJidWYsXG4tLVxubmV0L21hYzgwMjExL2RlYnVnZnNfc3RhLmMtMjMyLVx0XHRzdGEtXHUwMDNlYWlydGltZVthY10udHhfYWlydGltZSA9IDA7XG5uZXQvbWFjODAyMTEvZGVidWdmc19zdGEuYzoyMzM6XHRcdHN0YS1cdTAwM2VhaXJ0aW1lW2FjXS5kZWZpY2l0ID0gc3RhLVx1MDAzZWFpcnRpbWVfd2VpZ2h0O1xubmV0L21hYzgwMjExL2RlYnVnZnNfc3RhLmMtMjM0LVx0XHRzcGluX3VubG9ja19iaChcdTAwMjZsb2NhbC1cdTAwM2VhY3RpdmVfdHhxX2xvY2tbYWNdKTtcbi0tXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYz02MzM9X19zdGFfaW5mb19hbGxvYyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbi0tXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy03MjktXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYzo3MzA6XHRzdGEtXHUwMDNlYWlydGltZV93ZWlnaHQgPSBJRUVFODAyMTFfREVGQVVMVF9BSVJUSU1FX1dFSUdIVDtcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jLTczMS1cbi0tXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy03MzQtXHRcdHNrYl9xdWV1ZV9oZWFkX2luaXQoXHUwMDI2c3RhLVx1MDAzZXR4X2ZpbHRlcmVkW2ldKTtcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jOjczNTpcdFx0c3RhLVx1MDAzZWFpcnRpbWVbaV0uZGVmaWNpdCA9IHN0YS1cdTAwM2VhaXJ0aW1lX3dlaWdodDtcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jLTczNi1cdFx0YXRvbWljX3NldChcdTAwMjZzdGEtXHUwMDNlYWlydGltZVtpXS5hcWxfdHhfcGVuZGluZywgMCk7XG4tLVxubmV0L21hYzgwMjExL3N0YV9pbmZvLmM9MjgzNz1zdGF0aWMgdm9pZCBzdGFfc2V0X2xpbmtfc2luZm8oc3RydWN0IHN0YV9pbmZvICpzdGEsXG4tLVxubmV0L21hYzgwMjExL3N0YV9pbmZvLmMtMjk1NS1cdGlmICghKGxpbmtfc2luZm8tXHUwMDNlZmlsbGVkIFx1MDAyNiBCSVRfVUxMKE5MODAyMTFfU1RBX0lORk9fQUlSVElNRV9XRUlHSFQpKSkge1xubmV0L21hYzgwMjExL3N0YV9pbmZvLmM6Mjk1NjpcdFx0bGlua19zaW5mby1cdTAwM2VhaXJ0aW1lX3dlaWdodCA9IHN0YS1cdTAwM2VhaXJ0aW1lX3dlaWdodDtcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jLTI5NTctXHRcdGxpbmtfc2luZm8tXHUwMDNlZmlsbGVkIHw9IEJJVF9VTEwoTkw4MDIxMV9TVEFfSU5GT19BSVJUSU1FX1dFSUdIVCk7XG4tLVxubmV0L21hYzgwMjExL3N0YV9pbmZvLmM9MzA3OT12b2lkIHN0YV9zZXRfc2luZm8oc3RydWN0IHN0YV9pbmZvICpzdGEsIHN0cnVjdCBzdGF0aW9uX2luZm8gKnNpbmZvLFxuLS1cbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jLTMxODctXHRpZiAoIShzaW5mby1cdTAwM2VmaWxsZWQgXHUwMDI2IEJJVF9VTEwoTkw4MDIxMV9TVEFfSU5GT19BSVJUSU1FX1dFSUdIVCkpKSB7XG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYzozMTg4Olx0XHRzaW5mby1cdTAwM2VhaXJ0aW1lX3dlaWdodCA9IHN0YS1cdTAwM2VhaXJ0aW1lX3dlaWdodDtcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jLTMxODktXHRcdHNpbmZvLVx1MDAzZWZpbGxlZCB8PSBCSVRfVUxMKE5MODAyMTFfU1RBX0lORk9fQUlSVElNRV9XRUlHSFQpO1xuLS1cbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5oPTYxOT1zdHJ1Y3QgaWVlZTgwMjExX3N0YV9yZW1vdmVkX2xpbmtfc3RhdHMge1xuLS1cbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5oLTY3Ni0gKlx0c3RhdGlvblxubmV0L21hYzgwMjExL3N0YV9pbmZvLmg6Njc3OiAqIEBhaXJ0aW1lX3dlaWdodDogc3RhdGlvbiB3ZWlnaHQgZm9yIGFpcnRpbWUgZmFpcm5lc3MgY2FsY3VsYXRpb24gcHVycG9zZXNcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5oLTY3OC0gKiBAYW1wZHVfbWxtZTogQS1NUERVIHN0YXRlIG1hY2hpbmUgc3RhdGVcbi0tXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uaD03MTU9c3RydWN0IHN0YV9pbmZvIHtcbi0tXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uaC03NjYtXHRzdHJ1Y3QgYWlydGltZV9pbmZvIGFpcnRpbWVbSUVFRTgwMjExX05VTV9BQ1NdO1xubmV0L21hYzgwMjExL3N0YV9pbmZvLmg6NzY3Olx0dTE2IGFpcnRpbWVfd2VpZ2h0O1xubmV0L21hYzgwMjExL3N0YV9pbmZvLmgtNzY4LVxuLS1cbm5ldC9tYWM4MDIxMS90eC5jPTQxMTU9c3RydWN0IGllZWU4MDIxMV90eHEgKmllZWU4MDIxMV9uZXh0X3R4cShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgdTggYWMpXG4tLVxubmV0L21hYzgwMjExL3R4LmMtNDE1NC1cdFx0XHRzdGEtXHUwMDNlYWlydGltZVt0eHFpLVx1MDAzZXR4cS5hY10uZGVmaWNpdCAmIzQzOz1cbm5ldC9tYWM4MDIxMS90eC5jOjQxNTU6XHRcdFx0XHRzdGEtXHUwMDNlYWlydGltZV93ZWlnaHQ7XG5uZXQvbWFjODAyMTEvdHguYy00MTU2LVxuLS1cbm5ldC9tYWM4MDIxMS90eC5jPTQyMjA9c3RhdGljIHUzMiBpZWVlODAyMTFfYXFsX3N0YV9saW1pdChzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcbi0tXG5uZXQvbWFjODAyMTEvdHguYy00MjI1LVx0aWYgKCFpZWVlODAyMTFfaHdfY2hlY2soXHUwMDI2bG9jYWwtXHUwMDNlaHcsIFRYX05PX1BVU0hCQUNLKSB8fFxubmV0L21hYzgwMjExL3R4LmM6NDIyNjpcdCAgICBzdGEtXHUwMDNlYWlydGltZV93ZWlnaHQgPT0gSUVFRTgwMjExX0RFRkFVTFRfQUlSVElNRV9XRUlHSFQpXG5uZXQvbWFjODAyMTEvdHguYy00MjI3LVx0XHRyZXR1cm4gbGltaXQ7XG5uZXQvbWFjODAyMTEvdHguYy00MjI4LVxubmV0L21hYzgwMjExL3R4LmM6NDIyOTpcdHNjYWxlZCA9IG11bHRfZnJhYyhsaW1pdCwgc3RhLVx1MDAzZWFpcnRpbWVfd2VpZ2h0LFxubmV0L21hYzgwMjExL3R4LmMtNDIzMC1cdFx0XHQgICBJRUVFODAyMTFfREVGQVVMVF9BSVJUSU1FX1dFSUdIVCk7XG4tLVxubmV0L21hYzgwMjExL3R4LmM9NDMwOD1ib29sIGllZWU4MDIxMV90eHFfbWF5X3RyYW5zbWl0KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuLS1cbm5ldC9tYWM4MDIxMS90eC5jLTQzMzgtXHRcdGlmIChpZWVlODAyMTFfc3RhX2RlZmljaXQoc3RhLCBhYykgXHUwMDNjIDApXG5uZXQvbWFjODAyMTEvdHguYzo0MzM5Olx0XHRcdHN0YS1cdTAwM2VhaXJ0aW1lW2FjXS5kZWZpY2l0ICYjNDM7PSBzdGEtXHUwMDNlYWlydGltZV93ZWlnaHQ7XG5uZXQvbWFjODAyMTEvdHguYy00MzQwLVx0XHRsaXN0X21vdmVfdGFpbChcdTAwMjZpdGVyLVx1MDAzZXNjaGVkdWxlX29yZGVyLCBcdTAwMjZsb2NhbC1cdTAwM2VhY3RpdmVfdHhxc1thY10pO1xuLS1cbm5ldC9tYWM4MDIxMS90eC5jLTQzNDYtXG5uZXQvbWFjODAyMTEvdHguYzo0MzQ3Olx0c3RhLVx1MDAzZWFpcnRpbWVbYWNdLmRlZmljaXQgJiM0Mzs9IHN0YS1cdTAwM2VhaXJ0aW1lX3dlaWdodDtcbm5ldC9tYWM4MDIxMS90eC5jLTQzNDgtXHRsaXN0X21vdmVfdGFpbChcdTAwMjZ0eHFpLVx1MDAzZXNjaGVkdWxlX29yZGVyLCBcdTAwMjZsb2NhbC1cdTAwM2VhY3RpdmVfdHhxc1thY10pO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAxODoxMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NDExCgkJCQkJCQlvdXRwdXQ6IDIxNwoJCQkJCQkJdGhvdWdodHM6IDQzOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBhdGNoIGZvciBVbmluaXRpYWxpemVkIE1lbW9yeSBSaXNrcyoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgZG93biB0aGlzIHBhdGNoIGFuZCBzZWUgaWYgaXQgaW50cm9kdWNlcyBhbnkgbmFzdHkgc3VycHJpc2VzLCBwYXJ0aWN1bGFybHkgYXJvdW5kIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBGaXJzdCwgd2UmIzM5O3JlIGFkZGluZyBhIG5ldyBoYXJkd2FyZSBmbGFnLCBgSUVFRTgwMjExX0hXX1RYX05PX1BVU0hCQUNLYCwgdG8gbWFjODAyMTEuIEdvb2QsIHN0YW5kYXJkIHByb2NlZHVyZS4gV2UmIzM5O3JlIGFsc28gYWRkaW5nIHRoZSBzdHJpbmcgbmFtZSBmb3IgZGVidWdmcywgd2hpY2ggaXMgYSBjb21tb24gcHJhY3RpY2UuIFRoaXMgaXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZC4gVGhlIGZsYWcgaXMgZ2V0dGluZyBzZXQgd2l0aGluIGBhdGgxMWtgLCB3aGljaCBtYWtlcyBzZW5zZSBnaXZlbiB0aGUgY29udGV4dC4KClRoZSBtZWF0IG9mIGl0IHNlZW1zIHRvIGJlIHRoaXMgbmV3IGhlbHBlciBmdW5jdGlvbiwgYGllZWU4MDIxMV9hcWxfc3RhX2xpbWl0YC4gVGhpcyBpcyB3aGVyZSB0aGUgYWlydGltZSB3ZWlnaHRpbmcgY29tZXMgaW4uIEl0IGFwcGVhcnMgdGhpcyBmdW5jdGlvbiBzY2FsZXMgdGhlIEFRTCBsaW1pdCBiYXNlZCBvbiBhIHN0YXRpb24mIzM5O3MgYWlydGltZSB3ZWlnaHQgd2hlbiBgVFhfTk9fUFVTSEJBQ0tgIGlzIGFjdGl2ZS4gTG9va2luZyBhdCB0aGUgdmFyaWFibGVzIHVzZWQsIGl0IHNlZW1zIGxpa2Ugd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBgbG9jYWxgLCBgc3RhYCwgYW5kIGBsaW1pdGAuIFRoZSBgc3RhYCBpcyBpbml0aWFsaXplZCBkdXJpbmcgc3RhdGlvbiBjcmVhdGlvbiB3aXRoIGBremFsbG9jYCBpbiBgX19zdGFfaW5mb19hbGxvY2AsIGFuZCwgaW1wb3J0YW50bHksIGl0cyBgYWlydGltZV93ZWlnaHRgIGlzIGluaXRpYWxpemVkIGFzIHdlbGwgd2l0aCBgSUVFRTgwMjExX0RFRkFVTFRfQUlSVElNRV9XRUlHSFRgLiBUaGUgYHNjYWxlZGAgdmFsdWUgaXMgYSBsb2NhbCBgdTMyYCB0aGF0IGlzIGV4cGxpY2l0bHkgY29tcHV0ZWQgYW5kIGFzc2lnbmVkIGJlZm9yZSBiZWluZyByZXR1cm5lZC4KCk5vdywgdGhlIGNydWNpYWwgcXVlc3Rpb246IGFyZSB3ZSBhY2NpZGVudGFsbHkgcmVhZGluZyB1bmluaXRpYWxpemVkIG1lbW9yeSwgbGVha2luZyBpbmZvcm1hdGlvbiwgb3IgaW50cm9kdWNpbmcgYSB1c2UtYWZ0ZXItZnJlZSBzaXR1YXRpb24/IEl0IGRvZXNuJiMzOTt0IGxvb2sgbGlrZSBpdC4gVGhlIGNhbGN1bGF0aW9uIG9mIGBzY2FsZWRgIHdpdGhpbiBgaWVlZTgwMjExX2FxbF9zdGFfbGltaXRgIHVzZXMgYG11bHRfZnJhYyguLi4pYCBhbmQgcmV0dXJucyBgbWluKC4uLilgLCBzbyBpdCBzZWVtcyBwcmV0dHkgc2VsZi1jb250YWluZWQuIFRoZSBuZXcgc3RyaW5nIGVudHJ5IGluIGBkZWJ1Z2ZzLmNgIGlzIGp1c3QgYSBzdHJpbmcsIHdoaWNoIGlzIGZpbmUuIFNldHRpbmcgdGhlIGJpdCBpbiBgYXRoMTFrYCB3aXRoIGBpZWVlODAyMTFfaHdfc2V0KClgIGlzbiYjMzk7dCBpbmhlcmVudGx5IHJpc2t5LiBUaGVyZSBhcmUgbm8gYGNvcHlfdG9fdXNlcmAgb3IgbmV0bGluayBjYWxscyB0aGF0IGNvdWxkIGJlIGxlYWtpbmcgaW5mby4gTm8gdW5pbml0aWFsaXplZCBmaWVsZHMgb3IgbWVtb3J5IGFsbG9jYXRpb25zIGFyZSBiZWluZyBkb25lIGJ5IHRoZXNlIGNoYW5nZXMsIGFuZCB3ZSYjMzk7cmUgbm90IG1vZGlmeWluZyBwb2ludGVycyBvciBidWZmZXIgc2l6ZXMgaW4gYSB3YXkgdGhhdCB3b3VsZCBvcGVuIHVwIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLgoKVGhlcmVmb3JlLCBteSBjb25jbHVzaW9uIGlzIHRoYXQgdGhpcyBwYXRjaCBkb2VzbiYjMzk7dCBpbnRyb2R1Y2UgYW55IG5ldyB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcy4gU3RhbmRhcmQgS0FTQU4gY2hlY2tzIGFuZCBleGlzdGluZyB0ZXN0cyBzaG91bGQgYmUgc3VmZmljaWVudCB0byBjYXRjaCBhbnkgcG90ZW50aWFsIHByb2JsZW1zLCBhbmQgd2UgY2FuIHNhZmVseSBzZXQgYE5lZWRzS01TQU4gPSBmYWxzZWAuIExldCYjMzk7cyBsb2cgdGhpcyB3aXRoIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzQvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDE4OjEwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgdGhlIGBJRUVFODAyMTFfSFdfVFhfTk9fUFVTSEJBQ0tgIGhhcmR3YXJlIGZsYWcgZm9yIG1hYzgwMjExL2F0aDExayBhbmQgYWRqdXN0cyBzdGF0aW9uIEFpcnRpbWUgUXVldWUgTGltaXQgKEFRTCkgY2FsY3VsYXRpb25zIGJhc2VkIG9uIHN0YXRpb24gYWlydGltZSB3ZWlnaHQgd2hlbiB0aGlzIGZsYWcgaXMgZW5hYmxlZC5cblxuQWxsIHN0cnVjdCBmaWVsZHMgYWNjZXNzZWQgKHN1Y2ggYXMgYHN0YS1cdTAwM2VhaXJ0aW1lX3dlaWdodGAsIGBsb2NhbC1cdTAwM2VhcWxfdGhyZXNob2xkYCwgYW5kIGBzdGEtXHUwMDNlYWlydGltZVtdLmFxbF9saW1pdF8qYCkgYXJlIHN0YW5kYXJkIGludGVnZXIgZmllbGRzIGluaXRpYWxpemVkIGR1cmluZyBzdGF0aW9uIGNyZWF0aW9uIGFuZCBkcml2ZXIgY29uZmlndXJhdGlvbi4gTG9jYWwgdmFyaWFibGVzIGluIHRoZSBuZXcgY2FsY3VsYXRpb24gaGVscGVyIGBpZWVlODAyMTFfYXFsX3N0YV9saW1pdCgpYCBhcmUgZXhwbGljaXRseSBhc3NpZ25lZCBiZWZvcmUgdXNlLiBObyBoZWFwL3N0YWNrIGFsbG9jYXRpb25zLCBtZW1vcnkgY29weSBvcGVyYXRpb25zIHRvIHVzZXIgc3BhY2UsIG9yIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzIGFyZSBpbnRyb2R1Y2VkIG9yIG1vZGlmaWVkLlxuXG5UaGVyZWZvcmUsIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIGlzIG5vdCBuZWVkZWQ7IGFueSBzdGFuZGFyZCBjb25jdXJyZW5jeSBvciBsb2dpYyBpc3N1ZXMgYXJlIGNvdmVyZWQgYnkgc3RhbmRhcmQgS0FTQU4va2VybmVsIGRlYnVnZ2luZyB0b29scy4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgdGhlIGBJRUVFODAyMTFfSFdfVFhfTk9fUFVTSEJBQ0tgIGhhcmR3YXJlIGZsYWcgZm9yIG1hYzgwMjExL2F0aDExayBhbmQgYWRqdXN0cyBzdGF0aW9uIEFpcnRpbWUgUXVldWUgTGltaXQgKEFRTCkgY2FsY3VsYXRpb25zIGJhc2VkIG9uIHN0YXRpb24gYWlydGltZSB3ZWlnaHQgd2hlbiB0aGlzIGZsYWcgaXMgZW5hYmxlZC5cblxuQWxsIHN0cnVjdCBmaWVsZHMgYWNjZXNzZWQgKHN1Y2ggYXMgYHN0YS1cdTAwM2VhaXJ0aW1lX3dlaWdodGAsIGBsb2NhbC1cdTAwM2VhcWxfdGhyZXNob2xkYCwgYW5kIGBzdGEtXHUwMDNlYWlydGltZVtdLmFxbF9saW1pdF8qYCkgYXJlIHN0YW5kYXJkIGludGVnZXIgZmllbGRzIGluaXRpYWxpemVkIGR1cmluZyBzdGF0aW9uIGNyZWF0aW9uIGFuZCBkcml2ZXIgY29uZmlndXJhdGlvbi4gTG9jYWwgdmFyaWFibGVzIGluIHRoZSBuZXcgY2FsY3VsYXRpb24gaGVscGVyIGBpZWVlODAyMTFfYXFsX3N0YV9saW1pdCgpYCBhcmUgZXhwbGljaXRseSBhc3NpZ25lZCBiZWZvcmUgdXNlLiBObyBoZWFwL3N0YWNrIGFsbG9jYXRpb25zLCBtZW1vcnkgY29weSBvcGVyYXRpb25zIHRvIHVzZXIgc3BhY2UsIG9yIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzIGFyZSBpbnRyb2R1Y2VkIG9yIG1vZGlmaWVkLlxuXG5UaGVyZWZvcmUsIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIGlzIG5vdCBuZWVkZWQ7IGFueSBzdGFuZGFyZCBjb25jdXJyZW5jeSBvciBsb2dpYyBpc3N1ZXMgYXJlIGNvdmVyZWQgYnkgc3RhbmRhcmQgS0FTQU4va2VybmVsIGRlYnVnZ2luZyB0b29scy4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDktMDhUMTg6MDk6MjkuNDUwODE1MTMxWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODU0MTI4NDM0MzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUFDODAyMTFcIixcbiAgICBcIkNGRzgwMjExXCIsXG4gICAgXCJBVEgxMUtcIixcbiAgICBcIk1BQzgwMjExX0RFQlVHRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpZWVlODAyMTFfdHhxX2FpcnRpbWVfY2hlY2tcIixcbiAgICBcImllZWU4MDIxMV9hcWxfc3RhX2xpbWl0XCIsXG4gICAgXCJpZWVlODAyMTFfbmV4dF90eHFcIixcbiAgICBcImllZWU4MDIxMV90eF9kZXF1ZXVlXCIsXG4gICAgXCJfX2F0aDExa19tYWNfcmVnaXN0ZXJcIlxuICBdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgdGhlIGBJRUVFODAyMTFfSFdfVFhfTk9fUFVTSEJBQ0tgIGhhcmR3YXJlIGZsYWcgZm9yIG1hYzgwMjExL2F0aDExayBhbmQgYWRqdXN0cyBzdGF0aW9uIEFpcnRpbWUgUXVldWUgTGltaXQgKEFRTCkgY2FsY3VsYXRpb25zIGJhc2VkIG9uIHN0YXRpb24gYWlydGltZSB3ZWlnaHQgd2hlbiB0aGlzIGZsYWcgaXMgZW5hYmxlZC5cXG5cXG5BbGwgc3RydWN0IGZpZWxkcyBhY2Nlc3NlZCAoc3VjaCBhcyBgc3RhLVxcdTAwM2VhaXJ0aW1lX3dlaWdodGAsIGBsb2NhbC1cXHUwMDNlYXFsX3RocmVzaG9sZGAsIGFuZCBgc3RhLVxcdTAwM2VhaXJ0aW1lW10uYXFsX2xpbWl0XypgKSBhcmUgc3RhbmRhcmQgaW50ZWdlciBmaWVsZHMgaW5pdGlhbGl6ZWQgZHVyaW5nIHN0YXRpb24gY3JlYXRpb24gYW5kIGRyaXZlciBjb25maWd1cmF0aW9uLiBMb2NhbCB2YXJpYWJsZXMgaW4gdGhlIG5ldyBjYWxjdWxhdGlvbiBoZWxwZXIgYGllZWU4MDIxMV9hcWxfc3RhX2xpbWl0KClgIGFyZSBleHBsaWNpdGx5IGFzc2lnbmVkIGJlZm9yZSB1c2UuIE5vIGhlYXAvc3RhY2sgYWxsb2NhdGlvbnMsIG1lbW9yeSBjb3B5IG9wZXJhdGlvbnMgdG8gdXNlciBzcGFjZSwgb3IgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMgYXJlIGludHJvZHVjZWQgb3IgbW9kaWZpZWQuXFxuXFxuVGhlcmVmb3JlLCBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBpcyBub3QgbmVlZGVkOyBhbnkgc3RhbmRhcmQgY29uY3VycmVuY3kgb3IgbG9naWMgaXNzdWVzIGFyZSBjb3ZlcmVkIGJ5IHN0YW5kYXJkIEtBU0FOL2tlcm5lbCBkZWJ1Z2dpbmcgdG9vbHMuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyB0aGUgSUVFRTgwMjExX0hXX1RYX05PX1BVU0hCQUNLIGhhcmR3YXJlIGZsYWcgYW5kIGFkZHMgc3RhdGlvbiBhaXJ0aW1lIHF1ZXVlIGxpbWl0IGNhbGN1bGF0aW9uIChpZWVlODAyMTFfYXFsX3N0YV9saW1pdCkgdG8gdGhlIG1hYzgwMjExIFRYIHF1ZXVlIGFpcnRpbWUgY2hlY2sgKGllZWU4MDIxMV90eHFfYWlydGltZV9jaGVjaykuIFRoZSBtYWM4MDIxMSBzdWJzeXN0ZW0gaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgbWFjODAyMTFfaHdzaW0gYW5kIG5sODAyMTEgaW50ZXJmYWNlcywgbWFraW5nIHRoZXNlIHF1ZXVlIHNjaGVkdWxpbmcgYW5kIGFpcnRpbWUgY2FsY3VsYXRpb24gY2hhbmdlcyB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQxODowOToyOS40NTA4MjU3NTFaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2NTE2NDg3NzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAxMTE2NTFiMTU2ZmMyMTk2NjY1ZGRkZjlkYjYyYmVhYzY3NzE1NTA0XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUdWUgU2VwIDggMTg6MDk6MjcgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmNcXG5pbmRleCAyZDU1Y2RjNGQxNjVkLi44N2U2MDYyYzU1NTA5IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jXFxuQEAgLTEwNDk0LDYgKzEwNDk0LDcgQEAgc3RhdGljIGludCBfX2F0aDExa19tYWNfcmVnaXN0ZXIoc3RydWN0IGF0aDExayAqYXIpXFxuIFxcbiBcXHRpZWVlODAyMTFfaHdfc2V0KGFyLVxcdTAwM2VodywgU0lHTkFMX0RCTSk7XFxuIFxcdGllZWU4MDIxMV9od19zZXQoYXItXFx1MDAzZWh3LCBTVVBQT1JUU19QUyk7XFxuK1xcdGllZWU4MDIxMV9od19zZXQoYXItXFx1MDAzZWh3LCBUWF9OT19QVVNIQkFDSyk7XFxuIFxcdGllZWU4MDIxMV9od19zZXQoYXItXFx1MDAzZWh3LCBTVVBQT1JUU19EWU5BTUlDX1BTKTtcXG4gXFx0aWVlZTgwMjExX2h3X3NldChhci1cXHUwMDNlaHcsIE1GUF9DQVBBQkxFKTtcXG4gXFx0aWVlZTgwMjExX2h3X3NldChhci1cXHUwMDNlaHcsIFJFUE9SVFNfVFhfQUNLX1NUQVRVUyk7XFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L21hYzgwMjExLmggYi9pbmNsdWRlL25ldC9tYWM4MDIxMS5oXFxuaW5kZXggN2JiNDYxODA2NWI2Ny4uODAzODFjN2FiZDg0YSAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL25ldC9tYWM4MDIxMS5oXFxuKysrIGIvaW5jbHVkZS9uZXQvbWFjODAyMTEuaFxcbkBAIC0zMDg2LDYgKzMwODYsMTIgQEAgc3RydWN0IGllZWU4MDIxMV90eHEge1xcbiAgKiBASUVFRTgwMjExX0hXX1NVUFBPUlRTX05EUF9CTE9DS0FDSzogSFcgY2FuIHRyYW5zbWl0L3JlY2VpdmUgUzFHIE5EUFxcbiAgKlxcdEJsb2NrQWNrIGZyYW1lcy5cXG4gICpcXG4rICogQElFRUU4MDIxMV9IV19UWF9OT19QVVNIQkFDSzogVGhlIGRyaXZlciBoYW5kcyBldmVyeSBmcmFtZSBpdCBkZXF1ZXVlc1xcbisgKlxcdHRvIHRoZSBoYXJkd2FyZSBhdCBvbmNlLCBhbmQgdGhlIGhhcmR3YXJlIHBpY2tzIHRoZSBzdGF0aW9uIGl0IHNlcnZlc1xcbisgKlxcdG5leHQsIHNvIHRoZSBvcmRlciBpbiB3aGljaCBtYWM4MDIxMSBzY2hlZHVsZXMgdGhlIHF1ZXVlcyBkb2VzIG5vdFxcbisgKlxcdHJlYWNoIHRoZSBhaXIuIG1hYzgwMjExIHRoZW4gYXBwbGllcyB0aGUgYWlydGltZSB3ZWlnaHQgdG8gdGhlXFxuKyAqXFx0YWlydGltZSBxdWV1ZSBsaW1pdCBpbnN0ZWFkLlxcbisgKlxcbiAgKiBATlVNX0lFRUU4MDIxMV9IV19GTEFHUzogbnVtYmVyIG9mIGhhcmR3YXJlIGZsYWdzLCB1c2VkIGZvciBzaXppbmcgYXJyYXlzXFxuICAqL1xcbiBlbnVtIGllZWU4MDIxMV9od19mbGFncyB7XFxuQEAgLTMxNDcsNiArMzE1Myw3IEBAIGVudW0gaWVlZTgwMjExX2h3X2ZsYWdzIHtcXG4gXFx0SUVFRTgwMjExX0hXX0hBTkRMRVNfUVVJRVRfQ1NBLFxcbiBcXHRJRUVFODAyMTFfSFdfU1RSSUNULFxcbiBcXHRJRUVFODAyMTFfSFdfU1VQUE9SVFNfTkRQX0JMT0NLQUNLLFxcbitcXHRJRUVFODAyMTFfSFdfVFhfTk9fUFVTSEJBQ0ssXFxuIFxcbiBcXHQvKiBrZWVwIGxhc3QsIG9idmlvdXNseSAqL1xcbiBcXHROVU1fSUVFRTgwMjExX0hXX0ZMQUdTXFxuZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxMS9kZWJ1Z2ZzLmMgYi9uZXQvbWFjODAyMTEvZGVidWdmcy5jXFxuaW5kZXggODk0NmIwMjc3ODJjZi4uZGRiZmE5OTFlYzc0ZSAxMDA2NDRcXG4tLS0gYS9uZXQvbWFjODAyMTEvZGVidWdmcy5jXFxuKysrIGIvbmV0L21hYzgwMjExL2RlYnVnZnMuY1xcbkBAIC00NjIsNiArNDYyLDcgQEAgc3RhdGljIGNvbnN0IGNoYXIgKmh3X2ZsYWdfbmFtZXNbXSA9IHtcXG4gXFx0RkxBRyhIQU5ETEVTX1FVSUVUX0NTQSksXFxuIFxcdEZMQUcoU1RSSUNUKSxcXG4gXFx0RkxBRyhTVVBQT1JUU19ORFBfQkxPQ0tBQ0spLFxcbitcXHRGTEFHKFRYX05PX1BVU0hCQUNLKSxcXG4gI3VuZGVmIEZMQUdcXG4gfTtcXG4gXFxuZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxMS90eC5jIGIvbmV0L21hYzgwMjExL3R4LmNcXG5pbmRleCBjMzMwOTI5NjBkZjI2Li5jOTRlZmZmNDhkNzQ3IDEwMDY0NFxcbi0tLSBhL25ldC9tYWM4MDIxMS90eC5jXFxuKysrIGIvbmV0L21hYzgwMjExL3R4LmNcXG5AQCAtNDIxNyw2ICs0MjE3LDIxIEBAIEVYUE9SVF9TWU1CT0woX19pZWVlODAyMTFfc2NoZWR1bGVfdHhxKTtcXG4gXFxuIERFRklORV9TVEFUSUNfS0VZX0ZBTFNFKGFxbF9kaXNhYmxlKTtcXG4gXFxuK3N0YXRpYyB1MzIgaWVlZTgwMjExX2FxbF9zdGFfbGltaXQoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXFxuK1xcdFxcdFxcdFxcdCAgIHN0cnVjdCBzdGFfaW5mbyAqc3RhLCB1MzIgbGltaXQpXFxuK3tcXG4rXFx0dTMyIHNjYWxlZDtcXG4rXFxuK1xcdGlmICghaWVlZTgwMjExX2h3X2NoZWNrKFxcdTAwMjZsb2NhbC1cXHUwMDNlaHcsIFRYX05PX1BVU0hCQUNLKSB8fFxcbitcXHQgICAgc3RhLVxcdTAwM2VhaXJ0aW1lX3dlaWdodCA9PSBJRUVFODAyMTFfREVGQVVMVF9BSVJUSU1FX1dFSUdIVClcXG4rXFx0XFx0cmV0dXJuIGxpbWl0O1xcbitcXG4rXFx0c2NhbGVkID0gbXVsdF9mcmFjKGxpbWl0LCBzdGEtXFx1MDAzZWFpcnRpbWVfd2VpZ2h0LFxcbitcXHRcXHRcXHQgICBJRUVFODAyMTFfREVGQVVMVF9BSVJUSU1FX1dFSUdIVCk7XFxuK1xcbitcXHRyZXR1cm4gbWluKHNjYWxlZCwgbWF4KGxpbWl0LCBsb2NhbC1cXHUwMDNlYXFsX3RocmVzaG9sZCkpO1xcbit9XFxuK1xcbiBib29sIGllZWU4MDIxMV90eHFfYWlydGltZV9jaGVjayhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4gXFx0XFx0XFx0XFx0IHN0cnVjdCBpZWVlODAyMTFfdHhxICp0eHEpXFxuIHtcXG5AQCAtNDIzOCwxMyArNDI1MywxNSBAQCBib29sIGllZWU4MDIxMV90eHFfYWlydGltZV9jaGVjayhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4gXFxuIFxcdHN0YSA9IGNvbnRhaW5lcl9vZih0eHEtXFx1MDAzZXN0YSwgc3RydWN0IHN0YV9pbmZvLCBzdGEpO1xcbiBcXHRpZiAoYXRvbWljX3JlYWQoXFx1MDAyNnN0YS1cXHUwMDNlYWlydGltZVt0eHEtXFx1MDAzZWFjXS5hcWxfdHhfcGVuZGluZykgXFx1MDAzY1xcbi1cXHQgICAgc3RhLVxcdTAwM2VhaXJ0aW1lW3R4cS1cXHUwMDNlYWNdLmFxbF9saW1pdF9sb3cpXFxuK1xcdCAgICBpZWVlODAyMTFfYXFsX3N0YV9saW1pdChsb2NhbCwgc3RhLFxcbitcXHRcXHRcXHRcXHQgICAgc3RhLVxcdTAwM2VhaXJ0aW1lW3R4cS1cXHUwMDNlYWNdLmFxbF9saW1pdF9sb3cpKVxcbiBcXHRcXHRyZXR1cm4gdHJ1ZTtcXG4gXFxuIFxcdGlmIChhdG9taWNfcmVhZChcXHUwMDI2bG9jYWwtXFx1MDAzZWFxbF90b3RhbF9wZW5kaW5nX2FpcnRpbWUpIFxcdTAwM2NcXG4gXFx0ICAgIGxvY2FsLVxcdTAwM2VhcWxfdGhyZXNob2xkIFxcdTAwMjZcXHUwMDI2XFxuIFxcdCAgICBhdG9taWNfcmVhZChcXHUwMDI2c3RhLVxcdTAwM2VhaXJ0aW1lW3R4cS1cXHUwMDNlYWNdLmFxbF90eF9wZW5kaW5nKSBcXHUwMDNjXFxuLVxcdCAgICBzdGEtXFx1MDAzZWFpcnRpbWVbdHhxLVxcdTAwM2VhY10uYXFsX2xpbWl0X2hpZ2gpXFxuK1xcdCAgICBpZWVlODAyMTFfYXFsX3N0YV9saW1pdChsb2NhbCwgc3RhLFxcbitcXHRcXHRcXHRcXHQgICAgc3RhLVxcdTAwM2VhaXJ0aW1lW3R4cS1cXHUwMDNlYWNdLmFxbF9saW1pdF9oaWdoKSlcXG4gXFx0XFx0cmV0dXJuIHRydWU7XFxuIFxcbiBcXHRyZXR1cm4gZmFsc2U7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDE4OjA5OjMxLjEwMzUwNDIzNVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6NzA1MjQxMjQyMzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUFDODAyMTFcIixcbiAgICBcIkNGRzgwMjExXCIsXG4gICAgXCJBVEgxMUtcIixcbiAgICBcIk1BQzgwMjExX0RFQlVHRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpZWVlODAyMTFfdHhxX2FpcnRpbWVfY2hlY2tcIixcbiAgICBcImllZWU4MDIxMV9hcWxfc3RhX2xpbWl0XCIsXG4gICAgXCJpZWVlODAyMTFfbmV4dF90eHFcIixcbiAgICBcImllZWU4MDIxMV90eF9kZXF1ZXVlXCIsXG4gICAgXCJfX2F0aDExa19tYWNfcmVnaXN0ZXJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIHRoZSBJRUVFODAyMTFfSFdfVFhfTk9fUFVTSEJBQ0sgaGFyZHdhcmUgZmxhZyBhbmQgYWRkcyBzdGF0aW9uIGFpcnRpbWUgcXVldWUgbGltaXQgY2FsY3VsYXRpb24gKGllZWU4MDIxMV9hcWxfc3RhX2xpbWl0KSB0byB0aGUgbWFjODAyMTEgVFggcXVldWUgYWlydGltZSBjaGVjayAoaWVlZTgwMjExX3R4cV9haXJ0aW1lX2NoZWNrKS4gVGhlIG1hYzgwMjExIHN1YnN5c3RlbSBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBtYWM4MDIxMV9od3NpbSBhbmQgbmw4MDIxMSBpbnRlcmZhY2VzLCBtYWtpbmcgdGhlc2UgcXVldWUgc2NoZWR1bGluZyBhbmQgYWlydGltZSBjYWxjdWxhdGlvbiBjaGFuZ2VzIHdvcnRoIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3NcbnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4xLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncyxcbmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuXG5cbi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6XG4gIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWRcbiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS5cbiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLFxuICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuXG5cbi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgXCJOTyBGVU5DVElPTkFMIENIQU5HRVwiIChORkNJKSBPUiBcIlJFRkFDVE9SSU5HXCIgQ0xBSU1TOlxuICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzIFwiY2xlYW51cHNcIiwgXCJyZWZhY3RvcmluZ3NcIiwgb3Igc3RhdGVcbiAgXCJObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZFwiLiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS5cbiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50XG4gIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLlxuICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLlxuXG4tIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOlxuICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosXG4gIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLlxuICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyXG4gIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczpcblxuLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOlxuICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy5cbiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLylcbiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuXG4gICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHNcbiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLlxuICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy5cbi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOlxuICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6XG4gICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nXG4gICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuXG4gICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6XG4tIENvcmUgU3Vic3lzdGVtczpcbiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksXG4gICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLlxuLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6XG4gICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLlxuLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6XG4gICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLlxuLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOlxuICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOlxuXG4tIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzpcbiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXNcbiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHRcbiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuXG4gIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyBcImZvY3VzZWRcIixcbiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLlxuXG4tIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzpcbiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzXG4gIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LlxuXG4tIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKTpcbiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFja1xuICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy5cbiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyXG4gIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3Ncbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5JZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOlxuLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuLSBDaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLlxuLSBTdHJpcCBhbnkgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiVGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjRcblxuRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMTExNjUxYjE1NmZjMjE5NjY2NWRkZGY5ZGI2MmJlYWM2NzcxNTUwNFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgU2VwIDggMTg6MDk6MjcgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuY1xuaW5kZXggMmQ1NWNkYzRkMTY1ZC4uODdlNjA2MmM1NTUwOSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmNcbkBAIC0xMDQ5NCw2ICsxMDQ5NCw3IEBAIHN0YXRpYyBpbnQgX19hdGgxMWtfbWFjX3JlZ2lzdGVyKHN0cnVjdCBhdGgxMWsgKmFyKVxuIFxuIFx0aWVlZTgwMjExX2h3X3NldChhci1cdTAwM2VodywgU0lHTkFMX0RCTSk7XG4gXHRpZWVlODAyMTFfaHdfc2V0KGFyLVx1MDAzZWh3LCBTVVBQT1JUU19QUyk7XG4rXHRpZWVlODAyMTFfaHdfc2V0KGFyLVx1MDAzZWh3LCBUWF9OT19QVVNIQkFDSyk7XG4gXHRpZWVlODAyMTFfaHdfc2V0KGFyLVx1MDAzZWh3LCBTVVBQT1JUU19EWU5BTUlDX1BTKTtcbiBcdGllZWU4MDIxMV9od19zZXQoYXItXHUwMDNlaHcsIE1GUF9DQVBBQkxFKTtcbiBcdGllZWU4MDIxMV9od19zZXQoYXItXHUwMDNlaHcsIFJFUE9SVFNfVFhfQUNLX1NUQVRVUyk7XG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvbWFjODAyMTEuaCBiL2luY2x1ZGUvbmV0L21hYzgwMjExLmhcbmluZGV4IDdiYjQ2MTgwNjViNjcuLjgwMzgxYzdhYmQ4NGEgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL25ldC9tYWM4MDIxMS5oXG4rKysgYi9pbmNsdWRlL25ldC9tYWM4MDIxMS5oXG5AQCAtMzA4Niw2ICszMDg2LDEyIEBAIHN0cnVjdCBpZWVlODAyMTFfdHhxIHtcbiAgKiBASUVFRTgwMjExX0hXX1NVUFBPUlRTX05EUF9CTE9DS0FDSzogSFcgY2FuIHRyYW5zbWl0L3JlY2VpdmUgUzFHIE5EUFxuICAqXHRCbG9ja0FjayBmcmFtZXMuXG4gICpcbisgKiBASUVFRTgwMjExX0hXX1RYX05PX1BVU0hCQUNLOiBUaGUgZHJpdmVyIGhhbmRzIGV2ZXJ5IGZyYW1lIGl0IGRlcXVldWVzXG4rICpcdHRvIHRoZSBoYXJkd2FyZSBhdCBvbmNlLCBhbmQgdGhlIGhhcmR3YXJlIHBpY2tzIHRoZSBzdGF0aW9uIGl0IHNlcnZlc1xuKyAqXHRuZXh0LCBzbyB0aGUgb3JkZXIgaW4gd2hpY2ggbWFjODAyMTEgc2NoZWR1bGVzIHRoZSBxdWV1ZXMgZG9lcyBub3RcbisgKlx0cmVhY2ggdGhlIGFpci4gbWFjODAyMTEgdGhlbiBhcHBsaWVzIHRoZSBhaXJ0aW1lIHdlaWdodCB0byB0aGVcbisgKlx0YWlydGltZSBxdWV1ZSBsaW1pdCBpbnN0ZWFkLlxuKyAqXG4gICogQE5VTV9JRUVFODAyMTFfSFdfRkxBR1M6IG51bWJlciBvZiBoYXJkd2FyZSBmbGFncywgdXNlZCBmb3Igc2l6aW5nIGFycmF5c1xuICAqL1xuIGVudW0gaWVlZTgwMjExX2h3X2ZsYWdzIHtcbkBAIC0zMTQ3LDYgKzMxNTMsNyBAQCBlbnVtIGllZWU4MDIxMV9od19mbGFncyB7XG4gXHRJRUVFODAyMTFfSFdfSEFORExFU19RVUlFVF9DU0EsXG4gXHRJRUVFODAyMTFfSFdfU1RSSUNULFxuIFx0SUVFRTgwMjExX0hXX1NVUFBPUlRTX05EUF9CTE9DS0FDSyxcbitcdElFRUU4MDIxMV9IV19UWF9OT19QVVNIQkFDSyxcbiBcbiBcdC8qIGtlZXAgbGFzdCwgb2J2aW91c2x5ICovXG4gXHROVU1fSUVFRTgwMjExX0hXX0ZMQUdTXG5kaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjExL2RlYnVnZnMuYyBiL25ldC9tYWM4MDIxMS9kZWJ1Z2ZzLmNcbmluZGV4IDg5NDZiMDI3NzgyY2YuLmRkYmZhOTkxZWM3NGUgMTAwNjQ0XG4tLS0gYS9uZXQvbWFjODAyMTEvZGVidWdmcy5jXG4rKysgYi9uZXQvbWFjODAyMTEvZGVidWdmcy5jXG5AQCAtNDYyLDYgKzQ2Miw3IEBAIHN0YXRpYyBjb25zdCBjaGFyICpod19mbGFnX25hbWVzW10gPSB7XG4gXHRGTEFHKEhBTkRMRVNfUVVJRVRfQ1NBKSxcbiBcdEZMQUcoU1RSSUNUKSxcbiBcdEZMQUcoU1VQUE9SVFNfTkRQX0JMT0NLQUNLKSxcbitcdEZMQUcoVFhfTk9fUFVTSEJBQ0spLFxuICN1bmRlZiBGTEFHXG4gfTtcbiBcbmRpZmYgLS1naXQgYS9uZXQvbWFjODAyMTEvdHguYyBiL25ldC9tYWM4MDIxMS90eC5jXG5pbmRleCBjMzMwOTI5NjBkZjI2Li5jOTRlZmZmNDhkNzQ3IDEwMDY0NFxuLS0tIGEvbmV0L21hYzgwMjExL3R4LmNcbisrKyBiL25ldC9tYWM4MDIxMS90eC5jXG5AQCAtNDIxNyw2ICs0MjE3LDIxIEBAIEVYUE9SVF9TWU1CT0woX19pZWVlODAyMTFfc2NoZWR1bGVfdHhxKTtcbiBcbiBERUZJTkVfU1RBVElDX0tFWV9GQUxTRShhcWxfZGlzYWJsZSk7XG4gXG4rc3RhdGljIHUzMiBpZWVlODAyMTFfYXFsX3N0YV9saW1pdChzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcbitcdFx0XHRcdCAgIHN0cnVjdCBzdGFfaW5mbyAqc3RhLCB1MzIgbGltaXQpXG4re1xuK1x0dTMyIHNjYWxlZDtcbitcbitcdGlmICghaWVlZTgwMjExX2h3X2NoZWNrKFx1MDAyNmxvY2FsLVx1MDAzZWh3LCBUWF9OT19QVVNIQkFDSykgfHxcbitcdCAgICBzdGEtXHUwMDNlYWlydGltZV93ZWlnaHQgPT0gSUVFRTgwMjExX0RFRkFVTFRfQUlSVElNRV9XRUlHSFQpXG4rXHRcdHJldHVybiBsaW1pdDtcbitcbitcdHNjYWxlZCA9IG11bHRfZnJhYyhsaW1pdCwgc3RhLVx1MDAzZWFpcnRpbWVfd2VpZ2h0LFxuK1x0XHRcdCAgIElFRUU4MDIxMV9ERUZBVUxUX0FJUlRJTUVfV0VJR0hUKTtcbitcbitcdHJldHVybiBtaW4oc2NhbGVkLCBtYXgobGltaXQsIGxvY2FsLVx1MDAzZWFxbF90aHJlc2hvbGQpKTtcbit9XG4rXG4gYm9vbCBpZWVlODAyMTFfdHhxX2FpcnRpbWVfY2hlY2soc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4gXHRcdFx0XHQgc3RydWN0IGllZWU4MDIxMV90eHEgKnR4cSlcbiB7XG5AQCAtNDIzOCwxMyArNDI1MywxNSBAQCBib29sIGllZWU4MDIxMV90eHFfYWlydGltZV9jaGVjayhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbiBcbiBcdHN0YSA9IGNvbnRhaW5lcl9vZih0eHEtXHUwMDNlc3RhLCBzdHJ1Y3Qgc3RhX2luZm8sIHN0YSk7XG4gXHRpZiAoYXRvbWljX3JlYWQoXHUwMDI2c3RhLVx1MDAzZWFpcnRpbWVbdHhxLVx1MDAzZWFjXS5hcWxfdHhfcGVuZGluZykgXHUwMDNjXG4tXHQgICAgc3RhLVx1MDAzZWFpcnRpbWVbdHhxLVx1MDAzZWFjXS5hcWxfbGltaXRfbG93KVxuK1x0ICAgIGllZWU4MDIxMV9hcWxfc3RhX2xpbWl0KGxvY2FsLCBzdGEsXG4rXHRcdFx0XHQgICAgc3RhLVx1MDAzZWFpcnRpbWVbdHhxLVx1MDAzZWFjXS5hcWxfbGltaXRfbG93KSlcbiBcdFx0cmV0dXJuIHRydWU7XG4gXG4gXHRpZiAoYXRvbWljX3JlYWQoXHUwMDI2bG9jYWwtXHUwMDNlYXFsX3RvdGFsX3BlbmRpbmdfYWlydGltZSkgXHUwMDNjXG4gXHQgICAgbG9jYWwtXHUwMDNlYXFsX3RocmVzaG9sZCBcdTAwMjZcdTAwMjZcbiBcdCAgICBhdG9taWNfcmVhZChcdTAwMjZzdGEtXHUwMDNlYWlydGltZVt0eHEtXHUwMDNlYWNdLmFxbF90eF9wZW5kaW5nKSBcdTAwM2Ncbi1cdCAgICBzdGEtXHUwMDNlYWlydGltZVt0eHEtXHUwMDNlYWNdLmFxbF9saW1pdF9oaWdoKVxuK1x0ICAgIGllZWU4MDIxMV9hcWxfc3RhX2xpbWl0KGxvY2FsLCBzdGEsXG4rXHRcdFx0XHQgICAgc3RhLVx1MDAzZWFpcnRpbWVbdHhxLVx1MDAzZWFjXS5hcWxfbGltaXRfaGlnaCkpXG4gXHRcdHJldHVybiB0cnVlO1xuIFxuIFx0cmV0dXJuIGZhbHNlO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMTg6MDk6MzEuMTAzNTA3MDc1WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6Nzg0MTA2NzIzNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBhdGNoIGZvciBGdXp6aW5nIFBvdGVudGlhbCoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoaXMgcGF0Y2ggaXMgZXZlbiAqd29ydGgqIGZ1enppbmcuIFdlIGhhdmUgYSBwYXRjaCBkaWZmIHdpdGggY2hhbmdlcyBpbiBgYXRoMTFrL21hYy5jYCwgYG1hYzgwMjExLmhgLCBgZGVidWdmcy5jYCwgYW5kIGB0eC5jYC4gVGhlIGNvcmUgc2VlbXMgdG8gYmUgYXJvdW5kIGEgYFRYX05PX1BVU0hCQUNLYCBmbGFnLCBhbmQgdGhlIGFkZGl0aW9uIG9mIGBpZWVlODAyMTFfYXFsX3N0YV9saW1pdCgpYCBpbiB0aGUgdHJhbnNtaXQgcGF0aC4gVGhpcyBkZWZpbml0ZWx5IHdhcnJhbnRzIGEgY2xvc2VyIGxvb2suXG5cbk15IGluaXRpYWwgdGhvdWdodCBpcyB0byBkZXRlcm1pbmUgdGhlIHJlYWNoYWJpbGl0eSBvZiB0aGVzZSBhcmVhcyBvZiBjb2RlIHdpdGhpbiB0aGUgYnJvYWRlciBMaW51eCBrZXJuZWwsIHNwZWNpZmljYWxseSB3aXRoaW4gdGhlIG1hYzgwMjExIHdpcmVsZXNzIHN1YnN5c3RlbS4gR2l2ZW4gbWFjODAyMTEncyBjb3JlIHJvbGUgaW4gd2lyZWxlc3MgbmV0d29ya2luZywgaXQgc2hvdWxkIGJlIGEganVpY3kgdGFyZ2V0LiBMdWNraWx5LCBzaW5jZSBJIGFscmVhZHkga25vdyBzeXprYWxsZXIgaGFzIGhhZCBzdWNjZXNzIGZ1enppbmcgbWFjODAyMTEgdmlhIGBtYWM4MDIxMV9od3NpbWAsIGB2aXJ0X3dpZmlgLCBgY2ZnODAyMTFgLCBhbmQgYG5sODAyMTFgLCB0aGF0J3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBUaGlzIHN1Z2dlc3RzIGl0IGlzIGRlZmluaXRlbHkgZnV6emFibGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBhbmQgR0NFLCB3aGljaCBpcyBhIGdyZWF0IHNpZ24uXG5cbk5leHQgc3RlcDogbGV0J3MgdmVyaWZ5IG1hYzgwMjExJ3MgcGxhY2UgaW4gdGhlIHdpcmVsZXNzIHN0YWNrLiBJIG5lZWQgdG8gY29uZmlybSBpdHMgcm9sZSBpbiB0aGlzIHNwZWNpZmljIGFyZWEg4oCTIGlzIGl0IGNvcmUsIG9yIHJlYWNoYWJsZSB0aHJvdWdoIHRoZSBpbnRlcmZhY2VzIEkgbWVudGlvbmVkPyBUaGVuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25maWcgb3B0aW9ucyBjb250cm9sbGluZyB0aGVzZSBiaXRzLiBJJ2xsIG5lZWQgdG8gdXNlIHNvbWUgYGdyZXBgIG1hZ2ljIGluIHRoZSBrZXJuZWwgc291cmNlIHRvIGxvb2sgZm9yIGNvbmZpZ3VyYXRpb25zIGFuZCBjYWxsIGdyYXBocy4gSSB3YW50IHRvIHVuZGVyc3RhbmQgZXhhY3RseSAqaG93KiB0aGVzZSBuZXcgY2hhbmdlcyBhcmUgdXNlZCwgYW5kIHdoYXQgY29uZmlndXJhdGlvbnMgYXJlIHJlcXVpcmVkIHRvIHRyaWdnZXIgdGhlbS4gVGhpcyB3aWxsIGd1aWRlIG15IGZ1enppbmcgc2V0dXAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQyOTQsIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNzUsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQxODowOTozOC45NDQ1NzczMzFaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTE1MjMyNzMxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImllZWU4MDIxMV90eHFfYWlydGltZV9jaGVja1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbWFjODAyMTFcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L21hYzgwMjExL3R4LmM9Mzg4Nj1zdHJ1Y3Qgc2tfYnVmZiAqaWVlZTgwMjExX3R4X2RlcXVldWUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYy0zOTA0LVxcbm5ldC9tYWM4MDIxMS90eC5jOjM5MDU6XFx0aWYgKCFpZWVlODAyMTFfdHhxX2FpcnRpbWVfY2hlY2soaHcsIHR4cSkpXFxubmV0L21hYzgwMjExL3R4LmMtMzkwNi1cXHRcXHRyZXR1cm4gTlVMTDtcXG4tLVxcbm5ldC9tYWM4MDIxMS90eC5jPTQxMTU9c3RydWN0IGllZWU4MDIxMV90eHEgKmllZWU4MDIxMV9uZXh0X3R4cShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgdTggYWMpXFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYy00MTQ0LVxcbm5ldC9tYWM4MDIxMS90eC5jOjQxNDU6XFx0YXFsX2NoZWNrID0gaWVlZTgwMjExX3R4cV9haXJ0aW1lX2NoZWNrKGh3LCBcXHUwMDI2dHhxaS1cXHUwMDNldHhxKTtcXG5uZXQvbWFjODAyMTEvdHguYy00MTQ2LVxcdGlmIChhcWxfY2hlY2spXFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYz00MjIwPXN0YXRpYyB1MzIgaWVlZTgwMjExX2FxbF9zdGFfbGltaXQoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYy00MjM0LVxcbm5ldC9tYWM4MDIxMS90eC5jOjQyMzU6Ym9vbCBpZWVlODAyMTFfdHhxX2FpcnRpbWVfY2hlY2soc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxubmV0L21hYzgwMjExL3R4LmMtNDIzNi1cXHRcXHRcXHRcXHQgc3RydWN0IGllZWU4MDIxMV90eHEgKnR4cSlcXG4tLVxcbm5ldC9tYWM4MDIxMS90eC5jLTQyNjgtfVxcbm5ldC9tYWM4MDIxMS90eC5jOjQyNjk6RVhQT1JUX1NZTUJPTChpZWVlODAyMTFfdHhxX2FpcnRpbWVfY2hlY2spO1xcbm5ldC9tYWM4MDIxMS90eC5jLTQyNzAtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDE4OjA5OjM5LjA1OTgxNTI0MloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI3ODg3MTY4OTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyBpZiBJIHdlcmUgdGhpbmtpbmcgdGhlc2UgdGhvdWdodHM6XG5cbioqQW5hbHl6aW5nIGBpZWVlODAyMTFfYXFsX3N0YV9saW1pdGAgaW4gYG5ldC9tYWM4MDIxMS90eC5jYCoqXG5cbk9rYXksIEkgbmVlZCB0byBkaWcgaW50byBob3cgdGhpcyBBUUwgKEFpcnRpbWUgRmFpcm5lc3MgUXVldWUgTGVuZ3RoKSBzdGF0aW9uIGxpbWl0IGlzIGJlaW5nIGhhbmRsZWQuIFRoZSBvYnZpb3VzIHBsYWNlIHRvIHN0YXJ0IGlzIGBuZXQvbWFjODAyMTEvdHguY2AsIHdoZXJlIEkgYXNzdW1lIHRoZSBhY3R1YWwgdHJhbnNtaXNzaW9uIGxvZ2ljIGFuZCBxdWV1ZSBtYW5hZ2VtZW50IHJlc2lkZS4gSSdsbCBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IGBpZWVlODAyMTFfYXFsX3N0YV9saW1pdGAgaXMgKnVzZWQqIGZpcnN0LiBJcyBpdCBhIGhhcmQgbGltaXQ/IElzIGl0IGEgdGFyZ2V0PyBJcyBpdCBkeW5hbWljPyBJJ2xsIGJlIGxvb2tpbmcgZm9yIHdoZXJlIHRoaXMgdmFyaWFibGUgaXMgcmVhZCwgY29tcGFyZWQsIGFuZCBtb2RpZmllZCwgYW5kIHdoYXQgdGhhdCByZXZlYWxzIGFib3V0IHRoZSBiZWhhdmlvciBvZiB0aGUgQVFNIHN5c3RlbSBhcyBhIHdob2xlLiBLbm93aW5nIHRoZSBjb250ZXh0IGFyb3VuZCB0aGlzIGZ1bmN0aW9uIHdpbGwgYWxzbyBiZSB2aXRhbDsgaG93IGFyZSB0aGUgcXVldWVzIHN0cnVjdHVyZWQsIHdoYXQgb3RoZXIgZmFjdG9ycyBpbmZsdWVuY2UgcGFja2V0IHNjaGVkdWxpbmcsIGFuZCB3aGF0IGFyZSB0aGUgaW1wbGljYXRpb25zIGZvciBwZXItc3RhdGlvbiBmYWlybmVzcyBhbmQgb3ZlcmFsbCB0aHJvdWdocHV0PyBJJ2xsIHByb2JhYmx5IGFsc28gbmVlZCB0byBrZWVwIGFuIGV5ZSBvbiByZWxhdGVkIGZ1bmN0aW9ucyBsaWtlIHRob3NlIGhhbmRsaW5nIHJhdGUgY29udHJvbCBhbmQgZnJhbWUgYWdncmVnYXRpb24gYXMgdGhleSdyZSBhbGwgaW50ZXItcmVsYXRlZC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCdzIGNhdXNpbmcgdGhlIHByb2JsZW0sIGFuZCB0aGlzIHNlZW1zIGxpa2UgdGhlIGxpa2VseSBwbGFjZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTY0MCwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDE4OjA5OjQxLjg0ODUzNDQ4MloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM1MTA0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvbWFjODAyMTEvdHguY1wiLFxuICBcIkZpcnN0TGluZVwiOiA0MjE1LFxuICBcIkxpbmVDb3VudFwiOiA2MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCI0MjE1OlxcdH1cXG40MjE2OlxcdEVYUE9SVF9TWU1CT0woX19pZWVlODAyMTFfc2NoZWR1bGVfdHhxKTtcXG40MjE3OlxcdFxcbjQyMTg6XFx0REVGSU5FX1NUQVRJQ19LRVlfRkFMU0UoYXFsX2Rpc2FibGUpO1xcbjQyMTk6XFx0XFxuNDIyMDpcXHRzdGF0aWMgdTMyIGllZWU4MDIxMV9hcWxfc3RhX2xpbWl0KHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxcbjQyMjE6XFx0XFx0XFx0XFx0XFx0ICAgc3RydWN0IHN0YV9pbmZvICpzdGEsIHUzMiBsaW1pdClcXG40MjIyOlxcdHtcXG40MjIzOlxcdFxcdHUzMiBzY2FsZWQ7XFxuNDIyNDpcXHRcXG40MjI1OlxcdFxcdGlmICghaWVlZTgwMjExX2h3X2NoZWNrKFxcdTAwMjZsb2NhbC1cXHUwMDNlaHcsIFRYX05PX1BVU0hCQUNLKSB8fFxcbjQyMjY6XFx0XFx0ICAgIHN0YS1cXHUwMDNlYWlydGltZV93ZWlnaHQgPT0gSUVFRTgwMjExX0RFRkFVTFRfQUlSVElNRV9XRUlHSFQpXFxuNDIyNzpcXHRcXHRcXHRyZXR1cm4gbGltaXQ7XFxuNDIyODpcXHRcXG40MjI5OlxcdFxcdHNjYWxlZCA9IG11bHRfZnJhYyhsaW1pdCwgc3RhLVxcdTAwM2VhaXJ0aW1lX3dlaWdodCxcXG40MjMwOlxcdFxcdFxcdFxcdCAgIElFRUU4MDIxMV9ERUZBVUxUX0FJUlRJTUVfV0VJR0hUKTtcXG40MjMxOlxcdFxcbjQyMzI6XFx0XFx0cmV0dXJuIG1pbihzY2FsZWQsIG1heChsaW1pdCwgbG9jYWwtXFx1MDAzZWFxbF90aHJlc2hvbGQpKTtcXG40MjMzOlxcdH1cXG40MjM0OlxcdFxcbjQyMzU6XFx0Ym9vbCBpZWVlODAyMTFfdHhxX2FpcnRpbWVfY2hlY2soc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuNDIzNjpcXHRcXHRcXHRcXHRcXHQgc3RydWN0IGllZWU4MDIxMV90eHEgKnR4cSlcXG40MjM3OlxcdHtcXG40MjM4OlxcdFxcdHN0cnVjdCBzdGFfaW5mbyAqc3RhO1xcbjQyMzk6XFx0XFx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBod190b19sb2NhbChodyk7XFxuNDI0MDpcXHRcXG40MjQxOlxcdFxcdGlmICghd2lwaHlfZXh0X2ZlYXR1cmVfaXNzZXQobG9jYWwtXFx1MDAzZWh3LndpcGh5LCBOTDgwMjExX0VYVF9GRUFUVVJFX0FRTCkpXFxuNDI0MjpcXHRcXHRcXHRyZXR1cm4gdHJ1ZTtcXG40MjQzOlxcdFxcbjQyNDQ6XFx0XFx0aWYgKHN0YXRpY19icmFuY2hfdW5saWtlbHkoXFx1MDAyNmFxbF9kaXNhYmxlKSlcXG40MjQ1OlxcdFxcdFxcdHJldHVybiB0cnVlO1xcbjQyNDY6XFx0XFxuNDI0NzpcXHRcXHRpZiAoIXR4cS1cXHUwMDNlc3RhKVxcbjQyNDg6XFx0XFx0XFx0cmV0dXJuIGF0b21pY19yZWFkKFxcdTAwMjZsb2NhbC1cXHUwMDNlYXFsX21jX3BlbmRpbmdfYWlydGltZSkgXFx1MDAzY1xcbjQyNDk6XFx0XFx0XFx0ICAgICAgIGxvY2FsLVxcdTAwM2VhcWxfdHhxX2xpbWl0X21jO1xcbjQyNTA6XFx0XFxuNDI1MTpcXHRcXHRpZiAodW5saWtlbHkodHhxLVxcdTAwM2V0aWQgPT0gSUVFRTgwMjExX05VTV9USURTKSlcXG40MjUyOlxcdFxcdFxcdHJldHVybiB0cnVlO1xcbjQyNTM6XFx0XFxuNDI1NDpcXHRcXHRzdGEgPSBjb250YWluZXJfb2YodHhxLVxcdTAwM2VzdGEsIHN0cnVjdCBzdGFfaW5mbywgc3RhKTtcXG40MjU1OlxcdFxcdGlmIChhdG9taWNfcmVhZChcXHUwMDI2c3RhLVxcdTAwM2VhaXJ0aW1lW3R4cS1cXHUwMDNlYWNdLmFxbF90eF9wZW5kaW5nKSBcXHUwMDNjXFxuNDI1NjpcXHRcXHQgICAgaWVlZTgwMjExX2FxbF9zdGFfbGltaXQobG9jYWwsIHN0YSxcXG40MjU3OlxcdFxcdFxcdFxcdFxcdCAgICBzdGEtXFx1MDAzZWFpcnRpbWVbdHhxLVxcdTAwM2VhY10uYXFsX2xpbWl0X2xvdykpXFxuNDI1ODpcXHRcXHRcXHRyZXR1cm4gdHJ1ZTtcXG40MjU5OlxcdFxcbjQyNjA6XFx0XFx0aWYgKGF0b21pY19yZWFkKFxcdTAwMjZsb2NhbC1cXHUwMDNlYXFsX3RvdGFsX3BlbmRpbmdfYWlydGltZSkgXFx1MDAzY1xcbjQyNjE6XFx0XFx0ICAgIGxvY2FsLVxcdTAwM2VhcWxfdGhyZXNob2xkIFxcdTAwMjZcXHUwMDI2XFxuNDI2MjpcXHRcXHQgICAgYXRvbWljX3JlYWQoXFx1MDAyNnN0YS1cXHUwMDNlYWlydGltZVt0eHEtXFx1MDAzZWFjXS5hcWxfdHhfcGVuZGluZykgXFx1MDAzY1xcbjQyNjM6XFx0XFx0ICAgIGllZWU4MDIxMV9hcWxfc3RhX2xpbWl0KGxvY2FsLCBzdGEsXFxuNDI2NDpcXHRcXHRcXHRcXHRcXHQgICAgc3RhLVxcdTAwM2VhaXJ0aW1lW3R4cS1cXHUwMDNlYWNdLmFxbF9saW1pdF9oaWdoKSlcXG40MjY1OlxcdFxcdFxcdHJldHVybiB0cnVlO1xcbjQyNjY6XFx0XFxuNDI2NzpcXHRcXHRyZXR1cm4gZmFsc2U7XFxuNDI2ODpcXHR9XFxuNDI2OTpcXHRFWFBPUlRfU1lNQk9MKGllZWU4MDIxMV90eHFfYWlydGltZV9jaGVjayk7XFxuNDI3MDpcXHRcXG40MjcxOlxcdHUzMiBpZWVlODAyMTFfdHhxX2FxbF9wZW5kaW5nKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbjQyNzI6XFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IGllZWU4MDIxMV90eHEgKnR4cSlcXG40MjczOlxcdHtcXG40Mjc0OlxcdFxcdHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsID0gaHdfdG9fbG9jYWwoaHcpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQxODowOTo0MS44NDg4ODg2NDJaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyODU4MDk2Mjg5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgTUFDODAyMTEgQ29uZmlndXJhdGlvbiBhbmQgRHJpdmVyIERlcGVuZGVuY2llcyoqXG5cbk9rYXksIGxldCdzIGRpdmUgaW4uIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gaG93IGBtYWM4MDIxMWAgaXMgY29uZmlndXJlZCBhbmQgd2hpY2ggZHJpdmVycyBhcmUgYWN0dWFsbHkgdXNpbmcgaXQuIE15IGZpcnN0IHN0b3Agc2hvdWxkIGJlIHRvIGV4YW1pbmUgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZXMuIExldCdzIHN0YXJ0IHdpdGggYG5ldC9tYWM4MDIxMS9LY29uZmlnYC4gVGhpcyBzaG91bGQgZ2l2ZSBtZSBhIGhpZ2gtbGV2ZWwgdmlldyBvZiB0aGUgY29uZmlndXJhYmxlIG9wdGlvbnMgd2l0aGluIHRoZSBgbWFjODAyMTFgIGNvcmUuIFRoZW4sIHNpbmNlIEkga25vdyBhdGgxMWsgaXMgYSBtYWpvciB3aXJlbGVzcyBkcml2ZXIgdGhhdCByZWxpZXMgb24gdGhpcyBzdWJzeXN0ZW0sIEkgc2hvdWxkIGFsc28gbG9vayBhdCB0aGUgYXRoMTFrJ3MgS2NvbmZpZyBmaWxlIChgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnYCkuIENvbXBhcmluZyB0aGVzZSB0d28gd2lsbCBpbGx1bWluYXRlIGhvdyBkZXBlbmRlbmNpZXMgYXJlIGhhbmRsZWQgYW5kIGhvdyB0aGUgc3BlY2lmaWMgZHJpdmVyIGludGVyYWN0cyB3aXRoIHRoZSBtb3JlIGdlbmVyYWwgbWFjODAyMTEgZnJhbWV3b3JrLiBUaGlzIHNob3VsZCBwcm92aWRlIHNvbWUgdXNlZnVsIGluZm9ybWF0aW9uIHJlZ2FyZGluZyBvdmVyYWxsIHN5c3RlbSBiZWhhdmlvci5cblxuXG4iLCJJbnB1dFRva2VucyI6NzA2MSwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYxLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMTg6MDk6NDQuNzA2OTg4NjExWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcwMzE2NTQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBNQUM4MDIxMVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbWFjODAyMTFcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L21hYzgwMjExL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyOmNvbmZpZyBNQUM4MDIxMVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIkdlbmVyaWMgSUVFRSA4MDIuMTEgTmV0d29ya2luZyBTdGFjayAobWFjODAyMTEpXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWc9MTk9aWYgTUFDODAyMTEgIT0gblxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIwLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIxOmNvbmZpZyBNQUM4MDIxMV9IQVNfUkNcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMi1cXHRib29sXFxubmV0L21hYzgwMjExL0tjb25maWctMjMtXFxubmV0L21hYzgwMjExL0tjb25maWc6MjQ6Y29uZmlnIE1BQzgwMjExX1JDX01JTlNUUkVMXFxubmV0L21hYzgwMjExL0tjb25maWctMjUtXFx0Ym9vbCBcXFwiTWluc3RyZWxcXFwiIGlmIEVYUEVSVFxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWc9MzE9Y2hvaWNlXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy00MC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo0MTpjb25maWcgTUFDODAyMTFfUkNfREVGQVVMVF9NSU5TVFJFTFxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTQyLVxcdGJvb2wgXFxcIk1pbnN0cmVsXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWc9NDg9ZW5kY2hvaWNlXFxubmV0L21hYzgwMjExL0tjb25maWctNDktXFxubmV0L21hYzgwMjExL0tjb25maWc6NTA6Y29uZmlnIE1BQzgwMjExX1JDX0RFRkFVTFRcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy01MS1cXHRzdHJpbmdcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnPTU3PWNvbW1lbnQgXFxcIlNvbWUgd2lyZWxlc3MgZHJpdmVycyByZXF1aXJlIGEgcmF0ZSBjb250cm9sIGFsZ29yaXRobVxcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTU5LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjYwOmNvbmZpZyBNQUM4MDIxMV9LVU5JVF9URVNUXFxubmV0L21hYzgwMjExL0tjb25maWctNjEtXFx0dHJpc3RhdGUgXFxcIktVbml0IHRlc3RzIGZvciBtYWM4MDIxMVxcXCIgaWYgIUtVTklUX0FMTF9URVNUU1xcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctNjktXFxubmV0L21hYzgwMjExL0tjb25maWc6NzA6Y29uZmlnIE1BQzgwMjExX01FU0hcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy03MS1cXHRib29sIFxcXCJFbmFibGUgbWFjODAyMTEgbWVzaCBuZXR3b3JraW5nIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy03OC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo3OTpjb25maWcgTUFDODAyMTFfTEVEU1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTgwLVxcdGJvb2wgXFxcIkVuYWJsZSBMRUQgdHJpZ2dlcnNcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy04Ny1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo4ODpjb25maWcgTUFDODAyMTFfREVCVUdGU1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTg5LVxcdGJvb2wgXFxcIkV4cG9ydCBtYWM4MDIxMSBpbnRlcm5hbHMgaW4gRGVidWdGU1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTk2LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjk3OmNvbmZpZyBNQUM4MDIxMV9NRVNTQUdFX1RSQUNJTkdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy05OC1cXHRib29sIFxcXCJUcmFjZSBhbGwgbWFjODAyMTEgZGVidWcgbWVzc2FnZXNcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMDktXFxubmV0L21hYzgwMjExL0tjb25maWc6MTEwOm1lbnVjb25maWcgTUFDODAyMTFfREVCVUdfTUVOVVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTExMS1cXHRib29sIFxcXCJTZWxlY3QgbWFjODAyMTEgZGVidWdnaW5nIGZlYXR1cmVzXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMTE1LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjExNjpjb25maWcgTUFDODAyMTFfTk9JTkxJTkVcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMTctXFx0Ym9vbCBcXFwiRG8gbm90IGlubGluZSBUWC9SWCBoYW5kbGVyc1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTEzMS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxMzI6Y29uZmlnIE1BQzgwMjExX1ZFUkJPU0VfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMzMtXFx0Ym9vbCBcXFwiVmVyYm9zZSBkZWJ1Z2dpbmcgb3V0cHV0XFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMTQyLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE0Mzpjb25maWcgTUFDODAyMTFfTUxNRV9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE0NC1cXHRib29sIFxcXCJWZXJib3NlIG1hbmFnZWQgTUxNRSBvdXRwdXRcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNTMtXFxubmV0L21hYzgwMjExL0tjb25maWc6MTU0OmNvbmZpZyBNQUM4MDIxMV9TVEFfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNTUtXFx0Ym9vbCBcXFwiVmVyYm9zZSBzdGF0aW9uIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE2Mi1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxNjM6Y29uZmlnIE1BQzgwMjExX0hUX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMTY0LVxcdGJvb2wgXFxcIlZlcmJvc2UgSFQgZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMTc0LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE3NTpjb25maWcgTUFDODAyMTFfT0NCX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMTc2LVxcdGJvb2wgXFxcIlZlcmJvc2UgT0NCIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE4NS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxODY6Y29uZmlnIE1BQzgwMjExX0lCU1NfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xODctXFx0Ym9vbCBcXFwiVmVyYm9zZSBJQlNTIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE5Ni1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxOTc6Y29uZmlnIE1BQzgwMjExX1BTX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMTk4LVxcdGJvb2wgXFxcIlZlcmJvc2UgcG93ZXJzYXZlIG1vZGUgZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMjA4LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIwOTpjb25maWcgTUFDODAyMTFfTVBMX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMjEwLVxcdGJvb2wgXFxcIlZlcmJvc2UgbWVzaCBwZWVyIGxpbmsgZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMjIxLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIyMjpjb25maWcgTUFDODAyMTFfTVBBVEhfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMjMtXFx0Ym9vbCBcXFwiVmVyYm9zZSBtZXNoIHBhdGggZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMjM0LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIzNTpjb25maWcgTUFDODAyMTFfTUhXTVBfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMzYtXFx0Ym9vbCBcXFwiVmVyYm9zZSBtZXNoIEhXTVAgcm91dGluZyBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNDctXFxubmV0L21hYzgwMjExL0tjb25maWc6MjQ4OmNvbmZpZyBNQUM4MDIxMV9NRVNIX1NZTkNfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNDktXFx0Ym9vbCBcXFwiVmVyYm9zZSBtZXNoIHN5bmNocm9uaXphdGlvbiBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNTgtXFxubmV0L21hYzgwMjExL0tjb25maWc6MjU5OmNvbmZpZyBNQUM4MDIxMV9NRVNIX0NTQV9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI2MC1cXHRib29sIFxcXCJWZXJib3NlIG1lc2ggY2hhbm5lbCBzd2l0Y2ggZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMjY5LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI3MDpjb25maWcgTUFDODAyMTFfTUVTSF9QU19ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI3MS1cXHRib29sIFxcXCJWZXJib3NlIG1lc2ggcG93ZXJzYXZlIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI4MC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyODE6Y29uZmlnIE1BQzgwMjExX1RETFNfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yODItXFx0Ym9vbCBcXFwiVmVyYm9zZSBURExTIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI5Mi1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyOTM6Y29uZmlnIE1BQzgwMjExX0RFQlVHX0NPVU5URVJTXFxubmV0L21hYzgwMjExL0tjb25maWctMjk0LVxcdGJvb2wgXFxcIkV4dHJhIHN0YXRpc3RpY3MgZm9yIFRYL1JYIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTMwNy1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzozMDg6Y29uZmlnIE1BQzgwMjExX1NUQV9IQVNIX01BWF9TSVpFXFxubmV0L21hYzgwMjExL0tjb25maWctMzA5LVxcdGludCBcXFwiU3RhdGlvbiBoYXNoIHRhYmxlIG1heGltdW0gc2l6ZVxcXCIgaWYgTUFDODAyMTFfREVCVUdfTUVOVVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQxODowOTo0NC43NzczMTUxMjlaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyNzkyMzQ4MDE5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipLZXJuZWwgQ29uZmlndXJhdGlvbiBDb250ZXh0IFNoaWZ0OiBhdGgxMWsgS2NvbmZpZyoqXG5cbkFscmlnaHQsIHNvIHdlJ3JlIGRpdmluZyBiYWNrIGludG8gdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uLCBzcGVjaWZpY2FsbHkgdGhlIGF0aDExayB3aXJlbGVzcyBkcml2ZXIuIEkgbmVlZCB0byBtYWtlIGFic29sdXRlbHkgc3VyZSB3ZSd2ZSBjb25zaWRlcmVkIHRoZSByZWxldmFudCBLY29uZmlnIG9wdGlvbnMuIEl0J3MgdG9vIGVhc3kgdG8gb3Zlcmxvb2sgc29tZXRoaW5nLCBlc3BlY2lhbGx5IGluIGEgc3ByYXdsaW5nIHByb2plY3QgbGlrZSB0aGUga2VybmVsLiBTbywgSSBuZWVkIHRvIGdvIG92ZXIgdGhlIGRyaXZlcidzIEtjb25maWcgZmlsZSwgd2hpY2ggaXMgbG9jYXRlZCBpbiBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWcuIEl0IGlzIGltcG9ydGFudCB0byBmdWxseSB1bmRlcnN0YW5kIHRoZSBmZWF0dXJlcyB0aGF0IGhhdmUgYmVlbiBlbmFibGVkIGFuZCBkaXNhYmxlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6OTUzMiwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDE4OjA5OjQ3LjU2OTY2NjIyOVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTA1Njg3ODYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiQVRIMTFLXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWtcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA5MzEwIGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWc6Mjpjb25maWcgQVRIMTFLXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIlF1YWxjb21tIDgwMi4xMWF4IGNoaXBzZXQgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZy0xMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWc6MTM6Y29uZmlnIEFUSDExS19BSEJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWctMTQtXFx0dHJpc3RhdGUgXFxcIkF0aGVyb3MgYXRoMTFrIEFIQiBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZzoxNTpcXHRkZXBlbmRzIG9uIEFUSDExS1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZy0xNi1cXHRkZXBlbmRzIG9uIFJFTU9URVBST0NcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZy0xOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWc6MjA6Y29uZmlnIEFUSDExS19QQ0lcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWctMjEtXFx0dHJpc3RhdGUgXFxcIkF0aGVyb3MgYXRoMTFrIFBDSSBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZzoyMjpcXHRkZXBlbmRzIG9uIEFUSDExSyBcXHUwMDI2XFx1MDAyNiBQQ0lcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWctMjMtXFx0c2VsZWN0IE1ISV9CVVNcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZy0yOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWc6MzA6Y29uZmlnIEFUSDExS19ERUJVR1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZy0zMS1cXHRib29sIFxcXCJRQ0EgYXRoMTFrIGRlYnVnZ2luZ1xcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWc6MzI6XFx0ZGVwZW5kcyBvbiBBVEgxMUtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWctMzMtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTM3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZzozODpjb25maWcgQVRIMTFLX0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWctMzktXFx0Ym9vbCBcXFwiUUNBIGF0aDExayBkZWJ1Z2ZzIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnOjQwOlxcdGRlcGVuZHMgb24gQVRIMTFLIFxcdTAwMjZcXHUwMDI2IERFQlVHX0ZTIFxcdTAwMjZcXHUwMDI2IE1BQzgwMjExX0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWctNDEtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTQ1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZzo0Njpjb25maWcgQVRIMTFLX1RSQUNJTkdcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWctNDctXFx0Ym9vbCBcXFwiYXRoMTFrIHRyYWNpbmcgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWc6NDg6XFx0ZGVwZW5kcyBvbiBBVEgxMUsgXFx1MDAyNlxcdTAwMjYgRVZFTlRfVFJBQ0lOR1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZy00OS1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWctNTEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnOjUyOmNvbmZpZyBBVEgxMUtfU1BFQ1RSQUxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWctNTMtXFx0Ym9vbCBcXFwiUUNBIGF0aDExayBzcGVjdHJhbCBzY2FuIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnOjU0OlxcdGRlcGVuZHMgb24gQVRIMTFLX0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWctNTUtXFx0ZGVwZW5kcyBvbiBSRUxBWVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTYwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZzo2MTpjb25maWcgQVRIMTFLX0NGUlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZy02Mi1cXHRib29sIFxcXCJhdGgxMWsgY2hhbm5lbCBmcmVxdWVuY3kgcmVzcG9uc2Ugc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWc6NjM6XFx0ZGVwZW5kcyBvbiBBVEgxMUtfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZy02NC1cXHRkZXBlbmRzIG9uIFJFTEFZXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL01ha2VmaWxlLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9NYWtlZmlsZToyOm9iai0kKENPTkZJR19BVEgxMUspICs9IGF0aDExay5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9NYWtlZmlsZS0zLWF0aDExay15ICs9IGNvcmUubyBcXFxcXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL01ha2VmaWxlLTIzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvTWFrZWZpbGU6MjQ6YXRoMTFrLSQoQ09ORklHX0FUSDExS19ERUJVR0ZTKSArPSBkZWJ1Z2ZzLm8gZGVidWdmc19odHRfc3RhdHMubyBkZWJ1Z2ZzX3N0YS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9NYWtlZmlsZS0yNS1hdGgxMWstJChDT05GSUdfTkw4MDIxMV9URVNUTU9ERSkgKz0gdGVzdG1vZGUub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvTWFrZWZpbGU6MjY6YXRoMTFrLSQoQ09ORklHX0FUSDExS19UUkFDSU5HKSArPSB0cmFjZS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9NYWtlZmlsZS0yNy1hdGgxMWstJChDT05GSUdfVEhFUk1BTCkgKz0gdGhlcm1hbC5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9NYWtlZmlsZToyODphdGgxMWstJChDT05GSUdfQVRIMTFLX1NQRUNUUkFMKSArPSBzcGVjdHJhbC5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9NYWtlZmlsZS0yOS1hdGgxMWstJChDT05GSUdfUE0pICs9IHdvdy5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9NYWtlZmlsZT0zMD1hdGgxMWstJChDT05GSUdfREVWX0NPUkVEVU1QKSArPSBjb3JlZHVtcC5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9NYWtlZmlsZTozMTphdGgxMWstJChDT05GSUdfQVRIMTFLX0NGUikgKz0gY2ZyLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL01ha2VmaWxlLTMyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvTWFrZWZpbGU6MzM6b2JqLSQoQ09ORklHX0FUSDExS19BSEIpICs9IGF0aDExa19haGIub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvTWFrZWZpbGUtMzQtYXRoMTFrX2FoYi15ICs9IGFoYi5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9NYWtlZmlsZS0zNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL01ha2VmaWxlOjM2Om9iai0kKENPTkZJR19BVEgxMUtfUENJKSArPSBhdGgxMWtfcGNpLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL01ha2VmaWxlLTM3LWF0aDExa19wY2kteSArPSBtaGkubyBwY2kub1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYz0yND1zdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBhdGgxMWtfYWhiX29mX21hdGNoW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTI4LVxcdHsgLmNvbXBhdGlibGUgPSBcXFwicWNvbSxpcHE4MDc0LXdpZmlcXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6Mjk6XFx0ICAuZGF0YSA9ICh2b2lkICopQVRIMTFLX0hXX0lQUTgwNzQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0zMC1cXHR9LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMzEtXFx0eyAuY29tcGF0aWJsZSA9IFxcXCJxY29tLGlwcTYwMTgtd2lmaVxcXCIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzozMjpcXHQgIC5kYXRhID0gKHZvaWQgKilBVEgxMUtfSFdfSVBRNjAxOF9IVzEwLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMzMtXFx0fSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTM0LVxcdHsgLmNvbXBhdGlibGUgPSBcXFwicWNvbSx3Y242NzUwLXdpZmlcXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6MzU6XFx0ICAuZGF0YSA9ICh2b2lkICopQVRIMTFLX0hXX1dDTjY3NTBfSFcxMCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTM2LVxcdH0sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0zNy1cXHR7IC5jb21wYXRpYmxlID0gXFxcInFjb20saXBxNTAxOC13aWZpXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjM4OlxcdCAgLmRhdGEgPSAodm9pZCAqKUFUSDExS19IV19JUFE1MDE4X0hXMTAsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0zOS1cXHR9LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYz00Mz1NT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBhdGgxMWtfYWhiX29mX21hdGNoKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTQ0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6NDU6I2RlZmluZSBBVEgxMUtfSVJRX0NFMF9PRkZTRVQgNFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtNDYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo0NzpzdGF0aWMgY29uc3QgY2hhciAqaXJxX25hbWVbQVRIMTFLX0lSUV9OVU1fTUFYXSA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTQ4LVxcdFxcXCJtaXNjLXB1bHNlMVxcXCIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jPTE1MT1hdGgxMWtfYWhiX2dldF93aW5kb3dfc3RhcnRfd2NuNjc1MChzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiLCB1MzIgb2Zmc2V0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0xNTUtXFx0LyogSWYgb2Zmc2V0IGxpZXMgd2l0aGluIERQIHJlZ2lzdGVyIHJhbmdlLCB1c2UgMXN0IHdpbmRvdyAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6MTU2OlxcdGlmICgob2Zmc2V0IF4gSEFMX1NFUV9XQ1NTX1VNQUNfT0ZGU0VUKSBcXHUwMDNjIEFUSDExS19QQ0lfV0lORE9XX1JBTkdFX01BU0spXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzoxNTc6XFx0XFx0d2luZG93X3N0YXJ0ID0gQVRIMTFLX1BDSV9XSU5ET1dfU1RBUlQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0xNTgtXFx0LyogSWYgb2Zmc2V0IGxpZXMgd2l0aGluIENFIHJlZ2lzdGVyIHJhbmdlLCB1c2UgMm5kIHdpbmRvdyAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMTU5LVxcdGVsc2UgaWYgKChvZmZzZXQgXiBIQUxfU0VRX1dDU1NfVU1BQ19DRTBfU1JDX1JFRyhhYikpIFxcdTAwM2NcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjE2MDpcXHRcXHQgQVRIMTFLX1BDSV9XSU5ET1dfUkFOR0VfTUFTSylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjE2MTpcXHRcXHR3aW5kb3dfc3RhcnQgPSAyICogQVRIMTFLX1BDSV9XSU5ET1dfU1RBUlQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0xNjItXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jPTE2Nz1hdGgxMWtfYWhiX3dpbmRvd193cml0ZTMyX3djbjY3NTAoc3RydWN0IGF0aDExa19iYXNlICphYiwgdTMyIG9mZnNldCwgdTMyIHZhbHVlKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0xNzQtXFx0aW93cml0ZTMyKHZhbHVlLCBhYi1cXHUwMDNlbWVtICsgd2luZG93X3N0YXJ0ICtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjE3NTpcXHRcXHQgIChvZmZzZXQgXFx1MDAyNiBBVEgxMUtfUENJX1dJTkRPV19SQU5HRV9NQVNLKSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0xNzYtfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYz0xNzg9c3RhdGljIHUzMiBhdGgxMWtfYWhiX3dpbmRvd19yZWFkMzJfd2NuNjc1MChzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiLCB1MzIgb2Zmc2V0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0xODYtXFx0dmFsID0gaW9yZWFkMzIoYWItXFx1MDAzZW1lbSArIHdpbmRvd19zdGFydCArXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzoxODc6XFx0XFx0ICAgICAgIChvZmZzZXQgXFx1MDAyNiBBVEgxMUtfUENJX1dJTkRPV19SQU5HRV9NQVNLKSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0xODgtXFx0cmV0dXJuIHZhbDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM9MjMxPXN0YXRpYyB2b2lkIF9fYXRoMTFrX2FoYl9leHRfaXJxX2Rpc2FibGUoc3RydWN0IGF0aDExa19iYXNlICphYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMjM0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6MjM1OlxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBBVEgxMUtfRVhUX0lSUV9HUlBfTlVNX01BWDsgaSsrKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0yMzYtXFx0XFx0c3RydWN0IGF0aDExa19leHRfaXJxX2dycCAqaXJxX2dycCA9IFxcdTAwMjZhYi1cXHUwMDNlZXh0X2lycV9ncnBbaV07XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jPTI3Mj1zdGF0aWMgdm9pZCBhdGgxMWtfYWhiX2NlX2lycV9lbmFibGUoc3RydWN0IGF0aDExa19iYXNlICphYiwgdTE2IGNlX2lkKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0yNzctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzoyNzg6XFx0aWUxX3JlZ19hZGRyID0gY2VfaWVfYWRkci1cXHUwMDNlaWUxX3JlZ19hZGRyICsgQVRIMTFLX0NFX09GRlNFVChhYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzoyNzk6XFx0aWUyX3JlZ19hZGRyID0gY2VfaWVfYWRkci1cXHUwMDNlaWUyX3JlZ19hZGRyICsgQVRIMTFLX0NFX09GRlNFVChhYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzoyODA6XFx0aWUzX3JlZ19hZGRyID0gY2VfaWVfYWRkci1cXHUwMDNlaWUzX3JlZ19hZGRyICsgQVRIMTFLX0NFX09GRlNFVChhYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0yODEtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jPTI5Mz1zdGF0aWMgdm9pZCBhdGgxMWtfYWhiX2NlX2lycV9kaXNhYmxlKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIsIHUxNiBjZV9pZClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMjk4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6Mjk5OlxcdGllMV9yZWdfYWRkciA9IGNlX2llX2FkZHItXFx1MDAzZWllMV9yZWdfYWRkciArIEFUSDExS19DRV9PRkZTRVQoYWIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6MzAwOlxcdGllMl9yZWdfYWRkciA9IGNlX2llX2FkZHItXFx1MDAzZWllMl9yZWdfYWRkciArIEFUSDExS19DRV9PRkZTRVQoYWIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6MzAxOlxcdGllM19yZWdfYWRkciA9IGNlX2llX2FkZHItXFx1MDAzZWllM19yZWdfYWRkciArIEFUSDExS19DRV9PRkZTRVQoYWIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMzAyLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYz0zMTQ9c3RhdGljIHZvaWQgYXRoMTFrX2FoYl9zeW5jX2NlX2lycXMoc3RydWN0IGF0aDExa19iYXNlICphYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMzIyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6MzIzOlxcdFxcdGlycV9pZHggPSBBVEgxMUtfSVJRX0NFMF9PRkZTRVQgKyBpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMzI0LVxcdFxcdHN5bmNocm9uaXplX2lycShhYi1cXHUwMDNlaXJxX251bVtpcnFfaWR4XSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jPTMyOD1zdGF0aWMgdm9pZCBhdGgxMWtfYWhiX3N5bmNfZXh0X2lycXMoc3RydWN0IGF0aDExa19iYXNlICphYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMzMyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6MzMzOlxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBBVEgxMUtfRVhUX0lSUV9HUlBfTlVNX01BWDsgaSsrKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0zMzQtXFx0XFx0c3RydWN0IGF0aDExa19leHRfaXJxX2dycCAqaXJxX2dycCA9IFxcdTAwMjZhYi1cXHUwMDNlZXh0X2lycV9ncnBbaV07XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jPTM3Mz1zdGF0aWMgdm9pZCBhdGgxMWtfYWhiX2V4dF9pcnFfZW5hYmxlKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTM3Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjM3NzpcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgQVRIMTFLX0VYVF9JUlFfR1JQX05VTV9NQVg7IGkrKykge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMzc4LVxcdFxcdHN0cnVjdCBhdGgxMWtfZXh0X2lycV9ncnAgKmlycV9ncnAgPSBcXHUwMDI2YWItXFx1MDAzZWV4dF9pcnFfZ3JwW2ldO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYz0zOTQ9c3RhdGljIHZvaWQgYXRoMTFrX2FoYl9zdG9wKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0zOTUte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6Mzk2OlxcdGlmICghdGVzdF9iaXQoQVRIMTFLX0ZMQUdfQ1JBU0hfRkxVU0gsIFxcdTAwMjZhYi1cXHUwMDNlZGV2X2ZsYWdzKSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTM5Ny1cXHRcXHRhdGgxMWtfYWhiX2NlX2lycXNfZGlzYWJsZShhYik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jPTQ0Nj1zdGF0aWMgdm9pZCBhdGgxMWtfYWhiX2ZyZWVfZXh0X2lycShzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy00NDktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo0NTA6XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEFUSDExS19FWFRfSVJRX0dSUF9OVU1fTUFYOyBpKyspXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy00NTEtXFx0XFx0YXRoMTFrX2FoYl9mcmVlX2V4dF9pcnFfZ3JwKGFiLCBcXHUwMDI2YWItXFx1MDAzZWV4dF9pcnFfZ3JwW2ldKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM9NDU0PXN0YXRpYyB2b2lkIGF0aDExa19haGJfZnJlZV9jZV9pcnFzKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIsIGludCBtYXhfaWR4KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy00NjAtXFx0XFx0XFx0Y29udGludWU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo0NjE6XFx0XFx0aXJxX2lkeCA9IEFUSDExS19JUlFfQ0UwX09GRlNFVCArIGk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy00NjItXFx0XFx0ZnJlZV9pcnEoYWItXFx1MDAzZWlycV9udW1baXJxX2lkeF0sIFxcdTAwMjZhYi1cXHUwMDNlY2UuY2VfcGlwZVtpXSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jPTUzMj1zdGF0aWMgaW50IGF0aDExa19haGJfY29uZmlnX2V4dF9pcnEoc3RydWN0IGF0aDExa19iYXNlICphYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtNTM5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6NTQwOlxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBBVEgxMUtfRVhUX0lSUV9HUlBfTlVNX01BWDsgaSsrKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy01NDEtXFx0XFx0dTMyIG51bV9pcnEgPSAwO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy01NTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo1NTg6XFx0XFx0Zm9yIChqID0gMDsgaiBcXHUwMDNjIEFUSDExS19FWFRfSVJRX05VTV9NQVg7IGorKykge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtNTU5LVxcdFxcdFxcdGlmIChhYi1cXHUwMDNlaHdfcGFyYW1zLnJpbmdfbWFzay1cXHUwMDNldHhbaV0gXFx1MDAyNiBCSVQoaikpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM9NjMzPXN0YXRpYyBpbnQgYXRoMTFrX2FoYl9jb25maWdfaXJxKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTY0Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjY0ODpcXHRcXHRpcnFfaWR4ID0gQVRIMTFLX0lSUV9DRTBfT0ZGU0VUICsgaTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTY0OS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM9NzE4PXN0YXRpYyBpbnQgYXRoMTFrX2FoYl9oaWZfc3VzcGVuZChzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy03MjctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo3Mjg6XFx0d2FrZV9pcnEgPSBhYi1cXHUwMDNlaXJxX251bVtBVEgxMUtfUENJX0lSUV9DRTBfT0ZGU0VUICsgQVRIMTFLX1BDSV9DRV9XQUtFX0lSUV07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy03MjktXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTczNi1cXHR2YWx1ZSA9IHUzMl9lbmNvZGVfYml0cyhhYl9haGItXFx1MDAzZXNtcDJwX2luZm8uc2VxX25vKyssXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo3Mzc6XFx0XFx0XFx0XFx0QVRIMTFLX0FIQl9TTVAyUF9TTUVNX1NFUV9OTyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo3Mzg6XFx0dmFsdWUgfD0gdTMyX2VuY29kZV9iaXRzKEFUSDExS19BSEJfUE9XRVJfU0FWRV9FTlRFUixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjczOTpcXHRcXHRcXHRcXHQgQVRIMTFLX0FIQl9TTVAyUF9TTUVNX01TRyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy03NDAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy03NDEtXFx0cmV0ID0gcWNvbV9zbWVtX3N0YXRlX3VwZGF0ZV9iaXRzKGFiX2FoYi1cXHUwMDNlc21wMnBfaW5mby5zbWVtX3N0YXRlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6NzQyOlxcdFxcdFxcdFxcdFxcdCAgQVRIMTFLX0FIQl9TTVAyUF9TTUVNX1ZBTFVFX01BU0ssIHZhbHVlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTc0My1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTc0Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjc0ODpcXHRhdGgxMWtfZGJnKGFiLCBBVEgxMUtfREJHX0FIQiwgXFxcImRldmljZSBzdXNwZW5kZWRcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtNzQ5LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYz03NTM9c3RhdGljIGludCBhdGgxMWtfYWhiX2hpZl9yZXN1bWUoc3RydWN0IGF0aDExa19iYXNlICphYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtNzYyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6NzYzOlxcdHdha2VfaXJxID0gYWItXFx1MDAzZWlycV9udW1bQVRIMTFLX1BDSV9JUlFfQ0UwX09GRlNFVCArIEFUSDExS19QQ0lfQ0VfV0FLRV9JUlFdO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtNzY0LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy03NzMtXFx0dmFsdWUgPSB1MzJfZW5jb2RlX2JpdHMoYWJfYWhiLVxcdTAwM2VzbXAycF9pbmZvLnNlcV9ubysrLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6Nzc0OlxcdFxcdFxcdFxcdEFUSDExS19BSEJfU01QMlBfU01FTV9TRVFfTk8pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6Nzc1OlxcdHZhbHVlIHw9IHUzMl9lbmNvZGVfYml0cyhBVEgxMUtfQUhCX1BPV0VSX1NBVkVfRVhJVCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjc3NjpcXHRcXHRcXHRcXHQgQVRIMTFLX0FIQl9TTVAyUF9TTUVNX01TRyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy03NzctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy03NzgtXFx0cmV0ID0gcWNvbV9zbWVtX3N0YXRlX3VwZGF0ZV9iaXRzKGFiX2FoYi1cXHUwMDNlc21wMnBfaW5mby5zbWVtX3N0YXRlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6Nzc5OlxcdFxcdFxcdFxcdFxcdCAgQVRIMTFLX0FIQl9TTVAyUF9TTUVNX1ZBTFVFX01BU0ssIHZhbHVlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTc4MC1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTc5MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjc5MTpcXHRhdGgxMWtfZGJnKGFiLCBBVEgxMUtfREJHX0FIQiwgXFxcImRldmljZSByZXN1bWVkXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTc5Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM9ODQ4PXN0YXRpYyBpbnQgYXRoMTFrX2FoYl9zZXR1cF9tc2lfcmVzb3VyY2VzKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTg5Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjg5MzpcXHRzZXRfYml0KEFUSDExS19GTEFHX01VTFRJX01TSV9WRUNUT1JTLCBcXHUwMDI2YWItXFx1MDAzZWRldl9mbGFncyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy04OTQtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jPTExMzk9c3RhdGljIGludCBhdGgxMWtfYWhiX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTExNDktXFx0c3dpdGNoIChod19yZXYpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjExNTA6XFx0Y2FzZSBBVEgxMUtfSFdfSVBRODA3NDpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjExNTE6XFx0Y2FzZSBBVEgxMUtfSFdfSVBRNjAxOF9IVzEwOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6MTE1MjpcXHRjYXNlIEFUSDExS19IV19JUFE1MDE4X0hXMTA6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0xMTUzLVxcdFxcdGhpZl9vcHMgPSBcXHUwMDI2YXRoMTFrX2FoYl9oaWZfb3BzX2lwcTgwNzQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTExNTUtXFx0XFx0YnJlYWs7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzoxMTU2OlxcdGNhc2UgQVRIMTFLX0hXX1dDTjY3NTBfSFcxMDpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTExNTctXFx0XFx0aGlmX29wcyA9IFxcdTAwMjZhdGgxMWtfYWhiX2hpZl9vcHNfd2NuNjc1MDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMTE3MS1cXHRhYiA9IGF0aDExa19jb3JlX2FsbG9jKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIHNpemVvZihzdHJ1Y3QgYXRoMTFrX2FoYiksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzoxMTcyOlxcdFxcdFxcdCAgICAgICBBVEgxMUtfQlVTX0FIQik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0xMTczLVxcdGlmICghYWIpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMTE4MC1cXHRhYi1cXHUwMDNlaHdfcmV2ID0gaHdfcmV2O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6MTE4MTpcXHRhYi1cXHUwMDNlZndfbW9kZSA9IEFUSDExS19GSVJNV0FSRV9NT0RFX05PUk1BTDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTExODItXFx0cGxhdGZvcm1fc2V0X2RydmRhdGEocGRldiwgYWIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYz0xMjY0PXN0YXRpYyB2b2lkIGF0aDExa19haGJfcmVtb3ZlX3ByZXBhcmUoc3RydWN0IGF0aDExa19iYXNlICphYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMTI2Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjEyNjg6XFx0aWYgKHRlc3RfYml0KEFUSDExS19GTEFHX1JFQ09WRVJZLCBcXHUwMDI2YWItXFx1MDAzZWRldl9mbGFncykpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTEyNjktXFx0XFx0bGVmdCA9IHdhaXRfZm9yX2NvbXBsZXRpb25fdGltZW91dChcXHUwMDI2YWItXFx1MDAzZWRyaXZlcl9yZWNvdmVyeSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjEyNzA6XFx0XFx0XFx0XFx0XFx0XFx0ICAgQVRIMTFLX0FIQl9SRUNPVkVSWV9USU1FT1VUKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTEyNzEtXFx0XFx0aWYgKCFsZWZ0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0xMjc0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6MTI3NTpcXHRzZXRfYml0KEFUSDExS19GTEFHX1VOUkVHSVNURVJJTkcsIFxcdTAwMjZhYi1cXHUwMDNlZGV2X2ZsYWdzKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTEyNzYtXFx0Y2FuY2VsX3dvcmtfc3luYyhcXHUwMDI2YWItXFx1MDAzZXJlc3RhcnRfd29yayk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jPTEyOTU9c3RhdGljIHZvaWQgYXRoMTFrX2FoYl9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMTI5OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjEyOTk6XFx0aWYgKHRlc3RfYml0KEFUSDExS19GTEFHX1FNSV9GQUlMLCBcXHUwMDI2YWItXFx1MDAzZWRldl9mbGFncykpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTEzMDAtXFx0XFx0YXRoMTFrX2FoYl9wb3dlcl9kb3duKGFiLCBmYWxzZSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jPTEzMTQ9c3RhdGljIHZvaWQgYXRoMTFrX2FoYl9zaHV0ZG93bihzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0xMzIzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6MTMyNDpcXHRpZiAoISh0ZXN0X2JpdChBVEgxMUtfRkxBR19SRUdJU1RFUkVELCBcXHUwMDI2YWItXFx1MDAzZWRldl9mbGFncykpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMTMyNS1cXHRcXHRnb3RvIGZyZWVfcmVzb3VyY2VzO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuaC01LSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmg6NjojaWZuZGVmIEFUSDExS19BSEJfSFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmg6NzojZGVmaW5lIEFUSDExS19BSEJfSFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmgtOC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmgtMTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuaDoxMTojZGVmaW5lIEFUSDExS19BSEJfUkVDT1ZFUllfVElNRU9VVCAoMyAqIEhaKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmgtMTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuaDoxMzojZGVmaW5lIEFUSDExS19BSEJfU01QMlBfU01FTV9NU0dcXHRcXHRHRU5NQVNLKDE1LCAwKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmg6MTQ6I2RlZmluZSBBVEgxMUtfQUhCX1NNUDJQX1NNRU1fU0VRX05PXFx0XFx0R0VOTUFTSygzMSwgMTYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuaDoxNTojZGVmaW5lIEFUSDExS19BSEJfU01QMlBfU01FTV9WQUxVRV9NQVNLXFx0MHhGRkZGRkZGRlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmgtMTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuaD0xNz1lbnVtIGF0aDExa19haGJfc21wMnBfbXNnX2lkIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5oOjE4OlxcdEFUSDExS19BSEJfUE9XRVJfU0FWRV9FTlRFUiA9IDEsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuaDoxOTpcXHRBVEgxMUtfQUhCX1BPV0VSX1NBVkVfRVhJVCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5oLTIwLX07XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NlLmM9MzIxPXN0YXRpYyBpbnQgYXRoMTFrX2NlX3J4X3Bvc3RfcGlwZShzdHJ1Y3QgYXRoMTFrX2NlX3BpcGUgKnBpcGUpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NlLmMtMzUwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2UuYzozNTE6XFx0XFx0QVRIMTFLX1NLQl9SWENCKHNrYiktXFx1MDAzZXBhZGRyID0gcGFkZHI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZS5jLTM1Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2UuYy0zNTUtXFx0XFx0aWYgKHJldCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2UuYzozNTY6XFx0XFx0XFx0YXRoMTFrX2RiZyhhYiwgQVRIMTFLX0RCR19DRSwgXFxcImZhaWxlZCB0byBlbnF1ZXVlIHJ4IGJ1ZjogJWRcXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZS5jLTM1Ny1cXHRcXHRcXHRcXHQgICByZXQpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZS5jPTQxNz1zdGF0aWMgdm9pZCBhdGgxMWtfY2VfcmVjdl9wcm9jZXNzX2NiKHN0cnVjdCBhdGgxMWtfY2VfcGlwZSAqcGlwZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2UuYy00MjctXFx0XFx0bWF4X25ieXRlcyA9IHNrYi1cXHUwMDNlbGVuICsgc2tiX3RhaWxyb29tKHNrYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZS5jOjQyODpcXHRcXHRkbWFfdW5tYXBfc2luZ2xlKGFiLVxcdTAwM2VkZXYsIEFUSDExS19TS0JfUlhDQihza2IpLVxcdTAwM2VwYWRkcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NlLmMtNDI5LVxcdFxcdFxcdFxcdCBtYXhfbmJ5dGVzLCBETUFfRlJPTV9ERVZJQ0UpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZS5jLTQ0Mi1cXHR3aGlsZSAoKHNrYiA9IF9fc2tiX2RlcXVldWUoXFx1MDAyNmxpc3QpKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2UuYzo0NDM6XFx0XFx0YXRoMTFrX2RiZyhhYiwgQVRIMTFLX0RCR19DRSwgXFxcInJ4IGNlIHBpcGUgJWQgbGVuICVkXFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2UuYy00NDQtXFx0XFx0XFx0ICAgcGlwZS1cXHUwMDNlcGlwZV9udW0sIHNrYi1cXHUwMDNlbGVuKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2UuYy00NTItXFx0XFx0bW9kX3RpbWVyKFxcdTAwMjZhYi1cXHUwMDNlcnhfcmVwbGVuaXNoX3JldHJ5LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2UuYzo0NTM6XFx0XFx0XFx0ICBqaWZmaWVzICsgQVRIMTFLX0NFX1JYX1BPU1RfUkVUUllfSklGRklFUyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZS5jLTQ1NC1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NlLmM9NDk4PXN0YXRpYyB2b2lkIGF0aDExa19jZV90eF9wcm9jZXNzX2NiKHN0cnVjdCBhdGgxMWtfY2VfcGlwZSAqcGlwZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2UuYy01MDgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZS5jOjUwOTpcXHRcXHRkbWFfdW5tYXBfc2luZ2xlKGFiLVxcdTAwM2VkZXYsIEFUSDExS19TS0JfQ0Ioc2tiKS1cXHUwMDNlcGFkZHIsIHNrYi1cXHUwMDNlbGVuLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2UuYy01MTAtXFx0XFx0XFx0XFx0IERNQV9UT19ERVZJQ0UpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZS5jLTUyMC1cXHR3aGlsZSAoKHNrYiA9IF9fc2tiX2RlcXVldWUoXFx1MDAyNmxpc3QpKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2UuYzo1MjE6XFx0XFx0YXRoMTFrX2RiZyhhYiwgQVRIMTFLX0RCR19DRSwgXFxcInR4IGNlIHBpcGUgJWQgbGVuICVkXFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2UuYy01MjItXFx0XFx0XFx0ICAgcGlwZS1cXHUwMDNlcGlwZV9udW0sIHNrYi1cXHUwMDNlbGVuKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2UuYz01NTM9c3RhdGljIGludCBhdGgxMWtfY2VfaW5pdF9yaW5nKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NlLmMtNjA0LVxcdFxcdGF0aDExa19kcF9zaGFkb3dfaW5pdF90aW1lcihhYiwgXFx1MDAyNmFiLVxcdTAwM2VjZS5ocF90aW1lcltjZV9pZF0sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZS5jOjYwNTpcXHRcXHRcXHRcXHRcXHQgICAgQVRIMTFLX1NIQURPV19DVFJMX1RJTUVSX0lOVEVSVkFMLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2UuYy02MDYtXFx0XFx0XFx0XFx0XFx0ICAgIGNlX3JpbmctXFx1MDAzZWhhbF9yaW5nX2lkKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2UuYz03MDk9aW50IGF0aDExa19jZV9zZW5kKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIsIHN0cnVjdCBza19idWZmICpza2IsIHU4IHBpcGVfaWQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NlLmMtNzM4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2UuYzo3Mzk6XFx0XFx0aWYgKG51bV91c2VkIFxcdTAwM2UgQVRIMTFLX0NFX1VTQUdFX1RIUkVTSE9MRClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NlLmMtNzQwLVxcdFxcdFxcdGF0aDExa19jZV9wb2xsX3NlbmRfY29tcGxldGVkKGFiLCBwaXBlLVxcdTAwM2VwaXBlX251bSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NlLmMtNzQyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2UuYzo3NDM6XFx0aWYgKHRlc3RfYml0KEFUSDExS19GTEFHX0NSQVNIX0ZMVVNILCBcXHUwMDI2YWItXFx1MDAzZWRldl9mbGFncykpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZS5jLTc0NC1cXHRcXHRyZXR1cm4gLUVTSFVURE9XTjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2UuYy03NzItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZS5jOjc3MzpcXHRhdGgxMWtfaGFsX2NlX3NyY19zZXRfZGVzYyhkZXNjLCBBVEgxMUtfU0tCX0NCKHNrYiktXFx1MDAzZXBhZGRyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2UuYy03NzQtXFx0XFx0XFx0XFx0ICAgc2tiLVxcdTAwM2VsZW4sIHRyYW5zZmVyX2lkLCBieXRlX3N3YXBfZGF0YSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NlLmM9Nzk5PXN0YXRpYyB2b2lkIGF0aDExa19jZV9yeF9waXBlX2NsZWFudXAoc3RydWN0IGF0aDExa19jZV9waXBlICpwaXBlKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZS5jLTgxNC1cXHRcXHRyaW5nLVxcdTAwM2Vza2JbaV0gPSBOVUxMO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2UuYzo4MTU6XFx0XFx0ZG1hX3VubWFwX3NpbmdsZShhYi1cXHUwMDNlZGV2LCBBVEgxMUtfU0tCX1JYQ0Ioc2tiKS1cXHUwMDNlcGFkZHIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZS5jLTgxNi1cXHRcXHRcXHRcXHQgc2tiLVxcdTAwM2VsZW4gKyBza2JfdGFpbHJvb20oc2tiKSwgRE1BX0ZST01fREVWSUNFKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2UuYz04ODM9dm9pZCBhdGgxMWtfY2VfcnhfcG9zdF9idWYoc3RydWN0IGF0aDExa19iYXNlICphYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2UuYy04OTgtXFx0XFx0XFx0bW9kX3RpbWVyKFxcdTAwMjZhYi1cXHUwMDNlcnhfcmVwbGVuaXNoX3JldHJ5LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2UuYzo4OTk6XFx0XFx0XFx0XFx0ICBqaWZmaWVzICsgQVRIMTFLX0NFX1JYX1BPU1RfUkVUUllfSklGRklFUyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZS5jLTkwMC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2UuaC02LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2UuaDo3OiNpZm5kZWYgQVRIMTFLX0NFX0hcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NlLmg6ODojZGVmaW5lIEFUSDExS19DRV9IXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZS5oLTktXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NlLmgtMjUtLyogVGhyZXNob2xkIHRvIHBvbGwgZm9yIHR4IGNvbXBsZXRpb24gaW4gY2FzZSBvZiBJbnRlcnJ1cHQgZGlzYWJsZWQgQ0UncyAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2UuaDoyNjojZGVmaW5lIEFUSDExS19DRV9VU0FHRV9USFJFU0hPTEQgMzJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NlLmgtMjctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZS5oPTI4PXZvaWQgYXRoMTFrX2NlX2J5dGVfc3dhcCh2b2lkICptZW0sIHUzMiBsZW4pO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZS5oLTYxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2UuaDo2MjojZGVmaW5lIEFUSDExS19DRV9SWF9QT1NUX1JFVFJZX0pJRkZJRVMgNTBcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NlLmgtNjMtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jPTE5PXN0YXRpYyBpbnQgYXRoMTFrX2Nmcl9jYWxjdWxhdGVfdG9uZXNfZnJvbV9kbWFfaGRyKHN0cnVjdCBhdGgxMWtfY2ZyX2RtYV9oZHIgKmhkcilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmMtMjQtXFx0c3dpdGNoIChwcmVhbWJsZSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmM6MjU6XFx0Y2FzZSBBVEgxMUtfQ0ZSX1BSRUFNQkxFX1RZUEVfTEVHQUNZOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmMtMjYtXFx0XFx0ZmFsbHRocm91Z2g7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYzoyNzpcXHRjYXNlIEFUSDExS19DRlJfUFJFQU1CTEVfVFlQRV9WSFQ6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYy0yOC1cXHRcXHRzd2l0Y2ggKGJ3KSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jLTM5LVxcdFxcdH1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jOjQwOlxcdGNhc2UgQVRIMTFLX0NGUl9QUkVBTUJMRV9UWVBFX0hUOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmMtNDEtXFx0XFx0c3dpdGNoIChidykge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYz0xMTQ9YXRoMTFrX2Nmcl9jb3JyZWxhdGVfYW5kX3JlbGF5KHN0cnVjdCBhdGgxMWsgKmFyLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYy0xMjEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYzoxMjI6XFx0aWYgKGV2ZW50X3R5cGUgPT0gQVRIMTFLX0NPUlJFTEFURV9UWF9FVkVOVCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmMtMTIzLVxcdFxcdGlmIChsdXQtXFx1MDAzZXR4X3JlY3YpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jLTEyNi1cXHRcXHRsdXQtXFx1MDAzZXR4X3JlY3YgPSB0cnVlO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmM6MTI3OlxcdH0gZWxzZSBpZiAoZXZlbnRfdHlwZSA9PSBBVEgxMUtfQ09SUkVMQVRFX0RCUl9FVkVOVCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmMtMTI4LVxcdFxcdGNmci1cXHUwMDNlZGJyX2V2dF9jbnQrKztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmMtMTQwLVxcdFxcdFxcdFxcdGRpZmYgPSBsdXQtXFx1MDAzZWRicl90c3RhbXAgLSBsdXQtXFx1MDAzZXR4cnhfdHN0YW1wO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmM6MTQxOlxcdFxcdFxcdFxcdGF0aDExa19kYmcoYXItXFx1MDAzZWFiLCBBVEgxMUtfREJHX0NGUixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jLTE0Mi1cXHRcXHRcXHRcXHRcXHQgICBcXFwidHhyeCBldmVudCAtXFx1MDAzZSBkYnIgZXZlbnQgZGVsYXkgPSAldSBtc1xcXCIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jLTE0NS1cXHRcXHRcXHRcXHRkaWZmID0gbHV0LVxcdTAwM2V0eHJ4X3RzdGFtcCAtIGx1dC1cXHUwMDNlZGJyX3RzdGFtcDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jOjE0NjpcXHRcXHRcXHRcXHRhdGgxMWtfZGJnKGFyLVxcdTAwM2VhYiwgQVRIMTFLX0RCR19DRlIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYy0xNDctXFx0XFx0XFx0XFx0XFx0ICAgXFxcImRiciBldmVudCAtXFx1MDAzZSB0eHJ4IGV2ZW50IGRlbGF5ID0gJXUgbXNcXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYy0xNTMtXFx0XFx0XFx0Y2ZyLVxcdTAwM2VyZWxlYXNlX2NudCsrO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmM6MTU0OlxcdFxcdFxcdHN0YXR1cyA9IEFUSDExS19DT1JSRUxBVEVfU1RBVFVTX1JFTEVBU0U7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYy0xNTUtXFx0XFx0fSBlbHNlIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmMtMTYwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmM6MTYxOlxcdFxcdFxcdGF0aDExa19kYmcoYXItXFx1MDAzZWFiLCBBVEgxMUtfREJHX0NGUixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jLTE2Mi1cXHRcXHRcXHRcXHQgICBcXFwiUmVjZWl2ZWQgZGJyIGV2ZW50IHR3aWNlIGZvciB0aGUgc2FtZSBsdXQgZW50cnlcXFwiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmMtMTY2LVxcdFxcdFxcdGNmci1cXHUwMDNlY2ZyX2RtYV9hYm9ydHMrKztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jOjE2NzpcXHRcXHRcXHRzdGF0dXMgPSBBVEgxMUtfQ09SUkVMQVRFX1NUQVRVU19IT0xEO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmMtMTY4LVxcdFxcdH1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jLTE2OS1cXHR9IGVsc2Uge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmM6MTcwOlxcdFxcdHN0YXR1cyA9IEFUSDExS19DT1JSRUxBVEVfU1RBVFVTX0hPTEQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYy0xNzEtXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYz0xNzY9c3RhdGljIGludCBhdGgxMWtfY2ZyX3Byb2Nlc3NfZGF0YShzdHJ1Y3QgYXRoMTFrICphcixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmMtMTc4LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jOjE3OTpcXHR1MzIgZW5kX21hZ2ljID0gQVRIMTFLX0NGUl9FTkRfTUFHSUM7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYy0xODAtXFx0c3RydWN0IGF0aDExa19jc2lfY2ZyX2hlYWRlciAqaGVhZGVyO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYy0yMTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYzoyMTk6XFx0YXRoMTFrX2RiZ19kdW1wKGFiLCBBVEgxMUtfREJHX0NGUl9EVU1QLCBcXFwiZGF0YV9mcm9tX2J1Zl9yZWw6XFxcIiwgXFxcIlxcXCIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYy0yMjAtXFx0XFx0XFx0ZGF0YSwgbGVuZ3RoKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmMtMjM1LVxcdHN0YXR1cyA9IGF0aDExa19jZnJfY29ycmVsYXRlX2FuZF9yZWxheShhciwgbHV0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmM6MjM2OlxcdFxcdFxcdFxcdFxcdFxcdEFUSDExS19DT1JSRUxBVEVfREJSX0VWRU5UKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jOjIzNzpcXHRpZiAoc3RhdHVzID09IEFUSDExS19DT1JSRUxBVEVfU1RBVFVTX1JFTEVBU0UpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jOjIzODpcXHRcXHRhdGgxMWtfZGJnKGFiLCBBVEgxMUtfREJHX0NGUixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jLTIzOS1cXHRcXHRcXHQgICBcXFwicmVsZWFzaW5nIENGUiBkYXRhIHRvIHVzZXIgc3BhY2VcXFwiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmMtMjQ0LVxcdFxcdGF0aDExa19jZnJfcmVsZWFzZV9sdXRfZW50cnkobHV0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jOjI0NTpcXHR9IGVsc2UgaWYgKHN0YXR1cyA9PSBBVEgxMUtfQ09SUkVMQVRFX1NUQVRVU19IT0xEKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYzoyNDY6XFx0XFx0YXRoMTFrX2RiZyhhYiwgQVRIMTFLX0RCR19DRlIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYy0yNDctXFx0XFx0XFx0ICAgXFxcInR4IGV2ZW50IGlzIG5vdCB5ZXQgcmVjZWl2ZWQgaG9sZGluZyB0aGUgYnVmXFxcIik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jPTI1NT1zdGF0aWMgdm9pZCBhdGgxMWtfY2ZyX2ZpbGxfaGRyX2luZm8oc3RydWN0IGF0aDExayAqYXIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jLTI2MS1cXHRjZnIgPSBcXHUwMDI2YXItXFx1MDAzZWNmcjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jOjI2MjpcXHRoZWFkZXItXFx1MDAzZWNmcl9tZXRhZGF0YV92ZXJzaW9uID0gQVRIMTFLX0NGUl9NRVRBX1ZFUlNJT05fNDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jOjI2MzpcXHRoZWFkZXItXFx1MDAzZWNmcl9kYXRhX3ZlcnNpb24gPSBBVEgxMUtfQ0ZSX0RBVEFfVkVSU0lPTl8xO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmMtMjY0LVxcdGhlYWRlci1cXHUwMDNlY2ZyX21ldGFkYXRhX2xlbiA9IHNpemVvZihzdHJ1Y3QgY2ZyX21ldGFkYXRhKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmMtMjg1LVxcdGhlYWRlci1cXHUwMDNlbWV0YV9kYXRhLmNhcHR1cmVfbW9kZSA9IHBhcmFtcy1cXHUwMDNlYmFuZHdpZHRoID9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jOjI4NjpcXHRcXHRBVEgxMUtfQ0ZSX0NBUFRVUkVfRFVQX0xFR0FDWV9BQ0sgOiBBVEgxMUtfQ0ZSX0NBUFRVUkVfTEVHQUNZX0FDSztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jLTI4Ny1cXHRoZWFkZXItXFx1MDAzZW1ldGFfZGF0YS5jYXB0dXJlX3R5cGUgPSBwYXJhbXMtXFx1MDAzZWNhcHR1cmVfbWV0aG9kO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYz0zMDA9aW50IGF0aDExa19wcm9jZXNzX2Nmcl9jYXB0dXJlX2V2ZW50KHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jLTMwMy1cXHRzdHJ1Y3QgYXRoMTFrX2xvb2tfdXBfdGFibGUgKmx1dCA9IE5VTEw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYzozMDQ6XFx0dTMyIGVuZF9tYWdpYyA9IEFUSDExS19DRlJfRU5EX01BR0lDO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmMtMzA1LVxcdHN0cnVjdCBhdGgxMWtfY3NpX2Nmcl9oZWFkZXIgKmhlYWRlcjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmMtMzc4LVxcdGhlYWRlciA9IFxcdTAwMjZsdXQtXFx1MDAzZWhlYWRlcjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jOjM3OTpcXHRoZWFkZXItXFx1MDAzZXN0YXJ0X21hZ2ljX251bSA9IEFUSDExS19DRlJfU1RBUlRfTUFHSUM7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYy0zODAtXFx0aGVhZGVyLVxcdTAwM2V2ZW5kb3JpZCA9IFZFTkRPUl9RQ0E7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jLTM4NS1cXHRzdGF0dXMgPSBhdGgxMWtfY2ZyX2NvcnJlbGF0ZV9hbmRfcmVsYXkoYXIsIGx1dCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jOjM4NjpcXHRcXHRcXHRcXHRcXHRcXHRBVEgxMUtfQ09SUkVMQVRFX1RYX0VWRU5UKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jOjM4NzpcXHRpZiAoc3RhdHVzID09IEFUSDExS19DT1JSRUxBVEVfU1RBVFVTX1JFTEVBU0UpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jOjM4ODpcXHRcXHRhdGgxMWtfZGJnKGFiLCBBVEgxMUtfREJHX0NGUixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jLTM4OS1cXHRcXHRcXHQgICBcXFwiUmVsZWFzaW5nIENGUiBkYXRhIHRvIHVzZXIgc3BhY2VcXFwiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmMtMzk4LVxcdFxcdFxcdFxcdFxcdCAgICAgV01JX0RJUkVDVF9CVUZfQ0ZSKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jOjM5OTpcXHR9IGVsc2UgaWYgKHN0YXR1cyA9PSBBVEgxMUtfQ09SUkVMQVRFX1NUQVRVU19IT0xEKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYzo0MDA6XFx0XFx0YXRoMTFrX2RiZyhhYiwgQVRIMTFLX0RCR19DRlIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYy00MDEtXFx0XFx0XFx0ICAgXFxcImRiciBldmVudCBpcyBub3QgeWV0IHJlY2VpdmVkIGhvbGRpbmcgYnVmXFxcXG5cXFwiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmM9NDEyPWJvb2wgYXRoMTFrX2Nmcl9wZWVyX2lzX2luX2Nmcl91bmFzc29jX3Bvb2woc3RydWN0IGF0aDExayAqYXIsIGNvbnN0IHU4ICpwZWVyX21hYylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmMtNDIxLVxcdHNwaW5fbG9ja19iaChcXHUwMDI2Y2ZyLVxcdTAwM2Vsb2NrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jOjQyMjpcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgQVRIMTFLX01BWF9DRlJfRU5BQkxFRF9DTElFTlRTOyBpKyspIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jLTQyMy1cXHRcXHRlbnRyeSA9IFxcdTAwMjZjZnItXFx1MDAzZXVuYXNzb2NfcG9vbFtpXTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmM9NDM4PXZvaWQgYXRoMTFrX2Nmcl91cGRhdGVfdW5hc3NvY19wb29sX2VudHJ5KHN0cnVjdCBhdGgxMWsgKmFyLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYy00NDUtXFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZjZnItXFx1MDAzZWxvY2spO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmM6NDQ2OlxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBBVEgxMUtfTUFYX0NGUl9FTkFCTEVEX0NMSUVOVFM7IGkrKykge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmMtNDQ3LVxcdFxcdGVudHJ5ID0gXFx1MDAyNmNmci1cXHUwMDNldW5hc3NvY19wb29sW2ldO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYz00Nzc9YXRoMTFrX2Nmcl9id190b19md19jZnJfYncoZW51bSBhdGgxMWtfY2ZyX2NhcHR1cmVfYncgYncpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jLTQ3OS1cXHRzd2l0Y2ggKGJ3KSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYzo0ODA6XFx0Y2FzZSBBVEgxMUtfQ0ZSX0NBUFRVUkVfQldfMjA6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYy00ODEtXFx0XFx0cmV0dXJuIFdNSV9QRUVSX0NGUl9DQVBUVVJFX0JXXzIwO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmM6NDgyOlxcdGNhc2UgQVRIMTFLX0NGUl9DQVBUVVJFX0JXXzQwOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmMtNDgzLVxcdFxcdHJldHVybiBXTUlfUEVFUl9DRlJfQ0FQVFVSRV9CV180MDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jOjQ4NDpcXHRjYXNlIEFUSDExS19DRlJfQ0FQVFVSRV9CV184MDpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jLTQ4NS1cXHRcXHRyZXR1cm4gV01JX1BFRVJfQ0ZSX0NBUFRVUkVfQldfODA7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jPTQ5Mj1hdGgxMWtfY2ZyX21ldGhvZF90b19md19jZnJfbWV0aG9kKGVudW0gYXRoMTFrX2Nmcl9jYXB0dXJlX21ldGhvZCBtZXRob2QpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jLTQ5NC1cXHRzd2l0Y2ggKG1ldGhvZCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmM6NDk1OlxcdGNhc2UgQVRIMTFLX0NGUl9DQVBUVVJFX01FVEhPRF9OVUxMX0ZSQU1FOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmMtNDk2LVxcdFxcdHJldHVybiBXTUlfQ0ZSX0NBUFRVUkVfTUVUSE9EX05VTExfRlJBTUU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYzo0OTc6XFx0Y2FzZSBBVEgxMUtfQ0ZSX0NBUFRVUkVfTUVUSE9EX05VTExfRlJBTUVfV0lUSF9QSEFTRTpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jLTQ5OC1cXHRcXHRyZXR1cm4gV01JX0NGUl9DQVBUVVJFX01FVEhPRF9OVUxMX0ZSQU1FX1dJVEhfUEhBU0U7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYzo0OTk6XFx0Y2FzZSBBVEgxMUtfQ0ZSX0NBUFRVUkVfTUVUSE9EX1BST0JFX1JFU1A6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYy01MDAtXFx0XFx0cmV0dXJuIFdNSV9DRlJfQ0FQVFVSRV9NRVRIT0RfUFJPQkVfUkVTUDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmM9NTA2PWludCBhdGgxMWtfY2ZyX3NlbmRfcGVlcl9jZnJfY2FwdHVyZV9jbWQoc3RydWN0IGF0aDExayAqYXIsXFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDE4OjA5OjQ3LjY2MDI0NDMzNVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo2MTU4MTYwMzM4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgSW1wbGljYXRpb25zIG9mIEFRTCBDaGFuZ2VzIGluIG1hYzgwMjExIGZvciA4MDIuMTFheCBTdXBwb3J0KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgbXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgaXQncyByZWxhdGVkIHRvIHRoZSBgYXRoMTFrYCBkcml2ZXIsIHdoaWNoIGhhbmRsZXMgdGhlIFF1YWxjb21tIDgwMi4xMWF4IGNoaXBzZXQuIFRoYXQncyBhIHBoeXNpY2FsIGhhcmR3YXJlIGRyaXZlciwgd29ya2luZyB3aXRoIFBDSSBvciBBSEIuIEJ1dCB0aGUgcmVhbCBtZWF0IG9mIHRoaXMgY2hhbmdlIHNlZW1zIHRvIGJlIGluIGBuZXQvbWFjODAyMTEvdHguY2AsIGBuZXQvbWFjODAyMTEvZGVidWdmcy5jYCwgYW5kIGBpbmNsdWRlL25ldC9tYWM4MDIxMS5oYC4gVGhhdCdzIHdoZXJlIEkgbmVlZCB0byBmb2N1cy5cblxuU3BlY2lmaWNhbGx5LCBJIHNlZSBjaGFuZ2VzIGluIHRoZSBhaXJ0aW1lIGZhaXJuZXNzIGNhbGN1bGF0aW9uIHdpdGhpbiBgdHguY2AuIEl0IGxvb2tzIGxpa2UgdGhlIHBhdGNoIGlzIGFkZGluZyBuZXcgbG9naWMgdG8gbGltaXQgdGhlIG51bWJlciBvZiBmcmFtZXMgYSBzdGF0aW9uIGNhbiB0cmFuc21pdCBiYXNlZCBvbiBpdHMgXCJhaXJ0aW1lIHdlaWdodC5cIiBXZSdyZSBsb29raW5nIGF0IGZ1bmN0aW9ucyBsaWtlIGBpZWVlODAyMTFfYXFsX3N0YV9saW1pdGAgYW5kIGBpZWVlODAyMTFfdHhxX2FpcnRpbWVfY2hlY2tgLiBJdCdzIGNoZWNraW5nIGlmIGEgc3RhdGlvbiBoYXMgcmVhY2hlZCBhIGxpbWl0IG9uIGl0cyBhaXJ0aW1lIHV0aWxpemF0aW9uIGJlZm9yZSBhbGxvd2luZyBtb3JlIHBhY2tldHMgdG8gYmUgcXVldWVkLiBUaGlzIGlzIGFsbCBhYm91dCBlbnN1cmluZyBmYWlyIGFjY2VzcyB0byB0aGUgbWVkaXVtLiBUaGlzIEFRTCAoYWlydGltZSBmYWlybmVzcykgc3R1ZmYgaXMgcXVpdGUgaW50ZXJlc3RpbmcuXG5cbk5vdywgaGVyZSdzIHdoZXJlIGl0IGdldHMgcG90ZW50aWFsbHkgZmFzY2luYXRpbmcuIGBtYWM4MDIxMWAgY2FuIGFjdHVhbGx5IGJlIHVzZWQgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCB0aHJvdWdoIGBtYWM4MDIxMV9od3NpbWAsIHdoaWNoIGlzIGEgc29mdHdhcmUtZW11bGF0ZWQgODAyLjExIHJhZGlvLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgYW0gdGhpbmtpbmcgYWJvdXQgaG93IHRoaXMgY2hhbmdlIG1pZ2h0IGltcGFjdCB0aGF0LiBDaGVja2luZyB0aGUgZGVwZW5kZW5jaWVzLCB5ZXAsIGBNQUM4MDIxMV9IV1NJTWAgcmVsaWVzIG9uIGJvdGggYE1BQzgwMjExYCBhbmQgYENGRzgwMjExYC4gU28gYW55IGJlaGF2aW9yIGNoYW5nZXMgaW4gdGhlIGNvcmUgYG1hYzgwMjExYCBjb2RlLCAqZXNwZWNpYWxseSogdGhlc2UgYWlydGltZSBtYW5hZ2VtZW50IGNoYW5nZXMsIHdpbGwgYWxzbyBiZSByZWZsZWN0ZWQgaW4gdGhlIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBUaGF0J3Mgc29tZXRoaW5nIHRvIGtlZXAgaW4gbWluZCBmb3IgdGVzdGluZy4gTGV0J3MgZGVsdmUgZGVlcGVyIGludG8gaG93IHRoZXNlIEFRTCBjaGFuZ2VzIGFyZSBpbXBsZW1lbnRlZCBpbiB0aGUgYG1hYzgwMjExX2h3c2ltYCBjb2RlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNDIwMywiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY2NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQxODowOTo1My44MTg0MDc4MjNaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzOTg4ODM4OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJNQUM4MDIxMV9IV1NJTVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzc1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL0tjb25maWc6MTpjb25maWcgTUFDODAyMTFfSFdTSU1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL0tjb25maWctMi1cXHR0cmlzdGF0ZSBcXFwiU2ltdWxhdGVkIHJhZGlvIHRlc3RpbmcgdG9vbCBmb3IgbWFjODAyMTFcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL01ha2VmaWxlOjE6b2JqLSQoQ09ORklHX01BQzgwMjExX0hXU0lNKVxcdCs9IG1hYzgwMjExX2h3c2ltLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL01ha2VmaWxlLTItbWFjODAyMTFfaHdzaW0tb2Jqc1xcdFxcdCs9IG1hYzgwMjExX2h3c2ltX21haW4ub1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oLTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjk6I2lmbmRlZiBfX01BQzgwMjExX0hXU0lNX0hcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MTA6I2RlZmluZSBfX01BQzgwMjExX0hXU0lNX0hcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmgtMTEtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg9MjE3PXN0cnVjdCBod3NpbV90eF9yYXRlIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaC0yMzAtICpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjMxOiAqIEBNQUM4MDIxMV9IV1NJTV9UWF9SQ19VU0VfUlRTX0NUUzogVXNlIFJUUy9DVFMgZXhjaGFuZ2UgZm9yIHRoaXMgcmF0ZS5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjMyOiAqIEBNQUM4MDIxMV9IV1NJTV9UWF9SQ19VU0VfQ1RTX1BST1RFQ1Q6IENUUy10by1zZWxmIHByb3RlY3Rpb24gaXMgcmVxdWlyZWQuXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oLTIzMy0gKlxcdFRoaXMgaXMgc2V0IGlmIHRoZSBjdXJyZW50IEJTUyByZXF1aXJlcyBFUlAgcHJvdGVjdGlvbi5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjM0OiAqIEBNQUM4MDIxMV9IV1NJTV9UWF9SQ19VU0VfU0hPUlRfUFJFQU1CTEU6IFVzZSBzaG9ydCBwcmVhbWJsZS5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjM1OiAqIEBNQUM4MDIxMV9IV1NJTV9UWF9SQ19NQ1M6IEhUIHJhdGUuXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjIzNjogKiBATUFDODAyMTFfSFdTSU1fVFhfUkNfVkhUX01DUzogVkhUIE1DUyByYXRlLCBpbiB0aGlzIGNhc2UgdGhlIGlkeCBmaWVsZCBpc1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaC0yMzctICpcXHRzcGxpdCBpbnRvIGEgaGlnaGVyIDQgYml0cyAoTnNzKSBhbmQgbG93ZXIgNCBiaXRzIChNQ1MgbnVtYmVyKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyMzg6ICogQE1BQzgwMjExX0hXU0lNX1RYX1JDX0dSRUVOX0ZJRUxEOiBJbmRpY2F0ZXMgd2hldGhlciB0aGlzIHJhdGUgc2hvdWxkIGJlIHVzZWRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmgtMjM5LSAqXFx0aW4gR3JlZW5maWVsZCBtb2RlLlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyNDA6ICogQE1BQzgwMjExX0hXU0lNX1RYX1JDXzQwX01IWl9XSURUSDogSW5kaWNhdGVzIGlmIHRoZSBDaGFubmVsIFdpZHRoIHNob3VsZCBiZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaC0yNDEtICpcXHQ0MCBNSHouXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjI0MjogKiBATUFDODAyMTFfSFdTSU1fVFhfUkNfODBfTUhaX1dJRFRIOiBJbmRpY2F0ZXMgODAgTUh6IHRyYW5zbWlzc2lvblxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyNDM6ICogQE1BQzgwMjExX0hXU0lNX1RYX1JDXzE2MF9NSFpfV0lEVEg6IEluZGljYXRlcyAxNjAgTUh6IHRyYW5zbWlzc2lvblxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaC0yNDQtICpcXHQoODArODAgaXNuJ3Qgc3VwcG9ydGVkIHlldClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjQ1OiAqIEBNQUM4MDIxMV9IV1NJTV9UWF9SQ19EVVBfREFUQTogVGhlIGZyYW1lIHNob3VsZCBiZSB0cmFuc21pdHRlZCBvbiBib3RoIG9mXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oLTI0Ni0gKlxcdHRoZSBhZGphY2VudCAyMCBNSHogY2hhbm5lbHMsIGlmIHRoZSBjdXJyZW50IGNoYW5uZWwgdHlwZSBpc1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaC0yNDctICpcXHROTDgwMjExX0NIQU5fSFQ0ME1JTlVTIG9yIE5MODAyMTFfQ0hBTl9IVDQwUExVUy5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjQ4OiAqIEBNQUM4MDIxMV9IV1NJTV9UWF9SQ19TSE9SVF9HSTogU2hvcnQgR3VhcmQgaW50ZXJ2YWwgc2hvdWxkIGJlIHVzZWQgZm9yIHRoaXNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmgtMjQ5LSAqXFx0cmF0ZS5cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaD0yNTE9ZW51bSBod3NpbV90eF9yYXRlX2ZsYWdzIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjUyOlxcdE1BQzgwMjExX0hXU0lNX1RYX1JDX1VTRV9SVFNfQ1RTXFx0XFx0PSBCSVQoMCksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjI1MzpcXHRNQUM4MDIxMV9IV1NJTV9UWF9SQ19VU0VfQ1RTX1BST1RFQ1RcXHRcXHQ9IEJJVCgxKSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjU0OlxcdE1BQzgwMjExX0hXU0lNX1RYX1JDX1VTRV9TSE9SVF9QUkVBTUJMRVxcdD0gQklUKDIpLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaC0yNTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oLTI1Ni1cXHQvKiByYXRlIGluZGV4IGlzIGFuIEhUL1ZIVCBNQ1MgaW5zdGVhZCBvZiBhbiBpbmRleCAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyNTc6XFx0TUFDODAyMTFfSFdTSU1fVFhfUkNfTUNTXFx0XFx0XFx0PSBCSVQoMyksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjI1ODpcXHRNQUM4MDIxMV9IV1NJTV9UWF9SQ19HUkVFTl9GSUVMRFxcdFxcdD0gQklUKDQpLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyNTk6XFx0TUFDODAyMTFfSFdTSU1fVFhfUkNfNDBfTUhaX1dJRFRIXFx0XFx0PSBCSVQoNSksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjI2MDpcXHRNQUM4MDIxMV9IV1NJTV9UWF9SQ19EVVBfREFUQVxcdFxcdD0gQklUKDYpLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyNjE6XFx0TUFDODAyMTFfSFdTSU1fVFhfUkNfU0hPUlRfR0lcXHRcXHQ9IEJJVCg3KSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjYyOlxcdE1BQzgwMjExX0hXU0lNX1RYX1JDX1ZIVF9NQ1NcXHRcXHRcXHQ9IEJJVCg4KSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjYzOlxcdE1BQzgwMjExX0hXU0lNX1RYX1JDXzgwX01IWl9XSURUSFxcdFxcdD0gQklUKDkpLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyNjQ6XFx0TUFDODAyMTFfSFdTSU1fVFhfUkNfMTYwX01IWl9XSURUSFxcdFxcdD0gQklUKDEwKSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmgtMjY1LX07XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg9MzI4PWVudW0gaHdzaW1fcmF0ZV9pbmZvX2F0dHJpYnV0ZXMge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oLTM0Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MzQ4OiNlbmRpZiAvKiBfX01BQzgwMjExX0hXU0lNX0ggKi9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1faS5oLTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9pLmg6MTA6I2lmbmRlZiBfX01BQzgwMjExX0hXU0lNX0lfSFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1faS5oOjExOiNkZWZpbmUgX19NQUM4MDIxMV9IV1NJTV9JX0hcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX2kuaC0xMi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1faS5oPTE2NT12b2lkIGllZWU4MDIxMV9od3NpbV93YWtlX3R4X3F1ZXVlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9pLmgtMTY3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1faS5oOjE2ODojZW5kaWYgLyogX19NQUM4MDIxMV9IV1NJTV9JX0ggKi9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTcxMj1zdGF0aWMgc3RydWN0IG1hYzgwMjExX2h3c2ltX2RhdGEgKmdldF9od3NpbV9kYXRhX3JlZl9mcm9tX2FkZHIoY29uc3QgdTggKmFkZHIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy03MTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6NzE3Oi8qIE1BQzgwMjExX0hXU0lNIG5ldGxpbmsgZmFtaWx5ICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNzE4LXN0YXRpYyBzdHJ1Y3QgZ2VubF9mYW1pbHkgaHdzaW1fZ2VubF9mYW1pbHk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz03MjQ9c3RhdGljIGNvbnN0IHN0cnVjdCBnZW5sX211bHRpY2FzdF9ncm91cCBod3NpbV9tY2dycHNbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTcyNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzo3Mjg6LyogTUFDODAyMTFfSFdTSU0gbmV0bGluayBwb2xpY3kgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy03MjktXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz04NjU9c3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IGh3c2ltX2dlbmxfcG9saWN5W0hXU0lNX0FUVFJfTUFYICsgMV0gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy05MDEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6OTAyOi8qIE1BQzgwMjExX0hXU0lNIHZpcnRpbyBxdWV1ZXMgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy05MDMtc3RhdGljIHN0cnVjdCB2aXJ0cXVldWUgKmh3c2ltX3Zxc1tIV1NJTV9OVU1fVlFTXTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTE1NzU9c3RhdGljIGlubGluZSB1MTYgdHJhbnNfdHhfcmF0ZV9mbGFnc19pZWVlMmh3c2ltKHN0cnVjdCBpZWVlODAyMTFfdHhfcmF0ZSAqcmF0ZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTE1NzktXFx0aWYgKHJhdGUtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSUVFRTgwMjExX1RYX1JDX1VTRV9SVFNfQ1RTKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjE1ODA6XFx0XFx0cmVzdWx0IHw9IE1BQzgwMjExX0hXU0lNX1RYX1JDX1VTRV9SVFNfQ1RTO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTE1ODEtXFx0aWYgKHJhdGUtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSUVFRTgwMjExX1RYX1JDX1VTRV9DVFNfUFJPVEVDVClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzoxNTgyOlxcdFxcdHJlc3VsdCB8PSBNQUM4MDIxMV9IV1NJTV9UWF9SQ19VU0VfQ1RTX1BST1RFQ1Q7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMTU4My1cXHRpZiAocmF0ZS1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJRUVFODAyMTFfVFhfUkNfVVNFX1NIT1JUX1BSRUFNQkxFKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjE1ODQ6XFx0XFx0cmVzdWx0IHw9IE1BQzgwMjExX0hXU0lNX1RYX1JDX1VTRV9TSE9SVF9QUkVBTUJMRTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0xNTg1LVxcdGlmIChyYXRlLVxcdTAwM2VmbGFncyBcXHUwMDI2IElFRUU4MDIxMV9UWF9SQ19NQ1MpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6MTU4NjpcXHRcXHRyZXN1bHQgfD0gTUFDODAyMTFfSFdTSU1fVFhfUkNfTUNTO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTE1ODctXFx0aWYgKHJhdGUtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSUVFRTgwMjExX1RYX1JDX0dSRUVOX0ZJRUxEKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjE1ODg6XFx0XFx0cmVzdWx0IHw9IE1BQzgwMjExX0hXU0lNX1RYX1JDX0dSRUVOX0ZJRUxEO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTE1ODktXFx0aWYgKHJhdGUtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSUVFRTgwMjExX1RYX1JDXzQwX01IWl9XSURUSClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzoxNTkwOlxcdFxcdHJlc3VsdCB8PSBNQUM4MDIxMV9IV1NJTV9UWF9SQ180MF9NSFpfV0lEVEg7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMTU5MS1cXHRpZiAocmF0ZS1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJRUVFODAyMTFfVFhfUkNfRFVQX0RBVEEpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6MTU5MjpcXHRcXHRyZXN1bHQgfD0gTUFDODAyMTFfSFdTSU1fVFhfUkNfRFVQX0RBVEE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMTU5My1cXHRpZiAocmF0ZS1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJRUVFODAyMTFfVFhfUkNfU0hPUlRfR0kpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6MTU5NDpcXHRcXHRyZXN1bHQgfD0gTUFDODAyMTFfSFdTSU1fVFhfUkNfU0hPUlRfR0k7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMTU5NS1cXHRpZiAocmF0ZS1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJRUVFODAyMTFfVFhfUkNfVkhUX01DUylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzoxNTk2OlxcdFxcdHJlc3VsdCB8PSBNQUM4MDIxMV9IV1NJTV9UWF9SQ19WSFRfTUNTO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTE1OTctXFx0aWYgKHJhdGUtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSUVFRTgwMjExX1RYX1JDXzgwX01IWl9XSURUSClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzoxNTk4OlxcdFxcdHJlc3VsdCB8PSBNQUM4MDIxMV9IV1NJTV9UWF9SQ184MF9NSFpfV0lEVEg7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMTU5OS1cXHRpZiAocmF0ZS1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJRUVFODAyMTFfVFhfUkNfMTYwX01IWl9XSURUSClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzoxNjAwOlxcdFxcdHJlc3VsdCB8PSBNQUM4MDIxMV9IV1NJTV9UWF9SQ18xNjBfTUhaX1dJRFRIO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTE2MDEtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz0zNDg0PXN0YXRpYyBjb25zdCBjaGFyIG1hYzgwMjExX2h3c2ltX2dzdHJpbmdzX3N0YXRzW11bRVRIX0dTVFJJTkdfTEVOXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTM0OTQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6MzQ5NTojZGVmaW5lIE1BQzgwMjExX0hXU0lNX1NTVEFUU19MRU4gQVJSQVlfU0laRShtYWM4MDIxMV9od3NpbV9nc3RyaW5nc19zdGF0cylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0zNDk2LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9MzUwNj1zdGF0aWMgaW50IG1hYzgwMjExX2h3c2ltX2dldF9ldF9zc2V0X2NvdW50KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMzUwOS1cXHRpZiAoc3NldCA9PSBFVEhfU1NfU1RBVFMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6MzUxMDpcXHRcXHRyZXR1cm4gTUFDODAyMTFfSFdTSU1fU1NUQVRTX0xFTjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0zNTExLVxcdHJldHVybiAwO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9MzUxND1zdGF0aWMgdm9pZCBtYWM4MDIxMV9od3NpbV9nZXRfZXRfc3RhdHMoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0zNTI5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjM1MzA6XFx0V0FSTl9PTihpICE9IE1BQzgwMjExX0hXU0lNX1NTVEFUU19MRU4pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTM1MzEtfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9NTY0Nz1zdGF0aWMgY29uc3QgdTggaWZ0eXBlc19leHRfY2FwYV9hcFtdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNTY1NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzo1NjU2OiNkZWZpbmUgTUFDODAyMTFfSFdTSU1fTUxEX0NBUEFfT1BTXFx0XFx0XFx0XFx0XFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTU2NTctXFx0RklFTERfUFJFUF9DT05TVChJRUVFODAyMTFfTUxEX0NBUF9PUF9USURfVE9fTElOS19NQVBfTkVHX1NVUFAsIFxcXFxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTU2NjI9c3RhdGljIGNvbnN0IHN0cnVjdCB3aXBoeV9pZnR5cGVfZXh0X2NhcGFiIG1hYzgwMjExX2h3c2ltX2lmdHlwZXNfZXh0X2NhcGFbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTU2NjktXFx0XFx0XFx0XFx0ICAgIElFRUU4MDIxMV9FTUxfQ0FQX0VNTE1SX1NVUFBPUlQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6NTY3MDpcXHRcXHQubWxkX2NhcGFfYW5kX29wcyA9IE1BQzgwMjExX0hXU0lNX01MRF9DQVBBX09QUyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy01NjcxLVxcdH0sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz03MTQ3PXN0YXRpYyBzdHJ1Y3QgZ2VubF9mYW1pbHkgaHdzaW1fZ2VubF9mYW1pbHkgX19yb19hZnRlcl9pbml0ID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjcxNDg6XFx0Lm5hbWUgPSBcXFwiTUFDODAyMTFfSFdTSU1cXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTcxNDktXFx0LnZlcnNpb24gPSAxLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9NzQ2Nz1zdGF0aWMgdm9pZCBod3NpbV92aXJ0aW9fcmVtb3ZlKHN0cnVjdCB2aXJ0aW9fZGV2aWNlICp2ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNzQ3NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzo3NDc2Oi8qIE1BQzgwMjExX0hXU0lNIHZpcnRpbyBkZXZpY2UgaWQgdGFibGUgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy03NDc3LXN0YXRpYyBjb25zdCBzdHJ1Y3QgdmlydGlvX2RldmljZV9pZCBpZF90YWJsZVtdID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjc0Nzg6XFx0eyBWSVJUSU9fSURfTUFDODAyMTFfSFdTSU0sIFZJUlRJT19ERVZfQU5ZX0lEIH0sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNzQ3OS1cXHR7IDAgfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYz03OD1zdGF0aWMgdTY0IGh3c2ltX25hbl9nZXRfbWFzdGVyX3Jhbmsoc3RydWN0IG1hYzgwMjExX2h3c2ltX2RhdGEgKmRhdGEpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTgyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6ODM6XFx0aWYgKGRhdGEtXFx1MDAzZW5hbi5waGFzZSA9PSBNQUM4MDIxMV9IV1NJTV9OQU5fUEhBU0VfVVApIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTg0LVxcdFxcdG1hc3Rlcl9wcmVmID0gZGF0YS1cXHUwMDNlbmFuLm1hc3Rlcl9wcmVmO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYz0yMTY9dm9pZCBtYWM4MDIxMV9od3NpbV9uYW5fcngoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTI3My1cXHRpZiAoKHNsb3QgIT0gU0xPVF8yNEdIWl9EVyBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6Mjc0OlxcdCAgICAgZGF0YS1cXHUwMDNlbmFuLnBoYXNlICE9IE1BQzgwMjExX0hXU0lNX05BTl9QSEFTRV9TQ0FOKSB8fFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtMjc1LVxcdCAgICByeF9zdGF0dXMuZnJlcSAhPSAyNDM3KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy00MzYtXFx0XFx0ICAgIChjZyA9PSBvd25fY2cgXFx1MDAyNlxcdTAwMjYgZnJhbWVfYW1yIFxcdTAwM2UgY3Vycl9hbXIpIHx8XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYzo0Mzc6XFx0XFx0ICAgIGRhdGEtXFx1MDAzZW5hbi5waGFzZSA9PSBNQUM4MDIxMV9IV1NJTV9OQU5fUEhBU0VfU0NBTikge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtNDM4LVxcdFxcdFxcdC8qIEF2b2lkIGEgc3RhdGUgdHJhbnNpdGlvbiAqL1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy00NjgtXFx0XFx0XFx0ICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYzo0Njk6XFx0XFx0XFx0ZGF0YS1cXHUwMDNlbmFuLnBoYXNlID0gTUFDODAyMTFfSFdTSU1fTkFOX1BIQVNFX1VQO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtNDcwLVxcdFxcdFxcdGRhdGEtXFx1MDAzZW5hbi5yYW5kb21fZmFjdG9yX3ZhbGlkX2R3c3QgPSAwO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYz02MTI9bWFjODAyMTFfaHdzaW1fbmFuX2V4ZWNfc3RhdGVfdHJhbnNpdGlvbnMoc3RydWN0IG1hYzgwMjExX2h3c2ltX2RhdGEgKmRhdGEpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTYyNS1cXHRpZiAoZGF0YS1cXHUwMDNlbmFuLm1hc3Rlcl90cmFuc2l0aW9uX3Njb3JlIFxcdTAwM2MgMylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjYyNjpcXHRcXHRkYXRhLVxcdTAwM2VuYW4ucm9sZSA9IE1BQzgwMjExX0hXU0lNX05BTl9ST0xFX01BU1RFUjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjYyNzpcXHRlbHNlIGlmIChkYXRhLVxcdTAwM2VuYW4ucm9sZSA9PSBNQUM4MDIxMV9IV1NJTV9OQU5fUk9MRV9NQVNURVIgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTYyOC1cXHRcXHQgZGF0YS1cXHUwMDNlbmFuLm1hc3Rlcl90cmFuc2l0aW9uX3Njb3JlIFxcdTAwM2U9IDMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYzo2Mjk6XFx0XFx0ZGF0YS1cXHUwMDNlbmFuLnJvbGUgPSBNQUM4MDIxMV9IV1NJTV9OQU5fUk9MRV9TWU5DO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6NjMwOlxcdGVsc2UgaWYgKGRhdGEtXFx1MDAzZW5hbi5yb2xlID09IE1BQzgwMjExX0hXU0lNX05BTl9ST0xFX1NZTkMgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTYzMS1cXHRcXHQgZGF0YS1cXHUwMDNlbmFuLnN5bmNfdHJhbnNpdGlvbl9zY29yZSBcXHUwMDNlPSAzKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6NjMyOlxcdFxcdGRhdGEtXFx1MDAzZW5hbi5yb2xlID0gTUFDODAyMTFfSFdTSU1fTkFOX1JPTEVfTk9OX1NZTkM7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYzo2MzM6XFx0ZWxzZSBpZiAoZGF0YS1cXHUwMDNlbmFuLnJvbGUgPT0gTUFDODAyMTFfSFdTSU1fTkFOX1JPTEVfTk9OX1NZTkMgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTYzNC1cXHRcXHQgZGF0YS1cXHUwMDNlbmFuLnN5bmNfdHJhbnNpdGlvbl9zY29yZSBcXHUwMDNjIDMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYzo2MzU6XFx0XFx0ZGF0YS1cXHUwMDNlbmFuLnJvbGUgPSBNQUM4MDIxMV9IV1NJTV9OQU5fUk9MRV9TWU5DO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtNjM2LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy02NDEtXFx0ICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYzo2NDI6XFx0aWYgKGRhdGEtXFx1MDAzZW5hbi5yb2xlID09IE1BQzgwMjExX0hXU0lNX05BTl9ST0xFX01BU1RFUiBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtNjQzLVxcdCAgICAhaHJ0aW1lcl9hY3RpdmUoXFx1MDAyNmRhdGEtXFx1MDAzZW5hbi5kaXNjb3ZlcnlfYmVhY29uX3RpbWVyKSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtNjUzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6NjU0OlxcdFxcdGlmIChkYXRhLVxcdTAwM2VuYW4ucGhhc2UgPT0gTUFDODAyMTFfSFdTSU1fTkFOX1BIQVNFX1NDQU4pIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjY1NTpcXHRcXHRcXHRkYXRhLVxcdTAwM2VuYW4ucGhhc2UgPSBNQUM4MDIxMV9IV1NJTV9OQU5fUEhBU0VfV0FSTVVQO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtNjU2LVxcdFxcdFxcdGRhdGEtXFx1MDAzZW5hbi5yYW5kb21fZmFjdG9yX3ZhbGlkX2R3c3QgPSBOQU5fV0FSTVVQX0RXU1Q7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTY1OS1cXHRcXHR9IGVsc2Uge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6NjYwOlxcdFxcdFxcdGRhdGEtXFx1MDAzZW5hbi5waGFzZSA9IE1BQzgwMjExX0hXU0lNX05BTl9QSEFTRV9VUDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTY2MS1cXHRcXHRcXHRkYXRhLVxcdTAwM2VuYW4ucmFuZG9tX2ZhY3Rvcl92YWxpZF9kd3N0ID1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM9Njk1PW1hYzgwMjExX2h3c2ltX25hbl90eF9iZWFjb24oc3RydWN0IG1hYzgwMjExX2h3c2ltX2RhdGEgKmRhdGEsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTc1MC1cXHRuYW5fYXR0ci5sZW5ndGggPSBjcHVfdG9fbGUxNihzaXplb2YobWFzdGVyX2luZGljYXRpb24pKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjc1MTpcXHRpZiAoZGF0YS1cXHUwMDNlbmFuLnBoYXNlID09IE1BQzgwMjExX0hXU0lNX05BTl9QSEFTRV9VUCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtNzUyLVxcdFxcdG1hc3Rlcl9pbmRpY2F0aW9uLm1hc3Rlcl9wcmVmID0gZGF0YS1cXHUwMDNlbmFuLm1hc3Rlcl9wcmVmO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYz03NzQ9bWFjODAyMTFfaHdzaW1fbmFuX3Nsb3RfdGltZXIoc3RydWN0IGhydGltZXIgKnRpbWVyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy04MDctXFx0XFx0dHhfc3luY19iZWFjb24gPVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6ODA4OlxcdFxcdFxcdGRhdGEtXFx1MDAzZW5hbi5waGFzZSAhPSBNQUM4MDIxMV9IV1NJTV9OQU5fUEhBU0VfU0NBTiBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6ODA5OlxcdFxcdFxcdGRhdGEtXFx1MDAzZW5hbi5yb2xlICE9IE1BQzgwMjExX0hXU0lNX05BTl9ST0xFX05PTl9TWU5DO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtODEwLVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM9ODY3PW1hYzgwMjExX2h3c2ltX25hbl9kaXNjb3ZlcnlfYmVhY29uX3RpbWVyKHN0cnVjdCBocnRpbWVyICp0aW1lcilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtODc5LVxcdHNjb3BlZF9ndWFyZChzcGlubG9jaywgXFx1MDAyNmRhdGEtXFx1MDAzZW5hbi5zdGF0ZV9sb2NrKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYzo4ODA6XFx0XFx0aWYgKGRhdGEtXFx1MDAzZW5hbi5waGFzZSA9PSBNQUM4MDIxMV9IV1NJTV9OQU5fUEhBU0VfU0NBTiB8fFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6ODgxOlxcdFxcdCAgICBkYXRhLVxcdTAwM2VuYW4ucm9sZSAhPSBNQUM4MDIxMV9IV1NJTV9OQU5fUk9MRV9NQVNURVIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy04ODItXFx0XFx0XFx0cmV0dXJuIEhSVElNRVJfTk9SRVNUQVJUO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYz05MDk9aW50IG1hYzgwMjExX2h3c2ltX25hbl9zdGFydChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtOTI2LVxcdFxcdC8qIFN0YXJ0IGluIHRoZSBcXFwic2NhblxcXCIgcGhhc2UgYW5kIHN0YXkgdGhlcmUgZm9yIGEgbGl0dGxlIGJpdCAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6OTI3OlxcdFxcdGRhdGEtXFx1MDAzZW5hbi5waGFzZSA9IE1BQzgwMjExX0hXU0lNX05BTl9QSEFTRV9TQ0FOO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtOTI4LVxcdFxcdGRhdGEtXFx1MDAzZW5hbi5yYW5kb21fZmFjdG9yX3ZhbGlkX2R3c3QgPSAxO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy05MzAtXFx0XFx0ZGF0YS1cXHUwMDNlbmFuLm1hc3Rlcl9wcmVmID0gY29uZi1cXHUwMDNlbWFzdGVyX3ByZWY7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYzo5MzE6XFx0XFx0ZGF0YS1cXHUwMDNlbmFuLnJvbGUgPSBNQUM4MDIxMV9IV1NJTV9OQU5fUk9MRV9NQVNURVI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy05MzItXFx0XFx0bWVtc2V0KFxcdTAwMjZkYXRhLVxcdTAwM2VuYW4uY3VycmVudF9hbWksIDAsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jPTEyMjY9Ym9vbCBtYWM4MDIxMV9od3NpbV9uYW5fcmVjZWl2ZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtMTIzNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjEyMzY6XFx0aWYgKGRhdGEtXFx1MDAzZW5hbi5waGFzZSA9PSBNQUM4MDIxMV9IV1NJTV9OQU5fUEhBU0VfU0NBTilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTEyMzctXFx0XFx0cmV0dXJuIGNoYW5uZWwtXFx1MDAzZWNlbnRlcl9mcmVxID09IDI0Mzc7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5oLTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaDo3OiNpZm5kZWYgX19NQUM4MDIxMV9IV1NJTV9OQU5fSFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmg6ODojZGVmaW5lIF9fTUFDODAyMTFfSFdTSU1fTkFOX0hcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5oLTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaD0xMD1lbnVtIG1hYzgwMjExX2h3c2ltX25hbl9waGFzZSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaDoxMTpcXHRNQUM4MDIxMV9IV1NJTV9OQU5fUEhBU0VfU0NBTixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5oOjEyOlxcdE1BQzgwMjExX0hXU0lNX05BTl9QSEFTRV9XQVJNVVAsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaDoxMzpcXHRNQUM4MDIxMV9IV1NJTV9OQU5fUEhBU0VfVVAsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaC0xNC19O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaD0xNj1lbnVtIG1hYzgwMjExX2h3c2ltX25hbl9yb2xlIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5oOjE3OlxcdE1BQzgwMjExX0hXU0lNX05BTl9ST0xFX01BU1RFUixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5oOjE4OlxcdE1BQzgwMjExX0hXU0lNX05BTl9ST0xFX1NZTkMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaDoxOTpcXHRNQUM4MDIxMV9IV1NJTV9OQU5fUk9MRV9OT05fU1lOQyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5oLTIwLX07XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5oPTk5PXZvaWQgbWFjODAyMTFfaHdzaW1fbmFuX2xvY2FsX3NjaGVkX2NoYW5nZWQoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5oLTEwMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5oOjEwMjojZW5kaWYgLyogX19NQUM4MDIxMV9IV1NJTV9OQU5fSCAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQxODowOTo1My45NTgzMDMyMVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo1MzgxMDkzMTIzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgODAyLjExIFRYIFF1ZXVlIEFpcnRpbWUgQ2hlY2sqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IHVuZGVyc3RhbmRpbmcgaXMgdGhhdCBgaWVlZTgwMjExX3R4cV9haXJ0aW1lX2NoZWNrYCBpcyB0cmlnZ2VyZWQgZHVyaW5nIHRoZSB0cmFuc21pdCBwcm9jZXNzLCBzcGVjaWZpY2FsbHkgd2l0aGluIGBuZXQvbWFjODAyMTEvdHguY2AuIEkgbmVlZCB0byBjb25maXJtIHRoZSBleGFjdCBjYWxsIHBhdGguIEl0IHNlZW1zIHRoYXQgYGllZWU4MDIxMV90eF9kZXF1ZXVlYCBhbmQgYGllZWU4MDIxMV9uZXh0X3R4cWAgYXJlIHRoZSBrZXkgZnVuY3Rpb25zIHRvIGludmVzdGlnYXRlLCBhcyB0aGV5J3JlIGxpa2VseSB0aGUgcHJpbWFyeSBjYWxsZXJzIG9mIHRoYXQgY2hlY2suIE15IG5leHQgc3RlcCB3aWxsIGJlIHRvIGRpdmUgZGVlcGVyIGFuZCBhbmFseXplIGFsbCBvZiB0aGUgY2FsbGVycyBvZiBib3RoIGBpZWVlODAyMTFfdHhfZGVxdWV1ZWAgYW5kIGBpZWVlODAyMTFfbmV4dF90eHFgLiBUaGlzIHdpbGwgZ2l2ZSBtZSBhIGNsZWFyIHBpY3R1cmUgb2YgdGhlIGFpcnRpbWUgY2hlY2sncyBjb250ZXh0IGFuZCBob3cgaXQgZml0cyBpbnRvIHRoZSBvdmVyYWxsIHRyYW5zbWl0IHF1ZXVlIG1hbmFnZW1lbnQgb2YgdGhlIDgwMi4xMSBzdGFjay5cblxuXG4iLCJJbnB1dFRva2VucyI6MzQzMzIsIk91dHB1dFRva2VucyI6NDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMTg6MDk6NTkuMzM5Mzk4NjgyWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTY1NzMyNjEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaWVlZTgwMjExXyh0eF9kZXF1ZXVlfG5leHRfdHhxKVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbWFjODAyMTFcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L21hYzgwMjExL3R4LmM9Mzg1ND1zdGF0aWMgYm9vbCBpZWVlODAyMTFfZHJvcF91bmF1dGhfcG9ydChzdHJ1Y3QgaWVlZTgwMjExX3R4X2RhdGEgKnR4KVxcbi0tXFxubmV0L21hYzgwMjExL3R4LmMtMzg4NS1cXG5uZXQvbWFjODAyMTEvdHguYzozODg2OnN0cnVjdCBza19idWZmICppZWVlODAyMTFfdHhfZGVxdWV1ZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG5uZXQvbWFjODAyMTEvdHguYy0zODg3LVxcdFxcdFxcdFxcdCAgICAgc3RydWN0IGllZWU4MDIxMV90eHEgKnR4cSlcXG4tLVxcbm5ldC9tYWM4MDIxMS90eC5jLTQwNzgtfVxcbm5ldC9tYWM4MDIxMS90eC5jOjQwNzk6RVhQT1JUX1NZTUJPTChpZWVlODAyMTFfdHhfZGVxdWV1ZSk7XFxubmV0L21hYzgwMjExL3R4LmMtNDA4MC1cXG4tLVxcbm5ldC9tYWM4MDIxMS90eC5jPTQxMDE9aWVlZTgwMjExX3R4cV9rZWVwX2FjdGl2ZShzdHJ1Y3QgdHhxX2luZm8gKnR4cWkpXFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYy00MTE0LVxcbm5ldC9tYWM4MDIxMS90eC5jOjQxMTU6c3RydWN0IGllZWU4MDIxMV90eHEgKmllZWU4MDIxMV9uZXh0X3R4cShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgdTggYWMpXFxubmV0L21hYzgwMjExL3R4LmMtNDExNi17XFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYy00MTc3LX1cXG5uZXQvbWFjODAyMTEvdHguYzo0MTc4OkVYUE9SVF9TWU1CT0woaWVlZTgwMjExX25leHRfdHhxKTtcXG5uZXQvbWFjODAyMTEvdHguYy00MTc5LVxcbm5ldC9tYWM4MDIxMS90eC5jPTQxODA9dm9pZCBfX2llZWU4MDIxMV9zY2hlZHVsZV90eHEoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYy00MTk5LVxcdFxcdCAqIGdldCBpbW1lZGlhdGVseSBtb3ZlZCB0byB0aGUgYmFjayBvZiB0aGUgbGlzdCBvbiB0aGUgbmV4dFxcbm5ldC9tYWM4MDIxMS90eC5jOjQyMDA6XFx0XFx0ICogY2FsbCB0byBpZWVlODAyMTFfbmV4dF90eHEoKS5cXG5uZXQvbWFjODAyMTEvdHguYy00MjAxLVxcdFxcdCAqL1xcbi0tXFxubmV0L21hYzgwMjExL3V0aWwuYz0yODY9c3RhdGljIHZvaWQgd2FrZV90eF9wdXNoX3F1ZXVlKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxcbi0tXFxubmV0L21hYzgwMjExL3V0aWwuYy0yOTUtXFx0d2hpbGUgKDEpIHtcXG5uZXQvbWFjODAyMTEvdXRpbC5jOjI5NjpcXHRcXHRza2IgPSBpZWVlODAyMTFfdHhfZGVxdWV1ZShcXHUwMDI2bG9jYWwtXFx1MDAzZWh3LCBxdWV1ZSk7XFxubmV0L21hYzgwMjExL3V0aWwuYy0yOTctXFx0XFx0aWYgKCFza2IpXFxuLS1cXG5uZXQvbWFjODAyMTEvdXRpbC5jPTMwNT12b2lkIGllZWU4MDIxMV9oYW5kbGVfd2FrZV90eF9xdWV1ZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4tLVxcbm5ldC9tYWM4MDIxMS91dGlsLmMtMzEzLVxcbm5ldC9tYWM4MDIxMS91dGlsLmM6MzE0OlxcdC8qIFVzZSBpZWVlODAyMTFfbmV4dF90eHEoKSBmb3IgYWlydGltZSBmYWlybmVzcyBhY2NvdW50aW5nICovXFxubmV0L21hYzgwMjExL3V0aWwuYy0zMTUtXFx0aWVlZTgwMjExX3R4cV9zY2hlZHVsZV9zdGFydChodywgdHhxLVxcdTAwM2VhYyk7XFxubmV0L21hYzgwMjExL3V0aWwuYzozMTY6XFx0d2hpbGUgKChxdWV1ZSA9IGllZWU4MDIxMV9uZXh0X3R4cShodywgdHhxLVxcdTAwM2VhYykpKSB7XFxubmV0L21hYzgwMjExL3V0aWwuYy0zMTctXFx0XFx0d2FrZV90eF9wdXNoX3F1ZXVlKGxvY2FsLCBzZGF0YSwgcXVldWUpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQxODowOTo1OS40NTU5NzYzNDRaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NDYxMTQ2MTQyNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFdpcmVsZXNzIFRyYW5zbWlzc2lvbiBRdWV1ZSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGludG8gdGhpcyBgaWVlZTgwMjExX3R4cV9haXJ0aW1lX2NoZWNrYCBmdW5jdGlvbiwgd2hpY2ggZnJvbSB3aGF0IEkgdW5kZXJzdGFuZCwgaXMgY3J1Y2lhbCBmb3IgbWFuYWdpbmcgcGFja2V0IHRyYW5zbWlzc2lvbiBhbmQgcXVldWUgcHJvY2Vzc2luZyB3aXRoaW4gdGhlIG1hYzgwMjExIGZyYW1ld29yay4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dCBvZiB0aGUgYFRYX05PX1BVU0hCQUNLYCBmbGFnLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiBgYXRoMTFrYCBpcyB0aGUgc29sZSBkcml2ZXIgcmVzcG9uc2libGUgZm9yIHNldHRpbmcgdGhpcyBzcGVjaWZpYyBmbGFnLiBJIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIG90aGVyIGRyaXZlcnMgbWlnaHQgdXRpbGl6ZSBpdCwgb3IgaWYgdGhlcmUncyBhIGJyb2FkZXIgbWVjaGFuaXNtIGF0IHBsYXkuIFRoZXJlZm9yZSwgdGhlIG5leHQgc3RlcCBpcyBhIG1vcmUgZXhoYXVzdGl2ZSBpbnZlc3RpZ2F0aW9uIGludG8gdGhlIGtlcm5lbCBzb3VyY2UuIEknbSBnb2luZyB0byBjb25kdWN0IGEgY29tcHJlaGVuc2l2ZSBzZWFyY2ggZm9yIGluc3RhbmNlcyBvZiBgVFhfTk9fUFVTSEJBQ0tgIHRocm91Z2hvdXQgdGhlIGVudGlyZSBrZXJuZWwgcmVwb3NpdG9yeSB0byBnYWluIGEgaG9saXN0aWMgdmlldyBvZiBpdHMgdXNhZ2UgYW5kIGltcGxpY2F0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzU2NTksIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQxODoxMDowNC4wNjc0NDA1MloiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjIzNjgwNDg2OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJUWF9OT19QVVNIQkFDS1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jPTEwNDQyPXN0YXRpYyBpbnQgX19hdGgxMWtfbWFjX3JlZ2lzdGVyKHN0cnVjdCBhdGgxMWsgKmFyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYy0xMDQ5Ni1cXHRpZWVlODAyMTFfaHdfc2V0KGFyLVxcdTAwM2VodywgU1VQUE9SVFNfUFMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmM6MTA0OTc6XFx0aWVlZTgwMjExX2h3X3NldChhci1cXHUwMDNlaHcsIFRYX05PX1BVU0hCQUNLKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jLTEwNDk4LVxcdGllZWU4MDIxMV9od19zZXQoYXItXFx1MDAzZWh3LCBTVVBQT1JUU19EWU5BTUlDX1BTKTtcXG4tLVxcbmluY2x1ZGUvbmV0L21hYzgwMjExLmg9MjgyNT1zdHJ1Y3QgaWVlZTgwMjExX3R4cSB7XFxuLS1cXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oLTMwODgtICpcXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oOjMwODk6ICogQElFRUU4MDIxMV9IV19UWF9OT19QVVNIQkFDSzogVGhlIGRyaXZlciBoYW5kcyBldmVyeSBmcmFtZSBpdCBkZXF1ZXVlc1xcbmluY2x1ZGUvbmV0L21hYzgwMjExLmgtMzA5MC0gKlxcdHRvIHRoZSBoYXJkd2FyZSBhdCBvbmNlLCBhbmQgdGhlIGhhcmR3YXJlIHBpY2tzIHRoZSBzdGF0aW9uIGl0IHNlcnZlc1xcbi0tXFxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaD0zMDk3PWVudW0gaWVlZTgwMjExX2h3X2ZsYWdzIHtcXG4tLVxcbmluY2x1ZGUvbmV0L21hYzgwMjExLmgtMzE1NS1cXHRJRUVFODAyMTFfSFdfU1VQUE9SVFNfTkRQX0JMT0NLQUNLLFxcbmluY2x1ZGUvbmV0L21hYzgwMjExLmg6MzE1NjpcXHRJRUVFODAyMTFfSFdfVFhfTk9fUFVTSEJBQ0ssXFxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaC0zMTU3LVxcbi0tXFxubmV0L21hYzgwMjExL2RlYnVnZnMuYz00MDU9c3RhdGljIGNvbnN0IGNoYXIgKmh3X2ZsYWdfbmFtZXNbXSA9IHtcXG4tLVxcbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzLmMtNDY0LVxcdEZMQUcoU1VQUE9SVFNfTkRQX0JMT0NLQUNLKSxcXG5uZXQvbWFjODAyMTEvZGVidWdmcy5jOjQ2NTpcXHRGTEFHKFRYX05PX1BVU0hCQUNLKSxcXG5uZXQvbWFjODAyMTEvZGVidWdmcy5jLTQ2Ni0jdW5kZWYgRkxBR1xcbi0tXFxubmV0L21hYzgwMjExL3R4LmM9NDIyMD1zdGF0aWMgdTMyIGllZWU4MDIxMV9hcWxfc3RhX2xpbWl0KHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxcbi0tXFxubmV0L21hYzgwMjExL3R4LmMtNDIyNC1cXG5uZXQvbWFjODAyMTEvdHguYzo0MjI1OlxcdGlmICghaWVlZTgwMjExX2h3X2NoZWNrKFxcdTAwMjZsb2NhbC1cXHUwMDNlaHcsIFRYX05PX1BVU0hCQUNLKSB8fFxcbm5ldC9tYWM4MDIxMS90eC5jLTQyMjYtXFx0ICAgIHN0YS1cXHUwMDNlYWlydGltZV93ZWlnaHQgPT0gSUVFRTgwMjExX0RFRkFVTFRfQUlSVElNRV9XRUlHSFQpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDE4OjEwOjA2LjMwNDI1MzU4OVoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo3OTg0MDM5ODgyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKldvcnRoIEZ1enppbmcgQXNzZXNzbWVudDogQVFMIEludGVncmF0aW9uIGluIG1hYzgwMjExKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIHNjYW4gc2hvd3MgdGhpcyBwYXRjaCB0b3VjaGVzIGEgZmV3IGtleSBhcmVhcy4gRmlyc3QsIHdlIGhhdmUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmNgLCB3aGljaCBpcyBzZXR0aW5nIHRoZSBgVFhfTk9fUFVTSEJBQ0tgIGZsYWcgZHVyaW5nIGBhdGgxMWtgIGhhcmR3YXJlIHJlZ2lzdHJhdGlvbi4gV2UgYWxzbyBzZWUgdGhlIGRlZmluaXRpb24gb2YgdGhpcyBuZXcgZmxhZywgYElFRUU4MDIxMV9IV19UWF9OT19QVVNIQkFDS2AsIGluIGBpbmNsdWRlL25ldC9tYWM4MDIxMS5oYCwgYW5kIGl0cyBhZGRpdGlvbiB0byBkZWJ1Z2ZzIGluIGBuZXQvbWFjODAyMTEvZGVidWdmcy5jYC4gIEZpbmFsbHksIHRoZSBjcml0aWNhbCBwaWVjZTogYG5ldC9tYWM4MDIxMS90eC5jYCwgd2hlcmUgd2UgZmluZCB0aGUgaW1wbGVtZW50YXRpb24gb2YgYGllZWU4MDIxMV9hcWxfc3RhX2xpbWl0YCBhbmQgaXRzIGludGVncmF0aW9uIGludG8gYGllZWU4MDIxMV90eHFfYWlydGltZV9jaGVja2AuXG5cbk5vdywgdGhlIGltcG9ydGFudCBxdWVzdGlvbiBpcyByZWFjaGFiaWxpdHkuIENhbiB3ZSBoaXQgdGhhdCBjb2RlIGR1cmluZyBmdXp6aW5nPyBUaGUgZ29vZCBuZXdzIGlzLCBgaWVlZTgwMjExX3R4cV9haXJ0aW1lX2NoZWNrKClgICphbHdheXMqIGV4ZWN1dGVzIGZvciBhaXJ0aW1lIGNoZWNrcyBpZiBBUUwgKGFpcnRpbWUgcXVldWUgbGltaXQpIGlzIGVuYWJsZWQgb24gYSB3aXBoeS4gTG9va2luZyBhdCB0aGUgY29kZTpcblxuYGBgY1xuXHRpZiAoIXdpcGh5X2V4dF9mZWF0dXJlX2lzc2V0KGxvY2FsLVx1MDAzZWh3LndpcGh5LCBOTDgwMjExX0VYVF9GRUFUVVJFX0FRTCkpXG5cdFx0cmV0dXJuIHRydWU7XG5cblx0aWYgKHN0YXRpY19icmFuY2hfdW5saWtlbHkoXHUwMDI2YXFsX2Rpc2FibGUpKVxuXHRcdHJldHVybiB0cnVlO1xuXG5cdGlmICghdHhxLVx1MDAzZXN0YSlcblx0XHRyZXR1cm4gYXRvbWljX3JlYWQoXHUwMDI2bG9jYWwtXHUwMDNlYXFsX21jX3BlbmRpbmdfYWlydGltZSkgXHUwMDNjXG5cdFx0ICAgICAgIGxvY2FsLVx1MDAzZWFxbF90eHFfbGltaXRfbWM7XG5cblx0aWYgKHVubGlrZWx5KHR4cS1cdTAwM2V0aWQgPT0gSUVFRTgwMjExX05VTV9USURTKSlcblx0XHRyZXR1cm4gdHJ1ZTtcblxuXHRzdGEgPSBjb250YWluZXJfb2YodHhxLVx1MDAzZXN0YSwgc3RydWN0IHN0YV9pbmZvLCBzdGEpO1xuXHRpZiAoYXRvbWljX3JlYWQoXHUwMDI2c3RhLVx1MDAzZWFpcnRpbWVbdHhxLVx1MDAzZWFjXS5hcWxfdHhfcGVuZGluZykgXHUwMDNjXG5cdCAgICBpZWVlODAyMTFfYXFsX3N0YV9saW1pdChsb2NhbCwgc3RhLFxuXHRcdFx0XHQgICAgc3RhLVx1MDAzZWFpcnRpbWVbdHhxLVx1MDAzZWFjXS5hcWxfbGltaXRfbG93KSlcblx0XHRyZXR1cm4gdHJ1ZTtcblxuXHRpZiAoYXRvbWljX3JlYWQoXHUwMDI2bG9jYWwtXHUwMDNlYXFsX3RvdGFsX3BlbmRpbmdfYWlydGltZSkgXHUwMDNjXG5cdCAgICBsb2NhbC1cdTAwM2VhcWxfdGhyZXNob2xkIFx1MDAyNlx1MDAyNlxuXHQgICAgYXRvbWljX3JlYWQoXHUwMDI2c3RhLVx1MDAzZWFpcnRpbWVbdHhxLVx1MDAzZWFjXS5hcWxfdHhfcGVuZGluZykgXHUwMDNjXG5cdCAgICBpZWVlODAyMTFfYXFsX3N0YV9saW1pdChsb2NhbCwgc3RhLFxuXHRcdFx0XHQgICAgc3RhLVx1MDAzZWFpcnRpbWVbdHhxLVx1MDAzZWFjXS5hcWxfbGltaXRfaGlnaCkpXG5cdFx0cmV0dXJuIHRydWU7XG5cblx0cmV0dXJuIGZhbHNlO1xuYGBgXG5cbkV2ZW4gaWYgYCFpZWVlODAyMTFfaHdfY2hlY2soXHUwMDI2bG9jYWwtXHUwMDNlaHcsIFRYX05PX1BVU0hCQUNLKWAsIHdoaWNoIGlzIHdoYXQgdGhpcyBwYXRjaCBpcyBsaWtlbHkgYWltZWQgYXQsICBgaWVlZTgwMjExX2FxbF9zdGFfbGltaXRgICp3aWxsKiBiZSBjYWxsZWQgZHVyaW5nIFRYIG9uIGBtYWM4MDIxMWAgd2hlbiBBUUwgaXMgYWN0aXZlLiBBbmQgbGV0J3MgYmUgY2xlYXI6IGBtYWM4MDIxMWAgaXMgYSBjb3JlIHN1YnN5c3RlbS5cblxuTm93LCBjYW4gd2UgcmVhY2ggYG1hYzgwMjExYCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRT8gQWJzb2x1dGVseS4gIFdlIGhhdmUgYG5ldGxpbmsgKG5sODAyMTEpYCwgYG1hYzgwMjExX2h3c2ltYCwgdmlydHVhbCBpbnRlcmZhY2VzLCBzb2NrZXRzLCBldGMuLCBhbGwgcHJvdmlkaW5nIHBhdGhzIGluLiBTeXprYWxsZXIsIHdoaWNoIEknbSB2ZXJ5IGZhbWlsaWFyIHdpdGgsIGV4dGVuc2l2ZWx5IGV4ZXJjaXNlcyBgbWFjODAyMTFgIGFuZCBgbmw4MDIxMWAuXG5cblNvLCBjb25zaWRlcmluZyBvdXIgY3JpdGVyaWE6XG5cbiogICAqKlJlYWNoYWJpbGl0eSoqOiBZZXMsIGBtYWM4MDIxMWAgaXMgcmVhY2hhYmxlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgdGhlIG1ldGhvZHMgYWJvdmUuXG4qICAgKipDb3JlIFN1YnN5c3RlbSBNb2RpZmljYXRpb24qKjogIFdlJ3JlIG1vZGlmeWluZyBgbWFjODAyMTFgIHR4IHNjaGVkdWxpbmcgLyBBUUwgbG9naWMsIHdoaWNoIGlzIGNyaXRpY2FsLlxuKiAgICoqV29ydGggRnV6emluZyoqOiAgKipUUlVFKiouICBUaGlzIGlzIGEgcHJpbWUgdGFyZ2V0LlxuXG5OZXh0LCBJJ2xsIGNoZWNrIHRoZSBLY29uZmlnIGRlcGVuZGVuY2llcyBmb3IgYE1BQzgwMjExYCBhbmQgYEFUSDExS2AgdG8gZW5zdXJlIHRoaXMgaXMgYWxsIHByb3Blcmx5IGVuYWJsZWQgZm9yIG91ciBmdXp6aW5nIHNldHVwcy4gIFdlJ3JlIGxvb2tpbmcgZm9yIGFueSBwb3RlbnRpYWwgb2JzdGFjbGVzLCBidXQgYmFzZWQgb24gdGhpcyBpbml0aWFsIGFuYWx5c2lzLCB0aGlzIHBhdGNoIGRlZmluaXRlbHkgd2FycmFudHMgZnVydGhlciBpbnZlc3RpZ2F0aW9uIGFuZCBmdXp6aW5nIGVmZm9ydC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzY2OTgsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5NTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMTg6MTA6MTQuMjg4Mjk3NzIxWiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NjQ4MDM0NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTUFDODAyMTFcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L21hYzgwMjExXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9tYWM4MDIxMS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxubmV0L21hYzgwMjExL0tjb25maWc6Mjpjb25maWcgTUFDODAyMTFcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJHZW5lcmljIElFRUUgODAyLjExIE5ldHdvcmtpbmcgU3RhY2sgKG1hYzgwMjExKVxcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnPTE5PWlmIE1BQzgwMjExICE9IG5cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMTpjb25maWcgTUFDODAyMTFfSEFTX1JDXFxubmV0L21hYzgwMjExL0tjb25maWctMjItXFx0Ym9vbFxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIzLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI0OmNvbmZpZyBNQUM4MDIxMV9SQ19NSU5TVFJFTFxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI1LVxcdGJvb2wgXFxcIk1pbnN0cmVsXFxcIiBpZiBFWFBFUlRcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnPTMxPWNob2ljZVxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctNDAtXFxubmV0L21hYzgwMjExL0tjb25maWc6NDE6Y29uZmlnIE1BQzgwMjExX1JDX0RFRkFVTFRfTUlOU1RSRUxcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy00Mi1cXHRib29sIFxcXCJNaW5zdHJlbFxcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnPTQ4PWVuZGNob2ljZVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTQ5LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjUwOmNvbmZpZyBNQUM4MDIxMV9SQ19ERUZBVUxUXFxubmV0L21hYzgwMjExL0tjb25maWctNTEtXFx0c3RyaW5nXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZz01Nz1jb21tZW50IFxcXCJTb21lIHdpcmVsZXNzIGRyaXZlcnMgcmVxdWlyZSBhIHJhdGUgY29udHJvbCBhbGdvcml0aG1cXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy01OS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo2MDpjb25maWcgTUFDODAyMTFfS1VOSVRfVEVTVFxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTYxLVxcdHRyaXN0YXRlIFxcXCJLVW5pdCB0ZXN0cyBmb3IgbWFjODAyMTFcXFwiIGlmICFLVU5JVF9BTExfVEVTVFNcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTY5LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjcwOmNvbmZpZyBNQUM4MDIxMV9NRVNIXFxubmV0L21hYzgwMjExL0tjb25maWctNzEtXFx0Ym9vbCBcXFwiRW5hYmxlIG1hYzgwMjExIG1lc2ggbmV0d29ya2luZyBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctNzgtXFxubmV0L21hYzgwMjExL0tjb25maWc6Nzk6Y29uZmlnIE1BQzgwMjExX0xFRFNcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy04MC1cXHRib29sIFxcXCJFbmFibGUgTEVEIHRyaWdnZXJzXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctODctXFxubmV0L21hYzgwMjExL0tjb25maWc6ODg6Y29uZmlnIE1BQzgwMjExX0RFQlVHRlNcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy04OS1cXHRib29sIFxcXCJFeHBvcnQgbWFjODAyMTEgaW50ZXJuYWxzIGluIERlYnVnRlNcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy05Ni1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo5Nzpjb25maWcgTUFDODAyMTFfTUVTU0FHRV9UUkFDSU5HXFxubmV0L21hYzgwMjExL0tjb25maWctOTgtXFx0Ym9vbCBcXFwiVHJhY2UgYWxsIG1hYzgwMjExIGRlYnVnIG1lc3NhZ2VzXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMTA5LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjExMDptZW51Y29uZmlnIE1BQzgwMjExX0RFQlVHX01FTlVcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMTEtXFx0Ym9vbCBcXFwiU2VsZWN0IG1hYzgwMjExIGRlYnVnZ2luZyBmZWF0dXJlc1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTExNS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxMTY6Y29uZmlnIE1BQzgwMjExX05PSU5MSU5FXFxubmV0L21hYzgwMjExL0tjb25maWctMTE3LVxcdGJvb2wgXFxcIkRvIG5vdCBpbmxpbmUgVFgvUlggaGFuZGxlcnNcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMzEtXFxubmV0L21hYzgwMjExL0tjb25maWc6MTMyOmNvbmZpZyBNQUM4MDIxMV9WRVJCT1NFX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMTMzLVxcdGJvb2wgXFxcIlZlcmJvc2UgZGVidWdnaW5nIG91dHB1dFxcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE0Mi1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxNDM6Y29uZmlnIE1BQzgwMjExX01MTUVfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNDQtXFx0Ym9vbCBcXFwiVmVyYm9zZSBtYW5hZ2VkIE1MTUUgb3V0cHV0XFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMTUzLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE1NDpjb25maWcgTUFDODAyMTFfU1RBX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMTU1LVxcdGJvb2wgXFxcIlZlcmJvc2Ugc3RhdGlvbiBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNjItXFxubmV0L21hYzgwMjExL0tjb25maWc6MTYzOmNvbmZpZyBNQUM4MDIxMV9IVF9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE2NC1cXHRib29sIFxcXCJWZXJib3NlIEhUIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE3NC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxNzU6Y29uZmlnIE1BQzgwMjExX09DQl9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE3Ni1cXHRib29sIFxcXCJWZXJib3NlIE9DQiBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xODUtXFxubmV0L21hYzgwMjExL0tjb25maWc6MTg2OmNvbmZpZyBNQUM4MDIxMV9JQlNTX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMTg3LVxcdGJvb2wgXFxcIlZlcmJvc2UgSUJTUyBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xOTYtXFxubmV0L21hYzgwMjExL0tjb25maWc6MTk3OmNvbmZpZyBNQUM4MDIxMV9QU19ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE5OC1cXHRib29sIFxcXCJWZXJib3NlIHBvd2Vyc2F2ZSBtb2RlIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIwOC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMDk6Y29uZmlnIE1BQzgwMjExX01QTF9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIxMC1cXHRib29sIFxcXCJWZXJib3NlIG1lc2ggcGVlciBsaW5rIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIyMS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMjI6Y29uZmlnIE1BQzgwMjExX01QQVRIX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMjIzLVxcdGJvb2wgXFxcIlZlcmJvc2UgbWVzaCBwYXRoIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIzNC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMzU6Y29uZmlnIE1BQzgwMjExX01IV01QX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMjM2LVxcdGJvb2wgXFxcIlZlcmJvc2UgbWVzaCBIV01QIHJvdXRpbmcgZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMjQ3LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI0ODpjb25maWcgTUFDODAyMTFfTUVTSF9TWU5DX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMjQ5LVxcdGJvb2wgXFxcIlZlcmJvc2UgbWVzaCBzeW5jaHJvbml6YXRpb24gZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMjU4LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI1OTpjb25maWcgTUFDODAyMTFfTUVTSF9DU0FfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNjAtXFx0Ym9vbCBcXFwiVmVyYm9zZSBtZXNoIGNoYW5uZWwgc3dpdGNoIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI2OS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNzA6Y29uZmlnIE1BQzgwMjExX01FU0hfUFNfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNzEtXFx0Ym9vbCBcXFwiVmVyYm9zZSBtZXNoIHBvd2Vyc2F2ZSBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yODAtXFxubmV0L21hYzgwMjExL0tjb25maWc6MjgxOmNvbmZpZyBNQUM4MDIxMV9URExTX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMjgyLVxcdGJvb2wgXFxcIlZlcmJvc2UgVERMUyBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yOTItXFxubmV0L21hYzgwMjExL0tjb25maWc6MjkzOmNvbmZpZyBNQUM4MDIxMV9ERUJVR19DT1VOVEVSU1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI5NC1cXHRib29sIFxcXCJFeHRyYSBzdGF0aXN0aWNzIGZvciBUWC9SWCBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0zMDctXFxubmV0L21hYzgwMjExL0tjb25maWc6MzA4OmNvbmZpZyBNQUM4MDIxMV9TVEFfSEFTSF9NQVhfU0laRVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTMwOS1cXHRpbnQgXFxcIlN0YXRpb24gaGFzaCB0YWJsZSBtYXhpbXVtIHNpemVcXFwiIGlmIE1BQzgwMjExX0RFQlVHX01FTlVcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMTg6MTA6MTQuMzY0NzgzMzA5WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjg4NzEzODU2MTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBIZXJlJ3MgaG93IEknZCBhcHByb2FjaCB0aGF0IGtlcm5lbCBjb25maWd1cmF0aW9uIGZpbGUgY2hlY2s6XG5cbioqRXhhbWluaW5nIE1BQzgwMjExIERlcGVuZGVuY2llcyoqXG5cbkFscmlnaHQsIGJlZm9yZSBJIGdldCB0b28gZGVlcCBpbnRvIHRoaXMgcHJvYmxlbSwgSSB3YW50IHRvIHRha2UgYSBsb29rIGF0IHRoZSBgbmV0L21hYzgwMjExL0tjb25maWdgIGZpbGUsIHNwZWNpZmljYWxseSBsaW5lcyAxIHRocm91Z2ggMjAuIFRoYXQncyB1c3VhbGx5IGEgZ29vZCBzdGFydGluZyBwb2ludCB0byB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMgYW5kIGNvcmUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgTUFDODAyMTEgd2lyZWxlc3Mgc3RhY2suIEknbSBleHBlY3RpbmcgdG8gc2VlIHRoaW5ncyBsaWtlIHBsYXRmb3JtIGRyaXZlcnMgdGhhdCBpdCByZWxpZXMgb24sIHZhcmlvdXMgZmVhdHVyZSBmbGFncywgYW5kIHBvdGVudGlhbGx5IGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBjb25maWd1cmF0aW9ucyBpbiB0aGF0IGluaXRpYWwgc2VjdGlvbi4gVGhpcydsbCBoZWxwIG1lIGJ1aWxkIGEgbWVudGFsIG1vZGVsIG9mIHRoZSByZXF1aXJlbWVudHMgYmVmb3JlIEkgc3RhcnQgZGlnZ2luZyBpbnRvIGFueSBwYXJ0aWN1bGFyIGlzc3VlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IG90aGVyIGNvbXBvbmVudHMgdGhlIE1BQzgwMjExIGxheWVyIGxpbmtzIHRvIHNvIEkgY2FuIGdldCBhIGZ1bGxlciBwaWN0dXJlIG9mIGl0cyByZWxhdGlvbnNoaXAgdG8gdGhlIHN5c3RlbSBhcyBhIHdob2xlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MDg0MywiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDE4OjEwOjIzLjIzNjE3MjM3OFoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDkyMjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L21hYzgwMjExL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMjVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdGNvbmZpZyBNQUM4MDIxMVxcbiAgIDM6XFx0XFx0dHJpc3RhdGUgXFxcIkdlbmVyaWMgSUVFRSA4MDIuMTEgTmV0d29ya2luZyBTdGFjayAobWFjODAyMTEpXFxcIlxcbiAgIDQ6XFx0XFx0ZGVwZW5kcyBvbiBDRkc4MDIxMVxcbiAgIDU6XFx0XFx0c2VsZWN0IENSWVBUT1xcbiAgIDY6XFx0XFx0c2VsZWN0IENSWVBUT19MSUJfQUVTX0NCQ19NQUNTXFxuICAgNzpcXHRcXHRzZWxlY3QgQ1JZUFRPX0xJQl9BUkM0XFxuICAgODpcXHRcXHRzZWxlY3QgQ1JZUFRPX0FFU1xcbiAgIDk6XFx0XFx0c2VsZWN0IENSWVBUT19DQ01cXG4gIDEwOlxcdFxcdHNlbGVjdCBDUllQVE9fR0NNXFxuICAxMTpcXHRcXHRzZWxlY3QgQ1JDMzJcXG4gIDEyOlxcdFxcdGhlbHBcXG4gIDEzOlxcdFxcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyB0aGUgaGFyZHdhcmUgaW5kZXBlbmRlbnQgSUVFRSA4MDIuMTFcXG4gIDE0OlxcdFxcdCAgbmV0d29ya2luZyBzdGFjay5cXG4gIDE1OlxcdFxcbiAgMTY6XFx0Y29tbWVudCBcXFwiQ0ZHODAyMTEgbmVlZHMgdG8gYmUgZW5hYmxlZCBmb3IgTUFDODAyMTFcXFwiXFxuICAxNzpcXHRcXHRkZXBlbmRzIG9uIENGRzgwMjExPW5cXG4gIDE4OlxcdFxcbiAgMTk6XFx0aWYgTUFDODAyMTEgIT0gblxcbiAgMjA6XFx0XFxuICAyMTpcXHRjb25maWcgTUFDODAyMTFfSEFTX1JDXFxuICAyMjpcXHRcXHRib29sXFxuICAyMzpcXHRcXG4gIDI0OlxcdGNvbmZpZyBNQUM4MDIxMV9SQ19NSU5TVFJFTFxcbiAgMjU6XFx0XFx0Ym9vbCBcXFwiTWluc3RyZWxcXFwiIGlmIEVYUEVSVFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQxODoxMDoyMy4yMzYyODM2MzhaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjE5NzQ4MjEyNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSB0aGUgb25lIHRoaW5raW5nIGl0OlxuXG4qKkRpZ2dpbmcgRGVlcGVyOiBDRkc4MDIxMSBEZXBlbmRlbmNpZXMqKlxuXG5Pa2F5LCBzbyB3ZSd2ZSBiZWVuIGxvb2tpbmcgYXQgdGhpcyBpc3N1ZSBmcm9tIGEgZmV3IGFuZ2xlcywgYW5kIEkgdGhpbmsgd2UgbmVlZCB0byBicm9hZGVuIG91ciBzY29wZSBqdXN0IGEgYml0LiBXaGlsZSB0aGUgaW5pdGlhbCBmb2N1cyB3YXMgW29yaWdpbmFsIHByb2JsZW0gYXJlYSwgaWYgZ2l2ZW4gaW4gdGhlIGNvbnRleHRdLCBpdCdzIGFsc28gd29ydGggY2hlY2tpbmcgdGhlIGBDRkc4MDIxMWAgZGVwZW5kZW5jaWVzLiBJdCdzIGEga2V5IGNvbXBvbmVudCBpbiB0aGUgd2lyZWxlc3Mgc3RhY2ssIGFuZCBhIHBvdGVudGlhbCBoaWNjdXAgdGhlcmUgY291bGQgZWFzaWx5IGJlIGNhdXNpbmcgdGhlc2Ugc3ltcHRvbXMsIGVpdGhlciBkaXJlY3RseSBvciBpbmRpcmVjdGx5LiBJdCdzIHRoZSBzb3J0IG9mIGRldGFpbCB0aGF0IGNhbiBnZXQgb3Zlcmxvb2tlZCBpbiB0aGUgYmlnZ2VyIHBpY3R1cmUsIGJ1dCBJJ3ZlIGxlYXJuZWQgdGhhdCBvdmVybG9va2luZyBpdCBpcyBub3QgYSBsdXh1cnkgSSBjYW4gYWZmb3JkIGF0IHRoaXMgcG9pbnQuIFRpbWUgdG8gdGFrZSBhIGNsb3NlciBsb29rIGF0IHRoYXQgbW9kdWxlIGFuZCBpdHMgaW50ZXJhY3Rpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MTQ1MiwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMTg6MTA6MjUuNDMzNzY4ODMzWiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjE2NTI1NzA5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBDRkc4MDIxMVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvd2lyZWxlc3NcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3dpcmVsZXNzL0tjb25maWc9MTQ9Y29uZmlnIFdFWFRfUFJJVlxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTYtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6MTc6Y29uZmlnIENGRzgwMjExXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTgtXFx0dHJpc3RhdGUgXFxcImNmZzgwMjExIC0gd2lyZWxlc3MgY29uZmlndXJhdGlvbiBBUElcXFwiXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZz0zOD1jb25maWcgTkw4MDIxMV9URVNUTU9ERVxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctNTEtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6NTI6Y29uZmlnIENGRzgwMjExX0RFVkVMT1BFUl9XQVJOSU5HU1xcbm5ldC93aXJlbGVzcy9LY29uZmlnLTUzLVxcdGJvb2wgXFxcImVuYWJsZSBkZXZlbG9wZXIgd2FybmluZ3NcXFwiXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy02Ny1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzo2ODpjb25maWcgQ0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTXFxubmV0L3dpcmVsZXNzL0tjb25maWctNjktXFx0Ym9vbCBcXFwiY2ZnODAyMTEgY2VydGlmaWNhdGlvbiBvbnVzXFxcIlxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctODgtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6ODk6Y29uZmlnIENGRzgwMjExX1JFUVVJUkVfU0lHTkVEX1JFR0RCXFxubmV0L3dpcmVsZXNzL0tjb25maWctOTAtXFx0Ym9vbCBcXFwicmVxdWlyZSByZWdkYiBzaWduYXR1cmVcXFwiIGlmIENGRzgwMjExX0NFUlRJRklDQVRJT05fT05VU1xcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctOTgtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6OTk6Y29uZmlnIENGRzgwMjExX1VTRV9LRVJORUxfUkVHREJfS0VZU1xcbm5ldC93aXJlbGVzcy9LY29uZmlnLTEwMC1cXHRib29sIFxcXCJhbGxvdyByZWdkYiBrZXlzIHNoaXBwZWQgd2l0aCB0aGUga2VybmVsXFxcIiBpZiBDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTExMC1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxMTE6Y29uZmlnIENGRzgwMjExX0VYVFJBX1JFR0RCX0tFWURJUlxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTExMi1cXHRzdHJpbmcgXFxcImFkZGl0aW9uYWwgcmVnZGIga2V5IGRpcmVjdG9yeVxcXCIgaWYgQ0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMjEtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6MTIyOmNvbmZpZyBDRkc4MDIxMV9SRUdfQ0VMTFVMQVJfSElOVFNcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMjMtXFx0Ym9vbCBcXFwiY2ZnODAyMTEgcmVndWxhdG9yeSBzdXBwb3J0IGZvciBjZWxsdWxhciBiYXNlIHN0YXRpb24gaGludHNcXFwiXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMzQtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6MTM1OmNvbmZpZyBDRkc4MDIxMV9SRUdfUkVMQVhfTk9fSVJcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMzYtXFx0Ym9vbCBcXFwiY2ZnODAyMTEgc3VwcG9ydCBmb3IgTk9fSVIgcmVsYXhhdGlvblxcXCJcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE1OC1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxNTk6Y29uZmlnIENGRzgwMjExX0RFRkFVTFRfUFNcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNjAtXFx0Ym9vbCBcXFwiZW5hYmxlIHBvd2Vyc2F2ZSBieSBkZWZhdWx0XFxcIlxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTY4LVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjE2OTpjb25maWcgQ0ZHODAyMTFfREVCVUdGU1xcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE3MC1cXHRib29sIFxcXCJjZmc4MDIxMSBEZWJ1Z0ZTIGVudHJpZXNcXFwiXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNzYtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6MTc3OmNvbmZpZyBDRkc4MDIxMV9DUkRBX1NVUFBPUlRcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNzgtXFx0Ym9vbCBcXFwic3VwcG9ydCBDUkRBXFxcIiBpZiBFWFBFUlRcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE4Ni1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxODc6Y29uZmlnIENGRzgwMjExX1dFWFRcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xODgtXFx0Ym9vbCBcXFwiY2ZnODAyMTEgd2lyZWxlc3MgZXh0ZW5zaW9ucyBjb21wYXRpYmlsaXR5XFxcIlxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTkzLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjE5NDpjb25maWcgQ0ZHODAyMTFfS1VOSVRfVEVTVFxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE5NS1cXHR0cmlzdGF0ZSBcXFwiS1VuaXQgdGVzdHMgZm9yIGNmZzgwMjExXFxcIiBpZiAhS1VOSVRfQUxMX1RFU1RTXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDE4OjEwOjI3LjA1MDI5ODgyMloiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozODUwNjEzNzQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgZGVwZW5kZW5jaWVzLCBhcyBpZiBJIHdlcmUgdGhpbmtpbmcgaXQ6XG5cbioqRGlnZ2luZyBpbnRvIEFUSDExSyBEZXBlbmRlbmNpZXMqKlxuXG5Pa2F5LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eSB3aXRoIGBBVEgxMUtgLiBGaXJzdCB0aGluZ3MgZmlyc3QsIGxldCdzIG5haWwgZG93biB0aG9zZSBkZXBlbmRlbmNpZXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdGhpcyB0aGluZyBpcyBsZWFuaW5nIG9uIHRvIG1ha2Ugc3VyZSBJIGRvbid0IG1pc3MgYW55dGhpbmcgY3J1Y2lhbC4gSSdtIHRoaW5raW5nIGRyaXZlcnMsIGZpcm13YXJlIHZlcnNpb25zLCBzcGVjaWZpYyBoYXJkd2FyZSByZXZpc2lvbnMg4oCTIHRoZSB3aG9sZSBzaGViYW5nLiBMZXQncyBzdGFydCBtYXBwaW5nIG91dCB0aGUgcmVsYXRpb25zaGlwcywgcGllY2UgYnkgcGllY2UsIHNvIEkgY2FuIGhhdmUgYSBjb21wbGV0ZSBwaWN0dXJlIG9mIGl0cyBlY29zeXN0ZW0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQyNTk0LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMTg6MTA6MzAuOTAwOTE3NzcxWiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2ODQ1NDE3OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQVRIMTFLXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWtcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnOjI6Y29uZmlnIEFUSDExS1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJRdWFsY29tbSA4MDIuMTFheCBjaGlwc2V0IHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWctMTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnOjEzOmNvbmZpZyBBVEgxMUtfQUhCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTE0LVxcdHRyaXN0YXRlIFxcXCJBdGhlcm9zIGF0aDExayBBSEIgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZy0xOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWc6MjA6Y29uZmlnIEFUSDExS19QQ0lcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWctMjEtXFx0dHJpc3RhdGUgXFxcIkF0aGVyb3MgYXRoMTFrIFBDSSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTI5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZzozMDpjb25maWcgQVRIMTFLX0RFQlVHXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTMxLVxcdGJvb2wgXFxcIlFDQSBhdGgxMWsgZGVidWdnaW5nXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTM3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZzozODpjb25maWcgQVRIMTFLX0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWctMzktXFx0Ym9vbCBcXFwiUUNBIGF0aDExayBkZWJ1Z2ZzIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWctNDUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnOjQ2OmNvbmZpZyBBVEgxMUtfVFJBQ0lOR1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZy00Ny1cXHRib29sIFxcXCJhdGgxMWsgdHJhY2luZyBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTUxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZzo1Mjpjb25maWcgQVRIMTFLX1NQRUNUUkFMXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTUzLVxcdGJvb2wgXFxcIlFDQSBhdGgxMWsgc3BlY3RyYWwgc2NhbiBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTYwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZzo2MTpjb25maWcgQVRIMTFLX0NGUlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZy02Mi1cXHRib29sIFxcXCJhdGgxMWsgY2hhbm5lbCBmcmVxdWVuY3kgcmVzcG9uc2Ugc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMTg6MTA6MzAuOTY5Mzc3MDZaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjU4NjkwNDExMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIGlmIEkgd2VyZSB0aGlua2luZyB0aGVzZSB0aG91Z2h0czpcblxuKipFeGFtaW5pbmcgdGhlIEF0aDExayBLY29uZmlnIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCB0aW1lIHRvIGRpdmUgaW50byB0aGUgQXRoZXJvcyAxMWsgZHJpdmVyJ3MgY29uZmlndXJhdGlvbi4gTGV0J3Mgc3RhcnQgYnkgc2NydXRpbml6aW5nIHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnYCBmaWxlLCBzcGVjaWZpY2FsbHkgdGhlIGZpcnN0IDI1IGxpbmVzLiBUaGlzIHVzdWFsbHkgY29udGFpbnMgdGhlIGNvcmUgc2VsZWN0aW9uIG9wdGlvbnMsIGFueSBkZXBlbmRlbmNpZXMgb24gb3RoZXIgc3Vic3lzdGVtcywgYW5kIHBvdGVudGlhbGx5IHNvbWUgYmFzaWMgZGVmYXVsdCBzZXR0aW5ncy4gSSdtIGxvb2tpbmcgZm9yIHRoZSBmb3VuZGF0aW9uYWwgYnVpbGRpbmcgYmxvY2tzIG9mIGhvdyB0aGlzIGRyaXZlciBpcyBjb25maWd1cmVkIHdpdGhpbiB0aGUga2VybmVsLiBJIGV4cGVjdCB0byBzZWUgdGhlIG1haW4gZHJpdmVyIGVuYWJsZS9kaXNhYmxlIG9wdGlvbiwgbGlrZWx5IGBDT05GSUdfQVRIMTFLYCwgYW5kIGl0cyBkZXBlbmRlbmNpZXMgb24gY29yZSB3aXJlbGVzcyBpbmZyYXN0cnVjdHVyZSBsaWtlIHRoZSBjZmc4MDIxMSBsYXllciwgbWFjODAyMTEsIGFuZCB0aGUgYXRoIG1vZHVsZSBpbiBnZW5lcmFsLiBJ4oCZbGwgYmUgcGF5aW5nIGNsb3NlIGF0dGVudGlvbiB0byBhbnkgY29uZGl0aW9uYWwgZGVwZW5kZW5jaWVzIHRoYXQgbWlnaHQgcmVxdWlyZSBhIHNwZWNpZmljIGhhcmR3YXJlIHBsYXRmb3JtIG9yIGZpcm13YXJlIHZlcnNpb24uIFVuZGVyc3RhbmRpbmcgdGhpcyBpbml0aWFsIHNlY3Rpb24gd2lsbCBwYWludCBhIGNsZWFyIHBpY3R1cmUgb2YgaG93IHRvIGVuYWJsZSwgZGlzYWJsZSwgYW5kIHRhaWxvciB0aGUgQXRoMTFrIGRyaXZlcidzIGZ1bmN0aW9uYWxpdHkgYXQgY29tcGlsZSB0aW1lLiBJdOKAmXMgdGhlIHN0YXJ0aW5nIHBvaW50IGZvciB1bmRlcnN0YW5kaW5nIGhvdyB0aGUgdXNlciBjYW4gZXZlbiBjaG9vc2UgdG8gZW5hYmxlIHRoaXMgZHJpdmVyIG9yIG5vdC4gQW55IGluaXRpYWwgYXNzdW1wdGlvbnMgb3IgY29uZmlndXJhdGlvbnMgd2lsbCBsaWtlbHkgYmUgc2V0IGluIHRoZXNlIGZpcnN0IDI1IGxpbmVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MzQ0NCwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDE4OjEwOjMzLjU1NjI4NDAwM1oiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1ODExMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMjVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcXG4gICAyOlxcdGNvbmZpZyBBVEgxMUtcXG4gICAzOlxcdFxcdHRyaXN0YXRlIFxcXCJRdWFsY29tbSA4MDIuMTFheCBjaGlwc2V0IHN1cHBvcnRcXFwiXFxuICAgNDpcXHRcXHRkZXBlbmRzIG9uIE1BQzgwMjExIFxcdTAwMjZcXHUwMDI2IEhBU19ETUFcXG4gICA1OlxcdFxcdHNlbGVjdCBBVEhfQ09NTU9OXFxuICAgNjpcXHRcXHRzZWxlY3QgUUNPTV9RTUlfSEVMUEVSU1xcbiAgIDc6XFx0XFx0aGVscFxcbiAgIDg6XFx0XFx0ICBUaGlzIG1vZHVsZSBhZGRzIHN1cHBvcnQgZm9yIFF1YWxjb21tIFRlY2hub2xvZ2llcyA4MDIuMTFheCBmYW1pbHkgb2ZcXG4gICA5OlxcdFxcdCAgY2hpcHNldHMuXFxuICAxMDpcXHRcXG4gIDExOlxcdFxcdCAgSWYgeW91IGNob29zZSB0byBidWlsZCBhIG1vZHVsZSwgaXQnbGwgYmUgY2FsbGVkIGF0aDExay5cXG4gIDEyOlxcdFxcbiAgMTM6XFx0Y29uZmlnIEFUSDExS19BSEJcXG4gIDE0OlxcdFxcdHRyaXN0YXRlIFxcXCJBdGhlcm9zIGF0aDExayBBSEIgc3VwcG9ydFxcXCJcXG4gIDE1OlxcdFxcdGRlcGVuZHMgb24gQVRIMTFLXFxuICAxNjpcXHRcXHRkZXBlbmRzIG9uIFJFTU9URVBST0NcXG4gIDE3OlxcdFxcdGhlbHBcXG4gIDE4OlxcdFxcdCAgVGhpcyBtb2R1bGUgYWRkcyBzdXBwb3J0IGZvciBBSEIgYnVzXFxuICAxOTpcXHRcXG4gIDIwOlxcdGNvbmZpZyBBVEgxMUtfUENJXFxuICAyMTpcXHRcXHR0cmlzdGF0ZSBcXFwiQXRoZXJvcyBhdGgxMWsgUENJIHN1cHBvcnRcXFwiXFxuICAyMjpcXHRcXHRkZXBlbmRzIG9uIEFUSDExSyBcXHUwMDI2XFx1MDAyNiBQQ0lcXG4gIDIzOlxcdFxcdHNlbGVjdCBNSElfQlVTXFxuICAyNDpcXHRcXHRzZWxlY3QgUVJUUlxcbiAgMjU6XFx0XFx0c2VsZWN0IFFSVFJfTUhJXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDE4OjEwOjMzLjU1NjM0MzYzM1oiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo3OTM0MzQ4OTkxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZvY3VzaW5nIG9uIEFpcnRpbWUgUXVldWUgTGltaXRzOiBBIERlZXAgRGl2ZSoqXG5cbk9rYXksIGxldCdzIG5haWwgZG93biB0aGVzZSBGb2N1c1N5bWJvbHMuIE15IGluaXRpYWwgcGFzcyBoYXMgaWRlbnRpZmllZCBhIGZldyBrZXkgZnVuY3Rpb25zIHRoYXQgaGF2ZSBiZWVuIG1vZGlmaWVkIG9yIGFkZGVkOlxuXG4xLiAgYGllZWU4MDIxMV9hcWxfc3RhX2xpbWl0YCAoc3RhdGljLCBpbiBgbmV0L21hYzgwMjExL3R4LmNgKVxuMi4gIGBpZWVlODAyMTFfdHhxX2FpcnRpbWVfY2hlY2tgIChpbiBgbmV0L21hYzgwMjExL3R4LmNgKVxuMy4gIGBpZWVlODAyMTFfdHhfZGVxdWV1ZWAgKGNhbGxzIGBpZWVlODAyMTFfdHhxX2FpcnRpbWVfY2hlY2tgLCBpbiBgbmV0L21hYzgwMjExL3R4LmNgKVxuNC4gIGBpZWVlODAyMTFfbmV4dF90eHFgIChhbHNvIGNhbGxzIGBpZWVlODAyMTFfdHhxX2FpcnRpbWVfY2hlY2tgLCBpbiBgbmV0L21hYzgwMjExL3R4LmNgKVxuNS4gIGBfX2F0aDExa19tYWNfcmVnaXN0ZXJgIChpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuY2ApXG5cbk5vdywgYSBxdWljayBjaGVjayBvbiB0aGUgc3RhdGljIG5hdHVyZSBvZiBgaWVlZTgwMjExX2FxbF9zdGFfbGltaXRgLi4uIEFoLCB5ZXMsIGl0J3Mgc3RhdGljLiBCdXQsIGNyaXRpY2FsbHksIGBpZWVlODAyMTFfdHhxX2FpcnRpbWVfY2hlY2tgIGlzIGV4cG9ydGVkLCBhcyBhcmUgYGllZWU4MDIxMV90eF9kZXF1ZXVlYCBhbmQgYGllZWU4MDIxMV9uZXh0X3R4cWAuIFRoaXMgbWVhbnMgdGhlIGFpcnRpbWUgY2hlY2tpbmcgaXMgZGVmaW5pdGVseSBleHBvc2VkLiBUaGUgY2FsY3VsYXRpb24gYW5kIHJlbGF0ZWQgY2FsbHMgd2VyZSBjaGFuZ2VkIGluIGBpZWVlODAyMTFfdHhxX2FpcnRpbWVfY2hlY2tgLCBzbyBpdCdzIGEgcHJpbWUgdGFyZ2V0LiBTaW5jZSBgaWVlZTgwMjExX2FxbF9zdGFfbGltaXRgIGlzIGEgc3RhdGljIEMgZnVuY3Rpb24sIGl0J3MgbGlrZWx5IHRvIGJlIGlubGluZWQgaW50byBgaWVlZTgwMjExX3R4cV9haXJ0aW1lX2NoZWNrYCwgc28gaXQncyBhbHNvIHdvcnRoIGV4YW1pbmluZy5cblxuVGhlcmVmb3JlLCBgaWVlZTgwMjExX3R4cV9haXJ0aW1lX2NoZWNrYCBiZWNvbWVzIGEga2V5IGZvY3VzIHN5bWJvbCwgYWxvbmcgd2l0aCBgaWVlZTgwMjExX25leHRfdHhxYCwgYGllZWU4MDIxMV90eF9kZXF1ZXVlYCwgYW5kIGBfX2F0aDExa19tYWNfcmVnaXN0ZXJgLlxuXG5OZXh0LCBJIG5lZWQgdG8gY2hlY2sgdGhlIEVuYWJsZUNvbmZpZ3MuIFRoZSByZWxldmFudCBvbmVzIHNlZW0gdG8gYmU6XG5cbiogICBgTUFDODAyMTFgXG4qICAgYENGRzgwMjExYCAocGFyZW50KVxuKiAgIGBBVEgxMUtgXG5cbkkgc2hvdWxkIHNlZSBpZiBgTUFDODAyMTFfREVCVUdGU2AsIGBBVEgxMUtfUENJYCAvIGBBVEgxMUtfQUhCYCwgb3IgYE1BQzgwMjExX0hXU0lNYCBhcmUgcmVsZXZhbnQuIGBNQUM4MDIxMWAgaXMgdGhlIGNvcmUsIGBDRkc4MDIxMWAgaXMgaXRzIHBhcmVudC4gYEFUSDExS2Agc2VlbXMgdG8gaGFuZGxlIHRoZSBkcml2ZXIgc2lkZSwgY29tcGlsaW5nIGBhdGgxMWsvbWFjLmNgLiAgYE1BQzgwMjExX0RFQlVHRlNgIGlzIHdvcnRoIGluY2x1ZGluZy5cblxuTGV0J3MgZG8gYSBmaW5hbCBzYW5pdHkgY2hlY2ssIGVuc3VyaW5nIGV2ZXJ5dGhpbmcgaXMgYXMgZXhwZWN0ZWQ6XG5cbiogICBgV29ydGhGdXp6aW5nOiB0cnVlYCAtIEdvb2QuXG4qICAgYEVuYWJsZUNvbmZpZ3NgOiBgW1wiTUFDODAyMTFcIiwgXCJDRkc4MDIxMVwiLCBcIkFUSDExS1wiLCBcIk1BQzgwMjExX0RFQlVHRlNcIl1gIC0gWWVwLCBhbGwgc2V0LlxuKiAgIGBGb2N1c1N5bWJvbHNgOiBgW1wiaWVlZTgwMjExX3R4cV9haXJ0aW1lX2NoZWNrXCIsIFwiaWVlZTgwMjExX2FxbF9zdGFfbGltaXRcIiwgXCJpZWVlODAyMTFfbmV4dF90eHFcIiwgXCJpZWVlODAyMTFfdHhfZGVxdWV1ZVwiLCBcIl9fYXRoMTFrX21hY19yZWdpc3RlclwiXWAgLSBDb25zaXN0ZW50LlxuXG5KdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgbGV0J3MgdmVyaWZ5IGFsbCB0aGUgc3ltYm9sIG5hbWVzOlxuXG4qICAgYGllZWU4MDIxMV90eHFfYWlydGltZV9jaGVja2AgKG5ldC9tYWM4MDIxMS90eC5jKVxuKiAgIGBpZWVlODAyMTFfYXFsX3N0YV9saW1pdGAgKG5ldC9tYWM4MDIxMS90eC5jKVxuKiAgIGBpZWVlODAyMTFfbmV4dF90eHFgIChuZXQvbWFjODAyMTEvdHguYylcbiogICBgaWVlZTgwMjExX3R4X2RlcXVldWVgIChuZXQvbWFjODAyMTEvdHguYylcbiogICBgX19hdGgxMWtfbWFjX3JlZ2lzdGVyYCAoZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYylcblxuVGhlIHJlYXNvbmluZyBzZWVtcyBzb3VuZDogVGhpcyBwYXRjaCBpbnRyb2R1Y2VzXG5cbiIsIklucHV0VG9rZW5zIjo0NDEyMiwiT3V0cHV0VG9rZW5zIjoyNjMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTI4LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMTg6MTA6NDEuNDkwNjk2MjM0WiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM2OTI3NjY3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJNQUM4MDIxMVwiLFxuICAgIFwiQ0ZHODAyMTFcIixcbiAgICBcIkFUSDExS1wiLFxuICAgIFwiTUFDODAyMTFfREVCVUdGU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImllZWU4MDIxMV90eHFfYWlydGltZV9jaGVja1wiLFxuICAgIFwiaWVlZTgwMjExX2FxbF9zdGFfbGltaXRcIixcbiAgICBcImllZWU4MDIxMV9uZXh0X3R4cVwiLFxuICAgIFwiaWVlZTgwMjExX3R4X2RlcXVldWVcIixcbiAgICBcIl9fYXRoMTFrX21hY19yZWdpc3RlclwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGludHJvZHVjZXMgdGhlIElFRUU4MDIxMV9IV19UWF9OT19QVVNIQkFDSyBoYXJkd2FyZSBmbGFnIGFuZCBhZGRzIHN0YXRpb24gYWlydGltZSBxdWV1ZSBsaW1pdCBjYWxjdWxhdGlvbiAoaWVlZTgwMjExX2FxbF9zdGFfbGltaXQpIHRvIHRoZSBtYWM4MDIxMSBUWCBxdWV1ZSBhaXJ0aW1lIGNoZWNrIChpZWVlODAyMTFfdHhxX2FpcnRpbWVfY2hlY2spLiBUaGUgbWFjODAyMTEgc3Vic3lzdGVtIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIG1hYzgwMjExX2h3c2ltIGFuZCBubDgwMjExIGludGVyZmFjZXMsIG1ha2luZyB0aGVzZSBxdWV1ZSBzY2hlZHVsaW5nIGFuZCBhaXJ0aW1lIGNhbGN1bGF0aW9uIGNoYW5nZXMgd29ydGggZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJNQUM4MDIxMVwiLFxuICAgIFwiQ0ZHODAyMTFcIixcbiAgICBcIkFUSDExS1wiLFxuICAgIFwiTUFDODAyMTFfREVCVUdGU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImllZWU4MDIxMV90eHFfYWlydGltZV9jaGVja1wiLFxuICAgIFwiaWVlZTgwMjExX2FxbF9zdGFfbGltaXRcIixcbiAgICBcImllZWU4MDIxMV9uZXh0X3R4cVwiLFxuICAgIFwiaWVlZTgwMjExX3R4X2RlcXVldWVcIixcbiAgICBcIl9fYXRoMTFrX21hY19yZWdpc3RlclwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGludHJvZHVjZXMgdGhlIElFRUU4MDIxMV9IV19UWF9OT19QVVNIQkFDSyBoYXJkd2FyZSBmbGFnIGFuZCBhZGRzIHN0YXRpb24gYWlydGltZSBxdWV1ZSBsaW1pdCBjYWxjdWxhdGlvbiAoaWVlZTgwMjExX2FxbF9zdGFfbGltaXQpIHRvIHRoZSBtYWM4MDIxMSBUWCBxdWV1ZSBhaXJ0aW1lIGNoZWNrIChpZWVlODAyMTFfdHhxX2FpcnRpbWVfY2hlY2spLiBUaGUgbWFjODAyMTEgc3Vic3lzdGVtIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIG1hYzgwMjExX2h3c2ltIGFuZCBubDgwMjExIGludGVyZmFjZXMsIG1ha2luZyB0aGVzZSBxdWV1ZSBzY2hlZHVsaW5nIGFuZCBhaXJ0aW1lIGNhbGN1bGF0aW9uIGNoYW5nZXMgd29ydGggZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMTg6MTA6NDEuNjI3NjMzMTExWiIsIlNlcSI6MjksIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzIzNjAxNjA0NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDE4OjEwOjQxLjYyODQ0NzQyMVoiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjEzMjM1MTk3MjM0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIHRoZSBgSUVFRTgwMjExX0hXX1RYX05PX1BVU0hCQUNLYCBoYXJkd2FyZSBmbGFnIGZvciBtYWM4MDIxMS9hdGgxMWsgYW5kIGFkanVzdHMgc3RhdGlvbiBBaXJ0aW1lIFF1ZXVlIExpbWl0IChBUUwpIGNhbGN1bGF0aW9ucyBiYXNlZCBvbiBzdGF0aW9uIGFpcnRpbWUgd2VpZ2h0IHdoZW4gdGhpcyBmbGFnIGlzIGVuYWJsZWQuXFxuXFxuQWxsIHN0cnVjdCBmaWVsZHMgYWNjZXNzZWQgKHN1Y2ggYXMgYHN0YS1cXHUwMDNlYWlydGltZV93ZWlnaHRgLCBgbG9jYWwtXFx1MDAzZWFxbF90aHJlc2hvbGRgLCBhbmQgYHN0YS1cXHUwMDNlYWlydGltZVtdLmFxbF9saW1pdF8qYCkgYXJlIHN0YW5kYXJkIGludGVnZXIgZmllbGRzIGluaXRpYWxpemVkIGR1cmluZyBzdGF0aW9uIGNyZWF0aW9uIGFuZCBkcml2ZXIgY29uZmlndXJhdGlvbi4gTG9jYWwgdmFyaWFibGVzIGluIHRoZSBuZXcgY2FsY3VsYXRpb24gaGVscGVyIGBpZWVlODAyMTFfYXFsX3N0YV9saW1pdCgpYCBhcmUgZXhwbGljaXRseSBhc3NpZ25lZCBiZWZvcmUgdXNlLiBObyBoZWFwL3N0YWNrIGFsbG9jYXRpb25zLCBtZW1vcnkgY29weSBvcGVyYXRpb25zIHRvIHVzZXIgc3BhY2UsIG9yIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzIGFyZSBpbnRyb2R1Y2VkIG9yIG1vZGlmaWVkLlxcblxcblRoZXJlZm9yZSwgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgaXMgbm90IG5lZWRlZDsgYW55IHN0YW5kYXJkIGNvbmN1cnJlbmN5IG9yIGxvZ2ljIGlzc3VlcyBhcmUgY292ZXJlZCBieSBzdGFuZGFyZCBLQVNBTi9rZXJuZWwgZGVidWdnaW5nIHRvb2xzLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDExMTY1MWIxNTZmYzIxOTY2NjVkZGRmOWRiNjJiZWFjNjc3MTU1MDRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIFNlcCA4IDE4OjA5OjI3IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmNcbmluZGV4IDJkNTVjZGM0ZDE2NWQuLjg3ZTYwNjJjNTU1MDkgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jXG5AQCAtMTA0OTQsNiArMTA0OTQsNyBAQCBzdGF0aWMgaW50IF9fYXRoMTFrX21hY19yZWdpc3RlcihzdHJ1Y3QgYXRoMTFrICphcilcbiBcbiBcdGllZWU4MDIxMV9od19zZXQoYXItXHUwMDNlaHcsIFNJR05BTF9EQk0pO1xuIFx0aWVlZTgwMjExX2h3X3NldChhci1cdTAwM2VodywgU1VQUE9SVFNfUFMpO1xuK1x0aWVlZTgwMjExX2h3X3NldChhci1cdTAwM2VodywgVFhfTk9fUFVTSEJBQ0spO1xuIFx0aWVlZTgwMjExX2h3X3NldChhci1cdTAwM2VodywgU1VQUE9SVFNfRFlOQU1JQ19QUyk7XG4gXHRpZWVlODAyMTFfaHdfc2V0KGFyLVx1MDAzZWh3LCBNRlBfQ0FQQUJMRSk7XG4gXHRpZWVlODAyMTFfaHdfc2V0KGFyLVx1MDAzZWh3LCBSRVBPUlRTX1RYX0FDS19TVEFUVVMpO1xuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L21hYzgwMjExLmggYi9pbmNsdWRlL25ldC9tYWM4MDIxMS5oXG5pbmRleCA3YmI0NjE4MDY1YjY3Li44MDM4MWM3YWJkODRhIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9uZXQvbWFjODAyMTEuaFxuKysrIGIvaW5jbHVkZS9uZXQvbWFjODAyMTEuaFxuQEAgLTMwODYsNiArMzA4NiwxMiBAQCBzdHJ1Y3QgaWVlZTgwMjExX3R4cSB7XG4gICogQElFRUU4MDIxMV9IV19TVVBQT1JUU19ORFBfQkxPQ0tBQ0s6IEhXIGNhbiB0cmFuc21pdC9yZWNlaXZlIFMxRyBORFBcbiAgKlx0QmxvY2tBY2sgZnJhbWVzLlxuICAqXG4rICogQElFRUU4MDIxMV9IV19UWF9OT19QVVNIQkFDSzogVGhlIGRyaXZlciBoYW5kcyBldmVyeSBmcmFtZSBpdCBkZXF1ZXVlc1xuKyAqXHR0byB0aGUgaGFyZHdhcmUgYXQgb25jZSwgYW5kIHRoZSBoYXJkd2FyZSBwaWNrcyB0aGUgc3RhdGlvbiBpdCBzZXJ2ZXNcbisgKlx0bmV4dCwgc28gdGhlIG9yZGVyIGluIHdoaWNoIG1hYzgwMjExIHNjaGVkdWxlcyB0aGUgcXVldWVzIGRvZXMgbm90XG4rICpcdHJlYWNoIHRoZSBhaXIuIG1hYzgwMjExIHRoZW4gYXBwbGllcyB0aGUgYWlydGltZSB3ZWlnaHQgdG8gdGhlXG4rICpcdGFpcnRpbWUgcXVldWUgbGltaXQgaW5zdGVhZC5cbisgKlxuICAqIEBOVU1fSUVFRTgwMjExX0hXX0ZMQUdTOiBudW1iZXIgb2YgaGFyZHdhcmUgZmxhZ3MsIHVzZWQgZm9yIHNpemluZyBhcnJheXNcbiAgKi9cbiBlbnVtIGllZWU4MDIxMV9od19mbGFncyB7XG5AQCAtMzE0Nyw2ICszMTUzLDcgQEAgZW51bSBpZWVlODAyMTFfaHdfZmxhZ3Mge1xuIFx0SUVFRTgwMjExX0hXX0hBTkRMRVNfUVVJRVRfQ1NBLFxuIFx0SUVFRTgwMjExX0hXX1NUUklDVCxcbiBcdElFRUU4MDIxMV9IV19TVVBQT1JUU19ORFBfQkxPQ0tBQ0ssXG4rXHRJRUVFODAyMTFfSFdfVFhfTk9fUFVTSEJBQ0ssXG4gXG4gXHQvKiBrZWVwIGxhc3QsIG9idmlvdXNseSAqL1xuIFx0TlVNX0lFRUU4MDIxMV9IV19GTEFHU1xuZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxMS9kZWJ1Z2ZzLmMgYi9uZXQvbWFjODAyMTEvZGVidWdmcy5jXG5pbmRleCA4OTQ2YjAyNzc4MmNmLi5kZGJmYTk5MWVjNzRlIDEwMDY0NFxuLS0tIGEvbmV0L21hYzgwMjExL2RlYnVnZnMuY1xuKysrIGIvbmV0L21hYzgwMjExL2RlYnVnZnMuY1xuQEAgLTQ2Miw2ICs0NjIsNyBAQCBzdGF0aWMgY29uc3QgY2hhciAqaHdfZmxhZ19uYW1lc1tdID0ge1xuIFx0RkxBRyhIQU5ETEVTX1FVSUVUX0NTQSksXG4gXHRGTEFHKFNUUklDVCksXG4gXHRGTEFHKFNVUFBPUlRTX05EUF9CTE9DS0FDSyksXG4rXHRGTEFHKFRYX05PX1BVU0hCQUNLKSxcbiAjdW5kZWYgRkxBR1xuIH07XG4gXG5kaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjExL3R4LmMgYi9uZXQvbWFjODAyMTEvdHguY1xuaW5kZXggYzMzMDkyOTYwZGYyNi4uYzk0ZWZmZjQ4ZDc0NyAxMDA2NDRcbi0tLSBhL25ldC9tYWM4MDIxMS90eC5jXG4rKysgYi9uZXQvbWFjODAyMTEvdHguY1xuQEAgLTQyMTcsNiArNDIxNywyMSBAQCBFWFBPUlRfU1lNQk9MKF9faWVlZTgwMjExX3NjaGVkdWxlX3R4cSk7XG4gXG4gREVGSU5FX1NUQVRJQ19LRVlfRkFMU0UoYXFsX2Rpc2FibGUpO1xuIFxuK3N0YXRpYyB1MzIgaWVlZTgwMjExX2FxbF9zdGFfbGltaXQoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXG4rXHRcdFx0XHQgICBzdHJ1Y3Qgc3RhX2luZm8gKnN0YSwgdTMyIGxpbWl0KVxuK3tcbitcdHUzMiBzY2FsZWQ7XG4rXG4rXHRpZiAoIWllZWU4MDIxMV9od19jaGVjayhcdTAwMjZsb2NhbC1cdTAwM2VodywgVFhfTk9fUFVTSEJBQ0spIHx8XG4rXHQgICAgc3RhLVx1MDAzZWFpcnRpbWVfd2VpZ2h0ID09IElFRUU4MDIxMV9ERUZBVUxUX0FJUlRJTUVfV0VJR0hUKVxuK1x0XHRyZXR1cm4gbGltaXQ7XG4rXG4rXHRzY2FsZWQgPSBtdWx0X2ZyYWMobGltaXQsIHN0YS1cdTAwM2VhaXJ0aW1lX3dlaWdodCxcbitcdFx0XHQgICBJRUVFODAyMTFfREVGQVVMVF9BSVJUSU1FX1dFSUdIVCk7XG4rXG4rXHRyZXR1cm4gbWluKHNjYWxlZCwgbWF4KGxpbWl0LCBsb2NhbC1cdTAwM2VhcWxfdGhyZXNob2xkKSk7XG4rfVxuK1xuIGJvb2wgaWVlZTgwMjExX3R4cV9haXJ0aW1lX2NoZWNrKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuIFx0XHRcdFx0IHN0cnVjdCBpZWVlODAyMTFfdHhxICp0eHEpXG4ge1xuQEAgLTQyMzgsMTMgKzQyNTMsMTUgQEAgYm9vbCBpZWVlODAyMTFfdHhxX2FpcnRpbWVfY2hlY2soc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4gXG4gXHRzdGEgPSBjb250YWluZXJfb2YodHhxLVx1MDAzZXN0YSwgc3RydWN0IHN0YV9pbmZvLCBzdGEpO1xuIFx0aWYgKGF0b21pY19yZWFkKFx1MDAyNnN0YS1cdTAwM2VhaXJ0aW1lW3R4cS1cdTAwM2VhY10uYXFsX3R4X3BlbmRpbmcpIFx1MDAzY1xuLVx0ICAgIHN0YS1cdTAwM2VhaXJ0aW1lW3R4cS1cdTAwM2VhY10uYXFsX2xpbWl0X2xvdylcbitcdCAgICBpZWVlODAyMTFfYXFsX3N0YV9saW1pdChsb2NhbCwgc3RhLFxuK1x0XHRcdFx0ICAgIHN0YS1cdTAwM2VhaXJ0aW1lW3R4cS1cdTAwM2VhY10uYXFsX2xpbWl0X2xvdykpXG4gXHRcdHJldHVybiB0cnVlO1xuIFxuIFx0aWYgKGF0b21pY19yZWFkKFx1MDAyNmxvY2FsLVx1MDAzZWFxbF90b3RhbF9wZW5kaW5nX2FpcnRpbWUpIFx1MDAzY1xuIFx0ICAgIGxvY2FsLVx1MDAzZWFxbF90aHJlc2hvbGQgXHUwMDI2XHUwMDI2XG4gXHQgICAgYXRvbWljX3JlYWQoXHUwMDI2c3RhLVx1MDAzZWFpcnRpbWVbdHhxLVx1MDAzZWFjXS5hcWxfdHhfcGVuZGluZykgXHUwMDNjXG4tXHQgICAgc3RhLVx1MDAzZWFpcnRpbWVbdHhxLVx1MDAzZWFjXS5hcWxfbGltaXRfaGlnaClcbitcdCAgICBpZWVlODAyMTFfYXFsX3N0YV9saW1pdChsb2NhbCwgc3RhLFxuK1x0XHRcdFx0ICAgIHN0YS1cdTAwM2VhaXJ0aW1lW3R4cS1cdTAwM2VhY10uYXFsX2xpbWl0X2hpZ2gpKVxuIFx0XHRyZXR1cm4gdHJ1ZTtcbiBcbiBcdHJldHVybiBmYWxzZTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDE4OjEwOjQxLjYyODQ0ODkxMVoiLCJTZXEiOjMxLCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo4MTc0MzcxNTkxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUGF0Y2ggZm9yIFVuaW5pdGlhbGl6ZWQgTWVtb3J5IFJpc2tzKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgcGF0Y2ggYW5kIHNlZSBpZiB3ZSBuZWVkIHRvIGJyaW5nIGluIEtNU0FOLiBGaXJzdCB0aGluZ3MgZmlyc3QsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQncyBjaGFuZ2VkIGFuZCB3aGVyZSB0aGUgcG90ZW50aWFsIGZvciB1bmluaXRpYWxpemVkIG1lbW9yeSBsaWVzLlxuXG5UaGUgcGF0Y2ggaW5jbHVkZXMgYWRkaXRpb25zIHRvIGEgZmV3IGZpbGVzOiBgYXRoMTFrL21hYy5jYCwgYG1hYzgwMjExLmhgLCBgZGVidWdmcy5jYCwgYW5kIGB0eC5jYC4gSXQgbG9va3MgbGlrZSBpdCdzIGVuYWJsaW5nIGBUWF9OT19QVVNIQkFDS2AgYW5kIGFkZGluZyBzb21lIGFpcnRpbWUgd2VpZ2h0IGNhbGN1bGF0aW9ucyByZWxhdGVkIHRvIGEgbmV3IGhlbHBlciBgaWVlZTgwMjExX2FxbF9zdGFfbGltaXRgLlxuXG5TcGVjaWZpY2FsbHksIHRoaXMgYGllZWU4MDIxMV9hcWxfc3RhX2xpbWl0YCBmdW5jdGlvbiBpcyB3aGF0IEkgbmVlZCB0byBmb2N1cyBvbi4gSXQgdXNlcyBgc3RhLVx1MDAzZWFpcnRpbWVfd2VpZ2h0YC4gVGhpcyBjb3VsZCBiZSBhIHByb2JsZW0gaWYgYHN0YS1cdTAwM2VhaXJ0aW1lX3dlaWdodGAgaXNuJ3QgcHJvcGVybHkgaW5pdGlhbGl6ZWQuIEkgc2VlIHRoYXQgaWYgYGllZWU4MDIxMV9od19jaGVja2AgcmV0dXJucyB0cnVlLCBvciBgc3RhLVx1MDAzZWFpcnRpbWVfd2VpZ2h0YCBpcyBzZXQgdG8gYElFRUU4MDIxMV9ERUZBVUxUX0FJUlRJTUVfV0VJR0hUYCwgdGhlIGZ1bmN0aW9uIGRpcmVjdGx5IHJldHVybnMgYGxpbWl0YC4gSXQgb25seSBjYWxjdWxhdGVzIHNvbWV0aGluZyB3aGVuIGBzdGEtXHUwMDNlYWlydGltZV93ZWlnaHRgIGlzIHNldCB0byBzb21ldGhpbmcgZWxzZS5cblxuU28sIHRoZSBrZXkgaGVyZSBpcyB0byBjb25maXJtIGhvdyBgc3RhLVx1MDAzZWFpcnRpbWVfd2VpZ2h0YCBnZXRzIGluaXRpYWxpemVkLiBJIG5lZWQgdG8gdHJhY2Ugd2hlcmUgYHN0YWAgaXMgYWxsb2NhdGVkIGFuZCBwb3B1bGF0ZWQsIGFuZCB0aGVuIGxvb2sgZm9yIHdoZXJlIGFuZCBob3cgYGFpcnRpbWVfd2VpZ2h0YCBpcyBzZXQuIExldCdzIHN0YXJ0IHdpdGggYSBzZWFyY2ggb2YgdGhlIG1hYzgwMjExIGNvZGUgZm9yIGFueSByZWxldmFudCByZWZlcmVuY2VzIHRvIGBhaXJ0aW1lX3dlaWdodGAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1MDYsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0OTMsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQxODoxMDo0OS44MDI4MjQ1NzJaIiwiU2VxIjozMiwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY2MjU0NjM5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImFpcnRpbWVfd2VpZ2h0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9tYWM4MDIxMVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbWFjODAyMTEvY2ZnLmM9MjQ1MD1zdGF0aWMgaW50IHN0YV9hcHBseV9wYXJhbWV0ZXJzKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jLTI1ODYtXFxubmV0L21hYzgwMjExL2NmZy5jOjI1ODc6XFx0aWYgKHBhcmFtcy1cXHUwMDNlYWlydGltZV93ZWlnaHQpXFxubmV0L21hYzgwMjExL2NmZy5jOjI1ODg6XFx0XFx0c3RhLVxcdTAwM2VhaXJ0aW1lX3dlaWdodCA9IHBhcmFtcy1cXHUwMDNlYWlydGltZV93ZWlnaHQ7XFxubmV0L21hYzgwMjExL2NmZy5jLTI1ODktXFxuLS1cXG5uZXQvbWFjODAyMTEvZGVidWdmc19zdGEuYz0xODg9c3RhdGljIHNzaXplX3Qgc3RhX2FpcnRpbWVfcmVhZChzdHJ1Y3QgZmlsZSAqZmlsZSwgY2hhciBfX3VzZXIgKnVzZXJidWYsXFxuLS1cXG5uZXQvbWFjODAyMTEvZGVidWdmc19zdGEuYy0yMTMtXFx0XFx0XFxcIkRlZmljaXQ6IFZPOiAlZCB1cyBWSTogJWQgdXMgQkU6ICVkIHVzIEJLOiAlZCB1c1xcXFxuXFxcIixcXG5uZXQvbWFjODAyMTEvZGVidWdmc19zdGEuYzoyMTQ6XFx0XFx0cnhfYWlydGltZSwgdHhfYWlydGltZSwgc3RhLVxcdTAwM2VhaXJ0aW1lX3dlaWdodCxcXG5uZXQvbWFjODAyMTEvZGVidWdmc19zdGEuYy0yMTUtXFx0XFx0ZGVmaWNpdFswXSwgZGVmaWNpdFsxXSwgZGVmaWNpdFsyXSwgZGVmaWNpdFszXSk7XFxuLS1cXG5uZXQvbWFjODAyMTEvZGVidWdmc19zdGEuYz0yMjI9c3RhdGljIHNzaXplX3Qgc3RhX2FpcnRpbWVfd3JpdGUoc3RydWN0IGZpbGUgKmZpbGUsIGNvbnN0IGNoYXIgX191c2VyICp1c2VyYnVmLFxcbi0tXFxubmV0L21hYzgwMjExL2RlYnVnZnNfc3RhLmMtMjMyLVxcdFxcdHN0YS1cXHUwMDNlYWlydGltZVthY10udHhfYWlydGltZSA9IDA7XFxubmV0L21hYzgwMjExL2RlYnVnZnNfc3RhLmM6MjMzOlxcdFxcdHN0YS1cXHUwMDNlYWlydGltZVthY10uZGVmaWNpdCA9IHN0YS1cXHUwMDNlYWlydGltZV93ZWlnaHQ7XFxubmV0L21hYzgwMjExL2RlYnVnZnNfc3RhLmMtMjM0LVxcdFxcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZsb2NhbC1cXHUwMDNlYWN0aXZlX3R4cV9sb2NrW2FjXSk7XFxuLS1cXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYz02MzM9X19zdGFfaW5mb19hbGxvYyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jLTcyOS1cXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYzo3MzA6XFx0c3RhLVxcdTAwM2VhaXJ0aW1lX3dlaWdodCA9IElFRUU4MDIxMV9ERUZBVUxUX0FJUlRJTUVfV0VJR0hUO1xcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jLTczMS1cXG4tLVxcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jLTczNC1cXHRcXHRza2JfcXVldWVfaGVhZF9pbml0KFxcdTAwMjZzdGEtXFx1MDAzZXR4X2ZpbHRlcmVkW2ldKTtcXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYzo3MzU6XFx0XFx0c3RhLVxcdTAwM2VhaXJ0aW1lW2ldLmRlZmljaXQgPSBzdGEtXFx1MDAzZWFpcnRpbWVfd2VpZ2h0O1xcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jLTczNi1cXHRcXHRhdG9taWNfc2V0KFxcdTAwMjZzdGEtXFx1MDAzZWFpcnRpbWVbaV0uYXFsX3R4X3BlbmRpbmcsIDApO1xcbi0tXFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmM9MjgzNz1zdGF0aWMgdm9pZCBzdGFfc2V0X2xpbmtfc2luZm8oc3RydWN0IHN0YV9pbmZvICpzdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy0yOTU1LVxcdGlmICghKGxpbmtfc2luZm8tXFx1MDAzZWZpbGxlZCBcXHUwMDI2IEJJVF9VTEwoTkw4MDIxMV9TVEFfSU5GT19BSVJUSU1FX1dFSUdIVCkpKSB7XFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmM6Mjk1NjpcXHRcXHRsaW5rX3NpbmZvLVxcdTAwM2VhaXJ0aW1lX3dlaWdodCA9IHN0YS1cXHUwMDNlYWlydGltZV93ZWlnaHQ7XFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmMtMjk1Ny1cXHRcXHRsaW5rX3NpbmZvLVxcdTAwM2VmaWxsZWQgfD0gQklUX1VMTChOTDgwMjExX1NUQV9JTkZPX0FJUlRJTUVfV0VJR0hUKTtcXG4tLVxcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jPTMwNzk9dm9pZCBzdGFfc2V0X3NpbmZvKHN0cnVjdCBzdGFfaW5mbyAqc3RhLCBzdHJ1Y3Qgc3RhdGlvbl9pbmZvICpzaW5mbyxcXG4tLVxcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jLTMxODctXFx0aWYgKCEoc2luZm8tXFx1MDAzZWZpbGxlZCBcXHUwMDI2IEJJVF9VTEwoTkw4MDIxMV9TVEFfSU5GT19BSVJUSU1FX1dFSUdIVCkpKSB7XFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmM6MzE4ODpcXHRcXHRzaW5mby1cXHUwMDNlYWlydGltZV93ZWlnaHQgPSBzdGEtXFx1MDAzZWFpcnRpbWVfd2VpZ2h0O1xcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jLTMxODktXFx0XFx0c2luZm8tXFx1MDAzZWZpbGxlZCB8PSBCSVRfVUxMKE5MODAyMTFfU1RBX0lORk9fQUlSVElNRV9XRUlHSFQpO1xcbi0tXFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmg9NjE5PXN0cnVjdCBpZWVlODAyMTFfc3RhX3JlbW92ZWRfbGlua19zdGF0cyB7XFxuLS1cXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uaC02NzYtICpcXHRzdGF0aW9uXFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmg6Njc3OiAqIEBhaXJ0aW1lX3dlaWdodDogc3RhdGlvbiB3ZWlnaHQgZm9yIGFpcnRpbWUgZmFpcm5lc3MgY2FsY3VsYXRpb24gcHVycG9zZXNcXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uaC02NzgtICogQGFtcGR1X21sbWU6IEEtTVBEVSBzdGF0ZSBtYWNoaW5lIHN0YXRlXFxuLS1cXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uaD03MTU9c3RydWN0IHN0YV9pbmZvIHtcXG4tLVxcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5oLTc2Ni1cXHRzdHJ1Y3QgYWlydGltZV9pbmZvIGFpcnRpbWVbSUVFRTgwMjExX05VTV9BQ1NdO1xcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5oOjc2NzpcXHR1MTYgYWlydGltZV93ZWlnaHQ7XFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmgtNzY4LVxcbi0tXFxubmV0L21hYzgwMjExL3R4LmM9NDExNT1zdHJ1Y3QgaWVlZTgwMjExX3R4cSAqaWVlZTgwMjExX25leHRfdHhxKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCB1OCBhYylcXG4tLVxcbm5ldC9tYWM4MDIxMS90eC5jLTQxNTQtXFx0XFx0XFx0c3RhLVxcdTAwM2VhaXJ0aW1lW3R4cWktXFx1MDAzZXR4cS5hY10uZGVmaWNpdCArPVxcbm5ldC9tYWM4MDIxMS90eC5jOjQxNTU6XFx0XFx0XFx0XFx0c3RhLVxcdTAwM2VhaXJ0aW1lX3dlaWdodDtcXG5uZXQvbWFjODAyMTEvdHguYy00MTU2LVxcbi0tXFxubmV0L21hYzgwMjExL3R4LmM9NDIyMD1zdGF0aWMgdTMyIGllZWU4MDIxMV9hcWxfc3RhX2xpbWl0KHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxcbi0tXFxubmV0L21hYzgwMjExL3R4LmMtNDIyNS1cXHRpZiAoIWllZWU4MDIxMV9od19jaGVjayhcXHUwMDI2bG9jYWwtXFx1MDAzZWh3LCBUWF9OT19QVVNIQkFDSykgfHxcXG5uZXQvbWFjODAyMTEvdHguYzo0MjI2OlxcdCAgICBzdGEtXFx1MDAzZWFpcnRpbWVfd2VpZ2h0ID09IElFRUU4MDIxMV9ERUZBVUxUX0FJUlRJTUVfV0VJR0hUKVxcbm5ldC9tYWM4MDIxMS90eC5jLTQyMjctXFx0XFx0cmV0dXJuIGxpbWl0O1xcbm5ldC9tYWM4MDIxMS90eC5jLTQyMjgtXFxubmV0L21hYzgwMjExL3R4LmM6NDIyOTpcXHRzY2FsZWQgPSBtdWx0X2ZyYWMobGltaXQsIHN0YS1cXHUwMDNlYWlydGltZV93ZWlnaHQsXFxubmV0L21hYzgwMjExL3R4LmMtNDIzMC1cXHRcXHRcXHQgICBJRUVFODAyMTFfREVGQVVMVF9BSVJUSU1FX1dFSUdIVCk7XFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYz00MzA4PWJvb2wgaWVlZTgwMjExX3R4cV9tYXlfdHJhbnNtaXQoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYy00MzM4LVxcdFxcdGlmIChpZWVlODAyMTFfc3RhX2RlZmljaXQoc3RhLCBhYykgXFx1MDAzYyAwKVxcbm5ldC9tYWM4MDIxMS90eC5jOjQzMzk6XFx0XFx0XFx0c3RhLVxcdTAwM2VhaXJ0aW1lW2FjXS5kZWZpY2l0ICs9IHN0YS1cXHUwMDNlYWlydGltZV93ZWlnaHQ7XFxubmV0L21hYzgwMjExL3R4LmMtNDM0MC1cXHRcXHRsaXN0X21vdmVfdGFpbChcXHUwMDI2aXRlci1cXHUwMDNlc2NoZWR1bGVfb3JkZXIsIFxcdTAwMjZsb2NhbC1cXHUwMDNlYWN0aXZlX3R4cXNbYWNdKTtcXG4tLVxcbm5ldC9tYWM4MDIxMS90eC5jLTQzNDYtXFxubmV0L21hYzgwMjExL3R4LmM6NDM0NzpcXHRzdGEtXFx1MDAzZWFpcnRpbWVbYWNdLmRlZmljaXQgKz0gc3RhLVxcdTAwM2VhaXJ0aW1lX3dlaWdodDtcXG5uZXQvbWFjODAyMTEvdHguYy00MzQ4LVxcdGxpc3RfbW92ZV90YWlsKFxcdTAwMjZ0eHFpLVxcdTAwM2VzY2hlZHVsZV9vcmRlciwgXFx1MDAyNmxvY2FsLVxcdTAwM2VhY3RpdmVfdHhxc1thY10pO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQxODoxMDo0OS44NjkwODM0MTFaIiwiU2VxIjozMywiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NDk5NDU0NDE0NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBhdGNoIGZvciBVbmluaXRpYWxpemVkIE1lbW9yeSBSaXNrcyoqXG5cbk9rYXksIGxldCdzIGJyZWFrIGRvd24gdGhpcyBwYXRjaCBhbmQgc2VlIGlmIGl0IGludHJvZHVjZXMgYW55IG5hc3R5IHN1cnByaXNlcywgcGFydGljdWxhcmx5IGFyb3VuZCB1bmluaXRpYWxpemVkIG1lbW9yeS4gRmlyc3QsIHdlJ3JlIGFkZGluZyBhIG5ldyBoYXJkd2FyZSBmbGFnLCBgSUVFRTgwMjExX0hXX1RYX05PX1BVU0hCQUNLYCwgdG8gbWFjODAyMTEuIEdvb2QsIHN0YW5kYXJkIHByb2NlZHVyZS4gV2UncmUgYWxzbyBhZGRpbmcgdGhlIHN0cmluZyBuYW1lIGZvciBkZWJ1Z2ZzLCB3aGljaCBpcyBhIGNvbW1vbiBwcmFjdGljZS4gVGhpcyBpcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLiBUaGUgZmxhZyBpcyBnZXR0aW5nIHNldCB3aXRoaW4gYGF0aDExa2AsIHdoaWNoIG1ha2VzIHNlbnNlIGdpdmVuIHRoZSBjb250ZXh0LlxuXG5UaGUgbWVhdCBvZiBpdCBzZWVtcyB0byBiZSB0aGlzIG5ldyBoZWxwZXIgZnVuY3Rpb24sIGBpZWVlODAyMTFfYXFsX3N0YV9saW1pdGAuIFRoaXMgaXMgd2hlcmUgdGhlIGFpcnRpbWUgd2VpZ2h0aW5nIGNvbWVzIGluLiBJdCBhcHBlYXJzIHRoaXMgZnVuY3Rpb24gc2NhbGVzIHRoZSBBUUwgbGltaXQgYmFzZWQgb24gYSBzdGF0aW9uJ3MgYWlydGltZSB3ZWlnaHQgd2hlbiBgVFhfTk9fUFVTSEJBQ0tgIGlzIGFjdGl2ZS4gTG9va2luZyBhdCB0aGUgdmFyaWFibGVzIHVzZWQsIGl0IHNlZW1zIGxpa2Ugd2UncmUgZGVhbGluZyB3aXRoIGBsb2NhbGAsIGBzdGFgLCBhbmQgYGxpbWl0YC4gVGhlIGBzdGFgIGlzIGluaXRpYWxpemVkIGR1cmluZyBzdGF0aW9uIGNyZWF0aW9uIHdpdGggYGt6YWxsb2NgIGluIGBfX3N0YV9pbmZvX2FsbG9jYCwgYW5kLCBpbXBvcnRhbnRseSwgaXRzIGBhaXJ0aW1lX3dlaWdodGAgaXMgaW5pdGlhbGl6ZWQgYXMgd2VsbCB3aXRoIGBJRUVFODAyMTFfREVGQVVMVF9BSVJUSU1FX1dFSUdIVGAuIFRoZSBgc2NhbGVkYCB2YWx1ZSBpcyBhIGxvY2FsIGB1MzJgIHRoYXQgaXMgZXhwbGljaXRseSBjb21wdXRlZCBhbmQgYXNzaWduZWQgYmVmb3JlIGJlaW5nIHJldHVybmVkLlxuXG5Ob3csIHRoZSBjcnVjaWFsIHF1ZXN0aW9uOiBhcmUgd2UgYWNjaWRlbnRhbGx5IHJlYWRpbmcgdW5pbml0aWFsaXplZCBtZW1vcnksIGxlYWtpbmcgaW5mb3JtYXRpb24sIG9yIGludHJvZHVjaW5nIGEgdXNlLWFmdGVyLWZyZWUgc2l0dWF0aW9uPyBJdCBkb2Vzbid0IGxvb2sgbGlrZSBpdC4gVGhlIGNhbGN1bGF0aW9uIG9mIGBzY2FsZWRgIHdpdGhpbiBgaWVlZTgwMjExX2FxbF9zdGFfbGltaXRgIHVzZXMgYG11bHRfZnJhYyguLi4pYCBhbmQgcmV0dXJucyBgbWluKC4uLilgLCBzbyBpdCBzZWVtcyBwcmV0dHkgc2VsZi1jb250YWluZWQuIFRoZSBuZXcgc3RyaW5nIGVudHJ5IGluIGBkZWJ1Z2ZzLmNgIGlzIGp1c3QgYSBzdHJpbmcsIHdoaWNoIGlzIGZpbmUuIFNldHRpbmcgdGhlIGJpdCBpbiBgYXRoMTFrYCB3aXRoIGBpZWVlODAyMTFfaHdfc2V0KClgIGlzbid0IGluaGVyZW50bHkgcmlza3kuIFRoZXJlIGFyZSBubyBgY29weV90b191c2VyYCBvciBuZXRsaW5rIGNhbGxzIHRoYXQgY291bGQgYmUgbGVha2luZyBpbmZvLiBObyB1bmluaXRpYWxpemVkIGZpZWxkcyBvciBtZW1vcnkgYWxsb2NhdGlvbnMgYXJlIGJlaW5nIGRvbmUgYnkgdGhlc2UgY2hhbmdlcywgYW5kIHdlJ3JlIG5vdCBtb2RpZnlpbmcgcG9pbnRlcnMgb3IgYnVmZmVyIHNpemVzIGluIGEgd2F5IHRoYXQgd291bGQgb3BlbiB1cCB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcy5cblxuVGhlcmVmb3JlLCBteSBjb25jbHVzaW9uIGlzIHRoYXQgdGhpcyBwYXRjaCBkb2Vzbid0IGludHJvZHVjZSBhbnkgbmV3IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzLiBTdGFuZGFyZCBLQVNBTiBjaGVja3MgYW5kIGV4aXN0aW5nIHRlc3RzIHNob3VsZCBiZSBzdWZmaWNpZW50IHRvIGNhdGNoIGFueSBwb3RlbnRpYWwgcHJvYmxlbXMsIGFuZCB3ZSBjYW4gc2FmZWx5IHNldCBgTmVlZHNLTVNBTiA9IGZhbHNlYC4gTGV0J3MgbG9nIHRoaXMgd2l0aCBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NDExLCJPdXRwdXRUb2tlbnMiOjIxNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQzOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQxODoxMDo1NC44NjM2Mjk4NTZaIiwiU2VxIjozNCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjg4OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgdGhlIGBJRUVFODAyMTFfSFdfVFhfTk9fUFVTSEJBQ0tgIGhhcmR3YXJlIGZsYWcgZm9yIG1hYzgwMjExL2F0aDExayBhbmQgYWRqdXN0cyBzdGF0aW9uIEFpcnRpbWUgUXVldWUgTGltaXQgKEFRTCkgY2FsY3VsYXRpb25zIGJhc2VkIG9uIHN0YXRpb24gYWlydGltZSB3ZWlnaHQgd2hlbiB0aGlzIGZsYWcgaXMgZW5hYmxlZC5cXG5cXG5BbGwgc3RydWN0IGZpZWxkcyBhY2Nlc3NlZCAoc3VjaCBhcyBgc3RhLVxcdTAwM2VhaXJ0aW1lX3dlaWdodGAsIGBsb2NhbC1cXHUwMDNlYXFsX3RocmVzaG9sZGAsIGFuZCBgc3RhLVxcdTAwM2VhaXJ0aW1lW10uYXFsX2xpbWl0XypgKSBhcmUgc3RhbmRhcmQgaW50ZWdlciBmaWVsZHMgaW5pdGlhbGl6ZWQgZHVyaW5nIHN0YXRpb24gY3JlYXRpb24gYW5kIGRyaXZlciBjb25maWd1cmF0aW9uLiBMb2NhbCB2YXJpYWJsZXMgaW4gdGhlIG5ldyBjYWxjdWxhdGlvbiBoZWxwZXIgYGllZWU4MDIxMV9hcWxfc3RhX2xpbWl0KClgIGFyZSBleHBsaWNpdGx5IGFzc2lnbmVkIGJlZm9yZSB1c2UuIE5vIGhlYXAvc3RhY2sgYWxsb2NhdGlvbnMsIG1lbW9yeSBjb3B5IG9wZXJhdGlvbnMgdG8gdXNlciBzcGFjZSwgb3IgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMgYXJlIGludHJvZHVjZWQgb3IgbW9kaWZpZWQuXFxuXFxuVGhlcmVmb3JlLCBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBpcyBub3QgbmVlZGVkOyBhbnkgc3RhbmRhcmQgY29uY3VycmVuY3kgb3IgbG9naWMgaXNzdWVzIGFyZSBjb3ZlcmVkIGJ5IHN0YW5kYXJkIEtBU0FOL2tlcm5lbCBkZWJ1Z2dpbmcgdG9vbHMuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyB0aGUgYElFRUU4MDIxMV9IV19UWF9OT19QVVNIQkFDS2AgaGFyZHdhcmUgZmxhZyBmb3IgbWFjODAyMTEvYXRoMTFrIGFuZCBhZGp1c3RzIHN0YXRpb24gQWlydGltZSBRdWV1ZSBMaW1pdCAoQVFMKSBjYWxjdWxhdGlvbnMgYmFzZWQgb24gc3RhdGlvbiBhaXJ0aW1lIHdlaWdodCB3aGVuIHRoaXMgZmxhZyBpcyBlbmFibGVkLlxcblxcbkFsbCBzdHJ1Y3QgZmllbGRzIGFjY2Vzc2VkIChzdWNoIGFzIGBzdGEtXFx1MDAzZWFpcnRpbWVfd2VpZ2h0YCwgYGxvY2FsLVxcdTAwM2VhcWxfdGhyZXNob2xkYCwgYW5kIGBzdGEtXFx1MDAzZWFpcnRpbWVbXS5hcWxfbGltaXRfKmApIGFyZSBzdGFuZGFyZCBpbnRlZ2VyIGZpZWxkcyBpbml0aWFsaXplZCBkdXJpbmcgc3RhdGlvbiBjcmVhdGlvbiBhbmQgZHJpdmVyIGNvbmZpZ3VyYXRpb24uIExvY2FsIHZhcmlhYmxlcyBpbiB0aGUgbmV3IGNhbGN1bGF0aW9uIGhlbHBlciBgaWVlZTgwMjExX2FxbF9zdGFfbGltaXQoKWAgYXJlIGV4cGxpY2l0bHkgYXNzaWduZWQgYmVmb3JlIHVzZS4gTm8gaGVhcC9zdGFjayBhbGxvY2F0aW9ucywgbWVtb3J5IGNvcHkgb3BlcmF0aW9ucyB0byB1c2VyIHNwYWNlLCBvciB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcyBhcmUgaW50cm9kdWNlZCBvciBtb2RpZmllZC5cXG5cXG5UaGVyZWZvcmUsIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIGlzIG5vdCBuZWVkZWQ7IGFueSBzdGFuZGFyZCBjb25jdXJyZW5jeSBvciBsb2dpYyBpc3N1ZXMgYXJlIGNvdmVyZWQgYnkgc3RhbmRhcmQgS0FTQU4va2VybmVsIGRlYnVnZ2luZyB0b29scy5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowsclb4[1] Phase: Succeeded StartedAt: 2026-09-08 18:11:06 +0000 UTC FinishedAt: 2026-09-08 18:11:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsclb4[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-09-08 18:11:06 +0000 UTC FinishedAt: 2026-09-08 18:11:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsclb4[2] Phase: Succeeded StartedAt: 2026-09-08 18:11:06 +0000 UTC FinishedAt: 2026-09-08 21:53:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsclb4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","ATH11K","MAC80211_DEBUGFS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_txq_airtime_check","ieee80211_aql_sta_limit","ieee80211_next_txq","ieee80211_tx_dequeue","__ath11k_mac_register"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","ATH11K","MAC80211_DEBUGFS"],"series_id":"0a30ddee-6301-45fc-a29d-da278b79e983","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-09-08 18:11:06 +0000 UTC FinishedAt: 2026-09-08 21:53:28 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","ATH11K","MAC80211_DEBUGFS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_txq_airtime_check","ieee80211_aql_sta_limit","ieee80211_next_txq","ieee80211_tx_dequeue","__ath11k_mac_register"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","ATH11K","MAC80211_DEBUGFS"],"series_id":"0a30ddee-6301-45fc-a29d-da278b79e983","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowsclb4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","ATH11K","MAC80211_DEBUGFS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_txq_airtime_check","ieee80211_aql_sta_limit","ieee80211_next_txq","ieee80211_tx_dequeue","__ath11k_mac_register"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","ATH11K","MAC80211_DEBUGFS"],"series_id":"0a30ddee-6301-45fc-a29d-da278b79e983","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-09-08 18:11:06 +0000 UTC FinishedAt: 2026-09-08 18:11:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsclb4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","ATH11K","MAC80211_DEBUGFS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_txq_airtime_check","ieee80211_aql_sta_limit","ieee80211_next_txq","ieee80211_tx_dequeue","__ath11k_mac_register"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","ATH11K","MAC80211_DEBUGFS"],"series_id":"0a30ddee-6301-45fc-a29d-da278b79e983","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-09-08 18:11:06 +0000 UTC FinishedAt: 2026-09-08 18:11:12 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","ATH11K","MAC80211_DEBUGFS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.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-workflowsclb4/series-workflowsclb4-convert-artifact-546369981/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowsclb4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","ATH11K","MAC80211_DEBUGFS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_txq_airtime_check","ieee80211_aql_sta_limit","ieee80211_next_txq","ieee80211_tx_dequeue","__ath11k_mac_register"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","ATH11K","MAC80211_DEBUGFS"],"series_id":"0a30ddee-6301-45fc-a29d-da278b79e983","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-09-08 18:11:16 +0000 UTC FinishedAt: 2026-09-08 18:28:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsclb4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","ATH11K","MAC80211_DEBUGFS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_txq_airtime_check","ieee80211_aql_sta_limit","ieee80211_next_txq","ieee80211_tx_dequeue","__ath11k_mac_register"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","ATH11K","MAC80211_DEBUGFS"],"series_id":"0a30ddee-6301-45fc-a29d-da278b79e983","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-09-08 18:11:16 +0000 UTC FinishedAt: 2026-09-08 18:28:32 +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:*cd09f92f-be80-4cb4-a8a2-d4792d2dbda9,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-workflowsclb4/series-workflowsclb4-convert-artifact-546369981/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": "fe157e95-698e-4111-a15c-144da97382dd", "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-workflowsclb4/series-workflowsclb4-build-action-1122638579/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowsclb4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","ATH11K","MAC80211_DEBUGFS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_txq_airtime_check","ieee80211_aql_sta_limit","ieee80211_next_txq","ieee80211_tx_dequeue","__ath11k_mac_register"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","ATH11K","MAC80211_DEBUGFS"],"series_id":"0a30ddee-6301-45fc-a29d-da278b79e983","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-09-08 18:11:16 +0000 UTC FinishedAt: 2026-09-08 18:28:22 +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:*cd09f92f-be80-4cb4-a8a2-d4792d2dbda9,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-workflowsclb4/series-workflowsclb4-convert-artifact-546369981/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": "fe157e95-698e-4111-a15c-144da97382dd", "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-workflowsclb4/series-workflowsclb4-build-action-1122638579/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowsclb4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","ATH11K","MAC80211_DEBUGFS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_txq_airtime_check","ieee80211_aql_sta_limit","ieee80211_next_txq","ieee80211_tx_dequeue","__ath11k_mac_register"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","ATH11K","MAC80211_DEBUGFS"],"series_id":"0a30ddee-6301-45fc-a29d-da278b79e983","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-09-08 18:28:32 +0000 UTC FinishedAt: 2026-09-08 18:28:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsclb4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","ATH11K","MAC80211_DEBUGFS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_txq_airtime_check","ieee80211_aql_sta_limit","ieee80211_next_txq","ieee80211_tx_dequeue","__ath11k_mac_register"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","ATH11K","MAC80211_DEBUGFS"],"series_id":"0a30ddee-6301-45fc-a29d-da278b79e983","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-09-08 18:28:32 +0000 UTC FinishedAt: 2026-09-08 18:28:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsclb4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","ATH11K","MAC80211_DEBUGFS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_txq_airtime_check","ieee80211_aql_sta_limit","ieee80211_next_txq","ieee80211_tx_dequeue","__ath11k_mac_register"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","ATH11K","MAC80211_DEBUGFS"],"series_id":"0a30ddee-6301-45fc-a29d-da278b79e983","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-09-08 18:28:32 +0000 UTC FinishedAt: 2026-09-08 18:28:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsclb4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","ATH11K","MAC80211_DEBUGFS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_txq_airtime_check","ieee80211_aql_sta_limit","ieee80211_next_txq","ieee80211_tx_dequeue","__ath11k_mac_register"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","ATH11K","MAC80211_DEBUGFS"],"series_id":"0a30ddee-6301-45fc-a29d-da278b79e983","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-09-08 18:28:32 +0000 UTC FinishedAt: 2026-09-08 18:28:37 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","ATH11K","MAC80211_DEBUGFS"],"series_id":"0a30ddee-6301-45fc-a29d-da278b79e983","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.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-workflowsclb4/series-workflowsclb4-convert-artifact-3617713176/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowsclb4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","ATH11K","MAC80211_DEBUGFS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_txq_airtime_check","ieee80211_aql_sta_limit","ieee80211_next_txq","ieee80211_tx_dequeue","__ath11k_mac_register"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","ATH11K","MAC80211_DEBUGFS"],"series_id":"0a30ddee-6301-45fc-a29d-da278b79e983","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-09-08 18:28:42 +0000 UTC FinishedAt: 2026-09-08 18:30:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsclb4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","ATH11K","MAC80211_DEBUGFS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_txq_airtime_check","ieee80211_aql_sta_limit","ieee80211_next_txq","ieee80211_tx_dequeue","__ath11k_mac_register"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","ATH11K","MAC80211_DEBUGFS"],"series_id":"0a30ddee-6301-45fc-a29d-da278b79e983","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-09-08 18:28:42 +0000 UTC FinishedAt: 2026-09-08 18:30:21 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*fe157e95-698e-4111-a15c-144da97382dd,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-workflowsclb4/series-workflowsclb4-build-action-1122638579/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-workflowsclb4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","ATH11K","MAC80211_DEBUGFS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_txq_airtime_check","ieee80211_aql_sta_limit","ieee80211_next_txq","ieee80211_tx_dequeue","__ath11k_mac_register"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","ATH11K","MAC80211_DEBUGFS"],"series_id":"0a30ddee-6301-45fc-a29d-da278b79e983","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-09-08 18:30:29 +0000 UTC FinishedAt: 2026-09-08 18:30:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsclb4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","ATH11K","MAC80211_DEBUGFS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_txq_airtime_check","ieee80211_aql_sta_limit","ieee80211_next_txq","ieee80211_tx_dequeue","__ath11k_mac_register"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","ATH11K","MAC80211_DEBUGFS"],"series_id":"0a30ddee-6301-45fc-a29d-da278b79e983","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-09-08 18:30:29 +0000 UTC FinishedAt: 2026-09-08 18:30:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsclb4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","ATH11K","MAC80211_DEBUGFS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_txq_airtime_check","ieee80211_aql_sta_limit","ieee80211_next_txq","ieee80211_tx_dequeue","__ath11k_mac_register"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","ATH11K","MAC80211_DEBUGFS"],"series_id":"0a30ddee-6301-45fc-a29d-da278b79e983","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-09-08 18:30:29 +0000 UTC FinishedAt: 2026-09-08 18:48:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsclb4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","ATH11K","MAC80211_DEBUGFS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_txq_airtime_check","ieee80211_aql_sta_limit","ieee80211_next_txq","ieee80211_tx_dequeue","__ath11k_mac_register"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","ATH11K","MAC80211_DEBUGFS"],"series_id":"0a30ddee-6301-45fc-a29d-da278b79e983","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-09-08 18:30:29 +0000 UTC FinishedAt: 2026-09-08 18:48:54 +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:*cd09f92f-be80-4cb4-a8a2-d4792d2dbda9,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-workflowsclb4/series-workflowsclb4-convert-artifact-3617713176/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": "162f9712-61b8-4fe6-bb51-1d67f63b1601", "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-workflowsclb4/series-workflowsclb4-build-action-1880441988/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowsclb4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","ATH11K","MAC80211_DEBUGFS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_txq_airtime_check","ieee80211_aql_sta_limit","ieee80211_next_txq","ieee80211_tx_dequeue","__ath11k_mac_register"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","ATH11K","MAC80211_DEBUGFS"],"series_id":"0a30ddee-6301-45fc-a29d-da278b79e983","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-09-08 18:30:29 +0000 UTC FinishedAt: 2026-09-08 18:48:44 +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:*cd09f92f-be80-4cb4-a8a2-d4792d2dbda9,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-workflowsclb4/series-workflowsclb4-convert-artifact-3617713176/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": "162f9712-61b8-4fe6-bb51-1d67f63b1601", "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-workflowsclb4/series-workflowsclb4-build-action-1880441988/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowsclb4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","ATH11K","MAC80211_DEBUGFS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_txq_airtime_check","ieee80211_aql_sta_limit","ieee80211_next_txq","ieee80211_tx_dequeue","__ath11k_mac_register"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","ATH11K","MAC80211_DEBUGFS"],"series_id":"0a30ddee-6301-45fc-a29d-da278b79e983","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-09-08 18:48:54 +0000 UTC FinishedAt: 2026-09-08 18:48:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsclb4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","ATH11K","MAC80211_DEBUGFS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_txq_airtime_check","ieee80211_aql_sta_limit","ieee80211_next_txq","ieee80211_tx_dequeue","__ath11k_mac_register"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","ATH11K","MAC80211_DEBUGFS"],"series_id":"0a30ddee-6301-45fc-a29d-da278b79e983","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-09-08 18:48:54 +0000 UTC FinishedAt: 2026-09-08 18:48:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsclb4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","ATH11K","MAC80211_DEBUGFS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_txq_airtime_check","ieee80211_aql_sta_limit","ieee80211_next_txq","ieee80211_tx_dequeue","__ath11k_mac_register"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","ATH11K","MAC80211_DEBUGFS"],"series_id":"0a30ddee-6301-45fc-a29d-da278b79e983","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-09-08 18:48:54 +0000 UTC FinishedAt: 2026-09-08 18:50:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsclb4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","ATH11K","MAC80211_DEBUGFS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_txq_airtime_check","ieee80211_aql_sta_limit","ieee80211_next_txq","ieee80211_tx_dequeue","__ath11k_mac_register"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","ATH11K","MAC80211_DEBUGFS"],"series_id":"0a30ddee-6301-45fc-a29d-da278b79e983","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-09-08 18:48:54 +0000 UTC FinishedAt: 2026-09-08 18:50:24 +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:*162f9712-61b8-4fe6-bb51-1d67f63b1601,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-workflowsclb4/series-workflowsclb4-build-action-1880441988/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-workflowsclb4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","ATH11K","MAC80211_DEBUGFS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_txq_airtime_check","ieee80211_aql_sta_limit","ieee80211_next_txq","ieee80211_tx_dequeue","__ath11k_mac_register"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","ATH11K","MAC80211_DEBUGFS"],"series_id":"0a30ddee-6301-45fc-a29d-da278b79e983","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-09-08 18:50:34 +0000 UTC FinishedAt: 2026-09-08 21:53:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsclb4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","ATH11K","MAC80211_DEBUGFS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_txq_airtime_check","ieee80211_aql_sta_limit","ieee80211_next_txq","ieee80211_tx_dequeue","__ath11k_mac_register"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","ATH11K","MAC80211_DEBUGFS"],"series_id":"0a30ddee-6301-45fc-a29d-da278b79e983","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-09-08 18:50:34 +0000 UTC FinishedAt: 2026-09-08 21:53:28 +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":["ieee80211_txq_airtime_check","ieee80211_aql_sta_limit","ieee80211_next_txq","ieee80211_tx_dequeue","__ath11k_mac_register"],"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:*fe157e95-698e-4111-a15c-144da97382dd,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*162f9712-61b8-4fe6-bb51-1d67f63b1601,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-workflowsclb4/series-workflowsclb4-build-action-1122638579/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-workflowsclb4/series-workflowsclb4-build-action-1880441988/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowsclb4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","ATH11K","MAC80211_DEBUGFS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_txq_airtime_check","ieee80211_aql_sta_limit","ieee80211_next_txq","ieee80211_tx_dequeue","__ath11k_mac_register"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","ATH11K","MAC80211_DEBUGFS"],"series_id":"0a30ddee-6301-45fc-a29d-da278b79e983","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-09-08 18:50:34 +0000 UTC FinishedAt: 2026-09-08 18:50:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsclb4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","ATH11K","MAC80211_DEBUGFS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_txq_airtime_check","ieee80211_aql_sta_limit","ieee80211_next_txq","ieee80211_tx_dequeue","__ath11k_mac_register"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","ATH11K","MAC80211_DEBUGFS"],"series_id":"0a30ddee-6301-45fc-a29d-da278b79e983","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-09-08 18:50:34 +0000 UTC FinishedAt: 2026-09-08 18:50:40 +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":["ieee80211_txq_airtime_check","ieee80211_aql_sta_limit","ieee80211_next_txq","ieee80211_tx_dequeue","__ath11k_mac_register"],"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-workflowsclb4/series-workflowsclb4-convert-artifact-3538689009/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowsclb4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","ATH11K","MAC80211_DEBUGFS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_txq_airtime_check","ieee80211_aql_sta_limit","ieee80211_next_txq","ieee80211_tx_dequeue","__ath11k_mac_register"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","ATH11K","MAC80211_DEBUGFS"],"series_id":"0a30ddee-6301-45fc-a29d-da278b79e983","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-09-08 18:50:34 +0000 UTC FinishedAt: 2026-09-08 18:50:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsclb4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","ATH11K","MAC80211_DEBUGFS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_txq_airtime_check","ieee80211_aql_sta_limit","ieee80211_next_txq","ieee80211_tx_dequeue","__ath11k_mac_register"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","ATH11K","MAC80211_DEBUGFS"],"series_id":"0a30ddee-6301-45fc-a29d-da278b79e983","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-09-08 18:50:34 +0000 UTC FinishedAt: 2026-09-08 18:50:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsclb4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","ATH11K","MAC80211_DEBUGFS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_txq_airtime_check","ieee80211_aql_sta_limit","ieee80211_next_txq","ieee80211_tx_dequeue","__ath11k_mac_register"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","ATH11K","MAC80211_DEBUGFS"],"series_id":"0a30ddee-6301-45fc-a29d-da278b79e983","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-09-08 18:50:34 +0000 UTC FinishedAt: 2026-09-08 18:50:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsclb4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","ATH11K","MAC80211_DEBUGFS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_txq_airtime_check","ieee80211_aql_sta_limit","ieee80211_next_txq","ieee80211_tx_dequeue","__ath11k_mac_register"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","ATH11K","MAC80211_DEBUGFS"],"series_id":"0a30ddee-6301-45fc-a29d-da278b79e983","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-09-08 18:50:44 +0000 UTC FinishedAt: 2026-09-08 21:53:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsclb4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","ATH11K","MAC80211_DEBUGFS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_txq_airtime_check","ieee80211_aql_sta_limit","ieee80211_next_txq","ieee80211_tx_dequeue","__ath11k_mac_register"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","ATH11K","MAC80211_DEBUGFS"],"series_id":"0a30ddee-6301-45fc-a29d-da278b79e983","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-09-08 18:50:44 +0000 UTC FinishedAt: 2026-09-08 21:53:17 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*fe157e95-698e-4111-a15c-144da97382dd,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*162f9712-61b8-4fe6-bb51-1d67f63b1601,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-workflowsclb4/series-workflowsclb4-build-action-1122638579/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-workflowsclb4/series-workflowsclb4-build-action-1880441988/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-workflowsclb4/series-workflowsclb4-convert-artifact-3538689009/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,}