Name: series-workflow5b2pt Phase: Succeeded StartedAt: 2026-07-01 23:41:01 +0000 UTC FinishedAt: 2026-07-02 02:10:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5b2pt[0] Phase: Succeeded StartedAt: 2026-07-01 23:41:01 +0000 UTC FinishedAt: 2026-07-02 00:16:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5b2pt[0].run-triage Phase: Succeeded StartedAt: 2026-07-01 23:41:01 +0000 UTC FinishedAt: 2026-07-02 00:16:10 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "665159e246749578d4e4bfe106ee3b74edcdab18", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "ATH10K", "ATH10K_USB", "ATH10K_DFS_CERTIFIED", "ATH9K", "ATH9K_DFS_CERTIFIED", "CFG80211_CERTIFICATION_ONUS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "665159e246749578d4e4bfe106ee3b74edcdab18", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "ATH10K", "ATH10K_USB", "ATH10K_DFS_CERTIFIED", "ATH9K", "ATH9K_DFS_CERTIFIED", "CFG80211_CERTIFICATION_ONUS" ], "series_id": "5bdec362-58bd-417a-817a-d672db7dbac8" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "ath10k_wmi_event_dfs", "ath10k_wmi_event_phyerr", "ath9k_dfs_process_phyerr" ], "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+CgkJCTx0ZD4yMDI2LzA3LzAyIDAwOjEzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0FUSDEwSyYjMzQ7LAogICAgJiMzNDtBVEgxMEtfVVNCJiMzNDssCiAgICAmIzM0O0FUSDEwS19ERlNfQ0VSVElGSUVEJiMzNDssCiAgICAmIzM0O0FUSDlLJiMzNDssCiAgICAmIzM0O0FUSDlLX0RGU19DRVJUSUZJRUQmIzM0OywKICAgICYjMzQ7Q0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YXRoMTBrX3dtaV9ldmVudF9kZnMmIzM0OywKICAgICYjMzQ7YXRoMTBrX3dtaV9ldmVudF9waHllcnImIzM0OywKICAgICYjMzQ7YXRoOWtfZGZzX3Byb2Nlc3NfcGh5ZXJyJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlcGxhY2VzIGEgZGl2aXNpb24gd2l0aCBhIHJlY2lwcm9jYWwgbXVsdGlwbGljYXRpb24gaW4gdGhlIEF0aGVyb3MgREZTIFBSSSBkZXRlY3RvciBsb2dpYy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgYWx0ZXJzIHRoZSBjb3JlIGxvZ2ljIG9mIHJhZGFyIHB1bHNlIGRldGVjdGlvbi4gVGhlIGNvZGUgaXMgcmVhY2hhYmxlIHZpYSB0aGUgYXRoMTBrX3VzYiBkcml2ZXIgdXNpbmcgVVNCIGZ1enppbmcsIGFzIFdNSSBldmVudHMgY29udGFpbmluZyBQSFkgZXJyb3JzIGNhbiB0cmlnZ2VyIHRoZSBERlMgcmFkYXIgcmVwb3J0IHBhdGguJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMDA6MTM8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBmYTg3NDZmMmJmY2Q3ZmJkNTFiMDU3MTIwMGE2NGE3NmY5ZmMzMDBmXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdWwgMiAwMDoxMzoyMiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3ByaV9kZXRlY3Rvci5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wcmlfZGV0ZWN0b3IuY1xuaW5kZXggMzg4ZjlkMTkxM2JkOWQuLjUyMGZkMTU2N2EwYmFkIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wcmlfZGV0ZWN0b3IuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wcmlfZGV0ZWN0b3IuY1xuQEAgLTE2LDYgJiM0MzsxNiw3IEBAXG4gXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvc2xhYi5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvc3BpbmxvY2suaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9yZWNpcHJvY2FsX2Rpdi5oXHUwMDNlXG4gXG4gI2luY2x1ZGUgXCYjMzQ7YXRoLmhcJiMzNDtcbiAjaW5jbHVkZSBcJiMzNDtkZnNfcGF0dGVybl9kZXRlY3Rvci5oXCYjMzQ7XG5AQCAtNDEsNyAmIzQzOzQyLDkgQEAgc3RydWN0IHB1bHNlX2VsZW0ge1xuICAqIHBkZV9nZXRfbXVsdGlwbGUoKSAtIGdldCBudW1iZXIgb2YgbXVsdGlwbGVzIGNvbnNpZGVyaW5nIGEgZ2l2ZW4gdG9sZXJhbmNlXG4gICogUmV0dXJuIHZhbHVlOiBmYWN0b3IgaWYgYWJzKHZhbCAtIGZhY3RvcipmcmFjdGlvbikgXHUwMDNjPSB0b2xlcmFuY2UsIDAgb3RoZXJ3aXNlXG4gICovXG4tc3RhdGljIHUzMiBwZGVfZ2V0X211bHRpcGxlKHUzMiB2YWwsIHUzMiBmcmFjdGlvbiwgdTMyIHRvbGVyYW5jZSlcbiYjNDM7c3RhdGljIHUzMiBwZGVfZ2V0X211bHRpcGxlKHUzMiB2YWwsIHUzMiBmcmFjdGlvbixcbiYjNDM7XHRcdFx0ICAgIHN0cnVjdCByZWNpcHJvY2FsX3ZhbHVlIGZyYWN0aW9uX3JlY2lwLFxuJiM0MztcdFx0XHQgICAgdTMyIHRvbGVyYW5jZSlcbiB7XG4gXHR1MzIgcmVtYWluZGVyO1xuIFx0dTMyIGZhY3RvcjtcbkBAIC01Niw4ICYjNDM7NTksOCBAQCBzdGF0aWMgdTMyIHBkZV9nZXRfbXVsdGlwbGUodTMyIHZhbCwgdTMyIGZyYWN0aW9uLCB1MzIgdG9sZXJhbmNlKVxuIFx0XHQvKiB2YWwgYW5kIGZyYWN0aW9uIGFyZSB3aXRoaW4gdG9sZXJhbmNlICovXG4gXHRcdHJldHVybiAxO1xuIFxuLVx0ZmFjdG9yID0gdmFsIC8gZnJhY3Rpb247XG4tXHRyZW1haW5kZXIgPSB2YWwgJSBmcmFjdGlvbjtcbiYjNDM7XHRmYWN0b3IgPSByZWNpcHJvY2FsX2RpdmlkZSh2YWwsIGZyYWN0aW9uX3JlY2lwKTtcbiYjNDM7XHRyZW1haW5kZXIgPSB2YWwgLSBmYWN0b3IgKiBmcmFjdGlvbjtcbiBcdGlmIChyZW1haW5kZXIgXHUwMDNlIHRvbGVyYW5jZSkge1xuIFx0XHQvKiBubyBleGFjdCBtYXRjaCAqL1xuIFx0XHRpZiAoKGZyYWN0aW9uIC0gcmVtYWluZGVyKSBcdTAwM2M9IHRvbGVyYW5jZSlcbkBAIC0yNDcsNiAmIzQzOzI1MCw5IEBAIHN0YXRpYyBib29sIHBzZXFfaGFuZGxlcl9jcmVhdGVfc2VxdWVuY2VzKHN0cnVjdCBwcmlfZGV0ZWN0b3IgKnBkZSxcbiBcdFx0cHMubGFzdF90cyA9IHRzO1xuIFx0XHRwcy5wcmkgPSBHRVRfUFJJX1RPX1VTRShwZGUtXHUwMDNlcnMtXHUwMDNlcHJpX21pbixcbiBcdFx0XHRwZGUtXHUwMDNlcnMtXHUwMDNlcHJpX21heCwgdHMgLSBwLVx1MDAzZXRzKTtcbiYjNDM7XHRcdHBzLnByaV9yZWNpcCA9IChzdHJ1Y3QgcmVjaXByb2NhbF92YWx1ZSl7fTtcbiYjNDM7XHRcdGlmIChwcy5wcmkpXG4mIzQzO1x0XHRcdHBzLnByaV9yZWNpcCA9IHJlY2lwcm9jYWxfdmFsdWUocHMucHJpKTtcbiBcdFx0cHMuZHVyID0gcHMucHJpICogKHBkZS1cdTAwM2Vycy1cdTAwM2VwcGIgLSAxKVxuIFx0XHRcdFx0JiM0MzsgMiAqIHBkZS1cdTAwM2Vycy1cdTAwM2VtYXhfcHJpX3RvbGVyYW5jZTtcbiBcbkBAIC0yNjEsNiAmIzQzOzI2Nyw3IEBAIHN0YXRpYyBib29sIHBzZXFfaGFuZGxlcl9jcmVhdGVfc2VxdWVuY2VzKHN0cnVjdCBwcmlfZGV0ZWN0b3IgKnBkZSxcbiBcdFx0XHRcdGJyZWFrO1xuIFx0XHRcdC8qIGNoZWNrIGlmIHB1bHNlIG1hdGNoIChtdWx0aSlQUkkgKi9cbiBcdFx0XHRmYWN0b3IgPSBwZGVfZ2V0X211bHRpcGxlKHBzLmxhc3RfdHMgLSBwMi1cdTAwM2V0cywgcHMucHJpLFxuJiM0MztcdFx0XHRcdFx0XHQgIHBzLnByaV9yZWNpcCxcbiBcdFx0XHRcdFx0XHQgIHBkZS1cdTAwM2Vycy1cdTAwM2VtYXhfcHJpX3RvbGVyYW5jZSk7XG4gXHRcdFx0aWYgKGZhY3RvciBcdTAwM2UgMCkge1xuIFx0XHRcdFx0cHMuY291bnQmIzQzOyYjNDM7O1xuQEAgLTMxOCw2ICYjNDM7MzI1LDcgQEAgcHNlcV9oYW5kbGVyX2FkZF90b19leGlzdGluZ19zZXFzKHN0cnVjdCBwcmlfZGV0ZWN0b3IgKnBkZSwgdTY0IHRzKVxuIFxuIFx0XHRkZWx0YV90cyA9IHRzIC0gcHMtXHUwMDNlbGFzdF90cztcbiBcdFx0ZmFjdG9yID0gcGRlX2dldF9tdWx0aXBsZShkZWx0YV90cywgcHMtXHUwMDNlcHJpLFxuJiM0MztcdFx0XHRcdFx0ICBwcy1cdTAwM2VwcmlfcmVjaXAsXG4gXHRcdFx0XHRcdCAgcGRlLVx1MDAzZXJzLVx1MDAzZW1heF9wcmlfdG9sZXJhbmNlKTtcbiBcdFx0aWYgKGZhY3RvciBcdTAwM2UgMCkge1xuIFx0XHRcdHBzLVx1MDAzZWxhc3RfdHMgPSB0cztcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3ByaV9kZXRlY3Rvci5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wcmlfZGV0ZWN0b3IuaFxuaW5kZXggODYzMzlmMmI0ZDNhOWUuLmM1MTk0NjZjZmY4YjEyIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wcmlfZGV0ZWN0b3IuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wcmlfZGV0ZWN0b3IuaFxuQEAgLTE4LDYgJiM0MzsxOCw3IEBAXG4gI2RlZmluZSBERlNfUFJJX0RFVEVDVE9SX0hcbiBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9saXN0LmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvcmVjaXByb2NhbF9kaXYuaFx1MDAzZVxuIFxuIGV4dGVybiBzdHJ1Y3QgYXRoX2Rmc19wb29sX3N0YXRzIGdsb2JhbF9kZnNfcG9vbF9zdGF0cztcbiBcbkBAIC0yNSw2ICYjNDM7MjYsNyBAQCBleHRlcm4gc3RydWN0IGF0aF9kZnNfcG9vbF9zdGF0cyBnbG9iYWxfZGZzX3Bvb2xfc3RhdHM7XG4gICogc3RydWN0IHByaV9zZXF1ZW5jZSAtIHNlcXVlbmNlIG9mIHB1bHNlcyBtYXRjaGluZyBvbmUgUFJJXG4gICogQGhlYWQ6IGxpc3RfaGVhZFxuICAqIEBwcmk6IHB1bHNlIHJlcGV0aXRpb24gaW50ZXJ2YWwgKFBSSSkgaW4gdXNlY3NcbiYjNDM7ICogQHByaV9yZWNpcDogY2FjaGVkIHJlY2lwcm9jYWwgdmFsdWUgZm9yIFBSSSBkaXZpc2lvbnNcbiAgKiBAZHVyOiBkdXJhdGlvbiBvZiBzZXF1ZW5jZSBpbiB1c2Vjc1xuICAqIEBjb3VudDogbnVtYmVyIG9mIHB1bHNlcyBpbiB0aGlzIHNlcXVlbmNlXG4gICogQGNvdW50X2ZhbHNlczogbnVtYmVyIG9mIG5vdCBtYXRjaGluZyBwdWxzZXMgaW4gdGhpcyBzZXF1ZW5jZVxuQEAgLTM1LDYgJiM0MzszNyw3IEBAIGV4dGVybiBzdHJ1Y3QgYXRoX2Rmc19wb29sX3N0YXRzIGdsb2JhbF9kZnNfcG9vbF9zdGF0cztcbiBzdHJ1Y3QgcHJpX3NlcXVlbmNlIHtcbiBcdHN0cnVjdCBsaXN0X2hlYWQgaGVhZDtcbiBcdHUzMiBwcmk7XG4mIzQzO1x0c3RydWN0IHJlY2lwcm9jYWxfdmFsdWUgcHJpX3JlY2lwO1xuIFx0dTMyIGR1cjtcbiBcdHUzMiBjb3VudDtcbiBcdHUzMiBjb3VudF9mYWxzZXM7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMDA6MTM8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QVRIMTBLJiMzNDssCiAgICAmIzM0O0FUSDEwS19VU0ImIzM0OywKICAgICYjMzQ7QVRIMTBLX0RGU19DRVJUSUZJRUQmIzM0OywKICAgICYjMzQ7QVRIOUsmIzM0OywKICAgICYjMzQ7QVRIOUtfREZTX0NFUlRJRklFRCYjMzQ7LAogICAgJiMzNDtDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDthdGgxMGtfd21pX2V2ZW50X2RmcyYjMzQ7LAogICAgJiMzNDthdGgxMGtfd21pX2V2ZW50X3BoeWVyciYjMzQ7LAogICAgJiMzNDthdGg5a19kZnNfcHJvY2Vzc19waHllcnImIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcmVwbGFjZXMgYSBkaXZpc2lvbiB3aXRoIGEgcmVjaXByb2NhbCBtdWx0aXBsaWNhdGlvbiBpbiB0aGUgQXRoZXJvcyBERlMgUFJJIGRldGVjdG9yIGxvZ2ljLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBhbHRlcnMgdGhlIGNvcmUgbG9naWMgb2YgcmFkYXIgcHVsc2UgZGV0ZWN0aW9uLiBUaGUgY29kZSBpcyByZWFjaGFibGUgdmlhIHRoZSBhdGgxMGtfdXNiIGRyaXZlciB1c2luZyBVU0IgZnV6emluZywgYXMgV01JIGV2ZW50cyBjb250YWluaW5nIFBIWSBlcnJvcnMgY2FuIHRyaWdnZXIgdGhlIERGUyByYWRhciByZXBvcnQgcGF0aC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZmE4NzQ2ZjJiZmNkN2ZiZDUxYjA1NzEyMDBhNjRhNzZmOWZjMzAwZgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgSnVsIDIgMDA6MTM6MjIgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3ByaV9kZXRlY3Rvci5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wcmlfZGV0ZWN0b3IuYwppbmRleCAzODhmOWQxOTEzYmQ5ZC4uNTIwZmQxNTY3YTBiYWQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcHJpX2RldGVjdG9yLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wcmlfZGV0ZWN0b3IuYwpAQCAtMTYsNiAmIzQzOzE2LDcgQEAKIAogI2luY2x1ZGUgJmx0O2xpbnV4L3NsYWIuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9zcGlubG9jay5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9yZWNpcHJvY2FsX2Rpdi5oJmd0OwogCiAjaW5jbHVkZSAmIzM0O2F0aC5oJiMzNDsKICNpbmNsdWRlICYjMzQ7ZGZzX3BhdHRlcm5fZGV0ZWN0b3IuaCYjMzQ7CkBAIC00MSw3ICYjNDM7NDIsOSBAQCBzdHJ1Y3QgcHVsc2VfZWxlbSB7CiAgKiBwZGVfZ2V0X211bHRpcGxlKCkgLSBnZXQgbnVtYmVyIG9mIG11bHRpcGxlcyBjb25zaWRlcmluZyBhIGdpdmVuIHRvbGVyYW5jZQogICogUmV0dXJuIHZhbHVlOiBmYWN0b3IgaWYgYWJzKHZhbCAtIGZhY3RvcipmcmFjdGlvbikgJmx0Oz0gdG9sZXJhbmNlLCAwIG90aGVyd2lzZQogICovCi1zdGF0aWMgdTMyIHBkZV9nZXRfbXVsdGlwbGUodTMyIHZhbCwgdTMyIGZyYWN0aW9uLCB1MzIgdG9sZXJhbmNlKQomIzQzO3N0YXRpYyB1MzIgcGRlX2dldF9tdWx0aXBsZSh1MzIgdmFsLCB1MzIgZnJhY3Rpb24sCiYjNDM7CQkJICAgIHN0cnVjdCByZWNpcHJvY2FsX3ZhbHVlIGZyYWN0aW9uX3JlY2lwLAomIzQzOwkJCSAgICB1MzIgdG9sZXJhbmNlKQogewogCXUzMiByZW1haW5kZXI7CiAJdTMyIGZhY3RvcjsKQEAgLTU2LDggJiM0Mzs1OSw4IEBAIHN0YXRpYyB1MzIgcGRlX2dldF9tdWx0aXBsZSh1MzIgdmFsLCB1MzIgZnJhY3Rpb24sIHUzMiB0b2xlcmFuY2UpCiAJCS8qIHZhbCBhbmQgZnJhY3Rpb24gYXJlIHdpdGhpbiB0b2xlcmFuY2UgKi8KIAkJcmV0dXJuIDE7CiAKLQlmYWN0b3IgPSB2YWwgLyBmcmFjdGlvbjsKLQlyZW1haW5kZXIgPSB2YWwgJSBmcmFjdGlvbjsKJiM0MzsJZmFjdG9yID0gcmVjaXByb2NhbF9kaXZpZGUodmFsLCBmcmFjdGlvbl9yZWNpcCk7CiYjNDM7CXJlbWFpbmRlciA9IHZhbCAtIGZhY3RvciAqIGZyYWN0aW9uOwogCWlmIChyZW1haW5kZXIgJmd0OyB0b2xlcmFuY2UpIHsKIAkJLyogbm8gZXhhY3QgbWF0Y2ggKi8KIAkJaWYgKChmcmFjdGlvbiAtIHJlbWFpbmRlcikgJmx0Oz0gdG9sZXJhbmNlKQpAQCAtMjQ3LDYgJiM0MzsyNTAsOSBAQCBzdGF0aWMgYm9vbCBwc2VxX2hhbmRsZXJfY3JlYXRlX3NlcXVlbmNlcyhzdHJ1Y3QgcHJpX2RldGVjdG9yICpwZGUsCiAJCXBzLmxhc3RfdHMgPSB0czsKIAkJcHMucHJpID0gR0VUX1BSSV9UT19VU0UocGRlLSZndDtycy0mZ3Q7cHJpX21pbiwKIAkJCXBkZS0mZ3Q7cnMtJmd0O3ByaV9tYXgsIHRzIC0gcC0mZ3Q7dHMpOwomIzQzOwkJcHMucHJpX3JlY2lwID0gKHN0cnVjdCByZWNpcHJvY2FsX3ZhbHVlKXt9OwomIzQzOwkJaWYgKHBzLnByaSkKJiM0MzsJCQlwcy5wcmlfcmVjaXAgPSByZWNpcHJvY2FsX3ZhbHVlKHBzLnByaSk7CiAJCXBzLmR1ciA9IHBzLnByaSAqIChwZGUtJmd0O3JzLSZndDtwcGIgLSAxKQogCQkJCSYjNDM7IDIgKiBwZGUtJmd0O3JzLSZndDttYXhfcHJpX3RvbGVyYW5jZTsKIApAQCAtMjYxLDYgJiM0MzsyNjcsNyBAQCBzdGF0aWMgYm9vbCBwc2VxX2hhbmRsZXJfY3JlYXRlX3NlcXVlbmNlcyhzdHJ1Y3QgcHJpX2RldGVjdG9yICpwZGUsCiAJCQkJYnJlYWs7CiAJCQkvKiBjaGVjayBpZiBwdWxzZSBtYXRjaCAobXVsdGkpUFJJICovCiAJCQlmYWN0b3IgPSBwZGVfZ2V0X211bHRpcGxlKHBzLmxhc3RfdHMgLSBwMi0mZ3Q7dHMsIHBzLnByaSwKJiM0MzsJCQkJCQkgIHBzLnByaV9yZWNpcCwKIAkJCQkJCSAgcGRlLSZndDtycy0mZ3Q7bWF4X3ByaV90b2xlcmFuY2UpOwogCQkJaWYgKGZhY3RvciAmZ3Q7IDApIHsKIAkJCQlwcy5jb3VudCYjNDM7JiM0Mzs7CkBAIC0zMTgsNiAmIzQzOzMyNSw3IEBAIHBzZXFfaGFuZGxlcl9hZGRfdG9fZXhpc3Rpbmdfc2VxcyhzdHJ1Y3QgcHJpX2RldGVjdG9yICpwZGUsIHU2NCB0cykKIAogCQlkZWx0YV90cyA9IHRzIC0gcHMtJmd0O2xhc3RfdHM7CiAJCWZhY3RvciA9IHBkZV9nZXRfbXVsdGlwbGUoZGVsdGFfdHMsIHBzLSZndDtwcmksCiYjNDM7CQkJCQkgIHBzLSZndDtwcmlfcmVjaXAsCiAJCQkJCSAgcGRlLSZndDtycy0mZ3Q7bWF4X3ByaV90b2xlcmFuY2UpOwogCQlpZiAoZmFjdG9yICZndDsgMCkgewogCQkJcHMtJmd0O2xhc3RfdHMgPSB0czsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcHJpX2RldGVjdG9yLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3ByaV9kZXRlY3Rvci5oCmluZGV4IDg2MzM5ZjJiNGQzYTllLi5jNTE5NDY2Y2ZmOGIxMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wcmlfZGV0ZWN0b3IuaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3ByaV9kZXRlY3Rvci5oCkBAIC0xOCw2ICYjNDM7MTgsNyBAQAogI2RlZmluZSBERlNfUFJJX0RFVEVDVE9SX0gKIAogI2luY2x1ZGUgJmx0O2xpbnV4L2xpc3QuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvcmVjaXByb2NhbF9kaXYuaCZndDsKIAogZXh0ZXJuIHN0cnVjdCBhdGhfZGZzX3Bvb2xfc3RhdHMgZ2xvYmFsX2Rmc19wb29sX3N0YXRzOwogCkBAIC0yNSw2ICYjNDM7MjYsNyBAQCBleHRlcm4gc3RydWN0IGF0aF9kZnNfcG9vbF9zdGF0cyBnbG9iYWxfZGZzX3Bvb2xfc3RhdHM7CiAgKiBzdHJ1Y3QgcHJpX3NlcXVlbmNlIC0gc2VxdWVuY2Ugb2YgcHVsc2VzIG1hdGNoaW5nIG9uZSBQUkkKICAqIEBoZWFkOiBsaXN0X2hlYWQKICAqIEBwcmk6IHB1bHNlIHJlcGV0aXRpb24gaW50ZXJ2YWwgKFBSSSkgaW4gdXNlY3MKJiM0MzsgKiBAcHJpX3JlY2lwOiBjYWNoZWQgcmVjaXByb2NhbCB2YWx1ZSBmb3IgUFJJIGRpdmlzaW9ucwogICogQGR1cjogZHVyYXRpb24gb2Ygc2VxdWVuY2UgaW4gdXNlY3MKICAqIEBjb3VudDogbnVtYmVyIG9mIHB1bHNlcyBpbiB0aGlzIHNlcXVlbmNlCiAgKiBAY291bnRfZmFsc2VzOiBudW1iZXIgb2Ygbm90IG1hdGNoaW5nIHB1bHNlcyBpbiB0aGlzIHNlcXVlbmNlCkBAIC0zNSw2ICYjNDM7MzcsNyBAQCBleHRlcm4gc3RydWN0IGF0aF9kZnNfcG9vbF9zdGF0cyBnbG9iYWxfZGZzX3Bvb2xfc3RhdHM7CiBzdHJ1Y3QgcHJpX3NlcXVlbmNlIHsKIAlzdHJ1Y3QgbGlzdF9oZWFkIGhlYWQ7CiAJdTMyIHByaTsKJiM0MzsJc3RydWN0IHJlY2lwcm9jYWxfdmFsdWUgcHJpX3JlY2lwOwogCXUzMiBkdXI7CiAJdTMyIGNvdW50OwogCXUzMiBjb3VudF9mYWxzZXM7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDAwOjEzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI5MTUKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAyODAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBBdGhlcm9zIERGUyBQUkkgRGV0ZWN0b3IgQ2hhbmdlKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYGRmc19wcmlfZGV0ZWN0b3IuY2AgYW5kIGBkZnNfcHJpX2RldGVjdG9yLmhgIHdpdGhpbiB0aGUgQXRoZXJvcyB3aXJlbGVzcyBkcml2ZXIgZGlyZWN0b3J5LiBMb29rcyBsaWtlIHRoZXkmIzM5O3JlIHJlcGxhY2luZyBhIHJlZ3VsYXIgZGl2aXNpb24gd2l0aCBgcmVjaXByb2NhbF9kaXZpZGVgIGluIGBwZGVfZ2V0X211bHRpcGxlYC4gVGhleSYjMzk7dmUgYWxzbyBhZGRlZCBgcHJpX3JlY2lwYCB0byB0aGUgYHByaV9zZXF1ZW5jZWAgc3RydWN0IGFuZCBpbml0aWFsaXplZCBpdCB3aXRoIGByZWNpcHJvY2FsX3ZhbHVlKHBzLnByaSlgLiBUaGlzIGlzIGEgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCBmdW5jdGlvbmFsIGNoYW5nZSDigJMgb3B0aW1pemluZyBkaXZpc2lvbiwgZXNzZW50aWFsbHkuIE5vdywgdGhlIGtleSBxdWVzdGlvbiBmb3IgbWUgaXM6IGlzIHRoaXMgcmVhY2hhYmxlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQ/CgpNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0aGF0IHRoZSBBdGhlcm9zIGRyaXZlciBpcywgYnkgaXRzIG5hdHVyZSwgdGllZCB0byBwaHlzaWNhbCBXaS1GaSBoYXJkd2FyZS4gQnV0IHdhaXQsIHRoZXJlJiMzOTtzIGBtYWM4MDIxMV9od3NpbWAuIEl0IHNpbXVsYXRlcyBXaS1GaSBoYXJkd2FyZSwgYnV0IGRvZXMgaXQgKnVzZSogdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYCBzdWJzeXN0ZW0/IE5vLCB0aGF0JiMzOTtzIGluY29ycmVjdC4gJiMzNDthdGgmIzM0OyBpcyBmb3Igc3BlY2lmaWMgaGFyZHdhcmUgZHJpdmVycyBsaWtlIGF0aDVrLCBhdGg5aywgZXRjLiBUaGUgYGRmc19wcmlfZGV0ZWN0b3IuY2AgZmlsZSBpcyBwYXJ0IG9mIGEgY29tbW9uIG1vZHVsZSBmb3IgQXRoZXJvcy4gU28sIHRoZSBxdWVzdGlvbiByZW1haW5zLiBJcyBpdCBwb3NzaWJsZSB0byByZWFjaCB0aGlzIGNvZGUgd2l0aG91dCBhY3R1YWwgaGFyZHdhcmU/CgpJIG5lZWQgdG8gbG9vayBpbnRvIHRoaXMgZnVydGhlci4gTGV0JiMzOTtzIHNlZSBpZiB0aGUgS2NvbmZpZyBvciBNYWtlZmlsZSBpbiB0aGUgQXRoZXJvcyBkaXJlY3RvcnkgZ2l2ZXMgbWUgYW55IGNsdWVzLiBUaGF0IHNob3VsZCBoZWxwIG1lIHVuZGVyc3RhbmQgaWYgdGhlcmUgYXJlIGFueSBidWlsZCBvcHRpb25zIHRoYXQgd291bGQgZW5hYmxlIHRoaXMgREZTIGZ1bmN0aW9uYWxpdHkgaW4gYSBzaW11bGF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDAwOjEzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2Rmc19wcmlfZGV0ZWN0b3ImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9NYWtlZmlsZT0xNT1hdGgtb2JqcyA6PVx0bWFpbi5vIFxcXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL01ha2VmaWxlLTE5LVx0XHRkZnNfcGF0dGVybl9kZXRlY3Rvci5vIFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvTWFrZWZpbGU6MjA6XHRcdGRmc19wcmlfZGV0ZWN0b3Iub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL01ha2VmaWxlLTIxLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcGF0dGVybl9kZXRlY3Rvci5jLTIwLSNpbmNsdWRlIFwmIzM0O2Rmc19wYXR0ZXJuX2RldGVjdG9yLmhcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcGF0dGVybl9kZXRlY3Rvci5jOjIxOiNpbmNsdWRlIFwmIzM0O2Rmc19wcmlfZGV0ZWN0b3IuaFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmMtMjItI2luY2x1ZGUgXCYjMzQ7YXRoLmhcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3ByaV9kZXRlY3Rvci5jLTIyLSNpbmNsdWRlIFwmIzM0O2Rmc19wYXR0ZXJuX2RldGVjdG9yLmhcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcHJpX2RldGVjdG9yLmM6MjM6I2luY2x1ZGUgXCYjMzQ7ZGZzX3ByaV9kZXRlY3Rvci5oXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3ByaV9kZXRlY3Rvci5jLTI0LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDAwOjEzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM4MTEKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAxNzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgTGluZSBvZiBSZWFzb25pbmcgZm9yIEF0aGVyb3MgRHJpdmVyIEZ1enppbmcqKgoKT2theSwgc28gdGhlIGBhdGhgIG1vZHVsZSBpcyBvbmx5IGJ1aWx0IHdoZW4gYENPTkZJR19BVEhfQ09NTU9OYCBpcyBzZXQuIFRoYXQmIzM5O3MgYSBzdGFydGluZyBwb2ludC4gQnV0IHRoZSByZWFsIHF1ZXN0aW9uIGlzLCBob3cgY2FuIEkgZnV6eiB0aGVzZSBBdGhlcm9zIGRyaXZlcnMgZWZmZWN0aXZlbHksIGdpdmVuIHRoZSB0eXBpY2FsIGNoYWxsZW5nZXMgd2l0aCBoYXJkd2FyZSBkcml2ZXJzPwoKU3BlY2lmaWNhbGx5LCBjYW4gSSBkbyB0aGlzICp3aXRob3V0KiBoYXZpbmcgdG8gcmVseSBvbiBwaHlzaWNhbCBoYXJkd2FyZT8gVGhhdCYjMzk7cyB0aGUgaWRlYWwgc2NlbmFyaW8uIEluIG1vc3QgY2FzZXMsIGhhcmR3YXJlIGRyaXZlcnMgYXJlIG5vdG9yaW91c2x5IGRpZmZpY3VsdCB0byByZWFjaCB3aXRoaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gV2UgbmVlZCBzb21lIHNvcnQgb2YgYnJpZGdlOiBlaXRoZXIgYSBzb2Z0d2FyZSBlbXVsYXRvciBsaWtlIGBtYWM4MDIxMV9od3NpbWAgKHdoaWNoLCBpbXBvcnRhbnRseSwgaXMgZ2VuZXJpYyBhbmQgKm5vdCogc3BlY2lmaWMgdG8gQXRoZXJvcykgb3IgYSBVU0IgZ2FkZ2V0IHNldHVwIGZvciBVU0IgZHJpdmVycywgb3Igc29tZSBQQ0kgZW11bGF0aW9uLiBCdXQgd2UgZG9uJiMzOTt0IGhhdmUgZ29vZCBQQ0kgZW11bGF0aW9uIGZvciBBdGhlcm9zIGluIFN5emthbGxlciBieSBkZWZhdWx0IOKAkyBhcGFydCBmcm9tIHNvbWUgdmVyeSBsaW1pdGVkLCBnZW5lcmljIFBDSSBmdXp6aW5nLCB3aGljaCBwcm9iYWJseSB3b24mIzM5O3QgYmUgc3VmZmljaWVudC4KCkJ1dCB3YWl0IGEgbWludXRlLi4uIGRvZXMgU3l6a2FsbGVyICphbHJlYWR5KiBmdXp6IGBhdGg5a19odGNgPyBUaGUgbGlnaHRidWxiIGdvZXMgb2ZmISBgYXRoOWtfaHRjYCBpcyBhICpVU0IqIGRyaXZlciwgaXNuJiMzOTt0IGl0PyBJZiBzbywgdGhpcyBvcGVucyB1cCBhIHdob2xlIGRpZmZlcmVudCBhdmVudWUgZm9yIHRlc3RpbmcsIHBvdGVudGlhbGx5IHdpdGhvdXQgbmVlZGluZyBjdXN0b20gUENJIGVtdWxhdGlvbi4KClNvLCBsZXQgbWUgcXVpY2tseSBjaGVjay4uLiBJIG5lZWQgdG8gc2VlIGlmIGBhdGg5a19odGNgIHVzZXMgdGhhdCBgZGZzX3ByaV9kZXRlY3Rvci5jYCBjb2RlLiBUaGF0JiMzOTtsbCBnaXZlIG1lIGEga2V5IGluc2lnaHQgaW50byB3aGF0IHBhcnRzIG9mIHRoZSBBdGhlcm9zIHN0YWNrIGFyZSBiZWluZyB0b3VjaGVkIGFuZCBjb3VsZCBiZSBmdXp6ZWQsIGFuZCB3aGV0aGVyIHRoZXJlJiMzOTtzIG92ZXJsYXAgYmV0d2VlbiB0aGUgVVNCIGRyaXZlciBhbmQgdGhlIHJlc3Qgb2YgdGhlIEF0aGVyb3MgZnJhbWV3b3JrLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDAwOjEzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2Rmc19wYXR0ZXJuX2RldGVjdG9yJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvTWFrZWZpbGU9MTU9YXRoLW9ianMgOj1cdG1haW4ubyBcXFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9NYWtlZmlsZS0xOC1cdFx0a2V5Lm8gXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9NYWtlZmlsZToxOTpcdFx0ZGZzX3BhdHRlcm5fZGV0ZWN0b3IubyBcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL01ha2VmaWxlLTIwLVx0XHRkZnNfcHJpX2RldGVjdG9yLm9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2NvcmUuaC0yNi0jaW5jbHVkZSBcJiMzNDsuLi9yZWdkLmhcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvY29yZS5oOjI3OiNpbmNsdWRlIFwmIzM0Oy4uL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmhcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvY29yZS5oLTI4LSNpbmNsdWRlIFwmIzM0O3NwZWN0cmFsLmhcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2NvcmUuaD0xMDExPXN0cnVjdCBhdGgxMGsge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvY29yZS5oLTEyMzQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2NvcmUuaDoxMjM1Olx0c3RydWN0IGRmc19wYXR0ZXJuX2RldGVjdG9yICpkZnNfZGV0ZWN0b3I7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2NvcmUuaC0xMjM2LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmM9OTk3MT1pbnQgYXRoMTBrX21hY19yZWdpc3RlcihzdHJ1Y3QgYXRoMTBrICphcilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jLTEwMjg1LVx0XHRhci1cdTAwM2VhdGhfY29tbW9uLmRlYnVnX21hc2sgPSBBVEhfREJHX0RGUztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmM6MTAyODY6XHRcdGFyLVx1MDAzZWRmc19kZXRlY3RvciA9IGRmc19wYXR0ZXJuX2RldGVjdG9yX2luaXQoXHUwMDI2YXItXHUwMDNlYXRoX2NvbW1vbixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmMtMTAyODctXHRcdFx0XHRcdFx0XHQgICAgIE5MODAyMTFfREZTX1VOU0VUKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXRoOWsuaD05ODM9c3RydWN0IGF0aF9zb2Z0YyB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2F0aDlrLmgtMTA1OS1cdHU4IGFudF90eCwgYW50X3J4O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2F0aDlrLmg6MTA2MDpcdHN0cnVjdCBkZnNfcGF0dGVybl9kZXRlY3RvciAqZGZzX2RldGVjdG9yO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2F0aDlrLmgtMTA2MS1cdHU2NCBkZnNfcHJldl9wdWxzZV90cztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGZzLmM9Mjc0PWF0aDlrX2Rmc19wcm9jZXNzX3JhZGFyX3B1bHNlKHN0cnVjdCBhdGhfc29mdGMgKnNjLCBzdHJ1Y3QgcHVsc2VfZXZlbnQgKnBlKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2Rmcy5jLTI3NS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGZzLmM6Mjc2Olx0c3RydWN0IGRmc19wYXR0ZXJuX2RldGVjdG9yICpwZCA9IHNjLVx1MDAzZWRmc19kZXRlY3RvcjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZnMuYy0yNzctXHRERlNfU1RBVF9JTkMoc2MsIHB1bHNlc19wcm9jZXNzZWQpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZnMuaC0xOS0jZGVmaW5lIEFUSDlLX0RGU19IXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGZzLmg6MjA6I2luY2x1ZGUgXCYjMzQ7Li4vZGZzX3BhdHRlcm5fZGV0ZWN0b3IuaFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2Rmcy5oLTIxLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZnNfZGVidWcuYy0yMi0jaW5jbHVkZSBcJiMzNDtkZnNfZGVidWcuaFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2Rmc19kZWJ1Zy5jOjIzOiNpbmNsdWRlIFwmIzM0Oy4uL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmhcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZnNfZGVidWcuYy0yNC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jPTY1Nj1zdGF0aWMgaW50IGF0aDlrX2luaXRfc29mdGModTE2IGRldmlkLCBzdHJ1Y3QgYXRoX3NvZnRjICpzYyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jLTY4NS1cdHNjLVx1MDAzZXNjX2FoID0gYWg7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jOjY4NjpcdHNjLVx1MDAzZWRmc19kZXRlY3RvciA9IGRmc19wYXR0ZXJuX2RldGVjdG9yX2luaXQoY29tbW9uLCBOTDgwMjExX0RGU19VTlNFVCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jLTY4Ny1cdHNjLVx1MDAzZXR4OTlfcG93ZXIgPSBNQVhfUkFURV9QT1dFUiAmIzQzOyAxO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcGF0dGVybl9kZXRlY3Rvci5jLTE5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmM6MjA6I2luY2x1ZGUgXCYjMzQ7ZGZzX3BhdHRlcm5fZGV0ZWN0b3IuaFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmMtMjEtI2luY2x1ZGUgXCYjMzQ7ZGZzX3ByaV9kZXRlY3Rvci5oXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmM9MTYxPXN0cnVjdCBjaGFubmVsX2RldGVjdG9yIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3BhdHRlcm5fZGV0ZWN0b3IuYy0xNjctLyogY2hhbm5lbF9kZXRlY3Rvcl9yZXNldCgpIC0gcmVzZXQgZGV0ZWN0b3IgbGluZXMgZm9yIGEgZ2l2ZW4gY2hhbm5lbCAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmM6MTY4OnN0YXRpYyB2b2lkIGNoYW5uZWxfZGV0ZWN0b3JfcmVzZXQoc3RydWN0IGRmc19wYXR0ZXJuX2RldGVjdG9yICpkcGQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3BhdHRlcm5fZGV0ZWN0b3IuYy0xNjktXHRcdFx0XHQgICBzdHJ1Y3QgY2hhbm5lbF9kZXRlY3RvciAqY2QpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmMtMTc4LS8qIGNoYW5uZWxfZGV0ZWN0b3JfZXhpdCgpIC0gZGVzdHJ1Y3RvciAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmM6MTc5OnN0YXRpYyB2b2lkIGNoYW5uZWxfZGV0ZWN0b3JfZXhpdChzdHJ1Y3QgZGZzX3BhdHRlcm5fZGV0ZWN0b3IgKmRwZCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcGF0dGVybl9kZXRlY3Rvci5jLTE4MC1cdFx0XHRcdCAgc3RydWN0IGNoYW5uZWxfZGV0ZWN0b3IgKmNkKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcGF0dGVybl9kZXRlY3Rvci5jPTE5Nj1zdGF0aWMgc3RydWN0IGNoYW5uZWxfZGV0ZWN0b3IgKlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmM6MTk3OmNoYW5uZWxfZGV0ZWN0b3JfY3JlYXRlKHN0cnVjdCBkZnNfcGF0dGVybl9kZXRlY3RvciAqZHBkLCB1MTYgZnJlcSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcGF0dGVybl9kZXRlY3Rvci5jLTE5OC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmM9MjM2PXN0YXRpYyBzdHJ1Y3QgY2hhbm5lbF9kZXRlY3RvciAqXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3BhdHRlcm5fZGV0ZWN0b3IuYzoyMzc6Y2hhbm5lbF9kZXRlY3Rvcl9nZXQoc3RydWN0IGRmc19wYXR0ZXJuX2RldGVjdG9yICpkcGQsIHUxNiBmcmVxKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmMtMjM4LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3BhdHRlcm5fZGV0ZWN0b3IuYy0yNTEtLyogZHBkX3Jlc2V0KCk6IHJlc2V0IGFsbCBjaGFubmVsIGRldGVjdG9ycyAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmM6MjUyOnN0YXRpYyB2b2lkIGRwZF9yZXNldChzdHJ1Y3QgZGZzX3BhdHRlcm5fZGV0ZWN0b3IgKmRwZClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcGF0dGVybl9kZXRlY3Rvci5jLTI1My17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmMtMjU4LX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcGF0dGVybl9kZXRlY3Rvci5jOjI1OTpzdGF0aWMgdm9pZCBkcGRfZXhpdChzdHJ1Y3QgZGZzX3BhdHRlcm5fZGV0ZWN0b3IgKmRwZClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcGF0dGVybl9kZXRlY3Rvci5jLTI2MC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmM9MjY3PXN0YXRpYyBib29sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3BhdHRlcm5fZGV0ZWN0b3IuYzoyNjg6ZHBkX2FkZF9wdWxzZShzdHJ1Y3QgZGZzX3BhdHRlcm5fZGV0ZWN0b3IgKmRwZCwgc3RydWN0IHB1bHNlX2V2ZW50ICpldmVudCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcGF0dGVybl9kZXRlY3Rvci5jLTI2OS1cdCAgICAgIHN0cnVjdCByYWRhcl9kZXRlY3Rvcl9zcGVjcyAqcnMpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmM9MzA5PXN0YXRpYyBzdHJ1Y3QgYXRoX2Rmc19wb29sX3N0YXRzXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3BhdHRlcm5fZGV0ZWN0b3IuYzozMTA6ZHBkX2dldF9zdGF0cyhzdHJ1Y3QgZGZzX3BhdHRlcm5fZGV0ZWN0b3IgKmRwZClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcGF0dGVybl9kZXRlY3Rvci5jLTMxMS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmMtMzE0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmM6MzE1OnN0YXRpYyBib29sIGRwZF9zZXRfZG9tYWluKHN0cnVjdCBkZnNfcGF0dGVybl9kZXRlY3RvciAqZHBkLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmMtMzE2LVx0XHRcdCAgIGVudW0gbmw4MDIxMV9kZnNfcmVnaW9ucyByZWdpb24pXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmMtMzM5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmM6MzQwOnN0YXRpYyBjb25zdCBzdHJ1Y3QgZGZzX3BhdHRlcm5fZGV0ZWN0b3IgZGVmYXVsdF9kcGQgPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3BhdHRlcm5fZGV0ZWN0b3IuYy0zNDEtXHQuZXhpdFx0XHQ9IGRwZF9leGl0LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcGF0dGVybl9kZXRlY3Rvci5jLTM0Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcGF0dGVybl9kZXRlY3Rvci5jOjM0ODpzdHJ1Y3QgZGZzX3BhdHRlcm5fZGV0ZWN0b3IgKlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmM6MzQ5OmRmc19wYXR0ZXJuX2RldGVjdG9yX2luaXQoc3RydWN0IGF0aF9jb21tb24gKmNvbW1vbixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcGF0dGVybl9kZXRlY3Rvci5jLTM1MC1cdFx0XHQgIGVudW0gbmw4MDIxMV9kZnNfcmVnaW9ucyByZWdpb24pXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3BhdHRlcm5fZGV0ZWN0b3IuYy0zNTEte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmM6MzUyOlx0c3RydWN0IGRmc19wYXR0ZXJuX2RldGVjdG9yICpkcGQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3BhdHRlcm5fZGV0ZWN0b3IuYy0zNTMtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmMtMzcxLX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcGF0dGVybl9kZXRlY3Rvci5jOjM3MjpFWFBPUlRfU1lNQk9MKGRmc19wYXR0ZXJuX2RldGVjdG9yX2luaXQpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcGF0dGVybl9kZXRlY3Rvci5oPTcxPXN0cnVjdCByYWRhcl9kZXRlY3Rvcl9zcGVjcyB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmgtODQtLyoqXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3BhdHRlcm5fZGV0ZWN0b3IuaDo4NTogKiBzdHJ1Y3QgZGZzX3BhdHRlcm5fZGV0ZWN0b3IgLSBERlMgcGF0dGVybiBkZXRlY3RvclxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmgtODYtICogQGV4aXQoKTogZGVzdHJ1Y3RvclxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcGF0dGVybl9kZXRlY3Rvci5oLTk0LSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmg6OTU6c3RydWN0IGRmc19wYXR0ZXJuX2RldGVjdG9yIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcGF0dGVybl9kZXRlY3Rvci5oOjk2Olx0dm9pZCAoKmV4aXQpKHN0cnVjdCBkZnNfcGF0dGVybl9kZXRlY3RvciAqZHBkKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcGF0dGVybl9kZXRlY3Rvci5oOjk3Olx0Ym9vbCAoKnNldF9kZnNfZG9tYWluKShzdHJ1Y3QgZGZzX3BhdHRlcm5fZGV0ZWN0b3IgKmRwZCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcGF0dGVybl9kZXRlY3Rvci5oLTk4LVx0XHRcdCAgIGVudW0gbmw4MDIxMV9kZnNfcmVnaW9ucyByZWdpb24pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmg6OTk6XHRib29sICgqYWRkX3B1bHNlKShzdHJ1Y3QgZGZzX3BhdHRlcm5fZGV0ZWN0b3IgKmRwZCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcGF0dGVybl9kZXRlY3Rvci5oLTEwMC1cdFx0XHQgIHN0cnVjdCBwdWxzZV9ldmVudCAqcGUsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmgtMTAyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmg6MTAzOlx0c3RydWN0IGF0aF9kZnNfcG9vbF9zdGF0cyAoKmdldF9zdGF0cykoc3RydWN0IGRmc19wYXR0ZXJuX2RldGVjdG9yICpkcGQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmgtMTA0LVx0ZW51bSBubDgwMjExX2Rmc19yZWdpb25zIHJlZ2lvbjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3BhdHRlcm5fZGV0ZWN0b3IuaC0xMTQtLyoqXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3BhdHRlcm5fZGV0ZWN0b3IuaDoxMTU6ICogZGZzX3BhdHRlcm5fZGV0ZWN0b3JfaW5pdCgpIC0gY29uc3RydWN0b3IgZm9yIHBhdHRlcm4gZGV0ZWN0b3IgY2xhc3NcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcGF0dGVybl9kZXRlY3Rvci5oLTExNi0gKiBAcGFyYW0gcmVnaW9uOiBERlMgZG9tYWluIHRvIGJlIHVzZWQsIGNhbiBiZSBOTDgwMjExX0RGU19VTlNFVCBhdCBjcmVhdGlvblxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcGF0dGVybl9kZXRlY3Rvci5oLTExOC0gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcGF0dGVybl9kZXRlY3Rvci5oOjExOTpleHRlcm4gc3RydWN0IGRmc19wYXR0ZXJuX2RldGVjdG9yICpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcGF0dGVybl9kZXRlY3Rvci5oOjEyMDpkZnNfcGF0dGVybl9kZXRlY3Rvcl9pbml0KHN0cnVjdCBhdGhfY29tbW9uICpjb21tb24sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3BhdHRlcm5fZGV0ZWN0b3IuaC0xMjEtXHRcdFx0ICBlbnVtIG5sODAyMTFfZGZzX3JlZ2lvbnMgcmVnaW9uKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3ByaV9kZXRlY3Rvci5jLTIxLSNpbmNsdWRlIFwmIzM0O2F0aC5oXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3ByaV9kZXRlY3Rvci5jOjIyOiNpbmNsdWRlIFwmIzM0O2Rmc19wYXR0ZXJuX2RldGVjdG9yLmhcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcHJpX2RldGVjdG9yLmMtMjMtI2luY2x1ZGUgXCYjMzQ7ZGZzX3ByaV9kZXRlY3Rvci5oXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMDA6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzUyMQoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDYzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkNoZWNraW5nIERGUyBJbml0aWFsaXphdGlvbiBhbmQgVXNhZ2UqKgoKT2theSwgc28gYGRmc19wYXR0ZXJuX2RldGVjdG9yX2luaXRgIGlzIGEga2V5IGZ1bmN0aW9uLCBpdCYjMzk7cyBleHBvc2VkIGFuZCBzZWVtcyB0byBiZSB1dGlsaXplZCBieSBib3RoIGBhdGg5a2AgYW5kIGBhdGgxMGtgLiBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgYGF0aDlrX2h0Y2AgZml0cyBpbnRvIHRoaXMgcGljdHVyZS4gTXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzOiBkb2VzIGBhdGg5a19odGNgIGFjdHVhbGx5IGxldmVyYWdlIGFueXRoaW5nIHdpdGhpbiBgZGZzLmNgPyBJdCYjMzk7cyBlc3NlbnRpYWwgSSB2ZXJpZnkgd2hldGhlciBERlMgc3VwcG9ydCBpcyBldmVuIGNvbXBpbGVkIGludG8gdGhlIGBhdGg5a19odGNgIG1vZHVsZS4gVGhhdCYjMzk7cyB0aGUgZmlyc3QgdGhpbmcgSSYjMzk7bGwgY2hlY2suCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMDA6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YXRoOWtfZGZzX3Byb2Nlc3NfcmFkYXJfcHVsc2UmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZnMuYz0yNzM9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZnMuYzoyNzQ6YXRoOWtfZGZzX3Byb2Nlc3NfcmFkYXJfcHVsc2Uoc3RydWN0IGF0aF9zb2Z0YyAqc2MsIHN0cnVjdCBwdWxzZV9ldmVudCAqcGUpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGZzLmMtMjc1LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGZzLmM9Mjg5PXZvaWQgYXRoOWtfZGZzX3Byb2Nlc3NfcGh5ZXJyKHN0cnVjdCBhdGhfc29mdGMgKnNjLCB2b2lkICpkYXRhLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZnMuYy0zNTItXHRpZiAoYXJkLnB1bHNlX2J3X2luZm8gXHUwMDI2IFBSSV9DSF9SQURBUl9GT1VORClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZnMuYzozNTM6XHRcdGF0aDlrX2Rmc19wcm9jZXNzX3JhZGFyX3B1bHNlKHNjLCBcdTAwMjZwZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGZzLmMtMzU0LVx0aWYgKElTX0NIQU5fSFQ0MChhaC1cdTAwM2VjdXJjaGFuKSBcdTAwMjZcdTAwMjZcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGZzLmMtMzU2LVx0XHRwZS5mcmVxICYjNDM7PSBJU19DSEFOX0hUNDBQTFVTKGFoLVx1MDAzZWN1cmNoYW4pID8gMjAgOiAtMjA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGZzLmM6MzU3Olx0XHRhdGg5a19kZnNfcHJvY2Vzc19yYWRhcl9wdWxzZShzYywgXHUwMDI2cGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2Rmcy5jLTM1OC1cdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAwMDoxMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4MTM0CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6CgoqKkRpZ2dpbmcgaW50byBgYXRoOWtfZGZzX3Byb2Nlc3NfcGh5ZXJyYCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYGF0aDlrX2Rmc19wcm9jZXNzX3BoeWVycmAgYW5kIHRoZSBmaXJzdCBxdWVzdGlvbiB0aGF0IHBvcHMgaW50byBteSBoZWFkLCBsaWtlIHdpdGggYW55IGNyaXRpY2FsIGZ1bmN0aW9uIGluIHRoZSBkcml2ZXIsIGlzICYjMzQ7V2hlcmUgdGhlIGhlY2sgaXMgdGhpcyBiZWluZyBjYWxsZWQgZnJvbT8mIzM0OyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgY2FsbCBzdGFjayB0byBmdWxseSBncmFzcCBpdHMgcHVycG9zZSBhbmQgaW1wYWN0LiBJIGNhbiYjMzk7dCBqdXN0IGRpdmUgaW50byB0aGUgY29kZSBpdHNlbGYgd2l0aG91dCBrbm93aW5nIHRoZSBjb250ZXh0IGluIHdoaWNoIGl0IG9wZXJhdGVzLiBLbm93aW5nIHRoZSBjYWxsaW5nIGZ1bmN0aW9ucyB3aWxsIGdpdmUgbWUgYSB2aXRhbCB1bmRlcnN0YW5kaW5nIG9mIHRoZSB0aW1pbmcgYW5kIGNvbmRpdGlvbnMgcmVsYXRlZCB0byB0aGUgdXNlIG9mIHRoZSBmdW5jdGlvbi4gSXMgaXQgZnJvbSBpbnRlcnJ1cHQgY29udGV4dD8gVGFza2xldD8gQSB1c2VyLXNwYWNlIHRocmVhZD8gS25vd2luZyB0aGlzIGlzIHZpdGFsIHRvIHByb3Blcmx5IHVuZGVyc3RhbmQgd2hhdCBwcm9ibGVtcyBjb3VsZCBhcmlzZSBmcm9tIHVzZSBvZiB0aGUgZnVuY3Rpb24uIFVuZGVyc3RhbmRpbmcgd2hlcmUgdGhlIGZ1bmN0aW9uIGlzIGNhbGxlZCBmcm9tIGlzIG15IHN0YXJ0aW5nIHBvaW50IHRvIHVuZGVyc3RhbmRpbmcgdGhlIGJpZyBwaWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAwMDoxMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthdGg5a19kZnNfcHJvY2Vzc19waHllcnImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZnMuYz0yNzQ9YXRoOWtfZGZzX3Byb2Nlc3NfcmFkYXJfcHVsc2Uoc3RydWN0IGF0aF9zb2Z0YyAqc2MsIHN0cnVjdCBwdWxzZV9ldmVudCAqcGUpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2Rmcy5jLTI4OC0gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZnMuYzoyODk6dm9pZCBhdGg5a19kZnNfcHJvY2Vzc19waHllcnIoc3RydWN0IGF0aF9zb2Z0YyAqc2MsIHZvaWQgKmRhdGEsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGZzLmMtMjkwLVx0XHRcdCAgICAgIHN0cnVjdCBhdGhfcnhfc3RhdHVzICpycywgdTY0IG1hY3RpbWUpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2Rmcy5jLTM0Ni1cdGF0aF9kYmcoY29tbW9uLCBERlMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGZzLmM6MzQ3Olx0XHRcJiMzNDthdGg5a19kZnNfcHJvY2Vzc19waHllcnI6IHR5cGU9JWQsIGZyZXE9JWQsIHRzPSVsbHUsIFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2Rmcy5jLTM0OC1cdFx0XCYjMzQ7d2lkdGg9JWQsIHJzc2k9JWQsIGRlbHRhX3RzPSVsbHVcXG5cJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2Rmcy5oLTIzLS8qKlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2Rmcy5oOjI0OiAqIGF0aDlrX2Rmc19wcm9jZXNzX3BoeWVyciAtIHByb2Nlc3MgcmFkYXIgUEhZIGVycm9yXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGZzLmgtMjUtICogQHNjOiBhdGhfc29mdGNcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGZzLmgtMzYtICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGZzLmg6Mzc6dm9pZCBhdGg5a19kZnNfcHJvY2Vzc19waHllcnIoc3RydWN0IGF0aF9zb2Z0YyAqc2MsIHZvaWQgKmRhdGEsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGZzLmgtMzgtXHRcdFx0ICAgICAgc3RydWN0IGF0aF9yeF9zdGF0dXMgKnJzLCB1NjQgbWFjdGltZSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2Rmcy5oPTQwPXN0YXRpYyBpbmxpbmUgdm9pZFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2Rmcy5oOjQxOmF0aDlrX2Rmc19wcm9jZXNzX3BoeWVycihzdHJ1Y3QgYXRoX3NvZnRjICpzYywgdm9pZCAqZGF0YSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZnMuaC00Mi1cdFx0XHQgc3RydWN0IGF0aF9yeF9zdGF0dXMgKnJzLCB1NjQgbWFjdGltZSkgeyB9XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3JlY3YuYz04MDY9c3RhdGljIGludCBhdGg5a19yeF9za2JfcHJlcHJvY2VzcyhzdHJ1Y3QgYXRoX3NvZnRjICpzYyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvcmVjdi5jLTg4MC1cdFx0aWYgKGh3LVx1MDAzZWNvbmYucmFkYXJfZW5hYmxlZCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3JlY3YuYzo4ODE6XHRcdFx0YXRoOWtfZGZzX3Byb2Nlc3NfcGh5ZXJyKHNjLCBoZHIsIHJ4X3N0YXRzLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3JlY3YuYy04ODItXHRcdFx0XHRcdFx0IHJ4X3N0YXR1cy1cdTAwM2VtYWN0aW1lKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMDA6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTExNwoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDQ0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgaXQgd2VyZSBteSBvd246CgoqKkludmVzdGlnYXRpbmcgQXRoZXJvcyBEcml2ZXIgQ29kZSBQYXRocyoqCgpPa2F5LCBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGUgQXRoZXJvcyB3aXJlbGVzcyBkcml2ZXIuIFNwZWNpZmljYWxseSwgSSYjMzk7dmUgZ290IG15IGV5ZSBvbiBgYXRoOWtfcnhfc2tiX3ByZXByb2Nlc3NgIOKAkyB0aGF0JiMzOTtzIHRoZSBmdW5jdGlvbiByZXNwb25zaWJsZSBmb3IgaW5pdGlhbCBwcm9jZXNzaW5nIG9mIHJlY2VpdmVkIFNLQnMuIEkga25vdyBpdCYjMzk7cyBsb2NhdGVkIHdpdGhpbiBgYXRoOWsvcmVjdi5jYC4gIE5vdywgdGhlIGNyaXRpY2FsIHF1ZXN0aW9uIGlzLCBkb2VzIHRoZSBgYXRoOWtfaHRjYCBkcml2ZXIgKmFsc28qIHV0aWxpemUgY29kZSB3aXRoaW4gYGF0aDlrL3JlY3YuY2A/ICBJIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIHRoZXJlJiMzOTtzIGNvZGUgcmV1c2Ugb3IgaWYgdGhlc2UgYXJlIHN0cmljdGx5IGRpc3RpbmN0IGNvZGUgcGF0aHMgZm9yIGRpZmZlcmVudCBBdGhlcm9zIGhhcmR3YXJlIGltcGxlbWVudGF0aW9ucyAob3IgZ2VuZXJhdGlvbnMpLiBVbmRlcnN0YW5kaW5nIHRoZSBkZXBlbmRlbmN5IHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoZXNlIHR3byBjb21wb25lbnRzIGlzIGNydWNpYWwgZm9yIGRpYWdub3NpbmcgYSBwb3RlbnRpYWwgcGVyZm9ybWFuY2UgYm90dGxlbmVjaywgb3IgcGVyaGFwcyB0cmFja2luZyBhIGJ1ZyByZXBvcnQuIEkmIzM5O2xsIG5lZWQgdG8gY29uZmlybSB0aGF0IGBhdGg5a19odGNgIGlzIGNhbGxpbmcgdGhhdCBwYXJ0aWN1bGFyIHNlY3Rpb24gb2YgdGhlIGNvZGUsIG9yIGRldGVybWluZSB3aGF0ICpvdGhlciogcG90ZW50aWFsIGNhbGwgZ3JhcGhzIGludm9sdmUgdGhlIGByZWN2LmNgIGZpbGUuIFRpbWUgdG8gZGl2ZSBpbnRvIHRoZSBjYWxsIGdyYXBocyBhbmQgdW5kZXJzdGFuZCB0aGlzIGZsb3cuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDAwOjEzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3JlY3ZcXC5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGU9Mj1hdGg5ay15ICYjNDM7PVx0YmVhY29uLm8gXFxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGUtNS1cdFx0bWFpbi5vIFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGU6NjpcdFx0cmVjdi5vIFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGUtNy1cdFx0eG1pdC5vIFxcXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDAwOjEzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk1MzcKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiA1NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzaW5nOgoKKipXaXJlbGVzcyBEcml2ZXIgRGVlcCBEaXZlKioKCkhtbSwgbm8sIHRoYXQgaW5pdGlhbCBhc3N1bXB0aW9uIGFib3V0IGBhdGg5ay15YCBpcyB3cm9uZy4gVGhhdCYjMzk7cyBzcGVjaWZpY2FsbHkgZm9yIHRoZSBgYXRoOWsua29gIFBDSSBkcml2ZXIsIG5vdCB0aGUgSFRDIHZlcnNpb24uIEkgbmVlZCB0byBrZWVwIHRoZSBhcmNoaXRlY3R1cmUgc3RyYWlnaHQuIE9rYXksIHNvIEkga25vdyBgYXRoOWtfaHRjYCBoYXMgaXRzIG93biwgc2VwYXJhdGUgTWFrZWZpbGUuIFdoZXJlIGRvIEkgZ28gZnJvbSBoZXJlPyBMZXQmIzM5O3Mgem9vbSBpbiBvbiB0aGUgcmVjZWl2ZSBwYXRo4oCmIEkmIzM5O2xsIGJldCB0aGUgcmVsZXZhbnQgY29kZSBJJiMzOTttIGxvb2tpbmcgZm9yIGlzIGluIGBhdGg5ay9odGNfZHJ2X3JlY3YuY2Agb3Igc29tZXRoaW5nIHNpbWlsYXIuIFRpbWUgdG8gY3JhY2sgb3BlbiB0aGF0IGZpbGUgYW5kIHNlZSB3aGF0JiMzOTtzIHdoYXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDAwOjEzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2F0aDlrX2Rmc19wcm9jZXNzX3BoeWVyciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2Rmcy5jPTI3ND1hdGg5a19kZnNfcHJvY2Vzc19yYWRhcl9wdWxzZShzdHJ1Y3QgYXRoX3NvZnRjICpzYywgc3RydWN0IHB1bHNlX2V2ZW50ICpwZSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGZzLmMtMjg4LSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2Rmcy5jOjI4OTp2b2lkIGF0aDlrX2Rmc19wcm9jZXNzX3BoeWVycihzdHJ1Y3QgYXRoX3NvZnRjICpzYywgdm9pZCAqZGF0YSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZnMuYy0yOTAtXHRcdFx0ICAgICAgc3RydWN0IGF0aF9yeF9zdGF0dXMgKnJzLCB1NjQgbWFjdGltZSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGZzLmMtMzQ2LVx0YXRoX2RiZyhjb21tb24sIERGUyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZnMuYzozNDc6XHRcdFwmIzM0O2F0aDlrX2Rmc19wcm9jZXNzX3BoeWVycjogdHlwZT0lZCwgZnJlcT0lZCwgdHM9JWxsdSwgXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGZzLmMtMzQ4LVx0XHRcJiMzNDt3aWR0aD0lZCwgcnNzaT0lZCwgZGVsdGFfdHM9JWxsdVxcblwmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGZzLmgtMjMtLyoqXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGZzLmg6MjQ6ICogYXRoOWtfZGZzX3Byb2Nlc3NfcGh5ZXJyIC0gcHJvY2VzcyByYWRhciBQSFkgZXJyb3JcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZnMuaC0yNS0gKiBAc2M6IGF0aF9zb2Z0Y1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZnMuaC0zNi0gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZnMuaDozNzp2b2lkIGF0aDlrX2Rmc19wcm9jZXNzX3BoeWVycihzdHJ1Y3QgYXRoX3NvZnRjICpzYywgdm9pZCAqZGF0YSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZnMuaC0zOC1cdFx0XHQgICAgICBzdHJ1Y3QgYXRoX3J4X3N0YXR1cyAqcnMsIHU2NCBtYWN0aW1lKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGZzLmg9NDA9c3RhdGljIGlubGluZSB2b2lkXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGZzLmg6NDE6YXRoOWtfZGZzX3Byb2Nlc3NfcGh5ZXJyKHN0cnVjdCBhdGhfc29mdGMgKnNjLCB2b2lkICpkYXRhLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2Rmcy5oLTQyLVx0XHRcdCBzdHJ1Y3QgYXRoX3J4X3N0YXR1cyAqcnMsIHU2NCBtYWN0aW1lKSB7IH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvcmVjdi5jPTgwNj1zdGF0aWMgaW50IGF0aDlrX3J4X3NrYl9wcmVwcm9jZXNzKHN0cnVjdCBhdGhfc29mdGMgKnNjLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9yZWN2LmMtODgwLVx0XHRpZiAoaHctXHUwMDNlY29uZi5yYWRhcl9lbmFibGVkKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvcmVjdi5jOjg4MTpcdFx0XHRhdGg5a19kZnNfcHJvY2Vzc19waHllcnIoc2MsIGhkciwgcnhfc3RhdHMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvcmVjdi5jLTg4Mi1cdFx0XHRcdFx0XHQgcnhfc3RhdHVzLVx1MDAzZW1hY3RpbWUpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAwMDoxMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDUyOQoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDY5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludmVzdGlnYXRpbmcgREZTIEVycm9yIEhhbmRsaW5nIGluIEF0aGVyb3MgRHJpdmVycyoqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byBob3cgdGhlc2UgQXRoZXJvcyBkcml2ZXJzIGhhbmRsZSBERlMgKER5bmFtaWMgRnJlcXVlbmN5IFNlbGVjdGlvbikgYW5kIHRoZSBwaHlzaWNhbCBsYXllciBlcnJvcnMgdGhhdCB0cmlnZ2VyIGl0LiBJIHNlZSB0aGF0IGBhdGg5a19kZnNfcHJvY2Vzc19waHllcnJgIGlzIHNwZWNpZmljYWxseSBjYWxsZWQgZnJvbSB3aXRoaW4gYGF0aDlrL3JlY3YuY2AuIFRoYXQmIzM5O3MgYSBjbGVhciBzdGFydGluZyBwb2ludCBmb3IgdW5kZXJzdGFuZGluZyB0aGUgYGF0aDlrYCBERlMgYmVoYXZpb3IuIEJ1dCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBhcmNoaXRlY3R1cmUgZGlmZmVycyBmcm9tIG90aGVyIGRyaXZlcnMuCgpNeSBpbW1lZGlhdGUgcXVlc3Rpb24gaXM6IHdoYXQgYWJvdXQgYGF0aDEwa2A/IEl0JiMzOTtzIGEgbmV3ZXIgZ2VuZXJhdGlvbiwgYW5kIGl0JiMzOTtzIGFsc28gcmVsZXZhbnQuIERvZXMgaXQgZXZlbiB1c2UgYSBVU0IgaW50ZXJmYWNlLCBvciBpcyBpdCBzb2xlbHkgUENJZT8gSWYgaXQgZG9lcyB1c2UgVVNCLCB0aGF0JiMzOTtzIGNydWNpYWwgYmVjYXVzZSBVU0IgaW50cm9kdWNlcyBpdHMgb3duIGNvbXBsZXhpdGllcyB0byBkcml2ZXIgZGVzaWduLiBMZXQgbWUgcXVpY2tseSBjaGVjazsgSSYjMzk7bSBiZXR0aW5nIHRoYXQgYGF0aDEwa2Agd291bGQgaGF2ZSBhIGB1c2IuY2AgZmlsZSBzb21ld2hlcmUuIEJpbmdvISBJdCBkb2VzLiBOb3csIHRoZSBrZXkgaXMgdG8gc2VlIHdoZXRoZXIgdGhhdCBgdXNiLmNgIGZpbGUgY29udGFpbnMgdGhlIGxvZ2ljIGZvciBERlMgc3VwcG9ydC4gSXMgdGhlIGhhbmRsaW5nIG9mIFBIWSBlcnJvcnMgZGlmZmVyZW50IGluIHRoZSBVU0IgdmVyc2lvbj8gVGhhdCYjMzk7cyB3aGF0IEkgaGF2ZSB0byBmaW5kIG91dC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMDA6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGZzX3BhdHRlcm5fZGV0ZWN0b3ImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2NvcmUuaC0yNi0jaW5jbHVkZSBcJiMzNDsuLi9yZWdkLmhcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvY29yZS5oOjI3OiNpbmNsdWRlIFwmIzM0Oy4uL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmhcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvY29yZS5oLTI4LSNpbmNsdWRlIFwmIzM0O3NwZWN0cmFsLmhcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2NvcmUuaD0xMDExPXN0cnVjdCBhdGgxMGsge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvY29yZS5oLTEyMzQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2NvcmUuaDoxMjM1Olx0c3RydWN0IGRmc19wYXR0ZXJuX2RldGVjdG9yICpkZnNfZGV0ZWN0b3I7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2NvcmUuaC0xMjM2LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmM9OTk3MT1pbnQgYXRoMTBrX21hY19yZWdpc3RlcihzdHJ1Y3QgYXRoMTBrICphcilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jLTEwMjg1LVx0XHRhci1cdTAwM2VhdGhfY29tbW9uLmRlYnVnX21hc2sgPSBBVEhfREJHX0RGUztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmM6MTAyODY6XHRcdGFyLVx1MDAzZWRmc19kZXRlY3RvciA9IGRmc19wYXR0ZXJuX2RldGVjdG9yX2luaXQoXHUwMDI2YXItXHUwMDNlYXRoX2NvbW1vbixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmMtMTAyODctXHRcdFx0XHRcdFx0XHQgICAgIE5MODAyMTFfREZTX1VOU0VUKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMDA6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTEyNTkKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAxOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBhbmFseXppbmcgdGhpcyBjb2RlOgoKKipBbmFseXppbmcgdGhlIFVzYWdlIG9mIGBkZnNfZGV0ZWN0b3JgIGluIGBhdGgxMGtgKioKCk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoZXJlIHRoZSBgZGZzX2RldGVjdG9yYCBmdW5jdGlvbiBpcyBiZWluZyB1dGlsaXplZCB3aXRoaW4gdGhlIGBhdGgxMGtgIGRyaXZlci4gVGhhdCYjMzk7cyBhIHByZXR0eSBzdHJhaWdodGZvcndhcmQgdGFzay4gSSYjMzk7bGwgbmVlZCB0byB1c2UgbXkgdXN1YWwgY29kZS1kaXZpbmcgdGVjaG5pcXVlcyB0byB0cmFjayBkb3duIGFsbCB0aGUgY2FsbHMgdG8gdGhhdCBmdW5jdGlvbi4KCk15IGluaXRpYWwgYXBwcm9hY2ggd2lsbCBiZSB0byBsZXZlcmFnZSBteSBlZGl0b3ImIzM5O3Mgc2VhcmNoIGZ1bmN0aW9uLCBsaWtlbHkgd2l0aCBhICYjMzQ7ZmluZCBpbiBmaWxlcyYjMzQ7IHRvb2wuIEkmIzM5O2xsIHNlYXJjaCB0aGUgZW50aXJlIGBhdGgxMGtgIGNvZGViYXNlIGZvciB0aGUgZXhhY3Qgc3RyaW5nICYjMzQ7ZGZzX2RldGVjdG9yJiMzNDsuIFRoaXMgc2hvdWxkIGdpdmUgbWUgYSBsaXN0IG9mIGFsbCBpbnN0YW5jZXMgd2hlcmUgdGhlIGZ1bmN0aW9uIG5hbWUgYXBwZWFycywgaW5jbHVkaW5nIGJvdGggY2FsbHMgYW5kIGRlY2xhcmF0aW9ucy4KCk9uY2UgSSYjMzk7dmUgZ290IHRoYXQgbGlzdCwgSSYjMzk7bGwgbmVlZCB0byBzaWZ0IHRocm91Z2ggdGhlIHJlc3VsdHMuIEkmIzM5O2xsIGZvY3VzIG9uIHRoZSAqY2FsbHMqIHRvIGBkZnNfZGV0ZWN0b3JgLCByYXRoZXIgdGhhbiB0aGUgZGVmaW5pdGlvbiBpdHNlbGYgKHVubGVzcyBJIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoZSBhcmd1bWVudHMpLiBJJiMzOTtsbCB3YW50IHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgb2YgZWFjaCBjYWxsOiB3aGVyZSBpcyBpdCBoYXBwZW5pbmcgKHdoaWNoIGZpbGUsIHdoaWNoIGZ1bmN0aW9uKSwgYW5kIHdoYXQgcGFyYW1ldGVycyBhcmUgYmVpbmcgcGFzc2VkIHRvIGl0LiBUaGlzIHdpbGwgZ2l2ZSBtZSBhIGdvb2QgdW5kZXJzdGFuZGluZyBvZiB3aGF0IHRoZSBkcml2ZXIgaXMgZG9pbmcgd2l0aCB0aGlzIERGUyBkZXRlY3Rpb24gbWVjaGFuaXNtLgoKSSYjMzk7bGwgYmUgcGF5aW5nIGNsb3NlIGF0dGVudGlvbiB0byBhbnkgY29uZGl0aW9uYWwgc3RhdGVtZW50cyBvciBmbGFncyBhcm91bmQgdGhlIGNhbGxzLiBJcyBpdCBvbmx5IHVzZWQgaW4gc3BlY2lmaWMgcmVndWxhdG9yeSBkb21haW5zPyBBcmUgdGhlcmUgZGlmZmVyZW50IGNhbGxzIGJhc2VkIG9uIHRoZSBoYXJkd2FyZSBjb25maWd1cmF0aW9uPyBVbmRlcnN0YW5kaW5nIHRoZXNlIGRldGFpbHMgaXMga2V5LgoKQXMgSSBhbmFseXplIGVhY2ggY2FsbCwgSSYjMzk7bGwgc3RhcnQgbWVudGFsbHkgYnVpbGRpbmcgYSBtYXAgb2YgaG93IGBkZnNfZGV0ZWN0b3JgIGZpdHMgaW50byB0aGUgYnJvYWRlciBERlMgKER5bmFtaWMgRnJlcXVlbmN5IFNlbGVjdGlvbikgaGFuZGxpbmcgd2l0aGluIGBhdGgxMGtgLiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciByZWxhdGlvbnNoaXBzIGJldHdlZW4gY2FsbHMsIHBvdGVudGlhbCBpbnRlcmFjdGlvbiB3aXRoIG90aGVyIERGUy1yZWxhdGVkIGZ1bmN0aW9ucyBvciBkYXRhIHN0cnVjdHVyZXMsIGFuZCB0aGUgb3ZlcmFsbCBjb250cm9sIGZsb3cuCgpVbHRpbWF0ZWx5LCBJIHdhbnQgdG8gZm9ybSBhIGNvbXBsZXRlIG1lbnRhbCBtb2RlbCBvZiBob3cgdGhlIGBkZnNfZGV0ZWN0b3JgIGZ1bmN0aW9uIGlzIHVzZWQuIFRoaXMgd2lsbCBoZWxwIG1lIGRpYWdub3NlIHBvdGVudGlhbCBpc3N1ZXMsIHVuZGVyc3RhbmQgdGhlIGRyaXZlciYjMzk7cyBiZWhhdmlvciBpbiBzcGVjaWZpYyBzY2VuYXJpb3MsIG9yLCBpZiBuZWVkZWQsIG1vZGlmeSB0aGUgREZTIGZ1bmN0aW9uYWxpdHkuIFRoZSBnb2FsIGlzIHRvIGRldmVsb3AgYSByb2J1c3QgdW5kZXJzdGFuZGluZyBvZiBob3cgYGF0aDEwa2AgaW1wbGVtZW50cyBERlMgZGV0ZWN0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAwMDoxNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkZnNfZGV0ZWN0b3ImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2NvcmUuaD0xMDExPXN0cnVjdCBhdGgxMGsge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvY29yZS5oLTEyMzQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2NvcmUuaDoxMjM1Olx0c3RydWN0IGRmc19wYXR0ZXJuX2RldGVjdG9yICpkZnNfZGV0ZWN0b3I7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2NvcmUuaC0xMjM2LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvZGVidWcuYz0xNzk4PXN0YXRpYyBzc2l6ZV90IGF0aDEwa19yZWFkX2Rmc19zdGF0cyhzdHJ1Y3QgZmlsZSAqZmlsZSwgY2hhciBfX3VzZXIgKnVzZXJfYnVmLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvZGVidWcuYy0xODA5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9kZWJ1Zy5jOjE4MTA6XHRpZiAoIWFyLVx1MDAzZWRmc19kZXRlY3Rvcikge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9kZWJ1Zy5jLTE4MTEtXHRcdGxlbiAmIzQzOz0gc2NucHJpbnRmKGJ1ZiAmIzQzOyBsZW4sIHNpemUgLSBsZW4sIFwmIzM0O0RGUyBub3QgZW5hYmxlZFxcblwmIzM0Oyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9kZWJ1Zy5jLTE4MTUtXHRhci1cdTAwM2VkZWJ1Zy5kZnNfcG9vbF9zdGF0cyA9XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2RlYnVnLmM6MTgxNjpcdFx0XHRhci1cdTAwM2VkZnNfZGV0ZWN0b3ItXHUwMDNlZ2V0X3N0YXRzKGFyLVx1MDAzZWRmc19kZXRlY3Rvcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2RlYnVnLmMtMTgxNy1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jPTM1MTA9c3RhdGljIHZvaWQgYXRoMTBrX3JlZ2RfdXBkYXRlKHN0cnVjdCBhdGgxMGsgKmFyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmMtMzUyNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmM6MzUyNTpcdGlmIChJU19FTkFCTEVEKENPTkZJR19BVEgxMEtfREZTX0NFUlRJRklFRCkgXHUwMDI2XHUwMDI2IGFyLVx1MDAzZWRmc19kZXRlY3Rvcikge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYzozNTI2Olx0XHRubF9kZnNfcmVnID0gYXItXHUwMDNlZGZzX2RldGVjdG9yLVx1MDAzZXJlZ2lvbjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmMtMzUyNy1cdFx0d21pX2Rmc19yZWcgPSBhdGgxMGtfbWFjX2dldF9kZnNfcmVnaW9uKG5sX2Rmc19yZWcpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmM9MzU2MT1zdGF0aWMgdm9pZCBhdGgxMGtfcmVnX25vdGlmaWVyKHN0cnVjdCB3aXBoeSAqd2lwaHksXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYy0zNTY5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYzozNTcwOlx0aWYgKElTX0VOQUJMRUQoQ09ORklHX0FUSDEwS19ERlNfQ0VSVElGSUVEKSBcdTAwMjZcdTAwMjYgYXItXHUwMDNlZGZzX2RldGVjdG9yKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jLTM1NzEtXHRcdGF0aDEwa19kYmcoYXIsIEFUSDEwS19EQkdfUkVHVUxBVE9SWSwgXCYjMzQ7ZGZzIHJlZ2lvbiAweCV4XFxuXCYjMzQ7LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYy0zNTcyLVx0XHRcdCAgIHJlcXVlc3QtXHUwMDNlZGZzX3JlZ2lvbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jOjM1NzM6XHRcdHJlc3VsdCA9IGFyLVx1MDAzZWRmc19kZXRlY3Rvci1cdTAwM2VzZXRfZGZzX2RvbWFpbihhci1cdTAwM2VkZnNfZGV0ZWN0b3IsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jLTM1NzQtXHRcdFx0XHRcdFx0XHQgIHJlcXVlc3QtXHUwMDNlZGZzX3JlZ2lvbik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYz05OTcxPWludCBhdGgxMGtfbWFjX3JlZ2lzdGVyKHN0cnVjdCBhdGgxMGsgKmFyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmMtMTAyODUtXHRcdGFyLVx1MDAzZWF0aF9jb21tb24uZGVidWdfbWFzayA9IEFUSF9EQkdfREZTO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYzoxMDI4NjpcdFx0YXItXHUwMDNlZGZzX2RldGVjdG9yID0gZGZzX3BhdHRlcm5fZGV0ZWN0b3JfaW5pdChcdTAwMjZhci1cdTAwM2VhdGhfY29tbW9uLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYy0xMDI4Ny1cdFx0XHRcdFx0XHRcdCAgICAgTkw4MDIxMV9ERlNfVU5TRVQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYy0xMDI4OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmM6MTAyODk6XHRcdGlmICghYXItXHUwMDNlZGZzX2RldGVjdG9yKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYy0xMDI5MC1cdFx0XHRhdGgxMGtfd2FybihhciwgXCYjMzQ7ZmFpbGVkIHRvIGluaXRpYWxpc2UgREZTIHBhdHRlcm4gZGV0ZWN0b3JcXG5cJiMzNDspO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmMtMTAyOTUtXHRcdGF0aDEwa19lcnIoYXIsIFwmIzM0O2ZhaWxlZCB0byBkZXJpdmUgcmVnZG9tOiAlZFxcblwmIzM0OywgcmV0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmM6MTAyOTY6XHRcdGdvdG8gZXJyX2Rmc19kZXRlY3Rvcl9leGl0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYy0xMDI5Ny1cdH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jLTEwMzA2LVx0XHRhdGgxMGtfZXJyKGFyLCBcJiMzNDtmYWlsZWQgdG8gaW5pdGlhbGlzZSByZWd1bGF0b3J5OiAlaVxcblwmIzM0OywgcmV0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmM6MTAzMDc6XHRcdGdvdG8gZXJyX2Rmc19kZXRlY3Rvcl9leGl0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYy0xMDMwOC1cdH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jLTEwMzM1LVx0XHRhdGgxMGtfZXJyKGFyLCBcJiMzNDtmYWlsZWQgdG8gcmVnaXN0ZXIgaWVlZTgwMjExOiAlZFxcblwmIzM0OywgcmV0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmM6MTAzMzY6XHRcdGdvdG8gZXJyX2Rmc19kZXRlY3Rvcl9leGl0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYy0xMDMzNy1cdH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jLTEwMzU2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYzoxMDM1NzplcnJfZGZzX2RldGVjdG9yX2V4aXQ6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jOjEwMzU4Olx0aWYgKElTX0VOQUJMRUQoQ09ORklHX0FUSDEwS19ERlNfQ0VSVElGSUVEKSBcdTAwMjZcdTAwMjYgYXItXHUwMDNlZGZzX2RldGVjdG9yKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYzoxMDM1OTpcdFx0YXItXHUwMDNlZGZzX2RldGVjdG9yLVx1MDAzZWV4aXQoYXItXHUwMDNlZGZzX2RldGVjdG9yKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmMtMTAzNjAtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYz0xMDM2OT12b2lkIGF0aDEwa19tYWNfdW5yZWdpc3RlcihzdHJ1Y3QgYXRoMTBrICphcilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jLTEwMzcyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYzoxMDM3MzpcdGlmIChJU19FTkFCTEVEKENPTkZJR19BVEgxMEtfREZTX0NFUlRJRklFRCkgXHUwMDI2XHUwMDI2IGFyLVx1MDAzZWRmc19kZXRlY3RvcilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmM6MTAzNzQ6XHRcdGFyLVx1MDAzZWRmc19kZXRlY3Rvci1cdTAwM2VleGl0KGFyLVx1MDAzZWRmc19kZXRlY3Rvcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jLTEwMzc1LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvd21pLmM9NDA1MT1zdGF0aWMgdm9pZCBhdGgxMGtfZGZzX3JhZGFyX3JlcG9ydChzdHJ1Y3QgYXRoMTBrICphcixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3dtaS5jLTQwODQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3dtaS5jOjQwODU6XHRpZiAoIWFyLVx1MDAzZWRmc19kZXRlY3RvcilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvd21pLmMtNDA4Ni1cdFx0cmV0dXJuO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvd21pLmMtNDEyNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvd21pLmM6NDEyNzpcdGlmICghYXItXHUwMDNlZGZzX2RldGVjdG9yLVx1MDAzZWFkZF9wdWxzZShhci1cdTAwM2VkZnNfZGV0ZWN0b3IsIFx1MDAyNnBlLCBcdTAwMjZycykpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvd21pLmMtNDEyOC1cdFx0YXRoMTBrX2RiZyhhciwgQVRIMTBLX0RCR19SRUdVTEFUT1JZLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvd21pLmMtNDEzMy1cdGlmICgodGVzdF9iaXQoV01JX1NFUlZJQ0VfSE9TVF9ERlNfQ0hFQ0tfU1VQUE9SVCwgYXItXHUwMDNld21pLnN2Y19tYXApKSBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvd21pLmM6NDEzNDpcdCAgICBhci1cdTAwM2VkZnNfZGV0ZWN0b3ItXHUwMDNlcmVnaW9uID09IE5MODAyMTFfREZTX0ZDQykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway93bWkuYy00MTM1LVx0XHQvKiBDb25zZWN1dGl2ZSByYWRhciBpbmRpY2F0aW9ucyBuZWVkIG5vdCBiZVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAwMDoxNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzk3MAoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDExOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbnZlc3RpZ2F0aW5nIFJhZGFyIERldGVjdGlvbiBpbiBhdGgxMGsgYW5kIFJlbGF0ZWQgRHJpdmVycyoqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byBob3cgcmFkYXIgZGV0ZWN0aW9uIHdvcmtzIHdpdGhpbiB0aGUgYGF0aDEwa2Agd2lyZWxlc3MgZHJpdmVyLiBTcGVjaWZpY2FsbHksIHRoZSBgZGZzX2RldGVjdG9yYCBmdW5jdGlvbiBzZWVtcyB0byBiZSBjZW50cmFsLCBhbmQgaXQmIzM5O3MgYmVpbmcgaW52b2tlZCB3aXRoaW4gYGF0aDEwa19kZnNfcmFkYXJfcmVwb3J0YCwgd2hpY2gsIGFzIEkgdW5kZXJzdGFuZCBpdCwgaXMgdHJpZ2dlcmVkIGJ5IFdNSSAoV2luZG93cyBNYW5hZ2VtZW50IEluc3RydW1lbnRhdGlvbikgZXZlbnRzLiBUaGF0IG1ha2VzIHNlbnNlLCBhIHNpZ25hbCBmcm9tIHRoZSBoYXJkd2FyZSB0aGF0IGl0IGRldGVjdHMgcmFkYXIuCgpOb3csIGEgcXVpY2sgc2lkZSB0aG91Z2h0LCBkb2VzIGBhdGgxMGtgIHN1cHBvcnQgVVNCPyBPZiBjb3Vyc2UsIHRoZSBgYXRoMTBrX3VzYmAgbW9kdWxlIGNvbmZpcm1zIHRoYXQuIEl0IHdvdWxkIGJlIG9kZCBpZiBpdCBkaWRuJiMzOTt0LiBBbmQgaWYgaXQmIzM5O3MgYSBmdWxsIE1BQyBkcml2ZXIsIGFzIGl0IGFwcGVhcnMgdG8gYmUsIGl0IHNlZW1zIGhpZ2hseSBsaWtlbHkgdGhhdCBgYXRoMTBrX3VzYmAgd291bGQgYWxzbyBoYW5kbGUgV01JIGV2ZW50cyBpbiBhIHNpbWlsYXIgbWFubmVyLgoKV2FpdCBhIG1vbWVudCwgSSBqdXN0IHJlbWVtYmVyZWQsIGBhdGg5a19odGNgIGlzICphbHNvKiBhIFVTQiBkcml2ZXIuIEkgaGFkbiYjMzk7dCBjb25zaWRlcmVkIGl0LCBidXQgaXQgbWlnaHQgdXNlIGEgc2ltaWxhciBhcHByb2FjaCwgYW5kIGl0JiMzOTtzIGVzc2VudGlhbCBJIGNoZWNrLiBJIHNob3VsZCB2ZXJpZnkgaWYgYGF0aDlrX2h0Y2AgYWxzbyB1dGlsaXplcyBgZGZzX2RldGVjdG9yYC4gVGhpcyBpcyBpbXBvcnRhbnQsIGFzIHVuZGVyc3RhbmRpbmcgdGhlIGJyb2FkZXIgbGFuZHNjYXBlIG9mIGhvdyByYWRhciBkZXRlY3Rpb24gaXMgaGFuZGxlZCBhY3Jvc3MgZGlmZmVyZW50IFVTQi1iYXNlZCBBdGhlcm9zIGRyaXZlcnMgd2lsbCBiZSBpbnZhbHVhYmxlIGZvciB0aGUgcHJvamVjdCBJJiMzOTttIHdvcmtpbmcgb24uIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlIGEgY29tcHJlaGVuc2l2ZSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBpbXBsZW1lbnRhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMDA6MTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGZzX2RldGVjdG9yJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXRoOWsuaD05ODM9c3RydWN0IGF0aF9zb2Z0YyB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2F0aDlrLmgtMTA1OS1cdHU4IGFudF90eCwgYW50X3J4O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2F0aDlrLmg6MTA2MDpcdHN0cnVjdCBkZnNfcGF0dGVybl9kZXRlY3RvciAqZGZzX2RldGVjdG9yO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2F0aDlrLmgtMTA2MS1cdHU2NCBkZnNfcHJldl9wdWxzZV90cztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGZzLmM9Mjc0PWF0aDlrX2Rmc19wcm9jZXNzX3JhZGFyX3B1bHNlKHN0cnVjdCBhdGhfc29mdGMgKnNjLCBzdHJ1Y3QgcHVsc2VfZXZlbnQgKnBlKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2Rmcy5jLTI3NS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGZzLmM6Mjc2Olx0c3RydWN0IGRmc19wYXR0ZXJuX2RldGVjdG9yICpwZCA9IHNjLVx1MDAzZWRmc19kZXRlY3RvcjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZnMuYy0yNzctXHRERlNfU1RBVF9JTkMoc2MsIHB1bHNlc19wcm9jZXNzZWQpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZnNfZGVidWcuYz0zND1zdGF0aWMgc3NpemVfdCByZWFkX2ZpbGVfZGZzKHN0cnVjdCBmaWxlICpmaWxlLCBjaGFyIF9fdXNlciAqdXNlcl9idWYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2Rmc19kZWJ1Zy5jLTUyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2Rmc19kZWJ1Zy5jOjUzOlx0aWYgKCFzYy1cdTAwM2VkZnNfZGV0ZWN0b3IpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZnNfZGVidWcuYy01NC1cdFx0bGVuICYjNDM7PSBzY25wcmludGYoYnVmICYjNDM7IGxlbiwgc2l6ZSAtIGxlbixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGZzX2RlYnVnLmMtNTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGZzX2RlYnVnLmM6NTk6XHRkZnNfcG9vbF9zdGF0cyA9IHNjLVx1MDAzZWRmc19kZXRlY3Rvci1cdTAwM2VnZXRfc3RhdHMoc2MtXHUwMDNlZGZzX2RldGVjdG9yKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZnNfZGVidWcuYy02MC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGZzX2RlYnVnLmMtNzItXHRcdFx0IFwmIzM0OyhjdXJyZW50IERGUyByZWdpb246ICVkKVxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZnNfZGVidWcuYzo3MzpcdFx0XHQgc2MtXHUwMDNlZGZzX2RldGVjdG9yLVx1MDAzZXJlZ2lvbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGZzX2RlYnVnLmMtNzQtXHRBVEg5S19ERlNfU1RBVChcJiMzNDtQdWxzZSBldmVudHMgcHJvY2Vzc2VkICBcJiMzNDssIHB1bHNlc19wcm9jZXNzZWQpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9pbml0LmM9MjQ5PXN0YXRpYyB2b2lkIGF0aDlrX3JlZ19ub3RpZmllcihzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9pbml0LmMtMjU5LVx0Lyogc3luY2hyb25pemUgREZTIGRldGVjdG9yIGlmIHJlZ3VsYXRvcnkgZG9tYWluIGNoYW5nZWQgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9pbml0LmM6MjYwOlx0aWYgKHNjLVx1MDAzZWRmc19kZXRlY3RvciAhPSBOVUxMKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2luaXQuYzoyNjE6XHRcdHNjLVx1MDAzZWRmc19kZXRlY3Rvci1cdTAwM2VzZXRfZGZzX2RvbWFpbihzYy1cdTAwM2VkZnNfZGV0ZWN0b3IsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jLTI2Mi1cdFx0XHRcdFx0XHQgcmVxdWVzdC1cdTAwM2VkZnNfcmVnaW9uKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jPTY1Nj1zdGF0aWMgaW50IGF0aDlrX2luaXRfc29mdGModTE2IGRldmlkLCBzdHJ1Y3QgYXRoX3NvZnRjICpzYyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jLTY4NS1cdHNjLVx1MDAzZXNjX2FoID0gYWg7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jOjY4NjpcdHNjLVx1MDAzZWRmc19kZXRlY3RvciA9IGRmc19wYXR0ZXJuX2RldGVjdG9yX2luaXQoY29tbW9uLCBOTDgwMjExX0RGU19VTlNFVCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jLTY4Ny1cdHNjLVx1MDAzZXR4OTlfcG93ZXIgPSBNQVhfUkFURV9QT1dFUiAmIzQzOyAxO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9pbml0LmM9MTA4OT1zdGF0aWMgdm9pZCBhdGg5a19kZWluaXRfc29mdGMoc3RydWN0IGF0aF9zb2Z0YyAqc2MpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2luaXQuYy0xMTAxLVx0YXRoOWtfaHdfZGVpbml0KHNjLVx1MDAzZXNjX2FoKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9pbml0LmM6MTEwMjpcdGlmIChzYy1cdTAwM2VkZnNfZGV0ZWN0b3IgIT0gTlVMTClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9pbml0LmM6MTEwMzpcdFx0c2MtXHUwMDNlZGZzX2RldGVjdG9yLVx1MDAzZWV4aXQoc2MtXHUwMDNlZGZzX2RldGVjdG9yKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9pbml0LmMtMTEwNC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMDA6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTU1NzUKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAzOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIHNlZS4uLgoKKipEaXZpbmcgaW50byB0aGUgQXRoZXJvcyBEcml2ZXIgTGFuZHNjYXBlKioKCkhtbSwgc28gYGF0aDlrL2luaXQuY2AgaXMgZGVmaW5pdGVseSBwYXJ0IG9mIHRoZSBgYXRoOWsua29gIFBDSSBtb2R1bGUuIFRoYXQmIzM5O3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBOb3csIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgYWxsIGZpdHMgdG9nZXRoZXIsIEkgbmVlZCB0byBzZWUgaG93IHRoZSBgYXRoOWtfaHRjYCBkcml2ZXIgZ2V0cyBpbml0aWFsaXplZC4gVW5kZXJzdGFuZGluZyBpdHMgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UgaXMga2V5IHRvIGdyYXNwaW5nIGhvdyB0aGUgZW50aXJlIEF0aGVyb3Mgc3lzdGVtIGZ1bmN0aW9ucywgc2luY2UgdGhlIEhUQyBkcml2ZXIgb3BlcmF0ZXMgaW4gYSBjb21wbGV0ZWx5IGRpZmZlcmVudCB3YXkgdG8gdGhlIFBDSSBkcml2ZXIuIEkgY2FuIHN0YXJ0IGJ5IGxvb2tpbmcgZm9yIGFueSBob29rcyByZWxhdGVkIHRvIGBhdGg5a19odGNgLiBIb3BlZnVsbHkgdGhlIGluaXRpYWxpemF0aW9uIGlzIGRvbmUgaW4gYSBjbGVhciBhbmQgb3JnYW5pc2VkIG1hbm5lciwgaXQgd2lsbCBnaXZlIG1lIGEgZ3JlYXRlciBncmFzcCBvbiB0aGUgc3RydWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAwMDoxNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2Rmc19kZXRlY3RvciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAwMDoxNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTgxOQoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDUyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludmVzdGlnYXRpbmcgdGhlIFVzZSBvZiBERlMgRGV0ZWN0aW9uIGluIEF0aGVyb3MgV2lyZWxlc3MgRHJpdmVycyoqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGVzZSBBdGhlcm9zIHdpcmVsZXNzIGRyaXZlcnMuIFNwZWNpZmljYWxseSwgSSB3YXMgbG9va2luZyBhdCBgYXRoOWtfaHRjYCBhbmQgcmVhbGl6ZWQgaXQgZG9lc24mIzM5O3QgdXRpbGl6ZSB0aGUgYGRmc19kZXRlY3RvcmAgZnVuY3Rpb25hbGl0eS4gTXkgbmV4dCB0aG91Z2h0IGlzLCB3aGF0IGFib3V0IHRoZSBuZXdlciwgbW9yZSBhZHZhbmNlZCBkcml2ZXJzPyBEb2VzIGBhdGgxMGtgIG1ha2UgdXNlIG9mIGl0PyBUaGF0JiMzOTtzIHRoZSBsb2dpY2FsIHByb2dyZXNzaW9uLiBUbyBhbnN3ZXIgdGhhdCBxdWVzdGlvbiwgSSBuZWVkIHRvIGNoZWNrIHRoZSBVU0IgdmFyaWFudCwgYGF0aDEwa191c2JgLiBMZXQmIzM5O3MgZGl2ZSBpbiB0aGVyZSBhbmQgc2VlIHdoYXQgd2UgY2FuIGZpbmQuIEkmIzM5O20gZ29pbmcgdG8gcXVpY2tseSByZXZpZXcgaXRzIGltcGxlbWVudGF0aW9uIHRvIHVuZGVyc3RhbmQgaG93IGl0IGhhbmRsZXMgRHluYW1pYyBGcmVxdWVuY3kgU2VsZWN0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAwMDoxNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthdGgxMGtfdXNiJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9NYWtlZmlsZT0zND1hdGgxMGtfc2Rpby15ICYjNDM7PSBzZGlvLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvTWFrZWZpbGUtMzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL01ha2VmaWxlOjM2Om9iai0kKENPTkZJR19BVEgxMEtfVVNCKSAmIzQzOz0gYXRoMTBrX3VzYi5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL01ha2VmaWxlOjM3OmF0aDEwa191c2IteSAmIzQzOz0gdXNiLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvTWFrZWZpbGUtMzgtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTg6c3RhdGljIHZvaWQgYXRoMTBrX3VzYl9wb3N0X3JlY3ZfdHJhbnNmZXJzKHN0cnVjdCBhdGgxMGsgKmFyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxOTpcdFx0XHRcdFx0ICAgc3RydWN0IGF0aDEwa191c2JfcGlwZSAqcmVjdl9waXBlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMjAtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYz0zNT1zdGF0aWMgc3RydWN0IGF0aDEwa191cmJfY29udGV4dCAqXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjM2OmF0aDEwa191c2JfYWxsb2NfdXJiX2Zyb21fcGlwZShzdHJ1Y3QgYXRoMTBrX3VzYl9waXBlICpwaXBlKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0zNy17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy01Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NTc6c3RhdGljIHZvaWQgYXRoMTBrX3VzYl9mcmVlX3VyYl90b19waXBlKHN0cnVjdCBhdGgxMGtfdXNiX3BpcGUgKnBpcGUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTU4LVx0XHRcdFx0XHRzdHJ1Y3QgYXRoMTBrX3VyYl9jb250ZXh0ICp1cmJfY29udGV4dClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTczLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo3NDpzdGF0aWMgdm9pZCBhdGgxMGtfdXNiX2NsZWFudXBfcmVjdl91cmIoc3RydWN0IGF0aDEwa191cmJfY29udGV4dCAqdXJiX2NvbnRleHQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTc1LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTc4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo3OTpcdGF0aDEwa191c2JfZnJlZV91cmJfdG9fcGlwZSh1cmJfY29udGV4dC1cdTAwM2VwaXBlLCB1cmJfY29udGV4dCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTgwLX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtODEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjgyOnN0YXRpYyB2b2lkIGF0aDEwa191c2JfZnJlZV9waXBlX3Jlc291cmNlcyhzdHJ1Y3QgYXRoMTBrICphcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6ODM6XHRcdFx0XHRcdCAgIHN0cnVjdCBhdGgxMGtfdXNiX3BpcGUgKnBpcGUpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTg0LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTEwNC1cdGZvciAoOzspIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTA1Olx0XHR1cmJfY29udGV4dCA9IGF0aDEwa191c2JfYWxsb2NfdXJiX2Zyb21fcGlwZShwaXBlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTA2LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTEzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMTQ6c3RhdGljIHZvaWQgYXRoMTBrX3VzYl9jbGVhbnVwX3BpcGVfcmVzb3VyY2VzKHN0cnVjdCBhdGgxMGsgKmFyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMTUte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMTY6XHRzdHJ1Y3QgYXRoMTBrX3VzYiAqYXJfdXNiID0gYXRoMTBrX3VzYl9wcml2KGFyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTE3LVx0aW50IGk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMTktXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBBVEgxMEtfVVNCX1BJUEVfTUFYOyBpJiM0MzsmIzQzOylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTIwOlx0XHRhdGgxMGtfdXNiX2ZyZWVfcGlwZV9yZXNvdXJjZXMoYXIsIFx1MDAyNmFyX3VzYi1cdTAwM2VwaXBlc1tpXSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTEyMS19XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMjQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjEyNTpzdGF0aWMgdm9pZCBhdGgxMGtfdXNiX3JlY3ZfY29tcGxldGUoc3RydWN0IHVyYiAqdXJiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMjYte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMjctXHRzdHJ1Y3QgYXRoMTBrX3VyYl9jb250ZXh0ICp1cmJfY29udGV4dCA9IHVyYi1cdTAwM2Vjb250ZXh0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMjg6XHRzdHJ1Y3QgYXRoMTBrX3VzYl9waXBlICpwaXBlID0gdXJiX2NvbnRleHQtXHUwMDNlcGlwZTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTI5LVx0c3RydWN0IGF0aDEwayAqYXIgPSBwaXBlLVx1MDAzZWFyX3VzYi1cdTAwM2Vhcjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTE3Mi1jbGVhbnVwX3JlY3ZfdXJiOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxNzM6XHRhdGgxMGtfdXNiX2NsZWFudXBfcmVjdl91cmIodXJiX2NvbnRleHQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xNzQtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xNzctXHRcdC8qIG91ciBmcmVlIHVyYnMgYXJlIHBpbGluZyB1cCwgcG9zdCBtb3JlIHRyYW5zZmVycyAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxNzg6XHRcdGF0aDEwa191c2JfcG9zdF9yZWN2X3RyYW5zZmVycyhhciwgcGlwZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTE3OS1cdH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTE4MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTgyOnN0YXRpYyB2b2lkIGF0aDEwa191c2JfdHJhbnNtaXRfY29tcGxldGUoc3RydWN0IHVyYiAqdXJiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xODMte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xODQtXHRzdHJ1Y3QgYXRoMTBrX3VyYl9jb250ZXh0ICp1cmJfY29udGV4dCA9IHVyYi1cdTAwM2Vjb250ZXh0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxODU6XHRzdHJ1Y3QgYXRoMTBrX3VzYl9waXBlICpwaXBlID0gdXJiX2NvbnRleHQtXHUwMDNlcGlwZTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTg2LVx0c3RydWN0IGF0aDEwayAqYXIgPSBwaXBlLVx1MDAzZWFyX3VzYi1cdTAwM2Vhcjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTE5Ni1cdHVyYl9jb250ZXh0LVx1MDAzZXNrYiA9IE5VTEw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjE5NzpcdGF0aDEwa191c2JfZnJlZV91cmJfdG9fcGlwZSh1cmJfY29udGV4dC1cdTAwM2VwaXBlLCB1cmJfY29udGV4dCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTE5OC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTIwNC0vKiBwaXBlIG9wZXJhdGlvbnMgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MjA1OnN0YXRpYyB2b2lkIGF0aDEwa191c2JfcG9zdF9yZWN2X3RyYW5zZmVycyhzdHJ1Y3QgYXRoMTBrICphcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MjA2Olx0XHRcdFx0XHQgICBzdHJ1Y3QgYXRoMTBrX3VzYl9waXBlICpyZWN2X3BpcGUpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTIwNy17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0yMTItXHRmb3IgKDs7KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjIxMzpcdFx0dXJiX2NvbnRleHQgPSBhdGgxMGtfdXNiX2FsbG9jX3VyYl9mcm9tX3BpcGUocmVjdl9waXBlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMjE0LVx0XHRpZiAoIXVyYl9jb250ZXh0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMjI5LVx0XHRcdFx0ICBBVEgxMEtfVVNCX1JYX0JVRkZFUl9TSVpFLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoyMzA6XHRcdFx0XHQgIGF0aDEwa191c2JfcmVjdl9jb21wbGV0ZSwgdXJiX2NvbnRleHQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0yMzEtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0yNTQtZXJyOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoyNTU6XHRhdGgxMGtfdXNiX2NsZWFudXBfcmVjdl91cmIodXJiX2NvbnRleHQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0yNTYtfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0yNTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjI1ODpzdGF0aWMgdm9pZCBhdGgxMGtfdXNiX2ZsdXNoX2FsbChzdHJ1Y3QgYXRoMTBrICphcilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMjU5LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MjYwOlx0c3RydWN0IGF0aDEwa191c2IgKmFyX3VzYiA9IGF0aDEwa191c2JfcHJpdihhcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTI2MS1cdGludCBpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMjcwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoyNzE6c3RhdGljIHZvaWQgYXRoMTBrX3VzYl9zdGFydF9yZWN2X3BpcGVzKHN0cnVjdCBhdGgxMGsgKmFyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0yNzIte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoyNzM6XHRzdHJ1Y3QgYXRoMTBrX3VzYiAqYXJfdXNiID0gYXRoMTBrX3VzYl9wcml2KGFyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMjc0LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMjc2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoyNzc6XHRhdGgxMGtfdXNiX3Bvc3RfcmVjdl90cmFuc2ZlcnMoYXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTI3OC1cdFx0XHRcdCAgICAgICBcdTAwMjZhcl91c2ItXHUwMDNlcGlwZXNbQVRIMTBLX1VTQl9QSVBFX1JYX0RBVEFdKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTI4MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MjgxOnN0YXRpYyB2b2lkIGF0aDEwa191c2JfdHhfY29tcGxldGUoc3RydWN0IGF0aDEwayAqYXIsIHN0cnVjdCBza19idWZmICpza2IpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTI4Mi17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0yOTEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjI5MjpzdGF0aWMgdm9pZCBhdGgxMGtfdXNiX3J4X2NvbXBsZXRlKHN0cnVjdCBhdGgxMGsgKmFyLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0yOTMte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMzU5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzozNjA6c3RhdGljIHZvaWQgYXRoMTBrX3VzYl9pb19jb21wX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0zNjEte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzozNjI6XHRzdHJ1Y3QgYXRoMTBrX3VzYl9waXBlICpwaXBlID0gY29udGFpbmVyX29mKHdvcmssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjM2MzpcdFx0XHRcdFx0XHQgICAgc3RydWN0IGF0aDEwa191c2JfcGlwZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMzY0LVx0XHRcdFx0XHRcdCAgICBpb19jb21wbGV0ZV93b3JrKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTM2OS1cdFx0aWYgKHBpcGUtXHUwMDNlZmxhZ3MgXHUwMDI2IEFUSDEwS19VU0JfUElQRV9GTEFHX1RYKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzozNzA6XHRcdFx0YXRoMTBrX3VzYl90eF9jb21wbGV0ZShhciwgc2tiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMzcxLVx0XHRlbHNlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjM3MjpcdFx0XHRhdGgxMGtfdXNiX3J4X2NvbXBsZXRlKGFyLCBza2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0zNzMtXHR9XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0zNzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjM3NjojZGVmaW5lIEFUSDEwS19VU0JfTUFYX0RJQUdfQ01EIChzaXplb2Yoc3RydWN0IGF0aDEwa191c2JfY3RybF9kaWFnX2NtZF93cml0ZSkpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjM3NzojZGVmaW5lIEFUSDEwS19VU0JfTUFYX0RJQUdfUkVTUCAoc2l6ZW9mKHN0cnVjdCBhdGgxMGtfdXNiX2N0cmxfZGlhZ19yZXNwX3JlYWQpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0zNzgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjM3OTpzdGF0aWMgdm9pZCBhdGgxMGtfdXNiX2Rlc3Ryb3koc3RydWN0IGF0aDEwayAqYXIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTM4MC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjM4MTpcdHN0cnVjdCBhdGgxMGtfdXNiICphcl91c2IgPSBhdGgxMGtfdXNiX3ByaXYoYXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0zODItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjM4MzpcdGF0aDEwa191c2JfZmx1c2hfYWxsKGFyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6Mzg0Olx0YXRoMTBrX3VzYl9jbGVhbnVwX3BpcGVfcmVzb3VyY2VzKGFyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMzg1LVx0dXNiX3NldF9pbnRmZGF0YShhcl91c2ItXHUwMDNlaW50ZXJmYWNlLCBOVUxMKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTM5MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MzkxOnN0YXRpYyBpbnQgYXRoMTBrX3VzYl9oaWZfc3RhcnQoc3RydWN0IGF0aDEwayAqYXIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTM5Mi17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTM5My1cdGludCBpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzozOTQ6XHRzdHJ1Y3QgYXRoMTBrX3VzYiAqYXJfdXNiID0gYXRoMTBrX3VzYl9wcml2KGFyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMzk1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0zOTYtXHRhdGgxMGtfY29yZV9uYXBpX2VuYWJsZShhcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjM5NzpcdGF0aDEwa191c2Jfc3RhcnRfcmVjdl9waXBlcyhhcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTM5OC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTQwOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NDA5OnN0YXRpYyBpbnQgYXRoMTBrX3VzYl9oaWZfdHhfc2coc3RydWN0IGF0aDEwayAqYXIsIHU4IHBpcGVfaWQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTQxMC1cdFx0XHRcdHN0cnVjdCBhdGgxMGtfaGlmX3NnX2l0ZW0gKml0ZW1zLCBpbnQgbl9pdGVtcylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNDExLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NDEyOlx0c3RydWN0IGF0aDEwa191c2IgKmFyX3VzYiA9IGF0aDEwa191c2JfcHJpdihhcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjQxMzpcdHN0cnVjdCBhdGgxMGtfdXNiX3BpcGUgKnBpcGUgPSBcdTAwMjZhcl91c2ItXHUwMDNlcGlwZXNbcGlwZV9pZF07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTQxNC1cdHN0cnVjdCBhdGgxMGtfdXJiX2NvbnRleHQgKnVyYl9jb250ZXh0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNDE5LVx0Zm9yIChpID0gMDsgaSBcdTAwM2Mgbl9pdGVtczsgaSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NDIwOlx0XHR1cmJfY29udGV4dCA9IGF0aDEwa191c2JfYWxsb2NfdXJiX2Zyb21fcGlwZShwaXBlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNDIxLVx0XHRpZiAoIXVyYl9jb250ZXh0KSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy00MzktXHRcdFx0XHQgIHNrYi1cdTAwM2VsZW4sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjQ0MDpcdFx0XHRcdCAgYXRoMTBrX3VzYl90cmFuc21pdF9jb21wbGV0ZSwgdXJiX2NvbnRleHQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy00NDEtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy00NjMtZXJyX2ZyZWVfdXJiX3RvX3BpcGU6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjQ2NDpcdGF0aDEwa191c2JfZnJlZV91cmJfdG9fcGlwZSh1cmJfY29udGV4dC1cdTAwM2VwaXBlLCB1cmJfY29udGV4dCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTQ2NS1lcnI6XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy00NjgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjQ2OTpzdGF0aWMgdm9pZCBhdGgxMGtfdXNiX2hpZl9zdG9wKHN0cnVjdCBhdGgxMGsgKmFyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy00NzAte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo0NzE6XHRhdGgxMGtfdXNiX2ZsdXNoX2FsbChhcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTQ3Mi1cdGF0aDEwa19jb3JlX25hcGlfc3luY19kaXNhYmxlKGFyKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTQ3NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NDc1OnN0YXRpYyB1MTYgYXRoMTBrX3VzYl9oaWZfZ2V0X2ZyZWVfcXVldWVfbnVtYmVyKHN0cnVjdCBhdGgxMGsgKmFyLCB1OCBwaXBlX2lkKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy00NzYte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo0Nzc6XHRzdHJ1Y3QgYXRoMTBrX3VzYiAqYXJfdXNiID0gYXRoMTBrX3VzYl9wcml2KGFyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNDc4LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNDgxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo0ODI6c3RhdGljIGludCBhdGgxMGtfdXNiX3N1Ym1pdF9jdHJsX291dChzdHJ1Y3QgYXRoMTBrICphcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNDgzLVx0XHRcdFx0ICAgICAgdTggcmVxLCB1MTYgdmFsdWUsIHUxNiBpbmRleCwgdm9pZCAqZGF0YSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTQ4NS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjQ4NjpcdHN0cnVjdCBhdGgxMGtfdXNiICphcl91c2IgPSBhdGgxMGtfdXNiX3ByaXYoYXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy00ODctXHR1OCAqYnVmID0gTlVMTDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTUxNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NTE2OnN0YXRpYyBpbnQgYXRoMTBrX3VzYl9zdWJtaXRfY3RybF9pbihzdHJ1Y3QgYXRoMTBrICphcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNTE3LVx0XHRcdFx0ICAgICB1OCByZXEsIHUxNiB2YWx1ZSwgdTE2IGluZGV4LCB2b2lkICpkYXRhLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNTE5LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NTIwOlx0c3RydWN0IGF0aDEwa191c2IgKmFyX3VzYiA9IGF0aDEwa191c2JfcHJpdihhcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTUyMS1cdHU4ICpidWYgPSBOVUxMO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNTUxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo1NTI6c3RhdGljIGludCBhdGgxMGtfdXNiX2N0cmxfbXNnX2V4Y2hhbmdlKHN0cnVjdCBhdGgxMGsgKmFyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy01NTMtXHRcdFx0XHRcdHU4IHJlcV92YWwsIHU4ICpyZXFfYnVmLCB1MzIgcmVxX2xlbixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTU1OS1cdC8qIHNlbmQgY29tbWFuZCAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo1NjA6XHRyZXQgPSBhdGgxMGtfdXNiX3N1Ym1pdF9jdHJsX291dChhciwgcmVxX3ZhbCwgMCwgMCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNTYxLVx0XHRcdFx0XHQgcmVxX2J1ZiwgcmVxX2xlbik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy01NjYtXHRpZiAocmVzcF9idWYpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NTY3Olx0XHRyZXQgPSBhdGgxMGtfdXNiX3N1Ym1pdF9jdHJsX2luKGFyLCByZXNwX3ZhbCwgMCwgMCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNTY4LVx0XHRcdFx0XHRcdHJlc3BfYnVmLCAqcmVzcF9sZW4pO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNTc3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo1Nzg6c3RhdGljIGludCBhdGgxMGtfdXNiX2hpZl9kaWFnX3JlYWQoc3RydWN0IGF0aDEwayAqYXIsIHUzMiBhZGRyZXNzLCB2b2lkICpidWYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTU3OS1cdFx0XHRcdCAgICBzaXplX3QgYnVmX2xlbilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNTgwLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NTgxOlx0c3RydWN0IGF0aDEwa191c2IgKmFyX3VzYiA9IGF0aDEwa191c2JfcHJpdihhcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjU4MjpcdHN0cnVjdCBhdGgxMGtfdXNiX2N0cmxfZGlhZ19jbWRfcmVhZCAqY21kO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy01ODMtXHR1MzIgcmVzcF9sZW47XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy01ODUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjU4NjpcdGlmIChidWZfbGVuIFx1MDAzYyBzaXplb2Yoc3RydWN0IGF0aDEwa191c2JfY3RybF9kaWFnX3Jlc3BfcmVhZCkpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTU4Ny1cdFx0cmV0dXJuIC1FSU5WQUw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTU4OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NTg5Olx0Y21kID0gKHN0cnVjdCBhdGgxMGtfdXNiX2N0cmxfZGlhZ19jbWRfcmVhZCAqKWFyX3VzYi1cdTAwM2VkaWFnX2NtZF9idWZmZXI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTU5MC1cdG1lbXNldChjbWQsIDAsIHNpemVvZigqY21kKSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy01OTItXHRjbWQtXHUwMDNlYWRkcmVzcyA9IGNwdV90b19sZTMyKGFkZHJlc3MpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo1OTM6XHRyZXNwX2xlbiA9IHNpemVvZihzdHJ1Y3QgYXRoMTBrX3VzYl9jdHJsX2RpYWdfcmVzcF9yZWFkKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNTk0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo1OTU6XHRyZXQgPSBhdGgxMGtfdXNiX2N0cmxfbXNnX2V4Y2hhbmdlKGFyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy01OTYtXHRcdFx0XHRcdCAgIEFUSDEwS19VU0JfQ09OVFJPTF9SRVFfRElBR19DTUQsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy02MDMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjYwNDpcdGlmIChyZXNwX2xlbiAhPSBzaXplb2Yoc3RydWN0IGF0aDEwa191c2JfY3RybF9kaWFnX3Jlc3BfcmVhZCkpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTYwNS1cdFx0cmV0dXJuIC1FTVNHU0laRTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTYwNy1cdG1lbWNweShidWYsIGFyX3VzYi1cdTAwM2VkaWFnX3Jlc3BfYnVmZmVyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo2MDg6XHQgICAgICAgc2l6ZW9mKHN0cnVjdCBhdGgxMGtfdXNiX2N0cmxfZGlhZ19yZXNwX3JlYWQpKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNjA5LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNjEyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo2MTM6c3RhdGljIGludCBhdGgxMGtfdXNiX2hpZl9kaWFnX3dyaXRlKHN0cnVjdCBhdGgxMGsgKmFyLCB1MzIgYWRkcmVzcyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNjE0LVx0XHRcdFx0ICAgICBjb25zdCB2b2lkICpkYXRhLCBpbnQgbmJ5dGVzKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy02MTUte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo2MTY6XHRzdHJ1Y3QgYXRoMTBrX3VzYiAqYXJfdXNiID0gYXRoMTBrX3VzYl9wcml2KGFyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NjE3Olx0c3RydWN0IGF0aDEwa191c2JfY3RybF9kaWFnX2NtZF93cml0ZSAqY21kO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy02MTgtXHRpbnQgcmV0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNjIyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo2MjM6XHRjbWQgPSAoc3RydWN0IGF0aDEwa191c2JfY3RybF9kaWFnX2NtZF93cml0ZSAqKWFyX3VzYi1cdTAwM2VkaWFnX2NtZF9idWZmZXI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTYyNC1cdG1lbXNldChjbWQsIDAsIHNpemVvZigqY21kKSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy02MjgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjYyOTpcdHJldCA9IGF0aDEwa191c2JfY3RybF9tc2dfZXhjaGFuZ2UoYXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTYzMC1cdFx0XHRcdFx0ICAgQVRIMTBLX1VTQl9DT05UUk9MX1JFUV9ESUFHX0NNRCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTYzOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NjQwOnN0YXRpYyBpbnQgYXRoMTBrX3VzYl9ibWlfZXhjaGFuZ2VfbXNnKHN0cnVjdCBhdGgxMGsgKmFyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy02NDEtXHRcdFx0XHQgICAgICAgdm9pZCAqcmVxLCB1MzIgcmVxX2xlbixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTY0Ni1cdGlmIChyZXEpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NjQ3Olx0XHRyZXQgPSBhdGgxMGtfdXNiX3N1Ym1pdF9jdHJsX291dChhcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNjQ4LVx0XHRcdFx0XHRcdCBBVEgxMEtfVVNCX0NPTlRST0xfUkVRX1NFTkRfQk1JX0NNRCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTY1OC1cdGlmIChyZXNwKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjY1OTpcdFx0cmV0ID0gYXRoMTBrX3VzYl9zdWJtaXRfY3RybF9pbihhcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNjYwLVx0XHRcdFx0XHRcdEFUSDEwS19VU0JfQ09OVFJPTF9SRVFfUkVDVl9CTUlfUkVTUCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTY3Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NjczOnN0YXRpYyB2b2lkIGF0aDEwa191c2JfaGlmX2dldF9kZWZhdWx0X3BpcGUoc3RydWN0IGF0aDEwayAqYXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTY3NC1cdFx0XHRcdFx0ICAgIHU4ICp1bF9waXBlLCB1OCAqZGxfcGlwZSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTY3OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NjgwOnN0YXRpYyBpbnQgYXRoMTBrX3VzYl9oaWZfbWFwX3NlcnZpY2VfdG9fcGlwZShzdHJ1Y3QgYXRoMTBrICphciwgdTE2IHN2Y19pZCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNjgxLVx0XHRcdFx0XHQgICAgICB1OCAqdWxfcGlwZSwgdTggKmRsX3BpcGUpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy03MDMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjcwNDpzdGF0aWMgaW50IGF0aDEwa191c2JfaGlmX3Bvd2VyX3VwKHN0cnVjdCBhdGgxMGsgKmFyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy03MDUtXHRcdFx0XHQgICBlbnVtIGF0aDEwa19maXJtd2FyZV9tb2RlIGZ3X21vZGUpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy03MDktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjcxMDpzdGF0aWMgdm9pZCBhdGgxMGtfdXNiX2hpZl9wb3dlcl9kb3duKHN0cnVjdCBhdGgxMGsgKmFyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy03MTEte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo3MTI6XHRhdGgxMGtfdXNiX2ZsdXNoX2FsbChhcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTcxMy19XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy03MTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjcxNzpzdGF0aWMgaW50IGF0aDEwa191c2JfaGlmX3N1c3BlbmQoc3RydWN0IGF0aDEwayAqYXIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTcxOC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy03MjEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjcyMjpzdGF0aWMgaW50IGF0aDEwa191c2JfaGlmX3Jlc3VtZShzdHJ1Y3QgYXRoMTBrICphcilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNzIzLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTcyNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NzI4OnN0YXRpYyBjb25zdCBzdHJ1Y3QgYXRoMTBrX2hpZl9vcHMgYXRoMTBrX3VzYl9oaWZfb3BzID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo3Mjk6XHQudHhfc2dcdFx0XHQ9IGF0aDEwa191c2JfaGlmX3R4X3NnLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo3MzA6XHQuZGlhZ19yZWFkXHRcdD0gYXRoMTBrX3VzYl9oaWZfZGlhZ19yZWFkLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo3MzE6XHQuZGlhZ193cml0ZVx0XHQ9IGF0aDEwa191c2JfaGlmX2RpYWdfd3JpdGUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjczMjpcdC5leGNoYW5nZV9ibWlfbXNnXHQ9IGF0aDEwa191c2JfYm1pX2V4Y2hhbmdlX21zZyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NzMzOlx0LnN0YXJ0XHRcdFx0PSBhdGgxMGtfdXNiX2hpZl9zdGFydCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NzM0Olx0LnN0b3BcdFx0XHQ9IGF0aDEwa191c2JfaGlmX3N0b3AsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjczNTpcdC5tYXBfc2VydmljZV90b19waXBlXHQ9IGF0aDEwa191c2JfaGlmX21hcF9zZXJ2aWNlX3RvX3BpcGUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjczNjpcdC5nZXRfZGVmYXVsdF9waXBlXHQ9IGF0aDEwa191c2JfaGlmX2dldF9kZWZhdWx0X3BpcGUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjczNzpcdC5nZXRfZnJlZV9xdWV1ZV9udW1iZXJcdD0gYXRoMTBrX3VzYl9oaWZfZ2V0X2ZyZWVfcXVldWVfbnVtYmVyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo3Mzg6XHQucG93ZXJfdXBcdFx0PSBhdGgxMGtfdXNiX2hpZl9wb3dlcl91cCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NzM5Olx0LnBvd2VyX2Rvd25cdFx0PSBhdGgxMGtfdXNiX2hpZl9wb3dlcl9kb3duLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy03NDAtI2lmZGVmIENPTkZJR19QTVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo3NDE6XHQuc3VzcGVuZFx0XHQ9IGF0aDEwa191c2JfaGlmX3N1c3BlbmQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjc0MjpcdC5yZXN1bWVcdFx0XHQ9IGF0aDEwa191c2JfaGlmX3Jlc3VtZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNzQzLSNlbmRpZlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNzQ1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo3NDY6c3RhdGljIHU4IGF0aDEwa191c2JfZ2V0X2xvZ2ljYWxfcGlwZV9udW0odTggZXBfYWRkcmVzcywgaW50ICp1cmJfY291bnQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTc0Ny17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy03OTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjc5MTpzdGF0aWMgaW50IGF0aDEwa191c2JfYWxsb2NfcGlwZV9yZXNvdXJjZXMoc3RydWN0IGF0aDEwayAqYXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjc5MjpcdFx0XHRcdFx0ICAgc3RydWN0IGF0aDEwa191c2JfcGlwZSAqcGlwZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNzkzLVx0XHRcdFx0XHQgICBpbnQgdXJiX2NudClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTgxMS1cdFx0cGlwZS1cdTAwM2V1cmJfYWxsb2MmIzQzOyYjNDM7O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo4MTI6XHRcdGF0aDEwa191c2JfZnJlZV91cmJfdG9fcGlwZShwaXBlLCB1cmJfY29udGV4dCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTgxMy1cdH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTgyMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6ODIzOnN0YXRpYyBpbnQgYXRoMTBrX3VzYl9zZXR1cF9waXBlX3Jlc291cmNlcyhzdHJ1Y3QgYXRoMTBrICphcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtODI0LVx0XHRcdFx0XHQgICBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZXJmYWNlKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy04MjUte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo4MjY6XHRzdHJ1Y3QgYXRoMTBrX3VzYiAqYXJfdXNiID0gYXRoMTBrX3VzYl9wcml2KGFyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtODI3LVx0c3RydWN0IHVzYl9ob3N0X2ludGVyZmFjZSAqaWZhY2VfZGVzYyA9IGludGVyZmFjZS1cdTAwM2VjdXJfYWx0c2V0dGluZztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtODI4LVx0c3RydWN0IHVzYl9lbmRwb2ludF9kZXNjcmlwdG9yICplbmRwb2ludDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6ODI5Olx0c3RydWN0IGF0aDEwa191c2JfcGlwZSAqcGlwZTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtODMwLVx0aW50IHJldCwgaSwgdXJiY291bnQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy04NzEtXHRcdHBpcGVfbnVtID1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6ODcyOlx0XHQgICAgYXRoMTBrX3VzYl9nZXRfbG9naWNhbF9waXBlX251bShlbmRwb2ludC1cdTAwM2ViRW5kcG9pbnRBZGRyZXNzLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy04NzMtXHRcdFx0XHRcdFx0ICAgIFx1MDAyNnVyYmNvdW50KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTkyNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6OTI1Olx0XHRyZXQgPSBhdGgxMGtfdXNiX2FsbG9jX3BpcGVfcmVzb3VyY2VzKGFyLCBwaXBlLCB1cmJjb3VudCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTkyNi1cdFx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTkzMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6OTMzOnN0YXRpYyBpbnQgYXRoMTBrX3VzYl9jcmVhdGUoc3RydWN0IGF0aDEwayAqYXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTkzNC1cdFx0XHQgICAgIHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRlcmZhY2UpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTkzNS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjkzNjpcdHN0cnVjdCBhdGgxMGtfdXNiICphcl91c2IgPSBhdGgxMGtfdXNiX3ByaXYoYXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy05MzctXHRzdHJ1Y3QgdXNiX2RldmljZSAqZGV2ID0gaW50ZXJmYWNlX3RvX3VzYmRldihpbnRlcmZhY2UpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo5Mzg6XHRzdHJ1Y3QgYXRoMTBrX3VzYl9waXBlICpwaXBlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy05MzktXHRpbnQgcmV0LCBpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtOTQ4LVx0XHRJTklUX1dPUksoXHUwMDI2cGlwZS1cdTAwM2Vpb19jb21wbGV0ZV93b3JrLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo5NDk6XHRcdFx0ICBhdGgxMGtfdXNiX2lvX2NvbXBfd29yayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTk1MC1cdFx0c2tiX3F1ZXVlX2hlYWRfaW5pdChcdTAwMjZwaXBlLVx1MDAzZWlvX2NvbXBfcXVldWUpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtOTY1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo5NjY6XHRyZXQgPSBhdGgxMGtfdXNiX3NldHVwX3BpcGVfcmVzb3VyY2VzKGFyLCBpbnRlcmZhY2UpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy05NjctXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtOTcyLWVycjpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6OTczOlx0YXRoMTBrX3VzYl9kZXN0cm95KGFyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtOTc0LVx0cmV0dXJuIHJldDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTk3Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6OTc3OnN0YXRpYyBpbnQgYXRoMTBrX3VzYl9uYXBpX3BvbGwoc3RydWN0IG5hcGlfc3RydWN0ICpjdHgsIGludCBidWRnZXQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTk3OC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy05OTEtLyogYXRoMTBrIHVzYiBkcml2ZXIgcmVnaXN0ZXJlZCBmdW5jdGlvbnMgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6OTkyOnN0YXRpYyBpbnQgYXRoMTBrX3VzYl9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZXJmYWNlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy05OTMtXHRcdFx0ICAgIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTk5NS1cdHN0cnVjdCBhdGgxMGsgKmFyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo5OTY6XHRzdHJ1Y3QgYXRoMTBrX3VzYiAqYXJfdXNiO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy05OTctXHRzdHJ1Y3QgdXNiX2RldmljZSAqZGV2ID0gaW50ZXJmYWNlX3RvX3VzYmRldihpbnRlcmZhY2UpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTAxMC1cdGFyID0gYXRoMTBrX2NvcmVfY3JlYXRlKHNpemVvZigqYXJfdXNiKSwgXHUwMDI2ZGV2LVx1MDAzZWRldiwgQVRIMTBLX0JVU19VU0IsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjEwMTE6XHRcdFx0XHRod19yZXYsIFx1MDAyNmF0aDEwa191c2JfaGlmX29wcyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTEwMTItXHRpZiAoIWFyKSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMDE2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMDE3Olx0bmV0aWZfbmFwaV9hZGQoYXItXHUwMDNlbmFwaV9kZXYsIFx1MDAyNmFyLVx1MDAzZW5hcGksIGF0aDEwa191c2JfbmFwaV9wb2xsKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTAxOC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTEwMjUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjEwMjY6XHRhcl91c2IgPSBhdGgxMGtfdXNiX3ByaXYoYXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMDI3Olx0cmV0ID0gYXRoMTBrX3VzYl9jcmVhdGUoYXIsIGludGVyZmFjZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTEwMjgtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTA1MS1lcnJfdXNiX2Rlc3Ryb3k6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjEwNTI6XHRhdGgxMGtfdXNiX2Rlc3Ryb3koYXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMDUzLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTA1OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTA2MDpzdGF0aWMgdm9pZCBhdGgxMGtfdXNiX2Rpc2Nvbm5lY3Qoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGVyZmFjZSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTA2MS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjEwNjI6XHRzdHJ1Y3QgYXRoMTBrX3VzYiAqYXJfdXNiO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMDYzLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTA2OS1cdG5ldGlmX25hcGlfZGVsKFx1MDAyNmFyX3VzYi1cdTAwM2Vhci1cdTAwM2VuYXBpKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTA3MDpcdGF0aDEwa191c2JfZGVzdHJveShhcl91c2ItXHUwMDNlYXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMDcxLVx0YXRoMTBrX2NvcmVfZGVzdHJveShhcl91c2ItXHUwMDNlYXIpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTA3NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTA3NjpzdGF0aWMgaW50IGF0aDEwa191c2JfcG1fc3VzcGVuZChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZXJmYWNlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMDc3LVx0XHRcdFx0IHBtX21lc3NhZ2VfdCBtZXNzYWdlKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMDc4LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTA3OTpcdHN0cnVjdCBhdGgxMGtfdXNiICphcl91c2IgPSB1c2JfZ2V0X2ludGZkYXRhKGludGVyZmFjZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTEwODAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjEwODE6XHRhdGgxMGtfdXNiX2ZsdXNoX2FsbChhcl91c2ItXHUwMDNlYXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMDgyLVx0cmV0dXJuIDA7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMDg0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMDg1OnN0YXRpYyBpbnQgYXRoMTBrX3VzYl9wbV9yZXN1bWUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGVyZmFjZSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTA4Ni17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjEwODc6XHRzdHJ1Y3QgYXRoMTBrX3VzYiAqYXJfdXNiID0gdXNiX2dldF9pbnRmZGF0YShpbnRlcmZhY2UpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMDg4LVx0c3RydWN0IGF0aDEwayAqYXIgPSBhcl91c2ItXHUwMDNlYXI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTEwODktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjEwOTA6XHRhdGgxMGtfdXNiX3Bvc3RfcmVjdl90cmFuc2ZlcnMoYXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTEwOTEtXHRcdFx0XHQgICAgICAgXHUwMDI2YXJfdXNiLVx1MDAzZXBpcGVzW0FUSDEwS19VU0JfUElQRV9SWF9EQVRBXSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMDk3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMDk4OiNkZWZpbmUgYXRoMTBrX3VzYl9wbV9zdXNwZW5kIE5VTExcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTA5OTojZGVmaW5lIGF0aDEwa191c2JfcG1fcmVzdW1lIE5VTExcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTEwMC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTExMDMtLyogdGFibGUgb2YgZGV2aWNlcyB0aGF0IHdvcmsgd2l0aCB0aGlzIGRyaXZlciAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMTA0OnN0YXRpYyBzdHJ1Y3QgdXNiX2RldmljZV9pZCBhdGgxMGtfdXNiX2lkc1tdID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMTA1LVx0e1VTQl9ERVZJQ0UoMHgxM2IxLCAweDAwNDIpfSwgLyogTGlua3N5cyBXVVNCNjEwME0gKi9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTExMDgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjExMDk6TU9EVUxFX0RFVklDRV9UQUJMRSh1c2IsIGF0aDEwa191c2JfaWRzKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTExMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTExMTpzdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgYXRoMTBrX3VzYl9kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjExMTI6XHQubmFtZSA9IFwmIzM0O2F0aDEwa191c2JcJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjExMTM6XHQucHJvYmUgPSBhdGgxMGtfdXNiX3Byb2JlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMTE0Olx0LnN1c3BlbmQgPSBhdGgxMGtfdXNiX3BtX3N1c3BlbmQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjExMTU6XHQucmVzdW1lID0gYXRoMTBrX3VzYl9wbV9yZXN1bWUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjExMTY6XHQuZGlzY29ubmVjdCA9IGF0aDEwa191c2JfZGlzY29ubmVjdCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTExNzpcdC5pZF90YWJsZSA9IGF0aDEwa191c2JfaWRzLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMTE4LVx0LnN1cHBvcnRzX2F1dG9zdXNwZW5kID0gdHJ1ZSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTExMjEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjExMjI6bW9kdWxlX3VzYl9kcml2ZXIoYXRoMTBrX3VzYl9kcml2ZXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMTIzLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmgtNDMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5oOjQ0OnN0cnVjdCBhdGgxMGtfdXNiX2N0cmxfZGlhZ19jbWRfd3JpdGUge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaC00NS1cdF9fbGUzMiBjbWQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaC01MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmg6NTE6c3RydWN0IGF0aDEwa191c2JfY3RybF9kaWFnX2NtZF9yZWFkIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmgtNTItXHRfX2xlMzIgY21kO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmgtNTUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5oOjU2OnN0cnVjdCBhdGgxMGtfdXNiX2N0cmxfZGlhZ19yZXNwX3JlYWQge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaC01Ny1cdHU4IHZhbHVlWzRdO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmgtNjAtLyogdHgvcnggcGlwZXMgZm9yIHVzYiAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaDo2MTplbnVtIGF0aDEwa191c2JfcGlwZV9pZCB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5oLTYyLVx0QVRIMTBLX1VTQl9QSVBFX1RYX0NUUkwgPSAwLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmgtNzItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5oOjczOnN0cnVjdCBhdGgxMGtfdXNiX3BpcGUge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaC03NC1cdHN0cnVjdCBsaXN0X2hlYWQgdXJiX2xpc3RfaGVhZDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5oLTgyLVx0dTggbG9naWNhbF9waXBlX251bTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmg6ODM6XHRzdHJ1Y3QgYXRoMTBrX3VzYiAqYXJfdXNiO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaC04NC1cdHUxNiBtYXhfcGFja2V0X3NpemU7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaC05Mi0vKiB1c2IgZGV2aWNlIG9iamVjdCAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaDo5MzpzdHJ1Y3QgYXRoMTBrX3VzYiB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5oLTk0LVx0LyogcHJvdGVjdHMgcGlwZS1cdTAwM2V1cmJfbGlzdF9oZWFkIGFuZCAgcGlwZS1cdTAwM2V1cmJfY250ICovXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaC05OC1cdHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRlcmZhY2U7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5oOjk5Olx0c3RydWN0IGF0aDEwa191c2JfcGlwZSBwaXBlc1tBVEgxMEtfVVNCX1BJUEVfTUFYXTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmgtMTAwLVx0dTggKmRpYWdfY21kX2J1ZmZlcjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5oPTEwNj1zdHJ1Y3QgYXRoMTBrX3VyYl9jb250ZXh0IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmgtMTA3LVx0c3RydWN0IGxpc3RfaGVhZCBsaW5rO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaDoxMDg6XHRzdHJ1Y3QgYXRoMTBrX3VzYl9waXBlICpwaXBlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaC0xMDktXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmgtMTEyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaDoxMTM6c3RhdGljIGlubGluZSBzdHJ1Y3QgYXRoMTBrX3VzYiAqYXRoMTBrX3VzYl9wcml2KHN0cnVjdCBhdGgxMGsgKmFyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaC0xMTQte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaDoxMTU6XHRyZXR1cm4gKHN0cnVjdCBhdGgxMGtfdXNiICopYXItXHUwMDNlZHJ2X3ByaXY7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5oLTExNi19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDAwOjE0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI5NDA5CgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogMjMzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkRGUyBWdWxuZXJhYmlsaXR5IFJlc2VhcmNoIGluIGBhdGgxMGtfdXNiYCoqCgpBbHJpZ2h0LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byBgYXRoMTBrX3VzYmAuIFRoZSBpbW1lZGlhdGUgdGhvdWdodCBpcywgY2FuIHdlIGZ1enogdGhpcyB0aGluZyB2aWEgVVNCIGVtdWxhdGlvbj8gU3l6a2FsbGVyJiMzOTtzIFVTQiBmdXp6ZXIgc2VlbXMgbGlrZSBhIHBlcmZlY3Qgc3RhcnRpbmcgcG9pbnQuIEJ1dCB3YWl0LCBiZWZvcmUgSSBkaXZlIGludG8gZnV6emluZywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGF0dGFjayBzdXJmYWNlLiBTcGVjaWZpY2FsbHksIGRvZXMgYGF0aDEwa191c2JgIGV2ZW4gKnN1cHBvcnQqIERGUyAoRHluYW1pYyBGcmVxdWVuY3kgU2VsZWN0aW9uKT8KCkxldCBtZSBkb3VibGUtY2hlY2sgdGhlIGBhdGgxMGtfbWFjX3JlZ2lzdGVyYCBmdW5jdGlvbiBhZ2Fpbi4gQWgsIGhlcmUgaXQgaXM6IGBhci0mZ3Q7ZGZzX2RldGVjdG9yID0gZGZzX3BhdHRlcm5fZGV0ZWN0b3JfaW5pdCgmYW1wO2FyLSZndDthdGhfY29tbW9uLCBOTDgwMjExX0RGU19VTlNFVCk7YC4gVGhpcyBpcyB1bmNvbmRpdGlvbmFsbHkgaW5pdGlhbGl6ZWQgZm9yICphbGwqIGBhdGgxMGtgIGRldmljZXMsIGluY2x1ZGluZyBVU0IuIE9rYXksIHRoYXQmIzM5O3MgcHJvbWlzaW5nIQoKTm93LCB0aGUgY3J1Y2lhbCBxdWVzdGlvbjogSG93IGlzIERGUyBmdW5jdGlvbmFsaXR5IHRyaWdnZXJlZD8gSSByZWNhbGwgYGF0aDEwa19kZnNfcmFkYXJfcmVwb3J0YCBnZXRzIGNhbGxlZCBmcm9tIGBhdGgxMGtfd21pX2V2ZW50X2Rmc2AuIFRoZSBxdWVzdGlvbiBub3cgYmVjb21lczogaXMgYGF0aDEwa193bWlfZXZlbnRfZGZzYCByZWFjaGFibGUgdmlhIHRoZSBVU0IgaW50ZXJmYWNlPyBUaGUgV01JIGV2ZW50cywgSSYjMzk7bSBwcmV0dHkgc3VyZSB0aG9zZSBhcmUgdGhlIG1lc3NhZ2VzIHBhc3NlZCB0aHJvdWdoIHRoZSBVU0IgaW50ZXJmYWNlISBMZXQmIzM5O3Mgc2VlLi4uIFllcCwgbG9va3MgbGlrZSBXTUkgZXZlbnRzIGFyZSBpbmRlZWQgcmVjZWl2ZWQgb3ZlciBVU0IuIFRoZSBwYXRoIHNlZW1zIHRvIGJlIGBhdGgxMGtfdXNiX3J4X2NvbXBsZXRlYCAtJmd0OyBgYXRoMTBrX2h0Y19yeF9jb21wbGV0aW9uX2hhbmRsZXJgIC0mZ3Q7IGBhdGgxMGtfd21pX2V2ZW50X2Rmc2AuIFJpZ2h0LiBUaW1lIHRvIHZlcmlmeSB0aGF0IGVudGlyZSBwYXRoIGFuZCBjb25maXJtIHRoZSBhc3N1bXB0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMDA6MTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YXRoMTBrX3dtaV9ldmVudF9kZnMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3dtaS5jPTQxNjk9c3RhdGljIGludCBhdGgxMGtfZGZzX2ZmdF9yZXBvcnQoc3RydWN0IGF0aDEwayAqYXIsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway93bWkuYy00MjA2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway93bWkuYzo0MjA3OnZvaWQgYXRoMTBrX3dtaV9ldmVudF9kZnMoc3RydWN0IGF0aDEwayAqYXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3dtaS5jLTQyMDgtXHRcdFx0ICBzdHJ1Y3Qgd21pX3BoeWVycl9ldl9hcmcgKnBoeWVycixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3dtaS5jPTQ0NDc9dm9pZCBhdGgxMGtfd21pX2V2ZW50X3BoeWVycihzdHJ1Y3QgYXRoMTBrICphciwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3dtaS5jLTQ0OTgtXHRcdGNhc2UgUEhZX0VSUk9SX1JBREFSOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway93bWkuYzo0NDk5Olx0XHRcdGF0aDEwa193bWlfZXZlbnRfZGZzKGFyLCBcdTAwMjZwaHllcnJfYXJnLCB0c2YpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway93bWkuYy00NTAwLVx0XHRcdGJyZWFrO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvd21pLmMtNDUwNC1cdFx0Y2FzZSBQSFlfRVJST1JfRkFMU0VfUkFEQVJfRVhUOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway93bWkuYzo0NTA1Olx0XHRcdGF0aDEwa193bWlfZXZlbnRfZGZzKGFyLCBcdTAwMjZwaHllcnJfYXJnLCB0c2YpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway93bWkuYy00NTA2LVx0XHRcdGF0aDEwa193bWlfZXZlbnRfc3BlY3RyYWxfc2NhbihhciwgXHUwMDI2cGh5ZXJyX2FyZywgdHNmKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3dtaS5jPTQ1MzA9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvd21pLmM6NDUzMTphdGgxMGtfd21pX2V2ZW50X2Rmc19zdGF0dXNfY2hlY2soc3RydWN0IGF0aDEwayAqYXIsIHN0cnVjdCBza19idWZmICpza2IpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3dtaS5jLTQ1MzIte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvd21pLmM9NjI4Mz1zdGF0aWMgdm9pZCBhdGgxMGtfd21pXzEwXzRfb3Bfcngoc3RydWN0IGF0aDEwayAqYXIsIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway93bWkuYy02Mzg4LVx0Y2FzZSBXTUlfMTBfNF9ERlNfU1RBVFVTX0NIRUNLX0VWRU5USUQ6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3dtaS5jOjYzODk6XHRcdGF0aDEwa193bWlfZXZlbnRfZGZzX3N0YXR1c19jaGVjayhhciwgc2tiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvd21pLmMtNjM5MC1cdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway93bWkuaD03NDkwPXZvaWQgYXRoMTBrX3dtaV9ldmVudF90YnR0b2Zmc2V0X3VwZGF0ZShzdHJ1Y3QgYXRoMTBrICphciwgc3RydWN0IHNrX2J1ZmYgKnNrYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3dtaS5oOjc0OTE6dm9pZCBhdGgxMGtfd21pX2V2ZW50X2RmcyhzdHJ1Y3QgYXRoMTBrICphcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvd21pLmgtNzQ5Mi1cdFx0XHQgIHN0cnVjdCB3bWlfcGh5ZXJyX2V2X2FyZyAqcGh5ZXJyLCB1NjQgdHNmKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMDA6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzA5NDkKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAxMjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgTGluZSBvZiBSZWFzb25pbmcqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gYGF0aDEwa193bWlfZXZlbnRfcGh5ZXJyYCBpcyB0aGUgc3RhcnRpbmcgcG9pbnQuIEl0IHNlZW1zIHRoYXQgdGhpcyBldmVudCBoYW5kbGVyIGNhbGxzIGBhdGgxMGtfd21pX2V2ZW50X2Rmc2AsIHdoaWNoIHRoZW4gbGVhZHMgdG8gYGF0aDEwa19kZnNfcmFkYXJfcmVwb3J0YC4gQW5kIGZpbmFsbHksIHRoYXQgZnVuY3Rpb24gaXMgY2FsbGluZyBgYXItJmd0O2Rmc19kZXRlY3Rvci0mZ3Q7YWRkX3B1bHNlYC4gSW50ZXJlc3RpbmcsIHZlcnkgaW50ZXJlc3RpbmcuIEl0JiMzOTtzIGJlY29taW5nIGNsZWFyIHRoYXQgd2UgbWlnaHQgYmUgYWJsZSB0byByZWFjaCBjb2RlIGluIGBkZnNfcHJpX2RldGVjdG9yLmNgIHRocm91Z2ggVVNCIGZ1enppbmcgb2YgYGF0aDEwa191c2JgLgoKQnV0LCBob2xkIG9uIGEgc2Vjb25kLiBJIG5lZWQgdG8gYmUgc3VyZSBhYm91dCBhIGRlcGVuZGVuY3ksIGVzcGVjaWFsbHkgc2luY2UgdGhpcyBpcyByZWxhdGVkIHRvIERGUy4gSXMgYENPTkZJR19BVEgxMEtfREZTX0NFUlRJRklFRGAgYSBwcmVyZXF1aXNpdGUgaGVyZT8gSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IGNoZWNrIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWdgIHRvIGNvbmZpcm0gd2hldGhlciBvciBub3QgdGhpcyBpcyB0aGUgY2FzZSBiZWZvcmUgSSBnbyBhbnkgZnVydGhlciBkb3duIHRoaXMgcGF0aC4gSSBuZWVkIHRvIGJlIHN1cmUgdGhpcyBwYXRoIGlzIGFjdHVhbGx5IHJlYWNoYWJsZSB3aXRoIHRoaXMgc2V0IHVwLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAwMDoxNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtBVEgxMEtfREZTX0NFUlRJRklFRCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZz04Nj1jb25maWcgQVRIMTBLX1RSQUNJTkdcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWctOTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWc6OTM6Y29uZmlnIEFUSDEwS19ERlNfQ0VSVElGSUVEXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWctOTQtXHRib29sIFwmIzM0O0F0aGVyb3MgREZTIHN1cHBvcnQgZm9yIGNlcnRpZmllZCBwbGF0Zm9ybXNcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2RlYnVnLmM9NDI9dm9pZCBhdGgxMGtfZGVidWdfcHJpbnRfaHdmd19pbmZvKHN0cnVjdCBhdGgxMGsgKmFyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvZGVidWcuYy01OS1cdFx0ICAgIElTX0VOQUJMRUQoQ09ORklHX0FUSDEwS19UUkFDSU5HKSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvZGVidWcuYzo2MDpcdFx0ICAgIElTX0VOQUJMRUQoQ09ORklHX0FUSDEwS19ERlNfQ0VSVElGSUVEKSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvZGVidWcuYy02MS1cdFx0ICAgIElTX0VOQUJMRUQoQ09ORklHX05MODAyMTFfVEVTVE1PREUpKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2RlYnVnLmM9MjUyND1pbnQgYXRoMTBrX2RlYnVnX3JlZ2lzdGVyKHN0cnVjdCBhdGgxMGsgKmFyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvZGVidWcuYy0yNTg1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9kZWJ1Zy5jOjI1ODY6XHRpZiAoSVNfRU5BQkxFRChDT05GSUdfQVRIMTBLX0RGU19DRVJUSUZJRUQpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2RlYnVnLmMtMjU4Ny1cdFx0ZGVidWdmc19jcmVhdGVfZmlsZShcJiMzNDtkZnNfc2ltdWxhdGVfcmFkYXJcJiMzNDssIDAyMDAsIGFyLVx1MDAzZWRlYnVnLmRlYnVnZnNfcGh5LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmM9MzUxMD1zdGF0aWMgdm9pZCBhdGgxMGtfcmVnZF91cGRhdGUoc3RydWN0IGF0aDEwayAqYXIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYy0zNTI0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYzozNTI1Olx0aWYgKElTX0VOQUJMRUQoQ09ORklHX0FUSDEwS19ERlNfQ0VSVElGSUVEKSBcdTAwMjZcdTAwMjYgYXItXHUwMDNlZGZzX2RldGVjdG9yKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jLTM1MjYtXHRcdG5sX2Rmc19yZWcgPSBhci1cdTAwM2VkZnNfZGV0ZWN0b3ItXHUwMDNlcmVnaW9uO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmM9MzU2MT1zdGF0aWMgdm9pZCBhdGgxMGtfcmVnX25vdGlmaWVyKHN0cnVjdCB3aXBoeSAqd2lwaHksXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYy0zNTY5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYzozNTcwOlx0aWYgKElTX0VOQUJMRUQoQ09ORklHX0FUSDEwS19ERlNfQ0VSVElGSUVEKSBcdTAwMjZcdTAwMjYgYXItXHUwMDNlZGZzX2RldGVjdG9yKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jLTM1NzEtXHRcdGF0aDEwa19kYmcoYXIsIEFUSDEwS19EQkdfUkVHVUxBVE9SWSwgXCYjMzQ7ZGZzIHJlZ2lvbiAweCV4XFxuXCYjMzQ7LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmM9OTY3Nz1zdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9pZmFjZV9jb21iaW5hdGlvbiBhdGgxMGtfMTB4X2lmX2NvbWJbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jLTk2ODQtXHRcdC5iZWFjb25faW50X21pbl9nY2QgPSAxLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYzo5Njg1OiNpZmRlZiBDT05GSUdfQVRIMTBLX0RGU19DRVJUSUZJRURcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmMtOTY4Ni1cdFx0LnJhZGFyX2RldGVjdF93aWR0aHMgPVx0QklUKE5MODAyMTFfQ0hBTl9XSURUSF8yMF9OT0hUKSB8XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYz05ODAxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX2lmYWNlX2NvbWJpbmF0aW9uIGF0aDEwa18xMF80X2lmX2NvbWJbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jLTk4MDgtXHRcdC5iZWFjb25faW50X21pbl9nY2QgPSAxLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYzo5ODA5OiNpZmRlZiBDT05GSUdfQVRIMTBLX0RGU19DRVJUSUZJRURcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmMtOTgxMC1cdFx0LnJhZGFyX2RldGVjdF93aWR0aHMgPVx0QklUKE5MODAyMTFfQ0hBTl9XSURUSF8yMF9OT0hUKSB8XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYz05ODIxPWllZWU4MDIxMV9pZmFjZV9jb21iaW5hdGlvbiBhdGgxMGtfMTBfNF9iY25faW50X2lmX2NvbWJbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jLTk4MjgtXHRcdC5iZWFjb25faW50X21pbl9nY2QgPSAxMDAsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jOjk4Mjk6I2lmZGVmIENPTkZJR19BVEgxMEtfREZTX0NFUlRJRklFRFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYy05ODMwLVx0XHQucmFkYXJfZGV0ZWN0X3dpZHRocyA9ICBCSVQoTkw4MDIxMV9DSEFOX1dJRFRIXzIwX05PSFQpIHxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jPTk5NzE9aW50IGF0aDEwa19tYWNfcmVnaXN0ZXIoc3RydWN0IGF0aDEwayAqYXIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYy0xMDI4Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmM6MTAyODM6XHRpZiAoSVNfRU5BQkxFRChDT05GSUdfQVRIMTBLX0RGU19DRVJUSUZJRUQpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jLTEwMjg0LVx0XHQvKiBJbml0IGF0aCBkZnMgcGF0dGVybiBkZXRlY3RvciAqL1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmMtMTAzNTctZXJyX2Rmc19kZXRlY3Rvcl9leGl0OlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYzoxMDM1ODpcdGlmIChJU19FTkFCTEVEKENPTkZJR19BVEgxMEtfREZTX0NFUlRJRklFRCkgXHUwMDI2XHUwMDI2IGFyLVx1MDAzZWRmc19kZXRlY3RvcilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmMtMTAzNTktXHRcdGFyLVx1MDAzZWRmc19kZXRlY3Rvci1cdTAwM2VleGl0KGFyLVx1MDAzZWRmc19kZXRlY3Rvcik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYz0xMDM2OT12b2lkIGF0aDEwa19tYWNfdW5yZWdpc3RlcihzdHJ1Y3QgYXRoMTBrICphcilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jLTEwMzcyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYzoxMDM3MzpcdGlmIChJU19FTkFCTEVEKENPTkZJR19BVEgxMEtfREZTX0NFUlRJRklFRCkgXHUwMDI2XHUwMDI2IGFyLVx1MDAzZWRmc19kZXRlY3RvcilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmMtMTAzNzQtXHRcdGFyLVx1MDAzZWRmc19kZXRlY3Rvci1cdTAwM2VleGl0KGFyLVx1MDAzZWRmc19kZXRlY3Rvcik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway93bWkuYz00MjA3PXZvaWQgYXRoMTBrX3dtaV9ldmVudF9kZnMoc3RydWN0IGF0aDEwayAqYXIsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway93bWkuYy00MjIzLVx0LyogU2tpcCBldmVudCBpZiBERlMgZGlzYWJsZWQgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvd21pLmM6NDIyNDpcdGlmICghSVNfRU5BQkxFRChDT05GSUdfQVRIMTBLX0RGU19DRVJUSUZJRUQpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway93bWkuYy00MjI1LVx0XHRyZXR1cm47XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDAwOjE0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMzMjUxCgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMTMwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkRGUyBTdXBwb3J0IGZvciBBdGhlcm9zIFVTQiBEcml2ZXJzKioKCk9rYXksIHNvIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhlIHVzZXIgaGFzIGBDT05GSUdfQVRIMTBLX0RGU19DRVJUSUZJRURgIGVuYWJsZWQsIHRoYXQmIzM5O3MgY2xlYXIuIEFuZCBvZiBjb3Vyc2UsIGlmIHRoZXkmIzM5O3JlIHVzaW5nIFVTQiwgd2UmIzM5O2xsIG5lZWQgYENPTkZJR19BVEgxMEtfVVNCYCBhcyB3ZWxsLiBCdXQgd2FpdCBhIG1pbnV0ZS4uLiBhcmVuJiMzOTt0IHRoZXJlIG90aGVyIEF0aGVyb3MgVVNCIGRyaXZlcnM/IFNwZWNpZmljYWxseSwgYGF0aDlrX2h0Y2AuIEkgbmVlZCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4gaWYgdGhhdCBkcml2ZXIgY2FuIGhhbmRsZSBERlMuIEl0JiMzOTtzIGNydWNpYWwgZm9yIHRoZSB1c2VyJiMzOTtzIHNldHVwLgoKSSBoYXZlIGEgbmFnZ2luZyBmZWVsaW5nIEkgbG9va2VkIGludG8gdGhpcyBiZWZvcmUuIEkgKnRoaW5rKiBJIGdyZXBwZWQgZm9yIGBhdGg5a19kZnNfcHJvY2Vzc19waHllcnJgIHdpdGhpbiB0aGUgYGF0aDlrL2h0Y2AgZGlyZWN0b3J5IHByZXZpb3VzbHksIGFuZCBJIGRpZG4mIzM5O3QgZ2V0IGFueSBoaXRzLiBCdXQgSSBuZWVkIHRvIGRvdWJsZS1jaGVjayBteSB3b3JrLiBJIG5lZWQgdG8gYmUgMTAwJSBzdXJlIGlmIGBhdGg5a19odGNgIGFjdHVhbGx5IHN1cHBvcnRzIERGUy4gTGV0IG1lIHZlcmlmeSB0aGlzIHF1aWNrbHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDAwOjE0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGZzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0YyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDAwOjE0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMzNjQyCgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMTkwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEN1cnJlbnQgTGluZSBvZiBSZWFzb25pbmcqKgoKQWxyaWdodCwgc28gaXQmIzM5O3MgY2xlYXIgdGhhdCBgYXRoOWtfaHRjYCBpc24mIzM5O3QgZ29pbmcgdG8gY3V0IGl0IGZvciB0aGlzIERGUyB0YXNrLiBUaGF0IHByZXR0eSBtdWNoIGxlYXZlcyBtZSB3aXRoIGBhdGgxMGtfdXNiYCwgcmlnaHQ/IEJ1dCBob2xkIG9uIGEgc2Vjb25kLi4uIGlzIGBhdGgxMGtfdXNiYCB0aGUgKm9ubHkqIG9wdGlvbj8gSSBuZWVkIHRvIGNvbnNpZGVyIGFsbCB0aGUgYW5nbGVzLiBMZXQgbWUgdGhpbmsuLi4gd2hhdCBhYm91dCBgbWFjODAyMTFfaHdzaW1gPwoKQWgsIHJpZ2h0LCBgbWFjODAyMTFfaHdzaW1gIGlzIHRoYXQgZ2VuZXJhbCBzb2Z0d2FyZSBzaW11bGF0b3IuIEl0JiMzOTtzIG5vdCB1c2luZyB0aGUgYGF0aDEwa2Agb3IgYGF0aDlrYCBkcml2ZXJzIGF0IGFsbDsgaXQmIzM5O3MgZ290IGl0cyBvd24gdGhpbmcsIGBtYWM4MDIxMV9od3NpbS5jYC4gVGhhdCBtZWFucywgaXQgd29uJiMzOTt0IGJlIHJ1bm5pbmcgYGRmc19wcmlfZGV0ZWN0b3IuY2AsIHNvIHRoYXQmIzM5O3MgYSBkZWFkIGVuZC4KCk9rYXksIGxldCYjMzk7cyBjaXJjbGUgYmFjayB0byB0aGUgbmV3ZXIgZHJpdmVycy4gV2hhdCBhYm91dCBgYXRoMTFrYCBvciBgYXRoMTJrYD8gRG8gKnRoZXkqIGxldmVyYWdlIGBkZnNfcHJpX2RldGVjdG9yLmNgPyBUaGF0JiMzOTtzIHRoZSBrZXkgcXVlc3Rpb24uIExldCYjMzk7cyBzZWUgaWYgYGF0aDExa2AgdXRpbGl6ZXMgdGhlIGBkZnNfcGF0dGVybl9kZXRlY3RvcmAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDAwOjE0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGZzX3BhdHRlcm5fZGV0ZWN0b3ImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDAwOjE0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM0MTQ2CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHN1bW1hcml6ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbiwgYXNzdW1pbmcgdGhlIGF1ZGllbmNlIGlzIGtub3dsZWRnZWFibGU6CgoqKktlcm5lbCBNb2R1bGUgSW52ZXN0aWdhdGlvbioqCgpSaWdodCwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gd2lyZWxlc3MgZHJpdmVycy4gVGhlIHF1ZXN0aW9uIG9mIHdoZXRoZXIgb3Igbm90IGEgc3BlY2lmaWMgZmVhdHVyZSBvciBtZWNoYW5pc20gaXMgdXRpbGl6ZWQgY29tZXMgdXAgZnJlcXVlbnRseS4gTGV0JiMzOTtzIHNlZS4uLiBJJiMzOTt2ZSBnb3QgYGF0aDExa2AgaW4gbWluZCByaWdodCBub3cuIEhvbGQgb24uLi4gSSYjMzk7bSBwcmV0dHkgc3VyZSB0aGF0IG9uZSBpc24mIzM5O3QgZW1wbG95aW5nIGl0LCBuby4gVGhhdCYjMzk7cyBhIHNvbGlkIG5lZ2F0aXZlLiBCdXQgd2FpdCBhIG1pbnV0ZSwgYW5kIGhlcmUgaXMgYSBuZXcgdHJhaW4gb2YgdGhvdWdodC4uLiB3aGF0IGFib3V0IHRoZSBuZXdlciBgYXRoMTJrYCBtb2R1bGU/IEkgc2hvdWxkIGV4cGxvcmUgdGhhdCBvbmUgbmV4dCwganVzdCB0byBiZSB0aG9yb3VnaCBhbmQgYXZvaWQgbWFraW5nIGFueSBwcmVtYXR1cmUgYXNzdW1wdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDAwOjE0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGZzX3BhdHRlcm5fZGV0ZWN0b3ImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDAwOjE0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM0MzY5CgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogOTA1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgdGhlIERGUyBEZXRlY3Rpb24gQ29kZSoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBiZWVuIGxvb2tpbmcgaW50byB0aGlzIGNvZGUgcmVsYXRlZCB0byBERlMgKER5bmFtaWMgRnJlcXVlbmN5IFNlbGVjdGlvbikuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIGZvY3VzIG9uIHRoZSBgYXRoOWtgIGFuZCBgYXRoMTBrYCBkcml2ZXJzLCBiZWNhdXNlIHRoZXkmIzM5O3JlIHRoZSBvbmVzIHRoYXQgdXNlIGBkZnNfcGF0dGVybl9kZXRlY3RvcmAgYW5kIGBkZnNfcHJpX2RldGVjdG9yYC4gU2luY2UgYGF0aDlrYCBpcyBQQ0ktb25seSwgYW5kIGBhdGgxMGtgIGluY2x1ZGVzIGBhdGgxMGtfdXNiYCwgSSBjYW4gdGFyZ2V0IGZ1enppbmcgdGhlIGBhdGgxMGtfdXNiYCBkcml2ZXIgdmlhIFVTQiBmdXp6aW5nLiBUaGF0IG1lYW5zIEkgY2FuIHVzZSBTeXprYWxsZXImIzM5O3MgYGR1bW15X2hjZGAgdG8gZG8gdGhpcyBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIHdoaWNoIGlzIHBlcmZlY3QuCgpJIG5lZWQgdG8gY29uZmlybSBgYXRoMTBrX3VzYmAgaXMgZW5hYmxlZCBpbiBTeXprYWxsZXIgYnkgZGVmYXVsdC4gSXQgdXN1YWxseSBpcywgYXMgYENPTkZJR19BVEgxMEtfVVNCPXlgLCBidXQgSSYjMzk7bGwgYWRkIGBBVEgxMEtfVVNCYCBhbmQgYEFUSDEwS19ERlNfQ0VSVElGSUVEYCB0byBgRW5hYmxlQ29uZmlnc2AganVzdCB0byBiZSBjZXJ0YWluLiBCZXR0ZXIgc2FmZSB0aGFuIHNvcnJ5LgoKTm93LCBsZXQmIzM5O3MgbG9vayBhdCB0aGlzIHNwZWNpZmljIHBhdGNoLiBJdCYjMzk7cyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHdpdGhpbiBgcGRlX2dldF9tdWx0aXBsZWAuIFRoZSBvcmlnaW5hbCBjb2RlIHVzZWQgZGl2aXNpb24sIGFuZCBub3cgaXQmIzM5O3MgdXNpbmcgcmVjaXByb2NhbCBtdWx0aXBsaWNhdGlvbi4gVGhpcyBpcyBhIGNsYXNzaWMgc3BvdCBmb3IgZnV6emluZyEgUmVwbGFjaW5nIGRpdmlzaW9uIHdpdGggcmVjaXByb2NhbCBtdWx0aXBsaWNhdGlvbiBjb3VsZCBpbnRyb2R1Y2UgcHJlY2lzaW9uIGlzc3Vlcywgb3IgZXZlbiBhIGRpdmlkZS1ieS16ZXJvIGlmIGBmcmFjdGlvbl9yZWNpcGAgaXNuJiMzOTt0IGluaXRpYWxpemVkIGNvcnJlY3RseS4gSXQmIzM5O3MgY3JpdGljYWwgdG8gbWFrZSBzdXJlIHRoaXMgZG9lc24mIzM5O3QgaW50cm9kdWNlIGFueSByZWdyZXNzaW9ucy4KCldhaXQsIGBmcmFjdGlvbl9yZWNpcGAgaXMgaW5pdGlhbGl6ZWQgaW4gYHBzZXFfaGFuZGxlcl9jcmVhdGVfc2VxdWVuY2VzYC4gSXQgbG9va3MgbGlrZSBpZiBgcHMucHJpYCBpcyAwLCB0aGVuIGBwcy5wcmlfcmVjaXBgIGJlY29tZXMgMC4gVGhlbiBgcmVjaXByb2NhbF9kaXZpZGUodmFsLCBmcmFjdGlvbl9yZWNpcClgIHdvdWxkIGJlIGNhbGxlZCB3aXRoIDAgYXMgb25lIG9mIGl0cyBpbnB1dHMuIFRoZSBjb2RlIGNhbGxzIGByZWNpcHJvY2FsX2RpdmlkZShhLCBSKWAgd2hpY2ggZXhwYW5kcyBvdXQgdG8gYCh1MzIpKCgodTY0KWEgKiBSLm0pICZndDsmZ3Q7IFIuc2gxKSAmZ3Q7Jmd0OyBSLnNoMmAuIElmIGBSLm1gIGlzIHplcm8sIHRoZW4gdGhpcyBmdW5jdGlvbiByZXR1cm5zIDAuCgpXYWl0IGEgc2Vjb25kLCB0aGUgKm9yaWdpbmFsKiBjb2RlIHdhczoKYGBgYwoJZmFjdG9yID0gdmFsIC8gZnJhY3Rpb247CglyZW1haW5kZXIgPSB2YWwgJSBmcmFjdGlvbjsKYGBgCklmIGBmcmFjdGlvbmAgKndhcyogemVybywgdGhhdCB3b3VsZCBjYXVzZSBhIGRpdmlkZS1ieS16ZXJvISBOb3csIGlmIGl0JiMzOTtzIHplcm8sIHRoZSBmdW5jdGlvbiByZXR1cm5zIDAuICBFc3NlbnRpYWxseSwgaXQmIzM5O3MgKmF2b2lkaW5nKiBhIHBvdGVudGlhbCBkaXZpZGUtYnktemVybyBleGNlcHRpb24hIFRoZSBuZXcgY29kZSBpcyBhY3R1YWxseSBtb3JlIHJvYnVzdC4KClRoZSBxdWVzdGlvbiB0aGVuIGlzLCBjYW4gYGZyYWN0aW9uYCAod2hpY2ggaXMgYHBzLnByaWApICpiZSogemVybz8gSSBzZWUgdGhhdCBgcHMucHJpYCBpcyBzZXQgdmlhIGBHRVRfUFJJX1RPX1VTRWAsIHdoaWNoIGludm9sdmVzIGEgdGltZSBkaWZmZXJlbmNlLiBJZiBgdHMgPT0gcC0mZ3Q7dHNgLCB0aGVuIGBwcy5wcmlgIGNvdWxkIGluZGVlZCBiZSAwLCByaWdodD8gVGhlIGtleSBwb2ludCBpcyB0aGF0IHRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgYW5kIHRoZSBjcml0aWNhbCB0aGluZyBpcyB0byB2ZXJpZnkgaXRzIGJlaGF2aW9yIHVuZGVyIGFsbCBzY2VuYXJpb3MuCgpBbHJpZ2h0LCBzbyB0aGUgZm9jdXMgc3ltYm9scyBJIG5lZWQgdG8gdGFyZ2V0IGZvciBmdXp6aW5nIGFyZTogYHBkZV9nZXRfbXVsdGlwbGVgIChzdGF0aWMpLCBgcHNlcV9oYW5kbGVyX2NyZWF0ZV9zZXF1ZW5jZXNgIChzdGF0aWMpLCBhbmQgYHBzZXFfaGFuZGxlcl9hZGRfdG9fZXhpc3Rpbmdfc2Vxc2AgKHN0YXRpYykuIFRoZXNlIGFyZSBhbGwgaW50ZXJuYWwgdG8gYGRmc19wcmlfZGV0ZWN0b3IuY2AsIHNvIEkgbmVlZCB0byBmaW5kIHRoZSBleHBvcnRlZCBvciBub24tc3RhdGljIGZ1bmN0aW9ucyB0aGF0IGNhbGwgdGhlbSB0byBidWlsZCB1cCBhIGZ1enppbmcgc3RyYXRlZ3kuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDAwOjE0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BzZXFfaGFuZGxlcl9jcmVhdGVfc2VxdWVuY2VzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wcmlfZGV0ZWN0b3IuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3ByaV9kZXRlY3Rvci5jPTIwND1zdGF0aWMgYm9vbCBwdWxzZV9xdWV1ZV9lbnF1ZXVlKHN0cnVjdCBwcmlfZGV0ZWN0b3IgKnBkZSwgdTY0IHRzKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcHJpX2RldGVjdG9yLmMtMjI2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wcmlfZGV0ZWN0b3IuYzoyMjc6c3RhdGljIGJvb2wgcHNlcV9oYW5kbGVyX2NyZWF0ZV9zZXF1ZW5jZXMoc3RydWN0IHByaV9kZXRlY3RvciAqcGRlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wcmlfZGV0ZWN0b3IuYy0yMjgtXHRcdFx0XHRcdCAgdTY0IHRzLCB1MzIgbWluX2NvdW50KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcHJpX2RldGVjdG9yLmM9Mzg5PXN0YXRpYyBzdHJ1Y3QgcHJpX3NlcXVlbmNlICpwcmlfZGV0ZWN0b3JfYWRkX3B1bHNlKHN0cnVjdCBwcmlfZGV0ZWN0b3IgKmRlLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcHJpX2RldGVjdG9yLmMtNDExLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wcmlfZGV0ZWN0b3IuYzo0MTI6XHRpZiAoIXBzZXFfaGFuZGxlcl9jcmVhdGVfc2VxdWVuY2VzKGRlLCB0cywgbWF4X3VwZGF0ZWRfc2VxKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wcmlfZGV0ZWN0b3IuYy00MTMtXHRcdHByaV9kZXRlY3Rvcl9yZXNldChkZSwgdHMpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAwMDoxNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNjM1OAoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDM0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgYnJlYWtkb3duIG9mIG15IHRob3VnaHQgcHJvY2VzczoKCioqVHJhY2luZyBgcHJpX2RldGVjdG9yX2FkZF9wdWxzZWAqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGBwcmlfZGV0ZWN0b3JfYWRkX3B1bHNlYCBhbmQgSSBzZWUgaXQgaW1tZWRpYXRlbHkgY2FsbHMgYHBzZXFfaGFuZGxlcl9jcmVhdGVfc2VxdWVuY2VzYC4gVGhhdCYjMzk7cyBpbnRlcmVzdGluZy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCYjMzk7cyBoYXBwZW5pbmcgd2l0aGluIHRoaXMgZnVuY3Rpb24gYW5kIGhvdyBpdCByZWxhdGVzIHRvIHRoZSBiaWdnZXIgcGljdHVyZS4gSSYjMzk7bSBnb2luZyB0byBmb2xsb3cgdGhlIGNvbnRyb2wgZmxvdyBmcm9tIHRoZSBzb3VyY2UsIHN0YXJ0aW5nIHdpdGggYHByaV9kZXRlY3Rvcl9hZGRfcHVsc2VgLCBhcyB0aGF0IHNlZW1zIGxpa2UgdGhlIGVudHJ5IHBvaW50LiBJJiMzOTtsbCBuZWVkIHRvIGRyaWxsIGRvd24gaW50byB0aGUgaW5uZXIgd29ya2luZ3Mgb2YgYHBzZXFfaGFuZGxlcl9jcmVhdGVfc2VxdWVuY2VzYCBhcyB3ZWxsIHRvIHByb3Blcmx5IHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcC4gVGhpcyBsb29rcyBsaWtlIGEgcHJvbWlzaW5nIGF2ZW51ZSBmb3IgdW5kZXJzdGFuZGluZyBob3cgdGhlIHN5c3RlbSBoYW5kbGVzIHB1bHNlIHNlcXVlbmNlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMDA6MTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cHJpX2RldGVjdG9yX2FkZF9wdWxzZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wcmlfZGV0ZWN0b3IuYz0zODI9c3RhdGljIHZvaWQgcHJpX2RldGVjdG9yX2V4aXQoc3RydWN0IHByaV9kZXRlY3RvciAqZGUpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wcmlfZGV0ZWN0b3IuYy0zODgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3ByaV9kZXRlY3Rvci5jOjM4OTpzdGF0aWMgc3RydWN0IHByaV9zZXF1ZW5jZSAqcHJpX2RldGVjdG9yX2FkZF9wdWxzZShzdHJ1Y3QgcHJpX2RldGVjdG9yICpkZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcHJpX2RldGVjdG9yLmMtMzkwLVx0XHRcdFx0XHRcdCAgIHN0cnVjdCBwdWxzZV9ldmVudCAqZXZlbnQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wcmlfZGV0ZWN0b3IuYz00MjU9c3RydWN0IHByaV9kZXRlY3RvciAqcHJpX2RldGVjdG9yX2luaXQoY29uc3Qgc3RydWN0IHJhZGFyX2RldGVjdG9yX3NwZWNzICpycylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3ByaV9kZXRlY3Rvci5jLTQzMi1cdGRlLVx1MDAzZWV4aXQgPSBwcmlfZGV0ZWN0b3JfZXhpdDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcHJpX2RldGVjdG9yLmM6NDMzOlx0ZGUtXHUwMDNlYWRkX3B1bHNlID0gcHJpX2RldGVjdG9yX2FkZF9wdWxzZTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcHJpX2RldGVjdG9yLmMtNDM0LVx0ZGUtXHUwMDNlcmVzZXQgPSBwcmlfZGV0ZWN0b3JfcmVzZXQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDAwOjE0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM2ODc2CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMzQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBpZiB0aGV5IGFyZSBteSBvd246CgoqKkludmVzdGlnYXRpbmcgUHVsc2UgRGV0ZWN0aW9uIEluaXRpYWxpemF0aW9uKioKCkFscmlnaHQsIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEl0IGxvb2tzIGxpa2UgYHByaV9kZXRlY3Rvcl9pbml0YCBpcyBzZXR0aW5nIHVwIHNvbWV0aGluZywgYW5kIHNwZWNpZmljYWxseSwgaXQgc2VlbXMgdG8gYmUgbGlua2luZyBhIGZ1bmN0aW9uLiBUaGUgbGluZSBgZGUtJmd0O2FkZF9wdWxzZSA9IHByaV9kZXRlY3Rvcl9hZGRfcHVsc2VgIGlzIHRoZSBrZXkuIEkgY2FuIGltbWVkaWF0ZWx5IGluZmVyIHRoYXQgYGRlYCBpcyBwcm9iYWJseSBhIGRhdGEgc3RydWN0dXJlIG9mIHNvbWUga2luZCDigJMgbWF5YmUgYSBkZXZpY2UgZGVzY3JpcHRvciBvciBhbiBvYmplY3Qg4oCTIGFuZCBpdCBjb250YWlucyBhIG1lbWJlciBjYWxsZWQgYGFkZF9wdWxzZWAuIFRoZSBhc3NpZ25tZW50IHN1Z2dlc3RzIHRoYXQgYHByaV9kZXRlY3Rvcl9pbml0YCBpcyB0YWtpbmcgdGhlIGFkZHJlc3Mgb2YgdGhlIGZ1bmN0aW9uIGBwcmlfZGV0ZWN0b3JfYWRkX3B1bHNlYCBhbmQgYXNzaWduaW5nIGl0IHRvIHRoZSBgYWRkX3B1bHNlYCBtZW1iZXIgd2l0aGluIHRoaXMgYGRlYCBzdHJ1Y3R1cmUuCgpTbywgYGRlLSZndDthZGRfcHVsc2VgIGlzIG5vdyBhIGZ1bmN0aW9uIHBvaW50ZXIgdGhhdCB3aWxsIGV4ZWN1dGUgYHByaV9kZXRlY3Rvcl9hZGRfcHVsc2VgLiBUaGF0JiMzOTtzIHN0YW5kYXJkIHByYWN0aWNlIGZvciBzZXR0aW5nIHVwIGNhbGxiYWNrcyBvciBtZXRob2RzIGluIEMsIGVzcGVjaWFsbHkgd2hlbiB3b3JraW5nIHdpdGggZGV2aWNlIGRyaXZlcnMgb3IgZXZlbnQgaGFuZGxlcnMuCgpUaGUgY29yZSBxdWVzdGlvbiBub3csIGFuZCB0aGUgY3JpdGljYWwgb25lIHRvIHVuZGVyc3RhbmQgdGhlIHdob2xlIHBpY3R1cmUsIGlzICp3aG8qIGNhbGxzIGBwcmlfZGV0ZWN0b3JfaW5pdGA/IEkgbmVlZCB0byB0cmFjZSBiYWNrIGZyb20gdGhpcyBmdW5jdGlvbiBjYWxsLiBLbm93aW5nIHdoZXJlIGBwcmlfZGV0ZWN0b3JfaW5pdGAgaXMgdXNlZCB3aWxsIHRlbGwgbWUgdGhlIGNvbnRleHQgb2YgdGhpcyBwdWxzZSBkZXRlY3Rpb24gc3lzdGVtLiBJcyBpdCBhdCBpbml0aWFsaXphdGlvbiwgZGV2aWNlIHJlZ2lzdHJhdGlvbiwgbW9kdWxlIGxvYWRpbmcsIG9yIHNvbWV0aGluZyBlbHNlIGVudGlyZWx5PyBUaGUgY2FsbGVyIHdpbGwgcmV2ZWFsIHRoZSBzY29wZSBhbmQgcHVycG9zZSBvZiB0aGUgYGFkZF9wdWxzZWAgZnVuY3Rpb24gYW5kIGhvdyB0aGUgc3lzdGVtIG1hbmFnZXMgdGhpcy4gVGhpcyBpcyB0aGUgY3J1Y2lhbCBwaWVjZSBvZiB0aGUgcHV6emxlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAwMDoxNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwcmlfZGV0ZWN0b3JfaW5pdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmM9MTk3PWNoYW5uZWxfZGV0ZWN0b3JfY3JlYXRlKHN0cnVjdCBkZnNfcGF0dGVybl9kZXRlY3RvciAqZHBkLCB1MTYgZnJlcSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3BhdHRlcm5fZGV0ZWN0b3IuYy0yMTAtXHRcdGNvbnN0IHN0cnVjdCByYWRhcl9kZXRlY3Rvcl9zcGVjcyAqcnMgPSBcdTAwMjZkcGQtXHUwMDNlcmFkYXJfc3BlY1tpXTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcGF0dGVybl9kZXRlY3Rvci5jOjIxMTpcdFx0c3RydWN0IHByaV9kZXRlY3RvciAqZGUgPSBwcmlfZGV0ZWN0b3JfaW5pdChycyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3BhdHRlcm5fZGV0ZWN0b3IuYy0yMTItXHRcdGlmIChkZSA9PSBOVUxMKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcHJpX2RldGVjdG9yLmM9Mzg5PXN0YXRpYyBzdHJ1Y3QgcHJpX3NlcXVlbmNlICpwcmlfZGV0ZWN0b3JfYWRkX3B1bHNlKHN0cnVjdCBwcmlfZGV0ZWN0b3IgKmRlLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcHJpX2RldGVjdG9yLmMtNDI0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wcmlfZGV0ZWN0b3IuYzo0MjU6c3RydWN0IHByaV9kZXRlY3RvciAqcHJpX2RldGVjdG9yX2luaXQoY29uc3Qgc3RydWN0IHJhZGFyX2RldGVjdG9yX3NwZWNzICpycylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcHJpX2RldGVjdG9yLmMtNDI2LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3ByaV9kZXRlY3Rvci5oPTYyPXN0cnVjdCBwcmlfZGV0ZWN0b3Ige1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcHJpX2RldGVjdG9yLmgtNzgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3ByaV9kZXRlY3Rvci5oOjc5OnN0cnVjdCBwcmlfZGV0ZWN0b3IgKnByaV9kZXRlY3Rvcl9pbml0KGNvbnN0IHN0cnVjdCByYWRhcl9kZXRlY3Rvcl9zcGVjcyAqcnMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wcmlfZGV0ZWN0b3IuaC04MC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMDA6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzc2NzIKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAyNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDoKCioqRGVjb25zdHJ1Y3RpbmcgRGV0ZWN0b3IgSW5pdGlhbGl6YXRpb24gYW5kIFB1bHNlIEFkZGl0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBgY2hhbm5lbF9kZXRlY3Rvcl9jcmVhdGVgLiBUaGF0IG5hbWUgc3Ryb25nbHkgc3VnZ2VzdHMgdGhpcyBpcyB3aGVyZSB3ZSBpbnN0YW50aWF0ZSBhIG5ldyBkZXRlY3RvciBjaGFubmVsLCB3aGljaCBtYWtlcyBzZW5zZS4gSW1tZWRpYXRlbHksIHRoZSBjb2RlIHNlZW1zIHRvIGhhbmQgb2ZmIHRoZSBjb3JlIGluaXRpYWxpemF0aW9uIHRvIGBwcmlfZGV0ZWN0b3JfaW5pdGAuIFRoYXQgaW1wbGllcyBhIHByaXZhdGUgb3IgcHJpbWFyeSBpbml0aWFsaXphdGlvbiBmdW5jdGlvbiwgcHJvYmFibHkgc2V0dGluZyB1cCBpbnRlcm5hbCBkYXRhIHN0cnVjdHVyZXMgYW5kIHBlcmhhcHMgYWxsb2NhdGluZyBtZW1vcnkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoYXQgY2FsbCBiZWNhdXNlIGl0JiMzOTtzIHRoZSBmb3VuZGF0aW9uLgoKTm93IHRoZSBtaWxsaW9uLWRvbGxhciBxdWVzdGlvbjogd2hlcmUgZG9lcyB0aGUgY29kZSAqYWRkKiBpbmRpdmlkdWFsIHB1bHNlcyB0byB0aGlzIGRldGVjdG9yPyBJJiMzOTttIG1pc3NpbmcgdGhhdCBrZXkgcGllY2UuIEkgbmVlZCB0byB0cmFjZSB0aGUgY2FsbCB0byBgYWRkX3B1bHNlYC4gSWRlbnRpZnlpbmcgd2hlcmUgcHVsc2VzIGFyZSBmZWQgaW50byB0aGUgc3lzdGVtIGlzIGNydWNpYWwgZm9yIHVuZGVyc3RhbmRpbmcgaG93IHRoZSBkZXRlY3RvciBhY3R1YWxseSAqZGV0ZWN0cyogYW55dGhpbmcuIEkgbmVlZCB0byBmaW5kIHRoZSBjYWxsaW5nIGNvbnRleHQgdG8gc2VlIGhvdyBkYXRhIGlzIGJlaW5nIHByb2Nlc3NlZC4gSXMgaXQgYW4gaW50ZXJydXB0LCBhIGRhdGEgc3RyZWFtaW5nIGZ1bmN0aW9uLCBvciBzb21ldGhpbmcgZWxzZSBlbnRpcmVseT8gV2l0aG91dCBgYWRkX3B1bHNlYCBJIGhhdmUgb25seSBoYWxmIHRoZSBwaWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAwMDoxNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthZGRfcHVsc2UmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3BhdHRlcm5fZGV0ZWN0b3IuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3BhdHRlcm5fZGV0ZWN0b3IuYz0yNjc9c3RhdGljIGJvb2xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcGF0dGVybl9kZXRlY3Rvci5jOjI2ODpkcGRfYWRkX3B1bHNlKHN0cnVjdCBkZnNfcGF0dGVybl9kZXRlY3RvciAqZHBkLCBzdHJ1Y3QgcHVsc2VfZXZlbnQgKmV2ZW50LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmMtMjY5LVx0ICAgICAgc3RydWN0IHJhZGFyX2RldGVjdG9yX3NwZWNzICpycylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3BhdHRlcm5fZGV0ZWN0b3IuYy0yOTItXHRcdHN0cnVjdCBwcmlfZGV0ZWN0b3IgKnBkID0gY2QtXHUwMDNlZGV0ZWN0b3JzW2ldO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmM6MjkzOlx0XHRzdHJ1Y3QgcHJpX3NlcXVlbmNlICpwcyA9IHBkLVx1MDAzZWFkZF9wdWxzZShwZCwgZXZlbnQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmMtMjk0LVx0XHRpZiAocHMgIT0gTlVMTCkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcGF0dGVybl9kZXRlY3Rvci5jPTM0MD1zdGF0aWMgY29uc3Qgc3RydWN0IGRmc19wYXR0ZXJuX2RldGVjdG9yIGRlZmF1bHRfZHBkID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcGF0dGVybl9kZXRlY3Rvci5jLTM0Mi1cdC5zZXRfZGZzX2RvbWFpblx0PSBkcGRfc2V0X2RvbWFpbixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcGF0dGVybl9kZXRlY3Rvci5jOjM0MzpcdC5hZGRfcHVsc2VcdD0gZHBkX2FkZF9wdWxzZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcGF0dGVybl9kZXRlY3Rvci5jLTM0NC1cdC5nZXRfc3RhdHNcdD0gZHBkX2dldF9zdGF0cyxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMDA6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzgzMTMKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiA4MTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBUYXJnZXQgUHJpb3JpdGl6YXRpb24gZm9yIERGUyBSYWRhciBEZXRlY3Rpb24qKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93biBmb3IgZnV6emluZyBwdXJwb3Nlcywgc3BlY2lmaWNhbGx5IHRhcmdldGluZyB0aGUgREZTIHJhZGFyIGRldGVjdGlvbiBpbiB0aGVzZSB3aXJlbGVzcyBkcml2ZXJzLiBUaGUgY29yZSBjYWxsIGNoYWluIGlzIHdoYXQgSSYjMzk7bSBpbnRlcmVzdGVkIGluOiBgYXRoMTBrX3dtaV9ldmVudF9kZnNgIChvciwgcmVhbGx5LCBgYXRoMTBrX3dtaV9ldmVudF9waHllcnJgKSwgd2hpY2ggdHJpZ2dlcnMgYSBzZXJpZXMgb2YgZXZlbnRzIHVsdGltYXRlbHkgbGVhZGluZyB0byByYWRhciBwdWxzZSBkZXRlY3Rpb24uCgpGaXJzdCwgYGRwZF9hZGRfcHVsc2VgIGNhbGxzIGBwZC0mZ3Q7YWRkX3B1bHNlYCwgYW5kIGBkcGRfYWRkX3B1bHNlYCBpcyBhc3NpZ25lZCB0byBgZHBkLSZndDthZGRfcHVsc2VgLiBXZSBzYXcgdGhhdCBgYXItJmd0O2Rmc19kZXRlY3Rvci0mZ3Q7YWRkX3B1bHNlYCBpcyBjYWxsZWQgYnkgYGF0aDEwa19kZnNfcmFkYXJfcmVwb3J0YCB3aGljaCBpbiB0dXJuIGlzIGNhbGxlZCBieSBgYXRoMTBrX3dtaV9ldmVudF9kZnNgLiBUaGlzIGNhbGwgY2hhaW4gaXMga2V5OiBgYXRoMTBrX3dtaV9ldmVudF9kZnNgIC0mZ3Q7IGBhdGgxMGtfZGZzX3JhZGFyX3JlcG9ydGAgLSZndDsgYGRwZF9hZGRfcHVsc2VgIC0mZ3Q7IGBwcmlfZGV0ZWN0b3JfYWRkX3B1bHNlYCAtJmd0OyBgcHNlcV9oYW5kbGVyX2NyZWF0ZV9zZXF1ZW5jZXNgIC8gYHBzZXFfaGFuZGxlcl9hZGRfdG9fZXhpc3Rpbmdfc2Vxc2AgLSZndDsgYHBkZV9nZXRfbXVsdGlwbGVgLgoKTm93LCBmb3IgZnV6emluZywgSSYjMzk7dmUgZ290IHRvIHByaW9yaXRpemUgdGhlIHRhcmdldHMuIExldCYjMzk7cyBzZWUuLi4KCiogICBgYXRoMTBrX3dtaV9ldmVudF9kZnNgOiBJdCYjMzk7cyBub3Qgc3RhdGljOyBpdCYjMzk7cyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIEFjdHVhbGx5LCBgYXRoMTBrX3dtaV9ldmVudF9waHllcnJgIGFsc28gaXNuJiMzOTt0IHN0YXRpYyBhbmQgaXQgY2FsbHMgYGF0aDEwa193bWlfZXZlbnRfZGZzYCwgc28gYm90aCBhcmUgcHJpbWUgY2FuZGlkYXRlcy4KKiAgIGBhdGgxMGtfZGZzX3JhZGFyX3JlcG9ydGA6IEl0JiMzOTtzIGBzdGF0aWNgLCBzbyBpdCBtaWdodCBiZSBpbmxpbmVkLiBUaGF0IGNvdWxkIGNvbXBsaWNhdGUgdGhpbmdzLgoqICAgYGRwZF9hZGRfcHVsc2VgOiBBbHNvIGBzdGF0aWNgLCB3aGljaCBpcyBsZXNzIGlkZWFsIGZvciBkaXJlY3QgZnV6emluZy4KKiAgIGBwcmlfZGV0ZWN0b3JfYWRkX3B1bHNlYDogVGhpcyBpcyBhbHNvIGBzdGF0aWNgLiBTbywgbm90IGRpcmVjdGx5IGZ1enphYmxlLgoKU28gdGhlIGJlc3QgaW5pdGlhbCBub24tc3RhdGljIHBvaW50cyBhcmUgY2xlYXJseSBgYXRoMTBrX3dtaV9ldmVudF9kZnNgIGFuZCBgYXRoMTBrX3dtaV9ldmVudF9waHllcnJgLCBzaW5jZSB0aGV5IHN0YXJ0IHRoZSB3aG9sZSBwcm9jZXNzLgoKV2hhdCBhYm91dCB0aGUgYGF0aDlrYCBzaWRlIG9mIHRoaW5ncz8gV2UmIzM5O3ZlIGdvdCBgYXRoOWtfZGZzX3Byb2Nlc3NfcGh5ZXJyYCAtJmd0OyBgYXRoOWtfZGZzX3Byb2Nlc3NfcmFkYXJfcHVsc2VgIC0mZ3Q7IGBwZC0mZ3Q7YWRkX3B1bHNlYC4gSXQmIzM5O3MgUENJLW9ubHkgc28gaXQgbWlnaHQgYmUgaGFyZGVyIHRvIHJlYWNoIHdpdGhvdXQgUENJIGZ1enppbmcsIGJ1dCBpdCBpcyB3b3J0aCBpbmNsdWRpbmcuIGBhdGg5a19kZnNfcHJvY2Vzc19waHllcnJgIGlzbiYjMzk7dCBzdGF0aWMgZWl0aGVyLiBTbywgSSB3aWxsIGluY2x1ZGUgYGF0aDlrX2Rmc19wcm9jZXNzX3BoeWVycmAgYW5kIGBhdGg5a19kZnNfcHJvY2Vzc19yYWRhcl9wdWxzZWAgaW4gdGhlIGxpc3QgdG8gYXR0ZW1wdCB0byBjb3ZlciBpdC4KCkZpbmFsbHksIHRoZSByZXF1aXJlZCBjb25maWdzIGFyZTogYENPTkZJR19BVEgxMEtfREZTX0NFUlRJRklFRGAsIGBDT05GSUdfQVRIMTBLX1VTQmAsIGFuZCBgQ09ORklHX0FUSDlLX0RGU19DRVJUSUZJRURgLiBXZSBuZWVkIHRvIHZlcmlmeSB0aGF0IGBDT05GSUdfQVRIOUtfREZTX0NFUlRJRklFRGAgYWN0dWFsbHkgZXhpc3RzIGluIHRoZSBrZXJuZWwgY29uZmlnLgoKVGhlcmVmb3JlLCB0aGUga2V5IHRhcmdldHMgZm9yIGluaXRpYWwgZnV6emluZyBzaG91bGQgYmUgYGF0aDEwa193bWlfZXZlbnRfZGZzYCwgYGF0aDEwa193bWlfZXZlbnRfcGh5ZXJyYCwgYW5kIGBhdGg5a19kZnNfcHJvY2Vzc19waHllcnJgLCBhaW1pbmcgdG8gdHJpZ2dlciB0aGUgREZTIHJhZGFyIGRldGVjdGlvbiBsb2dpYyBhbmQgZXhwb3NlIGFueSBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0aWVzIGluIHRoZSBwcm9jZXNzaW5nIG9mIHJhZGFyIHB1bHNlIGV2ZW50cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMDA6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7QVRIOUtfREZTX0NFUlRJRklFRCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc9OT1jb25maWcgQVRIOUtfREZTX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTEwLVx0ZGVmX2Jvb2wgeVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTE6XHRkZXBlbmRzIG9uIEFUSDlLX0RFQlVHRlMgXHUwMDI2XHUwMDI2IEFUSDlLX0RGU19DRVJUSUZJRURcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTEyLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnPTc2PWNvbmZpZyBBVEg5S19UWDk5XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctOTUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzo5Njpjb25maWcgQVRIOUtfREZTX0NFUlRJRklFRFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctOTctXHRib29sIFwmIzM0O0F0aGVyb3MgREZTIHN1cHBvcnQgZm9yIGNlcnRpZmllZCBwbGF0Zm9ybXNcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGU9MTU9YXRoOWstJChDT05GSUdfQVRIOUtfREZTX0RFQlVHRlMpICYjNDM7PSBkZnNfZGVidWcub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlOjE2OmF0aDlrLSQoQ09ORklHX0FUSDlLX0RGU19DRVJUSUZJRUQpICYjNDM7PSBkZnMub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlLTE3LWF0aDlrLSQoQ09ORklHX0FUSDlLX1RYOTkpICYjNDM7PSB0eDk5Lm9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGZzLmgtMjEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGZzLmg6MjI6I2lmIGRlZmluZWQoQ09ORklHX0FUSDlLX0RGU19DRVJUSUZJRUQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGZzLmgtMjMtLyoqXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2luaXQuYz04NjM9c3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfaWZhY2VfY29tYmluYXRpb24gaWZfY29tYltdID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9pbml0LmMtODY5LVx0XHQuYmVhY29uX2ludF9pbmZyYV9tYXRjaCA9IHRydWUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jOjg3MDojaWZkZWYgQ09ORklHX0FUSDlLX0RGU19DRVJUSUZJRURcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9pbml0LmMtODcxLVx0XHQucmFkYXJfZGV0ZWN0X3dpZHRocyA9XHRCSVQoTkw4MDIxMV9DSEFOX1dJRFRIXzIwX05PSFQpIHxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMDA6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDA1MTgKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAzMzYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQ29uZmlndXJhdGlvbiBDb251bmRydW0qKgoKT2theSwgc28gSSYjMzk7bSB0cnlpbmcgdG8gbmFpbCBkb3duIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9ucyBoZXJlLiBJIHNlZSBgQ09ORklHX0FUSDlLX0RGU19DRVJUSUZJRURgIGV4aXN0cywgd2hpY2ggaXMgZ29vZC4gQnV0IHdhaXQsIGBhdGg5a2AgaXMgUENJLW9ubHkuLi4gcmlnaHQ/IEhtbSwgbWF5YmUgSSBzaG91bGQgbGlzdCBpdCBhbnl3YXksIGp1c3QgZm9yIGNvbXBsZXRlbmVzcy4gR290dGEgYmUgdGhvcm91Z2guCgpUaGVuLCB0aGVyZSYjMzk7cyBgQ09ORklHX0FUSDlLYCBhbmQgYENPTkZJR19BVEgxMEtgLiBDaGFuY2VzIGFyZSB0aGV5JiMzOTtyZSBhbHJlYWR5IGVuYWJsZWQsIGJ1dCBsaXN0aW5nIHRoZW0gY2FuJiMzOTt0IGh1cnQuIEFsd2F5cyBkb3VibGUtY2hlY2ssIGVzcGVjaWFsbHkgaW4gYSBmdXp6aW5nIGNvbnRleHQuIEFuZCBob2xkIG9uLCBmb3IgdmlydHVhbGl6ZWQgZnV6emluZywgYENPTkZJR19BVEgxMEtfVVNCYCBpcyBwcm9iYWJseSB0aGUgbW9zdCBjcnVjaWFsIG9uZSBvZiB0aGVtIGFsbCwgdGhhdCYjMzk7cyBkZWZpbml0ZWx5IGdvaW5nIG9uIHRoZSBsaXN0LgoKTGV0JiMzOTtzIHNlZSwgd2hhdCBhYm91dCBgQ09ORklHX0FUSDlLX0hUQ2A/IEkgc2VlbSB0byByZWNhbGwgd2UmIzM5O3ZlIGxvb2tlZCBhdCB0aGF0IGJlZm9yZSBhbmQgY29uZmlybWVkIGl0IGRvZXNuJiMzOTt0IHVzZSBERlMsIGJ1dCBsZXQgbWUganVzdCBjb25maXJtIGl0Li4uIHllcywgaXQgZG9lc24mIzM5O3QgdXNlIERGUy4KClJpZ2h0LCBzbyB0byByZWNhcCwgaGVyZSYjMzk7cyB3aGF0IEkgd2FudCB0byBtYWtlIHN1cmUgd2UgaGF2ZSBjb25maWd1cmVkOgpgQVRIMTBLYApgQVRIMTBLX1VTQmAKYEFUSDEwS19ERlNfQ0VSVElGSUVEYApgQVRIOUtgCmBBVEg5S19ERlNfQ0VSVElGSUVEYApPaCwgYW5kIGBNQUM4MDIxMV9IV1NJTWAgLS0gbm90IGRpcmVjdGx5IHJlbGF0ZWQgdG8gdGhlIGBhdGhgIHN0dWZmLCBidXQgZ2VuZXJhbGx5IHVzZWZ1bCBmb3IgV2lGaSB0ZXN0aW5nLCBzbyBsZXQmIzM5O3MgdGhyb3cgdGhhdCBpbiBmb3IgZ29vZCBtZWFzdXJlLgoKTm93LCBhIHF1aWNrIHJldmlldyBvZiB0aGUgZGVwZW5kZW5jeSBjb21waWxhdGlvbiBsb2dpYy4uLiBTbywgYGRmc19wcmlfZGV0ZWN0b3IuY2AgaXMgY29tcGlsZWQgd2hlbiBgQ09ORklHX0FUSF9DT01NT05gIGlzIGVuYWJsZWQsIHdoaWNoIGlzIHRoZSBiYXNlbGluZS4gQnV0LCBgZGZzLm9gIGluc2lkZSBgYXRoOWtgIGlzIGRlcGVuZGVudCBvbiBgQ09ORklHX0FUSDlLX0RGU19DRVJUSUZJRURgLiBBbmQsIGBkZnNfcGF0dGVybl9kZXRlY3Rvci5vYCBhbmQgYGRmc19wcmlfZGV0ZWN0b3Iub2AgaW4gYGF0aGAgYXJlIGJ1aWx0IHVuY29uZGl0aW9uYWxseSBpZiBgYXRoLmtvYCBpcyBidWlsdCwgd2hpY2gsIGluIHR1cm4sIGlzIGRlcGVuZGVudCBvbiBgQVRIOUtgIG9yIGBBVEgxMEtgIG9yIHRob3NlIHNvcnRzIG9mIHNldHRpbmdzLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgcmVsYXRpb25zaGlwcyBiZXR3ZWVuIHRob3NlIGNvbXBvbmVudHMuCgpPa2F5LCBsZXQmIzM5O3MganVzdCBnbyBiYWNrIGFuZCBkb3VibGUgY2hlY2sgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9NYWtlZmlsZWAgYWdhaW4sIGp1c3QgdG8gbWFrZSBhYnNvbHV0ZWx5IGNlcnRhaW4gSSBoYXZlbiYjMzk7dCBtaXNzZWQgYW55dGhpbmcuIEdvdHRhIGJlIG1ldGljdWxvdXMgaGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMDA6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGZzX3ByaV9kZXRlY3RvciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL01ha2VmaWxlPTE1PWF0aC1vYmpzIDo9XHRtYWluLm8gXFxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvTWFrZWZpbGUtMTktXHRcdGRmc19wYXR0ZXJuX2RldGVjdG9yLm8gXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9NYWtlZmlsZToyMDpcdFx0ZGZzX3ByaV9kZXRlY3Rvci5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvTWFrZWZpbGUtMjEtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmMtMjAtI2luY2x1ZGUgXCYjMzQ7ZGZzX3BhdHRlcm5fZGV0ZWN0b3IuaFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmM6MjE6I2luY2x1ZGUgXCYjMzQ7ZGZzX3ByaV9kZXRlY3Rvci5oXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3BhdHRlcm5fZGV0ZWN0b3IuYy0yMi0jaW5jbHVkZSBcJiMzNDthdGguaFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcHJpX2RldGVjdG9yLmMtMjItI2luY2x1ZGUgXCYjMzQ7ZGZzX3BhdHRlcm5fZGV0ZWN0b3IuaFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wcmlfZGV0ZWN0b3IuYzoyMzojaW5jbHVkZSBcJiMzNDtkZnNfcHJpX2RldGVjdG9yLmhcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcHJpX2RldGVjdG9yLmMtMjQtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDAwOjE1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQxNjY5CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogODgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBzZWUsIG15IHRoaW5raW5nIGhlcmUgaXMgY2VudGVyZWQgb24gdGhpcyBgZGZzX3ByaV9kZXRlY3Rvci5vYCBvYmplY3QgZmlsZS4gUmlnaHQsIGl0JiMzOTtzIGRlZmluaXRlbHkgcGFydCBvZiBgYXRoLW9ianNgLCBzbyB0aGF0IG1lYW5zIGl0JiMzOTtzIGF1dG9tYXRpY2FsbHkgYnVpbHQgd2hlbmV2ZXIgYENPTkZJR19BVEhfQ09NTU9OYCBpcyBzZXQuIFRoYXQmIzM5O3MgdGhlIGJhc2VsaW5lLCB0aGUgZGVmYXVsdCBidWlsZCBjb25kaXRpb24uCgpCdXQsIGFuZCBoZXJlJiMzOTtzIHRoZSBjcml0aWNhbCBwb2ludCwganVzdCBiZWNhdXNlIGl0ICpjYW4qIGJlIGJ1aWx0IGRvZXNuJiMzOTt0IG1lYW4gaXQmIzM5O3MgKnVzZWQqLiBUbyBhY3R1YWxseSBnZXQgdGhhdCBjb2RlIHRvIGV4ZWN1dGUsIHdlIG5lZWQgZWl0aGVyIGBBVEgxMEtfREZTX0NFUlRJRklFRGAgb3IgYEFUSDlLX0RGU19DRVJUSUZJRURgIHRvIGJlIGRlZmluZWQuIFRob3NlIGFyZSB0aGUgZW5hYmxpbmcgY29uZGl0aW9ucywgdGhlIGFjdHVhbCBnYXRlcyB0aGF0IG5lZWQgdG8gYmUgb3BlbmVkLgoKTm93LCBJJiMzOTttIGdldHRpbmcgY3VyaW91cyBhYm91dCB0aGUgYmlnZ2VyIHBpY3R1cmUuIEkgc2hvdWxkIHByb2JhYmx5IGludmVzdGlnYXRlIGhvdyB3aWRlc3ByZWFkIHRoZSB1c2FnZSBvZiBgZGZzX3BhdHRlcm5fZGV0ZWN0b3JfaW5pdGAgYWN0dWFsbHkgaXMuIEFyZSB0aGVyZSBvdGhlciBwb2ludHMgb2YgaW50ZXJhY3Rpb24gdGhhdCBJJiMzOTttIG1pc3Npbmc/IFRoYXQgZnVuY3Rpb24mIzM5O3Mgc2lnbmlmaWNhbmNlIHdpbGwgYmUgaGlnaGxpZ2h0ZWQgdGhyb3VnaCB0aGF0IGFuYWx5c2lzLiBJIG5lZWQgdG8gY2hlY2sgZm9yIG90aGVyIGRlcGVuZGVuY2llcywgb3RoZXIgcGxhY2VzIGluIHRoZSBjb2RlIHRoYXQgY2FsbCB0aGF0IGluaXRpYWxpemF0aW9uIGZ1bmN0aW9uIHRvIGhhdmUgYSBnb29kIHNlbnNlIG9mIGl0cyBpbXBhY3QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDAwOjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2Rmc19wYXR0ZXJuX2RldGVjdG9yX2luaXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmM9OTk3MT1pbnQgYXRoMTBrX21hY19yZWdpc3RlcihzdHJ1Y3QgYXRoMTBrICphcilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jLTEwMjg1LVx0XHRhci1cdTAwM2VhdGhfY29tbW9uLmRlYnVnX21hc2sgPSBBVEhfREJHX0RGUztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmM6MTAyODY6XHRcdGFyLVx1MDAzZWRmc19kZXRlY3RvciA9IGRmc19wYXR0ZXJuX2RldGVjdG9yX2luaXQoXHUwMDI2YXItXHUwMDNlYXRoX2NvbW1vbixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmMtMTAyODctXHRcdFx0XHRcdFx0XHQgICAgIE5MODAyMTFfREZTX1VOU0VUKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jPTY1Nj1zdGF0aWMgaW50IGF0aDlrX2luaXRfc29mdGModTE2IGRldmlkLCBzdHJ1Y3QgYXRoX3NvZnRjICpzYyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jLTY4NS1cdHNjLVx1MDAzZXNjX2FoID0gYWg7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jOjY4NjpcdHNjLVx1MDAzZWRmc19kZXRlY3RvciA9IGRmc19wYXR0ZXJuX2RldGVjdG9yX2luaXQoY29tbW9uLCBOTDgwMjExX0RGU19VTlNFVCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jLTY4Ny1cdHNjLVx1MDAzZXR4OTlfcG93ZXIgPSBNQVhfUkFURV9QT1dFUiAmIzQzOyAxO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcGF0dGVybl9kZXRlY3Rvci5jPTM0OD1zdHJ1Y3QgZGZzX3BhdHRlcm5fZGV0ZWN0b3IgKlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmM6MzQ5OmRmc19wYXR0ZXJuX2RldGVjdG9yX2luaXQoc3RydWN0IGF0aF9jb21tb24gKmNvbW1vbixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcGF0dGVybl9kZXRlY3Rvci5jLTM1MC1cdFx0XHQgIGVudW0gbmw4MDIxMV9kZnNfcmVnaW9ucyByZWdpb24pXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmMtMzcxLX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcGF0dGVybl9kZXRlY3Rvci5jOjM3MjpFWFBPUlRfU1lNQk9MKGRmc19wYXR0ZXJuX2RldGVjdG9yX2luaXQpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcGF0dGVybl9kZXRlY3Rvci5oPTk1PXN0cnVjdCBkZnNfcGF0dGVybl9kZXRlY3RvciB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmgtMTE0LS8qKlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmg6MTE1OiAqIGRmc19wYXR0ZXJuX2RldGVjdG9yX2luaXQoKSAtIGNvbnN0cnVjdG9yIGZvciBwYXR0ZXJuIGRldGVjdG9yIGNsYXNzXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3BhdHRlcm5fZGV0ZWN0b3IuaC0xMTYtICogQHBhcmFtIHJlZ2lvbjogREZTIGRvbWFpbiB0byBiZSB1c2VkLCBjYW4gYmUgTkw4MDIxMV9ERlNfVU5TRVQgYXQgY3JlYXRpb25cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3BhdHRlcm5fZGV0ZWN0b3IuaD0xMTk9ZXh0ZXJuIHN0cnVjdCBkZnNfcGF0dGVybl9kZXRlY3RvciAqXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3BhdHRlcm5fZGV0ZWN0b3IuaDoxMjA6ZGZzX3BhdHRlcm5fZGV0ZWN0b3JfaW5pdChzdHJ1Y3QgYXRoX2NvbW1vbiAqY29tbW9uLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmgtMTIxLVx0XHRcdCAgZW51bSBubDgwMjExX2Rmc19yZWdpb25zIHJlZ2lvbik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDAwOjE1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQyNzczCgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogNDM4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIEtleSBERlMgRW50cnkgUG9pbnRzKioKCk9rYXksIHNvIEkmIzM5O3ZlIG5hcnJvd2VkIGRvd24gdGhlIGtleSBzeW1ib2xzIEkgbmVlZCB0byBmb2N1cyBvbiBmb3IgdGhpcyBERlMgYW5hbHlzaXMuIEl0IHNlZW1zIHRoZSBhY3Rpb24gaXMgYWxsIGluIGBhdGg5a2AgYW5kIGBhdGgxMGtgLiBUaGUgY3JpdGljYWwgZW50cnkgcG9pbnRzIHRvIHdhdGNoIGFyZToKCiogICBgYXRoMTBrX3dtaV9ldmVudF9kZnNgCiogICBgYXRoMTBrX3dtaV9ldmVudF9waHllcnJgCiogICBgYXRoOWtfZGZzX3Byb2Nlc3NfcGh5ZXJyYAoKTGV0JiMzOTtzIHF1aWNrbHkgY29uZmlybSB0aGVzZSBhcmVuJiMzOTt0IHN0YXRpYyBmdW5jdGlvbnMsIHdoaWNoIHdvdWxkIG1ha2UgdHJhY2luZyB0cmlja2llci4gQWhhLCBgYXRoMTBrX3dtaV9ldmVudF9kZnNgIGlzIHJpZ2h0IHRoZXJlIGluIGBhdGgxMGsvd21pLmNgLiBHcmVhdCwgYW5kIGl0JiMzOTtzIG5vdCBzdGF0aWM6IGB2b2lkIGF0aDEwa193bWlfZXZlbnRfZGZzKHN0cnVjdCBhdGgxMGsgKmFyLCBzdHJ1Y3Qgd21pX3BoeWVycl9ldl9hcmcgKnBoeWVyciwgdTY0IHRzZilgLiBQZXJmZWN0LgoKT2theSwgbGV0JiMzOTtzIG1vdmUgb24gdG8gYGF0aDEwa193bWlfZXZlbnRfcGh5ZXJyYDogYHZvaWQgYXRoMTBrX3dtaV9ldmVudF9waHllcnIoc3RydWN0IGF0aDEwayAqYXIsIHN0cnVjdCBza19idWZmICpza2IpYC4gTm90IHN0YXRpYyBlaXRoZXIuIEdvb2QhCgpBbmQgZmluYWxseSwgYGF0aDlrX2Rmc19wcm9jZXNzX3BoeWVycmA6IGB2b2lkIGF0aDlrX2Rmc19wcm9jZXNzX3BoeWVycihzdHJ1Y3QgYXRoX3NvZnRjICpzYywgdm9pZCAqZGF0YSwgc3RydWN0IGF0aF9yeF9zdGF0dXMgKnJzLCB1NjQgbWFjdGltZSlgLiBBbHNvIG5vdCBzdGF0aWMuCgpFeGNlbGxlbnQuIFRoZXNlIGFyZSBwcmVjaXNlbHkgd2hhdCBJJiMzOTttIGxvb2tpbmcgZm9yLiBUaGV5IHNlZW0gdG8gYmUgdGhlIHByaW1hcnkgZW50cnkgcG9pbnRzIGZvciB0aGUgREZTIHJhZGFyIGRldGVjdGlvbiBsb2dpYyBmcm9tIHRoZSBkcml2ZXIgc2lkZSwgc28gYW55IG1vZGlmaWNhdGlvbiB0byB0aGUgZGZzIGNvZGUgaXMgZ29pbmcgdG8gYmUgaW52b2tlZCBmcm9tIGhlcmUsIHdoaWNoIGlzIHdoYXQgSSBuZWVkIHRvIHRyYWNlIGFuZCB0ZXN0LiBJIHNob3VsZCBiZSBhYmxlIHRvIGZvbGxvdyB0aGVzZSBjYWxscyBpbnRvIHRoZSBtb2RpZmllZCBgZGZzX3ByaV9kZXRlY3Rvci5jYCBjb2RlIHRvIHNlZSBleGFjdGx5IGhvdyB0aGluZ3MgYXJlIGZsb3dpbmcuCgpOb3csIGxldCYjMzk7cyB0YWtlIGEgcXVpY2sgbG9vayBhdCB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbnM6IGBBVEgxMEtfREZTX0NFUlRJRklFRGAsIGBBVEgxMEtfVVNCYCwgYW5kIGBBVEg5S19ERlNfQ0VSVElGSUVEYC4gSW1wbGllZCBhcmUgYEFUSDEwS2AgYW5kIGBBVEg5S2AsIHNvIGxldCYjMzk7cyBpbmNsdWRlIHRob3NlIGZvciBjb21wbGV0ZW5lc3MuIEhtbSwgaXMgYENGRzgwMjExX0NFUlRJRklDQVRJT05fT05VU2AgcmVsYXRlZCB0byBERlM/IFBlcmhhcHMgREZTIHJlcXVpcmVzIGl0IHRvIGJlIGVuYWJsZWQuIExldCYjMzk7cyBkaWcgaW50byB0aGUgZGVwZW5kZW5jaWVzIG9mIGBBVEgxMEtfREZTX0NFUlRJRklFRGAgdG8gbWFrZSBzdXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAwMDoxNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQVRIMTBLX0RGU19DRVJUSUZJRUQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWc9ODY9Y29uZmlnIEFUSDEwS19UUkFDSU5HXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9LY29uZmlnLTkyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9LY29uZmlnOjkzOmNvbmZpZyBBVEgxMEtfREZTX0NFUlRJRklFRFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9LY29uZmlnLTk0LVx0Ym9vbCBcJiMzNDtBdGhlcm9zIERGUyBzdXBwb3J0IGZvciBjZXJ0aWZpZWQgcGxhdGZvcm1zXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDAwOjE1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQzOTIwCgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSBhbmQgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkFuYWx5emluZyB0aGUgRGVwZW5kZW5jaWVzIG9mIGBBVEgxMEtfREZTX0NFUlRJRklFRGAqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBXaGVuIEkgc2VlIGBBVEgxMEtfREZTX0NFUlRJRklFRGAsIG15IGluaXRpYWwgdGhvdWdodCBpcyBhbHdheXMgYWJvdXQgdGhlIGltcGxpY2F0aW9ucyBmb3IgcmVndWxhdG9yeSBjb21wbGlhbmNlIGFuZCwgc3BlY2lmaWNhbGx5LCBEeW5hbWljIEZyZXF1ZW5jeSBTZWxlY3Rpb24gKERGUykgaW4gdGhlIDUgR0h6IGJhbmRzLiBJIGtub3cgdGhpcyBsaWtlbHkgc2lnbmlmaWVzIHRoYXQgdGhlIHNwZWNpZmljIEF0aGVyb3Mgd2lyZWxlc3MgZHJpdmVyLCBgQVRIMTBLYCwgcmVxdWlyZXMgc3BlY2lmaWMgY2VydGlmaWNhdGlvbiB0byBsZWdhbGx5IHRyYW5zbWl0IG9uIHRob3NlIERGUyBmcmVxdWVuY2llcyBpbiBhIGdpdmVuIHJlZ3VsYXRvcnkgZG9tYWluLiBJdCYjMzk7cyBub3QganVzdCBhIGRyaXZlciBjb25maWd1cmF0aW9uOyBpdOKAmXMgYSBsZWdhbCByZXF1aXJlbWVudC4KCkkmIzM5O20gaW1tZWRpYXRlbHkgY29uc2lkZXJpbmcgdGhlIGNvbXBsZXhpdHkgb2YgdGhpcy4gVGhpcyBjb25maWd1cmF0aW9uIG9wdGlvbiB0aWVzIGluIGRpcmVjdGx5IHdpdGggaG93IHRoZSBrZXJuZWwgaW50ZXJhY3RzIHdpdGggdGhlIGhhcmR3YXJlJiMzOTtzIFJGIGNhcGFiaWxpdGllcy4gVGhpcyB0ZWxscyBtZSBJJiMzOTtsbCBuZWVkIHRvIGRpZyBpbnRvIHRoZSBrZXJuZWwgY29uZmlnIGZpbGVzIGFuZCBwb3RlbnRpYWxseSBpbnRvIHRoZSBkcml2ZXIgc291cmNlIGl0c2VsZi4gSSYjMzk7bGwgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBleGFjdCBjb25kaXRpb25zIHVuZGVyIHdoaWNoIHRoaXMgb3B0aW9uIGlzIGVuYWJsZWQuIEFyZSB3ZSB0YWxraW5nIGFib3V0IGEgaGFyZC1jb2RlZCBkZXBlbmRlbmN5IGJhc2VkIG9uIHRoZSBjb3VudHJ5IGNvZGUgb3IgYSBydW50aW1lIGNoZWNrLCBvciBib3RoPwoKTXkgbWluZCBpcyBhbHJlYWR5IHJhY2luZyB0aHJvdWdoIHBvc3NpYmxlIHNjZW5hcmlvcy4gSXMgdGhlIGNlcnRpZmljYXRpb24gYSBzdGF0aWMgdGhpbmcsIG9yIGlzIGl0IG1vcmUgY29tcGxleCB0aGFuIHRoYXQsIGRlcGVuZGluZyBvbiB0aGUgcGFydGljdWxhciBoYXJkd2FyZSByZXZpc2lvbiwgZmlybXdhcmUgdmVyc2lvbiwgb3IgZXZlbiB0aGUgcmVndWxhdG9yeSB2ZXJzaW9uIGluIHVzZT8gSSYjMzk7bSBhbnRpY2lwYXRpbmcgc29tZSBsZXZlbCBvZiBpbnRlcmFjdGlvbiB3aXRoIHRoZSByZWd1bGF0b3J5IGRhdGFiYXNlLCBlaXRoZXIgbG9jYWxseSBjYWNoZWQgb3IgcXVlcmllZCBkdXJpbmcgdGhlIGRyaXZlciYjMzk7cyBpbml0aWFsaXphdGlvbi4gSSBhbHNvIGtub3cgdGhhdCBpZiBpdCBpcyBwcmVzZW50LCBJJiMzOTtsbCBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBzeXN0ZW0gZGV0ZXJtaW5lcyB3aGV0aGVyIG9yIG5vdCBpdCYjMzk7cyBjZXJ0aWZpZWQgYW5kIGhvdyB0aGUgZmlybXdhcmUgZ2V0cyBsb2FkZWQgdG8gbWF0Y2guCgpJJiMzOTtsbCBiZSBsb29raW5nIGZvciBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcywgbmF0dXJhbGx5LiBJIG5lZWQgdG8gc2VlIHdoYXQgb3RoZXIga2VybmVsIG9wdGlvbnMgbXVzdCBiZSBlbmFibGVkIGZvciB0aGlzIHRvIGV2ZW4gKmFwcGVhciogYXMgYSBzZWxlY3RhYmxlIG9wdGlvbi4gSSYjMzk7bSB0aGlua2luZyBhYm91dCB3aGljaCBvdGhlciB3aXJlbGVzcyBmZWF0dXJlcywgc3VjaCBhcyByZWd1bGF0b3J5IGRvbWFpbiBzZWxlY3Rpb24gb3IgY291bnRyeSBjb2RlIGNvbmZpZ3VyYXRpb24sIG1pZ2h0IGJlIGltcGFjdGVkIGJ5IHRoaXMuIFRoaXMgYWxzbyBoaW50cyB0aGF0IHNlY3VyaXR5IGZlYXR1cmVzIHN1Y2ggYXMgV1BBMyBtYXkgYmUgaW1wYWN0ZWQgYnkgdGhlIGRyaXZlciYjMzk7cyBjZXJ0aWZpY2F0aW9uLgoKRmluYWxseSwgSSYjMzk7bSBhbHJlYWR5IGFudGljaXBhdGluZyB0aGUgbmVlZCB0byBjcm9zcy1yZWZlcmVuY2UgdGhpcyB3aXRoIHRoZSByZWd1bGF0b3J5IGRvY3VtZW50cyBhbmQgYW55IHJlbGV2YW50IGRvY3VtZW50YXRpb24gZm9yIHRoZSBgQVRIMTBLYCBkcml2ZXIgaXRzZWxmLiBUaGlzIGFsc28gbWVhbnMgdGhhdCwgaWYgSSBhbSBnb2luZyB0byBwcm9wZXJseSBsZXZlcmFnZSB0aGlzIHNldHRpbmcsIEkmIzM5O20gZ29pbmcgdG8gbmVlZCB0aGUgc3BlY2lmaWNhdGlvbnMgZm9yIHRoaXMgc2V0dGluZyBmcm9tIHRoZSBhdGgxMGsgZHJpdmVyJiMzOTtzIGRvY3VtZW50YXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDAwOjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogOTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICA5MDpcdFx0aGVscFxuICA5MTpcdFx0ICBTZWxlY3QgdGhpcyB0byBhdGgxMGsgdXNlIHRyYWNpbmcgaW5mcmFzdHJ1Y3R1cmUuXG4gIDkyOlx0XG4gIDkzOlx0Y29uZmlnIEFUSDEwS19ERlNfQ0VSVElGSUVEXG4gIDk0Olx0XHRib29sIFwmIzM0O0F0aGVyb3MgREZTIHN1cHBvcnQgZm9yIGNlcnRpZmllZCBwbGF0Zm9ybXNcJiMzNDtcbiAgOTU6XHRcdGRlcGVuZHMgb24gQVRIMTBLIFx1MDAyNlx1MDAyNiBDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNcbiAgOTY6XHRcdGRlZmF1bHQgblxuICA5NzpcdFx0aGVscFxuICA5ODpcdFx0VGhpcyBvcHRpb24gZW5hYmxlcyBERlMgc3VwcG9ydCBmb3IgaW5pdGlhdGluZyByYWRpYXRpb24gb25cbiAgOTk6XHRcdGF0aDEway5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMDA6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDQ2MTUKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiAzNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRXhhbWluaW5nIFdpcmVsZXNzIERyaXZlciBDZXJ0aWZpY2F0aW9uIFJlcXVpcmVtZW50cyoqCgpSaWdodCwgKkNGRzgwMjExX0NFUlRJRklDQVRJT05fT05VUyogaGFzIHJlYXJlZCBpdHMgaGVhZCBhZ2Fpbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCYjMzk7cyB0cmlnZ2VyaW5nIHRoaXMgcGFydGljdWxhciByZXF1aXJlbWVudC4gTXkgaW1tZWRpYXRlIGZvY3VzIGlzIG9uICpBVEg5S19ERlNfQ0VSVElGSUVEKi4gVGhhdCB2YXJpYWJsZSBpcyB0aGUgbG9naWNhbCBwbGFjZSB0byBzdGFydCBkaWdnaW5nIGludG8gdGhlIGRlcGVuZGVuY2llcy4gVW5kZXJzdGFuZGluZyBob3cgdGhhdCYjMzk7cyB0aWVkIGludG8gdGhlIGJyb2FkZXIgY2VydGlmaWNhdGlvbiBwaWN0dXJlIGlzIGNyaXRpY2FsLiBJJiMzOTtsbCBuZWVkIHRvIHRyYWNlIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgYW5kIHRoZWlyIGludGVycmVsYXRpb25zaGlwcy4gSSB3YW50IHRvIGlkZW50aWZ5IHRoZSBkaXJlY3QgbGluayBiZXR3ZWVuIHRoZSBjZXJ0aWZpY2F0aW9uIGFuZCB0aGlzIHNwZWNpZmljIGRyaXZlciBlbGVtZW50LiBUaW1lIHRvIGRpZyBpbnRvIHRoZSBoZWFkZXJzIGFuZCBzZWUgd2hhdCB0aGV5JiMzOTtyZSBkb2luZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMDA6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDkwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgOTA6XHRcdCAgb2YgdGhlIGVsZWN0cmljIGFuZCBtYWduZXRpYyBmaWVsZCBzdHJlbmd0aCBhbmQgcG93ZXIgZGVuc2l0eSBmb3JcbiAgOTE6XHRcdCAgdHJhbnNtaXR0ZXJzIG9wZXJhdGluZyBhdCBmcmVxdWVuY2llcyBmcm9tIDMwMCBrSHogdG8gMTAwIEdIei5cbiAgOTI6XHRcdCAgUmVndWxhdG9yeSBib2RpZXMgYXJvdW5kIHRoZSB3b3JsZCByZXF1aXJlIHRoYXQgd2lyZWxlc3MgZGV2aWNlXG4gIDkzOlx0XHQgIGJlIGV2YWx1YXRlZCB0byBtZWV0IHRoZSBSRiBleHBvc3VyZSBsaW1pdHMgc2V0IGZvcnRoIGluIHRoZVxuICA5NDpcdFx0ICBnb3Zlcm5tZW50YWwgU0FSIHJlZ3VsYXRpb25zLlxuICA5NTpcdFxuICA5NjpcdGNvbmZpZyBBVEg5S19ERlNfQ0VSVElGSUVEXG4gIDk3Olx0XHRib29sIFwmIzM0O0F0aGVyb3MgREZTIHN1cHBvcnQgZm9yIGNlcnRpZmllZCBwbGF0Zm9ybXNcJiMzNDtcbiAgOTg6XHRcdGRlcGVuZHMgb24gQVRIOUsgXHUwMDI2XHUwMDI2IENGRzgwMjExX0NFUlRJRklDQVRJT05fT05VU1xuICA5OTpcdFx0ZGVmYXVsdCBuXG4gMTAwOlx0XHRoZWxwXG4gMTAxOlx0XHQgIFRoaXMgb3B0aW9uIGVuYWJsZXMgREZTIHN1cHBvcnQgZm9yIGluaXRpYXRpbmcgcmFkaWF0aW9uIG9uXG4gMTAyOlx0XHQgIGF0aDlrLiBUaGVyZSBpcyBubyB3YXkgdG8gZHluYW1pY2FsbHkgZGV0ZWN0IGlmIGEgY2FyZCB3YXMgREZTXG4gMTAzOlx0XHQgIGNlcnRpZmllZCBhbmQgYXMgc3VjaCB0aGlzIGlzIGxlZnQgYXMgYSBidWlsZCB0aW1lIG9wdGlvbi4gVGhpc1xuIDEwNDpcdFx0ICBvcHRpb24gc2hvdWxkIG9ubHkgYmUgZW5hYmxlZCBieSBzeXN0ZW0gaW50ZWdyYXRvcnMgdGhhdCBjYW5cbiAxMDU6XHRcdCAgZ3VhcmFudGVlIHRoYXQgYWxsIHRoZSBwbGF0Zm9ybXMgdGhhdCB0aGVpciBrZXJuZWwgd2lsbCBydW4gb25cbiAxMDY6XHRcdCAgaGF2ZSBvYnRhaW5lZCBhcHByb3ByaWF0ZSByZWd1bGF0b3J5IGJvZHkgY2VydGlmaWNhdGlvbiBmb3IgYVxuIDEwNzpcdFx0ICByZXNwZWN0aXZlIEF0aGVyb3MgY2FyZCBieSB1c2luZyBhdGg5ayBvbiB0aGUgdGFyZ2V0IHNoaXBwaW5nXG4gMTA4Olx0XHQgIHBsYXRmb3Jtcy5cbiAxMDk6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMDA6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDUxNzkKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiA2MDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIEF0aGVyb3MgREZTIFBSSSBEZXRlY3RvciBQYXRjaCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duIHN5c3RlbWF0aWNhbGx5LiBGaXJzdCwgdGhlIGNvcmUgcmVxdWlyZW1lbnQgc2VlbXMgdG8gYmUgYENGRzgwMjExX0NFUlRJRklDQVRJT05fT05VU2AsIHdoaWNoIGlzIGNyaXRpY2FsIGZvciBib3RoIHRoZSBgYXRoMTBrYCBhbmQgYGF0aDlrYCBkcml2ZXJzLiBTbywgSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aG9zZSBhcmUgZW5hYmxlZDogYEFUSDEwS2AsIGBBVEgxMEtfVVNCYCwgYEFUSDEwS19ERlNfQ0VSVElGSUVEYCwgYEFUSDlLYCwgYEFUSDlLX0RGU19DRVJUSUZJRURgLCBhbmQgYENGRzgwMjExX0NFUlRJRklDQVRJT05fT05VU2AuIGBBVEg5S2AgaXMgbm9ybWFsbHkgUENJLW9ubHksIGJ1dCBpdCBjYW4gYmUgaW5jbHVkZWQsIHNvIEkmIzM5O2xsIGtlZXAgaXQgZm9yIG5vdy4gSSYjMzk7bGwgYWxzbyBhZGQgdGhlIG9idmlvdXMgb25lczogYE1BQzgwMjExYCBhbmQgYENGRzgwMjExYC4KClRoaXMgcGF0Y2ggaXMgZGVmaW5pdGVseSB3b3J0aCBmdXp6aW5nOyBpdCYjMzk7cyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBhbHRlcmluZyBob3cgcmFkYXIgcHVsc2VzIGFyZSBkZXRlY3RlZCwgc3BlY2lmaWNhbGx5IHJlcGxhY2luZyBhIGRpdmlzaW9uIHdpdGggYSByZWNpcHJvY2FsIG11bHRpcGxpY2F0aW9uIGluIHRoZSBBdGhlcm9zIERGUyBQUkkgZGV0ZWN0b3IgbG9naWMuIEl0JiMzOTtzIGFjY2Vzc2libGUgdmlhIFVTQiBmdXp6aW5nIG9uIHRoZSBgYXRoMTBrX3VzYmAgZHJpdmVyIGJlY2F1c2UgV01JIGV2ZW50cyBjb250YWluaW5nIFBIWSBlcnJvcnMgY2FuIHRyaWdnZXIgdGhlIERGUyByYWRhciByZXBvcnQgcGF0aC4gVGhpcyBpcyBnb29kIHRvIGtub3cuCgpUaGUga2V5IHN5bWJvbHMgdG8gZm9jdXMgb24gYXJlIGBhdGgxMGtfd21pX2V2ZW50X2Rmc2AsIGBhdGgxMGtfd21pX2V2ZW50X3BoeWVycmAsIGFuZCBgYXRoOWtfZGZzX3Byb2Nlc3NfcGh5ZXJyYC4gSSBzaG91bGQgZG91YmxlLWNoZWNrIHRoYXQgdGhvc2UgZnVuY3Rpb24gbmFtZXMgYXJlIGFjY3VyYXRlOyBJIGp1c3Qgd2FudCB0byB2ZXJpZnkgYmVmb3JlIHByb2NlZWRpbmcuIE9rYXksIHllcCwgY29uZmlybWVkOiBgYXRoMTBrX3dtaV9ldmVudF9kZnNgIHRha2VzIGBhdGgxMGtgIHN0cnVjdCwgYHdtaV9waHllcnJfZXZfYXJnYCwgYW5kIGB1NjQgdHNmYCBhcyBhcmd1bWVudHMuIGBhdGgxMGtfd21pX2V2ZW50X3BoeWVycmAgcmVjZWl2ZXMgYGF0aDEwa2AgYW5kIGBza19idWZmYCwgYW5kIGBhdGg5a19kZnNfcHJvY2Vzc19waHllcnJgIHJlcXVpcmVzIGBhdGhfc29mdGNgLCBhIHZvaWQgcG9pbnRlciwgYGF0aF9yeF9zdGF0dXNgLCBhbmQgYHU2NCBtYWN0aW1lYC4gR29vZCwgZXZlcnl0aGluZyBsb29rcyBpbiBvcmRlci4KCkkgc2hvdWxkIGFsc28gaW52ZXN0aWdhdGUgd2hldGhlciB0aGVyZSBhcmUgb3RoZXIgcmVsZXZhbnQgZXhwb3J0ZWQgZnVuY3Rpb25zIHdpdGhpbiBgZGZzX3ByaV9kZXRlY3Rvci5jYC4gYHByaV9kZXRlY3Rvcl9pbml0YCBpcyBleHBvcnRlZCB0byBvdGhlciBmaWxlcyBpbiB0aGUgYGF0aGAgbW9kdWxlLCB3aGljaCBpcyBpbnRlcmVzdGluZywgYnV0IHRoYXQgc2VlbXMgdG8gYmUgbW9kdWxlLWxvY2FsLiBJdCBsb29rcyBsaWtlIGl0IGlzIG5vdCBleHBvcnRlZCB0byB0aGUga2VybmVsIHZpYSBgRVhQT1JUX1NZTUJPTGAsIHdoaWNoIG1lYW5zIHRoYXQgaXQgY2FuJiMzOTt0IGJlIGNhbGxlZCBmcm9tIG91dHNpZGUgdGhlIG1vZHVsZS4gVGhhdCBpcyBmaW5lLCBhcyBsb25nIGFzIHRoZSBvdGhlciBmdW5jdGlvbnMgYXJlIGVub3VnaC4KCkFscmlnaHQsIHdpdGggdGhpcyBpbmZvcm1hdGlvbiwgSSBjYW4gbm93IGJlZ2luIHRoZSBmdXp6aW5nIHByb2Nlc3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDAwOjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7RVhQT1JUX1NZTUJPTCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcHJpX2RldGVjdG9yLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAwMDoxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NjQwNAoJCQkJCQkJb3V0cHV0OiAxOTgKCQkJCQkJCXRob3VnaHRzOiA5MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB1bmRlcnN0YW5kaW5nLCBkZWxpdmVyZWQgYXMgYSBmaXJzdC1wZXJzb24gc3VtbWFyeSwga2VlcGluZyBpbiBtaW5kIEkmIzM5O20gZGVhbGluZyB3aXRoIHNvbWVvbmUgd2hvJiMzOTtzIGZhbWlsaWFyIHdpdGggdGhlIGtlcm5lbDoKCioqQW5hbHlzaXMgb2YgU3ltYm9sIEV4cG9ydCoqCgpSaWdodCwgc28gSSYjMzk7dmUgbG9va2VkIGF0IHRoaXMsIGFuZCB0aGUgc2l0dWF0aW9uIGlzIGNsZWFyLiBUaGlzIGlzbiYjMzk7dCBzb21ldGhpbmcgdGhhdCYjMzk7cyBiZWluZyAqZXhwb3J0ZWQqIGluIHRoZSB0eXBpY2FsIHNlbnNlLiBXZSYjMzk7cmUgbm90IGRlYWxpbmcgd2l0aCBhbiBleHRlcm5hbCBleHBvcnQuIEl0JiMzOTtzIGNvbmZpbmVkIHdpdGhpbiBgYXRoLmtvYCwgc3BlY2lmaWNhbGx5IHdpdGhpbiBgZGZzX3BhdHRlcm5fZGV0ZWN0b3IuY2AuIFRoYXQmIzM5O3MgdGhlIGtleS4KCkhvd2V2ZXIsIGBkZnNfcGF0dGVybl9kZXRlY3Rvcl9pbml0YCAqaXMqIGJlaW5nIGV4cG9ydGVkIHVzaW5nIGBFWFBPUlRfU1lNQk9MYC4gU28gdGhhdCYjMzk7cyBpbXBvcnRhbnQgZm9yIHRoZSBvdmVyYWxsIHBpY3R1cmUuIFRoZXJlZm9yZSwgdGhlIG1vc3QgcmVsZXZhbnQgc3ltYm9scyB0byBmb2N1cyBvbiwgdGhlIGJlc3QgcG9pbnRzIHRvIGV4YW1pbmUsIGFyZSB0aGUgZW50cnkgcG9pbnRzIGZyb20gdGhlIGRyaXZlciBpdHNlbGYg4oCTIHRoZSBgYXRoOWtgIG9yIGBhdGgxMGtgIG1vZHVsZXMuIFRoZXkmIzM5O2xsIGJlIHRoZSBzb3VyY2Ugb2YgY2FsbHMgdGhhdCBpbml0aWF0ZSB0aGlzLgoKSSYjMzk7bSBjb21mb3J0YWJsZSB3aXRoIHRoaXMgYXNzZXNzbWVudDsgdGhpcyBzaG91bGQgYmUgYWNjdXJhdGUgYmFzZWQgb24gd2hhdCBJJiMzOTt2ZSBzZWVuLiBMZXQmIzM5O3MgbG9jayB0aGlzIGluLiBJJiMzOTttIGdvaW5nIHRvIGNhbGwgYHNldC1yZXN1bHRzYCBub3cuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDAwOjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtBVEgxMEsmIzM0OywKICAgICYjMzQ7QVRIMTBLX1VTQiYjMzQ7LAogICAgJiMzNDtBVEgxMEtfREZTX0NFUlRJRklFRCYjMzQ7LAogICAgJiMzNDtBVEg5SyYjMzQ7LAogICAgJiMzNDtBVEg5S19ERlNfQ0VSVElGSUVEJiMzNDssCiAgICAmIzM0O0NGRzgwMjExX0NFUlRJRklDQVRJT05fT05VUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2F0aDEwa193bWlfZXZlbnRfZGZzJiMzNDssCiAgICAmIzM0O2F0aDEwa193bWlfZXZlbnRfcGh5ZXJyJiMzNDssCiAgICAmIzM0O2F0aDlrX2Rmc19wcm9jZXNzX3BoeWVyciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZXBsYWNlcyBhIGRpdmlzaW9uIHdpdGggYSByZWNpcHJvY2FsIG11bHRpcGxpY2F0aW9uIGluIHRoZSBBdGhlcm9zIERGUyBQUkkgZGV0ZWN0b3IgbG9naWMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGFsdGVycyB0aGUgY29yZSBsb2dpYyBvZiByYWRhciBwdWxzZSBkZXRlY3Rpb24uIFRoZSBjb2RlIGlzIHJlYWNoYWJsZSB2aWEgdGhlIGF0aDEwa191c2IgZHJpdmVyIHVzaW5nIFVTQiBmdXp6aW5nLCBhcyBXTUkgZXZlbnRzIGNvbnRhaW5pbmcgUEhZIGVycm9ycyBjYW4gdHJpZ2dlciB0aGUgREZTIHJhZGFyIHJlcG9ydCBwYXRoLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtBVEgxMEsmIzM0OywKICAgICYjMzQ7QVRIMTBLX1VTQiYjMzQ7LAogICAgJiMzNDtBVEgxMEtfREZTX0NFUlRJRklFRCYjMzQ7LAogICAgJiMzNDtBVEg5SyYjMzQ7LAogICAgJiMzNDtBVEg5S19ERlNfQ0VSVElGSUVEJiMzNDssCiAgICAmIzM0O0NGRzgwMjExX0NFUlRJRklDQVRJT05fT05VUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2F0aDEwa193bWlfZXZlbnRfZGZzJiMzNDssCiAgICAmIzM0O2F0aDEwa193bWlfZXZlbnRfcGh5ZXJyJiMzNDssCiAgICAmIzM0O2F0aDlrX2Rmc19wcm9jZXNzX3BoeWVyciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZXBsYWNlcyBhIGRpdmlzaW9uIHdpdGggYSByZWNpcHJvY2FsIG11bHRpcGxpY2F0aW9uIGluIHRoZSBBdGhlcm9zIERGUyBQUkkgZGV0ZWN0b3IgbG9naWMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGFsdGVycyB0aGUgY29yZSBsb2dpYyBvZiByYWRhciBwdWxzZSBkZXRlY3Rpb24uIFRoZSBjb2RlIGlzIHJlYWNoYWJsZSB2aWEgdGhlIGF0aDEwa191c2IgZHJpdmVyIHVzaW5nIFVTQiBmdXp6aW5nLCBhcyBXTUkgZXZlbnRzIGNvbnRhaW5pbmcgUEhZIGVycm9ycyBjYW4gdHJpZ2dlciB0aGUgREZTIHJhZGFyIHJlcG9ydCBwYXRoLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMDJUMDA6MTM6MjQuNTg2MjgyODYyWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTUyMDkyOTIzMzc1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkFUSDEwS1wiLFxuICAgIFwiQVRIMTBLX1VTQlwiLFxuICAgIFwiQVRIMTBLX0RGU19DRVJUSUZJRURcIixcbiAgICBcIkFUSDlLXCIsXG4gICAgXCJBVEg5S19ERlNfQ0VSVElGSUVEXCIsXG4gICAgXCJDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJhdGgxMGtfd21pX2V2ZW50X2Rmc1wiLFxuICAgIFwiYXRoMTBrX3dtaV9ldmVudF9waHllcnJcIixcbiAgICBcImF0aDlrX2Rmc19wcm9jZXNzX3BoeWVyclwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlcGxhY2VzIGEgZGl2aXNpb24gd2l0aCBhIHJlY2lwcm9jYWwgbXVsdGlwbGljYXRpb24gaW4gdGhlIEF0aGVyb3MgREZTIFBSSSBkZXRlY3RvciBsb2dpYy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgYWx0ZXJzIHRoZSBjb3JlIGxvZ2ljIG9mIHJhZGFyIHB1bHNlIGRldGVjdGlvbi4gVGhlIGNvZGUgaXMgcmVhY2hhYmxlIHZpYSB0aGUgYXRoMTBrX3VzYiBkcml2ZXIgdXNpbmcgVVNCIGZ1enppbmcsIGFzIFdNSSBldmVudHMgY29udGFpbmluZyBQSFkgZXJyb3JzIGNhbiB0cmlnZ2VyIHRoZSBERlMgcmFkYXIgcmVwb3J0IHBhdGguXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDAwOjEzOjI0LjU4NjI4OTAyMloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODY5ODg1MTAzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZmE4NzQ2ZjJiZmNkN2ZiZDUxYjA1NzEyMDBhNjRhNzZmOWZjMzAwZlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVGh1IEp1bCAyIDAwOjEzOjIyIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcHJpX2RldGVjdG9yLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3ByaV9kZXRlY3Rvci5jXFxuaW5kZXggMzg4ZjlkMTkxM2JkOWQuLjUyMGZkMTU2N2EwYmFkIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcHJpX2RldGVjdG9yLmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3ByaV9kZXRlY3Rvci5jXFxuQEAgLTE2LDYgKzE2LDcgQEBcXG4gXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9zbGFiLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9zcGlubG9jay5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvcmVjaXByb2NhbF9kaXYuaFxcdTAwM2VcXG4gXFxuICNpbmNsdWRlIFxcXCJhdGguaFxcXCJcXG4gI2luY2x1ZGUgXFxcImRmc19wYXR0ZXJuX2RldGVjdG9yLmhcXFwiXFxuQEAgLTQxLDcgKzQyLDkgQEAgc3RydWN0IHB1bHNlX2VsZW0ge1xcbiAgKiBwZGVfZ2V0X211bHRpcGxlKCkgLSBnZXQgbnVtYmVyIG9mIG11bHRpcGxlcyBjb25zaWRlcmluZyBhIGdpdmVuIHRvbGVyYW5jZVxcbiAgKiBSZXR1cm4gdmFsdWU6IGZhY3RvciBpZiBhYnModmFsIC0gZmFjdG9yKmZyYWN0aW9uKSBcXHUwMDNjPSB0b2xlcmFuY2UsIDAgb3RoZXJ3aXNlXFxuICAqL1xcbi1zdGF0aWMgdTMyIHBkZV9nZXRfbXVsdGlwbGUodTMyIHZhbCwgdTMyIGZyYWN0aW9uLCB1MzIgdG9sZXJhbmNlKVxcbitzdGF0aWMgdTMyIHBkZV9nZXRfbXVsdGlwbGUodTMyIHZhbCwgdTMyIGZyYWN0aW9uLFxcbitcXHRcXHRcXHQgICAgc3RydWN0IHJlY2lwcm9jYWxfdmFsdWUgZnJhY3Rpb25fcmVjaXAsXFxuK1xcdFxcdFxcdCAgICB1MzIgdG9sZXJhbmNlKVxcbiB7XFxuIFxcdHUzMiByZW1haW5kZXI7XFxuIFxcdHUzMiBmYWN0b3I7XFxuQEAgLTU2LDggKzU5LDggQEAgc3RhdGljIHUzMiBwZGVfZ2V0X211bHRpcGxlKHUzMiB2YWwsIHUzMiBmcmFjdGlvbiwgdTMyIHRvbGVyYW5jZSlcXG4gXFx0XFx0LyogdmFsIGFuZCBmcmFjdGlvbiBhcmUgd2l0aGluIHRvbGVyYW5jZSAqL1xcbiBcXHRcXHRyZXR1cm4gMTtcXG4gXFxuLVxcdGZhY3RvciA9IHZhbCAvIGZyYWN0aW9uO1xcbi1cXHRyZW1haW5kZXIgPSB2YWwgJSBmcmFjdGlvbjtcXG4rXFx0ZmFjdG9yID0gcmVjaXByb2NhbF9kaXZpZGUodmFsLCBmcmFjdGlvbl9yZWNpcCk7XFxuK1xcdHJlbWFpbmRlciA9IHZhbCAtIGZhY3RvciAqIGZyYWN0aW9uO1xcbiBcXHRpZiAocmVtYWluZGVyIFxcdTAwM2UgdG9sZXJhbmNlKSB7XFxuIFxcdFxcdC8qIG5vIGV4YWN0IG1hdGNoICovXFxuIFxcdFxcdGlmICgoZnJhY3Rpb24gLSByZW1haW5kZXIpIFxcdTAwM2M9IHRvbGVyYW5jZSlcXG5AQCAtMjQ3LDYgKzI1MCw5IEBAIHN0YXRpYyBib29sIHBzZXFfaGFuZGxlcl9jcmVhdGVfc2VxdWVuY2VzKHN0cnVjdCBwcmlfZGV0ZWN0b3IgKnBkZSxcXG4gXFx0XFx0cHMubGFzdF90cyA9IHRzO1xcbiBcXHRcXHRwcy5wcmkgPSBHRVRfUFJJX1RPX1VTRShwZGUtXFx1MDAzZXJzLVxcdTAwM2VwcmlfbWluLFxcbiBcXHRcXHRcXHRwZGUtXFx1MDAzZXJzLVxcdTAwM2VwcmlfbWF4LCB0cyAtIHAtXFx1MDAzZXRzKTtcXG4rXFx0XFx0cHMucHJpX3JlY2lwID0gKHN0cnVjdCByZWNpcHJvY2FsX3ZhbHVlKXt9O1xcbitcXHRcXHRpZiAocHMucHJpKVxcbitcXHRcXHRcXHRwcy5wcmlfcmVjaXAgPSByZWNpcHJvY2FsX3ZhbHVlKHBzLnByaSk7XFxuIFxcdFxcdHBzLmR1ciA9IHBzLnByaSAqIChwZGUtXFx1MDAzZXJzLVxcdTAwM2VwcGIgLSAxKVxcbiBcXHRcXHRcXHRcXHQrIDIgKiBwZGUtXFx1MDAzZXJzLVxcdTAwM2VtYXhfcHJpX3RvbGVyYW5jZTtcXG4gXFxuQEAgLTI2MSw2ICsyNjcsNyBAQCBzdGF0aWMgYm9vbCBwc2VxX2hhbmRsZXJfY3JlYXRlX3NlcXVlbmNlcyhzdHJ1Y3QgcHJpX2RldGVjdG9yICpwZGUsXFxuIFxcdFxcdFxcdFxcdGJyZWFrO1xcbiBcXHRcXHRcXHQvKiBjaGVjayBpZiBwdWxzZSBtYXRjaCAobXVsdGkpUFJJICovXFxuIFxcdFxcdFxcdGZhY3RvciA9IHBkZV9nZXRfbXVsdGlwbGUocHMubGFzdF90cyAtIHAyLVxcdTAwM2V0cywgcHMucHJpLFxcbitcXHRcXHRcXHRcXHRcXHRcXHQgIHBzLnByaV9yZWNpcCxcXG4gXFx0XFx0XFx0XFx0XFx0XFx0ICBwZGUtXFx1MDAzZXJzLVxcdTAwM2VtYXhfcHJpX3RvbGVyYW5jZSk7XFxuIFxcdFxcdFxcdGlmIChmYWN0b3IgXFx1MDAzZSAwKSB7XFxuIFxcdFxcdFxcdFxcdHBzLmNvdW50Kys7XFxuQEAgLTMxOCw2ICszMjUsNyBAQCBwc2VxX2hhbmRsZXJfYWRkX3RvX2V4aXN0aW5nX3NlcXMoc3RydWN0IHByaV9kZXRlY3RvciAqcGRlLCB1NjQgdHMpXFxuIFxcbiBcXHRcXHRkZWx0YV90cyA9IHRzIC0gcHMtXFx1MDAzZWxhc3RfdHM7XFxuIFxcdFxcdGZhY3RvciA9IHBkZV9nZXRfbXVsdGlwbGUoZGVsdGFfdHMsIHBzLVxcdTAwM2VwcmksXFxuK1xcdFxcdFxcdFxcdFxcdCAgcHMtXFx1MDAzZXByaV9yZWNpcCxcXG4gXFx0XFx0XFx0XFx0XFx0ICBwZGUtXFx1MDAzZXJzLVxcdTAwM2VtYXhfcHJpX3RvbGVyYW5jZSk7XFxuIFxcdFxcdGlmIChmYWN0b3IgXFx1MDAzZSAwKSB7XFxuIFxcdFxcdFxcdHBzLVxcdTAwM2VsYXN0X3RzID0gdHM7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcHJpX2RldGVjdG9yLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3ByaV9kZXRlY3Rvci5oXFxuaW5kZXggODYzMzlmMmI0ZDNhOWUuLmM1MTk0NjZjZmY4YjEyIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcHJpX2RldGVjdG9yLmhcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3ByaV9kZXRlY3Rvci5oXFxuQEAgLTE4LDYgKzE4LDcgQEBcXG4gI2RlZmluZSBERlNfUFJJX0RFVEVDVE9SX0hcXG4gXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9saXN0LmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9yZWNpcHJvY2FsX2Rpdi5oXFx1MDAzZVxcbiBcXG4gZXh0ZXJuIHN0cnVjdCBhdGhfZGZzX3Bvb2xfc3RhdHMgZ2xvYmFsX2Rmc19wb29sX3N0YXRzO1xcbiBcXG5AQCAtMjUsNiArMjYsNyBAQCBleHRlcm4gc3RydWN0IGF0aF9kZnNfcG9vbF9zdGF0cyBnbG9iYWxfZGZzX3Bvb2xfc3RhdHM7XFxuICAqIHN0cnVjdCBwcmlfc2VxdWVuY2UgLSBzZXF1ZW5jZSBvZiBwdWxzZXMgbWF0Y2hpbmcgb25lIFBSSVxcbiAgKiBAaGVhZDogbGlzdF9oZWFkXFxuICAqIEBwcmk6IHB1bHNlIHJlcGV0aXRpb24gaW50ZXJ2YWwgKFBSSSkgaW4gdXNlY3NcXG4rICogQHByaV9yZWNpcDogY2FjaGVkIHJlY2lwcm9jYWwgdmFsdWUgZm9yIFBSSSBkaXZpc2lvbnNcXG4gICogQGR1cjogZHVyYXRpb24gb2Ygc2VxdWVuY2UgaW4gdXNlY3NcXG4gICogQGNvdW50OiBudW1iZXIgb2YgcHVsc2VzIGluIHRoaXMgc2VxdWVuY2VcXG4gICogQGNvdW50X2ZhbHNlczogbnVtYmVyIG9mIG5vdCBtYXRjaGluZyBwdWxzZXMgaW4gdGhpcyBzZXF1ZW5jZVxcbkBAIC0zNSw2ICszNyw3IEBAIGV4dGVybiBzdHJ1Y3QgYXRoX2Rmc19wb29sX3N0YXRzIGdsb2JhbF9kZnNfcG9vbF9zdGF0cztcXG4gc3RydWN0IHByaV9zZXF1ZW5jZSB7XFxuIFxcdHN0cnVjdCBsaXN0X2hlYWQgaGVhZDtcXG4gXFx0dTMyIHByaTtcXG4rXFx0c3RydWN0IHJlY2lwcm9jYWxfdmFsdWUgcHJpX3JlY2lwO1xcbiBcXHR1MzIgZHVyO1xcbiBcXHR1MzIgY291bnQ7XFxuIFxcdHUzMiBjb3VudF9mYWxzZXM7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDAwOjEzOjI1LjQ1NzYzNTgzNFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTUxMjIxMzI2MDMzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkFUSDEwS1wiLFxuICAgIFwiQVRIMTBLX1VTQlwiLFxuICAgIFwiQVRIMTBLX0RGU19DRVJUSUZJRURcIixcbiAgICBcIkFUSDlLXCIsXG4gICAgXCJBVEg5S19ERlNfQ0VSVElGSUVEXCIsXG4gICAgXCJDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJhdGgxMGtfd21pX2V2ZW50X2Rmc1wiLFxuICAgIFwiYXRoMTBrX3dtaV9ldmVudF9waHllcnJcIixcbiAgICBcImF0aDlrX2Rmc19wcm9jZXNzX3BoeWVyclwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlcGxhY2VzIGEgZGl2aXNpb24gd2l0aCBhIHJlY2lwcm9jYWwgbXVsdGlwbGljYXRpb24gaW4gdGhlIEF0aGVyb3MgREZTIFBSSSBkZXRlY3RvciBsb2dpYy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgYWx0ZXJzIHRoZSBjb3JlIGxvZ2ljIG9mIHJhZGFyIHB1bHNlIGRldGVjdGlvbi4gVGhlIGNvZGUgaXMgcmVhY2hhYmxlIHZpYSB0aGUgYXRoMTBrX3VzYiBkcml2ZXIgdXNpbmcgVVNCIGZ1enppbmcsIGFzIFdNSSBldmVudHMgY29udGFpbmluZyBQSFkgZXJyb3JzIGNhbiB0cmlnZ2VyIHRoZSBERlMgcmFkYXIgcmVwb3J0IHBhdGguXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZmE4NzQ2ZjJiZmNkN2ZiZDUxYjA1NzEyMDBhNjRhNzZmOWZjMzAwZlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgSnVsIDIgMDA6MTM6MjIgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3ByaV9kZXRlY3Rvci5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wcmlfZGV0ZWN0b3IuY1xuaW5kZXggMzg4ZjlkMTkxM2JkOWQuLjUyMGZkMTU2N2EwYmFkIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wcmlfZGV0ZWN0b3IuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wcmlfZGV0ZWN0b3IuY1xuQEAgLTE2LDYgKzE2LDcgQEBcbiBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9zbGFiLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9zcGlubG9jay5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvcmVjaXByb2NhbF9kaXYuaFx1MDAzZVxuIFxuICNpbmNsdWRlIFwiYXRoLmhcIlxuICNpbmNsdWRlIFwiZGZzX3BhdHRlcm5fZGV0ZWN0b3IuaFwiXG5AQCAtNDEsNyArNDIsOSBAQCBzdHJ1Y3QgcHVsc2VfZWxlbSB7XG4gICogcGRlX2dldF9tdWx0aXBsZSgpIC0gZ2V0IG51bWJlciBvZiBtdWx0aXBsZXMgY29uc2lkZXJpbmcgYSBnaXZlbiB0b2xlcmFuY2VcbiAgKiBSZXR1cm4gdmFsdWU6IGZhY3RvciBpZiBhYnModmFsIC0gZmFjdG9yKmZyYWN0aW9uKSBcdTAwM2M9IHRvbGVyYW5jZSwgMCBvdGhlcndpc2VcbiAgKi9cbi1zdGF0aWMgdTMyIHBkZV9nZXRfbXVsdGlwbGUodTMyIHZhbCwgdTMyIGZyYWN0aW9uLCB1MzIgdG9sZXJhbmNlKVxuK3N0YXRpYyB1MzIgcGRlX2dldF9tdWx0aXBsZSh1MzIgdmFsLCB1MzIgZnJhY3Rpb24sXG4rXHRcdFx0ICAgIHN0cnVjdCByZWNpcHJvY2FsX3ZhbHVlIGZyYWN0aW9uX3JlY2lwLFxuK1x0XHRcdCAgICB1MzIgdG9sZXJhbmNlKVxuIHtcbiBcdHUzMiByZW1haW5kZXI7XG4gXHR1MzIgZmFjdG9yO1xuQEAgLTU2LDggKzU5LDggQEAgc3RhdGljIHUzMiBwZGVfZ2V0X211bHRpcGxlKHUzMiB2YWwsIHUzMiBmcmFjdGlvbiwgdTMyIHRvbGVyYW5jZSlcbiBcdFx0LyogdmFsIGFuZCBmcmFjdGlvbiBhcmUgd2l0aGluIHRvbGVyYW5jZSAqL1xuIFx0XHRyZXR1cm4gMTtcbiBcbi1cdGZhY3RvciA9IHZhbCAvIGZyYWN0aW9uO1xuLVx0cmVtYWluZGVyID0gdmFsICUgZnJhY3Rpb247XG4rXHRmYWN0b3IgPSByZWNpcHJvY2FsX2RpdmlkZSh2YWwsIGZyYWN0aW9uX3JlY2lwKTtcbitcdHJlbWFpbmRlciA9IHZhbCAtIGZhY3RvciAqIGZyYWN0aW9uO1xuIFx0aWYgKHJlbWFpbmRlciBcdTAwM2UgdG9sZXJhbmNlKSB7XG4gXHRcdC8qIG5vIGV4YWN0IG1hdGNoICovXG4gXHRcdGlmICgoZnJhY3Rpb24gLSByZW1haW5kZXIpIFx1MDAzYz0gdG9sZXJhbmNlKVxuQEAgLTI0Nyw2ICsyNTAsOSBAQCBzdGF0aWMgYm9vbCBwc2VxX2hhbmRsZXJfY3JlYXRlX3NlcXVlbmNlcyhzdHJ1Y3QgcHJpX2RldGVjdG9yICpwZGUsXG4gXHRcdHBzLmxhc3RfdHMgPSB0cztcbiBcdFx0cHMucHJpID0gR0VUX1BSSV9UT19VU0UocGRlLVx1MDAzZXJzLVx1MDAzZXByaV9taW4sXG4gXHRcdFx0cGRlLVx1MDAzZXJzLVx1MDAzZXByaV9tYXgsIHRzIC0gcC1cdTAwM2V0cyk7XG4rXHRcdHBzLnByaV9yZWNpcCA9IChzdHJ1Y3QgcmVjaXByb2NhbF92YWx1ZSl7fTtcbitcdFx0aWYgKHBzLnByaSlcbitcdFx0XHRwcy5wcmlfcmVjaXAgPSByZWNpcHJvY2FsX3ZhbHVlKHBzLnByaSk7XG4gXHRcdHBzLmR1ciA9IHBzLnByaSAqIChwZGUtXHUwMDNlcnMtXHUwMDNlcHBiIC0gMSlcbiBcdFx0XHRcdCsgMiAqIHBkZS1cdTAwM2Vycy1cdTAwM2VtYXhfcHJpX3RvbGVyYW5jZTtcbiBcbkBAIC0yNjEsNiArMjY3LDcgQEAgc3RhdGljIGJvb2wgcHNlcV9oYW5kbGVyX2NyZWF0ZV9zZXF1ZW5jZXMoc3RydWN0IHByaV9kZXRlY3RvciAqcGRlLFxuIFx0XHRcdFx0YnJlYWs7XG4gXHRcdFx0LyogY2hlY2sgaWYgcHVsc2UgbWF0Y2ggKG11bHRpKVBSSSAqL1xuIFx0XHRcdGZhY3RvciA9IHBkZV9nZXRfbXVsdGlwbGUocHMubGFzdF90cyAtIHAyLVx1MDAzZXRzLCBwcy5wcmksXG4rXHRcdFx0XHRcdFx0ICBwcy5wcmlfcmVjaXAsXG4gXHRcdFx0XHRcdFx0ICBwZGUtXHUwMDNlcnMtXHUwMDNlbWF4X3ByaV90b2xlcmFuY2UpO1xuIFx0XHRcdGlmIChmYWN0b3IgXHUwMDNlIDApIHtcbiBcdFx0XHRcdHBzLmNvdW50Kys7XG5AQCAtMzE4LDYgKzMyNSw3IEBAIHBzZXFfaGFuZGxlcl9hZGRfdG9fZXhpc3Rpbmdfc2VxcyhzdHJ1Y3QgcHJpX2RldGVjdG9yICpwZGUsIHU2NCB0cylcbiBcbiBcdFx0ZGVsdGFfdHMgPSB0cyAtIHBzLVx1MDAzZWxhc3RfdHM7XG4gXHRcdGZhY3RvciA9IHBkZV9nZXRfbXVsdGlwbGUoZGVsdGFfdHMsIHBzLVx1MDAzZXByaSxcbitcdFx0XHRcdFx0ICBwcy1cdTAwM2VwcmlfcmVjaXAsXG4gXHRcdFx0XHRcdCAgcGRlLVx1MDAzZXJzLVx1MDAzZW1heF9wcmlfdG9sZXJhbmNlKTtcbiBcdFx0aWYgKGZhY3RvciBcdTAwM2UgMCkge1xuIFx0XHRcdHBzLVx1MDAzZWxhc3RfdHMgPSB0cztcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3ByaV9kZXRlY3Rvci5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wcmlfZGV0ZWN0b3IuaFxuaW5kZXggODYzMzlmMmI0ZDNhOWUuLmM1MTk0NjZjZmY4YjEyIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wcmlfZGV0ZWN0b3IuaFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wcmlfZGV0ZWN0b3IuaFxuQEAgLTE4LDYgKzE4LDcgQEBcbiAjZGVmaW5lIERGU19QUklfREVURUNUT1JfSFxuIFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2xpc3QuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L3JlY2lwcm9jYWxfZGl2LmhcdTAwM2VcbiBcbiBleHRlcm4gc3RydWN0IGF0aF9kZnNfcG9vbF9zdGF0cyBnbG9iYWxfZGZzX3Bvb2xfc3RhdHM7XG4gXG5AQCAtMjUsNiArMjYsNyBAQCBleHRlcm4gc3RydWN0IGF0aF9kZnNfcG9vbF9zdGF0cyBnbG9iYWxfZGZzX3Bvb2xfc3RhdHM7XG4gICogc3RydWN0IHByaV9zZXF1ZW5jZSAtIHNlcXVlbmNlIG9mIHB1bHNlcyBtYXRjaGluZyBvbmUgUFJJXG4gICogQGhlYWQ6IGxpc3RfaGVhZFxuICAqIEBwcmk6IHB1bHNlIHJlcGV0aXRpb24gaW50ZXJ2YWwgKFBSSSkgaW4gdXNlY3NcbisgKiBAcHJpX3JlY2lwOiBjYWNoZWQgcmVjaXByb2NhbCB2YWx1ZSBmb3IgUFJJIGRpdmlzaW9uc1xuICAqIEBkdXI6IGR1cmF0aW9uIG9mIHNlcXVlbmNlIGluIHVzZWNzXG4gICogQGNvdW50OiBudW1iZXIgb2YgcHVsc2VzIGluIHRoaXMgc2VxdWVuY2VcbiAgKiBAY291bnRfZmFsc2VzOiBudW1iZXIgb2Ygbm90IG1hdGNoaW5nIHB1bHNlcyBpbiB0aGlzIHNlcXVlbmNlXG5AQCAtMzUsNiArMzcsNyBAQCBleHRlcm4gc3RydWN0IGF0aF9kZnNfcG9vbF9zdGF0cyBnbG9iYWxfZGZzX3Bvb2xfc3RhdHM7XG4gc3RydWN0IHByaV9zZXF1ZW5jZSB7XG4gXHRzdHJ1Y3QgbGlzdF9oZWFkIGhlYWQ7XG4gXHR1MzIgcHJpO1xuK1x0c3RydWN0IHJlY2lwcm9jYWxfdmFsdWUgcHJpX3JlY2lwO1xuIFx0dTMyIGR1cjtcbiBcdHUzMiBjb3VudDtcbiBcdHUzMiBjb3VudF9mYWxzZXM7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQwMDoxMzoyNS40NTc2Mzc1NTRaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MzAyNDUyMTc3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQXRoZXJvcyBERlMgUFJJIERldGVjdG9yIENoYW5nZSoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYGRmc19wcmlfZGV0ZWN0b3IuY2AgYW5kIGBkZnNfcHJpX2RldGVjdG9yLmhgIHdpdGhpbiB0aGUgQXRoZXJvcyB3aXJlbGVzcyBkcml2ZXIgZGlyZWN0b3J5LiBMb29rcyBsaWtlIHRoZXkncmUgcmVwbGFjaW5nIGEgcmVndWxhciBkaXZpc2lvbiB3aXRoIGByZWNpcHJvY2FsX2RpdmlkZWAgaW4gYHBkZV9nZXRfbXVsdGlwbGVgLiBUaGV5J3ZlIGFsc28gYWRkZWQgYHByaV9yZWNpcGAgdG8gdGhlIGBwcmlfc2VxdWVuY2VgIHN0cnVjdCBhbmQgaW5pdGlhbGl6ZWQgaXQgd2l0aCBgcmVjaXByb2NhbF92YWx1ZShwcy5wcmkpYC4gVGhpcyBpcyBhIHByZXR0eSBzdHJhaWdodGZvcndhcmQgZnVuY3Rpb25hbCBjaGFuZ2Ug4oCTIG9wdGltaXppbmcgZGl2aXNpb24sIGVzc2VudGlhbGx5LiBOb3csIHRoZSBrZXkgcXVlc3Rpb24gZm9yIG1lIGlzOiBpcyB0aGlzIHJlYWNoYWJsZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50P1xuXG5NeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0aGF0IHRoZSBBdGhlcm9zIGRyaXZlciBpcywgYnkgaXRzIG5hdHVyZSwgdGllZCB0byBwaHlzaWNhbCBXaS1GaSBoYXJkd2FyZS4gQnV0IHdhaXQsIHRoZXJlJ3MgYG1hYzgwMjExX2h3c2ltYC4gSXQgc2ltdWxhdGVzIFdpLUZpIGhhcmR3YXJlLCBidXQgZG9lcyBpdCAqdXNlKiB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9gIHN1YnN5c3RlbT8gTm8sIHRoYXQncyBpbmNvcnJlY3QuIFwiYXRoXCIgaXMgZm9yIHNwZWNpZmljIGhhcmR3YXJlIGRyaXZlcnMgbGlrZSBhdGg1aywgYXRoOWssIGV0Yy4gVGhlIGBkZnNfcHJpX2RldGVjdG9yLmNgIGZpbGUgaXMgcGFydCBvZiBhIGNvbW1vbiBtb2R1bGUgZm9yIEF0aGVyb3MuIFNvLCB0aGUgcXVlc3Rpb24gcmVtYWlucy4gSXMgaXQgcG9zc2libGUgdG8gcmVhY2ggdGhpcyBjb2RlIHdpdGhvdXQgYWN0dWFsIGhhcmR3YXJlP1xuXG5JIG5lZWQgdG8gbG9vayBpbnRvIHRoaXMgZnVydGhlci4gTGV0J3Mgc2VlIGlmIHRoZSBLY29uZmlnIG9yIE1ha2VmaWxlIGluIHRoZSBBdGhlcm9zIGRpcmVjdG9yeSBnaXZlcyBtZSBhbnkgY2x1ZXMuIFRoYXQgc2hvdWxkIGhlbHAgbWUgdW5kZXJzdGFuZCBpZiB0aGVyZSBhcmUgYW55IGJ1aWxkIG9wdGlvbnMgdGhhdCB3b3VsZCBlbmFibGUgdGhpcyBERlMgZnVuY3Rpb25hbGl0eSBpbiBhIHNpbXVsYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5MTUsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyODAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQwMDoxMzozMC43NjAwOTI1M1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNTU5NTg3NzcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGZzX3ByaV9kZXRlY3RvclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9NYWtlZmlsZT0xNT1hdGgtb2JqcyA6PVxcdG1haW4ubyBcXFxcXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvTWFrZWZpbGUtMTktXFx0XFx0ZGZzX3BhdHRlcm5fZGV0ZWN0b3IubyBcXFxcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL01ha2VmaWxlOjIwOlxcdFxcdGRmc19wcmlfZGV0ZWN0b3Iub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9NYWtlZmlsZS0yMS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcGF0dGVybl9kZXRlY3Rvci5jLTIwLSNpbmNsdWRlIFxcXCJkZnNfcGF0dGVybl9kZXRlY3Rvci5oXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcGF0dGVybl9kZXRlY3Rvci5jOjIxOiNpbmNsdWRlIFxcXCJkZnNfcHJpX2RldGVjdG9yLmhcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmMtMjItI2luY2x1ZGUgXFxcImF0aC5oXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wcmlfZGV0ZWN0b3IuYy0yMi0jaW5jbHVkZSBcXFwiZGZzX3BhdHRlcm5fZGV0ZWN0b3IuaFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3ByaV9kZXRlY3Rvci5jOjIzOiNpbmNsdWRlIFxcXCJkZnNfcHJpX2RldGVjdG9yLmhcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wcmlfZGV0ZWN0b3IuYy0yNC1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMDA6MTM6MzEuMDE2MDU4MjA4WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDc4MTkwMzQyMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBMaW5lIG9mIFJlYXNvbmluZyBmb3IgQXRoZXJvcyBEcml2ZXIgRnV6emluZyoqXG5cbk9rYXksIHNvIHRoZSBgYXRoYCBtb2R1bGUgaXMgb25seSBidWlsdCB3aGVuIGBDT05GSUdfQVRIX0NPTU1PTmAgaXMgc2V0LiBUaGF0J3MgYSBzdGFydGluZyBwb2ludC4gQnV0IHRoZSByZWFsIHF1ZXN0aW9uIGlzLCBob3cgY2FuIEkgZnV6eiB0aGVzZSBBdGhlcm9zIGRyaXZlcnMgZWZmZWN0aXZlbHksIGdpdmVuIHRoZSB0eXBpY2FsIGNoYWxsZW5nZXMgd2l0aCBoYXJkd2FyZSBkcml2ZXJzP1xuXG5TcGVjaWZpY2FsbHksIGNhbiBJIGRvIHRoaXMgKndpdGhvdXQqIGhhdmluZyB0byByZWx5IG9uIHBoeXNpY2FsIGhhcmR3YXJlPyBUaGF0J3MgdGhlIGlkZWFsIHNjZW5hcmlvLiBJbiBtb3N0IGNhc2VzLCBoYXJkd2FyZSBkcml2ZXJzIGFyZSBub3RvcmlvdXNseSBkaWZmaWN1bHQgdG8gcmVhY2ggd2l0aGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIFdlIG5lZWQgc29tZSBzb3J0IG9mIGJyaWRnZTogZWl0aGVyIGEgc29mdHdhcmUgZW11bGF0b3IgbGlrZSBgbWFjODAyMTFfaHdzaW1gICh3aGljaCwgaW1wb3J0YW50bHksIGlzIGdlbmVyaWMgYW5kICpub3QqIHNwZWNpZmljIHRvIEF0aGVyb3MpIG9yIGEgVVNCIGdhZGdldCBzZXR1cCBmb3IgVVNCIGRyaXZlcnMsIG9yIHNvbWUgUENJIGVtdWxhdGlvbi4gQnV0IHdlIGRvbid0IGhhdmUgZ29vZCBQQ0kgZW11bGF0aW9uIGZvciBBdGhlcm9zIGluIFN5emthbGxlciBieSBkZWZhdWx0IOKAkyBhcGFydCBmcm9tIHNvbWUgdmVyeSBsaW1pdGVkLCBnZW5lcmljIFBDSSBmdXp6aW5nLCB3aGljaCBwcm9iYWJseSB3b24ndCBiZSBzdWZmaWNpZW50LlxuXG5CdXQgd2FpdCBhIG1pbnV0ZS4uLiBkb2VzIFN5emthbGxlciAqYWxyZWFkeSogZnV6eiBgYXRoOWtfaHRjYD8gVGhlIGxpZ2h0YnVsYiBnb2VzIG9mZiEgYGF0aDlrX2h0Y2AgaXMgYSAqVVNCKiBkcml2ZXIsIGlzbid0IGl0PyBJZiBzbywgdGhpcyBvcGVucyB1cCBhIHdob2xlIGRpZmZlcmVudCBhdmVudWUgZm9yIHRlc3RpbmcsIHBvdGVudGlhbGx5IHdpdGhvdXQgbmVlZGluZyBjdXN0b20gUENJIGVtdWxhdGlvbi5cblxuU28sIGxldCBtZSBxdWlja2x5IGNoZWNrLi4uIEkgbmVlZCB0byBzZWUgaWYgYGF0aDlrX2h0Y2AgdXNlcyB0aGF0IGBkZnNfcHJpX2RldGVjdG9yLmNgIGNvZGUuIFRoYXQnbGwgZ2l2ZSBtZSBhIGtleSBpbnNpZ2h0IGludG8gd2hhdCBwYXJ0cyBvZiB0aGUgQXRoZXJvcyBzdGFjayBhcmUgYmVpbmcgdG91Y2hlZCBhbmQgY291bGQgYmUgZnV6emVkLCBhbmQgd2hldGhlciB0aGVyZSdzIG92ZXJsYXAgYmV0d2VlbiB0aGUgVVNCIGRyaXZlciBhbmQgdGhlIHJlc3Qgb2YgdGhlIEF0aGVyb3MgZnJhbWV3b3JrLlxuXG5cbiIsIklucHV0VG9rZW5zIjozODExLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDAwOjEzOjM1Ljc5Nzk2NDA2MVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTEwNTM1MjEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGZzX3BhdHRlcm5fZGV0ZWN0b3JcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvTWFrZWZpbGU9MTU9YXRoLW9ianMgOj1cXHRtYWluLm8gXFxcXFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL01ha2VmaWxlLTE4LVxcdFxcdGtleS5vIFxcXFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvTWFrZWZpbGU6MTk6XFx0XFx0ZGZzX3BhdHRlcm5fZGV0ZWN0b3IubyBcXFxcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL01ha2VmaWxlLTIwLVxcdFxcdGRmc19wcmlfZGV0ZWN0b3Iub1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9jb3JlLmgtMjYtI2luY2x1ZGUgXFxcIi4uL3JlZ2QuaFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2NvcmUuaDoyNzojaW5jbHVkZSBcXFwiLi4vZGZzX3BhdHRlcm5fZGV0ZWN0b3IuaFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2NvcmUuaC0yOC0jaW5jbHVkZSBcXFwic3BlY3RyYWwuaFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvY29yZS5oPTEwMTE9c3RydWN0IGF0aDEwayB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2NvcmUuaC0xMjM0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvY29yZS5oOjEyMzU6XFx0c3RydWN0IGRmc19wYXR0ZXJuX2RldGVjdG9yICpkZnNfZGV0ZWN0b3I7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9jb3JlLmgtMTIzNi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmM9OTk3MT1pbnQgYXRoMTBrX21hY19yZWdpc3RlcihzdHJ1Y3QgYXRoMTBrICphcilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmMtMTAyODUtXFx0XFx0YXItXFx1MDAzZWF0aF9jb21tb24uZGVidWdfbWFzayA9IEFUSF9EQkdfREZTO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmM6MTAyODY6XFx0XFx0YXItXFx1MDAzZWRmc19kZXRlY3RvciA9IGRmc19wYXR0ZXJuX2RldGVjdG9yX2luaXQoXFx1MDAyNmFyLVxcdTAwM2VhdGhfY29tbW9uLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmMtMTAyODctXFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgICBOTDgwMjExX0RGU19VTlNFVCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXRoOWsuaD05ODM9c3RydWN0IGF0aF9zb2Z0YyB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXRoOWsuaC0xMDU5LVxcdHU4IGFudF90eCwgYW50X3J4O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hdGg5ay5oOjEwNjA6XFx0c3RydWN0IGRmc19wYXR0ZXJuX2RldGVjdG9yICpkZnNfZGV0ZWN0b3I7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2F0aDlrLmgtMTA2MS1cXHR1NjQgZGZzX3ByZXZfcHVsc2VfdHM7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGZzLmM9Mjc0PWF0aDlrX2Rmc19wcm9jZXNzX3JhZGFyX3B1bHNlKHN0cnVjdCBhdGhfc29mdGMgKnNjLCBzdHJ1Y3QgcHVsc2VfZXZlbnQgKnBlKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZnMuYy0yNzUte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZnMuYzoyNzY6XFx0c3RydWN0IGRmc19wYXR0ZXJuX2RldGVjdG9yICpwZCA9IHNjLVxcdTAwM2VkZnNfZGV0ZWN0b3I7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2Rmcy5jLTI3Ny1cXHRERlNfU1RBVF9JTkMoc2MsIHB1bHNlc19wcm9jZXNzZWQpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2Rmcy5oLTE5LSNkZWZpbmUgQVRIOUtfREZTX0hcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGZzLmg6MjA6I2luY2x1ZGUgXFxcIi4uL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmhcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2Rmcy5oLTIxLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2Rmc19kZWJ1Zy5jLTIyLSNpbmNsdWRlIFxcXCJkZnNfZGVidWcuaFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGZzX2RlYnVnLmM6MjM6I2luY2x1ZGUgXFxcIi4uL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmhcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2Rmc19kZWJ1Zy5jLTI0LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2luaXQuYz02NTY9c3RhdGljIGludCBhdGg5a19pbml0X3NvZnRjKHUxNiBkZXZpZCwgc3RydWN0IGF0aF9zb2Z0YyAqc2MsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jLTY4NS1cXHRzYy1cXHUwMDNlc2NfYWggPSBhaDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jOjY4NjpcXHRzYy1cXHUwMDNlZGZzX2RldGVjdG9yID0gZGZzX3BhdHRlcm5fZGV0ZWN0b3JfaW5pdChjb21tb24sIE5MODAyMTFfREZTX1VOU0VUKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jLTY4Ny1cXHRzYy1cXHUwMDNldHg5OV9wb3dlciA9IE1BWF9SQVRFX1BPV0VSICsgMTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcGF0dGVybl9kZXRlY3Rvci5jLTE5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcGF0dGVybl9kZXRlY3Rvci5jOjIwOiNpbmNsdWRlIFxcXCJkZnNfcGF0dGVybl9kZXRlY3Rvci5oXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcGF0dGVybl9kZXRlY3Rvci5jLTIxLSNpbmNsdWRlIFxcXCJkZnNfcHJpX2RldGVjdG9yLmhcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3BhdHRlcm5fZGV0ZWN0b3IuYz0xNjE9c3RydWN0IGNoYW5uZWxfZGV0ZWN0b3Ige1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmMtMTY3LS8qIGNoYW5uZWxfZGV0ZWN0b3JfcmVzZXQoKSAtIHJlc2V0IGRldGVjdG9yIGxpbmVzIGZvciBhIGdpdmVuIGNoYW5uZWwgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3BhdHRlcm5fZGV0ZWN0b3IuYzoxNjg6c3RhdGljIHZvaWQgY2hhbm5lbF9kZXRlY3Rvcl9yZXNldChzdHJ1Y3QgZGZzX3BhdHRlcm5fZGV0ZWN0b3IgKmRwZCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3BhdHRlcm5fZGV0ZWN0b3IuYy0xNjktXFx0XFx0XFx0XFx0ICAgc3RydWN0IGNoYW5uZWxfZGV0ZWN0b3IgKmNkKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmMtMTc4LS8qIGNoYW5uZWxfZGV0ZWN0b3JfZXhpdCgpIC0gZGVzdHJ1Y3RvciAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcGF0dGVybl9kZXRlY3Rvci5jOjE3OTpzdGF0aWMgdm9pZCBjaGFubmVsX2RldGVjdG9yX2V4aXQoc3RydWN0IGRmc19wYXR0ZXJuX2RldGVjdG9yICpkcGQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmMtMTgwLVxcdFxcdFxcdFxcdCAgc3RydWN0IGNoYW5uZWxfZGV0ZWN0b3IgKmNkKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmM9MTk2PXN0YXRpYyBzdHJ1Y3QgY2hhbm5lbF9kZXRlY3RvciAqXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmM6MTk3OmNoYW5uZWxfZGV0ZWN0b3JfY3JlYXRlKHN0cnVjdCBkZnNfcGF0dGVybl9kZXRlY3RvciAqZHBkLCB1MTYgZnJlcSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3BhdHRlcm5fZGV0ZWN0b3IuYy0xOTgte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmM9MjM2PXN0YXRpYyBzdHJ1Y3QgY2hhbm5lbF9kZXRlY3RvciAqXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmM6MjM3OmNoYW5uZWxfZGV0ZWN0b3JfZ2V0KHN0cnVjdCBkZnNfcGF0dGVybl9kZXRlY3RvciAqZHBkLCB1MTYgZnJlcSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3BhdHRlcm5fZGV0ZWN0b3IuYy0yMzgte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmMtMjUxLS8qIGRwZF9yZXNldCgpOiByZXNldCBhbGwgY2hhbm5lbCBkZXRlY3RvcnMgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3BhdHRlcm5fZGV0ZWN0b3IuYzoyNTI6c3RhdGljIHZvaWQgZHBkX3Jlc2V0KHN0cnVjdCBkZnNfcGF0dGVybl9kZXRlY3RvciAqZHBkKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcGF0dGVybl9kZXRlY3Rvci5jLTI1My17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3BhdHRlcm5fZGV0ZWN0b3IuYy0yNTgtfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcGF0dGVybl9kZXRlY3Rvci5jOjI1OTpzdGF0aWMgdm9pZCBkcGRfZXhpdChzdHJ1Y3QgZGZzX3BhdHRlcm5fZGV0ZWN0b3IgKmRwZClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3BhdHRlcm5fZGV0ZWN0b3IuYy0yNjAte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmM9MjY3PXN0YXRpYyBib29sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmM6MjY4OmRwZF9hZGRfcHVsc2Uoc3RydWN0IGRmc19wYXR0ZXJuX2RldGVjdG9yICpkcGQsIHN0cnVjdCBwdWxzZV9ldmVudCAqZXZlbnQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmMtMjY5LVxcdCAgICAgIHN0cnVjdCByYWRhcl9kZXRlY3Rvcl9zcGVjcyAqcnMpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3BhdHRlcm5fZGV0ZWN0b3IuYz0zMDk9c3RhdGljIHN0cnVjdCBhdGhfZGZzX3Bvb2xfc3RhdHNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3BhdHRlcm5fZGV0ZWN0b3IuYzozMTA6ZHBkX2dldF9zdGF0cyhzdHJ1Y3QgZGZzX3BhdHRlcm5fZGV0ZWN0b3IgKmRwZClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3BhdHRlcm5fZGV0ZWN0b3IuYy0zMTEte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmMtMzE0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcGF0dGVybl9kZXRlY3Rvci5jOjMxNTpzdGF0aWMgYm9vbCBkcGRfc2V0X2RvbWFpbihzdHJ1Y3QgZGZzX3BhdHRlcm5fZGV0ZWN0b3IgKmRwZCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3BhdHRlcm5fZGV0ZWN0b3IuYy0zMTYtXFx0XFx0XFx0ICAgZW51bSBubDgwMjExX2Rmc19yZWdpb25zIHJlZ2lvbilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcGF0dGVybl9kZXRlY3Rvci5jLTMzOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3BhdHRlcm5fZGV0ZWN0b3IuYzozNDA6c3RhdGljIGNvbnN0IHN0cnVjdCBkZnNfcGF0dGVybl9kZXRlY3RvciBkZWZhdWx0X2RwZCA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3BhdHRlcm5fZGV0ZWN0b3IuYy0zNDEtXFx0LmV4aXRcXHRcXHQ9IGRwZF9leGl0LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmMtMzQ3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcGF0dGVybl9kZXRlY3Rvci5jOjM0ODpzdHJ1Y3QgZGZzX3BhdHRlcm5fZGV0ZWN0b3IgKlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcGF0dGVybl9kZXRlY3Rvci5jOjM0OTpkZnNfcGF0dGVybl9kZXRlY3Rvcl9pbml0KHN0cnVjdCBhdGhfY29tbW9uICpjb21tb24sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmMtMzUwLVxcdFxcdFxcdCAgZW51bSBubDgwMjExX2Rmc19yZWdpb25zIHJlZ2lvbilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3BhdHRlcm5fZGV0ZWN0b3IuYy0zNTEte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcGF0dGVybl9kZXRlY3Rvci5jOjM1MjpcXHRzdHJ1Y3QgZGZzX3BhdHRlcm5fZGV0ZWN0b3IgKmRwZDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3BhdHRlcm5fZGV0ZWN0b3IuYy0zNTMtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3BhdHRlcm5fZGV0ZWN0b3IuYy0zNzEtfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcGF0dGVybl9kZXRlY3Rvci5jOjM3MjpFWFBPUlRfU1lNQk9MKGRmc19wYXR0ZXJuX2RldGVjdG9yX2luaXQpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmg9NzE9c3RydWN0IHJhZGFyX2RldGVjdG9yX3NwZWNzIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcGF0dGVybl9kZXRlY3Rvci5oLTg0LS8qKlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcGF0dGVybl9kZXRlY3Rvci5oOjg1OiAqIHN0cnVjdCBkZnNfcGF0dGVybl9kZXRlY3RvciAtIERGUyBwYXR0ZXJuIGRldGVjdG9yXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmgtODYtICogQGV4aXQoKTogZGVzdHJ1Y3Rvclxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmgtOTQtICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmg6OTU6c3RydWN0IGRmc19wYXR0ZXJuX2RldGVjdG9yIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3BhdHRlcm5fZGV0ZWN0b3IuaDo5NjpcXHR2b2lkICgqZXhpdCkoc3RydWN0IGRmc19wYXR0ZXJuX2RldGVjdG9yICpkcGQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcGF0dGVybl9kZXRlY3Rvci5oOjk3OlxcdGJvb2wgKCpzZXRfZGZzX2RvbWFpbikoc3RydWN0IGRmc19wYXR0ZXJuX2RldGVjdG9yICpkcGQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmgtOTgtXFx0XFx0XFx0ICAgZW51bSBubDgwMjExX2Rmc19yZWdpb25zIHJlZ2lvbik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmg6OTk6XFx0Ym9vbCAoKmFkZF9wdWxzZSkoc3RydWN0IGRmc19wYXR0ZXJuX2RldGVjdG9yICpkcGQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmgtMTAwLVxcdFxcdFxcdCAgc3RydWN0IHB1bHNlX2V2ZW50ICpwZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcGF0dGVybl9kZXRlY3Rvci5oLTEwMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3BhdHRlcm5fZGV0ZWN0b3IuaDoxMDM6XFx0c3RydWN0IGF0aF9kZnNfcG9vbF9zdGF0cyAoKmdldF9zdGF0cykoc3RydWN0IGRmc19wYXR0ZXJuX2RldGVjdG9yICpkcGQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcGF0dGVybl9kZXRlY3Rvci5oLTEwNC1cXHRlbnVtIG5sODAyMTFfZGZzX3JlZ2lvbnMgcmVnaW9uO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmgtMTE0LS8qKlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcGF0dGVybl9kZXRlY3Rvci5oOjExNTogKiBkZnNfcGF0dGVybl9kZXRlY3Rvcl9pbml0KCkgLSBjb25zdHJ1Y3RvciBmb3IgcGF0dGVybiBkZXRlY3RvciBjbGFzc1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcGF0dGVybl9kZXRlY3Rvci5oLTExNi0gKiBAcGFyYW0gcmVnaW9uOiBERlMgZG9tYWluIHRvIGJlIHVzZWQsIGNhbiBiZSBOTDgwMjExX0RGU19VTlNFVCBhdCBjcmVhdGlvblxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmgtMTE4LSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcGF0dGVybl9kZXRlY3Rvci5oOjExOTpleHRlcm4gc3RydWN0IGRmc19wYXR0ZXJuX2RldGVjdG9yICpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3BhdHRlcm5fZGV0ZWN0b3IuaDoxMjA6ZGZzX3BhdHRlcm5fZGV0ZWN0b3JfaW5pdChzdHJ1Y3QgYXRoX2NvbW1vbiAqY29tbW9uLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcGF0dGVybl9kZXRlY3Rvci5oLTEyMS1cXHRcXHRcXHQgIGVudW0gbmw4MDIxMV9kZnNfcmVnaW9ucyByZWdpb24pO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wcmlfZGV0ZWN0b3IuYy0yMS0jaW5jbHVkZSBcXFwiYXRoLmhcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wcmlfZGV0ZWN0b3IuYzoyMjojaW5jbHVkZSBcXFwiZGZzX3BhdHRlcm5fZGV0ZWN0b3IuaFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3ByaV9kZXRlY3Rvci5jLTIzLSNpbmNsdWRlIFxcXCJkZnNfcHJpX2RldGVjdG9yLmhcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDAwOjEzOjM1Ljk4OTAyNTE4MloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwNDUwNTgwNTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQ2hlY2tpbmcgREZTIEluaXRpYWxpemF0aW9uIGFuZCBVc2FnZSoqXG5cbk9rYXksIHNvIGBkZnNfcGF0dGVybl9kZXRlY3Rvcl9pbml0YCBpcyBhIGtleSBmdW5jdGlvbiwgaXQncyBleHBvc2VkIGFuZCBzZWVtcyB0byBiZSB1dGlsaXplZCBieSBib3RoIGBhdGg5a2AgYW5kIGBhdGgxMGtgLiBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgYGF0aDlrX2h0Y2AgZml0cyBpbnRvIHRoaXMgcGljdHVyZS4gTXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzOiBkb2VzIGBhdGg5a19odGNgIGFjdHVhbGx5IGxldmVyYWdlIGFueXRoaW5nIHdpdGhpbiBgZGZzLmNgPyBJdCdzIGVzc2VudGlhbCBJIHZlcmlmeSB3aGV0aGVyIERGUyBzdXBwb3J0IGlzIGV2ZW4gY29tcGlsZWQgaW50byB0aGUgYGF0aDlrX2h0Y2AgbW9kdWxlLiBUaGF0J3MgdGhlIGZpcnN0IHRoaW5nIEknbGwgY2hlY2suXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc1MjEsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQwMDoxMzozOS4wMzQwODU4OTFaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjIyNzA3MjI1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImF0aDlrX2Rmc19wcm9jZXNzX3JhZGFyX3B1bHNlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2Rmcy5jPTI3Mz1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZnMuYzoyNzQ6YXRoOWtfZGZzX3Byb2Nlc3NfcmFkYXJfcHVsc2Uoc3RydWN0IGF0aF9zb2Z0YyAqc2MsIHN0cnVjdCBwdWxzZV9ldmVudCAqcGUpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2Rmcy5jLTI3NS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGZzLmM9Mjg5PXZvaWQgYXRoOWtfZGZzX3Byb2Nlc3NfcGh5ZXJyKHN0cnVjdCBhdGhfc29mdGMgKnNjLCB2b2lkICpkYXRhLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2Rmcy5jLTM1Mi1cXHRpZiAoYXJkLnB1bHNlX2J3X2luZm8gXFx1MDAyNiBQUklfQ0hfUkFEQVJfRk9VTkQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2Rmcy5jOjM1MzpcXHRcXHRhdGg5a19kZnNfcHJvY2Vzc19yYWRhcl9wdWxzZShzYywgXFx1MDAyNnBlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGZzLmMtMzU0LVxcdGlmIChJU19DSEFOX0hUNDAoYWgtXFx1MDAzZWN1cmNoYW4pIFxcdTAwMjZcXHUwMDI2XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGZzLmMtMzU2LVxcdFxcdHBlLmZyZXEgKz0gSVNfQ0hBTl9IVDQwUExVUyhhaC1cXHUwMDNlY3VyY2hhbikgPyAyMCA6IC0yMDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGZzLmM6MzU3OlxcdFxcdGF0aDlrX2Rmc19wcm9jZXNzX3JhZGFyX3B1bHNlKHNjLCBcXHUwMDI2cGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZnMuYy0zNTgtXFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQwMDoxMzozOS4yNTY4NTc0MTVaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODg4NDQ2ODUwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6XG5cbioqRGlnZ2luZyBpbnRvIGBhdGg5a19kZnNfcHJvY2Vzc19waHllcnJgKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYGF0aDlrX2Rmc19wcm9jZXNzX3BoeWVycmAgYW5kIHRoZSBmaXJzdCBxdWVzdGlvbiB0aGF0IHBvcHMgaW50byBteSBoZWFkLCBsaWtlIHdpdGggYW55IGNyaXRpY2FsIGZ1bmN0aW9uIGluIHRoZSBkcml2ZXIsIGlzIFwiV2hlcmUgdGhlIGhlY2sgaXMgdGhpcyBiZWluZyBjYWxsZWQgZnJvbT9cIiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgY2FsbCBzdGFjayB0byBmdWxseSBncmFzcCBpdHMgcHVycG9zZSBhbmQgaW1wYWN0LiBJIGNhbid0IGp1c3QgZGl2ZSBpbnRvIHRoZSBjb2RlIGl0c2VsZiB3aXRob3V0IGtub3dpbmcgdGhlIGNvbnRleHQgaW4gd2hpY2ggaXQgb3BlcmF0ZXMuIEtub3dpbmcgdGhlIGNhbGxpbmcgZnVuY3Rpb25zIHdpbGwgZ2l2ZSBtZSBhIHZpdGFsIHVuZGVyc3RhbmRpbmcgb2YgdGhlIHRpbWluZyBhbmQgY29uZGl0aW9ucyByZWxhdGVkIHRvIHRoZSB1c2Ugb2YgdGhlIGZ1bmN0aW9uLiBJcyBpdCBmcm9tIGludGVycnVwdCBjb250ZXh0PyBUYXNrbGV0PyBBIHVzZXItc3BhY2UgdGhyZWFkPyBLbm93aW5nIHRoaXMgaXMgdml0YWwgdG8gcHJvcGVybHkgdW5kZXJzdGFuZCB3aGF0IHByb2JsZW1zIGNvdWxkIGFyaXNlIGZyb20gdXNlIG9mIHRoZSBmdW5jdGlvbi4gVW5kZXJzdGFuZGluZyB3aGVyZSB0aGUgZnVuY3Rpb24gaXMgY2FsbGVkIGZyb20gaXMgbXkgc3RhcnRpbmcgcG9pbnQgdG8gdW5kZXJzdGFuZGluZyB0aGUgYmlnIHBpY3R1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjgxMzQsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQwMDoxMzo0Mi4xNDUzMDc4NjVaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMzODQ3NzA3MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhdGg5a19kZnNfcHJvY2Vzc19waHllcnJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGZzLmM9Mjc0PWF0aDlrX2Rmc19wcm9jZXNzX3JhZGFyX3B1bHNlKHN0cnVjdCBhdGhfc29mdGMgKnNjLCBzdHJ1Y3QgcHVsc2VfZXZlbnQgKnBlKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2Rmcy5jLTI4OC0gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGZzLmM6Mjg5OnZvaWQgYXRoOWtfZGZzX3Byb2Nlc3NfcGh5ZXJyKHN0cnVjdCBhdGhfc29mdGMgKnNjLCB2b2lkICpkYXRhLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZnMuYy0yOTAtXFx0XFx0XFx0ICAgICAgc3RydWN0IGF0aF9yeF9zdGF0dXMgKnJzLCB1NjQgbWFjdGltZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZnMuYy0zNDYtXFx0YXRoX2RiZyhjb21tb24sIERGUyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGZzLmM6MzQ3OlxcdFxcdFxcXCJhdGg5a19kZnNfcHJvY2Vzc19waHllcnI6IHR5cGU9JWQsIGZyZXE9JWQsIHRzPSVsbHUsIFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGZzLmMtMzQ4LVxcdFxcdFxcXCJ3aWR0aD0lZCwgcnNzaT0lZCwgZGVsdGFfdHM9JWxsdVxcXFxuXFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZnMuaC0yMy0vKipcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGZzLmg6MjQ6ICogYXRoOWtfZGZzX3Byb2Nlc3NfcGh5ZXJyIC0gcHJvY2VzcyByYWRhciBQSFkgZXJyb3JcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGZzLmgtMjUtICogQHNjOiBhdGhfc29mdGNcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZnMuaC0zNi0gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGZzLmg6Mzc6dm9pZCBhdGg5a19kZnNfcHJvY2Vzc19waHllcnIoc3RydWN0IGF0aF9zb2Z0YyAqc2MsIHZvaWQgKmRhdGEsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2Rmcy5oLTM4LVxcdFxcdFxcdCAgICAgIHN0cnVjdCBhdGhfcnhfc3RhdHVzICpycywgdTY0IG1hY3RpbWUpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2Rmcy5oPTQwPXN0YXRpYyBpbmxpbmUgdm9pZFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZnMuaDo0MTphdGg5a19kZnNfcHJvY2Vzc19waHllcnIoc3RydWN0IGF0aF9zb2Z0YyAqc2MsIHZvaWQgKmRhdGEsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2Rmcy5oLTQyLVxcdFxcdFxcdCBzdHJ1Y3QgYXRoX3J4X3N0YXR1cyAqcnMsIHU2NCBtYWN0aW1lKSB7IH1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9yZWN2LmM9ODA2PXN0YXRpYyBpbnQgYXRoOWtfcnhfc2tiX3ByZXByb2Nlc3Moc3RydWN0IGF0aF9zb2Z0YyAqc2MsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvcmVjdi5jLTg4MC1cXHRcXHRpZiAoaHctXFx1MDAzZWNvbmYucmFkYXJfZW5hYmxlZCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9yZWN2LmM6ODgxOlxcdFxcdFxcdGF0aDlrX2Rmc19wcm9jZXNzX3BoeWVycihzYywgaGRyLCByeF9zdGF0cyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvcmVjdi5jLTg4Mi1cXHRcXHRcXHRcXHRcXHRcXHQgcnhfc3RhdHVzLVxcdTAwM2VtYWN0aW1lKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMDA6MTM6NDIuNDgzNzkxNTY2WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1NTM1ODY4MzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIGl0IHdlcmUgbXkgb3duOlxuXG4qKkludmVzdGlnYXRpbmcgQXRoZXJvcyBEcml2ZXIgQ29kZSBQYXRocyoqXG5cbk9rYXksIEknbSBkaWdnaW5nIGludG8gdGhlIEF0aGVyb3Mgd2lyZWxlc3MgZHJpdmVyLiBTcGVjaWZpY2FsbHksIEkndmUgZ290IG15IGV5ZSBvbiBgYXRoOWtfcnhfc2tiX3ByZXByb2Nlc3NgIOKAkyB0aGF0J3MgdGhlIGZ1bmN0aW9uIHJlc3BvbnNpYmxlIGZvciBpbml0aWFsIHByb2Nlc3Npbmcgb2YgcmVjZWl2ZWQgU0tCcy4gSSBrbm93IGl0J3MgbG9jYXRlZCB3aXRoaW4gYGF0aDlrL3JlY3YuY2AuICBOb3csIHRoZSBjcml0aWNhbCBxdWVzdGlvbiBpcywgZG9lcyB0aGUgYGF0aDlrX2h0Y2AgZHJpdmVyICphbHNvKiB1dGlsaXplIGNvZGUgd2l0aGluIGBhdGg5ay9yZWN2LmNgPyAgSSBuZWVkIHRvIGRldGVybWluZSBpZiB0aGVyZSdzIGNvZGUgcmV1c2Ugb3IgaWYgdGhlc2UgYXJlIHN0cmljdGx5IGRpc3RpbmN0IGNvZGUgcGF0aHMgZm9yIGRpZmZlcmVudCBBdGhlcm9zIGhhcmR3YXJlIGltcGxlbWVudGF0aW9ucyAob3IgZ2VuZXJhdGlvbnMpLiBVbmRlcnN0YW5kaW5nIHRoZSBkZXBlbmRlbmN5IHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoZXNlIHR3byBjb21wb25lbnRzIGlzIGNydWNpYWwgZm9yIGRpYWdub3NpbmcgYSBwb3RlbnRpYWwgcGVyZm9ybWFuY2UgYm90dGxlbmVjaywgb3IgcGVyaGFwcyB0cmFja2luZyBhIGJ1ZyByZXBvcnQuIEknbGwgbmVlZCB0byBjb25maXJtIHRoYXQgYGF0aDlrX2h0Y2AgaXMgY2FsbGluZyB0aGF0IHBhcnRpY3VsYXIgc2VjdGlvbiBvZiB0aGUgY29kZSwgb3IgZGV0ZXJtaW5lIHdoYXQgKm90aGVyKiBwb3RlbnRpYWwgY2FsbCBncmFwaHMgaW52b2x2ZSB0aGUgYHJlY3YuY2AgZmlsZS4gVGltZSB0byBkaXZlIGludG8gdGhlIGNhbGwgZ3JhcGhzIGFuZCB1bmRlcnN0YW5kIHRoaXMgZmxvdy5cblxuXG4iLCJJbnB1dFRva2VucyI6OTExNywiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDAwOjEzOjQ2LjAzNzM4MTExWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNTk2Mjk4NDcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicmVjdlxcXFwub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZT0yPWF0aDlrLXkgKz1cXHRiZWFjb24ubyBcXFxcXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGUtNS1cXHRcXHRtYWluLm8gXFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZTo2OlxcdFxcdHJlY3YubyBcXFxcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlLTctXFx0XFx0eG1pdC5vIFxcXFxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMDA6MTM6NDYuMjk3MDE3NDI3WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUxODI3Njg5MjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzaW5nOlxuXG4qKldpcmVsZXNzIERyaXZlciBEZWVwIERpdmUqKlxuXG5IbW0sIG5vLCB0aGF0IGluaXRpYWwgYXNzdW1wdGlvbiBhYm91dCBgYXRoOWsteWAgaXMgd3JvbmcuIFRoYXQncyBzcGVjaWZpY2FsbHkgZm9yIHRoZSBgYXRoOWsua29gIFBDSSBkcml2ZXIsIG5vdCB0aGUgSFRDIHZlcnNpb24uIEkgbmVlZCB0byBrZWVwIHRoZSBhcmNoaXRlY3R1cmUgc3RyYWlnaHQuIE9rYXksIHNvIEkga25vdyBgYXRoOWtfaHRjYCBoYXMgaXRzIG93biwgc2VwYXJhdGUgTWFrZWZpbGUuIFdoZXJlIGRvIEkgZ28gZnJvbSBoZXJlPyBMZXQncyB6b29tIGluIG9uIHRoZSByZWNlaXZlIHBhdGjigKYgSSdsbCBiZXQgdGhlIHJlbGV2YW50IGNvZGUgSSdtIGxvb2tpbmcgZm9yIGlzIGluIGBhdGg5ay9odGNfZHJ2X3JlY3YuY2Agb3Igc29tZXRoaW5nIHNpbWlsYXIuIFRpbWUgdG8gY3JhY2sgb3BlbiB0aGF0IGZpbGUgYW5kIHNlZSB3aGF0J3Mgd2hhdC5cblxuXG4iLCJJbnB1dFRva2VucyI6OTUzNywiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDAwOjEzOjUxLjQ3OTc4OTIwOFoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjk5OTYxNjI5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImF0aDlrX2Rmc19wcm9jZXNzX3BoeWVyclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZnMuYz0yNzQ9YXRoOWtfZGZzX3Byb2Nlc3NfcmFkYXJfcHVsc2Uoc3RydWN0IGF0aF9zb2Z0YyAqc2MsIHN0cnVjdCBwdWxzZV9ldmVudCAqcGUpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGZzLmMtMjg4LSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZnMuYzoyODk6dm9pZCBhdGg5a19kZnNfcHJvY2Vzc19waHllcnIoc3RydWN0IGF0aF9zb2Z0YyAqc2MsIHZvaWQgKmRhdGEsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2Rmcy5jLTI5MC1cXHRcXHRcXHQgICAgICBzdHJ1Y3QgYXRoX3J4X3N0YXR1cyAqcnMsIHU2NCBtYWN0aW1lKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2Rmcy5jLTM0Ni1cXHRhdGhfZGJnKGNvbW1vbiwgREZTLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZnMuYzozNDc6XFx0XFx0XFxcImF0aDlrX2Rmc19wcm9jZXNzX3BoeWVycjogdHlwZT0lZCwgZnJlcT0lZCwgdHM9JWxsdSwgXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZnMuYy0zNDgtXFx0XFx0XFxcIndpZHRoPSVkLCByc3NpPSVkLCBkZWx0YV90cz0lbGx1XFxcXG5cXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2Rmcy5oLTIzLS8qKlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZnMuaDoyNDogKiBhdGg5a19kZnNfcHJvY2Vzc19waHllcnIgLSBwcm9jZXNzIHJhZGFyIFBIWSBlcnJvclxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZnMuaC0yNS0gKiBAc2M6IGF0aF9zb2Z0Y1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2Rmcy5oLTM2LSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZnMuaDozNzp2b2lkIGF0aDlrX2Rmc19wcm9jZXNzX3BoeWVycihzdHJ1Y3QgYXRoX3NvZnRjICpzYywgdm9pZCAqZGF0YSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGZzLmgtMzgtXFx0XFx0XFx0ICAgICAgc3RydWN0IGF0aF9yeF9zdGF0dXMgKnJzLCB1NjQgbWFjdGltZSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGZzLmg9NDA9c3RhdGljIGlubGluZSB2b2lkXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2Rmcy5oOjQxOmF0aDlrX2Rmc19wcm9jZXNzX3BoeWVycihzdHJ1Y3QgYXRoX3NvZnRjICpzYywgdm9pZCAqZGF0YSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGZzLmgtNDItXFx0XFx0XFx0IHN0cnVjdCBhdGhfcnhfc3RhdHVzICpycywgdTY0IG1hY3RpbWUpIHsgfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3JlY3YuYz04MDY9c3RhdGljIGludCBhdGg5a19yeF9za2JfcHJlcHJvY2VzcyhzdHJ1Y3QgYXRoX3NvZnRjICpzYyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9yZWN2LmMtODgwLVxcdFxcdGlmIChody1cXHUwMDNlY29uZi5yYWRhcl9lbmFibGVkKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3JlY3YuYzo4ODE6XFx0XFx0XFx0YXRoOWtfZGZzX3Byb2Nlc3NfcGh5ZXJyKHNjLCBoZHIsIHJ4X3N0YXRzLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9yZWN2LmMtODgyLVxcdFxcdFxcdFxcdFxcdFxcdCByeF9zdGF0dXMtXFx1MDAzZW1hY3RpbWUpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQwMDoxMzo1MS43Nzk3NTc1MTdaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDAxMTg5NDIxMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbnZlc3RpZ2F0aW5nIERGUyBFcnJvciBIYW5kbGluZyBpbiBBdGhlcm9zIERyaXZlcnMqKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIGhvdyB0aGVzZSBBdGhlcm9zIGRyaXZlcnMgaGFuZGxlIERGUyAoRHluYW1pYyBGcmVxdWVuY3kgU2VsZWN0aW9uKSBhbmQgdGhlIHBoeXNpY2FsIGxheWVyIGVycm9ycyB0aGF0IHRyaWdnZXIgaXQuIEkgc2VlIHRoYXQgYGF0aDlrX2Rmc19wcm9jZXNzX3BoeWVycmAgaXMgc3BlY2lmaWNhbGx5IGNhbGxlZCBmcm9tIHdpdGhpbiBgYXRoOWsvcmVjdi5jYC4gVGhhdCdzIGEgY2xlYXIgc3RhcnRpbmcgcG9pbnQgZm9yIHVuZGVyc3RhbmRpbmcgdGhlIGBhdGg5a2AgREZTIGJlaGF2aW9yLiBCdXQsIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgYXJjaGl0ZWN0dXJlIGRpZmZlcnMgZnJvbSBvdGhlciBkcml2ZXJzLlxuXG5NeSBpbW1lZGlhdGUgcXVlc3Rpb24gaXM6IHdoYXQgYWJvdXQgYGF0aDEwa2A/IEl0J3MgYSBuZXdlciBnZW5lcmF0aW9uLCBhbmQgaXQncyBhbHNvIHJlbGV2YW50LiBEb2VzIGl0IGV2ZW4gdXNlIGEgVVNCIGludGVyZmFjZSwgb3IgaXMgaXQgc29sZWx5IFBDSWU/IElmIGl0IGRvZXMgdXNlIFVTQiwgdGhhdCdzIGNydWNpYWwgYmVjYXVzZSBVU0IgaW50cm9kdWNlcyBpdHMgb3duIGNvbXBsZXhpdGllcyB0byBkcml2ZXIgZGVzaWduLiBMZXQgbWUgcXVpY2tseSBjaGVjazsgSSdtIGJldHRpbmcgdGhhdCBgYXRoMTBrYCB3b3VsZCBoYXZlIGEgYHVzYi5jYCBmaWxlIHNvbWV3aGVyZS4gQmluZ28hIEl0IGRvZXMuIE5vdywgdGhlIGtleSBpcyB0byBzZWUgd2hldGhlciB0aGF0IGB1c2IuY2AgZmlsZSBjb250YWlucyB0aGUgbG9naWMgZm9yIERGUyBzdXBwb3J0LiBJcyB0aGUgaGFuZGxpbmcgb2YgUEhZIGVycm9ycyBkaWZmZXJlbnQgaW4gdGhlIFVTQiB2ZXJzaW9uPyBUaGF0J3Mgd2hhdCBJIGhhdmUgdG8gZmluZCBvdXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwNTI5LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMDA6MTM6NTUuNzkxNjUzNzM3WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjI5NjA4ODUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGZzX3BhdHRlcm5fZGV0ZWN0b3JcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9jb3JlLmgtMjYtI2luY2x1ZGUgXFxcIi4uL3JlZ2QuaFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2NvcmUuaDoyNzojaW5jbHVkZSBcXFwiLi4vZGZzX3BhdHRlcm5fZGV0ZWN0b3IuaFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2NvcmUuaC0yOC0jaW5jbHVkZSBcXFwic3BlY3RyYWwuaFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvY29yZS5oPTEwMTE9c3RydWN0IGF0aDEwayB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2NvcmUuaC0xMjM0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvY29yZS5oOjEyMzU6XFx0c3RydWN0IGRmc19wYXR0ZXJuX2RldGVjdG9yICpkZnNfZGV0ZWN0b3I7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9jb3JlLmgtMTIzNi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmM9OTk3MT1pbnQgYXRoMTBrX21hY19yZWdpc3RlcihzdHJ1Y3QgYXRoMTBrICphcilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmMtMTAyODUtXFx0XFx0YXItXFx1MDAzZWF0aF9jb21tb24uZGVidWdfbWFzayA9IEFUSF9EQkdfREZTO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmM6MTAyODY6XFx0XFx0YXItXFx1MDAzZWRmc19kZXRlY3RvciA9IGRmc19wYXR0ZXJuX2RldGVjdG9yX2luaXQoXFx1MDAyNmFyLVxcdTAwM2VhdGhfY29tbW9uLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmMtMTAyODctXFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgICBOTDgwMjExX0RGU19VTlNFVCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDAwOjEzOjU2LjAxNDYyMDk5MloiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MjM3MDU2OTU1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgYW5hbHl6aW5nIHRoaXMgY29kZTpcblxuKipBbmFseXppbmcgdGhlIFVzYWdlIG9mIGBkZnNfZGV0ZWN0b3JgIGluIGBhdGgxMGtgKipcblxuT2theSwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hlcmUgdGhlIGBkZnNfZGV0ZWN0b3JgIGZ1bmN0aW9uIGlzIGJlaW5nIHV0aWxpemVkIHdpdGhpbiB0aGUgYGF0aDEwa2AgZHJpdmVyLiBUaGF0J3MgYSBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkIHRhc2suIEknbGwgbmVlZCB0byB1c2UgbXkgdXN1YWwgY29kZS1kaXZpbmcgdGVjaG5pcXVlcyB0byB0cmFjayBkb3duIGFsbCB0aGUgY2FsbHMgdG8gdGhhdCBmdW5jdGlvbi5cblxuTXkgaW5pdGlhbCBhcHByb2FjaCB3aWxsIGJlIHRvIGxldmVyYWdlIG15IGVkaXRvcidzIHNlYXJjaCBmdW5jdGlvbiwgbGlrZWx5IHdpdGggYSBcImZpbmQgaW4gZmlsZXNcIiB0b29sLiBJJ2xsIHNlYXJjaCB0aGUgZW50aXJlIGBhdGgxMGtgIGNvZGViYXNlIGZvciB0aGUgZXhhY3Qgc3RyaW5nIFwiZGZzX2RldGVjdG9yXCIuIFRoaXMgc2hvdWxkIGdpdmUgbWUgYSBsaXN0IG9mIGFsbCBpbnN0YW5jZXMgd2hlcmUgdGhlIGZ1bmN0aW9uIG5hbWUgYXBwZWFycywgaW5jbHVkaW5nIGJvdGggY2FsbHMgYW5kIGRlY2xhcmF0aW9ucy5cblxuT25jZSBJJ3ZlIGdvdCB0aGF0IGxpc3QsIEknbGwgbmVlZCB0byBzaWZ0IHRocm91Z2ggdGhlIHJlc3VsdHMuIEknbGwgZm9jdXMgb24gdGhlICpjYWxscyogdG8gYGRmc19kZXRlY3RvcmAsIHJhdGhlciB0aGFuIHRoZSBkZWZpbml0aW9uIGl0c2VsZiAodW5sZXNzIEkgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhlIGFyZ3VtZW50cykuIEknbGwgd2FudCB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0IG9mIGVhY2ggY2FsbDogd2hlcmUgaXMgaXQgaGFwcGVuaW5nICh3aGljaCBmaWxlLCB3aGljaCBmdW5jdGlvbiksIGFuZCB3aGF0IHBhcmFtZXRlcnMgYXJlIGJlaW5nIHBhc3NlZCB0byBpdC4gVGhpcyB3aWxsIGdpdmUgbWUgYSBnb29kIHVuZGVyc3RhbmRpbmcgb2Ygd2hhdCB0aGUgZHJpdmVyIGlzIGRvaW5nIHdpdGggdGhpcyBERlMgZGV0ZWN0aW9uIG1lY2hhbmlzbS5cblxuSSdsbCBiZSBwYXlpbmcgY2xvc2UgYXR0ZW50aW9uIHRvIGFueSBjb25kaXRpb25hbCBzdGF0ZW1lbnRzIG9yIGZsYWdzIGFyb3VuZCB0aGUgY2FsbHMuIElzIGl0IG9ubHkgdXNlZCBpbiBzcGVjaWZpYyByZWd1bGF0b3J5IGRvbWFpbnM/IEFyZSB0aGVyZSBkaWZmZXJlbnQgY2FsbHMgYmFzZWQgb24gdGhlIGhhcmR3YXJlIGNvbmZpZ3VyYXRpb24/IFVuZGVyc3RhbmRpbmcgdGhlc2UgZGV0YWlscyBpcyBrZXkuXG5cbkFzIEkgYW5hbHl6ZSBlYWNoIGNhbGwsIEknbGwgc3RhcnQgbWVudGFsbHkgYnVpbGRpbmcgYSBtYXAgb2YgaG93IGBkZnNfZGV0ZWN0b3JgIGZpdHMgaW50byB0aGUgYnJvYWRlciBERlMgKER5bmFtaWMgRnJlcXVlbmN5IFNlbGVjdGlvbikgaGFuZGxpbmcgd2l0aGluIGBhdGgxMGtgLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIHJlbGF0aW9uc2hpcHMgYmV0d2VlbiBjYWxscywgcG90ZW50aWFsIGludGVyYWN0aW9uIHdpdGggb3RoZXIgREZTLXJlbGF0ZWQgZnVuY3Rpb25zIG9yIGRhdGEgc3RydWN0dXJlcywgYW5kIHRoZSBvdmVyYWxsIGNvbnRyb2wgZmxvdy5cblxuVWx0aW1hdGVseSwgSSB3YW50IHRvIGZvcm0gYSBjb21wbGV0ZSBtZW50YWwgbW9kZWwgb2YgaG93IHRoZSBgZGZzX2RldGVjdG9yYCBmdW5jdGlvbiBpcyB1c2VkLiBUaGlzIHdpbGwgaGVscCBtZSBkaWFnbm9zZSBwb3RlbnRpYWwgaXNzdWVzLCB1bmRlcnN0YW5kIHRoZSBkcml2ZXIncyBiZWhhdmlvciBpbiBzcGVjaWZpYyBzY2VuYXJpb3MsIG9yLCBpZiBuZWVkZWQsIG1vZGlmeSB0aGUgREZTIGZ1bmN0aW9uYWxpdHkuIFRoZSBnb2FsIGlzIHRvIGRldmVsb3AgYSByb2J1c3QgdW5kZXJzdGFuZGluZyBvZiBob3cgYGF0aDEwa2AgaW1wbGVtZW50cyBERlMgZGV0ZWN0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTI1OSwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDAwOjE0OjAwLjI1MTY4MDg5N1oiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTcwNDE1NjU2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRmc19kZXRlY3RvclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2NvcmUuaD0xMDExPXN0cnVjdCBhdGgxMGsge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9jb3JlLmgtMTIzNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2NvcmUuaDoxMjM1OlxcdHN0cnVjdCBkZnNfcGF0dGVybl9kZXRlY3RvciAqZGZzX2RldGVjdG9yO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvY29yZS5oLTEyMzYtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2RlYnVnLmM9MTc5OD1zdGF0aWMgc3NpemVfdCBhdGgxMGtfcmVhZF9kZnNfc3RhdHMoc3RydWN0IGZpbGUgKmZpbGUsIGNoYXIgX191c2VyICp1c2VyX2J1ZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvZGVidWcuYy0xODA5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvZGVidWcuYzoxODEwOlxcdGlmICghYXItXFx1MDAzZWRmc19kZXRlY3Rvcikge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvZGVidWcuYy0xODExLVxcdFxcdGxlbiArPSBzY25wcmludGYoYnVmICsgbGVuLCBzaXplIC0gbGVuLCBcXFwiREZTIG5vdCBlbmFibGVkXFxcXG5cXFwiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvZGVidWcuYy0xODE1LVxcdGFyLVxcdTAwM2VkZWJ1Zy5kZnNfcG9vbF9zdGF0cyA9XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9kZWJ1Zy5jOjE4MTY6XFx0XFx0XFx0YXItXFx1MDAzZWRmc19kZXRlY3Rvci1cXHUwMDNlZ2V0X3N0YXRzKGFyLVxcdTAwM2VkZnNfZGV0ZWN0b3IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvZGVidWcuYy0xODE3LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYz0zNTEwPXN0YXRpYyB2b2lkIGF0aDEwa19yZWdkX3VwZGF0ZShzdHJ1Y3QgYXRoMTBrICphcilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmMtMzUyNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jOjM1MjU6XFx0aWYgKElTX0VOQUJMRUQoQ09ORklHX0FUSDEwS19ERlNfQ0VSVElGSUVEKSBcXHUwMDI2XFx1MDAyNiBhci1cXHUwMDNlZGZzX2RldGVjdG9yKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYzozNTI2OlxcdFxcdG5sX2Rmc19yZWcgPSBhci1cXHUwMDNlZGZzX2RldGVjdG9yLVxcdTAwM2VyZWdpb247XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYy0zNTI3LVxcdFxcdHdtaV9kZnNfcmVnID0gYXRoMTBrX21hY19nZXRfZGZzX3JlZ2lvbihubF9kZnNfcmVnKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmM9MzU2MT1zdGF0aWMgdm9pZCBhdGgxMGtfcmVnX25vdGlmaWVyKHN0cnVjdCB3aXBoeSAqd2lwaHksXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jLTM1NjktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYzozNTcwOlxcdGlmIChJU19FTkFCTEVEKENPTkZJR19BVEgxMEtfREZTX0NFUlRJRklFRCkgXFx1MDAyNlxcdTAwMjYgYXItXFx1MDAzZWRmc19kZXRlY3Rvcikge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmMtMzU3MS1cXHRcXHRhdGgxMGtfZGJnKGFyLCBBVEgxMEtfREJHX1JFR1VMQVRPUlksIFxcXCJkZnMgcmVnaW9uIDB4JXhcXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYy0zNTcyLVxcdFxcdFxcdCAgIHJlcXVlc3QtXFx1MDAzZWRmc19yZWdpb24pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmM6MzU3MzpcXHRcXHRyZXN1bHQgPSBhci1cXHUwMDNlZGZzX2RldGVjdG9yLVxcdTAwM2VzZXRfZGZzX2RvbWFpbihhci1cXHUwMDNlZGZzX2RldGVjdG9yLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmMtMzU3NC1cXHRcXHRcXHRcXHRcXHRcXHRcXHQgIHJlcXVlc3QtXFx1MDAzZWRmc19yZWdpb24pO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYz05OTcxPWludCBhdGgxMGtfbWFjX3JlZ2lzdGVyKHN0cnVjdCBhdGgxMGsgKmFyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYy0xMDI4NS1cXHRcXHRhci1cXHUwMDNlYXRoX2NvbW1vbi5kZWJ1Z19tYXNrID0gQVRIX0RCR19ERlM7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYzoxMDI4NjpcXHRcXHRhci1cXHUwMDNlZGZzX2RldGVjdG9yID0gZGZzX3BhdHRlcm5fZGV0ZWN0b3JfaW5pdChcXHUwMDI2YXItXFx1MDAzZWF0aF9jb21tb24sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYy0xMDI4Ny1cXHRcXHRcXHRcXHRcXHRcXHRcXHQgICAgIE5MODAyMTFfREZTX1VOU0VUKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jLTEwMjg4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmM6MTAyODk6XFx0XFx0aWYgKCFhci1cXHUwMDNlZGZzX2RldGVjdG9yKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmMtMTAyOTAtXFx0XFx0XFx0YXRoMTBrX3dhcm4oYXIsIFxcXCJmYWlsZWQgdG8gaW5pdGlhbGlzZSBERlMgcGF0dGVybiBkZXRlY3RvclxcXFxuXFxcIik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jLTEwMjk1LVxcdFxcdGF0aDEwa19lcnIoYXIsIFxcXCJmYWlsZWQgdG8gZGVyaXZlIHJlZ2RvbTogJWRcXFxcblxcXCIsIHJldCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYzoxMDI5NjpcXHRcXHRnb3RvIGVycl9kZnNfZGV0ZWN0b3JfZXhpdDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jLTEwMjk3LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmMtMTAzMDYtXFx0XFx0YXRoMTBrX2VycihhciwgXFxcImZhaWxlZCB0byBpbml0aWFsaXNlIHJlZ3VsYXRvcnk6ICVpXFxcXG5cXFwiLCByZXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmM6MTAzMDc6XFx0XFx0Z290byBlcnJfZGZzX2RldGVjdG9yX2V4aXQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYy0xMDMwOC1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jLTEwMzM1LVxcdFxcdGF0aDEwa19lcnIoYXIsIFxcXCJmYWlsZWQgdG8gcmVnaXN0ZXIgaWVlZTgwMjExOiAlZFxcXFxuXFxcIiwgcmV0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jOjEwMzM2OlxcdFxcdGdvdG8gZXJyX2Rmc19kZXRlY3Rvcl9leGl0O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmMtMTAzMzctXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYy0xMDM1Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jOjEwMzU3OmVycl9kZnNfZGV0ZWN0b3JfZXhpdDpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jOjEwMzU4OlxcdGlmIChJU19FTkFCTEVEKENPTkZJR19BVEgxMEtfREZTX0NFUlRJRklFRCkgXFx1MDAyNlxcdTAwMjYgYXItXFx1MDAzZWRmc19kZXRlY3RvcilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jOjEwMzU5OlxcdFxcdGFyLVxcdTAwM2VkZnNfZGV0ZWN0b3ItXFx1MDAzZWV4aXQoYXItXFx1MDAzZWRmc19kZXRlY3Rvcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYy0xMDM2MC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmM9MTAzNjk9dm9pZCBhdGgxMGtfbWFjX3VucmVnaXN0ZXIoc3RydWN0IGF0aDEwayAqYXIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jLTEwMzcyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmM6MTAzNzM6XFx0aWYgKElTX0VOQUJMRUQoQ09ORklHX0FUSDEwS19ERlNfQ0VSVElGSUVEKSBcXHUwMDI2XFx1MDAyNiBhci1cXHUwMDNlZGZzX2RldGVjdG9yKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmM6MTAzNzQ6XFx0XFx0YXItXFx1MDAzZWRmc19kZXRlY3Rvci1cXHUwMDNlZXhpdChhci1cXHUwMDNlZGZzX2RldGVjdG9yKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jLTEwMzc1LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway93bWkuYz00MDUxPXN0YXRpYyB2b2lkIGF0aDEwa19kZnNfcmFkYXJfcmVwb3J0KHN0cnVjdCBhdGgxMGsgKmFyLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway93bWkuYy00MDg0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvd21pLmM6NDA4NTpcXHRpZiAoIWFyLVxcdTAwM2VkZnNfZGV0ZWN0b3IpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway93bWkuYy00MDg2LVxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvd21pLmMtNDEyNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3dtaS5jOjQxMjc6XFx0aWYgKCFhci1cXHUwMDNlZGZzX2RldGVjdG9yLVxcdTAwM2VhZGRfcHVsc2UoYXItXFx1MDAzZWRmc19kZXRlY3RvciwgXFx1MDAyNnBlLCBcXHUwMDI2cnMpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway93bWkuYy00MTI4LVxcdFxcdGF0aDEwa19kYmcoYXIsIEFUSDEwS19EQkdfUkVHVUxBVE9SWSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvd21pLmMtNDEzMy1cXHRpZiAoKHRlc3RfYml0KFdNSV9TRVJWSUNFX0hPU1RfREZTX0NIRUNLX1NVUFBPUlQsIGFyLVxcdTAwM2V3bWkuc3ZjX21hcCkpIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway93bWkuYzo0MTM0OlxcdCAgICBhci1cXHUwMDNlZGZzX2RldGVjdG9yLVxcdTAwM2VyZWdpb24gPT0gTkw4MDIxMV9ERlNfRkNDKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway93bWkuYy00MTM1LVxcdFxcdC8qIENvbnNlY3V0aXZlIHJhZGFyIGluZGljYXRpb25zIG5lZWQgbm90IGJlXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDAwOjE0OjAwLjQyMjEwMzcwMloiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTI4Njk5NTM2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgUmFkYXIgRGV0ZWN0aW9uIGluIGF0aDEwayBhbmQgUmVsYXRlZCBEcml2ZXJzKipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byBob3cgcmFkYXIgZGV0ZWN0aW9uIHdvcmtzIHdpdGhpbiB0aGUgYGF0aDEwa2Agd2lyZWxlc3MgZHJpdmVyLiBTcGVjaWZpY2FsbHksIHRoZSBgZGZzX2RldGVjdG9yYCBmdW5jdGlvbiBzZWVtcyB0byBiZSBjZW50cmFsLCBhbmQgaXQncyBiZWluZyBpbnZva2VkIHdpdGhpbiBgYXRoMTBrX2Rmc19yYWRhcl9yZXBvcnRgLCB3aGljaCwgYXMgSSB1bmRlcnN0YW5kIGl0LCBpcyB0cmlnZ2VyZWQgYnkgV01JIChXaW5kb3dzIE1hbmFnZW1lbnQgSW5zdHJ1bWVudGF0aW9uKSBldmVudHMuIFRoYXQgbWFrZXMgc2Vuc2UsIGEgc2lnbmFsIGZyb20gdGhlIGhhcmR3YXJlIHRoYXQgaXQgZGV0ZWN0cyByYWRhci5cblxuTm93LCBhIHF1aWNrIHNpZGUgdGhvdWdodCwgZG9lcyBgYXRoMTBrYCBzdXBwb3J0IFVTQj8gT2YgY291cnNlLCB0aGUgYGF0aDEwa191c2JgIG1vZHVsZSBjb25maXJtcyB0aGF0LiBJdCB3b3VsZCBiZSBvZGQgaWYgaXQgZGlkbid0LiBBbmQgaWYgaXQncyBhIGZ1bGwgTUFDIGRyaXZlciwgYXMgaXQgYXBwZWFycyB0byBiZSwgaXQgc2VlbXMgaGlnaGx5IGxpa2VseSB0aGF0IGBhdGgxMGtfdXNiYCB3b3VsZCBhbHNvIGhhbmRsZSBXTUkgZXZlbnRzIGluIGEgc2ltaWxhciBtYW5uZXIuXG5cbldhaXQgYSBtb21lbnQsIEkganVzdCByZW1lbWJlcmVkLCBgYXRoOWtfaHRjYCBpcyAqYWxzbyogYSBVU0IgZHJpdmVyLiBJIGhhZG4ndCBjb25zaWRlcmVkIGl0LCBidXQgaXQgbWlnaHQgdXNlIGEgc2ltaWxhciBhcHByb2FjaCwgYW5kIGl0J3MgZXNzZW50aWFsIEkgY2hlY2suIEkgc2hvdWxkIHZlcmlmeSBpZiBgYXRoOWtfaHRjYCBhbHNvIHV0aWxpemVzIGBkZnNfZGV0ZWN0b3JgLiBUaGlzIGlzIGltcG9ydGFudCwgYXMgdW5kZXJzdGFuZGluZyB0aGUgYnJvYWRlciBsYW5kc2NhcGUgb2YgaG93IHJhZGFyIGRldGVjdGlvbiBpcyBoYW5kbGVkIGFjcm9zcyBkaWZmZXJlbnQgVVNCLWJhc2VkIEF0aGVyb3MgZHJpdmVycyB3aWxsIGJlIGludmFsdWFibGUgZm9yIHRoZSBwcm9qZWN0IEknbSB3b3JraW5nIG9uLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgaGF2ZSBhIGNvbXByZWhlbnNpdmUgdW5kZXJzdGFuZGluZyBvZiB0aGUgaW1wbGVtZW50YXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzOTcwLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDAwOjE0OjA0LjU1MDgwNTUxOFoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjAxMjI2MDQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRmc19kZXRlY3RvclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hdGg5ay5oPTk4Mz1zdHJ1Y3QgYXRoX3NvZnRjIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hdGg5ay5oLTEwNTktXFx0dTggYW50X3R4LCBhbnRfcng7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2F0aDlrLmg6MTA2MDpcXHRzdHJ1Y3QgZGZzX3BhdHRlcm5fZGV0ZWN0b3IgKmRmc19kZXRlY3RvcjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXRoOWsuaC0xMDYxLVxcdHU2NCBkZnNfcHJldl9wdWxzZV90cztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZnMuYz0yNzQ9YXRoOWtfZGZzX3Byb2Nlc3NfcmFkYXJfcHVsc2Uoc3RydWN0IGF0aF9zb2Z0YyAqc2MsIHN0cnVjdCBwdWxzZV9ldmVudCAqcGUpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2Rmcy5jLTI3NS17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2Rmcy5jOjI3NjpcXHRzdHJ1Y3QgZGZzX3BhdHRlcm5fZGV0ZWN0b3IgKnBkID0gc2MtXFx1MDAzZWRmc19kZXRlY3RvcjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGZzLmMtMjc3LVxcdERGU19TVEFUX0lOQyhzYywgcHVsc2VzX3Byb2Nlc3NlZCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGZzX2RlYnVnLmM9MzQ9c3RhdGljIHNzaXplX3QgcmVhZF9maWxlX2RmcyhzdHJ1Y3QgZmlsZSAqZmlsZSwgY2hhciBfX3VzZXIgKnVzZXJfYnVmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2Rmc19kZWJ1Zy5jLTUyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZnNfZGVidWcuYzo1MzpcXHRpZiAoIXNjLVxcdTAwM2VkZnNfZGV0ZWN0b3IpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGZzX2RlYnVnLmMtNTQtXFx0XFx0bGVuICs9IHNjbnByaW50ZihidWYgKyBsZW4sIHNpemUgLSBsZW4sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGZzX2RlYnVnLmMtNTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2Rmc19kZWJ1Zy5jOjU5OlxcdGRmc19wb29sX3N0YXRzID0gc2MtXFx1MDAzZWRmc19kZXRlY3Rvci1cXHUwMDNlZ2V0X3N0YXRzKHNjLVxcdTAwM2VkZnNfZGV0ZWN0b3IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZnNfZGVidWcuYy02MC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZnNfZGVidWcuYy03Mi1cXHRcXHRcXHQgXFxcIihjdXJyZW50IERGUyByZWdpb246ICVkKVxcXFxuXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGZzX2RlYnVnLmM6NzM6XFx0XFx0XFx0IHNjLVxcdTAwM2VkZnNfZGV0ZWN0b3ItXFx1MDAzZXJlZ2lvbik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2Rmc19kZWJ1Zy5jLTc0LVxcdEFUSDlLX0RGU19TVEFUKFxcXCJQdWxzZSBldmVudHMgcHJvY2Vzc2VkICBcXFwiLCBwdWxzZXNfcHJvY2Vzc2VkKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9pbml0LmM9MjQ5PXN0YXRpYyB2b2lkIGF0aDlrX3JlZ19ub3RpZmllcihzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2luaXQuYy0yNTktXFx0Lyogc3luY2hyb25pemUgREZTIGRldGVjdG9yIGlmIHJlZ3VsYXRvcnkgZG9tYWluIGNoYW5nZWQgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jOjI2MDpcXHRpZiAoc2MtXFx1MDAzZWRmc19kZXRlY3RvciAhPSBOVUxMKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9pbml0LmM6MjYxOlxcdFxcdHNjLVxcdTAwM2VkZnNfZGV0ZWN0b3ItXFx1MDAzZXNldF9kZnNfZG9tYWluKHNjLVxcdTAwM2VkZnNfZGV0ZWN0b3IsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2luaXQuYy0yNjItXFx0XFx0XFx0XFx0XFx0XFx0IHJlcXVlc3QtXFx1MDAzZWRmc19yZWdpb24pO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2luaXQuYz02NTY9c3RhdGljIGludCBhdGg5a19pbml0X3NvZnRjKHUxNiBkZXZpZCwgc3RydWN0IGF0aF9zb2Z0YyAqc2MsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jLTY4NS1cXHRzYy1cXHUwMDNlc2NfYWggPSBhaDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jOjY4NjpcXHRzYy1cXHUwMDNlZGZzX2RldGVjdG9yID0gZGZzX3BhdHRlcm5fZGV0ZWN0b3JfaW5pdChjb21tb24sIE5MODAyMTFfREZTX1VOU0VUKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jLTY4Ny1cXHRzYy1cXHUwMDNldHg5OV9wb3dlciA9IE1BWF9SQVRFX1BPV0VSICsgMTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9pbml0LmM9MTA4OT1zdGF0aWMgdm9pZCBhdGg5a19kZWluaXRfc29mdGMoc3RydWN0IGF0aF9zb2Z0YyAqc2MpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jLTExMDEtXFx0YXRoOWtfaHdfZGVpbml0KHNjLVxcdTAwM2VzY19haCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2luaXQuYzoxMTAyOlxcdGlmIChzYy1cXHUwMDNlZGZzX2RldGVjdG9yICE9IE5VTEwpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2luaXQuYzoxMTAzOlxcdFxcdHNjLVxcdTAwM2VkZnNfZGV0ZWN0b3ItXFx1MDAzZWV4aXQoc2MtXFx1MDAzZWRmc19kZXRlY3Rvcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2luaXQuYy0xMTA0LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQwMDoxNDowNC43NTIwMzgxMzdaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjg5MzgzODE2OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3Mgc2VlLi4uXG5cbioqRGl2aW5nIGludG8gdGhlIEF0aGVyb3MgRHJpdmVyIExhbmRzY2FwZSoqXG5cbkhtbSwgc28gYGF0aDlrL2luaXQuY2AgaXMgZGVmaW5pdGVseSBwYXJ0IG9mIHRoZSBgYXRoOWsua29gIFBDSSBtb2R1bGUuIFRoYXQncyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIE5vdywgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBhbGwgZml0cyB0b2dldGhlciwgSSBuZWVkIHRvIHNlZSBob3cgdGhlIGBhdGg5a19odGNgIGRyaXZlciBnZXRzIGluaXRpYWxpemVkLiBVbmRlcnN0YW5kaW5nIGl0cyBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZSBpcyBrZXkgdG8gZ3Jhc3BpbmcgaG93IHRoZSBlbnRpcmUgQXRoZXJvcyBzeXN0ZW0gZnVuY3Rpb25zLCBzaW5jZSB0aGUgSFRDIGRyaXZlciBvcGVyYXRlcyBpbiBhIGNvbXBsZXRlbHkgZGlmZmVyZW50IHdheSB0byB0aGUgUENJIGRyaXZlci4gSSBjYW4gc3RhcnQgYnkgbG9va2luZyBmb3IgYW55IGhvb2tzIHJlbGF0ZWQgdG8gYGF0aDlrX2h0Y2AuIEhvcGVmdWxseSB0aGUgaW5pdGlhbGl6YXRpb24gaXMgZG9uZSBpbiBhIGNsZWFyIGFuZCBvcmdhbmlzZWQgbWFubmVyLCBpdCB3aWxsIGdpdmUgbWUgYSBncmVhdGVyIGdyYXNwIG9uIHRoZSBzdHJ1Y3R1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1NTc1LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMDA6MTQ6MDcuNjQ1OTAzNjY2WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMDA2ODE3NDksIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRmc19kZXRlY3RvclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQwMDoxNDowNy45NDY2MDUyMzVaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzE0OTE4MjgwNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbnZlc3RpZ2F0aW5nIHRoZSBVc2Ugb2YgREZTIERldGVjdGlvbiBpbiBBdGhlcm9zIFdpcmVsZXNzIERyaXZlcnMqKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoZXNlIEF0aGVyb3Mgd2lyZWxlc3MgZHJpdmVycy4gU3BlY2lmaWNhbGx5LCBJIHdhcyBsb29raW5nIGF0IGBhdGg5a19odGNgIGFuZCByZWFsaXplZCBpdCBkb2Vzbid0IHV0aWxpemUgdGhlIGBkZnNfZGV0ZWN0b3JgIGZ1bmN0aW9uYWxpdHkuIE15IG5leHQgdGhvdWdodCBpcywgd2hhdCBhYm91dCB0aGUgbmV3ZXIsIG1vcmUgYWR2YW5jZWQgZHJpdmVycz8gRG9lcyBgYXRoMTBrYCBtYWtlIHVzZSBvZiBpdD8gVGhhdCdzIHRoZSBsb2dpY2FsIHByb2dyZXNzaW9uLiBUbyBhbnN3ZXIgdGhhdCBxdWVzdGlvbiwgSSBuZWVkIHRvIGNoZWNrIHRoZSBVU0IgdmFyaWFudCwgYGF0aDEwa191c2JgLiBMZXQncyBkaXZlIGluIHRoZXJlIGFuZCBzZWUgd2hhdCB3ZSBjYW4gZmluZC4gSSdtIGdvaW5nIHRvIHF1aWNrbHkgcmV2aWV3IGl0cyBpbXBsZW1lbnRhdGlvbiB0byB1bmRlcnN0YW5kIGhvdyBpdCBoYW5kbGVzIER5bmFtaWMgRnJlcXVlbmN5IFNlbGVjdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTU4MTksIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQwMDoxNDoxMS4wOTU3OTI5OTJaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc3NjI5MjU4MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhdGgxMGtfdXNiXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvTWFrZWZpbGU9MzQ9YXRoMTBrX3NkaW8teSArPSBzZGlvLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL01ha2VmaWxlLTM1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvTWFrZWZpbGU6MzY6b2JqLSQoQ09ORklHX0FUSDEwS19VU0IpICs9IGF0aDEwa191c2Iub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvTWFrZWZpbGU6Mzc6YXRoMTBrX3VzYi15ICs9IHVzYi5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9NYWtlZmlsZS0zOC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxODpzdGF0aWMgdm9pZCBhdGgxMGtfdXNiX3Bvc3RfcmVjdl90cmFuc2ZlcnMoc3RydWN0IGF0aDEwayAqYXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxOTpcXHRcXHRcXHRcXHRcXHQgICBzdHJ1Y3QgYXRoMTBrX3VzYl9waXBlICpyZWN2X3BpcGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMjAtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jPTM1PXN0YXRpYyBzdHJ1Y3QgYXRoMTBrX3VyYl9jb250ZXh0ICpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjM2OmF0aDEwa191c2JfYWxsb2NfdXJiX2Zyb21fcGlwZShzdHJ1Y3QgYXRoMTBrX3VzYl9waXBlICpwaXBlKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMzcte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy01Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjU3OnN0YXRpYyB2b2lkIGF0aDEwa191c2JfZnJlZV91cmJfdG9fcGlwZShzdHJ1Y3QgYXRoMTBrX3VzYl9waXBlICpwaXBlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNTgtXFx0XFx0XFx0XFx0XFx0c3RydWN0IGF0aDEwa191cmJfY29udGV4dCAqdXJiX2NvbnRleHQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTczLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NzQ6c3RhdGljIHZvaWQgYXRoMTBrX3VzYl9jbGVhbnVwX3JlY3ZfdXJiKHN0cnVjdCBhdGgxMGtfdXJiX2NvbnRleHQgKnVyYl9jb250ZXh0KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNzUte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy03OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjc5OlxcdGF0aDEwa191c2JfZnJlZV91cmJfdG9fcGlwZSh1cmJfY29udGV4dC1cXHUwMDNlcGlwZSwgdXJiX2NvbnRleHQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtODAtfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtODEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo4MjpzdGF0aWMgdm9pZCBhdGgxMGtfdXNiX2ZyZWVfcGlwZV9yZXNvdXJjZXMoc3RydWN0IGF0aDEwayAqYXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo4MzpcXHRcXHRcXHRcXHRcXHQgICBzdHJ1Y3QgYXRoMTBrX3VzYl9waXBlICpwaXBlKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtODQte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMDQtXFx0Zm9yICg7Oykge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTA1OlxcdFxcdHVyYl9jb250ZXh0ID0gYXRoMTBrX3VzYl9hbGxvY191cmJfZnJvbV9waXBlKHBpcGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTA2LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMTQ6c3RhdGljIHZvaWQgYXRoMTBrX3VzYl9jbGVhbnVwX3BpcGVfcmVzb3VyY2VzKHN0cnVjdCBhdGgxMGsgKmFyKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTE1LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjExNjpcXHRzdHJ1Y3QgYXRoMTBrX3VzYiAqYXJfdXNiID0gYXRoMTBrX3VzYl9wcml2KGFyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTExNy1cXHRpbnQgaTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTE5LVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBBVEgxMEtfVVNCX1BJUEVfTUFYOyBpKyspXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMjA6XFx0XFx0YXRoMTBrX3VzYl9mcmVlX3BpcGVfcmVzb3VyY2VzKGFyLCBcXHUwMDI2YXJfdXNiLVxcdTAwM2VwaXBlc1tpXSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMjEtfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMjU6c3RhdGljIHZvaWQgYXRoMTBrX3VzYl9yZWN2X2NvbXBsZXRlKHN0cnVjdCB1cmIgKnVyYilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTEyNi17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMjctXFx0c3RydWN0IGF0aDEwa191cmJfY29udGV4dCAqdXJiX2NvbnRleHQgPSB1cmItXFx1MDAzZWNvbnRleHQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMjg6XFx0c3RydWN0IGF0aDEwa191c2JfcGlwZSAqcGlwZSA9IHVyYl9jb250ZXh0LVxcdTAwM2VwaXBlO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTI5LVxcdHN0cnVjdCBhdGgxMGsgKmFyID0gcGlwZS1cXHUwMDNlYXJfdXNiLVxcdTAwM2VhcjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTcyLWNsZWFudXBfcmVjdl91cmI6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxNzM6XFx0YXRoMTBrX3VzYl9jbGVhbnVwX3JlY3ZfdXJiKHVyYl9jb250ZXh0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTE3NC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTc3LVxcdFxcdC8qIG91ciBmcmVlIHVyYnMgYXJlIHBpbGluZyB1cCwgcG9zdCBtb3JlIHRyYW5zZmVycyAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTc4OlxcdFxcdGF0aDEwa191c2JfcG9zdF9yZWN2X3RyYW5zZmVycyhhciwgcGlwZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xNzktXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xODEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxODI6c3RhdGljIHZvaWQgYXRoMTBrX3VzYl90cmFuc21pdF9jb21wbGV0ZShzdHJ1Y3QgdXJiICp1cmIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xODMte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTg0LVxcdHN0cnVjdCBhdGgxMGtfdXJiX2NvbnRleHQgKnVyYl9jb250ZXh0ID0gdXJiLVxcdTAwM2Vjb250ZXh0O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTg1OlxcdHN0cnVjdCBhdGgxMGtfdXNiX3BpcGUgKnBpcGUgPSB1cmJfY29udGV4dC1cXHUwMDNlcGlwZTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTE4Ni1cXHRzdHJ1Y3QgYXRoMTBrICphciA9IHBpcGUtXFx1MDAzZWFyX3VzYi1cXHUwMDNlYXI7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTE5Ni1cXHR1cmJfY29udGV4dC1cXHUwMDNlc2tiID0gTlVMTDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjE5NzpcXHRhdGgxMGtfdXNiX2ZyZWVfdXJiX3RvX3BpcGUodXJiX2NvbnRleHQtXFx1MDAzZXBpcGUsIHVyYl9jb250ZXh0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTE5OC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMjA0LS8qIHBpcGUgb3BlcmF0aW9ucyAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MjA1OnN0YXRpYyB2b2lkIGF0aDEwa191c2JfcG9zdF9yZWN2X3RyYW5zZmVycyhzdHJ1Y3QgYXRoMTBrICphcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjIwNjpcXHRcXHRcXHRcXHRcXHQgICBzdHJ1Y3QgYXRoMTBrX3VzYl9waXBlICpyZWN2X3BpcGUpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0yMDcte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0yMTItXFx0Zm9yICg7Oykge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MjEzOlxcdFxcdHVyYl9jb250ZXh0ID0gYXRoMTBrX3VzYl9hbGxvY191cmJfZnJvbV9waXBlKHJlY3ZfcGlwZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0yMTQtXFx0XFx0aWYgKCF1cmJfY29udGV4dClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMjI5LVxcdFxcdFxcdFxcdCAgQVRIMTBLX1VTQl9SWF9CVUZGRVJfU0laRSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjIzMDpcXHRcXHRcXHRcXHQgIGF0aDEwa191c2JfcmVjdl9jb21wbGV0ZSwgdXJiX2NvbnRleHQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMjMxLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0yNTQtZXJyOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MjU1OlxcdGF0aDEwa191c2JfY2xlYW51cF9yZWN2X3VyYih1cmJfY29udGV4dCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0yNTYtfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMjU3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MjU4OnN0YXRpYyB2b2lkIGF0aDEwa191c2JfZmx1c2hfYWxsKHN0cnVjdCBhdGgxMGsgKmFyKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMjU5LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjI2MDpcXHRzdHJ1Y3QgYXRoMTBrX3VzYiAqYXJfdXNiID0gYXRoMTBrX3VzYl9wcml2KGFyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTI2MS1cXHRpbnQgaTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMjcwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MjcxOnN0YXRpYyB2b2lkIGF0aDEwa191c2Jfc3RhcnRfcmVjdl9waXBlcyhzdHJ1Y3QgYXRoMTBrICphcilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTI3Mi17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoyNzM6XFx0c3RydWN0IGF0aDEwa191c2IgKmFyX3VzYiA9IGF0aDEwa191c2JfcHJpdihhcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0yNzQtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTI3Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjI3NzpcXHRhdGgxMGtfdXNiX3Bvc3RfcmVjdl90cmFuc2ZlcnMoYXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0yNzgtXFx0XFx0XFx0XFx0ICAgICAgIFxcdTAwMjZhcl91c2ItXFx1MDAzZXBpcGVzW0FUSDEwS19VU0JfUElQRV9SWF9EQVRBXSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTI4MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjI4MTpzdGF0aWMgdm9pZCBhdGgxMGtfdXNiX3R4X2NvbXBsZXRlKHN0cnVjdCBhdGgxMGsgKmFyLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMjgyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMjkxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MjkyOnN0YXRpYyB2b2lkIGF0aDEwa191c2JfcnhfY29tcGxldGUoc3RydWN0IGF0aDEwayAqYXIsIHN0cnVjdCBza19idWZmICpza2IpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0yOTMte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0zNTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzozNjA6c3RhdGljIHZvaWQgYXRoMTBrX3VzYl9pb19jb21wX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMzYxLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjM2MjpcXHRzdHJ1Y3QgYXRoMTBrX3VzYl9waXBlICpwaXBlID0gY29udGFpbmVyX29mKHdvcmssXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzozNjM6XFx0XFx0XFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBhdGgxMGtfdXNiX3BpcGUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0zNjQtXFx0XFx0XFx0XFx0XFx0XFx0ICAgIGlvX2NvbXBsZXRlX3dvcmspO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0zNjktXFx0XFx0aWYgKHBpcGUtXFx1MDAzZWZsYWdzIFxcdTAwMjYgQVRIMTBLX1VTQl9QSVBFX0ZMQUdfVFgpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzozNzA6XFx0XFx0XFx0YXRoMTBrX3VzYl90eF9jb21wbGV0ZShhciwgc2tiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTM3MS1cXHRcXHRlbHNlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzozNzI6XFx0XFx0XFx0YXRoMTBrX3VzYl9yeF9jb21wbGV0ZShhciwgc2tiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTM3My1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTM3NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjM3NjojZGVmaW5lIEFUSDEwS19VU0JfTUFYX0RJQUdfQ01EIChzaXplb2Yoc3RydWN0IGF0aDEwa191c2JfY3RybF9kaWFnX2NtZF93cml0ZSkpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzozNzc6I2RlZmluZSBBVEgxMEtfVVNCX01BWF9ESUFHX1JFU1AgKHNpemVvZihzdHJ1Y3QgYXRoMTBrX3VzYl9jdHJsX2RpYWdfcmVzcF9yZWFkKSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTM3OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjM3OTpzdGF0aWMgdm9pZCBhdGgxMGtfdXNiX2Rlc3Ryb3koc3RydWN0IGF0aDEwayAqYXIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0zODAte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MzgxOlxcdHN0cnVjdCBhdGgxMGtfdXNiICphcl91c2IgPSBhdGgxMGtfdXNiX3ByaXYoYXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMzgyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MzgzOlxcdGF0aDEwa191c2JfZmx1c2hfYWxsKGFyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjM4NDpcXHRhdGgxMGtfdXNiX2NsZWFudXBfcGlwZV9yZXNvdXJjZXMoYXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMzg1LVxcdHVzYl9zZXRfaW50ZmRhdGEoYXJfdXNiLVxcdTAwM2VpbnRlcmZhY2UsIE5VTEwpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0zOTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzozOTE6c3RhdGljIGludCBhdGgxMGtfdXNiX2hpZl9zdGFydChzdHJ1Y3QgYXRoMTBrICphcilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTM5Mi17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0zOTMtXFx0aW50IGk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzozOTQ6XFx0c3RydWN0IGF0aDEwa191c2IgKmFyX3VzYiA9IGF0aDEwa191c2JfcHJpdihhcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0zOTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0zOTYtXFx0YXRoMTBrX2NvcmVfbmFwaV9lbmFibGUoYXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6Mzk3OlxcdGF0aDEwa191c2Jfc3RhcnRfcmVjdl9waXBlcyhhcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0zOTgtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTQwOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjQwOTpzdGF0aWMgaW50IGF0aDEwa191c2JfaGlmX3R4X3NnKHN0cnVjdCBhdGgxMGsgKmFyLCB1OCBwaXBlX2lkLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNDEwLVxcdFxcdFxcdFxcdHN0cnVjdCBhdGgxMGtfaGlmX3NnX2l0ZW0gKml0ZW1zLCBpbnQgbl9pdGVtcylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTQxMS17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo0MTI6XFx0c3RydWN0IGF0aDEwa191c2IgKmFyX3VzYiA9IGF0aDEwa191c2JfcHJpdihhcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo0MTM6XFx0c3RydWN0IGF0aDEwa191c2JfcGlwZSAqcGlwZSA9IFxcdTAwMjZhcl91c2ItXFx1MDAzZXBpcGVzW3BpcGVfaWRdO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNDE0LVxcdHN0cnVjdCBhdGgxMGtfdXJiX2NvbnRleHQgKnVyYl9jb250ZXh0O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy00MTktXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIG5faXRlbXM7IGkrKykge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NDIwOlxcdFxcdHVyYl9jb250ZXh0ID0gYXRoMTBrX3VzYl9hbGxvY191cmJfZnJvbV9waXBlKHBpcGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNDIxLVxcdFxcdGlmICghdXJiX2NvbnRleHQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNDM5LVxcdFxcdFxcdFxcdCAgc2tiLVxcdTAwM2VsZW4sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo0NDA6XFx0XFx0XFx0XFx0ICBhdGgxMGtfdXNiX3RyYW5zbWl0X2NvbXBsZXRlLCB1cmJfY29udGV4dCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy00NDEtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTQ2My1lcnJfZnJlZV91cmJfdG9fcGlwZTpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjQ2NDpcXHRhdGgxMGtfdXNiX2ZyZWVfdXJiX3RvX3BpcGUodXJiX2NvbnRleHQtXFx1MDAzZXBpcGUsIHVyYl9jb250ZXh0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTQ2NS1lcnI6XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTQ2OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjQ2OTpzdGF0aWMgdm9pZCBhdGgxMGtfdXNiX2hpZl9zdG9wKHN0cnVjdCBhdGgxMGsgKmFyKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNDcwLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjQ3MTpcXHRhdGgxMGtfdXNiX2ZsdXNoX2FsbChhcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy00NzItXFx0YXRoMTBrX2NvcmVfbmFwaV9zeW5jX2Rpc2FibGUoYXIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy00NzQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo0NzU6c3RhdGljIHUxNiBhdGgxMGtfdXNiX2hpZl9nZXRfZnJlZV9xdWV1ZV9udW1iZXIoc3RydWN0IGF0aDEwayAqYXIsIHU4IHBpcGVfaWQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy00NzYte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NDc3OlxcdHN0cnVjdCBhdGgxMGtfdXNiICphcl91c2IgPSBhdGgxMGtfdXNiX3ByaXYoYXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNDc4LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy00ODEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo0ODI6c3RhdGljIGludCBhdGgxMGtfdXNiX3N1Ym1pdF9jdHJsX291dChzdHJ1Y3QgYXRoMTBrICphcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTQ4My1cXHRcXHRcXHRcXHQgICAgICB1OCByZXEsIHUxNiB2YWx1ZSwgdTE2IGluZGV4LCB2b2lkICpkYXRhLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy00ODUte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NDg2OlxcdHN0cnVjdCBhdGgxMGtfdXNiICphcl91c2IgPSBhdGgxMGtfdXNiX3ByaXYoYXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNDg3LVxcdHU4ICpidWYgPSBOVUxMO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy01MTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo1MTY6c3RhdGljIGludCBhdGgxMGtfdXNiX3N1Ym1pdF9jdHJsX2luKHN0cnVjdCBhdGgxMGsgKmFyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNTE3LVxcdFxcdFxcdFxcdCAgICAgdTggcmVxLCB1MTYgdmFsdWUsIHUxNiBpbmRleCwgdm9pZCAqZGF0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNTE5LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjUyMDpcXHRzdHJ1Y3QgYXRoMTBrX3VzYiAqYXJfdXNiID0gYXRoMTBrX3VzYl9wcml2KGFyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTUyMS1cXHR1OCAqYnVmID0gTlVMTDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNTUxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NTUyOnN0YXRpYyBpbnQgYXRoMTBrX3VzYl9jdHJsX21zZ19leGNoYW5nZShzdHJ1Y3QgYXRoMTBrICphcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTU1My1cXHRcXHRcXHRcXHRcXHR1OCByZXFfdmFsLCB1OCAqcmVxX2J1ZiwgdTMyIHJlcV9sZW4sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTU1OS1cXHQvKiBzZW5kIGNvbW1hbmQgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjU2MDpcXHRyZXQgPSBhdGgxMGtfdXNiX3N1Ym1pdF9jdHJsX291dChhciwgcmVxX3ZhbCwgMCwgMCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTU2MS1cXHRcXHRcXHRcXHRcXHQgcmVxX2J1ZiwgcmVxX2xlbik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTU2Ni1cXHRpZiAocmVzcF9idWYpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjU2NzpcXHRcXHRyZXQgPSBhdGgxMGtfdXNiX3N1Ym1pdF9jdHJsX2luKGFyLCByZXNwX3ZhbCwgMCwgMCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTU2OC1cXHRcXHRcXHRcXHRcXHRcXHRyZXNwX2J1ZiwgKnJlc3BfbGVuKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNTc3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NTc4OnN0YXRpYyBpbnQgYXRoMTBrX3VzYl9oaWZfZGlhZ19yZWFkKHN0cnVjdCBhdGgxMGsgKmFyLCB1MzIgYWRkcmVzcywgdm9pZCAqYnVmLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNTc5LVxcdFxcdFxcdFxcdCAgICBzaXplX3QgYnVmX2xlbilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTU4MC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo1ODE6XFx0c3RydWN0IGF0aDEwa191c2IgKmFyX3VzYiA9IGF0aDEwa191c2JfcHJpdihhcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo1ODI6XFx0c3RydWN0IGF0aDEwa191c2JfY3RybF9kaWFnX2NtZF9yZWFkICpjbWQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy01ODMtXFx0dTMyIHJlc3BfbGVuO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy01ODUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo1ODY6XFx0aWYgKGJ1Zl9sZW4gXFx1MDAzYyBzaXplb2Yoc3RydWN0IGF0aDEwa191c2JfY3RybF9kaWFnX3Jlc3BfcmVhZCkpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy01ODctXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy01ODgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo1ODk6XFx0Y21kID0gKHN0cnVjdCBhdGgxMGtfdXNiX2N0cmxfZGlhZ19jbWRfcmVhZCAqKWFyX3VzYi1cXHUwMDNlZGlhZ19jbWRfYnVmZmVyO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNTkwLVxcdG1lbXNldChjbWQsIDAsIHNpemVvZigqY21kKSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTU5Mi1cXHRjbWQtXFx1MDAzZWFkZHJlc3MgPSBjcHVfdG9fbGUzMihhZGRyZXNzKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjU5MzpcXHRyZXNwX2xlbiA9IHNpemVvZihzdHJ1Y3QgYXRoMTBrX3VzYl9jdHJsX2RpYWdfcmVzcF9yZWFkKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTU5NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjU5NTpcXHRyZXQgPSBhdGgxMGtfdXNiX2N0cmxfbXNnX2V4Y2hhbmdlKGFyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNTk2LVxcdFxcdFxcdFxcdFxcdCAgIEFUSDEwS19VU0JfQ09OVFJPTF9SRVFfRElBR19DTUQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTYwMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjYwNDpcXHRpZiAocmVzcF9sZW4gIT0gc2l6ZW9mKHN0cnVjdCBhdGgxMGtfdXNiX2N0cmxfZGlhZ19yZXNwX3JlYWQpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNjA1LVxcdFxcdHJldHVybiAtRU1TR1NJWkU7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTYwNy1cXHRtZW1jcHkoYnVmLCBhcl91c2ItXFx1MDAzZWRpYWdfcmVzcF9idWZmZXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo2MDg6XFx0ICAgICAgIHNpemVvZihzdHJ1Y3QgYXRoMTBrX3VzYl9jdHJsX2RpYWdfcmVzcF9yZWFkKSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy02MDktXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTYxMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjYxMzpzdGF0aWMgaW50IGF0aDEwa191c2JfaGlmX2RpYWdfd3JpdGUoc3RydWN0IGF0aDEwayAqYXIsIHUzMiBhZGRyZXNzLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNjE0LVxcdFxcdFxcdFxcdCAgICAgY29uc3Qgdm9pZCAqZGF0YSwgaW50IG5ieXRlcylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTYxNS17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo2MTY6XFx0c3RydWN0IGF0aDEwa191c2IgKmFyX3VzYiA9IGF0aDEwa191c2JfcHJpdihhcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo2MTc6XFx0c3RydWN0IGF0aDEwa191c2JfY3RybF9kaWFnX2NtZF93cml0ZSAqY21kO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNjE4LVxcdGludCByZXQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTYyMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjYyMzpcXHRjbWQgPSAoc3RydWN0IGF0aDEwa191c2JfY3RybF9kaWFnX2NtZF93cml0ZSAqKWFyX3VzYi1cXHUwMDNlZGlhZ19jbWRfYnVmZmVyO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNjI0LVxcdG1lbXNldChjbWQsIDAsIHNpemVvZigqY21kKSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTYyOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjYyOTpcXHRyZXQgPSBhdGgxMGtfdXNiX2N0cmxfbXNnX2V4Y2hhbmdlKGFyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNjMwLVxcdFxcdFxcdFxcdFxcdCAgIEFUSDEwS19VU0JfQ09OVFJPTF9SRVFfRElBR19DTUQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTYzOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjY0MDpzdGF0aWMgaW50IGF0aDEwa191c2JfYm1pX2V4Y2hhbmdlX21zZyhzdHJ1Y3QgYXRoMTBrICphcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTY0MS1cXHRcXHRcXHRcXHQgICAgICAgdm9pZCAqcmVxLCB1MzIgcmVxX2xlbixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNjQ2LVxcdGlmIChyZXEpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjY0NzpcXHRcXHRyZXQgPSBhdGgxMGtfdXNiX3N1Ym1pdF9jdHJsX291dChhcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTY0OC1cXHRcXHRcXHRcXHRcXHRcXHQgQVRIMTBLX1VTQl9DT05UUk9MX1JFUV9TRU5EX0JNSV9DTUQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTY1OC1cXHRpZiAocmVzcCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NjU5OlxcdFxcdHJldCA9IGF0aDEwa191c2Jfc3VibWl0X2N0cmxfaW4oYXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy02NjAtXFx0XFx0XFx0XFx0XFx0XFx0QVRIMTBLX1VTQl9DT05UUk9MX1JFUV9SRUNWX0JNSV9SRVNQLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy02NzItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo2NzM6c3RhdGljIHZvaWQgYXRoMTBrX3VzYl9oaWZfZ2V0X2RlZmF1bHRfcGlwZShzdHJ1Y3QgYXRoMTBrICphcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTY3NC1cXHRcXHRcXHRcXHRcXHQgICAgdTggKnVsX3BpcGUsIHU4ICpkbF9waXBlKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy02NzktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo2ODA6c3RhdGljIGludCBhdGgxMGtfdXNiX2hpZl9tYXBfc2VydmljZV90b19waXBlKHN0cnVjdCBhdGgxMGsgKmFyLCB1MTYgc3ZjX2lkLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNjgxLVxcdFxcdFxcdFxcdFxcdCAgICAgIHU4ICp1bF9waXBlLCB1OCAqZGxfcGlwZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNzAzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NzA0OnN0YXRpYyBpbnQgYXRoMTBrX3VzYl9oaWZfcG93ZXJfdXAoc3RydWN0IGF0aDEwayAqYXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy03MDUtXFx0XFx0XFx0XFx0ICAgZW51bSBhdGgxMGtfZmlybXdhcmVfbW9kZSBmd19tb2RlKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy03MDktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo3MTA6c3RhdGljIHZvaWQgYXRoMTBrX3VzYl9oaWZfcG93ZXJfZG93bihzdHJ1Y3QgYXRoMTBrICphcilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTcxMS17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo3MTI6XFx0YXRoMTBrX3VzYl9mbHVzaF9hbGwoYXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNzEzLX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNzE2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NzE3OnN0YXRpYyBpbnQgYXRoMTBrX3VzYl9oaWZfc3VzcGVuZChzdHJ1Y3QgYXRoMTBrICphcilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTcxOC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTcyMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjcyMjpzdGF0aWMgaW50IGF0aDEwa191c2JfaGlmX3Jlc3VtZShzdHJ1Y3QgYXRoMTBrICphcilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTcyMy17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTcyNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjcyODpzdGF0aWMgY29uc3Qgc3RydWN0IGF0aDEwa19oaWZfb3BzIGF0aDEwa191c2JfaGlmX29wcyA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjcyOTpcXHQudHhfc2dcXHRcXHRcXHQ9IGF0aDEwa191c2JfaGlmX3R4X3NnLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NzMwOlxcdC5kaWFnX3JlYWRcXHRcXHQ9IGF0aDEwa191c2JfaGlmX2RpYWdfcmVhZCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjczMTpcXHQuZGlhZ193cml0ZVxcdFxcdD0gYXRoMTBrX3VzYl9oaWZfZGlhZ193cml0ZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjczMjpcXHQuZXhjaGFuZ2VfYm1pX21zZ1xcdD0gYXRoMTBrX3VzYl9ibWlfZXhjaGFuZ2VfbXNnLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NzMzOlxcdC5zdGFydFxcdFxcdFxcdD0gYXRoMTBrX3VzYl9oaWZfc3RhcnQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo3MzQ6XFx0LnN0b3BcXHRcXHRcXHQ9IGF0aDEwa191c2JfaGlmX3N0b3AsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo3MzU6XFx0Lm1hcF9zZXJ2aWNlX3RvX3BpcGVcXHQ9IGF0aDEwa191c2JfaGlmX21hcF9zZXJ2aWNlX3RvX3BpcGUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo3MzY6XFx0LmdldF9kZWZhdWx0X3BpcGVcXHQ9IGF0aDEwa191c2JfaGlmX2dldF9kZWZhdWx0X3BpcGUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo3Mzc6XFx0LmdldF9mcmVlX3F1ZXVlX251bWJlclxcdD0gYXRoMTBrX3VzYl9oaWZfZ2V0X2ZyZWVfcXVldWVfbnVtYmVyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NzM4OlxcdC5wb3dlcl91cFxcdFxcdD0gYXRoMTBrX3VzYl9oaWZfcG93ZXJfdXAsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo3Mzk6XFx0LnBvd2VyX2Rvd25cXHRcXHQ9IGF0aDEwa191c2JfaGlmX3Bvd2VyX2Rvd24sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy03NDAtI2lmZGVmIENPTkZJR19QTVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NzQxOlxcdC5zdXNwZW5kXFx0XFx0PSBhdGgxMGtfdXNiX2hpZl9zdXNwZW5kLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NzQyOlxcdC5yZXN1bWVcXHRcXHRcXHQ9IGF0aDEwa191c2JfaGlmX3Jlc3VtZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTc0My0jZW5kaWZcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNzQ1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NzQ2OnN0YXRpYyB1OCBhdGgxMGtfdXNiX2dldF9sb2dpY2FsX3BpcGVfbnVtKHU4IGVwX2FkZHJlc3MsIGludCAqdXJiX2NvdW50KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNzQ3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNzkwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NzkxOnN0YXRpYyBpbnQgYXRoMTBrX3VzYl9hbGxvY19waXBlX3Jlc291cmNlcyhzdHJ1Y3QgYXRoMTBrICphcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjc5MjpcXHRcXHRcXHRcXHRcXHQgICBzdHJ1Y3QgYXRoMTBrX3VzYl9waXBlICpwaXBlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNzkzLVxcdFxcdFxcdFxcdFxcdCAgIGludCB1cmJfY250KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy04MTEtXFx0XFx0cGlwZS1cXHUwMDNldXJiX2FsbG9jKys7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo4MTI6XFx0XFx0YXRoMTBrX3VzYl9mcmVlX3VyYl90b19waXBlKHBpcGUsIHVyYl9jb250ZXh0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTgxMy1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTgyMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjgyMzpzdGF0aWMgaW50IGF0aDEwa191c2Jfc2V0dXBfcGlwZV9yZXNvdXJjZXMoc3RydWN0IGF0aDEwayAqYXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy04MjQtXFx0XFx0XFx0XFx0XFx0ICAgc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGVyZmFjZSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTgyNS17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo4MjY6XFx0c3RydWN0IGF0aDEwa191c2IgKmFyX3VzYiA9IGF0aDEwa191c2JfcHJpdihhcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy04MjctXFx0c3RydWN0IHVzYl9ob3N0X2ludGVyZmFjZSAqaWZhY2VfZGVzYyA9IGludGVyZmFjZS1cXHUwMDNlY3VyX2FsdHNldHRpbmc7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy04MjgtXFx0c3RydWN0IHVzYl9lbmRwb2ludF9kZXNjcmlwdG9yICplbmRwb2ludDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjgyOTpcXHRzdHJ1Y3QgYXRoMTBrX3VzYl9waXBlICpwaXBlO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtODMwLVxcdGludCByZXQsIGksIHVyYmNvdW50O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy04NzEtXFx0XFx0cGlwZV9udW0gPVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6ODcyOlxcdFxcdCAgICBhdGgxMGtfdXNiX2dldF9sb2dpY2FsX3BpcGVfbnVtKGVuZHBvaW50LVxcdTAwM2ViRW5kcG9pbnRBZGRyZXNzLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtODczLVxcdFxcdFxcdFxcdFxcdFxcdCAgICBcXHUwMDI2dXJiY291bnQpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy05MjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo5MjU6XFx0XFx0cmV0ID0gYXRoMTBrX3VzYl9hbGxvY19waXBlX3Jlc291cmNlcyhhciwgcGlwZSwgdXJiY291bnQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtOTI2LVxcdFxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTkzMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjkzMzpzdGF0aWMgaW50IGF0aDEwa191c2JfY3JlYXRlKHN0cnVjdCBhdGgxMGsgKmFyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtOTM0LVxcdFxcdFxcdCAgICAgc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGVyZmFjZSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTkzNS17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo5MzY6XFx0c3RydWN0IGF0aDEwa191c2IgKmFyX3VzYiA9IGF0aDEwa191c2JfcHJpdihhcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy05MzctXFx0c3RydWN0IHVzYl9kZXZpY2UgKmRldiA9IGludGVyZmFjZV90b191c2JkZXYoaW50ZXJmYWNlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjkzODpcXHRzdHJ1Y3QgYXRoMTBrX3VzYl9waXBlICpwaXBlO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtOTM5LVxcdGludCByZXQsIGk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTk0OC1cXHRcXHRJTklUX1dPUksoXFx1MDAyNnBpcGUtXFx1MDAzZWlvX2NvbXBsZXRlX3dvcmssXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo5NDk6XFx0XFx0XFx0ICBhdGgxMGtfdXNiX2lvX2NvbXBfd29yayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy05NTAtXFx0XFx0c2tiX3F1ZXVlX2hlYWRfaW5pdChcXHUwMDI2cGlwZS1cXHUwMDNlaW9fY29tcF9xdWV1ZSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTk2NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjk2NjpcXHRyZXQgPSBhdGgxMGtfdXNiX3NldHVwX3BpcGVfcmVzb3VyY2VzKGFyLCBpbnRlcmZhY2UpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtOTY3LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTk3Mi1lcnI6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo5NzM6XFx0YXRoMTBrX3VzYl9kZXN0cm95KGFyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTk3NC1cXHRyZXR1cm4gcmV0O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy05NzYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo5Nzc6c3RhdGljIGludCBhdGgxMGtfdXNiX25hcGlfcG9sbChzdHJ1Y3QgbmFwaV9zdHJ1Y3QgKmN0eCwgaW50IGJ1ZGdldClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTk3OC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTk5MS0vKiBhdGgxMGsgdXNiIGRyaXZlciByZWdpc3RlcmVkIGZ1bmN0aW9ucyAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6OTkyOnN0YXRpYyBpbnQgYXRoMTBrX3VzYl9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZXJmYWNlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtOTkzLVxcdFxcdFxcdCAgICBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqaWQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTk5NS1cXHRzdHJ1Y3QgYXRoMTBrICphcjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjk5NjpcXHRzdHJ1Y3QgYXRoMTBrX3VzYiAqYXJfdXNiO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtOTk3LVxcdHN0cnVjdCB1c2JfZGV2aWNlICpkZXYgPSBpbnRlcmZhY2VfdG9fdXNiZGV2KGludGVyZmFjZSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTEwMTAtXFx0YXIgPSBhdGgxMGtfY29yZV9jcmVhdGUoc2l6ZW9mKCphcl91c2IpLCBcXHUwMDI2ZGV2LVxcdTAwM2VkZXYsIEFUSDEwS19CVVNfVVNCLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTAxMTpcXHRcXHRcXHRcXHRod19yZXYsIFxcdTAwMjZhdGgxMGtfdXNiX2hpZl9vcHMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTAxMi1cXHRpZiAoIWFyKSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTEwMTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMDE3OlxcdG5ldGlmX25hcGlfYWRkKGFyLVxcdTAwM2VuYXBpX2RldiwgXFx1MDAyNmFyLVxcdTAwM2VuYXBpLCBhdGgxMGtfdXNiX25hcGlfcG9sbCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMDE4LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMDI1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTAyNjpcXHRhcl91c2IgPSBhdGgxMGtfdXNiX3ByaXYoYXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTAyNzpcXHRyZXQgPSBhdGgxMGtfdXNiX2NyZWF0ZShhciwgaW50ZXJmYWNlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTEwMjgtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTA1MS1lcnJfdXNiX2Rlc3Ryb3k6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMDUyOlxcdGF0aDEwa191c2JfZGVzdHJveShhcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMDUzLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMDU5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTA2MDpzdGF0aWMgdm9pZCBhdGgxMGtfdXNiX2Rpc2Nvbm5lY3Qoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGVyZmFjZSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTEwNjEte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTA2MjpcXHRzdHJ1Y3QgYXRoMTBrX3VzYiAqYXJfdXNiO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTA2My1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTA2OS1cXHRuZXRpZl9uYXBpX2RlbChcXHUwMDI2YXJfdXNiLVxcdTAwM2Vhci1cXHUwMDNlbmFwaSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMDcwOlxcdGF0aDEwa191c2JfZGVzdHJveShhcl91c2ItXFx1MDAzZWFyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTEwNzEtXFx0YXRoMTBrX2NvcmVfZGVzdHJveShhcl91c2ItXFx1MDAzZWFyKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTA3NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjEwNzY6c3RhdGljIGludCBhdGgxMGtfdXNiX3BtX3N1c3BlbmQoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGVyZmFjZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTEwNzctXFx0XFx0XFx0XFx0IHBtX21lc3NhZ2VfdCBtZXNzYWdlKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTA3OC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMDc5OlxcdHN0cnVjdCBhdGgxMGtfdXNiICphcl91c2IgPSB1c2JfZ2V0X2ludGZkYXRhKGludGVyZmFjZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMDgwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTA4MTpcXHRhdGgxMGtfdXNiX2ZsdXNoX2FsbChhcl91c2ItXFx1MDAzZWFyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTEwODItXFx0cmV0dXJuIDA7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTEwODQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMDg1OnN0YXRpYyBpbnQgYXRoMTBrX3VzYl9wbV9yZXN1bWUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGVyZmFjZSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTEwODYte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTA4NzpcXHRzdHJ1Y3QgYXRoMTBrX3VzYiAqYXJfdXNiID0gdXNiX2dldF9pbnRmZGF0YShpbnRlcmZhY2UpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTA4OC1cXHRzdHJ1Y3QgYXRoMTBrICphciA9IGFyX3VzYi1cXHUwMDNlYXI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMDg5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTA5MDpcXHRhdGgxMGtfdXNiX3Bvc3RfcmVjdl90cmFuc2ZlcnMoYXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMDkxLVxcdFxcdFxcdFxcdCAgICAgICBcXHUwMDI2YXJfdXNiLVxcdTAwM2VwaXBlc1tBVEgxMEtfVVNCX1BJUEVfUlhfREFUQV0pO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMDk3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTA5ODojZGVmaW5lIGF0aDEwa191c2JfcG1fc3VzcGVuZCBOVUxMXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMDk5OiNkZWZpbmUgYXRoMTBrX3VzYl9wbV9yZXN1bWUgTlVMTFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTEwMC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTEwMy0vKiB0YWJsZSBvZiBkZXZpY2VzIHRoYXQgd29yayB3aXRoIHRoaXMgZHJpdmVyICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMTA0OnN0YXRpYyBzdHJ1Y3QgdXNiX2RldmljZV9pZCBhdGgxMGtfdXNiX2lkc1tdID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTEwNS1cXHR7VVNCX0RFVklDRSgweDEzYjEsIDB4MDA0Mil9LCAvKiBMaW5rc3lzIFdVU0I2MTAwTSAqL1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMTA4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTEwOTpNT0RVTEVfREVWSUNFX1RBQkxFKHVzYiwgYXRoMTBrX3VzYl9pZHMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTExMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjExMTE6c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIGF0aDEwa191c2JfZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTExMjpcXHQubmFtZSA9IFxcXCJhdGgxMGtfdXNiXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjExMTM6XFx0LnByb2JlID0gYXRoMTBrX3VzYl9wcm9iZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjExMTQ6XFx0LnN1c3BlbmQgPSBhdGgxMGtfdXNiX3BtX3N1c3BlbmQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMTE1OlxcdC5yZXN1bWUgPSBhdGgxMGtfdXNiX3BtX3Jlc3VtZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjExMTY6XFx0LmRpc2Nvbm5lY3QgPSBhdGgxMGtfdXNiX2Rpc2Nvbm5lY3QsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMTE3OlxcdC5pZF90YWJsZSA9IGF0aDEwa191c2JfaWRzLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTExOC1cXHQuc3VwcG9ydHNfYXV0b3N1c3BlbmQgPSB0cnVlLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMTIxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTEyMjptb2R1bGVfdXNiX2RyaXZlcihhdGgxMGtfdXNiX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMTIzLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaC00My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5oOjQ0OnN0cnVjdCBhdGgxMGtfdXNiX2N0cmxfZGlhZ19jbWRfd3JpdGUge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmgtNDUtXFx0X19sZTMyIGNtZDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmgtNTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaDo1MTpzdHJ1Y3QgYXRoMTBrX3VzYl9jdHJsX2RpYWdfY21kX3JlYWQge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmgtNTItXFx0X19sZTMyIGNtZDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmgtNTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaDo1NjpzdHJ1Y3QgYXRoMTBrX3VzYl9jdHJsX2RpYWdfcmVzcF9yZWFkIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5oLTU3LVxcdHU4IHZhbHVlWzRdO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaC02MC0vKiB0eC9yeCBwaXBlcyBmb3IgdXNiICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaDo2MTplbnVtIGF0aDEwa191c2JfcGlwZV9pZCB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaC02Mi1cXHRBVEgxMEtfVVNCX1BJUEVfVFhfQ1RSTCA9IDAsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5oLTcyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmg6NzM6c3RydWN0IGF0aDEwa191c2JfcGlwZSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaC03NC1cXHRzdHJ1Y3QgbGlzdF9oZWFkIHVyYl9saXN0X2hlYWQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5oLTgyLVxcdHU4IGxvZ2ljYWxfcGlwZV9udW07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaDo4MzpcXHRzdHJ1Y3QgYXRoMTBrX3VzYiAqYXJfdXNiO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmgtODQtXFx0dTE2IG1heF9wYWNrZXRfc2l6ZTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmgtOTItLyogdXNiIGRldmljZSBvYmplY3QgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5oOjkzOnN0cnVjdCBhdGgxMGtfdXNiIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5oLTk0LVxcdC8qIHByb3RlY3RzIHBpcGUtXFx1MDAzZXVyYl9saXN0X2hlYWQgYW5kICBwaXBlLVxcdTAwM2V1cmJfY250ICovXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5oLTk4LVxcdHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRlcmZhY2U7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaDo5OTpcXHRzdHJ1Y3QgYXRoMTBrX3VzYl9waXBlIHBpcGVzW0FUSDEwS19VU0JfUElQRV9NQVhdO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmgtMTAwLVxcdHU4ICpkaWFnX2NtZF9idWZmZXI7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5oPTEwNj1zdHJ1Y3QgYXRoMTBrX3VyYl9jb250ZXh0IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5oLTEwNy1cXHRzdHJ1Y3QgbGlzdF9oZWFkIGxpbms7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaDoxMDg6XFx0c3RydWN0IGF0aDEwa191c2JfcGlwZSAqcGlwZTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5oLTEwOS1cXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaC0xMTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaDoxMTM6c3RhdGljIGlubGluZSBzdHJ1Y3QgYXRoMTBrX3VzYiAqYXRoMTBrX3VzYl9wcml2KHN0cnVjdCBhdGgxMGsgKmFyKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmgtMTE0LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5oOjExNTpcXHRyZXR1cm4gKHN0cnVjdCBhdGgxMGtfdXNiICopYXItXFx1MDAzZWRydl9wcml2O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmgtMTE2LX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMDA6MTQ6MTEuODcyMDk1MjgzWiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU0MDM5MDQyNTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqREZTIFZ1bG5lcmFiaWxpdHkgUmVzZWFyY2ggaW4gYGF0aDEwa191c2JgKipcblxuQWxyaWdodCwgc28gSSdtIGRpZ2dpbmcgaW50byBgYXRoMTBrX3VzYmAuIFRoZSBpbW1lZGlhdGUgdGhvdWdodCBpcywgY2FuIHdlIGZ1enogdGhpcyB0aGluZyB2aWEgVVNCIGVtdWxhdGlvbj8gU3l6a2FsbGVyJ3MgVVNCIGZ1enplciBzZWVtcyBsaWtlIGEgcGVyZmVjdCBzdGFydGluZyBwb2ludC4gQnV0IHdhaXQsIGJlZm9yZSBJIGRpdmUgaW50byBmdXp6aW5nLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgYXR0YWNrIHN1cmZhY2UuIFNwZWNpZmljYWxseSwgZG9lcyBgYXRoMTBrX3VzYmAgZXZlbiAqc3VwcG9ydCogREZTIChEeW5hbWljIEZyZXF1ZW5jeSBTZWxlY3Rpb24pP1xuXG5MZXQgbWUgZG91YmxlLWNoZWNrIHRoZSBgYXRoMTBrX21hY19yZWdpc3RlcmAgZnVuY3Rpb24gYWdhaW4uIEFoLCBoZXJlIGl0IGlzOiBgYXItXHUwMDNlZGZzX2RldGVjdG9yID0gZGZzX3BhdHRlcm5fZGV0ZWN0b3JfaW5pdChcdTAwMjZhci1cdTAwM2VhdGhfY29tbW9uLCBOTDgwMjExX0RGU19VTlNFVCk7YC4gVGhpcyBpcyB1bmNvbmRpdGlvbmFsbHkgaW5pdGlhbGl6ZWQgZm9yICphbGwqIGBhdGgxMGtgIGRldmljZXMsIGluY2x1ZGluZyBVU0IuIE9rYXksIHRoYXQncyBwcm9taXNpbmchXG5cbk5vdywgdGhlIGNydWNpYWwgcXVlc3Rpb246IEhvdyBpcyBERlMgZnVuY3Rpb25hbGl0eSB0cmlnZ2VyZWQ/IEkgcmVjYWxsIGBhdGgxMGtfZGZzX3JhZGFyX3JlcG9ydGAgZ2V0cyBjYWxsZWQgZnJvbSBgYXRoMTBrX3dtaV9ldmVudF9kZnNgLiBUaGUgcXVlc3Rpb24gbm93IGJlY29tZXM6IGlzIGBhdGgxMGtfd21pX2V2ZW50X2Rmc2AgcmVhY2hhYmxlIHZpYSB0aGUgVVNCIGludGVyZmFjZT8gVGhlIFdNSSBldmVudHMsIEknbSBwcmV0dHkgc3VyZSB0aG9zZSBhcmUgdGhlIG1lc3NhZ2VzIHBhc3NlZCB0aHJvdWdoIHRoZSBVU0IgaW50ZXJmYWNlISBMZXQncyBzZWUuLi4gWWVwLCBsb29rcyBsaWtlIFdNSSBldmVudHMgYXJlIGluZGVlZCByZWNlaXZlZCBvdmVyIFVTQi4gVGhlIHBhdGggc2VlbXMgdG8gYmUgYGF0aDEwa191c2JfcnhfY29tcGxldGVgIC1cdTAwM2UgYGF0aDEwa19odGNfcnhfY29tcGxldGlvbl9oYW5kbGVyYCAtXHUwMDNlIGBhdGgxMGtfd21pX2V2ZW50X2Rmc2AuIFJpZ2h0LiBUaW1lIHRvIHZlcmlmeSB0aGF0IGVudGlyZSBwYXRoIGFuZCBjb25maXJtIHRoZSBhc3N1bXB0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjk0MDksIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMzMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMDA6MTQ6MTcuMjc2MDAzMjc5WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTUxMTgyMTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYXRoMTBrX3dtaV9ldmVudF9kZnNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway93bWkuYz00MTY5PXN0YXRpYyBpbnQgYXRoMTBrX2Rmc19mZnRfcmVwb3J0KHN0cnVjdCBhdGgxMGsgKmFyLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway93bWkuYy00MjA2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvd21pLmM6NDIwNzp2b2lkIGF0aDEwa193bWlfZXZlbnRfZGZzKHN0cnVjdCBhdGgxMGsgKmFyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvd21pLmMtNDIwOC1cXHRcXHRcXHQgIHN0cnVjdCB3bWlfcGh5ZXJyX2V2X2FyZyAqcGh5ZXJyLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway93bWkuYz00NDQ3PXZvaWQgYXRoMTBrX3dtaV9ldmVudF9waHllcnIoc3RydWN0IGF0aDEwayAqYXIsIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3dtaS5jLTQ0OTgtXFx0XFx0Y2FzZSBQSFlfRVJST1JfUkFEQVI6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway93bWkuYzo0NDk5OlxcdFxcdFxcdGF0aDEwa193bWlfZXZlbnRfZGZzKGFyLCBcXHUwMDI2cGh5ZXJyX2FyZywgdHNmKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3dtaS5jLTQ1MDAtXFx0XFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3dtaS5jLTQ1MDQtXFx0XFx0Y2FzZSBQSFlfRVJST1JfRkFMU0VfUkFEQVJfRVhUOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvd21pLmM6NDUwNTpcXHRcXHRcXHRhdGgxMGtfd21pX2V2ZW50X2RmcyhhciwgXFx1MDAyNnBoeWVycl9hcmcsIHRzZik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway93bWkuYy00NTA2LVxcdFxcdFxcdGF0aDEwa193bWlfZXZlbnRfc3BlY3RyYWxfc2NhbihhciwgXFx1MDAyNnBoeWVycl9hcmcsIHRzZik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3dtaS5jPTQ1MzA9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3dtaS5jOjQ1MzE6YXRoMTBrX3dtaV9ldmVudF9kZnNfc3RhdHVzX2NoZWNrKHN0cnVjdCBhdGgxMGsgKmFyLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvd21pLmMtNDUzMi17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3dtaS5jPTYyODM9c3RhdGljIHZvaWQgYXRoMTBrX3dtaV8xMF80X29wX3J4KHN0cnVjdCBhdGgxMGsgKmFyLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway93bWkuYy02Mzg4LVxcdGNhc2UgV01JXzEwXzRfREZTX1NUQVRVU19DSEVDS19FVkVOVElEOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvd21pLmM6NjM4OTpcXHRcXHRhdGgxMGtfd21pX2V2ZW50X2Rmc19zdGF0dXNfY2hlY2soYXIsIHNrYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway93bWkuYy02MzkwLVxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway93bWkuaD03NDkwPXZvaWQgYXRoMTBrX3dtaV9ldmVudF90YnR0b2Zmc2V0X3VwZGF0ZShzdHJ1Y3QgYXRoMTBrICphciwgc3RydWN0IHNrX2J1ZmYgKnNrYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway93bWkuaDo3NDkxOnZvaWQgYXRoMTBrX3dtaV9ldmVudF9kZnMoc3RydWN0IGF0aDEwayAqYXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway93bWkuaC03NDkyLVxcdFxcdFxcdCAgc3RydWN0IHdtaV9waHllcnJfZXZfYXJnICpwaHllcnIsIHU2NCB0c2YpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQwMDoxNDoxNy40NzExMzM1NloiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTgzMzEwODg3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IExpbmUgb2YgUmVhc29uaW5nKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBgYXRoMTBrX3dtaV9ldmVudF9waHllcnJgIGlzIHRoZSBzdGFydGluZyBwb2ludC4gSXQgc2VlbXMgdGhhdCB0aGlzIGV2ZW50IGhhbmRsZXIgY2FsbHMgYGF0aDEwa193bWlfZXZlbnRfZGZzYCwgd2hpY2ggdGhlbiBsZWFkcyB0byBgYXRoMTBrX2Rmc19yYWRhcl9yZXBvcnRgLiBBbmQgZmluYWxseSwgdGhhdCBmdW5jdGlvbiBpcyBjYWxsaW5nIGBhci1cdTAwM2VkZnNfZGV0ZWN0b3ItXHUwMDNlYWRkX3B1bHNlYC4gSW50ZXJlc3RpbmcsIHZlcnkgaW50ZXJlc3RpbmcuIEl0J3MgYmVjb21pbmcgY2xlYXIgdGhhdCB3ZSBtaWdodCBiZSBhYmxlIHRvIHJlYWNoIGNvZGUgaW4gYGRmc19wcmlfZGV0ZWN0b3IuY2AgdGhyb3VnaCBVU0IgZnV6emluZyBvZiBgYXRoMTBrX3VzYmAuXG5cbkJ1dCwgaG9sZCBvbiBhIHNlY29uZC4gSSBuZWVkIHRvIGJlIHN1cmUgYWJvdXQgYSBkZXBlbmRlbmN5LCBlc3BlY2lhbGx5IHNpbmNlIHRoaXMgaXMgcmVsYXRlZCB0byBERlMuIElzIGBDT05GSUdfQVRIMTBLX0RGU19DRVJUSUZJRURgIGEgcHJlcmVxdWlzaXRlIGhlcmU/IEknbSBnb2luZyB0byBxdWlja2x5IGNoZWNrIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWdgIHRvIGNvbmZpcm0gd2hldGhlciBvciBub3QgdGhpcyBpcyB0aGUgY2FzZSBiZWZvcmUgSSBnbyBhbnkgZnVydGhlciBkb3duIHRoaXMgcGF0aC4gSSBuZWVkIHRvIGJlIHN1cmUgdGhpcyBwYXRoIGlzIGFjdHVhbGx5IHJlYWNoYWJsZSB3aXRoIHRoaXMgc2V0IHVwLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMDk0OSwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQwMDoxNDoyMS40NTQ0NDc4NTZaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI3OTAzMTg3MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJBVEgxMEtfREZTX0NFUlRJRklFRFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWc9ODY9Y29uZmlnIEFUSDEwS19UUkFDSU5HXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWctOTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9LY29uZmlnOjkzOmNvbmZpZyBBVEgxMEtfREZTX0NFUlRJRklFRFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZy05NC1cXHRib29sIFxcXCJBdGhlcm9zIERGUyBzdXBwb3J0IGZvciBjZXJ0aWZpZWQgcGxhdGZvcm1zXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9kZWJ1Zy5jPTQyPXZvaWQgYXRoMTBrX2RlYnVnX3ByaW50X2h3ZndfaW5mbyhzdHJ1Y3QgYXRoMTBrICphcilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvZGVidWcuYy01OS1cXHRcXHQgICAgSVNfRU5BQkxFRChDT05GSUdfQVRIMTBLX1RSQUNJTkcpLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvZGVidWcuYzo2MDpcXHRcXHQgICAgSVNfRU5BQkxFRChDT05GSUdfQVRIMTBLX0RGU19DRVJUSUZJRUQpLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvZGVidWcuYy02MS1cXHRcXHQgICAgSVNfRU5BQkxFRChDT05GSUdfTkw4MDIxMV9URVNUTU9ERSkpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9kZWJ1Zy5jPTI1MjQ9aW50IGF0aDEwa19kZWJ1Z19yZWdpc3RlcihzdHJ1Y3QgYXRoMTBrICphcilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvZGVidWcuYy0yNTg1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvZGVidWcuYzoyNTg2OlxcdGlmIChJU19FTkFCTEVEKENPTkZJR19BVEgxMEtfREZTX0NFUlRJRklFRCkpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2RlYnVnLmMtMjU4Ny1cXHRcXHRkZWJ1Z2ZzX2NyZWF0ZV9maWxlKFxcXCJkZnNfc2ltdWxhdGVfcmFkYXJcXFwiLCAwMjAwLCBhci1cXHUwMDNlZGVidWcuZGVidWdmc19waHksXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jPTM1MTA9c3RhdGljIHZvaWQgYXRoMTBrX3JlZ2RfdXBkYXRlKHN0cnVjdCBhdGgxMGsgKmFyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYy0zNTI0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmM6MzUyNTpcXHRpZiAoSVNfRU5BQkxFRChDT05GSUdfQVRIMTBLX0RGU19DRVJUSUZJRUQpIFxcdTAwMjZcXHUwMDI2IGFyLVxcdTAwM2VkZnNfZGV0ZWN0b3IpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jLTM1MjYtXFx0XFx0bmxfZGZzX3JlZyA9IGFyLVxcdTAwM2VkZnNfZGV0ZWN0b3ItXFx1MDAzZXJlZ2lvbjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmM9MzU2MT1zdGF0aWMgdm9pZCBhdGgxMGtfcmVnX25vdGlmaWVyKHN0cnVjdCB3aXBoeSAqd2lwaHksXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jLTM1NjktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYzozNTcwOlxcdGlmIChJU19FTkFCTEVEKENPTkZJR19BVEgxMEtfREZTX0NFUlRJRklFRCkgXFx1MDAyNlxcdTAwMjYgYXItXFx1MDAzZWRmc19kZXRlY3Rvcikge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmMtMzU3MS1cXHRcXHRhdGgxMGtfZGJnKGFyLCBBVEgxMEtfREJHX1JFR1VMQVRPUlksIFxcXCJkZnMgcmVnaW9uIDB4JXhcXFxcblxcXCIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jPTk2Nzc9c3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfaWZhY2VfY29tYmluYXRpb24gYXRoMTBrXzEweF9pZl9jb21iW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jLTk2ODQtXFx0XFx0LmJlYWNvbl9pbnRfbWluX2djZCA9IDEsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYzo5Njg1OiNpZmRlZiBDT05GSUdfQVRIMTBLX0RGU19DRVJUSUZJRURcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jLTk2ODYtXFx0XFx0LnJhZGFyX2RldGVjdF93aWR0aHMgPVxcdEJJVChOTDgwMjExX0NIQU5fV0lEVEhfMjBfTk9IVCkgfFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYz05ODAxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX2lmYWNlX2NvbWJpbmF0aW9uIGF0aDEwa18xMF80X2lmX2NvbWJbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmMtOTgwOC1cXHRcXHQuYmVhY29uX2ludF9taW5fZ2NkID0gMSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jOjk4MDk6I2lmZGVmIENPTkZJR19BVEgxMEtfREZTX0NFUlRJRklFRFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmMtOTgxMC1cXHRcXHQucmFkYXJfZGV0ZWN0X3dpZHRocyA9XFx0QklUKE5MODAyMTFfQ0hBTl9XSURUSF8yMF9OT0hUKSB8XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jPTk4MjE9aWVlZTgwMjExX2lmYWNlX2NvbWJpbmF0aW9uIGF0aDEwa18xMF80X2Jjbl9pbnRfaWZfY29tYltdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYy05ODI4LVxcdFxcdC5iZWFjb25faW50X21pbl9nY2QgPSAxMDAsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYzo5ODI5OiNpZmRlZiBDT05GSUdfQVRIMTBLX0RGU19DRVJUSUZJRURcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jLTk4MzAtXFx0XFx0LnJhZGFyX2RldGVjdF93aWR0aHMgPSAgQklUKE5MODAyMTFfQ0hBTl9XSURUSF8yMF9OT0hUKSB8XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jPTk5NzE9aW50IGF0aDEwa19tYWNfcmVnaXN0ZXIoc3RydWN0IGF0aDEwayAqYXIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jLTEwMjgyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmM6MTAyODM6XFx0aWYgKElTX0VOQUJMRUQoQ09ORklHX0FUSDEwS19ERlNfQ0VSVElGSUVEKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmMtMTAyODQtXFx0XFx0LyogSW5pdCBhdGggZGZzIHBhdHRlcm4gZGV0ZWN0b3IgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmMtMTAzNTctZXJyX2Rmc19kZXRlY3Rvcl9leGl0OlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmM6MTAzNTg6XFx0aWYgKElTX0VOQUJMRUQoQ09ORklHX0FUSDEwS19ERlNfQ0VSVElGSUVEKSBcXHUwMDI2XFx1MDAyNiBhci1cXHUwMDNlZGZzX2RldGVjdG9yKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmMtMTAzNTktXFx0XFx0YXItXFx1MDAzZWRmc19kZXRlY3Rvci1cXHUwMDNlZXhpdChhci1cXHUwMDNlZGZzX2RldGVjdG9yKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmM9MTAzNjk9dm9pZCBhdGgxMGtfbWFjX3VucmVnaXN0ZXIoc3RydWN0IGF0aDEwayAqYXIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jLTEwMzcyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmM6MTAzNzM6XFx0aWYgKElTX0VOQUJMRUQoQ09ORklHX0FUSDEwS19ERlNfQ0VSVElGSUVEKSBcXHUwMDI2XFx1MDAyNiBhci1cXHUwMDNlZGZzX2RldGVjdG9yKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmMtMTAzNzQtXFx0XFx0YXItXFx1MDAzZWRmc19kZXRlY3Rvci1cXHUwMDNlZXhpdChhci1cXHUwMDNlZGZzX2RldGVjdG9yKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvd21pLmM9NDIwNz12b2lkIGF0aDEwa193bWlfZXZlbnRfZGZzKHN0cnVjdCBhdGgxMGsgKmFyLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway93bWkuYy00MjIzLVxcdC8qIFNraXAgZXZlbnQgaWYgREZTIGRpc2FibGVkICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway93bWkuYzo0MjI0OlxcdGlmICghSVNfRU5BQkxFRChDT05GSUdfQVRIMTBLX0RGU19DRVJUSUZJRUQpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvd21pLmMtNDIyNS1cXHRcXHRyZXR1cm47XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDAwOjE0OjIxLjczMzQ4NTQ0OVoiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NjEyMDM1NDU4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkRGUyBTdXBwb3J0IGZvciBBdGhlcm9zIFVTQiBEcml2ZXJzKipcblxuT2theSwgc28gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGUgdXNlciBoYXMgYENPTkZJR19BVEgxMEtfREZTX0NFUlRJRklFRGAgZW5hYmxlZCwgdGhhdCdzIGNsZWFyLiBBbmQgb2YgY291cnNlLCBpZiB0aGV5J3JlIHVzaW5nIFVTQiwgd2UnbGwgbmVlZCBgQ09ORklHX0FUSDEwS19VU0JgIGFzIHdlbGwuIEJ1dCB3YWl0IGEgbWludXRlLi4uIGFyZW4ndCB0aGVyZSBvdGhlciBBdGhlcm9zIFVTQiBkcml2ZXJzPyBTcGVjaWZpY2FsbHksIGBhdGg5a19odGNgLiBJIG5lZWQgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluIGlmIHRoYXQgZHJpdmVyIGNhbiBoYW5kbGUgREZTLiBJdCdzIGNydWNpYWwgZm9yIHRoZSB1c2VyJ3Mgc2V0dXAuXG5cbkkgaGF2ZSBhIG5hZ2dpbmcgZmVlbGluZyBJIGxvb2tlZCBpbnRvIHRoaXMgYmVmb3JlLiBJICp0aGluayogSSBncmVwcGVkIGZvciBgYXRoOWtfZGZzX3Byb2Nlc3NfcGh5ZXJyYCB3aXRoaW4gdGhlIGBhdGg5ay9odGNgIGRpcmVjdG9yeSBwcmV2aW91c2x5LCBhbmQgSSBkaWRuJ3QgZ2V0IGFueSBoaXRzLiBCdXQgSSBuZWVkIHRvIGRvdWJsZS1jaGVjayBteSB3b3JrLiBJIG5lZWQgdG8gYmUgMTAwJSBzdXJlIGlmIGBhdGg5a19odGNgIGFjdHVhbGx5IHN1cHBvcnRzIERGUy4gTGV0IG1lIHZlcmlmeSB0aGlzIHF1aWNrbHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMzMjUxLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDAwOjE0OjI2LjM0NTUyNDc0N1oiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY4NDQ5NDc2LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZnNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMDA6MTQ6MjYuNTEzOTgzMDczWiIsIlNlcSI6MzEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ1OTg1ODcxNTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQ3VycmVudCBMaW5lIG9mIFJlYXNvbmluZyoqXG5cbkFscmlnaHQsIHNvIGl0J3MgY2xlYXIgdGhhdCBgYXRoOWtfaHRjYCBpc24ndCBnb2luZyB0byBjdXQgaXQgZm9yIHRoaXMgREZTIHRhc2suIFRoYXQgcHJldHR5IG11Y2ggbGVhdmVzIG1lIHdpdGggYGF0aDEwa191c2JgLCByaWdodD8gQnV0IGhvbGQgb24gYSBzZWNvbmQuLi4gaXMgYGF0aDEwa191c2JgIHRoZSAqb25seSogb3B0aW9uPyBJIG5lZWQgdG8gY29uc2lkZXIgYWxsIHRoZSBhbmdsZXMuIExldCBtZSB0aGluay4uLiB3aGF0IGFib3V0IGBtYWM4MDIxMV9od3NpbWA/XG5cbkFoLCByaWdodCwgYG1hYzgwMjExX2h3c2ltYCBpcyB0aGF0IGdlbmVyYWwgc29mdHdhcmUgc2ltdWxhdG9yLiBJdCdzIG5vdCB1c2luZyB0aGUgYGF0aDEwa2Agb3IgYGF0aDlrYCBkcml2ZXJzIGF0IGFsbDsgaXQncyBnb3QgaXRzIG93biB0aGluZywgYG1hYzgwMjExX2h3c2ltLmNgLiBUaGF0IG1lYW5zLCBpdCB3b24ndCBiZSBydW5uaW5nIGBkZnNfcHJpX2RldGVjdG9yLmNgLCBzbyB0aGF0J3MgYSBkZWFkIGVuZC5cblxuT2theSwgbGV0J3MgY2lyY2xlIGJhY2sgdG8gdGhlIG5ld2VyIGRyaXZlcnMuIFdoYXQgYWJvdXQgYGF0aDExa2Agb3IgYGF0aDEya2A/IERvICp0aGV5KiBsZXZlcmFnZSBgZGZzX3ByaV9kZXRlY3Rvci5jYD8gVGhhdCdzIHRoZSBrZXkgcXVlc3Rpb24uIExldCdzIHNlZSBpZiBgYXRoMTFrYCB1dGlsaXplcyB0aGUgYGRmc19wYXR0ZXJuX2RldGVjdG9yYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzM2NDIsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOTAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMDA6MTQ6MzEuMTEyNTc0MjQzWiIsIlNlcSI6MzIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyODk2NzIyMzEsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRmc19wYXR0ZXJuX2RldGVjdG9yXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQwMDoxNDozMS40MDIyNTUyMTRaIiwiU2VxIjozMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjkyNjQyNTg4MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBzdW1tYXJpemVkIGluIHRoZSBmaXJzdCBwZXJzb24sIGFzc3VtaW5nIHRoZSBhdWRpZW5jZSBpcyBrbm93bGVkZ2VhYmxlOlxuXG4qKktlcm5lbCBNb2R1bGUgSW52ZXN0aWdhdGlvbioqXG5cblJpZ2h0LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHdpcmVsZXNzIGRyaXZlcnMuIFRoZSBxdWVzdGlvbiBvZiB3aGV0aGVyIG9yIG5vdCBhIHNwZWNpZmljIGZlYXR1cmUgb3IgbWVjaGFuaXNtIGlzIHV0aWxpemVkIGNvbWVzIHVwIGZyZXF1ZW50bHkuIExldCdzIHNlZS4uLiBJJ3ZlIGdvdCBgYXRoMTFrYCBpbiBtaW5kIHJpZ2h0IG5vdy4gSG9sZCBvbi4uLiBJJ20gcHJldHR5IHN1cmUgdGhhdCBvbmUgaXNuJ3QgZW1wbG95aW5nIGl0LCBuby4gVGhhdCdzIGEgc29saWQgbmVnYXRpdmUuIEJ1dCB3YWl0IGEgbWludXRlLCBhbmQgaGVyZSBpcyBhIG5ldyB0cmFpbiBvZiB0aG91Z2h0Li4uIHdoYXQgYWJvdXQgdGhlIG5ld2VyIGBhdGgxMmtgIG1vZHVsZT8gSSBzaG91bGQgZXhwbG9yZSB0aGF0IG9uZSBuZXh0LCBqdXN0IHRvIGJlIHRob3JvdWdoIGFuZCBhdm9pZCBtYWtpbmcgYW55IHByZW1hdHVyZSBhc3N1bXB0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzQxNDYsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQwMDoxNDozNC4zMjg2ODM1NzdaIiwiU2VxIjozNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM0NzU4MDA2MCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGZzX3BhdHRlcm5fZGV0ZWN0b3JcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDAwOjE0OjM0LjY3NjI3NzMzNVoiLCJTZXEiOjM1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMjA4MTM4Njk5MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIHRoZSBERlMgRGV0ZWN0aW9uIENvZGUqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGJlZW4gbG9va2luZyBpbnRvIHRoaXMgY29kZSByZWxhdGVkIHRvIERGUyAoRHluYW1pYyBGcmVxdWVuY3kgU2VsZWN0aW9uKS4gU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8gZm9jdXMgb24gdGhlIGBhdGg5a2AgYW5kIGBhdGgxMGtgIGRyaXZlcnMsIGJlY2F1c2UgdGhleSdyZSB0aGUgb25lcyB0aGF0IHVzZSBgZGZzX3BhdHRlcm5fZGV0ZWN0b3JgIGFuZCBgZGZzX3ByaV9kZXRlY3RvcmAuIFNpbmNlIGBhdGg5a2AgaXMgUENJLW9ubHksIGFuZCBgYXRoMTBrYCBpbmNsdWRlcyBgYXRoMTBrX3VzYmAsIEkgY2FuIHRhcmdldCBmdXp6aW5nIHRoZSBgYXRoMTBrX3VzYmAgZHJpdmVyIHZpYSBVU0IgZnV6emluZy4gVGhhdCBtZWFucyBJIGNhbiB1c2UgU3l6a2FsbGVyJ3MgYGR1bW15X2hjZGAgdG8gZG8gdGhpcyBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIHdoaWNoIGlzIHBlcmZlY3QuXG5cbkkgbmVlZCB0byBjb25maXJtIGBhdGgxMGtfdXNiYCBpcyBlbmFibGVkIGluIFN5emthbGxlciBieSBkZWZhdWx0LiBJdCB1c3VhbGx5IGlzLCBhcyBgQ09ORklHX0FUSDEwS19VU0I9eWAsIGJ1dCBJJ2xsIGFkZCBgQVRIMTBLX1VTQmAgYW5kIGBBVEgxMEtfREZTX0NFUlRJRklFRGAgdG8gYEVuYWJsZUNvbmZpZ3NgIGp1c3QgdG8gYmUgY2VydGFpbi4gQmV0dGVyIHNhZmUgdGhhbiBzb3JyeS5cblxuTm93LCBsZXQncyBsb29rIGF0IHRoaXMgc3BlY2lmaWMgcGF0Y2guIEl0J3MgYSBmdW5jdGlvbmFsIGNoYW5nZSB3aXRoaW4gYHBkZV9nZXRfbXVsdGlwbGVgLiBUaGUgb3JpZ2luYWwgY29kZSB1c2VkIGRpdmlzaW9uLCBhbmQgbm93IGl0J3MgdXNpbmcgcmVjaXByb2NhbCBtdWx0aXBsaWNhdGlvbi4gVGhpcyBpcyBhIGNsYXNzaWMgc3BvdCBmb3IgZnV6emluZyEgUmVwbGFjaW5nIGRpdmlzaW9uIHdpdGggcmVjaXByb2NhbCBtdWx0aXBsaWNhdGlvbiBjb3VsZCBpbnRyb2R1Y2UgcHJlY2lzaW9uIGlzc3Vlcywgb3IgZXZlbiBhIGRpdmlkZS1ieS16ZXJvIGlmIGBmcmFjdGlvbl9yZWNpcGAgaXNuJ3QgaW5pdGlhbGl6ZWQgY29ycmVjdGx5LiBJdCdzIGNyaXRpY2FsIHRvIG1ha2Ugc3VyZSB0aGlzIGRvZXNuJ3QgaW50cm9kdWNlIGFueSByZWdyZXNzaW9ucy5cblxuV2FpdCwgYGZyYWN0aW9uX3JlY2lwYCBpcyBpbml0aWFsaXplZCBpbiBgcHNlcV9oYW5kbGVyX2NyZWF0ZV9zZXF1ZW5jZXNgLiBJdCBsb29rcyBsaWtlIGlmIGBwcy5wcmlgIGlzIDAsIHRoZW4gYHBzLnByaV9yZWNpcGAgYmVjb21lcyAwLiBUaGVuIGByZWNpcHJvY2FsX2RpdmlkZSh2YWwsIGZyYWN0aW9uX3JlY2lwKWAgd291bGQgYmUgY2FsbGVkIHdpdGggMCBhcyBvbmUgb2YgaXRzIGlucHV0cy4gVGhlIGNvZGUgY2FsbHMgYHJlY2lwcm9jYWxfZGl2aWRlKGEsIFIpYCB3aGljaCBleHBhbmRzIG91dCB0byBgKHUzMikoKCh1NjQpYSAqIFIubSkgXHUwMDNlXHUwMDNlIFIuc2gxKSBcdTAwM2VcdTAwM2UgUi5zaDJgLiBJZiBgUi5tYCBpcyB6ZXJvLCB0aGVuIHRoaXMgZnVuY3Rpb24gcmV0dXJucyAwLlxuXG5XYWl0IGEgc2Vjb25kLCB0aGUgKm9yaWdpbmFsKiBjb2RlIHdhczpcbmBgYGNcblx0ZmFjdG9yID0gdmFsIC8gZnJhY3Rpb247XG5cdHJlbWFpbmRlciA9IHZhbCAlIGZyYWN0aW9uO1xuYGBgXG5JZiBgZnJhY3Rpb25gICp3YXMqIHplcm8sIHRoYXQgd291bGQgY2F1c2UgYSBkaXZpZGUtYnktemVybyEgTm93LCBpZiBpdCdzIHplcm8sIHRoZSBmdW5jdGlvbiByZXR1cm5zIDAuICBFc3NlbnRpYWxseSwgaXQncyAqYXZvaWRpbmcqIGEgcG90ZW50aWFsIGRpdmlkZS1ieS16ZXJvIGV4Y2VwdGlvbiEgVGhlIG5ldyBjb2RlIGlzIGFjdHVhbGx5IG1vcmUgcm9idXN0LlxuXG5UaGUgcXVlc3Rpb24gdGhlbiBpcywgY2FuIGBmcmFjdGlvbmAgKHdoaWNoIGlzIGBwcy5wcmlgKSAqYmUqIHplcm8/IEkgc2VlIHRoYXQgYHBzLnByaWAgaXMgc2V0IHZpYSBgR0VUX1BSSV9UT19VU0VgLCB3aGljaCBpbnZvbHZlcyBhIHRpbWUgZGlmZmVyZW5jZS4gSWYgYHRzID09IHAtXHUwMDNldHNgLCB0aGVuIGBwcy5wcmlgIGNvdWxkIGluZGVlZCBiZSAwLCByaWdodD8gVGhlIGtleSBwb2ludCBpcyB0aGF0IHRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgYW5kIHRoZSBjcml0aWNhbCB0aGluZyBpcyB0byB2ZXJpZnkgaXRzIGJlaGF2aW9yIHVuZGVyIGFsbCBzY2VuYXJpb3MuXG5cbkFscmlnaHQsIHNvIHRoZSBmb2N1cyBzeW1ib2xzIEkgbmVlZCB0byB0YXJnZXQgZm9yIGZ1enppbmcgYXJlOiBgcGRlX2dldF9tdWx0aXBsZWAgKHN0YXRpYyksIGBwc2VxX2hhbmRsZXJfY3JlYXRlX3NlcXVlbmNlc2AgKHN0YXRpYyksIGFuZCBgcHNlcV9oYW5kbGVyX2FkZF90b19leGlzdGluZ19zZXFzYCAoc3RhdGljKS4gVGhlc2UgYXJlIGFsbCBpbnRlcm5hbCB0byBgZGZzX3ByaV9kZXRlY3Rvci5jYCwgc28gSSBuZWVkIHRvIGZpbmQgdGhlIGV4cG9ydGVkIG9yIG5vbi1zdGF0aWMgZnVuY3Rpb25zIHRoYXQgY2FsbCB0aGVtIHRvIGJ1aWxkIHVwIGEgZnV6emluZyBzdHJhdGVneS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzQzNjksIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5MDUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMDA6MTQ6NDYuNzU3NjY2OTk4WiIsIlNlcSI6MzYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTY4MzQ1MTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicHNlcV9oYW5kbGVyX2NyZWF0ZV9zZXF1ZW5jZXNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wcmlfZGV0ZWN0b3IuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3ByaV9kZXRlY3Rvci5jPTIwND1zdGF0aWMgYm9vbCBwdWxzZV9xdWV1ZV9lbnF1ZXVlKHN0cnVjdCBwcmlfZGV0ZWN0b3IgKnBkZSwgdTY0IHRzKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wcmlfZGV0ZWN0b3IuYy0yMjYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wcmlfZGV0ZWN0b3IuYzoyMjc6c3RhdGljIGJvb2wgcHNlcV9oYW5kbGVyX2NyZWF0ZV9zZXF1ZW5jZXMoc3RydWN0IHByaV9kZXRlY3RvciAqcGRlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcHJpX2RldGVjdG9yLmMtMjI4LVxcdFxcdFxcdFxcdFxcdCAgdTY0IHRzLCB1MzIgbWluX2NvdW50KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wcmlfZGV0ZWN0b3IuYz0zODk9c3RhdGljIHN0cnVjdCBwcmlfc2VxdWVuY2UgKnByaV9kZXRlY3Rvcl9hZGRfcHVsc2Uoc3RydWN0IHByaV9kZXRlY3RvciAqZGUsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3ByaV9kZXRlY3Rvci5jLTQxMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3ByaV9kZXRlY3Rvci5jOjQxMjpcXHRpZiAoIXBzZXFfaGFuZGxlcl9jcmVhdGVfc2VxdWVuY2VzKGRlLCB0cywgbWF4X3VwZGF0ZWRfc2VxKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcHJpX2RldGVjdG9yLmMtNDEzLVxcdFxcdHByaV9kZXRlY3Rvcl9yZXNldChkZSwgdHMpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQwMDoxNDo0Ni45NzQ1MDcyNjRaIiwiU2VxIjozNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzE4NzQxNjY5OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgYnJlYWtkb3duIG9mIG15IHRob3VnaHQgcHJvY2VzczpcblxuKipUcmFjaW5nIGBwcmlfZGV0ZWN0b3JfYWRkX3B1bHNlYCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGBwcmlfZGV0ZWN0b3JfYWRkX3B1bHNlYCBhbmQgSSBzZWUgaXQgaW1tZWRpYXRlbHkgY2FsbHMgYHBzZXFfaGFuZGxlcl9jcmVhdGVfc2VxdWVuY2VzYC4gVGhhdCdzIGludGVyZXN0aW5nLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0J3MgaGFwcGVuaW5nIHdpdGhpbiB0aGlzIGZ1bmN0aW9uIGFuZCBob3cgaXQgcmVsYXRlcyB0byB0aGUgYmlnZ2VyIHBpY3R1cmUuIEknbSBnb2luZyB0byBmb2xsb3cgdGhlIGNvbnRyb2wgZmxvdyBmcm9tIHRoZSBzb3VyY2UsIHN0YXJ0aW5nIHdpdGggYHByaV9kZXRlY3Rvcl9hZGRfcHVsc2VgLCBhcyB0aGF0IHNlZW1zIGxpa2UgdGhlIGVudHJ5IHBvaW50LiBJJ2xsIG5lZWQgdG8gZHJpbGwgZG93biBpbnRvIHRoZSBpbm5lciB3b3JraW5ncyBvZiBgcHNlcV9oYW5kbGVyX2NyZWF0ZV9zZXF1ZW5jZXNgIGFzIHdlbGwgdG8gcHJvcGVybHkgdW5kZXJzdGFuZCB0aGUgcmVsYXRpb25zaGlwLiBUaGlzIGxvb2tzIGxpa2UgYSBwcm9taXNpbmcgYXZlbnVlIGZvciB1bmRlcnN0YW5kaW5nIGhvdyB0aGUgc3lzdGVtIGhhbmRsZXMgcHVsc2Ugc2VxdWVuY2VzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNjM1OCwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDAwOjE0OjUwLjE2MTkyNjU3M1oiLCJTZXEiOjM4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mzc4MzUzNTQyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInByaV9kZXRlY3Rvcl9hZGRfcHVsc2VcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3ByaV9kZXRlY3Rvci5jPTM4Mj1zdGF0aWMgdm9pZCBwcmlfZGV0ZWN0b3JfZXhpdChzdHJ1Y3QgcHJpX2RldGVjdG9yICpkZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcHJpX2RldGVjdG9yLmMtMzg4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcHJpX2RldGVjdG9yLmM6Mzg5OnN0YXRpYyBzdHJ1Y3QgcHJpX3NlcXVlbmNlICpwcmlfZGV0ZWN0b3JfYWRkX3B1bHNlKHN0cnVjdCBwcmlfZGV0ZWN0b3IgKmRlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcHJpX2RldGVjdG9yLmMtMzkwLVxcdFxcdFxcdFxcdFxcdFxcdCAgIHN0cnVjdCBwdWxzZV9ldmVudCAqZXZlbnQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3ByaV9kZXRlY3Rvci5jPTQyNT1zdHJ1Y3QgcHJpX2RldGVjdG9yICpwcmlfZGV0ZWN0b3JfaW5pdChjb25zdCBzdHJ1Y3QgcmFkYXJfZGV0ZWN0b3Jfc3BlY3MgKnJzKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wcmlfZGV0ZWN0b3IuYy00MzItXFx0ZGUtXFx1MDAzZWV4aXQgPSBwcmlfZGV0ZWN0b3JfZXhpdDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3ByaV9kZXRlY3Rvci5jOjQzMzpcXHRkZS1cXHUwMDNlYWRkX3B1bHNlID0gcHJpX2RldGVjdG9yX2FkZF9wdWxzZTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3ByaV9kZXRlY3Rvci5jLTQzNC1cXHRkZS1cXHUwMDNlcmVzZXQgPSBwcmlfZGV0ZWN0b3JfcmVzZXQ7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDAwOjE0OjUwLjU0MDI4NTI5NVoiLCJTZXEiOjM5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MjY0OTczNTc5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBpZiB0aGV5IGFyZSBteSBvd246XG5cbioqSW52ZXN0aWdhdGluZyBQdWxzZSBEZXRlY3Rpb24gSW5pdGlhbGl6YXRpb24qKlxuXG5BbHJpZ2h0LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEl0IGxvb2tzIGxpa2UgYHByaV9kZXRlY3Rvcl9pbml0YCBpcyBzZXR0aW5nIHVwIHNvbWV0aGluZywgYW5kIHNwZWNpZmljYWxseSwgaXQgc2VlbXMgdG8gYmUgbGlua2luZyBhIGZ1bmN0aW9uLiBUaGUgbGluZSBgZGUtXHUwMDNlYWRkX3B1bHNlID0gcHJpX2RldGVjdG9yX2FkZF9wdWxzZWAgaXMgdGhlIGtleS4gSSBjYW4gaW1tZWRpYXRlbHkgaW5mZXIgdGhhdCBgZGVgIGlzIHByb2JhYmx5IGEgZGF0YSBzdHJ1Y3R1cmUgb2Ygc29tZSBraW5kIOKAkyBtYXliZSBhIGRldmljZSBkZXNjcmlwdG9yIG9yIGFuIG9iamVjdCDigJMgYW5kIGl0IGNvbnRhaW5zIGEgbWVtYmVyIGNhbGxlZCBgYWRkX3B1bHNlYC4gVGhlIGFzc2lnbm1lbnQgc3VnZ2VzdHMgdGhhdCBgcHJpX2RldGVjdG9yX2luaXRgIGlzIHRha2luZyB0aGUgYWRkcmVzcyBvZiB0aGUgZnVuY3Rpb24gYHByaV9kZXRlY3Rvcl9hZGRfcHVsc2VgIGFuZCBhc3NpZ25pbmcgaXQgdG8gdGhlIGBhZGRfcHVsc2VgIG1lbWJlciB3aXRoaW4gdGhpcyBgZGVgIHN0cnVjdHVyZS5cblxuU28sIGBkZS1cdTAwM2VhZGRfcHVsc2VgIGlzIG5vdyBhIGZ1bmN0aW9uIHBvaW50ZXIgdGhhdCB3aWxsIGV4ZWN1dGUgYHByaV9kZXRlY3Rvcl9hZGRfcHVsc2VgLiBUaGF0J3Mgc3RhbmRhcmQgcHJhY3RpY2UgZm9yIHNldHRpbmcgdXAgY2FsbGJhY2tzIG9yIG1ldGhvZHMgaW4gQywgZXNwZWNpYWxseSB3aGVuIHdvcmtpbmcgd2l0aCBkZXZpY2UgZHJpdmVycyBvciBldmVudCBoYW5kbGVycy5cblxuVGhlIGNvcmUgcXVlc3Rpb24gbm93LCBhbmQgdGhlIGNyaXRpY2FsIG9uZSB0byB1bmRlcnN0YW5kIHRoZSB3aG9sZSBwaWN0dXJlLCBpcyAqd2hvKiBjYWxscyBgcHJpX2RldGVjdG9yX2luaXRgPyBJIG5lZWQgdG8gdHJhY2UgYmFjayBmcm9tIHRoaXMgZnVuY3Rpb24gY2FsbC4gS25vd2luZyB3aGVyZSBgcHJpX2RldGVjdG9yX2luaXRgIGlzIHVzZWQgd2lsbCB0ZWxsIG1lIHRoZSBjb250ZXh0IG9mIHRoaXMgcHVsc2UgZGV0ZWN0aW9uIHN5c3RlbS4gSXMgaXQgYXQgaW5pdGlhbGl6YXRpb24sIGRldmljZSByZWdpc3RyYXRpb24sIG1vZHVsZSBsb2FkaW5nLCBvciBzb21ldGhpbmcgZWxzZSBlbnRpcmVseT8gVGhlIGNhbGxlciB3aWxsIHJldmVhbCB0aGUgc2NvcGUgYW5kIHB1cnBvc2Ugb2YgdGhlIGBhZGRfcHVsc2VgIGZ1bmN0aW9uIGFuZCBob3cgdGhlIHN5c3RlbSBtYW5hZ2VzIHRoaXMuIFRoaXMgaXMgdGhlIGNydWNpYWwgcGllY2Ugb2YgdGhlIHB1enpsZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzY4NzYsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQwMDoxNDo1NC44MDUyNjE2NzRaIiwiU2VxIjo0MCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMzODM5NTM5MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwcmlfZGV0ZWN0b3JfaW5pdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcGF0dGVybl9kZXRlY3Rvci5jPTE5Nz1jaGFubmVsX2RldGVjdG9yX2NyZWF0ZShzdHJ1Y3QgZGZzX3BhdHRlcm5fZGV0ZWN0b3IgKmRwZCwgdTE2IGZyZXEpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3BhdHRlcm5fZGV0ZWN0b3IuYy0yMTAtXFx0XFx0Y29uc3Qgc3RydWN0IHJhZGFyX2RldGVjdG9yX3NwZWNzICpycyA9IFxcdTAwMjZkcGQtXFx1MDAzZXJhZGFyX3NwZWNbaV07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmM6MjExOlxcdFxcdHN0cnVjdCBwcmlfZGV0ZWN0b3IgKmRlID0gcHJpX2RldGVjdG9yX2luaXQocnMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcGF0dGVybl9kZXRlY3Rvci5jLTIxMi1cXHRcXHRpZiAoZGUgPT0gTlVMTClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcHJpX2RldGVjdG9yLmM9Mzg5PXN0YXRpYyBzdHJ1Y3QgcHJpX3NlcXVlbmNlICpwcmlfZGV0ZWN0b3JfYWRkX3B1bHNlKHN0cnVjdCBwcmlfZGV0ZWN0b3IgKmRlLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wcmlfZGV0ZWN0b3IuYy00MjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wcmlfZGV0ZWN0b3IuYzo0MjU6c3RydWN0IHByaV9kZXRlY3RvciAqcHJpX2RldGVjdG9yX2luaXQoY29uc3Qgc3RydWN0IHJhZGFyX2RldGVjdG9yX3NwZWNzICpycylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3ByaV9kZXRlY3Rvci5jLTQyNi17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3ByaV9kZXRlY3Rvci5oPTYyPXN0cnVjdCBwcmlfZGV0ZWN0b3Ige1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wcmlfZGV0ZWN0b3IuaC03OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3ByaV9kZXRlY3Rvci5oOjc5OnN0cnVjdCBwcmlfZGV0ZWN0b3IgKnByaV9kZXRlY3Rvcl9pbml0KGNvbnN0IHN0cnVjdCByYWRhcl9kZXRlY3Rvcl9zcGVjcyAqcnMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcHJpX2RldGVjdG9yLmgtODAtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDAwOjE0OjU1LjE0MzY2MzM3NVoiLCJTZXEiOjQxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODE4ODIxMzYwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6XG5cbioqRGVjb25zdHJ1Y3RpbmcgRGV0ZWN0b3IgSW5pdGlhbGl6YXRpb24gYW5kIFB1bHNlIEFkZGl0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYGNoYW5uZWxfZGV0ZWN0b3JfY3JlYXRlYC4gVGhhdCBuYW1lIHN0cm9uZ2x5IHN1Z2dlc3RzIHRoaXMgaXMgd2hlcmUgd2UgaW5zdGFudGlhdGUgYSBuZXcgZGV0ZWN0b3IgY2hhbm5lbCwgd2hpY2ggbWFrZXMgc2Vuc2UuIEltbWVkaWF0ZWx5LCB0aGUgY29kZSBzZWVtcyB0byBoYW5kIG9mZiB0aGUgY29yZSBpbml0aWFsaXphdGlvbiB0byBgcHJpX2RldGVjdG9yX2luaXRgLiBUaGF0IGltcGxpZXMgYSBwcml2YXRlIG9yIHByaW1hcnkgaW5pdGlhbGl6YXRpb24gZnVuY3Rpb24sIHByb2JhYmx5IHNldHRpbmcgdXAgaW50ZXJuYWwgZGF0YSBzdHJ1Y3R1cmVzIGFuZCBwZXJoYXBzIGFsbG9jYXRpbmcgbWVtb3J5LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGF0IGNhbGwgYmVjYXVzZSBpdCdzIHRoZSBmb3VuZGF0aW9uLlxuXG5Ob3cgdGhlIG1pbGxpb24tZG9sbGFyIHF1ZXN0aW9uOiB3aGVyZSBkb2VzIHRoZSBjb2RlICphZGQqIGluZGl2aWR1YWwgcHVsc2VzIHRvIHRoaXMgZGV0ZWN0b3I/IEknbSBtaXNzaW5nIHRoYXQga2V5IHBpZWNlLiBJIG5lZWQgdG8gdHJhY2UgdGhlIGNhbGwgdG8gYGFkZF9wdWxzZWAuIElkZW50aWZ5aW5nIHdoZXJlIHB1bHNlcyBhcmUgZmVkIGludG8gdGhlIHN5c3RlbSBpcyBjcnVjaWFsIGZvciB1bmRlcnN0YW5kaW5nIGhvdyB0aGUgZGV0ZWN0b3IgYWN0dWFsbHkgKmRldGVjdHMqIGFueXRoaW5nLiBJIG5lZWQgdG8gZmluZCB0aGUgY2FsbGluZyBjb250ZXh0IHRvIHNlZSBob3cgZGF0YSBpcyBiZWluZyBwcm9jZXNzZWQuIElzIGl0IGFuIGludGVycnVwdCwgYSBkYXRhIHN0cmVhbWluZyBmdW5jdGlvbiwgb3Igc29tZXRoaW5nIGVsc2UgZW50aXJlbHk/IFdpdGhvdXQgYGFkZF9wdWxzZWAgSSBoYXZlIG9ubHkgaGFsZiB0aGUgcGljdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzc2NzIsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQwMDoxNDo1OC45NjI0OTAxNDVaIiwiU2VxIjo0MiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2MzczMTY4NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhZGRfcHVsc2VcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmM9MjY3PXN0YXRpYyBib29sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmM6MjY4OmRwZF9hZGRfcHVsc2Uoc3RydWN0IGRmc19wYXR0ZXJuX2RldGVjdG9yICpkcGQsIHN0cnVjdCBwdWxzZV9ldmVudCAqZXZlbnQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmMtMjY5LVxcdCAgICAgIHN0cnVjdCByYWRhcl9kZXRlY3Rvcl9zcGVjcyAqcnMpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3BhdHRlcm5fZGV0ZWN0b3IuYy0yOTItXFx0XFx0c3RydWN0IHByaV9kZXRlY3RvciAqcGQgPSBjZC1cXHUwMDNlZGV0ZWN0b3JzW2ldO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcGF0dGVybl9kZXRlY3Rvci5jOjI5MzpcXHRcXHRzdHJ1Y3QgcHJpX3NlcXVlbmNlICpwcyA9IHBkLVxcdTAwM2VhZGRfcHVsc2UocGQsIGV2ZW50KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3BhdHRlcm5fZGV0ZWN0b3IuYy0yOTQtXFx0XFx0aWYgKHBzICE9IE5VTEwpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcGF0dGVybl9kZXRlY3Rvci5jPTM0MD1zdGF0aWMgY29uc3Qgc3RydWN0IGRmc19wYXR0ZXJuX2RldGVjdG9yIGRlZmF1bHRfZHBkID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmMtMzQyLVxcdC5zZXRfZGZzX2RvbWFpblxcdD0gZHBkX3NldF9kb21haW4sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmM6MzQzOlxcdC5hZGRfcHVsc2VcXHQ9IGRwZF9hZGRfcHVsc2UsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmMtMzQ0LVxcdC5nZXRfc3RhdHNcXHQ9IGRwZF9nZXRfc3RhdHMsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDAwOjE0OjU5LjEyNjIyNzc0MloiLCJTZXEiOjQzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMzc3Njg5MjUzNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIFRhcmdldCBQcmlvcml0aXphdGlvbiBmb3IgREZTIFJhZGFyIERldGVjdGlvbioqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93biBmb3IgZnV6emluZyBwdXJwb3Nlcywgc3BlY2lmaWNhbGx5IHRhcmdldGluZyB0aGUgREZTIHJhZGFyIGRldGVjdGlvbiBpbiB0aGVzZSB3aXJlbGVzcyBkcml2ZXJzLiBUaGUgY29yZSBjYWxsIGNoYWluIGlzIHdoYXQgSSdtIGludGVyZXN0ZWQgaW46IGBhdGgxMGtfd21pX2V2ZW50X2Rmc2AgKG9yLCByZWFsbHksIGBhdGgxMGtfd21pX2V2ZW50X3BoeWVycmApLCB3aGljaCB0cmlnZ2VycyBhIHNlcmllcyBvZiBldmVudHMgdWx0aW1hdGVseSBsZWFkaW5nIHRvIHJhZGFyIHB1bHNlIGRldGVjdGlvbi5cblxuRmlyc3QsIGBkcGRfYWRkX3B1bHNlYCBjYWxscyBgcGQtXHUwMDNlYWRkX3B1bHNlYCwgYW5kIGBkcGRfYWRkX3B1bHNlYCBpcyBhc3NpZ25lZCB0byBgZHBkLVx1MDAzZWFkZF9wdWxzZWAuIFdlIHNhdyB0aGF0IGBhci1cdTAwM2VkZnNfZGV0ZWN0b3ItXHUwMDNlYWRkX3B1bHNlYCBpcyBjYWxsZWQgYnkgYGF0aDEwa19kZnNfcmFkYXJfcmVwb3J0YCB3aGljaCBpbiB0dXJuIGlzIGNhbGxlZCBieSBgYXRoMTBrX3dtaV9ldmVudF9kZnNgLiBUaGlzIGNhbGwgY2hhaW4gaXMga2V5OiBgYXRoMTBrX3dtaV9ldmVudF9kZnNgIC1cdTAwM2UgYGF0aDEwa19kZnNfcmFkYXJfcmVwb3J0YCAtXHUwMDNlIGBkcGRfYWRkX3B1bHNlYCAtXHUwMDNlIGBwcmlfZGV0ZWN0b3JfYWRkX3B1bHNlYCAtXHUwMDNlIGBwc2VxX2hhbmRsZXJfY3JlYXRlX3NlcXVlbmNlc2AgLyBgcHNlcV9oYW5kbGVyX2FkZF90b19leGlzdGluZ19zZXFzYCAtXHUwMDNlIGBwZGVfZ2V0X211bHRpcGxlYC5cblxuTm93LCBmb3IgZnV6emluZywgSSd2ZSBnb3QgdG8gcHJpb3JpdGl6ZSB0aGUgdGFyZ2V0cy4gTGV0J3Mgc2VlLi4uXG5cbiogICBgYXRoMTBrX3dtaV9ldmVudF9kZnNgOiBJdCdzIG5vdCBzdGF0aWM7IGl0J3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBBY3R1YWxseSwgYGF0aDEwa193bWlfZXZlbnRfcGh5ZXJyYCBhbHNvIGlzbid0IHN0YXRpYyBhbmQgaXQgY2FsbHMgYGF0aDEwa193bWlfZXZlbnRfZGZzYCwgc28gYm90aCBhcmUgcHJpbWUgY2FuZGlkYXRlcy5cbiogICBgYXRoMTBrX2Rmc19yYWRhcl9yZXBvcnRgOiBJdCdzIGBzdGF0aWNgLCBzbyBpdCBtaWdodCBiZSBpbmxpbmVkLiBUaGF0IGNvdWxkIGNvbXBsaWNhdGUgdGhpbmdzLlxuKiAgIGBkcGRfYWRkX3B1bHNlYDogQWxzbyBgc3RhdGljYCwgd2hpY2ggaXMgbGVzcyBpZGVhbCBmb3IgZGlyZWN0IGZ1enppbmcuXG4qICAgYHByaV9kZXRlY3Rvcl9hZGRfcHVsc2VgOiBUaGlzIGlzIGFsc28gYHN0YXRpY2AuIFNvLCBub3QgZGlyZWN0bHkgZnV6emFibGUuXG5cblNvIHRoZSBiZXN0IGluaXRpYWwgbm9uLXN0YXRpYyBwb2ludHMgYXJlIGNsZWFybHkgYGF0aDEwa193bWlfZXZlbnRfZGZzYCBhbmQgYGF0aDEwa193bWlfZXZlbnRfcGh5ZXJyYCwgc2luY2UgdGhleSBzdGFydCB0aGUgd2hvbGUgcHJvY2Vzcy5cblxuV2hhdCBhYm91dCB0aGUgYGF0aDlrYCBzaWRlIG9mIHRoaW5ncz8gV2UndmUgZ290IGBhdGg5a19kZnNfcHJvY2Vzc19waHllcnJgIC1cdTAwM2UgYGF0aDlrX2Rmc19wcm9jZXNzX3JhZGFyX3B1bHNlYCAtXHUwMDNlIGBwZC1cdTAwM2VhZGRfcHVsc2VgLiBJdCdzIFBDSS1vbmx5IHNvIGl0IG1pZ2h0IGJlIGhhcmRlciB0byByZWFjaCB3aXRob3V0IFBDSSBmdXp6aW5nLCBidXQgaXQgaXMgd29ydGggaW5jbHVkaW5nLiBgYXRoOWtfZGZzX3Byb2Nlc3NfcGh5ZXJyYCBpc24ndCBzdGF0aWMgZWl0aGVyLiBTbywgSSB3aWxsIGluY2x1ZGUgYGF0aDlrX2Rmc19wcm9jZXNzX3BoeWVycmAgYW5kIGBhdGg5a19kZnNfcHJvY2Vzc19yYWRhcl9wdWxzZWAgaW4gdGhlIGxpc3QgdG8gYXR0ZW1wdCB0byBjb3ZlciBpdC5cblxuRmluYWxseSwgdGhlIHJlcXVpcmVkIGNvbmZpZ3MgYXJlOiBgQ09ORklHX0FUSDEwS19ERlNfQ0VSVElGSUVEYCwgYENPTkZJR19BVEgxMEtfVVNCYCwgYW5kIGBDT05GSUdfQVRIOUtfREZTX0NFUlRJRklFRGAuIFdlIG5lZWQgdG8gdmVyaWZ5IHRoYXQgYENPTkZJR19BVEg5S19ERlNfQ0VSVElGSUVEYCBhY3R1YWxseSBleGlzdHMgaW4gdGhlIGtlcm5lbCBjb25maWcuXG5cblRoZXJlZm9yZSwgdGhlIGtleSB0YXJnZXRzIGZvciBpbml0aWFsIGZ1enppbmcgc2hvdWxkIGJlIGBhdGgxMGtfd21pX2V2ZW50X2Rmc2AsIGBhdGgxMGtfd21pX2V2ZW50X3BoeWVycmAsIGFuZCBgYXRoOWtfZGZzX3Byb2Nlc3NfcGh5ZXJyYCwgYWltaW5nIHRvIHRyaWdnZXIgdGhlIERGUyByYWRhciBkZXRlY3Rpb24gbG9naWMgYW5kIGV4cG9zZSBhbnkgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdGllcyBpbiB0aGUgcHJvY2Vzc2luZyBvZiByYWRhciBwdWxzZSBldmVudHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM4MzEzLCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDAwOjE1OjEyLjkwMzEyMzUyOFoiLCJTZXEiOjQ0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjMxOTY5MTYxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkFUSDlLX0RGU19DRVJUSUZJRURcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZz05PWNvbmZpZyBBVEg5S19ERlNfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTEwLVxcdGRlZl9ib29sIHlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxMTpcXHRkZXBlbmRzIG9uIEFUSDlLX0RFQlVHRlMgXFx1MDAyNlxcdTAwMjYgQVRIOUtfREZTX0NFUlRJRklFRFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTEyLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc9NzY9Y29uZmlnIEFUSDlLX1RYOTlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTk1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjk2OmNvbmZpZyBBVEg5S19ERlNfQ0VSVElGSUVEXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctOTctXFx0Ym9vbCBcXFwiQXRoZXJvcyBERlMgc3VwcG9ydCBmb3IgY2VydGlmaWVkIHBsYXRmb3Jtc1xcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZT0xNT1hdGg5ay0kKENPTkZJR19BVEg5S19ERlNfREVCVUdGUykgKz0gZGZzX2RlYnVnLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGU6MTY6YXRoOWstJChDT05GSUdfQVRIOUtfREZTX0NFUlRJRklFRCkgKz0gZGZzLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGUtMTctYXRoOWstJChDT05GSUdfQVRIOUtfVFg5OSkgKz0gdHg5OS5vXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGZzLmgtMjEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2Rmcy5oOjIyOiNpZiBkZWZpbmVkKENPTkZJR19BVEg5S19ERlNfQ0VSVElGSUVEKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZnMuaC0yMy0vKipcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9pbml0LmM9ODYzPXN0YXRpYyBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX2lmYWNlX2NvbWJpbmF0aW9uIGlmX2NvbWJbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9pbml0LmMtODY5LVxcdFxcdC5iZWFjb25faW50X2luZnJhX21hdGNoID0gdHJ1ZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jOjg3MDojaWZkZWYgQ09ORklHX0FUSDlLX0RGU19DRVJUSUZJRURcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jLTg3MS1cXHRcXHQucmFkYXJfZGV0ZWN0X3dpZHRocyA9XFx0QklUKE5MODAyMTFfQ0hBTl9XSURUSF8yMF9OT0hUKSB8XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDAwOjE1OjEzLjUzNTA5ODY2OVoiLCJTZXEiOjQ1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2ODU0MDYyOTUwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IENvbmZpZ3VyYXRpb24gQ29udW5kcnVtKipcblxuT2theSwgc28gSSdtIHRyeWluZyB0byBuYWlsIGRvd24gdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zIGhlcmUuIEkgc2VlIGBDT05GSUdfQVRIOUtfREZTX0NFUlRJRklFRGAgZXhpc3RzLCB3aGljaCBpcyBnb29kLiBCdXQgd2FpdCwgYGF0aDlrYCBpcyBQQ0ktb25seS4uLiByaWdodD8gSG1tLCBtYXliZSBJIHNob3VsZCBsaXN0IGl0IGFueXdheSwganVzdCBmb3IgY29tcGxldGVuZXNzLiBHb3R0YSBiZSB0aG9yb3VnaC5cblxuVGhlbiwgdGhlcmUncyBgQ09ORklHX0FUSDlLYCBhbmQgYENPTkZJR19BVEgxMEtgLiBDaGFuY2VzIGFyZSB0aGV5J3JlIGFscmVhZHkgZW5hYmxlZCwgYnV0IGxpc3RpbmcgdGhlbSBjYW4ndCBodXJ0LiBBbHdheXMgZG91YmxlLWNoZWNrLCBlc3BlY2lhbGx5IGluIGEgZnV6emluZyBjb250ZXh0LiBBbmQgaG9sZCBvbiwgZm9yIHZpcnR1YWxpemVkIGZ1enppbmcsIGBDT05GSUdfQVRIMTBLX1VTQmAgaXMgcHJvYmFibHkgdGhlIG1vc3QgY3J1Y2lhbCBvbmUgb2YgdGhlbSBhbGwsIHRoYXQncyBkZWZpbml0ZWx5IGdvaW5nIG9uIHRoZSBsaXN0LlxuXG5MZXQncyBzZWUsIHdoYXQgYWJvdXQgYENPTkZJR19BVEg5S19IVENgPyBJIHNlZW0gdG8gcmVjYWxsIHdlJ3ZlIGxvb2tlZCBhdCB0aGF0IGJlZm9yZSBhbmQgY29uZmlybWVkIGl0IGRvZXNuJ3QgdXNlIERGUywgYnV0IGxldCBtZSBqdXN0IGNvbmZpcm0gaXQuLi4geWVzLCBpdCBkb2Vzbid0IHVzZSBERlMuXG5cblJpZ2h0LCBzbyB0byByZWNhcCwgaGVyZSdzIHdoYXQgSSB3YW50IHRvIG1ha2Ugc3VyZSB3ZSBoYXZlIGNvbmZpZ3VyZWQ6XG5gQVRIMTBLYFxuYEFUSDEwS19VU0JgXG5gQVRIMTBLX0RGU19DRVJUSUZJRURgXG5gQVRIOUtgXG5gQVRIOUtfREZTX0NFUlRJRklFRGBcbk9oLCBhbmQgYE1BQzgwMjExX0hXU0lNYCAtLSBub3QgZGlyZWN0bHkgcmVsYXRlZCB0byB0aGUgYGF0aGAgc3R1ZmYsIGJ1dCBnZW5lcmFsbHkgdXNlZnVsIGZvciBXaUZpIHRlc3RpbmcsIHNvIGxldCdzIHRocm93IHRoYXQgaW4gZm9yIGdvb2QgbWVhc3VyZS5cblxuTm93LCBhIHF1aWNrIHJldmlldyBvZiB0aGUgZGVwZW5kZW5jeSBjb21waWxhdGlvbiBsb2dpYy4uLiBTbywgYGRmc19wcmlfZGV0ZWN0b3IuY2AgaXMgY29tcGlsZWQgd2hlbiBgQ09ORklHX0FUSF9DT01NT05gIGlzIGVuYWJsZWQsIHdoaWNoIGlzIHRoZSBiYXNlbGluZS4gQnV0LCBgZGZzLm9gIGluc2lkZSBgYXRoOWtgIGlzIGRlcGVuZGVudCBvbiBgQ09ORklHX0FUSDlLX0RGU19DRVJUSUZJRURgLiBBbmQsIGBkZnNfcGF0dGVybl9kZXRlY3Rvci5vYCBhbmQgYGRmc19wcmlfZGV0ZWN0b3Iub2AgaW4gYGF0aGAgYXJlIGJ1aWx0IHVuY29uZGl0aW9uYWxseSBpZiBgYXRoLmtvYCBpcyBidWlsdCwgd2hpY2gsIGluIHR1cm4sIGlzIGRlcGVuZGVudCBvbiBgQVRIOUtgIG9yIGBBVEgxMEtgIG9yIHRob3NlIHNvcnRzIG9mIHNldHRpbmdzLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgcmVsYXRpb25zaGlwcyBiZXR3ZWVuIHRob3NlIGNvbXBvbmVudHMuXG5cbk9rYXksIGxldCdzIGp1c3QgZ28gYmFjayBhbmQgZG91YmxlIGNoZWNrIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvTWFrZWZpbGVgIGFnYWluLCBqdXN0IHRvIG1ha2UgYWJzb2x1dGVseSBjZXJ0YWluIEkgaGF2ZW4ndCBtaXNzZWQgYW55dGhpbmcuIEdvdHRhIGJlIG1ldGljdWxvdXMgaGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDA1MTgsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMzYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMDA6MTU6MjAuMzg5MTY0NDg5WiIsIlNlcSI6NDYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjQ5MDk4ODQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGZzX3ByaV9kZXRlY3RvclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9NYWtlZmlsZT0xNT1hdGgtb2JqcyA6PVxcdG1haW4ubyBcXFxcXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvTWFrZWZpbGUtMTktXFx0XFx0ZGZzX3BhdHRlcm5fZGV0ZWN0b3IubyBcXFxcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL01ha2VmaWxlOjIwOlxcdFxcdGRmc19wcmlfZGV0ZWN0b3Iub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9NYWtlZmlsZS0yMS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcGF0dGVybl9kZXRlY3Rvci5jLTIwLSNpbmNsdWRlIFxcXCJkZnNfcGF0dGVybl9kZXRlY3Rvci5oXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcGF0dGVybl9kZXRlY3Rvci5jOjIxOiNpbmNsdWRlIFxcXCJkZnNfcHJpX2RldGVjdG9yLmhcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmMtMjItI2luY2x1ZGUgXFxcImF0aC5oXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wcmlfZGV0ZWN0b3IuYy0yMi0jaW5jbHVkZSBcXFwiZGZzX3BhdHRlcm5fZGV0ZWN0b3IuaFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3ByaV9kZXRlY3Rvci5jOjIzOiNpbmNsdWRlIFxcXCJkZnNfcHJpX2RldGVjdG9yLmhcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wcmlfZGV0ZWN0b3IuYy0yNC1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMDA6MTU6MjAuNjE0MDgwOTMzWiIsIlNlcSI6NDcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3NzY1Njc4NjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIHNlZSwgbXkgdGhpbmtpbmcgaGVyZSBpcyBjZW50ZXJlZCBvbiB0aGlzIGBkZnNfcHJpX2RldGVjdG9yLm9gIG9iamVjdCBmaWxlLiBSaWdodCwgaXQncyBkZWZpbml0ZWx5IHBhcnQgb2YgYGF0aC1vYmpzYCwgc28gdGhhdCBtZWFucyBpdCdzIGF1dG9tYXRpY2FsbHkgYnVpbHQgd2hlbmV2ZXIgYENPTkZJR19BVEhfQ09NTU9OYCBpcyBzZXQuIFRoYXQncyB0aGUgYmFzZWxpbmUsIHRoZSBkZWZhdWx0IGJ1aWxkIGNvbmRpdGlvbi5cblxuQnV0LCBhbmQgaGVyZSdzIHRoZSBjcml0aWNhbCBwb2ludCwganVzdCBiZWNhdXNlIGl0ICpjYW4qIGJlIGJ1aWx0IGRvZXNuJ3QgbWVhbiBpdCdzICp1c2VkKi4gVG8gYWN0dWFsbHkgZ2V0IHRoYXQgY29kZSB0byBleGVjdXRlLCB3ZSBuZWVkIGVpdGhlciBgQVRIMTBLX0RGU19DRVJUSUZJRURgIG9yIGBBVEg5S19ERlNfQ0VSVElGSUVEYCB0byBiZSBkZWZpbmVkLiBUaG9zZSBhcmUgdGhlIGVuYWJsaW5nIGNvbmRpdGlvbnMsIHRoZSBhY3R1YWwgZ2F0ZXMgdGhhdCBuZWVkIHRvIGJlIG9wZW5lZC5cblxuTm93LCBJJ20gZ2V0dGluZyBjdXJpb3VzIGFib3V0IHRoZSBiaWdnZXIgcGljdHVyZS4gSSBzaG91bGQgcHJvYmFibHkgaW52ZXN0aWdhdGUgaG93IHdpZGVzcHJlYWQgdGhlIHVzYWdlIG9mIGBkZnNfcGF0dGVybl9kZXRlY3Rvcl9pbml0YCBhY3R1YWxseSBpcy4gQXJlIHRoZXJlIG90aGVyIHBvaW50cyBvZiBpbnRlcmFjdGlvbiB0aGF0IEknbSBtaXNzaW5nPyBUaGF0IGZ1bmN0aW9uJ3Mgc2lnbmlmaWNhbmNlIHdpbGwgYmUgaGlnaGxpZ2h0ZWQgdGhyb3VnaCB0aGF0IGFuYWx5c2lzLiBJIG5lZWQgdG8gY2hlY2sgZm9yIG90aGVyIGRlcGVuZGVuY2llcywgb3RoZXIgcGxhY2VzIGluIHRoZSBjb2RlIHRoYXQgY2FsbCB0aGF0IGluaXRpYWxpemF0aW9uIGZ1bmN0aW9uIHRvIGhhdmUgYSBnb29kIHNlbnNlIG9mIGl0cyBpbXBhY3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQxNjY5LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMDA6MTU6MjQuMzkwNjUzMTYxWiIsIlNlcSI6NDgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzE4NDU1MzMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGZzX3BhdHRlcm5fZGV0ZWN0b3JfaW5pdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmM9OTk3MT1pbnQgYXRoMTBrX21hY19yZWdpc3RlcihzdHJ1Y3QgYXRoMTBrICphcilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmMtMTAyODUtXFx0XFx0YXItXFx1MDAzZWF0aF9jb21tb24uZGVidWdfbWFzayA9IEFUSF9EQkdfREZTO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmM6MTAyODY6XFx0XFx0YXItXFx1MDAzZWRmc19kZXRlY3RvciA9IGRmc19wYXR0ZXJuX2RldGVjdG9yX2luaXQoXFx1MDAyNmFyLVxcdTAwM2VhdGhfY29tbW9uLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmMtMTAyODctXFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgICBOTDgwMjExX0RGU19VTlNFVCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jPTY1Nj1zdGF0aWMgaW50IGF0aDlrX2luaXRfc29mdGModTE2IGRldmlkLCBzdHJ1Y3QgYXRoX3NvZnRjICpzYyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9pbml0LmMtNjg1LVxcdHNjLVxcdTAwM2VzY19haCA9IGFoO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9pbml0LmM6Njg2OlxcdHNjLVxcdTAwM2VkZnNfZGV0ZWN0b3IgPSBkZnNfcGF0dGVybl9kZXRlY3Rvcl9pbml0KGNvbW1vbiwgTkw4MDIxMV9ERlNfVU5TRVQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9pbml0LmMtNjg3LVxcdHNjLVxcdTAwM2V0eDk5X3Bvd2VyID0gTUFYX1JBVEVfUE9XRVIgKyAxO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmM9MzQ4PXN0cnVjdCBkZnNfcGF0dGVybl9kZXRlY3RvciAqXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmM6MzQ5OmRmc19wYXR0ZXJuX2RldGVjdG9yX2luaXQoc3RydWN0IGF0aF9jb21tb24gKmNvbW1vbixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3BhdHRlcm5fZGV0ZWN0b3IuYy0zNTAtXFx0XFx0XFx0ICBlbnVtIG5sODAyMTFfZGZzX3JlZ2lvbnMgcmVnaW9uKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmMtMzcxLX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3BhdHRlcm5fZGV0ZWN0b3IuYzozNzI6RVhQT1JUX1NZTUJPTChkZnNfcGF0dGVybl9kZXRlY3Rvcl9pbml0KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcGF0dGVybl9kZXRlY3Rvci5oPTk1PXN0cnVjdCBkZnNfcGF0dGVybl9kZXRlY3RvciB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3BhdHRlcm5fZGV0ZWN0b3IuaC0xMTQtLyoqXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmg6MTE1OiAqIGRmc19wYXR0ZXJuX2RldGVjdG9yX2luaXQoKSAtIGNvbnN0cnVjdG9yIGZvciBwYXR0ZXJuIGRldGVjdG9yIGNsYXNzXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmgtMTE2LSAqIEBwYXJhbSByZWdpb246IERGUyBkb21haW4gdG8gYmUgdXNlZCwgY2FuIGJlIE5MODAyMTFfREZTX1VOU0VUIGF0IGNyZWF0aW9uXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3BhdHRlcm5fZGV0ZWN0b3IuaD0xMTk9ZXh0ZXJuIHN0cnVjdCBkZnNfcGF0dGVybl9kZXRlY3RvciAqXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmg6MTIwOmRmc19wYXR0ZXJuX2RldGVjdG9yX2luaXQoc3RydWN0IGF0aF9jb21tb24gKmNvbW1vbixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3BhdHRlcm5fZGV0ZWN0b3IuaC0xMjEtXFx0XFx0XFx0ICBlbnVtIG5sODAyMTFfZGZzX3JlZ2lvbnMgcmVnaW9uKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMDA6MTU6MjQuNjIyNTA0NDc0WiIsIlNlcSI6NDksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc5NzUzMzAwMzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgS2V5IERGUyBFbnRyeSBQb2ludHMqKlxuXG5Pa2F5LCBzbyBJJ3ZlIG5hcnJvd2VkIGRvd24gdGhlIGtleSBzeW1ib2xzIEkgbmVlZCB0byBmb2N1cyBvbiBmb3IgdGhpcyBERlMgYW5hbHlzaXMuIEl0IHNlZW1zIHRoZSBhY3Rpb24gaXMgYWxsIGluIGBhdGg5a2AgYW5kIGBhdGgxMGtgLiBUaGUgY3JpdGljYWwgZW50cnkgcG9pbnRzIHRvIHdhdGNoIGFyZTpcblxuKiAgIGBhdGgxMGtfd21pX2V2ZW50X2Rmc2BcbiogICBgYXRoMTBrX3dtaV9ldmVudF9waHllcnJgXG4qICAgYGF0aDlrX2Rmc19wcm9jZXNzX3BoeWVycmBcblxuTGV0J3MgcXVpY2tseSBjb25maXJtIHRoZXNlIGFyZW4ndCBzdGF0aWMgZnVuY3Rpb25zLCB3aGljaCB3b3VsZCBtYWtlIHRyYWNpbmcgdHJpY2tpZXIuIEFoYSwgYGF0aDEwa193bWlfZXZlbnRfZGZzYCBpcyByaWdodCB0aGVyZSBpbiBgYXRoMTBrL3dtaS5jYC4gR3JlYXQsIGFuZCBpdCdzIG5vdCBzdGF0aWM6IGB2b2lkIGF0aDEwa193bWlfZXZlbnRfZGZzKHN0cnVjdCBhdGgxMGsgKmFyLCBzdHJ1Y3Qgd21pX3BoeWVycl9ldl9hcmcgKnBoeWVyciwgdTY0IHRzZilgLiBQZXJmZWN0LlxuXG5Pa2F5LCBsZXQncyBtb3ZlIG9uIHRvIGBhdGgxMGtfd21pX2V2ZW50X3BoeWVycmA6IGB2b2lkIGF0aDEwa193bWlfZXZlbnRfcGh5ZXJyKHN0cnVjdCBhdGgxMGsgKmFyLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKWAuIE5vdCBzdGF0aWMgZWl0aGVyLiBHb29kIVxuXG5BbmQgZmluYWxseSwgYGF0aDlrX2Rmc19wcm9jZXNzX3BoeWVycmA6IGB2b2lkIGF0aDlrX2Rmc19wcm9jZXNzX3BoeWVycihzdHJ1Y3QgYXRoX3NvZnRjICpzYywgdm9pZCAqZGF0YSwgc3RydWN0IGF0aF9yeF9zdGF0dXMgKnJzLCB1NjQgbWFjdGltZSlgLiBBbHNvIG5vdCBzdGF0aWMuXG5cbkV4Y2VsbGVudC4gVGhlc2UgYXJlIHByZWNpc2VseSB3aGF0IEknbSBsb29raW5nIGZvci4gVGhleSBzZWVtIHRvIGJlIHRoZSBwcmltYXJ5IGVudHJ5IHBvaW50cyBmb3IgdGhlIERGUyByYWRhciBkZXRlY3Rpb24gbG9naWMgZnJvbSB0aGUgZHJpdmVyIHNpZGUsIHNvIGFueSBtb2RpZmljYXRpb24gdG8gdGhlIGRmcyBjb2RlIGlzIGdvaW5nIHRvIGJlIGludm9rZWQgZnJvbSBoZXJlLCB3aGljaCBpcyB3aGF0IEkgbmVlZCB0byB0cmFjZSBhbmQgdGVzdC4gSSBzaG91bGQgYmUgYWJsZSB0byBmb2xsb3cgdGhlc2UgY2FsbHMgaW50byB0aGUgbW9kaWZpZWQgYGRmc19wcmlfZGV0ZWN0b3IuY2AgY29kZSB0byBzZWUgZXhhY3RseSBob3cgdGhpbmdzIGFyZSBmbG93aW5nLlxuXG5Ob3csIGxldCdzIHRha2UgYSBxdWljayBsb29rIGF0IHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uczogYEFUSDEwS19ERlNfQ0VSVElGSUVEYCwgYEFUSDEwS19VU0JgLCBhbmQgYEFUSDlLX0RGU19DRVJUSUZJRURgLiBJbXBsaWVkIGFyZSBgQVRIMTBLYCBhbmQgYEFUSDlLYCwgc28gbGV0J3MgaW5jbHVkZSB0aG9zZSBmb3IgY29tcGxldGVuZXNzLiBIbW0sIGlzIGBDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNgIHJlbGF0ZWQgdG8gREZTPyBQZXJoYXBzIERGUyByZXF1aXJlcyBpdCB0byBiZSBlbmFibGVkLiBMZXQncyBkaWcgaW50byB0aGUgZGVwZW5kZW5jaWVzIG9mIGBBVEgxMEtfREZTX0NFUlRJRklFRGAgdG8gbWFrZSBzdXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0Mjc3MywiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQzOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQwMDoxNTozMi41OTc4MzczMDVaIiwiU2VxIjo1MCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMxMzg0NzAzNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQVRIMTBLX0RGU19DRVJUSUZJRURcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9LY29uZmlnPTg2PWNvbmZpZyBBVEgxMEtfVFJBQ0lOR1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9LY29uZmlnLTkyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZzo5Mzpjb25maWcgQVRIMTBLX0RGU19DRVJUSUZJRURcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWctOTQtXFx0Ym9vbCBcXFwiQXRoZXJvcyBERlMgc3VwcG9ydCBmb3IgY2VydGlmaWVkIHBsYXRmb3Jtc1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMDA6MTU6MzIuOTExNjg5NDQxWiIsIlNlcSI6NTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ3ODk1NDQyMTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlIGFuZCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipBbmFseXppbmcgdGhlIERlcGVuZGVuY2llcyBvZiBgQVRIMTBLX0RGU19DRVJUSUZJRURgKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIFdoZW4gSSBzZWUgYEFUSDEwS19ERlNfQ0VSVElGSUVEYCwgbXkgaW5pdGlhbCB0aG91Z2h0IGlzIGFsd2F5cyBhYm91dCB0aGUgaW1wbGljYXRpb25zIGZvciByZWd1bGF0b3J5IGNvbXBsaWFuY2UgYW5kLCBzcGVjaWZpY2FsbHksIER5bmFtaWMgRnJlcXVlbmN5IFNlbGVjdGlvbiAoREZTKSBpbiB0aGUgNSBHSHogYmFuZHMuIEkga25vdyB0aGlzIGxpa2VseSBzaWduaWZpZXMgdGhhdCB0aGUgc3BlY2lmaWMgQXRoZXJvcyB3aXJlbGVzcyBkcml2ZXIsIGBBVEgxMEtgLCByZXF1aXJlcyBzcGVjaWZpYyBjZXJ0aWZpY2F0aW9uIHRvIGxlZ2FsbHkgdHJhbnNtaXQgb24gdGhvc2UgREZTIGZyZXF1ZW5jaWVzIGluIGEgZ2l2ZW4gcmVndWxhdG9yeSBkb21haW4uIEl0J3Mgbm90IGp1c3QgYSBkcml2ZXIgY29uZmlndXJhdGlvbjsgaXTigJlzIGEgbGVnYWwgcmVxdWlyZW1lbnQuXG5cbkknbSBpbW1lZGlhdGVseSBjb25zaWRlcmluZyB0aGUgY29tcGxleGl0eSBvZiB0aGlzLiBUaGlzIGNvbmZpZ3VyYXRpb24gb3B0aW9uIHRpZXMgaW4gZGlyZWN0bHkgd2l0aCBob3cgdGhlIGtlcm5lbCBpbnRlcmFjdHMgd2l0aCB0aGUgaGFyZHdhcmUncyBSRiBjYXBhYmlsaXRpZXMuIFRoaXMgdGVsbHMgbWUgSSdsbCBuZWVkIHRvIGRpZyBpbnRvIHRoZSBrZXJuZWwgY29uZmlnIGZpbGVzIGFuZCBwb3RlbnRpYWxseSBpbnRvIHRoZSBkcml2ZXIgc291cmNlIGl0c2VsZi4gSSdsbCBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGV4YWN0IGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggdGhpcyBvcHRpb24gaXMgZW5hYmxlZC4gQXJlIHdlIHRhbGtpbmcgYWJvdXQgYSBoYXJkLWNvZGVkIGRlcGVuZGVuY3kgYmFzZWQgb24gdGhlIGNvdW50cnkgY29kZSBvciBhIHJ1bnRpbWUgY2hlY2ssIG9yIGJvdGg/XG5cbk15IG1pbmQgaXMgYWxyZWFkeSByYWNpbmcgdGhyb3VnaCBwb3NzaWJsZSBzY2VuYXJpb3MuIElzIHRoZSBjZXJ0aWZpY2F0aW9uIGEgc3RhdGljIHRoaW5nLCBvciBpcyBpdCBtb3JlIGNvbXBsZXggdGhhbiB0aGF0LCBkZXBlbmRpbmcgb24gdGhlIHBhcnRpY3VsYXIgaGFyZHdhcmUgcmV2aXNpb24sIGZpcm13YXJlIHZlcnNpb24sIG9yIGV2ZW4gdGhlIHJlZ3VsYXRvcnkgdmVyc2lvbiBpbiB1c2U/IEknbSBhbnRpY2lwYXRpbmcgc29tZSBsZXZlbCBvZiBpbnRlcmFjdGlvbiB3aXRoIHRoZSByZWd1bGF0b3J5IGRhdGFiYXNlLCBlaXRoZXIgbG9jYWxseSBjYWNoZWQgb3IgcXVlcmllZCBkdXJpbmcgdGhlIGRyaXZlcidzIGluaXRpYWxpemF0aW9uLiBJIGFsc28ga25vdyB0aGF0IGlmIGl0IGlzIHByZXNlbnQsIEknbGwgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgc3lzdGVtIGRldGVybWluZXMgd2hldGhlciBvciBub3QgaXQncyBjZXJ0aWZpZWQgYW5kIGhvdyB0aGUgZmlybXdhcmUgZ2V0cyBsb2FkZWQgdG8gbWF0Y2guXG5cbkknbGwgYmUgbG9va2luZyBmb3IgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMsIG5hdHVyYWxseS4gSSBuZWVkIHRvIHNlZSB3aGF0IG90aGVyIGtlcm5lbCBvcHRpb25zIG11c3QgYmUgZW5hYmxlZCBmb3IgdGhpcyB0byBldmVuICphcHBlYXIqIGFzIGEgc2VsZWN0YWJsZSBvcHRpb24uIEknbSB0aGlua2luZyBhYm91dCB3aGljaCBvdGhlciB3aXJlbGVzcyBmZWF0dXJlcywgc3VjaCBhcyByZWd1bGF0b3J5IGRvbWFpbiBzZWxlY3Rpb24gb3IgY291bnRyeSBjb2RlIGNvbmZpZ3VyYXRpb24sIG1pZ2h0IGJlIGltcGFjdGVkIGJ5IHRoaXMuIFRoaXMgYWxzbyBoaW50cyB0aGF0IHNlY3VyaXR5IGZlYXR1cmVzIHN1Y2ggYXMgV1BBMyBtYXkgYmUgaW1wYWN0ZWQgYnkgdGhlIGRyaXZlcidzIGNlcnRpZmljYXRpb24uXG5cbkZpbmFsbHksIEknbSBhbHJlYWR5IGFudGljaXBhdGluZyB0aGUgbmVlZCB0byBjcm9zcy1yZWZlcmVuY2UgdGhpcyB3aXRoIHRoZSByZWd1bGF0b3J5IGRvY3VtZW50cyBhbmQgYW55IHJlbGV2YW50IGRvY3VtZW50YXRpb24gZm9yIHRoZSBgQVRIMTBLYCBkcml2ZXIgaXRzZWxmLiBUaGlzIGFsc28gbWVhbnMgdGhhdCwgaWYgSSBhbSBnb2luZyB0byBwcm9wZXJseSBsZXZlcmFnZSB0aGlzIHNldHRpbmcsIEknbSBnb2luZyB0byBuZWVkIHRoZSBzcGVjaWZpY2F0aW9ucyBmb3IgdGhpcyBzZXR0aW5nIGZyb20gdGhlIGF0aDEwayBkcml2ZXIncyBkb2N1bWVudGF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MzkyMCwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDAwOjE1OjM3LjcwMTI0ODAzM1oiLCJTZXEiOjUyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5ODU0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogOTAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgOTA6XFx0XFx0aGVscFxcbiAgOTE6XFx0XFx0ICBTZWxlY3QgdGhpcyB0byBhdGgxMGsgdXNlIHRyYWNpbmcgaW5mcmFzdHJ1Y3R1cmUuXFxuICA5MjpcXHRcXG4gIDkzOlxcdGNvbmZpZyBBVEgxMEtfREZTX0NFUlRJRklFRFxcbiAgOTQ6XFx0XFx0Ym9vbCBcXFwiQXRoZXJvcyBERlMgc3VwcG9ydCBmb3IgY2VydGlmaWVkIHBsYXRmb3Jtc1xcXCJcXG4gIDk1OlxcdFxcdGRlcGVuZHMgb24gQVRIMTBLIFxcdTAwMjZcXHUwMDI2IENGRzgwMjExX0NFUlRJRklDQVRJT05fT05VU1xcbiAgOTY6XFx0XFx0ZGVmYXVsdCBuXFxuICA5NzpcXHRcXHRoZWxwXFxuICA5ODpcXHRcXHRUaGlzIG9wdGlvbiBlbmFibGVzIERGUyBzdXBwb3J0IGZvciBpbml0aWF0aW5nIHJhZGlhdGlvbiBvblxcbiAgOTk6XFx0XFx0YXRoMTBrLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQwMDoxNTozNy43MDEzNDkwMzNaIiwiU2VxIjo1MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzM0MzE2Njc1NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkV4YW1pbmluZyBXaXJlbGVzcyBEcml2ZXIgQ2VydGlmaWNhdGlvbiBSZXF1aXJlbWVudHMqKlxuXG5SaWdodCwgKkNGRzgwMjExX0NFUlRJRklDQVRJT05fT05VUyogaGFzIHJlYXJlZCBpdHMgaGVhZCBhZ2Fpbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCdzIHRyaWdnZXJpbmcgdGhpcyBwYXJ0aWN1bGFyIHJlcXVpcmVtZW50LiBNeSBpbW1lZGlhdGUgZm9jdXMgaXMgb24gKkFUSDlLX0RGU19DRVJUSUZJRUQqLiBUaGF0IHZhcmlhYmxlIGlzIHRoZSBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0IGRpZ2dpbmcgaW50byB0aGUgZGVwZW5kZW5jaWVzLiBVbmRlcnN0YW5kaW5nIGhvdyB0aGF0J3MgdGllZCBpbnRvIHRoZSBicm9hZGVyIGNlcnRpZmljYXRpb24gcGljdHVyZSBpcyBjcml0aWNhbC4gSSdsbCBuZWVkIHRvIHRyYWNlIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgYW5kIHRoZWlyIGludGVycmVsYXRpb25zaGlwcy4gSSB3YW50IHRvIGlkZW50aWZ5IHRoZSBkaXJlY3QgbGluayBiZXR3ZWVuIHRoZSBjZXJ0aWZpY2F0aW9uIGFuZCB0aGlzIHNwZWNpZmljIGRyaXZlciBlbGVtZW50LiBUaW1lIHRvIGRpZyBpbnRvIHRoZSBoZWFkZXJzIGFuZCBzZWUgd2hhdCB0aGV5J3JlIGRvaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NDYxNSwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM3LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMDA6MTU6NDEuMDQ0NTE4NTZaIiwiU2VxIjo1NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI4MjkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDkwLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDkwOlxcdFxcdCAgb2YgdGhlIGVsZWN0cmljIGFuZCBtYWduZXRpYyBmaWVsZCBzdHJlbmd0aCBhbmQgcG93ZXIgZGVuc2l0eSBmb3JcXG4gIDkxOlxcdFxcdCAgdHJhbnNtaXR0ZXJzIG9wZXJhdGluZyBhdCBmcmVxdWVuY2llcyBmcm9tIDMwMCBrSHogdG8gMTAwIEdIei5cXG4gIDkyOlxcdFxcdCAgUmVndWxhdG9yeSBib2RpZXMgYXJvdW5kIHRoZSB3b3JsZCByZXF1aXJlIHRoYXQgd2lyZWxlc3MgZGV2aWNlXFxuICA5MzpcXHRcXHQgIGJlIGV2YWx1YXRlZCB0byBtZWV0IHRoZSBSRiBleHBvc3VyZSBsaW1pdHMgc2V0IGZvcnRoIGluIHRoZVxcbiAgOTQ6XFx0XFx0ICBnb3Zlcm5tZW50YWwgU0FSIHJlZ3VsYXRpb25zLlxcbiAgOTU6XFx0XFxuICA5NjpcXHRjb25maWcgQVRIOUtfREZTX0NFUlRJRklFRFxcbiAgOTc6XFx0XFx0Ym9vbCBcXFwiQXRoZXJvcyBERlMgc3VwcG9ydCBmb3IgY2VydGlmaWVkIHBsYXRmb3Jtc1xcXCJcXG4gIDk4OlxcdFxcdGRlcGVuZHMgb24gQVRIOUsgXFx1MDAyNlxcdTAwMjYgQ0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTXFxuICA5OTpcXHRcXHRkZWZhdWx0IG5cXG4gMTAwOlxcdFxcdGhlbHBcXG4gMTAxOlxcdFxcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyBERlMgc3VwcG9ydCBmb3IgaW5pdGlhdGluZyByYWRpYXRpb24gb25cXG4gMTAyOlxcdFxcdCAgYXRoOWsuIFRoZXJlIGlzIG5vIHdheSB0byBkeW5hbWljYWxseSBkZXRlY3QgaWYgYSBjYXJkIHdhcyBERlNcXG4gMTAzOlxcdFxcdCAgY2VydGlmaWVkIGFuZCBhcyBzdWNoIHRoaXMgaXMgbGVmdCBhcyBhIGJ1aWxkIHRpbWUgb3B0aW9uLiBUaGlzXFxuIDEwNDpcXHRcXHQgIG9wdGlvbiBzaG91bGQgb25seSBiZSBlbmFibGVkIGJ5IHN5c3RlbSBpbnRlZ3JhdG9ycyB0aGF0IGNhblxcbiAxMDU6XFx0XFx0ICBndWFyYW50ZWUgdGhhdCBhbGwgdGhlIHBsYXRmb3JtcyB0aGF0IHRoZWlyIGtlcm5lbCB3aWxsIHJ1biBvblxcbiAxMDY6XFx0XFx0ICBoYXZlIG9idGFpbmVkIGFwcHJvcHJpYXRlIHJlZ3VsYXRvcnkgYm9keSBjZXJ0aWZpY2F0aW9uIGZvciBhXFxuIDEwNzpcXHRcXHQgIHJlc3BlY3RpdmUgQXRoZXJvcyBjYXJkIGJ5IHVzaW5nIGF0aDlrIG9uIHRoZSB0YXJnZXQgc2hpcHBpbmdcXG4gMTA4OlxcdFxcdCAgcGxhdGZvcm1zLlxcbiAxMDk6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDAwOjE1OjQxLjA0NDY0ODg0WiIsIlNlcSI6NTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg3NzQ5NTA1NjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIEF0aGVyb3MgREZTIFBSSSBEZXRlY3RvciBQYXRjaCoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93biBzeXN0ZW1hdGljYWxseS4gRmlyc3QsIHRoZSBjb3JlIHJlcXVpcmVtZW50IHNlZW1zIHRvIGJlIGBDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNgLCB3aGljaCBpcyBjcml0aWNhbCBmb3IgYm90aCB0aGUgYGF0aDEwa2AgYW5kIGBhdGg5a2AgZHJpdmVycy4gU28sIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhvc2UgYXJlIGVuYWJsZWQ6IGBBVEgxMEtgLCBgQVRIMTBLX1VTQmAsIGBBVEgxMEtfREZTX0NFUlRJRklFRGAsIGBBVEg5S2AsIGBBVEg5S19ERlNfQ0VSVElGSUVEYCwgYW5kIGBDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNgLiBgQVRIOUtgIGlzIG5vcm1hbGx5IFBDSS1vbmx5LCBidXQgaXQgY2FuIGJlIGluY2x1ZGVkLCBzbyBJJ2xsIGtlZXAgaXQgZm9yIG5vdy4gSSdsbCBhbHNvIGFkZCB0aGUgb2J2aW91cyBvbmVzOiBgTUFDODAyMTFgIGFuZCBgQ0ZHODAyMTFgLlxuXG5UaGlzIHBhdGNoIGlzIGRlZmluaXRlbHkgd29ydGggZnV6emluZzsgaXQncyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBhbHRlcmluZyBob3cgcmFkYXIgcHVsc2VzIGFyZSBkZXRlY3RlZCwgc3BlY2lmaWNhbGx5IHJlcGxhY2luZyBhIGRpdmlzaW9uIHdpdGggYSByZWNpcHJvY2FsIG11bHRpcGxpY2F0aW9uIGluIHRoZSBBdGhlcm9zIERGUyBQUkkgZGV0ZWN0b3IgbG9naWMuIEl0J3MgYWNjZXNzaWJsZSB2aWEgVVNCIGZ1enppbmcgb24gdGhlIGBhdGgxMGtfdXNiYCBkcml2ZXIgYmVjYXVzZSBXTUkgZXZlbnRzIGNvbnRhaW5pbmcgUEhZIGVycm9ycyBjYW4gdHJpZ2dlciB0aGUgREZTIHJhZGFyIHJlcG9ydCBwYXRoLiBUaGlzIGlzIGdvb2QgdG8ga25vdy5cblxuVGhlIGtleSBzeW1ib2xzIHRvIGZvY3VzIG9uIGFyZSBgYXRoMTBrX3dtaV9ldmVudF9kZnNgLCBgYXRoMTBrX3dtaV9ldmVudF9waHllcnJgLCBhbmQgYGF0aDlrX2Rmc19wcm9jZXNzX3BoeWVycmAuIEkgc2hvdWxkIGRvdWJsZS1jaGVjayB0aGF0IHRob3NlIGZ1bmN0aW9uIG5hbWVzIGFyZSBhY2N1cmF0ZTsgSSBqdXN0IHdhbnQgdG8gdmVyaWZ5IGJlZm9yZSBwcm9jZWVkaW5nLiBPa2F5LCB5ZXAsIGNvbmZpcm1lZDogYGF0aDEwa193bWlfZXZlbnRfZGZzYCB0YWtlcyBgYXRoMTBrYCBzdHJ1Y3QsIGB3bWlfcGh5ZXJyX2V2X2FyZ2AsIGFuZCBgdTY0IHRzZmAgYXMgYXJndW1lbnRzLiBgYXRoMTBrX3dtaV9ldmVudF9waHllcnJgIHJlY2VpdmVzIGBhdGgxMGtgIGFuZCBgc2tfYnVmZmAsIGFuZCBgYXRoOWtfZGZzX3Byb2Nlc3NfcGh5ZXJyYCByZXF1aXJlcyBgYXRoX3NvZnRjYCwgYSB2b2lkIHBvaW50ZXIsIGBhdGhfcnhfc3RhdHVzYCwgYW5kIGB1NjQgbWFjdGltZWAuIEdvb2QsIGV2ZXJ5dGhpbmcgbG9va3MgaW4gb3JkZXIuXG5cbkkgc2hvdWxkIGFsc28gaW52ZXN0aWdhdGUgd2hldGhlciB0aGVyZSBhcmUgb3RoZXIgcmVsZXZhbnQgZXhwb3J0ZWQgZnVuY3Rpb25zIHdpdGhpbiBgZGZzX3ByaV9kZXRlY3Rvci5jYC4gYHByaV9kZXRlY3Rvcl9pbml0YCBpcyBleHBvcnRlZCB0byBvdGhlciBmaWxlcyBpbiB0aGUgYGF0aGAgbW9kdWxlLCB3aGljaCBpcyBpbnRlcmVzdGluZywgYnV0IHRoYXQgc2VlbXMgdG8gYmUgbW9kdWxlLWxvY2FsLiBJdCBsb29rcyBsaWtlIGl0IGlzIG5vdCBleHBvcnRlZCB0byB0aGUga2VybmVsIHZpYSBgRVhQT1JUX1NZTUJPTGAsIHdoaWNoIG1lYW5zIHRoYXQgaXQgY2FuJ3QgYmUgY2FsbGVkIGZyb20gb3V0c2lkZSB0aGUgbW9kdWxlLiBUaGF0IGlzIGZpbmUsIGFzIGxvbmcgYXMgdGhlIG90aGVyIGZ1bmN0aW9ucyBhcmUgZW5vdWdoLlxuXG5BbHJpZ2h0LCB3aXRoIHRoaXMgaW5mb3JtYXRpb24sIEkgY2FuIG5vdyBiZWdpbiB0aGUgZnV6emluZyBwcm9jZXNzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NTE3OSwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYwMSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDAwOjE1OjQ5LjgxOTYwMzYxOFoiLCJTZXEiOjU2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mzc4NDUwOTIzLCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJFWFBPUlRfU1lNQk9MXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcHJpX2RldGVjdG9yLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDAwOjE1OjUwLjE5ODA2MjUzWiIsIlNlcSI6NTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYxNzExMTQxOTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB1bmRlcnN0YW5kaW5nLCBkZWxpdmVyZWQgYXMgYSBmaXJzdC1wZXJzb24gc3VtbWFyeSwga2VlcGluZyBpbiBtaW5kIEknbSBkZWFsaW5nIHdpdGggc29tZW9uZSB3aG8ncyBmYW1pbGlhciB3aXRoIHRoZSBrZXJuZWw6XG5cbioqQW5hbHlzaXMgb2YgU3ltYm9sIEV4cG9ydCoqXG5cblJpZ2h0LCBzbyBJJ3ZlIGxvb2tlZCBhdCB0aGlzLCBhbmQgdGhlIHNpdHVhdGlvbiBpcyBjbGVhci4gVGhpcyBpc24ndCBzb21ldGhpbmcgdGhhdCdzIGJlaW5nICpleHBvcnRlZCogaW4gdGhlIHR5cGljYWwgc2Vuc2UuIFdlJ3JlIG5vdCBkZWFsaW5nIHdpdGggYW4gZXh0ZXJuYWwgZXhwb3J0LiBJdCdzIGNvbmZpbmVkIHdpdGhpbiBgYXRoLmtvYCwgc3BlY2lmaWNhbGx5IHdpdGhpbiBgZGZzX3BhdHRlcm5fZGV0ZWN0b3IuY2AuIFRoYXQncyB0aGUga2V5LlxuXG5Ib3dldmVyLCBgZGZzX3BhdHRlcm5fZGV0ZWN0b3JfaW5pdGAgKmlzKiBiZWluZyBleHBvcnRlZCB1c2luZyBgRVhQT1JUX1NZTUJPTGAuIFNvIHRoYXQncyBpbXBvcnRhbnQgZm9yIHRoZSBvdmVyYWxsIHBpY3R1cmUuIFRoZXJlZm9yZSwgdGhlIG1vc3QgcmVsZXZhbnQgc3ltYm9scyB0byBmb2N1cyBvbiwgdGhlIGJlc3QgcG9pbnRzIHRvIGV4YW1pbmUsIGFyZSB0aGUgZW50cnkgcG9pbnRzIGZyb20gdGhlIGRyaXZlciBpdHNlbGYg4oCTIHRoZSBgYXRoOWtgIG9yIGBhdGgxMGtgIG1vZHVsZXMuIFRoZXknbGwgYmUgdGhlIHNvdXJjZSBvZiBjYWxscyB0aGF0IGluaXRpYXRlIHRoaXMuXG5cbkknbSBjb21mb3J0YWJsZSB3aXRoIHRoaXMgYXNzZXNzbWVudDsgdGhpcyBzaG91bGQgYmUgYWNjdXJhdGUgYmFzZWQgb24gd2hhdCBJJ3ZlIHNlZW4uIExldCdzIGxvY2sgdGhpcyBpbi4gSSdtIGdvaW5nIHRvIGNhbGwgYHNldC1yZXN1bHRzYCBub3cuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ2NDA0LCJPdXRwdXRUb2tlbnMiOjE5OCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjkyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDAwOjE1OjU2LjM2OTE3OTE4WiIsIlNlcSI6NTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzA5NzY3NDk3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJBVEgxMEtcIixcbiAgICBcIkFUSDEwS19VU0JcIixcbiAgICBcIkFUSDEwS19ERlNfQ0VSVElGSUVEXCIsXG4gICAgXCJBVEg5S1wiLFxuICAgIFwiQVRIOUtfREZTX0NFUlRJRklFRFwiLFxuICAgIFwiQ0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYXRoMTBrX3dtaV9ldmVudF9kZnNcIixcbiAgICBcImF0aDEwa193bWlfZXZlbnRfcGh5ZXJyXCIsXG4gICAgXCJhdGg5a19kZnNfcHJvY2Vzc19waHllcnJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCByZXBsYWNlcyBhIGRpdmlzaW9uIHdpdGggYSByZWNpcHJvY2FsIG11bHRpcGxpY2F0aW9uIGluIHRoZSBBdGhlcm9zIERGUyBQUkkgZGV0ZWN0b3IgbG9naWMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGFsdGVycyB0aGUgY29yZSBsb2dpYyBvZiByYWRhciBwdWxzZSBkZXRlY3Rpb24uIFRoZSBjb2RlIGlzIHJlYWNoYWJsZSB2aWEgdGhlIGF0aDEwa191c2IgZHJpdmVyIHVzaW5nIFVTQiBmdXp6aW5nLCBhcyBXTUkgZXZlbnRzIGNvbnRhaW5pbmcgUEhZIGVycm9ycyBjYW4gdHJpZ2dlciB0aGUgREZTIHJhZGFyIHJlcG9ydCBwYXRoLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkFUSDEwS1wiLFxuICAgIFwiQVRIMTBLX1VTQlwiLFxuICAgIFwiQVRIMTBLX0RGU19DRVJUSUZJRURcIixcbiAgICBcIkFUSDlLXCIsXG4gICAgXCJBVEg5S19ERlNfQ0VSVElGSUVEXCIsXG4gICAgXCJDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJhdGgxMGtfd21pX2V2ZW50X2Rmc1wiLFxuICAgIFwiYXRoMTBrX3dtaV9ldmVudF9waHllcnJcIixcbiAgICBcImF0aDlrX2Rmc19wcm9jZXNzX3BoeWVyclwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlcGxhY2VzIGEgZGl2aXNpb24gd2l0aCBhIHJlY2lwcm9jYWwgbXVsdGlwbGljYXRpb24gaW4gdGhlIEF0aGVyb3MgREZTIFBSSSBkZXRlY3RvciBsb2dpYy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgYWx0ZXJzIHRoZSBjb3JlIGxvZ2ljIG9mIHJhZGFyIHB1bHNlIGRldGVjdGlvbi4gVGhlIGNvZGUgaXMgcmVhY2hhYmxlIHZpYSB0aGUgYXRoMTBrX3VzYiBkcml2ZXIgdXNpbmcgVVNCIGZ1enppbmcsIGFzIFdNSSBldmVudHMgY29udGFpbmluZyBQSFkgZXJyb3JzIGNhbiB0cmlnZ2VyIHRoZSBERlMgcmFkYXIgcmVwb3J0IHBhdGguXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow5b2pt[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-01 23:41:01 +0000 UTC FinishedAt: 2026-07-02 00:15:58 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "665159e246749578d4e4bfe106ee3b74edcdab18", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "ATH10K", "ATH10K_USB", "ATH10K_DFS_CERTIFIED", "ATH9K", "ATH9K_DFS_CERTIFIED", "CFG80211_CERTIFICATION_ONUS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "665159e246749578d4e4bfe106ee3b74edcdab18", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "ATH10K", "ATH10K_USB", "ATH10K_DFS_CERTIFIED", "ATH9K", "ATH9K_DFS_CERTIFIED", "CFG80211_CERTIFICATION_ONUS" ], "series_id": "5bdec362-58bd-417a-817a-d672db7dbac8" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "ath10k_wmi_event_dfs", "ath10k_wmi_event_phyerr", "ath9k_dfs_process_phyerr" ], "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+CgkJCTx0ZD4yMDI2LzA3LzAyIDAwOjEzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0FUSDEwSyYjMzQ7LAogICAgJiMzNDtBVEgxMEtfVVNCJiMzNDssCiAgICAmIzM0O0FUSDEwS19ERlNfQ0VSVElGSUVEJiMzNDssCiAgICAmIzM0O0FUSDlLJiMzNDssCiAgICAmIzM0O0FUSDlLX0RGU19DRVJUSUZJRUQmIzM0OywKICAgICYjMzQ7Q0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YXRoMTBrX3dtaV9ldmVudF9kZnMmIzM0OywKICAgICYjMzQ7YXRoMTBrX3dtaV9ldmVudF9waHllcnImIzM0OywKICAgICYjMzQ7YXRoOWtfZGZzX3Byb2Nlc3NfcGh5ZXJyJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlcGxhY2VzIGEgZGl2aXNpb24gd2l0aCBhIHJlY2lwcm9jYWwgbXVsdGlwbGljYXRpb24gaW4gdGhlIEF0aGVyb3MgREZTIFBSSSBkZXRlY3RvciBsb2dpYy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgYWx0ZXJzIHRoZSBjb3JlIGxvZ2ljIG9mIHJhZGFyIHB1bHNlIGRldGVjdGlvbi4gVGhlIGNvZGUgaXMgcmVhY2hhYmxlIHZpYSB0aGUgYXRoMTBrX3VzYiBkcml2ZXIgdXNpbmcgVVNCIGZ1enppbmcsIGFzIFdNSSBldmVudHMgY29udGFpbmluZyBQSFkgZXJyb3JzIGNhbiB0cmlnZ2VyIHRoZSBERlMgcmFkYXIgcmVwb3J0IHBhdGguJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMDA6MTM8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBmYTg3NDZmMmJmY2Q3ZmJkNTFiMDU3MTIwMGE2NGE3NmY5ZmMzMDBmXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdWwgMiAwMDoxMzoyMiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3ByaV9kZXRlY3Rvci5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wcmlfZGV0ZWN0b3IuY1xuaW5kZXggMzg4ZjlkMTkxM2JkOWQuLjUyMGZkMTU2N2EwYmFkIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wcmlfZGV0ZWN0b3IuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wcmlfZGV0ZWN0b3IuY1xuQEAgLTE2LDYgJiM0MzsxNiw3IEBAXG4gXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvc2xhYi5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvc3BpbmxvY2suaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9yZWNpcHJvY2FsX2Rpdi5oXHUwMDNlXG4gXG4gI2luY2x1ZGUgXCYjMzQ7YXRoLmhcJiMzNDtcbiAjaW5jbHVkZSBcJiMzNDtkZnNfcGF0dGVybl9kZXRlY3Rvci5oXCYjMzQ7XG5AQCAtNDEsNyAmIzQzOzQyLDkgQEAgc3RydWN0IHB1bHNlX2VsZW0ge1xuICAqIHBkZV9nZXRfbXVsdGlwbGUoKSAtIGdldCBudW1iZXIgb2YgbXVsdGlwbGVzIGNvbnNpZGVyaW5nIGEgZ2l2ZW4gdG9sZXJhbmNlXG4gICogUmV0dXJuIHZhbHVlOiBmYWN0b3IgaWYgYWJzKHZhbCAtIGZhY3RvcipmcmFjdGlvbikgXHUwMDNjPSB0b2xlcmFuY2UsIDAgb3RoZXJ3aXNlXG4gICovXG4tc3RhdGljIHUzMiBwZGVfZ2V0X211bHRpcGxlKHUzMiB2YWwsIHUzMiBmcmFjdGlvbiwgdTMyIHRvbGVyYW5jZSlcbiYjNDM7c3RhdGljIHUzMiBwZGVfZ2V0X211bHRpcGxlKHUzMiB2YWwsIHUzMiBmcmFjdGlvbixcbiYjNDM7XHRcdFx0ICAgIHN0cnVjdCByZWNpcHJvY2FsX3ZhbHVlIGZyYWN0aW9uX3JlY2lwLFxuJiM0MztcdFx0XHQgICAgdTMyIHRvbGVyYW5jZSlcbiB7XG4gXHR1MzIgcmVtYWluZGVyO1xuIFx0dTMyIGZhY3RvcjtcbkBAIC01Niw4ICYjNDM7NTksOCBAQCBzdGF0aWMgdTMyIHBkZV9nZXRfbXVsdGlwbGUodTMyIHZhbCwgdTMyIGZyYWN0aW9uLCB1MzIgdG9sZXJhbmNlKVxuIFx0XHQvKiB2YWwgYW5kIGZyYWN0aW9uIGFyZSB3aXRoaW4gdG9sZXJhbmNlICovXG4gXHRcdHJldHVybiAxO1xuIFxuLVx0ZmFjdG9yID0gdmFsIC8gZnJhY3Rpb247XG4tXHRyZW1haW5kZXIgPSB2YWwgJSBmcmFjdGlvbjtcbiYjNDM7XHRmYWN0b3IgPSByZWNpcHJvY2FsX2RpdmlkZSh2YWwsIGZyYWN0aW9uX3JlY2lwKTtcbiYjNDM7XHRyZW1haW5kZXIgPSB2YWwgLSBmYWN0b3IgKiBmcmFjdGlvbjtcbiBcdGlmIChyZW1haW5kZXIgXHUwMDNlIHRvbGVyYW5jZSkge1xuIFx0XHQvKiBubyBleGFjdCBtYXRjaCAqL1xuIFx0XHRpZiAoKGZyYWN0aW9uIC0gcmVtYWluZGVyKSBcdTAwM2M9IHRvbGVyYW5jZSlcbkBAIC0yNDcsNiAmIzQzOzI1MCw5IEBAIHN0YXRpYyBib29sIHBzZXFfaGFuZGxlcl9jcmVhdGVfc2VxdWVuY2VzKHN0cnVjdCBwcmlfZGV0ZWN0b3IgKnBkZSxcbiBcdFx0cHMubGFzdF90cyA9IHRzO1xuIFx0XHRwcy5wcmkgPSBHRVRfUFJJX1RPX1VTRShwZGUtXHUwMDNlcnMtXHUwMDNlcHJpX21pbixcbiBcdFx0XHRwZGUtXHUwMDNlcnMtXHUwMDNlcHJpX21heCwgdHMgLSBwLVx1MDAzZXRzKTtcbiYjNDM7XHRcdHBzLnByaV9yZWNpcCA9IChzdHJ1Y3QgcmVjaXByb2NhbF92YWx1ZSl7fTtcbiYjNDM7XHRcdGlmIChwcy5wcmkpXG4mIzQzO1x0XHRcdHBzLnByaV9yZWNpcCA9IHJlY2lwcm9jYWxfdmFsdWUocHMucHJpKTtcbiBcdFx0cHMuZHVyID0gcHMucHJpICogKHBkZS1cdTAwM2Vycy1cdTAwM2VwcGIgLSAxKVxuIFx0XHRcdFx0JiM0MzsgMiAqIHBkZS1cdTAwM2Vycy1cdTAwM2VtYXhfcHJpX3RvbGVyYW5jZTtcbiBcbkBAIC0yNjEsNiAmIzQzOzI2Nyw3IEBAIHN0YXRpYyBib29sIHBzZXFfaGFuZGxlcl9jcmVhdGVfc2VxdWVuY2VzKHN0cnVjdCBwcmlfZGV0ZWN0b3IgKnBkZSxcbiBcdFx0XHRcdGJyZWFrO1xuIFx0XHRcdC8qIGNoZWNrIGlmIHB1bHNlIG1hdGNoIChtdWx0aSlQUkkgKi9cbiBcdFx0XHRmYWN0b3IgPSBwZGVfZ2V0X211bHRpcGxlKHBzLmxhc3RfdHMgLSBwMi1cdTAwM2V0cywgcHMucHJpLFxuJiM0MztcdFx0XHRcdFx0XHQgIHBzLnByaV9yZWNpcCxcbiBcdFx0XHRcdFx0XHQgIHBkZS1cdTAwM2Vycy1cdTAwM2VtYXhfcHJpX3RvbGVyYW5jZSk7XG4gXHRcdFx0aWYgKGZhY3RvciBcdTAwM2UgMCkge1xuIFx0XHRcdFx0cHMuY291bnQmIzQzOyYjNDM7O1xuQEAgLTMxOCw2ICYjNDM7MzI1LDcgQEAgcHNlcV9oYW5kbGVyX2FkZF90b19leGlzdGluZ19zZXFzKHN0cnVjdCBwcmlfZGV0ZWN0b3IgKnBkZSwgdTY0IHRzKVxuIFxuIFx0XHRkZWx0YV90cyA9IHRzIC0gcHMtXHUwMDNlbGFzdF90cztcbiBcdFx0ZmFjdG9yID0gcGRlX2dldF9tdWx0aXBsZShkZWx0YV90cywgcHMtXHUwMDNlcHJpLFxuJiM0MztcdFx0XHRcdFx0ICBwcy1cdTAwM2VwcmlfcmVjaXAsXG4gXHRcdFx0XHRcdCAgcGRlLVx1MDAzZXJzLVx1MDAzZW1heF9wcmlfdG9sZXJhbmNlKTtcbiBcdFx0aWYgKGZhY3RvciBcdTAwM2UgMCkge1xuIFx0XHRcdHBzLVx1MDAzZWxhc3RfdHMgPSB0cztcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3ByaV9kZXRlY3Rvci5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wcmlfZGV0ZWN0b3IuaFxuaW5kZXggODYzMzlmMmI0ZDNhOWUuLmM1MTk0NjZjZmY4YjEyIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wcmlfZGV0ZWN0b3IuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wcmlfZGV0ZWN0b3IuaFxuQEAgLTE4LDYgJiM0MzsxOCw3IEBAXG4gI2RlZmluZSBERlNfUFJJX0RFVEVDVE9SX0hcbiBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9saXN0LmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvcmVjaXByb2NhbF9kaXYuaFx1MDAzZVxuIFxuIGV4dGVybiBzdHJ1Y3QgYXRoX2Rmc19wb29sX3N0YXRzIGdsb2JhbF9kZnNfcG9vbF9zdGF0cztcbiBcbkBAIC0yNSw2ICYjNDM7MjYsNyBAQCBleHRlcm4gc3RydWN0IGF0aF9kZnNfcG9vbF9zdGF0cyBnbG9iYWxfZGZzX3Bvb2xfc3RhdHM7XG4gICogc3RydWN0IHByaV9zZXF1ZW5jZSAtIHNlcXVlbmNlIG9mIHB1bHNlcyBtYXRjaGluZyBvbmUgUFJJXG4gICogQGhlYWQ6IGxpc3RfaGVhZFxuICAqIEBwcmk6IHB1bHNlIHJlcGV0aXRpb24gaW50ZXJ2YWwgKFBSSSkgaW4gdXNlY3NcbiYjNDM7ICogQHByaV9yZWNpcDogY2FjaGVkIHJlY2lwcm9jYWwgdmFsdWUgZm9yIFBSSSBkaXZpc2lvbnNcbiAgKiBAZHVyOiBkdXJhdGlvbiBvZiBzZXF1ZW5jZSBpbiB1c2Vjc1xuICAqIEBjb3VudDogbnVtYmVyIG9mIHB1bHNlcyBpbiB0aGlzIHNlcXVlbmNlXG4gICogQGNvdW50X2ZhbHNlczogbnVtYmVyIG9mIG5vdCBtYXRjaGluZyBwdWxzZXMgaW4gdGhpcyBzZXF1ZW5jZVxuQEAgLTM1LDYgJiM0MzszNyw3IEBAIGV4dGVybiBzdHJ1Y3QgYXRoX2Rmc19wb29sX3N0YXRzIGdsb2JhbF9kZnNfcG9vbF9zdGF0cztcbiBzdHJ1Y3QgcHJpX3NlcXVlbmNlIHtcbiBcdHN0cnVjdCBsaXN0X2hlYWQgaGVhZDtcbiBcdHUzMiBwcmk7XG4mIzQzO1x0c3RydWN0IHJlY2lwcm9jYWxfdmFsdWUgcHJpX3JlY2lwO1xuIFx0dTMyIGR1cjtcbiBcdHUzMiBjb3VudDtcbiBcdHUzMiBjb3VudF9mYWxzZXM7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMDA6MTM8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QVRIMTBLJiMzNDssCiAgICAmIzM0O0FUSDEwS19VU0ImIzM0OywKICAgICYjMzQ7QVRIMTBLX0RGU19DRVJUSUZJRUQmIzM0OywKICAgICYjMzQ7QVRIOUsmIzM0OywKICAgICYjMzQ7QVRIOUtfREZTX0NFUlRJRklFRCYjMzQ7LAogICAgJiMzNDtDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDthdGgxMGtfd21pX2V2ZW50X2RmcyYjMzQ7LAogICAgJiMzNDthdGgxMGtfd21pX2V2ZW50X3BoeWVyciYjMzQ7LAogICAgJiMzNDthdGg5a19kZnNfcHJvY2Vzc19waHllcnImIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcmVwbGFjZXMgYSBkaXZpc2lvbiB3aXRoIGEgcmVjaXByb2NhbCBtdWx0aXBsaWNhdGlvbiBpbiB0aGUgQXRoZXJvcyBERlMgUFJJIGRldGVjdG9yIGxvZ2ljLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBhbHRlcnMgdGhlIGNvcmUgbG9naWMgb2YgcmFkYXIgcHVsc2UgZGV0ZWN0aW9uLiBUaGUgY29kZSBpcyByZWFjaGFibGUgdmlhIHRoZSBhdGgxMGtfdXNiIGRyaXZlciB1c2luZyBVU0IgZnV6emluZywgYXMgV01JIGV2ZW50cyBjb250YWluaW5nIFBIWSBlcnJvcnMgY2FuIHRyaWdnZXIgdGhlIERGUyByYWRhciByZXBvcnQgcGF0aC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZmE4NzQ2ZjJiZmNkN2ZiZDUxYjA1NzEyMDBhNjRhNzZmOWZjMzAwZgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgSnVsIDIgMDA6MTM6MjIgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3ByaV9kZXRlY3Rvci5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wcmlfZGV0ZWN0b3IuYwppbmRleCAzODhmOWQxOTEzYmQ5ZC4uNTIwZmQxNTY3YTBiYWQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcHJpX2RldGVjdG9yLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wcmlfZGV0ZWN0b3IuYwpAQCAtMTYsNiAmIzQzOzE2LDcgQEAKIAogI2luY2x1ZGUgJmx0O2xpbnV4L3NsYWIuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9zcGlubG9jay5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9yZWNpcHJvY2FsX2Rpdi5oJmd0OwogCiAjaW5jbHVkZSAmIzM0O2F0aC5oJiMzNDsKICNpbmNsdWRlICYjMzQ7ZGZzX3BhdHRlcm5fZGV0ZWN0b3IuaCYjMzQ7CkBAIC00MSw3ICYjNDM7NDIsOSBAQCBzdHJ1Y3QgcHVsc2VfZWxlbSB7CiAgKiBwZGVfZ2V0X211bHRpcGxlKCkgLSBnZXQgbnVtYmVyIG9mIG11bHRpcGxlcyBjb25zaWRlcmluZyBhIGdpdmVuIHRvbGVyYW5jZQogICogUmV0dXJuIHZhbHVlOiBmYWN0b3IgaWYgYWJzKHZhbCAtIGZhY3RvcipmcmFjdGlvbikgJmx0Oz0gdG9sZXJhbmNlLCAwIG90aGVyd2lzZQogICovCi1zdGF0aWMgdTMyIHBkZV9nZXRfbXVsdGlwbGUodTMyIHZhbCwgdTMyIGZyYWN0aW9uLCB1MzIgdG9sZXJhbmNlKQomIzQzO3N0YXRpYyB1MzIgcGRlX2dldF9tdWx0aXBsZSh1MzIgdmFsLCB1MzIgZnJhY3Rpb24sCiYjNDM7CQkJICAgIHN0cnVjdCByZWNpcHJvY2FsX3ZhbHVlIGZyYWN0aW9uX3JlY2lwLAomIzQzOwkJCSAgICB1MzIgdG9sZXJhbmNlKQogewogCXUzMiByZW1haW5kZXI7CiAJdTMyIGZhY3RvcjsKQEAgLTU2LDggJiM0Mzs1OSw4IEBAIHN0YXRpYyB1MzIgcGRlX2dldF9tdWx0aXBsZSh1MzIgdmFsLCB1MzIgZnJhY3Rpb24sIHUzMiB0b2xlcmFuY2UpCiAJCS8qIHZhbCBhbmQgZnJhY3Rpb24gYXJlIHdpdGhpbiB0b2xlcmFuY2UgKi8KIAkJcmV0dXJuIDE7CiAKLQlmYWN0b3IgPSB2YWwgLyBmcmFjdGlvbjsKLQlyZW1haW5kZXIgPSB2YWwgJSBmcmFjdGlvbjsKJiM0MzsJZmFjdG9yID0gcmVjaXByb2NhbF9kaXZpZGUodmFsLCBmcmFjdGlvbl9yZWNpcCk7CiYjNDM7CXJlbWFpbmRlciA9IHZhbCAtIGZhY3RvciAqIGZyYWN0aW9uOwogCWlmIChyZW1haW5kZXIgJmd0OyB0b2xlcmFuY2UpIHsKIAkJLyogbm8gZXhhY3QgbWF0Y2ggKi8KIAkJaWYgKChmcmFjdGlvbiAtIHJlbWFpbmRlcikgJmx0Oz0gdG9sZXJhbmNlKQpAQCAtMjQ3LDYgJiM0MzsyNTAsOSBAQCBzdGF0aWMgYm9vbCBwc2VxX2hhbmRsZXJfY3JlYXRlX3NlcXVlbmNlcyhzdHJ1Y3QgcHJpX2RldGVjdG9yICpwZGUsCiAJCXBzLmxhc3RfdHMgPSB0czsKIAkJcHMucHJpID0gR0VUX1BSSV9UT19VU0UocGRlLSZndDtycy0mZ3Q7cHJpX21pbiwKIAkJCXBkZS0mZ3Q7cnMtJmd0O3ByaV9tYXgsIHRzIC0gcC0mZ3Q7dHMpOwomIzQzOwkJcHMucHJpX3JlY2lwID0gKHN0cnVjdCByZWNpcHJvY2FsX3ZhbHVlKXt9OwomIzQzOwkJaWYgKHBzLnByaSkKJiM0MzsJCQlwcy5wcmlfcmVjaXAgPSByZWNpcHJvY2FsX3ZhbHVlKHBzLnByaSk7CiAJCXBzLmR1ciA9IHBzLnByaSAqIChwZGUtJmd0O3JzLSZndDtwcGIgLSAxKQogCQkJCSYjNDM7IDIgKiBwZGUtJmd0O3JzLSZndDttYXhfcHJpX3RvbGVyYW5jZTsKIApAQCAtMjYxLDYgJiM0MzsyNjcsNyBAQCBzdGF0aWMgYm9vbCBwc2VxX2hhbmRsZXJfY3JlYXRlX3NlcXVlbmNlcyhzdHJ1Y3QgcHJpX2RldGVjdG9yICpwZGUsCiAJCQkJYnJlYWs7CiAJCQkvKiBjaGVjayBpZiBwdWxzZSBtYXRjaCAobXVsdGkpUFJJICovCiAJCQlmYWN0b3IgPSBwZGVfZ2V0X211bHRpcGxlKHBzLmxhc3RfdHMgLSBwMi0mZ3Q7dHMsIHBzLnByaSwKJiM0MzsJCQkJCQkgIHBzLnByaV9yZWNpcCwKIAkJCQkJCSAgcGRlLSZndDtycy0mZ3Q7bWF4X3ByaV90b2xlcmFuY2UpOwogCQkJaWYgKGZhY3RvciAmZ3Q7IDApIHsKIAkJCQlwcy5jb3VudCYjNDM7JiM0Mzs7CkBAIC0zMTgsNiAmIzQzOzMyNSw3IEBAIHBzZXFfaGFuZGxlcl9hZGRfdG9fZXhpc3Rpbmdfc2VxcyhzdHJ1Y3QgcHJpX2RldGVjdG9yICpwZGUsIHU2NCB0cykKIAogCQlkZWx0YV90cyA9IHRzIC0gcHMtJmd0O2xhc3RfdHM7CiAJCWZhY3RvciA9IHBkZV9nZXRfbXVsdGlwbGUoZGVsdGFfdHMsIHBzLSZndDtwcmksCiYjNDM7CQkJCQkgIHBzLSZndDtwcmlfcmVjaXAsCiAJCQkJCSAgcGRlLSZndDtycy0mZ3Q7bWF4X3ByaV90b2xlcmFuY2UpOwogCQlpZiAoZmFjdG9yICZndDsgMCkgewogCQkJcHMtJmd0O2xhc3RfdHMgPSB0czsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcHJpX2RldGVjdG9yLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3ByaV9kZXRlY3Rvci5oCmluZGV4IDg2MzM5ZjJiNGQzYTllLi5jNTE5NDY2Y2ZmOGIxMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wcmlfZGV0ZWN0b3IuaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3ByaV9kZXRlY3Rvci5oCkBAIC0xOCw2ICYjNDM7MTgsNyBAQAogI2RlZmluZSBERlNfUFJJX0RFVEVDVE9SX0gKIAogI2luY2x1ZGUgJmx0O2xpbnV4L2xpc3QuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvcmVjaXByb2NhbF9kaXYuaCZndDsKIAogZXh0ZXJuIHN0cnVjdCBhdGhfZGZzX3Bvb2xfc3RhdHMgZ2xvYmFsX2Rmc19wb29sX3N0YXRzOwogCkBAIC0yNSw2ICYjNDM7MjYsNyBAQCBleHRlcm4gc3RydWN0IGF0aF9kZnNfcG9vbF9zdGF0cyBnbG9iYWxfZGZzX3Bvb2xfc3RhdHM7CiAgKiBzdHJ1Y3QgcHJpX3NlcXVlbmNlIC0gc2VxdWVuY2Ugb2YgcHVsc2VzIG1hdGNoaW5nIG9uZSBQUkkKICAqIEBoZWFkOiBsaXN0X2hlYWQKICAqIEBwcmk6IHB1bHNlIHJlcGV0aXRpb24gaW50ZXJ2YWwgKFBSSSkgaW4gdXNlY3MKJiM0MzsgKiBAcHJpX3JlY2lwOiBjYWNoZWQgcmVjaXByb2NhbCB2YWx1ZSBmb3IgUFJJIGRpdmlzaW9ucwogICogQGR1cjogZHVyYXRpb24gb2Ygc2VxdWVuY2UgaW4gdXNlY3MKICAqIEBjb3VudDogbnVtYmVyIG9mIHB1bHNlcyBpbiB0aGlzIHNlcXVlbmNlCiAgKiBAY291bnRfZmFsc2VzOiBudW1iZXIgb2Ygbm90IG1hdGNoaW5nIHB1bHNlcyBpbiB0aGlzIHNlcXVlbmNlCkBAIC0zNSw2ICYjNDM7MzcsNyBAQCBleHRlcm4gc3RydWN0IGF0aF9kZnNfcG9vbF9zdGF0cyBnbG9iYWxfZGZzX3Bvb2xfc3RhdHM7CiBzdHJ1Y3QgcHJpX3NlcXVlbmNlIHsKIAlzdHJ1Y3QgbGlzdF9oZWFkIGhlYWQ7CiAJdTMyIHByaTsKJiM0MzsJc3RydWN0IHJlY2lwcm9jYWxfdmFsdWUgcHJpX3JlY2lwOwogCXUzMiBkdXI7CiAJdTMyIGNvdW50OwogCXUzMiBjb3VudF9mYWxzZXM7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDAwOjEzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI5MTUKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAyODAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBBdGhlcm9zIERGUyBQUkkgRGV0ZWN0b3IgQ2hhbmdlKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYGRmc19wcmlfZGV0ZWN0b3IuY2AgYW5kIGBkZnNfcHJpX2RldGVjdG9yLmhgIHdpdGhpbiB0aGUgQXRoZXJvcyB3aXJlbGVzcyBkcml2ZXIgZGlyZWN0b3J5LiBMb29rcyBsaWtlIHRoZXkmIzM5O3JlIHJlcGxhY2luZyBhIHJlZ3VsYXIgZGl2aXNpb24gd2l0aCBgcmVjaXByb2NhbF9kaXZpZGVgIGluIGBwZGVfZ2V0X211bHRpcGxlYC4gVGhleSYjMzk7dmUgYWxzbyBhZGRlZCBgcHJpX3JlY2lwYCB0byB0aGUgYHByaV9zZXF1ZW5jZWAgc3RydWN0IGFuZCBpbml0aWFsaXplZCBpdCB3aXRoIGByZWNpcHJvY2FsX3ZhbHVlKHBzLnByaSlgLiBUaGlzIGlzIGEgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCBmdW5jdGlvbmFsIGNoYW5nZSDigJMgb3B0aW1pemluZyBkaXZpc2lvbiwgZXNzZW50aWFsbHkuIE5vdywgdGhlIGtleSBxdWVzdGlvbiBmb3IgbWUgaXM6IGlzIHRoaXMgcmVhY2hhYmxlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQ/CgpNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0aGF0IHRoZSBBdGhlcm9zIGRyaXZlciBpcywgYnkgaXRzIG5hdHVyZSwgdGllZCB0byBwaHlzaWNhbCBXaS1GaSBoYXJkd2FyZS4gQnV0IHdhaXQsIHRoZXJlJiMzOTtzIGBtYWM4MDIxMV9od3NpbWAuIEl0IHNpbXVsYXRlcyBXaS1GaSBoYXJkd2FyZSwgYnV0IGRvZXMgaXQgKnVzZSogdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYCBzdWJzeXN0ZW0/IE5vLCB0aGF0JiMzOTtzIGluY29ycmVjdC4gJiMzNDthdGgmIzM0OyBpcyBmb3Igc3BlY2lmaWMgaGFyZHdhcmUgZHJpdmVycyBsaWtlIGF0aDVrLCBhdGg5aywgZXRjLiBUaGUgYGRmc19wcmlfZGV0ZWN0b3IuY2AgZmlsZSBpcyBwYXJ0IG9mIGEgY29tbW9uIG1vZHVsZSBmb3IgQXRoZXJvcy4gU28sIHRoZSBxdWVzdGlvbiByZW1haW5zLiBJcyBpdCBwb3NzaWJsZSB0byByZWFjaCB0aGlzIGNvZGUgd2l0aG91dCBhY3R1YWwgaGFyZHdhcmU/CgpJIG5lZWQgdG8gbG9vayBpbnRvIHRoaXMgZnVydGhlci4gTGV0JiMzOTtzIHNlZSBpZiB0aGUgS2NvbmZpZyBvciBNYWtlZmlsZSBpbiB0aGUgQXRoZXJvcyBkaXJlY3RvcnkgZ2l2ZXMgbWUgYW55IGNsdWVzLiBUaGF0IHNob3VsZCBoZWxwIG1lIHVuZGVyc3RhbmQgaWYgdGhlcmUgYXJlIGFueSBidWlsZCBvcHRpb25zIHRoYXQgd291bGQgZW5hYmxlIHRoaXMgREZTIGZ1bmN0aW9uYWxpdHkgaW4gYSBzaW11bGF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDAwOjEzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2Rmc19wcmlfZGV0ZWN0b3ImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9NYWtlZmlsZT0xNT1hdGgtb2JqcyA6PVx0bWFpbi5vIFxcXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL01ha2VmaWxlLTE5LVx0XHRkZnNfcGF0dGVybl9kZXRlY3Rvci5vIFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvTWFrZWZpbGU6MjA6XHRcdGRmc19wcmlfZGV0ZWN0b3Iub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL01ha2VmaWxlLTIxLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcGF0dGVybl9kZXRlY3Rvci5jLTIwLSNpbmNsdWRlIFwmIzM0O2Rmc19wYXR0ZXJuX2RldGVjdG9yLmhcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcGF0dGVybl9kZXRlY3Rvci5jOjIxOiNpbmNsdWRlIFwmIzM0O2Rmc19wcmlfZGV0ZWN0b3IuaFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmMtMjItI2luY2x1ZGUgXCYjMzQ7YXRoLmhcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3ByaV9kZXRlY3Rvci5jLTIyLSNpbmNsdWRlIFwmIzM0O2Rmc19wYXR0ZXJuX2RldGVjdG9yLmhcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcHJpX2RldGVjdG9yLmM6MjM6I2luY2x1ZGUgXCYjMzQ7ZGZzX3ByaV9kZXRlY3Rvci5oXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3ByaV9kZXRlY3Rvci5jLTI0LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDAwOjEzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM4MTEKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAxNzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgTGluZSBvZiBSZWFzb25pbmcgZm9yIEF0aGVyb3MgRHJpdmVyIEZ1enppbmcqKgoKT2theSwgc28gdGhlIGBhdGhgIG1vZHVsZSBpcyBvbmx5IGJ1aWx0IHdoZW4gYENPTkZJR19BVEhfQ09NTU9OYCBpcyBzZXQuIFRoYXQmIzM5O3MgYSBzdGFydGluZyBwb2ludC4gQnV0IHRoZSByZWFsIHF1ZXN0aW9uIGlzLCBob3cgY2FuIEkgZnV6eiB0aGVzZSBBdGhlcm9zIGRyaXZlcnMgZWZmZWN0aXZlbHksIGdpdmVuIHRoZSB0eXBpY2FsIGNoYWxsZW5nZXMgd2l0aCBoYXJkd2FyZSBkcml2ZXJzPwoKU3BlY2lmaWNhbGx5LCBjYW4gSSBkbyB0aGlzICp3aXRob3V0KiBoYXZpbmcgdG8gcmVseSBvbiBwaHlzaWNhbCBoYXJkd2FyZT8gVGhhdCYjMzk7cyB0aGUgaWRlYWwgc2NlbmFyaW8uIEluIG1vc3QgY2FzZXMsIGhhcmR3YXJlIGRyaXZlcnMgYXJlIG5vdG9yaW91c2x5IGRpZmZpY3VsdCB0byByZWFjaCB3aXRoaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gV2UgbmVlZCBzb21lIHNvcnQgb2YgYnJpZGdlOiBlaXRoZXIgYSBzb2Z0d2FyZSBlbXVsYXRvciBsaWtlIGBtYWM4MDIxMV9od3NpbWAgKHdoaWNoLCBpbXBvcnRhbnRseSwgaXMgZ2VuZXJpYyBhbmQgKm5vdCogc3BlY2lmaWMgdG8gQXRoZXJvcykgb3IgYSBVU0IgZ2FkZ2V0IHNldHVwIGZvciBVU0IgZHJpdmVycywgb3Igc29tZSBQQ0kgZW11bGF0aW9uLiBCdXQgd2UgZG9uJiMzOTt0IGhhdmUgZ29vZCBQQ0kgZW11bGF0aW9uIGZvciBBdGhlcm9zIGluIFN5emthbGxlciBieSBkZWZhdWx0IOKAkyBhcGFydCBmcm9tIHNvbWUgdmVyeSBsaW1pdGVkLCBnZW5lcmljIFBDSSBmdXp6aW5nLCB3aGljaCBwcm9iYWJseSB3b24mIzM5O3QgYmUgc3VmZmljaWVudC4KCkJ1dCB3YWl0IGEgbWludXRlLi4uIGRvZXMgU3l6a2FsbGVyICphbHJlYWR5KiBmdXp6IGBhdGg5a19odGNgPyBUaGUgbGlnaHRidWxiIGdvZXMgb2ZmISBgYXRoOWtfaHRjYCBpcyBhICpVU0IqIGRyaXZlciwgaXNuJiMzOTt0IGl0PyBJZiBzbywgdGhpcyBvcGVucyB1cCBhIHdob2xlIGRpZmZlcmVudCBhdmVudWUgZm9yIHRlc3RpbmcsIHBvdGVudGlhbGx5IHdpdGhvdXQgbmVlZGluZyBjdXN0b20gUENJIGVtdWxhdGlvbi4KClNvLCBsZXQgbWUgcXVpY2tseSBjaGVjay4uLiBJIG5lZWQgdG8gc2VlIGlmIGBhdGg5a19odGNgIHVzZXMgdGhhdCBgZGZzX3ByaV9kZXRlY3Rvci5jYCBjb2RlLiBUaGF0JiMzOTtsbCBnaXZlIG1lIGEga2V5IGluc2lnaHQgaW50byB3aGF0IHBhcnRzIG9mIHRoZSBBdGhlcm9zIHN0YWNrIGFyZSBiZWluZyB0b3VjaGVkIGFuZCBjb3VsZCBiZSBmdXp6ZWQsIGFuZCB3aGV0aGVyIHRoZXJlJiMzOTtzIG92ZXJsYXAgYmV0d2VlbiB0aGUgVVNCIGRyaXZlciBhbmQgdGhlIHJlc3Qgb2YgdGhlIEF0aGVyb3MgZnJhbWV3b3JrLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDAwOjEzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2Rmc19wYXR0ZXJuX2RldGVjdG9yJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvTWFrZWZpbGU9MTU9YXRoLW9ianMgOj1cdG1haW4ubyBcXFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9NYWtlZmlsZS0xOC1cdFx0a2V5Lm8gXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9NYWtlZmlsZToxOTpcdFx0ZGZzX3BhdHRlcm5fZGV0ZWN0b3IubyBcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL01ha2VmaWxlLTIwLVx0XHRkZnNfcHJpX2RldGVjdG9yLm9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2NvcmUuaC0yNi0jaW5jbHVkZSBcJiMzNDsuLi9yZWdkLmhcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvY29yZS5oOjI3OiNpbmNsdWRlIFwmIzM0Oy4uL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmhcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvY29yZS5oLTI4LSNpbmNsdWRlIFwmIzM0O3NwZWN0cmFsLmhcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2NvcmUuaD0xMDExPXN0cnVjdCBhdGgxMGsge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvY29yZS5oLTEyMzQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2NvcmUuaDoxMjM1Olx0c3RydWN0IGRmc19wYXR0ZXJuX2RldGVjdG9yICpkZnNfZGV0ZWN0b3I7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2NvcmUuaC0xMjM2LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmM9OTk3MT1pbnQgYXRoMTBrX21hY19yZWdpc3RlcihzdHJ1Y3QgYXRoMTBrICphcilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jLTEwMjg1LVx0XHRhci1cdTAwM2VhdGhfY29tbW9uLmRlYnVnX21hc2sgPSBBVEhfREJHX0RGUztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmM6MTAyODY6XHRcdGFyLVx1MDAzZWRmc19kZXRlY3RvciA9IGRmc19wYXR0ZXJuX2RldGVjdG9yX2luaXQoXHUwMDI2YXItXHUwMDNlYXRoX2NvbW1vbixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmMtMTAyODctXHRcdFx0XHRcdFx0XHQgICAgIE5MODAyMTFfREZTX1VOU0VUKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXRoOWsuaD05ODM9c3RydWN0IGF0aF9zb2Z0YyB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2F0aDlrLmgtMTA1OS1cdHU4IGFudF90eCwgYW50X3J4O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2F0aDlrLmg6MTA2MDpcdHN0cnVjdCBkZnNfcGF0dGVybl9kZXRlY3RvciAqZGZzX2RldGVjdG9yO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2F0aDlrLmgtMTA2MS1cdHU2NCBkZnNfcHJldl9wdWxzZV90cztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGZzLmM9Mjc0PWF0aDlrX2Rmc19wcm9jZXNzX3JhZGFyX3B1bHNlKHN0cnVjdCBhdGhfc29mdGMgKnNjLCBzdHJ1Y3QgcHVsc2VfZXZlbnQgKnBlKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2Rmcy5jLTI3NS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGZzLmM6Mjc2Olx0c3RydWN0IGRmc19wYXR0ZXJuX2RldGVjdG9yICpwZCA9IHNjLVx1MDAzZWRmc19kZXRlY3RvcjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZnMuYy0yNzctXHRERlNfU1RBVF9JTkMoc2MsIHB1bHNlc19wcm9jZXNzZWQpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZnMuaC0xOS0jZGVmaW5lIEFUSDlLX0RGU19IXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGZzLmg6MjA6I2luY2x1ZGUgXCYjMzQ7Li4vZGZzX3BhdHRlcm5fZGV0ZWN0b3IuaFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2Rmcy5oLTIxLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZnNfZGVidWcuYy0yMi0jaW5jbHVkZSBcJiMzNDtkZnNfZGVidWcuaFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2Rmc19kZWJ1Zy5jOjIzOiNpbmNsdWRlIFwmIzM0Oy4uL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmhcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZnNfZGVidWcuYy0yNC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jPTY1Nj1zdGF0aWMgaW50IGF0aDlrX2luaXRfc29mdGModTE2IGRldmlkLCBzdHJ1Y3QgYXRoX3NvZnRjICpzYyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jLTY4NS1cdHNjLVx1MDAzZXNjX2FoID0gYWg7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jOjY4NjpcdHNjLVx1MDAzZWRmc19kZXRlY3RvciA9IGRmc19wYXR0ZXJuX2RldGVjdG9yX2luaXQoY29tbW9uLCBOTDgwMjExX0RGU19VTlNFVCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jLTY4Ny1cdHNjLVx1MDAzZXR4OTlfcG93ZXIgPSBNQVhfUkFURV9QT1dFUiAmIzQzOyAxO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcGF0dGVybl9kZXRlY3Rvci5jLTE5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmM6MjA6I2luY2x1ZGUgXCYjMzQ7ZGZzX3BhdHRlcm5fZGV0ZWN0b3IuaFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmMtMjEtI2luY2x1ZGUgXCYjMzQ7ZGZzX3ByaV9kZXRlY3Rvci5oXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmM9MTYxPXN0cnVjdCBjaGFubmVsX2RldGVjdG9yIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3BhdHRlcm5fZGV0ZWN0b3IuYy0xNjctLyogY2hhbm5lbF9kZXRlY3Rvcl9yZXNldCgpIC0gcmVzZXQgZGV0ZWN0b3IgbGluZXMgZm9yIGEgZ2l2ZW4gY2hhbm5lbCAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmM6MTY4OnN0YXRpYyB2b2lkIGNoYW5uZWxfZGV0ZWN0b3JfcmVzZXQoc3RydWN0IGRmc19wYXR0ZXJuX2RldGVjdG9yICpkcGQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3BhdHRlcm5fZGV0ZWN0b3IuYy0xNjktXHRcdFx0XHQgICBzdHJ1Y3QgY2hhbm5lbF9kZXRlY3RvciAqY2QpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmMtMTc4LS8qIGNoYW5uZWxfZGV0ZWN0b3JfZXhpdCgpIC0gZGVzdHJ1Y3RvciAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmM6MTc5OnN0YXRpYyB2b2lkIGNoYW5uZWxfZGV0ZWN0b3JfZXhpdChzdHJ1Y3QgZGZzX3BhdHRlcm5fZGV0ZWN0b3IgKmRwZCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcGF0dGVybl9kZXRlY3Rvci5jLTE4MC1cdFx0XHRcdCAgc3RydWN0IGNoYW5uZWxfZGV0ZWN0b3IgKmNkKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcGF0dGVybl9kZXRlY3Rvci5jPTE5Nj1zdGF0aWMgc3RydWN0IGNoYW5uZWxfZGV0ZWN0b3IgKlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmM6MTk3OmNoYW5uZWxfZGV0ZWN0b3JfY3JlYXRlKHN0cnVjdCBkZnNfcGF0dGVybl9kZXRlY3RvciAqZHBkLCB1MTYgZnJlcSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcGF0dGVybl9kZXRlY3Rvci5jLTE5OC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmM9MjM2PXN0YXRpYyBzdHJ1Y3QgY2hhbm5lbF9kZXRlY3RvciAqXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3BhdHRlcm5fZGV0ZWN0b3IuYzoyMzc6Y2hhbm5lbF9kZXRlY3Rvcl9nZXQoc3RydWN0IGRmc19wYXR0ZXJuX2RldGVjdG9yICpkcGQsIHUxNiBmcmVxKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmMtMjM4LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3BhdHRlcm5fZGV0ZWN0b3IuYy0yNTEtLyogZHBkX3Jlc2V0KCk6IHJlc2V0IGFsbCBjaGFubmVsIGRldGVjdG9ycyAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmM6MjUyOnN0YXRpYyB2b2lkIGRwZF9yZXNldChzdHJ1Y3QgZGZzX3BhdHRlcm5fZGV0ZWN0b3IgKmRwZClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcGF0dGVybl9kZXRlY3Rvci5jLTI1My17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmMtMjU4LX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcGF0dGVybl9kZXRlY3Rvci5jOjI1OTpzdGF0aWMgdm9pZCBkcGRfZXhpdChzdHJ1Y3QgZGZzX3BhdHRlcm5fZGV0ZWN0b3IgKmRwZClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcGF0dGVybl9kZXRlY3Rvci5jLTI2MC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmM9MjY3PXN0YXRpYyBib29sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3BhdHRlcm5fZGV0ZWN0b3IuYzoyNjg6ZHBkX2FkZF9wdWxzZShzdHJ1Y3QgZGZzX3BhdHRlcm5fZGV0ZWN0b3IgKmRwZCwgc3RydWN0IHB1bHNlX2V2ZW50ICpldmVudCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcGF0dGVybl9kZXRlY3Rvci5jLTI2OS1cdCAgICAgIHN0cnVjdCByYWRhcl9kZXRlY3Rvcl9zcGVjcyAqcnMpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmM9MzA5PXN0YXRpYyBzdHJ1Y3QgYXRoX2Rmc19wb29sX3N0YXRzXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3BhdHRlcm5fZGV0ZWN0b3IuYzozMTA6ZHBkX2dldF9zdGF0cyhzdHJ1Y3QgZGZzX3BhdHRlcm5fZGV0ZWN0b3IgKmRwZClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcGF0dGVybl9kZXRlY3Rvci5jLTMxMS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmMtMzE0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmM6MzE1OnN0YXRpYyBib29sIGRwZF9zZXRfZG9tYWluKHN0cnVjdCBkZnNfcGF0dGVybl9kZXRlY3RvciAqZHBkLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmMtMzE2LVx0XHRcdCAgIGVudW0gbmw4MDIxMV9kZnNfcmVnaW9ucyByZWdpb24pXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmMtMzM5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmM6MzQwOnN0YXRpYyBjb25zdCBzdHJ1Y3QgZGZzX3BhdHRlcm5fZGV0ZWN0b3IgZGVmYXVsdF9kcGQgPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3BhdHRlcm5fZGV0ZWN0b3IuYy0zNDEtXHQuZXhpdFx0XHQ9IGRwZF9leGl0LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcGF0dGVybl9kZXRlY3Rvci5jLTM0Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcGF0dGVybl9kZXRlY3Rvci5jOjM0ODpzdHJ1Y3QgZGZzX3BhdHRlcm5fZGV0ZWN0b3IgKlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmM6MzQ5OmRmc19wYXR0ZXJuX2RldGVjdG9yX2luaXQoc3RydWN0IGF0aF9jb21tb24gKmNvbW1vbixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcGF0dGVybl9kZXRlY3Rvci5jLTM1MC1cdFx0XHQgIGVudW0gbmw4MDIxMV9kZnNfcmVnaW9ucyByZWdpb24pXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3BhdHRlcm5fZGV0ZWN0b3IuYy0zNTEte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmM6MzUyOlx0c3RydWN0IGRmc19wYXR0ZXJuX2RldGVjdG9yICpkcGQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3BhdHRlcm5fZGV0ZWN0b3IuYy0zNTMtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmMtMzcxLX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcGF0dGVybl9kZXRlY3Rvci5jOjM3MjpFWFBPUlRfU1lNQk9MKGRmc19wYXR0ZXJuX2RldGVjdG9yX2luaXQpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcGF0dGVybl9kZXRlY3Rvci5oPTcxPXN0cnVjdCByYWRhcl9kZXRlY3Rvcl9zcGVjcyB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmgtODQtLyoqXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3BhdHRlcm5fZGV0ZWN0b3IuaDo4NTogKiBzdHJ1Y3QgZGZzX3BhdHRlcm5fZGV0ZWN0b3IgLSBERlMgcGF0dGVybiBkZXRlY3RvclxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmgtODYtICogQGV4aXQoKTogZGVzdHJ1Y3RvclxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcGF0dGVybl9kZXRlY3Rvci5oLTk0LSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmg6OTU6c3RydWN0IGRmc19wYXR0ZXJuX2RldGVjdG9yIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcGF0dGVybl9kZXRlY3Rvci5oOjk2Olx0dm9pZCAoKmV4aXQpKHN0cnVjdCBkZnNfcGF0dGVybl9kZXRlY3RvciAqZHBkKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcGF0dGVybl9kZXRlY3Rvci5oOjk3Olx0Ym9vbCAoKnNldF9kZnNfZG9tYWluKShzdHJ1Y3QgZGZzX3BhdHRlcm5fZGV0ZWN0b3IgKmRwZCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcGF0dGVybl9kZXRlY3Rvci5oLTk4LVx0XHRcdCAgIGVudW0gbmw4MDIxMV9kZnNfcmVnaW9ucyByZWdpb24pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmg6OTk6XHRib29sICgqYWRkX3B1bHNlKShzdHJ1Y3QgZGZzX3BhdHRlcm5fZGV0ZWN0b3IgKmRwZCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcGF0dGVybl9kZXRlY3Rvci5oLTEwMC1cdFx0XHQgIHN0cnVjdCBwdWxzZV9ldmVudCAqcGUsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmgtMTAyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmg6MTAzOlx0c3RydWN0IGF0aF9kZnNfcG9vbF9zdGF0cyAoKmdldF9zdGF0cykoc3RydWN0IGRmc19wYXR0ZXJuX2RldGVjdG9yICpkcGQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmgtMTA0LVx0ZW51bSBubDgwMjExX2Rmc19yZWdpb25zIHJlZ2lvbjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3BhdHRlcm5fZGV0ZWN0b3IuaC0xMTQtLyoqXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3BhdHRlcm5fZGV0ZWN0b3IuaDoxMTU6ICogZGZzX3BhdHRlcm5fZGV0ZWN0b3JfaW5pdCgpIC0gY29uc3RydWN0b3IgZm9yIHBhdHRlcm4gZGV0ZWN0b3IgY2xhc3NcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcGF0dGVybl9kZXRlY3Rvci5oLTExNi0gKiBAcGFyYW0gcmVnaW9uOiBERlMgZG9tYWluIHRvIGJlIHVzZWQsIGNhbiBiZSBOTDgwMjExX0RGU19VTlNFVCBhdCBjcmVhdGlvblxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcGF0dGVybl9kZXRlY3Rvci5oLTExOC0gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcGF0dGVybl9kZXRlY3Rvci5oOjExOTpleHRlcm4gc3RydWN0IGRmc19wYXR0ZXJuX2RldGVjdG9yICpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcGF0dGVybl9kZXRlY3Rvci5oOjEyMDpkZnNfcGF0dGVybl9kZXRlY3Rvcl9pbml0KHN0cnVjdCBhdGhfY29tbW9uICpjb21tb24sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3BhdHRlcm5fZGV0ZWN0b3IuaC0xMjEtXHRcdFx0ICBlbnVtIG5sODAyMTFfZGZzX3JlZ2lvbnMgcmVnaW9uKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3ByaV9kZXRlY3Rvci5jLTIxLSNpbmNsdWRlIFwmIzM0O2F0aC5oXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3ByaV9kZXRlY3Rvci5jOjIyOiNpbmNsdWRlIFwmIzM0O2Rmc19wYXR0ZXJuX2RldGVjdG9yLmhcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcHJpX2RldGVjdG9yLmMtMjMtI2luY2x1ZGUgXCYjMzQ7ZGZzX3ByaV9kZXRlY3Rvci5oXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMDA6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzUyMQoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDYzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkNoZWNraW5nIERGUyBJbml0aWFsaXphdGlvbiBhbmQgVXNhZ2UqKgoKT2theSwgc28gYGRmc19wYXR0ZXJuX2RldGVjdG9yX2luaXRgIGlzIGEga2V5IGZ1bmN0aW9uLCBpdCYjMzk7cyBleHBvc2VkIGFuZCBzZWVtcyB0byBiZSB1dGlsaXplZCBieSBib3RoIGBhdGg5a2AgYW5kIGBhdGgxMGtgLiBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgYGF0aDlrX2h0Y2AgZml0cyBpbnRvIHRoaXMgcGljdHVyZS4gTXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzOiBkb2VzIGBhdGg5a19odGNgIGFjdHVhbGx5IGxldmVyYWdlIGFueXRoaW5nIHdpdGhpbiBgZGZzLmNgPyBJdCYjMzk7cyBlc3NlbnRpYWwgSSB2ZXJpZnkgd2hldGhlciBERlMgc3VwcG9ydCBpcyBldmVuIGNvbXBpbGVkIGludG8gdGhlIGBhdGg5a19odGNgIG1vZHVsZS4gVGhhdCYjMzk7cyB0aGUgZmlyc3QgdGhpbmcgSSYjMzk7bGwgY2hlY2suCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMDA6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YXRoOWtfZGZzX3Byb2Nlc3NfcmFkYXJfcHVsc2UmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZnMuYz0yNzM9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZnMuYzoyNzQ6YXRoOWtfZGZzX3Byb2Nlc3NfcmFkYXJfcHVsc2Uoc3RydWN0IGF0aF9zb2Z0YyAqc2MsIHN0cnVjdCBwdWxzZV9ldmVudCAqcGUpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGZzLmMtMjc1LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGZzLmM9Mjg5PXZvaWQgYXRoOWtfZGZzX3Byb2Nlc3NfcGh5ZXJyKHN0cnVjdCBhdGhfc29mdGMgKnNjLCB2b2lkICpkYXRhLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZnMuYy0zNTItXHRpZiAoYXJkLnB1bHNlX2J3X2luZm8gXHUwMDI2IFBSSV9DSF9SQURBUl9GT1VORClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZnMuYzozNTM6XHRcdGF0aDlrX2Rmc19wcm9jZXNzX3JhZGFyX3B1bHNlKHNjLCBcdTAwMjZwZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGZzLmMtMzU0LVx0aWYgKElTX0NIQU5fSFQ0MChhaC1cdTAwM2VjdXJjaGFuKSBcdTAwMjZcdTAwMjZcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGZzLmMtMzU2LVx0XHRwZS5mcmVxICYjNDM7PSBJU19DSEFOX0hUNDBQTFVTKGFoLVx1MDAzZWN1cmNoYW4pID8gMjAgOiAtMjA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGZzLmM6MzU3Olx0XHRhdGg5a19kZnNfcHJvY2Vzc19yYWRhcl9wdWxzZShzYywgXHUwMDI2cGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2Rmcy5jLTM1OC1cdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAwMDoxMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4MTM0CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6CgoqKkRpZ2dpbmcgaW50byBgYXRoOWtfZGZzX3Byb2Nlc3NfcGh5ZXJyYCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYGF0aDlrX2Rmc19wcm9jZXNzX3BoeWVycmAgYW5kIHRoZSBmaXJzdCBxdWVzdGlvbiB0aGF0IHBvcHMgaW50byBteSBoZWFkLCBsaWtlIHdpdGggYW55IGNyaXRpY2FsIGZ1bmN0aW9uIGluIHRoZSBkcml2ZXIsIGlzICYjMzQ7V2hlcmUgdGhlIGhlY2sgaXMgdGhpcyBiZWluZyBjYWxsZWQgZnJvbT8mIzM0OyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgY2FsbCBzdGFjayB0byBmdWxseSBncmFzcCBpdHMgcHVycG9zZSBhbmQgaW1wYWN0LiBJIGNhbiYjMzk7dCBqdXN0IGRpdmUgaW50byB0aGUgY29kZSBpdHNlbGYgd2l0aG91dCBrbm93aW5nIHRoZSBjb250ZXh0IGluIHdoaWNoIGl0IG9wZXJhdGVzLiBLbm93aW5nIHRoZSBjYWxsaW5nIGZ1bmN0aW9ucyB3aWxsIGdpdmUgbWUgYSB2aXRhbCB1bmRlcnN0YW5kaW5nIG9mIHRoZSB0aW1pbmcgYW5kIGNvbmRpdGlvbnMgcmVsYXRlZCB0byB0aGUgdXNlIG9mIHRoZSBmdW5jdGlvbi4gSXMgaXQgZnJvbSBpbnRlcnJ1cHQgY29udGV4dD8gVGFza2xldD8gQSB1c2VyLXNwYWNlIHRocmVhZD8gS25vd2luZyB0aGlzIGlzIHZpdGFsIHRvIHByb3Blcmx5IHVuZGVyc3RhbmQgd2hhdCBwcm9ibGVtcyBjb3VsZCBhcmlzZSBmcm9tIHVzZSBvZiB0aGUgZnVuY3Rpb24uIFVuZGVyc3RhbmRpbmcgd2hlcmUgdGhlIGZ1bmN0aW9uIGlzIGNhbGxlZCBmcm9tIGlzIG15IHN0YXJ0aW5nIHBvaW50IHRvIHVuZGVyc3RhbmRpbmcgdGhlIGJpZyBwaWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAwMDoxMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthdGg5a19kZnNfcHJvY2Vzc19waHllcnImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZnMuYz0yNzQ9YXRoOWtfZGZzX3Byb2Nlc3NfcmFkYXJfcHVsc2Uoc3RydWN0IGF0aF9zb2Z0YyAqc2MsIHN0cnVjdCBwdWxzZV9ldmVudCAqcGUpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2Rmcy5jLTI4OC0gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZnMuYzoyODk6dm9pZCBhdGg5a19kZnNfcHJvY2Vzc19waHllcnIoc3RydWN0IGF0aF9zb2Z0YyAqc2MsIHZvaWQgKmRhdGEsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGZzLmMtMjkwLVx0XHRcdCAgICAgIHN0cnVjdCBhdGhfcnhfc3RhdHVzICpycywgdTY0IG1hY3RpbWUpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2Rmcy5jLTM0Ni1cdGF0aF9kYmcoY29tbW9uLCBERlMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGZzLmM6MzQ3Olx0XHRcJiMzNDthdGg5a19kZnNfcHJvY2Vzc19waHllcnI6IHR5cGU9JWQsIGZyZXE9JWQsIHRzPSVsbHUsIFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2Rmcy5jLTM0OC1cdFx0XCYjMzQ7d2lkdGg9JWQsIHJzc2k9JWQsIGRlbHRhX3RzPSVsbHVcXG5cJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2Rmcy5oLTIzLS8qKlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2Rmcy5oOjI0OiAqIGF0aDlrX2Rmc19wcm9jZXNzX3BoeWVyciAtIHByb2Nlc3MgcmFkYXIgUEhZIGVycm9yXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGZzLmgtMjUtICogQHNjOiBhdGhfc29mdGNcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGZzLmgtMzYtICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGZzLmg6Mzc6dm9pZCBhdGg5a19kZnNfcHJvY2Vzc19waHllcnIoc3RydWN0IGF0aF9zb2Z0YyAqc2MsIHZvaWQgKmRhdGEsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGZzLmgtMzgtXHRcdFx0ICAgICAgc3RydWN0IGF0aF9yeF9zdGF0dXMgKnJzLCB1NjQgbWFjdGltZSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2Rmcy5oPTQwPXN0YXRpYyBpbmxpbmUgdm9pZFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2Rmcy5oOjQxOmF0aDlrX2Rmc19wcm9jZXNzX3BoeWVycihzdHJ1Y3QgYXRoX3NvZnRjICpzYywgdm9pZCAqZGF0YSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZnMuaC00Mi1cdFx0XHQgc3RydWN0IGF0aF9yeF9zdGF0dXMgKnJzLCB1NjQgbWFjdGltZSkgeyB9XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3JlY3YuYz04MDY9c3RhdGljIGludCBhdGg5a19yeF9za2JfcHJlcHJvY2VzcyhzdHJ1Y3QgYXRoX3NvZnRjICpzYyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvcmVjdi5jLTg4MC1cdFx0aWYgKGh3LVx1MDAzZWNvbmYucmFkYXJfZW5hYmxlZCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3JlY3YuYzo4ODE6XHRcdFx0YXRoOWtfZGZzX3Byb2Nlc3NfcGh5ZXJyKHNjLCBoZHIsIHJ4X3N0YXRzLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3JlY3YuYy04ODItXHRcdFx0XHRcdFx0IHJ4X3N0YXR1cy1cdTAwM2VtYWN0aW1lKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMDA6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTExNwoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDQ0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgaXQgd2VyZSBteSBvd246CgoqKkludmVzdGlnYXRpbmcgQXRoZXJvcyBEcml2ZXIgQ29kZSBQYXRocyoqCgpPa2F5LCBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGUgQXRoZXJvcyB3aXJlbGVzcyBkcml2ZXIuIFNwZWNpZmljYWxseSwgSSYjMzk7dmUgZ290IG15IGV5ZSBvbiBgYXRoOWtfcnhfc2tiX3ByZXByb2Nlc3NgIOKAkyB0aGF0JiMzOTtzIHRoZSBmdW5jdGlvbiByZXNwb25zaWJsZSBmb3IgaW5pdGlhbCBwcm9jZXNzaW5nIG9mIHJlY2VpdmVkIFNLQnMuIEkga25vdyBpdCYjMzk7cyBsb2NhdGVkIHdpdGhpbiBgYXRoOWsvcmVjdi5jYC4gIE5vdywgdGhlIGNyaXRpY2FsIHF1ZXN0aW9uIGlzLCBkb2VzIHRoZSBgYXRoOWtfaHRjYCBkcml2ZXIgKmFsc28qIHV0aWxpemUgY29kZSB3aXRoaW4gYGF0aDlrL3JlY3YuY2A/ICBJIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIHRoZXJlJiMzOTtzIGNvZGUgcmV1c2Ugb3IgaWYgdGhlc2UgYXJlIHN0cmljdGx5IGRpc3RpbmN0IGNvZGUgcGF0aHMgZm9yIGRpZmZlcmVudCBBdGhlcm9zIGhhcmR3YXJlIGltcGxlbWVudGF0aW9ucyAob3IgZ2VuZXJhdGlvbnMpLiBVbmRlcnN0YW5kaW5nIHRoZSBkZXBlbmRlbmN5IHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoZXNlIHR3byBjb21wb25lbnRzIGlzIGNydWNpYWwgZm9yIGRpYWdub3NpbmcgYSBwb3RlbnRpYWwgcGVyZm9ybWFuY2UgYm90dGxlbmVjaywgb3IgcGVyaGFwcyB0cmFja2luZyBhIGJ1ZyByZXBvcnQuIEkmIzM5O2xsIG5lZWQgdG8gY29uZmlybSB0aGF0IGBhdGg5a19odGNgIGlzIGNhbGxpbmcgdGhhdCBwYXJ0aWN1bGFyIHNlY3Rpb24gb2YgdGhlIGNvZGUsIG9yIGRldGVybWluZSB3aGF0ICpvdGhlciogcG90ZW50aWFsIGNhbGwgZ3JhcGhzIGludm9sdmUgdGhlIGByZWN2LmNgIGZpbGUuIFRpbWUgdG8gZGl2ZSBpbnRvIHRoZSBjYWxsIGdyYXBocyBhbmQgdW5kZXJzdGFuZCB0aGlzIGZsb3cuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDAwOjEzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3JlY3ZcXC5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGU9Mj1hdGg5ay15ICYjNDM7PVx0YmVhY29uLm8gXFxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGUtNS1cdFx0bWFpbi5vIFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGU6NjpcdFx0cmVjdi5vIFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGUtNy1cdFx0eG1pdC5vIFxcXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDAwOjEzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk1MzcKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiA1NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzaW5nOgoKKipXaXJlbGVzcyBEcml2ZXIgRGVlcCBEaXZlKioKCkhtbSwgbm8sIHRoYXQgaW5pdGlhbCBhc3N1bXB0aW9uIGFib3V0IGBhdGg5ay15YCBpcyB3cm9uZy4gVGhhdCYjMzk7cyBzcGVjaWZpY2FsbHkgZm9yIHRoZSBgYXRoOWsua29gIFBDSSBkcml2ZXIsIG5vdCB0aGUgSFRDIHZlcnNpb24uIEkgbmVlZCB0byBrZWVwIHRoZSBhcmNoaXRlY3R1cmUgc3RyYWlnaHQuIE9rYXksIHNvIEkga25vdyBgYXRoOWtfaHRjYCBoYXMgaXRzIG93biwgc2VwYXJhdGUgTWFrZWZpbGUuIFdoZXJlIGRvIEkgZ28gZnJvbSBoZXJlPyBMZXQmIzM5O3Mgem9vbSBpbiBvbiB0aGUgcmVjZWl2ZSBwYXRo4oCmIEkmIzM5O2xsIGJldCB0aGUgcmVsZXZhbnQgY29kZSBJJiMzOTttIGxvb2tpbmcgZm9yIGlzIGluIGBhdGg5ay9odGNfZHJ2X3JlY3YuY2Agb3Igc29tZXRoaW5nIHNpbWlsYXIuIFRpbWUgdG8gY3JhY2sgb3BlbiB0aGF0IGZpbGUgYW5kIHNlZSB3aGF0JiMzOTtzIHdoYXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDAwOjEzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2F0aDlrX2Rmc19wcm9jZXNzX3BoeWVyciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2Rmcy5jPTI3ND1hdGg5a19kZnNfcHJvY2Vzc19yYWRhcl9wdWxzZShzdHJ1Y3QgYXRoX3NvZnRjICpzYywgc3RydWN0IHB1bHNlX2V2ZW50ICpwZSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGZzLmMtMjg4LSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2Rmcy5jOjI4OTp2b2lkIGF0aDlrX2Rmc19wcm9jZXNzX3BoeWVycihzdHJ1Y3QgYXRoX3NvZnRjICpzYywgdm9pZCAqZGF0YSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZnMuYy0yOTAtXHRcdFx0ICAgICAgc3RydWN0IGF0aF9yeF9zdGF0dXMgKnJzLCB1NjQgbWFjdGltZSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGZzLmMtMzQ2LVx0YXRoX2RiZyhjb21tb24sIERGUyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZnMuYzozNDc6XHRcdFwmIzM0O2F0aDlrX2Rmc19wcm9jZXNzX3BoeWVycjogdHlwZT0lZCwgZnJlcT0lZCwgdHM9JWxsdSwgXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGZzLmMtMzQ4LVx0XHRcJiMzNDt3aWR0aD0lZCwgcnNzaT0lZCwgZGVsdGFfdHM9JWxsdVxcblwmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGZzLmgtMjMtLyoqXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGZzLmg6MjQ6ICogYXRoOWtfZGZzX3Byb2Nlc3NfcGh5ZXJyIC0gcHJvY2VzcyByYWRhciBQSFkgZXJyb3JcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZnMuaC0yNS0gKiBAc2M6IGF0aF9zb2Z0Y1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZnMuaC0zNi0gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZnMuaDozNzp2b2lkIGF0aDlrX2Rmc19wcm9jZXNzX3BoeWVycihzdHJ1Y3QgYXRoX3NvZnRjICpzYywgdm9pZCAqZGF0YSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZnMuaC0zOC1cdFx0XHQgICAgICBzdHJ1Y3QgYXRoX3J4X3N0YXR1cyAqcnMsIHU2NCBtYWN0aW1lKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGZzLmg9NDA9c3RhdGljIGlubGluZSB2b2lkXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGZzLmg6NDE6YXRoOWtfZGZzX3Byb2Nlc3NfcGh5ZXJyKHN0cnVjdCBhdGhfc29mdGMgKnNjLCB2b2lkICpkYXRhLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2Rmcy5oLTQyLVx0XHRcdCBzdHJ1Y3QgYXRoX3J4X3N0YXR1cyAqcnMsIHU2NCBtYWN0aW1lKSB7IH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvcmVjdi5jPTgwNj1zdGF0aWMgaW50IGF0aDlrX3J4X3NrYl9wcmVwcm9jZXNzKHN0cnVjdCBhdGhfc29mdGMgKnNjLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9yZWN2LmMtODgwLVx0XHRpZiAoaHctXHUwMDNlY29uZi5yYWRhcl9lbmFibGVkKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvcmVjdi5jOjg4MTpcdFx0XHRhdGg5a19kZnNfcHJvY2Vzc19waHllcnIoc2MsIGhkciwgcnhfc3RhdHMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvcmVjdi5jLTg4Mi1cdFx0XHRcdFx0XHQgcnhfc3RhdHVzLVx1MDAzZW1hY3RpbWUpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAwMDoxMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDUyOQoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDY5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludmVzdGlnYXRpbmcgREZTIEVycm9yIEhhbmRsaW5nIGluIEF0aGVyb3MgRHJpdmVycyoqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byBob3cgdGhlc2UgQXRoZXJvcyBkcml2ZXJzIGhhbmRsZSBERlMgKER5bmFtaWMgRnJlcXVlbmN5IFNlbGVjdGlvbikgYW5kIHRoZSBwaHlzaWNhbCBsYXllciBlcnJvcnMgdGhhdCB0cmlnZ2VyIGl0LiBJIHNlZSB0aGF0IGBhdGg5a19kZnNfcHJvY2Vzc19waHllcnJgIGlzIHNwZWNpZmljYWxseSBjYWxsZWQgZnJvbSB3aXRoaW4gYGF0aDlrL3JlY3YuY2AuIFRoYXQmIzM5O3MgYSBjbGVhciBzdGFydGluZyBwb2ludCBmb3IgdW5kZXJzdGFuZGluZyB0aGUgYGF0aDlrYCBERlMgYmVoYXZpb3IuIEJ1dCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBhcmNoaXRlY3R1cmUgZGlmZmVycyBmcm9tIG90aGVyIGRyaXZlcnMuCgpNeSBpbW1lZGlhdGUgcXVlc3Rpb24gaXM6IHdoYXQgYWJvdXQgYGF0aDEwa2A/IEl0JiMzOTtzIGEgbmV3ZXIgZ2VuZXJhdGlvbiwgYW5kIGl0JiMzOTtzIGFsc28gcmVsZXZhbnQuIERvZXMgaXQgZXZlbiB1c2UgYSBVU0IgaW50ZXJmYWNlLCBvciBpcyBpdCBzb2xlbHkgUENJZT8gSWYgaXQgZG9lcyB1c2UgVVNCLCB0aGF0JiMzOTtzIGNydWNpYWwgYmVjYXVzZSBVU0IgaW50cm9kdWNlcyBpdHMgb3duIGNvbXBsZXhpdGllcyB0byBkcml2ZXIgZGVzaWduLiBMZXQgbWUgcXVpY2tseSBjaGVjazsgSSYjMzk7bSBiZXR0aW5nIHRoYXQgYGF0aDEwa2Agd291bGQgaGF2ZSBhIGB1c2IuY2AgZmlsZSBzb21ld2hlcmUuIEJpbmdvISBJdCBkb2VzLiBOb3csIHRoZSBrZXkgaXMgdG8gc2VlIHdoZXRoZXIgdGhhdCBgdXNiLmNgIGZpbGUgY29udGFpbnMgdGhlIGxvZ2ljIGZvciBERlMgc3VwcG9ydC4gSXMgdGhlIGhhbmRsaW5nIG9mIFBIWSBlcnJvcnMgZGlmZmVyZW50IGluIHRoZSBVU0IgdmVyc2lvbj8gVGhhdCYjMzk7cyB3aGF0IEkgaGF2ZSB0byBmaW5kIG91dC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMDA6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGZzX3BhdHRlcm5fZGV0ZWN0b3ImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2NvcmUuaC0yNi0jaW5jbHVkZSBcJiMzNDsuLi9yZWdkLmhcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvY29yZS5oOjI3OiNpbmNsdWRlIFwmIzM0Oy4uL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmhcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvY29yZS5oLTI4LSNpbmNsdWRlIFwmIzM0O3NwZWN0cmFsLmhcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2NvcmUuaD0xMDExPXN0cnVjdCBhdGgxMGsge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvY29yZS5oLTEyMzQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2NvcmUuaDoxMjM1Olx0c3RydWN0IGRmc19wYXR0ZXJuX2RldGVjdG9yICpkZnNfZGV0ZWN0b3I7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2NvcmUuaC0xMjM2LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmM9OTk3MT1pbnQgYXRoMTBrX21hY19yZWdpc3RlcihzdHJ1Y3QgYXRoMTBrICphcilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jLTEwMjg1LVx0XHRhci1cdTAwM2VhdGhfY29tbW9uLmRlYnVnX21hc2sgPSBBVEhfREJHX0RGUztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmM6MTAyODY6XHRcdGFyLVx1MDAzZWRmc19kZXRlY3RvciA9IGRmc19wYXR0ZXJuX2RldGVjdG9yX2luaXQoXHUwMDI2YXItXHUwMDNlYXRoX2NvbW1vbixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmMtMTAyODctXHRcdFx0XHRcdFx0XHQgICAgIE5MODAyMTFfREZTX1VOU0VUKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMDA6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTEyNTkKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAxOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBhbmFseXppbmcgdGhpcyBjb2RlOgoKKipBbmFseXppbmcgdGhlIFVzYWdlIG9mIGBkZnNfZGV0ZWN0b3JgIGluIGBhdGgxMGtgKioKCk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoZXJlIHRoZSBgZGZzX2RldGVjdG9yYCBmdW5jdGlvbiBpcyBiZWluZyB1dGlsaXplZCB3aXRoaW4gdGhlIGBhdGgxMGtgIGRyaXZlci4gVGhhdCYjMzk7cyBhIHByZXR0eSBzdHJhaWdodGZvcndhcmQgdGFzay4gSSYjMzk7bGwgbmVlZCB0byB1c2UgbXkgdXN1YWwgY29kZS1kaXZpbmcgdGVjaG5pcXVlcyB0byB0cmFjayBkb3duIGFsbCB0aGUgY2FsbHMgdG8gdGhhdCBmdW5jdGlvbi4KCk15IGluaXRpYWwgYXBwcm9hY2ggd2lsbCBiZSB0byBsZXZlcmFnZSBteSBlZGl0b3ImIzM5O3Mgc2VhcmNoIGZ1bmN0aW9uLCBsaWtlbHkgd2l0aCBhICYjMzQ7ZmluZCBpbiBmaWxlcyYjMzQ7IHRvb2wuIEkmIzM5O2xsIHNlYXJjaCB0aGUgZW50aXJlIGBhdGgxMGtgIGNvZGViYXNlIGZvciB0aGUgZXhhY3Qgc3RyaW5nICYjMzQ7ZGZzX2RldGVjdG9yJiMzNDsuIFRoaXMgc2hvdWxkIGdpdmUgbWUgYSBsaXN0IG9mIGFsbCBpbnN0YW5jZXMgd2hlcmUgdGhlIGZ1bmN0aW9uIG5hbWUgYXBwZWFycywgaW5jbHVkaW5nIGJvdGggY2FsbHMgYW5kIGRlY2xhcmF0aW9ucy4KCk9uY2UgSSYjMzk7dmUgZ290IHRoYXQgbGlzdCwgSSYjMzk7bGwgbmVlZCB0byBzaWZ0IHRocm91Z2ggdGhlIHJlc3VsdHMuIEkmIzM5O2xsIGZvY3VzIG9uIHRoZSAqY2FsbHMqIHRvIGBkZnNfZGV0ZWN0b3JgLCByYXRoZXIgdGhhbiB0aGUgZGVmaW5pdGlvbiBpdHNlbGYgKHVubGVzcyBJIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoZSBhcmd1bWVudHMpLiBJJiMzOTtsbCB3YW50IHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgb2YgZWFjaCBjYWxsOiB3aGVyZSBpcyBpdCBoYXBwZW5pbmcgKHdoaWNoIGZpbGUsIHdoaWNoIGZ1bmN0aW9uKSwgYW5kIHdoYXQgcGFyYW1ldGVycyBhcmUgYmVpbmcgcGFzc2VkIHRvIGl0LiBUaGlzIHdpbGwgZ2l2ZSBtZSBhIGdvb2QgdW5kZXJzdGFuZGluZyBvZiB3aGF0IHRoZSBkcml2ZXIgaXMgZG9pbmcgd2l0aCB0aGlzIERGUyBkZXRlY3Rpb24gbWVjaGFuaXNtLgoKSSYjMzk7bGwgYmUgcGF5aW5nIGNsb3NlIGF0dGVudGlvbiB0byBhbnkgY29uZGl0aW9uYWwgc3RhdGVtZW50cyBvciBmbGFncyBhcm91bmQgdGhlIGNhbGxzLiBJcyBpdCBvbmx5IHVzZWQgaW4gc3BlY2lmaWMgcmVndWxhdG9yeSBkb21haW5zPyBBcmUgdGhlcmUgZGlmZmVyZW50IGNhbGxzIGJhc2VkIG9uIHRoZSBoYXJkd2FyZSBjb25maWd1cmF0aW9uPyBVbmRlcnN0YW5kaW5nIHRoZXNlIGRldGFpbHMgaXMga2V5LgoKQXMgSSBhbmFseXplIGVhY2ggY2FsbCwgSSYjMzk7bGwgc3RhcnQgbWVudGFsbHkgYnVpbGRpbmcgYSBtYXAgb2YgaG93IGBkZnNfZGV0ZWN0b3JgIGZpdHMgaW50byB0aGUgYnJvYWRlciBERlMgKER5bmFtaWMgRnJlcXVlbmN5IFNlbGVjdGlvbikgaGFuZGxpbmcgd2l0aGluIGBhdGgxMGtgLiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciByZWxhdGlvbnNoaXBzIGJldHdlZW4gY2FsbHMsIHBvdGVudGlhbCBpbnRlcmFjdGlvbiB3aXRoIG90aGVyIERGUy1yZWxhdGVkIGZ1bmN0aW9ucyBvciBkYXRhIHN0cnVjdHVyZXMsIGFuZCB0aGUgb3ZlcmFsbCBjb250cm9sIGZsb3cuCgpVbHRpbWF0ZWx5LCBJIHdhbnQgdG8gZm9ybSBhIGNvbXBsZXRlIG1lbnRhbCBtb2RlbCBvZiBob3cgdGhlIGBkZnNfZGV0ZWN0b3JgIGZ1bmN0aW9uIGlzIHVzZWQuIFRoaXMgd2lsbCBoZWxwIG1lIGRpYWdub3NlIHBvdGVudGlhbCBpc3N1ZXMsIHVuZGVyc3RhbmQgdGhlIGRyaXZlciYjMzk7cyBiZWhhdmlvciBpbiBzcGVjaWZpYyBzY2VuYXJpb3MsIG9yLCBpZiBuZWVkZWQsIG1vZGlmeSB0aGUgREZTIGZ1bmN0aW9uYWxpdHkuIFRoZSBnb2FsIGlzIHRvIGRldmVsb3AgYSByb2J1c3QgdW5kZXJzdGFuZGluZyBvZiBob3cgYGF0aDEwa2AgaW1wbGVtZW50cyBERlMgZGV0ZWN0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAwMDoxNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkZnNfZGV0ZWN0b3ImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2NvcmUuaD0xMDExPXN0cnVjdCBhdGgxMGsge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvY29yZS5oLTEyMzQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2NvcmUuaDoxMjM1Olx0c3RydWN0IGRmc19wYXR0ZXJuX2RldGVjdG9yICpkZnNfZGV0ZWN0b3I7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2NvcmUuaC0xMjM2LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvZGVidWcuYz0xNzk4PXN0YXRpYyBzc2l6ZV90IGF0aDEwa19yZWFkX2Rmc19zdGF0cyhzdHJ1Y3QgZmlsZSAqZmlsZSwgY2hhciBfX3VzZXIgKnVzZXJfYnVmLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvZGVidWcuYy0xODA5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9kZWJ1Zy5jOjE4MTA6XHRpZiAoIWFyLVx1MDAzZWRmc19kZXRlY3Rvcikge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9kZWJ1Zy5jLTE4MTEtXHRcdGxlbiAmIzQzOz0gc2NucHJpbnRmKGJ1ZiAmIzQzOyBsZW4sIHNpemUgLSBsZW4sIFwmIzM0O0RGUyBub3QgZW5hYmxlZFxcblwmIzM0Oyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9kZWJ1Zy5jLTE4MTUtXHRhci1cdTAwM2VkZWJ1Zy5kZnNfcG9vbF9zdGF0cyA9XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2RlYnVnLmM6MTgxNjpcdFx0XHRhci1cdTAwM2VkZnNfZGV0ZWN0b3ItXHUwMDNlZ2V0X3N0YXRzKGFyLVx1MDAzZWRmc19kZXRlY3Rvcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2RlYnVnLmMtMTgxNy1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jPTM1MTA9c3RhdGljIHZvaWQgYXRoMTBrX3JlZ2RfdXBkYXRlKHN0cnVjdCBhdGgxMGsgKmFyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmMtMzUyNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmM6MzUyNTpcdGlmIChJU19FTkFCTEVEKENPTkZJR19BVEgxMEtfREZTX0NFUlRJRklFRCkgXHUwMDI2XHUwMDI2IGFyLVx1MDAzZWRmc19kZXRlY3Rvcikge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYzozNTI2Olx0XHRubF9kZnNfcmVnID0gYXItXHUwMDNlZGZzX2RldGVjdG9yLVx1MDAzZXJlZ2lvbjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmMtMzUyNy1cdFx0d21pX2Rmc19yZWcgPSBhdGgxMGtfbWFjX2dldF9kZnNfcmVnaW9uKG5sX2Rmc19yZWcpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmM9MzU2MT1zdGF0aWMgdm9pZCBhdGgxMGtfcmVnX25vdGlmaWVyKHN0cnVjdCB3aXBoeSAqd2lwaHksXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYy0zNTY5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYzozNTcwOlx0aWYgKElTX0VOQUJMRUQoQ09ORklHX0FUSDEwS19ERlNfQ0VSVElGSUVEKSBcdTAwMjZcdTAwMjYgYXItXHUwMDNlZGZzX2RldGVjdG9yKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jLTM1NzEtXHRcdGF0aDEwa19kYmcoYXIsIEFUSDEwS19EQkdfUkVHVUxBVE9SWSwgXCYjMzQ7ZGZzIHJlZ2lvbiAweCV4XFxuXCYjMzQ7LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYy0zNTcyLVx0XHRcdCAgIHJlcXVlc3QtXHUwMDNlZGZzX3JlZ2lvbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jOjM1NzM6XHRcdHJlc3VsdCA9IGFyLVx1MDAzZWRmc19kZXRlY3Rvci1cdTAwM2VzZXRfZGZzX2RvbWFpbihhci1cdTAwM2VkZnNfZGV0ZWN0b3IsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jLTM1NzQtXHRcdFx0XHRcdFx0XHQgIHJlcXVlc3QtXHUwMDNlZGZzX3JlZ2lvbik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYz05OTcxPWludCBhdGgxMGtfbWFjX3JlZ2lzdGVyKHN0cnVjdCBhdGgxMGsgKmFyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmMtMTAyODUtXHRcdGFyLVx1MDAzZWF0aF9jb21tb24uZGVidWdfbWFzayA9IEFUSF9EQkdfREZTO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYzoxMDI4NjpcdFx0YXItXHUwMDNlZGZzX2RldGVjdG9yID0gZGZzX3BhdHRlcm5fZGV0ZWN0b3JfaW5pdChcdTAwMjZhci1cdTAwM2VhdGhfY29tbW9uLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYy0xMDI4Ny1cdFx0XHRcdFx0XHRcdCAgICAgTkw4MDIxMV9ERlNfVU5TRVQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYy0xMDI4OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmM6MTAyODk6XHRcdGlmICghYXItXHUwMDNlZGZzX2RldGVjdG9yKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYy0xMDI5MC1cdFx0XHRhdGgxMGtfd2FybihhciwgXCYjMzQ7ZmFpbGVkIHRvIGluaXRpYWxpc2UgREZTIHBhdHRlcm4gZGV0ZWN0b3JcXG5cJiMzNDspO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmMtMTAyOTUtXHRcdGF0aDEwa19lcnIoYXIsIFwmIzM0O2ZhaWxlZCB0byBkZXJpdmUgcmVnZG9tOiAlZFxcblwmIzM0OywgcmV0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmM6MTAyOTY6XHRcdGdvdG8gZXJyX2Rmc19kZXRlY3Rvcl9leGl0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYy0xMDI5Ny1cdH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jLTEwMzA2LVx0XHRhdGgxMGtfZXJyKGFyLCBcJiMzNDtmYWlsZWQgdG8gaW5pdGlhbGlzZSByZWd1bGF0b3J5OiAlaVxcblwmIzM0OywgcmV0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmM6MTAzMDc6XHRcdGdvdG8gZXJyX2Rmc19kZXRlY3Rvcl9leGl0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYy0xMDMwOC1cdH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jLTEwMzM1LVx0XHRhdGgxMGtfZXJyKGFyLCBcJiMzNDtmYWlsZWQgdG8gcmVnaXN0ZXIgaWVlZTgwMjExOiAlZFxcblwmIzM0OywgcmV0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmM6MTAzMzY6XHRcdGdvdG8gZXJyX2Rmc19kZXRlY3Rvcl9leGl0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYy0xMDMzNy1cdH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jLTEwMzU2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYzoxMDM1NzplcnJfZGZzX2RldGVjdG9yX2V4aXQ6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jOjEwMzU4Olx0aWYgKElTX0VOQUJMRUQoQ09ORklHX0FUSDEwS19ERlNfQ0VSVElGSUVEKSBcdTAwMjZcdTAwMjYgYXItXHUwMDNlZGZzX2RldGVjdG9yKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYzoxMDM1OTpcdFx0YXItXHUwMDNlZGZzX2RldGVjdG9yLVx1MDAzZWV4aXQoYXItXHUwMDNlZGZzX2RldGVjdG9yKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmMtMTAzNjAtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYz0xMDM2OT12b2lkIGF0aDEwa19tYWNfdW5yZWdpc3RlcihzdHJ1Y3QgYXRoMTBrICphcilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jLTEwMzcyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYzoxMDM3MzpcdGlmIChJU19FTkFCTEVEKENPTkZJR19BVEgxMEtfREZTX0NFUlRJRklFRCkgXHUwMDI2XHUwMDI2IGFyLVx1MDAzZWRmc19kZXRlY3RvcilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmM6MTAzNzQ6XHRcdGFyLVx1MDAzZWRmc19kZXRlY3Rvci1cdTAwM2VleGl0KGFyLVx1MDAzZWRmc19kZXRlY3Rvcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jLTEwMzc1LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvd21pLmM9NDA1MT1zdGF0aWMgdm9pZCBhdGgxMGtfZGZzX3JhZGFyX3JlcG9ydChzdHJ1Y3QgYXRoMTBrICphcixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3dtaS5jLTQwODQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3dtaS5jOjQwODU6XHRpZiAoIWFyLVx1MDAzZWRmc19kZXRlY3RvcilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvd21pLmMtNDA4Ni1cdFx0cmV0dXJuO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvd21pLmMtNDEyNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvd21pLmM6NDEyNzpcdGlmICghYXItXHUwMDNlZGZzX2RldGVjdG9yLVx1MDAzZWFkZF9wdWxzZShhci1cdTAwM2VkZnNfZGV0ZWN0b3IsIFx1MDAyNnBlLCBcdTAwMjZycykpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvd21pLmMtNDEyOC1cdFx0YXRoMTBrX2RiZyhhciwgQVRIMTBLX0RCR19SRUdVTEFUT1JZLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvd21pLmMtNDEzMy1cdGlmICgodGVzdF9iaXQoV01JX1NFUlZJQ0VfSE9TVF9ERlNfQ0hFQ0tfU1VQUE9SVCwgYXItXHUwMDNld21pLnN2Y19tYXApKSBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvd21pLmM6NDEzNDpcdCAgICBhci1cdTAwM2VkZnNfZGV0ZWN0b3ItXHUwMDNlcmVnaW9uID09IE5MODAyMTFfREZTX0ZDQykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway93bWkuYy00MTM1LVx0XHQvKiBDb25zZWN1dGl2ZSByYWRhciBpbmRpY2F0aW9ucyBuZWVkIG5vdCBiZVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAwMDoxNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzk3MAoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDExOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbnZlc3RpZ2F0aW5nIFJhZGFyIERldGVjdGlvbiBpbiBhdGgxMGsgYW5kIFJlbGF0ZWQgRHJpdmVycyoqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byBob3cgcmFkYXIgZGV0ZWN0aW9uIHdvcmtzIHdpdGhpbiB0aGUgYGF0aDEwa2Agd2lyZWxlc3MgZHJpdmVyLiBTcGVjaWZpY2FsbHksIHRoZSBgZGZzX2RldGVjdG9yYCBmdW5jdGlvbiBzZWVtcyB0byBiZSBjZW50cmFsLCBhbmQgaXQmIzM5O3MgYmVpbmcgaW52b2tlZCB3aXRoaW4gYGF0aDEwa19kZnNfcmFkYXJfcmVwb3J0YCwgd2hpY2gsIGFzIEkgdW5kZXJzdGFuZCBpdCwgaXMgdHJpZ2dlcmVkIGJ5IFdNSSAoV2luZG93cyBNYW5hZ2VtZW50IEluc3RydW1lbnRhdGlvbikgZXZlbnRzLiBUaGF0IG1ha2VzIHNlbnNlLCBhIHNpZ25hbCBmcm9tIHRoZSBoYXJkd2FyZSB0aGF0IGl0IGRldGVjdHMgcmFkYXIuCgpOb3csIGEgcXVpY2sgc2lkZSB0aG91Z2h0LCBkb2VzIGBhdGgxMGtgIHN1cHBvcnQgVVNCPyBPZiBjb3Vyc2UsIHRoZSBgYXRoMTBrX3VzYmAgbW9kdWxlIGNvbmZpcm1zIHRoYXQuIEl0IHdvdWxkIGJlIG9kZCBpZiBpdCBkaWRuJiMzOTt0LiBBbmQgaWYgaXQmIzM5O3MgYSBmdWxsIE1BQyBkcml2ZXIsIGFzIGl0IGFwcGVhcnMgdG8gYmUsIGl0IHNlZW1zIGhpZ2hseSBsaWtlbHkgdGhhdCBgYXRoMTBrX3VzYmAgd291bGQgYWxzbyBoYW5kbGUgV01JIGV2ZW50cyBpbiBhIHNpbWlsYXIgbWFubmVyLgoKV2FpdCBhIG1vbWVudCwgSSBqdXN0IHJlbWVtYmVyZWQsIGBhdGg5a19odGNgIGlzICphbHNvKiBhIFVTQiBkcml2ZXIuIEkgaGFkbiYjMzk7dCBjb25zaWRlcmVkIGl0LCBidXQgaXQgbWlnaHQgdXNlIGEgc2ltaWxhciBhcHByb2FjaCwgYW5kIGl0JiMzOTtzIGVzc2VudGlhbCBJIGNoZWNrLiBJIHNob3VsZCB2ZXJpZnkgaWYgYGF0aDlrX2h0Y2AgYWxzbyB1dGlsaXplcyBgZGZzX2RldGVjdG9yYC4gVGhpcyBpcyBpbXBvcnRhbnQsIGFzIHVuZGVyc3RhbmRpbmcgdGhlIGJyb2FkZXIgbGFuZHNjYXBlIG9mIGhvdyByYWRhciBkZXRlY3Rpb24gaXMgaGFuZGxlZCBhY3Jvc3MgZGlmZmVyZW50IFVTQi1iYXNlZCBBdGhlcm9zIGRyaXZlcnMgd2lsbCBiZSBpbnZhbHVhYmxlIGZvciB0aGUgcHJvamVjdCBJJiMzOTttIHdvcmtpbmcgb24uIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlIGEgY29tcHJlaGVuc2l2ZSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBpbXBsZW1lbnRhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMDA6MTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGZzX2RldGVjdG9yJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXRoOWsuaD05ODM9c3RydWN0IGF0aF9zb2Z0YyB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2F0aDlrLmgtMTA1OS1cdHU4IGFudF90eCwgYW50X3J4O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2F0aDlrLmg6MTA2MDpcdHN0cnVjdCBkZnNfcGF0dGVybl9kZXRlY3RvciAqZGZzX2RldGVjdG9yO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2F0aDlrLmgtMTA2MS1cdHU2NCBkZnNfcHJldl9wdWxzZV90cztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGZzLmM9Mjc0PWF0aDlrX2Rmc19wcm9jZXNzX3JhZGFyX3B1bHNlKHN0cnVjdCBhdGhfc29mdGMgKnNjLCBzdHJ1Y3QgcHVsc2VfZXZlbnQgKnBlKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2Rmcy5jLTI3NS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGZzLmM6Mjc2Olx0c3RydWN0IGRmc19wYXR0ZXJuX2RldGVjdG9yICpwZCA9IHNjLVx1MDAzZWRmc19kZXRlY3RvcjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZnMuYy0yNzctXHRERlNfU1RBVF9JTkMoc2MsIHB1bHNlc19wcm9jZXNzZWQpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZnNfZGVidWcuYz0zND1zdGF0aWMgc3NpemVfdCByZWFkX2ZpbGVfZGZzKHN0cnVjdCBmaWxlICpmaWxlLCBjaGFyIF9fdXNlciAqdXNlcl9idWYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2Rmc19kZWJ1Zy5jLTUyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2Rmc19kZWJ1Zy5jOjUzOlx0aWYgKCFzYy1cdTAwM2VkZnNfZGV0ZWN0b3IpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZnNfZGVidWcuYy01NC1cdFx0bGVuICYjNDM7PSBzY25wcmludGYoYnVmICYjNDM7IGxlbiwgc2l6ZSAtIGxlbixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGZzX2RlYnVnLmMtNTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGZzX2RlYnVnLmM6NTk6XHRkZnNfcG9vbF9zdGF0cyA9IHNjLVx1MDAzZWRmc19kZXRlY3Rvci1cdTAwM2VnZXRfc3RhdHMoc2MtXHUwMDNlZGZzX2RldGVjdG9yKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZnNfZGVidWcuYy02MC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGZzX2RlYnVnLmMtNzItXHRcdFx0IFwmIzM0OyhjdXJyZW50IERGUyByZWdpb246ICVkKVxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZnNfZGVidWcuYzo3MzpcdFx0XHQgc2MtXHUwMDNlZGZzX2RldGVjdG9yLVx1MDAzZXJlZ2lvbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGZzX2RlYnVnLmMtNzQtXHRBVEg5S19ERlNfU1RBVChcJiMzNDtQdWxzZSBldmVudHMgcHJvY2Vzc2VkICBcJiMzNDssIHB1bHNlc19wcm9jZXNzZWQpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9pbml0LmM9MjQ5PXN0YXRpYyB2b2lkIGF0aDlrX3JlZ19ub3RpZmllcihzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9pbml0LmMtMjU5LVx0Lyogc3luY2hyb25pemUgREZTIGRldGVjdG9yIGlmIHJlZ3VsYXRvcnkgZG9tYWluIGNoYW5nZWQgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9pbml0LmM6MjYwOlx0aWYgKHNjLVx1MDAzZWRmc19kZXRlY3RvciAhPSBOVUxMKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2luaXQuYzoyNjE6XHRcdHNjLVx1MDAzZWRmc19kZXRlY3Rvci1cdTAwM2VzZXRfZGZzX2RvbWFpbihzYy1cdTAwM2VkZnNfZGV0ZWN0b3IsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jLTI2Mi1cdFx0XHRcdFx0XHQgcmVxdWVzdC1cdTAwM2VkZnNfcmVnaW9uKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jPTY1Nj1zdGF0aWMgaW50IGF0aDlrX2luaXRfc29mdGModTE2IGRldmlkLCBzdHJ1Y3QgYXRoX3NvZnRjICpzYyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jLTY4NS1cdHNjLVx1MDAzZXNjX2FoID0gYWg7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jOjY4NjpcdHNjLVx1MDAzZWRmc19kZXRlY3RvciA9IGRmc19wYXR0ZXJuX2RldGVjdG9yX2luaXQoY29tbW9uLCBOTDgwMjExX0RGU19VTlNFVCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jLTY4Ny1cdHNjLVx1MDAzZXR4OTlfcG93ZXIgPSBNQVhfUkFURV9QT1dFUiAmIzQzOyAxO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9pbml0LmM9MTA4OT1zdGF0aWMgdm9pZCBhdGg5a19kZWluaXRfc29mdGMoc3RydWN0IGF0aF9zb2Z0YyAqc2MpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2luaXQuYy0xMTAxLVx0YXRoOWtfaHdfZGVpbml0KHNjLVx1MDAzZXNjX2FoKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9pbml0LmM6MTEwMjpcdGlmIChzYy1cdTAwM2VkZnNfZGV0ZWN0b3IgIT0gTlVMTClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9pbml0LmM6MTEwMzpcdFx0c2MtXHUwMDNlZGZzX2RldGVjdG9yLVx1MDAzZWV4aXQoc2MtXHUwMDNlZGZzX2RldGVjdG9yKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9pbml0LmMtMTEwNC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMDA6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTU1NzUKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAzOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIHNlZS4uLgoKKipEaXZpbmcgaW50byB0aGUgQXRoZXJvcyBEcml2ZXIgTGFuZHNjYXBlKioKCkhtbSwgc28gYGF0aDlrL2luaXQuY2AgaXMgZGVmaW5pdGVseSBwYXJ0IG9mIHRoZSBgYXRoOWsua29gIFBDSSBtb2R1bGUuIFRoYXQmIzM5O3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBOb3csIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgYWxsIGZpdHMgdG9nZXRoZXIsIEkgbmVlZCB0byBzZWUgaG93IHRoZSBgYXRoOWtfaHRjYCBkcml2ZXIgZ2V0cyBpbml0aWFsaXplZC4gVW5kZXJzdGFuZGluZyBpdHMgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UgaXMga2V5IHRvIGdyYXNwaW5nIGhvdyB0aGUgZW50aXJlIEF0aGVyb3Mgc3lzdGVtIGZ1bmN0aW9ucywgc2luY2UgdGhlIEhUQyBkcml2ZXIgb3BlcmF0ZXMgaW4gYSBjb21wbGV0ZWx5IGRpZmZlcmVudCB3YXkgdG8gdGhlIFBDSSBkcml2ZXIuIEkgY2FuIHN0YXJ0IGJ5IGxvb2tpbmcgZm9yIGFueSBob29rcyByZWxhdGVkIHRvIGBhdGg5a19odGNgLiBIb3BlZnVsbHkgdGhlIGluaXRpYWxpemF0aW9uIGlzIGRvbmUgaW4gYSBjbGVhciBhbmQgb3JnYW5pc2VkIG1hbm5lciwgaXQgd2lsbCBnaXZlIG1lIGEgZ3JlYXRlciBncmFzcCBvbiB0aGUgc3RydWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAwMDoxNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2Rmc19kZXRlY3RvciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAwMDoxNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTgxOQoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDUyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludmVzdGlnYXRpbmcgdGhlIFVzZSBvZiBERlMgRGV0ZWN0aW9uIGluIEF0aGVyb3MgV2lyZWxlc3MgRHJpdmVycyoqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGVzZSBBdGhlcm9zIHdpcmVsZXNzIGRyaXZlcnMuIFNwZWNpZmljYWxseSwgSSB3YXMgbG9va2luZyBhdCBgYXRoOWtfaHRjYCBhbmQgcmVhbGl6ZWQgaXQgZG9lc24mIzM5O3QgdXRpbGl6ZSB0aGUgYGRmc19kZXRlY3RvcmAgZnVuY3Rpb25hbGl0eS4gTXkgbmV4dCB0aG91Z2h0IGlzLCB3aGF0IGFib3V0IHRoZSBuZXdlciwgbW9yZSBhZHZhbmNlZCBkcml2ZXJzPyBEb2VzIGBhdGgxMGtgIG1ha2UgdXNlIG9mIGl0PyBUaGF0JiMzOTtzIHRoZSBsb2dpY2FsIHByb2dyZXNzaW9uLiBUbyBhbnN3ZXIgdGhhdCBxdWVzdGlvbiwgSSBuZWVkIHRvIGNoZWNrIHRoZSBVU0IgdmFyaWFudCwgYGF0aDEwa191c2JgLiBMZXQmIzM5O3MgZGl2ZSBpbiB0aGVyZSBhbmQgc2VlIHdoYXQgd2UgY2FuIGZpbmQuIEkmIzM5O20gZ29pbmcgdG8gcXVpY2tseSByZXZpZXcgaXRzIGltcGxlbWVudGF0aW9uIHRvIHVuZGVyc3RhbmQgaG93IGl0IGhhbmRsZXMgRHluYW1pYyBGcmVxdWVuY3kgU2VsZWN0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAwMDoxNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthdGgxMGtfdXNiJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9NYWtlZmlsZT0zND1hdGgxMGtfc2Rpby15ICYjNDM7PSBzZGlvLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvTWFrZWZpbGUtMzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL01ha2VmaWxlOjM2Om9iai0kKENPTkZJR19BVEgxMEtfVVNCKSAmIzQzOz0gYXRoMTBrX3VzYi5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL01ha2VmaWxlOjM3OmF0aDEwa191c2IteSAmIzQzOz0gdXNiLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvTWFrZWZpbGUtMzgtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTg6c3RhdGljIHZvaWQgYXRoMTBrX3VzYl9wb3N0X3JlY3ZfdHJhbnNmZXJzKHN0cnVjdCBhdGgxMGsgKmFyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxOTpcdFx0XHRcdFx0ICAgc3RydWN0IGF0aDEwa191c2JfcGlwZSAqcmVjdl9waXBlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMjAtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYz0zNT1zdGF0aWMgc3RydWN0IGF0aDEwa191cmJfY29udGV4dCAqXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjM2OmF0aDEwa191c2JfYWxsb2NfdXJiX2Zyb21fcGlwZShzdHJ1Y3QgYXRoMTBrX3VzYl9waXBlICpwaXBlKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0zNy17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy01Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NTc6c3RhdGljIHZvaWQgYXRoMTBrX3VzYl9mcmVlX3VyYl90b19waXBlKHN0cnVjdCBhdGgxMGtfdXNiX3BpcGUgKnBpcGUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTU4LVx0XHRcdFx0XHRzdHJ1Y3QgYXRoMTBrX3VyYl9jb250ZXh0ICp1cmJfY29udGV4dClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTczLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo3NDpzdGF0aWMgdm9pZCBhdGgxMGtfdXNiX2NsZWFudXBfcmVjdl91cmIoc3RydWN0IGF0aDEwa191cmJfY29udGV4dCAqdXJiX2NvbnRleHQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTc1LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTc4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo3OTpcdGF0aDEwa191c2JfZnJlZV91cmJfdG9fcGlwZSh1cmJfY29udGV4dC1cdTAwM2VwaXBlLCB1cmJfY29udGV4dCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTgwLX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtODEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjgyOnN0YXRpYyB2b2lkIGF0aDEwa191c2JfZnJlZV9waXBlX3Jlc291cmNlcyhzdHJ1Y3QgYXRoMTBrICphcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6ODM6XHRcdFx0XHRcdCAgIHN0cnVjdCBhdGgxMGtfdXNiX3BpcGUgKnBpcGUpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTg0LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTEwNC1cdGZvciAoOzspIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTA1Olx0XHR1cmJfY29udGV4dCA9IGF0aDEwa191c2JfYWxsb2NfdXJiX2Zyb21fcGlwZShwaXBlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTA2LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTEzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMTQ6c3RhdGljIHZvaWQgYXRoMTBrX3VzYl9jbGVhbnVwX3BpcGVfcmVzb3VyY2VzKHN0cnVjdCBhdGgxMGsgKmFyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMTUte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMTY6XHRzdHJ1Y3QgYXRoMTBrX3VzYiAqYXJfdXNiID0gYXRoMTBrX3VzYl9wcml2KGFyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTE3LVx0aW50IGk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMTktXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBBVEgxMEtfVVNCX1BJUEVfTUFYOyBpJiM0MzsmIzQzOylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTIwOlx0XHRhdGgxMGtfdXNiX2ZyZWVfcGlwZV9yZXNvdXJjZXMoYXIsIFx1MDAyNmFyX3VzYi1cdTAwM2VwaXBlc1tpXSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTEyMS19XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMjQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjEyNTpzdGF0aWMgdm9pZCBhdGgxMGtfdXNiX3JlY3ZfY29tcGxldGUoc3RydWN0IHVyYiAqdXJiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMjYte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMjctXHRzdHJ1Y3QgYXRoMTBrX3VyYl9jb250ZXh0ICp1cmJfY29udGV4dCA9IHVyYi1cdTAwM2Vjb250ZXh0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMjg6XHRzdHJ1Y3QgYXRoMTBrX3VzYl9waXBlICpwaXBlID0gdXJiX2NvbnRleHQtXHUwMDNlcGlwZTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTI5LVx0c3RydWN0IGF0aDEwayAqYXIgPSBwaXBlLVx1MDAzZWFyX3VzYi1cdTAwM2Vhcjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTE3Mi1jbGVhbnVwX3JlY3ZfdXJiOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxNzM6XHRhdGgxMGtfdXNiX2NsZWFudXBfcmVjdl91cmIodXJiX2NvbnRleHQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xNzQtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xNzctXHRcdC8qIG91ciBmcmVlIHVyYnMgYXJlIHBpbGluZyB1cCwgcG9zdCBtb3JlIHRyYW5zZmVycyAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxNzg6XHRcdGF0aDEwa191c2JfcG9zdF9yZWN2X3RyYW5zZmVycyhhciwgcGlwZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTE3OS1cdH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTE4MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTgyOnN0YXRpYyB2b2lkIGF0aDEwa191c2JfdHJhbnNtaXRfY29tcGxldGUoc3RydWN0IHVyYiAqdXJiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xODMte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xODQtXHRzdHJ1Y3QgYXRoMTBrX3VyYl9jb250ZXh0ICp1cmJfY29udGV4dCA9IHVyYi1cdTAwM2Vjb250ZXh0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxODU6XHRzdHJ1Y3QgYXRoMTBrX3VzYl9waXBlICpwaXBlID0gdXJiX2NvbnRleHQtXHUwMDNlcGlwZTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTg2LVx0c3RydWN0IGF0aDEwayAqYXIgPSBwaXBlLVx1MDAzZWFyX3VzYi1cdTAwM2Vhcjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTE5Ni1cdHVyYl9jb250ZXh0LVx1MDAzZXNrYiA9IE5VTEw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjE5NzpcdGF0aDEwa191c2JfZnJlZV91cmJfdG9fcGlwZSh1cmJfY29udGV4dC1cdTAwM2VwaXBlLCB1cmJfY29udGV4dCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTE5OC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTIwNC0vKiBwaXBlIG9wZXJhdGlvbnMgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MjA1OnN0YXRpYyB2b2lkIGF0aDEwa191c2JfcG9zdF9yZWN2X3RyYW5zZmVycyhzdHJ1Y3QgYXRoMTBrICphcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MjA2Olx0XHRcdFx0XHQgICBzdHJ1Y3QgYXRoMTBrX3VzYl9waXBlICpyZWN2X3BpcGUpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTIwNy17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0yMTItXHRmb3IgKDs7KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjIxMzpcdFx0dXJiX2NvbnRleHQgPSBhdGgxMGtfdXNiX2FsbG9jX3VyYl9mcm9tX3BpcGUocmVjdl9waXBlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMjE0LVx0XHRpZiAoIXVyYl9jb250ZXh0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMjI5LVx0XHRcdFx0ICBBVEgxMEtfVVNCX1JYX0JVRkZFUl9TSVpFLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoyMzA6XHRcdFx0XHQgIGF0aDEwa191c2JfcmVjdl9jb21wbGV0ZSwgdXJiX2NvbnRleHQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0yMzEtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0yNTQtZXJyOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoyNTU6XHRhdGgxMGtfdXNiX2NsZWFudXBfcmVjdl91cmIodXJiX2NvbnRleHQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0yNTYtfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0yNTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjI1ODpzdGF0aWMgdm9pZCBhdGgxMGtfdXNiX2ZsdXNoX2FsbChzdHJ1Y3QgYXRoMTBrICphcilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMjU5LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MjYwOlx0c3RydWN0IGF0aDEwa191c2IgKmFyX3VzYiA9IGF0aDEwa191c2JfcHJpdihhcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTI2MS1cdGludCBpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMjcwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoyNzE6c3RhdGljIHZvaWQgYXRoMTBrX3VzYl9zdGFydF9yZWN2X3BpcGVzKHN0cnVjdCBhdGgxMGsgKmFyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0yNzIte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoyNzM6XHRzdHJ1Y3QgYXRoMTBrX3VzYiAqYXJfdXNiID0gYXRoMTBrX3VzYl9wcml2KGFyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMjc0LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMjc2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoyNzc6XHRhdGgxMGtfdXNiX3Bvc3RfcmVjdl90cmFuc2ZlcnMoYXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTI3OC1cdFx0XHRcdCAgICAgICBcdTAwMjZhcl91c2ItXHUwMDNlcGlwZXNbQVRIMTBLX1VTQl9QSVBFX1JYX0RBVEFdKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTI4MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MjgxOnN0YXRpYyB2b2lkIGF0aDEwa191c2JfdHhfY29tcGxldGUoc3RydWN0IGF0aDEwayAqYXIsIHN0cnVjdCBza19idWZmICpza2IpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTI4Mi17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0yOTEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjI5MjpzdGF0aWMgdm9pZCBhdGgxMGtfdXNiX3J4X2NvbXBsZXRlKHN0cnVjdCBhdGgxMGsgKmFyLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0yOTMte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMzU5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzozNjA6c3RhdGljIHZvaWQgYXRoMTBrX3VzYl9pb19jb21wX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0zNjEte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzozNjI6XHRzdHJ1Y3QgYXRoMTBrX3VzYl9waXBlICpwaXBlID0gY29udGFpbmVyX29mKHdvcmssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjM2MzpcdFx0XHRcdFx0XHQgICAgc3RydWN0IGF0aDEwa191c2JfcGlwZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMzY0LVx0XHRcdFx0XHRcdCAgICBpb19jb21wbGV0ZV93b3JrKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTM2OS1cdFx0aWYgKHBpcGUtXHUwMDNlZmxhZ3MgXHUwMDI2IEFUSDEwS19VU0JfUElQRV9GTEFHX1RYKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzozNzA6XHRcdFx0YXRoMTBrX3VzYl90eF9jb21wbGV0ZShhciwgc2tiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMzcxLVx0XHRlbHNlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjM3MjpcdFx0XHRhdGgxMGtfdXNiX3J4X2NvbXBsZXRlKGFyLCBza2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0zNzMtXHR9XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0zNzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjM3NjojZGVmaW5lIEFUSDEwS19VU0JfTUFYX0RJQUdfQ01EIChzaXplb2Yoc3RydWN0IGF0aDEwa191c2JfY3RybF9kaWFnX2NtZF93cml0ZSkpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjM3NzojZGVmaW5lIEFUSDEwS19VU0JfTUFYX0RJQUdfUkVTUCAoc2l6ZW9mKHN0cnVjdCBhdGgxMGtfdXNiX2N0cmxfZGlhZ19yZXNwX3JlYWQpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0zNzgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjM3OTpzdGF0aWMgdm9pZCBhdGgxMGtfdXNiX2Rlc3Ryb3koc3RydWN0IGF0aDEwayAqYXIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTM4MC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjM4MTpcdHN0cnVjdCBhdGgxMGtfdXNiICphcl91c2IgPSBhdGgxMGtfdXNiX3ByaXYoYXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0zODItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjM4MzpcdGF0aDEwa191c2JfZmx1c2hfYWxsKGFyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6Mzg0Olx0YXRoMTBrX3VzYl9jbGVhbnVwX3BpcGVfcmVzb3VyY2VzKGFyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMzg1LVx0dXNiX3NldF9pbnRmZGF0YShhcl91c2ItXHUwMDNlaW50ZXJmYWNlLCBOVUxMKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTM5MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MzkxOnN0YXRpYyBpbnQgYXRoMTBrX3VzYl9oaWZfc3RhcnQoc3RydWN0IGF0aDEwayAqYXIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTM5Mi17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTM5My1cdGludCBpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzozOTQ6XHRzdHJ1Y3QgYXRoMTBrX3VzYiAqYXJfdXNiID0gYXRoMTBrX3VzYl9wcml2KGFyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMzk1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0zOTYtXHRhdGgxMGtfY29yZV9uYXBpX2VuYWJsZShhcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjM5NzpcdGF0aDEwa191c2Jfc3RhcnRfcmVjdl9waXBlcyhhcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTM5OC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTQwOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NDA5OnN0YXRpYyBpbnQgYXRoMTBrX3VzYl9oaWZfdHhfc2coc3RydWN0IGF0aDEwayAqYXIsIHU4IHBpcGVfaWQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTQxMC1cdFx0XHRcdHN0cnVjdCBhdGgxMGtfaGlmX3NnX2l0ZW0gKml0ZW1zLCBpbnQgbl9pdGVtcylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNDExLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NDEyOlx0c3RydWN0IGF0aDEwa191c2IgKmFyX3VzYiA9IGF0aDEwa191c2JfcHJpdihhcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjQxMzpcdHN0cnVjdCBhdGgxMGtfdXNiX3BpcGUgKnBpcGUgPSBcdTAwMjZhcl91c2ItXHUwMDNlcGlwZXNbcGlwZV9pZF07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTQxNC1cdHN0cnVjdCBhdGgxMGtfdXJiX2NvbnRleHQgKnVyYl9jb250ZXh0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNDE5LVx0Zm9yIChpID0gMDsgaSBcdTAwM2Mgbl9pdGVtczsgaSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NDIwOlx0XHR1cmJfY29udGV4dCA9IGF0aDEwa191c2JfYWxsb2NfdXJiX2Zyb21fcGlwZShwaXBlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNDIxLVx0XHRpZiAoIXVyYl9jb250ZXh0KSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy00MzktXHRcdFx0XHQgIHNrYi1cdTAwM2VsZW4sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjQ0MDpcdFx0XHRcdCAgYXRoMTBrX3VzYl90cmFuc21pdF9jb21wbGV0ZSwgdXJiX2NvbnRleHQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy00NDEtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy00NjMtZXJyX2ZyZWVfdXJiX3RvX3BpcGU6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjQ2NDpcdGF0aDEwa191c2JfZnJlZV91cmJfdG9fcGlwZSh1cmJfY29udGV4dC1cdTAwM2VwaXBlLCB1cmJfY29udGV4dCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTQ2NS1lcnI6XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy00NjgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjQ2OTpzdGF0aWMgdm9pZCBhdGgxMGtfdXNiX2hpZl9zdG9wKHN0cnVjdCBhdGgxMGsgKmFyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy00NzAte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo0NzE6XHRhdGgxMGtfdXNiX2ZsdXNoX2FsbChhcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTQ3Mi1cdGF0aDEwa19jb3JlX25hcGlfc3luY19kaXNhYmxlKGFyKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTQ3NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NDc1OnN0YXRpYyB1MTYgYXRoMTBrX3VzYl9oaWZfZ2V0X2ZyZWVfcXVldWVfbnVtYmVyKHN0cnVjdCBhdGgxMGsgKmFyLCB1OCBwaXBlX2lkKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy00NzYte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo0Nzc6XHRzdHJ1Y3QgYXRoMTBrX3VzYiAqYXJfdXNiID0gYXRoMTBrX3VzYl9wcml2KGFyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNDc4LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNDgxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo0ODI6c3RhdGljIGludCBhdGgxMGtfdXNiX3N1Ym1pdF9jdHJsX291dChzdHJ1Y3QgYXRoMTBrICphcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNDgzLVx0XHRcdFx0ICAgICAgdTggcmVxLCB1MTYgdmFsdWUsIHUxNiBpbmRleCwgdm9pZCAqZGF0YSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTQ4NS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjQ4NjpcdHN0cnVjdCBhdGgxMGtfdXNiICphcl91c2IgPSBhdGgxMGtfdXNiX3ByaXYoYXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy00ODctXHR1OCAqYnVmID0gTlVMTDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTUxNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NTE2OnN0YXRpYyBpbnQgYXRoMTBrX3VzYl9zdWJtaXRfY3RybF9pbihzdHJ1Y3QgYXRoMTBrICphcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNTE3LVx0XHRcdFx0ICAgICB1OCByZXEsIHUxNiB2YWx1ZSwgdTE2IGluZGV4LCB2b2lkICpkYXRhLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNTE5LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NTIwOlx0c3RydWN0IGF0aDEwa191c2IgKmFyX3VzYiA9IGF0aDEwa191c2JfcHJpdihhcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTUyMS1cdHU4ICpidWYgPSBOVUxMO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNTUxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo1NTI6c3RhdGljIGludCBhdGgxMGtfdXNiX2N0cmxfbXNnX2V4Y2hhbmdlKHN0cnVjdCBhdGgxMGsgKmFyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy01NTMtXHRcdFx0XHRcdHU4IHJlcV92YWwsIHU4ICpyZXFfYnVmLCB1MzIgcmVxX2xlbixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTU1OS1cdC8qIHNlbmQgY29tbWFuZCAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo1NjA6XHRyZXQgPSBhdGgxMGtfdXNiX3N1Ym1pdF9jdHJsX291dChhciwgcmVxX3ZhbCwgMCwgMCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNTYxLVx0XHRcdFx0XHQgcmVxX2J1ZiwgcmVxX2xlbik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy01NjYtXHRpZiAocmVzcF9idWYpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NTY3Olx0XHRyZXQgPSBhdGgxMGtfdXNiX3N1Ym1pdF9jdHJsX2luKGFyLCByZXNwX3ZhbCwgMCwgMCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNTY4LVx0XHRcdFx0XHRcdHJlc3BfYnVmLCAqcmVzcF9sZW4pO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNTc3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo1Nzg6c3RhdGljIGludCBhdGgxMGtfdXNiX2hpZl9kaWFnX3JlYWQoc3RydWN0IGF0aDEwayAqYXIsIHUzMiBhZGRyZXNzLCB2b2lkICpidWYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTU3OS1cdFx0XHRcdCAgICBzaXplX3QgYnVmX2xlbilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNTgwLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NTgxOlx0c3RydWN0IGF0aDEwa191c2IgKmFyX3VzYiA9IGF0aDEwa191c2JfcHJpdihhcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjU4MjpcdHN0cnVjdCBhdGgxMGtfdXNiX2N0cmxfZGlhZ19jbWRfcmVhZCAqY21kO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy01ODMtXHR1MzIgcmVzcF9sZW47XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy01ODUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjU4NjpcdGlmIChidWZfbGVuIFx1MDAzYyBzaXplb2Yoc3RydWN0IGF0aDEwa191c2JfY3RybF9kaWFnX3Jlc3BfcmVhZCkpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTU4Ny1cdFx0cmV0dXJuIC1FSU5WQUw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTU4OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NTg5Olx0Y21kID0gKHN0cnVjdCBhdGgxMGtfdXNiX2N0cmxfZGlhZ19jbWRfcmVhZCAqKWFyX3VzYi1cdTAwM2VkaWFnX2NtZF9idWZmZXI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTU5MC1cdG1lbXNldChjbWQsIDAsIHNpemVvZigqY21kKSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy01OTItXHRjbWQtXHUwMDNlYWRkcmVzcyA9IGNwdV90b19sZTMyKGFkZHJlc3MpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo1OTM6XHRyZXNwX2xlbiA9IHNpemVvZihzdHJ1Y3QgYXRoMTBrX3VzYl9jdHJsX2RpYWdfcmVzcF9yZWFkKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNTk0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo1OTU6XHRyZXQgPSBhdGgxMGtfdXNiX2N0cmxfbXNnX2V4Y2hhbmdlKGFyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy01OTYtXHRcdFx0XHRcdCAgIEFUSDEwS19VU0JfQ09OVFJPTF9SRVFfRElBR19DTUQsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy02MDMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjYwNDpcdGlmIChyZXNwX2xlbiAhPSBzaXplb2Yoc3RydWN0IGF0aDEwa191c2JfY3RybF9kaWFnX3Jlc3BfcmVhZCkpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTYwNS1cdFx0cmV0dXJuIC1FTVNHU0laRTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTYwNy1cdG1lbWNweShidWYsIGFyX3VzYi1cdTAwM2VkaWFnX3Jlc3BfYnVmZmVyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo2MDg6XHQgICAgICAgc2l6ZW9mKHN0cnVjdCBhdGgxMGtfdXNiX2N0cmxfZGlhZ19yZXNwX3JlYWQpKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNjA5LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNjEyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo2MTM6c3RhdGljIGludCBhdGgxMGtfdXNiX2hpZl9kaWFnX3dyaXRlKHN0cnVjdCBhdGgxMGsgKmFyLCB1MzIgYWRkcmVzcyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNjE0LVx0XHRcdFx0ICAgICBjb25zdCB2b2lkICpkYXRhLCBpbnQgbmJ5dGVzKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy02MTUte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo2MTY6XHRzdHJ1Y3QgYXRoMTBrX3VzYiAqYXJfdXNiID0gYXRoMTBrX3VzYl9wcml2KGFyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NjE3Olx0c3RydWN0IGF0aDEwa191c2JfY3RybF9kaWFnX2NtZF93cml0ZSAqY21kO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy02MTgtXHRpbnQgcmV0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNjIyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo2MjM6XHRjbWQgPSAoc3RydWN0IGF0aDEwa191c2JfY3RybF9kaWFnX2NtZF93cml0ZSAqKWFyX3VzYi1cdTAwM2VkaWFnX2NtZF9idWZmZXI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTYyNC1cdG1lbXNldChjbWQsIDAsIHNpemVvZigqY21kKSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy02MjgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjYyOTpcdHJldCA9IGF0aDEwa191c2JfY3RybF9tc2dfZXhjaGFuZ2UoYXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTYzMC1cdFx0XHRcdFx0ICAgQVRIMTBLX1VTQl9DT05UUk9MX1JFUV9ESUFHX0NNRCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTYzOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NjQwOnN0YXRpYyBpbnQgYXRoMTBrX3VzYl9ibWlfZXhjaGFuZ2VfbXNnKHN0cnVjdCBhdGgxMGsgKmFyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy02NDEtXHRcdFx0XHQgICAgICAgdm9pZCAqcmVxLCB1MzIgcmVxX2xlbixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTY0Ni1cdGlmIChyZXEpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NjQ3Olx0XHRyZXQgPSBhdGgxMGtfdXNiX3N1Ym1pdF9jdHJsX291dChhcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNjQ4LVx0XHRcdFx0XHRcdCBBVEgxMEtfVVNCX0NPTlRST0xfUkVRX1NFTkRfQk1JX0NNRCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTY1OC1cdGlmIChyZXNwKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjY1OTpcdFx0cmV0ID0gYXRoMTBrX3VzYl9zdWJtaXRfY3RybF9pbihhcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNjYwLVx0XHRcdFx0XHRcdEFUSDEwS19VU0JfQ09OVFJPTF9SRVFfUkVDVl9CTUlfUkVTUCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTY3Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NjczOnN0YXRpYyB2b2lkIGF0aDEwa191c2JfaGlmX2dldF9kZWZhdWx0X3BpcGUoc3RydWN0IGF0aDEwayAqYXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTY3NC1cdFx0XHRcdFx0ICAgIHU4ICp1bF9waXBlLCB1OCAqZGxfcGlwZSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTY3OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NjgwOnN0YXRpYyBpbnQgYXRoMTBrX3VzYl9oaWZfbWFwX3NlcnZpY2VfdG9fcGlwZShzdHJ1Y3QgYXRoMTBrICphciwgdTE2IHN2Y19pZCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNjgxLVx0XHRcdFx0XHQgICAgICB1OCAqdWxfcGlwZSwgdTggKmRsX3BpcGUpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy03MDMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjcwNDpzdGF0aWMgaW50IGF0aDEwa191c2JfaGlmX3Bvd2VyX3VwKHN0cnVjdCBhdGgxMGsgKmFyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy03MDUtXHRcdFx0XHQgICBlbnVtIGF0aDEwa19maXJtd2FyZV9tb2RlIGZ3X21vZGUpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy03MDktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjcxMDpzdGF0aWMgdm9pZCBhdGgxMGtfdXNiX2hpZl9wb3dlcl9kb3duKHN0cnVjdCBhdGgxMGsgKmFyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy03MTEte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo3MTI6XHRhdGgxMGtfdXNiX2ZsdXNoX2FsbChhcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTcxMy19XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy03MTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjcxNzpzdGF0aWMgaW50IGF0aDEwa191c2JfaGlmX3N1c3BlbmQoc3RydWN0IGF0aDEwayAqYXIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTcxOC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy03MjEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjcyMjpzdGF0aWMgaW50IGF0aDEwa191c2JfaGlmX3Jlc3VtZShzdHJ1Y3QgYXRoMTBrICphcilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNzIzLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTcyNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NzI4OnN0YXRpYyBjb25zdCBzdHJ1Y3QgYXRoMTBrX2hpZl9vcHMgYXRoMTBrX3VzYl9oaWZfb3BzID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo3Mjk6XHQudHhfc2dcdFx0XHQ9IGF0aDEwa191c2JfaGlmX3R4X3NnLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo3MzA6XHQuZGlhZ19yZWFkXHRcdD0gYXRoMTBrX3VzYl9oaWZfZGlhZ19yZWFkLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo3MzE6XHQuZGlhZ193cml0ZVx0XHQ9IGF0aDEwa191c2JfaGlmX2RpYWdfd3JpdGUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjczMjpcdC5leGNoYW5nZV9ibWlfbXNnXHQ9IGF0aDEwa191c2JfYm1pX2V4Y2hhbmdlX21zZyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NzMzOlx0LnN0YXJ0XHRcdFx0PSBhdGgxMGtfdXNiX2hpZl9zdGFydCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NzM0Olx0LnN0b3BcdFx0XHQ9IGF0aDEwa191c2JfaGlmX3N0b3AsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjczNTpcdC5tYXBfc2VydmljZV90b19waXBlXHQ9IGF0aDEwa191c2JfaGlmX21hcF9zZXJ2aWNlX3RvX3BpcGUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjczNjpcdC5nZXRfZGVmYXVsdF9waXBlXHQ9IGF0aDEwa191c2JfaGlmX2dldF9kZWZhdWx0X3BpcGUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjczNzpcdC5nZXRfZnJlZV9xdWV1ZV9udW1iZXJcdD0gYXRoMTBrX3VzYl9oaWZfZ2V0X2ZyZWVfcXVldWVfbnVtYmVyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo3Mzg6XHQucG93ZXJfdXBcdFx0PSBhdGgxMGtfdXNiX2hpZl9wb3dlcl91cCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NzM5Olx0LnBvd2VyX2Rvd25cdFx0PSBhdGgxMGtfdXNiX2hpZl9wb3dlcl9kb3duLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy03NDAtI2lmZGVmIENPTkZJR19QTVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo3NDE6XHQuc3VzcGVuZFx0XHQ9IGF0aDEwa191c2JfaGlmX3N1c3BlbmQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjc0MjpcdC5yZXN1bWVcdFx0XHQ9IGF0aDEwa191c2JfaGlmX3Jlc3VtZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNzQzLSNlbmRpZlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNzQ1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo3NDY6c3RhdGljIHU4IGF0aDEwa191c2JfZ2V0X2xvZ2ljYWxfcGlwZV9udW0odTggZXBfYWRkcmVzcywgaW50ICp1cmJfY291bnQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTc0Ny17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy03OTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjc5MTpzdGF0aWMgaW50IGF0aDEwa191c2JfYWxsb2NfcGlwZV9yZXNvdXJjZXMoc3RydWN0IGF0aDEwayAqYXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjc5MjpcdFx0XHRcdFx0ICAgc3RydWN0IGF0aDEwa191c2JfcGlwZSAqcGlwZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNzkzLVx0XHRcdFx0XHQgICBpbnQgdXJiX2NudClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTgxMS1cdFx0cGlwZS1cdTAwM2V1cmJfYWxsb2MmIzQzOyYjNDM7O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo4MTI6XHRcdGF0aDEwa191c2JfZnJlZV91cmJfdG9fcGlwZShwaXBlLCB1cmJfY29udGV4dCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTgxMy1cdH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTgyMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6ODIzOnN0YXRpYyBpbnQgYXRoMTBrX3VzYl9zZXR1cF9waXBlX3Jlc291cmNlcyhzdHJ1Y3QgYXRoMTBrICphcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtODI0LVx0XHRcdFx0XHQgICBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZXJmYWNlKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy04MjUte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo4MjY6XHRzdHJ1Y3QgYXRoMTBrX3VzYiAqYXJfdXNiID0gYXRoMTBrX3VzYl9wcml2KGFyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtODI3LVx0c3RydWN0IHVzYl9ob3N0X2ludGVyZmFjZSAqaWZhY2VfZGVzYyA9IGludGVyZmFjZS1cdTAwM2VjdXJfYWx0c2V0dGluZztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtODI4LVx0c3RydWN0IHVzYl9lbmRwb2ludF9kZXNjcmlwdG9yICplbmRwb2ludDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6ODI5Olx0c3RydWN0IGF0aDEwa191c2JfcGlwZSAqcGlwZTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtODMwLVx0aW50IHJldCwgaSwgdXJiY291bnQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy04NzEtXHRcdHBpcGVfbnVtID1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6ODcyOlx0XHQgICAgYXRoMTBrX3VzYl9nZXRfbG9naWNhbF9waXBlX251bShlbmRwb2ludC1cdTAwM2ViRW5kcG9pbnRBZGRyZXNzLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy04NzMtXHRcdFx0XHRcdFx0ICAgIFx1MDAyNnVyYmNvdW50KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTkyNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6OTI1Olx0XHRyZXQgPSBhdGgxMGtfdXNiX2FsbG9jX3BpcGVfcmVzb3VyY2VzKGFyLCBwaXBlLCB1cmJjb3VudCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTkyNi1cdFx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTkzMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6OTMzOnN0YXRpYyBpbnQgYXRoMTBrX3VzYl9jcmVhdGUoc3RydWN0IGF0aDEwayAqYXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTkzNC1cdFx0XHQgICAgIHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRlcmZhY2UpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTkzNS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjkzNjpcdHN0cnVjdCBhdGgxMGtfdXNiICphcl91c2IgPSBhdGgxMGtfdXNiX3ByaXYoYXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy05MzctXHRzdHJ1Y3QgdXNiX2RldmljZSAqZGV2ID0gaW50ZXJmYWNlX3RvX3VzYmRldihpbnRlcmZhY2UpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo5Mzg6XHRzdHJ1Y3QgYXRoMTBrX3VzYl9waXBlICpwaXBlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy05MzktXHRpbnQgcmV0LCBpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtOTQ4LVx0XHRJTklUX1dPUksoXHUwMDI2cGlwZS1cdTAwM2Vpb19jb21wbGV0ZV93b3JrLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo5NDk6XHRcdFx0ICBhdGgxMGtfdXNiX2lvX2NvbXBfd29yayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTk1MC1cdFx0c2tiX3F1ZXVlX2hlYWRfaW5pdChcdTAwMjZwaXBlLVx1MDAzZWlvX2NvbXBfcXVldWUpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtOTY1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo5NjY6XHRyZXQgPSBhdGgxMGtfdXNiX3NldHVwX3BpcGVfcmVzb3VyY2VzKGFyLCBpbnRlcmZhY2UpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy05NjctXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtOTcyLWVycjpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6OTczOlx0YXRoMTBrX3VzYl9kZXN0cm95KGFyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtOTc0LVx0cmV0dXJuIHJldDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTk3Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6OTc3OnN0YXRpYyBpbnQgYXRoMTBrX3VzYl9uYXBpX3BvbGwoc3RydWN0IG5hcGlfc3RydWN0ICpjdHgsIGludCBidWRnZXQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTk3OC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy05OTEtLyogYXRoMTBrIHVzYiBkcml2ZXIgcmVnaXN0ZXJlZCBmdW5jdGlvbnMgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6OTkyOnN0YXRpYyBpbnQgYXRoMTBrX3VzYl9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZXJmYWNlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy05OTMtXHRcdFx0ICAgIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTk5NS1cdHN0cnVjdCBhdGgxMGsgKmFyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo5OTY6XHRzdHJ1Y3QgYXRoMTBrX3VzYiAqYXJfdXNiO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy05OTctXHRzdHJ1Y3QgdXNiX2RldmljZSAqZGV2ID0gaW50ZXJmYWNlX3RvX3VzYmRldihpbnRlcmZhY2UpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTAxMC1cdGFyID0gYXRoMTBrX2NvcmVfY3JlYXRlKHNpemVvZigqYXJfdXNiKSwgXHUwMDI2ZGV2LVx1MDAzZWRldiwgQVRIMTBLX0JVU19VU0IsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjEwMTE6XHRcdFx0XHRod19yZXYsIFx1MDAyNmF0aDEwa191c2JfaGlmX29wcyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTEwMTItXHRpZiAoIWFyKSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMDE2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMDE3Olx0bmV0aWZfbmFwaV9hZGQoYXItXHUwMDNlbmFwaV9kZXYsIFx1MDAyNmFyLVx1MDAzZW5hcGksIGF0aDEwa191c2JfbmFwaV9wb2xsKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTAxOC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTEwMjUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjEwMjY6XHRhcl91c2IgPSBhdGgxMGtfdXNiX3ByaXYoYXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMDI3Olx0cmV0ID0gYXRoMTBrX3VzYl9jcmVhdGUoYXIsIGludGVyZmFjZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTEwMjgtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTA1MS1lcnJfdXNiX2Rlc3Ryb3k6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjEwNTI6XHRhdGgxMGtfdXNiX2Rlc3Ryb3koYXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMDUzLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTA1OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTA2MDpzdGF0aWMgdm9pZCBhdGgxMGtfdXNiX2Rpc2Nvbm5lY3Qoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGVyZmFjZSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTA2MS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjEwNjI6XHRzdHJ1Y3QgYXRoMTBrX3VzYiAqYXJfdXNiO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMDYzLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTA2OS1cdG5ldGlmX25hcGlfZGVsKFx1MDAyNmFyX3VzYi1cdTAwM2Vhci1cdTAwM2VuYXBpKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTA3MDpcdGF0aDEwa191c2JfZGVzdHJveShhcl91c2ItXHUwMDNlYXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMDcxLVx0YXRoMTBrX2NvcmVfZGVzdHJveShhcl91c2ItXHUwMDNlYXIpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTA3NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTA3NjpzdGF0aWMgaW50IGF0aDEwa191c2JfcG1fc3VzcGVuZChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZXJmYWNlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMDc3LVx0XHRcdFx0IHBtX21lc3NhZ2VfdCBtZXNzYWdlKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMDc4LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTA3OTpcdHN0cnVjdCBhdGgxMGtfdXNiICphcl91c2IgPSB1c2JfZ2V0X2ludGZkYXRhKGludGVyZmFjZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTEwODAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjEwODE6XHRhdGgxMGtfdXNiX2ZsdXNoX2FsbChhcl91c2ItXHUwMDNlYXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMDgyLVx0cmV0dXJuIDA7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMDg0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMDg1OnN0YXRpYyBpbnQgYXRoMTBrX3VzYl9wbV9yZXN1bWUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGVyZmFjZSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTA4Ni17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjEwODc6XHRzdHJ1Y3QgYXRoMTBrX3VzYiAqYXJfdXNiID0gdXNiX2dldF9pbnRmZGF0YShpbnRlcmZhY2UpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMDg4LVx0c3RydWN0IGF0aDEwayAqYXIgPSBhcl91c2ItXHUwMDNlYXI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTEwODktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjEwOTA6XHRhdGgxMGtfdXNiX3Bvc3RfcmVjdl90cmFuc2ZlcnMoYXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTEwOTEtXHRcdFx0XHQgICAgICAgXHUwMDI2YXJfdXNiLVx1MDAzZXBpcGVzW0FUSDEwS19VU0JfUElQRV9SWF9EQVRBXSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMDk3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMDk4OiNkZWZpbmUgYXRoMTBrX3VzYl9wbV9zdXNwZW5kIE5VTExcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTA5OTojZGVmaW5lIGF0aDEwa191c2JfcG1fcmVzdW1lIE5VTExcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTEwMC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTExMDMtLyogdGFibGUgb2YgZGV2aWNlcyB0aGF0IHdvcmsgd2l0aCB0aGlzIGRyaXZlciAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMTA0OnN0YXRpYyBzdHJ1Y3QgdXNiX2RldmljZV9pZCBhdGgxMGtfdXNiX2lkc1tdID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMTA1LVx0e1VTQl9ERVZJQ0UoMHgxM2IxLCAweDAwNDIpfSwgLyogTGlua3N5cyBXVVNCNjEwME0gKi9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTExMDgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjExMDk6TU9EVUxFX0RFVklDRV9UQUJMRSh1c2IsIGF0aDEwa191c2JfaWRzKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTExMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTExMTpzdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgYXRoMTBrX3VzYl9kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjExMTI6XHQubmFtZSA9IFwmIzM0O2F0aDEwa191c2JcJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjExMTM6XHQucHJvYmUgPSBhdGgxMGtfdXNiX3Byb2JlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMTE0Olx0LnN1c3BlbmQgPSBhdGgxMGtfdXNiX3BtX3N1c3BlbmQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjExMTU6XHQucmVzdW1lID0gYXRoMTBrX3VzYl9wbV9yZXN1bWUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjExMTY6XHQuZGlzY29ubmVjdCA9IGF0aDEwa191c2JfZGlzY29ubmVjdCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTExNzpcdC5pZF90YWJsZSA9IGF0aDEwa191c2JfaWRzLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMTE4LVx0LnN1cHBvcnRzX2F1dG9zdXNwZW5kID0gdHJ1ZSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTExMjEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjExMjI6bW9kdWxlX3VzYl9kcml2ZXIoYXRoMTBrX3VzYl9kcml2ZXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMTIzLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmgtNDMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5oOjQ0OnN0cnVjdCBhdGgxMGtfdXNiX2N0cmxfZGlhZ19jbWRfd3JpdGUge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaC00NS1cdF9fbGUzMiBjbWQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaC01MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmg6NTE6c3RydWN0IGF0aDEwa191c2JfY3RybF9kaWFnX2NtZF9yZWFkIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmgtNTItXHRfX2xlMzIgY21kO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmgtNTUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5oOjU2OnN0cnVjdCBhdGgxMGtfdXNiX2N0cmxfZGlhZ19yZXNwX3JlYWQge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaC01Ny1cdHU4IHZhbHVlWzRdO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmgtNjAtLyogdHgvcnggcGlwZXMgZm9yIHVzYiAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaDo2MTplbnVtIGF0aDEwa191c2JfcGlwZV9pZCB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5oLTYyLVx0QVRIMTBLX1VTQl9QSVBFX1RYX0NUUkwgPSAwLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmgtNzItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5oOjczOnN0cnVjdCBhdGgxMGtfdXNiX3BpcGUge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaC03NC1cdHN0cnVjdCBsaXN0X2hlYWQgdXJiX2xpc3RfaGVhZDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5oLTgyLVx0dTggbG9naWNhbF9waXBlX251bTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmg6ODM6XHRzdHJ1Y3QgYXRoMTBrX3VzYiAqYXJfdXNiO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaC04NC1cdHUxNiBtYXhfcGFja2V0X3NpemU7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaC05Mi0vKiB1c2IgZGV2aWNlIG9iamVjdCAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaDo5MzpzdHJ1Y3QgYXRoMTBrX3VzYiB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5oLTk0LVx0LyogcHJvdGVjdHMgcGlwZS1cdTAwM2V1cmJfbGlzdF9oZWFkIGFuZCAgcGlwZS1cdTAwM2V1cmJfY250ICovXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaC05OC1cdHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRlcmZhY2U7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5oOjk5Olx0c3RydWN0IGF0aDEwa191c2JfcGlwZSBwaXBlc1tBVEgxMEtfVVNCX1BJUEVfTUFYXTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmgtMTAwLVx0dTggKmRpYWdfY21kX2J1ZmZlcjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5oPTEwNj1zdHJ1Y3QgYXRoMTBrX3VyYl9jb250ZXh0IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmgtMTA3LVx0c3RydWN0IGxpc3RfaGVhZCBsaW5rO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaDoxMDg6XHRzdHJ1Y3QgYXRoMTBrX3VzYl9waXBlICpwaXBlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaC0xMDktXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmgtMTEyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaDoxMTM6c3RhdGljIGlubGluZSBzdHJ1Y3QgYXRoMTBrX3VzYiAqYXRoMTBrX3VzYl9wcml2KHN0cnVjdCBhdGgxMGsgKmFyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaC0xMTQte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaDoxMTU6XHRyZXR1cm4gKHN0cnVjdCBhdGgxMGtfdXNiICopYXItXHUwMDNlZHJ2X3ByaXY7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5oLTExNi19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDAwOjE0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI5NDA5CgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogMjMzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkRGUyBWdWxuZXJhYmlsaXR5IFJlc2VhcmNoIGluIGBhdGgxMGtfdXNiYCoqCgpBbHJpZ2h0LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byBgYXRoMTBrX3VzYmAuIFRoZSBpbW1lZGlhdGUgdGhvdWdodCBpcywgY2FuIHdlIGZ1enogdGhpcyB0aGluZyB2aWEgVVNCIGVtdWxhdGlvbj8gU3l6a2FsbGVyJiMzOTtzIFVTQiBmdXp6ZXIgc2VlbXMgbGlrZSBhIHBlcmZlY3Qgc3RhcnRpbmcgcG9pbnQuIEJ1dCB3YWl0LCBiZWZvcmUgSSBkaXZlIGludG8gZnV6emluZywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGF0dGFjayBzdXJmYWNlLiBTcGVjaWZpY2FsbHksIGRvZXMgYGF0aDEwa191c2JgIGV2ZW4gKnN1cHBvcnQqIERGUyAoRHluYW1pYyBGcmVxdWVuY3kgU2VsZWN0aW9uKT8KCkxldCBtZSBkb3VibGUtY2hlY2sgdGhlIGBhdGgxMGtfbWFjX3JlZ2lzdGVyYCBmdW5jdGlvbiBhZ2Fpbi4gQWgsIGhlcmUgaXQgaXM6IGBhci0mZ3Q7ZGZzX2RldGVjdG9yID0gZGZzX3BhdHRlcm5fZGV0ZWN0b3JfaW5pdCgmYW1wO2FyLSZndDthdGhfY29tbW9uLCBOTDgwMjExX0RGU19VTlNFVCk7YC4gVGhpcyBpcyB1bmNvbmRpdGlvbmFsbHkgaW5pdGlhbGl6ZWQgZm9yICphbGwqIGBhdGgxMGtgIGRldmljZXMsIGluY2x1ZGluZyBVU0IuIE9rYXksIHRoYXQmIzM5O3MgcHJvbWlzaW5nIQoKTm93LCB0aGUgY3J1Y2lhbCBxdWVzdGlvbjogSG93IGlzIERGUyBmdW5jdGlvbmFsaXR5IHRyaWdnZXJlZD8gSSByZWNhbGwgYGF0aDEwa19kZnNfcmFkYXJfcmVwb3J0YCBnZXRzIGNhbGxlZCBmcm9tIGBhdGgxMGtfd21pX2V2ZW50X2Rmc2AuIFRoZSBxdWVzdGlvbiBub3cgYmVjb21lczogaXMgYGF0aDEwa193bWlfZXZlbnRfZGZzYCByZWFjaGFibGUgdmlhIHRoZSBVU0IgaW50ZXJmYWNlPyBUaGUgV01JIGV2ZW50cywgSSYjMzk7bSBwcmV0dHkgc3VyZSB0aG9zZSBhcmUgdGhlIG1lc3NhZ2VzIHBhc3NlZCB0aHJvdWdoIHRoZSBVU0IgaW50ZXJmYWNlISBMZXQmIzM5O3Mgc2VlLi4uIFllcCwgbG9va3MgbGlrZSBXTUkgZXZlbnRzIGFyZSBpbmRlZWQgcmVjZWl2ZWQgb3ZlciBVU0IuIFRoZSBwYXRoIHNlZW1zIHRvIGJlIGBhdGgxMGtfdXNiX3J4X2NvbXBsZXRlYCAtJmd0OyBgYXRoMTBrX2h0Y19yeF9jb21wbGV0aW9uX2hhbmRsZXJgIC0mZ3Q7IGBhdGgxMGtfd21pX2V2ZW50X2Rmc2AuIFJpZ2h0LiBUaW1lIHRvIHZlcmlmeSB0aGF0IGVudGlyZSBwYXRoIGFuZCBjb25maXJtIHRoZSBhc3N1bXB0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMDA6MTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YXRoMTBrX3dtaV9ldmVudF9kZnMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3dtaS5jPTQxNjk9c3RhdGljIGludCBhdGgxMGtfZGZzX2ZmdF9yZXBvcnQoc3RydWN0IGF0aDEwayAqYXIsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway93bWkuYy00MjA2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway93bWkuYzo0MjA3OnZvaWQgYXRoMTBrX3dtaV9ldmVudF9kZnMoc3RydWN0IGF0aDEwayAqYXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3dtaS5jLTQyMDgtXHRcdFx0ICBzdHJ1Y3Qgd21pX3BoeWVycl9ldl9hcmcgKnBoeWVycixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3dtaS5jPTQ0NDc9dm9pZCBhdGgxMGtfd21pX2V2ZW50X3BoeWVycihzdHJ1Y3QgYXRoMTBrICphciwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3dtaS5jLTQ0OTgtXHRcdGNhc2UgUEhZX0VSUk9SX1JBREFSOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway93bWkuYzo0NDk5Olx0XHRcdGF0aDEwa193bWlfZXZlbnRfZGZzKGFyLCBcdTAwMjZwaHllcnJfYXJnLCB0c2YpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway93bWkuYy00NTAwLVx0XHRcdGJyZWFrO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvd21pLmMtNDUwNC1cdFx0Y2FzZSBQSFlfRVJST1JfRkFMU0VfUkFEQVJfRVhUOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway93bWkuYzo0NTA1Olx0XHRcdGF0aDEwa193bWlfZXZlbnRfZGZzKGFyLCBcdTAwMjZwaHllcnJfYXJnLCB0c2YpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway93bWkuYy00NTA2LVx0XHRcdGF0aDEwa193bWlfZXZlbnRfc3BlY3RyYWxfc2NhbihhciwgXHUwMDI2cGh5ZXJyX2FyZywgdHNmKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3dtaS5jPTQ1MzA9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvd21pLmM6NDUzMTphdGgxMGtfd21pX2V2ZW50X2Rmc19zdGF0dXNfY2hlY2soc3RydWN0IGF0aDEwayAqYXIsIHN0cnVjdCBza19idWZmICpza2IpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3dtaS5jLTQ1MzIte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvd21pLmM9NjI4Mz1zdGF0aWMgdm9pZCBhdGgxMGtfd21pXzEwXzRfb3Bfcngoc3RydWN0IGF0aDEwayAqYXIsIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway93bWkuYy02Mzg4LVx0Y2FzZSBXTUlfMTBfNF9ERlNfU1RBVFVTX0NIRUNLX0VWRU5USUQ6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3dtaS5jOjYzODk6XHRcdGF0aDEwa193bWlfZXZlbnRfZGZzX3N0YXR1c19jaGVjayhhciwgc2tiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvd21pLmMtNjM5MC1cdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway93bWkuaD03NDkwPXZvaWQgYXRoMTBrX3dtaV9ldmVudF90YnR0b2Zmc2V0X3VwZGF0ZShzdHJ1Y3QgYXRoMTBrICphciwgc3RydWN0IHNrX2J1ZmYgKnNrYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3dtaS5oOjc0OTE6dm9pZCBhdGgxMGtfd21pX2V2ZW50X2RmcyhzdHJ1Y3QgYXRoMTBrICphcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvd21pLmgtNzQ5Mi1cdFx0XHQgIHN0cnVjdCB3bWlfcGh5ZXJyX2V2X2FyZyAqcGh5ZXJyLCB1NjQgdHNmKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMDA6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzA5NDkKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAxMjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgTGluZSBvZiBSZWFzb25pbmcqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gYGF0aDEwa193bWlfZXZlbnRfcGh5ZXJyYCBpcyB0aGUgc3RhcnRpbmcgcG9pbnQuIEl0IHNlZW1zIHRoYXQgdGhpcyBldmVudCBoYW5kbGVyIGNhbGxzIGBhdGgxMGtfd21pX2V2ZW50X2Rmc2AsIHdoaWNoIHRoZW4gbGVhZHMgdG8gYGF0aDEwa19kZnNfcmFkYXJfcmVwb3J0YC4gQW5kIGZpbmFsbHksIHRoYXQgZnVuY3Rpb24gaXMgY2FsbGluZyBgYXItJmd0O2Rmc19kZXRlY3Rvci0mZ3Q7YWRkX3B1bHNlYC4gSW50ZXJlc3RpbmcsIHZlcnkgaW50ZXJlc3RpbmcuIEl0JiMzOTtzIGJlY29taW5nIGNsZWFyIHRoYXQgd2UgbWlnaHQgYmUgYWJsZSB0byByZWFjaCBjb2RlIGluIGBkZnNfcHJpX2RldGVjdG9yLmNgIHRocm91Z2ggVVNCIGZ1enppbmcgb2YgYGF0aDEwa191c2JgLgoKQnV0LCBob2xkIG9uIGEgc2Vjb25kLiBJIG5lZWQgdG8gYmUgc3VyZSBhYm91dCBhIGRlcGVuZGVuY3ksIGVzcGVjaWFsbHkgc2luY2UgdGhpcyBpcyByZWxhdGVkIHRvIERGUy4gSXMgYENPTkZJR19BVEgxMEtfREZTX0NFUlRJRklFRGAgYSBwcmVyZXF1aXNpdGUgaGVyZT8gSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IGNoZWNrIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWdgIHRvIGNvbmZpcm0gd2hldGhlciBvciBub3QgdGhpcyBpcyB0aGUgY2FzZSBiZWZvcmUgSSBnbyBhbnkgZnVydGhlciBkb3duIHRoaXMgcGF0aC4gSSBuZWVkIHRvIGJlIHN1cmUgdGhpcyBwYXRoIGlzIGFjdHVhbGx5IHJlYWNoYWJsZSB3aXRoIHRoaXMgc2V0IHVwLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAwMDoxNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtBVEgxMEtfREZTX0NFUlRJRklFRCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZz04Nj1jb25maWcgQVRIMTBLX1RSQUNJTkdcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWctOTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWc6OTM6Y29uZmlnIEFUSDEwS19ERlNfQ0VSVElGSUVEXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWctOTQtXHRib29sIFwmIzM0O0F0aGVyb3MgREZTIHN1cHBvcnQgZm9yIGNlcnRpZmllZCBwbGF0Zm9ybXNcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2RlYnVnLmM9NDI9dm9pZCBhdGgxMGtfZGVidWdfcHJpbnRfaHdmd19pbmZvKHN0cnVjdCBhdGgxMGsgKmFyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvZGVidWcuYy01OS1cdFx0ICAgIElTX0VOQUJMRUQoQ09ORklHX0FUSDEwS19UUkFDSU5HKSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvZGVidWcuYzo2MDpcdFx0ICAgIElTX0VOQUJMRUQoQ09ORklHX0FUSDEwS19ERlNfQ0VSVElGSUVEKSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvZGVidWcuYy02MS1cdFx0ICAgIElTX0VOQUJMRUQoQ09ORklHX05MODAyMTFfVEVTVE1PREUpKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2RlYnVnLmM9MjUyND1pbnQgYXRoMTBrX2RlYnVnX3JlZ2lzdGVyKHN0cnVjdCBhdGgxMGsgKmFyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvZGVidWcuYy0yNTg1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9kZWJ1Zy5jOjI1ODY6XHRpZiAoSVNfRU5BQkxFRChDT05GSUdfQVRIMTBLX0RGU19DRVJUSUZJRUQpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2RlYnVnLmMtMjU4Ny1cdFx0ZGVidWdmc19jcmVhdGVfZmlsZShcJiMzNDtkZnNfc2ltdWxhdGVfcmFkYXJcJiMzNDssIDAyMDAsIGFyLVx1MDAzZWRlYnVnLmRlYnVnZnNfcGh5LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmM9MzUxMD1zdGF0aWMgdm9pZCBhdGgxMGtfcmVnZF91cGRhdGUoc3RydWN0IGF0aDEwayAqYXIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYy0zNTI0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYzozNTI1Olx0aWYgKElTX0VOQUJMRUQoQ09ORklHX0FUSDEwS19ERlNfQ0VSVElGSUVEKSBcdTAwMjZcdTAwMjYgYXItXHUwMDNlZGZzX2RldGVjdG9yKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jLTM1MjYtXHRcdG5sX2Rmc19yZWcgPSBhci1cdTAwM2VkZnNfZGV0ZWN0b3ItXHUwMDNlcmVnaW9uO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmM9MzU2MT1zdGF0aWMgdm9pZCBhdGgxMGtfcmVnX25vdGlmaWVyKHN0cnVjdCB3aXBoeSAqd2lwaHksXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYy0zNTY5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYzozNTcwOlx0aWYgKElTX0VOQUJMRUQoQ09ORklHX0FUSDEwS19ERlNfQ0VSVElGSUVEKSBcdTAwMjZcdTAwMjYgYXItXHUwMDNlZGZzX2RldGVjdG9yKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jLTM1NzEtXHRcdGF0aDEwa19kYmcoYXIsIEFUSDEwS19EQkdfUkVHVUxBVE9SWSwgXCYjMzQ7ZGZzIHJlZ2lvbiAweCV4XFxuXCYjMzQ7LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmM9OTY3Nz1zdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9pZmFjZV9jb21iaW5hdGlvbiBhdGgxMGtfMTB4X2lmX2NvbWJbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jLTk2ODQtXHRcdC5iZWFjb25faW50X21pbl9nY2QgPSAxLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYzo5Njg1OiNpZmRlZiBDT05GSUdfQVRIMTBLX0RGU19DRVJUSUZJRURcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmMtOTY4Ni1cdFx0LnJhZGFyX2RldGVjdF93aWR0aHMgPVx0QklUKE5MODAyMTFfQ0hBTl9XSURUSF8yMF9OT0hUKSB8XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYz05ODAxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX2lmYWNlX2NvbWJpbmF0aW9uIGF0aDEwa18xMF80X2lmX2NvbWJbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jLTk4MDgtXHRcdC5iZWFjb25faW50X21pbl9nY2QgPSAxLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYzo5ODA5OiNpZmRlZiBDT05GSUdfQVRIMTBLX0RGU19DRVJUSUZJRURcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmMtOTgxMC1cdFx0LnJhZGFyX2RldGVjdF93aWR0aHMgPVx0QklUKE5MODAyMTFfQ0hBTl9XSURUSF8yMF9OT0hUKSB8XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYz05ODIxPWllZWU4MDIxMV9pZmFjZV9jb21iaW5hdGlvbiBhdGgxMGtfMTBfNF9iY25faW50X2lmX2NvbWJbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jLTk4MjgtXHRcdC5iZWFjb25faW50X21pbl9nY2QgPSAxMDAsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jOjk4Mjk6I2lmZGVmIENPTkZJR19BVEgxMEtfREZTX0NFUlRJRklFRFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYy05ODMwLVx0XHQucmFkYXJfZGV0ZWN0X3dpZHRocyA9ICBCSVQoTkw4MDIxMV9DSEFOX1dJRFRIXzIwX05PSFQpIHxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jPTk5NzE9aW50IGF0aDEwa19tYWNfcmVnaXN0ZXIoc3RydWN0IGF0aDEwayAqYXIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYy0xMDI4Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmM6MTAyODM6XHRpZiAoSVNfRU5BQkxFRChDT05GSUdfQVRIMTBLX0RGU19DRVJUSUZJRUQpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jLTEwMjg0LVx0XHQvKiBJbml0IGF0aCBkZnMgcGF0dGVybiBkZXRlY3RvciAqL1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmMtMTAzNTctZXJyX2Rmc19kZXRlY3Rvcl9leGl0OlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYzoxMDM1ODpcdGlmIChJU19FTkFCTEVEKENPTkZJR19BVEgxMEtfREZTX0NFUlRJRklFRCkgXHUwMDI2XHUwMDI2IGFyLVx1MDAzZWRmc19kZXRlY3RvcilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmMtMTAzNTktXHRcdGFyLVx1MDAzZWRmc19kZXRlY3Rvci1cdTAwM2VleGl0KGFyLVx1MDAzZWRmc19kZXRlY3Rvcik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYz0xMDM2OT12b2lkIGF0aDEwa19tYWNfdW5yZWdpc3RlcihzdHJ1Y3QgYXRoMTBrICphcilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jLTEwMzcyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYzoxMDM3MzpcdGlmIChJU19FTkFCTEVEKENPTkZJR19BVEgxMEtfREZTX0NFUlRJRklFRCkgXHUwMDI2XHUwMDI2IGFyLVx1MDAzZWRmc19kZXRlY3RvcilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmMtMTAzNzQtXHRcdGFyLVx1MDAzZWRmc19kZXRlY3Rvci1cdTAwM2VleGl0KGFyLVx1MDAzZWRmc19kZXRlY3Rvcik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway93bWkuYz00MjA3PXZvaWQgYXRoMTBrX3dtaV9ldmVudF9kZnMoc3RydWN0IGF0aDEwayAqYXIsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway93bWkuYy00MjIzLVx0LyogU2tpcCBldmVudCBpZiBERlMgZGlzYWJsZWQgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvd21pLmM6NDIyNDpcdGlmICghSVNfRU5BQkxFRChDT05GSUdfQVRIMTBLX0RGU19DRVJUSUZJRUQpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway93bWkuYy00MjI1LVx0XHRyZXR1cm47XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDAwOjE0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMzMjUxCgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMTMwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkRGUyBTdXBwb3J0IGZvciBBdGhlcm9zIFVTQiBEcml2ZXJzKioKCk9rYXksIHNvIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhlIHVzZXIgaGFzIGBDT05GSUdfQVRIMTBLX0RGU19DRVJUSUZJRURgIGVuYWJsZWQsIHRoYXQmIzM5O3MgY2xlYXIuIEFuZCBvZiBjb3Vyc2UsIGlmIHRoZXkmIzM5O3JlIHVzaW5nIFVTQiwgd2UmIzM5O2xsIG5lZWQgYENPTkZJR19BVEgxMEtfVVNCYCBhcyB3ZWxsLiBCdXQgd2FpdCBhIG1pbnV0ZS4uLiBhcmVuJiMzOTt0IHRoZXJlIG90aGVyIEF0aGVyb3MgVVNCIGRyaXZlcnM/IFNwZWNpZmljYWxseSwgYGF0aDlrX2h0Y2AuIEkgbmVlZCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4gaWYgdGhhdCBkcml2ZXIgY2FuIGhhbmRsZSBERlMuIEl0JiMzOTtzIGNydWNpYWwgZm9yIHRoZSB1c2VyJiMzOTtzIHNldHVwLgoKSSBoYXZlIGEgbmFnZ2luZyBmZWVsaW5nIEkgbG9va2VkIGludG8gdGhpcyBiZWZvcmUuIEkgKnRoaW5rKiBJIGdyZXBwZWQgZm9yIGBhdGg5a19kZnNfcHJvY2Vzc19waHllcnJgIHdpdGhpbiB0aGUgYGF0aDlrL2h0Y2AgZGlyZWN0b3J5IHByZXZpb3VzbHksIGFuZCBJIGRpZG4mIzM5O3QgZ2V0IGFueSBoaXRzLiBCdXQgSSBuZWVkIHRvIGRvdWJsZS1jaGVjayBteSB3b3JrLiBJIG5lZWQgdG8gYmUgMTAwJSBzdXJlIGlmIGBhdGg5a19odGNgIGFjdHVhbGx5IHN1cHBvcnRzIERGUy4gTGV0IG1lIHZlcmlmeSB0aGlzIHF1aWNrbHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDAwOjE0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGZzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0YyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDAwOjE0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMzNjQyCgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMTkwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEN1cnJlbnQgTGluZSBvZiBSZWFzb25pbmcqKgoKQWxyaWdodCwgc28gaXQmIzM5O3MgY2xlYXIgdGhhdCBgYXRoOWtfaHRjYCBpc24mIzM5O3QgZ29pbmcgdG8gY3V0IGl0IGZvciB0aGlzIERGUyB0YXNrLiBUaGF0IHByZXR0eSBtdWNoIGxlYXZlcyBtZSB3aXRoIGBhdGgxMGtfdXNiYCwgcmlnaHQ/IEJ1dCBob2xkIG9uIGEgc2Vjb25kLi4uIGlzIGBhdGgxMGtfdXNiYCB0aGUgKm9ubHkqIG9wdGlvbj8gSSBuZWVkIHRvIGNvbnNpZGVyIGFsbCB0aGUgYW5nbGVzLiBMZXQgbWUgdGhpbmsuLi4gd2hhdCBhYm91dCBgbWFjODAyMTFfaHdzaW1gPwoKQWgsIHJpZ2h0LCBgbWFjODAyMTFfaHdzaW1gIGlzIHRoYXQgZ2VuZXJhbCBzb2Z0d2FyZSBzaW11bGF0b3IuIEl0JiMzOTtzIG5vdCB1c2luZyB0aGUgYGF0aDEwa2Agb3IgYGF0aDlrYCBkcml2ZXJzIGF0IGFsbDsgaXQmIzM5O3MgZ290IGl0cyBvd24gdGhpbmcsIGBtYWM4MDIxMV9od3NpbS5jYC4gVGhhdCBtZWFucywgaXQgd29uJiMzOTt0IGJlIHJ1bm5pbmcgYGRmc19wcmlfZGV0ZWN0b3IuY2AsIHNvIHRoYXQmIzM5O3MgYSBkZWFkIGVuZC4KCk9rYXksIGxldCYjMzk7cyBjaXJjbGUgYmFjayB0byB0aGUgbmV3ZXIgZHJpdmVycy4gV2hhdCBhYm91dCBgYXRoMTFrYCBvciBgYXRoMTJrYD8gRG8gKnRoZXkqIGxldmVyYWdlIGBkZnNfcHJpX2RldGVjdG9yLmNgPyBUaGF0JiMzOTtzIHRoZSBrZXkgcXVlc3Rpb24uIExldCYjMzk7cyBzZWUgaWYgYGF0aDExa2AgdXRpbGl6ZXMgdGhlIGBkZnNfcGF0dGVybl9kZXRlY3RvcmAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDAwOjE0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGZzX3BhdHRlcm5fZGV0ZWN0b3ImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDAwOjE0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM0MTQ2CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHN1bW1hcml6ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbiwgYXNzdW1pbmcgdGhlIGF1ZGllbmNlIGlzIGtub3dsZWRnZWFibGU6CgoqKktlcm5lbCBNb2R1bGUgSW52ZXN0aWdhdGlvbioqCgpSaWdodCwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gd2lyZWxlc3MgZHJpdmVycy4gVGhlIHF1ZXN0aW9uIG9mIHdoZXRoZXIgb3Igbm90IGEgc3BlY2lmaWMgZmVhdHVyZSBvciBtZWNoYW5pc20gaXMgdXRpbGl6ZWQgY29tZXMgdXAgZnJlcXVlbnRseS4gTGV0JiMzOTtzIHNlZS4uLiBJJiMzOTt2ZSBnb3QgYGF0aDExa2AgaW4gbWluZCByaWdodCBub3cuIEhvbGQgb24uLi4gSSYjMzk7bSBwcmV0dHkgc3VyZSB0aGF0IG9uZSBpc24mIzM5O3QgZW1wbG95aW5nIGl0LCBuby4gVGhhdCYjMzk7cyBhIHNvbGlkIG5lZ2F0aXZlLiBCdXQgd2FpdCBhIG1pbnV0ZSwgYW5kIGhlcmUgaXMgYSBuZXcgdHJhaW4gb2YgdGhvdWdodC4uLiB3aGF0IGFib3V0IHRoZSBuZXdlciBgYXRoMTJrYCBtb2R1bGU/IEkgc2hvdWxkIGV4cGxvcmUgdGhhdCBvbmUgbmV4dCwganVzdCB0byBiZSB0aG9yb3VnaCBhbmQgYXZvaWQgbWFraW5nIGFueSBwcmVtYXR1cmUgYXNzdW1wdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDAwOjE0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGZzX3BhdHRlcm5fZGV0ZWN0b3ImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDAwOjE0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM0MzY5CgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogOTA1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgdGhlIERGUyBEZXRlY3Rpb24gQ29kZSoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBiZWVuIGxvb2tpbmcgaW50byB0aGlzIGNvZGUgcmVsYXRlZCB0byBERlMgKER5bmFtaWMgRnJlcXVlbmN5IFNlbGVjdGlvbikuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIGZvY3VzIG9uIHRoZSBgYXRoOWtgIGFuZCBgYXRoMTBrYCBkcml2ZXJzLCBiZWNhdXNlIHRoZXkmIzM5O3JlIHRoZSBvbmVzIHRoYXQgdXNlIGBkZnNfcGF0dGVybl9kZXRlY3RvcmAgYW5kIGBkZnNfcHJpX2RldGVjdG9yYC4gU2luY2UgYGF0aDlrYCBpcyBQQ0ktb25seSwgYW5kIGBhdGgxMGtgIGluY2x1ZGVzIGBhdGgxMGtfdXNiYCwgSSBjYW4gdGFyZ2V0IGZ1enppbmcgdGhlIGBhdGgxMGtfdXNiYCBkcml2ZXIgdmlhIFVTQiBmdXp6aW5nLiBUaGF0IG1lYW5zIEkgY2FuIHVzZSBTeXprYWxsZXImIzM5O3MgYGR1bW15X2hjZGAgdG8gZG8gdGhpcyBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIHdoaWNoIGlzIHBlcmZlY3QuCgpJIG5lZWQgdG8gY29uZmlybSBgYXRoMTBrX3VzYmAgaXMgZW5hYmxlZCBpbiBTeXprYWxsZXIgYnkgZGVmYXVsdC4gSXQgdXN1YWxseSBpcywgYXMgYENPTkZJR19BVEgxMEtfVVNCPXlgLCBidXQgSSYjMzk7bGwgYWRkIGBBVEgxMEtfVVNCYCBhbmQgYEFUSDEwS19ERlNfQ0VSVElGSUVEYCB0byBgRW5hYmxlQ29uZmlnc2AganVzdCB0byBiZSBjZXJ0YWluLiBCZXR0ZXIgc2FmZSB0aGFuIHNvcnJ5LgoKTm93LCBsZXQmIzM5O3MgbG9vayBhdCB0aGlzIHNwZWNpZmljIHBhdGNoLiBJdCYjMzk7cyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHdpdGhpbiBgcGRlX2dldF9tdWx0aXBsZWAuIFRoZSBvcmlnaW5hbCBjb2RlIHVzZWQgZGl2aXNpb24sIGFuZCBub3cgaXQmIzM5O3MgdXNpbmcgcmVjaXByb2NhbCBtdWx0aXBsaWNhdGlvbi4gVGhpcyBpcyBhIGNsYXNzaWMgc3BvdCBmb3IgZnV6emluZyEgUmVwbGFjaW5nIGRpdmlzaW9uIHdpdGggcmVjaXByb2NhbCBtdWx0aXBsaWNhdGlvbiBjb3VsZCBpbnRyb2R1Y2UgcHJlY2lzaW9uIGlzc3Vlcywgb3IgZXZlbiBhIGRpdmlkZS1ieS16ZXJvIGlmIGBmcmFjdGlvbl9yZWNpcGAgaXNuJiMzOTt0IGluaXRpYWxpemVkIGNvcnJlY3RseS4gSXQmIzM5O3MgY3JpdGljYWwgdG8gbWFrZSBzdXJlIHRoaXMgZG9lc24mIzM5O3QgaW50cm9kdWNlIGFueSByZWdyZXNzaW9ucy4KCldhaXQsIGBmcmFjdGlvbl9yZWNpcGAgaXMgaW5pdGlhbGl6ZWQgaW4gYHBzZXFfaGFuZGxlcl9jcmVhdGVfc2VxdWVuY2VzYC4gSXQgbG9va3MgbGlrZSBpZiBgcHMucHJpYCBpcyAwLCB0aGVuIGBwcy5wcmlfcmVjaXBgIGJlY29tZXMgMC4gVGhlbiBgcmVjaXByb2NhbF9kaXZpZGUodmFsLCBmcmFjdGlvbl9yZWNpcClgIHdvdWxkIGJlIGNhbGxlZCB3aXRoIDAgYXMgb25lIG9mIGl0cyBpbnB1dHMuIFRoZSBjb2RlIGNhbGxzIGByZWNpcHJvY2FsX2RpdmlkZShhLCBSKWAgd2hpY2ggZXhwYW5kcyBvdXQgdG8gYCh1MzIpKCgodTY0KWEgKiBSLm0pICZndDsmZ3Q7IFIuc2gxKSAmZ3Q7Jmd0OyBSLnNoMmAuIElmIGBSLm1gIGlzIHplcm8sIHRoZW4gdGhpcyBmdW5jdGlvbiByZXR1cm5zIDAuCgpXYWl0IGEgc2Vjb25kLCB0aGUgKm9yaWdpbmFsKiBjb2RlIHdhczoKYGBgYwoJZmFjdG9yID0gdmFsIC8gZnJhY3Rpb247CglyZW1haW5kZXIgPSB2YWwgJSBmcmFjdGlvbjsKYGBgCklmIGBmcmFjdGlvbmAgKndhcyogemVybywgdGhhdCB3b3VsZCBjYXVzZSBhIGRpdmlkZS1ieS16ZXJvISBOb3csIGlmIGl0JiMzOTtzIHplcm8sIHRoZSBmdW5jdGlvbiByZXR1cm5zIDAuICBFc3NlbnRpYWxseSwgaXQmIzM5O3MgKmF2b2lkaW5nKiBhIHBvdGVudGlhbCBkaXZpZGUtYnktemVybyBleGNlcHRpb24hIFRoZSBuZXcgY29kZSBpcyBhY3R1YWxseSBtb3JlIHJvYnVzdC4KClRoZSBxdWVzdGlvbiB0aGVuIGlzLCBjYW4gYGZyYWN0aW9uYCAod2hpY2ggaXMgYHBzLnByaWApICpiZSogemVybz8gSSBzZWUgdGhhdCBgcHMucHJpYCBpcyBzZXQgdmlhIGBHRVRfUFJJX1RPX1VTRWAsIHdoaWNoIGludm9sdmVzIGEgdGltZSBkaWZmZXJlbmNlLiBJZiBgdHMgPT0gcC0mZ3Q7dHNgLCB0aGVuIGBwcy5wcmlgIGNvdWxkIGluZGVlZCBiZSAwLCByaWdodD8gVGhlIGtleSBwb2ludCBpcyB0aGF0IHRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgYW5kIHRoZSBjcml0aWNhbCB0aGluZyBpcyB0byB2ZXJpZnkgaXRzIGJlaGF2aW9yIHVuZGVyIGFsbCBzY2VuYXJpb3MuCgpBbHJpZ2h0LCBzbyB0aGUgZm9jdXMgc3ltYm9scyBJIG5lZWQgdG8gdGFyZ2V0IGZvciBmdXp6aW5nIGFyZTogYHBkZV9nZXRfbXVsdGlwbGVgIChzdGF0aWMpLCBgcHNlcV9oYW5kbGVyX2NyZWF0ZV9zZXF1ZW5jZXNgIChzdGF0aWMpLCBhbmQgYHBzZXFfaGFuZGxlcl9hZGRfdG9fZXhpc3Rpbmdfc2Vxc2AgKHN0YXRpYykuIFRoZXNlIGFyZSBhbGwgaW50ZXJuYWwgdG8gYGRmc19wcmlfZGV0ZWN0b3IuY2AsIHNvIEkgbmVlZCB0byBmaW5kIHRoZSBleHBvcnRlZCBvciBub24tc3RhdGljIGZ1bmN0aW9ucyB0aGF0IGNhbGwgdGhlbSB0byBidWlsZCB1cCBhIGZ1enppbmcgc3RyYXRlZ3kuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDAwOjE0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BzZXFfaGFuZGxlcl9jcmVhdGVfc2VxdWVuY2VzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wcmlfZGV0ZWN0b3IuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3ByaV9kZXRlY3Rvci5jPTIwND1zdGF0aWMgYm9vbCBwdWxzZV9xdWV1ZV9lbnF1ZXVlKHN0cnVjdCBwcmlfZGV0ZWN0b3IgKnBkZSwgdTY0IHRzKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcHJpX2RldGVjdG9yLmMtMjI2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wcmlfZGV0ZWN0b3IuYzoyMjc6c3RhdGljIGJvb2wgcHNlcV9oYW5kbGVyX2NyZWF0ZV9zZXF1ZW5jZXMoc3RydWN0IHByaV9kZXRlY3RvciAqcGRlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wcmlfZGV0ZWN0b3IuYy0yMjgtXHRcdFx0XHRcdCAgdTY0IHRzLCB1MzIgbWluX2NvdW50KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcHJpX2RldGVjdG9yLmM9Mzg5PXN0YXRpYyBzdHJ1Y3QgcHJpX3NlcXVlbmNlICpwcmlfZGV0ZWN0b3JfYWRkX3B1bHNlKHN0cnVjdCBwcmlfZGV0ZWN0b3IgKmRlLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcHJpX2RldGVjdG9yLmMtNDExLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wcmlfZGV0ZWN0b3IuYzo0MTI6XHRpZiAoIXBzZXFfaGFuZGxlcl9jcmVhdGVfc2VxdWVuY2VzKGRlLCB0cywgbWF4X3VwZGF0ZWRfc2VxKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wcmlfZGV0ZWN0b3IuYy00MTMtXHRcdHByaV9kZXRlY3Rvcl9yZXNldChkZSwgdHMpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAwMDoxNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNjM1OAoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDM0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgYnJlYWtkb3duIG9mIG15IHRob3VnaHQgcHJvY2VzczoKCioqVHJhY2luZyBgcHJpX2RldGVjdG9yX2FkZF9wdWxzZWAqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGBwcmlfZGV0ZWN0b3JfYWRkX3B1bHNlYCBhbmQgSSBzZWUgaXQgaW1tZWRpYXRlbHkgY2FsbHMgYHBzZXFfaGFuZGxlcl9jcmVhdGVfc2VxdWVuY2VzYC4gVGhhdCYjMzk7cyBpbnRlcmVzdGluZy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCYjMzk7cyBoYXBwZW5pbmcgd2l0aGluIHRoaXMgZnVuY3Rpb24gYW5kIGhvdyBpdCByZWxhdGVzIHRvIHRoZSBiaWdnZXIgcGljdHVyZS4gSSYjMzk7bSBnb2luZyB0byBmb2xsb3cgdGhlIGNvbnRyb2wgZmxvdyBmcm9tIHRoZSBzb3VyY2UsIHN0YXJ0aW5nIHdpdGggYHByaV9kZXRlY3Rvcl9hZGRfcHVsc2VgLCBhcyB0aGF0IHNlZW1zIGxpa2UgdGhlIGVudHJ5IHBvaW50LiBJJiMzOTtsbCBuZWVkIHRvIGRyaWxsIGRvd24gaW50byB0aGUgaW5uZXIgd29ya2luZ3Mgb2YgYHBzZXFfaGFuZGxlcl9jcmVhdGVfc2VxdWVuY2VzYCBhcyB3ZWxsIHRvIHByb3Blcmx5IHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcC4gVGhpcyBsb29rcyBsaWtlIGEgcHJvbWlzaW5nIGF2ZW51ZSBmb3IgdW5kZXJzdGFuZGluZyBob3cgdGhlIHN5c3RlbSBoYW5kbGVzIHB1bHNlIHNlcXVlbmNlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMDA6MTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cHJpX2RldGVjdG9yX2FkZF9wdWxzZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wcmlfZGV0ZWN0b3IuYz0zODI9c3RhdGljIHZvaWQgcHJpX2RldGVjdG9yX2V4aXQoc3RydWN0IHByaV9kZXRlY3RvciAqZGUpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wcmlfZGV0ZWN0b3IuYy0zODgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3ByaV9kZXRlY3Rvci5jOjM4OTpzdGF0aWMgc3RydWN0IHByaV9zZXF1ZW5jZSAqcHJpX2RldGVjdG9yX2FkZF9wdWxzZShzdHJ1Y3QgcHJpX2RldGVjdG9yICpkZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcHJpX2RldGVjdG9yLmMtMzkwLVx0XHRcdFx0XHRcdCAgIHN0cnVjdCBwdWxzZV9ldmVudCAqZXZlbnQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wcmlfZGV0ZWN0b3IuYz00MjU9c3RydWN0IHByaV9kZXRlY3RvciAqcHJpX2RldGVjdG9yX2luaXQoY29uc3Qgc3RydWN0IHJhZGFyX2RldGVjdG9yX3NwZWNzICpycylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3ByaV9kZXRlY3Rvci5jLTQzMi1cdGRlLVx1MDAzZWV4aXQgPSBwcmlfZGV0ZWN0b3JfZXhpdDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcHJpX2RldGVjdG9yLmM6NDMzOlx0ZGUtXHUwMDNlYWRkX3B1bHNlID0gcHJpX2RldGVjdG9yX2FkZF9wdWxzZTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcHJpX2RldGVjdG9yLmMtNDM0LVx0ZGUtXHUwMDNlcmVzZXQgPSBwcmlfZGV0ZWN0b3JfcmVzZXQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDAwOjE0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM2ODc2CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMzQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBpZiB0aGV5IGFyZSBteSBvd246CgoqKkludmVzdGlnYXRpbmcgUHVsc2UgRGV0ZWN0aW9uIEluaXRpYWxpemF0aW9uKioKCkFscmlnaHQsIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEl0IGxvb2tzIGxpa2UgYHByaV9kZXRlY3Rvcl9pbml0YCBpcyBzZXR0aW5nIHVwIHNvbWV0aGluZywgYW5kIHNwZWNpZmljYWxseSwgaXQgc2VlbXMgdG8gYmUgbGlua2luZyBhIGZ1bmN0aW9uLiBUaGUgbGluZSBgZGUtJmd0O2FkZF9wdWxzZSA9IHByaV9kZXRlY3Rvcl9hZGRfcHVsc2VgIGlzIHRoZSBrZXkuIEkgY2FuIGltbWVkaWF0ZWx5IGluZmVyIHRoYXQgYGRlYCBpcyBwcm9iYWJseSBhIGRhdGEgc3RydWN0dXJlIG9mIHNvbWUga2luZCDigJMgbWF5YmUgYSBkZXZpY2UgZGVzY3JpcHRvciBvciBhbiBvYmplY3Qg4oCTIGFuZCBpdCBjb250YWlucyBhIG1lbWJlciBjYWxsZWQgYGFkZF9wdWxzZWAuIFRoZSBhc3NpZ25tZW50IHN1Z2dlc3RzIHRoYXQgYHByaV9kZXRlY3Rvcl9pbml0YCBpcyB0YWtpbmcgdGhlIGFkZHJlc3Mgb2YgdGhlIGZ1bmN0aW9uIGBwcmlfZGV0ZWN0b3JfYWRkX3B1bHNlYCBhbmQgYXNzaWduaW5nIGl0IHRvIHRoZSBgYWRkX3B1bHNlYCBtZW1iZXIgd2l0aGluIHRoaXMgYGRlYCBzdHJ1Y3R1cmUuCgpTbywgYGRlLSZndDthZGRfcHVsc2VgIGlzIG5vdyBhIGZ1bmN0aW9uIHBvaW50ZXIgdGhhdCB3aWxsIGV4ZWN1dGUgYHByaV9kZXRlY3Rvcl9hZGRfcHVsc2VgLiBUaGF0JiMzOTtzIHN0YW5kYXJkIHByYWN0aWNlIGZvciBzZXR0aW5nIHVwIGNhbGxiYWNrcyBvciBtZXRob2RzIGluIEMsIGVzcGVjaWFsbHkgd2hlbiB3b3JraW5nIHdpdGggZGV2aWNlIGRyaXZlcnMgb3IgZXZlbnQgaGFuZGxlcnMuCgpUaGUgY29yZSBxdWVzdGlvbiBub3csIGFuZCB0aGUgY3JpdGljYWwgb25lIHRvIHVuZGVyc3RhbmQgdGhlIHdob2xlIHBpY3R1cmUsIGlzICp3aG8qIGNhbGxzIGBwcmlfZGV0ZWN0b3JfaW5pdGA/IEkgbmVlZCB0byB0cmFjZSBiYWNrIGZyb20gdGhpcyBmdW5jdGlvbiBjYWxsLiBLbm93aW5nIHdoZXJlIGBwcmlfZGV0ZWN0b3JfaW5pdGAgaXMgdXNlZCB3aWxsIHRlbGwgbWUgdGhlIGNvbnRleHQgb2YgdGhpcyBwdWxzZSBkZXRlY3Rpb24gc3lzdGVtLiBJcyBpdCBhdCBpbml0aWFsaXphdGlvbiwgZGV2aWNlIHJlZ2lzdHJhdGlvbiwgbW9kdWxlIGxvYWRpbmcsIG9yIHNvbWV0aGluZyBlbHNlIGVudGlyZWx5PyBUaGUgY2FsbGVyIHdpbGwgcmV2ZWFsIHRoZSBzY29wZSBhbmQgcHVycG9zZSBvZiB0aGUgYGFkZF9wdWxzZWAgZnVuY3Rpb24gYW5kIGhvdyB0aGUgc3lzdGVtIG1hbmFnZXMgdGhpcy4gVGhpcyBpcyB0aGUgY3J1Y2lhbCBwaWVjZSBvZiB0aGUgcHV6emxlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAwMDoxNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwcmlfZGV0ZWN0b3JfaW5pdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmM9MTk3PWNoYW5uZWxfZGV0ZWN0b3JfY3JlYXRlKHN0cnVjdCBkZnNfcGF0dGVybl9kZXRlY3RvciAqZHBkLCB1MTYgZnJlcSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3BhdHRlcm5fZGV0ZWN0b3IuYy0yMTAtXHRcdGNvbnN0IHN0cnVjdCByYWRhcl9kZXRlY3Rvcl9zcGVjcyAqcnMgPSBcdTAwMjZkcGQtXHUwMDNlcmFkYXJfc3BlY1tpXTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcGF0dGVybl9kZXRlY3Rvci5jOjIxMTpcdFx0c3RydWN0IHByaV9kZXRlY3RvciAqZGUgPSBwcmlfZGV0ZWN0b3JfaW5pdChycyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3BhdHRlcm5fZGV0ZWN0b3IuYy0yMTItXHRcdGlmIChkZSA9PSBOVUxMKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcHJpX2RldGVjdG9yLmM9Mzg5PXN0YXRpYyBzdHJ1Y3QgcHJpX3NlcXVlbmNlICpwcmlfZGV0ZWN0b3JfYWRkX3B1bHNlKHN0cnVjdCBwcmlfZGV0ZWN0b3IgKmRlLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcHJpX2RldGVjdG9yLmMtNDI0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wcmlfZGV0ZWN0b3IuYzo0MjU6c3RydWN0IHByaV9kZXRlY3RvciAqcHJpX2RldGVjdG9yX2luaXQoY29uc3Qgc3RydWN0IHJhZGFyX2RldGVjdG9yX3NwZWNzICpycylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcHJpX2RldGVjdG9yLmMtNDI2LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3ByaV9kZXRlY3Rvci5oPTYyPXN0cnVjdCBwcmlfZGV0ZWN0b3Ige1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcHJpX2RldGVjdG9yLmgtNzgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3ByaV9kZXRlY3Rvci5oOjc5OnN0cnVjdCBwcmlfZGV0ZWN0b3IgKnByaV9kZXRlY3Rvcl9pbml0KGNvbnN0IHN0cnVjdCByYWRhcl9kZXRlY3Rvcl9zcGVjcyAqcnMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wcmlfZGV0ZWN0b3IuaC04MC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMDA6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzc2NzIKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAyNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDoKCioqRGVjb25zdHJ1Y3RpbmcgRGV0ZWN0b3IgSW5pdGlhbGl6YXRpb24gYW5kIFB1bHNlIEFkZGl0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBgY2hhbm5lbF9kZXRlY3Rvcl9jcmVhdGVgLiBUaGF0IG5hbWUgc3Ryb25nbHkgc3VnZ2VzdHMgdGhpcyBpcyB3aGVyZSB3ZSBpbnN0YW50aWF0ZSBhIG5ldyBkZXRlY3RvciBjaGFubmVsLCB3aGljaCBtYWtlcyBzZW5zZS4gSW1tZWRpYXRlbHksIHRoZSBjb2RlIHNlZW1zIHRvIGhhbmQgb2ZmIHRoZSBjb3JlIGluaXRpYWxpemF0aW9uIHRvIGBwcmlfZGV0ZWN0b3JfaW5pdGAuIFRoYXQgaW1wbGllcyBhIHByaXZhdGUgb3IgcHJpbWFyeSBpbml0aWFsaXphdGlvbiBmdW5jdGlvbiwgcHJvYmFibHkgc2V0dGluZyB1cCBpbnRlcm5hbCBkYXRhIHN0cnVjdHVyZXMgYW5kIHBlcmhhcHMgYWxsb2NhdGluZyBtZW1vcnkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoYXQgY2FsbCBiZWNhdXNlIGl0JiMzOTtzIHRoZSBmb3VuZGF0aW9uLgoKTm93IHRoZSBtaWxsaW9uLWRvbGxhciBxdWVzdGlvbjogd2hlcmUgZG9lcyB0aGUgY29kZSAqYWRkKiBpbmRpdmlkdWFsIHB1bHNlcyB0byB0aGlzIGRldGVjdG9yPyBJJiMzOTttIG1pc3NpbmcgdGhhdCBrZXkgcGllY2UuIEkgbmVlZCB0byB0cmFjZSB0aGUgY2FsbCB0byBgYWRkX3B1bHNlYC4gSWRlbnRpZnlpbmcgd2hlcmUgcHVsc2VzIGFyZSBmZWQgaW50byB0aGUgc3lzdGVtIGlzIGNydWNpYWwgZm9yIHVuZGVyc3RhbmRpbmcgaG93IHRoZSBkZXRlY3RvciBhY3R1YWxseSAqZGV0ZWN0cyogYW55dGhpbmcuIEkgbmVlZCB0byBmaW5kIHRoZSBjYWxsaW5nIGNvbnRleHQgdG8gc2VlIGhvdyBkYXRhIGlzIGJlaW5nIHByb2Nlc3NlZC4gSXMgaXQgYW4gaW50ZXJydXB0LCBhIGRhdGEgc3RyZWFtaW5nIGZ1bmN0aW9uLCBvciBzb21ldGhpbmcgZWxzZSBlbnRpcmVseT8gV2l0aG91dCBgYWRkX3B1bHNlYCBJIGhhdmUgb25seSBoYWxmIHRoZSBwaWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAwMDoxNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthZGRfcHVsc2UmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3BhdHRlcm5fZGV0ZWN0b3IuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3BhdHRlcm5fZGV0ZWN0b3IuYz0yNjc9c3RhdGljIGJvb2xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcGF0dGVybl9kZXRlY3Rvci5jOjI2ODpkcGRfYWRkX3B1bHNlKHN0cnVjdCBkZnNfcGF0dGVybl9kZXRlY3RvciAqZHBkLCBzdHJ1Y3QgcHVsc2VfZXZlbnQgKmV2ZW50LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmMtMjY5LVx0ICAgICAgc3RydWN0IHJhZGFyX2RldGVjdG9yX3NwZWNzICpycylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3BhdHRlcm5fZGV0ZWN0b3IuYy0yOTItXHRcdHN0cnVjdCBwcmlfZGV0ZWN0b3IgKnBkID0gY2QtXHUwMDNlZGV0ZWN0b3JzW2ldO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmM6MjkzOlx0XHRzdHJ1Y3QgcHJpX3NlcXVlbmNlICpwcyA9IHBkLVx1MDAzZWFkZF9wdWxzZShwZCwgZXZlbnQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmMtMjk0LVx0XHRpZiAocHMgIT0gTlVMTCkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcGF0dGVybl9kZXRlY3Rvci5jPTM0MD1zdGF0aWMgY29uc3Qgc3RydWN0IGRmc19wYXR0ZXJuX2RldGVjdG9yIGRlZmF1bHRfZHBkID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcGF0dGVybl9kZXRlY3Rvci5jLTM0Mi1cdC5zZXRfZGZzX2RvbWFpblx0PSBkcGRfc2V0X2RvbWFpbixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcGF0dGVybl9kZXRlY3Rvci5jOjM0MzpcdC5hZGRfcHVsc2VcdD0gZHBkX2FkZF9wdWxzZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcGF0dGVybl9kZXRlY3Rvci5jLTM0NC1cdC5nZXRfc3RhdHNcdD0gZHBkX2dldF9zdGF0cyxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMDA6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzgzMTMKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiA4MTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBUYXJnZXQgUHJpb3JpdGl6YXRpb24gZm9yIERGUyBSYWRhciBEZXRlY3Rpb24qKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93biBmb3IgZnV6emluZyBwdXJwb3Nlcywgc3BlY2lmaWNhbGx5IHRhcmdldGluZyB0aGUgREZTIHJhZGFyIGRldGVjdGlvbiBpbiB0aGVzZSB3aXJlbGVzcyBkcml2ZXJzLiBUaGUgY29yZSBjYWxsIGNoYWluIGlzIHdoYXQgSSYjMzk7bSBpbnRlcmVzdGVkIGluOiBgYXRoMTBrX3dtaV9ldmVudF9kZnNgIChvciwgcmVhbGx5LCBgYXRoMTBrX3dtaV9ldmVudF9waHllcnJgKSwgd2hpY2ggdHJpZ2dlcnMgYSBzZXJpZXMgb2YgZXZlbnRzIHVsdGltYXRlbHkgbGVhZGluZyB0byByYWRhciBwdWxzZSBkZXRlY3Rpb24uCgpGaXJzdCwgYGRwZF9hZGRfcHVsc2VgIGNhbGxzIGBwZC0mZ3Q7YWRkX3B1bHNlYCwgYW5kIGBkcGRfYWRkX3B1bHNlYCBpcyBhc3NpZ25lZCB0byBgZHBkLSZndDthZGRfcHVsc2VgLiBXZSBzYXcgdGhhdCBgYXItJmd0O2Rmc19kZXRlY3Rvci0mZ3Q7YWRkX3B1bHNlYCBpcyBjYWxsZWQgYnkgYGF0aDEwa19kZnNfcmFkYXJfcmVwb3J0YCB3aGljaCBpbiB0dXJuIGlzIGNhbGxlZCBieSBgYXRoMTBrX3dtaV9ldmVudF9kZnNgLiBUaGlzIGNhbGwgY2hhaW4gaXMga2V5OiBgYXRoMTBrX3dtaV9ldmVudF9kZnNgIC0mZ3Q7IGBhdGgxMGtfZGZzX3JhZGFyX3JlcG9ydGAgLSZndDsgYGRwZF9hZGRfcHVsc2VgIC0mZ3Q7IGBwcmlfZGV0ZWN0b3JfYWRkX3B1bHNlYCAtJmd0OyBgcHNlcV9oYW5kbGVyX2NyZWF0ZV9zZXF1ZW5jZXNgIC8gYHBzZXFfaGFuZGxlcl9hZGRfdG9fZXhpc3Rpbmdfc2Vxc2AgLSZndDsgYHBkZV9nZXRfbXVsdGlwbGVgLgoKTm93LCBmb3IgZnV6emluZywgSSYjMzk7dmUgZ290IHRvIHByaW9yaXRpemUgdGhlIHRhcmdldHMuIExldCYjMzk7cyBzZWUuLi4KCiogICBgYXRoMTBrX3dtaV9ldmVudF9kZnNgOiBJdCYjMzk7cyBub3Qgc3RhdGljOyBpdCYjMzk7cyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIEFjdHVhbGx5LCBgYXRoMTBrX3dtaV9ldmVudF9waHllcnJgIGFsc28gaXNuJiMzOTt0IHN0YXRpYyBhbmQgaXQgY2FsbHMgYGF0aDEwa193bWlfZXZlbnRfZGZzYCwgc28gYm90aCBhcmUgcHJpbWUgY2FuZGlkYXRlcy4KKiAgIGBhdGgxMGtfZGZzX3JhZGFyX3JlcG9ydGA6IEl0JiMzOTtzIGBzdGF0aWNgLCBzbyBpdCBtaWdodCBiZSBpbmxpbmVkLiBUaGF0IGNvdWxkIGNvbXBsaWNhdGUgdGhpbmdzLgoqICAgYGRwZF9hZGRfcHVsc2VgOiBBbHNvIGBzdGF0aWNgLCB3aGljaCBpcyBsZXNzIGlkZWFsIGZvciBkaXJlY3QgZnV6emluZy4KKiAgIGBwcmlfZGV0ZWN0b3JfYWRkX3B1bHNlYDogVGhpcyBpcyBhbHNvIGBzdGF0aWNgLiBTbywgbm90IGRpcmVjdGx5IGZ1enphYmxlLgoKU28gdGhlIGJlc3QgaW5pdGlhbCBub24tc3RhdGljIHBvaW50cyBhcmUgY2xlYXJseSBgYXRoMTBrX3dtaV9ldmVudF9kZnNgIGFuZCBgYXRoMTBrX3dtaV9ldmVudF9waHllcnJgLCBzaW5jZSB0aGV5IHN0YXJ0IHRoZSB3aG9sZSBwcm9jZXNzLgoKV2hhdCBhYm91dCB0aGUgYGF0aDlrYCBzaWRlIG9mIHRoaW5ncz8gV2UmIzM5O3ZlIGdvdCBgYXRoOWtfZGZzX3Byb2Nlc3NfcGh5ZXJyYCAtJmd0OyBgYXRoOWtfZGZzX3Byb2Nlc3NfcmFkYXJfcHVsc2VgIC0mZ3Q7IGBwZC0mZ3Q7YWRkX3B1bHNlYC4gSXQmIzM5O3MgUENJLW9ubHkgc28gaXQgbWlnaHQgYmUgaGFyZGVyIHRvIHJlYWNoIHdpdGhvdXQgUENJIGZ1enppbmcsIGJ1dCBpdCBpcyB3b3J0aCBpbmNsdWRpbmcuIGBhdGg5a19kZnNfcHJvY2Vzc19waHllcnJgIGlzbiYjMzk7dCBzdGF0aWMgZWl0aGVyLiBTbywgSSB3aWxsIGluY2x1ZGUgYGF0aDlrX2Rmc19wcm9jZXNzX3BoeWVycmAgYW5kIGBhdGg5a19kZnNfcHJvY2Vzc19yYWRhcl9wdWxzZWAgaW4gdGhlIGxpc3QgdG8gYXR0ZW1wdCB0byBjb3ZlciBpdC4KCkZpbmFsbHksIHRoZSByZXF1aXJlZCBjb25maWdzIGFyZTogYENPTkZJR19BVEgxMEtfREZTX0NFUlRJRklFRGAsIGBDT05GSUdfQVRIMTBLX1VTQmAsIGFuZCBgQ09ORklHX0FUSDlLX0RGU19DRVJUSUZJRURgLiBXZSBuZWVkIHRvIHZlcmlmeSB0aGF0IGBDT05GSUdfQVRIOUtfREZTX0NFUlRJRklFRGAgYWN0dWFsbHkgZXhpc3RzIGluIHRoZSBrZXJuZWwgY29uZmlnLgoKVGhlcmVmb3JlLCB0aGUga2V5IHRhcmdldHMgZm9yIGluaXRpYWwgZnV6emluZyBzaG91bGQgYmUgYGF0aDEwa193bWlfZXZlbnRfZGZzYCwgYGF0aDEwa193bWlfZXZlbnRfcGh5ZXJyYCwgYW5kIGBhdGg5a19kZnNfcHJvY2Vzc19waHllcnJgLCBhaW1pbmcgdG8gdHJpZ2dlciB0aGUgREZTIHJhZGFyIGRldGVjdGlvbiBsb2dpYyBhbmQgZXhwb3NlIGFueSBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0aWVzIGluIHRoZSBwcm9jZXNzaW5nIG9mIHJhZGFyIHB1bHNlIGV2ZW50cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMDA6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7QVRIOUtfREZTX0NFUlRJRklFRCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc9OT1jb25maWcgQVRIOUtfREZTX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTEwLVx0ZGVmX2Jvb2wgeVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTE6XHRkZXBlbmRzIG9uIEFUSDlLX0RFQlVHRlMgXHUwMDI2XHUwMDI2IEFUSDlLX0RGU19DRVJUSUZJRURcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTEyLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnPTc2PWNvbmZpZyBBVEg5S19UWDk5XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctOTUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzo5Njpjb25maWcgQVRIOUtfREZTX0NFUlRJRklFRFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctOTctXHRib29sIFwmIzM0O0F0aGVyb3MgREZTIHN1cHBvcnQgZm9yIGNlcnRpZmllZCBwbGF0Zm9ybXNcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGU9MTU9YXRoOWstJChDT05GSUdfQVRIOUtfREZTX0RFQlVHRlMpICYjNDM7PSBkZnNfZGVidWcub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlOjE2OmF0aDlrLSQoQ09ORklHX0FUSDlLX0RGU19DRVJUSUZJRUQpICYjNDM7PSBkZnMub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlLTE3LWF0aDlrLSQoQ09ORklHX0FUSDlLX1RYOTkpICYjNDM7PSB0eDk5Lm9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGZzLmgtMjEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGZzLmg6MjI6I2lmIGRlZmluZWQoQ09ORklHX0FUSDlLX0RGU19DRVJUSUZJRUQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGZzLmgtMjMtLyoqXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2luaXQuYz04NjM9c3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfaWZhY2VfY29tYmluYXRpb24gaWZfY29tYltdID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9pbml0LmMtODY5LVx0XHQuYmVhY29uX2ludF9pbmZyYV9tYXRjaCA9IHRydWUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jOjg3MDojaWZkZWYgQ09ORklHX0FUSDlLX0RGU19DRVJUSUZJRURcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9pbml0LmMtODcxLVx0XHQucmFkYXJfZGV0ZWN0X3dpZHRocyA9XHRCSVQoTkw4MDIxMV9DSEFOX1dJRFRIXzIwX05PSFQpIHxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMDA6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDA1MTgKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAzMzYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQ29uZmlndXJhdGlvbiBDb251bmRydW0qKgoKT2theSwgc28gSSYjMzk7bSB0cnlpbmcgdG8gbmFpbCBkb3duIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9ucyBoZXJlLiBJIHNlZSBgQ09ORklHX0FUSDlLX0RGU19DRVJUSUZJRURgIGV4aXN0cywgd2hpY2ggaXMgZ29vZC4gQnV0IHdhaXQsIGBhdGg5a2AgaXMgUENJLW9ubHkuLi4gcmlnaHQ/IEhtbSwgbWF5YmUgSSBzaG91bGQgbGlzdCBpdCBhbnl3YXksIGp1c3QgZm9yIGNvbXBsZXRlbmVzcy4gR290dGEgYmUgdGhvcm91Z2guCgpUaGVuLCB0aGVyZSYjMzk7cyBgQ09ORklHX0FUSDlLYCBhbmQgYENPTkZJR19BVEgxMEtgLiBDaGFuY2VzIGFyZSB0aGV5JiMzOTtyZSBhbHJlYWR5IGVuYWJsZWQsIGJ1dCBsaXN0aW5nIHRoZW0gY2FuJiMzOTt0IGh1cnQuIEFsd2F5cyBkb3VibGUtY2hlY2ssIGVzcGVjaWFsbHkgaW4gYSBmdXp6aW5nIGNvbnRleHQuIEFuZCBob2xkIG9uLCBmb3IgdmlydHVhbGl6ZWQgZnV6emluZywgYENPTkZJR19BVEgxMEtfVVNCYCBpcyBwcm9iYWJseSB0aGUgbW9zdCBjcnVjaWFsIG9uZSBvZiB0aGVtIGFsbCwgdGhhdCYjMzk7cyBkZWZpbml0ZWx5IGdvaW5nIG9uIHRoZSBsaXN0LgoKTGV0JiMzOTtzIHNlZSwgd2hhdCBhYm91dCBgQ09ORklHX0FUSDlLX0hUQ2A/IEkgc2VlbSB0byByZWNhbGwgd2UmIzM5O3ZlIGxvb2tlZCBhdCB0aGF0IGJlZm9yZSBhbmQgY29uZmlybWVkIGl0IGRvZXNuJiMzOTt0IHVzZSBERlMsIGJ1dCBsZXQgbWUganVzdCBjb25maXJtIGl0Li4uIHllcywgaXQgZG9lc24mIzM5O3QgdXNlIERGUy4KClJpZ2h0LCBzbyB0byByZWNhcCwgaGVyZSYjMzk7cyB3aGF0IEkgd2FudCB0byBtYWtlIHN1cmUgd2UgaGF2ZSBjb25maWd1cmVkOgpgQVRIMTBLYApgQVRIMTBLX1VTQmAKYEFUSDEwS19ERlNfQ0VSVElGSUVEYApgQVRIOUtgCmBBVEg5S19ERlNfQ0VSVElGSUVEYApPaCwgYW5kIGBNQUM4MDIxMV9IV1NJTWAgLS0gbm90IGRpcmVjdGx5IHJlbGF0ZWQgdG8gdGhlIGBhdGhgIHN0dWZmLCBidXQgZ2VuZXJhbGx5IHVzZWZ1bCBmb3IgV2lGaSB0ZXN0aW5nLCBzbyBsZXQmIzM5O3MgdGhyb3cgdGhhdCBpbiBmb3IgZ29vZCBtZWFzdXJlLgoKTm93LCBhIHF1aWNrIHJldmlldyBvZiB0aGUgZGVwZW5kZW5jeSBjb21waWxhdGlvbiBsb2dpYy4uLiBTbywgYGRmc19wcmlfZGV0ZWN0b3IuY2AgaXMgY29tcGlsZWQgd2hlbiBgQ09ORklHX0FUSF9DT01NT05gIGlzIGVuYWJsZWQsIHdoaWNoIGlzIHRoZSBiYXNlbGluZS4gQnV0LCBgZGZzLm9gIGluc2lkZSBgYXRoOWtgIGlzIGRlcGVuZGVudCBvbiBgQ09ORklHX0FUSDlLX0RGU19DRVJUSUZJRURgLiBBbmQsIGBkZnNfcGF0dGVybl9kZXRlY3Rvci5vYCBhbmQgYGRmc19wcmlfZGV0ZWN0b3Iub2AgaW4gYGF0aGAgYXJlIGJ1aWx0IHVuY29uZGl0aW9uYWxseSBpZiBgYXRoLmtvYCBpcyBidWlsdCwgd2hpY2gsIGluIHR1cm4sIGlzIGRlcGVuZGVudCBvbiBgQVRIOUtgIG9yIGBBVEgxMEtgIG9yIHRob3NlIHNvcnRzIG9mIHNldHRpbmdzLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgcmVsYXRpb25zaGlwcyBiZXR3ZWVuIHRob3NlIGNvbXBvbmVudHMuCgpPa2F5LCBsZXQmIzM5O3MganVzdCBnbyBiYWNrIGFuZCBkb3VibGUgY2hlY2sgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9NYWtlZmlsZWAgYWdhaW4sIGp1c3QgdG8gbWFrZSBhYnNvbHV0ZWx5IGNlcnRhaW4gSSBoYXZlbiYjMzk7dCBtaXNzZWQgYW55dGhpbmcuIEdvdHRhIGJlIG1ldGljdWxvdXMgaGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMDA6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGZzX3ByaV9kZXRlY3RvciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL01ha2VmaWxlPTE1PWF0aC1vYmpzIDo9XHRtYWluLm8gXFxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvTWFrZWZpbGUtMTktXHRcdGRmc19wYXR0ZXJuX2RldGVjdG9yLm8gXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9NYWtlZmlsZToyMDpcdFx0ZGZzX3ByaV9kZXRlY3Rvci5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvTWFrZWZpbGUtMjEtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmMtMjAtI2luY2x1ZGUgXCYjMzQ7ZGZzX3BhdHRlcm5fZGV0ZWN0b3IuaFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmM6MjE6I2luY2x1ZGUgXCYjMzQ7ZGZzX3ByaV9kZXRlY3Rvci5oXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3BhdHRlcm5fZGV0ZWN0b3IuYy0yMi0jaW5jbHVkZSBcJiMzNDthdGguaFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcHJpX2RldGVjdG9yLmMtMjItI2luY2x1ZGUgXCYjMzQ7ZGZzX3BhdHRlcm5fZGV0ZWN0b3IuaFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wcmlfZGV0ZWN0b3IuYzoyMzojaW5jbHVkZSBcJiMzNDtkZnNfcHJpX2RldGVjdG9yLmhcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcHJpX2RldGVjdG9yLmMtMjQtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDAwOjE1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQxNjY5CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogODgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBzZWUsIG15IHRoaW5raW5nIGhlcmUgaXMgY2VudGVyZWQgb24gdGhpcyBgZGZzX3ByaV9kZXRlY3Rvci5vYCBvYmplY3QgZmlsZS4gUmlnaHQsIGl0JiMzOTtzIGRlZmluaXRlbHkgcGFydCBvZiBgYXRoLW9ianNgLCBzbyB0aGF0IG1lYW5zIGl0JiMzOTtzIGF1dG9tYXRpY2FsbHkgYnVpbHQgd2hlbmV2ZXIgYENPTkZJR19BVEhfQ09NTU9OYCBpcyBzZXQuIFRoYXQmIzM5O3MgdGhlIGJhc2VsaW5lLCB0aGUgZGVmYXVsdCBidWlsZCBjb25kaXRpb24uCgpCdXQsIGFuZCBoZXJlJiMzOTtzIHRoZSBjcml0aWNhbCBwb2ludCwganVzdCBiZWNhdXNlIGl0ICpjYW4qIGJlIGJ1aWx0IGRvZXNuJiMzOTt0IG1lYW4gaXQmIzM5O3MgKnVzZWQqLiBUbyBhY3R1YWxseSBnZXQgdGhhdCBjb2RlIHRvIGV4ZWN1dGUsIHdlIG5lZWQgZWl0aGVyIGBBVEgxMEtfREZTX0NFUlRJRklFRGAgb3IgYEFUSDlLX0RGU19DRVJUSUZJRURgIHRvIGJlIGRlZmluZWQuIFRob3NlIGFyZSB0aGUgZW5hYmxpbmcgY29uZGl0aW9ucywgdGhlIGFjdHVhbCBnYXRlcyB0aGF0IG5lZWQgdG8gYmUgb3BlbmVkLgoKTm93LCBJJiMzOTttIGdldHRpbmcgY3VyaW91cyBhYm91dCB0aGUgYmlnZ2VyIHBpY3R1cmUuIEkgc2hvdWxkIHByb2JhYmx5IGludmVzdGlnYXRlIGhvdyB3aWRlc3ByZWFkIHRoZSB1c2FnZSBvZiBgZGZzX3BhdHRlcm5fZGV0ZWN0b3JfaW5pdGAgYWN0dWFsbHkgaXMuIEFyZSB0aGVyZSBvdGhlciBwb2ludHMgb2YgaW50ZXJhY3Rpb24gdGhhdCBJJiMzOTttIG1pc3Npbmc/IFRoYXQgZnVuY3Rpb24mIzM5O3Mgc2lnbmlmaWNhbmNlIHdpbGwgYmUgaGlnaGxpZ2h0ZWQgdGhyb3VnaCB0aGF0IGFuYWx5c2lzLiBJIG5lZWQgdG8gY2hlY2sgZm9yIG90aGVyIGRlcGVuZGVuY2llcywgb3RoZXIgcGxhY2VzIGluIHRoZSBjb2RlIHRoYXQgY2FsbCB0aGF0IGluaXRpYWxpemF0aW9uIGZ1bmN0aW9uIHRvIGhhdmUgYSBnb29kIHNlbnNlIG9mIGl0cyBpbXBhY3QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDAwOjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2Rmc19wYXR0ZXJuX2RldGVjdG9yX2luaXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmM9OTk3MT1pbnQgYXRoMTBrX21hY19yZWdpc3RlcihzdHJ1Y3QgYXRoMTBrICphcilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jLTEwMjg1LVx0XHRhci1cdTAwM2VhdGhfY29tbW9uLmRlYnVnX21hc2sgPSBBVEhfREJHX0RGUztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmM6MTAyODY6XHRcdGFyLVx1MDAzZWRmc19kZXRlY3RvciA9IGRmc19wYXR0ZXJuX2RldGVjdG9yX2luaXQoXHUwMDI2YXItXHUwMDNlYXRoX2NvbW1vbixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmMtMTAyODctXHRcdFx0XHRcdFx0XHQgICAgIE5MODAyMTFfREZTX1VOU0VUKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jPTY1Nj1zdGF0aWMgaW50IGF0aDlrX2luaXRfc29mdGModTE2IGRldmlkLCBzdHJ1Y3QgYXRoX3NvZnRjICpzYyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jLTY4NS1cdHNjLVx1MDAzZXNjX2FoID0gYWg7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jOjY4NjpcdHNjLVx1MDAzZWRmc19kZXRlY3RvciA9IGRmc19wYXR0ZXJuX2RldGVjdG9yX2luaXQoY29tbW9uLCBOTDgwMjExX0RGU19VTlNFVCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jLTY4Ny1cdHNjLVx1MDAzZXR4OTlfcG93ZXIgPSBNQVhfUkFURV9QT1dFUiAmIzQzOyAxO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcGF0dGVybl9kZXRlY3Rvci5jPTM0OD1zdHJ1Y3QgZGZzX3BhdHRlcm5fZGV0ZWN0b3IgKlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmM6MzQ5OmRmc19wYXR0ZXJuX2RldGVjdG9yX2luaXQoc3RydWN0IGF0aF9jb21tb24gKmNvbW1vbixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcGF0dGVybl9kZXRlY3Rvci5jLTM1MC1cdFx0XHQgIGVudW0gbmw4MDIxMV9kZnNfcmVnaW9ucyByZWdpb24pXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmMtMzcxLX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcGF0dGVybl9kZXRlY3Rvci5jOjM3MjpFWFBPUlRfU1lNQk9MKGRmc19wYXR0ZXJuX2RldGVjdG9yX2luaXQpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcGF0dGVybl9kZXRlY3Rvci5oPTk1PXN0cnVjdCBkZnNfcGF0dGVybl9kZXRlY3RvciB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmgtMTE0LS8qKlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmg6MTE1OiAqIGRmc19wYXR0ZXJuX2RldGVjdG9yX2luaXQoKSAtIGNvbnN0cnVjdG9yIGZvciBwYXR0ZXJuIGRldGVjdG9yIGNsYXNzXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3BhdHRlcm5fZGV0ZWN0b3IuaC0xMTYtICogQHBhcmFtIHJlZ2lvbjogREZTIGRvbWFpbiB0byBiZSB1c2VkLCBjYW4gYmUgTkw4MDIxMV9ERlNfVU5TRVQgYXQgY3JlYXRpb25cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3BhdHRlcm5fZGV0ZWN0b3IuaD0xMTk9ZXh0ZXJuIHN0cnVjdCBkZnNfcGF0dGVybl9kZXRlY3RvciAqXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3BhdHRlcm5fZGV0ZWN0b3IuaDoxMjA6ZGZzX3BhdHRlcm5fZGV0ZWN0b3JfaW5pdChzdHJ1Y3QgYXRoX2NvbW1vbiAqY29tbW9uLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmgtMTIxLVx0XHRcdCAgZW51bSBubDgwMjExX2Rmc19yZWdpb25zIHJlZ2lvbik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDAwOjE1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQyNzczCgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogNDM4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIEtleSBERlMgRW50cnkgUG9pbnRzKioKCk9rYXksIHNvIEkmIzM5O3ZlIG5hcnJvd2VkIGRvd24gdGhlIGtleSBzeW1ib2xzIEkgbmVlZCB0byBmb2N1cyBvbiBmb3IgdGhpcyBERlMgYW5hbHlzaXMuIEl0IHNlZW1zIHRoZSBhY3Rpb24gaXMgYWxsIGluIGBhdGg5a2AgYW5kIGBhdGgxMGtgLiBUaGUgY3JpdGljYWwgZW50cnkgcG9pbnRzIHRvIHdhdGNoIGFyZToKCiogICBgYXRoMTBrX3dtaV9ldmVudF9kZnNgCiogICBgYXRoMTBrX3dtaV9ldmVudF9waHllcnJgCiogICBgYXRoOWtfZGZzX3Byb2Nlc3NfcGh5ZXJyYAoKTGV0JiMzOTtzIHF1aWNrbHkgY29uZmlybSB0aGVzZSBhcmVuJiMzOTt0IHN0YXRpYyBmdW5jdGlvbnMsIHdoaWNoIHdvdWxkIG1ha2UgdHJhY2luZyB0cmlja2llci4gQWhhLCBgYXRoMTBrX3dtaV9ldmVudF9kZnNgIGlzIHJpZ2h0IHRoZXJlIGluIGBhdGgxMGsvd21pLmNgLiBHcmVhdCwgYW5kIGl0JiMzOTtzIG5vdCBzdGF0aWM6IGB2b2lkIGF0aDEwa193bWlfZXZlbnRfZGZzKHN0cnVjdCBhdGgxMGsgKmFyLCBzdHJ1Y3Qgd21pX3BoeWVycl9ldl9hcmcgKnBoeWVyciwgdTY0IHRzZilgLiBQZXJmZWN0LgoKT2theSwgbGV0JiMzOTtzIG1vdmUgb24gdG8gYGF0aDEwa193bWlfZXZlbnRfcGh5ZXJyYDogYHZvaWQgYXRoMTBrX3dtaV9ldmVudF9waHllcnIoc3RydWN0IGF0aDEwayAqYXIsIHN0cnVjdCBza19idWZmICpza2IpYC4gTm90IHN0YXRpYyBlaXRoZXIuIEdvb2QhCgpBbmQgZmluYWxseSwgYGF0aDlrX2Rmc19wcm9jZXNzX3BoeWVycmA6IGB2b2lkIGF0aDlrX2Rmc19wcm9jZXNzX3BoeWVycihzdHJ1Y3QgYXRoX3NvZnRjICpzYywgdm9pZCAqZGF0YSwgc3RydWN0IGF0aF9yeF9zdGF0dXMgKnJzLCB1NjQgbWFjdGltZSlgLiBBbHNvIG5vdCBzdGF0aWMuCgpFeGNlbGxlbnQuIFRoZXNlIGFyZSBwcmVjaXNlbHkgd2hhdCBJJiMzOTttIGxvb2tpbmcgZm9yLiBUaGV5IHNlZW0gdG8gYmUgdGhlIHByaW1hcnkgZW50cnkgcG9pbnRzIGZvciB0aGUgREZTIHJhZGFyIGRldGVjdGlvbiBsb2dpYyBmcm9tIHRoZSBkcml2ZXIgc2lkZSwgc28gYW55IG1vZGlmaWNhdGlvbiB0byB0aGUgZGZzIGNvZGUgaXMgZ29pbmcgdG8gYmUgaW52b2tlZCBmcm9tIGhlcmUsIHdoaWNoIGlzIHdoYXQgSSBuZWVkIHRvIHRyYWNlIGFuZCB0ZXN0LiBJIHNob3VsZCBiZSBhYmxlIHRvIGZvbGxvdyB0aGVzZSBjYWxscyBpbnRvIHRoZSBtb2RpZmllZCBgZGZzX3ByaV9kZXRlY3Rvci5jYCBjb2RlIHRvIHNlZSBleGFjdGx5IGhvdyB0aGluZ3MgYXJlIGZsb3dpbmcuCgpOb3csIGxldCYjMzk7cyB0YWtlIGEgcXVpY2sgbG9vayBhdCB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbnM6IGBBVEgxMEtfREZTX0NFUlRJRklFRGAsIGBBVEgxMEtfVVNCYCwgYW5kIGBBVEg5S19ERlNfQ0VSVElGSUVEYC4gSW1wbGllZCBhcmUgYEFUSDEwS2AgYW5kIGBBVEg5S2AsIHNvIGxldCYjMzk7cyBpbmNsdWRlIHRob3NlIGZvciBjb21wbGV0ZW5lc3MuIEhtbSwgaXMgYENGRzgwMjExX0NFUlRJRklDQVRJT05fT05VU2AgcmVsYXRlZCB0byBERlM/IFBlcmhhcHMgREZTIHJlcXVpcmVzIGl0IHRvIGJlIGVuYWJsZWQuIExldCYjMzk7cyBkaWcgaW50byB0aGUgZGVwZW5kZW5jaWVzIG9mIGBBVEgxMEtfREZTX0NFUlRJRklFRGAgdG8gbWFrZSBzdXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAwMDoxNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQVRIMTBLX0RGU19DRVJUSUZJRUQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWc9ODY9Y29uZmlnIEFUSDEwS19UUkFDSU5HXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9LY29uZmlnLTkyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9LY29uZmlnOjkzOmNvbmZpZyBBVEgxMEtfREZTX0NFUlRJRklFRFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9LY29uZmlnLTk0LVx0Ym9vbCBcJiMzNDtBdGhlcm9zIERGUyBzdXBwb3J0IGZvciBjZXJ0aWZpZWQgcGxhdGZvcm1zXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDAwOjE1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQzOTIwCgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSBhbmQgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkFuYWx5emluZyB0aGUgRGVwZW5kZW5jaWVzIG9mIGBBVEgxMEtfREZTX0NFUlRJRklFRGAqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBXaGVuIEkgc2VlIGBBVEgxMEtfREZTX0NFUlRJRklFRGAsIG15IGluaXRpYWwgdGhvdWdodCBpcyBhbHdheXMgYWJvdXQgdGhlIGltcGxpY2F0aW9ucyBmb3IgcmVndWxhdG9yeSBjb21wbGlhbmNlIGFuZCwgc3BlY2lmaWNhbGx5LCBEeW5hbWljIEZyZXF1ZW5jeSBTZWxlY3Rpb24gKERGUykgaW4gdGhlIDUgR0h6IGJhbmRzLiBJIGtub3cgdGhpcyBsaWtlbHkgc2lnbmlmaWVzIHRoYXQgdGhlIHNwZWNpZmljIEF0aGVyb3Mgd2lyZWxlc3MgZHJpdmVyLCBgQVRIMTBLYCwgcmVxdWlyZXMgc3BlY2lmaWMgY2VydGlmaWNhdGlvbiB0byBsZWdhbGx5IHRyYW5zbWl0IG9uIHRob3NlIERGUyBmcmVxdWVuY2llcyBpbiBhIGdpdmVuIHJlZ3VsYXRvcnkgZG9tYWluLiBJdCYjMzk7cyBub3QganVzdCBhIGRyaXZlciBjb25maWd1cmF0aW9uOyBpdOKAmXMgYSBsZWdhbCByZXF1aXJlbWVudC4KCkkmIzM5O20gaW1tZWRpYXRlbHkgY29uc2lkZXJpbmcgdGhlIGNvbXBsZXhpdHkgb2YgdGhpcy4gVGhpcyBjb25maWd1cmF0aW9uIG9wdGlvbiB0aWVzIGluIGRpcmVjdGx5IHdpdGggaG93IHRoZSBrZXJuZWwgaW50ZXJhY3RzIHdpdGggdGhlIGhhcmR3YXJlJiMzOTtzIFJGIGNhcGFiaWxpdGllcy4gVGhpcyB0ZWxscyBtZSBJJiMzOTtsbCBuZWVkIHRvIGRpZyBpbnRvIHRoZSBrZXJuZWwgY29uZmlnIGZpbGVzIGFuZCBwb3RlbnRpYWxseSBpbnRvIHRoZSBkcml2ZXIgc291cmNlIGl0c2VsZi4gSSYjMzk7bGwgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBleGFjdCBjb25kaXRpb25zIHVuZGVyIHdoaWNoIHRoaXMgb3B0aW9uIGlzIGVuYWJsZWQuIEFyZSB3ZSB0YWxraW5nIGFib3V0IGEgaGFyZC1jb2RlZCBkZXBlbmRlbmN5IGJhc2VkIG9uIHRoZSBjb3VudHJ5IGNvZGUgb3IgYSBydW50aW1lIGNoZWNrLCBvciBib3RoPwoKTXkgbWluZCBpcyBhbHJlYWR5IHJhY2luZyB0aHJvdWdoIHBvc3NpYmxlIHNjZW5hcmlvcy4gSXMgdGhlIGNlcnRpZmljYXRpb24gYSBzdGF0aWMgdGhpbmcsIG9yIGlzIGl0IG1vcmUgY29tcGxleCB0aGFuIHRoYXQsIGRlcGVuZGluZyBvbiB0aGUgcGFydGljdWxhciBoYXJkd2FyZSByZXZpc2lvbiwgZmlybXdhcmUgdmVyc2lvbiwgb3IgZXZlbiB0aGUgcmVndWxhdG9yeSB2ZXJzaW9uIGluIHVzZT8gSSYjMzk7bSBhbnRpY2lwYXRpbmcgc29tZSBsZXZlbCBvZiBpbnRlcmFjdGlvbiB3aXRoIHRoZSByZWd1bGF0b3J5IGRhdGFiYXNlLCBlaXRoZXIgbG9jYWxseSBjYWNoZWQgb3IgcXVlcmllZCBkdXJpbmcgdGhlIGRyaXZlciYjMzk7cyBpbml0aWFsaXphdGlvbi4gSSBhbHNvIGtub3cgdGhhdCBpZiBpdCBpcyBwcmVzZW50LCBJJiMzOTtsbCBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBzeXN0ZW0gZGV0ZXJtaW5lcyB3aGV0aGVyIG9yIG5vdCBpdCYjMzk7cyBjZXJ0aWZpZWQgYW5kIGhvdyB0aGUgZmlybXdhcmUgZ2V0cyBsb2FkZWQgdG8gbWF0Y2guCgpJJiMzOTtsbCBiZSBsb29raW5nIGZvciBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcywgbmF0dXJhbGx5LiBJIG5lZWQgdG8gc2VlIHdoYXQgb3RoZXIga2VybmVsIG9wdGlvbnMgbXVzdCBiZSBlbmFibGVkIGZvciB0aGlzIHRvIGV2ZW4gKmFwcGVhciogYXMgYSBzZWxlY3RhYmxlIG9wdGlvbi4gSSYjMzk7bSB0aGlua2luZyBhYm91dCB3aGljaCBvdGhlciB3aXJlbGVzcyBmZWF0dXJlcywgc3VjaCBhcyByZWd1bGF0b3J5IGRvbWFpbiBzZWxlY3Rpb24gb3IgY291bnRyeSBjb2RlIGNvbmZpZ3VyYXRpb24sIG1pZ2h0IGJlIGltcGFjdGVkIGJ5IHRoaXMuIFRoaXMgYWxzbyBoaW50cyB0aGF0IHNlY3VyaXR5IGZlYXR1cmVzIHN1Y2ggYXMgV1BBMyBtYXkgYmUgaW1wYWN0ZWQgYnkgdGhlIGRyaXZlciYjMzk7cyBjZXJ0aWZpY2F0aW9uLgoKRmluYWxseSwgSSYjMzk7bSBhbHJlYWR5IGFudGljaXBhdGluZyB0aGUgbmVlZCB0byBjcm9zcy1yZWZlcmVuY2UgdGhpcyB3aXRoIHRoZSByZWd1bGF0b3J5IGRvY3VtZW50cyBhbmQgYW55IHJlbGV2YW50IGRvY3VtZW50YXRpb24gZm9yIHRoZSBgQVRIMTBLYCBkcml2ZXIgaXRzZWxmLiBUaGlzIGFsc28gbWVhbnMgdGhhdCwgaWYgSSBhbSBnb2luZyB0byBwcm9wZXJseSBsZXZlcmFnZSB0aGlzIHNldHRpbmcsIEkmIzM5O20gZ29pbmcgdG8gbmVlZCB0aGUgc3BlY2lmaWNhdGlvbnMgZm9yIHRoaXMgc2V0dGluZyBmcm9tIHRoZSBhdGgxMGsgZHJpdmVyJiMzOTtzIGRvY3VtZW50YXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDAwOjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogOTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICA5MDpcdFx0aGVscFxuICA5MTpcdFx0ICBTZWxlY3QgdGhpcyB0byBhdGgxMGsgdXNlIHRyYWNpbmcgaW5mcmFzdHJ1Y3R1cmUuXG4gIDkyOlx0XG4gIDkzOlx0Y29uZmlnIEFUSDEwS19ERlNfQ0VSVElGSUVEXG4gIDk0Olx0XHRib29sIFwmIzM0O0F0aGVyb3MgREZTIHN1cHBvcnQgZm9yIGNlcnRpZmllZCBwbGF0Zm9ybXNcJiMzNDtcbiAgOTU6XHRcdGRlcGVuZHMgb24gQVRIMTBLIFx1MDAyNlx1MDAyNiBDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNcbiAgOTY6XHRcdGRlZmF1bHQgblxuICA5NzpcdFx0aGVscFxuICA5ODpcdFx0VGhpcyBvcHRpb24gZW5hYmxlcyBERlMgc3VwcG9ydCBmb3IgaW5pdGlhdGluZyByYWRpYXRpb24gb25cbiAgOTk6XHRcdGF0aDEway5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMDA6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDQ2MTUKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiAzNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRXhhbWluaW5nIFdpcmVsZXNzIERyaXZlciBDZXJ0aWZpY2F0aW9uIFJlcXVpcmVtZW50cyoqCgpSaWdodCwgKkNGRzgwMjExX0NFUlRJRklDQVRJT05fT05VUyogaGFzIHJlYXJlZCBpdHMgaGVhZCBhZ2Fpbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCYjMzk7cyB0cmlnZ2VyaW5nIHRoaXMgcGFydGljdWxhciByZXF1aXJlbWVudC4gTXkgaW1tZWRpYXRlIGZvY3VzIGlzIG9uICpBVEg5S19ERlNfQ0VSVElGSUVEKi4gVGhhdCB2YXJpYWJsZSBpcyB0aGUgbG9naWNhbCBwbGFjZSB0byBzdGFydCBkaWdnaW5nIGludG8gdGhlIGRlcGVuZGVuY2llcy4gVW5kZXJzdGFuZGluZyBob3cgdGhhdCYjMzk7cyB0aWVkIGludG8gdGhlIGJyb2FkZXIgY2VydGlmaWNhdGlvbiBwaWN0dXJlIGlzIGNyaXRpY2FsLiBJJiMzOTtsbCBuZWVkIHRvIHRyYWNlIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgYW5kIHRoZWlyIGludGVycmVsYXRpb25zaGlwcy4gSSB3YW50IHRvIGlkZW50aWZ5IHRoZSBkaXJlY3QgbGluayBiZXR3ZWVuIHRoZSBjZXJ0aWZpY2F0aW9uIGFuZCB0aGlzIHNwZWNpZmljIGRyaXZlciBlbGVtZW50LiBUaW1lIHRvIGRpZyBpbnRvIHRoZSBoZWFkZXJzIGFuZCBzZWUgd2hhdCB0aGV5JiMzOTtyZSBkb2luZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMDA6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDkwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgOTA6XHRcdCAgb2YgdGhlIGVsZWN0cmljIGFuZCBtYWduZXRpYyBmaWVsZCBzdHJlbmd0aCBhbmQgcG93ZXIgZGVuc2l0eSBmb3JcbiAgOTE6XHRcdCAgdHJhbnNtaXR0ZXJzIG9wZXJhdGluZyBhdCBmcmVxdWVuY2llcyBmcm9tIDMwMCBrSHogdG8gMTAwIEdIei5cbiAgOTI6XHRcdCAgUmVndWxhdG9yeSBib2RpZXMgYXJvdW5kIHRoZSB3b3JsZCByZXF1aXJlIHRoYXQgd2lyZWxlc3MgZGV2aWNlXG4gIDkzOlx0XHQgIGJlIGV2YWx1YXRlZCB0byBtZWV0IHRoZSBSRiBleHBvc3VyZSBsaW1pdHMgc2V0IGZvcnRoIGluIHRoZVxuICA5NDpcdFx0ICBnb3Zlcm5tZW50YWwgU0FSIHJlZ3VsYXRpb25zLlxuICA5NTpcdFxuICA5NjpcdGNvbmZpZyBBVEg5S19ERlNfQ0VSVElGSUVEXG4gIDk3Olx0XHRib29sIFwmIzM0O0F0aGVyb3MgREZTIHN1cHBvcnQgZm9yIGNlcnRpZmllZCBwbGF0Zm9ybXNcJiMzNDtcbiAgOTg6XHRcdGRlcGVuZHMgb24gQVRIOUsgXHUwMDI2XHUwMDI2IENGRzgwMjExX0NFUlRJRklDQVRJT05fT05VU1xuICA5OTpcdFx0ZGVmYXVsdCBuXG4gMTAwOlx0XHRoZWxwXG4gMTAxOlx0XHQgIFRoaXMgb3B0aW9uIGVuYWJsZXMgREZTIHN1cHBvcnQgZm9yIGluaXRpYXRpbmcgcmFkaWF0aW9uIG9uXG4gMTAyOlx0XHQgIGF0aDlrLiBUaGVyZSBpcyBubyB3YXkgdG8gZHluYW1pY2FsbHkgZGV0ZWN0IGlmIGEgY2FyZCB3YXMgREZTXG4gMTAzOlx0XHQgIGNlcnRpZmllZCBhbmQgYXMgc3VjaCB0aGlzIGlzIGxlZnQgYXMgYSBidWlsZCB0aW1lIG9wdGlvbi4gVGhpc1xuIDEwNDpcdFx0ICBvcHRpb24gc2hvdWxkIG9ubHkgYmUgZW5hYmxlZCBieSBzeXN0ZW0gaW50ZWdyYXRvcnMgdGhhdCBjYW5cbiAxMDU6XHRcdCAgZ3VhcmFudGVlIHRoYXQgYWxsIHRoZSBwbGF0Zm9ybXMgdGhhdCB0aGVpciBrZXJuZWwgd2lsbCBydW4gb25cbiAxMDY6XHRcdCAgaGF2ZSBvYnRhaW5lZCBhcHByb3ByaWF0ZSByZWd1bGF0b3J5IGJvZHkgY2VydGlmaWNhdGlvbiBmb3IgYVxuIDEwNzpcdFx0ICByZXNwZWN0aXZlIEF0aGVyb3MgY2FyZCBieSB1c2luZyBhdGg5ayBvbiB0aGUgdGFyZ2V0IHNoaXBwaW5nXG4gMTA4Olx0XHQgIHBsYXRmb3Jtcy5cbiAxMDk6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMDA6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDUxNzkKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiA2MDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIEF0aGVyb3MgREZTIFBSSSBEZXRlY3RvciBQYXRjaCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duIHN5c3RlbWF0aWNhbGx5LiBGaXJzdCwgdGhlIGNvcmUgcmVxdWlyZW1lbnQgc2VlbXMgdG8gYmUgYENGRzgwMjExX0NFUlRJRklDQVRJT05fT05VU2AsIHdoaWNoIGlzIGNyaXRpY2FsIGZvciBib3RoIHRoZSBgYXRoMTBrYCBhbmQgYGF0aDlrYCBkcml2ZXJzLiBTbywgSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aG9zZSBhcmUgZW5hYmxlZDogYEFUSDEwS2AsIGBBVEgxMEtfVVNCYCwgYEFUSDEwS19ERlNfQ0VSVElGSUVEYCwgYEFUSDlLYCwgYEFUSDlLX0RGU19DRVJUSUZJRURgLCBhbmQgYENGRzgwMjExX0NFUlRJRklDQVRJT05fT05VU2AuIGBBVEg5S2AgaXMgbm9ybWFsbHkgUENJLW9ubHksIGJ1dCBpdCBjYW4gYmUgaW5jbHVkZWQsIHNvIEkmIzM5O2xsIGtlZXAgaXQgZm9yIG5vdy4gSSYjMzk7bGwgYWxzbyBhZGQgdGhlIG9idmlvdXMgb25lczogYE1BQzgwMjExYCBhbmQgYENGRzgwMjExYC4KClRoaXMgcGF0Y2ggaXMgZGVmaW5pdGVseSB3b3J0aCBmdXp6aW5nOyBpdCYjMzk7cyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBhbHRlcmluZyBob3cgcmFkYXIgcHVsc2VzIGFyZSBkZXRlY3RlZCwgc3BlY2lmaWNhbGx5IHJlcGxhY2luZyBhIGRpdmlzaW9uIHdpdGggYSByZWNpcHJvY2FsIG11bHRpcGxpY2F0aW9uIGluIHRoZSBBdGhlcm9zIERGUyBQUkkgZGV0ZWN0b3IgbG9naWMuIEl0JiMzOTtzIGFjY2Vzc2libGUgdmlhIFVTQiBmdXp6aW5nIG9uIHRoZSBgYXRoMTBrX3VzYmAgZHJpdmVyIGJlY2F1c2UgV01JIGV2ZW50cyBjb250YWluaW5nIFBIWSBlcnJvcnMgY2FuIHRyaWdnZXIgdGhlIERGUyByYWRhciByZXBvcnQgcGF0aC4gVGhpcyBpcyBnb29kIHRvIGtub3cuCgpUaGUga2V5IHN5bWJvbHMgdG8gZm9jdXMgb24gYXJlIGBhdGgxMGtfd21pX2V2ZW50X2Rmc2AsIGBhdGgxMGtfd21pX2V2ZW50X3BoeWVycmAsIGFuZCBgYXRoOWtfZGZzX3Byb2Nlc3NfcGh5ZXJyYC4gSSBzaG91bGQgZG91YmxlLWNoZWNrIHRoYXQgdGhvc2UgZnVuY3Rpb24gbmFtZXMgYXJlIGFjY3VyYXRlOyBJIGp1c3Qgd2FudCB0byB2ZXJpZnkgYmVmb3JlIHByb2NlZWRpbmcuIE9rYXksIHllcCwgY29uZmlybWVkOiBgYXRoMTBrX3dtaV9ldmVudF9kZnNgIHRha2VzIGBhdGgxMGtgIHN0cnVjdCwgYHdtaV9waHllcnJfZXZfYXJnYCwgYW5kIGB1NjQgdHNmYCBhcyBhcmd1bWVudHMuIGBhdGgxMGtfd21pX2V2ZW50X3BoeWVycmAgcmVjZWl2ZXMgYGF0aDEwa2AgYW5kIGBza19idWZmYCwgYW5kIGBhdGg5a19kZnNfcHJvY2Vzc19waHllcnJgIHJlcXVpcmVzIGBhdGhfc29mdGNgLCBhIHZvaWQgcG9pbnRlciwgYGF0aF9yeF9zdGF0dXNgLCBhbmQgYHU2NCBtYWN0aW1lYC4gR29vZCwgZXZlcnl0aGluZyBsb29rcyBpbiBvcmRlci4KCkkgc2hvdWxkIGFsc28gaW52ZXN0aWdhdGUgd2hldGhlciB0aGVyZSBhcmUgb3RoZXIgcmVsZXZhbnQgZXhwb3J0ZWQgZnVuY3Rpb25zIHdpdGhpbiBgZGZzX3ByaV9kZXRlY3Rvci5jYC4gYHByaV9kZXRlY3Rvcl9pbml0YCBpcyBleHBvcnRlZCB0byBvdGhlciBmaWxlcyBpbiB0aGUgYGF0aGAgbW9kdWxlLCB3aGljaCBpcyBpbnRlcmVzdGluZywgYnV0IHRoYXQgc2VlbXMgdG8gYmUgbW9kdWxlLWxvY2FsLiBJdCBsb29rcyBsaWtlIGl0IGlzIG5vdCBleHBvcnRlZCB0byB0aGUga2VybmVsIHZpYSBgRVhQT1JUX1NZTUJPTGAsIHdoaWNoIG1lYW5zIHRoYXQgaXQgY2FuJiMzOTt0IGJlIGNhbGxlZCBmcm9tIG91dHNpZGUgdGhlIG1vZHVsZS4gVGhhdCBpcyBmaW5lLCBhcyBsb25nIGFzIHRoZSBvdGhlciBmdW5jdGlvbnMgYXJlIGVub3VnaC4KCkFscmlnaHQsIHdpdGggdGhpcyBpbmZvcm1hdGlvbiwgSSBjYW4gbm93IGJlZ2luIHRoZSBmdXp6aW5nIHByb2Nlc3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDAwOjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7RVhQT1JUX1NZTUJPTCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcHJpX2RldGVjdG9yLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAwMDoxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NjQwNAoJCQkJCQkJb3V0cHV0OiAxOTgKCQkJCQkJCXRob3VnaHRzOiA5MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB1bmRlcnN0YW5kaW5nLCBkZWxpdmVyZWQgYXMgYSBmaXJzdC1wZXJzb24gc3VtbWFyeSwga2VlcGluZyBpbiBtaW5kIEkmIzM5O20gZGVhbGluZyB3aXRoIHNvbWVvbmUgd2hvJiMzOTtzIGZhbWlsaWFyIHdpdGggdGhlIGtlcm5lbDoKCioqQW5hbHlzaXMgb2YgU3ltYm9sIEV4cG9ydCoqCgpSaWdodCwgc28gSSYjMzk7dmUgbG9va2VkIGF0IHRoaXMsIGFuZCB0aGUgc2l0dWF0aW9uIGlzIGNsZWFyLiBUaGlzIGlzbiYjMzk7dCBzb21ldGhpbmcgdGhhdCYjMzk7cyBiZWluZyAqZXhwb3J0ZWQqIGluIHRoZSB0eXBpY2FsIHNlbnNlLiBXZSYjMzk7cmUgbm90IGRlYWxpbmcgd2l0aCBhbiBleHRlcm5hbCBleHBvcnQuIEl0JiMzOTtzIGNvbmZpbmVkIHdpdGhpbiBgYXRoLmtvYCwgc3BlY2lmaWNhbGx5IHdpdGhpbiBgZGZzX3BhdHRlcm5fZGV0ZWN0b3IuY2AuIFRoYXQmIzM5O3MgdGhlIGtleS4KCkhvd2V2ZXIsIGBkZnNfcGF0dGVybl9kZXRlY3Rvcl9pbml0YCAqaXMqIGJlaW5nIGV4cG9ydGVkIHVzaW5nIGBFWFBPUlRfU1lNQk9MYC4gU28gdGhhdCYjMzk7cyBpbXBvcnRhbnQgZm9yIHRoZSBvdmVyYWxsIHBpY3R1cmUuIFRoZXJlZm9yZSwgdGhlIG1vc3QgcmVsZXZhbnQgc3ltYm9scyB0byBmb2N1cyBvbiwgdGhlIGJlc3QgcG9pbnRzIHRvIGV4YW1pbmUsIGFyZSB0aGUgZW50cnkgcG9pbnRzIGZyb20gdGhlIGRyaXZlciBpdHNlbGYg4oCTIHRoZSBgYXRoOWtgIG9yIGBhdGgxMGtgIG1vZHVsZXMuIFRoZXkmIzM5O2xsIGJlIHRoZSBzb3VyY2Ugb2YgY2FsbHMgdGhhdCBpbml0aWF0ZSB0aGlzLgoKSSYjMzk7bSBjb21mb3J0YWJsZSB3aXRoIHRoaXMgYXNzZXNzbWVudDsgdGhpcyBzaG91bGQgYmUgYWNjdXJhdGUgYmFzZWQgb24gd2hhdCBJJiMzOTt2ZSBzZWVuLiBMZXQmIzM5O3MgbG9jayB0aGlzIGluLiBJJiMzOTttIGdvaW5nIHRvIGNhbGwgYHNldC1yZXN1bHRzYCBub3cuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDAwOjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtBVEgxMEsmIzM0OywKICAgICYjMzQ7QVRIMTBLX1VTQiYjMzQ7LAogICAgJiMzNDtBVEgxMEtfREZTX0NFUlRJRklFRCYjMzQ7LAogICAgJiMzNDtBVEg5SyYjMzQ7LAogICAgJiMzNDtBVEg5S19ERlNfQ0VSVElGSUVEJiMzNDssCiAgICAmIzM0O0NGRzgwMjExX0NFUlRJRklDQVRJT05fT05VUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2F0aDEwa193bWlfZXZlbnRfZGZzJiMzNDssCiAgICAmIzM0O2F0aDEwa193bWlfZXZlbnRfcGh5ZXJyJiMzNDssCiAgICAmIzM0O2F0aDlrX2Rmc19wcm9jZXNzX3BoeWVyciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZXBsYWNlcyBhIGRpdmlzaW9uIHdpdGggYSByZWNpcHJvY2FsIG11bHRpcGxpY2F0aW9uIGluIHRoZSBBdGhlcm9zIERGUyBQUkkgZGV0ZWN0b3IgbG9naWMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGFsdGVycyB0aGUgY29yZSBsb2dpYyBvZiByYWRhciBwdWxzZSBkZXRlY3Rpb24uIFRoZSBjb2RlIGlzIHJlYWNoYWJsZSB2aWEgdGhlIGF0aDEwa191c2IgZHJpdmVyIHVzaW5nIFVTQiBmdXp6aW5nLCBhcyBXTUkgZXZlbnRzIGNvbnRhaW5pbmcgUEhZIGVycm9ycyBjYW4gdHJpZ2dlciB0aGUgREZTIHJhZGFyIHJlcG9ydCBwYXRoLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtBVEgxMEsmIzM0OywKICAgICYjMzQ7QVRIMTBLX1VTQiYjMzQ7LAogICAgJiMzNDtBVEgxMEtfREZTX0NFUlRJRklFRCYjMzQ7LAogICAgJiMzNDtBVEg5SyYjMzQ7LAogICAgJiMzNDtBVEg5S19ERlNfQ0VSVElGSUVEJiMzNDssCiAgICAmIzM0O0NGRzgwMjExX0NFUlRJRklDQVRJT05fT05VUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2F0aDEwa193bWlfZXZlbnRfZGZzJiMzNDssCiAgICAmIzM0O2F0aDEwa193bWlfZXZlbnRfcGh5ZXJyJiMzNDssCiAgICAmIzM0O2F0aDlrX2Rmc19wcm9jZXNzX3BoeWVyciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZXBsYWNlcyBhIGRpdmlzaW9uIHdpdGggYSByZWNpcHJvY2FsIG11bHRpcGxpY2F0aW9uIGluIHRoZSBBdGhlcm9zIERGUyBQUkkgZGV0ZWN0b3IgbG9naWMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGFsdGVycyB0aGUgY29yZSBsb2dpYyBvZiByYWRhciBwdWxzZSBkZXRlY3Rpb24uIFRoZSBjb2RlIGlzIHJlYWNoYWJsZSB2aWEgdGhlIGF0aDEwa191c2IgZHJpdmVyIHVzaW5nIFVTQiBmdXp6aW5nLCBhcyBXTUkgZXZlbnRzIGNvbnRhaW5pbmcgUEhZIGVycm9ycyBjYW4gdHJpZ2dlciB0aGUgREZTIHJhZGFyIHJlcG9ydCBwYXRoLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMDJUMDA6MTM6MjQuNTg2MjgyODYyWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTUyMDkyOTIzMzc1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkFUSDEwS1wiLFxuICAgIFwiQVRIMTBLX1VTQlwiLFxuICAgIFwiQVRIMTBLX0RGU19DRVJUSUZJRURcIixcbiAgICBcIkFUSDlLXCIsXG4gICAgXCJBVEg5S19ERlNfQ0VSVElGSUVEXCIsXG4gICAgXCJDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJhdGgxMGtfd21pX2V2ZW50X2Rmc1wiLFxuICAgIFwiYXRoMTBrX3dtaV9ldmVudF9waHllcnJcIixcbiAgICBcImF0aDlrX2Rmc19wcm9jZXNzX3BoeWVyclwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlcGxhY2VzIGEgZGl2aXNpb24gd2l0aCBhIHJlY2lwcm9jYWwgbXVsdGlwbGljYXRpb24gaW4gdGhlIEF0aGVyb3MgREZTIFBSSSBkZXRlY3RvciBsb2dpYy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgYWx0ZXJzIHRoZSBjb3JlIGxvZ2ljIG9mIHJhZGFyIHB1bHNlIGRldGVjdGlvbi4gVGhlIGNvZGUgaXMgcmVhY2hhYmxlIHZpYSB0aGUgYXRoMTBrX3VzYiBkcml2ZXIgdXNpbmcgVVNCIGZ1enppbmcsIGFzIFdNSSBldmVudHMgY29udGFpbmluZyBQSFkgZXJyb3JzIGNhbiB0cmlnZ2VyIHRoZSBERlMgcmFkYXIgcmVwb3J0IHBhdGguXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDAwOjEzOjI0LjU4NjI4OTAyMloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODY5ODg1MTAzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZmE4NzQ2ZjJiZmNkN2ZiZDUxYjA1NzEyMDBhNjRhNzZmOWZjMzAwZlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVGh1IEp1bCAyIDAwOjEzOjIyIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcHJpX2RldGVjdG9yLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3ByaV9kZXRlY3Rvci5jXFxuaW5kZXggMzg4ZjlkMTkxM2JkOWQuLjUyMGZkMTU2N2EwYmFkIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcHJpX2RldGVjdG9yLmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3ByaV9kZXRlY3Rvci5jXFxuQEAgLTE2LDYgKzE2LDcgQEBcXG4gXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9zbGFiLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9zcGlubG9jay5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvcmVjaXByb2NhbF9kaXYuaFxcdTAwM2VcXG4gXFxuICNpbmNsdWRlIFxcXCJhdGguaFxcXCJcXG4gI2luY2x1ZGUgXFxcImRmc19wYXR0ZXJuX2RldGVjdG9yLmhcXFwiXFxuQEAgLTQxLDcgKzQyLDkgQEAgc3RydWN0IHB1bHNlX2VsZW0ge1xcbiAgKiBwZGVfZ2V0X211bHRpcGxlKCkgLSBnZXQgbnVtYmVyIG9mIG11bHRpcGxlcyBjb25zaWRlcmluZyBhIGdpdmVuIHRvbGVyYW5jZVxcbiAgKiBSZXR1cm4gdmFsdWU6IGZhY3RvciBpZiBhYnModmFsIC0gZmFjdG9yKmZyYWN0aW9uKSBcXHUwMDNjPSB0b2xlcmFuY2UsIDAgb3RoZXJ3aXNlXFxuICAqL1xcbi1zdGF0aWMgdTMyIHBkZV9nZXRfbXVsdGlwbGUodTMyIHZhbCwgdTMyIGZyYWN0aW9uLCB1MzIgdG9sZXJhbmNlKVxcbitzdGF0aWMgdTMyIHBkZV9nZXRfbXVsdGlwbGUodTMyIHZhbCwgdTMyIGZyYWN0aW9uLFxcbitcXHRcXHRcXHQgICAgc3RydWN0IHJlY2lwcm9jYWxfdmFsdWUgZnJhY3Rpb25fcmVjaXAsXFxuK1xcdFxcdFxcdCAgICB1MzIgdG9sZXJhbmNlKVxcbiB7XFxuIFxcdHUzMiByZW1haW5kZXI7XFxuIFxcdHUzMiBmYWN0b3I7XFxuQEAgLTU2LDggKzU5LDggQEAgc3RhdGljIHUzMiBwZGVfZ2V0X211bHRpcGxlKHUzMiB2YWwsIHUzMiBmcmFjdGlvbiwgdTMyIHRvbGVyYW5jZSlcXG4gXFx0XFx0LyogdmFsIGFuZCBmcmFjdGlvbiBhcmUgd2l0aGluIHRvbGVyYW5jZSAqL1xcbiBcXHRcXHRyZXR1cm4gMTtcXG4gXFxuLVxcdGZhY3RvciA9IHZhbCAvIGZyYWN0aW9uO1xcbi1cXHRyZW1haW5kZXIgPSB2YWwgJSBmcmFjdGlvbjtcXG4rXFx0ZmFjdG9yID0gcmVjaXByb2NhbF9kaXZpZGUodmFsLCBmcmFjdGlvbl9yZWNpcCk7XFxuK1xcdHJlbWFpbmRlciA9IHZhbCAtIGZhY3RvciAqIGZyYWN0aW9uO1xcbiBcXHRpZiAocmVtYWluZGVyIFxcdTAwM2UgdG9sZXJhbmNlKSB7XFxuIFxcdFxcdC8qIG5vIGV4YWN0IG1hdGNoICovXFxuIFxcdFxcdGlmICgoZnJhY3Rpb24gLSByZW1haW5kZXIpIFxcdTAwM2M9IHRvbGVyYW5jZSlcXG5AQCAtMjQ3LDYgKzI1MCw5IEBAIHN0YXRpYyBib29sIHBzZXFfaGFuZGxlcl9jcmVhdGVfc2VxdWVuY2VzKHN0cnVjdCBwcmlfZGV0ZWN0b3IgKnBkZSxcXG4gXFx0XFx0cHMubGFzdF90cyA9IHRzO1xcbiBcXHRcXHRwcy5wcmkgPSBHRVRfUFJJX1RPX1VTRShwZGUtXFx1MDAzZXJzLVxcdTAwM2VwcmlfbWluLFxcbiBcXHRcXHRcXHRwZGUtXFx1MDAzZXJzLVxcdTAwM2VwcmlfbWF4LCB0cyAtIHAtXFx1MDAzZXRzKTtcXG4rXFx0XFx0cHMucHJpX3JlY2lwID0gKHN0cnVjdCByZWNpcHJvY2FsX3ZhbHVlKXt9O1xcbitcXHRcXHRpZiAocHMucHJpKVxcbitcXHRcXHRcXHRwcy5wcmlfcmVjaXAgPSByZWNpcHJvY2FsX3ZhbHVlKHBzLnByaSk7XFxuIFxcdFxcdHBzLmR1ciA9IHBzLnByaSAqIChwZGUtXFx1MDAzZXJzLVxcdTAwM2VwcGIgLSAxKVxcbiBcXHRcXHRcXHRcXHQrIDIgKiBwZGUtXFx1MDAzZXJzLVxcdTAwM2VtYXhfcHJpX3RvbGVyYW5jZTtcXG4gXFxuQEAgLTI2MSw2ICsyNjcsNyBAQCBzdGF0aWMgYm9vbCBwc2VxX2hhbmRsZXJfY3JlYXRlX3NlcXVlbmNlcyhzdHJ1Y3QgcHJpX2RldGVjdG9yICpwZGUsXFxuIFxcdFxcdFxcdFxcdGJyZWFrO1xcbiBcXHRcXHRcXHQvKiBjaGVjayBpZiBwdWxzZSBtYXRjaCAobXVsdGkpUFJJICovXFxuIFxcdFxcdFxcdGZhY3RvciA9IHBkZV9nZXRfbXVsdGlwbGUocHMubGFzdF90cyAtIHAyLVxcdTAwM2V0cywgcHMucHJpLFxcbitcXHRcXHRcXHRcXHRcXHRcXHQgIHBzLnByaV9yZWNpcCxcXG4gXFx0XFx0XFx0XFx0XFx0XFx0ICBwZGUtXFx1MDAzZXJzLVxcdTAwM2VtYXhfcHJpX3RvbGVyYW5jZSk7XFxuIFxcdFxcdFxcdGlmIChmYWN0b3IgXFx1MDAzZSAwKSB7XFxuIFxcdFxcdFxcdFxcdHBzLmNvdW50Kys7XFxuQEAgLTMxOCw2ICszMjUsNyBAQCBwc2VxX2hhbmRsZXJfYWRkX3RvX2V4aXN0aW5nX3NlcXMoc3RydWN0IHByaV9kZXRlY3RvciAqcGRlLCB1NjQgdHMpXFxuIFxcbiBcXHRcXHRkZWx0YV90cyA9IHRzIC0gcHMtXFx1MDAzZWxhc3RfdHM7XFxuIFxcdFxcdGZhY3RvciA9IHBkZV9nZXRfbXVsdGlwbGUoZGVsdGFfdHMsIHBzLVxcdTAwM2VwcmksXFxuK1xcdFxcdFxcdFxcdFxcdCAgcHMtXFx1MDAzZXByaV9yZWNpcCxcXG4gXFx0XFx0XFx0XFx0XFx0ICBwZGUtXFx1MDAzZXJzLVxcdTAwM2VtYXhfcHJpX3RvbGVyYW5jZSk7XFxuIFxcdFxcdGlmIChmYWN0b3IgXFx1MDAzZSAwKSB7XFxuIFxcdFxcdFxcdHBzLVxcdTAwM2VsYXN0X3RzID0gdHM7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcHJpX2RldGVjdG9yLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3ByaV9kZXRlY3Rvci5oXFxuaW5kZXggODYzMzlmMmI0ZDNhOWUuLmM1MTk0NjZjZmY4YjEyIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcHJpX2RldGVjdG9yLmhcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3ByaV9kZXRlY3Rvci5oXFxuQEAgLTE4LDYgKzE4LDcgQEBcXG4gI2RlZmluZSBERlNfUFJJX0RFVEVDVE9SX0hcXG4gXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9saXN0LmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9yZWNpcHJvY2FsX2Rpdi5oXFx1MDAzZVxcbiBcXG4gZXh0ZXJuIHN0cnVjdCBhdGhfZGZzX3Bvb2xfc3RhdHMgZ2xvYmFsX2Rmc19wb29sX3N0YXRzO1xcbiBcXG5AQCAtMjUsNiArMjYsNyBAQCBleHRlcm4gc3RydWN0IGF0aF9kZnNfcG9vbF9zdGF0cyBnbG9iYWxfZGZzX3Bvb2xfc3RhdHM7XFxuICAqIHN0cnVjdCBwcmlfc2VxdWVuY2UgLSBzZXF1ZW5jZSBvZiBwdWxzZXMgbWF0Y2hpbmcgb25lIFBSSVxcbiAgKiBAaGVhZDogbGlzdF9oZWFkXFxuICAqIEBwcmk6IHB1bHNlIHJlcGV0aXRpb24gaW50ZXJ2YWwgKFBSSSkgaW4gdXNlY3NcXG4rICogQHByaV9yZWNpcDogY2FjaGVkIHJlY2lwcm9jYWwgdmFsdWUgZm9yIFBSSSBkaXZpc2lvbnNcXG4gICogQGR1cjogZHVyYXRpb24gb2Ygc2VxdWVuY2UgaW4gdXNlY3NcXG4gICogQGNvdW50OiBudW1iZXIgb2YgcHVsc2VzIGluIHRoaXMgc2VxdWVuY2VcXG4gICogQGNvdW50X2ZhbHNlczogbnVtYmVyIG9mIG5vdCBtYXRjaGluZyBwdWxzZXMgaW4gdGhpcyBzZXF1ZW5jZVxcbkBAIC0zNSw2ICszNyw3IEBAIGV4dGVybiBzdHJ1Y3QgYXRoX2Rmc19wb29sX3N0YXRzIGdsb2JhbF9kZnNfcG9vbF9zdGF0cztcXG4gc3RydWN0IHByaV9zZXF1ZW5jZSB7XFxuIFxcdHN0cnVjdCBsaXN0X2hlYWQgaGVhZDtcXG4gXFx0dTMyIHByaTtcXG4rXFx0c3RydWN0IHJlY2lwcm9jYWxfdmFsdWUgcHJpX3JlY2lwO1xcbiBcXHR1MzIgZHVyO1xcbiBcXHR1MzIgY291bnQ7XFxuIFxcdHUzMiBjb3VudF9mYWxzZXM7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDAwOjEzOjI1LjQ1NzYzNTgzNFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTUxMjIxMzI2MDMzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkFUSDEwS1wiLFxuICAgIFwiQVRIMTBLX1VTQlwiLFxuICAgIFwiQVRIMTBLX0RGU19DRVJUSUZJRURcIixcbiAgICBcIkFUSDlLXCIsXG4gICAgXCJBVEg5S19ERlNfQ0VSVElGSUVEXCIsXG4gICAgXCJDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJhdGgxMGtfd21pX2V2ZW50X2Rmc1wiLFxuICAgIFwiYXRoMTBrX3dtaV9ldmVudF9waHllcnJcIixcbiAgICBcImF0aDlrX2Rmc19wcm9jZXNzX3BoeWVyclwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlcGxhY2VzIGEgZGl2aXNpb24gd2l0aCBhIHJlY2lwcm9jYWwgbXVsdGlwbGljYXRpb24gaW4gdGhlIEF0aGVyb3MgREZTIFBSSSBkZXRlY3RvciBsb2dpYy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgYWx0ZXJzIHRoZSBjb3JlIGxvZ2ljIG9mIHJhZGFyIHB1bHNlIGRldGVjdGlvbi4gVGhlIGNvZGUgaXMgcmVhY2hhYmxlIHZpYSB0aGUgYXRoMTBrX3VzYiBkcml2ZXIgdXNpbmcgVVNCIGZ1enppbmcsIGFzIFdNSSBldmVudHMgY29udGFpbmluZyBQSFkgZXJyb3JzIGNhbiB0cmlnZ2VyIHRoZSBERlMgcmFkYXIgcmVwb3J0IHBhdGguXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZmE4NzQ2ZjJiZmNkN2ZiZDUxYjA1NzEyMDBhNjRhNzZmOWZjMzAwZlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgSnVsIDIgMDA6MTM6MjIgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3ByaV9kZXRlY3Rvci5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wcmlfZGV0ZWN0b3IuY1xuaW5kZXggMzg4ZjlkMTkxM2JkOWQuLjUyMGZkMTU2N2EwYmFkIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wcmlfZGV0ZWN0b3IuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wcmlfZGV0ZWN0b3IuY1xuQEAgLTE2LDYgKzE2LDcgQEBcbiBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9zbGFiLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9zcGlubG9jay5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvcmVjaXByb2NhbF9kaXYuaFx1MDAzZVxuIFxuICNpbmNsdWRlIFwiYXRoLmhcIlxuICNpbmNsdWRlIFwiZGZzX3BhdHRlcm5fZGV0ZWN0b3IuaFwiXG5AQCAtNDEsNyArNDIsOSBAQCBzdHJ1Y3QgcHVsc2VfZWxlbSB7XG4gICogcGRlX2dldF9tdWx0aXBsZSgpIC0gZ2V0IG51bWJlciBvZiBtdWx0aXBsZXMgY29uc2lkZXJpbmcgYSBnaXZlbiB0b2xlcmFuY2VcbiAgKiBSZXR1cm4gdmFsdWU6IGZhY3RvciBpZiBhYnModmFsIC0gZmFjdG9yKmZyYWN0aW9uKSBcdTAwM2M9IHRvbGVyYW5jZSwgMCBvdGhlcndpc2VcbiAgKi9cbi1zdGF0aWMgdTMyIHBkZV9nZXRfbXVsdGlwbGUodTMyIHZhbCwgdTMyIGZyYWN0aW9uLCB1MzIgdG9sZXJhbmNlKVxuK3N0YXRpYyB1MzIgcGRlX2dldF9tdWx0aXBsZSh1MzIgdmFsLCB1MzIgZnJhY3Rpb24sXG4rXHRcdFx0ICAgIHN0cnVjdCByZWNpcHJvY2FsX3ZhbHVlIGZyYWN0aW9uX3JlY2lwLFxuK1x0XHRcdCAgICB1MzIgdG9sZXJhbmNlKVxuIHtcbiBcdHUzMiByZW1haW5kZXI7XG4gXHR1MzIgZmFjdG9yO1xuQEAgLTU2LDggKzU5LDggQEAgc3RhdGljIHUzMiBwZGVfZ2V0X211bHRpcGxlKHUzMiB2YWwsIHUzMiBmcmFjdGlvbiwgdTMyIHRvbGVyYW5jZSlcbiBcdFx0LyogdmFsIGFuZCBmcmFjdGlvbiBhcmUgd2l0aGluIHRvbGVyYW5jZSAqL1xuIFx0XHRyZXR1cm4gMTtcbiBcbi1cdGZhY3RvciA9IHZhbCAvIGZyYWN0aW9uO1xuLVx0cmVtYWluZGVyID0gdmFsICUgZnJhY3Rpb247XG4rXHRmYWN0b3IgPSByZWNpcHJvY2FsX2RpdmlkZSh2YWwsIGZyYWN0aW9uX3JlY2lwKTtcbitcdHJlbWFpbmRlciA9IHZhbCAtIGZhY3RvciAqIGZyYWN0aW9uO1xuIFx0aWYgKHJlbWFpbmRlciBcdTAwM2UgdG9sZXJhbmNlKSB7XG4gXHRcdC8qIG5vIGV4YWN0IG1hdGNoICovXG4gXHRcdGlmICgoZnJhY3Rpb24gLSByZW1haW5kZXIpIFx1MDAzYz0gdG9sZXJhbmNlKVxuQEAgLTI0Nyw2ICsyNTAsOSBAQCBzdGF0aWMgYm9vbCBwc2VxX2hhbmRsZXJfY3JlYXRlX3NlcXVlbmNlcyhzdHJ1Y3QgcHJpX2RldGVjdG9yICpwZGUsXG4gXHRcdHBzLmxhc3RfdHMgPSB0cztcbiBcdFx0cHMucHJpID0gR0VUX1BSSV9UT19VU0UocGRlLVx1MDAzZXJzLVx1MDAzZXByaV9taW4sXG4gXHRcdFx0cGRlLVx1MDAzZXJzLVx1MDAzZXByaV9tYXgsIHRzIC0gcC1cdTAwM2V0cyk7XG4rXHRcdHBzLnByaV9yZWNpcCA9IChzdHJ1Y3QgcmVjaXByb2NhbF92YWx1ZSl7fTtcbitcdFx0aWYgKHBzLnByaSlcbitcdFx0XHRwcy5wcmlfcmVjaXAgPSByZWNpcHJvY2FsX3ZhbHVlKHBzLnByaSk7XG4gXHRcdHBzLmR1ciA9IHBzLnByaSAqIChwZGUtXHUwMDNlcnMtXHUwMDNlcHBiIC0gMSlcbiBcdFx0XHRcdCsgMiAqIHBkZS1cdTAwM2Vycy1cdTAwM2VtYXhfcHJpX3RvbGVyYW5jZTtcbiBcbkBAIC0yNjEsNiArMjY3LDcgQEAgc3RhdGljIGJvb2wgcHNlcV9oYW5kbGVyX2NyZWF0ZV9zZXF1ZW5jZXMoc3RydWN0IHByaV9kZXRlY3RvciAqcGRlLFxuIFx0XHRcdFx0YnJlYWs7XG4gXHRcdFx0LyogY2hlY2sgaWYgcHVsc2UgbWF0Y2ggKG11bHRpKVBSSSAqL1xuIFx0XHRcdGZhY3RvciA9IHBkZV9nZXRfbXVsdGlwbGUocHMubGFzdF90cyAtIHAyLVx1MDAzZXRzLCBwcy5wcmksXG4rXHRcdFx0XHRcdFx0ICBwcy5wcmlfcmVjaXAsXG4gXHRcdFx0XHRcdFx0ICBwZGUtXHUwMDNlcnMtXHUwMDNlbWF4X3ByaV90b2xlcmFuY2UpO1xuIFx0XHRcdGlmIChmYWN0b3IgXHUwMDNlIDApIHtcbiBcdFx0XHRcdHBzLmNvdW50Kys7XG5AQCAtMzE4LDYgKzMyNSw3IEBAIHBzZXFfaGFuZGxlcl9hZGRfdG9fZXhpc3Rpbmdfc2VxcyhzdHJ1Y3QgcHJpX2RldGVjdG9yICpwZGUsIHU2NCB0cylcbiBcbiBcdFx0ZGVsdGFfdHMgPSB0cyAtIHBzLVx1MDAzZWxhc3RfdHM7XG4gXHRcdGZhY3RvciA9IHBkZV9nZXRfbXVsdGlwbGUoZGVsdGFfdHMsIHBzLVx1MDAzZXByaSxcbitcdFx0XHRcdFx0ICBwcy1cdTAwM2VwcmlfcmVjaXAsXG4gXHRcdFx0XHRcdCAgcGRlLVx1MDAzZXJzLVx1MDAzZW1heF9wcmlfdG9sZXJhbmNlKTtcbiBcdFx0aWYgKGZhY3RvciBcdTAwM2UgMCkge1xuIFx0XHRcdHBzLVx1MDAzZWxhc3RfdHMgPSB0cztcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3ByaV9kZXRlY3Rvci5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wcmlfZGV0ZWN0b3IuaFxuaW5kZXggODYzMzlmMmI0ZDNhOWUuLmM1MTk0NjZjZmY4YjEyIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wcmlfZGV0ZWN0b3IuaFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wcmlfZGV0ZWN0b3IuaFxuQEAgLTE4LDYgKzE4LDcgQEBcbiAjZGVmaW5lIERGU19QUklfREVURUNUT1JfSFxuIFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2xpc3QuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L3JlY2lwcm9jYWxfZGl2LmhcdTAwM2VcbiBcbiBleHRlcm4gc3RydWN0IGF0aF9kZnNfcG9vbF9zdGF0cyBnbG9iYWxfZGZzX3Bvb2xfc3RhdHM7XG4gXG5AQCAtMjUsNiArMjYsNyBAQCBleHRlcm4gc3RydWN0IGF0aF9kZnNfcG9vbF9zdGF0cyBnbG9iYWxfZGZzX3Bvb2xfc3RhdHM7XG4gICogc3RydWN0IHByaV9zZXF1ZW5jZSAtIHNlcXVlbmNlIG9mIHB1bHNlcyBtYXRjaGluZyBvbmUgUFJJXG4gICogQGhlYWQ6IGxpc3RfaGVhZFxuICAqIEBwcmk6IHB1bHNlIHJlcGV0aXRpb24gaW50ZXJ2YWwgKFBSSSkgaW4gdXNlY3NcbisgKiBAcHJpX3JlY2lwOiBjYWNoZWQgcmVjaXByb2NhbCB2YWx1ZSBmb3IgUFJJIGRpdmlzaW9uc1xuICAqIEBkdXI6IGR1cmF0aW9uIG9mIHNlcXVlbmNlIGluIHVzZWNzXG4gICogQGNvdW50OiBudW1iZXIgb2YgcHVsc2VzIGluIHRoaXMgc2VxdWVuY2VcbiAgKiBAY291bnRfZmFsc2VzOiBudW1iZXIgb2Ygbm90IG1hdGNoaW5nIHB1bHNlcyBpbiB0aGlzIHNlcXVlbmNlXG5AQCAtMzUsNiArMzcsNyBAQCBleHRlcm4gc3RydWN0IGF0aF9kZnNfcG9vbF9zdGF0cyBnbG9iYWxfZGZzX3Bvb2xfc3RhdHM7XG4gc3RydWN0IHByaV9zZXF1ZW5jZSB7XG4gXHRzdHJ1Y3QgbGlzdF9oZWFkIGhlYWQ7XG4gXHR1MzIgcHJpO1xuK1x0c3RydWN0IHJlY2lwcm9jYWxfdmFsdWUgcHJpX3JlY2lwO1xuIFx0dTMyIGR1cjtcbiBcdHUzMiBjb3VudDtcbiBcdHUzMiBjb3VudF9mYWxzZXM7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQwMDoxMzoyNS40NTc2Mzc1NTRaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MzAyNDUyMTc3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQXRoZXJvcyBERlMgUFJJIERldGVjdG9yIENoYW5nZSoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYGRmc19wcmlfZGV0ZWN0b3IuY2AgYW5kIGBkZnNfcHJpX2RldGVjdG9yLmhgIHdpdGhpbiB0aGUgQXRoZXJvcyB3aXJlbGVzcyBkcml2ZXIgZGlyZWN0b3J5LiBMb29rcyBsaWtlIHRoZXkncmUgcmVwbGFjaW5nIGEgcmVndWxhciBkaXZpc2lvbiB3aXRoIGByZWNpcHJvY2FsX2RpdmlkZWAgaW4gYHBkZV9nZXRfbXVsdGlwbGVgLiBUaGV5J3ZlIGFsc28gYWRkZWQgYHByaV9yZWNpcGAgdG8gdGhlIGBwcmlfc2VxdWVuY2VgIHN0cnVjdCBhbmQgaW5pdGlhbGl6ZWQgaXQgd2l0aCBgcmVjaXByb2NhbF92YWx1ZShwcy5wcmkpYC4gVGhpcyBpcyBhIHByZXR0eSBzdHJhaWdodGZvcndhcmQgZnVuY3Rpb25hbCBjaGFuZ2Ug4oCTIG9wdGltaXppbmcgZGl2aXNpb24sIGVzc2VudGlhbGx5LiBOb3csIHRoZSBrZXkgcXVlc3Rpb24gZm9yIG1lIGlzOiBpcyB0aGlzIHJlYWNoYWJsZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50P1xuXG5NeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0aGF0IHRoZSBBdGhlcm9zIGRyaXZlciBpcywgYnkgaXRzIG5hdHVyZSwgdGllZCB0byBwaHlzaWNhbCBXaS1GaSBoYXJkd2FyZS4gQnV0IHdhaXQsIHRoZXJlJ3MgYG1hYzgwMjExX2h3c2ltYC4gSXQgc2ltdWxhdGVzIFdpLUZpIGhhcmR3YXJlLCBidXQgZG9lcyBpdCAqdXNlKiB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9gIHN1YnN5c3RlbT8gTm8sIHRoYXQncyBpbmNvcnJlY3QuIFwiYXRoXCIgaXMgZm9yIHNwZWNpZmljIGhhcmR3YXJlIGRyaXZlcnMgbGlrZSBhdGg1aywgYXRoOWssIGV0Yy4gVGhlIGBkZnNfcHJpX2RldGVjdG9yLmNgIGZpbGUgaXMgcGFydCBvZiBhIGNvbW1vbiBtb2R1bGUgZm9yIEF0aGVyb3MuIFNvLCB0aGUgcXVlc3Rpb24gcmVtYWlucy4gSXMgaXQgcG9zc2libGUgdG8gcmVhY2ggdGhpcyBjb2RlIHdpdGhvdXQgYWN0dWFsIGhhcmR3YXJlP1xuXG5JIG5lZWQgdG8gbG9vayBpbnRvIHRoaXMgZnVydGhlci4gTGV0J3Mgc2VlIGlmIHRoZSBLY29uZmlnIG9yIE1ha2VmaWxlIGluIHRoZSBBdGhlcm9zIGRpcmVjdG9yeSBnaXZlcyBtZSBhbnkgY2x1ZXMuIFRoYXQgc2hvdWxkIGhlbHAgbWUgdW5kZXJzdGFuZCBpZiB0aGVyZSBhcmUgYW55IGJ1aWxkIG9wdGlvbnMgdGhhdCB3b3VsZCBlbmFibGUgdGhpcyBERlMgZnVuY3Rpb25hbGl0eSBpbiBhIHNpbXVsYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5MTUsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyODAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQwMDoxMzozMC43NjAwOTI1M1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNTU5NTg3NzcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGZzX3ByaV9kZXRlY3RvclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9NYWtlZmlsZT0xNT1hdGgtb2JqcyA6PVxcdG1haW4ubyBcXFxcXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvTWFrZWZpbGUtMTktXFx0XFx0ZGZzX3BhdHRlcm5fZGV0ZWN0b3IubyBcXFxcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL01ha2VmaWxlOjIwOlxcdFxcdGRmc19wcmlfZGV0ZWN0b3Iub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9NYWtlZmlsZS0yMS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcGF0dGVybl9kZXRlY3Rvci5jLTIwLSNpbmNsdWRlIFxcXCJkZnNfcGF0dGVybl9kZXRlY3Rvci5oXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcGF0dGVybl9kZXRlY3Rvci5jOjIxOiNpbmNsdWRlIFxcXCJkZnNfcHJpX2RldGVjdG9yLmhcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmMtMjItI2luY2x1ZGUgXFxcImF0aC5oXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wcmlfZGV0ZWN0b3IuYy0yMi0jaW5jbHVkZSBcXFwiZGZzX3BhdHRlcm5fZGV0ZWN0b3IuaFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3ByaV9kZXRlY3Rvci5jOjIzOiNpbmNsdWRlIFxcXCJkZnNfcHJpX2RldGVjdG9yLmhcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wcmlfZGV0ZWN0b3IuYy0yNC1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMDA6MTM6MzEuMDE2MDU4MjA4WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDc4MTkwMzQyMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBMaW5lIG9mIFJlYXNvbmluZyBmb3IgQXRoZXJvcyBEcml2ZXIgRnV6emluZyoqXG5cbk9rYXksIHNvIHRoZSBgYXRoYCBtb2R1bGUgaXMgb25seSBidWlsdCB3aGVuIGBDT05GSUdfQVRIX0NPTU1PTmAgaXMgc2V0LiBUaGF0J3MgYSBzdGFydGluZyBwb2ludC4gQnV0IHRoZSByZWFsIHF1ZXN0aW9uIGlzLCBob3cgY2FuIEkgZnV6eiB0aGVzZSBBdGhlcm9zIGRyaXZlcnMgZWZmZWN0aXZlbHksIGdpdmVuIHRoZSB0eXBpY2FsIGNoYWxsZW5nZXMgd2l0aCBoYXJkd2FyZSBkcml2ZXJzP1xuXG5TcGVjaWZpY2FsbHksIGNhbiBJIGRvIHRoaXMgKndpdGhvdXQqIGhhdmluZyB0byByZWx5IG9uIHBoeXNpY2FsIGhhcmR3YXJlPyBUaGF0J3MgdGhlIGlkZWFsIHNjZW5hcmlvLiBJbiBtb3N0IGNhc2VzLCBoYXJkd2FyZSBkcml2ZXJzIGFyZSBub3RvcmlvdXNseSBkaWZmaWN1bHQgdG8gcmVhY2ggd2l0aGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIFdlIG5lZWQgc29tZSBzb3J0IG9mIGJyaWRnZTogZWl0aGVyIGEgc29mdHdhcmUgZW11bGF0b3IgbGlrZSBgbWFjODAyMTFfaHdzaW1gICh3aGljaCwgaW1wb3J0YW50bHksIGlzIGdlbmVyaWMgYW5kICpub3QqIHNwZWNpZmljIHRvIEF0aGVyb3MpIG9yIGEgVVNCIGdhZGdldCBzZXR1cCBmb3IgVVNCIGRyaXZlcnMsIG9yIHNvbWUgUENJIGVtdWxhdGlvbi4gQnV0IHdlIGRvbid0IGhhdmUgZ29vZCBQQ0kgZW11bGF0aW9uIGZvciBBdGhlcm9zIGluIFN5emthbGxlciBieSBkZWZhdWx0IOKAkyBhcGFydCBmcm9tIHNvbWUgdmVyeSBsaW1pdGVkLCBnZW5lcmljIFBDSSBmdXp6aW5nLCB3aGljaCBwcm9iYWJseSB3b24ndCBiZSBzdWZmaWNpZW50LlxuXG5CdXQgd2FpdCBhIG1pbnV0ZS4uLiBkb2VzIFN5emthbGxlciAqYWxyZWFkeSogZnV6eiBgYXRoOWtfaHRjYD8gVGhlIGxpZ2h0YnVsYiBnb2VzIG9mZiEgYGF0aDlrX2h0Y2AgaXMgYSAqVVNCKiBkcml2ZXIsIGlzbid0IGl0PyBJZiBzbywgdGhpcyBvcGVucyB1cCBhIHdob2xlIGRpZmZlcmVudCBhdmVudWUgZm9yIHRlc3RpbmcsIHBvdGVudGlhbGx5IHdpdGhvdXQgbmVlZGluZyBjdXN0b20gUENJIGVtdWxhdGlvbi5cblxuU28sIGxldCBtZSBxdWlja2x5IGNoZWNrLi4uIEkgbmVlZCB0byBzZWUgaWYgYGF0aDlrX2h0Y2AgdXNlcyB0aGF0IGBkZnNfcHJpX2RldGVjdG9yLmNgIGNvZGUuIFRoYXQnbGwgZ2l2ZSBtZSBhIGtleSBpbnNpZ2h0IGludG8gd2hhdCBwYXJ0cyBvZiB0aGUgQXRoZXJvcyBzdGFjayBhcmUgYmVpbmcgdG91Y2hlZCBhbmQgY291bGQgYmUgZnV6emVkLCBhbmQgd2hldGhlciB0aGVyZSdzIG92ZXJsYXAgYmV0d2VlbiB0aGUgVVNCIGRyaXZlciBhbmQgdGhlIHJlc3Qgb2YgdGhlIEF0aGVyb3MgZnJhbWV3b3JrLlxuXG5cbiIsIklucHV0VG9rZW5zIjozODExLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDAwOjEzOjM1Ljc5Nzk2NDA2MVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTEwNTM1MjEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGZzX3BhdHRlcm5fZGV0ZWN0b3JcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvTWFrZWZpbGU9MTU9YXRoLW9ianMgOj1cXHRtYWluLm8gXFxcXFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL01ha2VmaWxlLTE4LVxcdFxcdGtleS5vIFxcXFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvTWFrZWZpbGU6MTk6XFx0XFx0ZGZzX3BhdHRlcm5fZGV0ZWN0b3IubyBcXFxcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL01ha2VmaWxlLTIwLVxcdFxcdGRmc19wcmlfZGV0ZWN0b3Iub1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9jb3JlLmgtMjYtI2luY2x1ZGUgXFxcIi4uL3JlZ2QuaFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2NvcmUuaDoyNzojaW5jbHVkZSBcXFwiLi4vZGZzX3BhdHRlcm5fZGV0ZWN0b3IuaFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2NvcmUuaC0yOC0jaW5jbHVkZSBcXFwic3BlY3RyYWwuaFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvY29yZS5oPTEwMTE9c3RydWN0IGF0aDEwayB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2NvcmUuaC0xMjM0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvY29yZS5oOjEyMzU6XFx0c3RydWN0IGRmc19wYXR0ZXJuX2RldGVjdG9yICpkZnNfZGV0ZWN0b3I7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9jb3JlLmgtMTIzNi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmM9OTk3MT1pbnQgYXRoMTBrX21hY19yZWdpc3RlcihzdHJ1Y3QgYXRoMTBrICphcilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmMtMTAyODUtXFx0XFx0YXItXFx1MDAzZWF0aF9jb21tb24uZGVidWdfbWFzayA9IEFUSF9EQkdfREZTO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmM6MTAyODY6XFx0XFx0YXItXFx1MDAzZWRmc19kZXRlY3RvciA9IGRmc19wYXR0ZXJuX2RldGVjdG9yX2luaXQoXFx1MDAyNmFyLVxcdTAwM2VhdGhfY29tbW9uLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmMtMTAyODctXFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgICBOTDgwMjExX0RGU19VTlNFVCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXRoOWsuaD05ODM9c3RydWN0IGF0aF9zb2Z0YyB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXRoOWsuaC0xMDU5LVxcdHU4IGFudF90eCwgYW50X3J4O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hdGg5ay5oOjEwNjA6XFx0c3RydWN0IGRmc19wYXR0ZXJuX2RldGVjdG9yICpkZnNfZGV0ZWN0b3I7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2F0aDlrLmgtMTA2MS1cXHR1NjQgZGZzX3ByZXZfcHVsc2VfdHM7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGZzLmM9Mjc0PWF0aDlrX2Rmc19wcm9jZXNzX3JhZGFyX3B1bHNlKHN0cnVjdCBhdGhfc29mdGMgKnNjLCBzdHJ1Y3QgcHVsc2VfZXZlbnQgKnBlKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZnMuYy0yNzUte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZnMuYzoyNzY6XFx0c3RydWN0IGRmc19wYXR0ZXJuX2RldGVjdG9yICpwZCA9IHNjLVxcdTAwM2VkZnNfZGV0ZWN0b3I7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2Rmcy5jLTI3Ny1cXHRERlNfU1RBVF9JTkMoc2MsIHB1bHNlc19wcm9jZXNzZWQpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2Rmcy5oLTE5LSNkZWZpbmUgQVRIOUtfREZTX0hcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGZzLmg6MjA6I2luY2x1ZGUgXFxcIi4uL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmhcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2Rmcy5oLTIxLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2Rmc19kZWJ1Zy5jLTIyLSNpbmNsdWRlIFxcXCJkZnNfZGVidWcuaFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGZzX2RlYnVnLmM6MjM6I2luY2x1ZGUgXFxcIi4uL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmhcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2Rmc19kZWJ1Zy5jLTI0LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2luaXQuYz02NTY9c3RhdGljIGludCBhdGg5a19pbml0X3NvZnRjKHUxNiBkZXZpZCwgc3RydWN0IGF0aF9zb2Z0YyAqc2MsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jLTY4NS1cXHRzYy1cXHUwMDNlc2NfYWggPSBhaDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jOjY4NjpcXHRzYy1cXHUwMDNlZGZzX2RldGVjdG9yID0gZGZzX3BhdHRlcm5fZGV0ZWN0b3JfaW5pdChjb21tb24sIE5MODAyMTFfREZTX1VOU0VUKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jLTY4Ny1cXHRzYy1cXHUwMDNldHg5OV9wb3dlciA9IE1BWF9SQVRFX1BPV0VSICsgMTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcGF0dGVybl9kZXRlY3Rvci5jLTE5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcGF0dGVybl9kZXRlY3Rvci5jOjIwOiNpbmNsdWRlIFxcXCJkZnNfcGF0dGVybl9kZXRlY3Rvci5oXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcGF0dGVybl9kZXRlY3Rvci5jLTIxLSNpbmNsdWRlIFxcXCJkZnNfcHJpX2RldGVjdG9yLmhcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3BhdHRlcm5fZGV0ZWN0b3IuYz0xNjE9c3RydWN0IGNoYW5uZWxfZGV0ZWN0b3Ige1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmMtMTY3LS8qIGNoYW5uZWxfZGV0ZWN0b3JfcmVzZXQoKSAtIHJlc2V0IGRldGVjdG9yIGxpbmVzIGZvciBhIGdpdmVuIGNoYW5uZWwgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3BhdHRlcm5fZGV0ZWN0b3IuYzoxNjg6c3RhdGljIHZvaWQgY2hhbm5lbF9kZXRlY3Rvcl9yZXNldChzdHJ1Y3QgZGZzX3BhdHRlcm5fZGV0ZWN0b3IgKmRwZCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3BhdHRlcm5fZGV0ZWN0b3IuYy0xNjktXFx0XFx0XFx0XFx0ICAgc3RydWN0IGNoYW5uZWxfZGV0ZWN0b3IgKmNkKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmMtMTc4LS8qIGNoYW5uZWxfZGV0ZWN0b3JfZXhpdCgpIC0gZGVzdHJ1Y3RvciAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcGF0dGVybl9kZXRlY3Rvci5jOjE3OTpzdGF0aWMgdm9pZCBjaGFubmVsX2RldGVjdG9yX2V4aXQoc3RydWN0IGRmc19wYXR0ZXJuX2RldGVjdG9yICpkcGQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmMtMTgwLVxcdFxcdFxcdFxcdCAgc3RydWN0IGNoYW5uZWxfZGV0ZWN0b3IgKmNkKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmM9MTk2PXN0YXRpYyBzdHJ1Y3QgY2hhbm5lbF9kZXRlY3RvciAqXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmM6MTk3OmNoYW5uZWxfZGV0ZWN0b3JfY3JlYXRlKHN0cnVjdCBkZnNfcGF0dGVybl9kZXRlY3RvciAqZHBkLCB1MTYgZnJlcSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3BhdHRlcm5fZGV0ZWN0b3IuYy0xOTgte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmM9MjM2PXN0YXRpYyBzdHJ1Y3QgY2hhbm5lbF9kZXRlY3RvciAqXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmM6MjM3OmNoYW5uZWxfZGV0ZWN0b3JfZ2V0KHN0cnVjdCBkZnNfcGF0dGVybl9kZXRlY3RvciAqZHBkLCB1MTYgZnJlcSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3BhdHRlcm5fZGV0ZWN0b3IuYy0yMzgte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmMtMjUxLS8qIGRwZF9yZXNldCgpOiByZXNldCBhbGwgY2hhbm5lbCBkZXRlY3RvcnMgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3BhdHRlcm5fZGV0ZWN0b3IuYzoyNTI6c3RhdGljIHZvaWQgZHBkX3Jlc2V0KHN0cnVjdCBkZnNfcGF0dGVybl9kZXRlY3RvciAqZHBkKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcGF0dGVybl9kZXRlY3Rvci5jLTI1My17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3BhdHRlcm5fZGV0ZWN0b3IuYy0yNTgtfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcGF0dGVybl9kZXRlY3Rvci5jOjI1OTpzdGF0aWMgdm9pZCBkcGRfZXhpdChzdHJ1Y3QgZGZzX3BhdHRlcm5fZGV0ZWN0b3IgKmRwZClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3BhdHRlcm5fZGV0ZWN0b3IuYy0yNjAte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmM9MjY3PXN0YXRpYyBib29sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmM6MjY4OmRwZF9hZGRfcHVsc2Uoc3RydWN0IGRmc19wYXR0ZXJuX2RldGVjdG9yICpkcGQsIHN0cnVjdCBwdWxzZV9ldmVudCAqZXZlbnQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmMtMjY5LVxcdCAgICAgIHN0cnVjdCByYWRhcl9kZXRlY3Rvcl9zcGVjcyAqcnMpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3BhdHRlcm5fZGV0ZWN0b3IuYz0zMDk9c3RhdGljIHN0cnVjdCBhdGhfZGZzX3Bvb2xfc3RhdHNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3BhdHRlcm5fZGV0ZWN0b3IuYzozMTA6ZHBkX2dldF9zdGF0cyhzdHJ1Y3QgZGZzX3BhdHRlcm5fZGV0ZWN0b3IgKmRwZClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3BhdHRlcm5fZGV0ZWN0b3IuYy0zMTEte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmMtMzE0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcGF0dGVybl9kZXRlY3Rvci5jOjMxNTpzdGF0aWMgYm9vbCBkcGRfc2V0X2RvbWFpbihzdHJ1Y3QgZGZzX3BhdHRlcm5fZGV0ZWN0b3IgKmRwZCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3BhdHRlcm5fZGV0ZWN0b3IuYy0zMTYtXFx0XFx0XFx0ICAgZW51bSBubDgwMjExX2Rmc19yZWdpb25zIHJlZ2lvbilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcGF0dGVybl9kZXRlY3Rvci5jLTMzOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3BhdHRlcm5fZGV0ZWN0b3IuYzozNDA6c3RhdGljIGNvbnN0IHN0cnVjdCBkZnNfcGF0dGVybl9kZXRlY3RvciBkZWZhdWx0X2RwZCA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3BhdHRlcm5fZGV0ZWN0b3IuYy0zNDEtXFx0LmV4aXRcXHRcXHQ9IGRwZF9leGl0LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmMtMzQ3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcGF0dGVybl9kZXRlY3Rvci5jOjM0ODpzdHJ1Y3QgZGZzX3BhdHRlcm5fZGV0ZWN0b3IgKlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcGF0dGVybl9kZXRlY3Rvci5jOjM0OTpkZnNfcGF0dGVybl9kZXRlY3Rvcl9pbml0KHN0cnVjdCBhdGhfY29tbW9uICpjb21tb24sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmMtMzUwLVxcdFxcdFxcdCAgZW51bSBubDgwMjExX2Rmc19yZWdpb25zIHJlZ2lvbilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3BhdHRlcm5fZGV0ZWN0b3IuYy0zNTEte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcGF0dGVybl9kZXRlY3Rvci5jOjM1MjpcXHRzdHJ1Y3QgZGZzX3BhdHRlcm5fZGV0ZWN0b3IgKmRwZDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3BhdHRlcm5fZGV0ZWN0b3IuYy0zNTMtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3BhdHRlcm5fZGV0ZWN0b3IuYy0zNzEtfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcGF0dGVybl9kZXRlY3Rvci5jOjM3MjpFWFBPUlRfU1lNQk9MKGRmc19wYXR0ZXJuX2RldGVjdG9yX2luaXQpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmg9NzE9c3RydWN0IHJhZGFyX2RldGVjdG9yX3NwZWNzIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcGF0dGVybl9kZXRlY3Rvci5oLTg0LS8qKlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcGF0dGVybl9kZXRlY3Rvci5oOjg1OiAqIHN0cnVjdCBkZnNfcGF0dGVybl9kZXRlY3RvciAtIERGUyBwYXR0ZXJuIGRldGVjdG9yXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmgtODYtICogQGV4aXQoKTogZGVzdHJ1Y3Rvclxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmgtOTQtICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmg6OTU6c3RydWN0IGRmc19wYXR0ZXJuX2RldGVjdG9yIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3BhdHRlcm5fZGV0ZWN0b3IuaDo5NjpcXHR2b2lkICgqZXhpdCkoc3RydWN0IGRmc19wYXR0ZXJuX2RldGVjdG9yICpkcGQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcGF0dGVybl9kZXRlY3Rvci5oOjk3OlxcdGJvb2wgKCpzZXRfZGZzX2RvbWFpbikoc3RydWN0IGRmc19wYXR0ZXJuX2RldGVjdG9yICpkcGQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmgtOTgtXFx0XFx0XFx0ICAgZW51bSBubDgwMjExX2Rmc19yZWdpb25zIHJlZ2lvbik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmg6OTk6XFx0Ym9vbCAoKmFkZF9wdWxzZSkoc3RydWN0IGRmc19wYXR0ZXJuX2RldGVjdG9yICpkcGQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmgtMTAwLVxcdFxcdFxcdCAgc3RydWN0IHB1bHNlX2V2ZW50ICpwZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcGF0dGVybl9kZXRlY3Rvci5oLTEwMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3BhdHRlcm5fZGV0ZWN0b3IuaDoxMDM6XFx0c3RydWN0IGF0aF9kZnNfcG9vbF9zdGF0cyAoKmdldF9zdGF0cykoc3RydWN0IGRmc19wYXR0ZXJuX2RldGVjdG9yICpkcGQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcGF0dGVybl9kZXRlY3Rvci5oLTEwNC1cXHRlbnVtIG5sODAyMTFfZGZzX3JlZ2lvbnMgcmVnaW9uO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmgtMTE0LS8qKlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcGF0dGVybl9kZXRlY3Rvci5oOjExNTogKiBkZnNfcGF0dGVybl9kZXRlY3Rvcl9pbml0KCkgLSBjb25zdHJ1Y3RvciBmb3IgcGF0dGVybiBkZXRlY3RvciBjbGFzc1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcGF0dGVybl9kZXRlY3Rvci5oLTExNi0gKiBAcGFyYW0gcmVnaW9uOiBERlMgZG9tYWluIHRvIGJlIHVzZWQsIGNhbiBiZSBOTDgwMjExX0RGU19VTlNFVCBhdCBjcmVhdGlvblxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmgtMTE4LSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcGF0dGVybl9kZXRlY3Rvci5oOjExOTpleHRlcm4gc3RydWN0IGRmc19wYXR0ZXJuX2RldGVjdG9yICpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3BhdHRlcm5fZGV0ZWN0b3IuaDoxMjA6ZGZzX3BhdHRlcm5fZGV0ZWN0b3JfaW5pdChzdHJ1Y3QgYXRoX2NvbW1vbiAqY29tbW9uLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcGF0dGVybl9kZXRlY3Rvci5oLTEyMS1cXHRcXHRcXHQgIGVudW0gbmw4MDIxMV9kZnNfcmVnaW9ucyByZWdpb24pO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wcmlfZGV0ZWN0b3IuYy0yMS0jaW5jbHVkZSBcXFwiYXRoLmhcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wcmlfZGV0ZWN0b3IuYzoyMjojaW5jbHVkZSBcXFwiZGZzX3BhdHRlcm5fZGV0ZWN0b3IuaFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3ByaV9kZXRlY3Rvci5jLTIzLSNpbmNsdWRlIFxcXCJkZnNfcHJpX2RldGVjdG9yLmhcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDAwOjEzOjM1Ljk4OTAyNTE4MloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwNDUwNTgwNTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQ2hlY2tpbmcgREZTIEluaXRpYWxpemF0aW9uIGFuZCBVc2FnZSoqXG5cbk9rYXksIHNvIGBkZnNfcGF0dGVybl9kZXRlY3Rvcl9pbml0YCBpcyBhIGtleSBmdW5jdGlvbiwgaXQncyBleHBvc2VkIGFuZCBzZWVtcyB0byBiZSB1dGlsaXplZCBieSBib3RoIGBhdGg5a2AgYW5kIGBhdGgxMGtgLiBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgYGF0aDlrX2h0Y2AgZml0cyBpbnRvIHRoaXMgcGljdHVyZS4gTXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzOiBkb2VzIGBhdGg5a19odGNgIGFjdHVhbGx5IGxldmVyYWdlIGFueXRoaW5nIHdpdGhpbiBgZGZzLmNgPyBJdCdzIGVzc2VudGlhbCBJIHZlcmlmeSB3aGV0aGVyIERGUyBzdXBwb3J0IGlzIGV2ZW4gY29tcGlsZWQgaW50byB0aGUgYGF0aDlrX2h0Y2AgbW9kdWxlLiBUaGF0J3MgdGhlIGZpcnN0IHRoaW5nIEknbGwgY2hlY2suXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc1MjEsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQwMDoxMzozOS4wMzQwODU4OTFaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjIyNzA3MjI1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImF0aDlrX2Rmc19wcm9jZXNzX3JhZGFyX3B1bHNlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2Rmcy5jPTI3Mz1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZnMuYzoyNzQ6YXRoOWtfZGZzX3Byb2Nlc3NfcmFkYXJfcHVsc2Uoc3RydWN0IGF0aF9zb2Z0YyAqc2MsIHN0cnVjdCBwdWxzZV9ldmVudCAqcGUpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2Rmcy5jLTI3NS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGZzLmM9Mjg5PXZvaWQgYXRoOWtfZGZzX3Byb2Nlc3NfcGh5ZXJyKHN0cnVjdCBhdGhfc29mdGMgKnNjLCB2b2lkICpkYXRhLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2Rmcy5jLTM1Mi1cXHRpZiAoYXJkLnB1bHNlX2J3X2luZm8gXFx1MDAyNiBQUklfQ0hfUkFEQVJfRk9VTkQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2Rmcy5jOjM1MzpcXHRcXHRhdGg5a19kZnNfcHJvY2Vzc19yYWRhcl9wdWxzZShzYywgXFx1MDAyNnBlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGZzLmMtMzU0LVxcdGlmIChJU19DSEFOX0hUNDAoYWgtXFx1MDAzZWN1cmNoYW4pIFxcdTAwMjZcXHUwMDI2XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGZzLmMtMzU2LVxcdFxcdHBlLmZyZXEgKz0gSVNfQ0hBTl9IVDQwUExVUyhhaC1cXHUwMDNlY3VyY2hhbikgPyAyMCA6IC0yMDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGZzLmM6MzU3OlxcdFxcdGF0aDlrX2Rmc19wcm9jZXNzX3JhZGFyX3B1bHNlKHNjLCBcXHUwMDI2cGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZnMuYy0zNTgtXFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQwMDoxMzozOS4yNTY4NTc0MTVaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODg4NDQ2ODUwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6XG5cbioqRGlnZ2luZyBpbnRvIGBhdGg5a19kZnNfcHJvY2Vzc19waHllcnJgKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYGF0aDlrX2Rmc19wcm9jZXNzX3BoeWVycmAgYW5kIHRoZSBmaXJzdCBxdWVzdGlvbiB0aGF0IHBvcHMgaW50byBteSBoZWFkLCBsaWtlIHdpdGggYW55IGNyaXRpY2FsIGZ1bmN0aW9uIGluIHRoZSBkcml2ZXIsIGlzIFwiV2hlcmUgdGhlIGhlY2sgaXMgdGhpcyBiZWluZyBjYWxsZWQgZnJvbT9cIiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgY2FsbCBzdGFjayB0byBmdWxseSBncmFzcCBpdHMgcHVycG9zZSBhbmQgaW1wYWN0LiBJIGNhbid0IGp1c3QgZGl2ZSBpbnRvIHRoZSBjb2RlIGl0c2VsZiB3aXRob3V0IGtub3dpbmcgdGhlIGNvbnRleHQgaW4gd2hpY2ggaXQgb3BlcmF0ZXMuIEtub3dpbmcgdGhlIGNhbGxpbmcgZnVuY3Rpb25zIHdpbGwgZ2l2ZSBtZSBhIHZpdGFsIHVuZGVyc3RhbmRpbmcgb2YgdGhlIHRpbWluZyBhbmQgY29uZGl0aW9ucyByZWxhdGVkIHRvIHRoZSB1c2Ugb2YgdGhlIGZ1bmN0aW9uLiBJcyBpdCBmcm9tIGludGVycnVwdCBjb250ZXh0PyBUYXNrbGV0PyBBIHVzZXItc3BhY2UgdGhyZWFkPyBLbm93aW5nIHRoaXMgaXMgdml0YWwgdG8gcHJvcGVybHkgdW5kZXJzdGFuZCB3aGF0IHByb2JsZW1zIGNvdWxkIGFyaXNlIGZyb20gdXNlIG9mIHRoZSBmdW5jdGlvbi4gVW5kZXJzdGFuZGluZyB3aGVyZSB0aGUgZnVuY3Rpb24gaXMgY2FsbGVkIGZyb20gaXMgbXkgc3RhcnRpbmcgcG9pbnQgdG8gdW5kZXJzdGFuZGluZyB0aGUgYmlnIHBpY3R1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjgxMzQsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQwMDoxMzo0Mi4xNDUzMDc4NjVaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMzODQ3NzA3MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhdGg5a19kZnNfcHJvY2Vzc19waHllcnJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGZzLmM9Mjc0PWF0aDlrX2Rmc19wcm9jZXNzX3JhZGFyX3B1bHNlKHN0cnVjdCBhdGhfc29mdGMgKnNjLCBzdHJ1Y3QgcHVsc2VfZXZlbnQgKnBlKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2Rmcy5jLTI4OC0gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGZzLmM6Mjg5OnZvaWQgYXRoOWtfZGZzX3Byb2Nlc3NfcGh5ZXJyKHN0cnVjdCBhdGhfc29mdGMgKnNjLCB2b2lkICpkYXRhLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZnMuYy0yOTAtXFx0XFx0XFx0ICAgICAgc3RydWN0IGF0aF9yeF9zdGF0dXMgKnJzLCB1NjQgbWFjdGltZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZnMuYy0zNDYtXFx0YXRoX2RiZyhjb21tb24sIERGUyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGZzLmM6MzQ3OlxcdFxcdFxcXCJhdGg5a19kZnNfcHJvY2Vzc19waHllcnI6IHR5cGU9JWQsIGZyZXE9JWQsIHRzPSVsbHUsIFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGZzLmMtMzQ4LVxcdFxcdFxcXCJ3aWR0aD0lZCwgcnNzaT0lZCwgZGVsdGFfdHM9JWxsdVxcXFxuXFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZnMuaC0yMy0vKipcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGZzLmg6MjQ6ICogYXRoOWtfZGZzX3Byb2Nlc3NfcGh5ZXJyIC0gcHJvY2VzcyByYWRhciBQSFkgZXJyb3JcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGZzLmgtMjUtICogQHNjOiBhdGhfc29mdGNcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZnMuaC0zNi0gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGZzLmg6Mzc6dm9pZCBhdGg5a19kZnNfcHJvY2Vzc19waHllcnIoc3RydWN0IGF0aF9zb2Z0YyAqc2MsIHZvaWQgKmRhdGEsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2Rmcy5oLTM4LVxcdFxcdFxcdCAgICAgIHN0cnVjdCBhdGhfcnhfc3RhdHVzICpycywgdTY0IG1hY3RpbWUpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2Rmcy5oPTQwPXN0YXRpYyBpbmxpbmUgdm9pZFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZnMuaDo0MTphdGg5a19kZnNfcHJvY2Vzc19waHllcnIoc3RydWN0IGF0aF9zb2Z0YyAqc2MsIHZvaWQgKmRhdGEsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2Rmcy5oLTQyLVxcdFxcdFxcdCBzdHJ1Y3QgYXRoX3J4X3N0YXR1cyAqcnMsIHU2NCBtYWN0aW1lKSB7IH1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9yZWN2LmM9ODA2PXN0YXRpYyBpbnQgYXRoOWtfcnhfc2tiX3ByZXByb2Nlc3Moc3RydWN0IGF0aF9zb2Z0YyAqc2MsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvcmVjdi5jLTg4MC1cXHRcXHRpZiAoaHctXFx1MDAzZWNvbmYucmFkYXJfZW5hYmxlZCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9yZWN2LmM6ODgxOlxcdFxcdFxcdGF0aDlrX2Rmc19wcm9jZXNzX3BoeWVycihzYywgaGRyLCByeF9zdGF0cyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvcmVjdi5jLTg4Mi1cXHRcXHRcXHRcXHRcXHRcXHQgcnhfc3RhdHVzLVxcdTAwM2VtYWN0aW1lKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMDA6MTM6NDIuNDgzNzkxNTY2WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1NTM1ODY4MzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIGl0IHdlcmUgbXkgb3duOlxuXG4qKkludmVzdGlnYXRpbmcgQXRoZXJvcyBEcml2ZXIgQ29kZSBQYXRocyoqXG5cbk9rYXksIEknbSBkaWdnaW5nIGludG8gdGhlIEF0aGVyb3Mgd2lyZWxlc3MgZHJpdmVyLiBTcGVjaWZpY2FsbHksIEkndmUgZ290IG15IGV5ZSBvbiBgYXRoOWtfcnhfc2tiX3ByZXByb2Nlc3NgIOKAkyB0aGF0J3MgdGhlIGZ1bmN0aW9uIHJlc3BvbnNpYmxlIGZvciBpbml0aWFsIHByb2Nlc3Npbmcgb2YgcmVjZWl2ZWQgU0tCcy4gSSBrbm93IGl0J3MgbG9jYXRlZCB3aXRoaW4gYGF0aDlrL3JlY3YuY2AuICBOb3csIHRoZSBjcml0aWNhbCBxdWVzdGlvbiBpcywgZG9lcyB0aGUgYGF0aDlrX2h0Y2AgZHJpdmVyICphbHNvKiB1dGlsaXplIGNvZGUgd2l0aGluIGBhdGg5ay9yZWN2LmNgPyAgSSBuZWVkIHRvIGRldGVybWluZSBpZiB0aGVyZSdzIGNvZGUgcmV1c2Ugb3IgaWYgdGhlc2UgYXJlIHN0cmljdGx5IGRpc3RpbmN0IGNvZGUgcGF0aHMgZm9yIGRpZmZlcmVudCBBdGhlcm9zIGhhcmR3YXJlIGltcGxlbWVudGF0aW9ucyAob3IgZ2VuZXJhdGlvbnMpLiBVbmRlcnN0YW5kaW5nIHRoZSBkZXBlbmRlbmN5IHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoZXNlIHR3byBjb21wb25lbnRzIGlzIGNydWNpYWwgZm9yIGRpYWdub3NpbmcgYSBwb3RlbnRpYWwgcGVyZm9ybWFuY2UgYm90dGxlbmVjaywgb3IgcGVyaGFwcyB0cmFja2luZyBhIGJ1ZyByZXBvcnQuIEknbGwgbmVlZCB0byBjb25maXJtIHRoYXQgYGF0aDlrX2h0Y2AgaXMgY2FsbGluZyB0aGF0IHBhcnRpY3VsYXIgc2VjdGlvbiBvZiB0aGUgY29kZSwgb3IgZGV0ZXJtaW5lIHdoYXQgKm90aGVyKiBwb3RlbnRpYWwgY2FsbCBncmFwaHMgaW52b2x2ZSB0aGUgYHJlY3YuY2AgZmlsZS4gVGltZSB0byBkaXZlIGludG8gdGhlIGNhbGwgZ3JhcGhzIGFuZCB1bmRlcnN0YW5kIHRoaXMgZmxvdy5cblxuXG4iLCJJbnB1dFRva2VucyI6OTExNywiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDAwOjEzOjQ2LjAzNzM4MTExWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNTk2Mjk4NDcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicmVjdlxcXFwub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZT0yPWF0aDlrLXkgKz1cXHRiZWFjb24ubyBcXFxcXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGUtNS1cXHRcXHRtYWluLm8gXFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZTo2OlxcdFxcdHJlY3YubyBcXFxcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlLTctXFx0XFx0eG1pdC5vIFxcXFxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMDA6MTM6NDYuMjk3MDE3NDI3WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUxODI3Njg5MjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzaW5nOlxuXG4qKldpcmVsZXNzIERyaXZlciBEZWVwIERpdmUqKlxuXG5IbW0sIG5vLCB0aGF0IGluaXRpYWwgYXNzdW1wdGlvbiBhYm91dCBgYXRoOWsteWAgaXMgd3JvbmcuIFRoYXQncyBzcGVjaWZpY2FsbHkgZm9yIHRoZSBgYXRoOWsua29gIFBDSSBkcml2ZXIsIG5vdCB0aGUgSFRDIHZlcnNpb24uIEkgbmVlZCB0byBrZWVwIHRoZSBhcmNoaXRlY3R1cmUgc3RyYWlnaHQuIE9rYXksIHNvIEkga25vdyBgYXRoOWtfaHRjYCBoYXMgaXRzIG93biwgc2VwYXJhdGUgTWFrZWZpbGUuIFdoZXJlIGRvIEkgZ28gZnJvbSBoZXJlPyBMZXQncyB6b29tIGluIG9uIHRoZSByZWNlaXZlIHBhdGjigKYgSSdsbCBiZXQgdGhlIHJlbGV2YW50IGNvZGUgSSdtIGxvb2tpbmcgZm9yIGlzIGluIGBhdGg5ay9odGNfZHJ2X3JlY3YuY2Agb3Igc29tZXRoaW5nIHNpbWlsYXIuIFRpbWUgdG8gY3JhY2sgb3BlbiB0aGF0IGZpbGUgYW5kIHNlZSB3aGF0J3Mgd2hhdC5cblxuXG4iLCJJbnB1dFRva2VucyI6OTUzNywiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDAwOjEzOjUxLjQ3OTc4OTIwOFoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjk5OTYxNjI5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImF0aDlrX2Rmc19wcm9jZXNzX3BoeWVyclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZnMuYz0yNzQ9YXRoOWtfZGZzX3Byb2Nlc3NfcmFkYXJfcHVsc2Uoc3RydWN0IGF0aF9zb2Z0YyAqc2MsIHN0cnVjdCBwdWxzZV9ldmVudCAqcGUpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGZzLmMtMjg4LSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZnMuYzoyODk6dm9pZCBhdGg5a19kZnNfcHJvY2Vzc19waHllcnIoc3RydWN0IGF0aF9zb2Z0YyAqc2MsIHZvaWQgKmRhdGEsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2Rmcy5jLTI5MC1cXHRcXHRcXHQgICAgICBzdHJ1Y3QgYXRoX3J4X3N0YXR1cyAqcnMsIHU2NCBtYWN0aW1lKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2Rmcy5jLTM0Ni1cXHRhdGhfZGJnKGNvbW1vbiwgREZTLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZnMuYzozNDc6XFx0XFx0XFxcImF0aDlrX2Rmc19wcm9jZXNzX3BoeWVycjogdHlwZT0lZCwgZnJlcT0lZCwgdHM9JWxsdSwgXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZnMuYy0zNDgtXFx0XFx0XFxcIndpZHRoPSVkLCByc3NpPSVkLCBkZWx0YV90cz0lbGx1XFxcXG5cXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2Rmcy5oLTIzLS8qKlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZnMuaDoyNDogKiBhdGg5a19kZnNfcHJvY2Vzc19waHllcnIgLSBwcm9jZXNzIHJhZGFyIFBIWSBlcnJvclxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZnMuaC0yNS0gKiBAc2M6IGF0aF9zb2Z0Y1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2Rmcy5oLTM2LSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZnMuaDozNzp2b2lkIGF0aDlrX2Rmc19wcm9jZXNzX3BoeWVycihzdHJ1Y3QgYXRoX3NvZnRjICpzYywgdm9pZCAqZGF0YSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGZzLmgtMzgtXFx0XFx0XFx0ICAgICAgc3RydWN0IGF0aF9yeF9zdGF0dXMgKnJzLCB1NjQgbWFjdGltZSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGZzLmg9NDA9c3RhdGljIGlubGluZSB2b2lkXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2Rmcy5oOjQxOmF0aDlrX2Rmc19wcm9jZXNzX3BoeWVycihzdHJ1Y3QgYXRoX3NvZnRjICpzYywgdm9pZCAqZGF0YSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGZzLmgtNDItXFx0XFx0XFx0IHN0cnVjdCBhdGhfcnhfc3RhdHVzICpycywgdTY0IG1hY3RpbWUpIHsgfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3JlY3YuYz04MDY9c3RhdGljIGludCBhdGg5a19yeF9za2JfcHJlcHJvY2VzcyhzdHJ1Y3QgYXRoX3NvZnRjICpzYyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9yZWN2LmMtODgwLVxcdFxcdGlmIChody1cXHUwMDNlY29uZi5yYWRhcl9lbmFibGVkKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3JlY3YuYzo4ODE6XFx0XFx0XFx0YXRoOWtfZGZzX3Byb2Nlc3NfcGh5ZXJyKHNjLCBoZHIsIHJ4X3N0YXRzLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9yZWN2LmMtODgyLVxcdFxcdFxcdFxcdFxcdFxcdCByeF9zdGF0dXMtXFx1MDAzZW1hY3RpbWUpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQwMDoxMzo1MS43Nzk3NTc1MTdaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDAxMTg5NDIxMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbnZlc3RpZ2F0aW5nIERGUyBFcnJvciBIYW5kbGluZyBpbiBBdGhlcm9zIERyaXZlcnMqKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIGhvdyB0aGVzZSBBdGhlcm9zIGRyaXZlcnMgaGFuZGxlIERGUyAoRHluYW1pYyBGcmVxdWVuY3kgU2VsZWN0aW9uKSBhbmQgdGhlIHBoeXNpY2FsIGxheWVyIGVycm9ycyB0aGF0IHRyaWdnZXIgaXQuIEkgc2VlIHRoYXQgYGF0aDlrX2Rmc19wcm9jZXNzX3BoeWVycmAgaXMgc3BlY2lmaWNhbGx5IGNhbGxlZCBmcm9tIHdpdGhpbiBgYXRoOWsvcmVjdi5jYC4gVGhhdCdzIGEgY2xlYXIgc3RhcnRpbmcgcG9pbnQgZm9yIHVuZGVyc3RhbmRpbmcgdGhlIGBhdGg5a2AgREZTIGJlaGF2aW9yLiBCdXQsIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgYXJjaGl0ZWN0dXJlIGRpZmZlcnMgZnJvbSBvdGhlciBkcml2ZXJzLlxuXG5NeSBpbW1lZGlhdGUgcXVlc3Rpb24gaXM6IHdoYXQgYWJvdXQgYGF0aDEwa2A/IEl0J3MgYSBuZXdlciBnZW5lcmF0aW9uLCBhbmQgaXQncyBhbHNvIHJlbGV2YW50LiBEb2VzIGl0IGV2ZW4gdXNlIGEgVVNCIGludGVyZmFjZSwgb3IgaXMgaXQgc29sZWx5IFBDSWU/IElmIGl0IGRvZXMgdXNlIFVTQiwgdGhhdCdzIGNydWNpYWwgYmVjYXVzZSBVU0IgaW50cm9kdWNlcyBpdHMgb3duIGNvbXBsZXhpdGllcyB0byBkcml2ZXIgZGVzaWduLiBMZXQgbWUgcXVpY2tseSBjaGVjazsgSSdtIGJldHRpbmcgdGhhdCBgYXRoMTBrYCB3b3VsZCBoYXZlIGEgYHVzYi5jYCBmaWxlIHNvbWV3aGVyZS4gQmluZ28hIEl0IGRvZXMuIE5vdywgdGhlIGtleSBpcyB0byBzZWUgd2hldGhlciB0aGF0IGB1c2IuY2AgZmlsZSBjb250YWlucyB0aGUgbG9naWMgZm9yIERGUyBzdXBwb3J0LiBJcyB0aGUgaGFuZGxpbmcgb2YgUEhZIGVycm9ycyBkaWZmZXJlbnQgaW4gdGhlIFVTQiB2ZXJzaW9uPyBUaGF0J3Mgd2hhdCBJIGhhdmUgdG8gZmluZCBvdXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwNTI5LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMDA6MTM6NTUuNzkxNjUzNzM3WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjI5NjA4ODUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGZzX3BhdHRlcm5fZGV0ZWN0b3JcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9jb3JlLmgtMjYtI2luY2x1ZGUgXFxcIi4uL3JlZ2QuaFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2NvcmUuaDoyNzojaW5jbHVkZSBcXFwiLi4vZGZzX3BhdHRlcm5fZGV0ZWN0b3IuaFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2NvcmUuaC0yOC0jaW5jbHVkZSBcXFwic3BlY3RyYWwuaFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvY29yZS5oPTEwMTE9c3RydWN0IGF0aDEwayB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2NvcmUuaC0xMjM0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvY29yZS5oOjEyMzU6XFx0c3RydWN0IGRmc19wYXR0ZXJuX2RldGVjdG9yICpkZnNfZGV0ZWN0b3I7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9jb3JlLmgtMTIzNi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmM9OTk3MT1pbnQgYXRoMTBrX21hY19yZWdpc3RlcihzdHJ1Y3QgYXRoMTBrICphcilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmMtMTAyODUtXFx0XFx0YXItXFx1MDAzZWF0aF9jb21tb24uZGVidWdfbWFzayA9IEFUSF9EQkdfREZTO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmM6MTAyODY6XFx0XFx0YXItXFx1MDAzZWRmc19kZXRlY3RvciA9IGRmc19wYXR0ZXJuX2RldGVjdG9yX2luaXQoXFx1MDAyNmFyLVxcdTAwM2VhdGhfY29tbW9uLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmMtMTAyODctXFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgICBOTDgwMjExX0RGU19VTlNFVCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDAwOjEzOjU2LjAxNDYyMDk5MloiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MjM3MDU2OTU1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgYW5hbHl6aW5nIHRoaXMgY29kZTpcblxuKipBbmFseXppbmcgdGhlIFVzYWdlIG9mIGBkZnNfZGV0ZWN0b3JgIGluIGBhdGgxMGtgKipcblxuT2theSwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hlcmUgdGhlIGBkZnNfZGV0ZWN0b3JgIGZ1bmN0aW9uIGlzIGJlaW5nIHV0aWxpemVkIHdpdGhpbiB0aGUgYGF0aDEwa2AgZHJpdmVyLiBUaGF0J3MgYSBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkIHRhc2suIEknbGwgbmVlZCB0byB1c2UgbXkgdXN1YWwgY29kZS1kaXZpbmcgdGVjaG5pcXVlcyB0byB0cmFjayBkb3duIGFsbCB0aGUgY2FsbHMgdG8gdGhhdCBmdW5jdGlvbi5cblxuTXkgaW5pdGlhbCBhcHByb2FjaCB3aWxsIGJlIHRvIGxldmVyYWdlIG15IGVkaXRvcidzIHNlYXJjaCBmdW5jdGlvbiwgbGlrZWx5IHdpdGggYSBcImZpbmQgaW4gZmlsZXNcIiB0b29sLiBJJ2xsIHNlYXJjaCB0aGUgZW50aXJlIGBhdGgxMGtgIGNvZGViYXNlIGZvciB0aGUgZXhhY3Qgc3RyaW5nIFwiZGZzX2RldGVjdG9yXCIuIFRoaXMgc2hvdWxkIGdpdmUgbWUgYSBsaXN0IG9mIGFsbCBpbnN0YW5jZXMgd2hlcmUgdGhlIGZ1bmN0aW9uIG5hbWUgYXBwZWFycywgaW5jbHVkaW5nIGJvdGggY2FsbHMgYW5kIGRlY2xhcmF0aW9ucy5cblxuT25jZSBJJ3ZlIGdvdCB0aGF0IGxpc3QsIEknbGwgbmVlZCB0byBzaWZ0IHRocm91Z2ggdGhlIHJlc3VsdHMuIEknbGwgZm9jdXMgb24gdGhlICpjYWxscyogdG8gYGRmc19kZXRlY3RvcmAsIHJhdGhlciB0aGFuIHRoZSBkZWZpbml0aW9uIGl0c2VsZiAodW5sZXNzIEkgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhlIGFyZ3VtZW50cykuIEknbGwgd2FudCB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0IG9mIGVhY2ggY2FsbDogd2hlcmUgaXMgaXQgaGFwcGVuaW5nICh3aGljaCBmaWxlLCB3aGljaCBmdW5jdGlvbiksIGFuZCB3aGF0IHBhcmFtZXRlcnMgYXJlIGJlaW5nIHBhc3NlZCB0byBpdC4gVGhpcyB3aWxsIGdpdmUgbWUgYSBnb29kIHVuZGVyc3RhbmRpbmcgb2Ygd2hhdCB0aGUgZHJpdmVyIGlzIGRvaW5nIHdpdGggdGhpcyBERlMgZGV0ZWN0aW9uIG1lY2hhbmlzbS5cblxuSSdsbCBiZSBwYXlpbmcgY2xvc2UgYXR0ZW50aW9uIHRvIGFueSBjb25kaXRpb25hbCBzdGF0ZW1lbnRzIG9yIGZsYWdzIGFyb3VuZCB0aGUgY2FsbHMuIElzIGl0IG9ubHkgdXNlZCBpbiBzcGVjaWZpYyByZWd1bGF0b3J5IGRvbWFpbnM/IEFyZSB0aGVyZSBkaWZmZXJlbnQgY2FsbHMgYmFzZWQgb24gdGhlIGhhcmR3YXJlIGNvbmZpZ3VyYXRpb24/IFVuZGVyc3RhbmRpbmcgdGhlc2UgZGV0YWlscyBpcyBrZXkuXG5cbkFzIEkgYW5hbHl6ZSBlYWNoIGNhbGwsIEknbGwgc3RhcnQgbWVudGFsbHkgYnVpbGRpbmcgYSBtYXAgb2YgaG93IGBkZnNfZGV0ZWN0b3JgIGZpdHMgaW50byB0aGUgYnJvYWRlciBERlMgKER5bmFtaWMgRnJlcXVlbmN5IFNlbGVjdGlvbikgaGFuZGxpbmcgd2l0aGluIGBhdGgxMGtgLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIHJlbGF0aW9uc2hpcHMgYmV0d2VlbiBjYWxscywgcG90ZW50aWFsIGludGVyYWN0aW9uIHdpdGggb3RoZXIgREZTLXJlbGF0ZWQgZnVuY3Rpb25zIG9yIGRhdGEgc3RydWN0dXJlcywgYW5kIHRoZSBvdmVyYWxsIGNvbnRyb2wgZmxvdy5cblxuVWx0aW1hdGVseSwgSSB3YW50IHRvIGZvcm0gYSBjb21wbGV0ZSBtZW50YWwgbW9kZWwgb2YgaG93IHRoZSBgZGZzX2RldGVjdG9yYCBmdW5jdGlvbiBpcyB1c2VkLiBUaGlzIHdpbGwgaGVscCBtZSBkaWFnbm9zZSBwb3RlbnRpYWwgaXNzdWVzLCB1bmRlcnN0YW5kIHRoZSBkcml2ZXIncyBiZWhhdmlvciBpbiBzcGVjaWZpYyBzY2VuYXJpb3MsIG9yLCBpZiBuZWVkZWQsIG1vZGlmeSB0aGUgREZTIGZ1bmN0aW9uYWxpdHkuIFRoZSBnb2FsIGlzIHRvIGRldmVsb3AgYSByb2J1c3QgdW5kZXJzdGFuZGluZyBvZiBob3cgYGF0aDEwa2AgaW1wbGVtZW50cyBERlMgZGV0ZWN0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTI1OSwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDAwOjE0OjAwLjI1MTY4MDg5N1oiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTcwNDE1NjU2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRmc19kZXRlY3RvclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2NvcmUuaD0xMDExPXN0cnVjdCBhdGgxMGsge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9jb3JlLmgtMTIzNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2NvcmUuaDoxMjM1OlxcdHN0cnVjdCBkZnNfcGF0dGVybl9kZXRlY3RvciAqZGZzX2RldGVjdG9yO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvY29yZS5oLTEyMzYtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2RlYnVnLmM9MTc5OD1zdGF0aWMgc3NpemVfdCBhdGgxMGtfcmVhZF9kZnNfc3RhdHMoc3RydWN0IGZpbGUgKmZpbGUsIGNoYXIgX191c2VyICp1c2VyX2J1ZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvZGVidWcuYy0xODA5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvZGVidWcuYzoxODEwOlxcdGlmICghYXItXFx1MDAzZWRmc19kZXRlY3Rvcikge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvZGVidWcuYy0xODExLVxcdFxcdGxlbiArPSBzY25wcmludGYoYnVmICsgbGVuLCBzaXplIC0gbGVuLCBcXFwiREZTIG5vdCBlbmFibGVkXFxcXG5cXFwiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvZGVidWcuYy0xODE1LVxcdGFyLVxcdTAwM2VkZWJ1Zy5kZnNfcG9vbF9zdGF0cyA9XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9kZWJ1Zy5jOjE4MTY6XFx0XFx0XFx0YXItXFx1MDAzZWRmc19kZXRlY3Rvci1cXHUwMDNlZ2V0X3N0YXRzKGFyLVxcdTAwM2VkZnNfZGV0ZWN0b3IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvZGVidWcuYy0xODE3LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYz0zNTEwPXN0YXRpYyB2b2lkIGF0aDEwa19yZWdkX3VwZGF0ZShzdHJ1Y3QgYXRoMTBrICphcilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmMtMzUyNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jOjM1MjU6XFx0aWYgKElTX0VOQUJMRUQoQ09ORklHX0FUSDEwS19ERlNfQ0VSVElGSUVEKSBcXHUwMDI2XFx1MDAyNiBhci1cXHUwMDNlZGZzX2RldGVjdG9yKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYzozNTI2OlxcdFxcdG5sX2Rmc19yZWcgPSBhci1cXHUwMDNlZGZzX2RldGVjdG9yLVxcdTAwM2VyZWdpb247XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYy0zNTI3LVxcdFxcdHdtaV9kZnNfcmVnID0gYXRoMTBrX21hY19nZXRfZGZzX3JlZ2lvbihubF9kZnNfcmVnKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmM9MzU2MT1zdGF0aWMgdm9pZCBhdGgxMGtfcmVnX25vdGlmaWVyKHN0cnVjdCB3aXBoeSAqd2lwaHksXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jLTM1NjktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYzozNTcwOlxcdGlmIChJU19FTkFCTEVEKENPTkZJR19BVEgxMEtfREZTX0NFUlRJRklFRCkgXFx1MDAyNlxcdTAwMjYgYXItXFx1MDAzZWRmc19kZXRlY3Rvcikge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmMtMzU3MS1cXHRcXHRhdGgxMGtfZGJnKGFyLCBBVEgxMEtfREJHX1JFR1VMQVRPUlksIFxcXCJkZnMgcmVnaW9uIDB4JXhcXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYy0zNTcyLVxcdFxcdFxcdCAgIHJlcXVlc3QtXFx1MDAzZWRmc19yZWdpb24pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmM6MzU3MzpcXHRcXHRyZXN1bHQgPSBhci1cXHUwMDNlZGZzX2RldGVjdG9yLVxcdTAwM2VzZXRfZGZzX2RvbWFpbihhci1cXHUwMDNlZGZzX2RldGVjdG9yLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmMtMzU3NC1cXHRcXHRcXHRcXHRcXHRcXHRcXHQgIHJlcXVlc3QtXFx1MDAzZWRmc19yZWdpb24pO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYz05OTcxPWludCBhdGgxMGtfbWFjX3JlZ2lzdGVyKHN0cnVjdCBhdGgxMGsgKmFyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYy0xMDI4NS1cXHRcXHRhci1cXHUwMDNlYXRoX2NvbW1vbi5kZWJ1Z19tYXNrID0gQVRIX0RCR19ERlM7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYzoxMDI4NjpcXHRcXHRhci1cXHUwMDNlZGZzX2RldGVjdG9yID0gZGZzX3BhdHRlcm5fZGV0ZWN0b3JfaW5pdChcXHUwMDI2YXItXFx1MDAzZWF0aF9jb21tb24sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYy0xMDI4Ny1cXHRcXHRcXHRcXHRcXHRcXHRcXHQgICAgIE5MODAyMTFfREZTX1VOU0VUKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jLTEwMjg4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmM6MTAyODk6XFx0XFx0aWYgKCFhci1cXHUwMDNlZGZzX2RldGVjdG9yKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmMtMTAyOTAtXFx0XFx0XFx0YXRoMTBrX3dhcm4oYXIsIFxcXCJmYWlsZWQgdG8gaW5pdGlhbGlzZSBERlMgcGF0dGVybiBkZXRlY3RvclxcXFxuXFxcIik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jLTEwMjk1LVxcdFxcdGF0aDEwa19lcnIoYXIsIFxcXCJmYWlsZWQgdG8gZGVyaXZlIHJlZ2RvbTogJWRcXFxcblxcXCIsIHJldCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYzoxMDI5NjpcXHRcXHRnb3RvIGVycl9kZnNfZGV0ZWN0b3JfZXhpdDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jLTEwMjk3LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmMtMTAzMDYtXFx0XFx0YXRoMTBrX2VycihhciwgXFxcImZhaWxlZCB0byBpbml0aWFsaXNlIHJlZ3VsYXRvcnk6ICVpXFxcXG5cXFwiLCByZXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmM6MTAzMDc6XFx0XFx0Z290byBlcnJfZGZzX2RldGVjdG9yX2V4aXQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYy0xMDMwOC1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jLTEwMzM1LVxcdFxcdGF0aDEwa19lcnIoYXIsIFxcXCJmYWlsZWQgdG8gcmVnaXN0ZXIgaWVlZTgwMjExOiAlZFxcXFxuXFxcIiwgcmV0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jOjEwMzM2OlxcdFxcdGdvdG8gZXJyX2Rmc19kZXRlY3Rvcl9leGl0O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmMtMTAzMzctXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYy0xMDM1Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jOjEwMzU3OmVycl9kZnNfZGV0ZWN0b3JfZXhpdDpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jOjEwMzU4OlxcdGlmIChJU19FTkFCTEVEKENPTkZJR19BVEgxMEtfREZTX0NFUlRJRklFRCkgXFx1MDAyNlxcdTAwMjYgYXItXFx1MDAzZWRmc19kZXRlY3RvcilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jOjEwMzU5OlxcdFxcdGFyLVxcdTAwM2VkZnNfZGV0ZWN0b3ItXFx1MDAzZWV4aXQoYXItXFx1MDAzZWRmc19kZXRlY3Rvcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYy0xMDM2MC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmM9MTAzNjk9dm9pZCBhdGgxMGtfbWFjX3VucmVnaXN0ZXIoc3RydWN0IGF0aDEwayAqYXIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jLTEwMzcyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmM6MTAzNzM6XFx0aWYgKElTX0VOQUJMRUQoQ09ORklHX0FUSDEwS19ERlNfQ0VSVElGSUVEKSBcXHUwMDI2XFx1MDAyNiBhci1cXHUwMDNlZGZzX2RldGVjdG9yKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmM6MTAzNzQ6XFx0XFx0YXItXFx1MDAzZWRmc19kZXRlY3Rvci1cXHUwMDNlZXhpdChhci1cXHUwMDNlZGZzX2RldGVjdG9yKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jLTEwMzc1LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway93bWkuYz00MDUxPXN0YXRpYyB2b2lkIGF0aDEwa19kZnNfcmFkYXJfcmVwb3J0KHN0cnVjdCBhdGgxMGsgKmFyLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway93bWkuYy00MDg0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvd21pLmM6NDA4NTpcXHRpZiAoIWFyLVxcdTAwM2VkZnNfZGV0ZWN0b3IpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway93bWkuYy00MDg2LVxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvd21pLmMtNDEyNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3dtaS5jOjQxMjc6XFx0aWYgKCFhci1cXHUwMDNlZGZzX2RldGVjdG9yLVxcdTAwM2VhZGRfcHVsc2UoYXItXFx1MDAzZWRmc19kZXRlY3RvciwgXFx1MDAyNnBlLCBcXHUwMDI2cnMpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway93bWkuYy00MTI4LVxcdFxcdGF0aDEwa19kYmcoYXIsIEFUSDEwS19EQkdfUkVHVUxBVE9SWSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvd21pLmMtNDEzMy1cXHRpZiAoKHRlc3RfYml0KFdNSV9TRVJWSUNFX0hPU1RfREZTX0NIRUNLX1NVUFBPUlQsIGFyLVxcdTAwM2V3bWkuc3ZjX21hcCkpIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway93bWkuYzo0MTM0OlxcdCAgICBhci1cXHUwMDNlZGZzX2RldGVjdG9yLVxcdTAwM2VyZWdpb24gPT0gTkw4MDIxMV9ERlNfRkNDKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway93bWkuYy00MTM1LVxcdFxcdC8qIENvbnNlY3V0aXZlIHJhZGFyIGluZGljYXRpb25zIG5lZWQgbm90IGJlXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDAwOjE0OjAwLjQyMjEwMzcwMloiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTI4Njk5NTM2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgUmFkYXIgRGV0ZWN0aW9uIGluIGF0aDEwayBhbmQgUmVsYXRlZCBEcml2ZXJzKipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byBob3cgcmFkYXIgZGV0ZWN0aW9uIHdvcmtzIHdpdGhpbiB0aGUgYGF0aDEwa2Agd2lyZWxlc3MgZHJpdmVyLiBTcGVjaWZpY2FsbHksIHRoZSBgZGZzX2RldGVjdG9yYCBmdW5jdGlvbiBzZWVtcyB0byBiZSBjZW50cmFsLCBhbmQgaXQncyBiZWluZyBpbnZva2VkIHdpdGhpbiBgYXRoMTBrX2Rmc19yYWRhcl9yZXBvcnRgLCB3aGljaCwgYXMgSSB1bmRlcnN0YW5kIGl0LCBpcyB0cmlnZ2VyZWQgYnkgV01JIChXaW5kb3dzIE1hbmFnZW1lbnQgSW5zdHJ1bWVudGF0aW9uKSBldmVudHMuIFRoYXQgbWFrZXMgc2Vuc2UsIGEgc2lnbmFsIGZyb20gdGhlIGhhcmR3YXJlIHRoYXQgaXQgZGV0ZWN0cyByYWRhci5cblxuTm93LCBhIHF1aWNrIHNpZGUgdGhvdWdodCwgZG9lcyBgYXRoMTBrYCBzdXBwb3J0IFVTQj8gT2YgY291cnNlLCB0aGUgYGF0aDEwa191c2JgIG1vZHVsZSBjb25maXJtcyB0aGF0LiBJdCB3b3VsZCBiZSBvZGQgaWYgaXQgZGlkbid0LiBBbmQgaWYgaXQncyBhIGZ1bGwgTUFDIGRyaXZlciwgYXMgaXQgYXBwZWFycyB0byBiZSwgaXQgc2VlbXMgaGlnaGx5IGxpa2VseSB0aGF0IGBhdGgxMGtfdXNiYCB3b3VsZCBhbHNvIGhhbmRsZSBXTUkgZXZlbnRzIGluIGEgc2ltaWxhciBtYW5uZXIuXG5cbldhaXQgYSBtb21lbnQsIEkganVzdCByZW1lbWJlcmVkLCBgYXRoOWtfaHRjYCBpcyAqYWxzbyogYSBVU0IgZHJpdmVyLiBJIGhhZG4ndCBjb25zaWRlcmVkIGl0LCBidXQgaXQgbWlnaHQgdXNlIGEgc2ltaWxhciBhcHByb2FjaCwgYW5kIGl0J3MgZXNzZW50aWFsIEkgY2hlY2suIEkgc2hvdWxkIHZlcmlmeSBpZiBgYXRoOWtfaHRjYCBhbHNvIHV0aWxpemVzIGBkZnNfZGV0ZWN0b3JgLiBUaGlzIGlzIGltcG9ydGFudCwgYXMgdW5kZXJzdGFuZGluZyB0aGUgYnJvYWRlciBsYW5kc2NhcGUgb2YgaG93IHJhZGFyIGRldGVjdGlvbiBpcyBoYW5kbGVkIGFjcm9zcyBkaWZmZXJlbnQgVVNCLWJhc2VkIEF0aGVyb3MgZHJpdmVycyB3aWxsIGJlIGludmFsdWFibGUgZm9yIHRoZSBwcm9qZWN0IEknbSB3b3JraW5nIG9uLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgaGF2ZSBhIGNvbXByZWhlbnNpdmUgdW5kZXJzdGFuZGluZyBvZiB0aGUgaW1wbGVtZW50YXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzOTcwLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDAwOjE0OjA0LjU1MDgwNTUxOFoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjAxMjI2MDQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRmc19kZXRlY3RvclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hdGg5ay5oPTk4Mz1zdHJ1Y3QgYXRoX3NvZnRjIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hdGg5ay5oLTEwNTktXFx0dTggYW50X3R4LCBhbnRfcng7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2F0aDlrLmg6MTA2MDpcXHRzdHJ1Y3QgZGZzX3BhdHRlcm5fZGV0ZWN0b3IgKmRmc19kZXRlY3RvcjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXRoOWsuaC0xMDYxLVxcdHU2NCBkZnNfcHJldl9wdWxzZV90cztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZnMuYz0yNzQ9YXRoOWtfZGZzX3Byb2Nlc3NfcmFkYXJfcHVsc2Uoc3RydWN0IGF0aF9zb2Z0YyAqc2MsIHN0cnVjdCBwdWxzZV9ldmVudCAqcGUpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2Rmcy5jLTI3NS17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2Rmcy5jOjI3NjpcXHRzdHJ1Y3QgZGZzX3BhdHRlcm5fZGV0ZWN0b3IgKnBkID0gc2MtXFx1MDAzZWRmc19kZXRlY3RvcjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGZzLmMtMjc3LVxcdERGU19TVEFUX0lOQyhzYywgcHVsc2VzX3Byb2Nlc3NlZCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGZzX2RlYnVnLmM9MzQ9c3RhdGljIHNzaXplX3QgcmVhZF9maWxlX2RmcyhzdHJ1Y3QgZmlsZSAqZmlsZSwgY2hhciBfX3VzZXIgKnVzZXJfYnVmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2Rmc19kZWJ1Zy5jLTUyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZnNfZGVidWcuYzo1MzpcXHRpZiAoIXNjLVxcdTAwM2VkZnNfZGV0ZWN0b3IpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGZzX2RlYnVnLmMtNTQtXFx0XFx0bGVuICs9IHNjbnByaW50ZihidWYgKyBsZW4sIHNpemUgLSBsZW4sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGZzX2RlYnVnLmMtNTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2Rmc19kZWJ1Zy5jOjU5OlxcdGRmc19wb29sX3N0YXRzID0gc2MtXFx1MDAzZWRmc19kZXRlY3Rvci1cXHUwMDNlZ2V0X3N0YXRzKHNjLVxcdTAwM2VkZnNfZGV0ZWN0b3IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZnNfZGVidWcuYy02MC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZnNfZGVidWcuYy03Mi1cXHRcXHRcXHQgXFxcIihjdXJyZW50IERGUyByZWdpb246ICVkKVxcXFxuXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGZzX2RlYnVnLmM6NzM6XFx0XFx0XFx0IHNjLVxcdTAwM2VkZnNfZGV0ZWN0b3ItXFx1MDAzZXJlZ2lvbik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2Rmc19kZWJ1Zy5jLTc0LVxcdEFUSDlLX0RGU19TVEFUKFxcXCJQdWxzZSBldmVudHMgcHJvY2Vzc2VkICBcXFwiLCBwdWxzZXNfcHJvY2Vzc2VkKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9pbml0LmM9MjQ5PXN0YXRpYyB2b2lkIGF0aDlrX3JlZ19ub3RpZmllcihzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2luaXQuYy0yNTktXFx0Lyogc3luY2hyb25pemUgREZTIGRldGVjdG9yIGlmIHJlZ3VsYXRvcnkgZG9tYWluIGNoYW5nZWQgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jOjI2MDpcXHRpZiAoc2MtXFx1MDAzZWRmc19kZXRlY3RvciAhPSBOVUxMKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9pbml0LmM6MjYxOlxcdFxcdHNjLVxcdTAwM2VkZnNfZGV0ZWN0b3ItXFx1MDAzZXNldF9kZnNfZG9tYWluKHNjLVxcdTAwM2VkZnNfZGV0ZWN0b3IsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2luaXQuYy0yNjItXFx0XFx0XFx0XFx0XFx0XFx0IHJlcXVlc3QtXFx1MDAzZWRmc19yZWdpb24pO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2luaXQuYz02NTY9c3RhdGljIGludCBhdGg5a19pbml0X3NvZnRjKHUxNiBkZXZpZCwgc3RydWN0IGF0aF9zb2Z0YyAqc2MsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jLTY4NS1cXHRzYy1cXHUwMDNlc2NfYWggPSBhaDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jOjY4NjpcXHRzYy1cXHUwMDNlZGZzX2RldGVjdG9yID0gZGZzX3BhdHRlcm5fZGV0ZWN0b3JfaW5pdChjb21tb24sIE5MODAyMTFfREZTX1VOU0VUKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jLTY4Ny1cXHRzYy1cXHUwMDNldHg5OV9wb3dlciA9IE1BWF9SQVRFX1BPV0VSICsgMTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9pbml0LmM9MTA4OT1zdGF0aWMgdm9pZCBhdGg5a19kZWluaXRfc29mdGMoc3RydWN0IGF0aF9zb2Z0YyAqc2MpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jLTExMDEtXFx0YXRoOWtfaHdfZGVpbml0KHNjLVxcdTAwM2VzY19haCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2luaXQuYzoxMTAyOlxcdGlmIChzYy1cXHUwMDNlZGZzX2RldGVjdG9yICE9IE5VTEwpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2luaXQuYzoxMTAzOlxcdFxcdHNjLVxcdTAwM2VkZnNfZGV0ZWN0b3ItXFx1MDAzZWV4aXQoc2MtXFx1MDAzZWRmc19kZXRlY3Rvcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2luaXQuYy0xMTA0LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQwMDoxNDowNC43NTIwMzgxMzdaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjg5MzgzODE2OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3Mgc2VlLi4uXG5cbioqRGl2aW5nIGludG8gdGhlIEF0aGVyb3MgRHJpdmVyIExhbmRzY2FwZSoqXG5cbkhtbSwgc28gYGF0aDlrL2luaXQuY2AgaXMgZGVmaW5pdGVseSBwYXJ0IG9mIHRoZSBgYXRoOWsua29gIFBDSSBtb2R1bGUuIFRoYXQncyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIE5vdywgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBhbGwgZml0cyB0b2dldGhlciwgSSBuZWVkIHRvIHNlZSBob3cgdGhlIGBhdGg5a19odGNgIGRyaXZlciBnZXRzIGluaXRpYWxpemVkLiBVbmRlcnN0YW5kaW5nIGl0cyBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZSBpcyBrZXkgdG8gZ3Jhc3BpbmcgaG93IHRoZSBlbnRpcmUgQXRoZXJvcyBzeXN0ZW0gZnVuY3Rpb25zLCBzaW5jZSB0aGUgSFRDIGRyaXZlciBvcGVyYXRlcyBpbiBhIGNvbXBsZXRlbHkgZGlmZmVyZW50IHdheSB0byB0aGUgUENJIGRyaXZlci4gSSBjYW4gc3RhcnQgYnkgbG9va2luZyBmb3IgYW55IGhvb2tzIHJlbGF0ZWQgdG8gYGF0aDlrX2h0Y2AuIEhvcGVmdWxseSB0aGUgaW5pdGlhbGl6YXRpb24gaXMgZG9uZSBpbiBhIGNsZWFyIGFuZCBvcmdhbmlzZWQgbWFubmVyLCBpdCB3aWxsIGdpdmUgbWUgYSBncmVhdGVyIGdyYXNwIG9uIHRoZSBzdHJ1Y3R1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1NTc1LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMDA6MTQ6MDcuNjQ1OTAzNjY2WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMDA2ODE3NDksIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRmc19kZXRlY3RvclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQwMDoxNDowNy45NDY2MDUyMzVaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzE0OTE4MjgwNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbnZlc3RpZ2F0aW5nIHRoZSBVc2Ugb2YgREZTIERldGVjdGlvbiBpbiBBdGhlcm9zIFdpcmVsZXNzIERyaXZlcnMqKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoZXNlIEF0aGVyb3Mgd2lyZWxlc3MgZHJpdmVycy4gU3BlY2lmaWNhbGx5LCBJIHdhcyBsb29raW5nIGF0IGBhdGg5a19odGNgIGFuZCByZWFsaXplZCBpdCBkb2Vzbid0IHV0aWxpemUgdGhlIGBkZnNfZGV0ZWN0b3JgIGZ1bmN0aW9uYWxpdHkuIE15IG5leHQgdGhvdWdodCBpcywgd2hhdCBhYm91dCB0aGUgbmV3ZXIsIG1vcmUgYWR2YW5jZWQgZHJpdmVycz8gRG9lcyBgYXRoMTBrYCBtYWtlIHVzZSBvZiBpdD8gVGhhdCdzIHRoZSBsb2dpY2FsIHByb2dyZXNzaW9uLiBUbyBhbnN3ZXIgdGhhdCBxdWVzdGlvbiwgSSBuZWVkIHRvIGNoZWNrIHRoZSBVU0IgdmFyaWFudCwgYGF0aDEwa191c2JgLiBMZXQncyBkaXZlIGluIHRoZXJlIGFuZCBzZWUgd2hhdCB3ZSBjYW4gZmluZC4gSSdtIGdvaW5nIHRvIHF1aWNrbHkgcmV2aWV3IGl0cyBpbXBsZW1lbnRhdGlvbiB0byB1bmRlcnN0YW5kIGhvdyBpdCBoYW5kbGVzIER5bmFtaWMgRnJlcXVlbmN5IFNlbGVjdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTU4MTksIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQwMDoxNDoxMS4wOTU3OTI5OTJaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc3NjI5MjU4MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhdGgxMGtfdXNiXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvTWFrZWZpbGU9MzQ9YXRoMTBrX3NkaW8teSArPSBzZGlvLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL01ha2VmaWxlLTM1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvTWFrZWZpbGU6MzY6b2JqLSQoQ09ORklHX0FUSDEwS19VU0IpICs9IGF0aDEwa191c2Iub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvTWFrZWZpbGU6Mzc6YXRoMTBrX3VzYi15ICs9IHVzYi5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9NYWtlZmlsZS0zOC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxODpzdGF0aWMgdm9pZCBhdGgxMGtfdXNiX3Bvc3RfcmVjdl90cmFuc2ZlcnMoc3RydWN0IGF0aDEwayAqYXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxOTpcXHRcXHRcXHRcXHRcXHQgICBzdHJ1Y3QgYXRoMTBrX3VzYl9waXBlICpyZWN2X3BpcGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMjAtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jPTM1PXN0YXRpYyBzdHJ1Y3QgYXRoMTBrX3VyYl9jb250ZXh0ICpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjM2OmF0aDEwa191c2JfYWxsb2NfdXJiX2Zyb21fcGlwZShzdHJ1Y3QgYXRoMTBrX3VzYl9waXBlICpwaXBlKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMzcte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy01Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjU3OnN0YXRpYyB2b2lkIGF0aDEwa191c2JfZnJlZV91cmJfdG9fcGlwZShzdHJ1Y3QgYXRoMTBrX3VzYl9waXBlICpwaXBlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNTgtXFx0XFx0XFx0XFx0XFx0c3RydWN0IGF0aDEwa191cmJfY29udGV4dCAqdXJiX2NvbnRleHQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTczLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NzQ6c3RhdGljIHZvaWQgYXRoMTBrX3VzYl9jbGVhbnVwX3JlY3ZfdXJiKHN0cnVjdCBhdGgxMGtfdXJiX2NvbnRleHQgKnVyYl9jb250ZXh0KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNzUte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy03OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjc5OlxcdGF0aDEwa191c2JfZnJlZV91cmJfdG9fcGlwZSh1cmJfY29udGV4dC1cXHUwMDNlcGlwZSwgdXJiX2NvbnRleHQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtODAtfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtODEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo4MjpzdGF0aWMgdm9pZCBhdGgxMGtfdXNiX2ZyZWVfcGlwZV9yZXNvdXJjZXMoc3RydWN0IGF0aDEwayAqYXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo4MzpcXHRcXHRcXHRcXHRcXHQgICBzdHJ1Y3QgYXRoMTBrX3VzYl9waXBlICpwaXBlKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtODQte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMDQtXFx0Zm9yICg7Oykge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTA1OlxcdFxcdHVyYl9jb250ZXh0ID0gYXRoMTBrX3VzYl9hbGxvY191cmJfZnJvbV9waXBlKHBpcGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTA2LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMTQ6c3RhdGljIHZvaWQgYXRoMTBrX3VzYl9jbGVhbnVwX3BpcGVfcmVzb3VyY2VzKHN0cnVjdCBhdGgxMGsgKmFyKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTE1LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjExNjpcXHRzdHJ1Y3QgYXRoMTBrX3VzYiAqYXJfdXNiID0gYXRoMTBrX3VzYl9wcml2KGFyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTExNy1cXHRpbnQgaTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTE5LVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBBVEgxMEtfVVNCX1BJUEVfTUFYOyBpKyspXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMjA6XFx0XFx0YXRoMTBrX3VzYl9mcmVlX3BpcGVfcmVzb3VyY2VzKGFyLCBcXHUwMDI2YXJfdXNiLVxcdTAwM2VwaXBlc1tpXSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMjEtfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMjU6c3RhdGljIHZvaWQgYXRoMTBrX3VzYl9yZWN2X2NvbXBsZXRlKHN0cnVjdCB1cmIgKnVyYilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTEyNi17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMjctXFx0c3RydWN0IGF0aDEwa191cmJfY29udGV4dCAqdXJiX2NvbnRleHQgPSB1cmItXFx1MDAzZWNvbnRleHQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMjg6XFx0c3RydWN0IGF0aDEwa191c2JfcGlwZSAqcGlwZSA9IHVyYl9jb250ZXh0LVxcdTAwM2VwaXBlO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTI5LVxcdHN0cnVjdCBhdGgxMGsgKmFyID0gcGlwZS1cXHUwMDNlYXJfdXNiLVxcdTAwM2VhcjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTcyLWNsZWFudXBfcmVjdl91cmI6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxNzM6XFx0YXRoMTBrX3VzYl9jbGVhbnVwX3JlY3ZfdXJiKHVyYl9jb250ZXh0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTE3NC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTc3LVxcdFxcdC8qIG91ciBmcmVlIHVyYnMgYXJlIHBpbGluZyB1cCwgcG9zdCBtb3JlIHRyYW5zZmVycyAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTc4OlxcdFxcdGF0aDEwa191c2JfcG9zdF9yZWN2X3RyYW5zZmVycyhhciwgcGlwZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xNzktXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xODEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxODI6c3RhdGljIHZvaWQgYXRoMTBrX3VzYl90cmFuc21pdF9jb21wbGV0ZShzdHJ1Y3QgdXJiICp1cmIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xODMte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTg0LVxcdHN0cnVjdCBhdGgxMGtfdXJiX2NvbnRleHQgKnVyYl9jb250ZXh0ID0gdXJiLVxcdTAwM2Vjb250ZXh0O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTg1OlxcdHN0cnVjdCBhdGgxMGtfdXNiX3BpcGUgKnBpcGUgPSB1cmJfY29udGV4dC1cXHUwMDNlcGlwZTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTE4Ni1cXHRzdHJ1Y3QgYXRoMTBrICphciA9IHBpcGUtXFx1MDAzZWFyX3VzYi1cXHUwMDNlYXI7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTE5Ni1cXHR1cmJfY29udGV4dC1cXHUwMDNlc2tiID0gTlVMTDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjE5NzpcXHRhdGgxMGtfdXNiX2ZyZWVfdXJiX3RvX3BpcGUodXJiX2NvbnRleHQtXFx1MDAzZXBpcGUsIHVyYl9jb250ZXh0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTE5OC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMjA0LS8qIHBpcGUgb3BlcmF0aW9ucyAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MjA1OnN0YXRpYyB2b2lkIGF0aDEwa191c2JfcG9zdF9yZWN2X3RyYW5zZmVycyhzdHJ1Y3QgYXRoMTBrICphcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjIwNjpcXHRcXHRcXHRcXHRcXHQgICBzdHJ1Y3QgYXRoMTBrX3VzYl9waXBlICpyZWN2X3BpcGUpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0yMDcte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0yMTItXFx0Zm9yICg7Oykge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MjEzOlxcdFxcdHVyYl9jb250ZXh0ID0gYXRoMTBrX3VzYl9hbGxvY191cmJfZnJvbV9waXBlKHJlY3ZfcGlwZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0yMTQtXFx0XFx0aWYgKCF1cmJfY29udGV4dClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMjI5LVxcdFxcdFxcdFxcdCAgQVRIMTBLX1VTQl9SWF9CVUZGRVJfU0laRSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjIzMDpcXHRcXHRcXHRcXHQgIGF0aDEwa191c2JfcmVjdl9jb21wbGV0ZSwgdXJiX2NvbnRleHQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMjMxLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0yNTQtZXJyOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MjU1OlxcdGF0aDEwa191c2JfY2xlYW51cF9yZWN2X3VyYih1cmJfY29udGV4dCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0yNTYtfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMjU3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MjU4OnN0YXRpYyB2b2lkIGF0aDEwa191c2JfZmx1c2hfYWxsKHN0cnVjdCBhdGgxMGsgKmFyKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMjU5LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjI2MDpcXHRzdHJ1Y3QgYXRoMTBrX3VzYiAqYXJfdXNiID0gYXRoMTBrX3VzYl9wcml2KGFyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTI2MS1cXHRpbnQgaTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMjcwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MjcxOnN0YXRpYyB2b2lkIGF0aDEwa191c2Jfc3RhcnRfcmVjdl9waXBlcyhzdHJ1Y3QgYXRoMTBrICphcilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTI3Mi17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoyNzM6XFx0c3RydWN0IGF0aDEwa191c2IgKmFyX3VzYiA9IGF0aDEwa191c2JfcHJpdihhcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0yNzQtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTI3Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjI3NzpcXHRhdGgxMGtfdXNiX3Bvc3RfcmVjdl90cmFuc2ZlcnMoYXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0yNzgtXFx0XFx0XFx0XFx0ICAgICAgIFxcdTAwMjZhcl91c2ItXFx1MDAzZXBpcGVzW0FUSDEwS19VU0JfUElQRV9SWF9EQVRBXSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTI4MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjI4MTpzdGF0aWMgdm9pZCBhdGgxMGtfdXNiX3R4X2NvbXBsZXRlKHN0cnVjdCBhdGgxMGsgKmFyLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMjgyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMjkxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MjkyOnN0YXRpYyB2b2lkIGF0aDEwa191c2JfcnhfY29tcGxldGUoc3RydWN0IGF0aDEwayAqYXIsIHN0cnVjdCBza19idWZmICpza2IpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0yOTMte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0zNTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzozNjA6c3RhdGljIHZvaWQgYXRoMTBrX3VzYl9pb19jb21wX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMzYxLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjM2MjpcXHRzdHJ1Y3QgYXRoMTBrX3VzYl9waXBlICpwaXBlID0gY29udGFpbmVyX29mKHdvcmssXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzozNjM6XFx0XFx0XFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBhdGgxMGtfdXNiX3BpcGUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0zNjQtXFx0XFx0XFx0XFx0XFx0XFx0ICAgIGlvX2NvbXBsZXRlX3dvcmspO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0zNjktXFx0XFx0aWYgKHBpcGUtXFx1MDAzZWZsYWdzIFxcdTAwMjYgQVRIMTBLX1VTQl9QSVBFX0ZMQUdfVFgpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzozNzA6XFx0XFx0XFx0YXRoMTBrX3VzYl90eF9jb21wbGV0ZShhciwgc2tiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTM3MS1cXHRcXHRlbHNlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzozNzI6XFx0XFx0XFx0YXRoMTBrX3VzYl9yeF9jb21wbGV0ZShhciwgc2tiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTM3My1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTM3NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjM3NjojZGVmaW5lIEFUSDEwS19VU0JfTUFYX0RJQUdfQ01EIChzaXplb2Yoc3RydWN0IGF0aDEwa191c2JfY3RybF9kaWFnX2NtZF93cml0ZSkpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzozNzc6I2RlZmluZSBBVEgxMEtfVVNCX01BWF9ESUFHX1JFU1AgKHNpemVvZihzdHJ1Y3QgYXRoMTBrX3VzYl9jdHJsX2RpYWdfcmVzcF9yZWFkKSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTM3OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjM3OTpzdGF0aWMgdm9pZCBhdGgxMGtfdXNiX2Rlc3Ryb3koc3RydWN0IGF0aDEwayAqYXIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0zODAte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MzgxOlxcdHN0cnVjdCBhdGgxMGtfdXNiICphcl91c2IgPSBhdGgxMGtfdXNiX3ByaXYoYXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMzgyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MzgzOlxcdGF0aDEwa191c2JfZmx1c2hfYWxsKGFyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjM4NDpcXHRhdGgxMGtfdXNiX2NsZWFudXBfcGlwZV9yZXNvdXJjZXMoYXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMzg1LVxcdHVzYl9zZXRfaW50ZmRhdGEoYXJfdXNiLVxcdTAwM2VpbnRlcmZhY2UsIE5VTEwpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0zOTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzozOTE6c3RhdGljIGludCBhdGgxMGtfdXNiX2hpZl9zdGFydChzdHJ1Y3QgYXRoMTBrICphcilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTM5Mi17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0zOTMtXFx0aW50IGk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzozOTQ6XFx0c3RydWN0IGF0aDEwa191c2IgKmFyX3VzYiA9IGF0aDEwa191c2JfcHJpdihhcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0zOTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0zOTYtXFx0YXRoMTBrX2NvcmVfbmFwaV9lbmFibGUoYXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6Mzk3OlxcdGF0aDEwa191c2Jfc3RhcnRfcmVjdl9waXBlcyhhcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0zOTgtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTQwOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjQwOTpzdGF0aWMgaW50IGF0aDEwa191c2JfaGlmX3R4X3NnKHN0cnVjdCBhdGgxMGsgKmFyLCB1OCBwaXBlX2lkLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNDEwLVxcdFxcdFxcdFxcdHN0cnVjdCBhdGgxMGtfaGlmX3NnX2l0ZW0gKml0ZW1zLCBpbnQgbl9pdGVtcylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTQxMS17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo0MTI6XFx0c3RydWN0IGF0aDEwa191c2IgKmFyX3VzYiA9IGF0aDEwa191c2JfcHJpdihhcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo0MTM6XFx0c3RydWN0IGF0aDEwa191c2JfcGlwZSAqcGlwZSA9IFxcdTAwMjZhcl91c2ItXFx1MDAzZXBpcGVzW3BpcGVfaWRdO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNDE0LVxcdHN0cnVjdCBhdGgxMGtfdXJiX2NvbnRleHQgKnVyYl9jb250ZXh0O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy00MTktXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIG5faXRlbXM7IGkrKykge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NDIwOlxcdFxcdHVyYl9jb250ZXh0ID0gYXRoMTBrX3VzYl9hbGxvY191cmJfZnJvbV9waXBlKHBpcGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNDIxLVxcdFxcdGlmICghdXJiX2NvbnRleHQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNDM5LVxcdFxcdFxcdFxcdCAgc2tiLVxcdTAwM2VsZW4sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo0NDA6XFx0XFx0XFx0XFx0ICBhdGgxMGtfdXNiX3RyYW5zbWl0X2NvbXBsZXRlLCB1cmJfY29udGV4dCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy00NDEtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTQ2My1lcnJfZnJlZV91cmJfdG9fcGlwZTpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjQ2NDpcXHRhdGgxMGtfdXNiX2ZyZWVfdXJiX3RvX3BpcGUodXJiX2NvbnRleHQtXFx1MDAzZXBpcGUsIHVyYl9jb250ZXh0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTQ2NS1lcnI6XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTQ2OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjQ2OTpzdGF0aWMgdm9pZCBhdGgxMGtfdXNiX2hpZl9zdG9wKHN0cnVjdCBhdGgxMGsgKmFyKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNDcwLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjQ3MTpcXHRhdGgxMGtfdXNiX2ZsdXNoX2FsbChhcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy00NzItXFx0YXRoMTBrX2NvcmVfbmFwaV9zeW5jX2Rpc2FibGUoYXIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy00NzQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo0NzU6c3RhdGljIHUxNiBhdGgxMGtfdXNiX2hpZl9nZXRfZnJlZV9xdWV1ZV9udW1iZXIoc3RydWN0IGF0aDEwayAqYXIsIHU4IHBpcGVfaWQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy00NzYte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NDc3OlxcdHN0cnVjdCBhdGgxMGtfdXNiICphcl91c2IgPSBhdGgxMGtfdXNiX3ByaXYoYXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNDc4LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy00ODEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo0ODI6c3RhdGljIGludCBhdGgxMGtfdXNiX3N1Ym1pdF9jdHJsX291dChzdHJ1Y3QgYXRoMTBrICphcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTQ4My1cXHRcXHRcXHRcXHQgICAgICB1OCByZXEsIHUxNiB2YWx1ZSwgdTE2IGluZGV4LCB2b2lkICpkYXRhLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy00ODUte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NDg2OlxcdHN0cnVjdCBhdGgxMGtfdXNiICphcl91c2IgPSBhdGgxMGtfdXNiX3ByaXYoYXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNDg3LVxcdHU4ICpidWYgPSBOVUxMO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy01MTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo1MTY6c3RhdGljIGludCBhdGgxMGtfdXNiX3N1Ym1pdF9jdHJsX2luKHN0cnVjdCBhdGgxMGsgKmFyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNTE3LVxcdFxcdFxcdFxcdCAgICAgdTggcmVxLCB1MTYgdmFsdWUsIHUxNiBpbmRleCwgdm9pZCAqZGF0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNTE5LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjUyMDpcXHRzdHJ1Y3QgYXRoMTBrX3VzYiAqYXJfdXNiID0gYXRoMTBrX3VzYl9wcml2KGFyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTUyMS1cXHR1OCAqYnVmID0gTlVMTDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNTUxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NTUyOnN0YXRpYyBpbnQgYXRoMTBrX3VzYl9jdHJsX21zZ19leGNoYW5nZShzdHJ1Y3QgYXRoMTBrICphcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTU1My1cXHRcXHRcXHRcXHRcXHR1OCByZXFfdmFsLCB1OCAqcmVxX2J1ZiwgdTMyIHJlcV9sZW4sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTU1OS1cXHQvKiBzZW5kIGNvbW1hbmQgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjU2MDpcXHRyZXQgPSBhdGgxMGtfdXNiX3N1Ym1pdF9jdHJsX291dChhciwgcmVxX3ZhbCwgMCwgMCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTU2MS1cXHRcXHRcXHRcXHRcXHQgcmVxX2J1ZiwgcmVxX2xlbik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTU2Ni1cXHRpZiAocmVzcF9idWYpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjU2NzpcXHRcXHRyZXQgPSBhdGgxMGtfdXNiX3N1Ym1pdF9jdHJsX2luKGFyLCByZXNwX3ZhbCwgMCwgMCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTU2OC1cXHRcXHRcXHRcXHRcXHRcXHRyZXNwX2J1ZiwgKnJlc3BfbGVuKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNTc3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NTc4OnN0YXRpYyBpbnQgYXRoMTBrX3VzYl9oaWZfZGlhZ19yZWFkKHN0cnVjdCBhdGgxMGsgKmFyLCB1MzIgYWRkcmVzcywgdm9pZCAqYnVmLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNTc5LVxcdFxcdFxcdFxcdCAgICBzaXplX3QgYnVmX2xlbilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTU4MC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo1ODE6XFx0c3RydWN0IGF0aDEwa191c2IgKmFyX3VzYiA9IGF0aDEwa191c2JfcHJpdihhcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo1ODI6XFx0c3RydWN0IGF0aDEwa191c2JfY3RybF9kaWFnX2NtZF9yZWFkICpjbWQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy01ODMtXFx0dTMyIHJlc3BfbGVuO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy01ODUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo1ODY6XFx0aWYgKGJ1Zl9sZW4gXFx1MDAzYyBzaXplb2Yoc3RydWN0IGF0aDEwa191c2JfY3RybF9kaWFnX3Jlc3BfcmVhZCkpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy01ODctXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy01ODgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo1ODk6XFx0Y21kID0gKHN0cnVjdCBhdGgxMGtfdXNiX2N0cmxfZGlhZ19jbWRfcmVhZCAqKWFyX3VzYi1cXHUwMDNlZGlhZ19jbWRfYnVmZmVyO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNTkwLVxcdG1lbXNldChjbWQsIDAsIHNpemVvZigqY21kKSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTU5Mi1cXHRjbWQtXFx1MDAzZWFkZHJlc3MgPSBjcHVfdG9fbGUzMihhZGRyZXNzKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjU5MzpcXHRyZXNwX2xlbiA9IHNpemVvZihzdHJ1Y3QgYXRoMTBrX3VzYl9jdHJsX2RpYWdfcmVzcF9yZWFkKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTU5NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjU5NTpcXHRyZXQgPSBhdGgxMGtfdXNiX2N0cmxfbXNnX2V4Y2hhbmdlKGFyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNTk2LVxcdFxcdFxcdFxcdFxcdCAgIEFUSDEwS19VU0JfQ09OVFJPTF9SRVFfRElBR19DTUQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTYwMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjYwNDpcXHRpZiAocmVzcF9sZW4gIT0gc2l6ZW9mKHN0cnVjdCBhdGgxMGtfdXNiX2N0cmxfZGlhZ19yZXNwX3JlYWQpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNjA1LVxcdFxcdHJldHVybiAtRU1TR1NJWkU7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTYwNy1cXHRtZW1jcHkoYnVmLCBhcl91c2ItXFx1MDAzZWRpYWdfcmVzcF9idWZmZXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo2MDg6XFx0ICAgICAgIHNpemVvZihzdHJ1Y3QgYXRoMTBrX3VzYl9jdHJsX2RpYWdfcmVzcF9yZWFkKSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy02MDktXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTYxMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjYxMzpzdGF0aWMgaW50IGF0aDEwa191c2JfaGlmX2RpYWdfd3JpdGUoc3RydWN0IGF0aDEwayAqYXIsIHUzMiBhZGRyZXNzLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNjE0LVxcdFxcdFxcdFxcdCAgICAgY29uc3Qgdm9pZCAqZGF0YSwgaW50IG5ieXRlcylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTYxNS17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo2MTY6XFx0c3RydWN0IGF0aDEwa191c2IgKmFyX3VzYiA9IGF0aDEwa191c2JfcHJpdihhcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo2MTc6XFx0c3RydWN0IGF0aDEwa191c2JfY3RybF9kaWFnX2NtZF93cml0ZSAqY21kO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNjE4LVxcdGludCByZXQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTYyMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjYyMzpcXHRjbWQgPSAoc3RydWN0IGF0aDEwa191c2JfY3RybF9kaWFnX2NtZF93cml0ZSAqKWFyX3VzYi1cXHUwMDNlZGlhZ19jbWRfYnVmZmVyO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNjI0LVxcdG1lbXNldChjbWQsIDAsIHNpemVvZigqY21kKSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTYyOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjYyOTpcXHRyZXQgPSBhdGgxMGtfdXNiX2N0cmxfbXNnX2V4Y2hhbmdlKGFyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNjMwLVxcdFxcdFxcdFxcdFxcdCAgIEFUSDEwS19VU0JfQ09OVFJPTF9SRVFfRElBR19DTUQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTYzOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjY0MDpzdGF0aWMgaW50IGF0aDEwa191c2JfYm1pX2V4Y2hhbmdlX21zZyhzdHJ1Y3QgYXRoMTBrICphcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTY0MS1cXHRcXHRcXHRcXHQgICAgICAgdm9pZCAqcmVxLCB1MzIgcmVxX2xlbixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNjQ2LVxcdGlmIChyZXEpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjY0NzpcXHRcXHRyZXQgPSBhdGgxMGtfdXNiX3N1Ym1pdF9jdHJsX291dChhcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTY0OC1cXHRcXHRcXHRcXHRcXHRcXHQgQVRIMTBLX1VTQl9DT05UUk9MX1JFUV9TRU5EX0JNSV9DTUQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTY1OC1cXHRpZiAocmVzcCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NjU5OlxcdFxcdHJldCA9IGF0aDEwa191c2Jfc3VibWl0X2N0cmxfaW4oYXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy02NjAtXFx0XFx0XFx0XFx0XFx0XFx0QVRIMTBLX1VTQl9DT05UUk9MX1JFUV9SRUNWX0JNSV9SRVNQLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy02NzItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo2NzM6c3RhdGljIHZvaWQgYXRoMTBrX3VzYl9oaWZfZ2V0X2RlZmF1bHRfcGlwZShzdHJ1Y3QgYXRoMTBrICphcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTY3NC1cXHRcXHRcXHRcXHRcXHQgICAgdTggKnVsX3BpcGUsIHU4ICpkbF9waXBlKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy02NzktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo2ODA6c3RhdGljIGludCBhdGgxMGtfdXNiX2hpZl9tYXBfc2VydmljZV90b19waXBlKHN0cnVjdCBhdGgxMGsgKmFyLCB1MTYgc3ZjX2lkLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNjgxLVxcdFxcdFxcdFxcdFxcdCAgICAgIHU4ICp1bF9waXBlLCB1OCAqZGxfcGlwZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNzAzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NzA0OnN0YXRpYyBpbnQgYXRoMTBrX3VzYl9oaWZfcG93ZXJfdXAoc3RydWN0IGF0aDEwayAqYXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy03MDUtXFx0XFx0XFx0XFx0ICAgZW51bSBhdGgxMGtfZmlybXdhcmVfbW9kZSBmd19tb2RlKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy03MDktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo3MTA6c3RhdGljIHZvaWQgYXRoMTBrX3VzYl9oaWZfcG93ZXJfZG93bihzdHJ1Y3QgYXRoMTBrICphcilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTcxMS17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo3MTI6XFx0YXRoMTBrX3VzYl9mbHVzaF9hbGwoYXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNzEzLX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNzE2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NzE3OnN0YXRpYyBpbnQgYXRoMTBrX3VzYl9oaWZfc3VzcGVuZChzdHJ1Y3QgYXRoMTBrICphcilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTcxOC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTcyMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjcyMjpzdGF0aWMgaW50IGF0aDEwa191c2JfaGlmX3Jlc3VtZShzdHJ1Y3QgYXRoMTBrICphcilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTcyMy17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTcyNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjcyODpzdGF0aWMgY29uc3Qgc3RydWN0IGF0aDEwa19oaWZfb3BzIGF0aDEwa191c2JfaGlmX29wcyA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjcyOTpcXHQudHhfc2dcXHRcXHRcXHQ9IGF0aDEwa191c2JfaGlmX3R4X3NnLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NzMwOlxcdC5kaWFnX3JlYWRcXHRcXHQ9IGF0aDEwa191c2JfaGlmX2RpYWdfcmVhZCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjczMTpcXHQuZGlhZ193cml0ZVxcdFxcdD0gYXRoMTBrX3VzYl9oaWZfZGlhZ193cml0ZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjczMjpcXHQuZXhjaGFuZ2VfYm1pX21zZ1xcdD0gYXRoMTBrX3VzYl9ibWlfZXhjaGFuZ2VfbXNnLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NzMzOlxcdC5zdGFydFxcdFxcdFxcdD0gYXRoMTBrX3VzYl9oaWZfc3RhcnQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo3MzQ6XFx0LnN0b3BcXHRcXHRcXHQ9IGF0aDEwa191c2JfaGlmX3N0b3AsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo3MzU6XFx0Lm1hcF9zZXJ2aWNlX3RvX3BpcGVcXHQ9IGF0aDEwa191c2JfaGlmX21hcF9zZXJ2aWNlX3RvX3BpcGUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo3MzY6XFx0LmdldF9kZWZhdWx0X3BpcGVcXHQ9IGF0aDEwa191c2JfaGlmX2dldF9kZWZhdWx0X3BpcGUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo3Mzc6XFx0LmdldF9mcmVlX3F1ZXVlX251bWJlclxcdD0gYXRoMTBrX3VzYl9oaWZfZ2V0X2ZyZWVfcXVldWVfbnVtYmVyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NzM4OlxcdC5wb3dlcl91cFxcdFxcdD0gYXRoMTBrX3VzYl9oaWZfcG93ZXJfdXAsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo3Mzk6XFx0LnBvd2VyX2Rvd25cXHRcXHQ9IGF0aDEwa191c2JfaGlmX3Bvd2VyX2Rvd24sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy03NDAtI2lmZGVmIENPTkZJR19QTVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NzQxOlxcdC5zdXNwZW5kXFx0XFx0PSBhdGgxMGtfdXNiX2hpZl9zdXNwZW5kLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NzQyOlxcdC5yZXN1bWVcXHRcXHRcXHQ9IGF0aDEwa191c2JfaGlmX3Jlc3VtZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTc0My0jZW5kaWZcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNzQ1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NzQ2OnN0YXRpYyB1OCBhdGgxMGtfdXNiX2dldF9sb2dpY2FsX3BpcGVfbnVtKHU4IGVwX2FkZHJlc3MsIGludCAqdXJiX2NvdW50KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNzQ3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNzkwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NzkxOnN0YXRpYyBpbnQgYXRoMTBrX3VzYl9hbGxvY19waXBlX3Jlc291cmNlcyhzdHJ1Y3QgYXRoMTBrICphcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjc5MjpcXHRcXHRcXHRcXHRcXHQgICBzdHJ1Y3QgYXRoMTBrX3VzYl9waXBlICpwaXBlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNzkzLVxcdFxcdFxcdFxcdFxcdCAgIGludCB1cmJfY250KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy04MTEtXFx0XFx0cGlwZS1cXHUwMDNldXJiX2FsbG9jKys7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo4MTI6XFx0XFx0YXRoMTBrX3VzYl9mcmVlX3VyYl90b19waXBlKHBpcGUsIHVyYl9jb250ZXh0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTgxMy1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTgyMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjgyMzpzdGF0aWMgaW50IGF0aDEwa191c2Jfc2V0dXBfcGlwZV9yZXNvdXJjZXMoc3RydWN0IGF0aDEwayAqYXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy04MjQtXFx0XFx0XFx0XFx0XFx0ICAgc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGVyZmFjZSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTgyNS17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo4MjY6XFx0c3RydWN0IGF0aDEwa191c2IgKmFyX3VzYiA9IGF0aDEwa191c2JfcHJpdihhcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy04MjctXFx0c3RydWN0IHVzYl9ob3N0X2ludGVyZmFjZSAqaWZhY2VfZGVzYyA9IGludGVyZmFjZS1cXHUwMDNlY3VyX2FsdHNldHRpbmc7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy04MjgtXFx0c3RydWN0IHVzYl9lbmRwb2ludF9kZXNjcmlwdG9yICplbmRwb2ludDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjgyOTpcXHRzdHJ1Y3QgYXRoMTBrX3VzYl9waXBlICpwaXBlO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtODMwLVxcdGludCByZXQsIGksIHVyYmNvdW50O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy04NzEtXFx0XFx0cGlwZV9udW0gPVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6ODcyOlxcdFxcdCAgICBhdGgxMGtfdXNiX2dldF9sb2dpY2FsX3BpcGVfbnVtKGVuZHBvaW50LVxcdTAwM2ViRW5kcG9pbnRBZGRyZXNzLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtODczLVxcdFxcdFxcdFxcdFxcdFxcdCAgICBcXHUwMDI2dXJiY291bnQpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy05MjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo5MjU6XFx0XFx0cmV0ID0gYXRoMTBrX3VzYl9hbGxvY19waXBlX3Jlc291cmNlcyhhciwgcGlwZSwgdXJiY291bnQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtOTI2LVxcdFxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTkzMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjkzMzpzdGF0aWMgaW50IGF0aDEwa191c2JfY3JlYXRlKHN0cnVjdCBhdGgxMGsgKmFyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtOTM0LVxcdFxcdFxcdCAgICAgc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGVyZmFjZSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTkzNS17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo5MzY6XFx0c3RydWN0IGF0aDEwa191c2IgKmFyX3VzYiA9IGF0aDEwa191c2JfcHJpdihhcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy05MzctXFx0c3RydWN0IHVzYl9kZXZpY2UgKmRldiA9IGludGVyZmFjZV90b191c2JkZXYoaW50ZXJmYWNlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjkzODpcXHRzdHJ1Y3QgYXRoMTBrX3VzYl9waXBlICpwaXBlO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtOTM5LVxcdGludCByZXQsIGk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTk0OC1cXHRcXHRJTklUX1dPUksoXFx1MDAyNnBpcGUtXFx1MDAzZWlvX2NvbXBsZXRlX3dvcmssXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo5NDk6XFx0XFx0XFx0ICBhdGgxMGtfdXNiX2lvX2NvbXBfd29yayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy05NTAtXFx0XFx0c2tiX3F1ZXVlX2hlYWRfaW5pdChcXHUwMDI2cGlwZS1cXHUwMDNlaW9fY29tcF9xdWV1ZSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTk2NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjk2NjpcXHRyZXQgPSBhdGgxMGtfdXNiX3NldHVwX3BpcGVfcmVzb3VyY2VzKGFyLCBpbnRlcmZhY2UpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtOTY3LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTk3Mi1lcnI6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo5NzM6XFx0YXRoMTBrX3VzYl9kZXN0cm95KGFyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTk3NC1cXHRyZXR1cm4gcmV0O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy05NzYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo5Nzc6c3RhdGljIGludCBhdGgxMGtfdXNiX25hcGlfcG9sbChzdHJ1Y3QgbmFwaV9zdHJ1Y3QgKmN0eCwgaW50IGJ1ZGdldClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTk3OC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTk5MS0vKiBhdGgxMGsgdXNiIGRyaXZlciByZWdpc3RlcmVkIGZ1bmN0aW9ucyAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6OTkyOnN0YXRpYyBpbnQgYXRoMTBrX3VzYl9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZXJmYWNlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtOTkzLVxcdFxcdFxcdCAgICBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqaWQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTk5NS1cXHRzdHJ1Y3QgYXRoMTBrICphcjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjk5NjpcXHRzdHJ1Y3QgYXRoMTBrX3VzYiAqYXJfdXNiO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtOTk3LVxcdHN0cnVjdCB1c2JfZGV2aWNlICpkZXYgPSBpbnRlcmZhY2VfdG9fdXNiZGV2KGludGVyZmFjZSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTEwMTAtXFx0YXIgPSBhdGgxMGtfY29yZV9jcmVhdGUoc2l6ZW9mKCphcl91c2IpLCBcXHUwMDI2ZGV2LVxcdTAwM2VkZXYsIEFUSDEwS19CVVNfVVNCLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTAxMTpcXHRcXHRcXHRcXHRod19yZXYsIFxcdTAwMjZhdGgxMGtfdXNiX2hpZl9vcHMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTAxMi1cXHRpZiAoIWFyKSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTEwMTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMDE3OlxcdG5ldGlmX25hcGlfYWRkKGFyLVxcdTAwM2VuYXBpX2RldiwgXFx1MDAyNmFyLVxcdTAwM2VuYXBpLCBhdGgxMGtfdXNiX25hcGlfcG9sbCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMDE4LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMDI1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTAyNjpcXHRhcl91c2IgPSBhdGgxMGtfdXNiX3ByaXYoYXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTAyNzpcXHRyZXQgPSBhdGgxMGtfdXNiX2NyZWF0ZShhciwgaW50ZXJmYWNlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTEwMjgtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTA1MS1lcnJfdXNiX2Rlc3Ryb3k6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMDUyOlxcdGF0aDEwa191c2JfZGVzdHJveShhcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMDUzLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMDU5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTA2MDpzdGF0aWMgdm9pZCBhdGgxMGtfdXNiX2Rpc2Nvbm5lY3Qoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGVyZmFjZSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTEwNjEte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTA2MjpcXHRzdHJ1Y3QgYXRoMTBrX3VzYiAqYXJfdXNiO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTA2My1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTA2OS1cXHRuZXRpZl9uYXBpX2RlbChcXHUwMDI2YXJfdXNiLVxcdTAwM2Vhci1cXHUwMDNlbmFwaSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMDcwOlxcdGF0aDEwa191c2JfZGVzdHJveShhcl91c2ItXFx1MDAzZWFyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTEwNzEtXFx0YXRoMTBrX2NvcmVfZGVzdHJveShhcl91c2ItXFx1MDAzZWFyKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTA3NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjEwNzY6c3RhdGljIGludCBhdGgxMGtfdXNiX3BtX3N1c3BlbmQoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGVyZmFjZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTEwNzctXFx0XFx0XFx0XFx0IHBtX21lc3NhZ2VfdCBtZXNzYWdlKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTA3OC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMDc5OlxcdHN0cnVjdCBhdGgxMGtfdXNiICphcl91c2IgPSB1c2JfZ2V0X2ludGZkYXRhKGludGVyZmFjZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMDgwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTA4MTpcXHRhdGgxMGtfdXNiX2ZsdXNoX2FsbChhcl91c2ItXFx1MDAzZWFyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTEwODItXFx0cmV0dXJuIDA7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTEwODQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMDg1OnN0YXRpYyBpbnQgYXRoMTBrX3VzYl9wbV9yZXN1bWUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGVyZmFjZSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTEwODYte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTA4NzpcXHRzdHJ1Y3QgYXRoMTBrX3VzYiAqYXJfdXNiID0gdXNiX2dldF9pbnRmZGF0YShpbnRlcmZhY2UpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTA4OC1cXHRzdHJ1Y3QgYXRoMTBrICphciA9IGFyX3VzYi1cXHUwMDNlYXI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMDg5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTA5MDpcXHRhdGgxMGtfdXNiX3Bvc3RfcmVjdl90cmFuc2ZlcnMoYXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMDkxLVxcdFxcdFxcdFxcdCAgICAgICBcXHUwMDI2YXJfdXNiLVxcdTAwM2VwaXBlc1tBVEgxMEtfVVNCX1BJUEVfUlhfREFUQV0pO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMDk3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTA5ODojZGVmaW5lIGF0aDEwa191c2JfcG1fc3VzcGVuZCBOVUxMXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMDk5OiNkZWZpbmUgYXRoMTBrX3VzYl9wbV9yZXN1bWUgTlVMTFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTEwMC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTEwMy0vKiB0YWJsZSBvZiBkZXZpY2VzIHRoYXQgd29yayB3aXRoIHRoaXMgZHJpdmVyICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMTA0OnN0YXRpYyBzdHJ1Y3QgdXNiX2RldmljZV9pZCBhdGgxMGtfdXNiX2lkc1tdID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTEwNS1cXHR7VVNCX0RFVklDRSgweDEzYjEsIDB4MDA0Mil9LCAvKiBMaW5rc3lzIFdVU0I2MTAwTSAqL1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMTA4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTEwOTpNT0RVTEVfREVWSUNFX1RBQkxFKHVzYiwgYXRoMTBrX3VzYl9pZHMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTExMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjExMTE6c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIGF0aDEwa191c2JfZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTExMjpcXHQubmFtZSA9IFxcXCJhdGgxMGtfdXNiXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjExMTM6XFx0LnByb2JlID0gYXRoMTBrX3VzYl9wcm9iZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjExMTQ6XFx0LnN1c3BlbmQgPSBhdGgxMGtfdXNiX3BtX3N1c3BlbmQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMTE1OlxcdC5yZXN1bWUgPSBhdGgxMGtfdXNiX3BtX3Jlc3VtZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjExMTY6XFx0LmRpc2Nvbm5lY3QgPSBhdGgxMGtfdXNiX2Rpc2Nvbm5lY3QsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMTE3OlxcdC5pZF90YWJsZSA9IGF0aDEwa191c2JfaWRzLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTExOC1cXHQuc3VwcG9ydHNfYXV0b3N1c3BlbmQgPSB0cnVlLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMTIxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTEyMjptb2R1bGVfdXNiX2RyaXZlcihhdGgxMGtfdXNiX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMTIzLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaC00My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5oOjQ0OnN0cnVjdCBhdGgxMGtfdXNiX2N0cmxfZGlhZ19jbWRfd3JpdGUge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmgtNDUtXFx0X19sZTMyIGNtZDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmgtNTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaDo1MTpzdHJ1Y3QgYXRoMTBrX3VzYl9jdHJsX2RpYWdfY21kX3JlYWQge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmgtNTItXFx0X19sZTMyIGNtZDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmgtNTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaDo1NjpzdHJ1Y3QgYXRoMTBrX3VzYl9jdHJsX2RpYWdfcmVzcF9yZWFkIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5oLTU3LVxcdHU4IHZhbHVlWzRdO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaC02MC0vKiB0eC9yeCBwaXBlcyBmb3IgdXNiICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaDo2MTplbnVtIGF0aDEwa191c2JfcGlwZV9pZCB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaC02Mi1cXHRBVEgxMEtfVVNCX1BJUEVfVFhfQ1RSTCA9IDAsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5oLTcyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmg6NzM6c3RydWN0IGF0aDEwa191c2JfcGlwZSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaC03NC1cXHRzdHJ1Y3QgbGlzdF9oZWFkIHVyYl9saXN0X2hlYWQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5oLTgyLVxcdHU4IGxvZ2ljYWxfcGlwZV9udW07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaDo4MzpcXHRzdHJ1Y3QgYXRoMTBrX3VzYiAqYXJfdXNiO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmgtODQtXFx0dTE2IG1heF9wYWNrZXRfc2l6ZTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmgtOTItLyogdXNiIGRldmljZSBvYmplY3QgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5oOjkzOnN0cnVjdCBhdGgxMGtfdXNiIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5oLTk0LVxcdC8qIHByb3RlY3RzIHBpcGUtXFx1MDAzZXVyYl9saXN0X2hlYWQgYW5kICBwaXBlLVxcdTAwM2V1cmJfY250ICovXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5oLTk4LVxcdHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRlcmZhY2U7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaDo5OTpcXHRzdHJ1Y3QgYXRoMTBrX3VzYl9waXBlIHBpcGVzW0FUSDEwS19VU0JfUElQRV9NQVhdO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmgtMTAwLVxcdHU4ICpkaWFnX2NtZF9idWZmZXI7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5oPTEwNj1zdHJ1Y3QgYXRoMTBrX3VyYl9jb250ZXh0IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5oLTEwNy1cXHRzdHJ1Y3QgbGlzdF9oZWFkIGxpbms7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaDoxMDg6XFx0c3RydWN0IGF0aDEwa191c2JfcGlwZSAqcGlwZTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5oLTEwOS1cXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaC0xMTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaDoxMTM6c3RhdGljIGlubGluZSBzdHJ1Y3QgYXRoMTBrX3VzYiAqYXRoMTBrX3VzYl9wcml2KHN0cnVjdCBhdGgxMGsgKmFyKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmgtMTE0LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5oOjExNTpcXHRyZXR1cm4gKHN0cnVjdCBhdGgxMGtfdXNiICopYXItXFx1MDAzZWRydl9wcml2O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmgtMTE2LX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMDA6MTQ6MTEuODcyMDk1MjgzWiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU0MDM5MDQyNTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqREZTIFZ1bG5lcmFiaWxpdHkgUmVzZWFyY2ggaW4gYGF0aDEwa191c2JgKipcblxuQWxyaWdodCwgc28gSSdtIGRpZ2dpbmcgaW50byBgYXRoMTBrX3VzYmAuIFRoZSBpbW1lZGlhdGUgdGhvdWdodCBpcywgY2FuIHdlIGZ1enogdGhpcyB0aGluZyB2aWEgVVNCIGVtdWxhdGlvbj8gU3l6a2FsbGVyJ3MgVVNCIGZ1enplciBzZWVtcyBsaWtlIGEgcGVyZmVjdCBzdGFydGluZyBwb2ludC4gQnV0IHdhaXQsIGJlZm9yZSBJIGRpdmUgaW50byBmdXp6aW5nLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgYXR0YWNrIHN1cmZhY2UuIFNwZWNpZmljYWxseSwgZG9lcyBgYXRoMTBrX3VzYmAgZXZlbiAqc3VwcG9ydCogREZTIChEeW5hbWljIEZyZXF1ZW5jeSBTZWxlY3Rpb24pP1xuXG5MZXQgbWUgZG91YmxlLWNoZWNrIHRoZSBgYXRoMTBrX21hY19yZWdpc3RlcmAgZnVuY3Rpb24gYWdhaW4uIEFoLCBoZXJlIGl0IGlzOiBgYXItXHUwMDNlZGZzX2RldGVjdG9yID0gZGZzX3BhdHRlcm5fZGV0ZWN0b3JfaW5pdChcdTAwMjZhci1cdTAwM2VhdGhfY29tbW9uLCBOTDgwMjExX0RGU19VTlNFVCk7YC4gVGhpcyBpcyB1bmNvbmRpdGlvbmFsbHkgaW5pdGlhbGl6ZWQgZm9yICphbGwqIGBhdGgxMGtgIGRldmljZXMsIGluY2x1ZGluZyBVU0IuIE9rYXksIHRoYXQncyBwcm9taXNpbmchXG5cbk5vdywgdGhlIGNydWNpYWwgcXVlc3Rpb246IEhvdyBpcyBERlMgZnVuY3Rpb25hbGl0eSB0cmlnZ2VyZWQ/IEkgcmVjYWxsIGBhdGgxMGtfZGZzX3JhZGFyX3JlcG9ydGAgZ2V0cyBjYWxsZWQgZnJvbSBgYXRoMTBrX3dtaV9ldmVudF9kZnNgLiBUaGUgcXVlc3Rpb24gbm93IGJlY29tZXM6IGlzIGBhdGgxMGtfd21pX2V2ZW50X2Rmc2AgcmVhY2hhYmxlIHZpYSB0aGUgVVNCIGludGVyZmFjZT8gVGhlIFdNSSBldmVudHMsIEknbSBwcmV0dHkgc3VyZSB0aG9zZSBhcmUgdGhlIG1lc3NhZ2VzIHBhc3NlZCB0aHJvdWdoIHRoZSBVU0IgaW50ZXJmYWNlISBMZXQncyBzZWUuLi4gWWVwLCBsb29rcyBsaWtlIFdNSSBldmVudHMgYXJlIGluZGVlZCByZWNlaXZlZCBvdmVyIFVTQi4gVGhlIHBhdGggc2VlbXMgdG8gYmUgYGF0aDEwa191c2JfcnhfY29tcGxldGVgIC1cdTAwM2UgYGF0aDEwa19odGNfcnhfY29tcGxldGlvbl9oYW5kbGVyYCAtXHUwMDNlIGBhdGgxMGtfd21pX2V2ZW50X2Rmc2AuIFJpZ2h0LiBUaW1lIHRvIHZlcmlmeSB0aGF0IGVudGlyZSBwYXRoIGFuZCBjb25maXJtIHRoZSBhc3N1bXB0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjk0MDksIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMzMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMDA6MTQ6MTcuMjc2MDAzMjc5WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTUxMTgyMTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYXRoMTBrX3dtaV9ldmVudF9kZnNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway93bWkuYz00MTY5PXN0YXRpYyBpbnQgYXRoMTBrX2Rmc19mZnRfcmVwb3J0KHN0cnVjdCBhdGgxMGsgKmFyLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway93bWkuYy00MjA2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvd21pLmM6NDIwNzp2b2lkIGF0aDEwa193bWlfZXZlbnRfZGZzKHN0cnVjdCBhdGgxMGsgKmFyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvd21pLmMtNDIwOC1cXHRcXHRcXHQgIHN0cnVjdCB3bWlfcGh5ZXJyX2V2X2FyZyAqcGh5ZXJyLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway93bWkuYz00NDQ3PXZvaWQgYXRoMTBrX3dtaV9ldmVudF9waHllcnIoc3RydWN0IGF0aDEwayAqYXIsIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3dtaS5jLTQ0OTgtXFx0XFx0Y2FzZSBQSFlfRVJST1JfUkFEQVI6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway93bWkuYzo0NDk5OlxcdFxcdFxcdGF0aDEwa193bWlfZXZlbnRfZGZzKGFyLCBcXHUwMDI2cGh5ZXJyX2FyZywgdHNmKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3dtaS5jLTQ1MDAtXFx0XFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3dtaS5jLTQ1MDQtXFx0XFx0Y2FzZSBQSFlfRVJST1JfRkFMU0VfUkFEQVJfRVhUOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvd21pLmM6NDUwNTpcXHRcXHRcXHRhdGgxMGtfd21pX2V2ZW50X2RmcyhhciwgXFx1MDAyNnBoeWVycl9hcmcsIHRzZik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway93bWkuYy00NTA2LVxcdFxcdFxcdGF0aDEwa193bWlfZXZlbnRfc3BlY3RyYWxfc2NhbihhciwgXFx1MDAyNnBoeWVycl9hcmcsIHRzZik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3dtaS5jPTQ1MzA9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3dtaS5jOjQ1MzE6YXRoMTBrX3dtaV9ldmVudF9kZnNfc3RhdHVzX2NoZWNrKHN0cnVjdCBhdGgxMGsgKmFyLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvd21pLmMtNDUzMi17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3dtaS5jPTYyODM9c3RhdGljIHZvaWQgYXRoMTBrX3dtaV8xMF80X29wX3J4KHN0cnVjdCBhdGgxMGsgKmFyLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway93bWkuYy02Mzg4LVxcdGNhc2UgV01JXzEwXzRfREZTX1NUQVRVU19DSEVDS19FVkVOVElEOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvd21pLmM6NjM4OTpcXHRcXHRhdGgxMGtfd21pX2V2ZW50X2Rmc19zdGF0dXNfY2hlY2soYXIsIHNrYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway93bWkuYy02MzkwLVxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway93bWkuaD03NDkwPXZvaWQgYXRoMTBrX3dtaV9ldmVudF90YnR0b2Zmc2V0X3VwZGF0ZShzdHJ1Y3QgYXRoMTBrICphciwgc3RydWN0IHNrX2J1ZmYgKnNrYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway93bWkuaDo3NDkxOnZvaWQgYXRoMTBrX3dtaV9ldmVudF9kZnMoc3RydWN0IGF0aDEwayAqYXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway93bWkuaC03NDkyLVxcdFxcdFxcdCAgc3RydWN0IHdtaV9waHllcnJfZXZfYXJnICpwaHllcnIsIHU2NCB0c2YpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQwMDoxNDoxNy40NzExMzM1NloiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTgzMzEwODg3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IExpbmUgb2YgUmVhc29uaW5nKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBgYXRoMTBrX3dtaV9ldmVudF9waHllcnJgIGlzIHRoZSBzdGFydGluZyBwb2ludC4gSXQgc2VlbXMgdGhhdCB0aGlzIGV2ZW50IGhhbmRsZXIgY2FsbHMgYGF0aDEwa193bWlfZXZlbnRfZGZzYCwgd2hpY2ggdGhlbiBsZWFkcyB0byBgYXRoMTBrX2Rmc19yYWRhcl9yZXBvcnRgLiBBbmQgZmluYWxseSwgdGhhdCBmdW5jdGlvbiBpcyBjYWxsaW5nIGBhci1cdTAwM2VkZnNfZGV0ZWN0b3ItXHUwMDNlYWRkX3B1bHNlYC4gSW50ZXJlc3RpbmcsIHZlcnkgaW50ZXJlc3RpbmcuIEl0J3MgYmVjb21pbmcgY2xlYXIgdGhhdCB3ZSBtaWdodCBiZSBhYmxlIHRvIHJlYWNoIGNvZGUgaW4gYGRmc19wcmlfZGV0ZWN0b3IuY2AgdGhyb3VnaCBVU0IgZnV6emluZyBvZiBgYXRoMTBrX3VzYmAuXG5cbkJ1dCwgaG9sZCBvbiBhIHNlY29uZC4gSSBuZWVkIHRvIGJlIHN1cmUgYWJvdXQgYSBkZXBlbmRlbmN5LCBlc3BlY2lhbGx5IHNpbmNlIHRoaXMgaXMgcmVsYXRlZCB0byBERlMuIElzIGBDT05GSUdfQVRIMTBLX0RGU19DRVJUSUZJRURgIGEgcHJlcmVxdWlzaXRlIGhlcmU/IEknbSBnb2luZyB0byBxdWlja2x5IGNoZWNrIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWdgIHRvIGNvbmZpcm0gd2hldGhlciBvciBub3QgdGhpcyBpcyB0aGUgY2FzZSBiZWZvcmUgSSBnbyBhbnkgZnVydGhlciBkb3duIHRoaXMgcGF0aC4gSSBuZWVkIHRvIGJlIHN1cmUgdGhpcyBwYXRoIGlzIGFjdHVhbGx5IHJlYWNoYWJsZSB3aXRoIHRoaXMgc2V0IHVwLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMDk0OSwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQwMDoxNDoyMS40NTQ0NDc4NTZaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI3OTAzMTg3MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJBVEgxMEtfREZTX0NFUlRJRklFRFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWc9ODY9Y29uZmlnIEFUSDEwS19UUkFDSU5HXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWctOTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9LY29uZmlnOjkzOmNvbmZpZyBBVEgxMEtfREZTX0NFUlRJRklFRFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZy05NC1cXHRib29sIFxcXCJBdGhlcm9zIERGUyBzdXBwb3J0IGZvciBjZXJ0aWZpZWQgcGxhdGZvcm1zXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9kZWJ1Zy5jPTQyPXZvaWQgYXRoMTBrX2RlYnVnX3ByaW50X2h3ZndfaW5mbyhzdHJ1Y3QgYXRoMTBrICphcilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvZGVidWcuYy01OS1cXHRcXHQgICAgSVNfRU5BQkxFRChDT05GSUdfQVRIMTBLX1RSQUNJTkcpLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvZGVidWcuYzo2MDpcXHRcXHQgICAgSVNfRU5BQkxFRChDT05GSUdfQVRIMTBLX0RGU19DRVJUSUZJRUQpLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvZGVidWcuYy02MS1cXHRcXHQgICAgSVNfRU5BQkxFRChDT05GSUdfTkw4MDIxMV9URVNUTU9ERSkpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9kZWJ1Zy5jPTI1MjQ9aW50IGF0aDEwa19kZWJ1Z19yZWdpc3RlcihzdHJ1Y3QgYXRoMTBrICphcilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvZGVidWcuYy0yNTg1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvZGVidWcuYzoyNTg2OlxcdGlmIChJU19FTkFCTEVEKENPTkZJR19BVEgxMEtfREZTX0NFUlRJRklFRCkpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2RlYnVnLmMtMjU4Ny1cXHRcXHRkZWJ1Z2ZzX2NyZWF0ZV9maWxlKFxcXCJkZnNfc2ltdWxhdGVfcmFkYXJcXFwiLCAwMjAwLCBhci1cXHUwMDNlZGVidWcuZGVidWdmc19waHksXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jPTM1MTA9c3RhdGljIHZvaWQgYXRoMTBrX3JlZ2RfdXBkYXRlKHN0cnVjdCBhdGgxMGsgKmFyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYy0zNTI0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmM6MzUyNTpcXHRpZiAoSVNfRU5BQkxFRChDT05GSUdfQVRIMTBLX0RGU19DRVJUSUZJRUQpIFxcdTAwMjZcXHUwMDI2IGFyLVxcdTAwM2VkZnNfZGV0ZWN0b3IpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jLTM1MjYtXFx0XFx0bmxfZGZzX3JlZyA9IGFyLVxcdTAwM2VkZnNfZGV0ZWN0b3ItXFx1MDAzZXJlZ2lvbjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmM9MzU2MT1zdGF0aWMgdm9pZCBhdGgxMGtfcmVnX25vdGlmaWVyKHN0cnVjdCB3aXBoeSAqd2lwaHksXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jLTM1NjktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYzozNTcwOlxcdGlmIChJU19FTkFCTEVEKENPTkZJR19BVEgxMEtfREZTX0NFUlRJRklFRCkgXFx1MDAyNlxcdTAwMjYgYXItXFx1MDAzZWRmc19kZXRlY3Rvcikge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmMtMzU3MS1cXHRcXHRhdGgxMGtfZGJnKGFyLCBBVEgxMEtfREJHX1JFR1VMQVRPUlksIFxcXCJkZnMgcmVnaW9uIDB4JXhcXFxcblxcXCIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jPTk2Nzc9c3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfaWZhY2VfY29tYmluYXRpb24gYXRoMTBrXzEweF9pZl9jb21iW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jLTk2ODQtXFx0XFx0LmJlYWNvbl9pbnRfbWluX2djZCA9IDEsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYzo5Njg1OiNpZmRlZiBDT05GSUdfQVRIMTBLX0RGU19DRVJUSUZJRURcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jLTk2ODYtXFx0XFx0LnJhZGFyX2RldGVjdF93aWR0aHMgPVxcdEJJVChOTDgwMjExX0NIQU5fV0lEVEhfMjBfTk9IVCkgfFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYz05ODAxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX2lmYWNlX2NvbWJpbmF0aW9uIGF0aDEwa18xMF80X2lmX2NvbWJbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmMtOTgwOC1cXHRcXHQuYmVhY29uX2ludF9taW5fZ2NkID0gMSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jOjk4MDk6I2lmZGVmIENPTkZJR19BVEgxMEtfREZTX0NFUlRJRklFRFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmMtOTgxMC1cXHRcXHQucmFkYXJfZGV0ZWN0X3dpZHRocyA9XFx0QklUKE5MODAyMTFfQ0hBTl9XSURUSF8yMF9OT0hUKSB8XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jPTk4MjE9aWVlZTgwMjExX2lmYWNlX2NvbWJpbmF0aW9uIGF0aDEwa18xMF80X2Jjbl9pbnRfaWZfY29tYltdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYy05ODI4LVxcdFxcdC5iZWFjb25faW50X21pbl9nY2QgPSAxMDAsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYzo5ODI5OiNpZmRlZiBDT05GSUdfQVRIMTBLX0RGU19DRVJUSUZJRURcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jLTk4MzAtXFx0XFx0LnJhZGFyX2RldGVjdF93aWR0aHMgPSAgQklUKE5MODAyMTFfQ0hBTl9XSURUSF8yMF9OT0hUKSB8XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jPTk5NzE9aW50IGF0aDEwa19tYWNfcmVnaXN0ZXIoc3RydWN0IGF0aDEwayAqYXIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jLTEwMjgyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmM6MTAyODM6XFx0aWYgKElTX0VOQUJMRUQoQ09ORklHX0FUSDEwS19ERlNfQ0VSVElGSUVEKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmMtMTAyODQtXFx0XFx0LyogSW5pdCBhdGggZGZzIHBhdHRlcm4gZGV0ZWN0b3IgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmMtMTAzNTctZXJyX2Rmc19kZXRlY3Rvcl9leGl0OlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmM6MTAzNTg6XFx0aWYgKElTX0VOQUJMRUQoQ09ORklHX0FUSDEwS19ERlNfQ0VSVElGSUVEKSBcXHUwMDI2XFx1MDAyNiBhci1cXHUwMDNlZGZzX2RldGVjdG9yKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmMtMTAzNTktXFx0XFx0YXItXFx1MDAzZWRmc19kZXRlY3Rvci1cXHUwMDNlZXhpdChhci1cXHUwMDNlZGZzX2RldGVjdG9yKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmM9MTAzNjk9dm9pZCBhdGgxMGtfbWFjX3VucmVnaXN0ZXIoc3RydWN0IGF0aDEwayAqYXIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jLTEwMzcyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmM6MTAzNzM6XFx0aWYgKElTX0VOQUJMRUQoQ09ORklHX0FUSDEwS19ERlNfQ0VSVElGSUVEKSBcXHUwMDI2XFx1MDAyNiBhci1cXHUwMDNlZGZzX2RldGVjdG9yKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmMtMTAzNzQtXFx0XFx0YXItXFx1MDAzZWRmc19kZXRlY3Rvci1cXHUwMDNlZXhpdChhci1cXHUwMDNlZGZzX2RldGVjdG9yKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvd21pLmM9NDIwNz12b2lkIGF0aDEwa193bWlfZXZlbnRfZGZzKHN0cnVjdCBhdGgxMGsgKmFyLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway93bWkuYy00MjIzLVxcdC8qIFNraXAgZXZlbnQgaWYgREZTIGRpc2FibGVkICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway93bWkuYzo0MjI0OlxcdGlmICghSVNfRU5BQkxFRChDT05GSUdfQVRIMTBLX0RGU19DRVJUSUZJRUQpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvd21pLmMtNDIyNS1cXHRcXHRyZXR1cm47XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDAwOjE0OjIxLjczMzQ4NTQ0OVoiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NjEyMDM1NDU4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkRGUyBTdXBwb3J0IGZvciBBdGhlcm9zIFVTQiBEcml2ZXJzKipcblxuT2theSwgc28gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGUgdXNlciBoYXMgYENPTkZJR19BVEgxMEtfREZTX0NFUlRJRklFRGAgZW5hYmxlZCwgdGhhdCdzIGNsZWFyLiBBbmQgb2YgY291cnNlLCBpZiB0aGV5J3JlIHVzaW5nIFVTQiwgd2UnbGwgbmVlZCBgQ09ORklHX0FUSDEwS19VU0JgIGFzIHdlbGwuIEJ1dCB3YWl0IGEgbWludXRlLi4uIGFyZW4ndCB0aGVyZSBvdGhlciBBdGhlcm9zIFVTQiBkcml2ZXJzPyBTcGVjaWZpY2FsbHksIGBhdGg5a19odGNgLiBJIG5lZWQgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluIGlmIHRoYXQgZHJpdmVyIGNhbiBoYW5kbGUgREZTLiBJdCdzIGNydWNpYWwgZm9yIHRoZSB1c2VyJ3Mgc2V0dXAuXG5cbkkgaGF2ZSBhIG5hZ2dpbmcgZmVlbGluZyBJIGxvb2tlZCBpbnRvIHRoaXMgYmVmb3JlLiBJICp0aGluayogSSBncmVwcGVkIGZvciBgYXRoOWtfZGZzX3Byb2Nlc3NfcGh5ZXJyYCB3aXRoaW4gdGhlIGBhdGg5ay9odGNgIGRpcmVjdG9yeSBwcmV2aW91c2x5LCBhbmQgSSBkaWRuJ3QgZ2V0IGFueSBoaXRzLiBCdXQgSSBuZWVkIHRvIGRvdWJsZS1jaGVjayBteSB3b3JrLiBJIG5lZWQgdG8gYmUgMTAwJSBzdXJlIGlmIGBhdGg5a19odGNgIGFjdHVhbGx5IHN1cHBvcnRzIERGUy4gTGV0IG1lIHZlcmlmeSB0aGlzIHF1aWNrbHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMzMjUxLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDAwOjE0OjI2LjM0NTUyNDc0N1oiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY4NDQ5NDc2LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZnNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMDA6MTQ6MjYuNTEzOTgzMDczWiIsIlNlcSI6MzEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ1OTg1ODcxNTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQ3VycmVudCBMaW5lIG9mIFJlYXNvbmluZyoqXG5cbkFscmlnaHQsIHNvIGl0J3MgY2xlYXIgdGhhdCBgYXRoOWtfaHRjYCBpc24ndCBnb2luZyB0byBjdXQgaXQgZm9yIHRoaXMgREZTIHRhc2suIFRoYXQgcHJldHR5IG11Y2ggbGVhdmVzIG1lIHdpdGggYGF0aDEwa191c2JgLCByaWdodD8gQnV0IGhvbGQgb24gYSBzZWNvbmQuLi4gaXMgYGF0aDEwa191c2JgIHRoZSAqb25seSogb3B0aW9uPyBJIG5lZWQgdG8gY29uc2lkZXIgYWxsIHRoZSBhbmdsZXMuIExldCBtZSB0aGluay4uLiB3aGF0IGFib3V0IGBtYWM4MDIxMV9od3NpbWA/XG5cbkFoLCByaWdodCwgYG1hYzgwMjExX2h3c2ltYCBpcyB0aGF0IGdlbmVyYWwgc29mdHdhcmUgc2ltdWxhdG9yLiBJdCdzIG5vdCB1c2luZyB0aGUgYGF0aDEwa2Agb3IgYGF0aDlrYCBkcml2ZXJzIGF0IGFsbDsgaXQncyBnb3QgaXRzIG93biB0aGluZywgYG1hYzgwMjExX2h3c2ltLmNgLiBUaGF0IG1lYW5zLCBpdCB3b24ndCBiZSBydW5uaW5nIGBkZnNfcHJpX2RldGVjdG9yLmNgLCBzbyB0aGF0J3MgYSBkZWFkIGVuZC5cblxuT2theSwgbGV0J3MgY2lyY2xlIGJhY2sgdG8gdGhlIG5ld2VyIGRyaXZlcnMuIFdoYXQgYWJvdXQgYGF0aDExa2Agb3IgYGF0aDEya2A/IERvICp0aGV5KiBsZXZlcmFnZSBgZGZzX3ByaV9kZXRlY3Rvci5jYD8gVGhhdCdzIHRoZSBrZXkgcXVlc3Rpb24uIExldCdzIHNlZSBpZiBgYXRoMTFrYCB1dGlsaXplcyB0aGUgYGRmc19wYXR0ZXJuX2RldGVjdG9yYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzM2NDIsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOTAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMDA6MTQ6MzEuMTEyNTc0MjQzWiIsIlNlcSI6MzIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyODk2NzIyMzEsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRmc19wYXR0ZXJuX2RldGVjdG9yXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQwMDoxNDozMS40MDIyNTUyMTRaIiwiU2VxIjozMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjkyNjQyNTg4MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBzdW1tYXJpemVkIGluIHRoZSBmaXJzdCBwZXJzb24sIGFzc3VtaW5nIHRoZSBhdWRpZW5jZSBpcyBrbm93bGVkZ2VhYmxlOlxuXG4qKktlcm5lbCBNb2R1bGUgSW52ZXN0aWdhdGlvbioqXG5cblJpZ2h0LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHdpcmVsZXNzIGRyaXZlcnMuIFRoZSBxdWVzdGlvbiBvZiB3aGV0aGVyIG9yIG5vdCBhIHNwZWNpZmljIGZlYXR1cmUgb3IgbWVjaGFuaXNtIGlzIHV0aWxpemVkIGNvbWVzIHVwIGZyZXF1ZW50bHkuIExldCdzIHNlZS4uLiBJJ3ZlIGdvdCBgYXRoMTFrYCBpbiBtaW5kIHJpZ2h0IG5vdy4gSG9sZCBvbi4uLiBJJ20gcHJldHR5IHN1cmUgdGhhdCBvbmUgaXNuJ3QgZW1wbG95aW5nIGl0LCBuby4gVGhhdCdzIGEgc29saWQgbmVnYXRpdmUuIEJ1dCB3YWl0IGEgbWludXRlLCBhbmQgaGVyZSBpcyBhIG5ldyB0cmFpbiBvZiB0aG91Z2h0Li4uIHdoYXQgYWJvdXQgdGhlIG5ld2VyIGBhdGgxMmtgIG1vZHVsZT8gSSBzaG91bGQgZXhwbG9yZSB0aGF0IG9uZSBuZXh0LCBqdXN0IHRvIGJlIHRob3JvdWdoIGFuZCBhdm9pZCBtYWtpbmcgYW55IHByZW1hdHVyZSBhc3N1bXB0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzQxNDYsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQwMDoxNDozNC4zMjg2ODM1NzdaIiwiU2VxIjozNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM0NzU4MDA2MCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGZzX3BhdHRlcm5fZGV0ZWN0b3JcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDAwOjE0OjM0LjY3NjI3NzMzNVoiLCJTZXEiOjM1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMjA4MTM4Njk5MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIHRoZSBERlMgRGV0ZWN0aW9uIENvZGUqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGJlZW4gbG9va2luZyBpbnRvIHRoaXMgY29kZSByZWxhdGVkIHRvIERGUyAoRHluYW1pYyBGcmVxdWVuY3kgU2VsZWN0aW9uKS4gU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8gZm9jdXMgb24gdGhlIGBhdGg5a2AgYW5kIGBhdGgxMGtgIGRyaXZlcnMsIGJlY2F1c2UgdGhleSdyZSB0aGUgb25lcyB0aGF0IHVzZSBgZGZzX3BhdHRlcm5fZGV0ZWN0b3JgIGFuZCBgZGZzX3ByaV9kZXRlY3RvcmAuIFNpbmNlIGBhdGg5a2AgaXMgUENJLW9ubHksIGFuZCBgYXRoMTBrYCBpbmNsdWRlcyBgYXRoMTBrX3VzYmAsIEkgY2FuIHRhcmdldCBmdXp6aW5nIHRoZSBgYXRoMTBrX3VzYmAgZHJpdmVyIHZpYSBVU0IgZnV6emluZy4gVGhhdCBtZWFucyBJIGNhbiB1c2UgU3l6a2FsbGVyJ3MgYGR1bW15X2hjZGAgdG8gZG8gdGhpcyBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIHdoaWNoIGlzIHBlcmZlY3QuXG5cbkkgbmVlZCB0byBjb25maXJtIGBhdGgxMGtfdXNiYCBpcyBlbmFibGVkIGluIFN5emthbGxlciBieSBkZWZhdWx0LiBJdCB1c3VhbGx5IGlzLCBhcyBgQ09ORklHX0FUSDEwS19VU0I9eWAsIGJ1dCBJJ2xsIGFkZCBgQVRIMTBLX1VTQmAgYW5kIGBBVEgxMEtfREZTX0NFUlRJRklFRGAgdG8gYEVuYWJsZUNvbmZpZ3NgIGp1c3QgdG8gYmUgY2VydGFpbi4gQmV0dGVyIHNhZmUgdGhhbiBzb3JyeS5cblxuTm93LCBsZXQncyBsb29rIGF0IHRoaXMgc3BlY2lmaWMgcGF0Y2guIEl0J3MgYSBmdW5jdGlvbmFsIGNoYW5nZSB3aXRoaW4gYHBkZV9nZXRfbXVsdGlwbGVgLiBUaGUgb3JpZ2luYWwgY29kZSB1c2VkIGRpdmlzaW9uLCBhbmQgbm93IGl0J3MgdXNpbmcgcmVjaXByb2NhbCBtdWx0aXBsaWNhdGlvbi4gVGhpcyBpcyBhIGNsYXNzaWMgc3BvdCBmb3IgZnV6emluZyEgUmVwbGFjaW5nIGRpdmlzaW9uIHdpdGggcmVjaXByb2NhbCBtdWx0aXBsaWNhdGlvbiBjb3VsZCBpbnRyb2R1Y2UgcHJlY2lzaW9uIGlzc3Vlcywgb3IgZXZlbiBhIGRpdmlkZS1ieS16ZXJvIGlmIGBmcmFjdGlvbl9yZWNpcGAgaXNuJ3QgaW5pdGlhbGl6ZWQgY29ycmVjdGx5LiBJdCdzIGNyaXRpY2FsIHRvIG1ha2Ugc3VyZSB0aGlzIGRvZXNuJ3QgaW50cm9kdWNlIGFueSByZWdyZXNzaW9ucy5cblxuV2FpdCwgYGZyYWN0aW9uX3JlY2lwYCBpcyBpbml0aWFsaXplZCBpbiBgcHNlcV9oYW5kbGVyX2NyZWF0ZV9zZXF1ZW5jZXNgLiBJdCBsb29rcyBsaWtlIGlmIGBwcy5wcmlgIGlzIDAsIHRoZW4gYHBzLnByaV9yZWNpcGAgYmVjb21lcyAwLiBUaGVuIGByZWNpcHJvY2FsX2RpdmlkZSh2YWwsIGZyYWN0aW9uX3JlY2lwKWAgd291bGQgYmUgY2FsbGVkIHdpdGggMCBhcyBvbmUgb2YgaXRzIGlucHV0cy4gVGhlIGNvZGUgY2FsbHMgYHJlY2lwcm9jYWxfZGl2aWRlKGEsIFIpYCB3aGljaCBleHBhbmRzIG91dCB0byBgKHUzMikoKCh1NjQpYSAqIFIubSkgXHUwMDNlXHUwMDNlIFIuc2gxKSBcdTAwM2VcdTAwM2UgUi5zaDJgLiBJZiBgUi5tYCBpcyB6ZXJvLCB0aGVuIHRoaXMgZnVuY3Rpb24gcmV0dXJucyAwLlxuXG5XYWl0IGEgc2Vjb25kLCB0aGUgKm9yaWdpbmFsKiBjb2RlIHdhczpcbmBgYGNcblx0ZmFjdG9yID0gdmFsIC8gZnJhY3Rpb247XG5cdHJlbWFpbmRlciA9IHZhbCAlIGZyYWN0aW9uO1xuYGBgXG5JZiBgZnJhY3Rpb25gICp3YXMqIHplcm8sIHRoYXQgd291bGQgY2F1c2UgYSBkaXZpZGUtYnktemVybyEgTm93LCBpZiBpdCdzIHplcm8sIHRoZSBmdW5jdGlvbiByZXR1cm5zIDAuICBFc3NlbnRpYWxseSwgaXQncyAqYXZvaWRpbmcqIGEgcG90ZW50aWFsIGRpdmlkZS1ieS16ZXJvIGV4Y2VwdGlvbiEgVGhlIG5ldyBjb2RlIGlzIGFjdHVhbGx5IG1vcmUgcm9idXN0LlxuXG5UaGUgcXVlc3Rpb24gdGhlbiBpcywgY2FuIGBmcmFjdGlvbmAgKHdoaWNoIGlzIGBwcy5wcmlgKSAqYmUqIHplcm8/IEkgc2VlIHRoYXQgYHBzLnByaWAgaXMgc2V0IHZpYSBgR0VUX1BSSV9UT19VU0VgLCB3aGljaCBpbnZvbHZlcyBhIHRpbWUgZGlmZmVyZW5jZS4gSWYgYHRzID09IHAtXHUwMDNldHNgLCB0aGVuIGBwcy5wcmlgIGNvdWxkIGluZGVlZCBiZSAwLCByaWdodD8gVGhlIGtleSBwb2ludCBpcyB0aGF0IHRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgYW5kIHRoZSBjcml0aWNhbCB0aGluZyBpcyB0byB2ZXJpZnkgaXRzIGJlaGF2aW9yIHVuZGVyIGFsbCBzY2VuYXJpb3MuXG5cbkFscmlnaHQsIHNvIHRoZSBmb2N1cyBzeW1ib2xzIEkgbmVlZCB0byB0YXJnZXQgZm9yIGZ1enppbmcgYXJlOiBgcGRlX2dldF9tdWx0aXBsZWAgKHN0YXRpYyksIGBwc2VxX2hhbmRsZXJfY3JlYXRlX3NlcXVlbmNlc2AgKHN0YXRpYyksIGFuZCBgcHNlcV9oYW5kbGVyX2FkZF90b19leGlzdGluZ19zZXFzYCAoc3RhdGljKS4gVGhlc2UgYXJlIGFsbCBpbnRlcm5hbCB0byBgZGZzX3ByaV9kZXRlY3Rvci5jYCwgc28gSSBuZWVkIHRvIGZpbmQgdGhlIGV4cG9ydGVkIG9yIG5vbi1zdGF0aWMgZnVuY3Rpb25zIHRoYXQgY2FsbCB0aGVtIHRvIGJ1aWxkIHVwIGEgZnV6emluZyBzdHJhdGVneS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzQzNjksIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5MDUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMDA6MTQ6NDYuNzU3NjY2OTk4WiIsIlNlcSI6MzYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTY4MzQ1MTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicHNlcV9oYW5kbGVyX2NyZWF0ZV9zZXF1ZW5jZXNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wcmlfZGV0ZWN0b3IuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3ByaV9kZXRlY3Rvci5jPTIwND1zdGF0aWMgYm9vbCBwdWxzZV9xdWV1ZV9lbnF1ZXVlKHN0cnVjdCBwcmlfZGV0ZWN0b3IgKnBkZSwgdTY0IHRzKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wcmlfZGV0ZWN0b3IuYy0yMjYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wcmlfZGV0ZWN0b3IuYzoyMjc6c3RhdGljIGJvb2wgcHNlcV9oYW5kbGVyX2NyZWF0ZV9zZXF1ZW5jZXMoc3RydWN0IHByaV9kZXRlY3RvciAqcGRlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcHJpX2RldGVjdG9yLmMtMjI4LVxcdFxcdFxcdFxcdFxcdCAgdTY0IHRzLCB1MzIgbWluX2NvdW50KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wcmlfZGV0ZWN0b3IuYz0zODk9c3RhdGljIHN0cnVjdCBwcmlfc2VxdWVuY2UgKnByaV9kZXRlY3Rvcl9hZGRfcHVsc2Uoc3RydWN0IHByaV9kZXRlY3RvciAqZGUsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3ByaV9kZXRlY3Rvci5jLTQxMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3ByaV9kZXRlY3Rvci5jOjQxMjpcXHRpZiAoIXBzZXFfaGFuZGxlcl9jcmVhdGVfc2VxdWVuY2VzKGRlLCB0cywgbWF4X3VwZGF0ZWRfc2VxKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcHJpX2RldGVjdG9yLmMtNDEzLVxcdFxcdHByaV9kZXRlY3Rvcl9yZXNldChkZSwgdHMpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQwMDoxNDo0Ni45NzQ1MDcyNjRaIiwiU2VxIjozNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzE4NzQxNjY5OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgYnJlYWtkb3duIG9mIG15IHRob3VnaHQgcHJvY2VzczpcblxuKipUcmFjaW5nIGBwcmlfZGV0ZWN0b3JfYWRkX3B1bHNlYCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGBwcmlfZGV0ZWN0b3JfYWRkX3B1bHNlYCBhbmQgSSBzZWUgaXQgaW1tZWRpYXRlbHkgY2FsbHMgYHBzZXFfaGFuZGxlcl9jcmVhdGVfc2VxdWVuY2VzYC4gVGhhdCdzIGludGVyZXN0aW5nLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0J3MgaGFwcGVuaW5nIHdpdGhpbiB0aGlzIGZ1bmN0aW9uIGFuZCBob3cgaXQgcmVsYXRlcyB0byB0aGUgYmlnZ2VyIHBpY3R1cmUuIEknbSBnb2luZyB0byBmb2xsb3cgdGhlIGNvbnRyb2wgZmxvdyBmcm9tIHRoZSBzb3VyY2UsIHN0YXJ0aW5nIHdpdGggYHByaV9kZXRlY3Rvcl9hZGRfcHVsc2VgLCBhcyB0aGF0IHNlZW1zIGxpa2UgdGhlIGVudHJ5IHBvaW50LiBJJ2xsIG5lZWQgdG8gZHJpbGwgZG93biBpbnRvIHRoZSBpbm5lciB3b3JraW5ncyBvZiBgcHNlcV9oYW5kbGVyX2NyZWF0ZV9zZXF1ZW5jZXNgIGFzIHdlbGwgdG8gcHJvcGVybHkgdW5kZXJzdGFuZCB0aGUgcmVsYXRpb25zaGlwLiBUaGlzIGxvb2tzIGxpa2UgYSBwcm9taXNpbmcgYXZlbnVlIGZvciB1bmRlcnN0YW5kaW5nIGhvdyB0aGUgc3lzdGVtIGhhbmRsZXMgcHVsc2Ugc2VxdWVuY2VzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNjM1OCwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDAwOjE0OjUwLjE2MTkyNjU3M1oiLCJTZXEiOjM4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mzc4MzUzNTQyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInByaV9kZXRlY3Rvcl9hZGRfcHVsc2VcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3ByaV9kZXRlY3Rvci5jPTM4Mj1zdGF0aWMgdm9pZCBwcmlfZGV0ZWN0b3JfZXhpdChzdHJ1Y3QgcHJpX2RldGVjdG9yICpkZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcHJpX2RldGVjdG9yLmMtMzg4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcHJpX2RldGVjdG9yLmM6Mzg5OnN0YXRpYyBzdHJ1Y3QgcHJpX3NlcXVlbmNlICpwcmlfZGV0ZWN0b3JfYWRkX3B1bHNlKHN0cnVjdCBwcmlfZGV0ZWN0b3IgKmRlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcHJpX2RldGVjdG9yLmMtMzkwLVxcdFxcdFxcdFxcdFxcdFxcdCAgIHN0cnVjdCBwdWxzZV9ldmVudCAqZXZlbnQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3ByaV9kZXRlY3Rvci5jPTQyNT1zdHJ1Y3QgcHJpX2RldGVjdG9yICpwcmlfZGV0ZWN0b3JfaW5pdChjb25zdCBzdHJ1Y3QgcmFkYXJfZGV0ZWN0b3Jfc3BlY3MgKnJzKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wcmlfZGV0ZWN0b3IuYy00MzItXFx0ZGUtXFx1MDAzZWV4aXQgPSBwcmlfZGV0ZWN0b3JfZXhpdDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3ByaV9kZXRlY3Rvci5jOjQzMzpcXHRkZS1cXHUwMDNlYWRkX3B1bHNlID0gcHJpX2RldGVjdG9yX2FkZF9wdWxzZTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3ByaV9kZXRlY3Rvci5jLTQzNC1cXHRkZS1cXHUwMDNlcmVzZXQgPSBwcmlfZGV0ZWN0b3JfcmVzZXQ7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDAwOjE0OjUwLjU0MDI4NTI5NVoiLCJTZXEiOjM5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MjY0OTczNTc5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBpZiB0aGV5IGFyZSBteSBvd246XG5cbioqSW52ZXN0aWdhdGluZyBQdWxzZSBEZXRlY3Rpb24gSW5pdGlhbGl6YXRpb24qKlxuXG5BbHJpZ2h0LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEl0IGxvb2tzIGxpa2UgYHByaV9kZXRlY3Rvcl9pbml0YCBpcyBzZXR0aW5nIHVwIHNvbWV0aGluZywgYW5kIHNwZWNpZmljYWxseSwgaXQgc2VlbXMgdG8gYmUgbGlua2luZyBhIGZ1bmN0aW9uLiBUaGUgbGluZSBgZGUtXHUwMDNlYWRkX3B1bHNlID0gcHJpX2RldGVjdG9yX2FkZF9wdWxzZWAgaXMgdGhlIGtleS4gSSBjYW4gaW1tZWRpYXRlbHkgaW5mZXIgdGhhdCBgZGVgIGlzIHByb2JhYmx5IGEgZGF0YSBzdHJ1Y3R1cmUgb2Ygc29tZSBraW5kIOKAkyBtYXliZSBhIGRldmljZSBkZXNjcmlwdG9yIG9yIGFuIG9iamVjdCDigJMgYW5kIGl0IGNvbnRhaW5zIGEgbWVtYmVyIGNhbGxlZCBgYWRkX3B1bHNlYC4gVGhlIGFzc2lnbm1lbnQgc3VnZ2VzdHMgdGhhdCBgcHJpX2RldGVjdG9yX2luaXRgIGlzIHRha2luZyB0aGUgYWRkcmVzcyBvZiB0aGUgZnVuY3Rpb24gYHByaV9kZXRlY3Rvcl9hZGRfcHVsc2VgIGFuZCBhc3NpZ25pbmcgaXQgdG8gdGhlIGBhZGRfcHVsc2VgIG1lbWJlciB3aXRoaW4gdGhpcyBgZGVgIHN0cnVjdHVyZS5cblxuU28sIGBkZS1cdTAwM2VhZGRfcHVsc2VgIGlzIG5vdyBhIGZ1bmN0aW9uIHBvaW50ZXIgdGhhdCB3aWxsIGV4ZWN1dGUgYHByaV9kZXRlY3Rvcl9hZGRfcHVsc2VgLiBUaGF0J3Mgc3RhbmRhcmQgcHJhY3RpY2UgZm9yIHNldHRpbmcgdXAgY2FsbGJhY2tzIG9yIG1ldGhvZHMgaW4gQywgZXNwZWNpYWxseSB3aGVuIHdvcmtpbmcgd2l0aCBkZXZpY2UgZHJpdmVycyBvciBldmVudCBoYW5kbGVycy5cblxuVGhlIGNvcmUgcXVlc3Rpb24gbm93LCBhbmQgdGhlIGNyaXRpY2FsIG9uZSB0byB1bmRlcnN0YW5kIHRoZSB3aG9sZSBwaWN0dXJlLCBpcyAqd2hvKiBjYWxscyBgcHJpX2RldGVjdG9yX2luaXRgPyBJIG5lZWQgdG8gdHJhY2UgYmFjayBmcm9tIHRoaXMgZnVuY3Rpb24gY2FsbC4gS25vd2luZyB3aGVyZSBgcHJpX2RldGVjdG9yX2luaXRgIGlzIHVzZWQgd2lsbCB0ZWxsIG1lIHRoZSBjb250ZXh0IG9mIHRoaXMgcHVsc2UgZGV0ZWN0aW9uIHN5c3RlbS4gSXMgaXQgYXQgaW5pdGlhbGl6YXRpb24sIGRldmljZSByZWdpc3RyYXRpb24sIG1vZHVsZSBsb2FkaW5nLCBvciBzb21ldGhpbmcgZWxzZSBlbnRpcmVseT8gVGhlIGNhbGxlciB3aWxsIHJldmVhbCB0aGUgc2NvcGUgYW5kIHB1cnBvc2Ugb2YgdGhlIGBhZGRfcHVsc2VgIGZ1bmN0aW9uIGFuZCBob3cgdGhlIHN5c3RlbSBtYW5hZ2VzIHRoaXMuIFRoaXMgaXMgdGhlIGNydWNpYWwgcGllY2Ugb2YgdGhlIHB1enpsZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzY4NzYsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQwMDoxNDo1NC44MDUyNjE2NzRaIiwiU2VxIjo0MCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMzODM5NTM5MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwcmlfZGV0ZWN0b3JfaW5pdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcGF0dGVybl9kZXRlY3Rvci5jPTE5Nz1jaGFubmVsX2RldGVjdG9yX2NyZWF0ZShzdHJ1Y3QgZGZzX3BhdHRlcm5fZGV0ZWN0b3IgKmRwZCwgdTE2IGZyZXEpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3BhdHRlcm5fZGV0ZWN0b3IuYy0yMTAtXFx0XFx0Y29uc3Qgc3RydWN0IHJhZGFyX2RldGVjdG9yX3NwZWNzICpycyA9IFxcdTAwMjZkcGQtXFx1MDAzZXJhZGFyX3NwZWNbaV07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmM6MjExOlxcdFxcdHN0cnVjdCBwcmlfZGV0ZWN0b3IgKmRlID0gcHJpX2RldGVjdG9yX2luaXQocnMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcGF0dGVybl9kZXRlY3Rvci5jLTIxMi1cXHRcXHRpZiAoZGUgPT0gTlVMTClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcHJpX2RldGVjdG9yLmM9Mzg5PXN0YXRpYyBzdHJ1Y3QgcHJpX3NlcXVlbmNlICpwcmlfZGV0ZWN0b3JfYWRkX3B1bHNlKHN0cnVjdCBwcmlfZGV0ZWN0b3IgKmRlLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wcmlfZGV0ZWN0b3IuYy00MjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wcmlfZGV0ZWN0b3IuYzo0MjU6c3RydWN0IHByaV9kZXRlY3RvciAqcHJpX2RldGVjdG9yX2luaXQoY29uc3Qgc3RydWN0IHJhZGFyX2RldGVjdG9yX3NwZWNzICpycylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3ByaV9kZXRlY3Rvci5jLTQyNi17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3ByaV9kZXRlY3Rvci5oPTYyPXN0cnVjdCBwcmlfZGV0ZWN0b3Ige1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wcmlfZGV0ZWN0b3IuaC03OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3ByaV9kZXRlY3Rvci5oOjc5OnN0cnVjdCBwcmlfZGV0ZWN0b3IgKnByaV9kZXRlY3Rvcl9pbml0KGNvbnN0IHN0cnVjdCByYWRhcl9kZXRlY3Rvcl9zcGVjcyAqcnMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcHJpX2RldGVjdG9yLmgtODAtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDAwOjE0OjU1LjE0MzY2MzM3NVoiLCJTZXEiOjQxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODE4ODIxMzYwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6XG5cbioqRGVjb25zdHJ1Y3RpbmcgRGV0ZWN0b3IgSW5pdGlhbGl6YXRpb24gYW5kIFB1bHNlIEFkZGl0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYGNoYW5uZWxfZGV0ZWN0b3JfY3JlYXRlYC4gVGhhdCBuYW1lIHN0cm9uZ2x5IHN1Z2dlc3RzIHRoaXMgaXMgd2hlcmUgd2UgaW5zdGFudGlhdGUgYSBuZXcgZGV0ZWN0b3IgY2hhbm5lbCwgd2hpY2ggbWFrZXMgc2Vuc2UuIEltbWVkaWF0ZWx5LCB0aGUgY29kZSBzZWVtcyB0byBoYW5kIG9mZiB0aGUgY29yZSBpbml0aWFsaXphdGlvbiB0byBgcHJpX2RldGVjdG9yX2luaXRgLiBUaGF0IGltcGxpZXMgYSBwcml2YXRlIG9yIHByaW1hcnkgaW5pdGlhbGl6YXRpb24gZnVuY3Rpb24sIHByb2JhYmx5IHNldHRpbmcgdXAgaW50ZXJuYWwgZGF0YSBzdHJ1Y3R1cmVzIGFuZCBwZXJoYXBzIGFsbG9jYXRpbmcgbWVtb3J5LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGF0IGNhbGwgYmVjYXVzZSBpdCdzIHRoZSBmb3VuZGF0aW9uLlxuXG5Ob3cgdGhlIG1pbGxpb24tZG9sbGFyIHF1ZXN0aW9uOiB3aGVyZSBkb2VzIHRoZSBjb2RlICphZGQqIGluZGl2aWR1YWwgcHVsc2VzIHRvIHRoaXMgZGV0ZWN0b3I/IEknbSBtaXNzaW5nIHRoYXQga2V5IHBpZWNlLiBJIG5lZWQgdG8gdHJhY2UgdGhlIGNhbGwgdG8gYGFkZF9wdWxzZWAuIElkZW50aWZ5aW5nIHdoZXJlIHB1bHNlcyBhcmUgZmVkIGludG8gdGhlIHN5c3RlbSBpcyBjcnVjaWFsIGZvciB1bmRlcnN0YW5kaW5nIGhvdyB0aGUgZGV0ZWN0b3IgYWN0dWFsbHkgKmRldGVjdHMqIGFueXRoaW5nLiBJIG5lZWQgdG8gZmluZCB0aGUgY2FsbGluZyBjb250ZXh0IHRvIHNlZSBob3cgZGF0YSBpcyBiZWluZyBwcm9jZXNzZWQuIElzIGl0IGFuIGludGVycnVwdCwgYSBkYXRhIHN0cmVhbWluZyBmdW5jdGlvbiwgb3Igc29tZXRoaW5nIGVsc2UgZW50aXJlbHk/IFdpdGhvdXQgYGFkZF9wdWxzZWAgSSBoYXZlIG9ubHkgaGFsZiB0aGUgcGljdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzc2NzIsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQwMDoxNDo1OC45NjI0OTAxNDVaIiwiU2VxIjo0MiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2MzczMTY4NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhZGRfcHVsc2VcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmM9MjY3PXN0YXRpYyBib29sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmM6MjY4OmRwZF9hZGRfcHVsc2Uoc3RydWN0IGRmc19wYXR0ZXJuX2RldGVjdG9yICpkcGQsIHN0cnVjdCBwdWxzZV9ldmVudCAqZXZlbnQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmMtMjY5LVxcdCAgICAgIHN0cnVjdCByYWRhcl9kZXRlY3Rvcl9zcGVjcyAqcnMpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3BhdHRlcm5fZGV0ZWN0b3IuYy0yOTItXFx0XFx0c3RydWN0IHByaV9kZXRlY3RvciAqcGQgPSBjZC1cXHUwMDNlZGV0ZWN0b3JzW2ldO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcGF0dGVybl9kZXRlY3Rvci5jOjI5MzpcXHRcXHRzdHJ1Y3QgcHJpX3NlcXVlbmNlICpwcyA9IHBkLVxcdTAwM2VhZGRfcHVsc2UocGQsIGV2ZW50KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3BhdHRlcm5fZGV0ZWN0b3IuYy0yOTQtXFx0XFx0aWYgKHBzICE9IE5VTEwpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcGF0dGVybl9kZXRlY3Rvci5jPTM0MD1zdGF0aWMgY29uc3Qgc3RydWN0IGRmc19wYXR0ZXJuX2RldGVjdG9yIGRlZmF1bHRfZHBkID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmMtMzQyLVxcdC5zZXRfZGZzX2RvbWFpblxcdD0gZHBkX3NldF9kb21haW4sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmM6MzQzOlxcdC5hZGRfcHVsc2VcXHQ9IGRwZF9hZGRfcHVsc2UsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmMtMzQ0LVxcdC5nZXRfc3RhdHNcXHQ9IGRwZF9nZXRfc3RhdHMsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDAwOjE0OjU5LjEyNjIyNzc0MloiLCJTZXEiOjQzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMzc3Njg5MjUzNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIFRhcmdldCBQcmlvcml0aXphdGlvbiBmb3IgREZTIFJhZGFyIERldGVjdGlvbioqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93biBmb3IgZnV6emluZyBwdXJwb3Nlcywgc3BlY2lmaWNhbGx5IHRhcmdldGluZyB0aGUgREZTIHJhZGFyIGRldGVjdGlvbiBpbiB0aGVzZSB3aXJlbGVzcyBkcml2ZXJzLiBUaGUgY29yZSBjYWxsIGNoYWluIGlzIHdoYXQgSSdtIGludGVyZXN0ZWQgaW46IGBhdGgxMGtfd21pX2V2ZW50X2Rmc2AgKG9yLCByZWFsbHksIGBhdGgxMGtfd21pX2V2ZW50X3BoeWVycmApLCB3aGljaCB0cmlnZ2VycyBhIHNlcmllcyBvZiBldmVudHMgdWx0aW1hdGVseSBsZWFkaW5nIHRvIHJhZGFyIHB1bHNlIGRldGVjdGlvbi5cblxuRmlyc3QsIGBkcGRfYWRkX3B1bHNlYCBjYWxscyBgcGQtXHUwMDNlYWRkX3B1bHNlYCwgYW5kIGBkcGRfYWRkX3B1bHNlYCBpcyBhc3NpZ25lZCB0byBgZHBkLVx1MDAzZWFkZF9wdWxzZWAuIFdlIHNhdyB0aGF0IGBhci1cdTAwM2VkZnNfZGV0ZWN0b3ItXHUwMDNlYWRkX3B1bHNlYCBpcyBjYWxsZWQgYnkgYGF0aDEwa19kZnNfcmFkYXJfcmVwb3J0YCB3aGljaCBpbiB0dXJuIGlzIGNhbGxlZCBieSBgYXRoMTBrX3dtaV9ldmVudF9kZnNgLiBUaGlzIGNhbGwgY2hhaW4gaXMga2V5OiBgYXRoMTBrX3dtaV9ldmVudF9kZnNgIC1cdTAwM2UgYGF0aDEwa19kZnNfcmFkYXJfcmVwb3J0YCAtXHUwMDNlIGBkcGRfYWRkX3B1bHNlYCAtXHUwMDNlIGBwcmlfZGV0ZWN0b3JfYWRkX3B1bHNlYCAtXHUwMDNlIGBwc2VxX2hhbmRsZXJfY3JlYXRlX3NlcXVlbmNlc2AgLyBgcHNlcV9oYW5kbGVyX2FkZF90b19leGlzdGluZ19zZXFzYCAtXHUwMDNlIGBwZGVfZ2V0X211bHRpcGxlYC5cblxuTm93LCBmb3IgZnV6emluZywgSSd2ZSBnb3QgdG8gcHJpb3JpdGl6ZSB0aGUgdGFyZ2V0cy4gTGV0J3Mgc2VlLi4uXG5cbiogICBgYXRoMTBrX3dtaV9ldmVudF9kZnNgOiBJdCdzIG5vdCBzdGF0aWM7IGl0J3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBBY3R1YWxseSwgYGF0aDEwa193bWlfZXZlbnRfcGh5ZXJyYCBhbHNvIGlzbid0IHN0YXRpYyBhbmQgaXQgY2FsbHMgYGF0aDEwa193bWlfZXZlbnRfZGZzYCwgc28gYm90aCBhcmUgcHJpbWUgY2FuZGlkYXRlcy5cbiogICBgYXRoMTBrX2Rmc19yYWRhcl9yZXBvcnRgOiBJdCdzIGBzdGF0aWNgLCBzbyBpdCBtaWdodCBiZSBpbmxpbmVkLiBUaGF0IGNvdWxkIGNvbXBsaWNhdGUgdGhpbmdzLlxuKiAgIGBkcGRfYWRkX3B1bHNlYDogQWxzbyBgc3RhdGljYCwgd2hpY2ggaXMgbGVzcyBpZGVhbCBmb3IgZGlyZWN0IGZ1enppbmcuXG4qICAgYHByaV9kZXRlY3Rvcl9hZGRfcHVsc2VgOiBUaGlzIGlzIGFsc28gYHN0YXRpY2AuIFNvLCBub3QgZGlyZWN0bHkgZnV6emFibGUuXG5cblNvIHRoZSBiZXN0IGluaXRpYWwgbm9uLXN0YXRpYyBwb2ludHMgYXJlIGNsZWFybHkgYGF0aDEwa193bWlfZXZlbnRfZGZzYCBhbmQgYGF0aDEwa193bWlfZXZlbnRfcGh5ZXJyYCwgc2luY2UgdGhleSBzdGFydCB0aGUgd2hvbGUgcHJvY2Vzcy5cblxuV2hhdCBhYm91dCB0aGUgYGF0aDlrYCBzaWRlIG9mIHRoaW5ncz8gV2UndmUgZ290IGBhdGg5a19kZnNfcHJvY2Vzc19waHllcnJgIC1cdTAwM2UgYGF0aDlrX2Rmc19wcm9jZXNzX3JhZGFyX3B1bHNlYCAtXHUwMDNlIGBwZC1cdTAwM2VhZGRfcHVsc2VgLiBJdCdzIFBDSS1vbmx5IHNvIGl0IG1pZ2h0IGJlIGhhcmRlciB0byByZWFjaCB3aXRob3V0IFBDSSBmdXp6aW5nLCBidXQgaXQgaXMgd29ydGggaW5jbHVkaW5nLiBgYXRoOWtfZGZzX3Byb2Nlc3NfcGh5ZXJyYCBpc24ndCBzdGF0aWMgZWl0aGVyLiBTbywgSSB3aWxsIGluY2x1ZGUgYGF0aDlrX2Rmc19wcm9jZXNzX3BoeWVycmAgYW5kIGBhdGg5a19kZnNfcHJvY2Vzc19yYWRhcl9wdWxzZWAgaW4gdGhlIGxpc3QgdG8gYXR0ZW1wdCB0byBjb3ZlciBpdC5cblxuRmluYWxseSwgdGhlIHJlcXVpcmVkIGNvbmZpZ3MgYXJlOiBgQ09ORklHX0FUSDEwS19ERlNfQ0VSVElGSUVEYCwgYENPTkZJR19BVEgxMEtfVVNCYCwgYW5kIGBDT05GSUdfQVRIOUtfREZTX0NFUlRJRklFRGAuIFdlIG5lZWQgdG8gdmVyaWZ5IHRoYXQgYENPTkZJR19BVEg5S19ERlNfQ0VSVElGSUVEYCBhY3R1YWxseSBleGlzdHMgaW4gdGhlIGtlcm5lbCBjb25maWcuXG5cblRoZXJlZm9yZSwgdGhlIGtleSB0YXJnZXRzIGZvciBpbml0aWFsIGZ1enppbmcgc2hvdWxkIGJlIGBhdGgxMGtfd21pX2V2ZW50X2Rmc2AsIGBhdGgxMGtfd21pX2V2ZW50X3BoeWVycmAsIGFuZCBgYXRoOWtfZGZzX3Byb2Nlc3NfcGh5ZXJyYCwgYWltaW5nIHRvIHRyaWdnZXIgdGhlIERGUyByYWRhciBkZXRlY3Rpb24gbG9naWMgYW5kIGV4cG9zZSBhbnkgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdGllcyBpbiB0aGUgcHJvY2Vzc2luZyBvZiByYWRhciBwdWxzZSBldmVudHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM4MzEzLCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDAwOjE1OjEyLjkwMzEyMzUyOFoiLCJTZXEiOjQ0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjMxOTY5MTYxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkFUSDlLX0RGU19DRVJUSUZJRURcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZz05PWNvbmZpZyBBVEg5S19ERlNfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTEwLVxcdGRlZl9ib29sIHlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxMTpcXHRkZXBlbmRzIG9uIEFUSDlLX0RFQlVHRlMgXFx1MDAyNlxcdTAwMjYgQVRIOUtfREZTX0NFUlRJRklFRFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTEyLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc9NzY9Y29uZmlnIEFUSDlLX1RYOTlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTk1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjk2OmNvbmZpZyBBVEg5S19ERlNfQ0VSVElGSUVEXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctOTctXFx0Ym9vbCBcXFwiQXRoZXJvcyBERlMgc3VwcG9ydCBmb3IgY2VydGlmaWVkIHBsYXRmb3Jtc1xcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZT0xNT1hdGg5ay0kKENPTkZJR19BVEg5S19ERlNfREVCVUdGUykgKz0gZGZzX2RlYnVnLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGU6MTY6YXRoOWstJChDT05GSUdfQVRIOUtfREZTX0NFUlRJRklFRCkgKz0gZGZzLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGUtMTctYXRoOWstJChDT05GSUdfQVRIOUtfVFg5OSkgKz0gdHg5OS5vXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGZzLmgtMjEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2Rmcy5oOjIyOiNpZiBkZWZpbmVkKENPTkZJR19BVEg5S19ERlNfQ0VSVElGSUVEKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZnMuaC0yMy0vKipcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9pbml0LmM9ODYzPXN0YXRpYyBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX2lmYWNlX2NvbWJpbmF0aW9uIGlmX2NvbWJbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9pbml0LmMtODY5LVxcdFxcdC5iZWFjb25faW50X2luZnJhX21hdGNoID0gdHJ1ZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jOjg3MDojaWZkZWYgQ09ORklHX0FUSDlLX0RGU19DRVJUSUZJRURcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jLTg3MS1cXHRcXHQucmFkYXJfZGV0ZWN0X3dpZHRocyA9XFx0QklUKE5MODAyMTFfQ0hBTl9XSURUSF8yMF9OT0hUKSB8XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDAwOjE1OjEzLjUzNTA5ODY2OVoiLCJTZXEiOjQ1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2ODU0MDYyOTUwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IENvbmZpZ3VyYXRpb24gQ29udW5kcnVtKipcblxuT2theSwgc28gSSdtIHRyeWluZyB0byBuYWlsIGRvd24gdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zIGhlcmUuIEkgc2VlIGBDT05GSUdfQVRIOUtfREZTX0NFUlRJRklFRGAgZXhpc3RzLCB3aGljaCBpcyBnb29kLiBCdXQgd2FpdCwgYGF0aDlrYCBpcyBQQ0ktb25seS4uLiByaWdodD8gSG1tLCBtYXliZSBJIHNob3VsZCBsaXN0IGl0IGFueXdheSwganVzdCBmb3IgY29tcGxldGVuZXNzLiBHb3R0YSBiZSB0aG9yb3VnaC5cblxuVGhlbiwgdGhlcmUncyBgQ09ORklHX0FUSDlLYCBhbmQgYENPTkZJR19BVEgxMEtgLiBDaGFuY2VzIGFyZSB0aGV5J3JlIGFscmVhZHkgZW5hYmxlZCwgYnV0IGxpc3RpbmcgdGhlbSBjYW4ndCBodXJ0LiBBbHdheXMgZG91YmxlLWNoZWNrLCBlc3BlY2lhbGx5IGluIGEgZnV6emluZyBjb250ZXh0LiBBbmQgaG9sZCBvbiwgZm9yIHZpcnR1YWxpemVkIGZ1enppbmcsIGBDT05GSUdfQVRIMTBLX1VTQmAgaXMgcHJvYmFibHkgdGhlIG1vc3QgY3J1Y2lhbCBvbmUgb2YgdGhlbSBhbGwsIHRoYXQncyBkZWZpbml0ZWx5IGdvaW5nIG9uIHRoZSBsaXN0LlxuXG5MZXQncyBzZWUsIHdoYXQgYWJvdXQgYENPTkZJR19BVEg5S19IVENgPyBJIHNlZW0gdG8gcmVjYWxsIHdlJ3ZlIGxvb2tlZCBhdCB0aGF0IGJlZm9yZSBhbmQgY29uZmlybWVkIGl0IGRvZXNuJ3QgdXNlIERGUywgYnV0IGxldCBtZSBqdXN0IGNvbmZpcm0gaXQuLi4geWVzLCBpdCBkb2Vzbid0IHVzZSBERlMuXG5cblJpZ2h0LCBzbyB0byByZWNhcCwgaGVyZSdzIHdoYXQgSSB3YW50IHRvIG1ha2Ugc3VyZSB3ZSBoYXZlIGNvbmZpZ3VyZWQ6XG5gQVRIMTBLYFxuYEFUSDEwS19VU0JgXG5gQVRIMTBLX0RGU19DRVJUSUZJRURgXG5gQVRIOUtgXG5gQVRIOUtfREZTX0NFUlRJRklFRGBcbk9oLCBhbmQgYE1BQzgwMjExX0hXU0lNYCAtLSBub3QgZGlyZWN0bHkgcmVsYXRlZCB0byB0aGUgYGF0aGAgc3R1ZmYsIGJ1dCBnZW5lcmFsbHkgdXNlZnVsIGZvciBXaUZpIHRlc3RpbmcsIHNvIGxldCdzIHRocm93IHRoYXQgaW4gZm9yIGdvb2QgbWVhc3VyZS5cblxuTm93LCBhIHF1aWNrIHJldmlldyBvZiB0aGUgZGVwZW5kZW5jeSBjb21waWxhdGlvbiBsb2dpYy4uLiBTbywgYGRmc19wcmlfZGV0ZWN0b3IuY2AgaXMgY29tcGlsZWQgd2hlbiBgQ09ORklHX0FUSF9DT01NT05gIGlzIGVuYWJsZWQsIHdoaWNoIGlzIHRoZSBiYXNlbGluZS4gQnV0LCBgZGZzLm9gIGluc2lkZSBgYXRoOWtgIGlzIGRlcGVuZGVudCBvbiBgQ09ORklHX0FUSDlLX0RGU19DRVJUSUZJRURgLiBBbmQsIGBkZnNfcGF0dGVybl9kZXRlY3Rvci5vYCBhbmQgYGRmc19wcmlfZGV0ZWN0b3Iub2AgaW4gYGF0aGAgYXJlIGJ1aWx0IHVuY29uZGl0aW9uYWxseSBpZiBgYXRoLmtvYCBpcyBidWlsdCwgd2hpY2gsIGluIHR1cm4sIGlzIGRlcGVuZGVudCBvbiBgQVRIOUtgIG9yIGBBVEgxMEtgIG9yIHRob3NlIHNvcnRzIG9mIHNldHRpbmdzLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgcmVsYXRpb25zaGlwcyBiZXR3ZWVuIHRob3NlIGNvbXBvbmVudHMuXG5cbk9rYXksIGxldCdzIGp1c3QgZ28gYmFjayBhbmQgZG91YmxlIGNoZWNrIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvTWFrZWZpbGVgIGFnYWluLCBqdXN0IHRvIG1ha2UgYWJzb2x1dGVseSBjZXJ0YWluIEkgaGF2ZW4ndCBtaXNzZWQgYW55dGhpbmcuIEdvdHRhIGJlIG1ldGljdWxvdXMgaGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDA1MTgsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMzYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMDA6MTU6MjAuMzg5MTY0NDg5WiIsIlNlcSI6NDYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjQ5MDk4ODQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGZzX3ByaV9kZXRlY3RvclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9NYWtlZmlsZT0xNT1hdGgtb2JqcyA6PVxcdG1haW4ubyBcXFxcXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvTWFrZWZpbGUtMTktXFx0XFx0ZGZzX3BhdHRlcm5fZGV0ZWN0b3IubyBcXFxcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL01ha2VmaWxlOjIwOlxcdFxcdGRmc19wcmlfZGV0ZWN0b3Iub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9NYWtlZmlsZS0yMS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcGF0dGVybl9kZXRlY3Rvci5jLTIwLSNpbmNsdWRlIFxcXCJkZnNfcGF0dGVybl9kZXRlY3Rvci5oXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcGF0dGVybl9kZXRlY3Rvci5jOjIxOiNpbmNsdWRlIFxcXCJkZnNfcHJpX2RldGVjdG9yLmhcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmMtMjItI2luY2x1ZGUgXFxcImF0aC5oXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wcmlfZGV0ZWN0b3IuYy0yMi0jaW5jbHVkZSBcXFwiZGZzX3BhdHRlcm5fZGV0ZWN0b3IuaFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3ByaV9kZXRlY3Rvci5jOjIzOiNpbmNsdWRlIFxcXCJkZnNfcHJpX2RldGVjdG9yLmhcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wcmlfZGV0ZWN0b3IuYy0yNC1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMDA6MTU6MjAuNjE0MDgwOTMzWiIsIlNlcSI6NDcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3NzY1Njc4NjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIHNlZSwgbXkgdGhpbmtpbmcgaGVyZSBpcyBjZW50ZXJlZCBvbiB0aGlzIGBkZnNfcHJpX2RldGVjdG9yLm9gIG9iamVjdCBmaWxlLiBSaWdodCwgaXQncyBkZWZpbml0ZWx5IHBhcnQgb2YgYGF0aC1vYmpzYCwgc28gdGhhdCBtZWFucyBpdCdzIGF1dG9tYXRpY2FsbHkgYnVpbHQgd2hlbmV2ZXIgYENPTkZJR19BVEhfQ09NTU9OYCBpcyBzZXQuIFRoYXQncyB0aGUgYmFzZWxpbmUsIHRoZSBkZWZhdWx0IGJ1aWxkIGNvbmRpdGlvbi5cblxuQnV0LCBhbmQgaGVyZSdzIHRoZSBjcml0aWNhbCBwb2ludCwganVzdCBiZWNhdXNlIGl0ICpjYW4qIGJlIGJ1aWx0IGRvZXNuJ3QgbWVhbiBpdCdzICp1c2VkKi4gVG8gYWN0dWFsbHkgZ2V0IHRoYXQgY29kZSB0byBleGVjdXRlLCB3ZSBuZWVkIGVpdGhlciBgQVRIMTBLX0RGU19DRVJUSUZJRURgIG9yIGBBVEg5S19ERlNfQ0VSVElGSUVEYCB0byBiZSBkZWZpbmVkLiBUaG9zZSBhcmUgdGhlIGVuYWJsaW5nIGNvbmRpdGlvbnMsIHRoZSBhY3R1YWwgZ2F0ZXMgdGhhdCBuZWVkIHRvIGJlIG9wZW5lZC5cblxuTm93LCBJJ20gZ2V0dGluZyBjdXJpb3VzIGFib3V0IHRoZSBiaWdnZXIgcGljdHVyZS4gSSBzaG91bGQgcHJvYmFibHkgaW52ZXN0aWdhdGUgaG93IHdpZGVzcHJlYWQgdGhlIHVzYWdlIG9mIGBkZnNfcGF0dGVybl9kZXRlY3Rvcl9pbml0YCBhY3R1YWxseSBpcy4gQXJlIHRoZXJlIG90aGVyIHBvaW50cyBvZiBpbnRlcmFjdGlvbiB0aGF0IEknbSBtaXNzaW5nPyBUaGF0IGZ1bmN0aW9uJ3Mgc2lnbmlmaWNhbmNlIHdpbGwgYmUgaGlnaGxpZ2h0ZWQgdGhyb3VnaCB0aGF0IGFuYWx5c2lzLiBJIG5lZWQgdG8gY2hlY2sgZm9yIG90aGVyIGRlcGVuZGVuY2llcywgb3RoZXIgcGxhY2VzIGluIHRoZSBjb2RlIHRoYXQgY2FsbCB0aGF0IGluaXRpYWxpemF0aW9uIGZ1bmN0aW9uIHRvIGhhdmUgYSBnb29kIHNlbnNlIG9mIGl0cyBpbXBhY3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQxNjY5LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMDA6MTU6MjQuMzkwNjUzMTYxWiIsIlNlcSI6NDgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzE4NDU1MzMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGZzX3BhdHRlcm5fZGV0ZWN0b3JfaW5pdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmM9OTk3MT1pbnQgYXRoMTBrX21hY19yZWdpc3RlcihzdHJ1Y3QgYXRoMTBrICphcilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmMtMTAyODUtXFx0XFx0YXItXFx1MDAzZWF0aF9jb21tb24uZGVidWdfbWFzayA9IEFUSF9EQkdfREZTO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmM6MTAyODY6XFx0XFx0YXItXFx1MDAzZWRmc19kZXRlY3RvciA9IGRmc19wYXR0ZXJuX2RldGVjdG9yX2luaXQoXFx1MDAyNmFyLVxcdTAwM2VhdGhfY29tbW9uLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmMtMTAyODctXFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgICBOTDgwMjExX0RGU19VTlNFVCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jPTY1Nj1zdGF0aWMgaW50IGF0aDlrX2luaXRfc29mdGModTE2IGRldmlkLCBzdHJ1Y3QgYXRoX3NvZnRjICpzYyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9pbml0LmMtNjg1LVxcdHNjLVxcdTAwM2VzY19haCA9IGFoO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9pbml0LmM6Njg2OlxcdHNjLVxcdTAwM2VkZnNfZGV0ZWN0b3IgPSBkZnNfcGF0dGVybl9kZXRlY3Rvcl9pbml0KGNvbW1vbiwgTkw4MDIxMV9ERlNfVU5TRVQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9pbml0LmMtNjg3LVxcdHNjLVxcdTAwM2V0eDk5X3Bvd2VyID0gTUFYX1JBVEVfUE9XRVIgKyAxO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmM9MzQ4PXN0cnVjdCBkZnNfcGF0dGVybl9kZXRlY3RvciAqXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmM6MzQ5OmRmc19wYXR0ZXJuX2RldGVjdG9yX2luaXQoc3RydWN0IGF0aF9jb21tb24gKmNvbW1vbixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3BhdHRlcm5fZGV0ZWN0b3IuYy0zNTAtXFx0XFx0XFx0ICBlbnVtIG5sODAyMTFfZGZzX3JlZ2lvbnMgcmVnaW9uKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmMtMzcxLX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3BhdHRlcm5fZGV0ZWN0b3IuYzozNzI6RVhQT1JUX1NZTUJPTChkZnNfcGF0dGVybl9kZXRlY3Rvcl9pbml0KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcGF0dGVybl9kZXRlY3Rvci5oPTk1PXN0cnVjdCBkZnNfcGF0dGVybl9kZXRlY3RvciB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3BhdHRlcm5fZGV0ZWN0b3IuaC0xMTQtLyoqXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmg6MTE1OiAqIGRmc19wYXR0ZXJuX2RldGVjdG9yX2luaXQoKSAtIGNvbnN0cnVjdG9yIGZvciBwYXR0ZXJuIGRldGVjdG9yIGNsYXNzXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmgtMTE2LSAqIEBwYXJhbSByZWdpb246IERGUyBkb21haW4gdG8gYmUgdXNlZCwgY2FuIGJlIE5MODAyMTFfREZTX1VOU0VUIGF0IGNyZWF0aW9uXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3BhdHRlcm5fZGV0ZWN0b3IuaD0xMTk9ZXh0ZXJuIHN0cnVjdCBkZnNfcGF0dGVybl9kZXRlY3RvciAqXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Rmc19wYXR0ZXJuX2RldGVjdG9yLmg6MTIwOmRmc19wYXR0ZXJuX2RldGVjdG9yX2luaXQoc3RydWN0IGF0aF9jb21tb24gKmNvbW1vbixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvZGZzX3BhdHRlcm5fZGV0ZWN0b3IuaC0xMjEtXFx0XFx0XFx0ICBlbnVtIG5sODAyMTFfZGZzX3JlZ2lvbnMgcmVnaW9uKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMDA6MTU6MjQuNjIyNTA0NDc0WiIsIlNlcSI6NDksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc5NzUzMzAwMzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgS2V5IERGUyBFbnRyeSBQb2ludHMqKlxuXG5Pa2F5LCBzbyBJJ3ZlIG5hcnJvd2VkIGRvd24gdGhlIGtleSBzeW1ib2xzIEkgbmVlZCB0byBmb2N1cyBvbiBmb3IgdGhpcyBERlMgYW5hbHlzaXMuIEl0IHNlZW1zIHRoZSBhY3Rpb24gaXMgYWxsIGluIGBhdGg5a2AgYW5kIGBhdGgxMGtgLiBUaGUgY3JpdGljYWwgZW50cnkgcG9pbnRzIHRvIHdhdGNoIGFyZTpcblxuKiAgIGBhdGgxMGtfd21pX2V2ZW50X2Rmc2BcbiogICBgYXRoMTBrX3dtaV9ldmVudF9waHllcnJgXG4qICAgYGF0aDlrX2Rmc19wcm9jZXNzX3BoeWVycmBcblxuTGV0J3MgcXVpY2tseSBjb25maXJtIHRoZXNlIGFyZW4ndCBzdGF0aWMgZnVuY3Rpb25zLCB3aGljaCB3b3VsZCBtYWtlIHRyYWNpbmcgdHJpY2tpZXIuIEFoYSwgYGF0aDEwa193bWlfZXZlbnRfZGZzYCBpcyByaWdodCB0aGVyZSBpbiBgYXRoMTBrL3dtaS5jYC4gR3JlYXQsIGFuZCBpdCdzIG5vdCBzdGF0aWM6IGB2b2lkIGF0aDEwa193bWlfZXZlbnRfZGZzKHN0cnVjdCBhdGgxMGsgKmFyLCBzdHJ1Y3Qgd21pX3BoeWVycl9ldl9hcmcgKnBoeWVyciwgdTY0IHRzZilgLiBQZXJmZWN0LlxuXG5Pa2F5LCBsZXQncyBtb3ZlIG9uIHRvIGBhdGgxMGtfd21pX2V2ZW50X3BoeWVycmA6IGB2b2lkIGF0aDEwa193bWlfZXZlbnRfcGh5ZXJyKHN0cnVjdCBhdGgxMGsgKmFyLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKWAuIE5vdCBzdGF0aWMgZWl0aGVyLiBHb29kIVxuXG5BbmQgZmluYWxseSwgYGF0aDlrX2Rmc19wcm9jZXNzX3BoeWVycmA6IGB2b2lkIGF0aDlrX2Rmc19wcm9jZXNzX3BoeWVycihzdHJ1Y3QgYXRoX3NvZnRjICpzYywgdm9pZCAqZGF0YSwgc3RydWN0IGF0aF9yeF9zdGF0dXMgKnJzLCB1NjQgbWFjdGltZSlgLiBBbHNvIG5vdCBzdGF0aWMuXG5cbkV4Y2VsbGVudC4gVGhlc2UgYXJlIHByZWNpc2VseSB3aGF0IEknbSBsb29raW5nIGZvci4gVGhleSBzZWVtIHRvIGJlIHRoZSBwcmltYXJ5IGVudHJ5IHBvaW50cyBmb3IgdGhlIERGUyByYWRhciBkZXRlY3Rpb24gbG9naWMgZnJvbSB0aGUgZHJpdmVyIHNpZGUsIHNvIGFueSBtb2RpZmljYXRpb24gdG8gdGhlIGRmcyBjb2RlIGlzIGdvaW5nIHRvIGJlIGludm9rZWQgZnJvbSBoZXJlLCB3aGljaCBpcyB3aGF0IEkgbmVlZCB0byB0cmFjZSBhbmQgdGVzdC4gSSBzaG91bGQgYmUgYWJsZSB0byBmb2xsb3cgdGhlc2UgY2FsbHMgaW50byB0aGUgbW9kaWZpZWQgYGRmc19wcmlfZGV0ZWN0b3IuY2AgY29kZSB0byBzZWUgZXhhY3RseSBob3cgdGhpbmdzIGFyZSBmbG93aW5nLlxuXG5Ob3csIGxldCdzIHRha2UgYSBxdWljayBsb29rIGF0IHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uczogYEFUSDEwS19ERlNfQ0VSVElGSUVEYCwgYEFUSDEwS19VU0JgLCBhbmQgYEFUSDlLX0RGU19DRVJUSUZJRURgLiBJbXBsaWVkIGFyZSBgQVRIMTBLYCBhbmQgYEFUSDlLYCwgc28gbGV0J3MgaW5jbHVkZSB0aG9zZSBmb3IgY29tcGxldGVuZXNzLiBIbW0sIGlzIGBDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNgIHJlbGF0ZWQgdG8gREZTPyBQZXJoYXBzIERGUyByZXF1aXJlcyBpdCB0byBiZSBlbmFibGVkLiBMZXQncyBkaWcgaW50byB0aGUgZGVwZW5kZW5jaWVzIG9mIGBBVEgxMEtfREZTX0NFUlRJRklFRGAgdG8gbWFrZSBzdXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0Mjc3MywiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQzOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQwMDoxNTozMi41OTc4MzczMDVaIiwiU2VxIjo1MCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMxMzg0NzAzNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQVRIMTBLX0RGU19DRVJUSUZJRURcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9LY29uZmlnPTg2PWNvbmZpZyBBVEgxMEtfVFJBQ0lOR1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9LY29uZmlnLTkyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZzo5Mzpjb25maWcgQVRIMTBLX0RGU19DRVJUSUZJRURcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWctOTQtXFx0Ym9vbCBcXFwiQXRoZXJvcyBERlMgc3VwcG9ydCBmb3IgY2VydGlmaWVkIHBsYXRmb3Jtc1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMDA6MTU6MzIuOTExNjg5NDQxWiIsIlNlcSI6NTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ3ODk1NDQyMTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlIGFuZCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipBbmFseXppbmcgdGhlIERlcGVuZGVuY2llcyBvZiBgQVRIMTBLX0RGU19DRVJUSUZJRURgKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIFdoZW4gSSBzZWUgYEFUSDEwS19ERlNfQ0VSVElGSUVEYCwgbXkgaW5pdGlhbCB0aG91Z2h0IGlzIGFsd2F5cyBhYm91dCB0aGUgaW1wbGljYXRpb25zIGZvciByZWd1bGF0b3J5IGNvbXBsaWFuY2UgYW5kLCBzcGVjaWZpY2FsbHksIER5bmFtaWMgRnJlcXVlbmN5IFNlbGVjdGlvbiAoREZTKSBpbiB0aGUgNSBHSHogYmFuZHMuIEkga25vdyB0aGlzIGxpa2VseSBzaWduaWZpZXMgdGhhdCB0aGUgc3BlY2lmaWMgQXRoZXJvcyB3aXJlbGVzcyBkcml2ZXIsIGBBVEgxMEtgLCByZXF1aXJlcyBzcGVjaWZpYyBjZXJ0aWZpY2F0aW9uIHRvIGxlZ2FsbHkgdHJhbnNtaXQgb24gdGhvc2UgREZTIGZyZXF1ZW5jaWVzIGluIGEgZ2l2ZW4gcmVndWxhdG9yeSBkb21haW4uIEl0J3Mgbm90IGp1c3QgYSBkcml2ZXIgY29uZmlndXJhdGlvbjsgaXTigJlzIGEgbGVnYWwgcmVxdWlyZW1lbnQuXG5cbkknbSBpbW1lZGlhdGVseSBjb25zaWRlcmluZyB0aGUgY29tcGxleGl0eSBvZiB0aGlzLiBUaGlzIGNvbmZpZ3VyYXRpb24gb3B0aW9uIHRpZXMgaW4gZGlyZWN0bHkgd2l0aCBob3cgdGhlIGtlcm5lbCBpbnRlcmFjdHMgd2l0aCB0aGUgaGFyZHdhcmUncyBSRiBjYXBhYmlsaXRpZXMuIFRoaXMgdGVsbHMgbWUgSSdsbCBuZWVkIHRvIGRpZyBpbnRvIHRoZSBrZXJuZWwgY29uZmlnIGZpbGVzIGFuZCBwb3RlbnRpYWxseSBpbnRvIHRoZSBkcml2ZXIgc291cmNlIGl0c2VsZi4gSSdsbCBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGV4YWN0IGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggdGhpcyBvcHRpb24gaXMgZW5hYmxlZC4gQXJlIHdlIHRhbGtpbmcgYWJvdXQgYSBoYXJkLWNvZGVkIGRlcGVuZGVuY3kgYmFzZWQgb24gdGhlIGNvdW50cnkgY29kZSBvciBhIHJ1bnRpbWUgY2hlY2ssIG9yIGJvdGg/XG5cbk15IG1pbmQgaXMgYWxyZWFkeSByYWNpbmcgdGhyb3VnaCBwb3NzaWJsZSBzY2VuYXJpb3MuIElzIHRoZSBjZXJ0aWZpY2F0aW9uIGEgc3RhdGljIHRoaW5nLCBvciBpcyBpdCBtb3JlIGNvbXBsZXggdGhhbiB0aGF0LCBkZXBlbmRpbmcgb24gdGhlIHBhcnRpY3VsYXIgaGFyZHdhcmUgcmV2aXNpb24sIGZpcm13YXJlIHZlcnNpb24sIG9yIGV2ZW4gdGhlIHJlZ3VsYXRvcnkgdmVyc2lvbiBpbiB1c2U/IEknbSBhbnRpY2lwYXRpbmcgc29tZSBsZXZlbCBvZiBpbnRlcmFjdGlvbiB3aXRoIHRoZSByZWd1bGF0b3J5IGRhdGFiYXNlLCBlaXRoZXIgbG9jYWxseSBjYWNoZWQgb3IgcXVlcmllZCBkdXJpbmcgdGhlIGRyaXZlcidzIGluaXRpYWxpemF0aW9uLiBJIGFsc28ga25vdyB0aGF0IGlmIGl0IGlzIHByZXNlbnQsIEknbGwgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgc3lzdGVtIGRldGVybWluZXMgd2hldGhlciBvciBub3QgaXQncyBjZXJ0aWZpZWQgYW5kIGhvdyB0aGUgZmlybXdhcmUgZ2V0cyBsb2FkZWQgdG8gbWF0Y2guXG5cbkknbGwgYmUgbG9va2luZyBmb3IgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMsIG5hdHVyYWxseS4gSSBuZWVkIHRvIHNlZSB3aGF0IG90aGVyIGtlcm5lbCBvcHRpb25zIG11c3QgYmUgZW5hYmxlZCBmb3IgdGhpcyB0byBldmVuICphcHBlYXIqIGFzIGEgc2VsZWN0YWJsZSBvcHRpb24uIEknbSB0aGlua2luZyBhYm91dCB3aGljaCBvdGhlciB3aXJlbGVzcyBmZWF0dXJlcywgc3VjaCBhcyByZWd1bGF0b3J5IGRvbWFpbiBzZWxlY3Rpb24gb3IgY291bnRyeSBjb2RlIGNvbmZpZ3VyYXRpb24sIG1pZ2h0IGJlIGltcGFjdGVkIGJ5IHRoaXMuIFRoaXMgYWxzbyBoaW50cyB0aGF0IHNlY3VyaXR5IGZlYXR1cmVzIHN1Y2ggYXMgV1BBMyBtYXkgYmUgaW1wYWN0ZWQgYnkgdGhlIGRyaXZlcidzIGNlcnRpZmljYXRpb24uXG5cbkZpbmFsbHksIEknbSBhbHJlYWR5IGFudGljaXBhdGluZyB0aGUgbmVlZCB0byBjcm9zcy1yZWZlcmVuY2UgdGhpcyB3aXRoIHRoZSByZWd1bGF0b3J5IGRvY3VtZW50cyBhbmQgYW55IHJlbGV2YW50IGRvY3VtZW50YXRpb24gZm9yIHRoZSBgQVRIMTBLYCBkcml2ZXIgaXRzZWxmLiBUaGlzIGFsc28gbWVhbnMgdGhhdCwgaWYgSSBhbSBnb2luZyB0byBwcm9wZXJseSBsZXZlcmFnZSB0aGlzIHNldHRpbmcsIEknbSBnb2luZyB0byBuZWVkIHRoZSBzcGVjaWZpY2F0aW9ucyBmb3IgdGhpcyBzZXR0aW5nIGZyb20gdGhlIGF0aDEwayBkcml2ZXIncyBkb2N1bWVudGF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MzkyMCwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDAwOjE1OjM3LjcwMTI0ODAzM1oiLCJTZXEiOjUyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5ODU0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogOTAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgOTA6XFx0XFx0aGVscFxcbiAgOTE6XFx0XFx0ICBTZWxlY3QgdGhpcyB0byBhdGgxMGsgdXNlIHRyYWNpbmcgaW5mcmFzdHJ1Y3R1cmUuXFxuICA5MjpcXHRcXG4gIDkzOlxcdGNvbmZpZyBBVEgxMEtfREZTX0NFUlRJRklFRFxcbiAgOTQ6XFx0XFx0Ym9vbCBcXFwiQXRoZXJvcyBERlMgc3VwcG9ydCBmb3IgY2VydGlmaWVkIHBsYXRmb3Jtc1xcXCJcXG4gIDk1OlxcdFxcdGRlcGVuZHMgb24gQVRIMTBLIFxcdTAwMjZcXHUwMDI2IENGRzgwMjExX0NFUlRJRklDQVRJT05fT05VU1xcbiAgOTY6XFx0XFx0ZGVmYXVsdCBuXFxuICA5NzpcXHRcXHRoZWxwXFxuICA5ODpcXHRcXHRUaGlzIG9wdGlvbiBlbmFibGVzIERGUyBzdXBwb3J0IGZvciBpbml0aWF0aW5nIHJhZGlhdGlvbiBvblxcbiAgOTk6XFx0XFx0YXRoMTBrLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQwMDoxNTozNy43MDEzNDkwMzNaIiwiU2VxIjo1MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzM0MzE2Njc1NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkV4YW1pbmluZyBXaXJlbGVzcyBEcml2ZXIgQ2VydGlmaWNhdGlvbiBSZXF1aXJlbWVudHMqKlxuXG5SaWdodCwgKkNGRzgwMjExX0NFUlRJRklDQVRJT05fT05VUyogaGFzIHJlYXJlZCBpdHMgaGVhZCBhZ2Fpbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCdzIHRyaWdnZXJpbmcgdGhpcyBwYXJ0aWN1bGFyIHJlcXVpcmVtZW50LiBNeSBpbW1lZGlhdGUgZm9jdXMgaXMgb24gKkFUSDlLX0RGU19DRVJUSUZJRUQqLiBUaGF0IHZhcmlhYmxlIGlzIHRoZSBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0IGRpZ2dpbmcgaW50byB0aGUgZGVwZW5kZW5jaWVzLiBVbmRlcnN0YW5kaW5nIGhvdyB0aGF0J3MgdGllZCBpbnRvIHRoZSBicm9hZGVyIGNlcnRpZmljYXRpb24gcGljdHVyZSBpcyBjcml0aWNhbC4gSSdsbCBuZWVkIHRvIHRyYWNlIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgYW5kIHRoZWlyIGludGVycmVsYXRpb25zaGlwcy4gSSB3YW50IHRvIGlkZW50aWZ5IHRoZSBkaXJlY3QgbGluayBiZXR3ZWVuIHRoZSBjZXJ0aWZpY2F0aW9uIGFuZCB0aGlzIHNwZWNpZmljIGRyaXZlciBlbGVtZW50LiBUaW1lIHRvIGRpZyBpbnRvIHRoZSBoZWFkZXJzIGFuZCBzZWUgd2hhdCB0aGV5J3JlIGRvaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NDYxNSwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM3LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMDA6MTU6NDEuMDQ0NTE4NTZaIiwiU2VxIjo1NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI4MjkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDkwLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDkwOlxcdFxcdCAgb2YgdGhlIGVsZWN0cmljIGFuZCBtYWduZXRpYyBmaWVsZCBzdHJlbmd0aCBhbmQgcG93ZXIgZGVuc2l0eSBmb3JcXG4gIDkxOlxcdFxcdCAgdHJhbnNtaXR0ZXJzIG9wZXJhdGluZyBhdCBmcmVxdWVuY2llcyBmcm9tIDMwMCBrSHogdG8gMTAwIEdIei5cXG4gIDkyOlxcdFxcdCAgUmVndWxhdG9yeSBib2RpZXMgYXJvdW5kIHRoZSB3b3JsZCByZXF1aXJlIHRoYXQgd2lyZWxlc3MgZGV2aWNlXFxuICA5MzpcXHRcXHQgIGJlIGV2YWx1YXRlZCB0byBtZWV0IHRoZSBSRiBleHBvc3VyZSBsaW1pdHMgc2V0IGZvcnRoIGluIHRoZVxcbiAgOTQ6XFx0XFx0ICBnb3Zlcm5tZW50YWwgU0FSIHJlZ3VsYXRpb25zLlxcbiAgOTU6XFx0XFxuICA5NjpcXHRjb25maWcgQVRIOUtfREZTX0NFUlRJRklFRFxcbiAgOTc6XFx0XFx0Ym9vbCBcXFwiQXRoZXJvcyBERlMgc3VwcG9ydCBmb3IgY2VydGlmaWVkIHBsYXRmb3Jtc1xcXCJcXG4gIDk4OlxcdFxcdGRlcGVuZHMgb24gQVRIOUsgXFx1MDAyNlxcdTAwMjYgQ0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTXFxuICA5OTpcXHRcXHRkZWZhdWx0IG5cXG4gMTAwOlxcdFxcdGhlbHBcXG4gMTAxOlxcdFxcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyBERlMgc3VwcG9ydCBmb3IgaW5pdGlhdGluZyByYWRpYXRpb24gb25cXG4gMTAyOlxcdFxcdCAgYXRoOWsuIFRoZXJlIGlzIG5vIHdheSB0byBkeW5hbWljYWxseSBkZXRlY3QgaWYgYSBjYXJkIHdhcyBERlNcXG4gMTAzOlxcdFxcdCAgY2VydGlmaWVkIGFuZCBhcyBzdWNoIHRoaXMgaXMgbGVmdCBhcyBhIGJ1aWxkIHRpbWUgb3B0aW9uLiBUaGlzXFxuIDEwNDpcXHRcXHQgIG9wdGlvbiBzaG91bGQgb25seSBiZSBlbmFibGVkIGJ5IHN5c3RlbSBpbnRlZ3JhdG9ycyB0aGF0IGNhblxcbiAxMDU6XFx0XFx0ICBndWFyYW50ZWUgdGhhdCBhbGwgdGhlIHBsYXRmb3JtcyB0aGF0IHRoZWlyIGtlcm5lbCB3aWxsIHJ1biBvblxcbiAxMDY6XFx0XFx0ICBoYXZlIG9idGFpbmVkIGFwcHJvcHJpYXRlIHJlZ3VsYXRvcnkgYm9keSBjZXJ0aWZpY2F0aW9uIGZvciBhXFxuIDEwNzpcXHRcXHQgIHJlc3BlY3RpdmUgQXRoZXJvcyBjYXJkIGJ5IHVzaW5nIGF0aDlrIG9uIHRoZSB0YXJnZXQgc2hpcHBpbmdcXG4gMTA4OlxcdFxcdCAgcGxhdGZvcm1zLlxcbiAxMDk6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDAwOjE1OjQxLjA0NDY0ODg0WiIsIlNlcSI6NTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg3NzQ5NTA1NjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIEF0aGVyb3MgREZTIFBSSSBEZXRlY3RvciBQYXRjaCoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93biBzeXN0ZW1hdGljYWxseS4gRmlyc3QsIHRoZSBjb3JlIHJlcXVpcmVtZW50IHNlZW1zIHRvIGJlIGBDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNgLCB3aGljaCBpcyBjcml0aWNhbCBmb3IgYm90aCB0aGUgYGF0aDEwa2AgYW5kIGBhdGg5a2AgZHJpdmVycy4gU28sIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhvc2UgYXJlIGVuYWJsZWQ6IGBBVEgxMEtgLCBgQVRIMTBLX1VTQmAsIGBBVEgxMEtfREZTX0NFUlRJRklFRGAsIGBBVEg5S2AsIGBBVEg5S19ERlNfQ0VSVElGSUVEYCwgYW5kIGBDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNgLiBgQVRIOUtgIGlzIG5vcm1hbGx5IFBDSS1vbmx5LCBidXQgaXQgY2FuIGJlIGluY2x1ZGVkLCBzbyBJJ2xsIGtlZXAgaXQgZm9yIG5vdy4gSSdsbCBhbHNvIGFkZCB0aGUgb2J2aW91cyBvbmVzOiBgTUFDODAyMTFgIGFuZCBgQ0ZHODAyMTFgLlxuXG5UaGlzIHBhdGNoIGlzIGRlZmluaXRlbHkgd29ydGggZnV6emluZzsgaXQncyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBhbHRlcmluZyBob3cgcmFkYXIgcHVsc2VzIGFyZSBkZXRlY3RlZCwgc3BlY2lmaWNhbGx5IHJlcGxhY2luZyBhIGRpdmlzaW9uIHdpdGggYSByZWNpcHJvY2FsIG11bHRpcGxpY2F0aW9uIGluIHRoZSBBdGhlcm9zIERGUyBQUkkgZGV0ZWN0b3IgbG9naWMuIEl0J3MgYWNjZXNzaWJsZSB2aWEgVVNCIGZ1enppbmcgb24gdGhlIGBhdGgxMGtfdXNiYCBkcml2ZXIgYmVjYXVzZSBXTUkgZXZlbnRzIGNvbnRhaW5pbmcgUEhZIGVycm9ycyBjYW4gdHJpZ2dlciB0aGUgREZTIHJhZGFyIHJlcG9ydCBwYXRoLiBUaGlzIGlzIGdvb2QgdG8ga25vdy5cblxuVGhlIGtleSBzeW1ib2xzIHRvIGZvY3VzIG9uIGFyZSBgYXRoMTBrX3dtaV9ldmVudF9kZnNgLCBgYXRoMTBrX3dtaV9ldmVudF9waHllcnJgLCBhbmQgYGF0aDlrX2Rmc19wcm9jZXNzX3BoeWVycmAuIEkgc2hvdWxkIGRvdWJsZS1jaGVjayB0aGF0IHRob3NlIGZ1bmN0aW9uIG5hbWVzIGFyZSBhY2N1cmF0ZTsgSSBqdXN0IHdhbnQgdG8gdmVyaWZ5IGJlZm9yZSBwcm9jZWVkaW5nLiBPa2F5LCB5ZXAsIGNvbmZpcm1lZDogYGF0aDEwa193bWlfZXZlbnRfZGZzYCB0YWtlcyBgYXRoMTBrYCBzdHJ1Y3QsIGB3bWlfcGh5ZXJyX2V2X2FyZ2AsIGFuZCBgdTY0IHRzZmAgYXMgYXJndW1lbnRzLiBgYXRoMTBrX3dtaV9ldmVudF9waHllcnJgIHJlY2VpdmVzIGBhdGgxMGtgIGFuZCBgc2tfYnVmZmAsIGFuZCBgYXRoOWtfZGZzX3Byb2Nlc3NfcGh5ZXJyYCByZXF1aXJlcyBgYXRoX3NvZnRjYCwgYSB2b2lkIHBvaW50ZXIsIGBhdGhfcnhfc3RhdHVzYCwgYW5kIGB1NjQgbWFjdGltZWAuIEdvb2QsIGV2ZXJ5dGhpbmcgbG9va3MgaW4gb3JkZXIuXG5cbkkgc2hvdWxkIGFsc28gaW52ZXN0aWdhdGUgd2hldGhlciB0aGVyZSBhcmUgb3RoZXIgcmVsZXZhbnQgZXhwb3J0ZWQgZnVuY3Rpb25zIHdpdGhpbiBgZGZzX3ByaV9kZXRlY3Rvci5jYC4gYHByaV9kZXRlY3Rvcl9pbml0YCBpcyBleHBvcnRlZCB0byBvdGhlciBmaWxlcyBpbiB0aGUgYGF0aGAgbW9kdWxlLCB3aGljaCBpcyBpbnRlcmVzdGluZywgYnV0IHRoYXQgc2VlbXMgdG8gYmUgbW9kdWxlLWxvY2FsLiBJdCBsb29rcyBsaWtlIGl0IGlzIG5vdCBleHBvcnRlZCB0byB0aGUga2VybmVsIHZpYSBgRVhQT1JUX1NZTUJPTGAsIHdoaWNoIG1lYW5zIHRoYXQgaXQgY2FuJ3QgYmUgY2FsbGVkIGZyb20gb3V0c2lkZSB0aGUgbW9kdWxlLiBUaGF0IGlzIGZpbmUsIGFzIGxvbmcgYXMgdGhlIG90aGVyIGZ1bmN0aW9ucyBhcmUgZW5vdWdoLlxuXG5BbHJpZ2h0LCB3aXRoIHRoaXMgaW5mb3JtYXRpb24sIEkgY2FuIG5vdyBiZWdpbiB0aGUgZnV6emluZyBwcm9jZXNzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NTE3OSwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYwMSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDAwOjE1OjQ5LjgxOTYwMzYxOFoiLCJTZXEiOjU2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mzc4NDUwOTIzLCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJFWFBPUlRfU1lNQk9MXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9kZnNfcHJpX2RldGVjdG9yLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDAwOjE1OjUwLjE5ODA2MjUzWiIsIlNlcSI6NTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYxNzExMTQxOTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB1bmRlcnN0YW5kaW5nLCBkZWxpdmVyZWQgYXMgYSBmaXJzdC1wZXJzb24gc3VtbWFyeSwga2VlcGluZyBpbiBtaW5kIEknbSBkZWFsaW5nIHdpdGggc29tZW9uZSB3aG8ncyBmYW1pbGlhciB3aXRoIHRoZSBrZXJuZWw6XG5cbioqQW5hbHlzaXMgb2YgU3ltYm9sIEV4cG9ydCoqXG5cblJpZ2h0LCBzbyBJJ3ZlIGxvb2tlZCBhdCB0aGlzLCBhbmQgdGhlIHNpdHVhdGlvbiBpcyBjbGVhci4gVGhpcyBpc24ndCBzb21ldGhpbmcgdGhhdCdzIGJlaW5nICpleHBvcnRlZCogaW4gdGhlIHR5cGljYWwgc2Vuc2UuIFdlJ3JlIG5vdCBkZWFsaW5nIHdpdGggYW4gZXh0ZXJuYWwgZXhwb3J0LiBJdCdzIGNvbmZpbmVkIHdpdGhpbiBgYXRoLmtvYCwgc3BlY2lmaWNhbGx5IHdpdGhpbiBgZGZzX3BhdHRlcm5fZGV0ZWN0b3IuY2AuIFRoYXQncyB0aGUga2V5LlxuXG5Ib3dldmVyLCBgZGZzX3BhdHRlcm5fZGV0ZWN0b3JfaW5pdGAgKmlzKiBiZWluZyBleHBvcnRlZCB1c2luZyBgRVhQT1JUX1NZTUJPTGAuIFNvIHRoYXQncyBpbXBvcnRhbnQgZm9yIHRoZSBvdmVyYWxsIHBpY3R1cmUuIFRoZXJlZm9yZSwgdGhlIG1vc3QgcmVsZXZhbnQgc3ltYm9scyB0byBmb2N1cyBvbiwgdGhlIGJlc3QgcG9pbnRzIHRvIGV4YW1pbmUsIGFyZSB0aGUgZW50cnkgcG9pbnRzIGZyb20gdGhlIGRyaXZlciBpdHNlbGYg4oCTIHRoZSBgYXRoOWtgIG9yIGBhdGgxMGtgIG1vZHVsZXMuIFRoZXknbGwgYmUgdGhlIHNvdXJjZSBvZiBjYWxscyB0aGF0IGluaXRpYXRlIHRoaXMuXG5cbkknbSBjb21mb3J0YWJsZSB3aXRoIHRoaXMgYXNzZXNzbWVudDsgdGhpcyBzaG91bGQgYmUgYWNjdXJhdGUgYmFzZWQgb24gd2hhdCBJJ3ZlIHNlZW4uIExldCdzIGxvY2sgdGhpcyBpbi4gSSdtIGdvaW5nIHRvIGNhbGwgYHNldC1yZXN1bHRzYCBub3cuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ2NDA0LCJPdXRwdXRUb2tlbnMiOjE5OCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjkyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDAwOjE1OjU2LjM2OTE3OTE4WiIsIlNlcSI6NTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzA5NzY3NDk3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJBVEgxMEtcIixcbiAgICBcIkFUSDEwS19VU0JcIixcbiAgICBcIkFUSDEwS19ERlNfQ0VSVElGSUVEXCIsXG4gICAgXCJBVEg5S1wiLFxuICAgIFwiQVRIOUtfREZTX0NFUlRJRklFRFwiLFxuICAgIFwiQ0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYXRoMTBrX3dtaV9ldmVudF9kZnNcIixcbiAgICBcImF0aDEwa193bWlfZXZlbnRfcGh5ZXJyXCIsXG4gICAgXCJhdGg5a19kZnNfcHJvY2Vzc19waHllcnJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCByZXBsYWNlcyBhIGRpdmlzaW9uIHdpdGggYSByZWNpcHJvY2FsIG11bHRpcGxpY2F0aW9uIGluIHRoZSBBdGhlcm9zIERGUyBQUkkgZGV0ZWN0b3IgbG9naWMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGFsdGVycyB0aGUgY29yZSBsb2dpYyBvZiByYWRhciBwdWxzZSBkZXRlY3Rpb24uIFRoZSBjb2RlIGlzIHJlYWNoYWJsZSB2aWEgdGhlIGF0aDEwa191c2IgZHJpdmVyIHVzaW5nIFVTQiBmdXp6aW5nLCBhcyBXTUkgZXZlbnRzIGNvbnRhaW5pbmcgUEhZIGVycm9ycyBjYW4gdHJpZ2dlciB0aGUgREZTIHJhZGFyIHJlcG9ydCBwYXRoLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkFUSDEwS1wiLFxuICAgIFwiQVRIMTBLX1VTQlwiLFxuICAgIFwiQVRIMTBLX0RGU19DRVJUSUZJRURcIixcbiAgICBcIkFUSDlLXCIsXG4gICAgXCJBVEg5S19ERlNfQ0VSVElGSUVEXCIsXG4gICAgXCJDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJhdGgxMGtfd21pX2V2ZW50X2Rmc1wiLFxuICAgIFwiYXRoMTBrX3dtaV9ldmVudF9waHllcnJcIixcbiAgICBcImF0aDlrX2Rmc19wcm9jZXNzX3BoeWVyclwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlcGxhY2VzIGEgZGl2aXNpb24gd2l0aCBhIHJlY2lwcm9jYWwgbXVsdGlwbGljYXRpb24gaW4gdGhlIEF0aGVyb3MgREZTIFBSSSBkZXRlY3RvciBsb2dpYy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgYWx0ZXJzIHRoZSBjb3JlIGxvZ2ljIG9mIHJhZGFyIHB1bHNlIGRldGVjdGlvbi4gVGhlIGNvZGUgaXMgcmVhY2hhYmxlIHZpYSB0aGUgYXRoMTBrX3VzYiBkcml2ZXIgdXNpbmcgVVNCIGZ1enppbmcsIGFzIFdNSSBldmVudHMgY29udGFpbmluZyBQSFkgZXJyb3JzIGNhbiB0cmlnZ2VyIHRoZSBERlMgcmFkYXIgcmVwb3J0IHBhdGguXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow5b2pt[1] Phase: Succeeded StartedAt: 2026-07-02 00:16:10 +0000 UTC FinishedAt: 2026-07-02 00:16:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5b2pt[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-02 00:16:10 +0000 UTC FinishedAt: 2026-07-02 00:16:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5b2pt[2] Phase: Succeeded StartedAt: 2026-07-02 00:16:10 +0000 UTC FinishedAt: 2026-07-02 02:10:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5b2pt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","ATH10K_DFS_CERTIFIED","ATH9K","ATH9K_DFS_CERTIFIED","CFG80211_CERTIFICATION_ONUS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath10k_wmi_event_dfs","ath10k_wmi_event_phyerr","ath9k_dfs_process_phyerr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","ATH10K_DFS_CERTIFIED","ATH9K","ATH9K_DFS_CERTIFIED","CFG80211_CERTIFICATION_ONUS"],"series_id":"5bdec362-58bd-417a-817a-d672db7dbac8","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-02 00:16:10 +0000 UTC FinishedAt: 2026-07-02 02:10:35 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","ATH10K_DFS_CERTIFIED","ATH9K","ATH9K_DFS_CERTIFIED","CFG80211_CERTIFICATION_ONUS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath10k_wmi_event_dfs","ath10k_wmi_event_phyerr","ath9k_dfs_process_phyerr"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","ATH10K_DFS_CERTIFIED","ATH9K","ATH9K_DFS_CERTIFIED","CFG80211_CERTIFICATION_ONUS"],"series_id":"5bdec362-58bd-417a-817a-d672db7dbac8","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow5b2pt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","ATH10K_DFS_CERTIFIED","ATH9K","ATH9K_DFS_CERTIFIED","CFG80211_CERTIFICATION_ONUS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath10k_wmi_event_dfs","ath10k_wmi_event_phyerr","ath9k_dfs_process_phyerr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","ATH10K_DFS_CERTIFIED","ATH9K","ATH9K_DFS_CERTIFIED","CFG80211_CERTIFICATION_ONUS"],"series_id":"5bdec362-58bd-417a-817a-d672db7dbac8","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-02 00:16:10 +0000 UTC FinishedAt: 2026-07-02 00:16:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5b2pt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","ATH10K_DFS_CERTIFIED","ATH9K","ATH9K_DFS_CERTIFIED","CFG80211_CERTIFICATION_ONUS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath10k_wmi_event_dfs","ath10k_wmi_event_phyerr","ath9k_dfs_process_phyerr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","ATH10K_DFS_CERTIFIED","ATH9K","ATH9K_DFS_CERTIFIED","CFG80211_CERTIFICATION_ONUS"],"series_id":"5bdec362-58bd-417a-817a-d672db7dbac8","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-02 00:16:10 +0000 UTC FinishedAt: 2026-07-02 00:16:18 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","ATH10K_DFS_CERTIFIED","ATH9K","ATH9K_DFS_CERTIFIED","CFG80211_CERTIFICATION_ONUS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},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-workflow5b2pt/series-workflow5b2pt-convert-artifact-2169143982/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5b2pt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","ATH10K_DFS_CERTIFIED","ATH9K","ATH9K_DFS_CERTIFIED","CFG80211_CERTIFICATION_ONUS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath10k_wmi_event_dfs","ath10k_wmi_event_phyerr","ath9k_dfs_process_phyerr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","ATH10K_DFS_CERTIFIED","ATH9K","ATH9K_DFS_CERTIFIED","CFG80211_CERTIFICATION_ONUS"],"series_id":"5bdec362-58bd-417a-817a-d672db7dbac8","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-02 00:16:25 +0000 UTC FinishedAt: 2026-07-02 00:45:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5b2pt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","ATH10K_DFS_CERTIFIED","ATH9K","ATH9K_DFS_CERTIFIED","CFG80211_CERTIFICATION_ONUS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath10k_wmi_event_dfs","ath10k_wmi_event_phyerr","ath9k_dfs_process_phyerr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","ATH10K_DFS_CERTIFIED","ATH9K","ATH9K_DFS_CERTIFIED","CFG80211_CERTIFICATION_ONUS"],"series_id":"5bdec362-58bd-417a-817a-d672db7dbac8","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-02 00:16:25 +0000 UTC FinishedAt: 2026-07-02 00:45:31 +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:*691e9cfd-963a-4044-91e0-1cb326e8b67d,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-workflow5b2pt/series-workflow5b2pt-convert-artifact-2169143982/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": "801c4be5-408a-4b17-83d1-7473f3ec79bb", "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-workflow5b2pt/series-workflow5b2pt-build-action-3797460500/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5b2pt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","ATH10K_DFS_CERTIFIED","ATH9K","ATH9K_DFS_CERTIFIED","CFG80211_CERTIFICATION_ONUS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath10k_wmi_event_dfs","ath10k_wmi_event_phyerr","ath9k_dfs_process_phyerr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","ATH10K_DFS_CERTIFIED","ATH9K","ATH9K_DFS_CERTIFIED","CFG80211_CERTIFICATION_ONUS"],"series_id":"5bdec362-58bd-417a-817a-d672db7dbac8","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-02 00:16:25 +0000 UTC FinishedAt: 2026-07-02 00:45:19 +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:*691e9cfd-963a-4044-91e0-1cb326e8b67d,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-workflow5b2pt/series-workflow5b2pt-convert-artifact-2169143982/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": "801c4be5-408a-4b17-83d1-7473f3ec79bb", "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-workflow5b2pt/series-workflow5b2pt-build-action-3797460500/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5b2pt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","ATH10K_DFS_CERTIFIED","ATH9K","ATH9K_DFS_CERTIFIED","CFG80211_CERTIFICATION_ONUS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath10k_wmi_event_dfs","ath10k_wmi_event_phyerr","ath9k_dfs_process_phyerr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","ATH10K_DFS_CERTIFIED","ATH9K","ATH9K_DFS_CERTIFIED","CFG80211_CERTIFICATION_ONUS"],"series_id":"5bdec362-58bd-417a-817a-d672db7dbac8","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-02 00:45:31 +0000 UTC FinishedAt: 2026-07-02 00:45:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5b2pt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","ATH10K_DFS_CERTIFIED","ATH9K","ATH9K_DFS_CERTIFIED","CFG80211_CERTIFICATION_ONUS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath10k_wmi_event_dfs","ath10k_wmi_event_phyerr","ath9k_dfs_process_phyerr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","ATH10K_DFS_CERTIFIED","ATH9K","ATH9K_DFS_CERTIFIED","CFG80211_CERTIFICATION_ONUS"],"series_id":"5bdec362-58bd-417a-817a-d672db7dbac8","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-02 00:45:31 +0000 UTC FinishedAt: 2026-07-02 00:45:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5b2pt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","ATH10K_DFS_CERTIFIED","ATH9K","ATH9K_DFS_CERTIFIED","CFG80211_CERTIFICATION_ONUS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath10k_wmi_event_dfs","ath10k_wmi_event_phyerr","ath9k_dfs_process_phyerr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","ATH10K_DFS_CERTIFIED","ATH9K","ATH9K_DFS_CERTIFIED","CFG80211_CERTIFICATION_ONUS"],"series_id":"5bdec362-58bd-417a-817a-d672db7dbac8","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-02 00:45:31 +0000 UTC FinishedAt: 2026-07-02 00:45:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5b2pt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","ATH10K_DFS_CERTIFIED","ATH9K","ATH9K_DFS_CERTIFIED","CFG80211_CERTIFICATION_ONUS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath10k_wmi_event_dfs","ath10k_wmi_event_phyerr","ath9k_dfs_process_phyerr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","ATH10K_DFS_CERTIFIED","ATH9K","ATH9K_DFS_CERTIFIED","CFG80211_CERTIFICATION_ONUS"],"series_id":"5bdec362-58bd-417a-817a-d672db7dbac8","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-02 00:45:31 +0000 UTC FinishedAt: 2026-07-02 00:45:40 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","ATH10K_DFS_CERTIFIED","ATH9K","ATH9K_DFS_CERTIFIED","CFG80211_CERTIFICATION_ONUS"],"series_id":"5bdec362-58bd-417a-817a-d672db7dbac8","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},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-workflow5b2pt/series-workflow5b2pt-convert-artifact-299785121/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5b2pt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","ATH10K_DFS_CERTIFIED","ATH9K","ATH9K_DFS_CERTIFIED","CFG80211_CERTIFICATION_ONUS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath10k_wmi_event_dfs","ath10k_wmi_event_phyerr","ath9k_dfs_process_phyerr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","ATH10K_DFS_CERTIFIED","ATH9K","ATH9K_DFS_CERTIFIED","CFG80211_CERTIFICATION_ONUS"],"series_id":"5bdec362-58bd-417a-817a-d672db7dbac8","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-02 00:45:56 +0000 UTC FinishedAt: 2026-07-02 00:48:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5b2pt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","ATH10K_DFS_CERTIFIED","ATH9K","ATH9K_DFS_CERTIFIED","CFG80211_CERTIFICATION_ONUS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath10k_wmi_event_dfs","ath10k_wmi_event_phyerr","ath9k_dfs_process_phyerr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","ATH10K_DFS_CERTIFIED","ATH9K","ATH9K_DFS_CERTIFIED","CFG80211_CERTIFICATION_ONUS"],"series_id":"5bdec362-58bd-417a-817a-d672db7dbac8","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-02 00:45:56 +0000 UTC FinishedAt: 2026-07-02 00:48:07 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*801c4be5-408a-4b17-83d1-7473f3ec79bb,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-workflow5b2pt/series-workflow5b2pt-build-action-3797460500/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-workflow5b2pt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","ATH10K_DFS_CERTIFIED","ATH9K","ATH9K_DFS_CERTIFIED","CFG80211_CERTIFICATION_ONUS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath10k_wmi_event_dfs","ath10k_wmi_event_phyerr","ath9k_dfs_process_phyerr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","ATH10K_DFS_CERTIFIED","ATH9K","ATH9K_DFS_CERTIFIED","CFG80211_CERTIFICATION_ONUS"],"series_id":"5bdec362-58bd-417a-817a-d672db7dbac8","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-02 00:48:21 +0000 UTC FinishedAt: 2026-07-02 00:48:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5b2pt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","ATH10K_DFS_CERTIFIED","ATH9K","ATH9K_DFS_CERTIFIED","CFG80211_CERTIFICATION_ONUS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath10k_wmi_event_dfs","ath10k_wmi_event_phyerr","ath9k_dfs_process_phyerr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","ATH10K_DFS_CERTIFIED","ATH9K","ATH9K_DFS_CERTIFIED","CFG80211_CERTIFICATION_ONUS"],"series_id":"5bdec362-58bd-417a-817a-d672db7dbac8","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-02 00:48:21 +0000 UTC FinishedAt: 2026-07-02 00:48:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5b2pt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","ATH10K_DFS_CERTIFIED","ATH9K","ATH9K_DFS_CERTIFIED","CFG80211_CERTIFICATION_ONUS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath10k_wmi_event_dfs","ath10k_wmi_event_phyerr","ath9k_dfs_process_phyerr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","ATH10K_DFS_CERTIFIED","ATH9K","ATH9K_DFS_CERTIFIED","CFG80211_CERTIFICATION_ONUS"],"series_id":"5bdec362-58bd-417a-817a-d672db7dbac8","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-02 00:48:21 +0000 UTC FinishedAt: 2026-07-02 01:16:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5b2pt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","ATH10K_DFS_CERTIFIED","ATH9K","ATH9K_DFS_CERTIFIED","CFG80211_CERTIFICATION_ONUS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath10k_wmi_event_dfs","ath10k_wmi_event_phyerr","ath9k_dfs_process_phyerr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","ATH10K_DFS_CERTIFIED","ATH9K","ATH9K_DFS_CERTIFIED","CFG80211_CERTIFICATION_ONUS"],"series_id":"5bdec362-58bd-417a-817a-d672db7dbac8","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-02 00:48:21 +0000 UTC FinishedAt: 2026-07-02 01:16:36 +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:*691e9cfd-963a-4044-91e0-1cb326e8b67d,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-workflow5b2pt/series-workflow5b2pt-convert-artifact-299785121/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": "b367dea7-e0ad-4d89-a5e0-7d3c32b2041e", "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-workflow5b2pt/series-workflow5b2pt-build-action-2287503021/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5b2pt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","ATH10K_DFS_CERTIFIED","ATH9K","ATH9K_DFS_CERTIFIED","CFG80211_CERTIFICATION_ONUS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath10k_wmi_event_dfs","ath10k_wmi_event_phyerr","ath9k_dfs_process_phyerr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","ATH10K_DFS_CERTIFIED","ATH9K","ATH9K_DFS_CERTIFIED","CFG80211_CERTIFICATION_ONUS"],"series_id":"5bdec362-58bd-417a-817a-d672db7dbac8","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-02 00:48:21 +0000 UTC FinishedAt: 2026-07-02 01:16:26 +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:*691e9cfd-963a-4044-91e0-1cb326e8b67d,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-workflow5b2pt/series-workflow5b2pt-convert-artifact-299785121/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": "b367dea7-e0ad-4d89-a5e0-7d3c32b2041e", "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-workflow5b2pt/series-workflow5b2pt-build-action-2287503021/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5b2pt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","ATH10K_DFS_CERTIFIED","ATH9K","ATH9K_DFS_CERTIFIED","CFG80211_CERTIFICATION_ONUS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath10k_wmi_event_dfs","ath10k_wmi_event_phyerr","ath9k_dfs_process_phyerr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","ATH10K_DFS_CERTIFIED","ATH9K","ATH9K_DFS_CERTIFIED","CFG80211_CERTIFICATION_ONUS"],"series_id":"5bdec362-58bd-417a-817a-d672db7dbac8","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-02 01:16:36 +0000 UTC FinishedAt: 2026-07-02 01:16:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5b2pt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","ATH10K_DFS_CERTIFIED","ATH9K","ATH9K_DFS_CERTIFIED","CFG80211_CERTIFICATION_ONUS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath10k_wmi_event_dfs","ath10k_wmi_event_phyerr","ath9k_dfs_process_phyerr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","ATH10K_DFS_CERTIFIED","ATH9K","ATH9K_DFS_CERTIFIED","CFG80211_CERTIFICATION_ONUS"],"series_id":"5bdec362-58bd-417a-817a-d672db7dbac8","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-02 01:16:36 +0000 UTC FinishedAt: 2026-07-02 01:16:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5b2pt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","ATH10K_DFS_CERTIFIED","ATH9K","ATH9K_DFS_CERTIFIED","CFG80211_CERTIFICATION_ONUS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath10k_wmi_event_dfs","ath10k_wmi_event_phyerr","ath9k_dfs_process_phyerr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","ATH10K_DFS_CERTIFIED","ATH9K","ATH9K_DFS_CERTIFIED","CFG80211_CERTIFICATION_ONUS"],"series_id":"5bdec362-58bd-417a-817a-d672db7dbac8","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-02 01:16:36 +0000 UTC FinishedAt: 2026-07-02 01:18:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5b2pt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","ATH10K_DFS_CERTIFIED","ATH9K","ATH9K_DFS_CERTIFIED","CFG80211_CERTIFICATION_ONUS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath10k_wmi_event_dfs","ath10k_wmi_event_phyerr","ath9k_dfs_process_phyerr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","ATH10K_DFS_CERTIFIED","ATH9K","ATH9K_DFS_CERTIFIED","CFG80211_CERTIFICATION_ONUS"],"series_id":"5bdec362-58bd-417a-817a-d672db7dbac8","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-02 01:16:36 +0000 UTC FinishedAt: 2026-07-02 01:18:32 +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:*b367dea7-e0ad-4d89-a5e0-7d3c32b2041e,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-workflow5b2pt/series-workflow5b2pt-build-action-2287503021/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-workflow5b2pt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","ATH10K_DFS_CERTIFIED","ATH9K","ATH9K_DFS_CERTIFIED","CFG80211_CERTIFICATION_ONUS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath10k_wmi_event_dfs","ath10k_wmi_event_phyerr","ath9k_dfs_process_phyerr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","ATH10K_DFS_CERTIFIED","ATH9K","ATH9K_DFS_CERTIFIED","CFG80211_CERTIFICATION_ONUS"],"series_id":"5bdec362-58bd-417a-817a-d672db7dbac8","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-02 01:18:42 +0000 UTC FinishedAt: 2026-07-02 02:10:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5b2pt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","ATH10K_DFS_CERTIFIED","ATH9K","ATH9K_DFS_CERTIFIED","CFG80211_CERTIFICATION_ONUS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath10k_wmi_event_dfs","ath10k_wmi_event_phyerr","ath9k_dfs_process_phyerr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","ATH10K_DFS_CERTIFIED","ATH9K","ATH9K_DFS_CERTIFIED","CFG80211_CERTIFICATION_ONUS"],"series_id":"5bdec362-58bd-417a-817a-d672db7dbac8","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-02 01:18:42 +0000 UTC FinishedAt: 2026-07-02 02:10:35 +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":["ath10k_wmi_event_dfs","ath10k_wmi_event_phyerr","ath9k_dfs_process_phyerr"],"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:*801c4be5-408a-4b17-83d1-7473f3ec79bb,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*b367dea7-e0ad-4d89-a5e0-7d3c32b2041e,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-workflow5b2pt/series-workflow5b2pt-build-action-3797460500/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-workflow5b2pt/series-workflow5b2pt-build-action-2287503021/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow5b2pt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","ATH10K_DFS_CERTIFIED","ATH9K","ATH9K_DFS_CERTIFIED","CFG80211_CERTIFICATION_ONUS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath10k_wmi_event_dfs","ath10k_wmi_event_phyerr","ath9k_dfs_process_phyerr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","ATH10K_DFS_CERTIFIED","ATH9K","ATH9K_DFS_CERTIFIED","CFG80211_CERTIFICATION_ONUS"],"series_id":"5bdec362-58bd-417a-817a-d672db7dbac8","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-02 01:18:42 +0000 UTC FinishedAt: 2026-07-02 01:18:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5b2pt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","ATH10K_DFS_CERTIFIED","ATH9K","ATH9K_DFS_CERTIFIED","CFG80211_CERTIFICATION_ONUS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath10k_wmi_event_dfs","ath10k_wmi_event_phyerr","ath9k_dfs_process_phyerr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","ATH10K_DFS_CERTIFIED","ATH9K","ATH9K_DFS_CERTIFIED","CFG80211_CERTIFICATION_ONUS"],"series_id":"5bdec362-58bd-417a-817a-d672db7dbac8","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-02 01:18:42 +0000 UTC FinishedAt: 2026-07-02 01:18:49 +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":["ath10k_wmi_event_dfs","ath10k_wmi_event_phyerr","ath9k_dfs_process_phyerr"],"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-workflow5b2pt/series-workflow5b2pt-convert-artifact-1238323766/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5b2pt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","ATH10K_DFS_CERTIFIED","ATH9K","ATH9K_DFS_CERTIFIED","CFG80211_CERTIFICATION_ONUS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath10k_wmi_event_dfs","ath10k_wmi_event_phyerr","ath9k_dfs_process_phyerr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","ATH10K_DFS_CERTIFIED","ATH9K","ATH9K_DFS_CERTIFIED","CFG80211_CERTIFICATION_ONUS"],"series_id":"5bdec362-58bd-417a-817a-d672db7dbac8","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-02 01:18:42 +0000 UTC FinishedAt: 2026-07-02 01:18:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5b2pt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","ATH10K_DFS_CERTIFIED","ATH9K","ATH9K_DFS_CERTIFIED","CFG80211_CERTIFICATION_ONUS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath10k_wmi_event_dfs","ath10k_wmi_event_phyerr","ath9k_dfs_process_phyerr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","ATH10K_DFS_CERTIFIED","ATH9K","ATH9K_DFS_CERTIFIED","CFG80211_CERTIFICATION_ONUS"],"series_id":"5bdec362-58bd-417a-817a-d672db7dbac8","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-02 01:18:42 +0000 UTC FinishedAt: 2026-07-02 01:18:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5b2pt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","ATH10K_DFS_CERTIFIED","ATH9K","ATH9K_DFS_CERTIFIED","CFG80211_CERTIFICATION_ONUS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath10k_wmi_event_dfs","ath10k_wmi_event_phyerr","ath9k_dfs_process_phyerr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","ATH10K_DFS_CERTIFIED","ATH9K","ATH9K_DFS_CERTIFIED","CFG80211_CERTIFICATION_ONUS"],"series_id":"5bdec362-58bd-417a-817a-d672db7dbac8","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-02 01:18:42 +0000 UTC FinishedAt: 2026-07-02 01:18:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5b2pt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","ATH10K_DFS_CERTIFIED","ATH9K","ATH9K_DFS_CERTIFIED","CFG80211_CERTIFICATION_ONUS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath10k_wmi_event_dfs","ath10k_wmi_event_phyerr","ath9k_dfs_process_phyerr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","ATH10K_DFS_CERTIFIED","ATH9K","ATH9K_DFS_CERTIFIED","CFG80211_CERTIFICATION_ONUS"],"series_id":"5bdec362-58bd-417a-817a-d672db7dbac8","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-02 01:18:52 +0000 UTC FinishedAt: 2026-07-02 02:10:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5b2pt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","ATH10K_DFS_CERTIFIED","ATH9K","ATH9K_DFS_CERTIFIED","CFG80211_CERTIFICATION_ONUS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath10k_wmi_event_dfs","ath10k_wmi_event_phyerr","ath9k_dfs_process_phyerr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","ATH10K_DFS_CERTIFIED","ATH9K","ATH9K_DFS_CERTIFIED","CFG80211_CERTIFICATION_ONUS"],"series_id":"5bdec362-58bd-417a-817a-d672db7dbac8","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-02 01:18:52 +0000 UTC FinishedAt: 2026-07-02 02:10:25 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*801c4be5-408a-4b17-83d1-7473f3ec79bb,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*b367dea7-e0ad-4d89-a5e0-7d3c32b2041e,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-workflow5b2pt/series-workflow5b2pt-build-action-3797460500/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-workflow5b2pt/series-workflow5b2pt-build-action-2287503021/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-workflow5b2pt/series-workflow5b2pt-convert-artifact-1238323766/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,}