Name: series-workflowkfg52 Phase: Succeeded StartedAt: 2026-07-07 16:18:25 +0000 UTC FinishedAt: 2026-07-07 18:41:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkfg52[0] Phase: Succeeded StartedAt: 2026-07-07 16:18:25 +0000 UTC FinishedAt: 2026-07-07 16:36:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkfg52[0].run-triage Phase: Succeeded StartedAt: 2026-07-07 16:18:25 +0000 UTC FinishedAt: 2026-07-07 16:36:52 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "4a13f31a92f35161b499bf29638336885259da78", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "R8169" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "4a13f31a92f35161b499bf29638336885259da78", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "R8169" ], "series_id": "4ffdf5e5-ff65-480e-9d14-ebde9e0d0133" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "phylink_set_mac_capabilities", "rtl_init_phylink", "rtl8169_pcs_config", "rtl8169_pcs_get_state", "rtl_mac_link_up", "rtl_mac_link_down", "rtl_mac_select_pcs", "rtl_mac_disable_tx_lpi", "rtl_mac_enable_tx_lpi", "rtl8169_change_mtu", "rtl_lowpower_hidden_functions", "r8127_sfp_init_1g", "r8127_sfp_init_10g", "rtl8169_ioctl" ], "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+CgkJCTx0ZD4yMDI2LzA3LzA3IDE2OjM0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1I4MTY5JiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cGh5bGlua19zZXRfbWFjX2NhcGFiaWxpdGllcyYjMzQ7LAogICAgJiMzNDtydGxfaW5pdF9waHlsaW5rJiMzNDssCiAgICAmIzM0O3J0bDgxNjlfcGNzX2NvbmZpZyYjMzQ7LAogICAgJiMzNDtydGw4MTY5X3Bjc19nZXRfc3RhdGUmIzM0OywKICAgICYjMzQ7cnRsX21hY19saW5rX3VwJiMzNDssCiAgICAmIzM0O3J0bF9tYWNfbGlua19kb3duJiMzNDssCiAgICAmIzM0O3J0bF9tYWNfc2VsZWN0X3BjcyYjMzQ7LAogICAgJiMzNDtydGxfbWFjX2Rpc2FibGVfdHhfbHBpJiMzNDssCiAgICAmIzM0O3J0bF9tYWNfZW5hYmxlX3R4X2xwaSYjMzQ7LAogICAgJiMzNDtydGw4MTY5X2NoYW5nZV9tdHUmIzM0OywKICAgICYjMzQ7cnRsX2xvd3Bvd2VyX2hpZGRlbl9mdW5jdGlvbnMmIzM0OywKICAgICYjMzQ7cjgxMjdfc2ZwX2luaXRfMWcmIzM0OywKICAgICYjMzQ7cjgxMjdfc2ZwX2luaXRfMTBnJiMzNDssCiAgICAmIzM0O3J0bDgxNjlfaW9jdGwmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbWlncmF0ZXMgdGhlIFJlYWx0ZWsgcjgxNjkgRXRoZXJuZXQgZHJpdmVyIGZyb20gcGh5bGliIHRvIHBoeWxpbmssIGludHJvZHVjaW5nIHNpZ25pZmljYW50IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgZHJpdmVyJiMzOTtzIGluaXRpYWxpemF0aW9uLCBsaW5rIG1hbmFnZW1lbnQsIGFuZCBNVFUgaGFuZGxpbmcuIEl0IGFsc28gYWRkcyBhIG5ldyBwaHlsaW5rIEFQSSBgcGh5bGlua19zZXRfbWFjX2NhcGFiaWxpdGllc2AgdG8gZHluYW1pY2FsbHkgdXBkYXRlIE1BQyBjYXBhYmlsaXRpZXMuIFRoZXNlIGFyZSByZWFjaGFibGUgY29udHJvbC1wYXRoIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQsIGVzcGVjaWFsbHkgdmlhIHN5el9wY2kgYW5kIG5ldGxpbmsvaW9jdGwgaW50ZXJmYWNlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAxNjozNDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDFmNzg1MDA0NTZiODM5M2VhZDZkNmZiYzE1YTQ5YzNiNTg1MGE5ZjRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEp1bCA3IDE2OjM0OjM5IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZ1xuaW5kZXggOWIwZjRmOTYzMWRiYWEuLjQ5YWM3MjczNDIyNWY3IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9LY29uZmlnXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWdcbkBAIC04OCw2ICYjNDM7ODgsNyBAQCBjb25maWcgUjgxNjlcbiBcdHNlbGVjdCBDUkMzMlxuIFx0c2VsZWN0IFBIWUxJQlxuIFx0c2VsZWN0IFJFQUxURUtfUEhZXG4mIzQzO1x0c2VsZWN0IFBIWUxJTktcbiBcdGhlbHBcbiBcdCAgU2F5IFkgaGVyZSBpZiB5b3UgaGF2ZSBhIFJlYWx0ZWsgRXRoZXJuZXQgYWRhcHRlciBiZWxvbmdpbmcgdG9cbiBcdCAgdGhlIGZvbGxvd2luZyBmYW1pbGllczpcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jXG5pbmRleCBlYzRmYzIxZmEyMWZiMC4uMTJlMDczYjlhNjE0NzkgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmNcbkBAIC0yNiwxMiAmIzQzOzI2LDEyIEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvZG1hLW1hcHBpbmcuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3BtX3J1bnRpbWUuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2JpdGZpZWxkLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvcGh5bGluay5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcHJlZmV0Y2guaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2lwdjYuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3VuYWxpZ25lZC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbmV0L2lwNl9jaGVja3N1bS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbmV0L25ldGRldl9xdWV1ZXMuaFx1MDAzZVxuLSNpbmNsdWRlIFx1MDAzY25ldC9waHkvcmVhbHRla19waHkuaFx1MDAzZVxuIFxuICNpbmNsdWRlIFwmIzM0O3I4MTY5LmhcJiMzNDtcbiAjaW5jbHVkZSBcJiMzNDtyODE2OV9maXJtd2FyZS5oXCYjMzQ7XG5AQCAtOTYsNiAmIzQzOzk2LDI4IEBAXG4gI2RlZmluZSBKVU1CT185S1x0KDkgKiBTWl8xSyAtIFZMQU5fRVRIX0hMRU4gLSBFVEhfRkNTX0xFTilcbiAjZGVmaW5lIEpVTUJPXzE2S1x0KFNaXzE2SyAtIFZMQU5fRVRIX0hMRU4gLSBFVEhfRkNTX0xFTilcbiBcbiYjNDM7I2RlZmluZSBPQ1BfU0RTX0FERFJfUkVHXHRcdDB4RUIxMFxuJiM0MzsjZGVmaW5lIE9DUF9TRFNfQ01EX1JFR1x0XHRcdDB4RUIwRVxuJiM0MzsjZGVmaW5lIE9DUF9TRFNfREFUQV9SRUdcdFx0MHhFQjE0XG4mIzQzOyNkZWZpbmUgU0RTX0NNRF9SRUFEXHRcdFx0MHgwMDAxXG4mIzQzOyNkZWZpbmUgUlRMX1NEU19DMjJfQkFTRVx0XHQweDQwXG4mIzQzOyNkZWZpbmUgUlRMX1NEU19DNDVfQkFTRVx0XHQweDAwODBcbiYjNDM7I2RlZmluZSBSVExfUEtHX0RFVEVDVFx0XHRcdDB4ZGMwMFxuJiM0MzsjZGVmaW5lIFJUTF9QS0dfREVURUNUX01BU0tcdFx0MHgwMDc4XG4mIzQzOyNkZWZpbmUgUlRMX1BLR19ERVRFQ1RfODExNkFGXHRcdDB4MDAzMFxuJiM0MzsjZGVmaW5lIFJUTF9JTlRfSFdfSURcdFx0XHQweGQwMDZcbiYjNDM7I2RlZmluZSBSVExfSU5UX0hXX0lEX01BU0tcdFx0MHgwMGZmXG4mIzQzOyNkZWZpbmUgUlRMX0lOVF9IV19JRF84MTE2QUZcdFx0MHgwMDAwXG4mIzQzOyNkZWZpbmUgUlRMODExNkFGX0ZVTkNfUE1fQ1NSXHRcdDB4ODBcbiYjNDM7I2RlZmluZSBSVEw4MTE2QUZfRlVOQ19FWFBfTE5LQ1RMXHQweDQ0XG4mIzQzOyNkZWZpbmUgUlRMX1BNX0QzSE9UXHRcdFx0R0VOTUFTSygxLCAwKVxuJiM0MzsjZGVmaW5lIFI4MTI3X1NEU19DTURcdFx0XHQweDIzNDhcbiYjNDM7I2RlZmluZSBSODEyN19TRFNfQUREUlx0XHRcdDB4MjM0YVxuJiM0MzsjZGVmaW5lIFI4MTI3X1NEU19EQVRBX0lOXHRcdDB4MjM0Y1xuJiM0MzsjZGVmaW5lIFI4MTI3X1NEU19EQVRBX09VVFx0XHQweDIzNGVcbiYjNDM7I2RlZmluZSBSODEyN19TRFNfQ01EX0VYRUNcdFx0QklUKDApXG4mIzQzOyNkZWZpbmUgUjgxMjdfU0RTX0NNRF9XRVx0XHRCSVQoMSlcbiYjNDM7XG4gc3RhdGljIGNvbnN0IHN0cnVjdCBydGxfY2hpcF9pbmZvIHtcbiBcdHUzMiBtYXNrO1xuIFx0dTMyIHZhbDtcbkBAIC0zMzQsMTEgJiM0MzszNTYsMTMgQEAgZW51bSBydGxfcmVnaXN0ZXJzIHtcbiBcdEFMRFBTX0xUUlx0PSAweGUwYTIsXG4gXHRMVFJfT0JGRl9MT0NLXHQ9IDB4ZTAzMixcbiBcdExUUl9TTk9PUFx0PSAweGUwMzQsXG4mIzQzO1x0U0VORF9MVFJfTVNHXHQ9IDB4ZTAzOCxcbiBcbiAjZGVmaW5lIEFMRFBTX0xUUl9FTlx0XHRcdEJJVCgwKVxuICNkZWZpbmUgTFRSX09CRkZfTE9DS19FTlx0XHRCSVQoMClcbiAjZGVmaW5lIExJTktfU1BFRURfQ0hBTkdFX0VOXHRcdEJJVCgxNClcbiAjZGVmaW5lIExUUl9TTk9PUF9FTlx0XHRcdEdFTk1BU0soMTUsIDE0KVxuJiM0MzsjZGVmaW5lIExUUl9NU0dfRU5cdFx0XHRCSVQoMClcbiB9O1xuIFxuIGVudW0gcnRsODE2OF84MTAxX3JlZ2lzdGVycyB7XG5AQCAtNzI4LDYgJiM0Mzs3NTIsMTIgQEAgZW51bSBydGxfZGFzaF90eXBlIHtcbiBcdFJUTF9EQVNIXzI1X0JQLFxuIH07XG4gXG4mIzQzO2VudW0gcnRsX3NmcF9tb2RlIHtcbiYjNDM7XHRSVExfU0ZQX05PTkUsXG4mIzQzO1x0UlRMX1NGUF84MTY4X0FGLFxuJiM0MztcdFJUTF9TRlBfODEyN19BVEYsXG4mIzQzO307XG4mIzQzO1xuIHN0cnVjdCBydGw4MTY5X3ByaXZhdGUge1xuIFx0dm9pZCBfX2lvbWVtICptbWlvX2FkZHI7XHQvKiBtZW1vcnkgbWFwIHBoeXNpY2FsIGFkZHJlc3MgKi9cbiBcdHN0cnVjdCBwY2lfZGV2ICpwY2lfZGV2O1xuQEAgLTczNiw2ICYjNDM7NzY2LDcgQEAgc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSB7XG4gXHRzdHJ1Y3QgbmFwaV9zdHJ1Y3QgbmFwaTtcbiBcdGVudW0gbWFjX3ZlcnNpb24gbWFjX3ZlcnNpb247XG4gXHRlbnVtIHJ0bF9kYXNoX3R5cGUgZGFzaF90eXBlO1xuJiM0MztcdGVudW0gcnRsX3NmcF9tb2RlIHNmcF9tb2RlO1xuIFx0dTMyIGN1cl9yeDsgLyogSW5kZXggaW50byB0aGUgUnggZGVzY3JpcHRvciBidWZmZXIgb2YgbmV4dCBSeCBwa3QuICovXG4gXHR1MzIgY3VyX3R4OyAvKiBJbmRleCBpbnRvIHRoZSBUeCBkZXNjcmlwdG9yIGJ1ZmZlciBvZiBuZXh0IFJ4IHBrdC4gKi9cbiBcdHUzMiBkaXJ0eV90eDtcbkBAIC03NTAsNiAmIzQzOzc4MSw3IEBAIHN0cnVjdCBydGw4MTY5X3ByaXZhdGUge1xuIFx0dTMyIGlycV9tYXNrO1xuIFx0aW50IGlycTtcbiBcdHN0cnVjdCBjbGsgKmNsaztcbiYjNDM7XHRpbnQgc3BlZWQ7XG4gXG4gXHRzdHJ1Y3Qge1xuIFx0XHRERUNMQVJFX0JJVE1BUChmbGFncywgUlRMX0ZMQUdfTUFYKTtcbkBAIC03NjIsNyAmIzQzOzc5NCw2IEBAIHN0cnVjdCBydGw4MTY5X3ByaXZhdGUge1xuIFx0dW5zaWduZWQgc3VwcG9ydHNfZ21paToxO1xuIFx0dW5zaWduZWQgYXNwbV9tYW5hZ2VhYmxlOjE7XG4gXHR1bnNpZ25lZCBkYXNoX2VuYWJsZWQ6MTtcbi1cdGJvb2wgc2ZwX21vZGU6MTtcbiBcdGRtYV9hZGRyX3QgY291bnRlcnNfcGh5c19hZGRyO1xuIFx0c3RydWN0IHJ0bDgxNjlfY291bnRlcnMgKmNvdW50ZXJzO1xuIFx0c3RydWN0IHJ0bDgxNjlfdGNfb2Zmc2V0cyB0Y19vZmZzZXQ7XG5AQCAtNzc0LDYgJiM0Mzs4MDUsMTEgQEAgc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSB7XG4gXHRzdHJ1Y3QgcjgxNjlfbGVkX2NsYXNzZGV2ICpsZWRzO1xuIFxuIFx0dTMyIG9jcF9iYXNlO1xuJiM0MztcdHN0cnVjdCBwaHlsaW5rICpwaHlsaW5rO1xuJiM0MztcdHN0cnVjdCBwaHlsaW5rX2NvbmZpZyBwaHlsaW5rX2NvbmZpZztcbiYjNDM7XHRzdHJ1Y3QgcGh5bGlua19wY3MgcGNzO1xuJiM0MztcdHN0cnVjdCBldGh0b29sX3BhdXNlcGFyYW0gc2F2ZWRfcGF1c2U7XG4mIzQzO1x0Ym9vbCBqdW1ib19wYXVzZV9zYXZlZDtcbiB9O1xuIFxuIHR5cGVkZWYgdm9pZCAoKnJ0bF9nZW5lcmljX2ZjdCkoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApO1xuQEAgLTExMjgsMTAgJiM0MzsxMTY0LDYgQEAgc3RhdGljIGludCByODE2OF9waHlfb2NwX3JlYWQoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIHUzMiByZWcpXG4gXHRpZiAocnRsX29jcF9yZWdfZmFpbHVyZShyZWcpKVxuIFx0XHRyZXR1cm4gMDtcbiBcbi1cdC8qIFJldHVybiBkdW1teSBNSUlfUEhZU0lEMiBpbiBTRlAgbW9kZSB0byBtYXRjaCBTRlAgUEhZIGRyaXZlciAqL1xuLVx0aWYgKHRwLVx1MDAzZXNmcF9tb2RlIFx1MDAyNlx1MDAyNiByZWcgPT0gKE9DUF9TVERfUEhZX0JBU0UgJiM0MzsgMiAqIE1JSV9QSFlTSUQyKSlcbi1cdFx0cmV0dXJuIFBIWV9JRF9SVExfRFVNTVlfU0ZQIFx1MDAyNiAweGZmZmY7XG4tXG4gXHRSVExfVzMyKHRwLCBHUEhZX09DUCwgcmVnIFx1MDAzY1x1MDAzYyAxNSk7XG4gXG4gXHRyZXR1cm4gcnRsX2xvb3Bfd2FpdF9oaWdoKHRwLCBcdTAwMjZydGxfb2NwX2dwaHlfY29uZCwgMjUsIDEwKSA/XG5AQCAtMTE5OSw2ICYjNDM7MTIzMSw2NyBAQCBzdGF0aWMgdm9pZCByODEyN19zZnBfc2RzX3BoeV9yZXNldChzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbiBcdHVzbGVlcF9yYW5nZSgxMCwgMjApO1xuIH1cbiBcbiYjNDM7REVDTEFSRV9SVExfQ09ORChyODEyN19zZHNfY21kX2NvbmQpXG4mIzQzO3tcbiYjNDM7XHRyZXR1cm4gUlRMX1IxNih0cCwgUjgxMjdfU0RTX0NNRCkgXHUwMDI2IFI4MTI3X1NEU19DTURfRVhFQztcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIHUxNiByODEyN19zZHNfcmVhZChzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgdTE2IGluZGV4LCB1MTYgcGFnZSwgdTE2IHJlZylcbiYjNDM7e1xuJiM0MztcdHUxNiBhZGRyID0gKGluZGV4IFx1MDAzY1x1MDAzYyAxMSkgfCAocGFnZSBcdTAwM2NcdTAwM2MgNSkgfCByZWc7XG4mIzQzO1xuJiM0MztcdFJUTF9XMTYodHAsIFI4MTI3X1NEU19BRERSLCBhZGRyKTtcbiYjNDM7XHRSVExfVzE2KHRwLCBSODEyN19TRFNfQ01ELCBSODEyN19TRFNfQ01EX0VYRUMpO1xuJiM0MztcbiYjNDM7XHRpZiAocnRsX2xvb3Bfd2FpdF9sb3codHAsIFx1MDAyNnI4MTI3X3Nkc19jbWRfY29uZCwgMTAsIDEwMCkpXG4mIzQzO1x0XHRyZXR1cm4gUlRMX1IxNih0cCwgUjgxMjdfU0RTX0RBVEFfT1VUKTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIDB4ZmZmZjtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIHZvaWQgcjgxMjdfc2RzX3dyaXRlKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCB1MTYgaW5kZXgsIHUxNiBwYWdlLFxuJiM0MztcdFx0XHQgICAgdTE2IHJlZywgdTE2IHZhbClcbiYjNDM7e1xuJiM0MztcdHUxNiBhZGRyID0gKGluZGV4IFx1MDAzY1x1MDAzYyAxMSkgfCAocGFnZSBcdTAwM2NcdTAwM2MgNSkgfCByZWc7XG4mIzQzO1xuJiM0MztcdFJUTF9XMTYodHAsIFI4MTI3X1NEU19EQVRBX0lOLCB2YWwpO1xuJiM0MztcdFJUTF9XMTYodHAsIFI4MTI3X1NEU19BRERSLCBhZGRyKTtcbiYjNDM7XHRSVExfVzE2KHRwLCBSODEyN19TRFNfQ01ELCBSODEyN19TRFNfQ01EX0VYRUMgfCBSODEyN19TRFNfQ01EX1dFKTtcbiYjNDM7XG4mIzQzO1x0cnRsX2xvb3Bfd2FpdF9sb3codHAsIFx1MDAyNnI4MTI3X3Nkc19jbWRfY29uZCwgMTAsIDEwMCk7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyB2b2lkIHI4MTI3X3Nkc19tb2RpZnkoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIHUxNiBpbmRleCwgdTE2IHBhZ2UsXG4mIzQzO1x0XHRcdCAgICAgdTE2IHJlZywgdTE2IGNsZWFybWFzaywgdTE2IHNldG1hc2spXG4mIzQzO3tcbiYjNDM7XHR1MTYgdmFsID0gcjgxMjdfc2RzX3JlYWQodHAsIGluZGV4LCBwYWdlLCByZWcpO1xuJiM0MztcbiYjNDM7XHR2YWwgPSAodmFsIFx1MDAyNiB+Y2xlYXJtYXNrKSB8IHNldG1hc2s7XG4mIzQzO1x0cjgxMjdfc2RzX3dyaXRlKHRwLCBpbmRleCwgcGFnZSwgcmVnLCB2YWwpO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgdm9pZCByODEyN19zZnBfaW5pdF8xZyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbiYjNDM7e1xuJiM0MztcdGludCB2YWw7XG4mIzQzO1xuJiM0MztcdHI4MTI3X3NmcF9zZHNfcGh5X3Jlc2V0KHRwKTtcbiYjNDM7XG4mIzQzO1x0cjgxMjdfc2RzX21vZGlmeSh0cCwgMCwgMSwgMzEsIDAsIEJJVCgzKSk7XG4mIzQzO1x0cjgxMjdfc2RzX21vZGlmeSh0cCwgMCwgMiwgIDAsIEJJVCgxMykgfCBCSVQoMTIpIHwgQklUKDYpLCBCSVQoMTIpIHwgQklUKDYpKTtcbiYjNDM7XHRyODEyN19zZHNfbW9kaWZ5KHRwLCAwLCAwLCAgNCwgMCwgQklUKDIpKTtcbiYjNDM7XG4mIzQzO1x0UlRMX1cxNih0cCwgMHgyMzNhLCAweDgwMDQpO1xuJiM0MztcdFJUTF9XMTYodHAsIDB4MjMzZSwgKFJUTF9SMTYodHAsIDB4MjMzZSkgXHUwMDI2IH4weDMwMDMpIHwgMHgwMDAyKTtcbiYjNDM7XG4mIzQzO1x0cjgxNjhfcGh5X29jcF93cml0ZSh0cCwgMHhjNDBhLCAweDAwMDApO1xuJiM0MztcdHI4MTY4X3BoeV9vY3Bfd3JpdGUodHAsIDB4YzQ2NiwgMHgwMDAwKTtcbiYjNDM7XHRyODE2OF9waHlfb2NwX3dyaXRlKHRwLCAweGM4MDgsIDB4MDAwMCk7XG4mIzQzO1x0cjgxNjhfcGh5X29jcF93cml0ZSh0cCwgMHhjODBhLCAweDAwMDApO1xuJiM0MztcbiYjNDM7XHR2YWwgPSByODE2OF9waHlfb2NwX3JlYWQodHAsIDB4YzgwNCk7XG4mIzQzO1x0cjgxNjhfcGh5X29jcF93cml0ZSh0cCwgMHhjODA0LCAodmFsIFx1MDAyNiB+MHgwMDBmKSB8IDB4MDAwYyk7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIHZvaWQgcjgxMjdfc2ZwX2luaXRfMTBnKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuIHtcbiBcdGludCB2YWw7XG5AQCAtMTIxNywxMiAmIzQzOzEzMTAsNiBAQCBzdGF0aWMgdm9pZCByODEyN19zZnBfaW5pdF8xMGcoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG4gXHRyODE2OF9waHlfb2NwX3dyaXRlKHRwLCAweGM4MDQsICh2YWwgXHUwMDI2IH4weDAwMGYpIHwgMHgwMDBjKTtcbiB9XG4gXG4tc3RhdGljIHZvaWQgcnRsX3NmcF9pbml0KHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuLXtcbi1cdGlmICh0cC1cdTAwM2VtYWNfdmVyc2lvbiA9PSBSVExfR0lHQV9NQUNfVkVSXzgwKVxuLVx0XHRyODEyN19zZnBfaW5pdF8xMGcodHApO1xuLX1cbi1cbiBzdGF0aWMgdm9pZCBydGxfc2ZwX3Jlc2V0KHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuIHtcbiBcdGlmICh0cC1cdTAwM2VtYWNfdmVyc2lvbiA9PSBSVExfR0lHQV9NQUNfVkVSXzgwKVxuQEAgLTEyODMsNiAmIzQzOzEzNzAsMTUgQEAgc3RhdGljIHZvaWQgbWFjX21jdV93cml0ZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgaW50IHJlZywgaW50IHZhbHVlKVxuIFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgdHAtXHUwMDNlb2NwX2Jhc2UgJiM0MzsgcmVnLCB2YWx1ZSk7XG4gfVxuIFxuJiM0MztzdGF0aWMgYm9vbCBydGxfaXNfODExNmFmKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuJiM0Mzt7XG4mIzQzO1x0cmV0dXJuIHRwLVx1MDAzZW1hY192ZXJzaW9uID09IFJUTF9HSUdBX01BQ19WRVJfNTIgXHUwMDI2XHUwMDI2XG4mIzQzO1x0XHQocjgxNjhfbWFjX29jcF9yZWFkKHRwLCBSVExfUEtHX0RFVEVDVCkgXHUwMDI2IFJUTF9QS0dfREVURUNUX01BU0spID09XG4mIzQzO1x0XHRSVExfUEtHX0RFVEVDVF84MTE2QUYgXHUwMDI2XHUwMDI2XG4mIzQzO1x0XHQocjgxNjhfbWFjX29jcF9yZWFkKHRwLCBSVExfSU5UX0hXX0lEKSBcdTAwMjYgUlRMX0lOVF9IV19JRF9NQVNLKSA9PVxuJiM0MztcdFx0UlRMX0lOVF9IV19JRF84MTE2QUY7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIGludCBtYWNfbWN1X3JlYWQoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIGludCByZWcpXG4ge1xuIFx0cmV0dXJuIHI4MTY4X21hY19vY3BfcmVhZCh0cCwgdHAtXHUwMDNlb2NwX2Jhc2UgJiM0MzsgcmVnKTtcbkBAIC0xNTc4LDYgJiM0MzsxNjc0LDIwIEBAIHN0YXRpYyBib29sIHJ0bF9kYXNoX2lzX2VuYWJsZWQoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG4gXHR9XG4gfVxuIFxuJiM0MztzdGF0aWMgZW51bSBydGxfc2ZwX21vZGUgcnRsX2dldF9zZnBfbW9kZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbiYjNDM7e1xuJiM0MztcdGlmIChydGxfaXNfODEyNSh0cCkpIHtcbiYjNDM7XHRcdHUxNiBkYXRhID0gcjgxNjhfbWFjX29jcF9yZWFkKHRwLCBSVExfSU5UX0hXX0lEKTtcbiYjNDM7XG4mIzQzO1x0XHRpZiAoKGRhdGEgXHUwMDI2IDB4ZmYpID09IDB4MDcpXG4mIzQzO1x0XHRcdHJldHVybiBSVExfU0ZQXzgxMjdfQVRGO1xuJiM0MztcdH0gZWxzZSBpZiAocnRsX2lzXzgxMTZhZih0cCkpIHtcbiYjNDM7XHRcdHJldHVybiBSVExfU0ZQXzgxNjhfQUY7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRyZXR1cm4gUlRMX1NGUF9OT05FO1xuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyBlbnVtIHJ0bF9kYXNoX3R5cGUgcnRsX2dldF9kYXNoX3R5cGUoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG4ge1xuIFx0c3dpdGNoICh0cC1cdTAwM2VtYWNfdmVyc2lvbikge1xuQEAgLTE2NzMsMTYgJiM0MzsxNzgzLDE0IEBAIHN0YXRpYyB2b2lkIHJ0bDgxNjlfaXJxX21hc2tfYW5kX2FjayhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbiBcdHJ0bF9wY2lfY29tbWl0KHRwKTtcbiB9XG4gXG4tc3RhdGljIHZvaWQgcnRsX2xpbmtfY2hnX3BhdGNoKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuJiM0MztzdGF0aWMgdm9pZCBydGxfbGlua19jaGdfcGF0Y2goc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIGludCBzcGVlZClcbiB7XG4tXHRzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2ID0gdHAtXHUwMDNlcGh5ZGV2O1xuLVxuIFx0aWYgKHRwLVx1MDAzZW1hY192ZXJzaW9uID09IFJUTF9HSUdBX01BQ19WRVJfMzQgfHxcbiBcdCAgICB0cC1cdTAwM2VtYWNfdmVyc2lvbiA9PSBSVExfR0lHQV9NQUNfVkVSXzM4KSB7XG4tXHRcdGlmIChwaHlkZXYtXHUwMDNlc3BlZWQgPT0gU1BFRURfMTAwMCkge1xuJiM0MztcdFx0aWYgKHNwZWVkID09IFNQRUVEXzEwMDApIHtcbiBcdFx0XHRydGxfZXJpX3dyaXRlKHRwLCAweDFiYywgRVJJQVJfTUFTS18xMTExLCAweDAwMDAwMDExKTtcbiBcdFx0XHRydGxfZXJpX3dyaXRlKHRwLCAweDFkYywgRVJJQVJfTUFTS18xMTExLCAweDAwMDAwMDA1KTtcbi1cdFx0fSBlbHNlIGlmIChwaHlkZXYtXHUwMDNlc3BlZWQgPT0gU1BFRURfMTAwKSB7XG4mIzQzO1x0XHR9IGVsc2UgaWYgKHNwZWVkID09IFNQRUVEXzEwMCkge1xuIFx0XHRcdHJ0bF9lcmlfd3JpdGUodHAsIDB4MWJjLCBFUklBUl9NQVNLXzExMTEsIDB4MDAwMDAwMWYpO1xuIFx0XHRcdHJ0bF9lcmlfd3JpdGUodHAsIDB4MWRjLCBFUklBUl9NQVNLXzExMTEsIDB4MDAwMDAwMDUpO1xuIFx0XHR9IGVsc2Uge1xuQEAgLTE2OTIsNyAmIzQzOzE4MDAsNyBAQCBzdGF0aWMgdm9pZCBydGxfbGlua19jaGdfcGF0Y2goc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG4gXHRcdHJ0bF9yZXNldF9wYWNrZXRfZmlsdGVyKHRwKTtcbiBcdH0gZWxzZSBpZiAodHAtXHUwMDNlbWFjX3ZlcnNpb24gPT0gUlRMX0dJR0FfTUFDX1ZFUl8zNSB8fFxuIFx0XHQgICB0cC1cdTAwM2VtYWNfdmVyc2lvbiA9PSBSVExfR0lHQV9NQUNfVkVSXzM2KSB7XG4tXHRcdGlmIChwaHlkZXYtXHUwMDNlc3BlZWQgPT0gU1BFRURfMTAwMCkge1xuJiM0MztcdFx0aWYgKHNwZWVkID09IFNQRUVEXzEwMDApIHtcbiBcdFx0XHRydGxfZXJpX3dyaXRlKHRwLCAweDFiYywgRVJJQVJfTUFTS18xMTExLCAweDAwMDAwMDExKTtcbiBcdFx0XHRydGxfZXJpX3dyaXRlKHRwLCAweDFkYywgRVJJQVJfTUFTS18xMTExLCAweDAwMDAwMDA1KTtcbiBcdFx0fSBlbHNlIHtcbkBAIC0xNzAwLDcgJiM0MzsxODA4LDcgQEAgc3RhdGljIHZvaWQgcnRsX2xpbmtfY2hnX3BhdGNoKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuIFx0XHRcdHJ0bF9lcmlfd3JpdGUodHAsIDB4MWRjLCBFUklBUl9NQVNLXzExMTEsIDB4MDAwMDAwM2YpO1xuIFx0XHR9XG4gXHR9IGVsc2UgaWYgKHRwLVx1MDAzZW1hY192ZXJzaW9uID09IFJUTF9HSUdBX01BQ19WRVJfMzcpIHtcbi1cdFx0aWYgKHBoeWRldi1cdTAwM2VzcGVlZCA9PSBTUEVFRF8xMCkge1xuJiM0MztcdFx0aWYgKHNwZWVkID09IFNQRUVEXzEwKSB7XG4gXHRcdFx0cnRsX2VyaV93cml0ZSh0cCwgMHgxZDAsIEVSSUFSX01BU0tfMDAxMSwgMHg0ZDAyKTtcbiBcdFx0XHRydGxfZXJpX3dyaXRlKHRwLCAweDFkYywgRVJJQVJfTUFTS18wMDExLCAweDAwNjBhKTtcbiBcdFx0fSBlbHNlIHtcbkBAIC0yMDc0LDExICYjNDM7MjE4MiwxMSBAQCBydGxfY29hbGVzY2VfaW5mbyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbiBcdFx0Y2kgPSBydGxfY29hbGVzY2VfaW5mb184MTY4XzgxMzY7XG4gXG4gXHQvKiBpZiBzcGVlZCBpcyB1bmtub3duIGFzc3VtZSBoaWdoZXN0IG9uZSAqL1xuLVx0aWYgKHRwLVx1MDAzZXBoeWRldi1cdTAwM2VzcGVlZCA9PSBTUEVFRF9VTktOT1dOKVxuJiM0MztcdGlmICh0cC1cdTAwM2VzcGVlZCA9PSBTUEVFRF9VTktOT1dOKVxuIFx0XHRyZXR1cm4gY2k7XG4gXG4gXHRmb3IgKDsgY2ktXHUwMDNlc3BlZWQ7IGNpJiM0MzsmIzQzOykge1xuLVx0XHRpZiAodHAtXHUwMDNlcGh5ZGV2LVx1MDAzZXNwZWVkID09IGNpLVx1MDAzZXNwZWVkKVxuJiM0MztcdFx0aWYgKHRwLVx1MDAzZXNwZWVkID09IGNpLVx1MDAzZXNwZWVkKVxuIFx0XHRcdHJldHVybiBjaTtcbiBcdH1cbiBcbkBAIC0yMjM2LDcgJiM0MzsyMzQ0LDcgQEAgc3RhdGljIHZvaWQgcnRsX3NldF9lZWVfdHhpZGxlX3RpbWVyKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuIFxuIHN0YXRpYyB1bnNpZ25lZCBpbnQgcjgxNjlfZ2V0X3R4X2xwaV90aW1lcl91cyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbiB7XG4tXHR1bnNpZ25lZCBpbnQgc3BlZWQgPSB0cC1cdTAwM2VwaHlkZXYtXHUwMDNlc3BlZWQ7XG4mIzQzO1x0dW5zaWduZWQgaW50IHNwZWVkID0gdHAtXHUwMDNlc3BlZWQ7XG4gXHR1bnNpZ25lZCBpbnQgdGltZXIgPSB0cC1cdTAwM2V0eF9scGlfdGltZXI7XG4gXG4gXHRpZiAoIXRpbWVyIHx8IHNwZWVkID09IFNQRUVEX1VOS05PV04pXG5AQCAtMjI1NCw3ICYjNDM7MjM2Miw3IEBAIHN0YXRpYyBpbnQgcnRsODE2OV9nZXRfZWVlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBldGh0b29sX2tlZWUgKmRhdGEpXG4gXHRpZiAoIXJ0bF9zdXBwb3J0c19lZWUodHApKVxuIFx0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4gXG4tXHRyZXQgPSBwaHlfZXRodG9vbF9nZXRfZWVlKHRwLVx1MDAzZXBoeWRldiwgZGF0YSk7XG4mIzQzO1x0cmV0ID0gcGh5bGlua19ldGh0b29sX2dldF9lZWUodHAtXHUwMDNlcGh5bGluaywgZGF0YSk7XG4gXHRpZiAocmV0KVxuIFx0XHRyZXR1cm4gcmV0O1xuIFxuQEAgLTIyNzAsNyAmIzQzOzIzNzgsNyBAQCBzdGF0aWMgaW50IHJ0bDgxNjlfc2V0X2VlZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgZXRodG9vbF9rZWVlICpkYXRhKVxuIFx0aWYgKCFydGxfc3VwcG9ydHNfZWVlKHRwKSlcbiBcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuIFxuLVx0cmV0dXJuIHBoeV9ldGh0b29sX3NldF9lZWUodHAtXHUwMDNlcGh5ZGV2LCBkYXRhKTtcbiYjNDM7XHRyZXR1cm4gcGh5bGlua19ldGh0b29sX3NldF9lZWUodHAtXHUwMDNlcGh5bGluaywgZGF0YSk7XG4gfVxuIFxuIHN0YXRpYyB2b2lkIHJ0bDgxNjlfZ2V0X3JpbmdwYXJhbShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuQEAgLTIzMDEsMTMgJiM0MzsyNDA5LDggQEAgc3RhdGljIHZvaWQgcnRsODE2OV9nZXRfcGF1c2VwYXJhbShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFx0XHRcdFx0ICAgc3RydWN0IGV0aHRvb2xfcGF1c2VwYXJhbSAqZGF0YSlcbiB7XG4gXHRzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCA9IG5ldGRldl9wcml2KGRldik7XG4tXHRib29sIHR4X3BhdXNlLCByeF9wYXVzZTtcbiBcbi1cdHBoeV9nZXRfcGF1c2UodHAtXHUwMDNlcGh5ZGV2LCBcdTAwMjZ0eF9wYXVzZSwgXHUwMDI2cnhfcGF1c2UpO1xuLVxuLVx0ZGF0YS1cdTAwM2VhdXRvbmVnID0gdHAtXHUwMDNlcGh5ZGV2LVx1MDAzZWF1dG9uZWc7XG4tXHRkYXRhLVx1MDAzZXR4X3BhdXNlID0gdHhfcGF1c2UgPyAxIDogMDtcbi1cdGRhdGEtXHUwMDNlcnhfcGF1c2UgPSByeF9wYXVzZSA/IDEgOiAwO1xuJiM0MztcdHBoeWxpbmtfZXRodG9vbF9nZXRfcGF1c2VwYXJhbSh0cC1cdTAwM2VwaHlsaW5rLCBkYXRhKTtcbiB9XG4gXG4gc3RhdGljIGludCBydGw4MTY5X3NldF9wYXVzZXBhcmFtKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG5AQCAtMjMxOCw5ICYjNDM7MjQyMSw3IEBAIHN0YXRpYyBpbnQgcnRsODE2OV9zZXRfcGF1c2VwYXJhbShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFx0aWYgKGRldi1cdTAwM2VtdHUgXHUwMDNlIEVUSF9EQVRBX0xFTilcbiBcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuIFxuLVx0cGh5X3NldF9hc3ltX3BhdXNlKHRwLVx1MDAzZXBoeWRldiwgZGF0YS1cdTAwM2VyeF9wYXVzZSwgZGF0YS1cdTAwM2V0eF9wYXVzZSk7XG4tXG4tXHRyZXR1cm4gMDtcbiYjNDM7XHRyZXR1cm4gcGh5bGlua19ldGh0b29sX3NldF9wYXVzZXBhcmFtKHRwLVx1MDAzZXBoeWxpbmssIGRhdGEpO1xuIH1cbiBcbiBzdGF0aWMgdm9pZCBydGw4MTY5X2dldF9ldGhfbWFjX3N0YXRzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG5AQCAtMjM4NiwzNCAmIzQzOzI0ODcsMjcgQEAgc3RhdGljIHZvaWQgcnRsODE2OV9nZXRfZXRoX2N0cmxfc3RhdHMoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcdFx0bGUzMl90b19jcHUodHAtXHUwMDNlY291bnRlcnMtXHUwMDNlcnhfdW5rbm93bl9vcGNvZGUpO1xuIH1cbiBcbi1zdGF0aWMgaW50IHJ0bDgxNjlfc2V0X2xpbmtfa3NldHRpbmdzKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxuLVx0XHRcdFx0ICAgICAgY29uc3Qgc3RydWN0IGV0aHRvb2xfbGlua19rc2V0dGluZ3MgKmNtZClcbiYjNDM7c3RhdGljIGludCBydGw4MTY5X2dldF9saW5rX2tzZXR0aW5ncyhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcbiYjNDM7XHRcdFx0XHQgICAgICBzdHJ1Y3QgZXRodG9vbF9saW5rX2tzZXR0aW5ncyAqY21kKVxuIHtcbiBcdHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwID0gbmV0ZGV2X3ByaXYobmRldik7XG4tXHRzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2ID0gdHAtXHUwMDNlcGh5ZGV2O1xuLVx0aW50IGR1cGxleCA9IGNtZC1cdTAwM2ViYXNlLmR1cGxleDtcbi1cdGludCBzcGVlZCA9IGNtZC1cdTAwM2ViYXNlLnNwZWVkO1xuLVxuLVx0aWYgKCF0cC1cdTAwM2VzZnBfbW9kZSlcbi1cdFx0cmV0dXJuIHBoeV9ldGh0b29sX2tzZXR0aW5nc19zZXQocGh5ZGV2LCBjbWQpO1xuLVxuLVx0aWYgKGNtZC1cdTAwM2ViYXNlLmF1dG9uZWcgIT0gQVVUT05FR19ESVNBQkxFKVxuLVx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcbi1cdGlmICghcGh5X2NoZWNrX3ZhbGlkKHNwZWVkLCBkdXBsZXgsIHBoeWRldi1cdTAwM2VzdXBwb3J0ZWQpKVxuLVx0XHRyZXR1cm4gLUVJTlZBTDtcbi1cbi1cdG11dGV4X2xvY2soXHUwMDI2cGh5ZGV2LVx1MDAzZWxvY2spO1xuJiM0MztcdHJldHVybiBwaHlsaW5rX2V0aHRvb2xfa3NldHRpbmdzX2dldCh0cC1cdTAwM2VwaHlsaW5rLCBjbWQpO1xuJiM0Mzt9XG4gXG4tXHRwaHlkZXYtXHUwMDNlYXV0b25lZyA9IEFVVE9ORUdfRElTQUJMRTtcbi1cdHBoeWRldi1cdTAwM2VzcGVlZCA9IHNwZWVkO1xuLVx0cGh5ZGV2LVx1MDAzZWR1cGxleCA9IGR1cGxleDtcbiYjNDM7c3RhdGljIGludCBydGw4MTY5X3NldF9saW5rX2tzZXR0aW5ncyhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcbiYjNDM7XHRcdFx0XHQgICAgICBjb25zdCBzdHJ1Y3QgZXRodG9vbF9saW5rX2tzZXR0aW5ncyAqY21kKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAgPSBuZXRkZXZfcHJpdihuZGV2KTtcbiBcbi1cdHJ0bF9zZnBfaW5pdCh0cCk7XG4mIzQzO1x0cmV0dXJuIHBoeWxpbmtfZXRodG9vbF9rc2V0dGluZ3Nfc2V0KHRwLVx1MDAzZXBoeWxpbmssIGNtZCk7XG4mIzQzO31cbiBcbi1cdG11dGV4X3VubG9jayhcdTAwMjZwaHlkZXYtXHUwMDNlbG9jayk7XG4mIzQzO3N0YXRpYyBpbnQgcnRsODE2OV9ud2F5X3Jlc2V0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCA9IG5ldGRldl9wcml2KGRldik7XG4gXG4tXHRyZXR1cm4gMDtcbiYjNDM7XHRyZXR1cm4gcGh5bGlua19ldGh0b29sX253YXlfcmVzZXQodHAtXHUwMDNlcGh5bGluayk7XG4gfVxuIFxuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgcnRsODE2OV9ldGh0b29sX29wcyA9IHtcbkBAIC0yNDMxLDEwICYjNDM7MjUyNSwxMCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIHJ0bDgxNjlfZXRodG9vbF9vcHMgPSB7XG4gXHQuZ2V0X3NzZXRfY291bnRcdFx0PSBydGw4MTY5X2dldF9zc2V0X2NvdW50LFxuIFx0LmdldF9ldGh0b29sX3N0YXRzXHQ9IHJ0bDgxNjlfZ2V0X2V0aHRvb2xfc3RhdHMsXG4gXHQuZ2V0X3RzX2luZm9cdFx0PSBldGh0b29sX29wX2dldF90c19pbmZvLFxuLVx0Lm53YXlfcmVzZXRcdFx0PSBwaHlfZXRodG9vbF9ud2F5X3Jlc2V0LFxuJiM0MztcdC5ud2F5X3Jlc2V0XHRcdD0gcnRsODE2OV9ud2F5X3Jlc2V0LFxuIFx0LmdldF9lZWVcdFx0PSBydGw4MTY5X2dldF9lZWUsXG4gXHQuc2V0X2VlZVx0XHQ9IHJ0bDgxNjlfc2V0X2VlZSxcbi1cdC5nZXRfbGlua19rc2V0dGluZ3NcdD0gcGh5X2V0aHRvb2xfZ2V0X2xpbmtfa3NldHRpbmdzLFxuJiM0MztcdC5nZXRfbGlua19rc2V0dGluZ3NcdD0gcnRsODE2OV9nZXRfbGlua19rc2V0dGluZ3MsXG4gXHQuc2V0X2xpbmtfa3NldHRpbmdzXHQ9IHJ0bDgxNjlfc2V0X2xpbmtfa3NldHRpbmdzLFxuIFx0LmdldF9yaW5ncGFyYW1cdFx0PSBydGw4MTY5X2dldF9yaW5ncGFyYW0sXG4gXHQuZ2V0X3BhdXNlX3N0YXRzXHQ9IHJ0bDgxNjlfZ2V0X3BhdXNlX3N0YXRzLFxuQEAgLTI0OTksOSAmIzQzOzI1OTMsMTAgQEAgdm9pZCByODE2OV9hcHBseV9maXJtd2FyZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbiBcdFx0dHAtXHUwMDNlb2NwX2Jhc2UgPSBPQ1BfU1REX1BIWV9CQVNFO1xuIFxuIFx0XHQvKiBQSFkgc29mdCByZXNldCBtYXkgc3RpbGwgYmUgaW4gcHJvZ3Jlc3MgKi9cbi1cdFx0cGh5X3JlYWRfcG9sbF90aW1lb3V0KHRwLVx1MDAzZXBoeWRldiwgTUlJX0JNQ1IsIHZhbCxcbi1cdFx0XHRcdCAgICAgICEodmFsIFx1MDAyNiBCTUNSX1JFU0VUKSxcbi1cdFx0XHRcdCAgICAgIDUwMDAwLCA2MDAwMDAsIHRydWUpO1xuJiM0MztcdFx0aWYgKHRwLVx1MDAzZXBoeWRldilcbiYjNDM7XHRcdFx0cGh5X3JlYWRfcG9sbF90aW1lb3V0KHRwLVx1MDAzZXBoeWRldiwgTUlJX0JNQ1IsIHZhbCxcbiYjNDM7XHRcdFx0XHRcdCAgICAgICEodmFsIFx1MDAyNiBCTUNSX1JFU0VUKSxcbiYjNDM7XHRcdFx0XHRcdCAgICAgIDUwMDAwLCA2MDAwMDAsIHRydWUpO1xuIFx0fVxuIH1cbiBcbkBAIC0yNTM4LDYgJiM0MzsyNjMzLDggQEAgc3RhdGljIHZvaWQgcnRsX3NjaGVkdWxlX3Rhc2soc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIGVudW0gcnRsX2ZsYWcgZmxhZylcbiBcbiBzdGF0aWMgdm9pZCBydGw4MTY5X2luaXRfcGh5KHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuIHtcbiYjNDM7XHRwaHlfaW5pdF9odyh0cC1cdTAwM2VwaHlkZXYpO1xuJiM0MztcdHBoeV9yZXN1bWUodHAtXHUwMDNlcGh5ZGV2KTtcbiBcdHI4MTY5X2h3X3BoeV9jb25maWcodHAsIHRwLVx1MDAzZXBoeWRldiwgdHAtXHUwMDNlbWFjX3ZlcnNpb24pO1xuIFxuIFx0aWYgKHRwLVx1MDAzZW1hY192ZXJzaW9uIFx1MDAzYz0gUlRMX0dJR0FfTUFDX1ZFUl8wNikge1xuQEAgLTI1NTIsOSAmIzQzOzI2NDksNiBAQCBzdGF0aWMgdm9pZCBydGw4MTY5X2luaXRfcGh5KHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuIFx0ICAgIHRwLVx1MDAzZXBjaV9kZXYtXHUwMDNlc3Vic3lzdGVtX2RldmljZSA9PSAweGUwMDApXG4gXHRcdHBoeV93cml0ZV9wYWdlZCh0cC1cdTAwM2VwaHlkZXYsIDB4MDAwMSwgMHgxMCwgMHhmMDFiKTtcbiBcbi1cdGlmICh0cC1cdTAwM2VzZnBfbW9kZSlcbi1cdFx0cnRsX3NmcF9pbml0KHRwKTtcbi1cbiBcdC8qIFdlIG1heSBoYXZlIGNhbGxlZCBwaHlfc3BlZWRfZG93biBiZWZvcmUgKi9cbiBcdHBoeV9zcGVlZF91cCh0cC1cdTAwM2VwaHlkZXYpO1xuIFxuQEAgLTI2NTcsMTUgJiM0MzsyNzUxLDYgQEAgc3RhdGljIHZvaWQgcnRsX2p1bWJvX2NvbmZpZyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbiBcbiBcdGlmIChwY2lfaXNfcGNpZSh0cC1cdTAwM2VwY2lfZGV2KSBcdTAwMjZcdTAwMjYgdHAtXHUwMDNlc3VwcG9ydHNfZ21paSlcbiBcdFx0cGNpZV9zZXRfcmVhZHJxKHRwLVx1MDAzZXBjaV9kZXYsIHJlYWRycSk7XG4tXG4tXHQvKiBDaGlwIGRvZXNuJiMzOTt0IHN1cHBvcnQgcGF1c2UgaW4ganVtYm8gbW9kZSAqL1xuLVx0aWYgKGp1bWJvKSB7XG4tXHRcdGxpbmttb2RlX2NsZWFyX2JpdChFVEhUT09MX0xJTktfTU9ERV9QYXVzZV9CSVQsXG4tXHRcdFx0XHQgICB0cC1cdTAwM2VwaHlkZXYtXHUwMDNlYWR2ZXJ0aXNpbmcpO1xuLVx0XHRsaW5rbW9kZV9jbGVhcl9iaXQoRVRIVE9PTF9MSU5LX01PREVfQXN5bV9QYXVzZV9CSVQsXG4tXHRcdFx0XHQgICB0cC1cdTAwM2VwaHlkZXYtXHUwMDNlYWR2ZXJ0aXNpbmcpO1xuLVx0XHRwaHlfc3RhcnRfYW5lZyh0cC1cdTAwM2VwaHlkZXYpO1xuLVx0fVxuIH1cbiBcbiBERUNMQVJFX1JUTF9DT05EKHJ0bF9jaGlwY21kX2NvbmQpXG5AQCAtMjc4MCw3ICYjNDM7Mjg2NSw3IEBAIHN0YXRpYyB2b2lkIHJ0bF9wcmVwYXJlX3Bvd2VyX2Rvd24oc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG4gXHRcdHJ0bF9lcGh5X3dyaXRlKHRwLCAweDE5LCAweGZmNjQpO1xuIFxuIFx0aWYgKGRldmljZV9tYXlfd2FrZXVwKHRwX3RvX2Rldih0cCkpKSB7XG4tXHRcdHBoeV9zcGVlZF9kb3duKHRwLVx1MDAzZXBoeWRldiwgZmFsc2UpO1xuJiM0MztcdFx0cGh5bGlua19zcGVlZF9kb3duKHRwLVx1MDAzZXBoeWxpbmssIGZhbHNlKTtcbiBcdFx0cnRsX3dvbF9lbmFibGVfcngodHApO1xuIFx0fVxuIH1cbkBAIC0yODMyLDYgJiM0MzsyOTE3LDE2IEBAIHN0YXRpYyB2b2lkIHJ0bDgxNjlfc2V0X21hZ2ljX3JlZyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbiBcdFJUTF9XMzIodHAsIDB4N2MsIHZhbCk7XG4gfVxuIFxuJiM0MztzdGF0aWMgaW50IHJ0bDgxNjlfaW9jdGwoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IGlmcmVxICppZnIsIGludCBjbWQpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCA9IG5ldGRldl9wcml2KGRldik7XG4mIzQzO1xuJiM0MztcdGlmICghbmV0aWZfcnVubmluZyhkZXYpKVxuJiM0MztcdFx0cmV0dXJuIC1FTk9ERVY7XG4mIzQzO1xuJiM0MztcdHJldHVybiBwaHlsaW5rX21paV9pb2N0bCh0cC1cdTAwM2VwaHlsaW5rLCBpZnIsIGNtZCk7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIHZvaWQgcnRsX3NldF9yeF9tb2RlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4ge1xuIFx0dTMyIHJ4X21vZGUgPSBBY2NlcHRCcm9hZGNhc3QgfCBBY2NlcHRNeVBoeXMgfCBBY2NlcHRNdWx0aWNhc3Q7XG5AQCAtMzA5OCw4ICYjNDM7MzE5MywyMiBAQCBzdGF0aWMgdm9pZCBydGxfZW5hYmxlX2x0cihzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbiBcdFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGYyLCAweDkwMDMpO1xuIFx0XHRyODE2OF9tYWNfb2NwX21vZGlmeSh0cCwgTFRSX09CRkZfTE9DSywgMHgwMDAwLCBMSU5LX1NQRUVEX0NIQU5HRV9FTik7XG4gXHRcdGJyZWFrO1xuLVx0Y2FzZSBSVExfR0lHQV9NQUNfVkVSXzQ2IC4uLiBSVExfR0lHQV9NQUNfVkVSXzQ4OlxuIFx0Y2FzZSBSVExfR0lHQV9NQUNfVkVSXzUyOlxuJiM0MztcdFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGQwLCAweDkwMDMpO1xuJiM0MztcdFx0cjgxNjhfbWFjX29jcF9tb2RpZnkodHAsIExUUl9TTk9PUCwgMHgwMDAwLCBMVFJfU05PT1BfRU4pO1xuJiM0MztcdFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhlMDJjLCAweDE4ODApO1xuJiM0MztcdFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhlMDJlLCAweDQ4ODApO1xuJiM0MztcdFx0cjgxNjhfbWFjX29jcF9tb2RpZnkodHAsIEFMRFBTX0xUUiwgMHgwMDAwLCBBTERQU19MVFJfRU4pO1xuJiM0MztcdFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGQ4LCAweDkwMDMpO1xuJiM0MztcdFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGRhLCAweDkwMDMpO1xuJiM0MztcdFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGRjLCAweDkwMDMpO1xuJiM0MztcdFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGQyLCAweDg4M2MpO1xuJiM0MztcdFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGQ0LCAweDhjMTIpO1xuJiM0MztcdFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGQ2LCAweDkwMDMpO1xuJiM0MztcdFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhlMGE2LCAweDkwMDMpO1xuJiM0MztcdFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhlMGE4LCAweDkwMDMpO1xuJiM0MztcdFx0YnJlYWs7XG4mIzQzO1x0Y2FzZSBSVExfR0lHQV9NQUNfVkVSXzQ2IC4uLiBSVExfR0lHQV9NQUNfVkVSXzQ4OlxuIFx0XHRyODE2OF9tYWNfb2NwX21vZGlmeSh0cCwgQUxEUFNfTFRSLCAweDAwMDAsIEFMRFBTX0xUUl9FTik7XG4gXHRcdFJUTF9XOCh0cCwgQ09NQk9fTFRSX0VYVEVORCwgUlRMX1I4KHRwLCBDT01CT19MVFJfRVhURU5EKSB8IENPTUJPX0xUUl9FWFRFTkRfRU4pO1xuIFx0XHRmYWxsdGhyb3VnaDtcbkBAIC0zMTE5LDYgJiM0MzszMjI4LDcgQEAgc3RhdGljIHZvaWQgcnRsX2VuYWJsZV9sdHIoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG4gXHR9XG4gXHQvKiBjaGlwIGNhbiB0cmlnZ2VyIExUUiAqL1xuIFx0cjgxNjhfbWFjX29jcF9tb2RpZnkodHAsIExUUl9PQkZGX0xPQ0ssIDB4MDAwMywgTFRSX09CRkZfTE9DS19FTik7XG4mIzQzO1x0cjgxNjhfbWFjX29jcF9tb2RpZnkodHAsIFNFTkRfTFRSX01TRywgMHgwMDAwLCBMVFJfTVNHX0VOKTtcbiB9XG4gXG4gc3RhdGljIHZvaWQgcnRsX2h3X2FzcG1fY2xrcmVxX2VuYWJsZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgYm9vbCBlbmFibGUpXG5AQCAtMzE1Miw2ICYjNDM7MzI2Miw3IEBAIHN0YXRpYyB2b2lkIHJ0bF9od19hc3BtX2Nsa3JlcV9lbmFibGUoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIGJvb2wgZW5hYmxlKVxuIFx0XHRydGxfZW5hYmxlX2x0cih0cCk7XG4gXHRcdHN3aXRjaCAodHAtXHUwMDNlbWFjX3ZlcnNpb24pIHtcbiBcdFx0Y2FzZSBSVExfR0lHQV9NQUNfVkVSXzQ2IC4uLiBSVExfR0lHQV9NQUNfVkVSXzQ4OlxuJiM0MztcdFx0Y2FzZSBSVExfR0lHQV9NQUNfVkVSXzUyOlxuIFx0XHRjYXNlIFJUTF9HSUdBX01BQ19WRVJfNjEgLi4uIFJUTF9HSUdBX01BQ19WRVJfTEFTVDpcbiBcdFx0XHQvKiByZXNldCBlcGh5IHR4L3J4IGRpc2FibGUgdGltZXIgKi9cbiBcdFx0XHRyODE2OF9tYWNfb2NwX21vZGlmeSh0cCwgMHhlMDk0LCAweGZmMDAsIDApO1xuQEAgLTMxNjQsNiAmIzQzOzMyNzUsNyBAQCBzdGF0aWMgdm9pZCBydGxfaHdfYXNwbV9jbGtyZXFfZW5hYmxlKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCBib29sIGVuYWJsZSlcbiBcdH0gZWxzZSB7XG4gXHRcdHN3aXRjaCAodHAtXHUwMDNlbWFjX3ZlcnNpb24pIHtcbiBcdFx0Y2FzZSBSVExfR0lHQV9NQUNfVkVSXzQ2IC4uLiBSVExfR0lHQV9NQUNfVkVSXzQ4OlxuJiM0MztcdFx0Y2FzZSBSVExfR0lHQV9NQUNfVkVSXzUyOlxuIFx0XHRjYXNlIFJUTF9HSUdBX01BQ19WRVJfNjEgLi4uIFJUTF9HSUdBX01BQ19WRVJfTEFTVDpcbiBcdFx0XHRyODE2OF9tYWNfb2NwX21vZGlmeSh0cCwgMHhlMDkyLCAweDAwZmYsIDApO1xuIFx0XHRcdGJyZWFrO1xuQEAgLTM2NTcsNiAmIzQzOzM3NjksMzUgQEAgc3RhdGljIHZvaWQgcnRsX2h3X3N0YXJ0XzgxNjhlcF8zKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuIFx0cjgxNjhfbWFjX29jcF9tb2RpZnkodHAsIDB4ZTg2MCwgMHgwMDAwLCAweDAwODApO1xuIH1cbiBcbiYjNDM7c3RhdGljIHZvaWQgcnRsX2xvd3Bvd2VyX2hpZGRlbl9mdW5jdGlvbnMoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG4mIzQzO3tcbiYjNDM7XHR1bnNpZ25lZCBpbnQgc2xvdCA9IFBDSV9TTE9UKHBkZXYtXHUwMDNlZGV2Zm4pO1xuJiM0MztcdHN0cnVjdCBwY2lfYnVzICpidXMgPSBwZGV2LVx1MDAzZWJ1cztcbiYjNDM7XHR1bnNpZ25lZCBpbnQgZGV2Zm47XG4mIzQzO1x0aW50IGZ1bmM7XG4mIzQzO1x0aW50IHJldDtcbiYjNDM7XHR1MzIgdmFsO1xuJiM0MztcbiYjNDM7XHRmb3IgKGZ1bmMgPSAyOyBmdW5jIFx1MDAzYyA4OyBmdW5jJiM0MzsmIzQzOykge1xuJiM0MztcdFx0ZGV2Zm4gPSBQQ0lfREVWRk4oc2xvdCwgZnVuYyk7XG4mIzQzO1xuJiM0MztcdFx0cmV0ID0gcGNpX2J1c19yZWFkX2NvbmZpZ19kd29yZChidXMsIGRldmZuLCBSVEw4MTE2QUZfRlVOQ19QTV9DU1IsIFx1MDAyNnZhbCk7XG4mIzQzO1x0XHRpZiAoIXJldCBcdTAwMjZcdTAwMjYgIVBDSV9QT1NTSUJMRV9FUlJPUih2YWwpKSB7XG4mIzQzO1x0XHRcdHZhbCBcdTAwMjY9IH5QQ0lfUE1fQ1RSTF9QTUVfU1RBVFVTO1xuJiM0MztcdFx0XHR2YWwgXHUwMDI2PSB+KFBDSV9QTV9DVFJMX1NUQVRFX01BU0sgfCBQQ0lfUE1fQ1RSTF9QTUVfRU5BQkxFKTtcbiYjNDM7XHRcdFx0dmFsIHw9IChSVExfUE1fRDNIT1QgfCBQQ0lfUE1fQ1RSTF9QTUVfRU5BQkxFKTtcbiYjNDM7XHRcdFx0cGNpX2J1c193cml0ZV9jb25maWdfZHdvcmQoYnVzLCBkZXZmbiwgUlRMODExNkFGX0ZVTkNfUE1fQ1NSLCB2YWwpO1xuJiM0MztcdFx0fVxuJiM0MztcbiYjNDM7XHRcdHJldCA9IHBjaV9idXNfcmVhZF9jb25maWdfZHdvcmQoYnVzLCBkZXZmbiwgUlRMODExNkFGX0ZVTkNfRVhQX0xOS0NUTCwgXHUwMDI2dmFsKTtcbiYjNDM7XHRcdGlmICghcmV0IFx1MDAyNlx1MDAyNiAhUENJX1BPU1NJQkxFX0VSUk9SKHZhbCkpIHtcbiYjNDM7XHRcdFx0dmFsIFx1MDAyNj0gfigoUENJX0VYUF9MTktTVEFfTEJNUyB8IFBDSV9FWFBfTE5LU1RBX0xBQlMpIFx1MDAzY1x1MDAzYyAxNik7XG4mIzQzO1x0XHRcdHZhbCB8PSBQQ0lfRVhQX0xOS0NUTF9BU1BNQztcbiYjNDM7XHRcdFx0cGNpX2J1c193cml0ZV9jb25maWdfZHdvcmQoYnVzLCBkZXZmbiwgUlRMODExNkFGX0ZVTkNfRVhQX0xOS0NUTCwgdmFsKTtcbiYjNDM7XHRcdH1cbiYjNDM7XHR9XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIHZvaWQgcnRsX2h3X3N0YXJ0XzgxMTcoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG4ge1xuIFx0c3RhdGljIGNvbnN0IHN0cnVjdCBlcGh5X2luZm8gZV9pbmZvXzgxMTdbXSA9IHtcbkBAIC0zNjkzLDEyICYjNDM7MzgzNCwxNCBAQCBzdGF0aWMgdm9pZCBydGxfaHdfc3RhcnRfODExNyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbiBcbiBcdHJ0bF9wY2llX3N0YXRlX2wybDNfZGlzYWJsZSh0cCk7XG4gXG4tXHRyZ19zYXdfY250ID0gcGh5X3JlYWRfcGFnZWQodHAtXHUwMDNlcGh5ZGV2LCAweDBjNDIsIDB4MTMpIFx1MDAyNiAweDNmZmY7XG4tXHRpZiAocmdfc2F3X2NudCBcdTAwM2UgMCkge1xuLVx0XHR1MTYgc3dfY250XzFtc19pbmk7XG4mIzQzO1x0aWYgKHRwLVx1MDAzZXBoeWRldikge1xuJiM0MztcdFx0cmdfc2F3X2NudCA9IHBoeV9yZWFkX3BhZ2VkKHRwLVx1MDAzZXBoeWRldiwgMHgwYzQyLCAweDEzKSBcdTAwMjYgMHgzZmZmO1xuJiM0MztcdFx0aWYgKHJnX3Nhd19jbnQgXHUwMDNlIDApIHtcbiYjNDM7XHRcdFx0dTE2IHN3X2NudF8xbXNfaW5pO1xuIFxuLVx0XHRzd19jbnRfMW1zX2luaSA9ICgxNjAwMDAwMCAvIHJnX3Nhd19jbnQpIFx1MDAyNiAweDBmZmY7XG4tXHRcdHI4MTY4X21hY19vY3BfbW9kaWZ5KHRwLCAweGQ0MTIsIDB4MGZmZiwgc3dfY250XzFtc19pbmkpO1xuJiM0MztcdFx0XHRzd19jbnRfMW1zX2luaSA9ICgxNjAwMDAwMCAvIHJnX3Nhd19jbnQpIFx1MDAyNiAweDBmZmY7XG4mIzQzO1x0XHRcdHI4MTY4X21hY19vY3BfbW9kaWZ5KHRwLCAweGQ0MTIsIDB4MGZmZiwgc3dfY250XzFtc19pbmkpO1xuJiM0MztcdFx0fVxuIFx0fVxuIFxuIFx0cjgxNjhfbWFjX29jcF9tb2RpZnkodHAsIDB4ZTA1NiwgMHgwMGYwLCAweDAwMDApO1xuQEAgLTM3MTEsNiAmIzQzOzM4NTQsOSBAQCBzdGF0aWMgdm9pZCBydGxfaHdfc3RhcnRfODExNyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbiBcdHI4MTY4X21hY19vY3Bfd3JpdGUodHAsIDB4YzA5NCwgMHgwMDAwKTtcbiBcdHI4MTY4X21hY19vY3Bfd3JpdGUodHAsIDB4YzA5ZSwgMHgwMDAwKTtcbiBcbiYjNDM7XHRpZiAocnRsX2lzXzgxMTZhZih0cCkpXG4mIzQzO1x0XHRydGxfbG93cG93ZXJfaGlkZGVuX2Z1bmN0aW9ucyh0cC1cdTAwM2VwY2lfZGV2KTtcbiYjNDM7XG4gXHQvKiBmaXJtd2FyZSBpcyBmb3IgTUFDIG9ubHkgKi9cbiBcdHI4MTY5X2FwcGx5X2Zpcm13YXJlKHRwKTtcbiB9XG5AQCAtNDEzOSwxMiAmIzQzOzQyODUsMjUgQEAgc3RhdGljIHZvaWQgcnRsX2h3X3N0YXJ0KHN0cnVjdCAgcnRsODE2OV9wcml2YXRlICp0cClcbiBzdGF0aWMgaW50IHJ0bDgxNjlfY2hhbmdlX210dShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBpbnQgbmV3X210dSlcbiB7XG4gXHRzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCA9IG5ldGRldl9wcml2KGRldik7XG4mIzQzO1x0Ym9vbCBqdW1ib19iZWZvcmUgPSBkZXYtXHUwMDNlbXR1IFx1MDAzZSBFVEhfREFUQV9MRU47XG4mIzQzO1x0Ym9vbCBqdW1ib19hZnRlciA9IG5ld19tdHUgXHUwMDNlIEVUSF9EQVRBX0xFTjtcbiBcbiBcdFdSSVRFX09OQ0UoZGV2LVx1MDAzZW10dSwgbmV3X210dSk7XG4gXHRuZXRkZXZfdXBkYXRlX2ZlYXR1cmVzKGRldik7XG4gXHRydGxfanVtYm9fY29uZmlnKHRwKTtcbiBcdHJ0bF9zZXRfZWVlX3R4aWRsZV90aW1lcih0cCk7XG4gXG4mIzQzO1x0aWYgKGp1bWJvX2JlZm9yZSAhPSBqdW1ib19hZnRlcikge1xuJiM0MztcdFx0dW5zaWduZWQgbG9uZyBjYXBzID0gdHAtXHUwMDNlcGh5bGlua19jb25maWcubWFjX2NhcGFiaWxpdGllcztcbiYjNDM7XG4mIzQzO1x0XHRpZiAoanVtYm9fYWZ0ZXIpXG4mIzQzO1x0XHRcdGNhcHMgXHUwMDI2PSB+KE1BQ19TWU1fUEFVU0UgfCBNQUNfQVNZTV9QQVVTRSk7XG4mIzQzO1x0XHRlbHNlXG4mIzQzO1x0XHRcdGNhcHMgfD0gKE1BQ19TWU1fUEFVU0UgfCBNQUNfQVNZTV9QQVVTRSk7XG4mIzQzO1xuJiM0MztcdFx0cGh5bGlua19zZXRfbWFjX2NhcGFiaWxpdGllcyh0cC1cdTAwM2VwaHlsaW5rLCBjYXBzKTtcbiYjNDM7XHR9XG4mIzQzO1xuIFx0cmV0dXJuIDA7XG4gfVxuIFxuQEAgLTQ4NjksOCAmIzQzOzUwMjgsMTMgQEAgc3RhdGljIGlycXJldHVybl90IHJ0bDgxNjlfaW50ZXJydXB0KGludCBpcnEsIHZvaWQgKmRldl9pbnN0YW5jZSlcbiBcdFx0Z290byBvdXQ7XG4gXHR9XG4gXG4tXHRpZiAoc3RhdHVzIFx1MDAyNiBMaW5rQ2hnKVxuLVx0XHRwaHlfbWFjX2ludGVycnVwdCh0cC1cdTAwM2VwaHlkZXYpO1xuJiM0MztcdGlmIChzdGF0dXMgXHUwMDI2IExpbmtDaGcpIHtcbiYjNDM7XHRcdGlmICh0cC1cdTAwM2VwaHlkZXYpXG4mIzQzO1x0XHRcdHBoeV9tYWNfaW50ZXJydXB0KHRwLVx1MDAzZXBoeWRldik7XG4mIzQzO1x0XHRlbHNlIGlmICh0cC1cdTAwM2VzZnBfbW9kZSlcbiYjNDM7XHRcdFx0cGh5bGlua19tYWNfY2hhbmdlKHRwLVx1MDAzZXBoeWxpbmssXG4mIzQzO1x0XHRcdFx0XHQgICAhIShSVExfUjgodHAsIFBIWXN0YXR1cykgXHUwMDI2IExpbmtTdGF0dXMpKTtcbiYjNDM7XHR9XG4gXG4gXHRydGxfaXJxX2Rpc2FibGUodHApO1xuIFx0bmFwaV9zY2hlZHVsZShcdTAwMjZ0cC1cdTAwM2VuYXBpKTtcbkBAIC00OTMwLDkgJiM0Mzs1MDk0LDYgQEAgc3RhdGljIGludCBydGw4MTY5X3BvbGwoc3RydWN0IG5hcGlfc3RydWN0ICpuYXBpLCBpbnQgYnVkZ2V0KVxuIFxuIHN0YXRpYyB2b2lkIHJ0bF9lbmFibGVfdHhfbHBpKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCBib29sIGVuYWJsZSlcbiB7XG4tXHRpZiAoIXJ0bF9zdXBwb3J0c19lZWUodHApKVxuLVx0XHRyZXR1cm47XG4tXG4gXHRzd2l0Y2ggKHRwLVx1MDAzZW1hY192ZXJzaW9uKSB7XG4gXHRjYXNlIFJUTF9HSUdBX01BQ19WRVJfMzQgLi4uIFJUTF9HSUdBX01BQ19WRVJfNTI6XG4gXHRcdC8qIEFkanVzdCBFRUUgTEVEIGZyZXF1ZW5jeSAqL1xuQEAgLTQ5NjMsNDAgJiM0Mzs1MTI0LDE1IEBAIHN0YXRpYyB2b2lkIHJ0bF9lbmFibGVfdHhfbHBpKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCBib29sIGVuYWJsZSlcbiBcdH1cbiB9XG4gXG4tc3RhdGljIHZvaWQgcjgxNjlfcGh5bGlua19oYW5kbGVyKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxuLXtcbi1cdHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwID0gbmV0ZGV2X3ByaXYobmRldik7XG4tXHRzdHJ1Y3QgZGV2aWNlICpkID0gdHBfdG9fZGV2KHRwKTtcbi1cbi1cdGlmIChuZXRpZl9jYXJyaWVyX29rKG5kZXYpKSB7XG4tXHRcdHJ0bF9saW5rX2NoZ19wYXRjaCh0cCk7XG4tXHRcdHJ0bF9lbmFibGVfdHhfbHBpKHRwLCB0cC1cdTAwM2VwaHlkZXYtXHUwMDNlZW5hYmxlX3R4X2xwaSk7XG4tXHRcdHBtX3JlcXVlc3RfcmVzdW1lKGQpO1xuLVx0fSBlbHNlIHtcbi1cdFx0cG1fcnVudGltZV9pZGxlKGQpO1xuLVx0fVxuLVxuLVx0cGh5X3ByaW50X3N0YXR1cyh0cC1cdTAwM2VwaHlkZXYpO1xuLX1cbi1cbiBzdGF0aWMgaW50IHI4MTY5X3BoeV9jb25uZWN0KHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuIHtcbi1cdHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYgPSB0cC1cdTAwM2VwaHlkZXY7XG4tXHRwaHlfaW50ZXJmYWNlX3QgcGh5X21vZGU7XG4gXHRpbnQgcmV0O1xuIFxuLVx0cGh5X21vZGUgPSB0cC1cdTAwM2VzdXBwb3J0c19nbWlpID8gUEhZX0lOVEVSRkFDRV9NT0RFX0dNSUkgOlxuLVx0XHQgICBQSFlfSU5URVJGQUNFX01PREVfTUlJO1xuLVxuLVx0cmV0ID0gcGh5X2Nvbm5lY3RfZGlyZWN0KHRwLVx1MDAzZWRldiwgcGh5ZGV2LCByODE2OV9waHlsaW5rX2hhbmRsZXIsXG4tXHRcdFx0XHQgcGh5X21vZGUpO1xuLVx0aWYgKHJldClcbiYjNDM7XHRyZXQgPSBwaHlsaW5rX2Nvbm5lY3RfcGh5KHRwLVx1MDAzZXBoeWxpbmssIHRwLVx1MDAzZXBoeWRldik7XG4mIzQzO1x0aWYgKHJldCkge1xuJiM0MztcdFx0bmV0ZGV2X2Vycih0cC1cdTAwM2VkZXYsIFwmIzM0O2ZhaWxlZCB0byBjb25uZWN0IHBoeVxcblwmIzM0Oyk7XG4gXHRcdHJldHVybiByZXQ7XG4tXG4tXHRpZiAoIXRwLVx1MDAzZXN1cHBvcnRzX2dtaWkpXG4tXHRcdHBoeV9zZXRfbWF4X3NwZWVkKHBoeWRldiwgU1BFRURfMTAwKTtcbi1cbi1cdHBoeV9hdHRhY2hlZF9pbmZvKHBoeWRldik7XG4mIzQzO1x0fVxuIFxuIFx0cmV0dXJuIDA7XG4gfVxuQEAgLTUwMDcsMTAgJiM0Mzs1MTQzLDEwIEBAIHN0YXRpYyB2b2lkIHJ0bDgxNjlfZG93bihzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbiBcdC8qIENsZWFyIGFsbCB0YXNrIGZsYWdzICovXG4gXHRiaXRtYXBfemVybyh0cC1cdTAwM2V3ay5mbGFncywgUlRMX0ZMQUdfTUFYKTtcbiBcbi1cdHBoeV9zdG9wKHRwLVx1MDAzZXBoeWRldik7XG4mIzQzO1x0cGh5bGlua19zdG9wKHRwLVx1MDAzZXBoeWxpbmspO1xuIFxuIFx0LyogUmVzZXQgU2VyRGVzIFBIWSB0byBicmluZyBkb3duIGZpYmVyIGxpbmsgKi9cbi1cdGlmICh0cC1cdTAwM2VzZnBfbW9kZSlcbiYjNDM7XHRpZiAodHAtXHUwMDNlc2ZwX21vZGUgPT0gUlRMX1NGUF84MTI3X0FURilcbiBcdFx0cnRsX3NmcF9yZXNldCh0cCk7XG4gXG4gXHRydGw4MTY5X3VwZGF0ZV9jb3VudGVycyh0cCk7XG5AQCAtNTAzMiwxNCAmIzQzOzUxNjgsMTQgQEAgc3RhdGljIHZvaWQgcnRsODE2OV91cChzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbiBcdFx0cnRsODE2OF9kcml2ZXJfc3RhcnQodHApO1xuIFxuIFx0cGNpX3NldF9tYXN0ZXIodHAtXHUwMDNlcGNpX2Rldik7XG4tXHRwaHlfaW5pdF9odyh0cC1cdTAwM2VwaHlkZXYpO1xuLVx0cGh5X3Jlc3VtZSh0cC1cdTAwM2VwaHlkZXYpO1xuLVx0cnRsODE2OV9pbml0X3BoeSh0cCk7XG4mIzQzO1x0aWYgKHRwLVx1MDAzZXBoeWRldilcbiYjNDM7XHRcdHJ0bDgxNjlfaW5pdF9waHkodHApO1xuJiM0MztcbiBcdG5hcGlfZW5hYmxlKFx1MDAyNnRwLVx1MDAzZW5hcGkpO1xuIFx0ZW5hYmxlX3dvcmsoXHUwMDI2dHAtXHUwMDNld2sud29yayk7XG4gXHRydGxfcmVzZXRfd29yayh0cCk7XG4gXG4tXHRwaHlfc3RhcnQodHAtXHUwMDNlcGh5ZGV2KTtcbiYjNDM7XHRwaHlsaW5rX3N0YXJ0KHRwLVx1MDAzZXBoeWxpbmspO1xuIH1cbiBcbiBzdGF0aWMgaW50IHJ0bDgxNjlfY2xvc2Uoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbkBAIC01MDU1LDcgJiM0Mzs1MTkxLDcgQEAgc3RhdGljIGludCBydGw4MTY5X2Nsb3NlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4gXG4gXHRmcmVlX2lycSh0cC1cdTAwM2VpcnEsIHRwKTtcbiBcbi1cdHBoeV9kaXNjb25uZWN0KHRwLVx1MDAzZXBoeWRldik7XG4mIzQzO1x0cGh5bGlua19kaXNjb25uZWN0X3BoeSh0cC1cdTAwM2VwaHlsaW5rKTtcbiBcbiBcdGRtYV9mcmVlX2NvaGVyZW50KFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBSODE2OV9SWF9SSU5HX0JZVEVTLCB0cC1cdTAwM2VSeERlc2NBcnJheSxcbiBcdFx0XHQgIHRwLVx1MDAzZVJ4UGh5QWRkcik7XG5AQCAtNTExMiw5ICYjNDM7NTI0OCwxMSBAQCBzdGF0aWMgaW50IHJ0bF9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4gXHRpZiAocmV0dmFsIFx1MDAzYyAwKVxuIFx0XHRnb3RvIGVycl9yZWxlYXNlX2Z3XzI7XG4gXG4tXHRyZXR2YWwgPSByODE2OV9waHlfY29ubmVjdCh0cCk7XG4tXHRpZiAocmV0dmFsKVxuLVx0XHRnb3RvIGVycl9mcmVlX2lycTtcbiYjNDM7XHRpZiAodHAtXHUwMDNlcGh5ZGV2KSB7XG4mIzQzO1x0XHRyZXR2YWwgPSByODE2OV9waHlfY29ubmVjdCh0cCk7XG4mIzQzO1x0XHRpZiAocmV0dmFsKVxuJiM0MztcdFx0XHRnb3RvIGVycl9mcmVlX2lycTtcbiYjNDM7XHR9XG4gXG4gXHRydGw4MTY5X3VwKHRwKTtcbiBcdHJ0bDgxNjlfaW5pdF9jb3VudGVyX29mZnNldHModHApO1xuQEAgLTUxOTAsOCAmIzQzOzUzMjgsMTEgQEAgc3RhdGljIGludCBydGw4MTY5X3J1bnRpbWVfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldilcbiBcdHJ0bF9yYXJfc2V0KHRwLCB0cC1cdTAwM2VkZXYtXHUwMDNlZGV2X2FkZHIpO1xuIFx0X19ydGw4MTY5X3NldF93b2wodHAsIHRwLVx1MDAzZXNhdmVkX3dvbG9wdHMpO1xuIFxuLVx0aWYgKHRwLVx1MDAzZVR4RGVzY0FycmF5KVxuJiM0MztcdGlmICh0cC1cdTAwM2VUeERlc2NBcnJheSkge1xuJiM0MztcdFx0cnRubF9sb2NrKCk7XG4gXHRcdHJ0bDgxNjlfdXAodHApO1xuJiM0MztcdFx0cnRubF91bmxvY2soKTtcbiYjNDM7XHR9XG4gXG4gXHRuZXRpZl9kZXZpY2VfYXR0YWNoKHRwLVx1MDAzZWRldik7XG4gXG5AQCAtNTI4OCw2ICYjNDM7NTQyOSw3IEBAIHN0YXRpYyB2b2lkIHJ0bF9yZW1vdmVfb25lKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxuIFx0XHRyODE2OV9yZW1vdmVfbGVkcyh0cC1cdTAwM2VsZWRzKTtcbiBcbiBcdHVucmVnaXN0ZXJfbmV0ZGV2KHRwLVx1MDAzZWRldik7XG4mIzQzO1x0cGh5bGlua19kZXN0cm95KHRwLVx1MDAzZXBoeWxpbmspO1xuIFxuIFx0aWYgKHRwLVx1MDAzZWRhc2hfdHlwZSAhPSBSVExfREFTSF9OT05FKVxuIFx0XHRydGw4MTY4X2RyaXZlcl9zdG9wKHRwKTtcbkBAIC01MzEwLDcgJiM0Mzs1NDUyLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBydGxfbmV0ZGV2X29wcyA9IHtcbiBcdC5uZG9fZml4X2ZlYXR1cmVzXHQ9IHJ0bDgxNjlfZml4X2ZlYXR1cmVzLFxuIFx0Lm5kb19zZXRfZmVhdHVyZXNcdD0gcnRsODE2OV9zZXRfZmVhdHVyZXMsXG4gXHQubmRvX3NldF9tYWNfYWRkcmVzc1x0PSBydGxfc2V0X21hY19hZGRyZXNzLFxuLVx0Lm5kb19ldGhfaW9jdGxcdFx0PSBwaHlfZG9faW9jdGxfcnVubmluZyxcbiYjNDM7XHQubmRvX2V0aF9pb2N0bFx0XHQ9IHJ0bDgxNjlfaW9jdGwsXG4gXHQubmRvX3NldF9yeF9tb2RlXHQ9IHJ0bF9zZXRfcnhfbW9kZSxcbiAjaWZkZWYgQ09ORklHX05FVF9QT0xMX0NPTlRST0xMRVJcbiBcdC5uZG9fcG9sbF9jb250cm9sbGVyXHQ9IHJ0bDgxNjlfbmV0cG9sbCxcbkBAIC01NDc0LDE2ICYjNDM7NTYxNiw2IEBAIHN0YXRpYyBpbnQgcjgxNjlfbWRpb19yZWdpc3RlcihzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbiBcdFx0cmV0dXJuIC1FVU5BVENIO1xuIFx0fVxuIFxuLVx0dHAtXHUwMDNlcGh5ZGV2LVx1MDAzZW1hY19tYW5hZ2VkX3BtID0gdHJ1ZTtcbi1cdGlmIChydGxfc3VwcG9ydHNfZWVlKHRwKSlcbi1cdFx0cGh5X3N1cHBvcnRfZWVlKHRwLVx1MDAzZXBoeWRldik7XG4tXHRwaHlfc3VwcG9ydF9hc3ltX3BhdXNlKHRwLVx1MDAzZXBoeWRldik7XG4tXG4tXHQvKiBtaW1pYyBiZWhhdmlvciBvZiByODEyNS9yODEyNiB2ZW5kb3IgZHJpdmVycyAqL1xuLVx0aWYgKHRwLVx1MDAzZW1hY192ZXJzaW9uID09IFJUTF9HSUdBX01BQ19WRVJfNjEpXG4tXHRcdHBoeV9kaXNhYmxlX2VlZV9tb2RlKHRwLVx1MDAzZXBoeWRldixcbi1cdFx0XHRcdCAgICAgRVRIVE9PTF9MSU5LX01PREVfMjUwMGJhc2VUX0Z1bGxfQklUKTtcbi1cbiBcdC8qIFBIWSB3aWxsIGJlIHdva2VuIHVwIGluIHJ0bF9vcGVuKCkgKi9cbiBcdHBoeV9zdXNwZW5kKHRwLVx1MDAzZXBoeWRldik7XG4gXG5AQCAtNTU5OSw2ICYjNDM7NTczMSwyNDIgQEAgc3RhdGljIGJvb2wgcnRsX2FzcG1faXNfc2FmZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbiBcdHJldHVybiBmYWxzZTtcbiB9XG4gXG4mIzQzO3N0YXRpYyB2b2lkIHJ0bF9tYWNfbGlua19kb3duKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLCB1bnNpZ25lZCBpbnQgbW9kZSxcbiYjNDM7XHRcdFx0ICAgICAgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwID0gY29udGFpbmVyX29mKGNvbmZpZywgc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSwgcGh5bGlua19jb25maWcpO1xuJiM0MztcbiYjNDM7XHR0cC1cdTAwM2VzcGVlZCA9IFNQRUVEX1VOS05PV047XG4mIzQzO1x0cG1fcnVudGltZV9pZGxlKHRwX3RvX2Rldih0cCkpO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgdm9pZCBydGxfbWFjX2xpbmtfdXAoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXG4mIzQzO1x0XHRcdCAgICB1bnNpZ25lZCBpbnQgbW9kZSwgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSxcbiYjNDM7XHRcdFx0ICAgIGludCBzcGVlZCwgaW50IGR1cGxleCwgYm9vbCB0eF9wYXVzZSwgYm9vbCByeF9wYXVzZSlcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwID0gY29udGFpbmVyX29mKGNvbmZpZywgc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSwgcGh5bGlua19jb25maWcpO1xuJiM0MztcdHN0cnVjdCBkZXZpY2UgKmQgPSB0cF90b19kZXYodHApO1xuJiM0MztcbiYjNDM7XHR0cC1cdTAwM2VzcGVlZCA9IHNwZWVkO1xuJiM0MztcdHJ0bF9saW5rX2NoZ19wYXRjaCh0cCwgc3BlZWQpO1xuJiM0MztcbiYjNDM7XHRwbV9yZXF1ZXN0X3Jlc3VtZShkKTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIHN0cnVjdCBwaHlsaW5rX3BjcyAqcnRsX21hY19zZWxlY3RfcGNzKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLFxuJiM0MztcdFx0XHRcdFx0ICAgICAgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwID0gY29udGFpbmVyX29mKGNvbmZpZywgc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSwgcGh5bGlua19jb25maWcpO1xuJiM0MztcbiYjNDM7XHRpZiAoIXRwLVx1MDAzZXBjcy5vcHMpXG4mIzQzO1x0XHRyZXR1cm4gTlVMTDtcbiYjNDM7XG4mIzQzO1x0aWYgKGludGVyZmFjZSA9PSBQSFlfSU5URVJGQUNFX01PREVfMTAwMEJBU0VYIHx8XG4mIzQzO1x0ICAgIGludGVyZmFjZSA9PSBQSFlfSU5URVJGQUNFX01PREVfMTBHQkFTRVIpXG4mIzQzO1x0XHRyZXR1cm4gXHUwMDI2dHAtXHUwMDNlcGNzO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gTlVMTDtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIHZvaWQgcnRsX21hY19jb25maWcoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsIHVuc2lnbmVkIGludCBtb2RlLFxuJiM0MztcdFx0XHQgICBjb25zdCBzdHJ1Y3QgcGh5bGlua19saW5rX3N0YXRlICpzdGF0ZSlcbiYjNDM7e1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgdTE2IHJ0bDgxNjlfc2RzX3JlYWQoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIHUxNiBzZHNfcmVnKVxuJiM0Mzt7XG4mIzQzO1x0dW5zaWduZWQgbG9uZyBmbGFncztcbiYjNDM7XHR1MTYgdmFsID0gMDtcbiYjNDM7XG4mIzQzO1x0cmF3X3NwaW5fbG9ja19pcnFzYXZlKFx1MDAyNnRwLVx1MDAzZW1hY19vY3BfbG9jaywgZmxhZ3MpO1xuJiM0MztcdF9fcjgxNjhfbWFjX29jcF93cml0ZSh0cCwgT0NQX1NEU19BRERSX1JFRywgc2RzX3JlZyk7XG4mIzQzO1x0X19yODE2OF9tYWNfb2NwX3dyaXRlKHRwLCBPQ1BfU0RTX0NNRF9SRUcsIFNEU19DTURfUkVBRCk7XG4mIzQzO1x0dmFsID0gX19yODE2OF9tYWNfb2NwX3JlYWQodHAsIE9DUF9TRFNfREFUQV9SRUcpO1xuJiM0MztcdHJhd19zcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNnRwLVx1MDAzZW1hY19vY3BfbG9jaywgZmxhZ3MpO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gdmFsO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgdm9pZCBydGw4MTY5X3Bjc19nZXRfc3RhdGUoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MsXG4mIzQzO1x0XHRcdFx0ICB1bnNpZ25lZCBpbnQgbmVnX21vZGUsXG4mIzQzO1x0XHRcdFx0ICBzdHJ1Y3QgcGh5bGlua19saW5rX3N0YXRlICpzdGF0ZSlcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwID0gY29udGFpbmVyX29mKHBjcywgc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSwgcGNzKTtcbiYjNDM7XG4mIzQzO1x0aWYgKHRwLVx1MDAzZXNmcF9tb2RlID09IFJUTF9TRlBfODEyN19BVEYpIHtcbiYjNDM7XHRcdHUxNiBzdGF0MTtcbiYjNDM7XG4mIzQzO1x0XHRzdGF0MSA9IHJ0bDgxNjlfc2RzX3JlYWQodHAsIFJUTF9TRFNfQzQ1X0JBU0UgJiM0MzsgTURJT19TVEFUMSk7XG4mIzQzO1xuJiM0MztcdFx0aWYgKCEoc3RhdDEgXHUwMDI2IE1ESU9fU1RBVDFfTFNUQVRVUykpXG4mIzQzO1x0XHRcdHN0YXQxID0gcnRsODE2OV9zZHNfcmVhZCh0cCwgUlRMX1NEU19DNDVfQkFTRSAmIzQzOyBNRElPX1NUQVQxKTtcbiYjNDM7XG4mIzQzO1x0XHRzdGF0ZS1cdTAwM2VsaW5rID0gISEoc3RhdDEgXHUwMDI2IE1ESU9fU1RBVDFfTFNUQVRVUyk7XG4mIzQzO1x0XHRpZiAoIXN0YXRlLVx1MDAzZWxpbmspXG4mIzQzO1x0XHRcdHJldHVybjtcbiYjNDM7XG4mIzQzO1x0XHRzdGF0ZS1cdTAwM2VkdXBsZXggPSBEVVBMRVhfRlVMTDtcbiYjNDM7XHRcdHN0YXRlLVx1MDAzZXNwZWVkID0gU1BFRURfMTAwMDA7XG4mIzQzO1x0fSBlbHNlIHtcbiYjNDM7XHRcdHUxNiBibXNyLCBscGE7XG4mIzQzO1xuJiM0MztcdFx0Ym1zciA9IHJ0bDgxNjlfc2RzX3JlYWQodHAsIFJUTF9TRFNfQzIyX0JBU0UgJiM0MzsgTUlJX0JNU1IpO1xuJiM0MztcdFx0bHBhID0gcnRsODE2OV9zZHNfcmVhZCh0cCwgUlRMX1NEU19DMjJfQkFTRSAmIzQzOyBNSUlfTFBBKTtcbiYjNDM7XHRcdHBoeWxpbmtfbWlpX2MyMl9wY3NfZGVjb2RlX3N0YXRlKHN0YXRlLCBuZWdfbW9kZSwgYm1zciwgbHBhKTtcbiYjNDM7XHR9XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyBpbnQgcnRsODE2OV9wY3NfY29uZmlnKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzLCB1bnNpZ25lZCBpbnQgbW9kZSxcbiYjNDM7XHRcdFx0ICAgICAgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSxcbiYjNDM7XHRcdFx0ICAgICAgY29uc3QgdW5zaWduZWQgbG9uZyAqYWR2ZXJ0aXNpbmcsXG4mIzQzO1x0XHRcdCAgICAgIGJvb2wgcGVybWl0X3BhdXNlX3RvX21hYylcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwID0gY29udGFpbmVyX29mKHBjcywgc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSwgcGNzKTtcbiYjNDM7XG4mIzQzO1x0aWYgKHRwLVx1MDAzZXNmcF9tb2RlID09IFJUTF9TRlBfODEyN19BVEYpIHtcbiYjNDM7XHRcdHN3aXRjaCAoaW50ZXJmYWNlKSB7XG4mIzQzO1x0XHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV8xMEdCQVNFUjpcbiYjNDM7XHRcdFx0cjgxMjdfc2ZwX2luaXRfMTBnKHRwKTtcbiYjNDM7XHRcdFx0YnJlYWs7XG4mIzQzO1x0XHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV8xMDAwQkFTRVg6XG4mIzQzO1x0XHRcdHI4MTI3X3NmcF9pbml0XzFnKHRwKTtcbiYjNDM7XHRcdFx0YnJlYWs7XG4mIzQzO1x0XHRkZWZhdWx0OlxuJiM0MztcdFx0XHRuZXRkZXZfZXJyKHRwLVx1MDAzZWRldiwgXCYjMzQ7VW5zdXBwb3J0ZWQgU0ZQIGludGVyZmFjZSBtb2RlOiAlc1xcblwmIzM0OyxcbiYjNDM7XHRcdFx0XHQgICBwaHlfbW9kZXMoaW50ZXJmYWNlKSk7XG4mIzQzO1x0XHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbiYjNDM7XHRcdH1cbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdHJldHVybiAwO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgaW50IHJ0bDgxNjlfcGNzX3ZhbGlkYXRlKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzLCB1bnNpZ25lZCBsb25nICpzdXBwb3J0ZWQsXG4mIzQzO1x0XHRcdFx0Y29uc3Qgc3RydWN0IHBoeWxpbmtfbGlua19zdGF0ZSAqc3RhdGUpXG4mIzQzO3tcbiYjNDM7XHRyZXR1cm4gMDtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIHZvaWQgcnRsODE2OV9wY3NfYW5fcmVzdGFydChzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcylcbiYjNDM7e1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgdm9pZCBydGxfbWFjX2Rpc2FibGVfdHhfbHBpKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAgPSBjb250YWluZXJfb2YoY29uZmlnLCBzdHJ1Y3QgcnRsODE2OV9wcml2YXRlLCBwaHlsaW5rX2NvbmZpZyk7XG4mIzQzO1xuJiM0MztcdHJ0bF9lbmFibGVfdHhfbHBpKHRwLCBmYWxzZSk7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyBpbnQgcnRsX21hY19lbmFibGVfdHhfbHBpKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLCB1MzIgdGltZXIsIGJvb2wgdHhfY2xrX3N0b3ApXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCA9IGNvbnRhaW5lcl9vZihjb25maWcsIHN0cnVjdCBydGw4MTY5X3ByaXZhdGUsIHBoeWxpbmtfY29uZmlnKTtcbiYjNDM7XG4mIzQzO1x0cnRsX2VuYWJsZV90eF9scGkodHAsIHRydWUpO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gMDtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBwaHlsaW5rX21hY19vcHMgcnRsX3BoeWxpbmtfbWFjX29wcyA9IHtcbiYjNDM7XHQubWFjX3NlbGVjdF9wY3MgPSBydGxfbWFjX3NlbGVjdF9wY3MsXG4mIzQzO1x0Lm1hY19jb25maWcgPSBydGxfbWFjX2NvbmZpZyxcbiYjNDM7XHQubWFjX2xpbmtfZG93biAgPSBydGxfbWFjX2xpbmtfZG93bixcbiYjNDM7XHQubWFjX2xpbmtfdXAgICAgPSBydGxfbWFjX2xpbmtfdXAsXG4mIzQzO1x0Lm1hY19kaXNhYmxlX3R4X2xwaSA9IHJ0bF9tYWNfZGlzYWJsZV90eF9scGksXG4mIzQzO1x0Lm1hY19lbmFibGVfdHhfbHBpID0gcnRsX21hY19lbmFibGVfdHhfbHBpLFxuJiM0Mzt9O1xuJiM0MztcbiYjNDM7c3RhdGljIHVuc2lnbmVkIGxvbmcgcnRsODE2OV9nZXRfbHBpX2NhcHMoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG4mIzQzO3tcbiYjNDM7XHR1bnNpZ25lZCBsb25nIGNhcHMgPSAwO1xuJiM0MztcbiYjNDM7XHRpZiAoIXJ0bF9zdXBwb3J0c19lZWUodHApIHx8IHRwLVx1MDAzZXNmcF9tb2RlID09IFJUTF9TRlBfODEyN19BVEYpXG4mIzQzO1x0XHRyZXR1cm4gMDtcbiYjNDM7XG4mIzQzO1x0Y2FwcyB8PSBNQUNfMTAwRkQgfCBNQUNfMTAwMEZEO1xuJiM0MztcbiYjNDM7XHQvKiBtaW1pYyBiZWhhdmlvciBvZiByODEyNS9yODEyNiB2ZW5kb3IgZHJpdmVyc1xuJiM0MztcdCAqIFJUTF9HSUdBX01BQ19WRVJfNjEgZG9lc24mIzM5O3Qgc3VwcG9ydCAyLjVHIGVlZVxuJiM0MztcdCAqL1xuJiM0MztcdGlmICh0cC1cdTAwM2VtYWNfdmVyc2lvbiBcdTAwM2U9IFJUTF9HSUdBX01BQ19WRVJfNjMpXG4mIzQzO1x0XHRjYXBzIHw9IE1BQ18yNTAwRkQ7XG4mIzQzO1x0aWYgKHRwLVx1MDAzZW1hY192ZXJzaW9uIFx1MDAzZT0gUlRMX0dJR0FfTUFDX1ZFUl83MClcbiYjNDM7XHRcdGNhcHMgfD0gTUFDXzUwMDBGRDtcbiYjNDM7XHRpZiAodHAtXHUwMDNlbWFjX3ZlcnNpb24gPT0gUlRMX0dJR0FfTUFDX1ZFUl84MClcbiYjNDM7XHRcdGNhcHMgfD0gTUFDXzEwMDAwRkQ7XG4mIzQzO1xuJiM0MztcdHJldHVybiBjYXBzO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IHBoeWxpbmtfcGNzX29wcyByODE2OV9wY3Nfb3BzID0ge1xuJiM0MztcdC5wY3NfdmFsaWRhdGUgPSBydGw4MTY5X3Bjc192YWxpZGF0ZSxcbiYjNDM7XHQucGNzX2dldF9zdGF0ZSA9IHJ0bDgxNjlfcGNzX2dldF9zdGF0ZSxcbiYjNDM7XHQucGNzX2NvbmZpZyA9IHJ0bDgxNjlfcGNzX2NvbmZpZyxcbiYjNDM7XHQucGNzX2FuX3Jlc3RhcnQgPSBydGw4MTY5X3Bjc19hbl9yZXN0YXJ0LFxuJiM0Mzt9O1xuJiM0MztcbiYjNDM7c3RhdGljIGludCBydGxfaW5pdF9waHlsaW5rKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IHBoeWxpbmsgKnBsO1xuJiM0MztcdHBoeV9pbnRlcmZhY2VfdCBwaHlfbW9kZTtcbiYjNDM7XG4mIzQzO1x0dHAtXHUwMDNlcGh5bGlua19jb25maWcuZGV2ID0gXHUwMDI2dHAtXHUwMDNlZGV2LVx1MDAzZWRldjtcbiYjNDM7XHR0cC1cdTAwM2VwaHlsaW5rX2NvbmZpZy50eXBlID0gUEhZTElOS19ORVRERVY7XG4mIzQzO1x0dHAtXHUwMDNlcGh5bGlua19jb25maWcubWFjX21hbmFnZWRfcG0gPSB0cnVlO1xuJiM0MztcdHRwLVx1MDAzZXBoeWxpbmtfY29uZmlnLmxwaV9jYXBhYmlsaXRpZXMgPSBydGw4MTY5X2dldF9scGlfY2Fwcyh0cCk7XG4mIzQzO1x0dHAtXHUwMDNlcGh5bGlua19jb25maWcubWFjX2NhcGFiaWxpdGllcyB8PSBNQUNfQVNZTV9QQVVTRSB8IE1BQ19TWU1fUEFVU0U7XG4mIzQzO1xuJiM0MztcdHN3aXRjaCAodHAtXHUwMDNlc2ZwX21vZGUpIHtcbiYjNDM7XHRjYXNlIFJUTF9TRlBfODE2OF9BRjpcbiYjNDM7XHRcdHRwLVx1MDAzZXBjcy5vcHMgPSBcdTAwMjZyODE2OV9wY3Nfb3BzO1xuJiM0MztcdFx0dHAtXHUwMDNlcGh5bGlua19jb25maWcuZGVmYXVsdF9hbl9pbmJhbmQgPSB0cnVlO1xuJiM0MztcdFx0cGh5X21vZGUgPSBQSFlfSU5URVJGQUNFX01PREVfMTAwMEJBU0VYO1xuJiM0MztcdFx0dHAtXHUwMDNlcGh5bGlua19jb25maWcubWFjX2NhcGFiaWxpdGllcyB8PSBNQUNfMTAwMEZEO1xuJiM0MztcdFx0YnJlYWs7XG4mIzQzO1x0Y2FzZSBSVExfU0ZQXzgxMjdfQVRGOlxuJiM0MztcdFx0dHAtXHUwMDNlcGNzLm9wcyA9IFx1MDAyNnI4MTY5X3Bjc19vcHM7XG4mIzQzO1x0XHRwaHlfbW9kZSA9IFBIWV9JTlRFUkZBQ0VfTU9ERV8xMEdCQVNFUjtcbiYjNDM7XHRcdHRwLVx1MDAzZXBoeWxpbmtfY29uZmlnLmRlZmF1bHRfYW5faW5iYW5kID0gdHJ1ZTtcbiYjNDM7XHRcdHRwLVx1MDAzZXBoeWxpbmtfY29uZmlnLm1hY19jYXBhYmlsaXRpZXMgfD0gTUFDXzEwMDBGRCB8IE1BQ18xMDAwMEZEO1xuJiM0MztcdFx0YnJlYWs7XG4mIzQzO1x0ZGVmYXVsdDpcbiYjNDM7XHRcdHBoeV9tb2RlID0gUEhZX0lOVEVSRkFDRV9NT0RFX0lOVEVSTkFMO1xuJiM0MztcdFx0dHAtXHUwMDNlcGh5bGlua19jb25maWcubWFjX2NhcGFiaWxpdGllcyB8PSBNQUNfMTAgfCBNQUNfMTAwO1xuJiM0MztcbiYjNDM7XHRcdGlmICh0cC1cdTAwM2VtYWNfdmVyc2lvbiA9PSBSVExfR0lHQV9NQUNfVkVSXzgwKVxuJiM0MztcdFx0XHR0cC1cdTAwM2VwaHlsaW5rX2NvbmZpZy5tYWNfY2FwYWJpbGl0aWVzIHw9IE1BQ18xMDAwRkQgfCBNQUNfMjUwMEZEIHxcbiYjNDM7XHRcdFx0XHRcdFx0XHQgICAgICAgTUFDXzUwMDBGRCB8IE1BQ18xMDAwMEZEO1xuJiM0MztcdFx0ZWxzZSBpZiAodHAtXHUwMDNlbWFjX3ZlcnNpb24gPT0gUlRMX0dJR0FfTUFDX1ZFUl83MClcbiYjNDM7XHRcdFx0dHAtXHUwMDNlcGh5bGlua19jb25maWcubWFjX2NhcGFiaWxpdGllcyB8PSBNQUNfMTAwMEZEIHxcbiYjNDM7XHRcdFx0XHRcdFx0XHQgICAgICAgTUFDXzI1MDBGRCB8IE1BQ181MDAwRkQ7XG4mIzQzO1x0XHRlbHNlIGlmICh0cC1cdTAwM2VtYWNfdmVyc2lvbiBcdTAwM2U9IFJUTF9HSUdBX01BQ19WRVJfNjEpXG4mIzQzO1x0XHRcdHRwLVx1MDAzZXBoeWxpbmtfY29uZmlnLm1hY19jYXBhYmlsaXRpZXMgfD0gTUFDXzEwMDBGRCB8IE1BQ18yNTAwRkQ7XG4mIzQzO1x0XHRlbHNlXG4mIzQzO1x0XHRcdGlmICh0cC1cdTAwM2VzdXBwb3J0c19nbWlpKVxuJiM0MztcdFx0XHRcdHRwLVx1MDAzZXBoeWxpbmtfY29uZmlnLm1hY19jYXBhYmlsaXRpZXMgfD0gTUFDXzEwMDBGRDtcbiYjNDM7XG4mIzQzO1x0XHRpZiAodHAtXHUwMDNlbWFjX3ZlcnNpb24gXHUwMDNjIFJUTF9HSUdBX01BQ19WRVJfNjEpXG4mIzQzO1x0XHRcdHBoeV9tb2RlID0gdHAtXHUwMDNlc3VwcG9ydHNfZ21paSA/IFBIWV9JTlRFUkZBQ0VfTU9ERV9HTUlJIDpcbiYjNDM7XHRcdFx0XHQgICBQSFlfSU5URVJGQUNFX01PREVfTUlJO1xuJiM0MztcdFx0ZWxzZVxuJiM0MztcdFx0XHRwaHlfbW9kZSA9IFBIWV9JTlRFUkZBQ0VfTU9ERV9JTlRFUk5BTDtcbiYjNDM7XHRcdGJyZWFrO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0X19zZXRfYml0KHBoeV9tb2RlLCB0cC1cdTAwM2VwaHlsaW5rX2NvbmZpZy5zdXBwb3J0ZWRfaW50ZXJmYWNlcyk7XG4mIzQzO1x0aWYgKHRwLVx1MDAzZXBoeWxpbmtfY29uZmlnLmxwaV9jYXBhYmlsaXRpZXMpXG4mIzQzO1x0XHRfX3NldF9iaXQocGh5X21vZGUsIHRwLVx1MDAzZXBoeWxpbmtfY29uZmlnLmxwaV9pbnRlcmZhY2VzKTtcbiYjNDM7XG4mIzQzO1x0cGwgPSBwaHlsaW5rX2NyZWF0ZShcdTAwMjZ0cC1cdTAwM2VwaHlsaW5rX2NvbmZpZywgdHBfdG9fZGV2KHRwKS1cdTAwM2Vmd25vZGUsXG4mIzQzO1x0XHRcdCAgICBwaHlfbW9kZSwgXHUwMDI2cnRsX3BoeWxpbmtfbWFjX29wcyk7XG4mIzQzO1x0aWYgKElTX0VSUihwbCkpXG4mIzQzO1x0XHRyZXR1cm4gUFRSX0VSUihwbCk7XG4mIzQzO1xuJiM0MztcdHRwLVx1MDAzZXBoeWxpbmsgPSBwbDtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIDA7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIGludCBydGxfaW5pdF9vbmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpXG4ge1xuIFx0Y29uc3Qgc3RydWN0IHJ0bF9jaGlwX2luZm8gKmNoaXA7XG5AQCAtNTY2Nyw2ICYjNDM7NjAzNSw3IEBAIHN0YXRpYyBpbnQgcnRsX2luaXRfb25lKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KVxuIFx0XHRcdFx0ICAgICBleHRfeGlkX3N0ciwgeGlkKTtcbiBcdHRwLVx1MDAzZW1hY192ZXJzaW9uID0gY2hpcC1cdTAwM2VtYWNfdmVyc2lvbjtcbiBcdHRwLVx1MDAzZWZ3X25hbWUgPSBjaGlwLVx1MDAzZWZ3X25hbWU7XG4mIzQzO1x0dHAtXHUwMDNlc3BlZWQgPSBTUEVFRF9VTktOT1dOO1xuIFxuIFx0LyogRGlzYWJsZSBBU1BNIEwxIGFzIHRoYXQgY2F1c2UgcmFuZG9tIGRldmljZSBzdG9wIHdvcmtpbmdcbiBcdCAqIHByb2JsZW1zIGFzIHdlbGwgYXMgZnVsbCBzeXN0ZW0gaGFuZ3MgZm9yIHNvbWUgUENJZSBkZXZpY2VzIHVzZXJzLlxuQEAgLTU2NzksMTIgJiM0Mzs2MDQ4LDcgQEAgc3RhdGljIGludCBydGxfaW5pdF9vbmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpXG4gXHR9XG4gXHR0cC1cdTAwM2Vhc3BtX21hbmFnZWFibGUgPSAhcmM7XG4gXG4tXHRpZiAocnRsX2lzXzgxMjUodHApKSB7XG4tXHRcdHUxNiBkYXRhID0gcjgxNjhfbWFjX29jcF9yZWFkKHRwLCAweGQwMDYpO1xuLVxuLVx0XHRpZiAoKGRhdGEgXHUwMDI2IDB4ZmYpID09IDB4MDcpXG4tXHRcdFx0dHAtXHUwMDNlc2ZwX21vZGUgPSB0cnVlO1xuLVx0fVxuJiM0MztcdHRwLVx1MDAzZXNmcF9tb2RlID0gcnRsX2dldF9zZnBfbW9kZSh0cCk7XG4gXG4gXHR0cC1cdTAwM2VkYXNoX3R5cGUgPSBydGxfZ2V0X2Rhc2hfdHlwZSh0cCk7XG4gXHR0cC1cdTAwM2VkYXNoX2VuYWJsZWQgPSBydGxfZGFzaF9pc19lbmFibGVkKHRwKTtcbkBAIC01Nzg4LDEzICYjNDM7NjE1MiwyMyBAQCBzdGF0aWMgaW50IHJ0bF9pbml0X29uZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudClcbiBcbiBcdHBjaV9zZXRfZHJ2ZGF0YShwZGV2LCB0cCk7XG4gXG4tXHRyYyA9IHI4MTY5X21kaW9fcmVnaXN0ZXIodHApO1xuJiM0MztcdHJjID0gcnRsX2luaXRfcGh5bGluayh0cCk7XG4gXHRpZiAocmMpXG4gXHRcdHJldHVybiByYztcbiBcbiYjNDM7XHRpZiAodHAtXHUwMDNlc2ZwX21vZGUgPT0gUlRMX1NGUF9OT05FKSB7XG4mIzQzO1x0XHRyYyA9IHI4MTY5X21kaW9fcmVnaXN0ZXIodHApO1xuJiM0MztcdFx0aWYgKHJjKSB7XG4mIzQzO1x0XHRcdHBoeWxpbmtfZGVzdHJveSh0cC1cdTAwM2VwaHlsaW5rKTtcbiYjNDM7XHRcdFx0cmV0dXJuIHJjO1xuJiM0MztcdFx0fVxuJiM0MztcdH1cbiYjNDM7XG4gXHRyYyA9IHJlZ2lzdGVyX25ldGRldihkZXYpO1xuLVx0aWYgKHJjKVxuJiM0MztcdGlmIChyYykge1xuJiM0MztcdFx0cGh5bGlua19kZXN0cm95KHRwLVx1MDAzZXBoeWxpbmspO1xuIFx0XHRyZXR1cm4gcmM7XG4mIzQzO1x0fVxuIFxuIFx0aWYgKElTX0VOQUJMRUQoQ09ORklHX1I4MTY5X0xFRFMpKSB7XG4gXHRcdGlmIChydGxfaXNfODEyNSh0cCkpXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYyBiL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNcbmluZGV4IDU5ZGZlMzVhZmE1NGZjLi5jNDUwZWUzM2I3NWNjMSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNcbkBAIC0xODI4LDYgJiM0MzsxODI4LDcyIEBAIGludCBwaHlsaW5rX3NldF9maXhlZF9saW5rKHN0cnVjdCBwaHlsaW5rICpwbCxcbiB9XG4gRVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19zZXRfZml4ZWRfbGluayk7XG4gXG4mIzQzOy8qKlxuJiM0MzsgKiBwaHlsaW5rX3NldF9tYWNfY2FwYWJpbGl0aWVzKCkgLSBEeW5hbWljYWxseSB1cGRhdGUgTUFDIGNhcGFiaWxpdGllc1xuJiM0MzsgKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuJiM0MzsgKiBAbWFjX2NhcGFiaWxpdGllczogdGhlIG5ldyBNQUMgY2FwYWJpbGl0aWVzIG1hc2tcbiYjNDM7ICpcbiYjNDM7ICogVGhpcyBmdW5jdGlvbiBhbGxvd3MgYSBNQUMgZHJpdmVyIHRvIGR5bmFtaWNhbGx5IGNoYW5nZSBpdHMgY2FwYWJpbGl0aWVzLFxuJiM0MzsgKiBzdWNoIGFzIGxvc2luZy9nYWluaW5nIFBhdXNlIGZyYW1lIHN1cHBvcnQgYmFzZWQgb24gTVRVIHNpemUuXG4mIzQzOyAqIEl0IHJlY2FsY3VsYXRlcyBzdXBwb3J0ZWQgbGluayBtb2RlcyBhbmQgdHJpZ2dlcnMgcmVuZWdvdGlhdGlvbiBpZiBuZWVkZWQuXG4mIzQzOyAqL1xuJiM0Mzt2b2lkIHBoeWxpbmtfc2V0X21hY19jYXBhYmlsaXRpZXMoc3RydWN0IHBoeWxpbmsgKnBsLCB1bnNpZ25lZCBsb25nIG1hY19jYXBhYmlsaXRpZXMpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgcGh5bGlua19saW5rX3N0YXRlICpjb25maWcgPSBcdTAwMjZwbC1cdTAwM2VsaW5rX2NvbmZpZztcbiYjNDM7XHR1bnNpZ25lZCBsb25nIGNhcHNfYWRkZWQsIGNhcHNfcmVtb3ZlZDtcbiYjNDM7XG4mIzQzO1x0QVNTRVJUX1JUTkwoKTtcbiYjNDM7XG4mIzQzO1x0Y2Fwc19hZGRlZCA9IG1hY19jYXBhYmlsaXRpZXMgXHUwMDI2IH5wbC1cdTAwM2Vjb25maWctXHUwMDNlbWFjX2NhcGFiaWxpdGllcztcbiYjNDM7XHRjYXBzX3JlbW92ZWQgPSBwbC1cdTAwM2Vjb25maWctXHUwMDNlbWFjX2NhcGFiaWxpdGllcyBcdTAwMjYgfm1hY19jYXBhYmlsaXRpZXM7XG4mIzQzO1xuJiM0MztcdGlmICghY2Fwc19hZGRlZCBcdTAwMjZcdTAwMjYgIWNhcHNfcmVtb3ZlZClcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XG4mIzQzO1x0bXV0ZXhfbG9jayhcdTAwMjZwbC1cdTAwM2VzdGF0ZV9tdXRleCk7XG4mIzQzO1xuJiM0MztcdHBsLVx1MDAzZWNvbmZpZy1cdTAwM2VtYWNfY2FwYWJpbGl0aWVzID0gbWFjX2NhcGFiaWxpdGllcztcbiYjNDM7XG4mIzQzO1x0aWYgKGNhcHNfcmVtb3ZlZCBcdTAwMjYgTUFDX1NZTV9QQVVTRSlcbiYjNDM7XHRcdGxpbmttb2RlX2NsZWFyX2JpdChFVEhUT09MX0xJTktfTU9ERV9QYXVzZV9CSVQsIHBsLVx1MDAzZXN1cHBvcnRlZCk7XG4mIzQzO1x0aWYgKGNhcHNfcmVtb3ZlZCBcdTAwMjYgTUFDX0FTWU1fUEFVU0UpXG4mIzQzO1x0XHRsaW5rbW9kZV9jbGVhcl9iaXQoRVRIVE9PTF9MSU5LX01PREVfQXN5bV9QYXVzZV9CSVQsIHBsLVx1MDAzZXN1cHBvcnRlZCk7XG4mIzQzO1xuJiM0MztcdGxpbmttb2RlX2FuZChjb25maWctXHUwMDNlYWR2ZXJ0aXNpbmcsIGNvbmZpZy1cdTAwM2VhZHZlcnRpc2luZywgcGwtXHUwMDNlc3VwcG9ydGVkKTtcbiYjNDM7XG4mIzQzO1x0aWYgKGNhcHNfYWRkZWQgXHUwMDI2IE1BQ19TWU1fUEFVU0UpIHtcbiYjNDM7XHRcdGxpbmttb2RlX3NldF9iaXQoRVRIVE9PTF9MSU5LX01PREVfUGF1c2VfQklULCBwbC1cdTAwM2VzdXBwb3J0ZWQpO1xuJiM0MztcdFx0aWYgKHBsLVx1MDAzZXBoeWRldiBcdTAwMjZcdTAwMjYgIXBoeWxpbmtfdGVzdChwbC1cdTAwM2VwaHlkZXYtXHUwMDNlc3VwcG9ydGVkLCBQYXVzZSkpXG4mIzQzO1x0XHRcdGxpbmttb2RlX2NsZWFyX2JpdChFVEhUT09MX0xJTktfTU9ERV9QYXVzZV9CSVQsIHBsLVx1MDAzZXN1cHBvcnRlZCk7XG4mIzQzO1x0fVxuJiM0MztcdGlmIChjYXBzX2FkZGVkIFx1MDAyNiBNQUNfQVNZTV9QQVVTRSkge1xuJiM0MztcdFx0bGlua21vZGVfc2V0X2JpdChFVEhUT09MX0xJTktfTU9ERV9Bc3ltX1BhdXNlX0JJVCwgcGwtXHUwMDNlc3VwcG9ydGVkKTtcbiYjNDM7XHRcdGlmIChwbC1cdTAwM2VwaHlkZXYgXHUwMDI2XHUwMDI2ICFwaHlsaW5rX3Rlc3QocGwtXHUwMDNlcGh5ZGV2LVx1MDAzZXN1cHBvcnRlZCwgQXN5bV9QYXVzZSkpXG4mIzQzO1x0XHRcdGxpbmttb2RlX2NsZWFyX2JpdChFVEhUT09MX0xJTktfTU9ERV9Bc3ltX1BhdXNlX0JJVCwgcGwtXHUwMDNlc3VwcG9ydGVkKTtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdGxpbmttb2RlX2FuZChjb25maWctXHUwMDNlYWR2ZXJ0aXNpbmcsIGNvbmZpZy1cdTAwM2VhZHZlcnRpc2luZywgcGwtXHUwMDNlc3VwcG9ydGVkKTtcbiYjNDM7XG4mIzQzO1x0aWYgKGNvbmZpZy1cdTAwM2VwYXVzZSBcdTAwMjYgTUxPX1BBVVNFX0FOKSB7XG4mIzQzO1x0XHRpZiAocGh5bGlua190ZXN0KHBsLVx1MDAzZXN1cHBvcnRlZCwgUGF1c2UpKVxuJiM0MztcdFx0XHRsaW5rbW9kZV9zZXRfYml0KEVUSFRPT0xfTElOS19NT0RFX1BhdXNlX0JJVCwgY29uZmlnLVx1MDAzZWFkdmVydGlzaW5nKTtcbiYjNDM7XG4mIzQzO1x0XHRpZiAocGh5bGlua190ZXN0KHBsLVx1MDAzZXN1cHBvcnRlZCwgQXN5bV9QYXVzZSkpXG4mIzQzO1x0XHRcdGxpbmttb2RlX3NldF9iaXQoRVRIVE9PTF9MSU5LX01PREVfQXN5bV9QYXVzZV9CSVQsIGNvbmZpZy1cdTAwM2VhZHZlcnRpc2luZyk7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRpZiAoIXBsLVx1MDAzZXBoeWRldilcbiYjNDM7XHRcdHBoeWxpbmtfY2hhbmdlX2luYmFuZF9hZHZlcnQocGwpO1xuJiM0MztcbiYjNDM7XHRtdXRleF91bmxvY2soXHUwMDI2cGwtXHUwMDNlc3RhdGVfbXV0ZXgpO1xuJiM0MztcbiYjNDM7XHRpZiAocGwtXHUwMDNlcGh5ZGV2KSB7XG4mIzQzO1x0XHRsaW5rbW9kZV9jb3B5KHBsLVx1MDAzZXBoeWRldi1cdTAwM2VhZHZlcnRpc2luZywgY29uZmlnLVx1MDAzZWFkdmVydGlzaW5nKTtcbiYjNDM7XHRcdHBoeV9zdGFydF9hbmVnKHBsLVx1MDAzZXBoeWRldik7XG4mIzQzO1x0fVxuJiM0Mzt9XG4mIzQzO0VYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfc2V0X21hY19jYXBhYmlsaXRpZXMpO1xuJiM0MztcbiAvKipcbiAgKiBwaHlsaW5rX2NyZWF0ZSgpIC0gY3JlYXRlIGEgcGh5bGluayBpbnN0YW5jZVxuICAqIEBjb25maWc6IGEgcG9pbnRlciB0byB0aGUgdGFyZ2V0IFx1MDAyNnN0cnVjdCBwaHlsaW5rX2NvbmZpZ1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jIGIvZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmNcbmluZGV4IGI2NWQwZjVmYTFhMDE0Li40NzIxYmEwNzFjYmJlNCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uY1xuQEAgLTE3LDcgJiM0MzsxNyw2IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvZGVsYXkuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2Nsay5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvc3RyaW5nX2Nob2ljZXMuaFx1MDAzZVxuLSNpbmNsdWRlIFx1MDAzY25ldC9waHkvcmVhbHRla19waHkuaFx1MDAzZVxuIFxuICNpbmNsdWRlIFwmIzM0Oy4uL3BoeWxpYi5oXCYjMzQ7XG4gI2luY2x1ZGUgXCYjMzQ7cmVhbHRlay5oXCYjMzQ7XG5AQCAtMjY0Niw0NSAmIzQzOzI2NDUsNiBAQCBzdGF0aWMgaXJxcmV0dXJuX3QgcnRsODIyMWJfaGFuZGxlX2ludGVycnVwdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuIFx0cmV0dXJuIElSUV9IQU5ETEVEO1xuIH1cbiBcbi1zdGF0aWMgaW50IHJ0bGdlbl9zZnBfZ2V0X2ZlYXR1cmVzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4te1xuLVx0bGlua21vZGVfc2V0X2JpdChFVEhUT09MX0xJTktfTU9ERV8xMDAwMGJhc2VUX0Z1bGxfQklULFxuLVx0XHRcdCBwaHlkZXYtXHUwMDNlc3VwcG9ydGVkKTtcbi1cbi1cdC8qIHNldCBkZWZhdWx0IG1vZGUgKi9cbi1cdHBoeWRldi1cdTAwM2VzcGVlZCA9IFNQRUVEXzEwMDAwO1xuLVx0cGh5ZGV2LVx1MDAzZWR1cGxleCA9IERVUExFWF9GVUxMO1xuLVxuLVx0cGh5ZGV2LVx1MDAzZXBvcnQgPSBQT1JUX0ZJQlJFO1xuLVxuLVx0cmV0dXJuIDA7XG4tfVxuLVxuLXN0YXRpYyBpbnQgcnRsZ2VuX3NmcF9yZWFkX3N0YXR1cyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLXtcbi1cdGludCB2YWwsIGVycjtcbi1cbi1cdGVyciA9IGdlbnBoeV91cGRhdGVfbGluayhwaHlkZXYpO1xuLVx0aWYgKGVycilcbi1cdFx0cmV0dXJuIGVycjtcbi1cbi1cdGlmICghcGh5ZGV2LVx1MDAzZWxpbmspXG4tXHRcdHJldHVybiAwO1xuLVxuLVx0dmFsID0gcGh5X3JlYWQocGh5ZGV2LCBSVExfUEhZU1IpO1xuLVx0aWYgKHZhbCBcdTAwM2MgMClcbi1cdFx0cmV0dXJuIHZhbDtcbi1cbi1cdHJ0bGdlbl9kZWNvZGVfcGh5c3IocGh5ZGV2LCB2YWwpO1xuLVxuLVx0cmV0dXJuIDA7XG4tfVxuLVxuLXN0YXRpYyBpbnQgcnRsZ2VuX3NmcF9jb25maWdfYW5lZyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLXtcbi1cdHJldHVybiAwO1xuLX1cbi1cbiBzdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgcmVhbHRla19kcnZzW10gPSB7XG4gXHR7XG4gXHRcdFBIWV9JRF9NQVRDSF9FWEFDVCgweDAwMDA4MjAxKSxcbkBAIC0yOTM0LDIwICYjNDM7Mjg5NCw2IEBAIHN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciByZWFsdGVrX2RydnNbXSA9IHtcbiBcdFx0LndyaXRlX3BhZ2VcdD0gcnRsODIxeF93cml0ZV9wYWdlLFxuIFx0XHQucmVhZF9tbWRcdD0gcnRsODIyeF9yZWFkX21tZCxcbiBcdFx0LndyaXRlX21tZFx0PSBydGw4MjJ4X3dyaXRlX21tZCxcbi1cdH0sIHtcbi1cdFx0UEhZX0lEX01BVENIX0VYQUNUKFBIWV9JRF9SVExfRFVNTVlfU0ZQKSxcbi1cdFx0Lm5hbWVcdFx0PSBcJiMzNDtSZWFsdGVrIFNGUCBQSFkgTW9kZVwmIzM0Oyxcbi1cdFx0LmZsYWdzXHRcdD0gUEhZX0lTX0lOVEVSTkFMLFxuLVx0XHQucHJvYmVcdFx0PSBydGw4MjJ4X3Byb2JlLFxuLVx0XHQuZ2V0X2ZlYXR1cmVzXHQ9IHJ0bGdlbl9zZnBfZ2V0X2ZlYXR1cmVzLFxuLVx0XHQuY29uZmlnX2FuZWdcdD0gcnRsZ2VuX3NmcF9jb25maWdfYW5lZyxcbi1cdFx0LnJlYWRfc3RhdHVzXHQ9IHJ0bGdlbl9zZnBfcmVhZF9zdGF0dXMsXG4tXHRcdC5zdXNwZW5kXHQ9IGdlbnBoeV9zdXNwZW5kLFxuLVx0XHQucmVzdW1lXHRcdD0gcnRsZ2VuX3Jlc3VtZSxcbi1cdFx0LnJlYWRfcGFnZVx0PSBydGw4MjF4X3JlYWRfcGFnZSxcbi1cdFx0LndyaXRlX3BhZ2VcdD0gcnRsODIxeF93cml0ZV9wYWdlLFxuLVx0XHQucmVhZF9tbWRcdD0gcnRsODIyeF9yZWFkX21tZCxcbi1cdFx0LndyaXRlX21tZFx0PSBydGw4MjJ4X3dyaXRlX21tZCxcbiBcdH0sIHtcbiBcdFx0UEhZX0lEX01BVENIX0VYQUNUKDB4MDAxY2NhZDApLFxuIFx0XHQubmFtZVx0XHQ9IFwmIzM0O1JUTDgyMjQgMi41R2JwcyBQSFlcJiMzNDssXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9waHlsaW5rLmggYi9pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaFxuaW5kZXggMmJjMGRiM2Q1MmFjOGQuLjU2NjQyYWI5NjFhNzUzIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9waHlsaW5rLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvcGh5bGluay5oXG5AQCAtODQyLDQgJiM0Mzs4NDIsNiBAQCB2b2lkIHBoeWxpbmtfcmVwbGF5X2xpbmtfYmVnaW4oc3RydWN0IHBoeWxpbmsgKnBsKTtcbiBcbiB2b2lkIHBoeWxpbmtfcmVwbGF5X2xpbmtfZW5kKHN0cnVjdCBwaHlsaW5rICpwbCk7XG4gXG4mIzQzO3ZvaWQgcGh5bGlua19zZXRfbWFjX2NhcGFiaWxpdGllcyhzdHJ1Y3QgcGh5bGluayAqcGwsIHVuc2lnbmVkIGxvbmcgbWFjX2NhcGFiaWxpdGllcyk7XG4mIzQzO1xuICNlbmRpZlxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L3BoeS9yZWFsdGVrX3BoeS5oIGIvaW5jbHVkZS9uZXQvcGh5L3JlYWx0ZWtfcGh5LmhcbmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggZDY4M2JjMWIwNjU5Y2QuLjAwMDAwMDAwMDAwMDAwXG4tLS0gYS9pbmNsdWRlL25ldC9waHkvcmVhbHRla19waHkuaFxuJiM0MzsmIzQzOyYjNDM7IC9kZXYvbnVsbFxuQEAgLTEsNyAmIzQzOzAsMCBAQFxuLS8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wICovXG4tI2lmbmRlZiBfUkVBTFRFS19QSFlfSFxuLSNkZWZpbmUgX1JFQUxURUtfUEhZX0hcbi1cbi0jZGVmaW5lXHRQSFlfSURfUlRMX0RVTU1ZX1NGUFx0MHgwMDFjY2JmZlxuLVxuLSNlbmRpZiAvKiBfUkVBTFRFS19QSFlfSCAqL1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDE2OjM0PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1I4MTY5JiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cGh5bGlua19zZXRfbWFjX2NhcGFiaWxpdGllcyYjMzQ7LAogICAgJiMzNDtydGxfaW5pdF9waHlsaW5rJiMzNDssCiAgICAmIzM0O3J0bDgxNjlfcGNzX2NvbmZpZyYjMzQ7LAogICAgJiMzNDtydGw4MTY5X3Bjc19nZXRfc3RhdGUmIzM0OywKICAgICYjMzQ7cnRsX21hY19saW5rX3VwJiMzNDssCiAgICAmIzM0O3J0bF9tYWNfbGlua19kb3duJiMzNDssCiAgICAmIzM0O3J0bF9tYWNfc2VsZWN0X3BjcyYjMzQ7LAogICAgJiMzNDtydGxfbWFjX2Rpc2FibGVfdHhfbHBpJiMzNDssCiAgICAmIzM0O3J0bF9tYWNfZW5hYmxlX3R4X2xwaSYjMzQ7LAogICAgJiMzNDtydGw4MTY5X2NoYW5nZV9tdHUmIzM0OywKICAgICYjMzQ7cnRsX2xvd3Bvd2VyX2hpZGRlbl9mdW5jdGlvbnMmIzM0OywKICAgICYjMzQ7cjgxMjdfc2ZwX2luaXRfMWcmIzM0OywKICAgICYjMzQ7cjgxMjdfc2ZwX2luaXRfMTBnJiMzNDssCiAgICAmIzM0O3J0bDgxNjlfaW9jdGwmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbWlncmF0ZXMgdGhlIFJlYWx0ZWsgcjgxNjkgRXRoZXJuZXQgZHJpdmVyIGZyb20gcGh5bGliIHRvIHBoeWxpbmssIGludHJvZHVjaW5nIHNpZ25pZmljYW50IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgZHJpdmVyJiMzOTtzIGluaXRpYWxpemF0aW9uLCBsaW5rIG1hbmFnZW1lbnQsIGFuZCBNVFUgaGFuZGxpbmcuIEl0IGFsc28gYWRkcyBhIG5ldyBwaHlsaW5rIEFQSSBgcGh5bGlua19zZXRfbWFjX2NhcGFiaWxpdGllc2AgdG8gZHluYW1pY2FsbHkgdXBkYXRlIE1BQyBjYXBhYmlsaXRpZXMuIFRoZXNlIGFyZSByZWFjaGFibGUgY29udHJvbC1wYXRoIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQsIGVzcGVjaWFsbHkgdmlhIHN5el9wY2kgYW5kIG5ldGxpbmsvaW9jdGwgaW50ZXJmYWNlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMWY3ODUwMDQ1NmI4MzkzZWFkNmQ2ZmJjMTVhNDljM2I1ODUwYTlmNApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgSnVsIDcgMTY6MzQ6MzkgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWcgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWcKaW5kZXggOWIwZjRmOTYzMWRiYWEuLjQ5YWM3MjczNDIyNWY3IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWcKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9LY29uZmlnCkBAIC04OCw2ICYjNDM7ODgsNyBAQCBjb25maWcgUjgxNjkKIAlzZWxlY3QgQ1JDMzIKIAlzZWxlY3QgUEhZTElCCiAJc2VsZWN0IFJFQUxURUtfUEhZCiYjNDM7CXNlbGVjdCBQSFlMSU5LCiAJaGVscAogCSAgU2F5IFkgaGVyZSBpZiB5b3UgaGF2ZSBhIFJlYWx0ZWsgRXRoZXJuZXQgYWRhcHRlciBiZWxvbmdpbmcgdG8KIAkgIHRoZSBmb2xsb3dpbmcgZmFtaWxpZXM6CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jCmluZGV4IGVjNGZjMjFmYTIxZmIwLi4xMmUwNzNiOWE2MTQ3OSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMKQEAgLTI2LDEyICYjNDM7MjYsMTIgQEAKICNpbmNsdWRlICZsdDtsaW51eC9kbWEtbWFwcGluZy5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3BtX3J1bnRpbWUuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9iaXRmaWVsZC5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9waHlsaW5rLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvcHJlZmV0Y2guaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9pcHY2LmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvdW5hbGlnbmVkLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bmV0L2lwNl9jaGVja3N1bS5oJmd0OwogI2luY2x1ZGUgJmx0O25ldC9uZXRkZXZfcXVldWVzLmgmZ3Q7Ci0jaW5jbHVkZSAmbHQ7bmV0L3BoeS9yZWFsdGVrX3BoeS5oJmd0OwogCiAjaW5jbHVkZSAmIzM0O3I4MTY5LmgmIzM0OwogI2luY2x1ZGUgJiMzNDtyODE2OV9maXJtd2FyZS5oJiMzNDsKQEAgLTk2LDYgJiM0Mzs5NiwyOCBAQAogI2RlZmluZSBKVU1CT185SwkoOSAqIFNaXzFLIC0gVkxBTl9FVEhfSExFTiAtIEVUSF9GQ1NfTEVOKQogI2RlZmluZSBKVU1CT18xNksJKFNaXzE2SyAtIFZMQU5fRVRIX0hMRU4gLSBFVEhfRkNTX0xFTikKIAomIzQzOyNkZWZpbmUgT0NQX1NEU19BRERSX1JFRwkJMHhFQjEwCiYjNDM7I2RlZmluZSBPQ1BfU0RTX0NNRF9SRUcJCQkweEVCMEUKJiM0MzsjZGVmaW5lIE9DUF9TRFNfREFUQV9SRUcJCTB4RUIxNAomIzQzOyNkZWZpbmUgU0RTX0NNRF9SRUFECQkJMHgwMDAxCiYjNDM7I2RlZmluZSBSVExfU0RTX0MyMl9CQVNFCQkweDQwCiYjNDM7I2RlZmluZSBSVExfU0RTX0M0NV9CQVNFCQkweDAwODAKJiM0MzsjZGVmaW5lIFJUTF9QS0dfREVURUNUCQkJMHhkYzAwCiYjNDM7I2RlZmluZSBSVExfUEtHX0RFVEVDVF9NQVNLCQkweDAwNzgKJiM0MzsjZGVmaW5lIFJUTF9QS0dfREVURUNUXzgxMTZBRgkJMHgwMDMwCiYjNDM7I2RlZmluZSBSVExfSU5UX0hXX0lECQkJMHhkMDA2CiYjNDM7I2RlZmluZSBSVExfSU5UX0hXX0lEX01BU0sJCTB4MDBmZgomIzQzOyNkZWZpbmUgUlRMX0lOVF9IV19JRF84MTE2QUYJCTB4MDAwMAomIzQzOyNkZWZpbmUgUlRMODExNkFGX0ZVTkNfUE1fQ1NSCQkweDgwCiYjNDM7I2RlZmluZSBSVEw4MTE2QUZfRlVOQ19FWFBfTE5LQ1RMCTB4NDQKJiM0MzsjZGVmaW5lIFJUTF9QTV9EM0hPVAkJCUdFTk1BU0soMSwgMCkKJiM0MzsjZGVmaW5lIFI4MTI3X1NEU19DTUQJCQkweDIzNDgKJiM0MzsjZGVmaW5lIFI4MTI3X1NEU19BRERSCQkJMHgyMzRhCiYjNDM7I2RlZmluZSBSODEyN19TRFNfREFUQV9JTgkJMHgyMzRjCiYjNDM7I2RlZmluZSBSODEyN19TRFNfREFUQV9PVVQJCTB4MjM0ZQomIzQzOyNkZWZpbmUgUjgxMjdfU0RTX0NNRF9FWEVDCQlCSVQoMCkKJiM0MzsjZGVmaW5lIFI4MTI3X1NEU19DTURfV0UJCUJJVCgxKQomIzQzOwogc3RhdGljIGNvbnN0IHN0cnVjdCBydGxfY2hpcF9pbmZvIHsKIAl1MzIgbWFzazsKIAl1MzIgdmFsOwpAQCAtMzM0LDExICYjNDM7MzU2LDEzIEBAIGVudW0gcnRsX3JlZ2lzdGVycyB7CiAJQUxEUFNfTFRSCT0gMHhlMGEyLAogCUxUUl9PQkZGX0xPQ0sJPSAweGUwMzIsCiAJTFRSX1NOT09QCT0gMHhlMDM0LAomIzQzOwlTRU5EX0xUUl9NU0cJPSAweGUwMzgsCiAKICNkZWZpbmUgQUxEUFNfTFRSX0VOCQkJQklUKDApCiAjZGVmaW5lIExUUl9PQkZGX0xPQ0tfRU4JCUJJVCgwKQogI2RlZmluZSBMSU5LX1NQRUVEX0NIQU5HRV9FTgkJQklUKDE0KQogI2RlZmluZSBMVFJfU05PT1BfRU4JCQlHRU5NQVNLKDE1LCAxNCkKJiM0MzsjZGVmaW5lIExUUl9NU0dfRU4JCQlCSVQoMCkKIH07CiAKIGVudW0gcnRsODE2OF84MTAxX3JlZ2lzdGVycyB7CkBAIC03MjgsNiAmIzQzOzc1MiwxMiBAQCBlbnVtIHJ0bF9kYXNoX3R5cGUgewogCVJUTF9EQVNIXzI1X0JQLAogfTsKIAomIzQzO2VudW0gcnRsX3NmcF9tb2RlIHsKJiM0MzsJUlRMX1NGUF9OT05FLAomIzQzOwlSVExfU0ZQXzgxNjhfQUYsCiYjNDM7CVJUTF9TRlBfODEyN19BVEYsCiYjNDM7fTsKJiM0MzsKIHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgewogCXZvaWQgX19pb21lbSAqbW1pb19hZGRyOwkvKiBtZW1vcnkgbWFwIHBoeXNpY2FsIGFkZHJlc3MgKi8KIAlzdHJ1Y3QgcGNpX2RldiAqcGNpX2RldjsKQEAgLTczNiw2ICYjNDM7NzY2LDcgQEAgc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSB7CiAJc3RydWN0IG5hcGlfc3RydWN0IG5hcGk7CiAJZW51bSBtYWNfdmVyc2lvbiBtYWNfdmVyc2lvbjsKIAllbnVtIHJ0bF9kYXNoX3R5cGUgZGFzaF90eXBlOwomIzQzOwllbnVtIHJ0bF9zZnBfbW9kZSBzZnBfbW9kZTsKIAl1MzIgY3VyX3J4OyAvKiBJbmRleCBpbnRvIHRoZSBSeCBkZXNjcmlwdG9yIGJ1ZmZlciBvZiBuZXh0IFJ4IHBrdC4gKi8KIAl1MzIgY3VyX3R4OyAvKiBJbmRleCBpbnRvIHRoZSBUeCBkZXNjcmlwdG9yIGJ1ZmZlciBvZiBuZXh0IFJ4IHBrdC4gKi8KIAl1MzIgZGlydHlfdHg7CkBAIC03NTAsNiAmIzQzOzc4MSw3IEBAIHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgewogCXUzMiBpcnFfbWFzazsKIAlpbnQgaXJxOwogCXN0cnVjdCBjbGsgKmNsazsKJiM0MzsJaW50IHNwZWVkOwogCiAJc3RydWN0IHsKIAkJREVDTEFSRV9CSVRNQVAoZmxhZ3MsIFJUTF9GTEFHX01BWCk7CkBAIC03NjIsNyAmIzQzOzc5NCw2IEBAIHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgewogCXVuc2lnbmVkIHN1cHBvcnRzX2dtaWk6MTsKIAl1bnNpZ25lZCBhc3BtX21hbmFnZWFibGU6MTsKIAl1bnNpZ25lZCBkYXNoX2VuYWJsZWQ6MTsKLQlib29sIHNmcF9tb2RlOjE7CiAJZG1hX2FkZHJfdCBjb3VudGVyc19waHlzX2FkZHI7CiAJc3RydWN0IHJ0bDgxNjlfY291bnRlcnMgKmNvdW50ZXJzOwogCXN0cnVjdCBydGw4MTY5X3RjX29mZnNldHMgdGNfb2Zmc2V0OwpAQCAtNzc0LDYgJiM0Mzs4MDUsMTEgQEAgc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSB7CiAJc3RydWN0IHI4MTY5X2xlZF9jbGFzc2RldiAqbGVkczsKIAogCXUzMiBvY3BfYmFzZTsKJiM0MzsJc3RydWN0IHBoeWxpbmsgKnBoeWxpbms7CiYjNDM7CXN0cnVjdCBwaHlsaW5rX2NvbmZpZyBwaHlsaW5rX2NvbmZpZzsKJiM0MzsJc3RydWN0IHBoeWxpbmtfcGNzIHBjczsKJiM0MzsJc3RydWN0IGV0aHRvb2xfcGF1c2VwYXJhbSBzYXZlZF9wYXVzZTsKJiM0MzsJYm9vbCBqdW1ib19wYXVzZV9zYXZlZDsKIH07CiAKIHR5cGVkZWYgdm9pZCAoKnJ0bF9nZW5lcmljX2ZjdCkoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApOwpAQCAtMTEyOCwxMCAmIzQzOzExNjQsNiBAQCBzdGF0aWMgaW50IHI4MTY4X3BoeV9vY3BfcmVhZChzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgdTMyIHJlZykKIAlpZiAocnRsX29jcF9yZWdfZmFpbHVyZShyZWcpKQogCQlyZXR1cm4gMDsKIAotCS8qIFJldHVybiBkdW1teSBNSUlfUEhZU0lEMiBpbiBTRlAgbW9kZSB0byBtYXRjaCBTRlAgUEhZIGRyaXZlciAqLwotCWlmICh0cC0mZ3Q7c2ZwX21vZGUgJmFtcDsmYW1wOyByZWcgPT0gKE9DUF9TVERfUEhZX0JBU0UgJiM0MzsgMiAqIE1JSV9QSFlTSUQyKSkKLQkJcmV0dXJuIFBIWV9JRF9SVExfRFVNTVlfU0ZQICZhbXA7IDB4ZmZmZjsKLQogCVJUTF9XMzIodHAsIEdQSFlfT0NQLCByZWcgJmx0OyZsdDsgMTUpOwogCiAJcmV0dXJuIHJ0bF9sb29wX3dhaXRfaGlnaCh0cCwgJmFtcDtydGxfb2NwX2dwaHlfY29uZCwgMjUsIDEwKSA/CkBAIC0xMTk5LDYgJiM0MzsxMjMxLDY3IEBAIHN0YXRpYyB2b2lkIHI4MTI3X3NmcF9zZHNfcGh5X3Jlc2V0KHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKQogCXVzbGVlcF9yYW5nZSgxMCwgMjApOwogfQogCiYjNDM7REVDTEFSRV9SVExfQ09ORChyODEyN19zZHNfY21kX2NvbmQpCiYjNDM7ewomIzQzOwlyZXR1cm4gUlRMX1IxNih0cCwgUjgxMjdfU0RTX0NNRCkgJmFtcDsgUjgxMjdfU0RTX0NNRF9FWEVDOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgdTE2IHI4MTI3X3Nkc19yZWFkKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCB1MTYgaW5kZXgsIHUxNiBwYWdlLCB1MTYgcmVnKQomIzQzO3sKJiM0MzsJdTE2IGFkZHIgPSAoaW5kZXggJmx0OyZsdDsgMTEpIHwgKHBhZ2UgJmx0OyZsdDsgNSkgfCByZWc7CiYjNDM7CiYjNDM7CVJUTF9XMTYodHAsIFI4MTI3X1NEU19BRERSLCBhZGRyKTsKJiM0MzsJUlRMX1cxNih0cCwgUjgxMjdfU0RTX0NNRCwgUjgxMjdfU0RTX0NNRF9FWEVDKTsKJiM0MzsKJiM0MzsJaWYgKHJ0bF9sb29wX3dhaXRfbG93KHRwLCAmYW1wO3I4MTI3X3Nkc19jbWRfY29uZCwgMTAsIDEwMCkpCiYjNDM7CQlyZXR1cm4gUlRMX1IxNih0cCwgUjgxMjdfU0RTX0RBVEFfT1VUKTsKJiM0MzsKJiM0MzsJcmV0dXJuIDB4ZmZmZjsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIHZvaWQgcjgxMjdfc2RzX3dyaXRlKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCB1MTYgaW5kZXgsIHUxNiBwYWdlLAomIzQzOwkJCSAgICB1MTYgcmVnLCB1MTYgdmFsKQomIzQzO3sKJiM0MzsJdTE2IGFkZHIgPSAoaW5kZXggJmx0OyZsdDsgMTEpIHwgKHBhZ2UgJmx0OyZsdDsgNSkgfCByZWc7CiYjNDM7CiYjNDM7CVJUTF9XMTYodHAsIFI4MTI3X1NEU19EQVRBX0lOLCB2YWwpOwomIzQzOwlSVExfVzE2KHRwLCBSODEyN19TRFNfQUREUiwgYWRkcik7CiYjNDM7CVJUTF9XMTYodHAsIFI4MTI3X1NEU19DTUQsIFI4MTI3X1NEU19DTURfRVhFQyB8IFI4MTI3X1NEU19DTURfV0UpOwomIzQzOwomIzQzOwlydGxfbG9vcF93YWl0X2xvdyh0cCwgJmFtcDtyODEyN19zZHNfY21kX2NvbmQsIDEwLCAxMDApOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgdm9pZCByODEyN19zZHNfbW9kaWZ5KHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCB1MTYgaW5kZXgsIHUxNiBwYWdlLAomIzQzOwkJCSAgICAgdTE2IHJlZywgdTE2IGNsZWFybWFzaywgdTE2IHNldG1hc2spCiYjNDM7ewomIzQzOwl1MTYgdmFsID0gcjgxMjdfc2RzX3JlYWQodHAsIGluZGV4LCBwYWdlLCByZWcpOwomIzQzOwomIzQzOwl2YWwgPSAodmFsICZhbXA7IH5jbGVhcm1hc2spIHwgc2V0bWFzazsKJiM0MzsJcjgxMjdfc2RzX3dyaXRlKHRwLCBpbmRleCwgcGFnZSwgcmVnLCB2YWwpOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgdm9pZCByODEyN19zZnBfaW5pdF8xZyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCkKJiM0Mzt7CiYjNDM7CWludCB2YWw7CiYjNDM7CiYjNDM7CXI4MTI3X3NmcF9zZHNfcGh5X3Jlc2V0KHRwKTsKJiM0MzsKJiM0MzsJcjgxMjdfc2RzX21vZGlmeSh0cCwgMCwgMSwgMzEsIDAsIEJJVCgzKSk7CiYjNDM7CXI4MTI3X3Nkc19tb2RpZnkodHAsIDAsIDIsICAwLCBCSVQoMTMpIHwgQklUKDEyKSB8IEJJVCg2KSwgQklUKDEyKSB8IEJJVCg2KSk7CiYjNDM7CXI4MTI3X3Nkc19tb2RpZnkodHAsIDAsIDAsICA0LCAwLCBCSVQoMikpOwomIzQzOwomIzQzOwlSVExfVzE2KHRwLCAweDIzM2EsIDB4ODAwNCk7CiYjNDM7CVJUTF9XMTYodHAsIDB4MjMzZSwgKFJUTF9SMTYodHAsIDB4MjMzZSkgJmFtcDsgfjB4MzAwMykgfCAweDAwMDIpOwomIzQzOwomIzQzOwlyODE2OF9waHlfb2NwX3dyaXRlKHRwLCAweGM0MGEsIDB4MDAwMCk7CiYjNDM7CXI4MTY4X3BoeV9vY3Bfd3JpdGUodHAsIDB4YzQ2NiwgMHgwMDAwKTsKJiM0MzsJcjgxNjhfcGh5X29jcF93cml0ZSh0cCwgMHhjODA4LCAweDAwMDApOwomIzQzOwlyODE2OF9waHlfb2NwX3dyaXRlKHRwLCAweGM4MGEsIDB4MDAwMCk7CiYjNDM7CiYjNDM7CXZhbCA9IHI4MTY4X3BoeV9vY3BfcmVhZCh0cCwgMHhjODA0KTsKJiM0MzsJcjgxNjhfcGh5X29jcF93cml0ZSh0cCwgMHhjODA0LCAodmFsICZhbXA7IH4weDAwMGYpIHwgMHgwMDBjKTsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgdm9pZCByODEyN19zZnBfaW5pdF8xMGcoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApCiB7CiAJaW50IHZhbDsKQEAgLTEyMTcsMTIgJiM0MzsxMzEwLDYgQEAgc3RhdGljIHZvaWQgcjgxMjdfc2ZwX2luaXRfMTBnKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKQogCXI4MTY4X3BoeV9vY3Bfd3JpdGUodHAsIDB4YzgwNCwgKHZhbCAmYW1wOyB+MHgwMDBmKSB8IDB4MDAwYyk7CiB9CiAKLXN0YXRpYyB2b2lkIHJ0bF9zZnBfaW5pdChzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCkKLXsKLQlpZiAodHAtJmd0O21hY192ZXJzaW9uID09IFJUTF9HSUdBX01BQ19WRVJfODApCi0JCXI4MTI3X3NmcF9pbml0XzEwZyh0cCk7Ci19Ci0KIHN0YXRpYyB2b2lkIHJ0bF9zZnBfcmVzZXQoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApCiB7CiAJaWYgKHRwLSZndDttYWNfdmVyc2lvbiA9PSBSVExfR0lHQV9NQUNfVkVSXzgwKQpAQCAtMTI4Myw2ICYjNDM7MTM3MCwxNSBAQCBzdGF0aWMgdm9pZCBtYWNfbWN1X3dyaXRlKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCBpbnQgcmVnLCBpbnQgdmFsdWUpCiAJcjgxNjhfbWFjX29jcF93cml0ZSh0cCwgdHAtJmd0O29jcF9iYXNlICYjNDM7IHJlZywgdmFsdWUpOwogfQogCiYjNDM7c3RhdGljIGJvb2wgcnRsX2lzXzgxMTZhZihzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCkKJiM0Mzt7CiYjNDM7CXJldHVybiB0cC0mZ3Q7bWFjX3ZlcnNpb24gPT0gUlRMX0dJR0FfTUFDX1ZFUl81MiAmYW1wOyZhbXA7CiYjNDM7CQkocjgxNjhfbWFjX29jcF9yZWFkKHRwLCBSVExfUEtHX0RFVEVDVCkgJmFtcDsgUlRMX1BLR19ERVRFQ1RfTUFTSykgPT0KJiM0MzsJCVJUTF9QS0dfREVURUNUXzgxMTZBRiAmYW1wOyZhbXA7CiYjNDM7CQkocjgxNjhfbWFjX29jcF9yZWFkKHRwLCBSVExfSU5UX0hXX0lEKSAmYW1wOyBSVExfSU5UX0hXX0lEX01BU0spID09CiYjNDM7CQlSVExfSU5UX0hXX0lEXzgxMTZBRjsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgaW50IG1hY19tY3VfcmVhZChzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgaW50IHJlZykKIHsKIAlyZXR1cm4gcjgxNjhfbWFjX29jcF9yZWFkKHRwLCB0cC0mZ3Q7b2NwX2Jhc2UgJiM0MzsgcmVnKTsKQEAgLTE1NzgsNiAmIzQzOzE2NzQsMjAgQEAgc3RhdGljIGJvb2wgcnRsX2Rhc2hfaXNfZW5hYmxlZChzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCkKIAl9CiB9CiAKJiM0MztzdGF0aWMgZW51bSBydGxfc2ZwX21vZGUgcnRsX2dldF9zZnBfbW9kZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCkKJiM0Mzt7CiYjNDM7CWlmIChydGxfaXNfODEyNSh0cCkpIHsKJiM0MzsJCXUxNiBkYXRhID0gcjgxNjhfbWFjX29jcF9yZWFkKHRwLCBSVExfSU5UX0hXX0lEKTsKJiM0MzsKJiM0MzsJCWlmICgoZGF0YSAmYW1wOyAweGZmKSA9PSAweDA3KQomIzQzOwkJCXJldHVybiBSVExfU0ZQXzgxMjdfQVRGOwomIzQzOwl9IGVsc2UgaWYgKHJ0bF9pc184MTE2YWYodHApKSB7CiYjNDM7CQlyZXR1cm4gUlRMX1NGUF84MTY4X0FGOwomIzQzOwl9CiYjNDM7CiYjNDM7CXJldHVybiBSVExfU0ZQX05PTkU7CiYjNDM7fQomIzQzOwogc3RhdGljIGVudW0gcnRsX2Rhc2hfdHlwZSBydGxfZ2V0X2Rhc2hfdHlwZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCkKIHsKIAlzd2l0Y2ggKHRwLSZndDttYWNfdmVyc2lvbikgewpAQCAtMTY3MywxNiAmIzQzOzE3ODMsMTQgQEAgc3RhdGljIHZvaWQgcnRsODE2OV9pcnFfbWFza19hbmRfYWNrKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKQogCXJ0bF9wY2lfY29tbWl0KHRwKTsKIH0KIAotc3RhdGljIHZvaWQgcnRsX2xpbmtfY2hnX3BhdGNoKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKQomIzQzO3N0YXRpYyB2b2lkIHJ0bF9saW5rX2NoZ19wYXRjaChzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgaW50IHNwZWVkKQogewotCXN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYgPSB0cC0mZ3Q7cGh5ZGV2OwotCiAJaWYgKHRwLSZndDttYWNfdmVyc2lvbiA9PSBSVExfR0lHQV9NQUNfVkVSXzM0IHx8CiAJICAgIHRwLSZndDttYWNfdmVyc2lvbiA9PSBSVExfR0lHQV9NQUNfVkVSXzM4KSB7Ci0JCWlmIChwaHlkZXYtJmd0O3NwZWVkID09IFNQRUVEXzEwMDApIHsKJiM0MzsJCWlmIChzcGVlZCA9PSBTUEVFRF8xMDAwKSB7CiAJCQlydGxfZXJpX3dyaXRlKHRwLCAweDFiYywgRVJJQVJfTUFTS18xMTExLCAweDAwMDAwMDExKTsKIAkJCXJ0bF9lcmlfd3JpdGUodHAsIDB4MWRjLCBFUklBUl9NQVNLXzExMTEsIDB4MDAwMDAwMDUpOwotCQl9IGVsc2UgaWYgKHBoeWRldi0mZ3Q7c3BlZWQgPT0gU1BFRURfMTAwKSB7CiYjNDM7CQl9IGVsc2UgaWYgKHNwZWVkID09IFNQRUVEXzEwMCkgewogCQkJcnRsX2VyaV93cml0ZSh0cCwgMHgxYmMsIEVSSUFSX01BU0tfMTExMSwgMHgwMDAwMDAxZik7CiAJCQlydGxfZXJpX3dyaXRlKHRwLCAweDFkYywgRVJJQVJfTUFTS18xMTExLCAweDAwMDAwMDA1KTsKIAkJfSBlbHNlIHsKQEAgLTE2OTIsNyAmIzQzOzE4MDAsNyBAQCBzdGF0aWMgdm9pZCBydGxfbGlua19jaGdfcGF0Y2goc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApCiAJCXJ0bF9yZXNldF9wYWNrZXRfZmlsdGVyKHRwKTsKIAl9IGVsc2UgaWYgKHRwLSZndDttYWNfdmVyc2lvbiA9PSBSVExfR0lHQV9NQUNfVkVSXzM1IHx8CiAJCSAgIHRwLSZndDttYWNfdmVyc2lvbiA9PSBSVExfR0lHQV9NQUNfVkVSXzM2KSB7Ci0JCWlmIChwaHlkZXYtJmd0O3NwZWVkID09IFNQRUVEXzEwMDApIHsKJiM0MzsJCWlmIChzcGVlZCA9PSBTUEVFRF8xMDAwKSB7CiAJCQlydGxfZXJpX3dyaXRlKHRwLCAweDFiYywgRVJJQVJfTUFTS18xMTExLCAweDAwMDAwMDExKTsKIAkJCXJ0bF9lcmlfd3JpdGUodHAsIDB4MWRjLCBFUklBUl9NQVNLXzExMTEsIDB4MDAwMDAwMDUpOwogCQl9IGVsc2UgewpAQCAtMTcwMCw3ICYjNDM7MTgwOCw3IEBAIHN0YXRpYyB2b2lkIHJ0bF9saW5rX2NoZ19wYXRjaChzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCkKIAkJCXJ0bF9lcmlfd3JpdGUodHAsIDB4MWRjLCBFUklBUl9NQVNLXzExMTEsIDB4MDAwMDAwM2YpOwogCQl9CiAJfSBlbHNlIGlmICh0cC0mZ3Q7bWFjX3ZlcnNpb24gPT0gUlRMX0dJR0FfTUFDX1ZFUl8zNykgewotCQlpZiAocGh5ZGV2LSZndDtzcGVlZCA9PSBTUEVFRF8xMCkgewomIzQzOwkJaWYgKHNwZWVkID09IFNQRUVEXzEwKSB7CiAJCQlydGxfZXJpX3dyaXRlKHRwLCAweDFkMCwgRVJJQVJfTUFTS18wMDExLCAweDRkMDIpOwogCQkJcnRsX2VyaV93cml0ZSh0cCwgMHgxZGMsIEVSSUFSX01BU0tfMDAxMSwgMHgwMDYwYSk7CiAJCX0gZWxzZSB7CkBAIC0yMDc0LDExICYjNDM7MjE4MiwxMSBAQCBydGxfY29hbGVzY2VfaW5mbyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCkKIAkJY2kgPSBydGxfY29hbGVzY2VfaW5mb184MTY4XzgxMzY7CiAKIAkvKiBpZiBzcGVlZCBpcyB1bmtub3duIGFzc3VtZSBoaWdoZXN0IG9uZSAqLwotCWlmICh0cC0mZ3Q7cGh5ZGV2LSZndDtzcGVlZCA9PSBTUEVFRF9VTktOT1dOKQomIzQzOwlpZiAodHAtJmd0O3NwZWVkID09IFNQRUVEX1VOS05PV04pCiAJCXJldHVybiBjaTsKIAogCWZvciAoOyBjaS0mZ3Q7c3BlZWQ7IGNpJiM0MzsmIzQzOykgewotCQlpZiAodHAtJmd0O3BoeWRldi0mZ3Q7c3BlZWQgPT0gY2ktJmd0O3NwZWVkKQomIzQzOwkJaWYgKHRwLSZndDtzcGVlZCA9PSBjaS0mZ3Q7c3BlZWQpCiAJCQlyZXR1cm4gY2k7CiAJfQogCkBAIC0yMjM2LDcgJiM0MzsyMzQ0LDcgQEAgc3RhdGljIHZvaWQgcnRsX3NldF9lZWVfdHhpZGxlX3RpbWVyKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKQogCiBzdGF0aWMgdW5zaWduZWQgaW50IHI4MTY5X2dldF90eF9scGlfdGltZXJfdXMoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApCiB7Ci0JdW5zaWduZWQgaW50IHNwZWVkID0gdHAtJmd0O3BoeWRldi0mZ3Q7c3BlZWQ7CiYjNDM7CXVuc2lnbmVkIGludCBzcGVlZCA9IHRwLSZndDtzcGVlZDsKIAl1bnNpZ25lZCBpbnQgdGltZXIgPSB0cC0mZ3Q7dHhfbHBpX3RpbWVyOwogCiAJaWYgKCF0aW1lciB8fCBzcGVlZCA9PSBTUEVFRF9VTktOT1dOKQpAQCAtMjI1NCw3ICYjNDM7MjM2Miw3IEBAIHN0YXRpYyBpbnQgcnRsODE2OV9nZXRfZWVlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBldGh0b29sX2tlZWUgKmRhdGEpCiAJaWYgKCFydGxfc3VwcG9ydHNfZWVlKHRwKSkKIAkJcmV0dXJuIC1FT1BOT1RTVVBQOwogCi0JcmV0ID0gcGh5X2V0aHRvb2xfZ2V0X2VlZSh0cC0mZ3Q7cGh5ZGV2LCBkYXRhKTsKJiM0MzsJcmV0ID0gcGh5bGlua19ldGh0b29sX2dldF9lZWUodHAtJmd0O3BoeWxpbmssIGRhdGEpOwogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CiAKQEAgLTIyNzAsNyAmIzQzOzIzNzgsNyBAQCBzdGF0aWMgaW50IHJ0bDgxNjlfc2V0X2VlZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgZXRodG9vbF9rZWVlICpkYXRhKQogCWlmICghcnRsX3N1cHBvcnRzX2VlZSh0cCkpCiAJCXJldHVybiAtRU9QTk9UU1VQUDsKIAotCXJldHVybiBwaHlfZXRodG9vbF9zZXRfZWVlKHRwLSZndDtwaHlkZXYsIGRhdGEpOwomIzQzOwlyZXR1cm4gcGh5bGlua19ldGh0b29sX3NldF9lZWUodHAtJmd0O3BoeWxpbmssIGRhdGEpOwogfQogCiBzdGF0aWMgdm9pZCBydGw4MTY5X2dldF9yaW5ncGFyYW0oc3RydWN0IG5ldF9kZXZpY2UgKmRldiwKQEAgLTIzMDEsMTMgJiM0MzsyNDA5LDggQEAgc3RhdGljIHZvaWQgcnRsODE2OV9nZXRfcGF1c2VwYXJhbShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAogCQkJCSAgIHN0cnVjdCBldGh0b29sX3BhdXNlcGFyYW0gKmRhdGEpCiB7CiAJc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAgPSBuZXRkZXZfcHJpdihkZXYpOwotCWJvb2wgdHhfcGF1c2UsIHJ4X3BhdXNlOwogCi0JcGh5X2dldF9wYXVzZSh0cC0mZ3Q7cGh5ZGV2LCAmYW1wO3R4X3BhdXNlLCAmYW1wO3J4X3BhdXNlKTsKLQotCWRhdGEtJmd0O2F1dG9uZWcgPSB0cC0mZ3Q7cGh5ZGV2LSZndDthdXRvbmVnOwotCWRhdGEtJmd0O3R4X3BhdXNlID0gdHhfcGF1c2UgPyAxIDogMDsKLQlkYXRhLSZndDtyeF9wYXVzZSA9IHJ4X3BhdXNlID8gMSA6IDA7CiYjNDM7CXBoeWxpbmtfZXRodG9vbF9nZXRfcGF1c2VwYXJhbSh0cC0mZ3Q7cGh5bGluaywgZGF0YSk7CiB9CiAKIHN0YXRpYyBpbnQgcnRsODE2OV9zZXRfcGF1c2VwYXJhbShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LApAQCAtMjMxOCw5ICYjNDM7MjQyMSw3IEBAIHN0YXRpYyBpbnQgcnRsODE2OV9zZXRfcGF1c2VwYXJhbShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAogCWlmIChkZXYtJmd0O210dSAmZ3Q7IEVUSF9EQVRBX0xFTikKIAkJcmV0dXJuIC1FT1BOT1RTVVBQOwogCi0JcGh5X3NldF9hc3ltX3BhdXNlKHRwLSZndDtwaHlkZXYsIGRhdGEtJmd0O3J4X3BhdXNlLCBkYXRhLSZndDt0eF9wYXVzZSk7Ci0KLQlyZXR1cm4gMDsKJiM0MzsJcmV0dXJuIHBoeWxpbmtfZXRodG9vbF9zZXRfcGF1c2VwYXJhbSh0cC0mZ3Q7cGh5bGluaywgZGF0YSk7CiB9CiAKIHN0YXRpYyB2b2lkIHJ0bDgxNjlfZ2V0X2V0aF9tYWNfc3RhdHMoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwKQEAgLTIzODYsMzQgJiM0MzsyNDg3LDI3IEBAIHN0YXRpYyB2b2lkIHJ0bDgxNjlfZ2V0X2V0aF9jdHJsX3N0YXRzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCiAJCWxlMzJfdG9fY3B1KHRwLSZndDtjb3VudGVycy0mZ3Q7cnhfdW5rbm93bl9vcGNvZGUpOwogfQogCi1zdGF0aWMgaW50IHJ0bDgxNjlfc2V0X2xpbmtfa3NldHRpbmdzKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LAotCQkJCSAgICAgIGNvbnN0IHN0cnVjdCBldGh0b29sX2xpbmtfa3NldHRpbmdzICpjbWQpCiYjNDM7c3RhdGljIGludCBydGw4MTY5X2dldF9saW5rX2tzZXR0aW5ncyhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwKJiM0MzsJCQkJICAgICAgc3RydWN0IGV0aHRvb2xfbGlua19rc2V0dGluZ3MgKmNtZCkKIHsKIAlzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCA9IG5ldGRldl9wcml2KG5kZXYpOwotCXN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYgPSB0cC0mZ3Q7cGh5ZGV2OwotCWludCBkdXBsZXggPSBjbWQtJmd0O2Jhc2UuZHVwbGV4OwotCWludCBzcGVlZCA9IGNtZC0mZ3Q7YmFzZS5zcGVlZDsKLQotCWlmICghdHAtJmd0O3NmcF9tb2RlKQotCQlyZXR1cm4gcGh5X2V0aHRvb2xfa3NldHRpbmdzX3NldChwaHlkZXYsIGNtZCk7Ci0KLQlpZiAoY21kLSZndDtiYXNlLmF1dG9uZWcgIT0gQVVUT05FR19ESVNBQkxFKQotCQlyZXR1cm4gLUVJTlZBTDsKIAotCWlmICghcGh5X2NoZWNrX3ZhbGlkKHNwZWVkLCBkdXBsZXgsIHBoeWRldi0mZ3Q7c3VwcG9ydGVkKSkKLQkJcmV0dXJuIC1FSU5WQUw7Ci0KLQltdXRleF9sb2NrKCZhbXA7cGh5ZGV2LSZndDtsb2NrKTsKJiM0MzsJcmV0dXJuIHBoeWxpbmtfZXRodG9vbF9rc2V0dGluZ3NfZ2V0KHRwLSZndDtwaHlsaW5rLCBjbWQpOwomIzQzO30KIAotCXBoeWRldi0mZ3Q7YXV0b25lZyA9IEFVVE9ORUdfRElTQUJMRTsKLQlwaHlkZXYtJmd0O3NwZWVkID0gc3BlZWQ7Ci0JcGh5ZGV2LSZndDtkdXBsZXggPSBkdXBsZXg7CiYjNDM7c3RhdGljIGludCBydGw4MTY5X3NldF9saW5rX2tzZXR0aW5ncyhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwKJiM0MzsJCQkJICAgICAgY29uc3Qgc3RydWN0IGV0aHRvb2xfbGlua19rc2V0dGluZ3MgKmNtZCkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwID0gbmV0ZGV2X3ByaXYobmRldik7CiAKLQlydGxfc2ZwX2luaXQodHApOwomIzQzOwlyZXR1cm4gcGh5bGlua19ldGh0b29sX2tzZXR0aW5nc19zZXQodHAtJmd0O3BoeWxpbmssIGNtZCk7CiYjNDM7fQogCi0JbXV0ZXhfdW5sb2NrKCZhbXA7cGh5ZGV2LSZndDtsb2NrKTsKJiM0MztzdGF0aWMgaW50IHJ0bDgxNjlfbndheV9yZXNldChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQomIzQzO3sKJiM0MzsJc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAgPSBuZXRkZXZfcHJpdihkZXYpOwogCi0JcmV0dXJuIDA7CiYjNDM7CXJldHVybiBwaHlsaW5rX2V0aHRvb2xfbndheV9yZXNldCh0cC0mZ3Q7cGh5bGluayk7CiB9CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgcnRsODE2OV9ldGh0b29sX29wcyA9IHsKQEAgLTI0MzEsMTAgJiM0MzsyNTI1LDEwIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgcnRsODE2OV9ldGh0b29sX29wcyA9IHsKIAkuZ2V0X3NzZXRfY291bnQJCT0gcnRsODE2OV9nZXRfc3NldF9jb3VudCwKIAkuZ2V0X2V0aHRvb2xfc3RhdHMJPSBydGw4MTY5X2dldF9ldGh0b29sX3N0YXRzLAogCS5nZXRfdHNfaW5mbwkJPSBldGh0b29sX29wX2dldF90c19pbmZvLAotCS5ud2F5X3Jlc2V0CQk9IHBoeV9ldGh0b29sX253YXlfcmVzZXQsCiYjNDM7CS5ud2F5X3Jlc2V0CQk9IHJ0bDgxNjlfbndheV9yZXNldCwKIAkuZ2V0X2VlZQkJPSBydGw4MTY5X2dldF9lZWUsCiAJLnNldF9lZWUJCT0gcnRsODE2OV9zZXRfZWVlLAotCS5nZXRfbGlua19rc2V0dGluZ3MJPSBwaHlfZXRodG9vbF9nZXRfbGlua19rc2V0dGluZ3MsCiYjNDM7CS5nZXRfbGlua19rc2V0dGluZ3MJPSBydGw4MTY5X2dldF9saW5rX2tzZXR0aW5ncywKIAkuc2V0X2xpbmtfa3NldHRpbmdzCT0gcnRsODE2OV9zZXRfbGlua19rc2V0dGluZ3MsCiAJLmdldF9yaW5ncGFyYW0JCT0gcnRsODE2OV9nZXRfcmluZ3BhcmFtLAogCS5nZXRfcGF1c2Vfc3RhdHMJPSBydGw4MTY5X2dldF9wYXVzZV9zdGF0cywKQEAgLTI0OTksOSAmIzQzOzI1OTMsMTAgQEAgdm9pZCByODE2OV9hcHBseV9maXJtd2FyZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCkKIAkJdHAtJmd0O29jcF9iYXNlID0gT0NQX1NURF9QSFlfQkFTRTsKIAogCQkvKiBQSFkgc29mdCByZXNldCBtYXkgc3RpbGwgYmUgaW4gcHJvZ3Jlc3MgKi8KLQkJcGh5X3JlYWRfcG9sbF90aW1lb3V0KHRwLSZndDtwaHlkZXYsIE1JSV9CTUNSLCB2YWwsCi0JCQkJICAgICAgISh2YWwgJmFtcDsgQk1DUl9SRVNFVCksCi0JCQkJICAgICAgNTAwMDAsIDYwMDAwMCwgdHJ1ZSk7CiYjNDM7CQlpZiAodHAtJmd0O3BoeWRldikKJiM0MzsJCQlwaHlfcmVhZF9wb2xsX3RpbWVvdXQodHAtJmd0O3BoeWRldiwgTUlJX0JNQ1IsIHZhbCwKJiM0MzsJCQkJCSAgICAgICEodmFsICZhbXA7IEJNQ1JfUkVTRVQpLAomIzQzOwkJCQkJICAgICAgNTAwMDAsIDYwMDAwMCwgdHJ1ZSk7CiAJfQogfQogCkBAIC0yNTM4LDYgJiM0MzsyNjMzLDggQEAgc3RhdGljIHZvaWQgcnRsX3NjaGVkdWxlX3Rhc2soc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIGVudW0gcnRsX2ZsYWcgZmxhZykKIAogc3RhdGljIHZvaWQgcnRsODE2OV9pbml0X3BoeShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCkKIHsKJiM0MzsJcGh5X2luaXRfaHcodHAtJmd0O3BoeWRldik7CiYjNDM7CXBoeV9yZXN1bWUodHAtJmd0O3BoeWRldik7CiAJcjgxNjlfaHdfcGh5X2NvbmZpZyh0cCwgdHAtJmd0O3BoeWRldiwgdHAtJmd0O21hY192ZXJzaW9uKTsKIAogCWlmICh0cC0mZ3Q7bWFjX3ZlcnNpb24gJmx0Oz0gUlRMX0dJR0FfTUFDX1ZFUl8wNikgewpAQCAtMjU1Miw5ICYjNDM7MjY0OSw2IEBAIHN0YXRpYyB2b2lkIHJ0bDgxNjlfaW5pdF9waHkoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApCiAJICAgIHRwLSZndDtwY2lfZGV2LSZndDtzdWJzeXN0ZW1fZGV2aWNlID09IDB4ZTAwMCkKIAkJcGh5X3dyaXRlX3BhZ2VkKHRwLSZndDtwaHlkZXYsIDB4MDAwMSwgMHgxMCwgMHhmMDFiKTsKIAotCWlmICh0cC0mZ3Q7c2ZwX21vZGUpCi0JCXJ0bF9zZnBfaW5pdCh0cCk7Ci0KIAkvKiBXZSBtYXkgaGF2ZSBjYWxsZWQgcGh5X3NwZWVkX2Rvd24gYmVmb3JlICovCiAJcGh5X3NwZWVkX3VwKHRwLSZndDtwaHlkZXYpOwogCkBAIC0yNjU3LDE1ICYjNDM7Mjc1MSw2IEBAIHN0YXRpYyB2b2lkIHJ0bF9qdW1ib19jb25maWcoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApCiAKIAlpZiAocGNpX2lzX3BjaWUodHAtJmd0O3BjaV9kZXYpICZhbXA7JmFtcDsgdHAtJmd0O3N1cHBvcnRzX2dtaWkpCiAJCXBjaWVfc2V0X3JlYWRycSh0cC0mZ3Q7cGNpX2RldiwgcmVhZHJxKTsKLQotCS8qIENoaXAgZG9lc24mIzM5O3Qgc3VwcG9ydCBwYXVzZSBpbiBqdW1ibyBtb2RlICovCi0JaWYgKGp1bWJvKSB7Ci0JCWxpbmttb2RlX2NsZWFyX2JpdChFVEhUT09MX0xJTktfTU9ERV9QYXVzZV9CSVQsCi0JCQkJICAgdHAtJmd0O3BoeWRldi0mZ3Q7YWR2ZXJ0aXNpbmcpOwotCQlsaW5rbW9kZV9jbGVhcl9iaXQoRVRIVE9PTF9MSU5LX01PREVfQXN5bV9QYXVzZV9CSVQsCi0JCQkJICAgdHAtJmd0O3BoeWRldi0mZ3Q7YWR2ZXJ0aXNpbmcpOwotCQlwaHlfc3RhcnRfYW5lZyh0cC0mZ3Q7cGh5ZGV2KTsKLQl9CiB9CiAKIERFQ0xBUkVfUlRMX0NPTkQocnRsX2NoaXBjbWRfY29uZCkKQEAgLTI3ODAsNyAmIzQzOzI4NjUsNyBAQCBzdGF0aWMgdm9pZCBydGxfcHJlcGFyZV9wb3dlcl9kb3duKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKQogCQlydGxfZXBoeV93cml0ZSh0cCwgMHgxOSwgMHhmZjY0KTsKIAogCWlmIChkZXZpY2VfbWF5X3dha2V1cCh0cF90b19kZXYodHApKSkgewotCQlwaHlfc3BlZWRfZG93bih0cC0mZ3Q7cGh5ZGV2LCBmYWxzZSk7CiYjNDM7CQlwaHlsaW5rX3NwZWVkX2Rvd24odHAtJmd0O3BoeWxpbmssIGZhbHNlKTsKIAkJcnRsX3dvbF9lbmFibGVfcngodHApOwogCX0KIH0KQEAgLTI4MzIsNiAmIzQzOzI5MTcsMTYgQEAgc3RhdGljIHZvaWQgcnRsODE2OV9zZXRfbWFnaWNfcmVnKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKQogCVJUTF9XMzIodHAsIDB4N2MsIHZhbCk7CiB9CiAKJiM0MztzdGF0aWMgaW50IHJ0bDgxNjlfaW9jdGwoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IGlmcmVxICppZnIsIGludCBjbWQpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCA9IG5ldGRldl9wcml2KGRldik7CiYjNDM7CiYjNDM7CWlmICghbmV0aWZfcnVubmluZyhkZXYpKQomIzQzOwkJcmV0dXJuIC1FTk9ERVY7CiYjNDM7CiYjNDM7CXJldHVybiBwaHlsaW5rX21paV9pb2N0bCh0cC0mZ3Q7cGh5bGluaywgaWZyLCBjbWQpOwomIzQzO30KJiM0MzsKIHN0YXRpYyB2b2lkIHJ0bF9zZXRfcnhfbW9kZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQogewogCXUzMiByeF9tb2RlID0gQWNjZXB0QnJvYWRjYXN0IHwgQWNjZXB0TXlQaHlzIHwgQWNjZXB0TXVsdGljYXN0OwpAQCAtMzA5OCw4ICYjNDM7MzE5MywyMiBAQCBzdGF0aWMgdm9pZCBydGxfZW5hYmxlX2x0cihzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCkKIAkJcjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGYyLCAweDkwMDMpOwogCQlyODE2OF9tYWNfb2NwX21vZGlmeSh0cCwgTFRSX09CRkZfTE9DSywgMHgwMDAwLCBMSU5LX1NQRUVEX0NIQU5HRV9FTik7CiAJCWJyZWFrOwotCWNhc2UgUlRMX0dJR0FfTUFDX1ZFUl80NiAuLi4gUlRMX0dJR0FfTUFDX1ZFUl80ODoKIAljYXNlIFJUTF9HSUdBX01BQ19WRVJfNTI6CiYjNDM7CQlyODE2OF9tYWNfb2NwX3dyaXRlKHRwLCAweGNkZDAsIDB4OTAwMyk7CiYjNDM7CQlyODE2OF9tYWNfb2NwX21vZGlmeSh0cCwgTFRSX1NOT09QLCAweDAwMDAsIExUUl9TTk9PUF9FTik7CiYjNDM7CQlyODE2OF9tYWNfb2NwX3dyaXRlKHRwLCAweGUwMmMsIDB4MTg4MCk7CiYjNDM7CQlyODE2OF9tYWNfb2NwX3dyaXRlKHRwLCAweGUwMmUsIDB4NDg4MCk7CiYjNDM7CQlyODE2OF9tYWNfb2NwX21vZGlmeSh0cCwgQUxEUFNfTFRSLCAweDAwMDAsIEFMRFBTX0xUUl9FTik7CiYjNDM7CQlyODE2OF9tYWNfb2NwX3dyaXRlKHRwLCAweGNkZDgsIDB4OTAwMyk7CiYjNDM7CQlyODE2OF9tYWNfb2NwX3dyaXRlKHRwLCAweGNkZGEsIDB4OTAwMyk7CiYjNDM7CQlyODE2OF9tYWNfb2NwX3dyaXRlKHRwLCAweGNkZGMsIDB4OTAwMyk7CiYjNDM7CQlyODE2OF9tYWNfb2NwX3dyaXRlKHRwLCAweGNkZDIsIDB4ODgzYyk7CiYjNDM7CQlyODE2OF9tYWNfb2NwX3dyaXRlKHRwLCAweGNkZDQsIDB4OGMxMik7CiYjNDM7CQlyODE2OF9tYWNfb2NwX3dyaXRlKHRwLCAweGNkZDYsIDB4OTAwMyk7CiYjNDM7CQlyODE2OF9tYWNfb2NwX3dyaXRlKHRwLCAweGUwYTYsIDB4OTAwMyk7CiYjNDM7CQlyODE2OF9tYWNfb2NwX3dyaXRlKHRwLCAweGUwYTgsIDB4OTAwMyk7CiYjNDM7CQlicmVhazsKJiM0MzsJY2FzZSBSVExfR0lHQV9NQUNfVkVSXzQ2IC4uLiBSVExfR0lHQV9NQUNfVkVSXzQ4OgogCQlyODE2OF9tYWNfb2NwX21vZGlmeSh0cCwgQUxEUFNfTFRSLCAweDAwMDAsIEFMRFBTX0xUUl9FTik7CiAJCVJUTF9XOCh0cCwgQ09NQk9fTFRSX0VYVEVORCwgUlRMX1I4KHRwLCBDT01CT19MVFJfRVhURU5EKSB8IENPTUJPX0xUUl9FWFRFTkRfRU4pOwogCQlmYWxsdGhyb3VnaDsKQEAgLTMxMTksNiAmIzQzOzMyMjgsNyBAQCBzdGF0aWMgdm9pZCBydGxfZW5hYmxlX2x0cihzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCkKIAl9CiAJLyogY2hpcCBjYW4gdHJpZ2dlciBMVFIgKi8KIAlyODE2OF9tYWNfb2NwX21vZGlmeSh0cCwgTFRSX09CRkZfTE9DSywgMHgwMDAzLCBMVFJfT0JGRl9MT0NLX0VOKTsKJiM0MzsJcjgxNjhfbWFjX29jcF9tb2RpZnkodHAsIFNFTkRfTFRSX01TRywgMHgwMDAwLCBMVFJfTVNHX0VOKTsKIH0KIAogc3RhdGljIHZvaWQgcnRsX2h3X2FzcG1fY2xrcmVxX2VuYWJsZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgYm9vbCBlbmFibGUpCkBAIC0zMTUyLDYgJiM0MzszMjYyLDcgQEAgc3RhdGljIHZvaWQgcnRsX2h3X2FzcG1fY2xrcmVxX2VuYWJsZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgYm9vbCBlbmFibGUpCiAJCXJ0bF9lbmFibGVfbHRyKHRwKTsKIAkJc3dpdGNoICh0cC0mZ3Q7bWFjX3ZlcnNpb24pIHsKIAkJY2FzZSBSVExfR0lHQV9NQUNfVkVSXzQ2IC4uLiBSVExfR0lHQV9NQUNfVkVSXzQ4OgomIzQzOwkJY2FzZSBSVExfR0lHQV9NQUNfVkVSXzUyOgogCQljYXNlIFJUTF9HSUdBX01BQ19WRVJfNjEgLi4uIFJUTF9HSUdBX01BQ19WRVJfTEFTVDoKIAkJCS8qIHJlc2V0IGVwaHkgdHgvcnggZGlzYWJsZSB0aW1lciAqLwogCQkJcjgxNjhfbWFjX29jcF9tb2RpZnkodHAsIDB4ZTA5NCwgMHhmZjAwLCAwKTsKQEAgLTMxNjQsNiAmIzQzOzMyNzUsNyBAQCBzdGF0aWMgdm9pZCBydGxfaHdfYXNwbV9jbGtyZXFfZW5hYmxlKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCBib29sIGVuYWJsZSkKIAl9IGVsc2UgewogCQlzd2l0Y2ggKHRwLSZndDttYWNfdmVyc2lvbikgewogCQljYXNlIFJUTF9HSUdBX01BQ19WRVJfNDYgLi4uIFJUTF9HSUdBX01BQ19WRVJfNDg6CiYjNDM7CQljYXNlIFJUTF9HSUdBX01BQ19WRVJfNTI6CiAJCWNhc2UgUlRMX0dJR0FfTUFDX1ZFUl82MSAuLi4gUlRMX0dJR0FfTUFDX1ZFUl9MQVNUOgogCQkJcjgxNjhfbWFjX29jcF9tb2RpZnkodHAsIDB4ZTA5MiwgMHgwMGZmLCAwKTsKIAkJCWJyZWFrOwpAQCAtMzY1Nyw2ICYjNDM7Mzc2OSwzNSBAQCBzdGF0aWMgdm9pZCBydGxfaHdfc3RhcnRfODE2OGVwXzMoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApCiAJcjgxNjhfbWFjX29jcF9tb2RpZnkodHAsIDB4ZTg2MCwgMHgwMDAwLCAweDAwODApOwogfQogCiYjNDM7c3RhdGljIHZvaWQgcnRsX2xvd3Bvd2VyX2hpZGRlbl9mdW5jdGlvbnMoc3RydWN0IHBjaV9kZXYgKnBkZXYpCiYjNDM7ewomIzQzOwl1bnNpZ25lZCBpbnQgc2xvdCA9IFBDSV9TTE9UKHBkZXYtJmd0O2RldmZuKTsKJiM0MzsJc3RydWN0IHBjaV9idXMgKmJ1cyA9IHBkZXYtJmd0O2J1czsKJiM0MzsJdW5zaWduZWQgaW50IGRldmZuOwomIzQzOwlpbnQgZnVuYzsKJiM0MzsJaW50IHJldDsKJiM0MzsJdTMyIHZhbDsKJiM0MzsKJiM0MzsJZm9yIChmdW5jID0gMjsgZnVuYyAmbHQ7IDg7IGZ1bmMmIzQzOyYjNDM7KSB7CiYjNDM7CQlkZXZmbiA9IFBDSV9ERVZGTihzbG90LCBmdW5jKTsKJiM0MzsKJiM0MzsJCXJldCA9IHBjaV9idXNfcmVhZF9jb25maWdfZHdvcmQoYnVzLCBkZXZmbiwgUlRMODExNkFGX0ZVTkNfUE1fQ1NSLCAmYW1wO3ZhbCk7CiYjNDM7CQlpZiAoIXJldCAmYW1wOyZhbXA7ICFQQ0lfUE9TU0lCTEVfRVJST1IodmFsKSkgewomIzQzOwkJCXZhbCAmYW1wOz0gflBDSV9QTV9DVFJMX1BNRV9TVEFUVVM7CiYjNDM7CQkJdmFsICZhbXA7PSB+KFBDSV9QTV9DVFJMX1NUQVRFX01BU0sgfCBQQ0lfUE1fQ1RSTF9QTUVfRU5BQkxFKTsKJiM0MzsJCQl2YWwgfD0gKFJUTF9QTV9EM0hPVCB8IFBDSV9QTV9DVFJMX1BNRV9FTkFCTEUpOwomIzQzOwkJCXBjaV9idXNfd3JpdGVfY29uZmlnX2R3b3JkKGJ1cywgZGV2Zm4sIFJUTDgxMTZBRl9GVU5DX1BNX0NTUiwgdmFsKTsKJiM0MzsJCX0KJiM0MzsKJiM0MzsJCXJldCA9IHBjaV9idXNfcmVhZF9jb25maWdfZHdvcmQoYnVzLCBkZXZmbiwgUlRMODExNkFGX0ZVTkNfRVhQX0xOS0NUTCwgJmFtcDt2YWwpOwomIzQzOwkJaWYgKCFyZXQgJmFtcDsmYW1wOyAhUENJX1BPU1NJQkxFX0VSUk9SKHZhbCkpIHsKJiM0MzsJCQl2YWwgJmFtcDs9IH4oKFBDSV9FWFBfTE5LU1RBX0xCTVMgfCBQQ0lfRVhQX0xOS1NUQV9MQUJTKSAmbHQ7Jmx0OyAxNik7CiYjNDM7CQkJdmFsIHw9IFBDSV9FWFBfTE5LQ1RMX0FTUE1DOwomIzQzOwkJCXBjaV9idXNfd3JpdGVfY29uZmlnX2R3b3JkKGJ1cywgZGV2Zm4sIFJUTDgxMTZBRl9GVU5DX0VYUF9MTktDVEwsIHZhbCk7CiYjNDM7CQl9CiYjNDM7CX0KJiM0Mzt9CiYjNDM7CiBzdGF0aWMgdm9pZCBydGxfaHdfc3RhcnRfODExNyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCkKIHsKIAlzdGF0aWMgY29uc3Qgc3RydWN0IGVwaHlfaW5mbyBlX2luZm9fODExN1tdID0gewpAQCAtMzY5MywxMiAmIzQzOzM4MzQsMTQgQEAgc3RhdGljIHZvaWQgcnRsX2h3X3N0YXJ0XzgxMTcoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApCiAKIAlydGxfcGNpZV9zdGF0ZV9sMmwzX2Rpc2FibGUodHApOwogCi0Jcmdfc2F3X2NudCA9IHBoeV9yZWFkX3BhZ2VkKHRwLSZndDtwaHlkZXYsIDB4MGM0MiwgMHgxMykgJmFtcDsgMHgzZmZmOwotCWlmIChyZ19zYXdfY250ICZndDsgMCkgewotCQl1MTYgc3dfY250XzFtc19pbmk7CiYjNDM7CWlmICh0cC0mZ3Q7cGh5ZGV2KSB7CiYjNDM7CQlyZ19zYXdfY250ID0gcGh5X3JlYWRfcGFnZWQodHAtJmd0O3BoeWRldiwgMHgwYzQyLCAweDEzKSAmYW1wOyAweDNmZmY7CiYjNDM7CQlpZiAocmdfc2F3X2NudCAmZ3Q7IDApIHsKJiM0MzsJCQl1MTYgc3dfY250XzFtc19pbmk7CiAKLQkJc3dfY250XzFtc19pbmkgPSAoMTYwMDAwMDAgLyByZ19zYXdfY250KSAmYW1wOyAweDBmZmY7Ci0JCXI4MTY4X21hY19vY3BfbW9kaWZ5KHRwLCAweGQ0MTIsIDB4MGZmZiwgc3dfY250XzFtc19pbmkpOwomIzQzOwkJCXN3X2NudF8xbXNfaW5pID0gKDE2MDAwMDAwIC8gcmdfc2F3X2NudCkgJmFtcDsgMHgwZmZmOwomIzQzOwkJCXI4MTY4X21hY19vY3BfbW9kaWZ5KHRwLCAweGQ0MTIsIDB4MGZmZiwgc3dfY250XzFtc19pbmkpOwomIzQzOwkJfQogCX0KIAogCXI4MTY4X21hY19vY3BfbW9kaWZ5KHRwLCAweGUwNTYsIDB4MDBmMCwgMHgwMDAwKTsKQEAgLTM3MTEsNiAmIzQzOzM4NTQsOSBAQCBzdGF0aWMgdm9pZCBydGxfaHdfc3RhcnRfODExNyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCkKIAlyODE2OF9tYWNfb2NwX3dyaXRlKHRwLCAweGMwOTQsIDB4MDAwMCk7CiAJcjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjMDllLCAweDAwMDApOwogCiYjNDM7CWlmIChydGxfaXNfODExNmFmKHRwKSkKJiM0MzsJCXJ0bF9sb3dwb3dlcl9oaWRkZW5fZnVuY3Rpb25zKHRwLSZndDtwY2lfZGV2KTsKJiM0MzsKIAkvKiBmaXJtd2FyZSBpcyBmb3IgTUFDIG9ubHkgKi8KIAlyODE2OV9hcHBseV9maXJtd2FyZSh0cCk7CiB9CkBAIC00MTM5LDEyICYjNDM7NDI4NSwyNSBAQCBzdGF0aWMgdm9pZCBydGxfaHdfc3RhcnQoc3RydWN0ICBydGw4MTY5X3ByaXZhdGUgKnRwKQogc3RhdGljIGludCBydGw4MTY5X2NoYW5nZV9tdHUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgaW50IG5ld19tdHUpCiB7CiAJc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAgPSBuZXRkZXZfcHJpdihkZXYpOwomIzQzOwlib29sIGp1bWJvX2JlZm9yZSA9IGRldi0mZ3Q7bXR1ICZndDsgRVRIX0RBVEFfTEVOOwomIzQzOwlib29sIGp1bWJvX2FmdGVyID0gbmV3X210dSAmZ3Q7IEVUSF9EQVRBX0xFTjsKIAogCVdSSVRFX09OQ0UoZGV2LSZndDttdHUsIG5ld19tdHUpOwogCW5ldGRldl91cGRhdGVfZmVhdHVyZXMoZGV2KTsKIAlydGxfanVtYm9fY29uZmlnKHRwKTsKIAlydGxfc2V0X2VlZV90eGlkbGVfdGltZXIodHApOwogCiYjNDM7CWlmIChqdW1ib19iZWZvcmUgIT0ganVtYm9fYWZ0ZXIpIHsKJiM0MzsJCXVuc2lnbmVkIGxvbmcgY2FwcyA9IHRwLSZndDtwaHlsaW5rX2NvbmZpZy5tYWNfY2FwYWJpbGl0aWVzOwomIzQzOwomIzQzOwkJaWYgKGp1bWJvX2FmdGVyKQomIzQzOwkJCWNhcHMgJmFtcDs9IH4oTUFDX1NZTV9QQVVTRSB8IE1BQ19BU1lNX1BBVVNFKTsKJiM0MzsJCWVsc2UKJiM0MzsJCQljYXBzIHw9IChNQUNfU1lNX1BBVVNFIHwgTUFDX0FTWU1fUEFVU0UpOwomIzQzOwomIzQzOwkJcGh5bGlua19zZXRfbWFjX2NhcGFiaWxpdGllcyh0cC0mZ3Q7cGh5bGluaywgY2Fwcyk7CiYjNDM7CX0KJiM0MzsKIAlyZXR1cm4gMDsKIH0KIApAQCAtNDg2OSw4ICYjNDM7NTAyOCwxMyBAQCBzdGF0aWMgaXJxcmV0dXJuX3QgcnRsODE2OV9pbnRlcnJ1cHQoaW50IGlycSwgdm9pZCAqZGV2X2luc3RhbmNlKQogCQlnb3RvIG91dDsKIAl9CiAKLQlpZiAoc3RhdHVzICZhbXA7IExpbmtDaGcpCi0JCXBoeV9tYWNfaW50ZXJydXB0KHRwLSZndDtwaHlkZXYpOwomIzQzOwlpZiAoc3RhdHVzICZhbXA7IExpbmtDaGcpIHsKJiM0MzsJCWlmICh0cC0mZ3Q7cGh5ZGV2KQomIzQzOwkJCXBoeV9tYWNfaW50ZXJydXB0KHRwLSZndDtwaHlkZXYpOwomIzQzOwkJZWxzZSBpZiAodHAtJmd0O3NmcF9tb2RlKQomIzQzOwkJCXBoeWxpbmtfbWFjX2NoYW5nZSh0cC0mZ3Q7cGh5bGluaywKJiM0MzsJCQkJCSAgICEhKFJUTF9SOCh0cCwgUEhZc3RhdHVzKSAmYW1wOyBMaW5rU3RhdHVzKSk7CiYjNDM7CX0KIAogCXJ0bF9pcnFfZGlzYWJsZSh0cCk7CiAJbmFwaV9zY2hlZHVsZSgmYW1wO3RwLSZndDtuYXBpKTsKQEAgLTQ5MzAsOSAmIzQzOzUwOTQsNiBAQCBzdGF0aWMgaW50IHJ0bDgxNjlfcG9sbChzdHJ1Y3QgbmFwaV9zdHJ1Y3QgKm5hcGksIGludCBidWRnZXQpCiAKIHN0YXRpYyB2b2lkIHJ0bF9lbmFibGVfdHhfbHBpKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCBib29sIGVuYWJsZSkKIHsKLQlpZiAoIXJ0bF9zdXBwb3J0c19lZWUodHApKQotCQlyZXR1cm47Ci0KIAlzd2l0Y2ggKHRwLSZndDttYWNfdmVyc2lvbikgewogCWNhc2UgUlRMX0dJR0FfTUFDX1ZFUl8zNCAuLi4gUlRMX0dJR0FfTUFDX1ZFUl81MjoKIAkJLyogQWRqdXN0IEVFRSBMRUQgZnJlcXVlbmN5ICovCkBAIC00OTYzLDQwICYjNDM7NTEyNCwxNSBAQCBzdGF0aWMgdm9pZCBydGxfZW5hYmxlX3R4X2xwaShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgYm9vbCBlbmFibGUpCiAJfQogfQogCi1zdGF0aWMgdm9pZCByODE2OV9waHlsaW5rX2hhbmRsZXIoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpCi17Ci0Jc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAgPSBuZXRkZXZfcHJpdihuZGV2KTsKLQlzdHJ1Y3QgZGV2aWNlICpkID0gdHBfdG9fZGV2KHRwKTsKLQotCWlmIChuZXRpZl9jYXJyaWVyX29rKG5kZXYpKSB7Ci0JCXJ0bF9saW5rX2NoZ19wYXRjaCh0cCk7Ci0JCXJ0bF9lbmFibGVfdHhfbHBpKHRwLCB0cC0mZ3Q7cGh5ZGV2LSZndDtlbmFibGVfdHhfbHBpKTsKLQkJcG1fcmVxdWVzdF9yZXN1bWUoZCk7Ci0JfSBlbHNlIHsKLQkJcG1fcnVudGltZV9pZGxlKGQpOwotCX0KLQotCXBoeV9wcmludF9zdGF0dXModHAtJmd0O3BoeWRldik7Ci19Ci0KIHN0YXRpYyBpbnQgcjgxNjlfcGh5X2Nvbm5lY3Qoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApCiB7Ci0Jc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiA9IHRwLSZndDtwaHlkZXY7Ci0JcGh5X2ludGVyZmFjZV90IHBoeV9tb2RlOwogCWludCByZXQ7CiAKLQlwaHlfbW9kZSA9IHRwLSZndDtzdXBwb3J0c19nbWlpID8gUEhZX0lOVEVSRkFDRV9NT0RFX0dNSUkgOgotCQkgICBQSFlfSU5URVJGQUNFX01PREVfTUlJOwotCi0JcmV0ID0gcGh5X2Nvbm5lY3RfZGlyZWN0KHRwLSZndDtkZXYsIHBoeWRldiwgcjgxNjlfcGh5bGlua19oYW5kbGVyLAotCQkJCSBwaHlfbW9kZSk7Ci0JaWYgKHJldCkKJiM0MzsJcmV0ID0gcGh5bGlua19jb25uZWN0X3BoeSh0cC0mZ3Q7cGh5bGluaywgdHAtJmd0O3BoeWRldik7CiYjNDM7CWlmIChyZXQpIHsKJiM0MzsJCW5ldGRldl9lcnIodHAtJmd0O2RldiwgJiMzNDtmYWlsZWQgdG8gY29ubmVjdCBwaHlcbiYjMzQ7KTsKIAkJcmV0dXJuIHJldDsKLQotCWlmICghdHAtJmd0O3N1cHBvcnRzX2dtaWkpCi0JCXBoeV9zZXRfbWF4X3NwZWVkKHBoeWRldiwgU1BFRURfMTAwKTsKLQotCXBoeV9hdHRhY2hlZF9pbmZvKHBoeWRldik7CiYjNDM7CX0KIAogCXJldHVybiAwOwogfQpAQCAtNTAwNywxMCAmIzQzOzUxNDMsMTAgQEAgc3RhdGljIHZvaWQgcnRsODE2OV9kb3duKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKQogCS8qIENsZWFyIGFsbCB0YXNrIGZsYWdzICovCiAJYml0bWFwX3plcm8odHAtJmd0O3drLmZsYWdzLCBSVExfRkxBR19NQVgpOwogCi0JcGh5X3N0b3AodHAtJmd0O3BoeWRldik7CiYjNDM7CXBoeWxpbmtfc3RvcCh0cC0mZ3Q7cGh5bGluayk7CiAKIAkvKiBSZXNldCBTZXJEZXMgUEhZIHRvIGJyaW5nIGRvd24gZmliZXIgbGluayAqLwotCWlmICh0cC0mZ3Q7c2ZwX21vZGUpCiYjNDM7CWlmICh0cC0mZ3Q7c2ZwX21vZGUgPT0gUlRMX1NGUF84MTI3X0FURikKIAkJcnRsX3NmcF9yZXNldCh0cCk7CiAKIAlydGw4MTY5X3VwZGF0ZV9jb3VudGVycyh0cCk7CkBAIC01MDMyLDE0ICYjNDM7NTE2OCwxNCBAQCBzdGF0aWMgdm9pZCBydGw4MTY5X3VwKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKQogCQlydGw4MTY4X2RyaXZlcl9zdGFydCh0cCk7CiAKIAlwY2lfc2V0X21hc3Rlcih0cC0mZ3Q7cGNpX2Rldik7Ci0JcGh5X2luaXRfaHcodHAtJmd0O3BoeWRldik7Ci0JcGh5X3Jlc3VtZSh0cC0mZ3Q7cGh5ZGV2KTsKLQlydGw4MTY5X2luaXRfcGh5KHRwKTsKJiM0MzsJaWYgKHRwLSZndDtwaHlkZXYpCiYjNDM7CQlydGw4MTY5X2luaXRfcGh5KHRwKTsKJiM0MzsKIAluYXBpX2VuYWJsZSgmYW1wO3RwLSZndDtuYXBpKTsKIAllbmFibGVfd29yaygmYW1wO3RwLSZndDt3ay53b3JrKTsKIAlydGxfcmVzZXRfd29yayh0cCk7CiAKLQlwaHlfc3RhcnQodHAtJmd0O3BoeWRldik7CiYjNDM7CXBoeWxpbmtfc3RhcnQodHAtJmd0O3BoeWxpbmspOwogfQogCiBzdGF0aWMgaW50IHJ0bDgxNjlfY2xvc2Uoc3RydWN0IG5ldF9kZXZpY2UgKmRldikKQEAgLTUwNTUsNyAmIzQzOzUxOTEsNyBAQCBzdGF0aWMgaW50IHJ0bDgxNjlfY2xvc2Uoc3RydWN0IG5ldF9kZXZpY2UgKmRldikKIAogCWZyZWVfaXJxKHRwLSZndDtpcnEsIHRwKTsKIAotCXBoeV9kaXNjb25uZWN0KHRwLSZndDtwaHlkZXYpOwomIzQzOwlwaHlsaW5rX2Rpc2Nvbm5lY3RfcGh5KHRwLSZndDtwaHlsaW5rKTsKIAogCWRtYV9mcmVlX2NvaGVyZW50KCZhbXA7cGRldi0mZ3Q7ZGV2LCBSODE2OV9SWF9SSU5HX0JZVEVTLCB0cC0mZ3Q7UnhEZXNjQXJyYXksCiAJCQkgIHRwLSZndDtSeFBoeUFkZHIpOwpAQCAtNTExMiw5ICYjNDM7NTI0OCwxMSBAQCBzdGF0aWMgaW50IHJ0bF9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCiAJaWYgKHJldHZhbCAmbHQ7IDApCiAJCWdvdG8gZXJyX3JlbGVhc2VfZndfMjsKIAotCXJldHZhbCA9IHI4MTY5X3BoeV9jb25uZWN0KHRwKTsKLQlpZiAocmV0dmFsKQotCQlnb3RvIGVycl9mcmVlX2lycTsKJiM0MzsJaWYgKHRwLSZndDtwaHlkZXYpIHsKJiM0MzsJCXJldHZhbCA9IHI4MTY5X3BoeV9jb25uZWN0KHRwKTsKJiM0MzsJCWlmIChyZXR2YWwpCiYjNDM7CQkJZ290byBlcnJfZnJlZV9pcnE7CiYjNDM7CX0KIAogCXJ0bDgxNjlfdXAodHApOwogCXJ0bDgxNjlfaW5pdF9jb3VudGVyX29mZnNldHModHApOwpAQCAtNTE5MCw4ICYjNDM7NTMyOCwxMSBAQCBzdGF0aWMgaW50IHJ0bDgxNjlfcnVudGltZV9yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2KQogCXJ0bF9yYXJfc2V0KHRwLCB0cC0mZ3Q7ZGV2LSZndDtkZXZfYWRkcik7CiAJX19ydGw4MTY5X3NldF93b2wodHAsIHRwLSZndDtzYXZlZF93b2xvcHRzKTsKIAotCWlmICh0cC0mZ3Q7VHhEZXNjQXJyYXkpCiYjNDM7CWlmICh0cC0mZ3Q7VHhEZXNjQXJyYXkpIHsKJiM0MzsJCXJ0bmxfbG9jaygpOwogCQlydGw4MTY5X3VwKHRwKTsKJiM0MzsJCXJ0bmxfdW5sb2NrKCk7CiYjNDM7CX0KIAogCW5ldGlmX2RldmljZV9hdHRhY2godHAtJmd0O2Rldik7CiAKQEAgLTUyODgsNiAmIzQzOzU0MjksNyBAQCBzdGF0aWMgdm9pZCBydGxfcmVtb3ZlX29uZShzdHJ1Y3QgcGNpX2RldiAqcGRldikKIAkJcjgxNjlfcmVtb3ZlX2xlZHModHAtJmd0O2xlZHMpOwogCiAJdW5yZWdpc3Rlcl9uZXRkZXYodHAtJmd0O2Rldik7CiYjNDM7CXBoeWxpbmtfZGVzdHJveSh0cC0mZ3Q7cGh5bGluayk7CiAKIAlpZiAodHAtJmd0O2Rhc2hfdHlwZSAhPSBSVExfREFTSF9OT05FKQogCQlydGw4MTY4X2RyaXZlcl9zdG9wKHRwKTsKQEAgLTUzMTAsNyAmIzQzOzU0NTIsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIHJ0bF9uZXRkZXZfb3BzID0gewogCS5uZG9fZml4X2ZlYXR1cmVzCT0gcnRsODE2OV9maXhfZmVhdHVyZXMsCiAJLm5kb19zZXRfZmVhdHVyZXMJPSBydGw4MTY5X3NldF9mZWF0dXJlcywKIAkubmRvX3NldF9tYWNfYWRkcmVzcwk9IHJ0bF9zZXRfbWFjX2FkZHJlc3MsCi0JLm5kb19ldGhfaW9jdGwJCT0gcGh5X2RvX2lvY3RsX3J1bm5pbmcsCiYjNDM7CS5uZG9fZXRoX2lvY3RsCQk9IHJ0bDgxNjlfaW9jdGwsCiAJLm5kb19zZXRfcnhfbW9kZQk9IHJ0bF9zZXRfcnhfbW9kZSwKICNpZmRlZiBDT05GSUdfTkVUX1BPTExfQ09OVFJPTExFUgogCS5uZG9fcG9sbF9jb250cm9sbGVyCT0gcnRsODE2OV9uZXRwb2xsLApAQCAtNTQ3NCwxNiAmIzQzOzU2MTYsNiBAQCBzdGF0aWMgaW50IHI4MTY5X21kaW9fcmVnaXN0ZXIoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApCiAJCXJldHVybiAtRVVOQVRDSDsKIAl9CiAKLQl0cC0mZ3Q7cGh5ZGV2LSZndDttYWNfbWFuYWdlZF9wbSA9IHRydWU7Ci0JaWYgKHJ0bF9zdXBwb3J0c19lZWUodHApKQotCQlwaHlfc3VwcG9ydF9lZWUodHAtJmd0O3BoeWRldik7Ci0JcGh5X3N1cHBvcnRfYXN5bV9wYXVzZSh0cC0mZ3Q7cGh5ZGV2KTsKLQotCS8qIG1pbWljIGJlaGF2aW9yIG9mIHI4MTI1L3I4MTI2IHZlbmRvciBkcml2ZXJzICovCi0JaWYgKHRwLSZndDttYWNfdmVyc2lvbiA9PSBSVExfR0lHQV9NQUNfVkVSXzYxKQotCQlwaHlfZGlzYWJsZV9lZWVfbW9kZSh0cC0mZ3Q7cGh5ZGV2LAotCQkJCSAgICAgRVRIVE9PTF9MSU5LX01PREVfMjUwMGJhc2VUX0Z1bGxfQklUKTsKLQogCS8qIFBIWSB3aWxsIGJlIHdva2VuIHVwIGluIHJ0bF9vcGVuKCkgKi8KIAlwaHlfc3VzcGVuZCh0cC0mZ3Q7cGh5ZGV2KTsKIApAQCAtNTU5OSw2ICYjNDM7NTczMSwyNDIgQEAgc3RhdGljIGJvb2wgcnRsX2FzcG1faXNfc2FmZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCkKIAlyZXR1cm4gZmFsc2U7CiB9CiAKJiM0MztzdGF0aWMgdm9pZCBydGxfbWFjX2xpbmtfZG93bihzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZywgdW5zaWduZWQgaW50IG1vZGUsCiYjNDM7CQkJICAgICAgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwID0gY29udGFpbmVyX29mKGNvbmZpZywgc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSwgcGh5bGlua19jb25maWcpOwomIzQzOwomIzQzOwl0cC0mZ3Q7c3BlZWQgPSBTUEVFRF9VTktOT1dOOwomIzQzOwlwbV9ydW50aW1lX2lkbGUodHBfdG9fZGV2KHRwKSk7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyB2b2lkIHJ0bF9tYWNfbGlua191cChzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZywgc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwKJiM0MzsJCQkgICAgdW5zaWduZWQgaW50IG1vZGUsIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UsCiYjNDM7CQkJICAgIGludCBzcGVlZCwgaW50IGR1cGxleCwgYm9vbCB0eF9wYXVzZSwgYm9vbCByeF9wYXVzZSkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwID0gY29udGFpbmVyX29mKGNvbmZpZywgc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSwgcGh5bGlua19jb25maWcpOwomIzQzOwlzdHJ1Y3QgZGV2aWNlICpkID0gdHBfdG9fZGV2KHRwKTsKJiM0MzsKJiM0MzsJdHAtJmd0O3NwZWVkID0gc3BlZWQ7CiYjNDM7CXJ0bF9saW5rX2NoZ19wYXRjaCh0cCwgc3BlZWQpOwomIzQzOwomIzQzOwlwbV9yZXF1ZXN0X3Jlc3VtZShkKTsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIHN0cnVjdCBwaHlsaW5rX3BjcyAqcnRsX21hY19zZWxlY3RfcGNzKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLAomIzQzOwkJCQkJICAgICAgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwID0gY29udGFpbmVyX29mKGNvbmZpZywgc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSwgcGh5bGlua19jb25maWcpOwomIzQzOwomIzQzOwlpZiAoIXRwLSZndDtwY3Mub3BzKQomIzQzOwkJcmV0dXJuIE5VTEw7CiYjNDM7CiYjNDM7CWlmIChpbnRlcmZhY2UgPT0gUEhZX0lOVEVSRkFDRV9NT0RFXzEwMDBCQVNFWCB8fAomIzQzOwkgICAgaW50ZXJmYWNlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV8xMEdCQVNFUikKJiM0MzsJCXJldHVybiAmYW1wO3RwLSZndDtwY3M7CiYjNDM7CiYjNDM7CXJldHVybiBOVUxMOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgdm9pZCBydGxfbWFjX2NvbmZpZyhzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZywgdW5zaWduZWQgaW50IG1vZGUsCiYjNDM7CQkJICAgY29uc3Qgc3RydWN0IHBoeWxpbmtfbGlua19zdGF0ZSAqc3RhdGUpCiYjNDM7ewomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgdTE2IHJ0bDgxNjlfc2RzX3JlYWQoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIHUxNiBzZHNfcmVnKQomIzQzO3sKJiM0MzsJdW5zaWduZWQgbG9uZyBmbGFnczsKJiM0MzsJdTE2IHZhbCA9IDA7CiYjNDM7CiYjNDM7CXJhd19zcGluX2xvY2tfaXJxc2F2ZSgmYW1wO3RwLSZndDttYWNfb2NwX2xvY2ssIGZsYWdzKTsKJiM0MzsJX19yODE2OF9tYWNfb2NwX3dyaXRlKHRwLCBPQ1BfU0RTX0FERFJfUkVHLCBzZHNfcmVnKTsKJiM0MzsJX19yODE2OF9tYWNfb2NwX3dyaXRlKHRwLCBPQ1BfU0RTX0NNRF9SRUcsIFNEU19DTURfUkVBRCk7CiYjNDM7CXZhbCA9IF9fcjgxNjhfbWFjX29jcF9yZWFkKHRwLCBPQ1BfU0RTX0RBVEFfUkVHKTsKJiM0MzsJcmF3X3NwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmFtcDt0cC0mZ3Q7bWFjX29jcF9sb2NrLCBmbGFncyk7CiYjNDM7CiYjNDM7CXJldHVybiB2YWw7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyB2b2lkIHJ0bDgxNjlfcGNzX2dldF9zdGF0ZShzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcywKJiM0MzsJCQkJICB1bnNpZ25lZCBpbnQgbmVnX21vZGUsCiYjNDM7CQkJCSAgc3RydWN0IHBoeWxpbmtfbGlua19zdGF0ZSAqc3RhdGUpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCA9IGNvbnRhaW5lcl9vZihwY3MsIHN0cnVjdCBydGw4MTY5X3ByaXZhdGUsIHBjcyk7CiYjNDM7CiYjNDM7CWlmICh0cC0mZ3Q7c2ZwX21vZGUgPT0gUlRMX1NGUF84MTI3X0FURikgewomIzQzOwkJdTE2IHN0YXQxOwomIzQzOwomIzQzOwkJc3RhdDEgPSBydGw4MTY5X3Nkc19yZWFkKHRwLCBSVExfU0RTX0M0NV9CQVNFICYjNDM7IE1ESU9fU1RBVDEpOwomIzQzOwomIzQzOwkJaWYgKCEoc3RhdDEgJmFtcDsgTURJT19TVEFUMV9MU1RBVFVTKSkKJiM0MzsJCQlzdGF0MSA9IHJ0bDgxNjlfc2RzX3JlYWQodHAsIFJUTF9TRFNfQzQ1X0JBU0UgJiM0MzsgTURJT19TVEFUMSk7CiYjNDM7CiYjNDM7CQlzdGF0ZS0mZ3Q7bGluayA9ICEhKHN0YXQxICZhbXA7IE1ESU9fU1RBVDFfTFNUQVRVUyk7CiYjNDM7CQlpZiAoIXN0YXRlLSZndDtsaW5rKQomIzQzOwkJCXJldHVybjsKJiM0MzsKJiM0MzsJCXN0YXRlLSZndDtkdXBsZXggPSBEVVBMRVhfRlVMTDsKJiM0MzsJCXN0YXRlLSZndDtzcGVlZCA9IFNQRUVEXzEwMDAwOwomIzQzOwl9IGVsc2UgewomIzQzOwkJdTE2IGJtc3IsIGxwYTsKJiM0MzsKJiM0MzsJCWJtc3IgPSBydGw4MTY5X3Nkc19yZWFkKHRwLCBSVExfU0RTX0MyMl9CQVNFICYjNDM7IE1JSV9CTVNSKTsKJiM0MzsJCWxwYSA9IHJ0bDgxNjlfc2RzX3JlYWQodHAsIFJUTF9TRFNfQzIyX0JBU0UgJiM0MzsgTUlJX0xQQSk7CiYjNDM7CQlwaHlsaW5rX21paV9jMjJfcGNzX2RlY29kZV9zdGF0ZShzdGF0ZSwgbmVnX21vZGUsIGJtc3IsIGxwYSk7CiYjNDM7CX0KJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIGludCBydGw4MTY5X3Bjc19jb25maWcoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MsIHVuc2lnbmVkIGludCBtb2RlLAomIzQzOwkJCSAgICAgIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UsCiYjNDM7CQkJICAgICAgY29uc3QgdW5zaWduZWQgbG9uZyAqYWR2ZXJ0aXNpbmcsCiYjNDM7CQkJICAgICAgYm9vbCBwZXJtaXRfcGF1c2VfdG9fbWFjKQomIzQzO3sKJiM0MzsJc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAgPSBjb250YWluZXJfb2YocGNzLCBzdHJ1Y3QgcnRsODE2OV9wcml2YXRlLCBwY3MpOwomIzQzOwomIzQzOwlpZiAodHAtJmd0O3NmcF9tb2RlID09IFJUTF9TRlBfODEyN19BVEYpIHsKJiM0MzsJCXN3aXRjaCAoaW50ZXJmYWNlKSB7CiYjNDM7CQljYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV8xMEdCQVNFUjoKJiM0MzsJCQlyODEyN19zZnBfaW5pdF8xMGcodHApOwomIzQzOwkJCWJyZWFrOwomIzQzOwkJY2FzZSBQSFlfSU5URVJGQUNFX01PREVfMTAwMEJBU0VYOgomIzQzOwkJCXI4MTI3X3NmcF9pbml0XzFnKHRwKTsKJiM0MzsJCQlicmVhazsKJiM0MzsJCWRlZmF1bHQ6CiYjNDM7CQkJbmV0ZGV2X2Vycih0cC0mZ3Q7ZGV2LCAmIzM0O1Vuc3VwcG9ydGVkIFNGUCBpbnRlcmZhY2UgbW9kZTogJXNcbiYjMzQ7LAomIzQzOwkJCQkgICBwaHlfbW9kZXMoaW50ZXJmYWNlKSk7CiYjNDM7CQkJcmV0dXJuIC1FT1BOT1RTVVBQOwomIzQzOwkJfQomIzQzOwl9CiYjNDM7CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgaW50IHJ0bDgxNjlfcGNzX3ZhbGlkYXRlKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzLCB1bnNpZ25lZCBsb25nICpzdXBwb3J0ZWQsCiYjNDM7CQkJCWNvbnN0IHN0cnVjdCBwaHlsaW5rX2xpbmtfc3RhdGUgKnN0YXRlKQomIzQzO3sKJiM0MzsJcmV0dXJuIDA7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyB2b2lkIHJ0bDgxNjlfcGNzX2FuX3Jlc3RhcnQoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MpCiYjNDM7ewomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgdm9pZCBydGxfbWFjX2Rpc2FibGVfdHhfbHBpKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKQomIzQzO3sKJiM0MzsJc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAgPSBjb250YWluZXJfb2YoY29uZmlnLCBzdHJ1Y3QgcnRsODE2OV9wcml2YXRlLCBwaHlsaW5rX2NvbmZpZyk7CiYjNDM7CiYjNDM7CXJ0bF9lbmFibGVfdHhfbHBpKHRwLCBmYWxzZSk7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyBpbnQgcnRsX21hY19lbmFibGVfdHhfbHBpKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLCB1MzIgdGltZXIsIGJvb2wgdHhfY2xrX3N0b3ApCiYjNDM7ewomIzQzOwlzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCA9IGNvbnRhaW5lcl9vZihjb25maWcsIHN0cnVjdCBydGw4MTY5X3ByaXZhdGUsIHBoeWxpbmtfY29uZmlnKTsKJiM0MzsKJiM0MzsJcnRsX2VuYWJsZV90eF9scGkodHAsIHRydWUpOwomIzQzOwomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBwaHlsaW5rX21hY19vcHMgcnRsX3BoeWxpbmtfbWFjX29wcyA9IHsKJiM0MzsJLm1hY19zZWxlY3RfcGNzID0gcnRsX21hY19zZWxlY3RfcGNzLAomIzQzOwkubWFjX2NvbmZpZyA9IHJ0bF9tYWNfY29uZmlnLAomIzQzOwkubWFjX2xpbmtfZG93biAgPSBydGxfbWFjX2xpbmtfZG93biwKJiM0MzsJLm1hY19saW5rX3VwICAgID0gcnRsX21hY19saW5rX3VwLAomIzQzOwkubWFjX2Rpc2FibGVfdHhfbHBpID0gcnRsX21hY19kaXNhYmxlX3R4X2xwaSwKJiM0MzsJLm1hY19lbmFibGVfdHhfbHBpID0gcnRsX21hY19lbmFibGVfdHhfbHBpLAomIzQzO307CiYjNDM7CiYjNDM7c3RhdGljIHVuc2lnbmVkIGxvbmcgcnRsODE2OV9nZXRfbHBpX2NhcHMoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApCiYjNDM7ewomIzQzOwl1bnNpZ25lZCBsb25nIGNhcHMgPSAwOwomIzQzOwomIzQzOwlpZiAoIXJ0bF9zdXBwb3J0c19lZWUodHApIHx8IHRwLSZndDtzZnBfbW9kZSA9PSBSVExfU0ZQXzgxMjdfQVRGKQomIzQzOwkJcmV0dXJuIDA7CiYjNDM7CiYjNDM7CWNhcHMgfD0gTUFDXzEwMEZEIHwgTUFDXzEwMDBGRDsKJiM0MzsKJiM0MzsJLyogbWltaWMgYmVoYXZpb3Igb2YgcjgxMjUvcjgxMjYgdmVuZG9yIGRyaXZlcnMKJiM0MzsJICogUlRMX0dJR0FfTUFDX1ZFUl82MSBkb2VzbiYjMzk7dCBzdXBwb3J0IDIuNUcgZWVlCiYjNDM7CSAqLwomIzQzOwlpZiAodHAtJmd0O21hY192ZXJzaW9uICZndDs9IFJUTF9HSUdBX01BQ19WRVJfNjMpCiYjNDM7CQljYXBzIHw9IE1BQ18yNTAwRkQ7CiYjNDM7CWlmICh0cC0mZ3Q7bWFjX3ZlcnNpb24gJmd0Oz0gUlRMX0dJR0FfTUFDX1ZFUl83MCkKJiM0MzsJCWNhcHMgfD0gTUFDXzUwMDBGRDsKJiM0MzsJaWYgKHRwLSZndDttYWNfdmVyc2lvbiA9PSBSVExfR0lHQV9NQUNfVkVSXzgwKQomIzQzOwkJY2FwcyB8PSBNQUNfMTAwMDBGRDsKJiM0MzsKJiM0MzsJcmV0dXJuIGNhcHM7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgcGh5bGlua19wY3Nfb3BzIHI4MTY5X3Bjc19vcHMgPSB7CiYjNDM7CS5wY3NfdmFsaWRhdGUgPSBydGw4MTY5X3Bjc192YWxpZGF0ZSwKJiM0MzsJLnBjc19nZXRfc3RhdGUgPSBydGw4MTY5X3Bjc19nZXRfc3RhdGUsCiYjNDM7CS5wY3NfY29uZmlnID0gcnRsODE2OV9wY3NfY29uZmlnLAomIzQzOwkucGNzX2FuX3Jlc3RhcnQgPSBydGw4MTY5X3Bjc19hbl9yZXN0YXJ0LAomIzQzO307CiYjNDM7CiYjNDM7c3RhdGljIGludCBydGxfaW5pdF9waHlsaW5rKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKQomIzQzO3sKJiM0MzsJc3RydWN0IHBoeWxpbmsgKnBsOwomIzQzOwlwaHlfaW50ZXJmYWNlX3QgcGh5X21vZGU7CiYjNDM7CiYjNDM7CXRwLSZndDtwaHlsaW5rX2NvbmZpZy5kZXYgPSAmYW1wO3RwLSZndDtkZXYtJmd0O2RldjsKJiM0MzsJdHAtJmd0O3BoeWxpbmtfY29uZmlnLnR5cGUgPSBQSFlMSU5LX05FVERFVjsKJiM0MzsJdHAtJmd0O3BoeWxpbmtfY29uZmlnLm1hY19tYW5hZ2VkX3BtID0gdHJ1ZTsKJiM0MzsJdHAtJmd0O3BoeWxpbmtfY29uZmlnLmxwaV9jYXBhYmlsaXRpZXMgPSBydGw4MTY5X2dldF9scGlfY2Fwcyh0cCk7CiYjNDM7CXRwLSZndDtwaHlsaW5rX2NvbmZpZy5tYWNfY2FwYWJpbGl0aWVzIHw9IE1BQ19BU1lNX1BBVVNFIHwgTUFDX1NZTV9QQVVTRTsKJiM0MzsKJiM0MzsJc3dpdGNoICh0cC0mZ3Q7c2ZwX21vZGUpIHsKJiM0MzsJY2FzZSBSVExfU0ZQXzgxNjhfQUY6CiYjNDM7CQl0cC0mZ3Q7cGNzLm9wcyA9ICZhbXA7cjgxNjlfcGNzX29wczsKJiM0MzsJCXRwLSZndDtwaHlsaW5rX2NvbmZpZy5kZWZhdWx0X2FuX2luYmFuZCA9IHRydWU7CiYjNDM7CQlwaHlfbW9kZSA9IFBIWV9JTlRFUkZBQ0VfTU9ERV8xMDAwQkFTRVg7CiYjNDM7CQl0cC0mZ3Q7cGh5bGlua19jb25maWcubWFjX2NhcGFiaWxpdGllcyB8PSBNQUNfMTAwMEZEOwomIzQzOwkJYnJlYWs7CiYjNDM7CWNhc2UgUlRMX1NGUF84MTI3X0FURjoKJiM0MzsJCXRwLSZndDtwY3Mub3BzID0gJmFtcDtyODE2OV9wY3Nfb3BzOwomIzQzOwkJcGh5X21vZGUgPSBQSFlfSU5URVJGQUNFX01PREVfMTBHQkFTRVI7CiYjNDM7CQl0cC0mZ3Q7cGh5bGlua19jb25maWcuZGVmYXVsdF9hbl9pbmJhbmQgPSB0cnVlOwomIzQzOwkJdHAtJmd0O3BoeWxpbmtfY29uZmlnLm1hY19jYXBhYmlsaXRpZXMgfD0gTUFDXzEwMDBGRCB8IE1BQ18xMDAwMEZEOwomIzQzOwkJYnJlYWs7CiYjNDM7CWRlZmF1bHQ6CiYjNDM7CQlwaHlfbW9kZSA9IFBIWV9JTlRFUkZBQ0VfTU9ERV9JTlRFUk5BTDsKJiM0MzsJCXRwLSZndDtwaHlsaW5rX2NvbmZpZy5tYWNfY2FwYWJpbGl0aWVzIHw9IE1BQ18xMCB8IE1BQ18xMDA7CiYjNDM7CiYjNDM7CQlpZiAodHAtJmd0O21hY192ZXJzaW9uID09IFJUTF9HSUdBX01BQ19WRVJfODApCiYjNDM7CQkJdHAtJmd0O3BoeWxpbmtfY29uZmlnLm1hY19jYXBhYmlsaXRpZXMgfD0gTUFDXzEwMDBGRCB8IE1BQ18yNTAwRkQgfAomIzQzOwkJCQkJCQkgICAgICAgTUFDXzUwMDBGRCB8IE1BQ18xMDAwMEZEOwomIzQzOwkJZWxzZSBpZiAodHAtJmd0O21hY192ZXJzaW9uID09IFJUTF9HSUdBX01BQ19WRVJfNzApCiYjNDM7CQkJdHAtJmd0O3BoeWxpbmtfY29uZmlnLm1hY19jYXBhYmlsaXRpZXMgfD0gTUFDXzEwMDBGRCB8CiYjNDM7CQkJCQkJCSAgICAgICBNQUNfMjUwMEZEIHwgTUFDXzUwMDBGRDsKJiM0MzsJCWVsc2UgaWYgKHRwLSZndDttYWNfdmVyc2lvbiAmZ3Q7PSBSVExfR0lHQV9NQUNfVkVSXzYxKQomIzQzOwkJCXRwLSZndDtwaHlsaW5rX2NvbmZpZy5tYWNfY2FwYWJpbGl0aWVzIHw9IE1BQ18xMDAwRkQgfCBNQUNfMjUwMEZEOwomIzQzOwkJZWxzZQomIzQzOwkJCWlmICh0cC0mZ3Q7c3VwcG9ydHNfZ21paSkKJiM0MzsJCQkJdHAtJmd0O3BoeWxpbmtfY29uZmlnLm1hY19jYXBhYmlsaXRpZXMgfD0gTUFDXzEwMDBGRDsKJiM0MzsKJiM0MzsJCWlmICh0cC0mZ3Q7bWFjX3ZlcnNpb24gJmx0OyBSVExfR0lHQV9NQUNfVkVSXzYxKQomIzQzOwkJCXBoeV9tb2RlID0gdHAtJmd0O3N1cHBvcnRzX2dtaWkgPyBQSFlfSU5URVJGQUNFX01PREVfR01JSSA6CiYjNDM7CQkJCSAgIFBIWV9JTlRFUkZBQ0VfTU9ERV9NSUk7CiYjNDM7CQllbHNlCiYjNDM7CQkJcGh5X21vZGUgPSBQSFlfSU5URVJGQUNFX01PREVfSU5URVJOQUw7CiYjNDM7CQlicmVhazsKJiM0MzsJfQomIzQzOwomIzQzOwlfX3NldF9iaXQocGh5X21vZGUsIHRwLSZndDtwaHlsaW5rX2NvbmZpZy5zdXBwb3J0ZWRfaW50ZXJmYWNlcyk7CiYjNDM7CWlmICh0cC0mZ3Q7cGh5bGlua19jb25maWcubHBpX2NhcGFiaWxpdGllcykKJiM0MzsJCV9fc2V0X2JpdChwaHlfbW9kZSwgdHAtJmd0O3BoeWxpbmtfY29uZmlnLmxwaV9pbnRlcmZhY2VzKTsKJiM0MzsKJiM0MzsJcGwgPSBwaHlsaW5rX2NyZWF0ZSgmYW1wO3RwLSZndDtwaHlsaW5rX2NvbmZpZywgdHBfdG9fZGV2KHRwKS0mZ3Q7Zndub2RlLAomIzQzOwkJCSAgICBwaHlfbW9kZSwgJmFtcDtydGxfcGh5bGlua19tYWNfb3BzKTsKJiM0MzsJaWYgKElTX0VSUihwbCkpCiYjNDM7CQlyZXR1cm4gUFRSX0VSUihwbCk7CiYjNDM7CiYjNDM7CXRwLSZndDtwaHlsaW5rID0gcGw7CiYjNDM7CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MzsKIHN0YXRpYyBpbnQgcnRsX2luaXRfb25lKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KQogewogCWNvbnN0IHN0cnVjdCBydGxfY2hpcF9pbmZvICpjaGlwOwpAQCAtNTY2Nyw2ICYjNDM7NjAzNSw3IEBAIHN0YXRpYyBpbnQgcnRsX2luaXRfb25lKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KQogCQkJCSAgICAgZXh0X3hpZF9zdHIsIHhpZCk7CiAJdHAtJmd0O21hY192ZXJzaW9uID0gY2hpcC0mZ3Q7bWFjX3ZlcnNpb247CiAJdHAtJmd0O2Z3X25hbWUgPSBjaGlwLSZndDtmd19uYW1lOwomIzQzOwl0cC0mZ3Q7c3BlZWQgPSBTUEVFRF9VTktOT1dOOwogCiAJLyogRGlzYWJsZSBBU1BNIEwxIGFzIHRoYXQgY2F1c2UgcmFuZG9tIGRldmljZSBzdG9wIHdvcmtpbmcKIAkgKiBwcm9ibGVtcyBhcyB3ZWxsIGFzIGZ1bGwgc3lzdGVtIGhhbmdzIGZvciBzb21lIFBDSWUgZGV2aWNlcyB1c2Vycy4KQEAgLTU2NzksMTIgJiM0Mzs2MDQ4LDcgQEAgc3RhdGljIGludCBydGxfaW5pdF9vbmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpCiAJfQogCXRwLSZndDthc3BtX21hbmFnZWFibGUgPSAhcmM7CiAKLQlpZiAocnRsX2lzXzgxMjUodHApKSB7Ci0JCXUxNiBkYXRhID0gcjgxNjhfbWFjX29jcF9yZWFkKHRwLCAweGQwMDYpOwotCi0JCWlmICgoZGF0YSAmYW1wOyAweGZmKSA9PSAweDA3KQotCQkJdHAtJmd0O3NmcF9tb2RlID0gdHJ1ZTsKLQl9CiYjNDM7CXRwLSZndDtzZnBfbW9kZSA9IHJ0bF9nZXRfc2ZwX21vZGUodHApOwogCiAJdHAtJmd0O2Rhc2hfdHlwZSA9IHJ0bF9nZXRfZGFzaF90eXBlKHRwKTsKIAl0cC0mZ3Q7ZGFzaF9lbmFibGVkID0gcnRsX2Rhc2hfaXNfZW5hYmxlZCh0cCk7CkBAIC01Nzg4LDEzICYjNDM7NjE1MiwyMyBAQCBzdGF0aWMgaW50IHJ0bF9pbml0X29uZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudCkKIAogCXBjaV9zZXRfZHJ2ZGF0YShwZGV2LCB0cCk7CiAKLQlyYyA9IHI4MTY5X21kaW9fcmVnaXN0ZXIodHApOwomIzQzOwlyYyA9IHJ0bF9pbml0X3BoeWxpbmsodHApOwogCWlmIChyYykKIAkJcmV0dXJuIHJjOwogCiYjNDM7CWlmICh0cC0mZ3Q7c2ZwX21vZGUgPT0gUlRMX1NGUF9OT05FKSB7CiYjNDM7CQlyYyA9IHI4MTY5X21kaW9fcmVnaXN0ZXIodHApOwomIzQzOwkJaWYgKHJjKSB7CiYjNDM7CQkJcGh5bGlua19kZXN0cm95KHRwLSZndDtwaHlsaW5rKTsKJiM0MzsJCQlyZXR1cm4gcmM7CiYjNDM7CQl9CiYjNDM7CX0KJiM0MzsKIAlyYyA9IHJlZ2lzdGVyX25ldGRldihkZXYpOwotCWlmIChyYykKJiM0MzsJaWYgKHJjKSB7CiYjNDM7CQlwaHlsaW5rX2Rlc3Ryb3kodHAtJmd0O3BoeWxpbmspOwogCQlyZXR1cm4gcmM7CiYjNDM7CX0KIAogCWlmIChJU19FTkFCTEVEKENPTkZJR19SODE2OV9MRURTKSkgewogCQlpZiAocnRsX2lzXzgxMjUodHApKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYyBiL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMKaW5kZXggNTlkZmUzNWFmYTU0ZmMuLmM0NTBlZTMzYjc1Y2MxIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMKQEAgLTE4MjgsNiAmIzQzOzE4MjgsNzIgQEAgaW50IHBoeWxpbmtfc2V0X2ZpeGVkX2xpbmsoc3RydWN0IHBoeWxpbmsgKnBsLAogfQogRVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19zZXRfZml4ZWRfbGluayk7CiAKJiM0MzsvKioKJiM0MzsgKiBwaHlsaW5rX3NldF9tYWNfY2FwYWJpbGl0aWVzKCkgLSBEeW5hbWljYWxseSB1cGRhdGUgTUFDIGNhcGFiaWxpdGllcwomIzQzOyAqIEBwbDogYSBwb2ludGVyIHRvIGEgJmFtcDtzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKCkKJiM0MzsgKiBAbWFjX2NhcGFiaWxpdGllczogdGhlIG5ldyBNQUMgY2FwYWJpbGl0aWVzIG1hc2sKJiM0MzsgKgomIzQzOyAqIFRoaXMgZnVuY3Rpb24gYWxsb3dzIGEgTUFDIGRyaXZlciB0byBkeW5hbWljYWxseSBjaGFuZ2UgaXRzIGNhcGFiaWxpdGllcywKJiM0MzsgKiBzdWNoIGFzIGxvc2luZy9nYWluaW5nIFBhdXNlIGZyYW1lIHN1cHBvcnQgYmFzZWQgb24gTVRVIHNpemUuCiYjNDM7ICogSXQgcmVjYWxjdWxhdGVzIHN1cHBvcnRlZCBsaW5rIG1vZGVzIGFuZCB0cmlnZ2VycyByZW5lZ290aWF0aW9uIGlmIG5lZWRlZC4KJiM0MzsgKi8KJiM0Mzt2b2lkIHBoeWxpbmtfc2V0X21hY19jYXBhYmlsaXRpZXMoc3RydWN0IHBoeWxpbmsgKnBsLCB1bnNpZ25lZCBsb25nIG1hY19jYXBhYmlsaXRpZXMpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgcGh5bGlua19saW5rX3N0YXRlICpjb25maWcgPSAmYW1wO3BsLSZndDtsaW5rX2NvbmZpZzsKJiM0MzsJdW5zaWduZWQgbG9uZyBjYXBzX2FkZGVkLCBjYXBzX3JlbW92ZWQ7CiYjNDM7CiYjNDM7CUFTU0VSVF9SVE5MKCk7CiYjNDM7CiYjNDM7CWNhcHNfYWRkZWQgPSBtYWNfY2FwYWJpbGl0aWVzICZhbXA7IH5wbC0mZ3Q7Y29uZmlnLSZndDttYWNfY2FwYWJpbGl0aWVzOwomIzQzOwljYXBzX3JlbW92ZWQgPSBwbC0mZ3Q7Y29uZmlnLSZndDttYWNfY2FwYWJpbGl0aWVzICZhbXA7IH5tYWNfY2FwYWJpbGl0aWVzOwomIzQzOwomIzQzOwlpZiAoIWNhcHNfYWRkZWQgJmFtcDsmYW1wOyAhY2Fwc19yZW1vdmVkKQomIzQzOwkJcmV0dXJuOwomIzQzOwomIzQzOwltdXRleF9sb2NrKCZhbXA7cGwtJmd0O3N0YXRlX211dGV4KTsKJiM0MzsKJiM0MzsJcGwtJmd0O2NvbmZpZy0mZ3Q7bWFjX2NhcGFiaWxpdGllcyA9IG1hY19jYXBhYmlsaXRpZXM7CiYjNDM7CiYjNDM7CWlmIChjYXBzX3JlbW92ZWQgJmFtcDsgTUFDX1NZTV9QQVVTRSkKJiM0MzsJCWxpbmttb2RlX2NsZWFyX2JpdChFVEhUT09MX0xJTktfTU9ERV9QYXVzZV9CSVQsIHBsLSZndDtzdXBwb3J0ZWQpOwomIzQzOwlpZiAoY2Fwc19yZW1vdmVkICZhbXA7IE1BQ19BU1lNX1BBVVNFKQomIzQzOwkJbGlua21vZGVfY2xlYXJfYml0KEVUSFRPT0xfTElOS19NT0RFX0FzeW1fUGF1c2VfQklULCBwbC0mZ3Q7c3VwcG9ydGVkKTsKJiM0MzsKJiM0MzsJbGlua21vZGVfYW5kKGNvbmZpZy0mZ3Q7YWR2ZXJ0aXNpbmcsIGNvbmZpZy0mZ3Q7YWR2ZXJ0aXNpbmcsIHBsLSZndDtzdXBwb3J0ZWQpOwomIzQzOwomIzQzOwlpZiAoY2Fwc19hZGRlZCAmYW1wOyBNQUNfU1lNX1BBVVNFKSB7CiYjNDM7CQlsaW5rbW9kZV9zZXRfYml0KEVUSFRPT0xfTElOS19NT0RFX1BhdXNlX0JJVCwgcGwtJmd0O3N1cHBvcnRlZCk7CiYjNDM7CQlpZiAocGwtJmd0O3BoeWRldiAmYW1wOyZhbXA7ICFwaHlsaW5rX3Rlc3QocGwtJmd0O3BoeWRldi0mZ3Q7c3VwcG9ydGVkLCBQYXVzZSkpCiYjNDM7CQkJbGlua21vZGVfY2xlYXJfYml0KEVUSFRPT0xfTElOS19NT0RFX1BhdXNlX0JJVCwgcGwtJmd0O3N1cHBvcnRlZCk7CiYjNDM7CX0KJiM0MzsJaWYgKGNhcHNfYWRkZWQgJmFtcDsgTUFDX0FTWU1fUEFVU0UpIHsKJiM0MzsJCWxpbmttb2RlX3NldF9iaXQoRVRIVE9PTF9MSU5LX01PREVfQXN5bV9QYXVzZV9CSVQsIHBsLSZndDtzdXBwb3J0ZWQpOwomIzQzOwkJaWYgKHBsLSZndDtwaHlkZXYgJmFtcDsmYW1wOyAhcGh5bGlua190ZXN0KHBsLSZndDtwaHlkZXYtJmd0O3N1cHBvcnRlZCwgQXN5bV9QYXVzZSkpCiYjNDM7CQkJbGlua21vZGVfY2xlYXJfYml0KEVUSFRPT0xfTElOS19NT0RFX0FzeW1fUGF1c2VfQklULCBwbC0mZ3Q7c3VwcG9ydGVkKTsKJiM0MzsJfQomIzQzOwomIzQzOwlsaW5rbW9kZV9hbmQoY29uZmlnLSZndDthZHZlcnRpc2luZywgY29uZmlnLSZndDthZHZlcnRpc2luZywgcGwtJmd0O3N1cHBvcnRlZCk7CiYjNDM7CiYjNDM7CWlmIChjb25maWctJmd0O3BhdXNlICZhbXA7IE1MT19QQVVTRV9BTikgewomIzQzOwkJaWYgKHBoeWxpbmtfdGVzdChwbC0mZ3Q7c3VwcG9ydGVkLCBQYXVzZSkpCiYjNDM7CQkJbGlua21vZGVfc2V0X2JpdChFVEhUT09MX0xJTktfTU9ERV9QYXVzZV9CSVQsIGNvbmZpZy0mZ3Q7YWR2ZXJ0aXNpbmcpOwomIzQzOwomIzQzOwkJaWYgKHBoeWxpbmtfdGVzdChwbC0mZ3Q7c3VwcG9ydGVkLCBBc3ltX1BhdXNlKSkKJiM0MzsJCQlsaW5rbW9kZV9zZXRfYml0KEVUSFRPT0xfTElOS19NT0RFX0FzeW1fUGF1c2VfQklULCBjb25maWctJmd0O2FkdmVydGlzaW5nKTsKJiM0MzsJfQomIzQzOwomIzQzOwlpZiAoIXBsLSZndDtwaHlkZXYpCiYjNDM7CQlwaHlsaW5rX2NoYW5nZV9pbmJhbmRfYWR2ZXJ0KHBsKTsKJiM0MzsKJiM0MzsJbXV0ZXhfdW5sb2NrKCZhbXA7cGwtJmd0O3N0YXRlX211dGV4KTsKJiM0MzsKJiM0MzsJaWYgKHBsLSZndDtwaHlkZXYpIHsKJiM0MzsJCWxpbmttb2RlX2NvcHkocGwtJmd0O3BoeWRldi0mZ3Q7YWR2ZXJ0aXNpbmcsIGNvbmZpZy0mZ3Q7YWR2ZXJ0aXNpbmcpOwomIzQzOwkJcGh5X3N0YXJ0X2FuZWcocGwtJmd0O3BoeWRldik7CiYjNDM7CX0KJiM0Mzt9CiYjNDM7RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19zZXRfbWFjX2NhcGFiaWxpdGllcyk7CiYjNDM7CiAvKioKICAqIHBoeWxpbmtfY3JlYXRlKCkgLSBjcmVhdGUgYSBwaHlsaW5rIGluc3RhbmNlCiAgKiBAY29uZmlnOiBhIHBvaW50ZXIgdG8gdGhlIHRhcmdldCAmYW1wO3N0cnVjdCBwaHlsaW5rX2NvbmZpZwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMgYi9kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYwppbmRleCBiNjVkMGY1ZmExYTAxNC4uNDcyMWJhMDcxY2JiZTQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jCkBAIC0xNyw3ICYjNDM7MTcsNiBAQAogI2luY2x1ZGUgJmx0O2xpbnV4L2RlbGF5LmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvY2xrLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvc3RyaW5nX2Nob2ljZXMuaCZndDsKLSNpbmNsdWRlICZsdDtuZXQvcGh5L3JlYWx0ZWtfcGh5LmgmZ3Q7CiAKICNpbmNsdWRlICYjMzQ7Li4vcGh5bGliLmgmIzM0OwogI2luY2x1ZGUgJiMzNDtyZWFsdGVrLmgmIzM0OwpAQCAtMjY0Niw0NSAmIzQzOzI2NDUsNiBAQCBzdGF0aWMgaXJxcmV0dXJuX3QgcnRsODIyMWJfaGFuZGxlX2ludGVycnVwdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KQogCXJldHVybiBJUlFfSEFORExFRDsKIH0KIAotc3RhdGljIGludCBydGxnZW5fc2ZwX2dldF9mZWF0dXJlcyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KQotewotCWxpbmttb2RlX3NldF9iaXQoRVRIVE9PTF9MSU5LX01PREVfMTAwMDBiYXNlVF9GdWxsX0JJVCwKLQkJCSBwaHlkZXYtJmd0O3N1cHBvcnRlZCk7Ci0KLQkvKiBzZXQgZGVmYXVsdCBtb2RlICovCi0JcGh5ZGV2LSZndDtzcGVlZCA9IFNQRUVEXzEwMDAwOwotCXBoeWRldi0mZ3Q7ZHVwbGV4ID0gRFVQTEVYX0ZVTEw7Ci0KLQlwaHlkZXYtJmd0O3BvcnQgPSBQT1JUX0ZJQlJFOwotCi0JcmV0dXJuIDA7Ci19Ci0KLXN0YXRpYyBpbnQgcnRsZ2VuX3NmcF9yZWFkX3N0YXR1cyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KQotewotCWludCB2YWwsIGVycjsKLQotCWVyciA9IGdlbnBoeV91cGRhdGVfbGluayhwaHlkZXYpOwotCWlmIChlcnIpCi0JCXJldHVybiBlcnI7Ci0KLQlpZiAoIXBoeWRldi0mZ3Q7bGluaykKLQkJcmV0dXJuIDA7Ci0KLQl2YWwgPSBwaHlfcmVhZChwaHlkZXYsIFJUTF9QSFlTUik7Ci0JaWYgKHZhbCAmbHQ7IDApCi0JCXJldHVybiB2YWw7Ci0KLQlydGxnZW5fZGVjb2RlX3BoeXNyKHBoeWRldiwgdmFsKTsKLQotCXJldHVybiAwOwotfQotCi1zdGF0aWMgaW50IHJ0bGdlbl9zZnBfY29uZmlnX2FuZWcoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldikKLXsKLQlyZXR1cm4gMDsKLX0KLQogc3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIHJlYWx0ZWtfZHJ2c1tdID0gewogCXsKIAkJUEhZX0lEX01BVENIX0VYQUNUKDB4MDAwMDgyMDEpLApAQCAtMjkzNCwyMCAmIzQzOzI4OTQsNiBAQCBzdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgcmVhbHRla19kcnZzW10gPSB7CiAJCS53cml0ZV9wYWdlCT0gcnRsODIxeF93cml0ZV9wYWdlLAogCQkucmVhZF9tbWQJPSBydGw4MjJ4X3JlYWRfbW1kLAogCQkud3JpdGVfbW1kCT0gcnRsODIyeF93cml0ZV9tbWQsCi0JfSwgewotCQlQSFlfSURfTUFUQ0hfRVhBQ1QoUEhZX0lEX1JUTF9EVU1NWV9TRlApLAotCQkubmFtZQkJPSAmIzM0O1JlYWx0ZWsgU0ZQIFBIWSBNb2RlJiMzNDssCi0JCS5mbGFncwkJPSBQSFlfSVNfSU5URVJOQUwsCi0JCS5wcm9iZQkJPSBydGw4MjJ4X3Byb2JlLAotCQkuZ2V0X2ZlYXR1cmVzCT0gcnRsZ2VuX3NmcF9nZXRfZmVhdHVyZXMsCi0JCS5jb25maWdfYW5lZwk9IHJ0bGdlbl9zZnBfY29uZmlnX2FuZWcsCi0JCS5yZWFkX3N0YXR1cwk9IHJ0bGdlbl9zZnBfcmVhZF9zdGF0dXMsCi0JCS5zdXNwZW5kCT0gZ2VucGh5X3N1c3BlbmQsCi0JCS5yZXN1bWUJCT0gcnRsZ2VuX3Jlc3VtZSwKLQkJLnJlYWRfcGFnZQk9IHJ0bDgyMXhfcmVhZF9wYWdlLAotCQkud3JpdGVfcGFnZQk9IHJ0bDgyMXhfd3JpdGVfcGFnZSwKLQkJLnJlYWRfbW1kCT0gcnRsODIyeF9yZWFkX21tZCwKLQkJLndyaXRlX21tZAk9IHJ0bDgyMnhfd3JpdGVfbW1kLAogCX0sIHsKIAkJUEhZX0lEX01BVENIX0VYQUNUKDB4MDAxY2NhZDApLAogCQkubmFtZQkJPSAmIzM0O1JUTDgyMjQgMi41R2JwcyBQSFkmIzM0OywKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvcGh5bGluay5oIGIvaW5jbHVkZS9saW51eC9waHlsaW5rLmgKaW5kZXggMmJjMGRiM2Q1MmFjOGQuLjU2NjQyYWI5NjFhNzUzIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaApAQCAtODQyLDQgJiM0Mzs4NDIsNiBAQCB2b2lkIHBoeWxpbmtfcmVwbGF5X2xpbmtfYmVnaW4oc3RydWN0IHBoeWxpbmsgKnBsKTsKIAogdm9pZCBwaHlsaW5rX3JlcGxheV9saW5rX2VuZChzdHJ1Y3QgcGh5bGluayAqcGwpOwogCiYjNDM7dm9pZCBwaHlsaW5rX3NldF9tYWNfY2FwYWJpbGl0aWVzKHN0cnVjdCBwaHlsaW5rICpwbCwgdW5zaWduZWQgbG9uZyBtYWNfY2FwYWJpbGl0aWVzKTsKJiM0MzsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvcGh5L3JlYWx0ZWtfcGh5LmggYi9pbmNsdWRlL25ldC9waHkvcmVhbHRla19waHkuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDY4M2JjMWIwNjU5Y2QuLjAwMDAwMDAwMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmV0L3BoeS9yZWFsdGVrX3BoeS5oCiYjNDM7JiM0MzsmIzQzOyAvZGV2L251bGwKQEAgLTEsNyAmIzQzOzAsMCBAQAotLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgKi8KLSNpZm5kZWYgX1JFQUxURUtfUEhZX0gKLSNkZWZpbmUgX1JFQUxURUtfUEhZX0gKLQotI2RlZmluZQlQSFlfSURfUlRMX0RVTU1ZX1NGUAkweDAwMWNjYmZmCi0KLSNlbmRpZiAvKiBfUkVBTFRFS19QSFlfSCAqLwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAxNjozNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDQ1OAoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDM2OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFJlYWNoYWJpbGl0eSBvZiBhIE5ldHdvcmsgRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoLiBJdCYjMzk7cyBhIHByZXR0eSBzdWJzdGFudGlhbCBjaGFuZ2UsIHJld3JpdGluZyBob3cgdGhlIFJlYWx0ZWsgcjgxNjkgZHJpdmVyIGludGVyYWN0cyB3aXRoIHRoZSBwaHlsaW5rIGZyYW1ld29yay4gU3BlY2lmaWNhbGx5LCBpdCYjMzk7cyBzd2l0Y2hpbmcgZnJvbSBkaXJlY3RseSB1c2luZyBgcGh5bGliYCB0byBgcGh5bGlua2AsIGFuZCB0aGVyZSYjMzk7cyBhIG5ldyBmdW5jdGlvbiBhZGRlZCB0byBgcGh5bGluay5jYCBjYWxsZWQgYHBoeWxpbmtfc2V0X21hY19jYXBhYmlsaXRpZXNgLiBUaGlzIGlzIGEgc2lnbmlmaWNhbnQgZnVuY3Rpb25hbCBzaGlmdCB3aXRoaW4gYSBjb3JlIG5ldHdvcmsgZHJpdmVyIGFuZCBpdHMgYXNzb2NpYXRlZCBmcmFtZXdvcmsuIE15IGltbWVkaWF0ZSBjb25jZXJuLCBhcyBhbHdheXMsIGlzIGhvdyBJIGNhbiB0ZXN0IHRoaXMgZWZmZWN0aXZlbHksIGVzcGVjaWFsbHkgaW4gYSBjb250cm9sbGVkIGVudmlyb25tZW50LgoKVGhlIHI4MTY5IGRyaXZlciB0YXJnZXRzIFJlYWx0ZWsgUENJIEV4cHJlc3MgR2lnYWJpdCBFdGhlcm5ldCBjb250cm9sbGVycy4gTXkgdGhvdWdodCBpcyBjYW4gSSB1c2UgYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBmb3IgdGhpcy4gQ2FuIEkgdXNlIFFFTVU/IEkga25vdyBRRU1VICpkb2VzKiBzdXBwb3J0IHRoZSBvbGRlciBgcnRsODEzOWAgMTAvMTAwIEV0aGVybmV0IGFkYXB0ZXIsIGJ1dCBub3QgdGhlIHI4MTY5IG91dCBvZiB0aGUgYm94LiBTbywgdGhlIHF1ZXN0aW9uIGlzIGhvdyBjYW4gSSB0ZXN0IHRoaXMgaW4gYSB2aXJ0dWFsIGVudmlyb25tZW50PyBJdCYjMzk7cyBhIFBDSSBkZXZpY2UsIHNvIFFFTVUgd291bGQgaGF2ZSB0byBlbXVsYXRlIHRoZSByODE2OSBoYXJkd2FyZS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGRvbiYjMzk7dCBjb25mdXNlIHJ0bDgxMzkgd2l0aCB0aGUgdGFyZ2V0LiBJZiB0aGUgZHJpdmVyIHJlbGllcyBvbiBhIFBDSSBidXMsIHRoZW4gdGhlIGRyaXZlciYjMzk7cyBgcHJvYmVgIGZ1bmN0aW9uIHdvbiYjMzk7dCBldmVuIGJlIGNhbGxlZCB1bmxlc3MgUUVNVSBwcm9wZXJseSBlbXVsYXRlcyB0aGUgZGV2aWNlLiBMZXQgbWUgZG91YmxlIGNoZWNrIGlmIFFFTVUgcHJvdmlkZXMgdGhhdCBlbXVsYXRpb24gc3BlY2lmaWNhbGx5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDE2OjM0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3I4MTY5JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZz04ND1jb25maWcgUjgxNjlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWctMTAwLVx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWc6MTAxOlx0ICB3aWxsIGJlIGNhbGxlZCByODE2OS4gIFRoaXMgaXMgcmVjb21tZW5kZWQuXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWctMTAyLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDE2OjM0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxMjk5CgkJCQkJCQlvdXRwdXQ6IDI1CgkJCQkJCQl0aG91Z2h0czogMjU4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IFN5emthbGxlciBQQ0kgRnV6emluZyBBc3Nlc3NtZW50KioKCk9rYXksIHNvIHRoZSBmaXJzdCB0aGluZyBJJiMzOTttIHRoaW5raW5nIGlzLCBjYW4gU3l6a2FsbGVyIGhpdCB0aGlzPyBNeSBpbW1lZGlhdGUgcmVmbGV4IGlzIHRvIGNoZWNrIGZvciBgc3l6X3BjaV9kZXZpY2VfYWRkYCBvciBzaW1pbGFyIGlmIGl0JiMzOTtzIGEgUENJIGRyaXZlciwgd2hpY2ggdXN1YWxseSBtZWFucyBpdCBuZWVkcyBhbiBlbXVsYXRlZCBQQ0kgZGV2aWNlIG9yIGB2aGNpYCBvciBgcGNpYCBmdXp6aW5nIHN1cHBvcnQuIEJ1dCB3YWl0LCBJIHJlbWVtYmVyIFN5emthbGxlciAqZG9lcyogaGF2ZSBhIGRlZGljYXRlZCBQQ0kgZnV6emVyIHRoYXQgY2FuIGluamVjdCBQQ0kgZGV2aWNlcywgd2hpY2ggaXMgZ3JlYXQuCgpSaWdodCwgYHI4MTY5YCBpcyBpbmRlZWQgYSBQQ0kgZHJpdmVyLiBUaGF0IG1lYW5zIFN5emthbGxlciAqc2hvdWxkKiBiZSBhYmxlIHRvIHRhY2tsZSB0aGlzIHVzaW5nIHRoZSBgc3l6X3BjaWAgcHNldWRvLWRldmljZSBvciBieSBpbmplY3RpbmcgUENJIGNvbmZpZyBzcGFjZSDigJMgY2xhc3NpYyBQQ0kgZnV6emluZyBhcHByb2FjaGVzLgoKQWN0dWFsbHksIGl0IGhpdHMgbWUgdGhhdCBTeXprYWxsZXImIzM5O3MgUENJIGZ1enplciBpcyBkZXNpZ25lZCB0byBmdXp6ICphbnkqIFBDSSBkcml2ZXIgYnkgZWZmZWN0aXZlbHkgc2ltdWxhdGluZyB0aGUgUENJIGRldmljZSBpdHNlbGYuIFRoaXMgaXMgcmVhbGx5IHByb21pc2luZy4KCk5vdywgSSYjMzk7bSBicm91Z2h0IHVwIHNob3J0IGJ5IHRoZSBwcm9tcHQgbWVudGlvbmluZyBjb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIGV2ZW4gd2l0aCBlbXVsYXRlZCBoYXJkd2FyZSBsaWtlIFVTQiBvciBNQUM4MDIxMS4gT2theSwgZG9lcyBTeXprYWxsZXImIzM5O3MgZW11bGF0aW9uIGFjdHVhbGx5IGNvdmVyIHRoYXQgYXNwZWN0PwoKWWVzLCB3YWl0LCBpdCBjbGlja3MuIFN5emthbGxlciYjMzk7cyBnb3QgYHN5el9wY2lgLCB3aGljaCAqYWJzb2x1dGVseSogY2FuIGVtdWxhdGUgUENJIGRldmljZXMuIFRoYXQmIzM5O3MgcHJlY2lzZWx5IHdoYXQgSSBuZWVkLgoKQWxyaWdodCwgZmluYWwgc3RlcDogbGV0JiMzOTtzIHZlcmlmeSBpZiBgcjgxNjlgIGlzICpjdXJyZW50bHkqIGJlaW5nIGZ1enplZCBieSBTeXprYWxsZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMTY6MzQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cjgxNjkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDUzNiBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuRG9jdW1lbnRhdGlvbi9jb3JlLWFwaS9kbWEtYXBpLnJzdD03NDE9ZXhhbXBsZSB3YXJuaW5nIG1lc3NhZ2UgbWF5IGxvb2sgbGlrZSB0aGlzOjpcbi0tXG5Eb2N1bWVudGF0aW9uL2NvcmUtYXBpL2RtYS1hcGkucnN0LTc0OC1cdHNpbmdsZV0gW3VubWFwcGVkIGFzIHBhZ2VdXG5Eb2N1bWVudGF0aW9uL2NvcmUtYXBpL2RtYS1hcGkucnN0Ojc0OTpcdE1vZHVsZXMgbGlua2VkIGluOiBuZnNkIGV4cG9ydGZzIGJyaWRnZSBzdHAgbGxjIHI4MTY5XG5Eb2N1bWVudGF0aW9uL2NvcmUtYXBpL2RtYS1hcGkucnN0LTc1MC1cdFBpZDogMCwgY29tbTogc3dhcHBlciBUYWludGVkOiBHICAgICAgICBXICAyLjYuMjgtZG1hdGVzdC0wOTI4OS1nOGJiOTljMCAjMVxuLS1cbkRvY3VtZW50YXRpb24vbGVkcy93ZWxsLWtub3duLWxlZHMudHh0PTEwNz1Hb29kOiAhbWRpby1tdXghbWRpb0AyIXN3aXRjaEAwIW1kaW86MDE6Z3JlZW46cmlnaHRcbkRvY3VtZW50YXRpb24vbGVkcy93ZWxsLWtub3duLWxlZHMudHh0OjEwODpHb29kOiByODE2OS0wLTIwMDowMDp5ZWxsb3c6Ym90dG9tXG5Eb2N1bWVudGF0aW9uL2xlZHMvd2VsbC1rbm93bi1sZWRzLnR4dC0xMDktXG4tLVxuTUFJTlRBSU5FUlM9MTM2PVM6XHRNYWludGFpbmVkXG5NQUlOVEFJTkVSUzoxMzc6RjpcdGRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjkqXG5NQUlOVEFJTkVSUy0xMzgtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9LY29uZmlnPTg0PWNvbmZpZyBSODE2OVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZy0xMDAtXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZzoxMDE6XHQgIHdpbGwgYmUgY2FsbGVkIHI4MTY5LiAgVGhpcyBpcyByZWNvbW1lbmRlZC5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZy0xMDItXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9NYWtlZmlsZT03PW9iai0kKENPTkZJR184MTM5VE9PKSAmIzQzOz0gODEzOXRvby5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL01ha2VmaWxlOjg6cjgxNjkteSAmIzQzOz0gcjgxNjlfbWFpbi5vIHI4MTY5X2Zpcm13YXJlLm8gcjgxNjlfcGh5X2NvbmZpZy5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL01ha2VmaWxlOjk6cjgxNjktJChDT05GSUdfUjgxNjlfTEVEUykgJiM0Mzs9IHI4MTY5X2xlZHMub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9NYWtlZmlsZToxMDpvYmotJChDT05GSUdfUjgxNjkpICYjNDM7PSByODE2OS5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL01ha2VmaWxlLTExLW9iai0kKENPTkZJR19SVEFTRSkgJiM0Mzs9IHJ0YXNlL1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjkuaC0xLS8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjkuaDoyOi8qIHI4MTY5Lmg6IFJlYWxUZWsgODE2OS84MTY4LzgxMDEgZXRoZXJuZXQgZHJpdmVyLlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OS5oLTMtICpcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5Lmg9ODA9c3RydWN0IHJ0bDgxNjlfcHJpdmF0ZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjkuaDo4MTpzdHJ1Y3QgcjgxNjlfbGVkX2NsYXNzZGV2O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OS5oLTgyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OS5oOjgzOnZvaWQgcjgxNjlfYXBwbHlfZmlybXdhcmUoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OS5oLTg0LXUxNiBydGw4MTY4aF8yX2dldF9hZGNfYmlhc19pb2Zmc2V0KHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjkuaD04NT11OCBydGw4MTY4ZF9lZnVzZV9yZWFkKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCBpbnQgcmVnX2FkZHIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OS5oOjg2OnZvaWQgcjgxNjlfaHdfcGh5X2NvbmZpZyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjkuaC04Ny1cdFx0XHQgZW51bSBtYWNfdmVyc2lvbiB2ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OS5oLTg4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OS5oOjg5OnZvaWQgcjgxNjlfZ2V0X2xlZF9uYW1lKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCBpbnQgaWR4LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OS5oLTkwLVx0XHRcdGNoYXIgKmJ1ZiwgaW50IGJ1Zl9sZW4pO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjkuaD05Mj1pbnQgcnRsODE2OF9sZWRfbW9kX2N0cmwoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIHUxNiBtYXNrLCB1MTYgdmFsKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjkuaDo5MzpzdHJ1Y3QgcjgxNjlfbGVkX2NsYXNzZGV2ICpydGw4MTY4X2luaXRfbGVkcyhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5LmgtOTQtaW50IHJ0bDgxMjVfZ2V0X2xlZF9tb2RlKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCBpbnQgaW5kZXgpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OS5oPTk1PWludCBydGw4MTI1X3NldF9sZWRfbW9kZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgaW50IGluZGV4LCB1MTYgbW9kZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5Lmg6OTY6c3RydWN0IHI4MTY5X2xlZF9jbGFzc2RldiAqcnRsODEyNV9pbml0X2xlZHMoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OS5oOjk3OnZvaWQgcjgxNjlfcmVtb3ZlX2xlZHMoc3RydWN0IHI4MTY5X2xlZF9jbGFzc2RldiAqbGVkcyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9maXJtd2FyZS5jLTEtLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9maXJtd2FyZS5jOjI6LyogcjgxNjlfZmlybXdhcmUuYzogUmVhbFRlayA4MTY5LzgxNjgvODEwMSBldGhlcm5ldCBkcml2ZXIuXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2Zpcm13YXJlLmMtMy0gKlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfZmlybXdhcmUuYy0xMy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfZmlybXdhcmUuYzoxNDojaW5jbHVkZSBcJiMzNDtyODE2OV9maXJtd2FyZS5oXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2Zpcm13YXJlLmMtMTUtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9maXJtd2FyZS5oLTEtLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9maXJtd2FyZS5oOjI6LyogcjgxNjlfZmlybXdhcmUuaDogUmVhbFRlayA4MTY5LzgxNjgvODEwMSBldGhlcm5ldCBkcml2ZXIuXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2Zpcm13YXJlLmgtMy0gKlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jLTEtLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmM6MjovKiByODE2OV9sZWRzLmM6IFJlYWx0ZWsgODE2OS84MTY4LzgxMDEvODEyNSBldGhlcm5ldCBkcml2ZXIuXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYy0zLSAqXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmMtMTItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYzoxMzojaW5jbHVkZSBcJiMzNDtyODE2OS5oXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYy0xNC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYy0yOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jOjMwOnN0cnVjdCByODE2OV9sZWRfY2xhc3NkZXYge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmMtMzEtXHRzdHJ1Y3QgbGVkX2NsYXNzZGV2IGxlZDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYy0zNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jOjM2OiNkZWZpbmUgbGNkZXZfdG9fcjgxNjlfbGRldihsY2RldikgY29udGFpbmVyX29mKGxjZGV2LCBzdHJ1Y3QgcjgxNjlfbGVkX2NsYXNzZGV2LCBsZWQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYy0zNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jOjM4OnN0YXRpYyBib29sIHI4MTY5X3RyaWdnZXJfbW9kZV9pc192YWxpZCh1bnNpZ25lZCBsb25nIGZsYWdzKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmMtMzkte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jPTUzPXN0YXRpYyBpbnQgcnRsODE2OF9sZWRfaHdfY29udHJvbF9pc19zdXBwb3J0ZWQoc3RydWN0IGxlZF9jbGFzc2RldiAqbGVkX2NkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmMtNTUte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmM6NTY6XHRzdHJ1Y3QgcjgxNjlfbGVkX2NsYXNzZGV2ICpsZGV2ID0gbGNkZXZfdG9fcjgxNjlfbGRldihsZWRfY2Rldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYy01Ny1cdHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwID0gbmV0ZGV2X3ByaXYobGRldi1cdTAwM2VuZGV2KTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYy01OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jOjYwOlx0aWYgKCFyODE2OV90cmlnZ2VyX21vZGVfaXNfdmFsaWQoZmxhZ3MpKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYy02MS1cdFx0LyogU3dpdGNoIExFRCBvZmYgdG8gaW5kaWNhdGUgdGhhdCBtb2RlIGlzbiYjMzk7dCBzdXBwb3J0ZWQgKi9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYz02OT1zdGF0aWMgaW50IHJ0bDgxNjhfbGVkX2h3X2NvbnRyb2xfc2V0KHN0cnVjdCBsZWRfY2xhc3NkZXYgKmxlZF9jZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jLTcxLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jOjcyOlx0c3RydWN0IHI4MTY5X2xlZF9jbGFzc2RldiAqbGRldiA9IGxjZGV2X3RvX3I4MTY5X2xkZXYobGVkX2NkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmMtNzMtXHRzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCA9IG5ldGRldl9wcml2KGxkZXYtXHUwMDNlbmRldik7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmM9ODk9c3RhdGljIGludCBydGw4MTY4X2xlZF9od19jb250cm9sX2dldChzdHJ1Y3QgbGVkX2NsYXNzZGV2ICpsZWRfY2Rldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYy05MS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYzo5MjpcdHN0cnVjdCByODE2OV9sZWRfY2xhc3NkZXYgKmxkZXYgPSBsY2Rldl90b19yODE2OV9sZGV2KGxlZF9jZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jLTkzLVx0c3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAgPSBuZXRkZXZfcHJpdihsZGV2LVx1MDAzZW5kZXYpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jPTEyMT1zdGF0aWMgc3RydWN0IGRldmljZSAqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYzoxMjI6XHRyODE2OV9sZWRfaHdfY29udHJvbF9nZXRfZGV2aWNlKHN0cnVjdCBsZWRfY2xhc3NkZXYgKmxlZF9jZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmMtMTIzLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jOjEyNDpcdHN0cnVjdCByODE2OV9sZWRfY2xhc3NkZXYgKmxkZXYgPSBsY2Rldl90b19yODE2OV9sZGV2KGxlZF9jZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jLTEyNS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYy0xMjgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYzoxMjk6c3RhdGljIHZvaWQgcnRsODE2OF9zZXR1cF9sZGV2KHN0cnVjdCByODE2OV9sZWRfY2xhc3NkZXYgKmxkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYy0xMzAtXHRcdFx0ICAgICAgIHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCBpbnQgaW5kZXgpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmMtMTM4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmM6MTM5Olx0cjgxNjlfZ2V0X2xlZF9uYW1lKHRwLCBpbmRleCwgbGVkX25hbWUsIExFRF9NQVhfTkFNRV9TSVpFKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jLTE0MC1cdGxlZF9jZGV2LVx1MDAzZW5hbWUgPSBsZWRfbmFtZTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYy0xNDUtXHRsZWRfY2Rldi1cdTAwM2Vod19jb250cm9sX2dldCA9IHJ0bDgxNjhfbGVkX2h3X2NvbnRyb2xfZ2V0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmM6MTQ2Olx0bGVkX2NkZXYtXHUwMDNlaHdfY29udHJvbF9nZXRfZGV2aWNlID0gcjgxNjlfbGVkX2h3X2NvbnRyb2xfZ2V0X2RldmljZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jLTE0Ny1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYy0xNTEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYzoxNTI6c3RydWN0IHI4MTY5X2xlZF9jbGFzc2RldiAqcnRsODE2OF9pbml0X2xlZHMoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYy0xNTMte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmM6MTU0Olx0c3RydWN0IHI4MTY5X2xlZF9jbGFzc2RldiAqbGVkcztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jLTE1NS1cdGludCBpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jPTE2Nz1zdGF0aWMgaW50IHJ0bDgxMjVfbGVkX2h3X2NvbnRyb2xfaXNfc3VwcG9ydGVkKHN0cnVjdCBsZWRfY2xhc3NkZXYgKmxlZF9jZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jLTE2OS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYzoxNzA6XHRzdHJ1Y3QgcjgxNjlfbGVkX2NsYXNzZGV2ICpsZGV2ID0gbGNkZXZfdG9fcjgxNjlfbGRldihsZWRfY2Rldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYy0xNzEtXHRzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCA9IG5ldGRldl9wcml2KGxkZXYtXHUwMDNlbmRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYy0xNzItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYzoxNzM6XHRpZiAoIXI4MTY5X3RyaWdnZXJfbW9kZV9pc192YWxpZChmbGFncykpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jLTE3NC1cdFx0LyogU3dpdGNoIExFRCBvZmYgdG8gaW5kaWNhdGUgdGhhdCBtb2RlIGlzbiYjMzk7dCBzdXBwb3J0ZWQgKi9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYz0xODI9c3RhdGljIGludCBydGw4MTI1X2xlZF9od19jb250cm9sX3NldChzdHJ1Y3QgbGVkX2NsYXNzZGV2ICpsZWRfY2Rldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYy0xODQte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmM6MTg1Olx0c3RydWN0IHI4MTY5X2xlZF9jbGFzc2RldiAqbGRldiA9IGxjZGV2X3RvX3I4MTY5X2xkZXYobGVkX2NkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmMtMTg2LVx0c3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAgPSBuZXRkZXZfcHJpdihsZGV2LVx1MDAzZW5kZXYpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jPTIwMz1zdGF0aWMgaW50IHJ0bDgxMjVfbGVkX2h3X2NvbnRyb2xfZ2V0KHN0cnVjdCBsZWRfY2xhc3NkZXYgKmxlZF9jZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jLTIwNS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYzoyMDY6XHRzdHJ1Y3QgcjgxNjlfbGVkX2NsYXNzZGV2ICpsZGV2ID0gbGNkZXZfdG9fcjgxNjlfbGRldihsZWRfY2Rldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYy0yMDctXHRzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCA9IG5ldGRldl9wcml2KGxkZXYtXHUwMDNlbmRldik7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmMtMjI3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmM6MjI4OnN0YXRpYyB2b2lkIHJ0bDgxMjVfc2V0dXBfbGVkX2xkZXYoc3RydWN0IHI4MTY5X2xlZF9jbGFzc2RldiAqbGRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jLTIyOS1cdFx0XHRcdCAgIHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCBpbnQgaW5kZXgpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmMtMjM3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmM6MjM4Olx0cjgxNjlfZ2V0X2xlZF9uYW1lKHRwLCBpbmRleCwgbGVkX25hbWUsIExFRF9NQVhfTkFNRV9TSVpFKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jLTIzOS1cdGxlZF9jZGV2LVx1MDAzZW5hbWUgPSBsZWRfbmFtZTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYy0yNDQtXHRsZWRfY2Rldi1cdTAwM2Vod19jb250cm9sX2dldCA9IHJ0bDgxMjVfbGVkX2h3X2NvbnRyb2xfZ2V0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmM6MjQ1Olx0bGVkX2NkZXYtXHUwMDNlaHdfY29udHJvbF9nZXRfZGV2aWNlID0gcjgxNjlfbGVkX2h3X2NvbnRyb2xfZ2V0X2RldmljZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jLTI0Ni1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYy0yNTAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYzoyNTE6c3RydWN0IHI4MTY5X2xlZF9jbGFzc2RldiAqcnRsODEyNV9pbml0X2xlZHMoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYy0yNTIte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmM6MjUzOlx0c3RydWN0IHI4MTY5X2xlZF9jbGFzc2RldiAqbGVkcztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jLTI1NC1cdGludCBpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jLTI2NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jOjI2Njp2b2lkIHI4MTY5X3JlbW92ZV9sZWRzKHN0cnVjdCByODE2OV9sZWRfY2xhc3NkZXYgKmxlZHMpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYy0yNjcte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jLTI3MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jOjI3MTpcdGZvciAoc3RydWN0IHI4MTY5X2xlZF9jbGFzc2RldiAqbCA9IGxlZHM7IGwtXHUwMDNlbmRldjsgbCYjNDM7JiM0MzspXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYy0yNzItXHRcdGxlZF9jbGFzc2Rldl91bnJlZ2lzdGVyKFx1MDAyNmwtXHUwMDNlbGVkKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0yLS8qXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzozOiAqIHI4MTY5LmM6IFJlYWxUZWsgODE2OS84MTY4LzgxMDEgZXRoZXJuZXQgZHJpdmVyLlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNC0gKlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTM1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MzY6I2luY2x1ZGUgXCYjMzQ7cjgxNjkuaFwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6Mzc6I2luY2x1ZGUgXCYjMzQ7cjgxNjlfZmlybXdhcmUuaFwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMzgtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM9NzYxPXN0cnVjdCBydGw4MTY5X3ByaXZhdGUge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTgwNC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjgwNTpcdHN0cnVjdCByODE2OV9sZWRfY2xhc3NkZXYgKmxlZHM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy04MDYtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM9ODE1PXR5cGVkZWYgdm9pZCAoKnJ0bF9nZW5lcmljX2ZjdCkoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtODE2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6ODE3Ok1PRFVMRV9BVVRIT1IoXCYjMzQ7UmVhbHRlayBhbmQgdGhlIExpbnV4IHI4MTY5IGNyZXcgXHUwMDNjbmV0ZGV2QHZnZXIua2VybmVsLm9yZ1x1MDAzZVwmIzM0Oyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy04MTgtTU9EVUxFX0RFU0NSSVBUSU9OKFwmIzM0O1JlYWxUZWsgUlRMLTgxNjkgR2lnYWJpdCBFdGhlcm5ldCBkcml2ZXJcJiMzNDspO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jPTg4MD1zdGF0aWMgdm9pZCBydGxfbW9kX2NvbmZpZzUoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIHU4IGNsZWFyLCB1OCBzZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtODg3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6ODg4OnN0YXRpYyB2b2lkIHI4MTY5X21vZF9yZWc4X2NvbmQoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIGludCByZWcsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy04ODktXHRcdFx0XHR1OCBiaXRzLCBib29sIGNvbmQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM9MTAzNz1pbnQgcnRsODEyNV9nZXRfbGVkX21vZGUoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIGludCBpbmRleClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xMDUzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MTA1NDp2b2lkIHI4MTY5X2dldF9sZWRfbmFtZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgaW50IGlkeCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTEwNTUtXHRcdFx0Y2hhciAqYnVmLCBpbnQgYnVmX2xlbilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYz0xMzg3PURFQ0xBUkVfUlRMX0NPTkQocnRsX3BoeWFyX2NvbmQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTM5MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjEzOTI6c3RhdGljIHZvaWQgcjgxNjlfbWRpb193cml0ZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgaW50IHJlZywgaW50IHZhbHVlKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTM5My17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTQwMy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjE0MDQ6c3RhdGljIGludCByODE2OV9tZGlvX3JlYWQoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIGludCByZWcpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xNDA1LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYz0xNDM5PXN0YXRpYyB2b2lkIHI4MTY4ZHBfMl9tZGlvX3dyaXRlKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCBpbnQgcmVnLCBpbnQgdmFsdWUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTQ0Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjE0NDM6XHRyODE2OV9tZGlvX3dyaXRlKHRwLCByZWcsIHZhbHVlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTE0NDQtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM9MTQ0OD1zdGF0aWMgaW50IHI4MTY4ZHBfMl9tZGlvX3JlYWQoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIGludCByZWcpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTQ1Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjE0NTg6XHR2YWx1ZSA9IHI4MTY5X21kaW9fcmVhZCh0cCwgcmVnKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTE0NTktXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM9MTQ2NT1zdGF0aWMgdm9pZCBydGxfd3JpdGVwaHkoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIGludCBsb2NhdGlvbiwgaW50IHZhbClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xNDc1LVx0ZGVmYXVsdDpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjE0NzY6XHRcdHI4MTY5X21kaW9fd3JpdGUodHAsIGxvY2F0aW9uLCB2YWwpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTQ3Ny1cdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM9MTQ4MT1zdGF0aWMgaW50IHJ0bF9yZWFkcGh5KHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCBpbnQgbG9jYXRpb24pXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTQ4OS1cdGRlZmF1bHQ6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoxNDkwOlx0XHRyZXR1cm4gcjgxNjlfbWRpb19yZWFkKHRwLCBsb2NhdGlvbik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xNDkxLVx0fVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jPTE3MTA9c3RhdGljIHZvaWQgcnRsX3NldF9kM19wbGxfZG93bihzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgYm9vbCBlbmFibGUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTcxOC1cdGNhc2UgUlRMX0dJR0FfTUFDX1ZFUl84MDpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjE3MTk6XHRcdHI4MTY5X21vZF9yZWc4X2NvbmQodHAsIFBNQ0gsIEQzX05PX1BMTF9ET1dOLCB0cnVlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTE3MjAtXHRcdGJyZWFrO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTcyMS1cdGRlZmF1bHQ6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoxNzIyOlx0XHRyODE2OV9tb2RfcmVnOF9jb25kKHRwLCBQTUNILCBEM0hPVF9OT19QTExfRE9XTiwgdHJ1ZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoxNzIzOlx0XHRyODE2OV9tb2RfcmVnOF9jb25kKHRwLCBQTUNILCBEM0NPTERfTk9fUExMX0RPV04sICFlbmFibGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTcyNC1cdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM9MTgzMD1zdGF0aWMgdm9pZCBfX3J0bDgxNjlfc2V0X3dvbChzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgdTMyIHdvbG9wdHMpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTg0NC1cdH0gZWxzZSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoxODQ1Olx0XHRyODE2OV9tb2RfcmVnOF9jb25kKHRwLCBDb25maWczLCBNYWdpY1BhY2tldCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTE4NDYtXHRcdFx0XHQgICAgd29sb3B0cyBcdTAwMjYgV0FLRV9NQUdJQyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTg0OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjE4NDk6XHRyODE2OV9tb2RfcmVnOF9jb25kKHRwLCBDb25maWczLCBMaW5rVXAsIHdvbG9wdHMgXHUwMDI2IFdBS0VfUEhZKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTE4NTAtXHRpZiAocnRsX2lzXzgxMjUodHApKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTE4NTItXHRcdFx0XHQgICAgIHdvbG9wdHMgXHUwMDI2IFdBS0VfUEhZID8gMHgxMyA6IDApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MTg1MzpcdHI4MTY5X21vZF9yZWc4X2NvbmQodHAsIENvbmZpZzUsIFVXRiwgd29sb3B0cyBcdTAwMjYgV0FLRV9VQ0FTVCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoxODU0Olx0cjgxNjlfbW9kX3JlZzhfY29uZCh0cCwgQ29uZmlnNSwgQldGLCB3b2xvcHRzIFx1MDAyNiBXQUtFX0JDQVNUKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjE4NTU6XHRyODE2OV9tb2RfcmVnOF9jb25kKHRwLCBDb25maWc1LCBNV0YsIHdvbG9wdHMgXHUwMDI2IFdBS0VfTUNBU1QpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MTg1NjpcdHI4MTY5X21vZF9yZWc4X2NvbmQodHAsIENvbmZpZzUsIExhbldha2UsIHdvbG9wdHMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTg1Ny1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xODU5LVx0Y2FzZSBSVExfR0lHQV9NQUNfVkVSXzAyIC4uLiBSVExfR0lHQV9NQUNfVkVSXzA2OlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MTg2MDpcdFx0cjgxNjlfbW9kX3JlZzhfY29uZCh0cCwgQ29uZmlnMSwgUE1FbmFibGUsIHdvbG9wdHMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTg2MS1cdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTg2NC1cdGNhc2UgUlRMX0dJR0FfTUFDX1ZFUl8zOSAuLi4gUlRMX0dJR0FfTUFDX1ZFUl9MQVNUOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MTg2NTpcdFx0cjgxNjlfbW9kX3JlZzhfY29uZCh0cCwgQ29uZmlnMiwgUE1FX1NJR05BTCwgd29sb3B0cyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xODY2LVx0XHRicmVhaztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYz0yMzI2PXN0YXRpYyB2b2lkIHJ0bF9zZXRfZWVlX3R4aWRsZV90aW1lcihzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0yMzQ0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MjM0NTpzdGF0aWMgdW5zaWduZWQgaW50IHI4MTY5X2dldF90eF9scGlfdGltZXJfdXMoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0yMzQ2LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYz0yMzU3PXN0YXRpYyBpbnQgcnRsODE2OV9nZXRfZWVlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBldGh0b29sX2tlZWUgKmRhdGEpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMjM2OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjIzNjk6XHRkYXRhLVx1MDAzZXR4X2xwaV90aW1lciA9IHI4MTY5X2dldF90eF9scGlfdGltZXJfdXModHApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMjM3MC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYz0yNTc2PXN0YXRpYyB2b2lkIHJ0bF9yZWxlYXNlX2Zpcm13YXJlKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTI1ODQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoyNTg1OnZvaWQgcjgxNjlfYXBwbHlfZmlybXdhcmUoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0yNTg2LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYz0yNjM0PXN0YXRpYyB2b2lkIHJ0bDgxNjlfaW5pdF9waHkoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMjYzNy1cdHBoeV9yZXN1bWUodHAtXHUwMDNlcGh5ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjI2Mzg6XHRyODE2OV9od19waHlfY29uZmlnKHRwLCB0cC1cdTAwM2VwaHlkZXYsIHRwLVx1MDAzZW1hY192ZXJzaW9uKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTI2MzktXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM9MjcyMT1zdGF0aWMgdm9pZCBydGxfanVtYm9fY29uZmlnKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTI3MzItXHRjYXNlIFJUTF9HSUdBX01BQ19WRVJfMTc6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoyNzMzOlx0XHRyODE2OV9tb2RfcmVnOF9jb25kKHRwLCBDb25maWc0LCBCSVQoMCksIGp1bWJvKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTI3MzQtXHRcdGJyZWFrO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMjczNS1cdGNhc2UgUlRMX0dJR0FfTUFDX1ZFUl8xOCAuLi4gUlRMX0dJR0FfTUFDX1ZFUl8yNjpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjI3MzY6XHRcdHI4MTY5X21vZF9yZWc4X2NvbmQodHAsIENvbmZpZzMsIEp1bWJvX0VuMCwganVtYm8pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MjczNzpcdFx0cjgxNjlfbW9kX3JlZzhfY29uZCh0cCwgQ29uZmlnNCwgSnVtYm9fRW4xLCBqdW1ibyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0yNzM4LVx0XHRicmVhaztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTI3MzktXHRjYXNlIFJUTF9HSUdBX01BQ19WRVJfMjg6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoyNzQwOlx0XHRyODE2OV9tb2RfcmVnOF9jb25kKHRwLCBDb25maWczLCBKdW1ib19FbjAsIGp1bWJvKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTI3NDEtXHRcdGJyZWFrO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTI3NDMtXHRcdFJUTF9XOCh0cCwgTWF4VHhQYWNrZXRTaXplLCBqdW1ibyA/IDB4MjQgOiAweDNmKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjI3NDQ6XHRcdHI4MTY5X21vZF9yZWc4X2NvbmQodHAsIENvbmZpZzMsIEp1bWJvX0VuMCwganVtYm8pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6Mjc0NTpcdFx0cjgxNjlfbW9kX3JlZzhfY29uZCh0cCwgQ29uZmlnNCwgQklUKDApLCBqdW1ibyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0yNzQ2LVx0XHRicmVhaztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYz0zODAxPXN0YXRpYyB2b2lkIHJ0bF9od19zdGFydF84MTE3KHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTM4NjAtXHQvKiBmaXJtd2FyZSBpcyBmb3IgTUFDIG9ubHkgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjM4NjE6XHRyODE2OV9hcHBseV9maXJtd2FyZSh0cCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0zODYyLX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYz01MDk1PXN0YXRpYyB2b2lkIHJ0bF9lbmFibGVfdHhfbHBpKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCBib29sIGVuYWJsZSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy01MTI2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6NTEyNzpzdGF0aWMgaW50IHI4MTY5X3BoeV9jb25uZWN0KHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNTEyOC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM9NTIxNz1zdGF0aWMgaW50IHJ0bF9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNTI1MS1cdGlmICh0cC1cdTAwM2VwaHlkZXYpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjUyNTI6XHRcdHJldHZhbCA9IHI4MTY5X3BoeV9jb25uZWN0KHRwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTUyNTMtXHRcdGlmIChyZXR2YWwpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM9NTQxOT1zdGF0aWMgdm9pZCBydGxfcmVtb3ZlX29uZShzdHJ1Y3QgcGNpX2RldiAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy01NDI4LVx0aWYgKElTX0VOQUJMRUQoQ09ORklHX1I4MTY5X0xFRFMpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6NTQyOTpcdFx0cjgxNjlfcmVtb3ZlX2xlZHModHAtXHUwMDNlbGVkcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy01NDMwLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jPTU1MTM9c3RhdGljIHZvaWQgcjgxNjhnX3dhaXRfbGxfc2hhcmVfZmlmb19yZWFkeShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy01NTE3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6NTUxODpzdGF0aWMgaW50IHI4MTY5X21kaW9fcmVhZF9yZWcoc3RydWN0IG1paV9idXMgKm1paV9idXMsIGludCBwaHlhZGRyLCBpbnQgcGh5cmVnKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNTUxOS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNTUyNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjU1Mjg6c3RhdGljIGludCByODE2OV9tZGlvX3dyaXRlX3JlZyhzdHJ1Y3QgbWlpX2J1cyAqbWlpX2J1cywgaW50IHBoeWFkZHIsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy01NTI5LVx0XHRcdFx0aW50IHBoeXJlZywgdTE2IHZhbClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy01NTQwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6NTU0MTpzdGF0aWMgaW50IHI4MTY5X21kaW9fcmVhZF9yZWdfYzQ1KHN0cnVjdCBtaWlfYnVzICptaWlfYnVzLCBpbnQgYWRkcixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTU1NDItXHRcdFx0XHQgICBpbnQgZGV2bnVtLCBpbnQgcmVnbnVtKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTU1NTQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzo1NTU1OnN0YXRpYyBpbnQgcjgxNjlfbWRpb193cml0ZV9yZWdfYzQ1KHN0cnVjdCBtaWlfYnVzICptaWlfYnVzLCBpbnQgYWRkcixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTU1NTYtXHRcdFx0XHQgICAgaW50IGRldm51bSwgaW50IHJlZ251bSwgdTE2IHZhbClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy01NTY3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6NTU2ODpzdGF0aWMgaW50IHI4MTY5X21kaW9fcmVnaXN0ZXIoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy01NTY5LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy01NTgwLVx0ICAgIHRwLVx1MDAzZW1hY192ZXJzaW9uID09IFJUTF9HSUdBX01BQ19WRVJfMjYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzo1NTgxOlx0XHRyODE2OV9tZGlvX3dyaXRlKHRwLCAweDFmLCAwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTU1ODItXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNTU4Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjU1ODc6XHRuZXdfYnVzLVx1MDAzZW5hbWUgPSBcJiMzNDtyODE2OVwmIzM0OztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTU1ODgtXHRuZXdfYnVzLVx1MDAzZXByaXYgPSB0cDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy01NTkxLVx0bmV3X2J1cy1cdTAwM2VwaHlfbWFzayA9IEdFTk1BU0soMzEsIDEpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6NTU5MjpcdHNucHJpbnRmKG5ld19idXMtXHUwMDNlaWQsIE1JSV9CVVNfSURfU0laRSwgXCYjMzQ7cjgxNjktJXgtJXhcJiMzNDssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy01NTkzLVx0XHQgcGNpX2RvbWFpbl9ucihwZGV2LVx1MDAzZWJ1cyksIHBjaV9kZXZfaWQocGRldikpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNTU5NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjU1OTU6XHRuZXdfYnVzLVx1MDAzZXJlYWQgPSByODE2OV9tZGlvX3JlYWRfcmVnO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6NTU5NjpcdG5ld19idXMtXHUwMDNld3JpdGUgPSByODE2OV9tZGlvX3dyaXRlX3JlZztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTU1OTctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy01NTk4LVx0aWYgKHRwLVx1MDAzZW1hY192ZXJzaW9uIFx1MDAzZT0gUlRMX0dJR0FfTUFDX1ZFUl80MCkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6NTU5OTpcdFx0bmV3X2J1cy1cdTAwM2VyZWFkX2M0NSA9IHI4MTY5X21kaW9fcmVhZF9yZWdfYzQ1O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6NTYwMDpcdFx0bmV3X2J1cy1cdTAwM2V3cml0ZV9jNDUgPSByODE2OV9tZGlvX3dyaXRlX3JlZ19jNDU7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy01NjAxLVx0fVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jPTU4Nzk9c3RhdGljIHVuc2lnbmVkIGxvbmcgcnRsODE2OV9nZXRfbHBpX2NhcHMoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNTkwMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjU5MDE6c3RhdGljIGNvbnN0IHN0cnVjdCBwaHlsaW5rX3Bjc19vcHMgcjgxNjlfcGNzX29wcyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTU5MDItXHQucGNzX3ZhbGlkYXRlID0gcnRsODE2OV9wY3NfdmFsaWRhdGUsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM9NTkwOD1zdGF0aWMgaW50IHJ0bF9pbml0X3BoeWxpbmsoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNTkyMC1cdGNhc2UgUlRMX1NGUF84MTY4X0FGOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6NTkyMTpcdFx0dHAtXHUwMDNlcGNzLm9wcyA9IFx1MDAyNnI4MTY5X3Bjc19vcHM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy01OTIyLVx0XHR0cC1cdTAwM2VwaHlsaW5rX2NvbmZpZy5kZWZhdWx0X2FuX2luYmFuZCA9IHRydWU7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNTkyNi1cdGNhc2UgUlRMX1NGUF84MTI3X0FURjpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjU5Mjc6XHRcdHRwLVx1MDAzZXBjcy5vcHMgPSBcdTAwMjZyODE2OV9wY3Nfb3BzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNTkyOC1cdFx0cGh5X21vZGUgPSBQSFlfSU5URVJGQUNFX01PREVfMTBHQkFTRVI7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM9NTk3MD1zdGF0aWMgaW50IHJ0bF9pbml0X29uZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy02MDMzLVx0XHRyZXR1cm4gZGV2X2Vycl9wcm9iZShcdTAwMjZwZGV2LVx1MDAzZWRldiwgLUVOT0RFVixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjYwMzQ6XHRcdFx0XHQgICAgIFwmIzM0O3Vua25vd24gY2hpcCAlc1hJRCAleCwgY29udGFjdCByODE2OSBtYWludGFpbmVycyAoc2VlIE1BSU5UQUlORVJTIGZpbGUpXFxuXCYjMzQ7LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNjAzNS1cdFx0XHRcdCAgICAgZXh0X3hpZF9zdHIsIHhpZCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNjE1OS1cdGlmICh0cC1cdTAwM2VzZnBfbW9kZSA9PSBSVExfU0ZQX05PTkUpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjYxNjA6XHRcdHJjID0gcjgxNjlfbWRpb19yZWdpc3Rlcih0cCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy02MTYxLVx0XHRpZiAocmMpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X3BoeV9jb25maWcuYy0yLS8qXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X3BoeV9jb25maWcuYzozOiAqIHI4MTY5X3BoeV9jb25maWcuYzogUmVhbFRlayA4MTY5LzgxNjgvODEwMSBldGhlcm5ldCBkcml2ZXIuXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X3BoeV9jb25maWcuYy00LSAqXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9waHlfY29uZmlnLmMtMTQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X3BoeV9jb25maWcuYzoxNTojaW5jbHVkZSBcJiMzNDtyODE2OS5oXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X3BoeV9jb25maWcuYy0xNi1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X3BoeV9jb25maWcuYz00MzI9c3RhdGljIHZvaWQgcnRsODE2OGRfYXBwbHlfZmlybXdhcmVfY29uZChzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X3BoeV9jb25maWcuYy00NDUtXHRlbHNlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X3BoeV9jb25maWcuYzo0NDY6XHRcdHI4MTY5X2FwcGx5X2Zpcm13YXJlKHRwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfcGh5X2NvbmZpZy5jLTQ0Ny19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9waHlfY29uZmlnLmM9NTM4PXN0YXRpYyB2b2lkIHJ0bDgxNjhlXzFfaHdfcGh5X2NvbmZpZyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X3BoeV9jb25maWcuYy01NTEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X3BoeV9jb25maWcuYzo1NTI6XHRyODE2OV9hcHBseV9maXJtd2FyZSh0cCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X3BoeV9jb25maWcuYy01NTMtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9waHlfY29uZmlnLmM9NTgzPXN0YXRpYyB2b2lkIHJ0bDgxNjhlXzJfaHdfcGh5X2NvbmZpZyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X3BoeV9jb25maWcuYy01ODUte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9waHlfY29uZmlnLmM6NTg2Olx0cjgxNjlfYXBwbHlfZmlybXdhcmUodHApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9waHlfY29uZmlnLmMtNTg3LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfcGh5X2NvbmZpZy5jPTY0MT1zdGF0aWMgdm9pZCBydGw4MTY4Zl8xX2h3X3BoeV9jb25maWcoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9waHlfY29uZmlnLmMtNjQzLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfcGh5X2NvbmZpZy5jOjY0NDpcdHI4MTY5X2FwcGx5X2Zpcm13YXJlKHRwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfcGh5X2NvbmZpZy5jLTY0NS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X3BoeV9jb25maWcuYz02Njk9c3RhdGljIHZvaWQgcnRsODE2OGZfMl9od19waHlfY29uZmlnKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfcGh5X2NvbmZpZy5jLTY3MS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X3BoeV9jb25maWcuYzo2NzI6XHRyODE2OV9hcHBseV9maXJtd2FyZSh0cCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X3BoeV9jb25maWcuYy02NzMtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9waHlfY29uZmlnLmM9Njc3PXN0YXRpYyB2b2lkIHJ0bDg0MTFfaHdfcGh5X2NvbmZpZyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X3BoeV9jb25maWcuYy02Nzkte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9waHlfY29uZmlnLmM6NjgwOlx0cjgxNjlfYXBwbHlfZmlybXdhcmUodHApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9waHlfY29uZmlnLmMtNjgxLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfcGh5X2NvbmZpZy5jPTc0MT1zdGF0aWMgdm9pZCBydGw4MTY4Z18xX2h3X3BoeV9jb25maWcoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9waHlfY29uZmlnLmMtNzQ1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9waHlfY29uZmlnLmM6NzQ2Olx0cjgxNjlfYXBwbHlfZmlybXdhcmUodHApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9waHlfY29uZmlnLmMtNzQ3LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfcGh5X2NvbmZpZy5jPTc4OT1zdGF0aWMgdm9pZCBydGw4MTY4Z18yX2h3X3BoeV9jb25maWcoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9waHlfY29uZmlnLmMtNzkxLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfcGh5X2NvbmZpZy5jOjc5MjpcdHI4MTY5X2FwcGx5X2Zpcm13YXJlKHRwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfcGh5X2NvbmZpZy5jLTc5My1cdHJ0bDgxNjhnX2NvbmZpZ19lZWVfcGh5KHBoeWRldik7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9waHlfY29uZmlnLmM9Nzk2PXN0YXRpYyB2b2lkIHJ0bDgxNjhoXzJfaHdfcGh5X2NvbmZpZyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X3BoeV9jb25maWcuYy04MDEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X3BoeV9jb25maWcuYzo4MDI6XHRyODE2OV9hcHBseV9maXJtd2FyZSh0cCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X3BoeV9jb25maWcuYy04MDMtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9waHlfY29uZmlnLmM9OTQ3PXN0YXRpYyB2b2lkIHJ0bDgxMDVlX2h3X3BoeV9jb25maWcoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9waHlfY29uZmlnLmMtOTUzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9waHlfY29uZmlnLmM6OTU0Olx0cjgxNjlfYXBwbHlfZmlybXdhcmUodHApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9waHlfY29uZmlnLmMtOTU1LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfcGh5X2NvbmZpZy5jPTk2MT1zdGF0aWMgdm9pZCBydGw4NDAyX2h3X3BoeV9jb25maWcoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9waHlfY29uZmlnLmMtOTY3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9waHlfY29uZmlnLmM6OTY4Olx0cjgxNjlfYXBwbHlfZmlybXdhcmUodHApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9waHlfY29uZmlnLmMtOTY5LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfcGh5X2NvbmZpZy5jPTk3Nz1zdGF0aWMgdm9pZCBydGw4MTA2ZV9od19waHlfY29uZmlnKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfcGh5X2NvbmZpZy5jLTk5MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfcGh5X2NvbmZpZy5jOjk5MTpcdHI4MTY5X2FwcGx5X2Zpcm13YXJlKHRwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfcGh5X2NvbmZpZy5jLTk5Mi1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X3BoeV9jb25maWcuYz0xMDAxPXN0YXRpYyB2b2lkIHJ0bDgxMjVhXzJfaHdfcGh5X2NvbmZpZyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X3BoeV9jb25maWcuYy0xMDQ1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9waHlfY29uZmlnLmM6MTA0NjpcdHI4MTY5X2FwcGx5X2Zpcm13YXJlKHRwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfcGh5X2NvbmZpZy5jLTEwNDctXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9waHlfY29uZmlnLmM9MTA2Mz1zdGF0aWMgdm9pZCBydGw4MTI1Yl9od19waHlfY29uZmlnKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfcGh5X2NvbmZpZy5jLTEwNjUte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9waHlfY29uZmlnLmM6MTA2NjpcdHI4MTY5X2FwcGx5X2Zpcm13YXJlKHRwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfcGh5X2NvbmZpZy5jLTEwNjctXHRydGw4MTY4Z19lbmFibGVfZ3BoeV8xMG0ocGh5ZGV2KTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X3BoeV9jb25maWcuYz0xMDk4PXN0YXRpYyB2b2lkIHJ0bDgxMjVkX2h3X3BoeV9jb25maWcoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsXG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAxNjozNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNjY1OQoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDk4NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIHRoZSByODE2OSBEcml2ZXIgd2l0aCBzeXpfcGNpKioKCk9rYXksIHNvIHdlJiMzOTtyZSBsb29raW5nIGF0IGZ1enppbmcgdGhlIGByODE2OWAgZHJpdmVyLCB3aGljaCBpcyBhIFBDSSBkcml2ZXIsIHVzaW5nIGBzeXpfcGNpYC4gIFN5emthbGxlciYjMzk7cyBgc3l6X3BjaWAgcHNldWRvLWRldmljZSBpcyB0aGUga2V5IGhlcmUuIFRoZSBxdWVzdGlvbiBpcywgaXMgdGhpcyBwYXRjaCBmdXp6LXdvcnRoeT8gIFllcywgaXQgc2VlbXMgdG8gYmUhIFRoaXMgcGF0Y2ggaW52b2x2ZXMgc2lnbmlmaWNhbnQgY2hhbmdlcywgc3BlY2lmaWNhbGx5IHRoZSBhZG9wdGlvbiBvZiBgcGh5bGlua2AgYnkgdGhlIGByODE2OWAgZHJpdmVyIGFuZCB0aGUgYWRkaXRpb24gb2YgYHBoeWxpbmtfc2V0X21hY19jYXBhYmlsaXRpZXNgIHRvIGBwaHlsaW5rLmNgLgoKUmlnaHQsIGxldCYjMzk7cyBkaXZlIGludG8gdGhlIGRldGFpbHMuIEkgbmVlZCB0byBpZGVudGlmeSB3aGljaCBmdW5jdGlvbnMgYXJlIGJlaW5nIG1vZGlmaWVkIG9yIGFkZGVkLiBMZXQmIzM5O3Mgc2VlLi4uIGluIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uY2AgdGhlcmUmIzM5O3MgcXVpdGUgYSBsaXN0OiBgcjgxMjdfc2RzX3JlYWRgLCBgcjgxMjdfc2RzX3dyaXRlYCwgYHI4MTI3X3Nkc19tb2RpZnlgLCBgcjgxMjdfc2ZwX2luaXRfMWdgLCBgcjgxMjdfc2ZwX2luaXRfMTBnYCwgYHJ0bF9pc184MTE2YWZgLCBgcnRsX2dldF9zZnBfbW9kZWAsIGBydGxfbGlua19jaGdfcGF0Y2hgLCBgcnRsODE2OV9nZXRfbGlua19rc2V0dGluZ3NgLCBgcnRsODE2OV9zZXRfbGlua19rc2V0dGluZ3NgLCBgcnRsODE2OV9ud2F5X3Jlc2V0YCwgYHJ0bDgxNjlfaW9jdGxgLCBgcnRsX2xvd3Bvd2VyX2hpZGRlbl9mdW5jdGlvbnNgLCBgcnRsODE2OV9jaGFuZ2VfbXR1YCwgYHJ0bF9tYWNfbGlua19kb3duYCwgYHJ0bF9tYWNfbGlua191cGAsIGBydGxfbWFjX3NlbGVjdF9wY3NgLCBgcnRsX21hY19jb25maWdgLCBgcnRsODE2OV9zZHNfcmVhZGAsIGBydGw4MTY5X3Bjc19nZXRfc3RhdGVgLCBgcnRsODE2OV9wY3NfY29uZmlnYCwgYHJ0bDgxNjlfcGNzX3ZhbGlkYXRlYCwgYHJ0bDgxNjlfcGNzX2FuX3Jlc3RhcnRgLCBgcnRsX21hY19kaXNhYmxlX3R4X2xwaWAsIGBydGxfbWFjX2VuYWJsZV90eF9scGlgLCBgcnRsODE2OV9nZXRfbHBpX2NhcHNgLCBhbmQgYHJ0bF9pbml0X3BoeWxpbmtgLiBBbmQgaW4gYGRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNgLCB3ZSBoYXZlIGBwaHlsaW5rX3NldF9tYWNfY2FwYWJpbGl0aWVzYC4KCk5leHQsIEkgbmVlZCB0byBjaGVjayBpZiBgQ09ORklHX1I4MTY5YCBpcyBlbmFibGVkIGJ5IGRlZmF1bHQuICBJdCYjMzk7cyBwcm9iYWJseSBlbmFibGVkLCBiZWluZyBhIGNvbW1vbiBuZXR3b3JrIGRyaXZlciwgYnV0IGxldCYjMzk7cyBiZSB0aG9yb3VnaCBhbmQgbGlzdCBpdCBhbnl3YXkuIFdhaXQsIHNjcmF0Y2ggdGhhdC4gVGhlIGluc3RydWN0aW9ucyBhcmUgdG8gbGlzdCBvbmx5IHNwZWNpZmljIGNvbmZpZ3MgdGhhdCBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZSwgYW5kICpub3QqIGluY2x1ZGUgdGhlICYjMzQ7Q09ORklHXyYjMzQ7IHByZWZpeC4gR290IGl0LiBTbywgYFI4MTY5YCBnb2VzIGludG8gYEVuYWJsZUNvbmZpZ3NgIGFuZCBgUEhZTElOS2AgYXMgd2VsbCwgYmVjYXVzZSBgUjgxNjlgIG5vdyBzZWxlY3RzIGl0LgoKT2theSwgbGV0JiMzOTtzIGZpZ3VyZSBvdXQgd2hhdCBzeW1ib2xzIHRvIGZvY3VzIG9uIGZvciBmdXp6aW5nLiBXZSB3YW50IHRoZSBuZXcgb3Igc2lnbmlmaWNhbnRseSBtb2RpZmllZCBmdW5jdGlvbnMuICBBbHJpZ2h0LCBsZXQmIzM5O3Mgc2VlLi4uICBXZSBzaG91bGQgZm9jdXMgb246IGBwaHlsaW5rX3NldF9tYWNfY2FwYWJpbGl0aWVzYCwgYHJ0bF9pbml0X3BoeWxpbmtgLCBgcnRsODE2OV9wY3NfY29uZmlnYCwgYHJ0bDgxNjlfcGNzX2dldF9zdGF0ZWAsIGBydGxfbWFjX2xpbmtfdXBgLCBgcnRsX21hY19saW5rX2Rvd25gLCBgcnRsX21hY19zZWxlY3RfcGNzYCwgYHJ0bF9tYWNfZGlzYWJsZV90eF9scGlgLCBgcnRsX21hY19lbmFibGVfdHhfbHBpYCwgYHJ0bDgxNjlfY2hhbmdlX210dWAsIGBydGxfbG93cG93ZXJfaGlkZGVuX2Z1bmN0aW9uc2AsIGByODEyN19zZnBfaW5pdF8xZ2AsIGByODEyN19zZnBfaW5pdF8xMGdgLCBhbmQgYHJ0bDgxNjlfaW9jdGxgLgoKTm93LCBpcyBgcGh5bGlua19zZXRfbWFjX2NhcGFiaWxpdGllc2AgZXhwb3J0ZWQ/IFllcywgaXQgaXMhICBgRVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19zZXRfbWFjX2NhcGFiaWxpdGllcyk7YCBjb25maXJtcyBpdC4gQW5kLCBsZXQmIzM5O3MgY2hlY2sgYHJ0bDgxNjlfY2hhbmdlX210dWAgLSB5ZXAsIGl0JiMzOTtzIGJlZW4gbW9kaWZpZWQgdG8gY2FsbCBgcGh5bGlua19zZXRfbWFjX2NhcGFiaWxpdGllc2AuCgpGaW5hbGx5LCBhIHF1aWNrIGNvZGUgc2VhcmNoIHRvIHZlcmlmeSBldmVyeXRoaW5nLiBNYWtlcyBzZW5zZSEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAxNjozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwaHlsaW5rX3NldF9tYWNfY2FwYWJpbGl0aWVzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTE4Mjk9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19zZXRfZml4ZWRfbGluayk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xODMxLS8qKlxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxODMyOiAqIHBoeWxpbmtfc2V0X21hY19jYXBhYmlsaXRpZXMoKSAtIER5bmFtaWNhbGx5IHVwZGF0ZSBNQUMgY2FwYWJpbGl0aWVzXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE4MzMtICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE4MzktICovXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjE4NDA6dm9pZCBwaHlsaW5rX3NldF9tYWNfY2FwYWJpbGl0aWVzKHN0cnVjdCBwaHlsaW5rICpwbCwgdW5zaWduZWQgbG9uZyBtYWNfY2FwYWJpbGl0aWVzKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xODQxLXtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE4OTQtfVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxODk1OkVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfc2V0X21hY19jYXBhYmlsaXRpZXMpO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xODk2LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDE2OjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM4ODk4CgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogMzQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEaXZpbmcgaW50byB0aGUgUmVhbHRlayBQSFkgSW5pdGlhbGl6YXRpb24qKgoKT2theSwgdGltZSB0byBnZXQgdG8gdGhlIGhlYXJ0IG9mIHRoaXMgUmVhbHRlayBpc3N1ZS4gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiBob3cgdGhpcyBQSFkgaXMgaW5pdGlhbGl6ZWQsIHNvIEkmIzM5O20gaGVhZGluZyBzdHJhaWdodCBmb3IgYHJ0bF9pbml0X3BoeWxpbmtgLiBJJiMzOTttIGdvaW5nIHRvIG5hdmlnYXRlIHRvIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uY2AuIFRoYXQmIzM5O3Mgd2hlcmUgSSBleHBlY3QgdG8gZmluZCB0aGUgbG93LWxldmVsIFBIWSBpbnRlcmFjdGlvbiBsb2dpYy4gU3BlY2lmaWNhbGx5LCBgcnRsX2luaXRfcGh5bGlua2AgbGlrZWx5IGhhbmRsZXMgdGhlIFBIWSYjMzk7cyBpbml0aWFsIHNldHVwIGFuZCBjb25maWd1cmF0aW9uLCBpbmNsdWRpbmcgcG90ZW50aWFsbHkgYXV0b25lZ290aWF0aW9uIGFuZCBsaW5rIHNwZWVkL2R1cGxleCBzZXR0aW5nLiBJJiMzOTttIGhvcGluZyBJIGNhbiBnbGVhbiBpbmZvcm1hdGlvbiBmcm9tIHRoZXJlIHRoYXQgaGVscHMgbWUgZ2V0IHRvIHRoZSBib3R0b20gb2YgdGhlIHByb2JsZW0uIFRpbWUgdG8gc2VlIHdoYXQmIzM5O3MgZ29pbmcgb24gdW5kZXIgdGhlIGhvb2QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDE2OjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3J0bF9pbml0X3BoeWxpbmsmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYz01OTAxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGh5bGlua19wY3Nfb3BzIHI4MTY5X3Bjc19vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNTkwNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjU5MDg6c3RhdGljIGludCBydGxfaW5pdF9waHlsaW5rKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNTkwOS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM9NTk3MD1zdGF0aWMgaW50IHJ0bF9pbml0X29uZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy02MTU0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6NjE1NTpcdHJjID0gcnRsX2luaXRfcGh5bGluayh0cCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy02MTU2LVx0aWYgKHJjKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAxNjozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzOTQ3MwoJCQkJCQkJb3V0cHV0OiAyOTgKCQkJCQkJCXRob3VnaHRzOiA1MTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBUYXJnZXQgSWRlbnRpZmljYXRpb246IHI4MTY5IERyaXZlciBhbmQgcGh5bGluayBGcmFtZXdvcmsqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gVGhpcyBwYXRjaCBpcyBkZWZpbml0ZWx5IHNpZ25pZmljYW50OyBpdCYjMzk7cyBnb3Qgc29tZSByZWFsIGZ1bmN0aW9uYWwgY2hhbmdlcyBoYXBwZW5pbmcgaW4gdGhlIGByODE2OWAgZHJpdmVyIGFuZCB0aGUgYHBoeWxpbmtgIGZyYW1ld29yay4gU3BlY2lmaWNhbGx5LCB0aGlzIG1vdmUgZnJvbSBgcGh5bGliYCB0byBgcGh5bGlua2AsIGFsb25nc2lkZSB0aGUgYWRkaXRpb24gb2YgZHluYW1pYyBNQUMgY2FwYWJpbGl0aWVzIHVwZGF0ZXMgd2l0aGluIGBwaHlsaW5rYCwgc2hvdXRzICYjMzQ7ZnV6eiBtZSEmIzM0OwoKSSYjMzk7dmUgc2NvcGVkIG91dCB0aGUga2V5IGZ1bmN0aW9ucyB0byB0YXJnZXQuIEhlcmUmIzM5O3Mgd2hhdCBJJiMzOTttIHRoaW5raW5nOgoKKiAgIGBwaHlsaW5rX3NldF9tYWNfY2FwYWJpbGl0aWVzYCAtIHRoaXMgaXMgZ29pbmcgdG8gYmUgaW50ZXJlc3RpbmcsIGVzcGVjaWFsbHkgd2l0aCBkeW5hbWljIHVwZGF0ZXMuCiogICBgcnRsX2luaXRfcGh5bGlua2AKKiAgIGBydGw4MTY5X3Bjc19jb25maWdgCiogICBgcnRsODE2OV9wY3NfZ2V0X3N0YXRlYCAtIE1pZ2h0IGJlIHdvcnRoIGhpdHRpbmcgd2l0aCBhIHN0YXRlLWF3YXJlIGZ1enplciwgc2luY2UgaXQmIzM5O3MgbGlrZWx5IGNhbGxlZCBwZXJpb2RpY2FsbHkuCiogICBgcnRsX21hY19saW5rX3VwYAoqICAgYHJ0bF9tYWNfbGlua19kb3duYAoqICAgYHJ0bF9tYWNfc2VsZWN0X3Bjc2AKKiAgIGBydGxfbWFjX2Rpc2FibGVfdHhfbHBpYAoqICAgYHJ0bF9tYWNfZW5hYmxlX3R4X2xwaWAKKiAgIGBydGw4MTY5X2NoYW5nZV9tdHVgIC0gTGV0JiMzOTtzIHNlZSBpZiB3ZSBjYW4gdHJpZ2dlciBzb21lIGludGVyZXN0aW5nIGVkZ2UgY2FzZXMgdGhyb3VnaCBNVFUgbWFuaXB1bGF0aW9uLgoqICAgYHJ0bF9sb3dwb3dlcl9oaWRkZW5fZnVuY3Rpb25zYCAtIFdvcnRoIGRpZ2dpbmcgaW50byB0aGUgbG9naWMgaW4gdGhlc2UgbG93LXBvd2VyIGZ1bmN0aW9ucy4KKiAgIGByODEyN19zZnBfaW5pdF8xZ2AgLSBJJiMzOTttIGludGVyZXN0ZWQgaW4gaG93IHRoaXMgZGVhbHMgd2l0aCAxRy4KKiAgIGByODEyN19zZnBfaW5pdF8xMGdgIC0gU2ltaWxhcmx5LCB3b3J0aCBjaGVja2luZyB0aGUgMTBHIGltcGxlbWVudGF0aW9uLgoqICAgYHJ0bDgxNjlfaW9jdGxgIC0gVGhpcyB3aWxsIGxpa2VseSBiZSBmcnVpdGZ1bCEKCkNvbmZpZy13aXNlLCBgUjgxNjlgIGlzIG91ciBwcmltYXJ5IGZvY3VzIHNpbmNlIGl0IHNlbGVjdHMgYFBIWUxJTktgLiBFbmFibGluZyBgUjgxNjlgIHNob3VsZCBnZXQgdXMgZXZlcnl0aGluZyB3ZSBuZWVkLiBObyBuZWVkIHRvIGV4cGxpY2l0bHkgbGlzdCBgUEhZTElOS2AuCgpJIGp1c3QgdG9vayBhIHF1aWNrIGxvb2sgYXQgYHJ0bDgxNjlfY2hhbmdlX210dWAgYW5kIGEgZmV3IG90aGVycy4gSXQgY29uZmlybXMgdGhlc2UgZnVuY3Rpb25zIGFyZSBjb250cm9sIHBhdGggb3BlcmF0aW9ucy4gRnVuY3Rpb25zIGxpa2UgYHJ0bDgxNjlfcGNzX2dldF9zdGF0ZWAgbWlnaHQgYmUgaW50ZXJlc3RpbmcgZm9yIHN0YXRlLWF3YXJlIGZ1enplcnMuIFRoZXkgYXJlbiYjMzk7dCBob3QtcGF0aCwgYnV0IHRoZXkgYXJlIHN0aWxsIHZhbHVhYmxlIHRhcmdldHMuCldpdGggdGhpcywgSSB0aGluayB3ZSBoYXZlIGEgc3Ryb25nIHN0YXJ0aW5nIHBvaW50LiBOb3csIGxldCYjMzk7cyBnZXQgdGhhdCBmdXp6aW5nIGNhbXBhaWduIHJvbGxpbmchCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDE2OjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtSODE2OSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3BoeWxpbmtfc2V0X21hY19jYXBhYmlsaXRpZXMmIzM0OywKICAgICYjMzQ7cnRsX2luaXRfcGh5bGluayYjMzQ7LAogICAgJiMzNDtydGw4MTY5X3Bjc19jb25maWcmIzM0OywKICAgICYjMzQ7cnRsODE2OV9wY3NfZ2V0X3N0YXRlJiMzNDssCiAgICAmIzM0O3J0bF9tYWNfbGlua191cCYjMzQ7LAogICAgJiMzNDtydGxfbWFjX2xpbmtfZG93biYjMzQ7LAogICAgJiMzNDtydGxfbWFjX3NlbGVjdF9wY3MmIzM0OywKICAgICYjMzQ7cnRsX21hY19kaXNhYmxlX3R4X2xwaSYjMzQ7LAogICAgJiMzNDtydGxfbWFjX2VuYWJsZV90eF9scGkmIzM0OywKICAgICYjMzQ7cnRsODE2OV9jaGFuZ2VfbXR1JiMzNDssCiAgICAmIzM0O3J0bF9sb3dwb3dlcl9oaWRkZW5fZnVuY3Rpb25zJiMzNDssCiAgICAmIzM0O3I4MTI3X3NmcF9pbml0XzFnJiMzNDssCiAgICAmIzM0O3I4MTI3X3NmcF9pbml0XzEwZyYjMzQ7LAogICAgJiMzNDtydGw4MTY5X2lvY3RsJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1pZ3JhdGVzIHRoZSBSZWFsdGVrIHI4MTY5IEV0aGVybmV0IGRyaXZlciBmcm9tIHBoeWxpYiB0byBwaHlsaW5rLCBpbnRyb2R1Y2luZyBzaWduaWZpY2FudCBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGRyaXZlciYjMzk7cyBpbml0aWFsaXphdGlvbiwgbGluayBtYW5hZ2VtZW50LCBhbmQgTVRVIGhhbmRsaW5nLiBJdCBhbHNvIGFkZHMgYSBuZXcgcGh5bGluayBBUEkgYHBoeWxpbmtfc2V0X21hY19jYXBhYmlsaXRpZXNgIHRvIGR5bmFtaWNhbGx5IHVwZGF0ZSBNQUMgY2FwYWJpbGl0aWVzLiBUaGVzZSBhcmUgcmVhY2hhYmxlIGNvbnRyb2wtcGF0aCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgZnV6emVkLCBlc3BlY2lhbGx5IHZpYSBzeXpfcGNpIGFuZCBuZXRsaW5rL2lvY3RsIGludGVyZmFjZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1I4MTY5JiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cGh5bGlua19zZXRfbWFjX2NhcGFiaWxpdGllcyYjMzQ7LAogICAgJiMzNDtydGxfaW5pdF9waHlsaW5rJiMzNDssCiAgICAmIzM0O3J0bDgxNjlfcGNzX2NvbmZpZyYjMzQ7LAogICAgJiMzNDtydGw4MTY5X3Bjc19nZXRfc3RhdGUmIzM0OywKICAgICYjMzQ7cnRsX21hY19saW5rX3VwJiMzNDssCiAgICAmIzM0O3J0bF9tYWNfbGlua19kb3duJiMzNDssCiAgICAmIzM0O3J0bF9tYWNfc2VsZWN0X3BjcyYjMzQ7LAogICAgJiMzNDtydGxfbWFjX2Rpc2FibGVfdHhfbHBpJiMzNDssCiAgICAmIzM0O3J0bF9tYWNfZW5hYmxlX3R4X2xwaSYjMzQ7LAogICAgJiMzNDtydGw4MTY5X2NoYW5nZV9tdHUmIzM0OywKICAgICYjMzQ7cnRsX2xvd3Bvd2VyX2hpZGRlbl9mdW5jdGlvbnMmIzM0OywKICAgICYjMzQ7cjgxMjdfc2ZwX2luaXRfMWcmIzM0OywKICAgICYjMzQ7cjgxMjdfc2ZwX2luaXRfMTBnJiMzNDssCiAgICAmIzM0O3J0bDgxNjlfaW9jdGwmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbWlncmF0ZXMgdGhlIFJlYWx0ZWsgcjgxNjkgRXRoZXJuZXQgZHJpdmVyIGZyb20gcGh5bGliIHRvIHBoeWxpbmssIGludHJvZHVjaW5nIHNpZ25pZmljYW50IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgZHJpdmVyJiMzOTtzIGluaXRpYWxpemF0aW9uLCBsaW5rIG1hbmFnZW1lbnQsIGFuZCBNVFUgaGFuZGxpbmcuIEl0IGFsc28gYWRkcyBhIG5ldyBwaHlsaW5rIEFQSSBgcGh5bGlua19zZXRfbWFjX2NhcGFiaWxpdGllc2AgdG8gZHluYW1pY2FsbHkgdXBkYXRlIE1BQyBjYXBhYmlsaXRpZXMuIFRoZXNlIGFyZSByZWFjaGFibGUgY29udHJvbC1wYXRoIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQsIGVzcGVjaWFsbHkgdmlhIHN5el9wY2kgYW5kIG5ldGxpbmsvaW9jdGwgaW50ZXJmYWNlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDE2OjM0OjQxLjc4NDI5NDg0M1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5MzM1Mzg2NDYxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlI4MTY5XCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicGh5bGlua19zZXRfbWFjX2NhcGFiaWxpdGllc1wiLFxuICAgIFwicnRsX2luaXRfcGh5bGlua1wiLFxuICAgIFwicnRsODE2OV9wY3NfY29uZmlnXCIsXG4gICAgXCJydGw4MTY5X3Bjc19nZXRfc3RhdGVcIixcbiAgICBcInJ0bF9tYWNfbGlua191cFwiLFxuICAgIFwicnRsX21hY19saW5rX2Rvd25cIixcbiAgICBcInJ0bF9tYWNfc2VsZWN0X3Bjc1wiLFxuICAgIFwicnRsX21hY19kaXNhYmxlX3R4X2xwaVwiLFxuICAgIFwicnRsX21hY19lbmFibGVfdHhfbHBpXCIsXG4gICAgXCJydGw4MTY5X2NoYW5nZV9tdHVcIixcbiAgICBcInJ0bF9sb3dwb3dlcl9oaWRkZW5fZnVuY3Rpb25zXCIsXG4gICAgXCJyODEyN19zZnBfaW5pdF8xZ1wiLFxuICAgIFwicjgxMjdfc2ZwX2luaXRfMTBnXCIsXG4gICAgXCJydGw4MTY5X2lvY3RsXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbWlncmF0ZXMgdGhlIFJlYWx0ZWsgcjgxNjkgRXRoZXJuZXQgZHJpdmVyIGZyb20gcGh5bGliIHRvIHBoeWxpbmssIGludHJvZHVjaW5nIHNpZ25pZmljYW50IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgZHJpdmVyJ3MgaW5pdGlhbGl6YXRpb24sIGxpbmsgbWFuYWdlbWVudCwgYW5kIE1UVSBoYW5kbGluZy4gSXQgYWxzbyBhZGRzIGEgbmV3IHBoeWxpbmsgQVBJIGBwaHlsaW5rX3NldF9tYWNfY2FwYWJpbGl0aWVzYCB0byBkeW5hbWljYWxseSB1cGRhdGUgTUFDIGNhcGFiaWxpdGllcy4gVGhlc2UgYXJlIHJlYWNoYWJsZSBjb250cm9sLXBhdGggZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGZ1enplZCwgZXNwZWNpYWxseSB2aWEgc3l6X3BjaSBhbmQgbmV0bGluay9pb2N0bCBpbnRlcmZhY2VzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QxNjozNDo0MS43ODQzMDE2NjNaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgyMDM2MjM2NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDFmNzg1MDA0NTZiODM5M2VhZDZkNmZiYzE1YTQ5YzNiNTg1MGE5ZjRcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFR1ZSBKdWwgNyAxNjozNDozOSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWcgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWdcXG5pbmRleCA5YjBmNGY5NjMxZGJhYS4uNDlhYzcyNzM0MjI1ZjcgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9LY29uZmlnXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9LY29uZmlnXFxuQEAgLTg4LDYgKzg4LDcgQEAgY29uZmlnIFI4MTY5XFxuIFxcdHNlbGVjdCBDUkMzMlxcbiBcXHRzZWxlY3QgUEhZTElCXFxuIFxcdHNlbGVjdCBSRUFMVEVLX1BIWVxcbitcXHRzZWxlY3QgUEhZTElOS1xcbiBcXHRoZWxwXFxuIFxcdCAgU2F5IFkgaGVyZSBpZiB5b3UgaGF2ZSBhIFJlYWx0ZWsgRXRoZXJuZXQgYWRhcHRlciBiZWxvbmdpbmcgdG9cXG4gXFx0ICB0aGUgZm9sbG93aW5nIGZhbWlsaWVzOlxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jXFxuaW5kZXggZWM0ZmMyMWZhMjFmYjAuLjEyZTA3M2I5YTYxNDc5IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmNcXG5AQCAtMjYsMTIgKzI2LDEyIEBAXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9kbWEtbWFwcGluZy5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvcG1fcnVudGltZS5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvYml0ZmllbGQuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3BoeWxpbmsuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3ByZWZldGNoLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9pcHY2LmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC91bmFsaWduZWQuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY25ldC9pcDZfY2hlY2tzdW0uaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY25ldC9uZXRkZXZfcXVldWVzLmhcXHUwMDNlXFxuLSNpbmNsdWRlIFxcdTAwM2NuZXQvcGh5L3JlYWx0ZWtfcGh5LmhcXHUwMDNlXFxuIFxcbiAjaW5jbHVkZSBcXFwicjgxNjkuaFxcXCJcXG4gI2luY2x1ZGUgXFxcInI4MTY5X2Zpcm13YXJlLmhcXFwiXFxuQEAgLTk2LDYgKzk2LDI4IEBAXFxuICNkZWZpbmUgSlVNQk9fOUtcXHQoOSAqIFNaXzFLIC0gVkxBTl9FVEhfSExFTiAtIEVUSF9GQ1NfTEVOKVxcbiAjZGVmaW5lIEpVTUJPXzE2S1xcdChTWl8xNksgLSBWTEFOX0VUSF9ITEVOIC0gRVRIX0ZDU19MRU4pXFxuIFxcbisjZGVmaW5lIE9DUF9TRFNfQUREUl9SRUdcXHRcXHQweEVCMTBcXG4rI2RlZmluZSBPQ1BfU0RTX0NNRF9SRUdcXHRcXHRcXHQweEVCMEVcXG4rI2RlZmluZSBPQ1BfU0RTX0RBVEFfUkVHXFx0XFx0MHhFQjE0XFxuKyNkZWZpbmUgU0RTX0NNRF9SRUFEXFx0XFx0XFx0MHgwMDAxXFxuKyNkZWZpbmUgUlRMX1NEU19DMjJfQkFTRVxcdFxcdDB4NDBcXG4rI2RlZmluZSBSVExfU0RTX0M0NV9CQVNFXFx0XFx0MHgwMDgwXFxuKyNkZWZpbmUgUlRMX1BLR19ERVRFQ1RcXHRcXHRcXHQweGRjMDBcXG4rI2RlZmluZSBSVExfUEtHX0RFVEVDVF9NQVNLXFx0XFx0MHgwMDc4XFxuKyNkZWZpbmUgUlRMX1BLR19ERVRFQ1RfODExNkFGXFx0XFx0MHgwMDMwXFxuKyNkZWZpbmUgUlRMX0lOVF9IV19JRFxcdFxcdFxcdDB4ZDAwNlxcbisjZGVmaW5lIFJUTF9JTlRfSFdfSURfTUFTS1xcdFxcdDB4MDBmZlxcbisjZGVmaW5lIFJUTF9JTlRfSFdfSURfODExNkFGXFx0XFx0MHgwMDAwXFxuKyNkZWZpbmUgUlRMODExNkFGX0ZVTkNfUE1fQ1NSXFx0XFx0MHg4MFxcbisjZGVmaW5lIFJUTDgxMTZBRl9GVU5DX0VYUF9MTktDVExcXHQweDQ0XFxuKyNkZWZpbmUgUlRMX1BNX0QzSE9UXFx0XFx0XFx0R0VOTUFTSygxLCAwKVxcbisjZGVmaW5lIFI4MTI3X1NEU19DTURcXHRcXHRcXHQweDIzNDhcXG4rI2RlZmluZSBSODEyN19TRFNfQUREUlxcdFxcdFxcdDB4MjM0YVxcbisjZGVmaW5lIFI4MTI3X1NEU19EQVRBX0lOXFx0XFx0MHgyMzRjXFxuKyNkZWZpbmUgUjgxMjdfU0RTX0RBVEFfT1VUXFx0XFx0MHgyMzRlXFxuKyNkZWZpbmUgUjgxMjdfU0RTX0NNRF9FWEVDXFx0XFx0QklUKDApXFxuKyNkZWZpbmUgUjgxMjdfU0RTX0NNRF9XRVxcdFxcdEJJVCgxKVxcbitcXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBydGxfY2hpcF9pbmZvIHtcXG4gXFx0dTMyIG1hc2s7XFxuIFxcdHUzMiB2YWw7XFxuQEAgLTMzNCwxMSArMzU2LDEzIEBAIGVudW0gcnRsX3JlZ2lzdGVycyB7XFxuIFxcdEFMRFBTX0xUUlxcdD0gMHhlMGEyLFxcbiBcXHRMVFJfT0JGRl9MT0NLXFx0PSAweGUwMzIsXFxuIFxcdExUUl9TTk9PUFxcdD0gMHhlMDM0LFxcbitcXHRTRU5EX0xUUl9NU0dcXHQ9IDB4ZTAzOCxcXG4gXFxuICNkZWZpbmUgQUxEUFNfTFRSX0VOXFx0XFx0XFx0QklUKDApXFxuICNkZWZpbmUgTFRSX09CRkZfTE9DS19FTlxcdFxcdEJJVCgwKVxcbiAjZGVmaW5lIExJTktfU1BFRURfQ0hBTkdFX0VOXFx0XFx0QklUKDE0KVxcbiAjZGVmaW5lIExUUl9TTk9PUF9FTlxcdFxcdFxcdEdFTk1BU0soMTUsIDE0KVxcbisjZGVmaW5lIExUUl9NU0dfRU5cXHRcXHRcXHRCSVQoMClcXG4gfTtcXG4gXFxuIGVudW0gcnRsODE2OF84MTAxX3JlZ2lzdGVycyB7XFxuQEAgLTcyOCw2ICs3NTIsMTIgQEAgZW51bSBydGxfZGFzaF90eXBlIHtcXG4gXFx0UlRMX0RBU0hfMjVfQlAsXFxuIH07XFxuIFxcbitlbnVtIHJ0bF9zZnBfbW9kZSB7XFxuK1xcdFJUTF9TRlBfTk9ORSxcXG4rXFx0UlRMX1NGUF84MTY4X0FGLFxcbitcXHRSVExfU0ZQXzgxMjdfQVRGLFxcbit9O1xcbitcXG4gc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSB7XFxuIFxcdHZvaWQgX19pb21lbSAqbW1pb19hZGRyO1xcdC8qIG1lbW9yeSBtYXAgcGh5c2ljYWwgYWRkcmVzcyAqL1xcbiBcXHRzdHJ1Y3QgcGNpX2RldiAqcGNpX2RldjtcXG5AQCAtNzM2LDYgKzc2Niw3IEBAIHN0cnVjdCBydGw4MTY5X3ByaXZhdGUge1xcbiBcXHRzdHJ1Y3QgbmFwaV9zdHJ1Y3QgbmFwaTtcXG4gXFx0ZW51bSBtYWNfdmVyc2lvbiBtYWNfdmVyc2lvbjtcXG4gXFx0ZW51bSBydGxfZGFzaF90eXBlIGRhc2hfdHlwZTtcXG4rXFx0ZW51bSBydGxfc2ZwX21vZGUgc2ZwX21vZGU7XFxuIFxcdHUzMiBjdXJfcng7IC8qIEluZGV4IGludG8gdGhlIFJ4IGRlc2NyaXB0b3IgYnVmZmVyIG9mIG5leHQgUnggcGt0LiAqL1xcbiBcXHR1MzIgY3VyX3R4OyAvKiBJbmRleCBpbnRvIHRoZSBUeCBkZXNjcmlwdG9yIGJ1ZmZlciBvZiBuZXh0IFJ4IHBrdC4gKi9cXG4gXFx0dTMyIGRpcnR5X3R4O1xcbkBAIC03NTAsNiArNzgxLDcgQEAgc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSB7XFxuIFxcdHUzMiBpcnFfbWFzaztcXG4gXFx0aW50IGlycTtcXG4gXFx0c3RydWN0IGNsayAqY2xrO1xcbitcXHRpbnQgc3BlZWQ7XFxuIFxcbiBcXHRzdHJ1Y3Qge1xcbiBcXHRcXHRERUNMQVJFX0JJVE1BUChmbGFncywgUlRMX0ZMQUdfTUFYKTtcXG5AQCAtNzYyLDcgKzc5NCw2IEBAIHN0cnVjdCBydGw4MTY5X3ByaXZhdGUge1xcbiBcXHR1bnNpZ25lZCBzdXBwb3J0c19nbWlpOjE7XFxuIFxcdHVuc2lnbmVkIGFzcG1fbWFuYWdlYWJsZToxO1xcbiBcXHR1bnNpZ25lZCBkYXNoX2VuYWJsZWQ6MTtcXG4tXFx0Ym9vbCBzZnBfbW9kZToxO1xcbiBcXHRkbWFfYWRkcl90IGNvdW50ZXJzX3BoeXNfYWRkcjtcXG4gXFx0c3RydWN0IHJ0bDgxNjlfY291bnRlcnMgKmNvdW50ZXJzO1xcbiBcXHRzdHJ1Y3QgcnRsODE2OV90Y19vZmZzZXRzIHRjX29mZnNldDtcXG5AQCAtNzc0LDYgKzgwNSwxMSBAQCBzdHJ1Y3QgcnRsODE2OV9wcml2YXRlIHtcXG4gXFx0c3RydWN0IHI4MTY5X2xlZF9jbGFzc2RldiAqbGVkcztcXG4gXFxuIFxcdHUzMiBvY3BfYmFzZTtcXG4rXFx0c3RydWN0IHBoeWxpbmsgKnBoeWxpbms7XFxuK1xcdHN0cnVjdCBwaHlsaW5rX2NvbmZpZyBwaHlsaW5rX2NvbmZpZztcXG4rXFx0c3RydWN0IHBoeWxpbmtfcGNzIHBjcztcXG4rXFx0c3RydWN0IGV0aHRvb2xfcGF1c2VwYXJhbSBzYXZlZF9wYXVzZTtcXG4rXFx0Ym9vbCBqdW1ib19wYXVzZV9zYXZlZDtcXG4gfTtcXG4gXFxuIHR5cGVkZWYgdm9pZCAoKnJ0bF9nZW5lcmljX2ZjdCkoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApO1xcbkBAIC0xMTI4LDEwICsxMTY0LDYgQEAgc3RhdGljIGludCByODE2OF9waHlfb2NwX3JlYWQoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIHUzMiByZWcpXFxuIFxcdGlmIChydGxfb2NwX3JlZ19mYWlsdXJlKHJlZykpXFxuIFxcdFxcdHJldHVybiAwO1xcbiBcXG4tXFx0LyogUmV0dXJuIGR1bW15IE1JSV9QSFlTSUQyIGluIFNGUCBtb2RlIHRvIG1hdGNoIFNGUCBQSFkgZHJpdmVyICovXFxuLVxcdGlmICh0cC1cXHUwMDNlc2ZwX21vZGUgXFx1MDAyNlxcdTAwMjYgcmVnID09IChPQ1BfU1REX1BIWV9CQVNFICsgMiAqIE1JSV9QSFlTSUQyKSlcXG4tXFx0XFx0cmV0dXJuIFBIWV9JRF9SVExfRFVNTVlfU0ZQIFxcdTAwMjYgMHhmZmZmO1xcbi1cXG4gXFx0UlRMX1czMih0cCwgR1BIWV9PQ1AsIHJlZyBcXHUwMDNjXFx1MDAzYyAxNSk7XFxuIFxcbiBcXHRyZXR1cm4gcnRsX2xvb3Bfd2FpdF9oaWdoKHRwLCBcXHUwMDI2cnRsX29jcF9ncGh5X2NvbmQsIDI1LCAxMCkgP1xcbkBAIC0xMTk5LDYgKzEyMzEsNjcgQEAgc3RhdGljIHZvaWQgcjgxMjdfc2ZwX3Nkc19waHlfcmVzZXQoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXFxuIFxcdHVzbGVlcF9yYW5nZSgxMCwgMjApO1xcbiB9XFxuIFxcbitERUNMQVJFX1JUTF9DT05EKHI4MTI3X3Nkc19jbWRfY29uZClcXG4re1xcbitcXHRyZXR1cm4gUlRMX1IxNih0cCwgUjgxMjdfU0RTX0NNRCkgXFx1MDAyNiBSODEyN19TRFNfQ01EX0VYRUM7XFxuK31cXG4rXFxuK3N0YXRpYyB1MTYgcjgxMjdfc2RzX3JlYWQoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIHUxNiBpbmRleCwgdTE2IHBhZ2UsIHUxNiByZWcpXFxuK3tcXG4rXFx0dTE2IGFkZHIgPSAoaW5kZXggXFx1MDAzY1xcdTAwM2MgMTEpIHwgKHBhZ2UgXFx1MDAzY1xcdTAwM2MgNSkgfCByZWc7XFxuK1xcbitcXHRSVExfVzE2KHRwLCBSODEyN19TRFNfQUREUiwgYWRkcik7XFxuK1xcdFJUTF9XMTYodHAsIFI4MTI3X1NEU19DTUQsIFI4MTI3X1NEU19DTURfRVhFQyk7XFxuK1xcbitcXHRpZiAocnRsX2xvb3Bfd2FpdF9sb3codHAsIFxcdTAwMjZyODEyN19zZHNfY21kX2NvbmQsIDEwLCAxMDApKVxcbitcXHRcXHRyZXR1cm4gUlRMX1IxNih0cCwgUjgxMjdfU0RTX0RBVEFfT1VUKTtcXG4rXFxuK1xcdHJldHVybiAweGZmZmY7XFxuK31cXG4rXFxuK3N0YXRpYyB2b2lkIHI4MTI3X3Nkc193cml0ZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgdTE2IGluZGV4LCB1MTYgcGFnZSxcXG4rXFx0XFx0XFx0ICAgIHUxNiByZWcsIHUxNiB2YWwpXFxuK3tcXG4rXFx0dTE2IGFkZHIgPSAoaW5kZXggXFx1MDAzY1xcdTAwM2MgMTEpIHwgKHBhZ2UgXFx1MDAzY1xcdTAwM2MgNSkgfCByZWc7XFxuK1xcbitcXHRSVExfVzE2KHRwLCBSODEyN19TRFNfREFUQV9JTiwgdmFsKTtcXG4rXFx0UlRMX1cxNih0cCwgUjgxMjdfU0RTX0FERFIsIGFkZHIpO1xcbitcXHRSVExfVzE2KHRwLCBSODEyN19TRFNfQ01ELCBSODEyN19TRFNfQ01EX0VYRUMgfCBSODEyN19TRFNfQ01EX1dFKTtcXG4rXFxuK1xcdHJ0bF9sb29wX3dhaXRfbG93KHRwLCBcXHUwMDI2cjgxMjdfc2RzX2NtZF9jb25kLCAxMCwgMTAwKTtcXG4rfVxcbitcXG4rc3RhdGljIHZvaWQgcjgxMjdfc2RzX21vZGlmeShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgdTE2IGluZGV4LCB1MTYgcGFnZSxcXG4rXFx0XFx0XFx0ICAgICB1MTYgcmVnLCB1MTYgY2xlYXJtYXNrLCB1MTYgc2V0bWFzaylcXG4re1xcbitcXHR1MTYgdmFsID0gcjgxMjdfc2RzX3JlYWQodHAsIGluZGV4LCBwYWdlLCByZWcpO1xcbitcXG4rXFx0dmFsID0gKHZhbCBcXHUwMDI2IH5jbGVhcm1hc2spIHwgc2V0bWFzaztcXG4rXFx0cjgxMjdfc2RzX3dyaXRlKHRwLCBpbmRleCwgcGFnZSwgcmVnLCB2YWwpO1xcbit9XFxuK1xcbitzdGF0aWMgdm9pZCByODEyN19zZnBfaW5pdF8xZyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcXG4re1xcbitcXHRpbnQgdmFsO1xcbitcXG4rXFx0cjgxMjdfc2ZwX3Nkc19waHlfcmVzZXQodHApO1xcbitcXG4rXFx0cjgxMjdfc2RzX21vZGlmeSh0cCwgMCwgMSwgMzEsIDAsIEJJVCgzKSk7XFxuK1xcdHI4MTI3X3Nkc19tb2RpZnkodHAsIDAsIDIsICAwLCBCSVQoMTMpIHwgQklUKDEyKSB8IEJJVCg2KSwgQklUKDEyKSB8IEJJVCg2KSk7XFxuK1xcdHI4MTI3X3Nkc19tb2RpZnkodHAsIDAsIDAsICA0LCAwLCBCSVQoMikpO1xcbitcXG4rXFx0UlRMX1cxNih0cCwgMHgyMzNhLCAweDgwMDQpO1xcbitcXHRSVExfVzE2KHRwLCAweDIzM2UsIChSVExfUjE2KHRwLCAweDIzM2UpIFxcdTAwMjYgfjB4MzAwMykgfCAweDAwMDIpO1xcbitcXG4rXFx0cjgxNjhfcGh5X29jcF93cml0ZSh0cCwgMHhjNDBhLCAweDAwMDApO1xcbitcXHRyODE2OF9waHlfb2NwX3dyaXRlKHRwLCAweGM0NjYsIDB4MDAwMCk7XFxuK1xcdHI4MTY4X3BoeV9vY3Bfd3JpdGUodHAsIDB4YzgwOCwgMHgwMDAwKTtcXG4rXFx0cjgxNjhfcGh5X29jcF93cml0ZSh0cCwgMHhjODBhLCAweDAwMDApO1xcbitcXG4rXFx0dmFsID0gcjgxNjhfcGh5X29jcF9yZWFkKHRwLCAweGM4MDQpO1xcbitcXHRyODE2OF9waHlfb2NwX3dyaXRlKHRwLCAweGM4MDQsICh2YWwgXFx1MDAyNiB+MHgwMDBmKSB8IDB4MDAwYyk7XFxuK31cXG4rXFxuIHN0YXRpYyB2b2lkIHI4MTI3X3NmcF9pbml0XzEwZyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcXG4ge1xcbiBcXHRpbnQgdmFsO1xcbkBAIC0xMjE3LDEyICsxMzEwLDYgQEAgc3RhdGljIHZvaWQgcjgxMjdfc2ZwX2luaXRfMTBnKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxcbiBcXHRyODE2OF9waHlfb2NwX3dyaXRlKHRwLCAweGM4MDQsICh2YWwgXFx1MDAyNiB+MHgwMDBmKSB8IDB4MDAwYyk7XFxuIH1cXG4gXFxuLXN0YXRpYyB2b2lkIHJ0bF9zZnBfaW5pdChzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcXG4te1xcbi1cXHRpZiAodHAtXFx1MDAzZW1hY192ZXJzaW9uID09IFJUTF9HSUdBX01BQ19WRVJfODApXFxuLVxcdFxcdHI4MTI3X3NmcF9pbml0XzEwZyh0cCk7XFxuLX1cXG4tXFxuIHN0YXRpYyB2b2lkIHJ0bF9zZnBfcmVzZXQoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXFxuIHtcXG4gXFx0aWYgKHRwLVxcdTAwM2VtYWNfdmVyc2lvbiA9PSBSVExfR0lHQV9NQUNfVkVSXzgwKVxcbkBAIC0xMjgzLDYgKzEzNzAsMTUgQEAgc3RhdGljIHZvaWQgbWFjX21jdV93cml0ZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgaW50IHJlZywgaW50IHZhbHVlKVxcbiBcXHRyODE2OF9tYWNfb2NwX3dyaXRlKHRwLCB0cC1cXHUwMDNlb2NwX2Jhc2UgKyByZWcsIHZhbHVlKTtcXG4gfVxcbiBcXG4rc3RhdGljIGJvb2wgcnRsX2lzXzgxMTZhZihzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcXG4re1xcbitcXHRyZXR1cm4gdHAtXFx1MDAzZW1hY192ZXJzaW9uID09IFJUTF9HSUdBX01BQ19WRVJfNTIgXFx1MDAyNlxcdTAwMjZcXG4rXFx0XFx0KHI4MTY4X21hY19vY3BfcmVhZCh0cCwgUlRMX1BLR19ERVRFQ1QpIFxcdTAwMjYgUlRMX1BLR19ERVRFQ1RfTUFTSykgPT1cXG4rXFx0XFx0UlRMX1BLR19ERVRFQ1RfODExNkFGIFxcdTAwMjZcXHUwMDI2XFxuK1xcdFxcdChyODE2OF9tYWNfb2NwX3JlYWQodHAsIFJUTF9JTlRfSFdfSUQpIFxcdTAwMjYgUlRMX0lOVF9IV19JRF9NQVNLKSA9PVxcbitcXHRcXHRSVExfSU5UX0hXX0lEXzgxMTZBRjtcXG4rfVxcbitcXG4gc3RhdGljIGludCBtYWNfbWN1X3JlYWQoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIGludCByZWcpXFxuIHtcXG4gXFx0cmV0dXJuIHI4MTY4X21hY19vY3BfcmVhZCh0cCwgdHAtXFx1MDAzZW9jcF9iYXNlICsgcmVnKTtcXG5AQCAtMTU3OCw2ICsxNjc0LDIwIEBAIHN0YXRpYyBib29sIHJ0bF9kYXNoX2lzX2VuYWJsZWQoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXFxuIFxcdH1cXG4gfVxcbiBcXG4rc3RhdGljIGVudW0gcnRsX3NmcF9tb2RlIHJ0bF9nZXRfc2ZwX21vZGUoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXFxuK3tcXG4rXFx0aWYgKHJ0bF9pc184MTI1KHRwKSkge1xcbitcXHRcXHR1MTYgZGF0YSA9IHI4MTY4X21hY19vY3BfcmVhZCh0cCwgUlRMX0lOVF9IV19JRCk7XFxuK1xcbitcXHRcXHRpZiAoKGRhdGEgXFx1MDAyNiAweGZmKSA9PSAweDA3KVxcbitcXHRcXHRcXHRyZXR1cm4gUlRMX1NGUF84MTI3X0FURjtcXG4rXFx0fSBlbHNlIGlmIChydGxfaXNfODExNmFmKHRwKSkge1xcbitcXHRcXHRyZXR1cm4gUlRMX1NGUF84MTY4X0FGO1xcbitcXHR9XFxuK1xcbitcXHRyZXR1cm4gUlRMX1NGUF9OT05FO1xcbit9XFxuK1xcbiBzdGF0aWMgZW51bSBydGxfZGFzaF90eXBlIHJ0bF9nZXRfZGFzaF90eXBlKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxcbiB7XFxuIFxcdHN3aXRjaCAodHAtXFx1MDAzZW1hY192ZXJzaW9uKSB7XFxuQEAgLTE2NzMsMTYgKzE3ODMsMTQgQEAgc3RhdGljIHZvaWQgcnRsODE2OV9pcnFfbWFza19hbmRfYWNrKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxcbiBcXHRydGxfcGNpX2NvbW1pdCh0cCk7XFxuIH1cXG4gXFxuLXN0YXRpYyB2b2lkIHJ0bF9saW5rX2NoZ19wYXRjaChzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcXG4rc3RhdGljIHZvaWQgcnRsX2xpbmtfY2hnX3BhdGNoKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCBpbnQgc3BlZWQpXFxuIHtcXG4tXFx0c3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiA9IHRwLVxcdTAwM2VwaHlkZXY7XFxuLVxcbiBcXHRpZiAodHAtXFx1MDAzZW1hY192ZXJzaW9uID09IFJUTF9HSUdBX01BQ19WRVJfMzQgfHxcXG4gXFx0ICAgIHRwLVxcdTAwM2VtYWNfdmVyc2lvbiA9PSBSVExfR0lHQV9NQUNfVkVSXzM4KSB7XFxuLVxcdFxcdGlmIChwaHlkZXYtXFx1MDAzZXNwZWVkID09IFNQRUVEXzEwMDApIHtcXG4rXFx0XFx0aWYgKHNwZWVkID09IFNQRUVEXzEwMDApIHtcXG4gXFx0XFx0XFx0cnRsX2VyaV93cml0ZSh0cCwgMHgxYmMsIEVSSUFSX01BU0tfMTExMSwgMHgwMDAwMDAxMSk7XFxuIFxcdFxcdFxcdHJ0bF9lcmlfd3JpdGUodHAsIDB4MWRjLCBFUklBUl9NQVNLXzExMTEsIDB4MDAwMDAwMDUpO1xcbi1cXHRcXHR9IGVsc2UgaWYgKHBoeWRldi1cXHUwMDNlc3BlZWQgPT0gU1BFRURfMTAwKSB7XFxuK1xcdFxcdH0gZWxzZSBpZiAoc3BlZWQgPT0gU1BFRURfMTAwKSB7XFxuIFxcdFxcdFxcdHJ0bF9lcmlfd3JpdGUodHAsIDB4MWJjLCBFUklBUl9NQVNLXzExMTEsIDB4MDAwMDAwMWYpO1xcbiBcXHRcXHRcXHRydGxfZXJpX3dyaXRlKHRwLCAweDFkYywgRVJJQVJfTUFTS18xMTExLCAweDAwMDAwMDA1KTtcXG4gXFx0XFx0fSBlbHNlIHtcXG5AQCAtMTY5Miw3ICsxODAwLDcgQEAgc3RhdGljIHZvaWQgcnRsX2xpbmtfY2hnX3BhdGNoKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxcbiBcXHRcXHRydGxfcmVzZXRfcGFja2V0X2ZpbHRlcih0cCk7XFxuIFxcdH0gZWxzZSBpZiAodHAtXFx1MDAzZW1hY192ZXJzaW9uID09IFJUTF9HSUdBX01BQ19WRVJfMzUgfHxcXG4gXFx0XFx0ICAgdHAtXFx1MDAzZW1hY192ZXJzaW9uID09IFJUTF9HSUdBX01BQ19WRVJfMzYpIHtcXG4tXFx0XFx0aWYgKHBoeWRldi1cXHUwMDNlc3BlZWQgPT0gU1BFRURfMTAwMCkge1xcbitcXHRcXHRpZiAoc3BlZWQgPT0gU1BFRURfMTAwMCkge1xcbiBcXHRcXHRcXHRydGxfZXJpX3dyaXRlKHRwLCAweDFiYywgRVJJQVJfTUFTS18xMTExLCAweDAwMDAwMDExKTtcXG4gXFx0XFx0XFx0cnRsX2VyaV93cml0ZSh0cCwgMHgxZGMsIEVSSUFSX01BU0tfMTExMSwgMHgwMDAwMDAwNSk7XFxuIFxcdFxcdH0gZWxzZSB7XFxuQEAgLTE3MDAsNyArMTgwOCw3IEBAIHN0YXRpYyB2b2lkIHJ0bF9saW5rX2NoZ19wYXRjaChzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcXG4gXFx0XFx0XFx0cnRsX2VyaV93cml0ZSh0cCwgMHgxZGMsIEVSSUFSX01BU0tfMTExMSwgMHgwMDAwMDAzZik7XFxuIFxcdFxcdH1cXG4gXFx0fSBlbHNlIGlmICh0cC1cXHUwMDNlbWFjX3ZlcnNpb24gPT0gUlRMX0dJR0FfTUFDX1ZFUl8zNykge1xcbi1cXHRcXHRpZiAocGh5ZGV2LVxcdTAwM2VzcGVlZCA9PSBTUEVFRF8xMCkge1xcbitcXHRcXHRpZiAoc3BlZWQgPT0gU1BFRURfMTApIHtcXG4gXFx0XFx0XFx0cnRsX2VyaV93cml0ZSh0cCwgMHgxZDAsIEVSSUFSX01BU0tfMDAxMSwgMHg0ZDAyKTtcXG4gXFx0XFx0XFx0cnRsX2VyaV93cml0ZSh0cCwgMHgxZGMsIEVSSUFSX01BU0tfMDAxMSwgMHgwMDYwYSk7XFxuIFxcdFxcdH0gZWxzZSB7XFxuQEAgLTIwNzQsMTEgKzIxODIsMTEgQEAgcnRsX2NvYWxlc2NlX2luZm8oc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXFxuIFxcdFxcdGNpID0gcnRsX2NvYWxlc2NlX2luZm9fODE2OF84MTM2O1xcbiBcXG4gXFx0LyogaWYgc3BlZWQgaXMgdW5rbm93biBhc3N1bWUgaGlnaGVzdCBvbmUgKi9cXG4tXFx0aWYgKHRwLVxcdTAwM2VwaHlkZXYtXFx1MDAzZXNwZWVkID09IFNQRUVEX1VOS05PV04pXFxuK1xcdGlmICh0cC1cXHUwMDNlc3BlZWQgPT0gU1BFRURfVU5LTk9XTilcXG4gXFx0XFx0cmV0dXJuIGNpO1xcbiBcXG4gXFx0Zm9yICg7IGNpLVxcdTAwM2VzcGVlZDsgY2krKykge1xcbi1cXHRcXHRpZiAodHAtXFx1MDAzZXBoeWRldi1cXHUwMDNlc3BlZWQgPT0gY2ktXFx1MDAzZXNwZWVkKVxcbitcXHRcXHRpZiAodHAtXFx1MDAzZXNwZWVkID09IGNpLVxcdTAwM2VzcGVlZClcXG4gXFx0XFx0XFx0cmV0dXJuIGNpO1xcbiBcXHR9XFxuIFxcbkBAIC0yMjM2LDcgKzIzNDQsNyBAQCBzdGF0aWMgdm9pZCBydGxfc2V0X2VlZV90eGlkbGVfdGltZXIoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXFxuIFxcbiBzdGF0aWMgdW5zaWduZWQgaW50IHI4MTY5X2dldF90eF9scGlfdGltZXJfdXMoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXFxuIHtcXG4tXFx0dW5zaWduZWQgaW50IHNwZWVkID0gdHAtXFx1MDAzZXBoeWRldi1cXHUwMDNlc3BlZWQ7XFxuK1xcdHVuc2lnbmVkIGludCBzcGVlZCA9IHRwLVxcdTAwM2VzcGVlZDtcXG4gXFx0dW5zaWduZWQgaW50IHRpbWVyID0gdHAtXFx1MDAzZXR4X2xwaV90aW1lcjtcXG4gXFxuIFxcdGlmICghdGltZXIgfHwgc3BlZWQgPT0gU1BFRURfVU5LTk9XTilcXG5AQCAtMjI1NCw3ICsyMzYyLDcgQEAgc3RhdGljIGludCBydGw4MTY5X2dldF9lZWUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IGV0aHRvb2xfa2VlZSAqZGF0YSlcXG4gXFx0aWYgKCFydGxfc3VwcG9ydHNfZWVlKHRwKSlcXG4gXFx0XFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xcbiBcXG4tXFx0cmV0ID0gcGh5X2V0aHRvb2xfZ2V0X2VlZSh0cC1cXHUwMDNlcGh5ZGV2LCBkYXRhKTtcXG4rXFx0cmV0ID0gcGh5bGlua19ldGh0b29sX2dldF9lZWUodHAtXFx1MDAzZXBoeWxpbmssIGRhdGEpO1xcbiBcXHRpZiAocmV0KVxcbiBcXHRcXHRyZXR1cm4gcmV0O1xcbiBcXG5AQCAtMjI3MCw3ICsyMzc4LDcgQEAgc3RhdGljIGludCBydGw4MTY5X3NldF9lZWUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IGV0aHRvb2xfa2VlZSAqZGF0YSlcXG4gXFx0aWYgKCFydGxfc3VwcG9ydHNfZWVlKHRwKSlcXG4gXFx0XFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xcbiBcXG4tXFx0cmV0dXJuIHBoeV9ldGh0b29sX3NldF9lZWUodHAtXFx1MDAzZXBoeWRldiwgZGF0YSk7XFxuK1xcdHJldHVybiBwaHlsaW5rX2V0aHRvb2xfc2V0X2VlZSh0cC1cXHUwMDNlcGh5bGluaywgZGF0YSk7XFxuIH1cXG4gXFxuIHN0YXRpYyB2b2lkIHJ0bDgxNjlfZ2V0X3JpbmdwYXJhbShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbkBAIC0yMzAxLDEzICsyNDA5LDggQEAgc3RhdGljIHZvaWQgcnRsODE2OV9nZXRfcGF1c2VwYXJhbShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbiBcXHRcXHRcXHRcXHQgICBzdHJ1Y3QgZXRodG9vbF9wYXVzZXBhcmFtICpkYXRhKVxcbiB7XFxuIFxcdHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwID0gbmV0ZGV2X3ByaXYoZGV2KTtcXG4tXFx0Ym9vbCB0eF9wYXVzZSwgcnhfcGF1c2U7XFxuIFxcbi1cXHRwaHlfZ2V0X3BhdXNlKHRwLVxcdTAwM2VwaHlkZXYsIFxcdTAwMjZ0eF9wYXVzZSwgXFx1MDAyNnJ4X3BhdXNlKTtcXG4tXFxuLVxcdGRhdGEtXFx1MDAzZWF1dG9uZWcgPSB0cC1cXHUwMDNlcGh5ZGV2LVxcdTAwM2VhdXRvbmVnO1xcbi1cXHRkYXRhLVxcdTAwM2V0eF9wYXVzZSA9IHR4X3BhdXNlID8gMSA6IDA7XFxuLVxcdGRhdGEtXFx1MDAzZXJ4X3BhdXNlID0gcnhfcGF1c2UgPyAxIDogMDtcXG4rXFx0cGh5bGlua19ldGh0b29sX2dldF9wYXVzZXBhcmFtKHRwLVxcdTAwM2VwaHlsaW5rLCBkYXRhKTtcXG4gfVxcbiBcXG4gc3RhdGljIGludCBydGw4MTY5X3NldF9wYXVzZXBhcmFtKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuQEAgLTIzMTgsOSArMjQyMSw3IEBAIHN0YXRpYyBpbnQgcnRsODE2OV9zZXRfcGF1c2VwYXJhbShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbiBcXHRpZiAoZGV2LVxcdTAwM2VtdHUgXFx1MDAzZSBFVEhfREFUQV9MRU4pXFxuIFxcdFxcdHJldHVybiAtRU9QTk9UU1VQUDtcXG4gXFxuLVxcdHBoeV9zZXRfYXN5bV9wYXVzZSh0cC1cXHUwMDNlcGh5ZGV2LCBkYXRhLVxcdTAwM2VyeF9wYXVzZSwgZGF0YS1cXHUwMDNldHhfcGF1c2UpO1xcbi1cXG4tXFx0cmV0dXJuIDA7XFxuK1xcdHJldHVybiBwaHlsaW5rX2V0aHRvb2xfc2V0X3BhdXNlcGFyYW0odHAtXFx1MDAzZXBoeWxpbmssIGRhdGEpO1xcbiB9XFxuIFxcbiBzdGF0aWMgdm9pZCBydGw4MTY5X2dldF9ldGhfbWFjX3N0YXRzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuQEAgLTIzODYsMzQgKzI0ODcsMjcgQEAgc3RhdGljIHZvaWQgcnRsODE2OV9nZXRfZXRoX2N0cmxfc3RhdHMoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4gXFx0XFx0bGUzMl90b19jcHUodHAtXFx1MDAzZWNvdW50ZXJzLVxcdTAwM2VyeF91bmtub3duX29wY29kZSk7XFxuIH1cXG4gXFxuLXN0YXRpYyBpbnQgcnRsODE2OV9zZXRfbGlua19rc2V0dGluZ3Moc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXFxuLVxcdFxcdFxcdFxcdCAgICAgIGNvbnN0IHN0cnVjdCBldGh0b29sX2xpbmtfa3NldHRpbmdzICpjbWQpXFxuK3N0YXRpYyBpbnQgcnRsODE2OV9nZXRfbGlua19rc2V0dGluZ3Moc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXFxuK1xcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBldGh0b29sX2xpbmtfa3NldHRpbmdzICpjbWQpXFxuIHtcXG4gXFx0c3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAgPSBuZXRkZXZfcHJpdihuZGV2KTtcXG4tXFx0c3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiA9IHRwLVxcdTAwM2VwaHlkZXY7XFxuLVxcdGludCBkdXBsZXggPSBjbWQtXFx1MDAzZWJhc2UuZHVwbGV4O1xcbi1cXHRpbnQgc3BlZWQgPSBjbWQtXFx1MDAzZWJhc2Uuc3BlZWQ7XFxuLVxcbi1cXHRpZiAoIXRwLVxcdTAwM2VzZnBfbW9kZSlcXG4tXFx0XFx0cmV0dXJuIHBoeV9ldGh0b29sX2tzZXR0aW5nc19zZXQocGh5ZGV2LCBjbWQpO1xcbi1cXG4tXFx0aWYgKGNtZC1cXHUwMDNlYmFzZS5hdXRvbmVnICE9IEFVVE9ORUdfRElTQUJMRSlcXG4tXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIFxcbi1cXHRpZiAoIXBoeV9jaGVja192YWxpZChzcGVlZCwgZHVwbGV4LCBwaHlkZXYtXFx1MDAzZXN1cHBvcnRlZCkpXFxuLVxcdFxcdHJldHVybiAtRUlOVkFMO1xcbi1cXG4tXFx0bXV0ZXhfbG9jayhcXHUwMDI2cGh5ZGV2LVxcdTAwM2Vsb2NrKTtcXG4rXFx0cmV0dXJuIHBoeWxpbmtfZXRodG9vbF9rc2V0dGluZ3NfZ2V0KHRwLVxcdTAwM2VwaHlsaW5rLCBjbWQpO1xcbit9XFxuIFxcbi1cXHRwaHlkZXYtXFx1MDAzZWF1dG9uZWcgPSBBVVRPTkVHX0RJU0FCTEU7XFxuLVxcdHBoeWRldi1cXHUwMDNlc3BlZWQgPSBzcGVlZDtcXG4tXFx0cGh5ZGV2LVxcdTAwM2VkdXBsZXggPSBkdXBsZXg7XFxuK3N0YXRpYyBpbnQgcnRsODE2OV9zZXRfbGlua19rc2V0dGluZ3Moc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXFxuK1xcdFxcdFxcdFxcdCAgICAgIGNvbnN0IHN0cnVjdCBldGh0b29sX2xpbmtfa3NldHRpbmdzICpjbWQpXFxuK3tcXG4rXFx0c3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAgPSBuZXRkZXZfcHJpdihuZGV2KTtcXG4gXFxuLVxcdHJ0bF9zZnBfaW5pdCh0cCk7XFxuK1xcdHJldHVybiBwaHlsaW5rX2V0aHRvb2xfa3NldHRpbmdzX3NldCh0cC1cXHUwMDNlcGh5bGluaywgY21kKTtcXG4rfVxcbiBcXG4tXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZwaHlkZXYtXFx1MDAzZWxvY2spO1xcbitzdGF0aWMgaW50IHJ0bDgxNjlfbndheV9yZXNldChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbit7XFxuK1xcdHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwID0gbmV0ZGV2X3ByaXYoZGV2KTtcXG4gXFxuLVxcdHJldHVybiAwO1xcbitcXHRyZXR1cm4gcGh5bGlua19ldGh0b29sX253YXlfcmVzZXQodHAtXFx1MDAzZXBoeWxpbmspO1xcbiB9XFxuIFxcbiBzdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIHJ0bDgxNjlfZXRodG9vbF9vcHMgPSB7XFxuQEAgLTI0MzEsMTAgKzI1MjUsMTAgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBydGw4MTY5X2V0aHRvb2xfb3BzID0ge1xcbiBcXHQuZ2V0X3NzZXRfY291bnRcXHRcXHQ9IHJ0bDgxNjlfZ2V0X3NzZXRfY291bnQsXFxuIFxcdC5nZXRfZXRodG9vbF9zdGF0c1xcdD0gcnRsODE2OV9nZXRfZXRodG9vbF9zdGF0cyxcXG4gXFx0LmdldF90c19pbmZvXFx0XFx0PSBldGh0b29sX29wX2dldF90c19pbmZvLFxcbi1cXHQubndheV9yZXNldFxcdFxcdD0gcGh5X2V0aHRvb2xfbndheV9yZXNldCxcXG4rXFx0Lm53YXlfcmVzZXRcXHRcXHQ9IHJ0bDgxNjlfbndheV9yZXNldCxcXG4gXFx0LmdldF9lZWVcXHRcXHQ9IHJ0bDgxNjlfZ2V0X2VlZSxcXG4gXFx0LnNldF9lZWVcXHRcXHQ9IHJ0bDgxNjlfc2V0X2VlZSxcXG4tXFx0LmdldF9saW5rX2tzZXR0aW5nc1xcdD0gcGh5X2V0aHRvb2xfZ2V0X2xpbmtfa3NldHRpbmdzLFxcbitcXHQuZ2V0X2xpbmtfa3NldHRpbmdzXFx0PSBydGw4MTY5X2dldF9saW5rX2tzZXR0aW5ncyxcXG4gXFx0LnNldF9saW5rX2tzZXR0aW5nc1xcdD0gcnRsODE2OV9zZXRfbGlua19rc2V0dGluZ3MsXFxuIFxcdC5nZXRfcmluZ3BhcmFtXFx0XFx0PSBydGw4MTY5X2dldF9yaW5ncGFyYW0sXFxuIFxcdC5nZXRfcGF1c2Vfc3RhdHNcXHQ9IHJ0bDgxNjlfZ2V0X3BhdXNlX3N0YXRzLFxcbkBAIC0yNDk5LDkgKzI1OTMsMTAgQEAgdm9pZCByODE2OV9hcHBseV9maXJtd2FyZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcXG4gXFx0XFx0dHAtXFx1MDAzZW9jcF9iYXNlID0gT0NQX1NURF9QSFlfQkFTRTtcXG4gXFxuIFxcdFxcdC8qIFBIWSBzb2Z0IHJlc2V0IG1heSBzdGlsbCBiZSBpbiBwcm9ncmVzcyAqL1xcbi1cXHRcXHRwaHlfcmVhZF9wb2xsX3RpbWVvdXQodHAtXFx1MDAzZXBoeWRldiwgTUlJX0JNQ1IsIHZhbCxcXG4tXFx0XFx0XFx0XFx0ICAgICAgISh2YWwgXFx1MDAyNiBCTUNSX1JFU0VUKSxcXG4tXFx0XFx0XFx0XFx0ICAgICAgNTAwMDAsIDYwMDAwMCwgdHJ1ZSk7XFxuK1xcdFxcdGlmICh0cC1cXHUwMDNlcGh5ZGV2KVxcbitcXHRcXHRcXHRwaHlfcmVhZF9wb2xsX3RpbWVvdXQodHAtXFx1MDAzZXBoeWRldiwgTUlJX0JNQ1IsIHZhbCxcXG4rXFx0XFx0XFx0XFx0XFx0ICAgICAgISh2YWwgXFx1MDAyNiBCTUNSX1JFU0VUKSxcXG4rXFx0XFx0XFx0XFx0XFx0ICAgICAgNTAwMDAsIDYwMDAwMCwgdHJ1ZSk7XFxuIFxcdH1cXG4gfVxcbiBcXG5AQCAtMjUzOCw2ICsyNjMzLDggQEAgc3RhdGljIHZvaWQgcnRsX3NjaGVkdWxlX3Rhc2soc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIGVudW0gcnRsX2ZsYWcgZmxhZylcXG4gXFxuIHN0YXRpYyB2b2lkIHJ0bDgxNjlfaW5pdF9waHkoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXFxuIHtcXG4rXFx0cGh5X2luaXRfaHcodHAtXFx1MDAzZXBoeWRldik7XFxuK1xcdHBoeV9yZXN1bWUodHAtXFx1MDAzZXBoeWRldik7XFxuIFxcdHI4MTY5X2h3X3BoeV9jb25maWcodHAsIHRwLVxcdTAwM2VwaHlkZXYsIHRwLVxcdTAwM2VtYWNfdmVyc2lvbik7XFxuIFxcbiBcXHRpZiAodHAtXFx1MDAzZW1hY192ZXJzaW9uIFxcdTAwM2M9IFJUTF9HSUdBX01BQ19WRVJfMDYpIHtcXG5AQCAtMjU1Miw5ICsyNjQ5LDYgQEAgc3RhdGljIHZvaWQgcnRsODE2OV9pbml0X3BoeShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcXG4gXFx0ICAgIHRwLVxcdTAwM2VwY2lfZGV2LVxcdTAwM2VzdWJzeXN0ZW1fZGV2aWNlID09IDB4ZTAwMClcXG4gXFx0XFx0cGh5X3dyaXRlX3BhZ2VkKHRwLVxcdTAwM2VwaHlkZXYsIDB4MDAwMSwgMHgxMCwgMHhmMDFiKTtcXG4gXFxuLVxcdGlmICh0cC1cXHUwMDNlc2ZwX21vZGUpXFxuLVxcdFxcdHJ0bF9zZnBfaW5pdCh0cCk7XFxuLVxcbiBcXHQvKiBXZSBtYXkgaGF2ZSBjYWxsZWQgcGh5X3NwZWVkX2Rvd24gYmVmb3JlICovXFxuIFxcdHBoeV9zcGVlZF91cCh0cC1cXHUwMDNlcGh5ZGV2KTtcXG4gXFxuQEAgLTI2NTcsMTUgKzI3NTEsNiBAQCBzdGF0aWMgdm9pZCBydGxfanVtYm9fY29uZmlnKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxcbiBcXG4gXFx0aWYgKHBjaV9pc19wY2llKHRwLVxcdTAwM2VwY2lfZGV2KSBcXHUwMDI2XFx1MDAyNiB0cC1cXHUwMDNlc3VwcG9ydHNfZ21paSlcXG4gXFx0XFx0cGNpZV9zZXRfcmVhZHJxKHRwLVxcdTAwM2VwY2lfZGV2LCByZWFkcnEpO1xcbi1cXG4tXFx0LyogQ2hpcCBkb2Vzbid0IHN1cHBvcnQgcGF1c2UgaW4ganVtYm8gbW9kZSAqL1xcbi1cXHRpZiAoanVtYm8pIHtcXG4tXFx0XFx0bGlua21vZGVfY2xlYXJfYml0KEVUSFRPT0xfTElOS19NT0RFX1BhdXNlX0JJVCxcXG4tXFx0XFx0XFx0XFx0ICAgdHAtXFx1MDAzZXBoeWRldi1cXHUwMDNlYWR2ZXJ0aXNpbmcpO1xcbi1cXHRcXHRsaW5rbW9kZV9jbGVhcl9iaXQoRVRIVE9PTF9MSU5LX01PREVfQXN5bV9QYXVzZV9CSVQsXFxuLVxcdFxcdFxcdFxcdCAgIHRwLVxcdTAwM2VwaHlkZXYtXFx1MDAzZWFkdmVydGlzaW5nKTtcXG4tXFx0XFx0cGh5X3N0YXJ0X2FuZWcodHAtXFx1MDAzZXBoeWRldik7XFxuLVxcdH1cXG4gfVxcbiBcXG4gREVDTEFSRV9SVExfQ09ORChydGxfY2hpcGNtZF9jb25kKVxcbkBAIC0yNzgwLDcgKzI4NjUsNyBAQCBzdGF0aWMgdm9pZCBydGxfcHJlcGFyZV9wb3dlcl9kb3duKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxcbiBcXHRcXHRydGxfZXBoeV93cml0ZSh0cCwgMHgxOSwgMHhmZjY0KTtcXG4gXFxuIFxcdGlmIChkZXZpY2VfbWF5X3dha2V1cCh0cF90b19kZXYodHApKSkge1xcbi1cXHRcXHRwaHlfc3BlZWRfZG93bih0cC1cXHUwMDNlcGh5ZGV2LCBmYWxzZSk7XFxuK1xcdFxcdHBoeWxpbmtfc3BlZWRfZG93bih0cC1cXHUwMDNlcGh5bGluaywgZmFsc2UpO1xcbiBcXHRcXHRydGxfd29sX2VuYWJsZV9yeCh0cCk7XFxuIFxcdH1cXG4gfVxcbkBAIC0yODMyLDYgKzI5MTcsMTYgQEAgc3RhdGljIHZvaWQgcnRsODE2OV9zZXRfbWFnaWNfcmVnKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxcbiBcXHRSVExfVzMyKHRwLCAweDdjLCB2YWwpO1xcbiB9XFxuIFxcbitzdGF0aWMgaW50IHJ0bDgxNjlfaW9jdGwoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IGlmcmVxICppZnIsIGludCBjbWQpXFxuK3tcXG4rXFx0c3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAgPSBuZXRkZXZfcHJpdihkZXYpO1xcbitcXG4rXFx0aWYgKCFuZXRpZl9ydW5uaW5nKGRldikpXFxuK1xcdFxcdHJldHVybiAtRU5PREVWO1xcbitcXG4rXFx0cmV0dXJuIHBoeWxpbmtfbWlpX2lvY3RsKHRwLVxcdTAwM2VwaHlsaW5rLCBpZnIsIGNtZCk7XFxuK31cXG4rXFxuIHN0YXRpYyB2b2lkIHJ0bF9zZXRfcnhfbW9kZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbiB7XFxuIFxcdHUzMiByeF9tb2RlID0gQWNjZXB0QnJvYWRjYXN0IHwgQWNjZXB0TXlQaHlzIHwgQWNjZXB0TXVsdGljYXN0O1xcbkBAIC0zMDk4LDggKzMxOTMsMjIgQEAgc3RhdGljIHZvaWQgcnRsX2VuYWJsZV9sdHIoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXFxuIFxcdFxcdHI4MTY4X21hY19vY3Bfd3JpdGUodHAsIDB4Y2RmMiwgMHg5MDAzKTtcXG4gXFx0XFx0cjgxNjhfbWFjX29jcF9tb2RpZnkodHAsIExUUl9PQkZGX0xPQ0ssIDB4MDAwMCwgTElOS19TUEVFRF9DSEFOR0VfRU4pO1xcbiBcXHRcXHRicmVhaztcXG4tXFx0Y2FzZSBSVExfR0lHQV9NQUNfVkVSXzQ2IC4uLiBSVExfR0lHQV9NQUNfVkVSXzQ4OlxcbiBcXHRjYXNlIFJUTF9HSUdBX01BQ19WRVJfNTI6XFxuK1xcdFxcdHI4MTY4X21hY19vY3Bfd3JpdGUodHAsIDB4Y2RkMCwgMHg5MDAzKTtcXG4rXFx0XFx0cjgxNjhfbWFjX29jcF9tb2RpZnkodHAsIExUUl9TTk9PUCwgMHgwMDAwLCBMVFJfU05PT1BfRU4pO1xcbitcXHRcXHRyODE2OF9tYWNfb2NwX3dyaXRlKHRwLCAweGUwMmMsIDB4MTg4MCk7XFxuK1xcdFxcdHI4MTY4X21hY19vY3Bfd3JpdGUodHAsIDB4ZTAyZSwgMHg0ODgwKTtcXG4rXFx0XFx0cjgxNjhfbWFjX29jcF9tb2RpZnkodHAsIEFMRFBTX0xUUiwgMHgwMDAwLCBBTERQU19MVFJfRU4pO1xcbitcXHRcXHRyODE2OF9tYWNfb2NwX3dyaXRlKHRwLCAweGNkZDgsIDB4OTAwMyk7XFxuK1xcdFxcdHI4MTY4X21hY19vY3Bfd3JpdGUodHAsIDB4Y2RkYSwgMHg5MDAzKTtcXG4rXFx0XFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGRjLCAweDkwMDMpO1xcbitcXHRcXHRyODE2OF9tYWNfb2NwX3dyaXRlKHRwLCAweGNkZDIsIDB4ODgzYyk7XFxuK1xcdFxcdHI4MTY4X21hY19vY3Bfd3JpdGUodHAsIDB4Y2RkNCwgMHg4YzEyKTtcXG4rXFx0XFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGQ2LCAweDkwMDMpO1xcbitcXHRcXHRyODE2OF9tYWNfb2NwX3dyaXRlKHRwLCAweGUwYTYsIDB4OTAwMyk7XFxuK1xcdFxcdHI4MTY4X21hY19vY3Bfd3JpdGUodHAsIDB4ZTBhOCwgMHg5MDAzKTtcXG4rXFx0XFx0YnJlYWs7XFxuK1xcdGNhc2UgUlRMX0dJR0FfTUFDX1ZFUl80NiAuLi4gUlRMX0dJR0FfTUFDX1ZFUl80ODpcXG4gXFx0XFx0cjgxNjhfbWFjX29jcF9tb2RpZnkodHAsIEFMRFBTX0xUUiwgMHgwMDAwLCBBTERQU19MVFJfRU4pO1xcbiBcXHRcXHRSVExfVzgodHAsIENPTUJPX0xUUl9FWFRFTkQsIFJUTF9SOCh0cCwgQ09NQk9fTFRSX0VYVEVORCkgfCBDT01CT19MVFJfRVhURU5EX0VOKTtcXG4gXFx0XFx0ZmFsbHRocm91Z2g7XFxuQEAgLTMxMTksNiArMzIyOCw3IEBAIHN0YXRpYyB2b2lkIHJ0bF9lbmFibGVfbHRyKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxcbiBcXHR9XFxuIFxcdC8qIGNoaXAgY2FuIHRyaWdnZXIgTFRSICovXFxuIFxcdHI4MTY4X21hY19vY3BfbW9kaWZ5KHRwLCBMVFJfT0JGRl9MT0NLLCAweDAwMDMsIExUUl9PQkZGX0xPQ0tfRU4pO1xcbitcXHRyODE2OF9tYWNfb2NwX21vZGlmeSh0cCwgU0VORF9MVFJfTVNHLCAweDAwMDAsIExUUl9NU0dfRU4pO1xcbiB9XFxuIFxcbiBzdGF0aWMgdm9pZCBydGxfaHdfYXNwbV9jbGtyZXFfZW5hYmxlKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCBib29sIGVuYWJsZSlcXG5AQCAtMzE1Miw2ICszMjYyLDcgQEAgc3RhdGljIHZvaWQgcnRsX2h3X2FzcG1fY2xrcmVxX2VuYWJsZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgYm9vbCBlbmFibGUpXFxuIFxcdFxcdHJ0bF9lbmFibGVfbHRyKHRwKTtcXG4gXFx0XFx0c3dpdGNoICh0cC1cXHUwMDNlbWFjX3ZlcnNpb24pIHtcXG4gXFx0XFx0Y2FzZSBSVExfR0lHQV9NQUNfVkVSXzQ2IC4uLiBSVExfR0lHQV9NQUNfVkVSXzQ4OlxcbitcXHRcXHRjYXNlIFJUTF9HSUdBX01BQ19WRVJfNTI6XFxuIFxcdFxcdGNhc2UgUlRMX0dJR0FfTUFDX1ZFUl82MSAuLi4gUlRMX0dJR0FfTUFDX1ZFUl9MQVNUOlxcbiBcXHRcXHRcXHQvKiByZXNldCBlcGh5IHR4L3J4IGRpc2FibGUgdGltZXIgKi9cXG4gXFx0XFx0XFx0cjgxNjhfbWFjX29jcF9tb2RpZnkodHAsIDB4ZTA5NCwgMHhmZjAwLCAwKTtcXG5AQCAtMzE2NCw2ICszMjc1LDcgQEAgc3RhdGljIHZvaWQgcnRsX2h3X2FzcG1fY2xrcmVxX2VuYWJsZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgYm9vbCBlbmFibGUpXFxuIFxcdH0gZWxzZSB7XFxuIFxcdFxcdHN3aXRjaCAodHAtXFx1MDAzZW1hY192ZXJzaW9uKSB7XFxuIFxcdFxcdGNhc2UgUlRMX0dJR0FfTUFDX1ZFUl80NiAuLi4gUlRMX0dJR0FfTUFDX1ZFUl80ODpcXG4rXFx0XFx0Y2FzZSBSVExfR0lHQV9NQUNfVkVSXzUyOlxcbiBcXHRcXHRjYXNlIFJUTF9HSUdBX01BQ19WRVJfNjEgLi4uIFJUTF9HSUdBX01BQ19WRVJfTEFTVDpcXG4gXFx0XFx0XFx0cjgxNjhfbWFjX29jcF9tb2RpZnkodHAsIDB4ZTA5MiwgMHgwMGZmLCAwKTtcXG4gXFx0XFx0XFx0YnJlYWs7XFxuQEAgLTM2NTcsNiArMzc2OSwzNSBAQCBzdGF0aWMgdm9pZCBydGxfaHdfc3RhcnRfODE2OGVwXzMoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXFxuIFxcdHI4MTY4X21hY19vY3BfbW9kaWZ5KHRwLCAweGU4NjAsIDB4MDAwMCwgMHgwMDgwKTtcXG4gfVxcbiBcXG4rc3RhdGljIHZvaWQgcnRsX2xvd3Bvd2VyX2hpZGRlbl9mdW5jdGlvbnMoc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuK3tcXG4rXFx0dW5zaWduZWQgaW50IHNsb3QgPSBQQ0lfU0xPVChwZGV2LVxcdTAwM2VkZXZmbik7XFxuK1xcdHN0cnVjdCBwY2lfYnVzICpidXMgPSBwZGV2LVxcdTAwM2VidXM7XFxuK1xcdHVuc2lnbmVkIGludCBkZXZmbjtcXG4rXFx0aW50IGZ1bmM7XFxuK1xcdGludCByZXQ7XFxuK1xcdHUzMiB2YWw7XFxuK1xcbitcXHRmb3IgKGZ1bmMgPSAyOyBmdW5jIFxcdTAwM2MgODsgZnVuYysrKSB7XFxuK1xcdFxcdGRldmZuID0gUENJX0RFVkZOKHNsb3QsIGZ1bmMpO1xcbitcXG4rXFx0XFx0cmV0ID0gcGNpX2J1c19yZWFkX2NvbmZpZ19kd29yZChidXMsIGRldmZuLCBSVEw4MTE2QUZfRlVOQ19QTV9DU1IsIFxcdTAwMjZ2YWwpO1xcbitcXHRcXHRpZiAoIXJldCBcXHUwMDI2XFx1MDAyNiAhUENJX1BPU1NJQkxFX0VSUk9SKHZhbCkpIHtcXG4rXFx0XFx0XFx0dmFsIFxcdTAwMjY9IH5QQ0lfUE1fQ1RSTF9QTUVfU1RBVFVTO1xcbitcXHRcXHRcXHR2YWwgXFx1MDAyNj0gfihQQ0lfUE1fQ1RSTF9TVEFURV9NQVNLIHwgUENJX1BNX0NUUkxfUE1FX0VOQUJMRSk7XFxuK1xcdFxcdFxcdHZhbCB8PSAoUlRMX1BNX0QzSE9UIHwgUENJX1BNX0NUUkxfUE1FX0VOQUJMRSk7XFxuK1xcdFxcdFxcdHBjaV9idXNfd3JpdGVfY29uZmlnX2R3b3JkKGJ1cywgZGV2Zm4sIFJUTDgxMTZBRl9GVU5DX1BNX0NTUiwgdmFsKTtcXG4rXFx0XFx0fVxcbitcXG4rXFx0XFx0cmV0ID0gcGNpX2J1c19yZWFkX2NvbmZpZ19kd29yZChidXMsIGRldmZuLCBSVEw4MTE2QUZfRlVOQ19FWFBfTE5LQ1RMLCBcXHUwMDI2dmFsKTtcXG4rXFx0XFx0aWYgKCFyZXQgXFx1MDAyNlxcdTAwMjYgIVBDSV9QT1NTSUJMRV9FUlJPUih2YWwpKSB7XFxuK1xcdFxcdFxcdHZhbCBcXHUwMDI2PSB+KChQQ0lfRVhQX0xOS1NUQV9MQk1TIHwgUENJX0VYUF9MTktTVEFfTEFCUykgXFx1MDAzY1xcdTAwM2MgMTYpO1xcbitcXHRcXHRcXHR2YWwgfD0gUENJX0VYUF9MTktDVExfQVNQTUM7XFxuK1xcdFxcdFxcdHBjaV9idXNfd3JpdGVfY29uZmlnX2R3b3JkKGJ1cywgZGV2Zm4sIFJUTDgxMTZBRl9GVU5DX0VYUF9MTktDVEwsIHZhbCk7XFxuK1xcdFxcdH1cXG4rXFx0fVxcbit9XFxuK1xcbiBzdGF0aWMgdm9pZCBydGxfaHdfc3RhcnRfODExNyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcXG4ge1xcbiBcXHRzdGF0aWMgY29uc3Qgc3RydWN0IGVwaHlfaW5mbyBlX2luZm9fODExN1tdID0ge1xcbkBAIC0zNjkzLDEyICszODM0LDE0IEBAIHN0YXRpYyB2b2lkIHJ0bF9od19zdGFydF84MTE3KHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxcbiBcXG4gXFx0cnRsX3BjaWVfc3RhdGVfbDJsM19kaXNhYmxlKHRwKTtcXG4gXFxuLVxcdHJnX3Nhd19jbnQgPSBwaHlfcmVhZF9wYWdlZCh0cC1cXHUwMDNlcGh5ZGV2LCAweDBjNDIsIDB4MTMpIFxcdTAwMjYgMHgzZmZmO1xcbi1cXHRpZiAocmdfc2F3X2NudCBcXHUwMDNlIDApIHtcXG4tXFx0XFx0dTE2IHN3X2NudF8xbXNfaW5pO1xcbitcXHRpZiAodHAtXFx1MDAzZXBoeWRldikge1xcbitcXHRcXHRyZ19zYXdfY250ID0gcGh5X3JlYWRfcGFnZWQodHAtXFx1MDAzZXBoeWRldiwgMHgwYzQyLCAweDEzKSBcXHUwMDI2IDB4M2ZmZjtcXG4rXFx0XFx0aWYgKHJnX3Nhd19jbnQgXFx1MDAzZSAwKSB7XFxuK1xcdFxcdFxcdHUxNiBzd19jbnRfMW1zX2luaTtcXG4gXFxuLVxcdFxcdHN3X2NudF8xbXNfaW5pID0gKDE2MDAwMDAwIC8gcmdfc2F3X2NudCkgXFx1MDAyNiAweDBmZmY7XFxuLVxcdFxcdHI4MTY4X21hY19vY3BfbW9kaWZ5KHRwLCAweGQ0MTIsIDB4MGZmZiwgc3dfY250XzFtc19pbmkpO1xcbitcXHRcXHRcXHRzd19jbnRfMW1zX2luaSA9ICgxNjAwMDAwMCAvIHJnX3Nhd19jbnQpIFxcdTAwMjYgMHgwZmZmO1xcbitcXHRcXHRcXHRyODE2OF9tYWNfb2NwX21vZGlmeSh0cCwgMHhkNDEyLCAweDBmZmYsIHN3X2NudF8xbXNfaW5pKTtcXG4rXFx0XFx0fVxcbiBcXHR9XFxuIFxcbiBcXHRyODE2OF9tYWNfb2NwX21vZGlmeSh0cCwgMHhlMDU2LCAweDAwZjAsIDB4MDAwMCk7XFxuQEAgLTM3MTEsNiArMzg1NCw5IEBAIHN0YXRpYyB2b2lkIHJ0bF9od19zdGFydF84MTE3KHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxcbiBcXHRyODE2OF9tYWNfb2NwX3dyaXRlKHRwLCAweGMwOTQsIDB4MDAwMCk7XFxuIFxcdHI4MTY4X21hY19vY3Bfd3JpdGUodHAsIDB4YzA5ZSwgMHgwMDAwKTtcXG4gXFxuK1xcdGlmIChydGxfaXNfODExNmFmKHRwKSlcXG4rXFx0XFx0cnRsX2xvd3Bvd2VyX2hpZGRlbl9mdW5jdGlvbnModHAtXFx1MDAzZXBjaV9kZXYpO1xcbitcXG4gXFx0LyogZmlybXdhcmUgaXMgZm9yIE1BQyBvbmx5ICovXFxuIFxcdHI4MTY5X2FwcGx5X2Zpcm13YXJlKHRwKTtcXG4gfVxcbkBAIC00MTM5LDEyICs0Mjg1LDI1IEBAIHN0YXRpYyB2b2lkIHJ0bF9od19zdGFydChzdHJ1Y3QgIHJ0bDgxNjlfcHJpdmF0ZSAqdHApXFxuIHN0YXRpYyBpbnQgcnRsODE2OV9jaGFuZ2VfbXR1KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGludCBuZXdfbXR1KVxcbiB7XFxuIFxcdHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwID0gbmV0ZGV2X3ByaXYoZGV2KTtcXG4rXFx0Ym9vbCBqdW1ib19iZWZvcmUgPSBkZXYtXFx1MDAzZW10dSBcXHUwMDNlIEVUSF9EQVRBX0xFTjtcXG4rXFx0Ym9vbCBqdW1ib19hZnRlciA9IG5ld19tdHUgXFx1MDAzZSBFVEhfREFUQV9MRU47XFxuIFxcbiBcXHRXUklURV9PTkNFKGRldi1cXHUwMDNlbXR1LCBuZXdfbXR1KTtcXG4gXFx0bmV0ZGV2X3VwZGF0ZV9mZWF0dXJlcyhkZXYpO1xcbiBcXHRydGxfanVtYm9fY29uZmlnKHRwKTtcXG4gXFx0cnRsX3NldF9lZWVfdHhpZGxlX3RpbWVyKHRwKTtcXG4gXFxuK1xcdGlmIChqdW1ib19iZWZvcmUgIT0ganVtYm9fYWZ0ZXIpIHtcXG4rXFx0XFx0dW5zaWduZWQgbG9uZyBjYXBzID0gdHAtXFx1MDAzZXBoeWxpbmtfY29uZmlnLm1hY19jYXBhYmlsaXRpZXM7XFxuK1xcbitcXHRcXHRpZiAoanVtYm9fYWZ0ZXIpXFxuK1xcdFxcdFxcdGNhcHMgXFx1MDAyNj0gfihNQUNfU1lNX1BBVVNFIHwgTUFDX0FTWU1fUEFVU0UpO1xcbitcXHRcXHRlbHNlXFxuK1xcdFxcdFxcdGNhcHMgfD0gKE1BQ19TWU1fUEFVU0UgfCBNQUNfQVNZTV9QQVVTRSk7XFxuK1xcbitcXHRcXHRwaHlsaW5rX3NldF9tYWNfY2FwYWJpbGl0aWVzKHRwLVxcdTAwM2VwaHlsaW5rLCBjYXBzKTtcXG4rXFx0fVxcbitcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG4gXFxuQEAgLTQ4NjksOCArNTAyOCwxMyBAQCBzdGF0aWMgaXJxcmV0dXJuX3QgcnRsODE2OV9pbnRlcnJ1cHQoaW50IGlycSwgdm9pZCAqZGV2X2luc3RhbmNlKVxcbiBcXHRcXHRnb3RvIG91dDtcXG4gXFx0fVxcbiBcXG4tXFx0aWYgKHN0YXR1cyBcXHUwMDI2IExpbmtDaGcpXFxuLVxcdFxcdHBoeV9tYWNfaW50ZXJydXB0KHRwLVxcdTAwM2VwaHlkZXYpO1xcbitcXHRpZiAoc3RhdHVzIFxcdTAwMjYgTGlua0NoZykge1xcbitcXHRcXHRpZiAodHAtXFx1MDAzZXBoeWRldilcXG4rXFx0XFx0XFx0cGh5X21hY19pbnRlcnJ1cHQodHAtXFx1MDAzZXBoeWRldik7XFxuK1xcdFxcdGVsc2UgaWYgKHRwLVxcdTAwM2VzZnBfbW9kZSlcXG4rXFx0XFx0XFx0cGh5bGlua19tYWNfY2hhbmdlKHRwLVxcdTAwM2VwaHlsaW5rLFxcbitcXHRcXHRcXHRcXHRcXHQgICAhIShSVExfUjgodHAsIFBIWXN0YXR1cykgXFx1MDAyNiBMaW5rU3RhdHVzKSk7XFxuK1xcdH1cXG4gXFxuIFxcdHJ0bF9pcnFfZGlzYWJsZSh0cCk7XFxuIFxcdG5hcGlfc2NoZWR1bGUoXFx1MDAyNnRwLVxcdTAwM2VuYXBpKTtcXG5AQCAtNDkzMCw5ICs1MDk0LDYgQEAgc3RhdGljIGludCBydGw4MTY5X3BvbGwoc3RydWN0IG5hcGlfc3RydWN0ICpuYXBpLCBpbnQgYnVkZ2V0KVxcbiBcXG4gc3RhdGljIHZvaWQgcnRsX2VuYWJsZV90eF9scGkoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIGJvb2wgZW5hYmxlKVxcbiB7XFxuLVxcdGlmICghcnRsX3N1cHBvcnRzX2VlZSh0cCkpXFxuLVxcdFxcdHJldHVybjtcXG4tXFxuIFxcdHN3aXRjaCAodHAtXFx1MDAzZW1hY192ZXJzaW9uKSB7XFxuIFxcdGNhc2UgUlRMX0dJR0FfTUFDX1ZFUl8zNCAuLi4gUlRMX0dJR0FfTUFDX1ZFUl81MjpcXG4gXFx0XFx0LyogQWRqdXN0IEVFRSBMRUQgZnJlcXVlbmN5ICovXFxuQEAgLTQ5NjMsNDAgKzUxMjQsMTUgQEAgc3RhdGljIHZvaWQgcnRsX2VuYWJsZV90eF9scGkoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIGJvb2wgZW5hYmxlKVxcbiBcXHR9XFxuIH1cXG4gXFxuLXN0YXRpYyB2b2lkIHI4MTY5X3BoeWxpbmtfaGFuZGxlcihzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcXG4te1xcbi1cXHRzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCA9IG5ldGRldl9wcml2KG5kZXYpO1xcbi1cXHRzdHJ1Y3QgZGV2aWNlICpkID0gdHBfdG9fZGV2KHRwKTtcXG4tXFxuLVxcdGlmIChuZXRpZl9jYXJyaWVyX29rKG5kZXYpKSB7XFxuLVxcdFxcdHJ0bF9saW5rX2NoZ19wYXRjaCh0cCk7XFxuLVxcdFxcdHJ0bF9lbmFibGVfdHhfbHBpKHRwLCB0cC1cXHUwMDNlcGh5ZGV2LVxcdTAwM2VlbmFibGVfdHhfbHBpKTtcXG4tXFx0XFx0cG1fcmVxdWVzdF9yZXN1bWUoZCk7XFxuLVxcdH0gZWxzZSB7XFxuLVxcdFxcdHBtX3J1bnRpbWVfaWRsZShkKTtcXG4tXFx0fVxcbi1cXG4tXFx0cGh5X3ByaW50X3N0YXR1cyh0cC1cXHUwMDNlcGh5ZGV2KTtcXG4tfVxcbi1cXG4gc3RhdGljIGludCByODE2OV9waHlfY29ubmVjdChzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcXG4ge1xcbi1cXHRzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2ID0gdHAtXFx1MDAzZXBoeWRldjtcXG4tXFx0cGh5X2ludGVyZmFjZV90IHBoeV9tb2RlO1xcbiBcXHRpbnQgcmV0O1xcbiBcXG4tXFx0cGh5X21vZGUgPSB0cC1cXHUwMDNlc3VwcG9ydHNfZ21paSA/IFBIWV9JTlRFUkZBQ0VfTU9ERV9HTUlJIDpcXG4tXFx0XFx0ICAgUEhZX0lOVEVSRkFDRV9NT0RFX01JSTtcXG4tXFxuLVxcdHJldCA9IHBoeV9jb25uZWN0X2RpcmVjdCh0cC1cXHUwMDNlZGV2LCBwaHlkZXYsIHI4MTY5X3BoeWxpbmtfaGFuZGxlcixcXG4tXFx0XFx0XFx0XFx0IHBoeV9tb2RlKTtcXG4tXFx0aWYgKHJldClcXG4rXFx0cmV0ID0gcGh5bGlua19jb25uZWN0X3BoeSh0cC1cXHUwMDNlcGh5bGluaywgdHAtXFx1MDAzZXBoeWRldik7XFxuK1xcdGlmIChyZXQpIHtcXG4rXFx0XFx0bmV0ZGV2X2Vycih0cC1cXHUwMDNlZGV2LCBcXFwiZmFpbGVkIHRvIGNvbm5lY3QgcGh5XFxcXG5cXFwiKTtcXG4gXFx0XFx0cmV0dXJuIHJldDtcXG4tXFxuLVxcdGlmICghdHAtXFx1MDAzZXN1cHBvcnRzX2dtaWkpXFxuLVxcdFxcdHBoeV9zZXRfbWF4X3NwZWVkKHBoeWRldiwgU1BFRURfMTAwKTtcXG4tXFxuLVxcdHBoeV9hdHRhY2hlZF9pbmZvKHBoeWRldik7XFxuK1xcdH1cXG4gXFxuIFxcdHJldHVybiAwO1xcbiB9XFxuQEAgLTUwMDcsMTAgKzUxNDMsMTAgQEAgc3RhdGljIHZvaWQgcnRsODE2OV9kb3duKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxcbiBcXHQvKiBDbGVhciBhbGwgdGFzayBmbGFncyAqL1xcbiBcXHRiaXRtYXBfemVybyh0cC1cXHUwMDNld2suZmxhZ3MsIFJUTF9GTEFHX01BWCk7XFxuIFxcbi1cXHRwaHlfc3RvcCh0cC1cXHUwMDNlcGh5ZGV2KTtcXG4rXFx0cGh5bGlua19zdG9wKHRwLVxcdTAwM2VwaHlsaW5rKTtcXG4gXFxuIFxcdC8qIFJlc2V0IFNlckRlcyBQSFkgdG8gYnJpbmcgZG93biBmaWJlciBsaW5rICovXFxuLVxcdGlmICh0cC1cXHUwMDNlc2ZwX21vZGUpXFxuK1xcdGlmICh0cC1cXHUwMDNlc2ZwX21vZGUgPT0gUlRMX1NGUF84MTI3X0FURilcXG4gXFx0XFx0cnRsX3NmcF9yZXNldCh0cCk7XFxuIFxcbiBcXHRydGw4MTY5X3VwZGF0ZV9jb3VudGVycyh0cCk7XFxuQEAgLTUwMzIsMTQgKzUxNjgsMTQgQEAgc3RhdGljIHZvaWQgcnRsODE2OV91cChzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcXG4gXFx0XFx0cnRsODE2OF9kcml2ZXJfc3RhcnQodHApO1xcbiBcXG4gXFx0cGNpX3NldF9tYXN0ZXIodHAtXFx1MDAzZXBjaV9kZXYpO1xcbi1cXHRwaHlfaW5pdF9odyh0cC1cXHUwMDNlcGh5ZGV2KTtcXG4tXFx0cGh5X3Jlc3VtZSh0cC1cXHUwMDNlcGh5ZGV2KTtcXG4tXFx0cnRsODE2OV9pbml0X3BoeSh0cCk7XFxuK1xcdGlmICh0cC1cXHUwMDNlcGh5ZGV2KVxcbitcXHRcXHRydGw4MTY5X2luaXRfcGh5KHRwKTtcXG4rXFxuIFxcdG5hcGlfZW5hYmxlKFxcdTAwMjZ0cC1cXHUwMDNlbmFwaSk7XFxuIFxcdGVuYWJsZV93b3JrKFxcdTAwMjZ0cC1cXHUwMDNld2sud29yayk7XFxuIFxcdHJ0bF9yZXNldF93b3JrKHRwKTtcXG4gXFxuLVxcdHBoeV9zdGFydCh0cC1cXHUwMDNlcGh5ZGV2KTtcXG4rXFx0cGh5bGlua19zdGFydCh0cC1cXHUwMDNlcGh5bGluayk7XFxuIH1cXG4gXFxuIHN0YXRpYyBpbnQgcnRsODE2OV9jbG9zZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbkBAIC01MDU1LDcgKzUxOTEsNyBAQCBzdGF0aWMgaW50IHJ0bDgxNjlfY2xvc2Uoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4gXFxuIFxcdGZyZWVfaXJxKHRwLVxcdTAwM2VpcnEsIHRwKTtcXG4gXFxuLVxcdHBoeV9kaXNjb25uZWN0KHRwLVxcdTAwM2VwaHlkZXYpO1xcbitcXHRwaHlsaW5rX2Rpc2Nvbm5lY3RfcGh5KHRwLVxcdTAwM2VwaHlsaW5rKTtcXG4gXFxuIFxcdGRtYV9mcmVlX2NvaGVyZW50KFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIFI4MTY5X1JYX1JJTkdfQllURVMsIHRwLVxcdTAwM2VSeERlc2NBcnJheSxcXG4gXFx0XFx0XFx0ICB0cC1cXHUwMDNlUnhQaHlBZGRyKTtcXG5AQCAtNTExMiw5ICs1MjQ4LDExIEBAIHN0YXRpYyBpbnQgcnRsX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4gXFx0aWYgKHJldHZhbCBcXHUwMDNjIDApXFxuIFxcdFxcdGdvdG8gZXJyX3JlbGVhc2VfZndfMjtcXG4gXFxuLVxcdHJldHZhbCA9IHI4MTY5X3BoeV9jb25uZWN0KHRwKTtcXG4tXFx0aWYgKHJldHZhbClcXG4tXFx0XFx0Z290byBlcnJfZnJlZV9pcnE7XFxuK1xcdGlmICh0cC1cXHUwMDNlcGh5ZGV2KSB7XFxuK1xcdFxcdHJldHZhbCA9IHI4MTY5X3BoeV9jb25uZWN0KHRwKTtcXG4rXFx0XFx0aWYgKHJldHZhbClcXG4rXFx0XFx0XFx0Z290byBlcnJfZnJlZV9pcnE7XFxuK1xcdH1cXG4gXFxuIFxcdHJ0bDgxNjlfdXAodHApO1xcbiBcXHRydGw4MTY5X2luaXRfY291bnRlcl9vZmZzZXRzKHRwKTtcXG5AQCAtNTE5MCw4ICs1MzI4LDExIEBAIHN0YXRpYyBpbnQgcnRsODE2OV9ydW50aW1lX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuIFxcdHJ0bF9yYXJfc2V0KHRwLCB0cC1cXHUwMDNlZGV2LVxcdTAwM2VkZXZfYWRkcik7XFxuIFxcdF9fcnRsODE2OV9zZXRfd29sKHRwLCB0cC1cXHUwMDNlc2F2ZWRfd29sb3B0cyk7XFxuIFxcbi1cXHRpZiAodHAtXFx1MDAzZVR4RGVzY0FycmF5KVxcbitcXHRpZiAodHAtXFx1MDAzZVR4RGVzY0FycmF5KSB7XFxuK1xcdFxcdHJ0bmxfbG9jaygpO1xcbiBcXHRcXHRydGw4MTY5X3VwKHRwKTtcXG4rXFx0XFx0cnRubF91bmxvY2soKTtcXG4rXFx0fVxcbiBcXG4gXFx0bmV0aWZfZGV2aWNlX2F0dGFjaCh0cC1cXHUwMDNlZGV2KTtcXG4gXFxuQEAgLTUyODgsNiArNTQyOSw3IEBAIHN0YXRpYyB2b2lkIHJ0bF9yZW1vdmVfb25lKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcbiBcXHRcXHRyODE2OV9yZW1vdmVfbGVkcyh0cC1cXHUwMDNlbGVkcyk7XFxuIFxcbiBcXHR1bnJlZ2lzdGVyX25ldGRldih0cC1cXHUwMDNlZGV2KTtcXG4rXFx0cGh5bGlua19kZXN0cm95KHRwLVxcdTAwM2VwaHlsaW5rKTtcXG4gXFxuIFxcdGlmICh0cC1cXHUwMDNlZGFzaF90eXBlICE9IFJUTF9EQVNIX05PTkUpXFxuIFxcdFxcdHJ0bDgxNjhfZHJpdmVyX3N0b3AodHApO1xcbkBAIC01MzEwLDcgKzU0NTIsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIHJ0bF9uZXRkZXZfb3BzID0ge1xcbiBcXHQubmRvX2ZpeF9mZWF0dXJlc1xcdD0gcnRsODE2OV9maXhfZmVhdHVyZXMsXFxuIFxcdC5uZG9fc2V0X2ZlYXR1cmVzXFx0PSBydGw4MTY5X3NldF9mZWF0dXJlcyxcXG4gXFx0Lm5kb19zZXRfbWFjX2FkZHJlc3NcXHQ9IHJ0bF9zZXRfbWFjX2FkZHJlc3MsXFxuLVxcdC5uZG9fZXRoX2lvY3RsXFx0XFx0PSBwaHlfZG9faW9jdGxfcnVubmluZyxcXG4rXFx0Lm5kb19ldGhfaW9jdGxcXHRcXHQ9IHJ0bDgxNjlfaW9jdGwsXFxuIFxcdC5uZG9fc2V0X3J4X21vZGVcXHQ9IHJ0bF9zZXRfcnhfbW9kZSxcXG4gI2lmZGVmIENPTkZJR19ORVRfUE9MTF9DT05UUk9MTEVSXFxuIFxcdC5uZG9fcG9sbF9jb250cm9sbGVyXFx0PSBydGw4MTY5X25ldHBvbGwsXFxuQEAgLTU0NzQsMTYgKzU2MTYsNiBAQCBzdGF0aWMgaW50IHI4MTY5X21kaW9fcmVnaXN0ZXIoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXFxuIFxcdFxcdHJldHVybiAtRVVOQVRDSDtcXG4gXFx0fVxcbiBcXG4tXFx0dHAtXFx1MDAzZXBoeWRldi1cXHUwMDNlbWFjX21hbmFnZWRfcG0gPSB0cnVlO1xcbi1cXHRpZiAocnRsX3N1cHBvcnRzX2VlZSh0cCkpXFxuLVxcdFxcdHBoeV9zdXBwb3J0X2VlZSh0cC1cXHUwMDNlcGh5ZGV2KTtcXG4tXFx0cGh5X3N1cHBvcnRfYXN5bV9wYXVzZSh0cC1cXHUwMDNlcGh5ZGV2KTtcXG4tXFxuLVxcdC8qIG1pbWljIGJlaGF2aW9yIG9mIHI4MTI1L3I4MTI2IHZlbmRvciBkcml2ZXJzICovXFxuLVxcdGlmICh0cC1cXHUwMDNlbWFjX3ZlcnNpb24gPT0gUlRMX0dJR0FfTUFDX1ZFUl82MSlcXG4tXFx0XFx0cGh5X2Rpc2FibGVfZWVlX21vZGUodHAtXFx1MDAzZXBoeWRldixcXG4tXFx0XFx0XFx0XFx0ICAgICBFVEhUT09MX0xJTktfTU9ERV8yNTAwYmFzZVRfRnVsbF9CSVQpO1xcbi1cXG4gXFx0LyogUEhZIHdpbGwgYmUgd29rZW4gdXAgaW4gcnRsX29wZW4oKSAqL1xcbiBcXHRwaHlfc3VzcGVuZCh0cC1cXHUwMDNlcGh5ZGV2KTtcXG4gXFxuQEAgLTU1OTksNiArNTczMSwyNDIgQEAgc3RhdGljIGJvb2wgcnRsX2FzcG1faXNfc2FmZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcXG4gXFx0cmV0dXJuIGZhbHNlO1xcbiB9XFxuIFxcbitzdGF0aWMgdm9pZCBydGxfbWFjX2xpbmtfZG93bihzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZywgdW5zaWduZWQgaW50IG1vZGUsXFxuK1xcdFxcdFxcdCAgICAgIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXFxuK3tcXG4rXFx0c3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAgPSBjb250YWluZXJfb2YoY29uZmlnLCBzdHJ1Y3QgcnRsODE2OV9wcml2YXRlLCBwaHlsaW5rX2NvbmZpZyk7XFxuK1xcbitcXHR0cC1cXHUwMDNlc3BlZWQgPSBTUEVFRF9VTktOT1dOO1xcbitcXHRwbV9ydW50aW1lX2lkbGUodHBfdG9fZGV2KHRwKSk7XFxuK31cXG4rXFxuK3N0YXRpYyB2b2lkIHJ0bF9tYWNfbGlua191cChzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZywgc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcXG4rXFx0XFx0XFx0ICAgIHVuc2lnbmVkIGludCBtb2RlLCBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlLFxcbitcXHRcXHRcXHQgICAgaW50IHNwZWVkLCBpbnQgZHVwbGV4LCBib29sIHR4X3BhdXNlLCBib29sIHJ4X3BhdXNlKVxcbit7XFxuK1xcdHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwID0gY29udGFpbmVyX29mKGNvbmZpZywgc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSwgcGh5bGlua19jb25maWcpO1xcbitcXHRzdHJ1Y3QgZGV2aWNlICpkID0gdHBfdG9fZGV2KHRwKTtcXG4rXFxuK1xcdHRwLVxcdTAwM2VzcGVlZCA9IHNwZWVkO1xcbitcXHRydGxfbGlua19jaGdfcGF0Y2godHAsIHNwZWVkKTtcXG4rXFxuK1xcdHBtX3JlcXVlc3RfcmVzdW1lKGQpO1xcbit9XFxuK1xcbitzdGF0aWMgc3RydWN0IHBoeWxpbmtfcGNzICpydGxfbWFjX3NlbGVjdF9wY3Moc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXFxuK1xcdFxcdFxcdFxcdFxcdCAgICAgIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXFxuK3tcXG4rXFx0c3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAgPSBjb250YWluZXJfb2YoY29uZmlnLCBzdHJ1Y3QgcnRsODE2OV9wcml2YXRlLCBwaHlsaW5rX2NvbmZpZyk7XFxuK1xcbitcXHRpZiAoIXRwLVxcdTAwM2VwY3Mub3BzKVxcbitcXHRcXHRyZXR1cm4gTlVMTDtcXG4rXFxuK1xcdGlmIChpbnRlcmZhY2UgPT0gUEhZX0lOVEVSRkFDRV9NT0RFXzEwMDBCQVNFWCB8fFxcbitcXHQgICAgaW50ZXJmYWNlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV8xMEdCQVNFUilcXG4rXFx0XFx0cmV0dXJuIFxcdTAwMjZ0cC1cXHUwMDNlcGNzO1xcbitcXG4rXFx0cmV0dXJuIE5VTEw7XFxuK31cXG4rXFxuK3N0YXRpYyB2b2lkIHJ0bF9tYWNfY29uZmlnKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLCB1bnNpZ25lZCBpbnQgbW9kZSxcXG4rXFx0XFx0XFx0ICAgY29uc3Qgc3RydWN0IHBoeWxpbmtfbGlua19zdGF0ZSAqc3RhdGUpXFxuK3tcXG4rfVxcbitcXG4rc3RhdGljIHUxNiBydGw4MTY5X3Nkc19yZWFkKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCB1MTYgc2RzX3JlZylcXG4re1xcbitcXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xcbitcXHR1MTYgdmFsID0gMDtcXG4rXFxuK1xcdHJhd19zcGluX2xvY2tfaXJxc2F2ZShcXHUwMDI2dHAtXFx1MDAzZW1hY19vY3BfbG9jaywgZmxhZ3MpO1xcbitcXHRfX3I4MTY4X21hY19vY3Bfd3JpdGUodHAsIE9DUF9TRFNfQUREUl9SRUcsIHNkc19yZWcpO1xcbitcXHRfX3I4MTY4X21hY19vY3Bfd3JpdGUodHAsIE9DUF9TRFNfQ01EX1JFRywgU0RTX0NNRF9SRUFEKTtcXG4rXFx0dmFsID0gX19yODE2OF9tYWNfb2NwX3JlYWQodHAsIE9DUF9TRFNfREFUQV9SRUcpO1xcbitcXHRyYXdfc3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcXHUwMDI2dHAtXFx1MDAzZW1hY19vY3BfbG9jaywgZmxhZ3MpO1xcbitcXG4rXFx0cmV0dXJuIHZhbDtcXG4rfVxcbitcXG4rc3RhdGljIHZvaWQgcnRsODE2OV9wY3NfZ2V0X3N0YXRlKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzLFxcbitcXHRcXHRcXHRcXHQgIHVuc2lnbmVkIGludCBuZWdfbW9kZSxcXG4rXFx0XFx0XFx0XFx0ICBzdHJ1Y3QgcGh5bGlua19saW5rX3N0YXRlICpzdGF0ZSlcXG4re1xcbitcXHRzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCA9IGNvbnRhaW5lcl9vZihwY3MsIHN0cnVjdCBydGw4MTY5X3ByaXZhdGUsIHBjcyk7XFxuK1xcbitcXHRpZiAodHAtXFx1MDAzZXNmcF9tb2RlID09IFJUTF9TRlBfODEyN19BVEYpIHtcXG4rXFx0XFx0dTE2IHN0YXQxO1xcbitcXG4rXFx0XFx0c3RhdDEgPSBydGw4MTY5X3Nkc19yZWFkKHRwLCBSVExfU0RTX0M0NV9CQVNFICsgTURJT19TVEFUMSk7XFxuK1xcbitcXHRcXHRpZiAoIShzdGF0MSBcXHUwMDI2IE1ESU9fU1RBVDFfTFNUQVRVUykpXFxuK1xcdFxcdFxcdHN0YXQxID0gcnRsODE2OV9zZHNfcmVhZCh0cCwgUlRMX1NEU19DNDVfQkFTRSArIE1ESU9fU1RBVDEpO1xcbitcXG4rXFx0XFx0c3RhdGUtXFx1MDAzZWxpbmsgPSAhIShzdGF0MSBcXHUwMDI2IE1ESU9fU1RBVDFfTFNUQVRVUyk7XFxuK1xcdFxcdGlmICghc3RhdGUtXFx1MDAzZWxpbmspXFxuK1xcdFxcdFxcdHJldHVybjtcXG4rXFxuK1xcdFxcdHN0YXRlLVxcdTAwM2VkdXBsZXggPSBEVVBMRVhfRlVMTDtcXG4rXFx0XFx0c3RhdGUtXFx1MDAzZXNwZWVkID0gU1BFRURfMTAwMDA7XFxuK1xcdH0gZWxzZSB7XFxuK1xcdFxcdHUxNiBibXNyLCBscGE7XFxuK1xcbitcXHRcXHRibXNyID0gcnRsODE2OV9zZHNfcmVhZCh0cCwgUlRMX1NEU19DMjJfQkFTRSArIE1JSV9CTVNSKTtcXG4rXFx0XFx0bHBhID0gcnRsODE2OV9zZHNfcmVhZCh0cCwgUlRMX1NEU19DMjJfQkFTRSArIE1JSV9MUEEpO1xcbitcXHRcXHRwaHlsaW5rX21paV9jMjJfcGNzX2RlY29kZV9zdGF0ZShzdGF0ZSwgbmVnX21vZGUsIGJtc3IsIGxwYSk7XFxuK1xcdH1cXG4rfVxcbitcXG4rc3RhdGljIGludCBydGw4MTY5X3Bjc19jb25maWcoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MsIHVuc2lnbmVkIGludCBtb2RlLFxcbitcXHRcXHRcXHQgICAgICBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlLFxcbitcXHRcXHRcXHQgICAgICBjb25zdCB1bnNpZ25lZCBsb25nICphZHZlcnRpc2luZyxcXG4rXFx0XFx0XFx0ICAgICAgYm9vbCBwZXJtaXRfcGF1c2VfdG9fbWFjKVxcbit7XFxuK1xcdHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwID0gY29udGFpbmVyX29mKHBjcywgc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSwgcGNzKTtcXG4rXFxuK1xcdGlmICh0cC1cXHUwMDNlc2ZwX21vZGUgPT0gUlRMX1NGUF84MTI3X0FURikge1xcbitcXHRcXHRzd2l0Y2ggKGludGVyZmFjZSkge1xcbitcXHRcXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV8xMEdCQVNFUjpcXG4rXFx0XFx0XFx0cjgxMjdfc2ZwX2luaXRfMTBnKHRwKTtcXG4rXFx0XFx0XFx0YnJlYWs7XFxuK1xcdFxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFXzEwMDBCQVNFWDpcXG4rXFx0XFx0XFx0cjgxMjdfc2ZwX2luaXRfMWcodHApO1xcbitcXHRcXHRcXHRicmVhaztcXG4rXFx0XFx0ZGVmYXVsdDpcXG4rXFx0XFx0XFx0bmV0ZGV2X2Vycih0cC1cXHUwMDNlZGV2LCBcXFwiVW5zdXBwb3J0ZWQgU0ZQIGludGVyZmFjZSBtb2RlOiAlc1xcXFxuXFxcIixcXG4rXFx0XFx0XFx0XFx0ICAgcGh5X21vZGVzKGludGVyZmFjZSkpO1xcbitcXHRcXHRcXHRyZXR1cm4gLUVPUE5PVFNVUFA7XFxuK1xcdFxcdH1cXG4rXFx0fVxcbitcXG4rXFx0cmV0dXJuIDA7XFxuK31cXG4rXFxuK3N0YXRpYyBpbnQgcnRsODE2OV9wY3NfdmFsaWRhdGUoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MsIHVuc2lnbmVkIGxvbmcgKnN1cHBvcnRlZCxcXG4rXFx0XFx0XFx0XFx0Y29uc3Qgc3RydWN0IHBoeWxpbmtfbGlua19zdGF0ZSAqc3RhdGUpXFxuK3tcXG4rXFx0cmV0dXJuIDA7XFxuK31cXG4rXFxuK3N0YXRpYyB2b2lkIHJ0bDgxNjlfcGNzX2FuX3Jlc3RhcnQoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MpXFxuK3tcXG4rfVxcbitcXG4rc3RhdGljIHZvaWQgcnRsX21hY19kaXNhYmxlX3R4X2xwaShzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZylcXG4re1xcbitcXHRzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCA9IGNvbnRhaW5lcl9vZihjb25maWcsIHN0cnVjdCBydGw4MTY5X3ByaXZhdGUsIHBoeWxpbmtfY29uZmlnKTtcXG4rXFxuK1xcdHJ0bF9lbmFibGVfdHhfbHBpKHRwLCBmYWxzZSk7XFxuK31cXG4rXFxuK3N0YXRpYyBpbnQgcnRsX21hY19lbmFibGVfdHhfbHBpKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLCB1MzIgdGltZXIsIGJvb2wgdHhfY2xrX3N0b3ApXFxuK3tcXG4rXFx0c3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAgPSBjb250YWluZXJfb2YoY29uZmlnLCBzdHJ1Y3QgcnRsODE2OV9wcml2YXRlLCBwaHlsaW5rX2NvbmZpZyk7XFxuK1xcbitcXHRydGxfZW5hYmxlX3R4X2xwaSh0cCwgdHJ1ZSk7XFxuK1xcbitcXHRyZXR1cm4gMDtcXG4rfVxcbitcXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBwaHlsaW5rX21hY19vcHMgcnRsX3BoeWxpbmtfbWFjX29wcyA9IHtcXG4rXFx0Lm1hY19zZWxlY3RfcGNzID0gcnRsX21hY19zZWxlY3RfcGNzLFxcbitcXHQubWFjX2NvbmZpZyA9IHJ0bF9tYWNfY29uZmlnLFxcbitcXHQubWFjX2xpbmtfZG93biAgPSBydGxfbWFjX2xpbmtfZG93bixcXG4rXFx0Lm1hY19saW5rX3VwICAgID0gcnRsX21hY19saW5rX3VwLFxcbitcXHQubWFjX2Rpc2FibGVfdHhfbHBpID0gcnRsX21hY19kaXNhYmxlX3R4X2xwaSxcXG4rXFx0Lm1hY19lbmFibGVfdHhfbHBpID0gcnRsX21hY19lbmFibGVfdHhfbHBpLFxcbit9O1xcbitcXG4rc3RhdGljIHVuc2lnbmVkIGxvbmcgcnRsODE2OV9nZXRfbHBpX2NhcHMoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXFxuK3tcXG4rXFx0dW5zaWduZWQgbG9uZyBjYXBzID0gMDtcXG4rXFxuK1xcdGlmICghcnRsX3N1cHBvcnRzX2VlZSh0cCkgfHwgdHAtXFx1MDAzZXNmcF9tb2RlID09IFJUTF9TRlBfODEyN19BVEYpXFxuK1xcdFxcdHJldHVybiAwO1xcbitcXG4rXFx0Y2FwcyB8PSBNQUNfMTAwRkQgfCBNQUNfMTAwMEZEO1xcbitcXG4rXFx0LyogbWltaWMgYmVoYXZpb3Igb2YgcjgxMjUvcjgxMjYgdmVuZG9yIGRyaXZlcnNcXG4rXFx0ICogUlRMX0dJR0FfTUFDX1ZFUl82MSBkb2Vzbid0IHN1cHBvcnQgMi41RyBlZWVcXG4rXFx0ICovXFxuK1xcdGlmICh0cC1cXHUwMDNlbWFjX3ZlcnNpb24gXFx1MDAzZT0gUlRMX0dJR0FfTUFDX1ZFUl82MylcXG4rXFx0XFx0Y2FwcyB8PSBNQUNfMjUwMEZEO1xcbitcXHRpZiAodHAtXFx1MDAzZW1hY192ZXJzaW9uIFxcdTAwM2U9IFJUTF9HSUdBX01BQ19WRVJfNzApXFxuK1xcdFxcdGNhcHMgfD0gTUFDXzUwMDBGRDtcXG4rXFx0aWYgKHRwLVxcdTAwM2VtYWNfdmVyc2lvbiA9PSBSVExfR0lHQV9NQUNfVkVSXzgwKVxcbitcXHRcXHRjYXBzIHw9IE1BQ18xMDAwMEZEO1xcbitcXG4rXFx0cmV0dXJuIGNhcHM7XFxuK31cXG4rXFxuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgcGh5bGlua19wY3Nfb3BzIHI4MTY5X3Bjc19vcHMgPSB7XFxuK1xcdC5wY3NfdmFsaWRhdGUgPSBydGw4MTY5X3Bjc192YWxpZGF0ZSxcXG4rXFx0LnBjc19nZXRfc3RhdGUgPSBydGw4MTY5X3Bjc19nZXRfc3RhdGUsXFxuK1xcdC5wY3NfY29uZmlnID0gcnRsODE2OV9wY3NfY29uZmlnLFxcbitcXHQucGNzX2FuX3Jlc3RhcnQgPSBydGw4MTY5X3Bjc19hbl9yZXN0YXJ0LFxcbit9O1xcbitcXG4rc3RhdGljIGludCBydGxfaW5pdF9waHlsaW5rKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxcbit7XFxuK1xcdHN0cnVjdCBwaHlsaW5rICpwbDtcXG4rXFx0cGh5X2ludGVyZmFjZV90IHBoeV9tb2RlO1xcbitcXG4rXFx0dHAtXFx1MDAzZXBoeWxpbmtfY29uZmlnLmRldiA9IFxcdTAwMjZ0cC1cXHUwMDNlZGV2LVxcdTAwM2VkZXY7XFxuK1xcdHRwLVxcdTAwM2VwaHlsaW5rX2NvbmZpZy50eXBlID0gUEhZTElOS19ORVRERVY7XFxuK1xcdHRwLVxcdTAwM2VwaHlsaW5rX2NvbmZpZy5tYWNfbWFuYWdlZF9wbSA9IHRydWU7XFxuK1xcdHRwLVxcdTAwM2VwaHlsaW5rX2NvbmZpZy5scGlfY2FwYWJpbGl0aWVzID0gcnRsODE2OV9nZXRfbHBpX2NhcHModHApO1xcbitcXHR0cC1cXHUwMDNlcGh5bGlua19jb25maWcubWFjX2NhcGFiaWxpdGllcyB8PSBNQUNfQVNZTV9QQVVTRSB8IE1BQ19TWU1fUEFVU0U7XFxuK1xcbitcXHRzd2l0Y2ggKHRwLVxcdTAwM2VzZnBfbW9kZSkge1xcbitcXHRjYXNlIFJUTF9TRlBfODE2OF9BRjpcXG4rXFx0XFx0dHAtXFx1MDAzZXBjcy5vcHMgPSBcXHUwMDI2cjgxNjlfcGNzX29wcztcXG4rXFx0XFx0dHAtXFx1MDAzZXBoeWxpbmtfY29uZmlnLmRlZmF1bHRfYW5faW5iYW5kID0gdHJ1ZTtcXG4rXFx0XFx0cGh5X21vZGUgPSBQSFlfSU5URVJGQUNFX01PREVfMTAwMEJBU0VYO1xcbitcXHRcXHR0cC1cXHUwMDNlcGh5bGlua19jb25maWcubWFjX2NhcGFiaWxpdGllcyB8PSBNQUNfMTAwMEZEO1xcbitcXHRcXHRicmVhaztcXG4rXFx0Y2FzZSBSVExfU0ZQXzgxMjdfQVRGOlxcbitcXHRcXHR0cC1cXHUwMDNlcGNzLm9wcyA9IFxcdTAwMjZyODE2OV9wY3Nfb3BzO1xcbitcXHRcXHRwaHlfbW9kZSA9IFBIWV9JTlRFUkZBQ0VfTU9ERV8xMEdCQVNFUjtcXG4rXFx0XFx0dHAtXFx1MDAzZXBoeWxpbmtfY29uZmlnLmRlZmF1bHRfYW5faW5iYW5kID0gdHJ1ZTtcXG4rXFx0XFx0dHAtXFx1MDAzZXBoeWxpbmtfY29uZmlnLm1hY19jYXBhYmlsaXRpZXMgfD0gTUFDXzEwMDBGRCB8IE1BQ18xMDAwMEZEO1xcbitcXHRcXHRicmVhaztcXG4rXFx0ZGVmYXVsdDpcXG4rXFx0XFx0cGh5X21vZGUgPSBQSFlfSU5URVJGQUNFX01PREVfSU5URVJOQUw7XFxuK1xcdFxcdHRwLVxcdTAwM2VwaHlsaW5rX2NvbmZpZy5tYWNfY2FwYWJpbGl0aWVzIHw9IE1BQ18xMCB8IE1BQ18xMDA7XFxuK1xcbitcXHRcXHRpZiAodHAtXFx1MDAzZW1hY192ZXJzaW9uID09IFJUTF9HSUdBX01BQ19WRVJfODApXFxuK1xcdFxcdFxcdHRwLVxcdTAwM2VwaHlsaW5rX2NvbmZpZy5tYWNfY2FwYWJpbGl0aWVzIHw9IE1BQ18xMDAwRkQgfCBNQUNfMjUwMEZEIHxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgIE1BQ181MDAwRkQgfCBNQUNfMTAwMDBGRDtcXG4rXFx0XFx0ZWxzZSBpZiAodHAtXFx1MDAzZW1hY192ZXJzaW9uID09IFJUTF9HSUdBX01BQ19WRVJfNzApXFxuK1xcdFxcdFxcdHRwLVxcdTAwM2VwaHlsaW5rX2NvbmZpZy5tYWNfY2FwYWJpbGl0aWVzIHw9IE1BQ18xMDAwRkQgfFxcbitcXHRcXHRcXHRcXHRcXHRcXHRcXHQgICAgICAgTUFDXzI1MDBGRCB8IE1BQ181MDAwRkQ7XFxuK1xcdFxcdGVsc2UgaWYgKHRwLVxcdTAwM2VtYWNfdmVyc2lvbiBcXHUwMDNlPSBSVExfR0lHQV9NQUNfVkVSXzYxKVxcbitcXHRcXHRcXHR0cC1cXHUwMDNlcGh5bGlua19jb25maWcubWFjX2NhcGFiaWxpdGllcyB8PSBNQUNfMTAwMEZEIHwgTUFDXzI1MDBGRDtcXG4rXFx0XFx0ZWxzZVxcbitcXHRcXHRcXHRpZiAodHAtXFx1MDAzZXN1cHBvcnRzX2dtaWkpXFxuK1xcdFxcdFxcdFxcdHRwLVxcdTAwM2VwaHlsaW5rX2NvbmZpZy5tYWNfY2FwYWJpbGl0aWVzIHw9IE1BQ18xMDAwRkQ7XFxuK1xcbitcXHRcXHRpZiAodHAtXFx1MDAzZW1hY192ZXJzaW9uIFxcdTAwM2MgUlRMX0dJR0FfTUFDX1ZFUl82MSlcXG4rXFx0XFx0XFx0cGh5X21vZGUgPSB0cC1cXHUwMDNlc3VwcG9ydHNfZ21paSA/IFBIWV9JTlRFUkZBQ0VfTU9ERV9HTUlJIDpcXG4rXFx0XFx0XFx0XFx0ICAgUEhZX0lOVEVSRkFDRV9NT0RFX01JSTtcXG4rXFx0XFx0ZWxzZVxcbitcXHRcXHRcXHRwaHlfbW9kZSA9IFBIWV9JTlRFUkZBQ0VfTU9ERV9JTlRFUk5BTDtcXG4rXFx0XFx0YnJlYWs7XFxuK1xcdH1cXG4rXFxuK1xcdF9fc2V0X2JpdChwaHlfbW9kZSwgdHAtXFx1MDAzZXBoeWxpbmtfY29uZmlnLnN1cHBvcnRlZF9pbnRlcmZhY2VzKTtcXG4rXFx0aWYgKHRwLVxcdTAwM2VwaHlsaW5rX2NvbmZpZy5scGlfY2FwYWJpbGl0aWVzKVxcbitcXHRcXHRfX3NldF9iaXQocGh5X21vZGUsIHRwLVxcdTAwM2VwaHlsaW5rX2NvbmZpZy5scGlfaW50ZXJmYWNlcyk7XFxuK1xcbitcXHRwbCA9IHBoeWxpbmtfY3JlYXRlKFxcdTAwMjZ0cC1cXHUwMDNlcGh5bGlua19jb25maWcsIHRwX3RvX2Rldih0cCktXFx1MDAzZWZ3bm9kZSxcXG4rXFx0XFx0XFx0ICAgIHBoeV9tb2RlLCBcXHUwMDI2cnRsX3BoeWxpbmtfbWFjX29wcyk7XFxuK1xcdGlmIChJU19FUlIocGwpKVxcbitcXHRcXHRyZXR1cm4gUFRSX0VSUihwbCk7XFxuK1xcbitcXHR0cC1cXHUwMDNlcGh5bGluayA9IHBsO1xcbitcXG4rXFx0cmV0dXJuIDA7XFxuK31cXG4rXFxuIHN0YXRpYyBpbnQgcnRsX2luaXRfb25lKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KVxcbiB7XFxuIFxcdGNvbnN0IHN0cnVjdCBydGxfY2hpcF9pbmZvICpjaGlwO1xcbkBAIC01NjY3LDYgKzYwMzUsNyBAQCBzdGF0aWMgaW50IHJ0bF9pbml0X29uZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudClcXG4gXFx0XFx0XFx0XFx0ICAgICBleHRfeGlkX3N0ciwgeGlkKTtcXG4gXFx0dHAtXFx1MDAzZW1hY192ZXJzaW9uID0gY2hpcC1cXHUwMDNlbWFjX3ZlcnNpb247XFxuIFxcdHRwLVxcdTAwM2Vmd19uYW1lID0gY2hpcC1cXHUwMDNlZndfbmFtZTtcXG4rXFx0dHAtXFx1MDAzZXNwZWVkID0gU1BFRURfVU5LTk9XTjtcXG4gXFxuIFxcdC8qIERpc2FibGUgQVNQTSBMMSBhcyB0aGF0IGNhdXNlIHJhbmRvbSBkZXZpY2Ugc3RvcCB3b3JraW5nXFxuIFxcdCAqIHByb2JsZW1zIGFzIHdlbGwgYXMgZnVsbCBzeXN0ZW0gaGFuZ3MgZm9yIHNvbWUgUENJZSBkZXZpY2VzIHVzZXJzLlxcbkBAIC01Njc5LDEyICs2MDQ4LDcgQEAgc3RhdGljIGludCBydGxfaW5pdF9vbmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpXFxuIFxcdH1cXG4gXFx0dHAtXFx1MDAzZWFzcG1fbWFuYWdlYWJsZSA9ICFyYztcXG4gXFxuLVxcdGlmIChydGxfaXNfODEyNSh0cCkpIHtcXG4tXFx0XFx0dTE2IGRhdGEgPSByODE2OF9tYWNfb2NwX3JlYWQodHAsIDB4ZDAwNik7XFxuLVxcbi1cXHRcXHRpZiAoKGRhdGEgXFx1MDAyNiAweGZmKSA9PSAweDA3KVxcbi1cXHRcXHRcXHR0cC1cXHUwMDNlc2ZwX21vZGUgPSB0cnVlO1xcbi1cXHR9XFxuK1xcdHRwLVxcdTAwM2VzZnBfbW9kZSA9IHJ0bF9nZXRfc2ZwX21vZGUodHApO1xcbiBcXG4gXFx0dHAtXFx1MDAzZWRhc2hfdHlwZSA9IHJ0bF9nZXRfZGFzaF90eXBlKHRwKTtcXG4gXFx0dHAtXFx1MDAzZWRhc2hfZW5hYmxlZCA9IHJ0bF9kYXNoX2lzX2VuYWJsZWQodHApO1xcbkBAIC01Nzg4LDEzICs2MTUyLDIzIEBAIHN0YXRpYyBpbnQgcnRsX2luaXRfb25lKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KVxcbiBcXG4gXFx0cGNpX3NldF9kcnZkYXRhKHBkZXYsIHRwKTtcXG4gXFxuLVxcdHJjID0gcjgxNjlfbWRpb19yZWdpc3Rlcih0cCk7XFxuK1xcdHJjID0gcnRsX2luaXRfcGh5bGluayh0cCk7XFxuIFxcdGlmIChyYylcXG4gXFx0XFx0cmV0dXJuIHJjO1xcbiBcXG4rXFx0aWYgKHRwLVxcdTAwM2VzZnBfbW9kZSA9PSBSVExfU0ZQX05PTkUpIHtcXG4rXFx0XFx0cmMgPSByODE2OV9tZGlvX3JlZ2lzdGVyKHRwKTtcXG4rXFx0XFx0aWYgKHJjKSB7XFxuK1xcdFxcdFxcdHBoeWxpbmtfZGVzdHJveSh0cC1cXHUwMDNlcGh5bGluayk7XFxuK1xcdFxcdFxcdHJldHVybiByYztcXG4rXFx0XFx0fVxcbitcXHR9XFxuK1xcbiBcXHRyYyA9IHJlZ2lzdGVyX25ldGRldihkZXYpO1xcbi1cXHRpZiAocmMpXFxuK1xcdGlmIChyYykge1xcbitcXHRcXHRwaHlsaW5rX2Rlc3Ryb3kodHAtXFx1MDAzZXBoeWxpbmspO1xcbiBcXHRcXHRyZXR1cm4gcmM7XFxuK1xcdH1cXG4gXFxuIFxcdGlmIChJU19FTkFCTEVEKENPTkZJR19SODE2OV9MRURTKSkge1xcbiBcXHRcXHRpZiAocnRsX2lzXzgxMjUodHApKVxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jIGIvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY1xcbmluZGV4IDU5ZGZlMzVhZmE1NGZjLi5jNDUwZWUzM2I3NWNjMSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jXFxuKysrIGIvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY1xcbkBAIC0xODI4LDYgKzE4MjgsNzIgQEAgaW50IHBoeWxpbmtfc2V0X2ZpeGVkX2xpbmsoc3RydWN0IHBoeWxpbmsgKnBsLFxcbiB9XFxuIEVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfc2V0X2ZpeGVkX2xpbmspO1xcbiBcXG4rLyoqXFxuKyAqIHBoeWxpbmtfc2V0X21hY19jYXBhYmlsaXRpZXMoKSAtIER5bmFtaWNhbGx5IHVwZGF0ZSBNQUMgY2FwYWJpbGl0aWVzXFxuKyAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbisgKiBAbWFjX2NhcGFiaWxpdGllczogdGhlIG5ldyBNQUMgY2FwYWJpbGl0aWVzIG1hc2tcXG4rICpcXG4rICogVGhpcyBmdW5jdGlvbiBhbGxvd3MgYSBNQUMgZHJpdmVyIHRvIGR5bmFtaWNhbGx5IGNoYW5nZSBpdHMgY2FwYWJpbGl0aWVzLFxcbisgKiBzdWNoIGFzIGxvc2luZy9nYWluaW5nIFBhdXNlIGZyYW1lIHN1cHBvcnQgYmFzZWQgb24gTVRVIHNpemUuXFxuKyAqIEl0IHJlY2FsY3VsYXRlcyBzdXBwb3J0ZWQgbGluayBtb2RlcyBhbmQgdHJpZ2dlcnMgcmVuZWdvdGlhdGlvbiBpZiBuZWVkZWQuXFxuKyAqL1xcbit2b2lkIHBoeWxpbmtfc2V0X21hY19jYXBhYmlsaXRpZXMoc3RydWN0IHBoeWxpbmsgKnBsLCB1bnNpZ25lZCBsb25nIG1hY19jYXBhYmlsaXRpZXMpXFxuK3tcXG4rXFx0c3RydWN0IHBoeWxpbmtfbGlua19zdGF0ZSAqY29uZmlnID0gXFx1MDAyNnBsLVxcdTAwM2VsaW5rX2NvbmZpZztcXG4rXFx0dW5zaWduZWQgbG9uZyBjYXBzX2FkZGVkLCBjYXBzX3JlbW92ZWQ7XFxuK1xcbitcXHRBU1NFUlRfUlROTCgpO1xcbitcXG4rXFx0Y2Fwc19hZGRlZCA9IG1hY19jYXBhYmlsaXRpZXMgXFx1MDAyNiB+cGwtXFx1MDAzZWNvbmZpZy1cXHUwMDNlbWFjX2NhcGFiaWxpdGllcztcXG4rXFx0Y2Fwc19yZW1vdmVkID0gcGwtXFx1MDAzZWNvbmZpZy1cXHUwMDNlbWFjX2NhcGFiaWxpdGllcyBcXHUwMDI2IH5tYWNfY2FwYWJpbGl0aWVzO1xcbitcXG4rXFx0aWYgKCFjYXBzX2FkZGVkIFxcdTAwMjZcXHUwMDI2ICFjYXBzX3JlbW92ZWQpXFxuK1xcdFxcdHJldHVybjtcXG4rXFxuK1xcdG11dGV4X2xvY2soXFx1MDAyNnBsLVxcdTAwM2VzdGF0ZV9tdXRleCk7XFxuK1xcbitcXHRwbC1cXHUwMDNlY29uZmlnLVxcdTAwM2VtYWNfY2FwYWJpbGl0aWVzID0gbWFjX2NhcGFiaWxpdGllcztcXG4rXFxuK1xcdGlmIChjYXBzX3JlbW92ZWQgXFx1MDAyNiBNQUNfU1lNX1BBVVNFKVxcbitcXHRcXHRsaW5rbW9kZV9jbGVhcl9iaXQoRVRIVE9PTF9MSU5LX01PREVfUGF1c2VfQklULCBwbC1cXHUwMDNlc3VwcG9ydGVkKTtcXG4rXFx0aWYgKGNhcHNfcmVtb3ZlZCBcXHUwMDI2IE1BQ19BU1lNX1BBVVNFKVxcbitcXHRcXHRsaW5rbW9kZV9jbGVhcl9iaXQoRVRIVE9PTF9MSU5LX01PREVfQXN5bV9QYXVzZV9CSVQsIHBsLVxcdTAwM2VzdXBwb3J0ZWQpO1xcbitcXG4rXFx0bGlua21vZGVfYW5kKGNvbmZpZy1cXHUwMDNlYWR2ZXJ0aXNpbmcsIGNvbmZpZy1cXHUwMDNlYWR2ZXJ0aXNpbmcsIHBsLVxcdTAwM2VzdXBwb3J0ZWQpO1xcbitcXG4rXFx0aWYgKGNhcHNfYWRkZWQgXFx1MDAyNiBNQUNfU1lNX1BBVVNFKSB7XFxuK1xcdFxcdGxpbmttb2RlX3NldF9iaXQoRVRIVE9PTF9MSU5LX01PREVfUGF1c2VfQklULCBwbC1cXHUwMDNlc3VwcG9ydGVkKTtcXG4rXFx0XFx0aWYgKHBsLVxcdTAwM2VwaHlkZXYgXFx1MDAyNlxcdTAwMjYgIXBoeWxpbmtfdGVzdChwbC1cXHUwMDNlcGh5ZGV2LVxcdTAwM2VzdXBwb3J0ZWQsIFBhdXNlKSlcXG4rXFx0XFx0XFx0bGlua21vZGVfY2xlYXJfYml0KEVUSFRPT0xfTElOS19NT0RFX1BhdXNlX0JJVCwgcGwtXFx1MDAzZXN1cHBvcnRlZCk7XFxuK1xcdH1cXG4rXFx0aWYgKGNhcHNfYWRkZWQgXFx1MDAyNiBNQUNfQVNZTV9QQVVTRSkge1xcbitcXHRcXHRsaW5rbW9kZV9zZXRfYml0KEVUSFRPT0xfTElOS19NT0RFX0FzeW1fUGF1c2VfQklULCBwbC1cXHUwMDNlc3VwcG9ydGVkKTtcXG4rXFx0XFx0aWYgKHBsLVxcdTAwM2VwaHlkZXYgXFx1MDAyNlxcdTAwMjYgIXBoeWxpbmtfdGVzdChwbC1cXHUwMDNlcGh5ZGV2LVxcdTAwM2VzdXBwb3J0ZWQsIEFzeW1fUGF1c2UpKVxcbitcXHRcXHRcXHRsaW5rbW9kZV9jbGVhcl9iaXQoRVRIVE9PTF9MSU5LX01PREVfQXN5bV9QYXVzZV9CSVQsIHBsLVxcdTAwM2VzdXBwb3J0ZWQpO1xcbitcXHR9XFxuK1xcbitcXHRsaW5rbW9kZV9hbmQoY29uZmlnLVxcdTAwM2VhZHZlcnRpc2luZywgY29uZmlnLVxcdTAwM2VhZHZlcnRpc2luZywgcGwtXFx1MDAzZXN1cHBvcnRlZCk7XFxuK1xcbitcXHRpZiAoY29uZmlnLVxcdTAwM2VwYXVzZSBcXHUwMDI2IE1MT19QQVVTRV9BTikge1xcbitcXHRcXHRpZiAocGh5bGlua190ZXN0KHBsLVxcdTAwM2VzdXBwb3J0ZWQsIFBhdXNlKSlcXG4rXFx0XFx0XFx0bGlua21vZGVfc2V0X2JpdChFVEhUT09MX0xJTktfTU9ERV9QYXVzZV9CSVQsIGNvbmZpZy1cXHUwMDNlYWR2ZXJ0aXNpbmcpO1xcbitcXG4rXFx0XFx0aWYgKHBoeWxpbmtfdGVzdChwbC1cXHUwMDNlc3VwcG9ydGVkLCBBc3ltX1BhdXNlKSlcXG4rXFx0XFx0XFx0bGlua21vZGVfc2V0X2JpdChFVEhUT09MX0xJTktfTU9ERV9Bc3ltX1BhdXNlX0JJVCwgY29uZmlnLVxcdTAwM2VhZHZlcnRpc2luZyk7XFxuK1xcdH1cXG4rXFxuK1xcdGlmICghcGwtXFx1MDAzZXBoeWRldilcXG4rXFx0XFx0cGh5bGlua19jaGFuZ2VfaW5iYW5kX2FkdmVydChwbCk7XFxuK1xcbitcXHRtdXRleF91bmxvY2soXFx1MDAyNnBsLVxcdTAwM2VzdGF0ZV9tdXRleCk7XFxuK1xcbitcXHRpZiAocGwtXFx1MDAzZXBoeWRldikge1xcbitcXHRcXHRsaW5rbW9kZV9jb3B5KHBsLVxcdTAwM2VwaHlkZXYtXFx1MDAzZWFkdmVydGlzaW5nLCBjb25maWctXFx1MDAzZWFkdmVydGlzaW5nKTtcXG4rXFx0XFx0cGh5X3N0YXJ0X2FuZWcocGwtXFx1MDAzZXBoeWRldik7XFxuK1xcdH1cXG4rfVxcbitFWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX3NldF9tYWNfY2FwYWJpbGl0aWVzKTtcXG4rXFxuIC8qKlxcbiAgKiBwaHlsaW5rX2NyZWF0ZSgpIC0gY3JlYXRlIGEgcGh5bGluayBpbnN0YW5jZVxcbiAgKiBAY29uZmlnOiBhIHBvaW50ZXIgdG8gdGhlIHRhcmdldCBcXHUwMDI2c3RydWN0IHBoeWxpbmtfY29uZmlnXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jIGIvZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmNcXG5pbmRleCBiNjVkMGY1ZmExYTAxNC4uNDcyMWJhMDcxY2JiZTQgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmNcXG4rKysgYi9kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uY1xcbkBAIC0xNyw3ICsxNyw2IEBAXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9kZWxheS5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvY2xrLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9zdHJpbmdfY2hvaWNlcy5oXFx1MDAzZVxcbi0jaW5jbHVkZSBcXHUwMDNjbmV0L3BoeS9yZWFsdGVrX3BoeS5oXFx1MDAzZVxcbiBcXG4gI2luY2x1ZGUgXFxcIi4uL3BoeWxpYi5oXFxcIlxcbiAjaW5jbHVkZSBcXFwicmVhbHRlay5oXFxcIlxcbkBAIC0yNjQ2LDQ1ICsyNjQ1LDYgQEAgc3RhdGljIGlycXJldHVybl90IHJ0bDgyMjFiX2hhbmRsZV9pbnRlcnJ1cHQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4gXFx0cmV0dXJuIElSUV9IQU5ETEVEO1xcbiB9XFxuIFxcbi1zdGF0aWMgaW50IHJ0bGdlbl9zZnBfZ2V0X2ZlYXR1cmVzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuLXtcXG4tXFx0bGlua21vZGVfc2V0X2JpdChFVEhUT09MX0xJTktfTU9ERV8xMDAwMGJhc2VUX0Z1bGxfQklULFxcbi1cXHRcXHRcXHQgcGh5ZGV2LVxcdTAwM2VzdXBwb3J0ZWQpO1xcbi1cXG4tXFx0Lyogc2V0IGRlZmF1bHQgbW9kZSAqL1xcbi1cXHRwaHlkZXYtXFx1MDAzZXNwZWVkID0gU1BFRURfMTAwMDA7XFxuLVxcdHBoeWRldi1cXHUwMDNlZHVwbGV4ID0gRFVQTEVYX0ZVTEw7XFxuLVxcbi1cXHRwaHlkZXYtXFx1MDAzZXBvcnQgPSBQT1JUX0ZJQlJFO1xcbi1cXG4tXFx0cmV0dXJuIDA7XFxuLX1cXG4tXFxuLXN0YXRpYyBpbnQgcnRsZ2VuX3NmcF9yZWFkX3N0YXR1cyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi17XFxuLVxcdGludCB2YWwsIGVycjtcXG4tXFxuLVxcdGVyciA9IGdlbnBoeV91cGRhdGVfbGluayhwaHlkZXYpO1xcbi1cXHRpZiAoZXJyKVxcbi1cXHRcXHRyZXR1cm4gZXJyO1xcbi1cXG4tXFx0aWYgKCFwaHlkZXYtXFx1MDAzZWxpbmspXFxuLVxcdFxcdHJldHVybiAwO1xcbi1cXG4tXFx0dmFsID0gcGh5X3JlYWQocGh5ZGV2LCBSVExfUEhZU1IpO1xcbi1cXHRpZiAodmFsIFxcdTAwM2MgMClcXG4tXFx0XFx0cmV0dXJuIHZhbDtcXG4tXFxuLVxcdHJ0bGdlbl9kZWNvZGVfcGh5c3IocGh5ZGV2LCB2YWwpO1xcbi1cXG4tXFx0cmV0dXJuIDA7XFxuLX1cXG4tXFxuLXN0YXRpYyBpbnQgcnRsZ2VuX3NmcF9jb25maWdfYW5lZyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi17XFxuLVxcdHJldHVybiAwO1xcbi19XFxuLVxcbiBzdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgcmVhbHRla19kcnZzW10gPSB7XFxuIFxcdHtcXG4gXFx0XFx0UEhZX0lEX01BVENIX0VYQUNUKDB4MDAwMDgyMDEpLFxcbkBAIC0yOTM0LDIwICsyODk0LDYgQEAgc3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIHJlYWx0ZWtfZHJ2c1tdID0ge1xcbiBcXHRcXHQud3JpdGVfcGFnZVxcdD0gcnRsODIxeF93cml0ZV9wYWdlLFxcbiBcXHRcXHQucmVhZF9tbWRcXHQ9IHJ0bDgyMnhfcmVhZF9tbWQsXFxuIFxcdFxcdC53cml0ZV9tbWRcXHQ9IHJ0bDgyMnhfd3JpdGVfbW1kLFxcbi1cXHR9LCB7XFxuLVxcdFxcdFBIWV9JRF9NQVRDSF9FWEFDVChQSFlfSURfUlRMX0RVTU1ZX1NGUCksXFxuLVxcdFxcdC5uYW1lXFx0XFx0PSBcXFwiUmVhbHRlayBTRlAgUEhZIE1vZGVcXFwiLFxcbi1cXHRcXHQuZmxhZ3NcXHRcXHQ9IFBIWV9JU19JTlRFUk5BTCxcXG4tXFx0XFx0LnByb2JlXFx0XFx0PSBydGw4MjJ4X3Byb2JlLFxcbi1cXHRcXHQuZ2V0X2ZlYXR1cmVzXFx0PSBydGxnZW5fc2ZwX2dldF9mZWF0dXJlcyxcXG4tXFx0XFx0LmNvbmZpZ19hbmVnXFx0PSBydGxnZW5fc2ZwX2NvbmZpZ19hbmVnLFxcbi1cXHRcXHQucmVhZF9zdGF0dXNcXHQ9IHJ0bGdlbl9zZnBfcmVhZF9zdGF0dXMsXFxuLVxcdFxcdC5zdXNwZW5kXFx0PSBnZW5waHlfc3VzcGVuZCxcXG4tXFx0XFx0LnJlc3VtZVxcdFxcdD0gcnRsZ2VuX3Jlc3VtZSxcXG4tXFx0XFx0LnJlYWRfcGFnZVxcdD0gcnRsODIxeF9yZWFkX3BhZ2UsXFxuLVxcdFxcdC53cml0ZV9wYWdlXFx0PSBydGw4MjF4X3dyaXRlX3BhZ2UsXFxuLVxcdFxcdC5yZWFkX21tZFxcdD0gcnRsODIyeF9yZWFkX21tZCxcXG4tXFx0XFx0LndyaXRlX21tZFxcdD0gcnRsODIyeF93cml0ZV9tbWQsXFxuIFxcdH0sIHtcXG4gXFx0XFx0UEhZX0lEX01BVENIX0VYQUNUKDB4MDAxY2NhZDApLFxcbiBcXHRcXHQubmFtZVxcdFxcdD0gXFxcIlJUTDgyMjQgMi41R2JwcyBQSFlcXFwiLFxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaCBiL2luY2x1ZGUvbGludXgvcGh5bGluay5oXFxuaW5kZXggMmJjMGRiM2Q1MmFjOGQuLjU2NjQyYWI5NjFhNzUzIDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvbGludXgvcGh5bGluay5oXFxuKysrIGIvaW5jbHVkZS9saW51eC9waHlsaW5rLmhcXG5AQCAtODQyLDQgKzg0Miw2IEBAIHZvaWQgcGh5bGlua19yZXBsYXlfbGlua19iZWdpbihzdHJ1Y3QgcGh5bGluayAqcGwpO1xcbiBcXG4gdm9pZCBwaHlsaW5rX3JlcGxheV9saW5rX2VuZChzdHJ1Y3QgcGh5bGluayAqcGwpO1xcbiBcXG4rdm9pZCBwaHlsaW5rX3NldF9tYWNfY2FwYWJpbGl0aWVzKHN0cnVjdCBwaHlsaW5rICpwbCwgdW5zaWduZWQgbG9uZyBtYWNfY2FwYWJpbGl0aWVzKTtcXG4rXFxuICNlbmRpZlxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9waHkvcmVhbHRla19waHkuaCBiL2luY2x1ZGUvbmV0L3BoeS9yZWFsdGVrX3BoeS5oXFxuZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0XFxuaW5kZXggZDY4M2JjMWIwNjU5Y2QuLjAwMDAwMDAwMDAwMDAwXFxuLS0tIGEvaW5jbHVkZS9uZXQvcGh5L3JlYWx0ZWtfcGh5LmhcXG4rKysgL2Rldi9udWxsXFxuQEAgLTEsNyArMCwwIEBAXFxuLS8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wICovXFxuLSNpZm5kZWYgX1JFQUxURUtfUEhZX0hcXG4tI2RlZmluZSBfUkVBTFRFS19QSFlfSFxcbi1cXG4tI2RlZmluZVxcdFBIWV9JRF9SVExfRFVNTVlfU0ZQXFx0MHgwMDFjY2JmZlxcbi1cXG4tI2VuZGlmIC8qIF9SRUFMVEVLX1BIWV9IICovXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDE2OjM0OjQyLjYwNTU1NTg1WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0ODUxNDExMTE2NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJSODE2OVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInBoeWxpbmtfc2V0X21hY19jYXBhYmlsaXRpZXNcIixcbiAgICBcInJ0bF9pbml0X3BoeWxpbmtcIixcbiAgICBcInJ0bDgxNjlfcGNzX2NvbmZpZ1wiLFxuICAgIFwicnRsODE2OV9wY3NfZ2V0X3N0YXRlXCIsXG4gICAgXCJydGxfbWFjX2xpbmtfdXBcIixcbiAgICBcInJ0bF9tYWNfbGlua19kb3duXCIsXG4gICAgXCJydGxfbWFjX3NlbGVjdF9wY3NcIixcbiAgICBcInJ0bF9tYWNfZGlzYWJsZV90eF9scGlcIixcbiAgICBcInJ0bF9tYWNfZW5hYmxlX3R4X2xwaVwiLFxuICAgIFwicnRsODE2OV9jaGFuZ2VfbXR1XCIsXG4gICAgXCJydGxfbG93cG93ZXJfaGlkZGVuX2Z1bmN0aW9uc1wiLFxuICAgIFwicjgxMjdfc2ZwX2luaXRfMWdcIixcbiAgICBcInI4MTI3X3NmcF9pbml0XzEwZ1wiLFxuICAgIFwicnRsODE2OV9pb2N0bFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1pZ3JhdGVzIHRoZSBSZWFsdGVrIHI4MTY5IEV0aGVybmV0IGRyaXZlciBmcm9tIHBoeWxpYiB0byBwaHlsaW5rLCBpbnRyb2R1Y2luZyBzaWduaWZpY2FudCBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGRyaXZlcidzIGluaXRpYWxpemF0aW9uLCBsaW5rIG1hbmFnZW1lbnQsIGFuZCBNVFUgaGFuZGxpbmcuIEl0IGFsc28gYWRkcyBhIG5ldyBwaHlsaW5rIEFQSSBgcGh5bGlua19zZXRfbWFjX2NhcGFiaWxpdGllc2AgdG8gZHluYW1pY2FsbHkgdXBkYXRlIE1BQyBjYXBhYmlsaXRpZXMuIFRoZXNlIGFyZSByZWFjaGFibGUgY29udHJvbC1wYXRoIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQsIGVzcGVjaWFsbHkgdmlhIHN5el9wY2kgYW5kIG5ldGxpbmsvaW9jdGwgaW50ZXJmYWNlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAxZjc4NTAwNDU2YjgzOTNlYWQ2ZDZmYmMxNWE0OWMzYjU4NTBhOWY0XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBKdWwgNyAxNjozNDozOSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZ1xuaW5kZXggOWIwZjRmOTYzMWRiYWEuLjQ5YWM3MjczNDIyNWY3IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9LY29uZmlnXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWdcbkBAIC04OCw2ICs4OCw3IEBAIGNvbmZpZyBSODE2OVxuIFx0c2VsZWN0IENSQzMyXG4gXHRzZWxlY3QgUEhZTElCXG4gXHRzZWxlY3QgUkVBTFRFS19QSFlcbitcdHNlbGVjdCBQSFlMSU5LXG4gXHRoZWxwXG4gXHQgIFNheSBZIGhlcmUgaWYgeW91IGhhdmUgYSBSZWFsdGVrIEV0aGVybmV0IGFkYXB0ZXIgYmVsb25naW5nIHRvXG4gXHQgIHRoZSBmb2xsb3dpbmcgZmFtaWxpZXM6XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uY1xuaW5kZXggZWM0ZmMyMWZhMjFmYjAuLjEyZTA3M2I5YTYxNDc5IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jXG5AQCAtMjYsMTIgKzI2LDEyIEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvZG1hLW1hcHBpbmcuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3BtX3J1bnRpbWUuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2JpdGZpZWxkLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9waHlsaW5rLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9wcmVmZXRjaC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvaXB2Ni5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvdW5hbGlnbmVkLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NuZXQvaXA2X2NoZWNrc3VtLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NuZXQvbmV0ZGV2X3F1ZXVlcy5oXHUwMDNlXG4tI2luY2x1ZGUgXHUwMDNjbmV0L3BoeS9yZWFsdGVrX3BoeS5oXHUwMDNlXG4gXG4gI2luY2x1ZGUgXCJyODE2OS5oXCJcbiAjaW5jbHVkZSBcInI4MTY5X2Zpcm13YXJlLmhcIlxuQEAgLTk2LDYgKzk2LDI4IEBAXG4gI2RlZmluZSBKVU1CT185S1x0KDkgKiBTWl8xSyAtIFZMQU5fRVRIX0hMRU4gLSBFVEhfRkNTX0xFTilcbiAjZGVmaW5lIEpVTUJPXzE2S1x0KFNaXzE2SyAtIFZMQU5fRVRIX0hMRU4gLSBFVEhfRkNTX0xFTilcbiBcbisjZGVmaW5lIE9DUF9TRFNfQUREUl9SRUdcdFx0MHhFQjEwXG4rI2RlZmluZSBPQ1BfU0RTX0NNRF9SRUdcdFx0XHQweEVCMEVcbisjZGVmaW5lIE9DUF9TRFNfREFUQV9SRUdcdFx0MHhFQjE0XG4rI2RlZmluZSBTRFNfQ01EX1JFQURcdFx0XHQweDAwMDFcbisjZGVmaW5lIFJUTF9TRFNfQzIyX0JBU0VcdFx0MHg0MFxuKyNkZWZpbmUgUlRMX1NEU19DNDVfQkFTRVx0XHQweDAwODBcbisjZGVmaW5lIFJUTF9QS0dfREVURUNUXHRcdFx0MHhkYzAwXG4rI2RlZmluZSBSVExfUEtHX0RFVEVDVF9NQVNLXHRcdDB4MDA3OFxuKyNkZWZpbmUgUlRMX1BLR19ERVRFQ1RfODExNkFGXHRcdDB4MDAzMFxuKyNkZWZpbmUgUlRMX0lOVF9IV19JRFx0XHRcdDB4ZDAwNlxuKyNkZWZpbmUgUlRMX0lOVF9IV19JRF9NQVNLXHRcdDB4MDBmZlxuKyNkZWZpbmUgUlRMX0lOVF9IV19JRF84MTE2QUZcdFx0MHgwMDAwXG4rI2RlZmluZSBSVEw4MTE2QUZfRlVOQ19QTV9DU1JcdFx0MHg4MFxuKyNkZWZpbmUgUlRMODExNkFGX0ZVTkNfRVhQX0xOS0NUTFx0MHg0NFxuKyNkZWZpbmUgUlRMX1BNX0QzSE9UXHRcdFx0R0VOTUFTSygxLCAwKVxuKyNkZWZpbmUgUjgxMjdfU0RTX0NNRFx0XHRcdDB4MjM0OFxuKyNkZWZpbmUgUjgxMjdfU0RTX0FERFJcdFx0XHQweDIzNGFcbisjZGVmaW5lIFI4MTI3X1NEU19EQVRBX0lOXHRcdDB4MjM0Y1xuKyNkZWZpbmUgUjgxMjdfU0RTX0RBVEFfT1VUXHRcdDB4MjM0ZVxuKyNkZWZpbmUgUjgxMjdfU0RTX0NNRF9FWEVDXHRcdEJJVCgwKVxuKyNkZWZpbmUgUjgxMjdfU0RTX0NNRF9XRVx0XHRCSVQoMSlcbitcbiBzdGF0aWMgY29uc3Qgc3RydWN0IHJ0bF9jaGlwX2luZm8ge1xuIFx0dTMyIG1hc2s7XG4gXHR1MzIgdmFsO1xuQEAgLTMzNCwxMSArMzU2LDEzIEBAIGVudW0gcnRsX3JlZ2lzdGVycyB7XG4gXHRBTERQU19MVFJcdD0gMHhlMGEyLFxuIFx0TFRSX09CRkZfTE9DS1x0PSAweGUwMzIsXG4gXHRMVFJfU05PT1BcdD0gMHhlMDM0LFxuK1x0U0VORF9MVFJfTVNHXHQ9IDB4ZTAzOCxcbiBcbiAjZGVmaW5lIEFMRFBTX0xUUl9FTlx0XHRcdEJJVCgwKVxuICNkZWZpbmUgTFRSX09CRkZfTE9DS19FTlx0XHRCSVQoMClcbiAjZGVmaW5lIExJTktfU1BFRURfQ0hBTkdFX0VOXHRcdEJJVCgxNClcbiAjZGVmaW5lIExUUl9TTk9PUF9FTlx0XHRcdEdFTk1BU0soMTUsIDE0KVxuKyNkZWZpbmUgTFRSX01TR19FTlx0XHRcdEJJVCgwKVxuIH07XG4gXG4gZW51bSBydGw4MTY4XzgxMDFfcmVnaXN0ZXJzIHtcbkBAIC03MjgsNiArNzUyLDEyIEBAIGVudW0gcnRsX2Rhc2hfdHlwZSB7XG4gXHRSVExfREFTSF8yNV9CUCxcbiB9O1xuIFxuK2VudW0gcnRsX3NmcF9tb2RlIHtcbitcdFJUTF9TRlBfTk9ORSxcbitcdFJUTF9TRlBfODE2OF9BRixcbitcdFJUTF9TRlBfODEyN19BVEYsXG4rfTtcbitcbiBzdHJ1Y3QgcnRsODE2OV9wcml2YXRlIHtcbiBcdHZvaWQgX19pb21lbSAqbW1pb19hZGRyO1x0LyogbWVtb3J5IG1hcCBwaHlzaWNhbCBhZGRyZXNzICovXG4gXHRzdHJ1Y3QgcGNpX2RldiAqcGNpX2RldjtcbkBAIC03MzYsNiArNzY2LDcgQEAgc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSB7XG4gXHRzdHJ1Y3QgbmFwaV9zdHJ1Y3QgbmFwaTtcbiBcdGVudW0gbWFjX3ZlcnNpb24gbWFjX3ZlcnNpb247XG4gXHRlbnVtIHJ0bF9kYXNoX3R5cGUgZGFzaF90eXBlO1xuK1x0ZW51bSBydGxfc2ZwX21vZGUgc2ZwX21vZGU7XG4gXHR1MzIgY3VyX3J4OyAvKiBJbmRleCBpbnRvIHRoZSBSeCBkZXNjcmlwdG9yIGJ1ZmZlciBvZiBuZXh0IFJ4IHBrdC4gKi9cbiBcdHUzMiBjdXJfdHg7IC8qIEluZGV4IGludG8gdGhlIFR4IGRlc2NyaXB0b3IgYnVmZmVyIG9mIG5leHQgUnggcGt0LiAqL1xuIFx0dTMyIGRpcnR5X3R4O1xuQEAgLTc1MCw2ICs3ODEsNyBAQCBzdHJ1Y3QgcnRsODE2OV9wcml2YXRlIHtcbiBcdHUzMiBpcnFfbWFzaztcbiBcdGludCBpcnE7XG4gXHRzdHJ1Y3QgY2xrICpjbGs7XG4rXHRpbnQgc3BlZWQ7XG4gXG4gXHRzdHJ1Y3Qge1xuIFx0XHRERUNMQVJFX0JJVE1BUChmbGFncywgUlRMX0ZMQUdfTUFYKTtcbkBAIC03NjIsNyArNzk0LDYgQEAgc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSB7XG4gXHR1bnNpZ25lZCBzdXBwb3J0c19nbWlpOjE7XG4gXHR1bnNpZ25lZCBhc3BtX21hbmFnZWFibGU6MTtcbiBcdHVuc2lnbmVkIGRhc2hfZW5hYmxlZDoxO1xuLVx0Ym9vbCBzZnBfbW9kZToxO1xuIFx0ZG1hX2FkZHJfdCBjb3VudGVyc19waHlzX2FkZHI7XG4gXHRzdHJ1Y3QgcnRsODE2OV9jb3VudGVycyAqY291bnRlcnM7XG4gXHRzdHJ1Y3QgcnRsODE2OV90Y19vZmZzZXRzIHRjX29mZnNldDtcbkBAIC03NzQsNiArODA1LDExIEBAIHN0cnVjdCBydGw4MTY5X3ByaXZhdGUge1xuIFx0c3RydWN0IHI4MTY5X2xlZF9jbGFzc2RldiAqbGVkcztcbiBcbiBcdHUzMiBvY3BfYmFzZTtcbitcdHN0cnVjdCBwaHlsaW5rICpwaHlsaW5rO1xuK1x0c3RydWN0IHBoeWxpbmtfY29uZmlnIHBoeWxpbmtfY29uZmlnO1xuK1x0c3RydWN0IHBoeWxpbmtfcGNzIHBjcztcbitcdHN0cnVjdCBldGh0b29sX3BhdXNlcGFyYW0gc2F2ZWRfcGF1c2U7XG4rXHRib29sIGp1bWJvX3BhdXNlX3NhdmVkO1xuIH07XG4gXG4gdHlwZWRlZiB2b2lkICgqcnRsX2dlbmVyaWNfZmN0KShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCk7XG5AQCAtMTEyOCwxMCArMTE2NCw2IEBAIHN0YXRpYyBpbnQgcjgxNjhfcGh5X29jcF9yZWFkKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCB1MzIgcmVnKVxuIFx0aWYgKHJ0bF9vY3BfcmVnX2ZhaWx1cmUocmVnKSlcbiBcdFx0cmV0dXJuIDA7XG4gXG4tXHQvKiBSZXR1cm4gZHVtbXkgTUlJX1BIWVNJRDIgaW4gU0ZQIG1vZGUgdG8gbWF0Y2ggU0ZQIFBIWSBkcml2ZXIgKi9cbi1cdGlmICh0cC1cdTAwM2VzZnBfbW9kZSBcdTAwMjZcdTAwMjYgcmVnID09IChPQ1BfU1REX1BIWV9CQVNFICsgMiAqIE1JSV9QSFlTSUQyKSlcbi1cdFx0cmV0dXJuIFBIWV9JRF9SVExfRFVNTVlfU0ZQIFx1MDAyNiAweGZmZmY7XG4tXG4gXHRSVExfVzMyKHRwLCBHUEhZX09DUCwgcmVnIFx1MDAzY1x1MDAzYyAxNSk7XG4gXG4gXHRyZXR1cm4gcnRsX2xvb3Bfd2FpdF9oaWdoKHRwLCBcdTAwMjZydGxfb2NwX2dwaHlfY29uZCwgMjUsIDEwKSA/XG5AQCAtMTE5OSw2ICsxMjMxLDY3IEBAIHN0YXRpYyB2b2lkIHI4MTI3X3NmcF9zZHNfcGh5X3Jlc2V0KHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuIFx0dXNsZWVwX3JhbmdlKDEwLCAyMCk7XG4gfVxuIFxuK0RFQ0xBUkVfUlRMX0NPTkQocjgxMjdfc2RzX2NtZF9jb25kKVxuK3tcbitcdHJldHVybiBSVExfUjE2KHRwLCBSODEyN19TRFNfQ01EKSBcdTAwMjYgUjgxMjdfU0RTX0NNRF9FWEVDO1xuK31cbitcbitzdGF0aWMgdTE2IHI4MTI3X3Nkc19yZWFkKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCB1MTYgaW5kZXgsIHUxNiBwYWdlLCB1MTYgcmVnKVxuK3tcbitcdHUxNiBhZGRyID0gKGluZGV4IFx1MDAzY1x1MDAzYyAxMSkgfCAocGFnZSBcdTAwM2NcdTAwM2MgNSkgfCByZWc7XG4rXG4rXHRSVExfVzE2KHRwLCBSODEyN19TRFNfQUREUiwgYWRkcik7XG4rXHRSVExfVzE2KHRwLCBSODEyN19TRFNfQ01ELCBSODEyN19TRFNfQ01EX0VYRUMpO1xuK1xuK1x0aWYgKHJ0bF9sb29wX3dhaXRfbG93KHRwLCBcdTAwMjZyODEyN19zZHNfY21kX2NvbmQsIDEwLCAxMDApKVxuK1x0XHRyZXR1cm4gUlRMX1IxNih0cCwgUjgxMjdfU0RTX0RBVEFfT1VUKTtcbitcbitcdHJldHVybiAweGZmZmY7XG4rfVxuK1xuK3N0YXRpYyB2b2lkIHI4MTI3X3Nkc193cml0ZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgdTE2IGluZGV4LCB1MTYgcGFnZSxcbitcdFx0XHQgICAgdTE2IHJlZywgdTE2IHZhbClcbit7XG4rXHR1MTYgYWRkciA9IChpbmRleCBcdTAwM2NcdTAwM2MgMTEpIHwgKHBhZ2UgXHUwMDNjXHUwMDNjIDUpIHwgcmVnO1xuK1xuK1x0UlRMX1cxNih0cCwgUjgxMjdfU0RTX0RBVEFfSU4sIHZhbCk7XG4rXHRSVExfVzE2KHRwLCBSODEyN19TRFNfQUREUiwgYWRkcik7XG4rXHRSVExfVzE2KHRwLCBSODEyN19TRFNfQ01ELCBSODEyN19TRFNfQ01EX0VYRUMgfCBSODEyN19TRFNfQ01EX1dFKTtcbitcbitcdHJ0bF9sb29wX3dhaXRfbG93KHRwLCBcdTAwMjZyODEyN19zZHNfY21kX2NvbmQsIDEwLCAxMDApO1xuK31cbitcbitzdGF0aWMgdm9pZCByODEyN19zZHNfbW9kaWZ5KHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCB1MTYgaW5kZXgsIHUxNiBwYWdlLFxuK1x0XHRcdCAgICAgdTE2IHJlZywgdTE2IGNsZWFybWFzaywgdTE2IHNldG1hc2spXG4re1xuK1x0dTE2IHZhbCA9IHI4MTI3X3Nkc19yZWFkKHRwLCBpbmRleCwgcGFnZSwgcmVnKTtcbitcbitcdHZhbCA9ICh2YWwgXHUwMDI2IH5jbGVhcm1hc2spIHwgc2V0bWFzaztcbitcdHI4MTI3X3Nkc193cml0ZSh0cCwgaW5kZXgsIHBhZ2UsIHJlZywgdmFsKTtcbit9XG4rXG4rc3RhdGljIHZvaWQgcjgxMjdfc2ZwX2luaXRfMWcoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG4re1xuK1x0aW50IHZhbDtcbitcbitcdHI4MTI3X3NmcF9zZHNfcGh5X3Jlc2V0KHRwKTtcbitcbitcdHI4MTI3X3Nkc19tb2RpZnkodHAsIDAsIDEsIDMxLCAwLCBCSVQoMykpO1xuK1x0cjgxMjdfc2RzX21vZGlmeSh0cCwgMCwgMiwgIDAsIEJJVCgxMykgfCBCSVQoMTIpIHwgQklUKDYpLCBCSVQoMTIpIHwgQklUKDYpKTtcbitcdHI4MTI3X3Nkc19tb2RpZnkodHAsIDAsIDAsICA0LCAwLCBCSVQoMikpO1xuK1xuK1x0UlRMX1cxNih0cCwgMHgyMzNhLCAweDgwMDQpO1xuK1x0UlRMX1cxNih0cCwgMHgyMzNlLCAoUlRMX1IxNih0cCwgMHgyMzNlKSBcdTAwMjYgfjB4MzAwMykgfCAweDAwMDIpO1xuK1xuK1x0cjgxNjhfcGh5X29jcF93cml0ZSh0cCwgMHhjNDBhLCAweDAwMDApO1xuK1x0cjgxNjhfcGh5X29jcF93cml0ZSh0cCwgMHhjNDY2LCAweDAwMDApO1xuK1x0cjgxNjhfcGh5X29jcF93cml0ZSh0cCwgMHhjODA4LCAweDAwMDApO1xuK1x0cjgxNjhfcGh5X29jcF93cml0ZSh0cCwgMHhjODBhLCAweDAwMDApO1xuK1xuK1x0dmFsID0gcjgxNjhfcGh5X29jcF9yZWFkKHRwLCAweGM4MDQpO1xuK1x0cjgxNjhfcGh5X29jcF93cml0ZSh0cCwgMHhjODA0LCAodmFsIFx1MDAyNiB+MHgwMDBmKSB8IDB4MDAwYyk7XG4rfVxuK1xuIHN0YXRpYyB2b2lkIHI4MTI3X3NmcF9pbml0XzEwZyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbiB7XG4gXHRpbnQgdmFsO1xuQEAgLTEyMTcsMTIgKzEzMTAsNiBAQCBzdGF0aWMgdm9pZCByODEyN19zZnBfaW5pdF8xMGcoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG4gXHRyODE2OF9waHlfb2NwX3dyaXRlKHRwLCAweGM4MDQsICh2YWwgXHUwMDI2IH4weDAwMGYpIHwgMHgwMDBjKTtcbiB9XG4gXG4tc3RhdGljIHZvaWQgcnRsX3NmcF9pbml0KHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuLXtcbi1cdGlmICh0cC1cdTAwM2VtYWNfdmVyc2lvbiA9PSBSVExfR0lHQV9NQUNfVkVSXzgwKVxuLVx0XHRyODEyN19zZnBfaW5pdF8xMGcodHApO1xuLX1cbi1cbiBzdGF0aWMgdm9pZCBydGxfc2ZwX3Jlc2V0KHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuIHtcbiBcdGlmICh0cC1cdTAwM2VtYWNfdmVyc2lvbiA9PSBSVExfR0lHQV9NQUNfVkVSXzgwKVxuQEAgLTEyODMsNiArMTM3MCwxNSBAQCBzdGF0aWMgdm9pZCBtYWNfbWN1X3dyaXRlKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCBpbnQgcmVnLCBpbnQgdmFsdWUpXG4gXHRyODE2OF9tYWNfb2NwX3dyaXRlKHRwLCB0cC1cdTAwM2VvY3BfYmFzZSArIHJlZywgdmFsdWUpO1xuIH1cbiBcbitzdGF0aWMgYm9vbCBydGxfaXNfODExNmFmKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuK3tcbitcdHJldHVybiB0cC1cdTAwM2VtYWNfdmVyc2lvbiA9PSBSVExfR0lHQV9NQUNfVkVSXzUyIFx1MDAyNlx1MDAyNlxuK1x0XHQocjgxNjhfbWFjX29jcF9yZWFkKHRwLCBSVExfUEtHX0RFVEVDVCkgXHUwMDI2IFJUTF9QS0dfREVURUNUX01BU0spID09XG4rXHRcdFJUTF9QS0dfREVURUNUXzgxMTZBRiBcdTAwMjZcdTAwMjZcbitcdFx0KHI4MTY4X21hY19vY3BfcmVhZCh0cCwgUlRMX0lOVF9IV19JRCkgXHUwMDI2IFJUTF9JTlRfSFdfSURfTUFTSykgPT1cbitcdFx0UlRMX0lOVF9IV19JRF84MTE2QUY7XG4rfVxuK1xuIHN0YXRpYyBpbnQgbWFjX21jdV9yZWFkKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCBpbnQgcmVnKVxuIHtcbiBcdHJldHVybiByODE2OF9tYWNfb2NwX3JlYWQodHAsIHRwLVx1MDAzZW9jcF9iYXNlICsgcmVnKTtcbkBAIC0xNTc4LDYgKzE2NzQsMjAgQEAgc3RhdGljIGJvb2wgcnRsX2Rhc2hfaXNfZW5hYmxlZChzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbiBcdH1cbiB9XG4gXG4rc3RhdGljIGVudW0gcnRsX3NmcF9tb2RlIHJ0bF9nZXRfc2ZwX21vZGUoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG4re1xuK1x0aWYgKHJ0bF9pc184MTI1KHRwKSkge1xuK1x0XHR1MTYgZGF0YSA9IHI4MTY4X21hY19vY3BfcmVhZCh0cCwgUlRMX0lOVF9IV19JRCk7XG4rXG4rXHRcdGlmICgoZGF0YSBcdTAwMjYgMHhmZikgPT0gMHgwNylcbitcdFx0XHRyZXR1cm4gUlRMX1NGUF84MTI3X0FURjtcbitcdH0gZWxzZSBpZiAocnRsX2lzXzgxMTZhZih0cCkpIHtcbitcdFx0cmV0dXJuIFJUTF9TRlBfODE2OF9BRjtcbitcdH1cbitcbitcdHJldHVybiBSVExfU0ZQX05PTkU7XG4rfVxuK1xuIHN0YXRpYyBlbnVtIHJ0bF9kYXNoX3R5cGUgcnRsX2dldF9kYXNoX3R5cGUoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG4ge1xuIFx0c3dpdGNoICh0cC1cdTAwM2VtYWNfdmVyc2lvbikge1xuQEAgLTE2NzMsMTYgKzE3ODMsMTQgQEAgc3RhdGljIHZvaWQgcnRsODE2OV9pcnFfbWFza19hbmRfYWNrKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuIFx0cnRsX3BjaV9jb21taXQodHApO1xuIH1cbiBcbi1zdGF0aWMgdm9pZCBydGxfbGlua19jaGdfcGF0Y2goc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG4rc3RhdGljIHZvaWQgcnRsX2xpbmtfY2hnX3BhdGNoKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCBpbnQgc3BlZWQpXG4ge1xuLVx0c3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiA9IHRwLVx1MDAzZXBoeWRldjtcbi1cbiBcdGlmICh0cC1cdTAwM2VtYWNfdmVyc2lvbiA9PSBSVExfR0lHQV9NQUNfVkVSXzM0IHx8XG4gXHQgICAgdHAtXHUwMDNlbWFjX3ZlcnNpb24gPT0gUlRMX0dJR0FfTUFDX1ZFUl8zOCkge1xuLVx0XHRpZiAocGh5ZGV2LVx1MDAzZXNwZWVkID09IFNQRUVEXzEwMDApIHtcbitcdFx0aWYgKHNwZWVkID09IFNQRUVEXzEwMDApIHtcbiBcdFx0XHRydGxfZXJpX3dyaXRlKHRwLCAweDFiYywgRVJJQVJfTUFTS18xMTExLCAweDAwMDAwMDExKTtcbiBcdFx0XHRydGxfZXJpX3dyaXRlKHRwLCAweDFkYywgRVJJQVJfTUFTS18xMTExLCAweDAwMDAwMDA1KTtcbi1cdFx0fSBlbHNlIGlmIChwaHlkZXYtXHUwMDNlc3BlZWQgPT0gU1BFRURfMTAwKSB7XG4rXHRcdH0gZWxzZSBpZiAoc3BlZWQgPT0gU1BFRURfMTAwKSB7XG4gXHRcdFx0cnRsX2VyaV93cml0ZSh0cCwgMHgxYmMsIEVSSUFSX01BU0tfMTExMSwgMHgwMDAwMDAxZik7XG4gXHRcdFx0cnRsX2VyaV93cml0ZSh0cCwgMHgxZGMsIEVSSUFSX01BU0tfMTExMSwgMHgwMDAwMDAwNSk7XG4gXHRcdH0gZWxzZSB7XG5AQCAtMTY5Miw3ICsxODAwLDcgQEAgc3RhdGljIHZvaWQgcnRsX2xpbmtfY2hnX3BhdGNoKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuIFx0XHRydGxfcmVzZXRfcGFja2V0X2ZpbHRlcih0cCk7XG4gXHR9IGVsc2UgaWYgKHRwLVx1MDAzZW1hY192ZXJzaW9uID09IFJUTF9HSUdBX01BQ19WRVJfMzUgfHxcbiBcdFx0ICAgdHAtXHUwMDNlbWFjX3ZlcnNpb24gPT0gUlRMX0dJR0FfTUFDX1ZFUl8zNikge1xuLVx0XHRpZiAocGh5ZGV2LVx1MDAzZXNwZWVkID09IFNQRUVEXzEwMDApIHtcbitcdFx0aWYgKHNwZWVkID09IFNQRUVEXzEwMDApIHtcbiBcdFx0XHRydGxfZXJpX3dyaXRlKHRwLCAweDFiYywgRVJJQVJfTUFTS18xMTExLCAweDAwMDAwMDExKTtcbiBcdFx0XHRydGxfZXJpX3dyaXRlKHRwLCAweDFkYywgRVJJQVJfTUFTS18xMTExLCAweDAwMDAwMDA1KTtcbiBcdFx0fSBlbHNlIHtcbkBAIC0xNzAwLDcgKzE4MDgsNyBAQCBzdGF0aWMgdm9pZCBydGxfbGlua19jaGdfcGF0Y2goc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG4gXHRcdFx0cnRsX2VyaV93cml0ZSh0cCwgMHgxZGMsIEVSSUFSX01BU0tfMTExMSwgMHgwMDAwMDAzZik7XG4gXHRcdH1cbiBcdH0gZWxzZSBpZiAodHAtXHUwMDNlbWFjX3ZlcnNpb24gPT0gUlRMX0dJR0FfTUFDX1ZFUl8zNykge1xuLVx0XHRpZiAocGh5ZGV2LVx1MDAzZXNwZWVkID09IFNQRUVEXzEwKSB7XG4rXHRcdGlmIChzcGVlZCA9PSBTUEVFRF8xMCkge1xuIFx0XHRcdHJ0bF9lcmlfd3JpdGUodHAsIDB4MWQwLCBFUklBUl9NQVNLXzAwMTEsIDB4NGQwMik7XG4gXHRcdFx0cnRsX2VyaV93cml0ZSh0cCwgMHgxZGMsIEVSSUFSX01BU0tfMDAxMSwgMHgwMDYwYSk7XG4gXHRcdH0gZWxzZSB7XG5AQCAtMjA3NCwxMSArMjE4MiwxMSBAQCBydGxfY29hbGVzY2VfaW5mbyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbiBcdFx0Y2kgPSBydGxfY29hbGVzY2VfaW5mb184MTY4XzgxMzY7XG4gXG4gXHQvKiBpZiBzcGVlZCBpcyB1bmtub3duIGFzc3VtZSBoaWdoZXN0IG9uZSAqL1xuLVx0aWYgKHRwLVx1MDAzZXBoeWRldi1cdTAwM2VzcGVlZCA9PSBTUEVFRF9VTktOT1dOKVxuK1x0aWYgKHRwLVx1MDAzZXNwZWVkID09IFNQRUVEX1VOS05PV04pXG4gXHRcdHJldHVybiBjaTtcbiBcbiBcdGZvciAoOyBjaS1cdTAwM2VzcGVlZDsgY2krKykge1xuLVx0XHRpZiAodHAtXHUwMDNlcGh5ZGV2LVx1MDAzZXNwZWVkID09IGNpLVx1MDAzZXNwZWVkKVxuK1x0XHRpZiAodHAtXHUwMDNlc3BlZWQgPT0gY2ktXHUwMDNlc3BlZWQpXG4gXHRcdFx0cmV0dXJuIGNpO1xuIFx0fVxuIFxuQEAgLTIyMzYsNyArMjM0NCw3IEBAIHN0YXRpYyB2b2lkIHJ0bF9zZXRfZWVlX3R4aWRsZV90aW1lcihzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbiBcbiBzdGF0aWMgdW5zaWduZWQgaW50IHI4MTY5X2dldF90eF9scGlfdGltZXJfdXMoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG4ge1xuLVx0dW5zaWduZWQgaW50IHNwZWVkID0gdHAtXHUwMDNlcGh5ZGV2LVx1MDAzZXNwZWVkO1xuK1x0dW5zaWduZWQgaW50IHNwZWVkID0gdHAtXHUwMDNlc3BlZWQ7XG4gXHR1bnNpZ25lZCBpbnQgdGltZXIgPSB0cC1cdTAwM2V0eF9scGlfdGltZXI7XG4gXG4gXHRpZiAoIXRpbWVyIHx8IHNwZWVkID09IFNQRUVEX1VOS05PV04pXG5AQCAtMjI1NCw3ICsyMzYyLDcgQEAgc3RhdGljIGludCBydGw4MTY5X2dldF9lZWUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IGV0aHRvb2xfa2VlZSAqZGF0YSlcbiBcdGlmICghcnRsX3N1cHBvcnRzX2VlZSh0cCkpXG4gXHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbiBcbi1cdHJldCA9IHBoeV9ldGh0b29sX2dldF9lZWUodHAtXHUwMDNlcGh5ZGV2LCBkYXRhKTtcbitcdHJldCA9IHBoeWxpbmtfZXRodG9vbF9nZXRfZWVlKHRwLVx1MDAzZXBoeWxpbmssIGRhdGEpO1xuIFx0aWYgKHJldClcbiBcdFx0cmV0dXJuIHJldDtcbiBcbkBAIC0yMjcwLDcgKzIzNzgsNyBAQCBzdGF0aWMgaW50IHJ0bDgxNjlfc2V0X2VlZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgZXRodG9vbF9rZWVlICpkYXRhKVxuIFx0aWYgKCFydGxfc3VwcG9ydHNfZWVlKHRwKSlcbiBcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuIFxuLVx0cmV0dXJuIHBoeV9ldGh0b29sX3NldF9lZWUodHAtXHUwMDNlcGh5ZGV2LCBkYXRhKTtcbitcdHJldHVybiBwaHlsaW5rX2V0aHRvb2xfc2V0X2VlZSh0cC1cdTAwM2VwaHlsaW5rLCBkYXRhKTtcbiB9XG4gXG4gc3RhdGljIHZvaWQgcnRsODE2OV9nZXRfcmluZ3BhcmFtKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG5AQCAtMjMwMSwxMyArMjQwOSw4IEBAIHN0YXRpYyB2b2lkIHJ0bDgxNjlfZ2V0X3BhdXNlcGFyYW0oc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcdFx0XHRcdCAgIHN0cnVjdCBldGh0b29sX3BhdXNlcGFyYW0gKmRhdGEpXG4ge1xuIFx0c3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAgPSBuZXRkZXZfcHJpdihkZXYpO1xuLVx0Ym9vbCB0eF9wYXVzZSwgcnhfcGF1c2U7XG4gXG4tXHRwaHlfZ2V0X3BhdXNlKHRwLVx1MDAzZXBoeWRldiwgXHUwMDI2dHhfcGF1c2UsIFx1MDAyNnJ4X3BhdXNlKTtcbi1cbi1cdGRhdGEtXHUwMDNlYXV0b25lZyA9IHRwLVx1MDAzZXBoeWRldi1cdTAwM2VhdXRvbmVnO1xuLVx0ZGF0YS1cdTAwM2V0eF9wYXVzZSA9IHR4X3BhdXNlID8gMSA6IDA7XG4tXHRkYXRhLVx1MDAzZXJ4X3BhdXNlID0gcnhfcGF1c2UgPyAxIDogMDtcbitcdHBoeWxpbmtfZXRodG9vbF9nZXRfcGF1c2VwYXJhbSh0cC1cdTAwM2VwaHlsaW5rLCBkYXRhKTtcbiB9XG4gXG4gc3RhdGljIGludCBydGw4MTY5X3NldF9wYXVzZXBhcmFtKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG5AQCAtMjMxOCw5ICsyNDIxLDcgQEAgc3RhdGljIGludCBydGw4MTY5X3NldF9wYXVzZXBhcmFtKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4gXHRpZiAoZGV2LVx1MDAzZW10dSBcdTAwM2UgRVRIX0RBVEFfTEVOKVxuIFx0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4gXG4tXHRwaHlfc2V0X2FzeW1fcGF1c2UodHAtXHUwMDNlcGh5ZGV2LCBkYXRhLVx1MDAzZXJ4X3BhdXNlLCBkYXRhLVx1MDAzZXR4X3BhdXNlKTtcbi1cbi1cdHJldHVybiAwO1xuK1x0cmV0dXJuIHBoeWxpbmtfZXRodG9vbF9zZXRfcGF1c2VwYXJhbSh0cC1cdTAwM2VwaHlsaW5rLCBkYXRhKTtcbiB9XG4gXG4gc3RhdGljIHZvaWQgcnRsODE2OV9nZXRfZXRoX21hY19zdGF0cyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuQEAgLTIzODYsMzQgKzI0ODcsMjcgQEAgc3RhdGljIHZvaWQgcnRsODE2OV9nZXRfZXRoX2N0cmxfc3RhdHMoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcdFx0bGUzMl90b19jcHUodHAtXHUwMDNlY291bnRlcnMtXHUwMDNlcnhfdW5rbm93bl9vcGNvZGUpO1xuIH1cbiBcbi1zdGF0aWMgaW50IHJ0bDgxNjlfc2V0X2xpbmtfa3NldHRpbmdzKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxuLVx0XHRcdFx0ICAgICAgY29uc3Qgc3RydWN0IGV0aHRvb2xfbGlua19rc2V0dGluZ3MgKmNtZClcbitzdGF0aWMgaW50IHJ0bDgxNjlfZ2V0X2xpbmtfa3NldHRpbmdzKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxuK1x0XHRcdFx0ICAgICAgc3RydWN0IGV0aHRvb2xfbGlua19rc2V0dGluZ3MgKmNtZClcbiB7XG4gXHRzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCA9IG5ldGRldl9wcml2KG5kZXYpO1xuLVx0c3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiA9IHRwLVx1MDAzZXBoeWRldjtcbi1cdGludCBkdXBsZXggPSBjbWQtXHUwMDNlYmFzZS5kdXBsZXg7XG4tXHRpbnQgc3BlZWQgPSBjbWQtXHUwMDNlYmFzZS5zcGVlZDtcbi1cbi1cdGlmICghdHAtXHUwMDNlc2ZwX21vZGUpXG4tXHRcdHJldHVybiBwaHlfZXRodG9vbF9rc2V0dGluZ3Nfc2V0KHBoeWRldiwgY21kKTtcbi1cbi1cdGlmIChjbWQtXHUwMDNlYmFzZS5hdXRvbmVnICE9IEFVVE9ORUdfRElTQUJMRSlcbi1cdFx0cmV0dXJuIC1FSU5WQUw7XG4gXG4tXHRpZiAoIXBoeV9jaGVja192YWxpZChzcGVlZCwgZHVwbGV4LCBwaHlkZXYtXHUwMDNlc3VwcG9ydGVkKSlcbi1cdFx0cmV0dXJuIC1FSU5WQUw7XG4tXG4tXHRtdXRleF9sb2NrKFx1MDAyNnBoeWRldi1cdTAwM2Vsb2NrKTtcbitcdHJldHVybiBwaHlsaW5rX2V0aHRvb2xfa3NldHRpbmdzX2dldCh0cC1cdTAwM2VwaHlsaW5rLCBjbWQpO1xuK31cbiBcbi1cdHBoeWRldi1cdTAwM2VhdXRvbmVnID0gQVVUT05FR19ESVNBQkxFO1xuLVx0cGh5ZGV2LVx1MDAzZXNwZWVkID0gc3BlZWQ7XG4tXHRwaHlkZXYtXHUwMDNlZHVwbGV4ID0gZHVwbGV4O1xuK3N0YXRpYyBpbnQgcnRsODE2OV9zZXRfbGlua19rc2V0dGluZ3Moc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXG4rXHRcdFx0XHQgICAgICBjb25zdCBzdHJ1Y3QgZXRodG9vbF9saW5rX2tzZXR0aW5ncyAqY21kKVxuK3tcbitcdHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwID0gbmV0ZGV2X3ByaXYobmRldik7XG4gXG4tXHRydGxfc2ZwX2luaXQodHApO1xuK1x0cmV0dXJuIHBoeWxpbmtfZXRodG9vbF9rc2V0dGluZ3Nfc2V0KHRwLVx1MDAzZXBoeWxpbmssIGNtZCk7XG4rfVxuIFxuLVx0bXV0ZXhfdW5sb2NrKFx1MDAyNnBoeWRldi1cdTAwM2Vsb2NrKTtcbitzdGF0aWMgaW50IHJ0bDgxNjlfbndheV9yZXNldChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuK3tcbitcdHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwID0gbmV0ZGV2X3ByaXYoZGV2KTtcbiBcbi1cdHJldHVybiAwO1xuK1x0cmV0dXJuIHBoeWxpbmtfZXRodG9vbF9ud2F5X3Jlc2V0KHRwLVx1MDAzZXBoeWxpbmspO1xuIH1cbiBcbiBzdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIHJ0bDgxNjlfZXRodG9vbF9vcHMgPSB7XG5AQCAtMjQzMSwxMCArMjUyNSwxMCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIHJ0bDgxNjlfZXRodG9vbF9vcHMgPSB7XG4gXHQuZ2V0X3NzZXRfY291bnRcdFx0PSBydGw4MTY5X2dldF9zc2V0X2NvdW50LFxuIFx0LmdldF9ldGh0b29sX3N0YXRzXHQ9IHJ0bDgxNjlfZ2V0X2V0aHRvb2xfc3RhdHMsXG4gXHQuZ2V0X3RzX2luZm9cdFx0PSBldGh0b29sX29wX2dldF90c19pbmZvLFxuLVx0Lm53YXlfcmVzZXRcdFx0PSBwaHlfZXRodG9vbF9ud2F5X3Jlc2V0LFxuK1x0Lm53YXlfcmVzZXRcdFx0PSBydGw4MTY5X253YXlfcmVzZXQsXG4gXHQuZ2V0X2VlZVx0XHQ9IHJ0bDgxNjlfZ2V0X2VlZSxcbiBcdC5zZXRfZWVlXHRcdD0gcnRsODE2OV9zZXRfZWVlLFxuLVx0LmdldF9saW5rX2tzZXR0aW5nc1x0PSBwaHlfZXRodG9vbF9nZXRfbGlua19rc2V0dGluZ3MsXG4rXHQuZ2V0X2xpbmtfa3NldHRpbmdzXHQ9IHJ0bDgxNjlfZ2V0X2xpbmtfa3NldHRpbmdzLFxuIFx0LnNldF9saW5rX2tzZXR0aW5nc1x0PSBydGw4MTY5X3NldF9saW5rX2tzZXR0aW5ncyxcbiBcdC5nZXRfcmluZ3BhcmFtXHRcdD0gcnRsODE2OV9nZXRfcmluZ3BhcmFtLFxuIFx0LmdldF9wYXVzZV9zdGF0c1x0PSBydGw4MTY5X2dldF9wYXVzZV9zdGF0cyxcbkBAIC0yNDk5LDkgKzI1OTMsMTAgQEAgdm9pZCByODE2OV9hcHBseV9maXJtd2FyZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbiBcdFx0dHAtXHUwMDNlb2NwX2Jhc2UgPSBPQ1BfU1REX1BIWV9CQVNFO1xuIFxuIFx0XHQvKiBQSFkgc29mdCByZXNldCBtYXkgc3RpbGwgYmUgaW4gcHJvZ3Jlc3MgKi9cbi1cdFx0cGh5X3JlYWRfcG9sbF90aW1lb3V0KHRwLVx1MDAzZXBoeWRldiwgTUlJX0JNQ1IsIHZhbCxcbi1cdFx0XHRcdCAgICAgICEodmFsIFx1MDAyNiBCTUNSX1JFU0VUKSxcbi1cdFx0XHRcdCAgICAgIDUwMDAwLCA2MDAwMDAsIHRydWUpO1xuK1x0XHRpZiAodHAtXHUwMDNlcGh5ZGV2KVxuK1x0XHRcdHBoeV9yZWFkX3BvbGxfdGltZW91dCh0cC1cdTAwM2VwaHlkZXYsIE1JSV9CTUNSLCB2YWwsXG4rXHRcdFx0XHRcdCAgICAgICEodmFsIFx1MDAyNiBCTUNSX1JFU0VUKSxcbitcdFx0XHRcdFx0ICAgICAgNTAwMDAsIDYwMDAwMCwgdHJ1ZSk7XG4gXHR9XG4gfVxuIFxuQEAgLTI1MzgsNiArMjYzMyw4IEBAIHN0YXRpYyB2b2lkIHJ0bF9zY2hlZHVsZV90YXNrKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCBlbnVtIHJ0bF9mbGFnIGZsYWcpXG4gXG4gc3RhdGljIHZvaWQgcnRsODE2OV9pbml0X3BoeShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbiB7XG4rXHRwaHlfaW5pdF9odyh0cC1cdTAwM2VwaHlkZXYpO1xuK1x0cGh5X3Jlc3VtZSh0cC1cdTAwM2VwaHlkZXYpO1xuIFx0cjgxNjlfaHdfcGh5X2NvbmZpZyh0cCwgdHAtXHUwMDNlcGh5ZGV2LCB0cC1cdTAwM2VtYWNfdmVyc2lvbik7XG4gXG4gXHRpZiAodHAtXHUwMDNlbWFjX3ZlcnNpb24gXHUwMDNjPSBSVExfR0lHQV9NQUNfVkVSXzA2KSB7XG5AQCAtMjU1Miw5ICsyNjQ5LDYgQEAgc3RhdGljIHZvaWQgcnRsODE2OV9pbml0X3BoeShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbiBcdCAgICB0cC1cdTAwM2VwY2lfZGV2LVx1MDAzZXN1YnN5c3RlbV9kZXZpY2UgPT0gMHhlMDAwKVxuIFx0XHRwaHlfd3JpdGVfcGFnZWQodHAtXHUwMDNlcGh5ZGV2LCAweDAwMDEsIDB4MTAsIDB4ZjAxYik7XG4gXG4tXHRpZiAodHAtXHUwMDNlc2ZwX21vZGUpXG4tXHRcdHJ0bF9zZnBfaW5pdCh0cCk7XG4tXG4gXHQvKiBXZSBtYXkgaGF2ZSBjYWxsZWQgcGh5X3NwZWVkX2Rvd24gYmVmb3JlICovXG4gXHRwaHlfc3BlZWRfdXAodHAtXHUwMDNlcGh5ZGV2KTtcbiBcbkBAIC0yNjU3LDE1ICsyNzUxLDYgQEAgc3RhdGljIHZvaWQgcnRsX2p1bWJvX2NvbmZpZyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbiBcbiBcdGlmIChwY2lfaXNfcGNpZSh0cC1cdTAwM2VwY2lfZGV2KSBcdTAwMjZcdTAwMjYgdHAtXHUwMDNlc3VwcG9ydHNfZ21paSlcbiBcdFx0cGNpZV9zZXRfcmVhZHJxKHRwLVx1MDAzZXBjaV9kZXYsIHJlYWRycSk7XG4tXG4tXHQvKiBDaGlwIGRvZXNuJ3Qgc3VwcG9ydCBwYXVzZSBpbiBqdW1ibyBtb2RlICovXG4tXHRpZiAoanVtYm8pIHtcbi1cdFx0bGlua21vZGVfY2xlYXJfYml0KEVUSFRPT0xfTElOS19NT0RFX1BhdXNlX0JJVCxcbi1cdFx0XHRcdCAgIHRwLVx1MDAzZXBoeWRldi1cdTAwM2VhZHZlcnRpc2luZyk7XG4tXHRcdGxpbmttb2RlX2NsZWFyX2JpdChFVEhUT09MX0xJTktfTU9ERV9Bc3ltX1BhdXNlX0JJVCxcbi1cdFx0XHRcdCAgIHRwLVx1MDAzZXBoeWRldi1cdTAwM2VhZHZlcnRpc2luZyk7XG4tXHRcdHBoeV9zdGFydF9hbmVnKHRwLVx1MDAzZXBoeWRldik7XG4tXHR9XG4gfVxuIFxuIERFQ0xBUkVfUlRMX0NPTkQocnRsX2NoaXBjbWRfY29uZClcbkBAIC0yNzgwLDcgKzI4NjUsNyBAQCBzdGF0aWMgdm9pZCBydGxfcHJlcGFyZV9wb3dlcl9kb3duKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuIFx0XHRydGxfZXBoeV93cml0ZSh0cCwgMHgxOSwgMHhmZjY0KTtcbiBcbiBcdGlmIChkZXZpY2VfbWF5X3dha2V1cCh0cF90b19kZXYodHApKSkge1xuLVx0XHRwaHlfc3BlZWRfZG93bih0cC1cdTAwM2VwaHlkZXYsIGZhbHNlKTtcbitcdFx0cGh5bGlua19zcGVlZF9kb3duKHRwLVx1MDAzZXBoeWxpbmssIGZhbHNlKTtcbiBcdFx0cnRsX3dvbF9lbmFibGVfcngodHApO1xuIFx0fVxuIH1cbkBAIC0yODMyLDYgKzI5MTcsMTYgQEAgc3RhdGljIHZvaWQgcnRsODE2OV9zZXRfbWFnaWNfcmVnKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuIFx0UlRMX1czMih0cCwgMHg3YywgdmFsKTtcbiB9XG4gXG4rc3RhdGljIGludCBydGw4MTY5X2lvY3RsKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBpZnJlcSAqaWZyLCBpbnQgY21kKVxuK3tcbitcdHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwID0gbmV0ZGV2X3ByaXYoZGV2KTtcbitcbitcdGlmICghbmV0aWZfcnVubmluZyhkZXYpKVxuK1x0XHRyZXR1cm4gLUVOT0RFVjtcbitcbitcdHJldHVybiBwaHlsaW5rX21paV9pb2N0bCh0cC1cdTAwM2VwaHlsaW5rLCBpZnIsIGNtZCk7XG4rfVxuK1xuIHN0YXRpYyB2b2lkIHJ0bF9zZXRfcnhfbW9kZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIHtcbiBcdHUzMiByeF9tb2RlID0gQWNjZXB0QnJvYWRjYXN0IHwgQWNjZXB0TXlQaHlzIHwgQWNjZXB0TXVsdGljYXN0O1xuQEAgLTMwOTgsOCArMzE5MywyMiBAQCBzdGF0aWMgdm9pZCBydGxfZW5hYmxlX2x0cihzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbiBcdFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGYyLCAweDkwMDMpO1xuIFx0XHRyODE2OF9tYWNfb2NwX21vZGlmeSh0cCwgTFRSX09CRkZfTE9DSywgMHgwMDAwLCBMSU5LX1NQRUVEX0NIQU5HRV9FTik7XG4gXHRcdGJyZWFrO1xuLVx0Y2FzZSBSVExfR0lHQV9NQUNfVkVSXzQ2IC4uLiBSVExfR0lHQV9NQUNfVkVSXzQ4OlxuIFx0Y2FzZSBSVExfR0lHQV9NQUNfVkVSXzUyOlxuK1x0XHRyODE2OF9tYWNfb2NwX3dyaXRlKHRwLCAweGNkZDAsIDB4OTAwMyk7XG4rXHRcdHI4MTY4X21hY19vY3BfbW9kaWZ5KHRwLCBMVFJfU05PT1AsIDB4MDAwMCwgTFRSX1NOT09QX0VOKTtcbitcdFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhlMDJjLCAweDE4ODApO1xuK1x0XHRyODE2OF9tYWNfb2NwX3dyaXRlKHRwLCAweGUwMmUsIDB4NDg4MCk7XG4rXHRcdHI4MTY4X21hY19vY3BfbW9kaWZ5KHRwLCBBTERQU19MVFIsIDB4MDAwMCwgQUxEUFNfTFRSX0VOKTtcbitcdFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGQ4LCAweDkwMDMpO1xuK1x0XHRyODE2OF9tYWNfb2NwX3dyaXRlKHRwLCAweGNkZGEsIDB4OTAwMyk7XG4rXHRcdHI4MTY4X21hY19vY3Bfd3JpdGUodHAsIDB4Y2RkYywgMHg5MDAzKTtcbitcdFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGQyLCAweDg4M2MpO1xuK1x0XHRyODE2OF9tYWNfb2NwX3dyaXRlKHRwLCAweGNkZDQsIDB4OGMxMik7XG4rXHRcdHI4MTY4X21hY19vY3Bfd3JpdGUodHAsIDB4Y2RkNiwgMHg5MDAzKTtcbitcdFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhlMGE2LCAweDkwMDMpO1xuK1x0XHRyODE2OF9tYWNfb2NwX3dyaXRlKHRwLCAweGUwYTgsIDB4OTAwMyk7XG4rXHRcdGJyZWFrO1xuK1x0Y2FzZSBSVExfR0lHQV9NQUNfVkVSXzQ2IC4uLiBSVExfR0lHQV9NQUNfVkVSXzQ4OlxuIFx0XHRyODE2OF9tYWNfb2NwX21vZGlmeSh0cCwgQUxEUFNfTFRSLCAweDAwMDAsIEFMRFBTX0xUUl9FTik7XG4gXHRcdFJUTF9XOCh0cCwgQ09NQk9fTFRSX0VYVEVORCwgUlRMX1I4KHRwLCBDT01CT19MVFJfRVhURU5EKSB8IENPTUJPX0xUUl9FWFRFTkRfRU4pO1xuIFx0XHRmYWxsdGhyb3VnaDtcbkBAIC0zMTE5LDYgKzMyMjgsNyBAQCBzdGF0aWMgdm9pZCBydGxfZW5hYmxlX2x0cihzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbiBcdH1cbiBcdC8qIGNoaXAgY2FuIHRyaWdnZXIgTFRSICovXG4gXHRyODE2OF9tYWNfb2NwX21vZGlmeSh0cCwgTFRSX09CRkZfTE9DSywgMHgwMDAzLCBMVFJfT0JGRl9MT0NLX0VOKTtcbitcdHI4MTY4X21hY19vY3BfbW9kaWZ5KHRwLCBTRU5EX0xUUl9NU0csIDB4MDAwMCwgTFRSX01TR19FTik7XG4gfVxuIFxuIHN0YXRpYyB2b2lkIHJ0bF9od19hc3BtX2Nsa3JlcV9lbmFibGUoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIGJvb2wgZW5hYmxlKVxuQEAgLTMxNTIsNiArMzI2Miw3IEBAIHN0YXRpYyB2b2lkIHJ0bF9od19hc3BtX2Nsa3JlcV9lbmFibGUoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIGJvb2wgZW5hYmxlKVxuIFx0XHRydGxfZW5hYmxlX2x0cih0cCk7XG4gXHRcdHN3aXRjaCAodHAtXHUwMDNlbWFjX3ZlcnNpb24pIHtcbiBcdFx0Y2FzZSBSVExfR0lHQV9NQUNfVkVSXzQ2IC4uLiBSVExfR0lHQV9NQUNfVkVSXzQ4OlxuK1x0XHRjYXNlIFJUTF9HSUdBX01BQ19WRVJfNTI6XG4gXHRcdGNhc2UgUlRMX0dJR0FfTUFDX1ZFUl82MSAuLi4gUlRMX0dJR0FfTUFDX1ZFUl9MQVNUOlxuIFx0XHRcdC8qIHJlc2V0IGVwaHkgdHgvcnggZGlzYWJsZSB0aW1lciAqL1xuIFx0XHRcdHI4MTY4X21hY19vY3BfbW9kaWZ5KHRwLCAweGUwOTQsIDB4ZmYwMCwgMCk7XG5AQCAtMzE2NCw2ICszMjc1LDcgQEAgc3RhdGljIHZvaWQgcnRsX2h3X2FzcG1fY2xrcmVxX2VuYWJsZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgYm9vbCBlbmFibGUpXG4gXHR9IGVsc2Uge1xuIFx0XHRzd2l0Y2ggKHRwLVx1MDAzZW1hY192ZXJzaW9uKSB7XG4gXHRcdGNhc2UgUlRMX0dJR0FfTUFDX1ZFUl80NiAuLi4gUlRMX0dJR0FfTUFDX1ZFUl80ODpcbitcdFx0Y2FzZSBSVExfR0lHQV9NQUNfVkVSXzUyOlxuIFx0XHRjYXNlIFJUTF9HSUdBX01BQ19WRVJfNjEgLi4uIFJUTF9HSUdBX01BQ19WRVJfTEFTVDpcbiBcdFx0XHRyODE2OF9tYWNfb2NwX21vZGlmeSh0cCwgMHhlMDkyLCAweDAwZmYsIDApO1xuIFx0XHRcdGJyZWFrO1xuQEAgLTM2NTcsNiArMzc2OSwzNSBAQCBzdGF0aWMgdm9pZCBydGxfaHdfc3RhcnRfODE2OGVwXzMoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG4gXHRyODE2OF9tYWNfb2NwX21vZGlmeSh0cCwgMHhlODYwLCAweDAwMDAsIDB4MDA4MCk7XG4gfVxuIFxuK3N0YXRpYyB2b2lkIHJ0bF9sb3dwb3dlcl9oaWRkZW5fZnVuY3Rpb25zKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxuK3tcbitcdHVuc2lnbmVkIGludCBzbG90ID0gUENJX1NMT1QocGRldi1cdTAwM2VkZXZmbik7XG4rXHRzdHJ1Y3QgcGNpX2J1cyAqYnVzID0gcGRldi1cdTAwM2VidXM7XG4rXHR1bnNpZ25lZCBpbnQgZGV2Zm47XG4rXHRpbnQgZnVuYztcbitcdGludCByZXQ7XG4rXHR1MzIgdmFsO1xuK1xuK1x0Zm9yIChmdW5jID0gMjsgZnVuYyBcdTAwM2MgODsgZnVuYysrKSB7XG4rXHRcdGRldmZuID0gUENJX0RFVkZOKHNsb3QsIGZ1bmMpO1xuK1xuK1x0XHRyZXQgPSBwY2lfYnVzX3JlYWRfY29uZmlnX2R3b3JkKGJ1cywgZGV2Zm4sIFJUTDgxMTZBRl9GVU5DX1BNX0NTUiwgXHUwMDI2dmFsKTtcbitcdFx0aWYgKCFyZXQgXHUwMDI2XHUwMDI2ICFQQ0lfUE9TU0lCTEVfRVJST1IodmFsKSkge1xuK1x0XHRcdHZhbCBcdTAwMjY9IH5QQ0lfUE1fQ1RSTF9QTUVfU1RBVFVTO1xuK1x0XHRcdHZhbCBcdTAwMjY9IH4oUENJX1BNX0NUUkxfU1RBVEVfTUFTSyB8IFBDSV9QTV9DVFJMX1BNRV9FTkFCTEUpO1xuK1x0XHRcdHZhbCB8PSAoUlRMX1BNX0QzSE9UIHwgUENJX1BNX0NUUkxfUE1FX0VOQUJMRSk7XG4rXHRcdFx0cGNpX2J1c193cml0ZV9jb25maWdfZHdvcmQoYnVzLCBkZXZmbiwgUlRMODExNkFGX0ZVTkNfUE1fQ1NSLCB2YWwpO1xuK1x0XHR9XG4rXG4rXHRcdHJldCA9IHBjaV9idXNfcmVhZF9jb25maWdfZHdvcmQoYnVzLCBkZXZmbiwgUlRMODExNkFGX0ZVTkNfRVhQX0xOS0NUTCwgXHUwMDI2dmFsKTtcbitcdFx0aWYgKCFyZXQgXHUwMDI2XHUwMDI2ICFQQ0lfUE9TU0lCTEVfRVJST1IodmFsKSkge1xuK1x0XHRcdHZhbCBcdTAwMjY9IH4oKFBDSV9FWFBfTE5LU1RBX0xCTVMgfCBQQ0lfRVhQX0xOS1NUQV9MQUJTKSBcdTAwM2NcdTAwM2MgMTYpO1xuK1x0XHRcdHZhbCB8PSBQQ0lfRVhQX0xOS0NUTF9BU1BNQztcbitcdFx0XHRwY2lfYnVzX3dyaXRlX2NvbmZpZ19kd29yZChidXMsIGRldmZuLCBSVEw4MTE2QUZfRlVOQ19FWFBfTE5LQ1RMLCB2YWwpO1xuK1x0XHR9XG4rXHR9XG4rfVxuK1xuIHN0YXRpYyB2b2lkIHJ0bF9od19zdGFydF84MTE3KHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuIHtcbiBcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgZXBoeV9pbmZvIGVfaW5mb184MTE3W10gPSB7XG5AQCAtMzY5MywxMiArMzgzNCwxNCBAQCBzdGF0aWMgdm9pZCBydGxfaHdfc3RhcnRfODExNyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbiBcbiBcdHJ0bF9wY2llX3N0YXRlX2wybDNfZGlzYWJsZSh0cCk7XG4gXG4tXHRyZ19zYXdfY250ID0gcGh5X3JlYWRfcGFnZWQodHAtXHUwMDNlcGh5ZGV2LCAweDBjNDIsIDB4MTMpIFx1MDAyNiAweDNmZmY7XG4tXHRpZiAocmdfc2F3X2NudCBcdTAwM2UgMCkge1xuLVx0XHR1MTYgc3dfY250XzFtc19pbmk7XG4rXHRpZiAodHAtXHUwMDNlcGh5ZGV2KSB7XG4rXHRcdHJnX3Nhd19jbnQgPSBwaHlfcmVhZF9wYWdlZCh0cC1cdTAwM2VwaHlkZXYsIDB4MGM0MiwgMHgxMykgXHUwMDI2IDB4M2ZmZjtcbitcdFx0aWYgKHJnX3Nhd19jbnQgXHUwMDNlIDApIHtcbitcdFx0XHR1MTYgc3dfY250XzFtc19pbmk7XG4gXG4tXHRcdHN3X2NudF8xbXNfaW5pID0gKDE2MDAwMDAwIC8gcmdfc2F3X2NudCkgXHUwMDI2IDB4MGZmZjtcbi1cdFx0cjgxNjhfbWFjX29jcF9tb2RpZnkodHAsIDB4ZDQxMiwgMHgwZmZmLCBzd19jbnRfMW1zX2luaSk7XG4rXHRcdFx0c3dfY250XzFtc19pbmkgPSAoMTYwMDAwMDAgLyByZ19zYXdfY250KSBcdTAwMjYgMHgwZmZmO1xuK1x0XHRcdHI4MTY4X21hY19vY3BfbW9kaWZ5KHRwLCAweGQ0MTIsIDB4MGZmZiwgc3dfY250XzFtc19pbmkpO1xuK1x0XHR9XG4gXHR9XG4gXG4gXHRyODE2OF9tYWNfb2NwX21vZGlmeSh0cCwgMHhlMDU2LCAweDAwZjAsIDB4MDAwMCk7XG5AQCAtMzcxMSw2ICszODU0LDkgQEAgc3RhdGljIHZvaWQgcnRsX2h3X3N0YXJ0XzgxMTcoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG4gXHRyODE2OF9tYWNfb2NwX3dyaXRlKHRwLCAweGMwOTQsIDB4MDAwMCk7XG4gXHRyODE2OF9tYWNfb2NwX3dyaXRlKHRwLCAweGMwOWUsIDB4MDAwMCk7XG4gXG4rXHRpZiAocnRsX2lzXzgxMTZhZih0cCkpXG4rXHRcdHJ0bF9sb3dwb3dlcl9oaWRkZW5fZnVuY3Rpb25zKHRwLVx1MDAzZXBjaV9kZXYpO1xuK1xuIFx0LyogZmlybXdhcmUgaXMgZm9yIE1BQyBvbmx5ICovXG4gXHRyODE2OV9hcHBseV9maXJtd2FyZSh0cCk7XG4gfVxuQEAgLTQxMzksMTIgKzQyODUsMjUgQEAgc3RhdGljIHZvaWQgcnRsX2h3X3N0YXJ0KHN0cnVjdCAgcnRsODE2OV9wcml2YXRlICp0cClcbiBzdGF0aWMgaW50IHJ0bDgxNjlfY2hhbmdlX210dShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBpbnQgbmV3X210dSlcbiB7XG4gXHRzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCA9IG5ldGRldl9wcml2KGRldik7XG4rXHRib29sIGp1bWJvX2JlZm9yZSA9IGRldi1cdTAwM2VtdHUgXHUwMDNlIEVUSF9EQVRBX0xFTjtcbitcdGJvb2wganVtYm9fYWZ0ZXIgPSBuZXdfbXR1IFx1MDAzZSBFVEhfREFUQV9MRU47XG4gXG4gXHRXUklURV9PTkNFKGRldi1cdTAwM2VtdHUsIG5ld19tdHUpO1xuIFx0bmV0ZGV2X3VwZGF0ZV9mZWF0dXJlcyhkZXYpO1xuIFx0cnRsX2p1bWJvX2NvbmZpZyh0cCk7XG4gXHRydGxfc2V0X2VlZV90eGlkbGVfdGltZXIodHApO1xuIFxuK1x0aWYgKGp1bWJvX2JlZm9yZSAhPSBqdW1ib19hZnRlcikge1xuK1x0XHR1bnNpZ25lZCBsb25nIGNhcHMgPSB0cC1cdTAwM2VwaHlsaW5rX2NvbmZpZy5tYWNfY2FwYWJpbGl0aWVzO1xuK1xuK1x0XHRpZiAoanVtYm9fYWZ0ZXIpXG4rXHRcdFx0Y2FwcyBcdTAwMjY9IH4oTUFDX1NZTV9QQVVTRSB8IE1BQ19BU1lNX1BBVVNFKTtcbitcdFx0ZWxzZVxuK1x0XHRcdGNhcHMgfD0gKE1BQ19TWU1fUEFVU0UgfCBNQUNfQVNZTV9QQVVTRSk7XG4rXG4rXHRcdHBoeWxpbmtfc2V0X21hY19jYXBhYmlsaXRpZXModHAtXHUwMDNlcGh5bGluaywgY2Fwcyk7XG4rXHR9XG4rXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG5AQCAtNDg2OSw4ICs1MDI4LDEzIEBAIHN0YXRpYyBpcnFyZXR1cm5fdCBydGw4MTY5X2ludGVycnVwdChpbnQgaXJxLCB2b2lkICpkZXZfaW5zdGFuY2UpXG4gXHRcdGdvdG8gb3V0O1xuIFx0fVxuIFxuLVx0aWYgKHN0YXR1cyBcdTAwMjYgTGlua0NoZylcbi1cdFx0cGh5X21hY19pbnRlcnJ1cHQodHAtXHUwMDNlcGh5ZGV2KTtcbitcdGlmIChzdGF0dXMgXHUwMDI2IExpbmtDaGcpIHtcbitcdFx0aWYgKHRwLVx1MDAzZXBoeWRldilcbitcdFx0XHRwaHlfbWFjX2ludGVycnVwdCh0cC1cdTAwM2VwaHlkZXYpO1xuK1x0XHRlbHNlIGlmICh0cC1cdTAwM2VzZnBfbW9kZSlcbitcdFx0XHRwaHlsaW5rX21hY19jaGFuZ2UodHAtXHUwMDNlcGh5bGluayxcbitcdFx0XHRcdFx0ICAgISEoUlRMX1I4KHRwLCBQSFlzdGF0dXMpIFx1MDAyNiBMaW5rU3RhdHVzKSk7XG4rXHR9XG4gXG4gXHRydGxfaXJxX2Rpc2FibGUodHApO1xuIFx0bmFwaV9zY2hlZHVsZShcdTAwMjZ0cC1cdTAwM2VuYXBpKTtcbkBAIC00OTMwLDkgKzUwOTQsNiBAQCBzdGF0aWMgaW50IHJ0bDgxNjlfcG9sbChzdHJ1Y3QgbmFwaV9zdHJ1Y3QgKm5hcGksIGludCBidWRnZXQpXG4gXG4gc3RhdGljIHZvaWQgcnRsX2VuYWJsZV90eF9scGkoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIGJvb2wgZW5hYmxlKVxuIHtcbi1cdGlmICghcnRsX3N1cHBvcnRzX2VlZSh0cCkpXG4tXHRcdHJldHVybjtcbi1cbiBcdHN3aXRjaCAodHAtXHUwMDNlbWFjX3ZlcnNpb24pIHtcbiBcdGNhc2UgUlRMX0dJR0FfTUFDX1ZFUl8zNCAuLi4gUlRMX0dJR0FfTUFDX1ZFUl81MjpcbiBcdFx0LyogQWRqdXN0IEVFRSBMRUQgZnJlcXVlbmN5ICovXG5AQCAtNDk2Myw0MCArNTEyNCwxNSBAQCBzdGF0aWMgdm9pZCBydGxfZW5hYmxlX3R4X2xwaShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgYm9vbCBlbmFibGUpXG4gXHR9XG4gfVxuIFxuLXN0YXRpYyB2b2lkIHI4MTY5X3BoeWxpbmtfaGFuZGxlcihzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcbi17XG4tXHRzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCA9IG5ldGRldl9wcml2KG5kZXYpO1xuLVx0c3RydWN0IGRldmljZSAqZCA9IHRwX3RvX2Rldih0cCk7XG4tXG4tXHRpZiAobmV0aWZfY2Fycmllcl9vayhuZGV2KSkge1xuLVx0XHRydGxfbGlua19jaGdfcGF0Y2godHApO1xuLVx0XHRydGxfZW5hYmxlX3R4X2xwaSh0cCwgdHAtXHUwMDNlcGh5ZGV2LVx1MDAzZWVuYWJsZV90eF9scGkpO1xuLVx0XHRwbV9yZXF1ZXN0X3Jlc3VtZShkKTtcbi1cdH0gZWxzZSB7XG4tXHRcdHBtX3J1bnRpbWVfaWRsZShkKTtcbi1cdH1cbi1cbi1cdHBoeV9wcmludF9zdGF0dXModHAtXHUwMDNlcGh5ZGV2KTtcbi19XG4tXG4gc3RhdGljIGludCByODE2OV9waHlfY29ubmVjdChzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbiB7XG4tXHRzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2ID0gdHAtXHUwMDNlcGh5ZGV2O1xuLVx0cGh5X2ludGVyZmFjZV90IHBoeV9tb2RlO1xuIFx0aW50IHJldDtcbiBcbi1cdHBoeV9tb2RlID0gdHAtXHUwMDNlc3VwcG9ydHNfZ21paSA/IFBIWV9JTlRFUkZBQ0VfTU9ERV9HTUlJIDpcbi1cdFx0ICAgUEhZX0lOVEVSRkFDRV9NT0RFX01JSTtcbi1cbi1cdHJldCA9IHBoeV9jb25uZWN0X2RpcmVjdCh0cC1cdTAwM2VkZXYsIHBoeWRldiwgcjgxNjlfcGh5bGlua19oYW5kbGVyLFxuLVx0XHRcdFx0IHBoeV9tb2RlKTtcbi1cdGlmIChyZXQpXG4rXHRyZXQgPSBwaHlsaW5rX2Nvbm5lY3RfcGh5KHRwLVx1MDAzZXBoeWxpbmssIHRwLVx1MDAzZXBoeWRldik7XG4rXHRpZiAocmV0KSB7XG4rXHRcdG5ldGRldl9lcnIodHAtXHUwMDNlZGV2LCBcImZhaWxlZCB0byBjb25uZWN0IHBoeVxcblwiKTtcbiBcdFx0cmV0dXJuIHJldDtcbi1cbi1cdGlmICghdHAtXHUwMDNlc3VwcG9ydHNfZ21paSlcbi1cdFx0cGh5X3NldF9tYXhfc3BlZWQocGh5ZGV2LCBTUEVFRF8xMDApO1xuLVxuLVx0cGh5X2F0dGFjaGVkX2luZm8ocGh5ZGV2KTtcbitcdH1cbiBcbiBcdHJldHVybiAwO1xuIH1cbkBAIC01MDA3LDEwICs1MTQzLDEwIEBAIHN0YXRpYyB2b2lkIHJ0bDgxNjlfZG93bihzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbiBcdC8qIENsZWFyIGFsbCB0YXNrIGZsYWdzICovXG4gXHRiaXRtYXBfemVybyh0cC1cdTAwM2V3ay5mbGFncywgUlRMX0ZMQUdfTUFYKTtcbiBcbi1cdHBoeV9zdG9wKHRwLVx1MDAzZXBoeWRldik7XG4rXHRwaHlsaW5rX3N0b3AodHAtXHUwMDNlcGh5bGluayk7XG4gXG4gXHQvKiBSZXNldCBTZXJEZXMgUEhZIHRvIGJyaW5nIGRvd24gZmliZXIgbGluayAqL1xuLVx0aWYgKHRwLVx1MDAzZXNmcF9tb2RlKVxuK1x0aWYgKHRwLVx1MDAzZXNmcF9tb2RlID09IFJUTF9TRlBfODEyN19BVEYpXG4gXHRcdHJ0bF9zZnBfcmVzZXQodHApO1xuIFxuIFx0cnRsODE2OV91cGRhdGVfY291bnRlcnModHApO1xuQEAgLTUwMzIsMTQgKzUxNjgsMTQgQEAgc3RhdGljIHZvaWQgcnRsODE2OV91cChzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbiBcdFx0cnRsODE2OF9kcml2ZXJfc3RhcnQodHApO1xuIFxuIFx0cGNpX3NldF9tYXN0ZXIodHAtXHUwMDNlcGNpX2Rldik7XG4tXHRwaHlfaW5pdF9odyh0cC1cdTAwM2VwaHlkZXYpO1xuLVx0cGh5X3Jlc3VtZSh0cC1cdTAwM2VwaHlkZXYpO1xuLVx0cnRsODE2OV9pbml0X3BoeSh0cCk7XG4rXHRpZiAodHAtXHUwMDNlcGh5ZGV2KVxuK1x0XHRydGw4MTY5X2luaXRfcGh5KHRwKTtcbitcbiBcdG5hcGlfZW5hYmxlKFx1MDAyNnRwLVx1MDAzZW5hcGkpO1xuIFx0ZW5hYmxlX3dvcmsoXHUwMDI2dHAtXHUwMDNld2sud29yayk7XG4gXHRydGxfcmVzZXRfd29yayh0cCk7XG4gXG4tXHRwaHlfc3RhcnQodHAtXHUwMDNlcGh5ZGV2KTtcbitcdHBoeWxpbmtfc3RhcnQodHAtXHUwMDNlcGh5bGluayk7XG4gfVxuIFxuIHN0YXRpYyBpbnQgcnRsODE2OV9jbG9zZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuQEAgLTUwNTUsNyArNTE5MSw3IEBAIHN0YXRpYyBpbnQgcnRsODE2OV9jbG9zZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFxuIFx0ZnJlZV9pcnEodHAtXHUwMDNlaXJxLCB0cCk7XG4gXG4tXHRwaHlfZGlzY29ubmVjdCh0cC1cdTAwM2VwaHlkZXYpO1xuK1x0cGh5bGlua19kaXNjb25uZWN0X3BoeSh0cC1cdTAwM2VwaHlsaW5rKTtcbiBcbiBcdGRtYV9mcmVlX2NvaGVyZW50KFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBSODE2OV9SWF9SSU5HX0JZVEVTLCB0cC1cdTAwM2VSeERlc2NBcnJheSxcbiBcdFx0XHQgIHRwLVx1MDAzZVJ4UGh5QWRkcik7XG5AQCAtNTExMiw5ICs1MjQ4LDExIEBAIHN0YXRpYyBpbnQgcnRsX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiBcdGlmIChyZXR2YWwgXHUwMDNjIDApXG4gXHRcdGdvdG8gZXJyX3JlbGVhc2VfZndfMjtcbiBcbi1cdHJldHZhbCA9IHI4MTY5X3BoeV9jb25uZWN0KHRwKTtcbi1cdGlmIChyZXR2YWwpXG4tXHRcdGdvdG8gZXJyX2ZyZWVfaXJxO1xuK1x0aWYgKHRwLVx1MDAzZXBoeWRldikge1xuK1x0XHRyZXR2YWwgPSByODE2OV9waHlfY29ubmVjdCh0cCk7XG4rXHRcdGlmIChyZXR2YWwpXG4rXHRcdFx0Z290byBlcnJfZnJlZV9pcnE7XG4rXHR9XG4gXG4gXHRydGw4MTY5X3VwKHRwKTtcbiBcdHJ0bDgxNjlfaW5pdF9jb3VudGVyX29mZnNldHModHApO1xuQEAgLTUxOTAsOCArNTMyOCwxMSBAQCBzdGF0aWMgaW50IHJ0bDgxNjlfcnVudGltZV9yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2KVxuIFx0cnRsX3Jhcl9zZXQodHAsIHRwLVx1MDAzZWRldi1cdTAwM2VkZXZfYWRkcik7XG4gXHRfX3J0bDgxNjlfc2V0X3dvbCh0cCwgdHAtXHUwMDNlc2F2ZWRfd29sb3B0cyk7XG4gXG4tXHRpZiAodHAtXHUwMDNlVHhEZXNjQXJyYXkpXG4rXHRpZiAodHAtXHUwMDNlVHhEZXNjQXJyYXkpIHtcbitcdFx0cnRubF9sb2NrKCk7XG4gXHRcdHJ0bDgxNjlfdXAodHApO1xuK1x0XHRydG5sX3VubG9jaygpO1xuK1x0fVxuIFxuIFx0bmV0aWZfZGV2aWNlX2F0dGFjaCh0cC1cdTAwM2VkZXYpO1xuIFxuQEAgLTUyODgsNiArNTQyOSw3IEBAIHN0YXRpYyB2b2lkIHJ0bF9yZW1vdmVfb25lKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxuIFx0XHRyODE2OV9yZW1vdmVfbGVkcyh0cC1cdTAwM2VsZWRzKTtcbiBcbiBcdHVucmVnaXN0ZXJfbmV0ZGV2KHRwLVx1MDAzZWRldik7XG4rXHRwaHlsaW5rX2Rlc3Ryb3kodHAtXHUwMDNlcGh5bGluayk7XG4gXG4gXHRpZiAodHAtXHUwMDNlZGFzaF90eXBlICE9IFJUTF9EQVNIX05PTkUpXG4gXHRcdHJ0bDgxNjhfZHJpdmVyX3N0b3AodHApO1xuQEAgLTUzMTAsNyArNTQ1Miw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgcnRsX25ldGRldl9vcHMgPSB7XG4gXHQubmRvX2ZpeF9mZWF0dXJlc1x0PSBydGw4MTY5X2ZpeF9mZWF0dXJlcyxcbiBcdC5uZG9fc2V0X2ZlYXR1cmVzXHQ9IHJ0bDgxNjlfc2V0X2ZlYXR1cmVzLFxuIFx0Lm5kb19zZXRfbWFjX2FkZHJlc3NcdD0gcnRsX3NldF9tYWNfYWRkcmVzcyxcbi1cdC5uZG9fZXRoX2lvY3RsXHRcdD0gcGh5X2RvX2lvY3RsX3J1bm5pbmcsXG4rXHQubmRvX2V0aF9pb2N0bFx0XHQ9IHJ0bDgxNjlfaW9jdGwsXG4gXHQubmRvX3NldF9yeF9tb2RlXHQ9IHJ0bF9zZXRfcnhfbW9kZSxcbiAjaWZkZWYgQ09ORklHX05FVF9QT0xMX0NPTlRST0xMRVJcbiBcdC5uZG9fcG9sbF9jb250cm9sbGVyXHQ9IHJ0bDgxNjlfbmV0cG9sbCxcbkBAIC01NDc0LDE2ICs1NjE2LDYgQEAgc3RhdGljIGludCByODE2OV9tZGlvX3JlZ2lzdGVyKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuIFx0XHRyZXR1cm4gLUVVTkFUQ0g7XG4gXHR9XG4gXG4tXHR0cC1cdTAwM2VwaHlkZXYtXHUwMDNlbWFjX21hbmFnZWRfcG0gPSB0cnVlO1xuLVx0aWYgKHJ0bF9zdXBwb3J0c19lZWUodHApKVxuLVx0XHRwaHlfc3VwcG9ydF9lZWUodHAtXHUwMDNlcGh5ZGV2KTtcbi1cdHBoeV9zdXBwb3J0X2FzeW1fcGF1c2UodHAtXHUwMDNlcGh5ZGV2KTtcbi1cbi1cdC8qIG1pbWljIGJlaGF2aW9yIG9mIHI4MTI1L3I4MTI2IHZlbmRvciBkcml2ZXJzICovXG4tXHRpZiAodHAtXHUwMDNlbWFjX3ZlcnNpb24gPT0gUlRMX0dJR0FfTUFDX1ZFUl82MSlcbi1cdFx0cGh5X2Rpc2FibGVfZWVlX21vZGUodHAtXHUwMDNlcGh5ZGV2LFxuLVx0XHRcdFx0ICAgICBFVEhUT09MX0xJTktfTU9ERV8yNTAwYmFzZVRfRnVsbF9CSVQpO1xuLVxuIFx0LyogUEhZIHdpbGwgYmUgd29rZW4gdXAgaW4gcnRsX29wZW4oKSAqL1xuIFx0cGh5X3N1c3BlbmQodHAtXHUwMDNlcGh5ZGV2KTtcbiBcbkBAIC01NTk5LDYgKzU3MzEsMjQyIEBAIHN0YXRpYyBib29sIHJ0bF9hc3BtX2lzX3NhZmUoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG4gXHRyZXR1cm4gZmFsc2U7XG4gfVxuIFxuK3N0YXRpYyB2b2lkIHJ0bF9tYWNfbGlua19kb3duKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLCB1bnNpZ25lZCBpbnQgbW9kZSxcbitcdFx0XHQgICAgICBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxuK3tcbitcdHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwID0gY29udGFpbmVyX29mKGNvbmZpZywgc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSwgcGh5bGlua19jb25maWcpO1xuK1xuK1x0dHAtXHUwMDNlc3BlZWQgPSBTUEVFRF9VTktOT1dOO1xuK1x0cG1fcnVudGltZV9pZGxlKHRwX3RvX2Rldih0cCkpO1xuK31cbitcbitzdGF0aWMgdm9pZCBydGxfbWFjX2xpbmtfdXAoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXG4rXHRcdFx0ICAgIHVuc2lnbmVkIGludCBtb2RlLCBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlLFxuK1x0XHRcdCAgICBpbnQgc3BlZWQsIGludCBkdXBsZXgsIGJvb2wgdHhfcGF1c2UsIGJvb2wgcnhfcGF1c2UpXG4re1xuK1x0c3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAgPSBjb250YWluZXJfb2YoY29uZmlnLCBzdHJ1Y3QgcnRsODE2OV9wcml2YXRlLCBwaHlsaW5rX2NvbmZpZyk7XG4rXHRzdHJ1Y3QgZGV2aWNlICpkID0gdHBfdG9fZGV2KHRwKTtcbitcbitcdHRwLVx1MDAzZXNwZWVkID0gc3BlZWQ7XG4rXHRydGxfbGlua19jaGdfcGF0Y2godHAsIHNwZWVkKTtcbitcbitcdHBtX3JlcXVlc3RfcmVzdW1lKGQpO1xuK31cbitcbitzdGF0aWMgc3RydWN0IHBoeWxpbmtfcGNzICpydGxfbWFjX3NlbGVjdF9wY3Moc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXG4rXHRcdFx0XHRcdCAgICAgIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXG4re1xuK1x0c3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAgPSBjb250YWluZXJfb2YoY29uZmlnLCBzdHJ1Y3QgcnRsODE2OV9wcml2YXRlLCBwaHlsaW5rX2NvbmZpZyk7XG4rXG4rXHRpZiAoIXRwLVx1MDAzZXBjcy5vcHMpXG4rXHRcdHJldHVybiBOVUxMO1xuK1xuK1x0aWYgKGludGVyZmFjZSA9PSBQSFlfSU5URVJGQUNFX01PREVfMTAwMEJBU0VYIHx8XG4rXHQgICAgaW50ZXJmYWNlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV8xMEdCQVNFUilcbitcdFx0cmV0dXJuIFx1MDAyNnRwLVx1MDAzZXBjcztcbitcbitcdHJldHVybiBOVUxMO1xuK31cbitcbitzdGF0aWMgdm9pZCBydGxfbWFjX2NvbmZpZyhzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZywgdW5zaWduZWQgaW50IG1vZGUsXG4rXHRcdFx0ICAgY29uc3Qgc3RydWN0IHBoeWxpbmtfbGlua19zdGF0ZSAqc3RhdGUpXG4re1xuK31cbitcbitzdGF0aWMgdTE2IHJ0bDgxNjlfc2RzX3JlYWQoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIHUxNiBzZHNfcmVnKVxuK3tcbitcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XG4rXHR1MTYgdmFsID0gMDtcbitcbitcdHJhd19zcGluX2xvY2tfaXJxc2F2ZShcdTAwMjZ0cC1cdTAwM2VtYWNfb2NwX2xvY2ssIGZsYWdzKTtcbitcdF9fcjgxNjhfbWFjX29jcF93cml0ZSh0cCwgT0NQX1NEU19BRERSX1JFRywgc2RzX3JlZyk7XG4rXHRfX3I4MTY4X21hY19vY3Bfd3JpdGUodHAsIE9DUF9TRFNfQ01EX1JFRywgU0RTX0NNRF9SRUFEKTtcbitcdHZhbCA9IF9fcjgxNjhfbWFjX29jcF9yZWFkKHRwLCBPQ1BfU0RTX0RBVEFfUkVHKTtcbitcdHJhd19zcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNnRwLVx1MDAzZW1hY19vY3BfbG9jaywgZmxhZ3MpO1xuK1xuK1x0cmV0dXJuIHZhbDtcbit9XG4rXG4rc3RhdGljIHZvaWQgcnRsODE2OV9wY3NfZ2V0X3N0YXRlKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzLFxuK1x0XHRcdFx0ICB1bnNpZ25lZCBpbnQgbmVnX21vZGUsXG4rXHRcdFx0XHQgIHN0cnVjdCBwaHlsaW5rX2xpbmtfc3RhdGUgKnN0YXRlKVxuK3tcbitcdHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwID0gY29udGFpbmVyX29mKHBjcywgc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSwgcGNzKTtcbitcbitcdGlmICh0cC1cdTAwM2VzZnBfbW9kZSA9PSBSVExfU0ZQXzgxMjdfQVRGKSB7XG4rXHRcdHUxNiBzdGF0MTtcbitcbitcdFx0c3RhdDEgPSBydGw4MTY5X3Nkc19yZWFkKHRwLCBSVExfU0RTX0M0NV9CQVNFICsgTURJT19TVEFUMSk7XG4rXG4rXHRcdGlmICghKHN0YXQxIFx1MDAyNiBNRElPX1NUQVQxX0xTVEFUVVMpKVxuK1x0XHRcdHN0YXQxID0gcnRsODE2OV9zZHNfcmVhZCh0cCwgUlRMX1NEU19DNDVfQkFTRSArIE1ESU9fU1RBVDEpO1xuK1xuK1x0XHRzdGF0ZS1cdTAwM2VsaW5rID0gISEoc3RhdDEgXHUwMDI2IE1ESU9fU1RBVDFfTFNUQVRVUyk7XG4rXHRcdGlmICghc3RhdGUtXHUwMDNlbGluaylcbitcdFx0XHRyZXR1cm47XG4rXG4rXHRcdHN0YXRlLVx1MDAzZWR1cGxleCA9IERVUExFWF9GVUxMO1xuK1x0XHRzdGF0ZS1cdTAwM2VzcGVlZCA9IFNQRUVEXzEwMDAwO1xuK1x0fSBlbHNlIHtcbitcdFx0dTE2IGJtc3IsIGxwYTtcbitcbitcdFx0Ym1zciA9IHJ0bDgxNjlfc2RzX3JlYWQodHAsIFJUTF9TRFNfQzIyX0JBU0UgKyBNSUlfQk1TUik7XG4rXHRcdGxwYSA9IHJ0bDgxNjlfc2RzX3JlYWQodHAsIFJUTF9TRFNfQzIyX0JBU0UgKyBNSUlfTFBBKTtcbitcdFx0cGh5bGlua19taWlfYzIyX3Bjc19kZWNvZGVfc3RhdGUoc3RhdGUsIG5lZ19tb2RlLCBibXNyLCBscGEpO1xuK1x0fVxuK31cbitcbitzdGF0aWMgaW50IHJ0bDgxNjlfcGNzX2NvbmZpZyhzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcywgdW5zaWduZWQgaW50IG1vZGUsXG4rXHRcdFx0ICAgICAgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSxcbitcdFx0XHQgICAgICBjb25zdCB1bnNpZ25lZCBsb25nICphZHZlcnRpc2luZyxcbitcdFx0XHQgICAgICBib29sIHBlcm1pdF9wYXVzZV90b19tYWMpXG4re1xuK1x0c3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAgPSBjb250YWluZXJfb2YocGNzLCBzdHJ1Y3QgcnRsODE2OV9wcml2YXRlLCBwY3MpO1xuK1xuK1x0aWYgKHRwLVx1MDAzZXNmcF9tb2RlID09IFJUTF9TRlBfODEyN19BVEYpIHtcbitcdFx0c3dpdGNoIChpbnRlcmZhY2UpIHtcbitcdFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfMTBHQkFTRVI6XG4rXHRcdFx0cjgxMjdfc2ZwX2luaXRfMTBnKHRwKTtcbitcdFx0XHRicmVhaztcbitcdFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfMTAwMEJBU0VYOlxuK1x0XHRcdHI4MTI3X3NmcF9pbml0XzFnKHRwKTtcbitcdFx0XHRicmVhaztcbitcdFx0ZGVmYXVsdDpcbitcdFx0XHRuZXRkZXZfZXJyKHRwLVx1MDAzZWRldiwgXCJVbnN1cHBvcnRlZCBTRlAgaW50ZXJmYWNlIG1vZGU6ICVzXFxuXCIsXG4rXHRcdFx0XHQgICBwaHlfbW9kZXMoaW50ZXJmYWNlKSk7XG4rXHRcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuK1x0XHR9XG4rXHR9XG4rXG4rXHRyZXR1cm4gMDtcbit9XG4rXG4rc3RhdGljIGludCBydGw4MTY5X3Bjc192YWxpZGF0ZShzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcywgdW5zaWduZWQgbG9uZyAqc3VwcG9ydGVkLFxuK1x0XHRcdFx0Y29uc3Qgc3RydWN0IHBoeWxpbmtfbGlua19zdGF0ZSAqc3RhdGUpXG4re1xuK1x0cmV0dXJuIDA7XG4rfVxuK1xuK3N0YXRpYyB2b2lkIHJ0bDgxNjlfcGNzX2FuX3Jlc3RhcnQoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MpXG4re1xuK31cbitcbitzdGF0aWMgdm9pZCBydGxfbWFjX2Rpc2FibGVfdHhfbHBpKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxuK3tcbitcdHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwID0gY29udGFpbmVyX29mKGNvbmZpZywgc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSwgcGh5bGlua19jb25maWcpO1xuK1xuK1x0cnRsX2VuYWJsZV90eF9scGkodHAsIGZhbHNlKTtcbit9XG4rXG4rc3RhdGljIGludCBydGxfbWFjX2VuYWJsZV90eF9scGkoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsIHUzMiB0aW1lciwgYm9vbCB0eF9jbGtfc3RvcClcbit7XG4rXHRzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCA9IGNvbnRhaW5lcl9vZihjb25maWcsIHN0cnVjdCBydGw4MTY5X3ByaXZhdGUsIHBoeWxpbmtfY29uZmlnKTtcbitcbitcdHJ0bF9lbmFibGVfdHhfbHBpKHRwLCB0cnVlKTtcbitcbitcdHJldHVybiAwO1xuK31cbitcbitzdGF0aWMgY29uc3Qgc3RydWN0IHBoeWxpbmtfbWFjX29wcyBydGxfcGh5bGlua19tYWNfb3BzID0ge1xuK1x0Lm1hY19zZWxlY3RfcGNzID0gcnRsX21hY19zZWxlY3RfcGNzLFxuK1x0Lm1hY19jb25maWcgPSBydGxfbWFjX2NvbmZpZyxcbitcdC5tYWNfbGlua19kb3duICA9IHJ0bF9tYWNfbGlua19kb3duLFxuK1x0Lm1hY19saW5rX3VwICAgID0gcnRsX21hY19saW5rX3VwLFxuK1x0Lm1hY19kaXNhYmxlX3R4X2xwaSA9IHJ0bF9tYWNfZGlzYWJsZV90eF9scGksXG4rXHQubWFjX2VuYWJsZV90eF9scGkgPSBydGxfbWFjX2VuYWJsZV90eF9scGksXG4rfTtcbitcbitzdGF0aWMgdW5zaWduZWQgbG9uZyBydGw4MTY5X2dldF9scGlfY2FwcyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbit7XG4rXHR1bnNpZ25lZCBsb25nIGNhcHMgPSAwO1xuK1xuK1x0aWYgKCFydGxfc3VwcG9ydHNfZWVlKHRwKSB8fCB0cC1cdTAwM2VzZnBfbW9kZSA9PSBSVExfU0ZQXzgxMjdfQVRGKVxuK1x0XHRyZXR1cm4gMDtcbitcbitcdGNhcHMgfD0gTUFDXzEwMEZEIHwgTUFDXzEwMDBGRDtcbitcbitcdC8qIG1pbWljIGJlaGF2aW9yIG9mIHI4MTI1L3I4MTI2IHZlbmRvciBkcml2ZXJzXG4rXHQgKiBSVExfR0lHQV9NQUNfVkVSXzYxIGRvZXNuJ3Qgc3VwcG9ydCAyLjVHIGVlZVxuK1x0ICovXG4rXHRpZiAodHAtXHUwMDNlbWFjX3ZlcnNpb24gXHUwMDNlPSBSVExfR0lHQV9NQUNfVkVSXzYzKVxuK1x0XHRjYXBzIHw9IE1BQ18yNTAwRkQ7XG4rXHRpZiAodHAtXHUwMDNlbWFjX3ZlcnNpb24gXHUwMDNlPSBSVExfR0lHQV9NQUNfVkVSXzcwKVxuK1x0XHRjYXBzIHw9IE1BQ181MDAwRkQ7XG4rXHRpZiAodHAtXHUwMDNlbWFjX3ZlcnNpb24gPT0gUlRMX0dJR0FfTUFDX1ZFUl84MClcbitcdFx0Y2FwcyB8PSBNQUNfMTAwMDBGRDtcbitcbitcdHJldHVybiBjYXBzO1xuK31cbitcbitzdGF0aWMgY29uc3Qgc3RydWN0IHBoeWxpbmtfcGNzX29wcyByODE2OV9wY3Nfb3BzID0ge1xuK1x0LnBjc192YWxpZGF0ZSA9IHJ0bDgxNjlfcGNzX3ZhbGlkYXRlLFxuK1x0LnBjc19nZXRfc3RhdGUgPSBydGw4MTY5X3Bjc19nZXRfc3RhdGUsXG4rXHQucGNzX2NvbmZpZyA9IHJ0bDgxNjlfcGNzX2NvbmZpZyxcbitcdC5wY3NfYW5fcmVzdGFydCA9IHJ0bDgxNjlfcGNzX2FuX3Jlc3RhcnQsXG4rfTtcbitcbitzdGF0aWMgaW50IHJ0bF9pbml0X3BoeWxpbmsoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG4re1xuK1x0c3RydWN0IHBoeWxpbmsgKnBsO1xuK1x0cGh5X2ludGVyZmFjZV90IHBoeV9tb2RlO1xuK1xuK1x0dHAtXHUwMDNlcGh5bGlua19jb25maWcuZGV2ID0gXHUwMDI2dHAtXHUwMDNlZGV2LVx1MDAzZWRldjtcbitcdHRwLVx1MDAzZXBoeWxpbmtfY29uZmlnLnR5cGUgPSBQSFlMSU5LX05FVERFVjtcbitcdHRwLVx1MDAzZXBoeWxpbmtfY29uZmlnLm1hY19tYW5hZ2VkX3BtID0gdHJ1ZTtcbitcdHRwLVx1MDAzZXBoeWxpbmtfY29uZmlnLmxwaV9jYXBhYmlsaXRpZXMgPSBydGw4MTY5X2dldF9scGlfY2Fwcyh0cCk7XG4rXHR0cC1cdTAwM2VwaHlsaW5rX2NvbmZpZy5tYWNfY2FwYWJpbGl0aWVzIHw9IE1BQ19BU1lNX1BBVVNFIHwgTUFDX1NZTV9QQVVTRTtcbitcbitcdHN3aXRjaCAodHAtXHUwMDNlc2ZwX21vZGUpIHtcbitcdGNhc2UgUlRMX1NGUF84MTY4X0FGOlxuK1x0XHR0cC1cdTAwM2VwY3Mub3BzID0gXHUwMDI2cjgxNjlfcGNzX29wcztcbitcdFx0dHAtXHUwMDNlcGh5bGlua19jb25maWcuZGVmYXVsdF9hbl9pbmJhbmQgPSB0cnVlO1xuK1x0XHRwaHlfbW9kZSA9IFBIWV9JTlRFUkZBQ0VfTU9ERV8xMDAwQkFTRVg7XG4rXHRcdHRwLVx1MDAzZXBoeWxpbmtfY29uZmlnLm1hY19jYXBhYmlsaXRpZXMgfD0gTUFDXzEwMDBGRDtcbitcdFx0YnJlYWs7XG4rXHRjYXNlIFJUTF9TRlBfODEyN19BVEY6XG4rXHRcdHRwLVx1MDAzZXBjcy5vcHMgPSBcdTAwMjZyODE2OV9wY3Nfb3BzO1xuK1x0XHRwaHlfbW9kZSA9IFBIWV9JTlRFUkZBQ0VfTU9ERV8xMEdCQVNFUjtcbitcdFx0dHAtXHUwMDNlcGh5bGlua19jb25maWcuZGVmYXVsdF9hbl9pbmJhbmQgPSB0cnVlO1xuK1x0XHR0cC1cdTAwM2VwaHlsaW5rX2NvbmZpZy5tYWNfY2FwYWJpbGl0aWVzIHw9IE1BQ18xMDAwRkQgfCBNQUNfMTAwMDBGRDtcbitcdFx0YnJlYWs7XG4rXHRkZWZhdWx0OlxuK1x0XHRwaHlfbW9kZSA9IFBIWV9JTlRFUkZBQ0VfTU9ERV9JTlRFUk5BTDtcbitcdFx0dHAtXHUwMDNlcGh5bGlua19jb25maWcubWFjX2NhcGFiaWxpdGllcyB8PSBNQUNfMTAgfCBNQUNfMTAwO1xuK1xuK1x0XHRpZiAodHAtXHUwMDNlbWFjX3ZlcnNpb24gPT0gUlRMX0dJR0FfTUFDX1ZFUl84MClcbitcdFx0XHR0cC1cdTAwM2VwaHlsaW5rX2NvbmZpZy5tYWNfY2FwYWJpbGl0aWVzIHw9IE1BQ18xMDAwRkQgfCBNQUNfMjUwMEZEIHxcbitcdFx0XHRcdFx0XHRcdCAgICAgICBNQUNfNTAwMEZEIHwgTUFDXzEwMDAwRkQ7XG4rXHRcdGVsc2UgaWYgKHRwLVx1MDAzZW1hY192ZXJzaW9uID09IFJUTF9HSUdBX01BQ19WRVJfNzApXG4rXHRcdFx0dHAtXHUwMDNlcGh5bGlua19jb25maWcubWFjX2NhcGFiaWxpdGllcyB8PSBNQUNfMTAwMEZEIHxcbitcdFx0XHRcdFx0XHRcdCAgICAgICBNQUNfMjUwMEZEIHwgTUFDXzUwMDBGRDtcbitcdFx0ZWxzZSBpZiAodHAtXHUwMDNlbWFjX3ZlcnNpb24gXHUwMDNlPSBSVExfR0lHQV9NQUNfVkVSXzYxKVxuK1x0XHRcdHRwLVx1MDAzZXBoeWxpbmtfY29uZmlnLm1hY19jYXBhYmlsaXRpZXMgfD0gTUFDXzEwMDBGRCB8IE1BQ18yNTAwRkQ7XG4rXHRcdGVsc2VcbitcdFx0XHRpZiAodHAtXHUwMDNlc3VwcG9ydHNfZ21paSlcbitcdFx0XHRcdHRwLVx1MDAzZXBoeWxpbmtfY29uZmlnLm1hY19jYXBhYmlsaXRpZXMgfD0gTUFDXzEwMDBGRDtcbitcbitcdFx0aWYgKHRwLVx1MDAzZW1hY192ZXJzaW9uIFx1MDAzYyBSVExfR0lHQV9NQUNfVkVSXzYxKVxuK1x0XHRcdHBoeV9tb2RlID0gdHAtXHUwMDNlc3VwcG9ydHNfZ21paSA/IFBIWV9JTlRFUkZBQ0VfTU9ERV9HTUlJIDpcbitcdFx0XHRcdCAgIFBIWV9JTlRFUkZBQ0VfTU9ERV9NSUk7XG4rXHRcdGVsc2VcbitcdFx0XHRwaHlfbW9kZSA9IFBIWV9JTlRFUkZBQ0VfTU9ERV9JTlRFUk5BTDtcbitcdFx0YnJlYWs7XG4rXHR9XG4rXG4rXHRfX3NldF9iaXQocGh5X21vZGUsIHRwLVx1MDAzZXBoeWxpbmtfY29uZmlnLnN1cHBvcnRlZF9pbnRlcmZhY2VzKTtcbitcdGlmICh0cC1cdTAwM2VwaHlsaW5rX2NvbmZpZy5scGlfY2FwYWJpbGl0aWVzKVxuK1x0XHRfX3NldF9iaXQocGh5X21vZGUsIHRwLVx1MDAzZXBoeWxpbmtfY29uZmlnLmxwaV9pbnRlcmZhY2VzKTtcbitcbitcdHBsID0gcGh5bGlua19jcmVhdGUoXHUwMDI2dHAtXHUwMDNlcGh5bGlua19jb25maWcsIHRwX3RvX2Rldih0cCktXHUwMDNlZndub2RlLFxuK1x0XHRcdCAgICBwaHlfbW9kZSwgXHUwMDI2cnRsX3BoeWxpbmtfbWFjX29wcyk7XG4rXHRpZiAoSVNfRVJSKHBsKSlcbitcdFx0cmV0dXJuIFBUUl9FUlIocGwpO1xuK1xuK1x0dHAtXHUwMDNlcGh5bGluayA9IHBsO1xuK1xuK1x0cmV0dXJuIDA7XG4rfVxuK1xuIHN0YXRpYyBpbnQgcnRsX2luaXRfb25lKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KVxuIHtcbiBcdGNvbnN0IHN0cnVjdCBydGxfY2hpcF9pbmZvICpjaGlwO1xuQEAgLTU2NjcsNiArNjAzNSw3IEBAIHN0YXRpYyBpbnQgcnRsX2luaXRfb25lKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KVxuIFx0XHRcdFx0ICAgICBleHRfeGlkX3N0ciwgeGlkKTtcbiBcdHRwLVx1MDAzZW1hY192ZXJzaW9uID0gY2hpcC1cdTAwM2VtYWNfdmVyc2lvbjtcbiBcdHRwLVx1MDAzZWZ3X25hbWUgPSBjaGlwLVx1MDAzZWZ3X25hbWU7XG4rXHR0cC1cdTAwM2VzcGVlZCA9IFNQRUVEX1VOS05PV047XG4gXG4gXHQvKiBEaXNhYmxlIEFTUE0gTDEgYXMgdGhhdCBjYXVzZSByYW5kb20gZGV2aWNlIHN0b3Agd29ya2luZ1xuIFx0ICogcHJvYmxlbXMgYXMgd2VsbCBhcyBmdWxsIHN5c3RlbSBoYW5ncyBmb3Igc29tZSBQQ0llIGRldmljZXMgdXNlcnMuXG5AQCAtNTY3OSwxMiArNjA0OCw3IEBAIHN0YXRpYyBpbnQgcnRsX2luaXRfb25lKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KVxuIFx0fVxuIFx0dHAtXHUwMDNlYXNwbV9tYW5hZ2VhYmxlID0gIXJjO1xuIFxuLVx0aWYgKHJ0bF9pc184MTI1KHRwKSkge1xuLVx0XHR1MTYgZGF0YSA9IHI4MTY4X21hY19vY3BfcmVhZCh0cCwgMHhkMDA2KTtcbi1cbi1cdFx0aWYgKChkYXRhIFx1MDAyNiAweGZmKSA9PSAweDA3KVxuLVx0XHRcdHRwLVx1MDAzZXNmcF9tb2RlID0gdHJ1ZTtcbi1cdH1cbitcdHRwLVx1MDAzZXNmcF9tb2RlID0gcnRsX2dldF9zZnBfbW9kZSh0cCk7XG4gXG4gXHR0cC1cdTAwM2VkYXNoX3R5cGUgPSBydGxfZ2V0X2Rhc2hfdHlwZSh0cCk7XG4gXHR0cC1cdTAwM2VkYXNoX2VuYWJsZWQgPSBydGxfZGFzaF9pc19lbmFibGVkKHRwKTtcbkBAIC01Nzg4LDEzICs2MTUyLDIzIEBAIHN0YXRpYyBpbnQgcnRsX2luaXRfb25lKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KVxuIFxuIFx0cGNpX3NldF9kcnZkYXRhKHBkZXYsIHRwKTtcbiBcbi1cdHJjID0gcjgxNjlfbWRpb19yZWdpc3Rlcih0cCk7XG4rXHRyYyA9IHJ0bF9pbml0X3BoeWxpbmsodHApO1xuIFx0aWYgKHJjKVxuIFx0XHRyZXR1cm4gcmM7XG4gXG4rXHRpZiAodHAtXHUwMDNlc2ZwX21vZGUgPT0gUlRMX1NGUF9OT05FKSB7XG4rXHRcdHJjID0gcjgxNjlfbWRpb19yZWdpc3Rlcih0cCk7XG4rXHRcdGlmIChyYykge1xuK1x0XHRcdHBoeWxpbmtfZGVzdHJveSh0cC1cdTAwM2VwaHlsaW5rKTtcbitcdFx0XHRyZXR1cm4gcmM7XG4rXHRcdH1cbitcdH1cbitcbiBcdHJjID0gcmVnaXN0ZXJfbmV0ZGV2KGRldik7XG4tXHRpZiAocmMpXG4rXHRpZiAocmMpIHtcbitcdFx0cGh5bGlua19kZXN0cm95KHRwLVx1MDAzZXBoeWxpbmspO1xuIFx0XHRyZXR1cm4gcmM7XG4rXHR9XG4gXG4gXHRpZiAoSVNfRU5BQkxFRChDT05GSUdfUjgxNjlfTEVEUykpIHtcbiBcdFx0aWYgKHJ0bF9pc184MTI1KHRwKSlcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jIGIvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY1xuaW5kZXggNTlkZmUzNWFmYTU0ZmMuLmM0NTBlZTMzYjc1Y2MxIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY1xuKysrIGIvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY1xuQEAgLTE4MjgsNiArMTgyOCw3MiBAQCBpbnQgcGh5bGlua19zZXRfZml4ZWRfbGluayhzdHJ1Y3QgcGh5bGluayAqcGwsXG4gfVxuIEVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfc2V0X2ZpeGVkX2xpbmspO1xuIFxuKy8qKlxuKyAqIHBoeWxpbmtfc2V0X21hY19jYXBhYmlsaXRpZXMoKSAtIER5bmFtaWNhbGx5IHVwZGF0ZSBNQUMgY2FwYWJpbGl0aWVzXG4rICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbisgKiBAbWFjX2NhcGFiaWxpdGllczogdGhlIG5ldyBNQUMgY2FwYWJpbGl0aWVzIG1hc2tcbisgKlxuKyAqIFRoaXMgZnVuY3Rpb24gYWxsb3dzIGEgTUFDIGRyaXZlciB0byBkeW5hbWljYWxseSBjaGFuZ2UgaXRzIGNhcGFiaWxpdGllcyxcbisgKiBzdWNoIGFzIGxvc2luZy9nYWluaW5nIFBhdXNlIGZyYW1lIHN1cHBvcnQgYmFzZWQgb24gTVRVIHNpemUuXG4rICogSXQgcmVjYWxjdWxhdGVzIHN1cHBvcnRlZCBsaW5rIG1vZGVzIGFuZCB0cmlnZ2VycyByZW5lZ290aWF0aW9uIGlmIG5lZWRlZC5cbisgKi9cbit2b2lkIHBoeWxpbmtfc2V0X21hY19jYXBhYmlsaXRpZXMoc3RydWN0IHBoeWxpbmsgKnBsLCB1bnNpZ25lZCBsb25nIG1hY19jYXBhYmlsaXRpZXMpXG4re1xuK1x0c3RydWN0IHBoeWxpbmtfbGlua19zdGF0ZSAqY29uZmlnID0gXHUwMDI2cGwtXHUwMDNlbGlua19jb25maWc7XG4rXHR1bnNpZ25lZCBsb25nIGNhcHNfYWRkZWQsIGNhcHNfcmVtb3ZlZDtcbitcbitcdEFTU0VSVF9SVE5MKCk7XG4rXG4rXHRjYXBzX2FkZGVkID0gbWFjX2NhcGFiaWxpdGllcyBcdTAwMjYgfnBsLVx1MDAzZWNvbmZpZy1cdTAwM2VtYWNfY2FwYWJpbGl0aWVzO1xuK1x0Y2Fwc19yZW1vdmVkID0gcGwtXHUwMDNlY29uZmlnLVx1MDAzZW1hY19jYXBhYmlsaXRpZXMgXHUwMDI2IH5tYWNfY2FwYWJpbGl0aWVzO1xuK1xuK1x0aWYgKCFjYXBzX2FkZGVkIFx1MDAyNlx1MDAyNiAhY2Fwc19yZW1vdmVkKVxuK1x0XHRyZXR1cm47XG4rXG4rXHRtdXRleF9sb2NrKFx1MDAyNnBsLVx1MDAzZXN0YXRlX211dGV4KTtcbitcbitcdHBsLVx1MDAzZWNvbmZpZy1cdTAwM2VtYWNfY2FwYWJpbGl0aWVzID0gbWFjX2NhcGFiaWxpdGllcztcbitcbitcdGlmIChjYXBzX3JlbW92ZWQgXHUwMDI2IE1BQ19TWU1fUEFVU0UpXG4rXHRcdGxpbmttb2RlX2NsZWFyX2JpdChFVEhUT09MX0xJTktfTU9ERV9QYXVzZV9CSVQsIHBsLVx1MDAzZXN1cHBvcnRlZCk7XG4rXHRpZiAoY2Fwc19yZW1vdmVkIFx1MDAyNiBNQUNfQVNZTV9QQVVTRSlcbitcdFx0bGlua21vZGVfY2xlYXJfYml0KEVUSFRPT0xfTElOS19NT0RFX0FzeW1fUGF1c2VfQklULCBwbC1cdTAwM2VzdXBwb3J0ZWQpO1xuK1xuK1x0bGlua21vZGVfYW5kKGNvbmZpZy1cdTAwM2VhZHZlcnRpc2luZywgY29uZmlnLVx1MDAzZWFkdmVydGlzaW5nLCBwbC1cdTAwM2VzdXBwb3J0ZWQpO1xuK1xuK1x0aWYgKGNhcHNfYWRkZWQgXHUwMDI2IE1BQ19TWU1fUEFVU0UpIHtcbitcdFx0bGlua21vZGVfc2V0X2JpdChFVEhUT09MX0xJTktfTU9ERV9QYXVzZV9CSVQsIHBsLVx1MDAzZXN1cHBvcnRlZCk7XG4rXHRcdGlmIChwbC1cdTAwM2VwaHlkZXYgXHUwMDI2XHUwMDI2ICFwaHlsaW5rX3Rlc3QocGwtXHUwMDNlcGh5ZGV2LVx1MDAzZXN1cHBvcnRlZCwgUGF1c2UpKVxuK1x0XHRcdGxpbmttb2RlX2NsZWFyX2JpdChFVEhUT09MX0xJTktfTU9ERV9QYXVzZV9CSVQsIHBsLVx1MDAzZXN1cHBvcnRlZCk7XG4rXHR9XG4rXHRpZiAoY2Fwc19hZGRlZCBcdTAwMjYgTUFDX0FTWU1fUEFVU0UpIHtcbitcdFx0bGlua21vZGVfc2V0X2JpdChFVEhUT09MX0xJTktfTU9ERV9Bc3ltX1BhdXNlX0JJVCwgcGwtXHUwMDNlc3VwcG9ydGVkKTtcbitcdFx0aWYgKHBsLVx1MDAzZXBoeWRldiBcdTAwMjZcdTAwMjYgIXBoeWxpbmtfdGVzdChwbC1cdTAwM2VwaHlkZXYtXHUwMDNlc3VwcG9ydGVkLCBBc3ltX1BhdXNlKSlcbitcdFx0XHRsaW5rbW9kZV9jbGVhcl9iaXQoRVRIVE9PTF9MSU5LX01PREVfQXN5bV9QYXVzZV9CSVQsIHBsLVx1MDAzZXN1cHBvcnRlZCk7XG4rXHR9XG4rXG4rXHRsaW5rbW9kZV9hbmQoY29uZmlnLVx1MDAzZWFkdmVydGlzaW5nLCBjb25maWctXHUwMDNlYWR2ZXJ0aXNpbmcsIHBsLVx1MDAzZXN1cHBvcnRlZCk7XG4rXG4rXHRpZiAoY29uZmlnLVx1MDAzZXBhdXNlIFx1MDAyNiBNTE9fUEFVU0VfQU4pIHtcbitcdFx0aWYgKHBoeWxpbmtfdGVzdChwbC1cdTAwM2VzdXBwb3J0ZWQsIFBhdXNlKSlcbitcdFx0XHRsaW5rbW9kZV9zZXRfYml0KEVUSFRPT0xfTElOS19NT0RFX1BhdXNlX0JJVCwgY29uZmlnLVx1MDAzZWFkdmVydGlzaW5nKTtcbitcbitcdFx0aWYgKHBoeWxpbmtfdGVzdChwbC1cdTAwM2VzdXBwb3J0ZWQsIEFzeW1fUGF1c2UpKVxuK1x0XHRcdGxpbmttb2RlX3NldF9iaXQoRVRIVE9PTF9MSU5LX01PREVfQXN5bV9QYXVzZV9CSVQsIGNvbmZpZy1cdTAwM2VhZHZlcnRpc2luZyk7XG4rXHR9XG4rXG4rXHRpZiAoIXBsLVx1MDAzZXBoeWRldilcbitcdFx0cGh5bGlua19jaGFuZ2VfaW5iYW5kX2FkdmVydChwbCk7XG4rXG4rXHRtdXRleF91bmxvY2soXHUwMDI2cGwtXHUwMDNlc3RhdGVfbXV0ZXgpO1xuK1xuK1x0aWYgKHBsLVx1MDAzZXBoeWRldikge1xuK1x0XHRsaW5rbW9kZV9jb3B5KHBsLVx1MDAzZXBoeWRldi1cdTAwM2VhZHZlcnRpc2luZywgY29uZmlnLVx1MDAzZWFkdmVydGlzaW5nKTtcbitcdFx0cGh5X3N0YXJ0X2FuZWcocGwtXHUwMDNlcGh5ZGV2KTtcbitcdH1cbit9XG4rRVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19zZXRfbWFjX2NhcGFiaWxpdGllcyk7XG4rXG4gLyoqXG4gICogcGh5bGlua19jcmVhdGUoKSAtIGNyZWF0ZSBhIHBoeWxpbmsgaW5zdGFuY2VcbiAgKiBAY29uZmlnOiBhIHBvaW50ZXIgdG8gdGhlIHRhcmdldCBcdTAwMjZzdHJ1Y3QgcGh5bGlua19jb25maWdcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYyBiL2RyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jXG5pbmRleCBiNjVkMGY1ZmExYTAxNC4uNDcyMWJhMDcxY2JiZTQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uY1xuKysrIGIvZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmNcbkBAIC0xNyw3ICsxNyw2IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvZGVsYXkuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2Nsay5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvc3RyaW5nX2Nob2ljZXMuaFx1MDAzZVxuLSNpbmNsdWRlIFx1MDAzY25ldC9waHkvcmVhbHRla19waHkuaFx1MDAzZVxuIFxuICNpbmNsdWRlIFwiLi4vcGh5bGliLmhcIlxuICNpbmNsdWRlIFwicmVhbHRlay5oXCJcbkBAIC0yNjQ2LDQ1ICsyNjQ1LDYgQEAgc3RhdGljIGlycXJldHVybl90IHJ0bDgyMjFiX2hhbmRsZV9pbnRlcnJ1cHQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbiBcdHJldHVybiBJUlFfSEFORExFRDtcbiB9XG4gXG4tc3RhdGljIGludCBydGxnZW5fc2ZwX2dldF9mZWF0dXJlcyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLXtcbi1cdGxpbmttb2RlX3NldF9iaXQoRVRIVE9PTF9MSU5LX01PREVfMTAwMDBiYXNlVF9GdWxsX0JJVCxcbi1cdFx0XHQgcGh5ZGV2LVx1MDAzZXN1cHBvcnRlZCk7XG4tXG4tXHQvKiBzZXQgZGVmYXVsdCBtb2RlICovXG4tXHRwaHlkZXYtXHUwMDNlc3BlZWQgPSBTUEVFRF8xMDAwMDtcbi1cdHBoeWRldi1cdTAwM2VkdXBsZXggPSBEVVBMRVhfRlVMTDtcbi1cbi1cdHBoeWRldi1cdTAwM2Vwb3J0ID0gUE9SVF9GSUJSRTtcbi1cbi1cdHJldHVybiAwO1xuLX1cbi1cbi1zdGF0aWMgaW50IHJ0bGdlbl9zZnBfcmVhZF9zdGF0dXMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbi17XG4tXHRpbnQgdmFsLCBlcnI7XG4tXG4tXHRlcnIgPSBnZW5waHlfdXBkYXRlX2xpbmsocGh5ZGV2KTtcbi1cdGlmIChlcnIpXG4tXHRcdHJldHVybiBlcnI7XG4tXG4tXHRpZiAoIXBoeWRldi1cdTAwM2VsaW5rKVxuLVx0XHRyZXR1cm4gMDtcbi1cbi1cdHZhbCA9IHBoeV9yZWFkKHBoeWRldiwgUlRMX1BIWVNSKTtcbi1cdGlmICh2YWwgXHUwMDNjIDApXG4tXHRcdHJldHVybiB2YWw7XG4tXG4tXHRydGxnZW5fZGVjb2RlX3BoeXNyKHBoeWRldiwgdmFsKTtcbi1cbi1cdHJldHVybiAwO1xuLX1cbi1cbi1zdGF0aWMgaW50IHJ0bGdlbl9zZnBfY29uZmlnX2FuZWcoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbi17XG4tXHRyZXR1cm4gMDtcbi19XG4tXG4gc3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIHJlYWx0ZWtfZHJ2c1tdID0ge1xuIFx0e1xuIFx0XHRQSFlfSURfTUFUQ0hfRVhBQ1QoMHgwMDAwODIwMSksXG5AQCAtMjkzNCwyMCArMjg5NCw2IEBAIHN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciByZWFsdGVrX2RydnNbXSA9IHtcbiBcdFx0LndyaXRlX3BhZ2VcdD0gcnRsODIxeF93cml0ZV9wYWdlLFxuIFx0XHQucmVhZF9tbWRcdD0gcnRsODIyeF9yZWFkX21tZCxcbiBcdFx0LndyaXRlX21tZFx0PSBydGw4MjJ4X3dyaXRlX21tZCxcbi1cdH0sIHtcbi1cdFx0UEhZX0lEX01BVENIX0VYQUNUKFBIWV9JRF9SVExfRFVNTVlfU0ZQKSxcbi1cdFx0Lm5hbWVcdFx0PSBcIlJlYWx0ZWsgU0ZQIFBIWSBNb2RlXCIsXG4tXHRcdC5mbGFnc1x0XHQ9IFBIWV9JU19JTlRFUk5BTCxcbi1cdFx0LnByb2JlXHRcdD0gcnRsODIyeF9wcm9iZSxcbi1cdFx0LmdldF9mZWF0dXJlc1x0PSBydGxnZW5fc2ZwX2dldF9mZWF0dXJlcyxcbi1cdFx0LmNvbmZpZ19hbmVnXHQ9IHJ0bGdlbl9zZnBfY29uZmlnX2FuZWcsXG4tXHRcdC5yZWFkX3N0YXR1c1x0PSBydGxnZW5fc2ZwX3JlYWRfc3RhdHVzLFxuLVx0XHQuc3VzcGVuZFx0PSBnZW5waHlfc3VzcGVuZCxcbi1cdFx0LnJlc3VtZVx0XHQ9IHJ0bGdlbl9yZXN1bWUsXG4tXHRcdC5yZWFkX3BhZ2VcdD0gcnRsODIxeF9yZWFkX3BhZ2UsXG4tXHRcdC53cml0ZV9wYWdlXHQ9IHJ0bDgyMXhfd3JpdGVfcGFnZSxcbi1cdFx0LnJlYWRfbW1kXHQ9IHJ0bDgyMnhfcmVhZF9tbWQsXG4tXHRcdC53cml0ZV9tbWRcdD0gcnRsODIyeF93cml0ZV9tbWQsXG4gXHR9LCB7XG4gXHRcdFBIWV9JRF9NQVRDSF9FWEFDVCgweDAwMWNjYWQwKSxcbiBcdFx0Lm5hbWVcdFx0PSBcIlJUTDgyMjQgMi41R2JwcyBQSFlcIixcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaCBiL2luY2x1ZGUvbGludXgvcGh5bGluay5oXG5pbmRleCAyYmMwZGIzZDUyYWM4ZC4uNTY2NDJhYjk2MWE3NTMgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaFxuKysrIGIvaW5jbHVkZS9saW51eC9waHlsaW5rLmhcbkBAIC04NDIsNCArODQyLDYgQEAgdm9pZCBwaHlsaW5rX3JlcGxheV9saW5rX2JlZ2luKHN0cnVjdCBwaHlsaW5rICpwbCk7XG4gXG4gdm9pZCBwaHlsaW5rX3JlcGxheV9saW5rX2VuZChzdHJ1Y3QgcGh5bGluayAqcGwpO1xuIFxuK3ZvaWQgcGh5bGlua19zZXRfbWFjX2NhcGFiaWxpdGllcyhzdHJ1Y3QgcGh5bGluayAqcGwsIHVuc2lnbmVkIGxvbmcgbWFjX2NhcGFiaWxpdGllcyk7XG4rXG4gI2VuZGlmXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvcGh5L3JlYWx0ZWtfcGh5LmggYi9pbmNsdWRlL25ldC9waHkvcmVhbHRla19waHkuaFxuZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCBkNjgzYmMxYjA2NTljZC4uMDAwMDAwMDAwMDAwMDBcbi0tLSBhL2luY2x1ZGUvbmV0L3BoeS9yZWFsdGVrX3BoeS5oXG4rKysgL2Rldi9udWxsXG5AQCAtMSw3ICswLDAgQEBcbi0vKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCAqL1xuLSNpZm5kZWYgX1JFQUxURUtfUEhZX0hcbi0jZGVmaW5lIF9SRUFMVEVLX1BIWV9IXG4tXG4tI2RlZmluZVx0UEhZX0lEX1JUTF9EVU1NWV9TRlBcdDB4MDAxY2NiZmZcbi1cbi0jZW5kaWYgLyogX1JFQUxURUtfUEhZX0ggKi9cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDE2OjM0OjQyLjYwNTU1Nzc1WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzU0ODM1MzgyNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFJlYWNoYWJpbGl0eSBvZiBhIE5ldHdvcmsgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaC4gSXQncyBhIHByZXR0eSBzdWJzdGFudGlhbCBjaGFuZ2UsIHJld3JpdGluZyBob3cgdGhlIFJlYWx0ZWsgcjgxNjkgZHJpdmVyIGludGVyYWN0cyB3aXRoIHRoZSBwaHlsaW5rIGZyYW1ld29yay4gU3BlY2lmaWNhbGx5LCBpdCdzIHN3aXRjaGluZyBmcm9tIGRpcmVjdGx5IHVzaW5nIGBwaHlsaWJgIHRvIGBwaHlsaW5rYCwgYW5kIHRoZXJlJ3MgYSBuZXcgZnVuY3Rpb24gYWRkZWQgdG8gYHBoeWxpbmsuY2AgY2FsbGVkIGBwaHlsaW5rX3NldF9tYWNfY2FwYWJpbGl0aWVzYC4gVGhpcyBpcyBhIHNpZ25pZmljYW50IGZ1bmN0aW9uYWwgc2hpZnQgd2l0aGluIGEgY29yZSBuZXR3b3JrIGRyaXZlciBhbmQgaXRzIGFzc29jaWF0ZWQgZnJhbWV3b3JrLiBNeSBpbW1lZGlhdGUgY29uY2VybiwgYXMgYWx3YXlzLCBpcyBob3cgSSBjYW4gdGVzdCB0aGlzIGVmZmVjdGl2ZWx5LCBlc3BlY2lhbGx5IGluIGEgY29udHJvbGxlZCBlbnZpcm9ubWVudC5cblxuVGhlIHI4MTY5IGRyaXZlciB0YXJnZXRzIFJlYWx0ZWsgUENJIEV4cHJlc3MgR2lnYWJpdCBFdGhlcm5ldCBjb250cm9sbGVycy4gTXkgdGhvdWdodCBpcyBjYW4gSSB1c2UgYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBmb3IgdGhpcy4gQ2FuIEkgdXNlIFFFTVU/IEkga25vdyBRRU1VICpkb2VzKiBzdXBwb3J0IHRoZSBvbGRlciBgcnRsODEzOWAgMTAvMTAwIEV0aGVybmV0IGFkYXB0ZXIsIGJ1dCBub3QgdGhlIHI4MTY5IG91dCBvZiB0aGUgYm94LiBTbywgdGhlIHF1ZXN0aW9uIGlzIGhvdyBjYW4gSSB0ZXN0IHRoaXMgaW4gYSB2aXJ0dWFsIGVudmlyb25tZW50PyBJdCdzIGEgUENJIGRldmljZSwgc28gUUVNVSB3b3VsZCBoYXZlIHRvIGVtdWxhdGUgdGhlIHI4MTY5IGhhcmR3YXJlLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgZG9uJ3QgY29uZnVzZSBydGw4MTM5IHdpdGggdGhlIHRhcmdldC4gSWYgdGhlIGRyaXZlciByZWxpZXMgb24gYSBQQ0kgYnVzLCB0aGVuIHRoZSBkcml2ZXIncyBgcHJvYmVgIGZ1bmN0aW9uIHdvbid0IGV2ZW4gYmUgY2FsbGVkIHVubGVzcyBRRU1VIHByb3Blcmx5IGVtdWxhdGVzIHRoZSBkZXZpY2UuIExldCBtZSBkb3VibGUgY2hlY2sgaWYgUUVNVSBwcm92aWRlcyB0aGF0IGVtdWxhdGlvbiBzcGVjaWZpY2FsbHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwNDU4LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzY4LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMTY6MzQ6NTAuMTUzOTE0MDY2WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4Nzk2Nzk4OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJyODE2OVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9LY29uZmlnPTg0PWNvbmZpZyBSODE2OVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9LY29uZmlnLTEwMC1cXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWc6MTAxOlxcdCAgd2lsbCBiZSBjYWxsZWQgcjgxNjkuICBUaGlzIGlzIHJlY29tbWVuZGVkLlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZy0xMDItXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDE2OjM0OjUwLjM0MTg4NzY1NVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU3ODE5MTQ0NTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgU3l6a2FsbGVyIFBDSSBGdXp6aW5nIEFzc2Vzc21lbnQqKlxuXG5Pa2F5LCBzbyB0aGUgZmlyc3QgdGhpbmcgSSdtIHRoaW5raW5nIGlzLCBjYW4gU3l6a2FsbGVyIGhpdCB0aGlzPyBNeSBpbW1lZGlhdGUgcmVmbGV4IGlzIHRvIGNoZWNrIGZvciBgc3l6X3BjaV9kZXZpY2VfYWRkYCBvciBzaW1pbGFyIGlmIGl0J3MgYSBQQ0kgZHJpdmVyLCB3aGljaCB1c3VhbGx5IG1lYW5zIGl0IG5lZWRzIGFuIGVtdWxhdGVkIFBDSSBkZXZpY2Ugb3IgYHZoY2lgIG9yIGBwY2lgIGZ1enppbmcgc3VwcG9ydC4gQnV0IHdhaXQsIEkgcmVtZW1iZXIgU3l6a2FsbGVyICpkb2VzKiBoYXZlIGEgZGVkaWNhdGVkIFBDSSBmdXp6ZXIgdGhhdCBjYW4gaW5qZWN0IFBDSSBkZXZpY2VzLCB3aGljaCBpcyBncmVhdC5cblxuUmlnaHQsIGByODE2OWAgaXMgaW5kZWVkIGEgUENJIGRyaXZlci4gVGhhdCBtZWFucyBTeXprYWxsZXIgKnNob3VsZCogYmUgYWJsZSB0byB0YWNrbGUgdGhpcyB1c2luZyB0aGUgYHN5el9wY2lgIHBzZXVkby1kZXZpY2Ugb3IgYnkgaW5qZWN0aW5nIFBDSSBjb25maWcgc3BhY2Ug4oCTIGNsYXNzaWMgUENJIGZ1enppbmcgYXBwcm9hY2hlcy5cblxuQWN0dWFsbHksIGl0IGhpdHMgbWUgdGhhdCBTeXprYWxsZXIncyBQQ0kgZnV6emVyIGlzIGRlc2lnbmVkIHRvIGZ1enogKmFueSogUENJIGRyaXZlciBieSBlZmZlY3RpdmVseSBzaW11bGF0aW5nIHRoZSBQQ0kgZGV2aWNlIGl0c2VsZi4gVGhpcyBpcyByZWFsbHkgcHJvbWlzaW5nLlxuXG5Ob3csIEknbSBicm91Z2h0IHVwIHNob3J0IGJ5IHRoZSBwcm9tcHQgbWVudGlvbmluZyBjb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIGV2ZW4gd2l0aCBlbXVsYXRlZCBoYXJkd2FyZSBsaWtlIFVTQiBvciBNQUM4MDIxMS4gT2theSwgZG9lcyBTeXprYWxsZXIncyBlbXVsYXRpb24gYWN0dWFsbHkgY292ZXIgdGhhdCBhc3BlY3Q/XG5cblllcywgd2FpdCwgaXQgY2xpY2tzLiBTeXprYWxsZXIncyBnb3QgYHN5el9wY2lgLCB3aGljaCAqYWJzb2x1dGVseSogY2FuIGVtdWxhdGUgUENJIGRldmljZXMuIFRoYXQncyBwcmVjaXNlbHkgd2hhdCBJIG5lZWQuXG5cbkFscmlnaHQsIGZpbmFsIHN0ZXA6IGxldCdzIHZlcmlmeSBpZiBgcjgxNjlgIGlzICpjdXJyZW50bHkqIGJlaW5nIGZ1enplZCBieSBTeXprYWxsZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxMjk5LCJPdXRwdXRUb2tlbnMiOjI1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjU4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDE2OjM0OjU2LjEyMzgwNTA5N1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozODI5MDY4NDI3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInI4MTY5XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDUzNiBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxuRG9jdW1lbnRhdGlvbi9jb3JlLWFwaS9kbWEtYXBpLnJzdD03NDE9ZXhhbXBsZSB3YXJuaW5nIG1lc3NhZ2UgbWF5IGxvb2sgbGlrZSB0aGlzOjpcXG4tLVxcbkRvY3VtZW50YXRpb24vY29yZS1hcGkvZG1hLWFwaS5yc3QtNzQ4LVxcdHNpbmdsZV0gW3VubWFwcGVkIGFzIHBhZ2VdXFxuRG9jdW1lbnRhdGlvbi9jb3JlLWFwaS9kbWEtYXBpLnJzdDo3NDk6XFx0TW9kdWxlcyBsaW5rZWQgaW46IG5mc2QgZXhwb3J0ZnMgYnJpZGdlIHN0cCBsbGMgcjgxNjlcXG5Eb2N1bWVudGF0aW9uL2NvcmUtYXBpL2RtYS1hcGkucnN0LTc1MC1cXHRQaWQ6IDAsIGNvbW06IHN3YXBwZXIgVGFpbnRlZDogRyAgICAgICAgVyAgMi42LjI4LWRtYXRlc3QtMDkyODktZzhiYjk5YzAgIzFcXG4tLVxcbkRvY3VtZW50YXRpb24vbGVkcy93ZWxsLWtub3duLWxlZHMudHh0PTEwNz1Hb29kOiAhbWRpby1tdXghbWRpb0AyIXN3aXRjaEAwIW1kaW86MDE6Z3JlZW46cmlnaHRcXG5Eb2N1bWVudGF0aW9uL2xlZHMvd2VsbC1rbm93bi1sZWRzLnR4dDoxMDg6R29vZDogcjgxNjktMC0yMDA6MDA6eWVsbG93OmJvdHRvbVxcbkRvY3VtZW50YXRpb24vbGVkcy93ZWxsLWtub3duLWxlZHMudHh0LTEwOS1cXG4tLVxcbk1BSU5UQUlORVJTPTEzNj1TOlxcdE1haW50YWluZWRcXG5NQUlOVEFJTkVSUzoxMzc6RjpcXHRkcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5Klxcbk1BSU5UQUlORVJTLTEzOC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZz04ND1jb25maWcgUjgxNjlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZy0xMDAtXFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9LY29uZmlnOjEwMTpcXHQgIHdpbGwgYmUgY2FsbGVkIHI4MTY5LiAgVGhpcyBpcyByZWNvbW1lbmRlZC5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWctMTAyLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9NYWtlZmlsZT03PW9iai0kKENPTkZJR184MTM5VE9PKSArPSA4MTM5dG9vLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL01ha2VmaWxlOjg6cjgxNjkteSArPSByODE2OV9tYWluLm8gcjgxNjlfZmlybXdhcmUubyByODE2OV9waHlfY29uZmlnLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL01ha2VmaWxlOjk6cjgxNjktJChDT05GSUdfUjgxNjlfTEVEUykgKz0gcjgxNjlfbGVkcy5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9NYWtlZmlsZToxMDpvYmotJChDT05GSUdfUjgxNjkpICs9IHI4MTY5Lm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL01ha2VmaWxlLTExLW9iai0kKENPTkZJR19SVEFTRSkgKz0gcnRhc2UvXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5LmgtMS0vKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OS5oOjI6LyogcjgxNjkuaDogUmVhbFRlayA4MTY5LzgxNjgvODEwMSBldGhlcm5ldCBkcml2ZXIuXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OS5oLTMtICpcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjkuaD04MD1zdHJ1Y3QgcnRsODE2OV9wcml2YXRlO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjkuaDo4MTpzdHJ1Y3QgcjgxNjlfbGVkX2NsYXNzZGV2O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjkuaC04Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5Lmg6ODM6dm9pZCByODE2OV9hcHBseV9maXJtd2FyZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OS5oLTg0LXUxNiBydGw4MTY4aF8yX2dldF9hZGNfYmlhc19pb2Zmc2V0KHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5Lmg9ODU9dTggcnRsODE2OGRfZWZ1c2VfcmVhZChzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgaW50IHJlZ19hZGRyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5Lmg6ODY6dm9pZCByODE2OV9od19waHlfY29uZmlnKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjkuaC04Ny1cXHRcXHRcXHQgZW51bSBtYWNfdmVyc2lvbiB2ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjkuaC04OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5Lmg6ODk6dm9pZCByODE2OV9nZXRfbGVkX25hbWUoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIGludCBpZHgsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OS5oLTkwLVxcdFxcdFxcdGNoYXIgKmJ1ZiwgaW50IGJ1Zl9sZW4pO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OS5oPTkyPWludCBydGw4MTY4X2xlZF9tb2RfY3RybChzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgdTE2IG1hc2ssIHUxNiB2YWwpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjkuaDo5MzpzdHJ1Y3QgcjgxNjlfbGVkX2NsYXNzZGV2ICpydGw4MTY4X2luaXRfbGVkcyhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OS5oLTk0LWludCBydGw4MTI1X2dldF9sZWRfbW9kZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgaW50IGluZGV4KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5Lmg9OTU9aW50IHJ0bDgxMjVfc2V0X2xlZF9tb2RlKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCBpbnQgaW5kZXgsIHUxNiBtb2RlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5Lmg6OTY6c3RydWN0IHI4MTY5X2xlZF9jbGFzc2RldiAqcnRsODEyNV9pbml0X2xlZHMoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjkuaDo5Nzp2b2lkIHI4MTY5X3JlbW92ZV9sZWRzKHN0cnVjdCByODE2OV9sZWRfY2xhc3NkZXYgKmxlZHMpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9maXJtd2FyZS5jLTEtLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfZmlybXdhcmUuYzoyOi8qIHI4MTY5X2Zpcm13YXJlLmM6IFJlYWxUZWsgODE2OS84MTY4LzgxMDEgZXRoZXJuZXQgZHJpdmVyLlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfZmlybXdhcmUuYy0zLSAqXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2Zpcm13YXJlLmMtMTMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9maXJtd2FyZS5jOjE0OiNpbmNsdWRlIFxcXCJyODE2OV9maXJtd2FyZS5oXFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfZmlybXdhcmUuYy0xNS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfZmlybXdhcmUuaC0xLS8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2Zpcm13YXJlLmg6MjovKiByODE2OV9maXJtd2FyZS5oOiBSZWFsVGVrIDgxNjkvODE2OC84MTAxIGV0aGVybmV0IGRyaXZlci5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2Zpcm13YXJlLmgtMy0gKlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmMtMS0vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmM6MjovKiByODE2OV9sZWRzLmM6IFJlYWx0ZWsgODE2OS84MTY4LzgxMDEvODEyNSBldGhlcm5ldCBkcml2ZXIuXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmMtMy0gKlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmMtMTItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmM6MTM6I2luY2x1ZGUgXFxcInI4MTY5LmhcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmMtMTQtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYy0yOS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYzozMDpzdHJ1Y3QgcjgxNjlfbGVkX2NsYXNzZGV2IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYy0zMS1cXHRzdHJ1Y3QgbGVkX2NsYXNzZGV2IGxlZDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jLTM1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jOjM2OiNkZWZpbmUgbGNkZXZfdG9fcjgxNjlfbGRldihsY2RldikgY29udGFpbmVyX29mKGxjZGV2LCBzdHJ1Y3QgcjgxNjlfbGVkX2NsYXNzZGV2LCBsZWQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmMtMzctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmM6Mzg6c3RhdGljIGJvb2wgcjgxNjlfdHJpZ2dlcl9tb2RlX2lzX3ZhbGlkKHVuc2lnbmVkIGxvbmcgZmxhZ3MpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmMtMzkte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmM9NTM9c3RhdGljIGludCBydGw4MTY4X2xlZF9od19jb250cm9sX2lzX3N1cHBvcnRlZChzdHJ1Y3QgbGVkX2NsYXNzZGV2ICpsZWRfY2RldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jLTU1LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYzo1NjpcXHRzdHJ1Y3QgcjgxNjlfbGVkX2NsYXNzZGV2ICpsZGV2ID0gbGNkZXZfdG9fcjgxNjlfbGRldihsZWRfY2Rldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmMtNTctXFx0c3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAgPSBuZXRkZXZfcHJpdihsZGV2LVxcdTAwM2VuZGV2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jLTU5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jOjYwOlxcdGlmICghcjgxNjlfdHJpZ2dlcl9tb2RlX2lzX3ZhbGlkKGZsYWdzKSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jLTYxLVxcdFxcdC8qIFN3aXRjaCBMRUQgb2ZmIHRvIGluZGljYXRlIHRoYXQgbW9kZSBpc24ndCBzdXBwb3J0ZWQgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jPTY5PXN0YXRpYyBpbnQgcnRsODE2OF9sZWRfaHdfY29udHJvbF9zZXQoc3RydWN0IGxlZF9jbGFzc2RldiAqbGVkX2NkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYy03MS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmM6NzI6XFx0c3RydWN0IHI4MTY5X2xlZF9jbGFzc2RldiAqbGRldiA9IGxjZGV2X3RvX3I4MTY5X2xkZXYobGVkX2NkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jLTczLVxcdHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwID0gbmV0ZGV2X3ByaXYobGRldi1cXHUwMDNlbmRldik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYz04OT1zdGF0aWMgaW50IHJ0bDgxNjhfbGVkX2h3X2NvbnRyb2xfZ2V0KHN0cnVjdCBsZWRfY2xhc3NkZXYgKmxlZF9jZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmMtOTEte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jOjkyOlxcdHN0cnVjdCByODE2OV9sZWRfY2xhc3NkZXYgKmxkZXYgPSBsY2Rldl90b19yODE2OV9sZGV2KGxlZF9jZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYy05My1cXHRzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCA9IG5ldGRldl9wcml2KGxkZXYtXFx1MDAzZW5kZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmM9MTIxPXN0YXRpYyBzdHJ1Y3QgZGV2aWNlICpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYzoxMjI6XFx0cjgxNjlfbGVkX2h3X2NvbnRyb2xfZ2V0X2RldmljZShzdHJ1Y3QgbGVkX2NsYXNzZGV2ICpsZWRfY2RldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYy0xMjMte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jOjEyNDpcXHRzdHJ1Y3QgcjgxNjlfbGVkX2NsYXNzZGV2ICpsZGV2ID0gbGNkZXZfdG9fcjgxNjlfbGRldihsZWRfY2Rldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmMtMTI1LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmMtMTI4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jOjEyOTpzdGF0aWMgdm9pZCBydGw4MTY4X3NldHVwX2xkZXYoc3RydWN0IHI4MTY5X2xlZF9jbGFzc2RldiAqbGRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYy0xMzAtXFx0XFx0XFx0ICAgICAgIHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCBpbnQgaW5kZXgpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYy0xMzgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmM6MTM5OlxcdHI4MTY5X2dldF9sZWRfbmFtZSh0cCwgaW5kZXgsIGxlZF9uYW1lLCBMRURfTUFYX05BTUVfU0laRSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmMtMTQwLVxcdGxlZF9jZGV2LVxcdTAwM2VuYW1lID0gbGVkX25hbWU7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYy0xNDUtXFx0bGVkX2NkZXYtXFx1MDAzZWh3X2NvbnRyb2xfZ2V0ID0gcnRsODE2OF9sZWRfaHdfY29udHJvbF9nZXQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmM6MTQ2OlxcdGxlZF9jZGV2LVxcdTAwM2Vod19jb250cm9sX2dldF9kZXZpY2UgPSByODE2OV9sZWRfaHdfY29udHJvbF9nZXRfZGV2aWNlO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jLTE0Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jLTE1MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYzoxNTI6c3RydWN0IHI4MTY5X2xlZF9jbGFzc2RldiAqcnRsODE2OF9pbml0X2xlZHMoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmMtMTUzLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYzoxNTQ6XFx0c3RydWN0IHI4MTY5X2xlZF9jbGFzc2RldiAqbGVkcztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYy0xNTUtXFx0aW50IGk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYz0xNjc9c3RhdGljIGludCBydGw4MTI1X2xlZF9od19jb250cm9sX2lzX3N1cHBvcnRlZChzdHJ1Y3QgbGVkX2NsYXNzZGV2ICpsZWRfY2RldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jLTE2OS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmM6MTcwOlxcdHN0cnVjdCByODE2OV9sZWRfY2xhc3NkZXYgKmxkZXYgPSBsY2Rldl90b19yODE2OV9sZGV2KGxlZF9jZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYy0xNzEtXFx0c3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAgPSBuZXRkZXZfcHJpdihsZGV2LVxcdTAwM2VuZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYy0xNzItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmM6MTczOlxcdGlmICghcjgxNjlfdHJpZ2dlcl9tb2RlX2lzX3ZhbGlkKGZsYWdzKSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jLTE3NC1cXHRcXHQvKiBTd2l0Y2ggTEVEIG9mZiB0byBpbmRpY2F0ZSB0aGF0IG1vZGUgaXNuJ3Qgc3VwcG9ydGVkICovXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYz0xODI9c3RhdGljIGludCBydGw4MTI1X2xlZF9od19jb250cm9sX3NldChzdHJ1Y3QgbGVkX2NsYXNzZGV2ICpsZWRfY2RldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jLTE4NC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmM6MTg1OlxcdHN0cnVjdCByODE2OV9sZWRfY2xhc3NkZXYgKmxkZXYgPSBsY2Rldl90b19yODE2OV9sZGV2KGxlZF9jZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYy0xODYtXFx0c3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAgPSBuZXRkZXZfcHJpdihsZGV2LVxcdTAwM2VuZGV2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jPTIwMz1zdGF0aWMgaW50IHJ0bDgxMjVfbGVkX2h3X2NvbnRyb2xfZ2V0KHN0cnVjdCBsZWRfY2xhc3NkZXYgKmxlZF9jZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmMtMjA1LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYzoyMDY6XFx0c3RydWN0IHI4MTY5X2xlZF9jbGFzc2RldiAqbGRldiA9IGxjZGV2X3RvX3I4MTY5X2xkZXYobGVkX2NkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jLTIwNy1cXHRzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCA9IG5ldGRldl9wcml2KGxkZXYtXFx1MDAzZW5kZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmMtMjI3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jOjIyODpzdGF0aWMgdm9pZCBydGw4MTI1X3NldHVwX2xlZF9sZGV2KHN0cnVjdCByODE2OV9sZWRfY2xhc3NkZXYgKmxkZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmMtMjI5LVxcdFxcdFxcdFxcdCAgIHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCBpbnQgaW5kZXgpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYy0yMzctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmM6MjM4OlxcdHI4MTY5X2dldF9sZWRfbmFtZSh0cCwgaW5kZXgsIGxlZF9uYW1lLCBMRURfTUFYX05BTUVfU0laRSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmMtMjM5LVxcdGxlZF9jZGV2LVxcdTAwM2VuYW1lID0gbGVkX25hbWU7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYy0yNDQtXFx0bGVkX2NkZXYtXFx1MDAzZWh3X2NvbnRyb2xfZ2V0ID0gcnRsODEyNV9sZWRfaHdfY29udHJvbF9nZXQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmM6MjQ1OlxcdGxlZF9jZGV2LVxcdTAwM2Vod19jb250cm9sX2dldF9kZXZpY2UgPSByODE2OV9sZWRfaHdfY29udHJvbF9nZXRfZGV2aWNlO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jLTI0Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jLTI1MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYzoyNTE6c3RydWN0IHI4MTY5X2xlZF9jbGFzc2RldiAqcnRsODEyNV9pbml0X2xlZHMoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmMtMjUyLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYzoyNTM6XFx0c3RydWN0IHI4MTY5X2xlZF9jbGFzc2RldiAqbGVkcztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYy0yNTQtXFx0aW50IGk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYy0yNjUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmM6MjY2OnZvaWQgcjgxNjlfcmVtb3ZlX2xlZHMoc3RydWN0IHI4MTY5X2xlZF9jbGFzc2RldiAqbGVkcylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYy0yNjcte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmMtMjcwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jOjI3MTpcXHRmb3IgKHN0cnVjdCByODE2OV9sZWRfY2xhc3NkZXYgKmwgPSBsZWRzOyBsLVxcdTAwM2VuZGV2OyBsKyspXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmMtMjcyLVxcdFxcdGxlZF9jbGFzc2Rldl91bnJlZ2lzdGVyKFxcdTAwMjZsLVxcdTAwM2VsZWQpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMi0vKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjM6ICogcjgxNjkuYzogUmVhbFRlayA4MTY5LzgxNjgvODEwMSBldGhlcm5ldCBkcml2ZXIuXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNC0gKlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMzUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MzY6I2luY2x1ZGUgXFxcInI4MTY5LmhcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6Mzc6I2luY2x1ZGUgXFxcInI4MTY5X2Zpcm13YXJlLmhcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMzgtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYz03NjE9c3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy04MDQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6ODA1OlxcdHN0cnVjdCByODE2OV9sZWRfY2xhc3NkZXYgKmxlZHM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtODA2LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM9ODE1PXR5cGVkZWYgdm9pZCAoKnJ0bF9nZW5lcmljX2ZjdCkoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTgxNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzo4MTc6TU9EVUxFX0FVVEhPUihcXFwiUmVhbHRlayBhbmQgdGhlIExpbnV4IHI4MTY5IGNyZXcgXFx1MDAzY25ldGRldkB2Z2VyLmtlcm5lbC5vcmdcXHUwMDNlXFxcIik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtODE4LU1PRFVMRV9ERVNDUklQVElPTihcXFwiUmVhbFRlayBSVEwtODE2OSBHaWdhYml0IEV0aGVybmV0IGRyaXZlclxcXCIpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM9ODgwPXN0YXRpYyB2b2lkIHJ0bF9tb2RfY29uZmlnNShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgdTggY2xlYXIsIHU4IHNldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTg4Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzo4ODg6c3RhdGljIHZvaWQgcjgxNjlfbW9kX3JlZzhfY29uZChzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgaW50IHJlZyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy04ODktXFx0XFx0XFx0XFx0dTggYml0cywgYm9vbCBjb25kKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM9MTAzNz1pbnQgcnRsODEyNV9nZXRfbGVkX21vZGUoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIGludCBpbmRleClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTEwNTMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MTA1NDp2b2lkIHI4MTY5X2dldF9sZWRfbmFtZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgaW50IGlkeCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xMDU1LVxcdFxcdFxcdGNoYXIgKmJ1ZiwgaW50IGJ1Zl9sZW4pXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYz0xMzg3PURFQ0xBUkVfUlRMX0NPTkQocnRsX3BoeWFyX2NvbmQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xMzkxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjEzOTI6c3RhdGljIHZvaWQgcjgxNjlfbWRpb193cml0ZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgaW50IHJlZywgaW50IHZhbHVlKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTEzOTMte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTQwMy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoxNDA0OnN0YXRpYyBpbnQgcjgxNjlfbWRpb19yZWFkKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCBpbnQgcmVnKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTE0MDUte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM9MTQzOT1zdGF0aWMgdm9pZCByODE2OGRwXzJfbWRpb193cml0ZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgaW50IHJlZywgaW50IHZhbHVlKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTQ0Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoxNDQzOlxcdHI4MTY5X21kaW9fd3JpdGUodHAsIHJlZywgdmFsdWUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTE0NDQtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYz0xNDQ4PXN0YXRpYyBpbnQgcjgxNjhkcF8yX21kaW9fcmVhZChzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgaW50IHJlZylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTE0NTctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MTQ1ODpcXHR2YWx1ZSA9IHI4MTY5X21kaW9fcmVhZCh0cCwgcmVnKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xNDU5LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM9MTQ2NT1zdGF0aWMgdm9pZCBydGxfd3JpdGVwaHkoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIGludCBsb2NhdGlvbiwgaW50IHZhbClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTE0NzUtXFx0ZGVmYXVsdDpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoxNDc2OlxcdFxcdHI4MTY5X21kaW9fd3JpdGUodHAsIGxvY2F0aW9uLCB2YWwpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTE0NzctXFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYz0xNDgxPXN0YXRpYyBpbnQgcnRsX3JlYWRwaHkoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIGludCBsb2NhdGlvbilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTE0ODktXFx0ZGVmYXVsdDpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoxNDkwOlxcdFxcdHJldHVybiByODE2OV9tZGlvX3JlYWQodHAsIGxvY2F0aW9uKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xNDkxLVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jPTE3MTA9c3RhdGljIHZvaWQgcnRsX3NldF9kM19wbGxfZG93bihzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgYm9vbCBlbmFibGUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xNzE4LVxcdGNhc2UgUlRMX0dJR0FfTUFDX1ZFUl84MDpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoxNzE5OlxcdFxcdHI4MTY5X21vZF9yZWc4X2NvbmQodHAsIFBNQ0gsIEQzX05PX1BMTF9ET1dOLCB0cnVlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xNzIwLVxcdFxcdGJyZWFrO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTE3MjEtXFx0ZGVmYXVsdDpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoxNzIyOlxcdFxcdHI4MTY5X21vZF9yZWc4X2NvbmQodHAsIFBNQ0gsIEQzSE9UX05PX1BMTF9ET1dOLCB0cnVlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoxNzIzOlxcdFxcdHI4MTY5X21vZF9yZWc4X2NvbmQodHAsIFBNQ0gsIEQzQ09MRF9OT19QTExfRE9XTiwgIWVuYWJsZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTcyNC1cXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jPTE4MzA9c3RhdGljIHZvaWQgX19ydGw4MTY5X3NldF93b2woc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIHUzMiB3b2xvcHRzKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTg0NC1cXHR9IGVsc2Uge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjE4NDU6XFx0XFx0cjgxNjlfbW9kX3JlZzhfY29uZCh0cCwgQ29uZmlnMywgTWFnaWNQYWNrZXQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTg0Ni1cXHRcXHRcXHRcXHQgICAgd29sb3B0cyBcXHUwMDI2IFdBS0VfTUFHSUMpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTg0OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoxODQ5OlxcdHI4MTY5X21vZF9yZWc4X2NvbmQodHAsIENvbmZpZzMsIExpbmtVcCwgd29sb3B0cyBcXHUwMDI2IFdBS0VfUEhZKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xODUwLVxcdGlmIChydGxfaXNfODEyNSh0cCkpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xODUyLVxcdFxcdFxcdFxcdCAgICAgd29sb3B0cyBcXHUwMDI2IFdBS0VfUEhZID8gMHgxMyA6IDApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjE4NTM6XFx0cjgxNjlfbW9kX3JlZzhfY29uZCh0cCwgQ29uZmlnNSwgVVdGLCB3b2xvcHRzIFxcdTAwMjYgV0FLRV9VQ0FTVCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MTg1NDpcXHRyODE2OV9tb2RfcmVnOF9jb25kKHRwLCBDb25maWc1LCBCV0YsIHdvbG9wdHMgXFx1MDAyNiBXQUtFX0JDQVNUKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoxODU1OlxcdHI4MTY5X21vZF9yZWc4X2NvbmQodHAsIENvbmZpZzUsIE1XRiwgd29sb3B0cyBcXHUwMDI2IFdBS0VfTUNBU1QpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjE4NTY6XFx0cjgxNjlfbW9kX3JlZzhfY29uZCh0cCwgQ29uZmlnNSwgTGFuV2FrZSwgd29sb3B0cyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTg1Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTE4NTktXFx0Y2FzZSBSVExfR0lHQV9NQUNfVkVSXzAyIC4uLiBSVExfR0lHQV9NQUNfVkVSXzA2OlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjE4NjA6XFx0XFx0cjgxNjlfbW9kX3JlZzhfY29uZCh0cCwgQ29uZmlnMSwgUE1FbmFibGUsIHdvbG9wdHMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTE4NjEtXFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xODY0LVxcdGNhc2UgUlRMX0dJR0FfTUFDX1ZFUl8zOSAuLi4gUlRMX0dJR0FfTUFDX1ZFUl9MQVNUOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjE4NjU6XFx0XFx0cjgxNjlfbW9kX3JlZzhfY29uZCh0cCwgQ29uZmlnMiwgUE1FX1NJR05BTCwgd29sb3B0cyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTg2Ni1cXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jPTIzMjY9c3RhdGljIHZvaWQgcnRsX3NldF9lZWVfdHhpZGxlX3RpbWVyKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMjM0NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoyMzQ1OnN0YXRpYyB1bnNpZ25lZCBpbnQgcjgxNjlfZ2V0X3R4X2xwaV90aW1lcl91cyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0yMzQ2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jPTIzNTc9c3RhdGljIGludCBydGw4MTY5X2dldF9lZWUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IGV0aHRvb2xfa2VlZSAqZGF0YSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTIzNjgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MjM2OTpcXHRkYXRhLVxcdTAwM2V0eF9scGlfdGltZXIgPSByODE2OV9nZXRfdHhfbHBpX3RpbWVyX3VzKHRwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0yMzcwLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM9MjU3Nj1zdGF0aWMgdm9pZCBydGxfcmVsZWFzZV9maXJtd2FyZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTI1ODQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MjU4NTp2b2lkIHI4MTY5X2FwcGx5X2Zpcm13YXJlKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTI1ODYte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM9MjYzND1zdGF0aWMgdm9pZCBydGw4MTY5X2luaXRfcGh5KHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMjYzNy1cXHRwaHlfcmVzdW1lKHRwLVxcdTAwM2VwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjI2Mzg6XFx0cjgxNjlfaHdfcGh5X2NvbmZpZyh0cCwgdHAtXFx1MDAzZXBoeWRldiwgdHAtXFx1MDAzZW1hY192ZXJzaW9uKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0yNjM5LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM9MjcyMT1zdGF0aWMgdm9pZCBydGxfanVtYm9fY29uZmlnKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMjczMi1cXHRjYXNlIFJUTF9HSUdBX01BQ19WRVJfMTc6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MjczMzpcXHRcXHRyODE2OV9tb2RfcmVnOF9jb25kKHRwLCBDb25maWc0LCBCSVQoMCksIGp1bWJvKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0yNzM0LVxcdFxcdGJyZWFrO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTI3MzUtXFx0Y2FzZSBSVExfR0lHQV9NQUNfVkVSXzE4IC4uLiBSVExfR0lHQV9NQUNfVkVSXzI2OlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjI3MzY6XFx0XFx0cjgxNjlfbW9kX3JlZzhfY29uZCh0cCwgQ29uZmlnMywgSnVtYm9fRW4wLCBqdW1ibyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MjczNzpcXHRcXHRyODE2OV9tb2RfcmVnOF9jb25kKHRwLCBDb25maWc0LCBKdW1ib19FbjEsIGp1bWJvKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0yNzM4LVxcdFxcdGJyZWFrO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTI3MzktXFx0Y2FzZSBSVExfR0lHQV9NQUNfVkVSXzI4OlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjI3NDA6XFx0XFx0cjgxNjlfbW9kX3JlZzhfY29uZCh0cCwgQ29uZmlnMywgSnVtYm9fRW4wLCBqdW1ibyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMjc0MS1cXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTI3NDMtXFx0XFx0UlRMX1c4KHRwLCBNYXhUeFBhY2tldFNpemUsIGp1bWJvID8gMHgyNCA6IDB4M2YpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjI3NDQ6XFx0XFx0cjgxNjlfbW9kX3JlZzhfY29uZCh0cCwgQ29uZmlnMywgSnVtYm9fRW4wLCBqdW1ibyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6Mjc0NTpcXHRcXHRyODE2OV9tb2RfcmVnOF9jb25kKHRwLCBDb25maWc0LCBCSVQoMCksIGp1bWJvKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0yNzQ2LVxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM9MzgwMT1zdGF0aWMgdm9pZCBydGxfaHdfc3RhcnRfODExNyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTM4NjAtXFx0LyogZmlybXdhcmUgaXMgZm9yIE1BQyBvbmx5ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6Mzg2MTpcXHRyODE2OV9hcHBseV9maXJtd2FyZSh0cCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMzg2Mi19XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYz01MDk1PXN0YXRpYyB2b2lkIHJ0bF9lbmFibGVfdHhfbHBpKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCBib29sIGVuYWJsZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTUxMjYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6NTEyNzpzdGF0aWMgaW50IHI4MTY5X3BoeV9jb25uZWN0KHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTUxMjgte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM9NTIxNz1zdGF0aWMgaW50IHJ0bF9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy01MjUxLVxcdGlmICh0cC1cXHUwMDNlcGh5ZGV2KSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6NTI1MjpcXHRcXHRyZXR2YWwgPSByODE2OV9waHlfY29ubmVjdCh0cCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNTI1My1cXHRcXHRpZiAocmV0dmFsKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM9NTQxOT1zdGF0aWMgdm9pZCBydGxfcmVtb3ZlX29uZShzdHJ1Y3QgcGNpX2RldiAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTU0MjgtXFx0aWYgKElTX0VOQUJMRUQoQ09ORklHX1I4MTY5X0xFRFMpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjU0Mjk6XFx0XFx0cjgxNjlfcmVtb3ZlX2xlZHModHAtXFx1MDAzZWxlZHMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTU0MzAtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYz01NTEzPXN0YXRpYyB2b2lkIHI4MTY4Z193YWl0X2xsX3NoYXJlX2ZpZm9fcmVhZHkoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy01NTE3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjU1MTg6c3RhdGljIGludCByODE2OV9tZGlvX3JlYWRfcmVnKHN0cnVjdCBtaWlfYnVzICptaWlfYnVzLCBpbnQgcGh5YWRkciwgaW50IHBoeXJlZylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy01NTE5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTU1MjctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6NTUyODpzdGF0aWMgaW50IHI4MTY5X21kaW9fd3JpdGVfcmVnKHN0cnVjdCBtaWlfYnVzICptaWlfYnVzLCBpbnQgcGh5YWRkcixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy01NTI5LVxcdFxcdFxcdFxcdGludCBwaHlyZWcsIHUxNiB2YWwpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy01NTQwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjU1NDE6c3RhdGljIGludCByODE2OV9tZGlvX3JlYWRfcmVnX2M0NShzdHJ1Y3QgbWlpX2J1cyAqbWlpX2J1cywgaW50IGFkZHIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNTU0Mi1cXHRcXHRcXHRcXHQgICBpbnQgZGV2bnVtLCBpbnQgcmVnbnVtKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNTU1NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzo1NTU1OnN0YXRpYyBpbnQgcjgxNjlfbWRpb193cml0ZV9yZWdfYzQ1KHN0cnVjdCBtaWlfYnVzICptaWlfYnVzLCBpbnQgYWRkcixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy01NTU2LVxcdFxcdFxcdFxcdCAgICBpbnQgZGV2bnVtLCBpbnQgcmVnbnVtLCB1MTYgdmFsKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNTU2Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzo1NTY4OnN0YXRpYyBpbnQgcjgxNjlfbWRpb19yZWdpc3RlcihzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy01NTY5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTU1ODAtXFx0ICAgIHRwLVxcdTAwM2VtYWNfdmVyc2lvbiA9PSBSVExfR0lHQV9NQUNfVkVSXzI2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjU1ODE6XFx0XFx0cjgxNjlfbWRpb193cml0ZSh0cCwgMHgxZiwgMCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNTU4Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTU1ODYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6NTU4NzpcXHRuZXdfYnVzLVxcdTAwM2VuYW1lID0gXFxcInI4MTY5XFxcIjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy01NTg4LVxcdG5ld19idXMtXFx1MDAzZXByaXYgPSB0cDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTU1OTEtXFx0bmV3X2J1cy1cXHUwMDNlcGh5X21hc2sgPSBHRU5NQVNLKDMxLCAxKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzo1NTkyOlxcdHNucHJpbnRmKG5ld19idXMtXFx1MDAzZWlkLCBNSUlfQlVTX0lEX1NJWkUsIFxcXCJyODE2OS0leC0leFxcXCIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNTU5My1cXHRcXHQgcGNpX2RvbWFpbl9ucihwZGV2LVxcdTAwM2VidXMpLCBwY2lfZGV2X2lkKHBkZXYpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy01NTk0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjU1OTU6XFx0bmV3X2J1cy1cXHUwMDNlcmVhZCA9IHI4MTY5X21kaW9fcmVhZF9yZWc7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6NTU5NjpcXHRuZXdfYnVzLVxcdTAwM2V3cml0ZSA9IHI4MTY5X21kaW9fd3JpdGVfcmVnO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTU1OTctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNTU5OC1cXHRpZiAodHAtXFx1MDAzZW1hY192ZXJzaW9uIFxcdTAwM2U9IFJUTF9HSUdBX01BQ19WRVJfNDApIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzo1NTk5OlxcdFxcdG5ld19idXMtXFx1MDAzZXJlYWRfYzQ1ID0gcjgxNjlfbWRpb19yZWFkX3JlZ19jNDU7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6NTYwMDpcXHRcXHRuZXdfYnVzLVxcdTAwM2V3cml0ZV9jNDUgPSByODE2OV9tZGlvX3dyaXRlX3JlZ19jNDU7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNTYwMS1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYz01ODc5PXN0YXRpYyB1bnNpZ25lZCBsb25nIHJ0bDgxNjlfZ2V0X2xwaV9jYXBzKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNTkwMC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzo1OTAxOnN0YXRpYyBjb25zdCBzdHJ1Y3QgcGh5bGlua19wY3Nfb3BzIHI4MTY5X3Bjc19vcHMgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNTkwMi1cXHQucGNzX3ZhbGlkYXRlID0gcnRsODE2OV9wY3NfdmFsaWRhdGUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYz01OTA4PXN0YXRpYyBpbnQgcnRsX2luaXRfcGh5bGluayhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTU5MjAtXFx0Y2FzZSBSVExfU0ZQXzgxNjhfQUY6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6NTkyMTpcXHRcXHR0cC1cXHUwMDNlcGNzLm9wcyA9IFxcdTAwMjZyODE2OV9wY3Nfb3BzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTU5MjItXFx0XFx0dHAtXFx1MDAzZXBoeWxpbmtfY29uZmlnLmRlZmF1bHRfYW5faW5iYW5kID0gdHJ1ZTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTU5MjYtXFx0Y2FzZSBSVExfU0ZQXzgxMjdfQVRGOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjU5Mjc6XFx0XFx0dHAtXFx1MDAzZXBjcy5vcHMgPSBcXHUwMDI2cjgxNjlfcGNzX29wcztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy01OTI4LVxcdFxcdHBoeV9tb2RlID0gUEhZX0lOVEVSRkFDRV9NT0RFXzEwR0JBU0VSO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM9NTk3MD1zdGF0aWMgaW50IHJ0bF9pbml0X29uZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTYwMzMtXFx0XFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgLUVOT0RFVixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzo2MDM0OlxcdFxcdFxcdFxcdCAgICAgXFxcInVua25vd24gY2hpcCAlc1hJRCAleCwgY29udGFjdCByODE2OSBtYWludGFpbmVycyAoc2VlIE1BSU5UQUlORVJTIGZpbGUpXFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTYwMzUtXFx0XFx0XFx0XFx0ICAgICBleHRfeGlkX3N0ciwgeGlkKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTYxNTktXFx0aWYgKHRwLVxcdTAwM2VzZnBfbW9kZSA9PSBSVExfU0ZQX05PTkUpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzo2MTYwOlxcdFxcdHJjID0gcjgxNjlfbWRpb19yZWdpc3Rlcih0cCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNjE2MS1cXHRcXHRpZiAocmMpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfcGh5X2NvbmZpZy5jLTItLypcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X3BoeV9jb25maWcuYzozOiAqIHI4MTY5X3BoeV9jb25maWcuYzogUmVhbFRlayA4MTY5LzgxNjgvODEwMSBldGhlcm5ldCBkcml2ZXIuXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9waHlfY29uZmlnLmMtNC0gKlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9waHlfY29uZmlnLmMtMTQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9waHlfY29uZmlnLmM6MTU6I2luY2x1ZGUgXFxcInI4MTY5LmhcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9waHlfY29uZmlnLmMtMTYtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X3BoeV9jb25maWcuYz00MzI9c3RhdGljIHZvaWQgcnRsODE2OGRfYXBwbHlfZmlybXdhcmVfY29uZChzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfcGh5X2NvbmZpZy5jLTQ0NS1cXHRlbHNlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9waHlfY29uZmlnLmM6NDQ2OlxcdFxcdHI4MTY5X2FwcGx5X2Zpcm13YXJlKHRwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X3BoeV9jb25maWcuYy00NDctfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9waHlfY29uZmlnLmM9NTM4PXN0YXRpYyB2b2lkIHJ0bDgxNjhlXzFfaHdfcGh5X2NvbmZpZyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfcGh5X2NvbmZpZy5jLTU1MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X3BoeV9jb25maWcuYzo1NTI6XFx0cjgxNjlfYXBwbHlfZmlybXdhcmUodHApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfcGh5X2NvbmZpZy5jLTU1My1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfcGh5X2NvbmZpZy5jPTU4Mz1zdGF0aWMgdm9pZCBydGw4MTY4ZV8yX2h3X3BoeV9jb25maWcoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X3BoeV9jb25maWcuYy01ODUte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfcGh5X2NvbmZpZy5jOjU4NjpcXHRyODE2OV9hcHBseV9maXJtd2FyZSh0cCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9waHlfY29uZmlnLmMtNTg3LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9waHlfY29uZmlnLmM9NjQxPXN0YXRpYyB2b2lkIHJ0bDgxNjhmXzFfaHdfcGh5X2NvbmZpZyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfcGh5X2NvbmZpZy5jLTY0My17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9waHlfY29uZmlnLmM6NjQ0OlxcdHI4MTY5X2FwcGx5X2Zpcm13YXJlKHRwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X3BoeV9jb25maWcuYy02NDUtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X3BoeV9jb25maWcuYz02Njk9c3RhdGljIHZvaWQgcnRsODE2OGZfMl9od19waHlfY29uZmlnKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9waHlfY29uZmlnLmMtNjcxLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X3BoeV9jb25maWcuYzo2NzI6XFx0cjgxNjlfYXBwbHlfZmlybXdhcmUodHApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfcGh5X2NvbmZpZy5jLTY3My1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfcGh5X2NvbmZpZy5jPTY3Nz1zdGF0aWMgdm9pZCBydGw4NDExX2h3X3BoeV9jb25maWcoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X3BoeV9jb25maWcuYy02Nzkte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfcGh5X2NvbmZpZy5jOjY4MDpcXHRyODE2OV9hcHBseV9maXJtd2FyZSh0cCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9waHlfY29uZmlnLmMtNjgxLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9waHlfY29uZmlnLmM9NzQxPXN0YXRpYyB2b2lkIHJ0bDgxNjhnXzFfaHdfcGh5X2NvbmZpZyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfcGh5X2NvbmZpZy5jLTc0NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X3BoeV9jb25maWcuYzo3NDY6XFx0cjgxNjlfYXBwbHlfZmlybXdhcmUodHApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfcGh5X2NvbmZpZy5jLTc0Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfcGh5X2NvbmZpZy5jPTc4OT1zdGF0aWMgdm9pZCBydGw4MTY4Z18yX2h3X3BoeV9jb25maWcoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X3BoeV9jb25maWcuYy03OTEte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfcGh5X2NvbmZpZy5jOjc5MjpcXHRyODE2OV9hcHBseV9maXJtd2FyZSh0cCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9waHlfY29uZmlnLmMtNzkzLVxcdHJ0bDgxNjhnX2NvbmZpZ19lZWVfcGh5KHBoeWRldik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X3BoeV9jb25maWcuYz03OTY9c3RhdGljIHZvaWQgcnRsODE2OGhfMl9od19waHlfY29uZmlnKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9waHlfY29uZmlnLmMtODAxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfcGh5X2NvbmZpZy5jOjgwMjpcXHRyODE2OV9hcHBseV9maXJtd2FyZSh0cCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9waHlfY29uZmlnLmMtODAzLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9waHlfY29uZmlnLmM9OTQ3PXN0YXRpYyB2b2lkIHJ0bDgxMDVlX2h3X3BoeV9jb25maWcoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X3BoeV9jb25maWcuYy05NTMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9waHlfY29uZmlnLmM6OTU0OlxcdHI4MTY5X2FwcGx5X2Zpcm13YXJlKHRwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X3BoeV9jb25maWcuYy05NTUtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X3BoeV9jb25maWcuYz05NjE9c3RhdGljIHZvaWQgcnRsODQwMl9od19waHlfY29uZmlnKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9waHlfY29uZmlnLmMtOTY3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfcGh5X2NvbmZpZy5jOjk2ODpcXHRyODE2OV9hcHBseV9maXJtd2FyZSh0cCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9waHlfY29uZmlnLmMtOTY5LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9waHlfY29uZmlnLmM9OTc3PXN0YXRpYyB2b2lkIHJ0bDgxMDZlX2h3X3BoeV9jb25maWcoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X3BoeV9jb25maWcuYy05OTAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9waHlfY29uZmlnLmM6OTkxOlxcdHI4MTY5X2FwcGx5X2Zpcm13YXJlKHRwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X3BoeV9jb25maWcuYy05OTItXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X3BoeV9jb25maWcuYz0xMDAxPXN0YXRpYyB2b2lkIHJ0bDgxMjVhXzJfaHdfcGh5X2NvbmZpZyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfcGh5X2NvbmZpZy5jLTEwNDUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9waHlfY29uZmlnLmM6MTA0NjpcXHRyODE2OV9hcHBseV9maXJtd2FyZSh0cCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9waHlfY29uZmlnLmMtMTA0Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfcGh5X2NvbmZpZy5jPTEwNjM9c3RhdGljIHZvaWQgcnRsODEyNWJfaHdfcGh5X2NvbmZpZyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfcGh5X2NvbmZpZy5jLTEwNjUte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfcGh5X2NvbmZpZy5jOjEwNjY6XFx0cjgxNjlfYXBwbHlfZmlybXdhcmUodHApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfcGh5X2NvbmZpZy5jLTEwNjctXFx0cnRsODE2OGdfZW5hYmxlX2dwaHlfMTBtKHBoeWRldik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X3BoeV9jb25maWcuYz0xMDk4PXN0YXRpYyB2b2lkIHJ0bDgxMjVkX2h3X3BoeV9jb25maWcoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsXFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDE2OjM0OjU5Ljk1Mjg4MDgxNFoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEyNDEyMjUzNzAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgdGhlIHI4MTY5IERyaXZlciB3aXRoIHN5el9wY2kqKlxuXG5Pa2F5LCBzbyB3ZSdyZSBsb29raW5nIGF0IGZ1enppbmcgdGhlIGByODE2OWAgZHJpdmVyLCB3aGljaCBpcyBhIFBDSSBkcml2ZXIsIHVzaW5nIGBzeXpfcGNpYC4gIFN5emthbGxlcidzIGBzeXpfcGNpYCBwc2V1ZG8tZGV2aWNlIGlzIHRoZSBrZXkgaGVyZS4gVGhlIHF1ZXN0aW9uIGlzLCBpcyB0aGlzIHBhdGNoIGZ1enotd29ydGh5PyAgWWVzLCBpdCBzZWVtcyB0byBiZSEgVGhpcyBwYXRjaCBpbnZvbHZlcyBzaWduaWZpY2FudCBjaGFuZ2VzLCBzcGVjaWZpY2FsbHkgdGhlIGFkb3B0aW9uIG9mIGBwaHlsaW5rYCBieSB0aGUgYHI4MTY5YCBkcml2ZXIgYW5kIHRoZSBhZGRpdGlvbiBvZiBgcGh5bGlua19zZXRfbWFjX2NhcGFiaWxpdGllc2AgdG8gYHBoeWxpbmsuY2AuXG5cblJpZ2h0LCBsZXQncyBkaXZlIGludG8gdGhlIGRldGFpbHMuIEkgbmVlZCB0byBpZGVudGlmeSB3aGljaCBmdW5jdGlvbnMgYXJlIGJlaW5nIG1vZGlmaWVkIG9yIGFkZGVkLiBMZXQncyBzZWUuLi4gaW4gYGRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jYCB0aGVyZSdzIHF1aXRlIGEgbGlzdDogYHI4MTI3X3Nkc19yZWFkYCwgYHI4MTI3X3Nkc193cml0ZWAsIGByODEyN19zZHNfbW9kaWZ5YCwgYHI4MTI3X3NmcF9pbml0XzFnYCwgYHI4MTI3X3NmcF9pbml0XzEwZ2AsIGBydGxfaXNfODExNmFmYCwgYHJ0bF9nZXRfc2ZwX21vZGVgLCBgcnRsX2xpbmtfY2hnX3BhdGNoYCwgYHJ0bDgxNjlfZ2V0X2xpbmtfa3NldHRpbmdzYCwgYHJ0bDgxNjlfc2V0X2xpbmtfa3NldHRpbmdzYCwgYHJ0bDgxNjlfbndheV9yZXNldGAsIGBydGw4MTY5X2lvY3RsYCwgYHJ0bF9sb3dwb3dlcl9oaWRkZW5fZnVuY3Rpb25zYCwgYHJ0bDgxNjlfY2hhbmdlX210dWAsIGBydGxfbWFjX2xpbmtfZG93bmAsIGBydGxfbWFjX2xpbmtfdXBgLCBgcnRsX21hY19zZWxlY3RfcGNzYCwgYHJ0bF9tYWNfY29uZmlnYCwgYHJ0bDgxNjlfc2RzX3JlYWRgLCBgcnRsODE2OV9wY3NfZ2V0X3N0YXRlYCwgYHJ0bDgxNjlfcGNzX2NvbmZpZ2AsIGBydGw4MTY5X3Bjc192YWxpZGF0ZWAsIGBydGw4MTY5X3Bjc19hbl9yZXN0YXJ0YCwgYHJ0bF9tYWNfZGlzYWJsZV90eF9scGlgLCBgcnRsX21hY19lbmFibGVfdHhfbHBpYCwgYHJ0bDgxNjlfZ2V0X2xwaV9jYXBzYCwgYW5kIGBydGxfaW5pdF9waHlsaW5rYC4gQW5kIGluIGBkcml2ZXJzL25ldC9waHkvcGh5bGluay5jYCwgd2UgaGF2ZSBgcGh5bGlua19zZXRfbWFjX2NhcGFiaWxpdGllc2AuXG5cbk5leHQsIEkgbmVlZCB0byBjaGVjayBpZiBgQ09ORklHX1I4MTY5YCBpcyBlbmFibGVkIGJ5IGRlZmF1bHQuICBJdCdzIHByb2JhYmx5IGVuYWJsZWQsIGJlaW5nIGEgY29tbW9uIG5ldHdvcmsgZHJpdmVyLCBidXQgbGV0J3MgYmUgdGhvcm91Z2ggYW5kIGxpc3QgaXQgYW55d2F5LiBXYWl0LCBzY3JhdGNoIHRoYXQuIFRoZSBpbnN0cnVjdGlvbnMgYXJlIHRvIGxpc3Qgb25seSBzcGVjaWZpYyBjb25maWdzIHRoYXQgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUsIGFuZCAqbm90KiBpbmNsdWRlIHRoZSBcIkNPTkZJR19cIiBwcmVmaXguIEdvdCBpdC4gU28sIGBSODE2OWAgZ29lcyBpbnRvIGBFbmFibGVDb25maWdzYCBhbmQgYFBIWUxJTktgIGFzIHdlbGwsIGJlY2F1c2UgYFI4MTY5YCBub3cgc2VsZWN0cyBpdC5cblxuT2theSwgbGV0J3MgZmlndXJlIG91dCB3aGF0IHN5bWJvbHMgdG8gZm9jdXMgb24gZm9yIGZ1enppbmcuIFdlIHdhbnQgdGhlIG5ldyBvciBzaWduaWZpY2FudGx5IG1vZGlmaWVkIGZ1bmN0aW9ucy4gIEFscmlnaHQsIGxldCdzIHNlZS4uLiAgV2Ugc2hvdWxkIGZvY3VzIG9uOiBgcGh5bGlua19zZXRfbWFjX2NhcGFiaWxpdGllc2AsIGBydGxfaW5pdF9waHlsaW5rYCwgYHJ0bDgxNjlfcGNzX2NvbmZpZ2AsIGBydGw4MTY5X3Bjc19nZXRfc3RhdGVgLCBgcnRsX21hY19saW5rX3VwYCwgYHJ0bF9tYWNfbGlua19kb3duYCwgYHJ0bF9tYWNfc2VsZWN0X3Bjc2AsIGBydGxfbWFjX2Rpc2FibGVfdHhfbHBpYCwgYHJ0bF9tYWNfZW5hYmxlX3R4X2xwaWAsIGBydGw4MTY5X2NoYW5nZV9tdHVgLCBgcnRsX2xvd3Bvd2VyX2hpZGRlbl9mdW5jdGlvbnNgLCBgcjgxMjdfc2ZwX2luaXRfMWdgLCBgcjgxMjdfc2ZwX2luaXRfMTBnYCwgYW5kIGBydGw4MTY5X2lvY3RsYC5cblxuTm93LCBpcyBgcGh5bGlua19zZXRfbWFjX2NhcGFiaWxpdGllc2AgZXhwb3J0ZWQ/IFllcywgaXQgaXMhICBgRVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19zZXRfbWFjX2NhcGFiaWxpdGllcyk7YCBjb25maXJtcyBpdC4gQW5kLCBsZXQncyBjaGVjayBgcnRsODE2OV9jaGFuZ2VfbXR1YCAtIHllcCwgaXQncyBiZWVuIG1vZGlmaWVkIHRvIGNhbGwgYHBoeWxpbmtfc2V0X21hY19jYXBhYmlsaXRpZXNgLlxuXG5GaW5hbGx5LCBhIHF1aWNrIGNvZGUgc2VhcmNoIHRvIHZlcmlmeSBldmVyeXRoaW5nLiBNYWtlcyBzZW5zZSFcblxuXG4iLCJJbnB1dFRva2VucyI6MzY2NTksIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5ODQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMTY6MzU6MTIuMzY1MTM4ODA0WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExNDk4ODQ5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwaHlsaW5rX3NldF9tYWNfY2FwYWJpbGl0aWVzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0xODI5PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfc2V0X2ZpeGVkX2xpbmspO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xODMxLS8qKlxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTgzMjogKiBwaHlsaW5rX3NldF9tYWNfY2FwYWJpbGl0aWVzKCkgLSBEeW5hbWljYWxseSB1cGRhdGUgTUFDIGNhcGFiaWxpdGllc1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTgzMy0gKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTgzOS0gKi9cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjE4NDA6dm9pZCBwaHlsaW5rX3NldF9tYWNfY2FwYWJpbGl0aWVzKHN0cnVjdCBwaHlsaW5rICpwbCwgdW5zaWduZWQgbG9uZyBtYWNfY2FwYWJpbGl0aWVzKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTg0MS17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE4OTQtfVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTg5NTpFWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX3NldF9tYWNfY2FwYWJpbGl0aWVzKTtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE4OTYtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDE2OjM1OjEyLjQ4MDEzNDI0NFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjgxNDYzNDAzMjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGl2aW5nIGludG8gdGhlIFJlYWx0ZWsgUEhZIEluaXRpYWxpemF0aW9uKipcblxuT2theSwgdGltZSB0byBnZXQgdG8gdGhlIGhlYXJ0IG9mIHRoaXMgUmVhbHRlayBpc3N1ZS4gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiBob3cgdGhpcyBQSFkgaXMgaW5pdGlhbGl6ZWQsIHNvIEknbSBoZWFkaW5nIHN0cmFpZ2h0IGZvciBgcnRsX2luaXRfcGh5bGlua2AuIEknbSBnb2luZyB0byBuYXZpZ2F0ZSB0byBgZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmNgLiBUaGF0J3Mgd2hlcmUgSSBleHBlY3QgdG8gZmluZCB0aGUgbG93LWxldmVsIFBIWSBpbnRlcmFjdGlvbiBsb2dpYy4gU3BlY2lmaWNhbGx5LCBgcnRsX2luaXRfcGh5bGlua2AgbGlrZWx5IGhhbmRsZXMgdGhlIFBIWSdzIGluaXRpYWwgc2V0dXAgYW5kIGNvbmZpZ3VyYXRpb24sIGluY2x1ZGluZyBwb3RlbnRpYWxseSBhdXRvbmVnb3RpYXRpb24gYW5kIGxpbmsgc3BlZWQvZHVwbGV4IHNldHRpbmcuIEknbSBob3BpbmcgSSBjYW4gZ2xlYW4gaW5mb3JtYXRpb24gZnJvbSB0aGVyZSB0aGF0IGhlbHBzIG1lIGdldCB0byB0aGUgYm90dG9tIG9mIHRoZSBwcm9ibGVtLiBUaW1lIHRvIHNlZSB3aGF0J3MgZ29pbmcgb24gdW5kZXIgdGhlIGhvb2QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM4ODk4LCJPdXRwdXRUb2tlbnMiOjQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMTY6MzU6MjAuNjI2NDc2ODM4WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTYxNTAwMjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicnRsX2luaXRfcGh5bGlua1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYz01OTAxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGh5bGlua19wY3Nfb3BzIHI4MTY5X3Bjc19vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy01OTA3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjU5MDg6c3RhdGljIGludCBydGxfaW5pdF9waHlsaW5rKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTU5MDkte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM9NTk3MD1zdGF0aWMgaW50IHJ0bF9pbml0X29uZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTYxNTQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6NjE1NTpcXHRyYyA9IHJ0bF9pbml0X3BoeWxpbmsodHApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTYxNTYtXFx0aWYgKHJjKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QxNjozNToyMC43NDI2MzQ2MTdaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTAyMTQxMTk5ODYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBUYXJnZXQgSWRlbnRpZmljYXRpb246IHI4MTY5IERyaXZlciBhbmQgcGh5bGluayBGcmFtZXdvcmsqKlxuXG5BbHJpZ2h0LCBsZXQncyBicmVhayB0aGlzIGRvd24uIFRoaXMgcGF0Y2ggaXMgZGVmaW5pdGVseSBzaWduaWZpY2FudDsgaXQncyBnb3Qgc29tZSByZWFsIGZ1bmN0aW9uYWwgY2hhbmdlcyBoYXBwZW5pbmcgaW4gdGhlIGByODE2OWAgZHJpdmVyIGFuZCB0aGUgYHBoeWxpbmtgIGZyYW1ld29yay4gU3BlY2lmaWNhbGx5LCB0aGlzIG1vdmUgZnJvbSBgcGh5bGliYCB0byBgcGh5bGlua2AsIGFsb25nc2lkZSB0aGUgYWRkaXRpb24gb2YgZHluYW1pYyBNQUMgY2FwYWJpbGl0aWVzIHVwZGF0ZXMgd2l0aGluIGBwaHlsaW5rYCwgc2hvdXRzIFwiZnV6eiBtZSFcIlxuXG5JJ3ZlIHNjb3BlZCBvdXQgdGhlIGtleSBmdW5jdGlvbnMgdG8gdGFyZ2V0LiBIZXJlJ3Mgd2hhdCBJJ20gdGhpbmtpbmc6XG5cbiogICBgcGh5bGlua19zZXRfbWFjX2NhcGFiaWxpdGllc2AgLSB0aGlzIGlzIGdvaW5nIHRvIGJlIGludGVyZXN0aW5nLCBlc3BlY2lhbGx5IHdpdGggZHluYW1pYyB1cGRhdGVzLlxuKiAgIGBydGxfaW5pdF9waHlsaW5rYFxuKiAgIGBydGw4MTY5X3Bjc19jb25maWdgXG4qICAgYHJ0bDgxNjlfcGNzX2dldF9zdGF0ZWAgLSBNaWdodCBiZSB3b3J0aCBoaXR0aW5nIHdpdGggYSBzdGF0ZS1hd2FyZSBmdXp6ZXIsIHNpbmNlIGl0J3MgbGlrZWx5IGNhbGxlZCBwZXJpb2RpY2FsbHkuXG4qICAgYHJ0bF9tYWNfbGlua191cGBcbiogICBgcnRsX21hY19saW5rX2Rvd25gXG4qICAgYHJ0bF9tYWNfc2VsZWN0X3Bjc2BcbiogICBgcnRsX21hY19kaXNhYmxlX3R4X2xwaWBcbiogICBgcnRsX21hY19lbmFibGVfdHhfbHBpYFxuKiAgIGBydGw4MTY5X2NoYW5nZV9tdHVgIC0gTGV0J3Mgc2VlIGlmIHdlIGNhbiB0cmlnZ2VyIHNvbWUgaW50ZXJlc3RpbmcgZWRnZSBjYXNlcyB0aHJvdWdoIE1UVSBtYW5pcHVsYXRpb24uXG4qICAgYHJ0bF9sb3dwb3dlcl9oaWRkZW5fZnVuY3Rpb25zYCAtIFdvcnRoIGRpZ2dpbmcgaW50byB0aGUgbG9naWMgaW4gdGhlc2UgbG93LXBvd2VyIGZ1bmN0aW9ucy5cbiogICBgcjgxMjdfc2ZwX2luaXRfMWdgIC0gSSdtIGludGVyZXN0ZWQgaW4gaG93IHRoaXMgZGVhbHMgd2l0aCAxRy5cbiogICBgcjgxMjdfc2ZwX2luaXRfMTBnYCAtIFNpbWlsYXJseSwgd29ydGggY2hlY2tpbmcgdGhlIDEwRyBpbXBsZW1lbnRhdGlvbi5cbiogICBgcnRsODE2OV9pb2N0bGAgLSBUaGlzIHdpbGwgbGlrZWx5IGJlIGZydWl0ZnVsIVxuXG5Db25maWctd2lzZSwgYFI4MTY5YCBpcyBvdXIgcHJpbWFyeSBmb2N1cyBzaW5jZSBpdCBzZWxlY3RzIGBQSFlMSU5LYC4gRW5hYmxpbmcgYFI4MTY5YCBzaG91bGQgZ2V0IHVzIGV2ZXJ5dGhpbmcgd2UgbmVlZC4gTm8gbmVlZCB0byBleHBsaWNpdGx5IGxpc3QgYFBIWUxJTktgLlxuXG5JIGp1c3QgdG9vayBhIHF1aWNrIGxvb2sgYXQgYHJ0bDgxNjlfY2hhbmdlX210dWAgYW5kIGEgZmV3IG90aGVycy4gSXQgY29uZmlybXMgdGhlc2UgZnVuY3Rpb25zIGFyZSBjb250cm9sIHBhdGggb3BlcmF0aW9ucy4gRnVuY3Rpb25zIGxpa2UgYHJ0bDgxNjlfcGNzX2dldF9zdGF0ZWAgbWlnaHQgYmUgaW50ZXJlc3RpbmcgZm9yIHN0YXRlLWF3YXJlIGZ1enplcnMuIFRoZXkgYXJlbid0IGhvdC1wYXRoLCBidXQgdGhleSBhcmUgc3RpbGwgdmFsdWFibGUgdGFyZ2V0cy5cbldpdGggdGhpcywgSSB0aGluayB3ZSBoYXZlIGEgc3Ryb25nIHN0YXJ0aW5nIHBvaW50LiBOb3csIGxldCdzIGdldCB0aGF0IGZ1enppbmcgY2FtcGFpZ24gcm9sbGluZyFcblxuXG4iLCJJbnB1dFRva2VucyI6Mzk0NzMsIk91dHB1dFRva2VucyI6Mjk4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTE0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDE2OjM1OjMwLjk1Njc1NzcyNFoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2MjkwMTU5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiUjgxNjlcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJwaHlsaW5rX3NldF9tYWNfY2FwYWJpbGl0aWVzXCIsXG4gICAgXCJydGxfaW5pdF9waHlsaW5rXCIsXG4gICAgXCJydGw4MTY5X3Bjc19jb25maWdcIixcbiAgICBcInJ0bDgxNjlfcGNzX2dldF9zdGF0ZVwiLFxuICAgIFwicnRsX21hY19saW5rX3VwXCIsXG4gICAgXCJydGxfbWFjX2xpbmtfZG93blwiLFxuICAgIFwicnRsX21hY19zZWxlY3RfcGNzXCIsXG4gICAgXCJydGxfbWFjX2Rpc2FibGVfdHhfbHBpXCIsXG4gICAgXCJydGxfbWFjX2VuYWJsZV90eF9scGlcIixcbiAgICBcInJ0bDgxNjlfY2hhbmdlX210dVwiLFxuICAgIFwicnRsX2xvd3Bvd2VyX2hpZGRlbl9mdW5jdGlvbnNcIixcbiAgICBcInI4MTI3X3NmcF9pbml0XzFnXCIsXG4gICAgXCJyODEyN19zZnBfaW5pdF8xMGdcIixcbiAgICBcInJ0bDgxNjlfaW9jdGxcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtaWdyYXRlcyB0aGUgUmVhbHRlayByODE2OSBFdGhlcm5ldCBkcml2ZXIgZnJvbSBwaHlsaWIgdG8gcGh5bGluaywgaW50cm9kdWNpbmcgc2lnbmlmaWNhbnQgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBkcml2ZXIncyBpbml0aWFsaXphdGlvbiwgbGluayBtYW5hZ2VtZW50LCBhbmQgTVRVIGhhbmRsaW5nLiBJdCBhbHNvIGFkZHMgYSBuZXcgcGh5bGluayBBUEkgYHBoeWxpbmtfc2V0X21hY19jYXBhYmlsaXRpZXNgIHRvIGR5bmFtaWNhbGx5IHVwZGF0ZSBNQUMgY2FwYWJpbGl0aWVzLiBUaGVzZSBhcmUgcmVhY2hhYmxlIGNvbnRyb2wtcGF0aCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgZnV6emVkLCBlc3BlY2lhbGx5IHZpYSBzeXpfcGNpIGFuZCBuZXRsaW5rL2lvY3RsIGludGVyZmFjZXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiUjgxNjlcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJwaHlsaW5rX3NldF9tYWNfY2FwYWJpbGl0aWVzXCIsXG4gICAgXCJydGxfaW5pdF9waHlsaW5rXCIsXG4gICAgXCJydGw4MTY5X3Bjc19jb25maWdcIixcbiAgICBcInJ0bDgxNjlfcGNzX2dldF9zdGF0ZVwiLFxuICAgIFwicnRsX21hY19saW5rX3VwXCIsXG4gICAgXCJydGxfbWFjX2xpbmtfZG93blwiLFxuICAgIFwicnRsX21hY19zZWxlY3RfcGNzXCIsXG4gICAgXCJydGxfbWFjX2Rpc2FibGVfdHhfbHBpXCIsXG4gICAgXCJydGxfbWFjX2VuYWJsZV90eF9scGlcIixcbiAgICBcInJ0bDgxNjlfY2hhbmdlX210dVwiLFxuICAgIFwicnRsX2xvd3Bvd2VyX2hpZGRlbl9mdW5jdGlvbnNcIixcbiAgICBcInI4MTI3X3NmcF9pbml0XzFnXCIsXG4gICAgXCJyODEyN19zZnBfaW5pdF8xMGdcIixcbiAgICBcInJ0bDgxNjlfaW9jdGxcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtaWdyYXRlcyB0aGUgUmVhbHRlayByODE2OSBFdGhlcm5ldCBkcml2ZXIgZnJvbSBwaHlsaWIgdG8gcGh5bGluaywgaW50cm9kdWNpbmcgc2lnbmlmaWNhbnQgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBkcml2ZXIncyBpbml0aWFsaXphdGlvbiwgbGluayBtYW5hZ2VtZW50LCBhbmQgTVRVIGhhbmRsaW5nLiBJdCBhbHNvIGFkZHMgYSBuZXcgcGh5bGluayBBUEkgYHBoeWxpbmtfc2V0X21hY19jYXBhYmlsaXRpZXNgIHRvIGR5bmFtaWNhbGx5IHVwZGF0ZSBNQUMgY2FwYWJpbGl0aWVzLiBUaGVzZSBhcmUgcmVhY2hhYmxlIGNvbnRyb2wtcGF0aCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgZnV6emVkLCBlc3BlY2lhbGx5IHZpYSBzeXpfcGNpIGFuZCBuZXRsaW5rL2lvY3RsIGludGVyZmFjZXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowkfg52[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-07 16:18:26 +0000 UTC FinishedAt: 2026-07-07 16:35:33 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "4a13f31a92f35161b499bf29638336885259da78", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "R8169" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "4a13f31a92f35161b499bf29638336885259da78", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "R8169" ], "series_id": "4ffdf5e5-ff65-480e-9d14-ebde9e0d0133" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "phylink_set_mac_capabilities", "rtl_init_phylink", "rtl8169_pcs_config", "rtl8169_pcs_get_state", "rtl_mac_link_up", "rtl_mac_link_down", "rtl_mac_select_pcs", "rtl_mac_disable_tx_lpi", "rtl_mac_enable_tx_lpi", "rtl8169_change_mtu", "rtl_lowpower_hidden_functions", "r8127_sfp_init_1g", "r8127_sfp_init_10g", "rtl8169_ioctl" ], "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+CgkJCTx0ZD4yMDI2LzA3LzA3IDE2OjM0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1I4MTY5JiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cGh5bGlua19zZXRfbWFjX2NhcGFiaWxpdGllcyYjMzQ7LAogICAgJiMzNDtydGxfaW5pdF9waHlsaW5rJiMzNDssCiAgICAmIzM0O3J0bDgxNjlfcGNzX2NvbmZpZyYjMzQ7LAogICAgJiMzNDtydGw4MTY5X3Bjc19nZXRfc3RhdGUmIzM0OywKICAgICYjMzQ7cnRsX21hY19saW5rX3VwJiMzNDssCiAgICAmIzM0O3J0bF9tYWNfbGlua19kb3duJiMzNDssCiAgICAmIzM0O3J0bF9tYWNfc2VsZWN0X3BjcyYjMzQ7LAogICAgJiMzNDtydGxfbWFjX2Rpc2FibGVfdHhfbHBpJiMzNDssCiAgICAmIzM0O3J0bF9tYWNfZW5hYmxlX3R4X2xwaSYjMzQ7LAogICAgJiMzNDtydGw4MTY5X2NoYW5nZV9tdHUmIzM0OywKICAgICYjMzQ7cnRsX2xvd3Bvd2VyX2hpZGRlbl9mdW5jdGlvbnMmIzM0OywKICAgICYjMzQ7cjgxMjdfc2ZwX2luaXRfMWcmIzM0OywKICAgICYjMzQ7cjgxMjdfc2ZwX2luaXRfMTBnJiMzNDssCiAgICAmIzM0O3J0bDgxNjlfaW9jdGwmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbWlncmF0ZXMgdGhlIFJlYWx0ZWsgcjgxNjkgRXRoZXJuZXQgZHJpdmVyIGZyb20gcGh5bGliIHRvIHBoeWxpbmssIGludHJvZHVjaW5nIHNpZ25pZmljYW50IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgZHJpdmVyJiMzOTtzIGluaXRpYWxpemF0aW9uLCBsaW5rIG1hbmFnZW1lbnQsIGFuZCBNVFUgaGFuZGxpbmcuIEl0IGFsc28gYWRkcyBhIG5ldyBwaHlsaW5rIEFQSSBgcGh5bGlua19zZXRfbWFjX2NhcGFiaWxpdGllc2AgdG8gZHluYW1pY2FsbHkgdXBkYXRlIE1BQyBjYXBhYmlsaXRpZXMuIFRoZXNlIGFyZSByZWFjaGFibGUgY29udHJvbC1wYXRoIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQsIGVzcGVjaWFsbHkgdmlhIHN5el9wY2kgYW5kIG5ldGxpbmsvaW9jdGwgaW50ZXJmYWNlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAxNjozNDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDFmNzg1MDA0NTZiODM5M2VhZDZkNmZiYzE1YTQ5YzNiNTg1MGE5ZjRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEp1bCA3IDE2OjM0OjM5IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZ1xuaW5kZXggOWIwZjRmOTYzMWRiYWEuLjQ5YWM3MjczNDIyNWY3IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9LY29uZmlnXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWdcbkBAIC04OCw2ICYjNDM7ODgsNyBAQCBjb25maWcgUjgxNjlcbiBcdHNlbGVjdCBDUkMzMlxuIFx0c2VsZWN0IFBIWUxJQlxuIFx0c2VsZWN0IFJFQUxURUtfUEhZXG4mIzQzO1x0c2VsZWN0IFBIWUxJTktcbiBcdGhlbHBcbiBcdCAgU2F5IFkgaGVyZSBpZiB5b3UgaGF2ZSBhIFJlYWx0ZWsgRXRoZXJuZXQgYWRhcHRlciBiZWxvbmdpbmcgdG9cbiBcdCAgdGhlIGZvbGxvd2luZyBmYW1pbGllczpcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jXG5pbmRleCBlYzRmYzIxZmEyMWZiMC4uMTJlMDczYjlhNjE0NzkgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmNcbkBAIC0yNiwxMiAmIzQzOzI2LDEyIEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvZG1hLW1hcHBpbmcuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3BtX3J1bnRpbWUuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2JpdGZpZWxkLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvcGh5bGluay5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcHJlZmV0Y2guaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2lwdjYuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3VuYWxpZ25lZC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbmV0L2lwNl9jaGVja3N1bS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbmV0L25ldGRldl9xdWV1ZXMuaFx1MDAzZVxuLSNpbmNsdWRlIFx1MDAzY25ldC9waHkvcmVhbHRla19waHkuaFx1MDAzZVxuIFxuICNpbmNsdWRlIFwmIzM0O3I4MTY5LmhcJiMzNDtcbiAjaW5jbHVkZSBcJiMzNDtyODE2OV9maXJtd2FyZS5oXCYjMzQ7XG5AQCAtOTYsNiAmIzQzOzk2LDI4IEBAXG4gI2RlZmluZSBKVU1CT185S1x0KDkgKiBTWl8xSyAtIFZMQU5fRVRIX0hMRU4gLSBFVEhfRkNTX0xFTilcbiAjZGVmaW5lIEpVTUJPXzE2S1x0KFNaXzE2SyAtIFZMQU5fRVRIX0hMRU4gLSBFVEhfRkNTX0xFTilcbiBcbiYjNDM7I2RlZmluZSBPQ1BfU0RTX0FERFJfUkVHXHRcdDB4RUIxMFxuJiM0MzsjZGVmaW5lIE9DUF9TRFNfQ01EX1JFR1x0XHRcdDB4RUIwRVxuJiM0MzsjZGVmaW5lIE9DUF9TRFNfREFUQV9SRUdcdFx0MHhFQjE0XG4mIzQzOyNkZWZpbmUgU0RTX0NNRF9SRUFEXHRcdFx0MHgwMDAxXG4mIzQzOyNkZWZpbmUgUlRMX1NEU19DMjJfQkFTRVx0XHQweDQwXG4mIzQzOyNkZWZpbmUgUlRMX1NEU19DNDVfQkFTRVx0XHQweDAwODBcbiYjNDM7I2RlZmluZSBSVExfUEtHX0RFVEVDVFx0XHRcdDB4ZGMwMFxuJiM0MzsjZGVmaW5lIFJUTF9QS0dfREVURUNUX01BU0tcdFx0MHgwMDc4XG4mIzQzOyNkZWZpbmUgUlRMX1BLR19ERVRFQ1RfODExNkFGXHRcdDB4MDAzMFxuJiM0MzsjZGVmaW5lIFJUTF9JTlRfSFdfSURcdFx0XHQweGQwMDZcbiYjNDM7I2RlZmluZSBSVExfSU5UX0hXX0lEX01BU0tcdFx0MHgwMGZmXG4mIzQzOyNkZWZpbmUgUlRMX0lOVF9IV19JRF84MTE2QUZcdFx0MHgwMDAwXG4mIzQzOyNkZWZpbmUgUlRMODExNkFGX0ZVTkNfUE1fQ1NSXHRcdDB4ODBcbiYjNDM7I2RlZmluZSBSVEw4MTE2QUZfRlVOQ19FWFBfTE5LQ1RMXHQweDQ0XG4mIzQzOyNkZWZpbmUgUlRMX1BNX0QzSE9UXHRcdFx0R0VOTUFTSygxLCAwKVxuJiM0MzsjZGVmaW5lIFI4MTI3X1NEU19DTURcdFx0XHQweDIzNDhcbiYjNDM7I2RlZmluZSBSODEyN19TRFNfQUREUlx0XHRcdDB4MjM0YVxuJiM0MzsjZGVmaW5lIFI4MTI3X1NEU19EQVRBX0lOXHRcdDB4MjM0Y1xuJiM0MzsjZGVmaW5lIFI4MTI3X1NEU19EQVRBX09VVFx0XHQweDIzNGVcbiYjNDM7I2RlZmluZSBSODEyN19TRFNfQ01EX0VYRUNcdFx0QklUKDApXG4mIzQzOyNkZWZpbmUgUjgxMjdfU0RTX0NNRF9XRVx0XHRCSVQoMSlcbiYjNDM7XG4gc3RhdGljIGNvbnN0IHN0cnVjdCBydGxfY2hpcF9pbmZvIHtcbiBcdHUzMiBtYXNrO1xuIFx0dTMyIHZhbDtcbkBAIC0zMzQsMTEgJiM0MzszNTYsMTMgQEAgZW51bSBydGxfcmVnaXN0ZXJzIHtcbiBcdEFMRFBTX0xUUlx0PSAweGUwYTIsXG4gXHRMVFJfT0JGRl9MT0NLXHQ9IDB4ZTAzMixcbiBcdExUUl9TTk9PUFx0PSAweGUwMzQsXG4mIzQzO1x0U0VORF9MVFJfTVNHXHQ9IDB4ZTAzOCxcbiBcbiAjZGVmaW5lIEFMRFBTX0xUUl9FTlx0XHRcdEJJVCgwKVxuICNkZWZpbmUgTFRSX09CRkZfTE9DS19FTlx0XHRCSVQoMClcbiAjZGVmaW5lIExJTktfU1BFRURfQ0hBTkdFX0VOXHRcdEJJVCgxNClcbiAjZGVmaW5lIExUUl9TTk9PUF9FTlx0XHRcdEdFTk1BU0soMTUsIDE0KVxuJiM0MzsjZGVmaW5lIExUUl9NU0dfRU5cdFx0XHRCSVQoMClcbiB9O1xuIFxuIGVudW0gcnRsODE2OF84MTAxX3JlZ2lzdGVycyB7XG5AQCAtNzI4LDYgJiM0Mzs3NTIsMTIgQEAgZW51bSBydGxfZGFzaF90eXBlIHtcbiBcdFJUTF9EQVNIXzI1X0JQLFxuIH07XG4gXG4mIzQzO2VudW0gcnRsX3NmcF9tb2RlIHtcbiYjNDM7XHRSVExfU0ZQX05PTkUsXG4mIzQzO1x0UlRMX1NGUF84MTY4X0FGLFxuJiM0MztcdFJUTF9TRlBfODEyN19BVEYsXG4mIzQzO307XG4mIzQzO1xuIHN0cnVjdCBydGw4MTY5X3ByaXZhdGUge1xuIFx0dm9pZCBfX2lvbWVtICptbWlvX2FkZHI7XHQvKiBtZW1vcnkgbWFwIHBoeXNpY2FsIGFkZHJlc3MgKi9cbiBcdHN0cnVjdCBwY2lfZGV2ICpwY2lfZGV2O1xuQEAgLTczNiw2ICYjNDM7NzY2LDcgQEAgc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSB7XG4gXHRzdHJ1Y3QgbmFwaV9zdHJ1Y3QgbmFwaTtcbiBcdGVudW0gbWFjX3ZlcnNpb24gbWFjX3ZlcnNpb247XG4gXHRlbnVtIHJ0bF9kYXNoX3R5cGUgZGFzaF90eXBlO1xuJiM0MztcdGVudW0gcnRsX3NmcF9tb2RlIHNmcF9tb2RlO1xuIFx0dTMyIGN1cl9yeDsgLyogSW5kZXggaW50byB0aGUgUnggZGVzY3JpcHRvciBidWZmZXIgb2YgbmV4dCBSeCBwa3QuICovXG4gXHR1MzIgY3VyX3R4OyAvKiBJbmRleCBpbnRvIHRoZSBUeCBkZXNjcmlwdG9yIGJ1ZmZlciBvZiBuZXh0IFJ4IHBrdC4gKi9cbiBcdHUzMiBkaXJ0eV90eDtcbkBAIC03NTAsNiAmIzQzOzc4MSw3IEBAIHN0cnVjdCBydGw4MTY5X3ByaXZhdGUge1xuIFx0dTMyIGlycV9tYXNrO1xuIFx0aW50IGlycTtcbiBcdHN0cnVjdCBjbGsgKmNsaztcbiYjNDM7XHRpbnQgc3BlZWQ7XG4gXG4gXHRzdHJ1Y3Qge1xuIFx0XHRERUNMQVJFX0JJVE1BUChmbGFncywgUlRMX0ZMQUdfTUFYKTtcbkBAIC03NjIsNyAmIzQzOzc5NCw2IEBAIHN0cnVjdCBydGw4MTY5X3ByaXZhdGUge1xuIFx0dW5zaWduZWQgc3VwcG9ydHNfZ21paToxO1xuIFx0dW5zaWduZWQgYXNwbV9tYW5hZ2VhYmxlOjE7XG4gXHR1bnNpZ25lZCBkYXNoX2VuYWJsZWQ6MTtcbi1cdGJvb2wgc2ZwX21vZGU6MTtcbiBcdGRtYV9hZGRyX3QgY291bnRlcnNfcGh5c19hZGRyO1xuIFx0c3RydWN0IHJ0bDgxNjlfY291bnRlcnMgKmNvdW50ZXJzO1xuIFx0c3RydWN0IHJ0bDgxNjlfdGNfb2Zmc2V0cyB0Y19vZmZzZXQ7XG5AQCAtNzc0LDYgJiM0Mzs4MDUsMTEgQEAgc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSB7XG4gXHRzdHJ1Y3QgcjgxNjlfbGVkX2NsYXNzZGV2ICpsZWRzO1xuIFxuIFx0dTMyIG9jcF9iYXNlO1xuJiM0MztcdHN0cnVjdCBwaHlsaW5rICpwaHlsaW5rO1xuJiM0MztcdHN0cnVjdCBwaHlsaW5rX2NvbmZpZyBwaHlsaW5rX2NvbmZpZztcbiYjNDM7XHRzdHJ1Y3QgcGh5bGlua19wY3MgcGNzO1xuJiM0MztcdHN0cnVjdCBldGh0b29sX3BhdXNlcGFyYW0gc2F2ZWRfcGF1c2U7XG4mIzQzO1x0Ym9vbCBqdW1ib19wYXVzZV9zYXZlZDtcbiB9O1xuIFxuIHR5cGVkZWYgdm9pZCAoKnJ0bF9nZW5lcmljX2ZjdCkoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApO1xuQEAgLTExMjgsMTAgJiM0MzsxMTY0LDYgQEAgc3RhdGljIGludCByODE2OF9waHlfb2NwX3JlYWQoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIHUzMiByZWcpXG4gXHRpZiAocnRsX29jcF9yZWdfZmFpbHVyZShyZWcpKVxuIFx0XHRyZXR1cm4gMDtcbiBcbi1cdC8qIFJldHVybiBkdW1teSBNSUlfUEhZU0lEMiBpbiBTRlAgbW9kZSB0byBtYXRjaCBTRlAgUEhZIGRyaXZlciAqL1xuLVx0aWYgKHRwLVx1MDAzZXNmcF9tb2RlIFx1MDAyNlx1MDAyNiByZWcgPT0gKE9DUF9TVERfUEhZX0JBU0UgJiM0MzsgMiAqIE1JSV9QSFlTSUQyKSlcbi1cdFx0cmV0dXJuIFBIWV9JRF9SVExfRFVNTVlfU0ZQIFx1MDAyNiAweGZmZmY7XG4tXG4gXHRSVExfVzMyKHRwLCBHUEhZX09DUCwgcmVnIFx1MDAzY1x1MDAzYyAxNSk7XG4gXG4gXHRyZXR1cm4gcnRsX2xvb3Bfd2FpdF9oaWdoKHRwLCBcdTAwMjZydGxfb2NwX2dwaHlfY29uZCwgMjUsIDEwKSA/XG5AQCAtMTE5OSw2ICYjNDM7MTIzMSw2NyBAQCBzdGF0aWMgdm9pZCByODEyN19zZnBfc2RzX3BoeV9yZXNldChzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbiBcdHVzbGVlcF9yYW5nZSgxMCwgMjApO1xuIH1cbiBcbiYjNDM7REVDTEFSRV9SVExfQ09ORChyODEyN19zZHNfY21kX2NvbmQpXG4mIzQzO3tcbiYjNDM7XHRyZXR1cm4gUlRMX1IxNih0cCwgUjgxMjdfU0RTX0NNRCkgXHUwMDI2IFI4MTI3X1NEU19DTURfRVhFQztcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIHUxNiByODEyN19zZHNfcmVhZChzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgdTE2IGluZGV4LCB1MTYgcGFnZSwgdTE2IHJlZylcbiYjNDM7e1xuJiM0MztcdHUxNiBhZGRyID0gKGluZGV4IFx1MDAzY1x1MDAzYyAxMSkgfCAocGFnZSBcdTAwM2NcdTAwM2MgNSkgfCByZWc7XG4mIzQzO1xuJiM0MztcdFJUTF9XMTYodHAsIFI4MTI3X1NEU19BRERSLCBhZGRyKTtcbiYjNDM7XHRSVExfVzE2KHRwLCBSODEyN19TRFNfQ01ELCBSODEyN19TRFNfQ01EX0VYRUMpO1xuJiM0MztcbiYjNDM7XHRpZiAocnRsX2xvb3Bfd2FpdF9sb3codHAsIFx1MDAyNnI4MTI3X3Nkc19jbWRfY29uZCwgMTAsIDEwMCkpXG4mIzQzO1x0XHRyZXR1cm4gUlRMX1IxNih0cCwgUjgxMjdfU0RTX0RBVEFfT1VUKTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIDB4ZmZmZjtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIHZvaWQgcjgxMjdfc2RzX3dyaXRlKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCB1MTYgaW5kZXgsIHUxNiBwYWdlLFxuJiM0MztcdFx0XHQgICAgdTE2IHJlZywgdTE2IHZhbClcbiYjNDM7e1xuJiM0MztcdHUxNiBhZGRyID0gKGluZGV4IFx1MDAzY1x1MDAzYyAxMSkgfCAocGFnZSBcdTAwM2NcdTAwM2MgNSkgfCByZWc7XG4mIzQzO1xuJiM0MztcdFJUTF9XMTYodHAsIFI4MTI3X1NEU19EQVRBX0lOLCB2YWwpO1xuJiM0MztcdFJUTF9XMTYodHAsIFI4MTI3X1NEU19BRERSLCBhZGRyKTtcbiYjNDM7XHRSVExfVzE2KHRwLCBSODEyN19TRFNfQ01ELCBSODEyN19TRFNfQ01EX0VYRUMgfCBSODEyN19TRFNfQ01EX1dFKTtcbiYjNDM7XG4mIzQzO1x0cnRsX2xvb3Bfd2FpdF9sb3codHAsIFx1MDAyNnI4MTI3X3Nkc19jbWRfY29uZCwgMTAsIDEwMCk7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyB2b2lkIHI4MTI3X3Nkc19tb2RpZnkoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIHUxNiBpbmRleCwgdTE2IHBhZ2UsXG4mIzQzO1x0XHRcdCAgICAgdTE2IHJlZywgdTE2IGNsZWFybWFzaywgdTE2IHNldG1hc2spXG4mIzQzO3tcbiYjNDM7XHR1MTYgdmFsID0gcjgxMjdfc2RzX3JlYWQodHAsIGluZGV4LCBwYWdlLCByZWcpO1xuJiM0MztcbiYjNDM7XHR2YWwgPSAodmFsIFx1MDAyNiB+Y2xlYXJtYXNrKSB8IHNldG1hc2s7XG4mIzQzO1x0cjgxMjdfc2RzX3dyaXRlKHRwLCBpbmRleCwgcGFnZSwgcmVnLCB2YWwpO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgdm9pZCByODEyN19zZnBfaW5pdF8xZyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbiYjNDM7e1xuJiM0MztcdGludCB2YWw7XG4mIzQzO1xuJiM0MztcdHI4MTI3X3NmcF9zZHNfcGh5X3Jlc2V0KHRwKTtcbiYjNDM7XG4mIzQzO1x0cjgxMjdfc2RzX21vZGlmeSh0cCwgMCwgMSwgMzEsIDAsIEJJVCgzKSk7XG4mIzQzO1x0cjgxMjdfc2RzX21vZGlmeSh0cCwgMCwgMiwgIDAsIEJJVCgxMykgfCBCSVQoMTIpIHwgQklUKDYpLCBCSVQoMTIpIHwgQklUKDYpKTtcbiYjNDM7XHRyODEyN19zZHNfbW9kaWZ5KHRwLCAwLCAwLCAgNCwgMCwgQklUKDIpKTtcbiYjNDM7XG4mIzQzO1x0UlRMX1cxNih0cCwgMHgyMzNhLCAweDgwMDQpO1xuJiM0MztcdFJUTF9XMTYodHAsIDB4MjMzZSwgKFJUTF9SMTYodHAsIDB4MjMzZSkgXHUwMDI2IH4weDMwMDMpIHwgMHgwMDAyKTtcbiYjNDM7XG4mIzQzO1x0cjgxNjhfcGh5X29jcF93cml0ZSh0cCwgMHhjNDBhLCAweDAwMDApO1xuJiM0MztcdHI4MTY4X3BoeV9vY3Bfd3JpdGUodHAsIDB4YzQ2NiwgMHgwMDAwKTtcbiYjNDM7XHRyODE2OF9waHlfb2NwX3dyaXRlKHRwLCAweGM4MDgsIDB4MDAwMCk7XG4mIzQzO1x0cjgxNjhfcGh5X29jcF93cml0ZSh0cCwgMHhjODBhLCAweDAwMDApO1xuJiM0MztcbiYjNDM7XHR2YWwgPSByODE2OF9waHlfb2NwX3JlYWQodHAsIDB4YzgwNCk7XG4mIzQzO1x0cjgxNjhfcGh5X29jcF93cml0ZSh0cCwgMHhjODA0LCAodmFsIFx1MDAyNiB+MHgwMDBmKSB8IDB4MDAwYyk7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIHZvaWQgcjgxMjdfc2ZwX2luaXRfMTBnKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuIHtcbiBcdGludCB2YWw7XG5AQCAtMTIxNywxMiAmIzQzOzEzMTAsNiBAQCBzdGF0aWMgdm9pZCByODEyN19zZnBfaW5pdF8xMGcoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG4gXHRyODE2OF9waHlfb2NwX3dyaXRlKHRwLCAweGM4MDQsICh2YWwgXHUwMDI2IH4weDAwMGYpIHwgMHgwMDBjKTtcbiB9XG4gXG4tc3RhdGljIHZvaWQgcnRsX3NmcF9pbml0KHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuLXtcbi1cdGlmICh0cC1cdTAwM2VtYWNfdmVyc2lvbiA9PSBSVExfR0lHQV9NQUNfVkVSXzgwKVxuLVx0XHRyODEyN19zZnBfaW5pdF8xMGcodHApO1xuLX1cbi1cbiBzdGF0aWMgdm9pZCBydGxfc2ZwX3Jlc2V0KHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuIHtcbiBcdGlmICh0cC1cdTAwM2VtYWNfdmVyc2lvbiA9PSBSVExfR0lHQV9NQUNfVkVSXzgwKVxuQEAgLTEyODMsNiAmIzQzOzEzNzAsMTUgQEAgc3RhdGljIHZvaWQgbWFjX21jdV93cml0ZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgaW50IHJlZywgaW50IHZhbHVlKVxuIFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgdHAtXHUwMDNlb2NwX2Jhc2UgJiM0MzsgcmVnLCB2YWx1ZSk7XG4gfVxuIFxuJiM0MztzdGF0aWMgYm9vbCBydGxfaXNfODExNmFmKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuJiM0Mzt7XG4mIzQzO1x0cmV0dXJuIHRwLVx1MDAzZW1hY192ZXJzaW9uID09IFJUTF9HSUdBX01BQ19WRVJfNTIgXHUwMDI2XHUwMDI2XG4mIzQzO1x0XHQocjgxNjhfbWFjX29jcF9yZWFkKHRwLCBSVExfUEtHX0RFVEVDVCkgXHUwMDI2IFJUTF9QS0dfREVURUNUX01BU0spID09XG4mIzQzO1x0XHRSVExfUEtHX0RFVEVDVF84MTE2QUYgXHUwMDI2XHUwMDI2XG4mIzQzO1x0XHQocjgxNjhfbWFjX29jcF9yZWFkKHRwLCBSVExfSU5UX0hXX0lEKSBcdTAwMjYgUlRMX0lOVF9IV19JRF9NQVNLKSA9PVxuJiM0MztcdFx0UlRMX0lOVF9IV19JRF84MTE2QUY7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIGludCBtYWNfbWN1X3JlYWQoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIGludCByZWcpXG4ge1xuIFx0cmV0dXJuIHI4MTY4X21hY19vY3BfcmVhZCh0cCwgdHAtXHUwMDNlb2NwX2Jhc2UgJiM0MzsgcmVnKTtcbkBAIC0xNTc4LDYgJiM0MzsxNjc0LDIwIEBAIHN0YXRpYyBib29sIHJ0bF9kYXNoX2lzX2VuYWJsZWQoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG4gXHR9XG4gfVxuIFxuJiM0MztzdGF0aWMgZW51bSBydGxfc2ZwX21vZGUgcnRsX2dldF9zZnBfbW9kZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbiYjNDM7e1xuJiM0MztcdGlmIChydGxfaXNfODEyNSh0cCkpIHtcbiYjNDM7XHRcdHUxNiBkYXRhID0gcjgxNjhfbWFjX29jcF9yZWFkKHRwLCBSVExfSU5UX0hXX0lEKTtcbiYjNDM7XG4mIzQzO1x0XHRpZiAoKGRhdGEgXHUwMDI2IDB4ZmYpID09IDB4MDcpXG4mIzQzO1x0XHRcdHJldHVybiBSVExfU0ZQXzgxMjdfQVRGO1xuJiM0MztcdH0gZWxzZSBpZiAocnRsX2lzXzgxMTZhZih0cCkpIHtcbiYjNDM7XHRcdHJldHVybiBSVExfU0ZQXzgxNjhfQUY7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRyZXR1cm4gUlRMX1NGUF9OT05FO1xuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyBlbnVtIHJ0bF9kYXNoX3R5cGUgcnRsX2dldF9kYXNoX3R5cGUoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG4ge1xuIFx0c3dpdGNoICh0cC1cdTAwM2VtYWNfdmVyc2lvbikge1xuQEAgLTE2NzMsMTYgJiM0MzsxNzgzLDE0IEBAIHN0YXRpYyB2b2lkIHJ0bDgxNjlfaXJxX21hc2tfYW5kX2FjayhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbiBcdHJ0bF9wY2lfY29tbWl0KHRwKTtcbiB9XG4gXG4tc3RhdGljIHZvaWQgcnRsX2xpbmtfY2hnX3BhdGNoKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuJiM0MztzdGF0aWMgdm9pZCBydGxfbGlua19jaGdfcGF0Y2goc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIGludCBzcGVlZClcbiB7XG4tXHRzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2ID0gdHAtXHUwMDNlcGh5ZGV2O1xuLVxuIFx0aWYgKHRwLVx1MDAzZW1hY192ZXJzaW9uID09IFJUTF9HSUdBX01BQ19WRVJfMzQgfHxcbiBcdCAgICB0cC1cdTAwM2VtYWNfdmVyc2lvbiA9PSBSVExfR0lHQV9NQUNfVkVSXzM4KSB7XG4tXHRcdGlmIChwaHlkZXYtXHUwMDNlc3BlZWQgPT0gU1BFRURfMTAwMCkge1xuJiM0MztcdFx0aWYgKHNwZWVkID09IFNQRUVEXzEwMDApIHtcbiBcdFx0XHRydGxfZXJpX3dyaXRlKHRwLCAweDFiYywgRVJJQVJfTUFTS18xMTExLCAweDAwMDAwMDExKTtcbiBcdFx0XHRydGxfZXJpX3dyaXRlKHRwLCAweDFkYywgRVJJQVJfTUFTS18xMTExLCAweDAwMDAwMDA1KTtcbi1cdFx0fSBlbHNlIGlmIChwaHlkZXYtXHUwMDNlc3BlZWQgPT0gU1BFRURfMTAwKSB7XG4mIzQzO1x0XHR9IGVsc2UgaWYgKHNwZWVkID09IFNQRUVEXzEwMCkge1xuIFx0XHRcdHJ0bF9lcmlfd3JpdGUodHAsIDB4MWJjLCBFUklBUl9NQVNLXzExMTEsIDB4MDAwMDAwMWYpO1xuIFx0XHRcdHJ0bF9lcmlfd3JpdGUodHAsIDB4MWRjLCBFUklBUl9NQVNLXzExMTEsIDB4MDAwMDAwMDUpO1xuIFx0XHR9IGVsc2Uge1xuQEAgLTE2OTIsNyAmIzQzOzE4MDAsNyBAQCBzdGF0aWMgdm9pZCBydGxfbGlua19jaGdfcGF0Y2goc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG4gXHRcdHJ0bF9yZXNldF9wYWNrZXRfZmlsdGVyKHRwKTtcbiBcdH0gZWxzZSBpZiAodHAtXHUwMDNlbWFjX3ZlcnNpb24gPT0gUlRMX0dJR0FfTUFDX1ZFUl8zNSB8fFxuIFx0XHQgICB0cC1cdTAwM2VtYWNfdmVyc2lvbiA9PSBSVExfR0lHQV9NQUNfVkVSXzM2KSB7XG4tXHRcdGlmIChwaHlkZXYtXHUwMDNlc3BlZWQgPT0gU1BFRURfMTAwMCkge1xuJiM0MztcdFx0aWYgKHNwZWVkID09IFNQRUVEXzEwMDApIHtcbiBcdFx0XHRydGxfZXJpX3dyaXRlKHRwLCAweDFiYywgRVJJQVJfTUFTS18xMTExLCAweDAwMDAwMDExKTtcbiBcdFx0XHRydGxfZXJpX3dyaXRlKHRwLCAweDFkYywgRVJJQVJfTUFTS18xMTExLCAweDAwMDAwMDA1KTtcbiBcdFx0fSBlbHNlIHtcbkBAIC0xNzAwLDcgJiM0MzsxODA4LDcgQEAgc3RhdGljIHZvaWQgcnRsX2xpbmtfY2hnX3BhdGNoKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuIFx0XHRcdHJ0bF9lcmlfd3JpdGUodHAsIDB4MWRjLCBFUklBUl9NQVNLXzExMTEsIDB4MDAwMDAwM2YpO1xuIFx0XHR9XG4gXHR9IGVsc2UgaWYgKHRwLVx1MDAzZW1hY192ZXJzaW9uID09IFJUTF9HSUdBX01BQ19WRVJfMzcpIHtcbi1cdFx0aWYgKHBoeWRldi1cdTAwM2VzcGVlZCA9PSBTUEVFRF8xMCkge1xuJiM0MztcdFx0aWYgKHNwZWVkID09IFNQRUVEXzEwKSB7XG4gXHRcdFx0cnRsX2VyaV93cml0ZSh0cCwgMHgxZDAsIEVSSUFSX01BU0tfMDAxMSwgMHg0ZDAyKTtcbiBcdFx0XHRydGxfZXJpX3dyaXRlKHRwLCAweDFkYywgRVJJQVJfTUFTS18wMDExLCAweDAwNjBhKTtcbiBcdFx0fSBlbHNlIHtcbkBAIC0yMDc0LDExICYjNDM7MjE4MiwxMSBAQCBydGxfY29hbGVzY2VfaW5mbyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbiBcdFx0Y2kgPSBydGxfY29hbGVzY2VfaW5mb184MTY4XzgxMzY7XG4gXG4gXHQvKiBpZiBzcGVlZCBpcyB1bmtub3duIGFzc3VtZSBoaWdoZXN0IG9uZSAqL1xuLVx0aWYgKHRwLVx1MDAzZXBoeWRldi1cdTAwM2VzcGVlZCA9PSBTUEVFRF9VTktOT1dOKVxuJiM0MztcdGlmICh0cC1cdTAwM2VzcGVlZCA9PSBTUEVFRF9VTktOT1dOKVxuIFx0XHRyZXR1cm4gY2k7XG4gXG4gXHRmb3IgKDsgY2ktXHUwMDNlc3BlZWQ7IGNpJiM0MzsmIzQzOykge1xuLVx0XHRpZiAodHAtXHUwMDNlcGh5ZGV2LVx1MDAzZXNwZWVkID09IGNpLVx1MDAzZXNwZWVkKVxuJiM0MztcdFx0aWYgKHRwLVx1MDAzZXNwZWVkID09IGNpLVx1MDAzZXNwZWVkKVxuIFx0XHRcdHJldHVybiBjaTtcbiBcdH1cbiBcbkBAIC0yMjM2LDcgJiM0MzsyMzQ0LDcgQEAgc3RhdGljIHZvaWQgcnRsX3NldF9lZWVfdHhpZGxlX3RpbWVyKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuIFxuIHN0YXRpYyB1bnNpZ25lZCBpbnQgcjgxNjlfZ2V0X3R4X2xwaV90aW1lcl91cyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbiB7XG4tXHR1bnNpZ25lZCBpbnQgc3BlZWQgPSB0cC1cdTAwM2VwaHlkZXYtXHUwMDNlc3BlZWQ7XG4mIzQzO1x0dW5zaWduZWQgaW50IHNwZWVkID0gdHAtXHUwMDNlc3BlZWQ7XG4gXHR1bnNpZ25lZCBpbnQgdGltZXIgPSB0cC1cdTAwM2V0eF9scGlfdGltZXI7XG4gXG4gXHRpZiAoIXRpbWVyIHx8IHNwZWVkID09IFNQRUVEX1VOS05PV04pXG5AQCAtMjI1NCw3ICYjNDM7MjM2Miw3IEBAIHN0YXRpYyBpbnQgcnRsODE2OV9nZXRfZWVlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBldGh0b29sX2tlZWUgKmRhdGEpXG4gXHRpZiAoIXJ0bF9zdXBwb3J0c19lZWUodHApKVxuIFx0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4gXG4tXHRyZXQgPSBwaHlfZXRodG9vbF9nZXRfZWVlKHRwLVx1MDAzZXBoeWRldiwgZGF0YSk7XG4mIzQzO1x0cmV0ID0gcGh5bGlua19ldGh0b29sX2dldF9lZWUodHAtXHUwMDNlcGh5bGluaywgZGF0YSk7XG4gXHRpZiAocmV0KVxuIFx0XHRyZXR1cm4gcmV0O1xuIFxuQEAgLTIyNzAsNyAmIzQzOzIzNzgsNyBAQCBzdGF0aWMgaW50IHJ0bDgxNjlfc2V0X2VlZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgZXRodG9vbF9rZWVlICpkYXRhKVxuIFx0aWYgKCFydGxfc3VwcG9ydHNfZWVlKHRwKSlcbiBcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuIFxuLVx0cmV0dXJuIHBoeV9ldGh0b29sX3NldF9lZWUodHAtXHUwMDNlcGh5ZGV2LCBkYXRhKTtcbiYjNDM7XHRyZXR1cm4gcGh5bGlua19ldGh0b29sX3NldF9lZWUodHAtXHUwMDNlcGh5bGluaywgZGF0YSk7XG4gfVxuIFxuIHN0YXRpYyB2b2lkIHJ0bDgxNjlfZ2V0X3JpbmdwYXJhbShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuQEAgLTIzMDEsMTMgJiM0MzsyNDA5LDggQEAgc3RhdGljIHZvaWQgcnRsODE2OV9nZXRfcGF1c2VwYXJhbShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFx0XHRcdFx0ICAgc3RydWN0IGV0aHRvb2xfcGF1c2VwYXJhbSAqZGF0YSlcbiB7XG4gXHRzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCA9IG5ldGRldl9wcml2KGRldik7XG4tXHRib29sIHR4X3BhdXNlLCByeF9wYXVzZTtcbiBcbi1cdHBoeV9nZXRfcGF1c2UodHAtXHUwMDNlcGh5ZGV2LCBcdTAwMjZ0eF9wYXVzZSwgXHUwMDI2cnhfcGF1c2UpO1xuLVxuLVx0ZGF0YS1cdTAwM2VhdXRvbmVnID0gdHAtXHUwMDNlcGh5ZGV2LVx1MDAzZWF1dG9uZWc7XG4tXHRkYXRhLVx1MDAzZXR4X3BhdXNlID0gdHhfcGF1c2UgPyAxIDogMDtcbi1cdGRhdGEtXHUwMDNlcnhfcGF1c2UgPSByeF9wYXVzZSA/IDEgOiAwO1xuJiM0MztcdHBoeWxpbmtfZXRodG9vbF9nZXRfcGF1c2VwYXJhbSh0cC1cdTAwM2VwaHlsaW5rLCBkYXRhKTtcbiB9XG4gXG4gc3RhdGljIGludCBydGw4MTY5X3NldF9wYXVzZXBhcmFtKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG5AQCAtMjMxOCw5ICYjNDM7MjQyMSw3IEBAIHN0YXRpYyBpbnQgcnRsODE2OV9zZXRfcGF1c2VwYXJhbShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFx0aWYgKGRldi1cdTAwM2VtdHUgXHUwMDNlIEVUSF9EQVRBX0xFTilcbiBcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuIFxuLVx0cGh5X3NldF9hc3ltX3BhdXNlKHRwLVx1MDAzZXBoeWRldiwgZGF0YS1cdTAwM2VyeF9wYXVzZSwgZGF0YS1cdTAwM2V0eF9wYXVzZSk7XG4tXG4tXHRyZXR1cm4gMDtcbiYjNDM7XHRyZXR1cm4gcGh5bGlua19ldGh0b29sX3NldF9wYXVzZXBhcmFtKHRwLVx1MDAzZXBoeWxpbmssIGRhdGEpO1xuIH1cbiBcbiBzdGF0aWMgdm9pZCBydGw4MTY5X2dldF9ldGhfbWFjX3N0YXRzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG5AQCAtMjM4NiwzNCAmIzQzOzI0ODcsMjcgQEAgc3RhdGljIHZvaWQgcnRsODE2OV9nZXRfZXRoX2N0cmxfc3RhdHMoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcdFx0bGUzMl90b19jcHUodHAtXHUwMDNlY291bnRlcnMtXHUwMDNlcnhfdW5rbm93bl9vcGNvZGUpO1xuIH1cbiBcbi1zdGF0aWMgaW50IHJ0bDgxNjlfc2V0X2xpbmtfa3NldHRpbmdzKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxuLVx0XHRcdFx0ICAgICAgY29uc3Qgc3RydWN0IGV0aHRvb2xfbGlua19rc2V0dGluZ3MgKmNtZClcbiYjNDM7c3RhdGljIGludCBydGw4MTY5X2dldF9saW5rX2tzZXR0aW5ncyhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcbiYjNDM7XHRcdFx0XHQgICAgICBzdHJ1Y3QgZXRodG9vbF9saW5rX2tzZXR0aW5ncyAqY21kKVxuIHtcbiBcdHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwID0gbmV0ZGV2X3ByaXYobmRldik7XG4tXHRzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2ID0gdHAtXHUwMDNlcGh5ZGV2O1xuLVx0aW50IGR1cGxleCA9IGNtZC1cdTAwM2ViYXNlLmR1cGxleDtcbi1cdGludCBzcGVlZCA9IGNtZC1cdTAwM2ViYXNlLnNwZWVkO1xuLVxuLVx0aWYgKCF0cC1cdTAwM2VzZnBfbW9kZSlcbi1cdFx0cmV0dXJuIHBoeV9ldGh0b29sX2tzZXR0aW5nc19zZXQocGh5ZGV2LCBjbWQpO1xuLVxuLVx0aWYgKGNtZC1cdTAwM2ViYXNlLmF1dG9uZWcgIT0gQVVUT05FR19ESVNBQkxFKVxuLVx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcbi1cdGlmICghcGh5X2NoZWNrX3ZhbGlkKHNwZWVkLCBkdXBsZXgsIHBoeWRldi1cdTAwM2VzdXBwb3J0ZWQpKVxuLVx0XHRyZXR1cm4gLUVJTlZBTDtcbi1cbi1cdG11dGV4X2xvY2soXHUwMDI2cGh5ZGV2LVx1MDAzZWxvY2spO1xuJiM0MztcdHJldHVybiBwaHlsaW5rX2V0aHRvb2xfa3NldHRpbmdzX2dldCh0cC1cdTAwM2VwaHlsaW5rLCBjbWQpO1xuJiM0Mzt9XG4gXG4tXHRwaHlkZXYtXHUwMDNlYXV0b25lZyA9IEFVVE9ORUdfRElTQUJMRTtcbi1cdHBoeWRldi1cdTAwM2VzcGVlZCA9IHNwZWVkO1xuLVx0cGh5ZGV2LVx1MDAzZWR1cGxleCA9IGR1cGxleDtcbiYjNDM7c3RhdGljIGludCBydGw4MTY5X3NldF9saW5rX2tzZXR0aW5ncyhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcbiYjNDM7XHRcdFx0XHQgICAgICBjb25zdCBzdHJ1Y3QgZXRodG9vbF9saW5rX2tzZXR0aW5ncyAqY21kKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAgPSBuZXRkZXZfcHJpdihuZGV2KTtcbiBcbi1cdHJ0bF9zZnBfaW5pdCh0cCk7XG4mIzQzO1x0cmV0dXJuIHBoeWxpbmtfZXRodG9vbF9rc2V0dGluZ3Nfc2V0KHRwLVx1MDAzZXBoeWxpbmssIGNtZCk7XG4mIzQzO31cbiBcbi1cdG11dGV4X3VubG9jayhcdTAwMjZwaHlkZXYtXHUwMDNlbG9jayk7XG4mIzQzO3N0YXRpYyBpbnQgcnRsODE2OV9ud2F5X3Jlc2V0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCA9IG5ldGRldl9wcml2KGRldik7XG4gXG4tXHRyZXR1cm4gMDtcbiYjNDM7XHRyZXR1cm4gcGh5bGlua19ldGh0b29sX253YXlfcmVzZXQodHAtXHUwMDNlcGh5bGluayk7XG4gfVxuIFxuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgcnRsODE2OV9ldGh0b29sX29wcyA9IHtcbkBAIC0yNDMxLDEwICYjNDM7MjUyNSwxMCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIHJ0bDgxNjlfZXRodG9vbF9vcHMgPSB7XG4gXHQuZ2V0X3NzZXRfY291bnRcdFx0PSBydGw4MTY5X2dldF9zc2V0X2NvdW50LFxuIFx0LmdldF9ldGh0b29sX3N0YXRzXHQ9IHJ0bDgxNjlfZ2V0X2V0aHRvb2xfc3RhdHMsXG4gXHQuZ2V0X3RzX2luZm9cdFx0PSBldGh0b29sX29wX2dldF90c19pbmZvLFxuLVx0Lm53YXlfcmVzZXRcdFx0PSBwaHlfZXRodG9vbF9ud2F5X3Jlc2V0LFxuJiM0MztcdC5ud2F5X3Jlc2V0XHRcdD0gcnRsODE2OV9ud2F5X3Jlc2V0LFxuIFx0LmdldF9lZWVcdFx0PSBydGw4MTY5X2dldF9lZWUsXG4gXHQuc2V0X2VlZVx0XHQ9IHJ0bDgxNjlfc2V0X2VlZSxcbi1cdC5nZXRfbGlua19rc2V0dGluZ3NcdD0gcGh5X2V0aHRvb2xfZ2V0X2xpbmtfa3NldHRpbmdzLFxuJiM0MztcdC5nZXRfbGlua19rc2V0dGluZ3NcdD0gcnRsODE2OV9nZXRfbGlua19rc2V0dGluZ3MsXG4gXHQuc2V0X2xpbmtfa3NldHRpbmdzXHQ9IHJ0bDgxNjlfc2V0X2xpbmtfa3NldHRpbmdzLFxuIFx0LmdldF9yaW5ncGFyYW1cdFx0PSBydGw4MTY5X2dldF9yaW5ncGFyYW0sXG4gXHQuZ2V0X3BhdXNlX3N0YXRzXHQ9IHJ0bDgxNjlfZ2V0X3BhdXNlX3N0YXRzLFxuQEAgLTI0OTksOSAmIzQzOzI1OTMsMTAgQEAgdm9pZCByODE2OV9hcHBseV9maXJtd2FyZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbiBcdFx0dHAtXHUwMDNlb2NwX2Jhc2UgPSBPQ1BfU1REX1BIWV9CQVNFO1xuIFxuIFx0XHQvKiBQSFkgc29mdCByZXNldCBtYXkgc3RpbGwgYmUgaW4gcHJvZ3Jlc3MgKi9cbi1cdFx0cGh5X3JlYWRfcG9sbF90aW1lb3V0KHRwLVx1MDAzZXBoeWRldiwgTUlJX0JNQ1IsIHZhbCxcbi1cdFx0XHRcdCAgICAgICEodmFsIFx1MDAyNiBCTUNSX1JFU0VUKSxcbi1cdFx0XHRcdCAgICAgIDUwMDAwLCA2MDAwMDAsIHRydWUpO1xuJiM0MztcdFx0aWYgKHRwLVx1MDAzZXBoeWRldilcbiYjNDM7XHRcdFx0cGh5X3JlYWRfcG9sbF90aW1lb3V0KHRwLVx1MDAzZXBoeWRldiwgTUlJX0JNQ1IsIHZhbCxcbiYjNDM7XHRcdFx0XHRcdCAgICAgICEodmFsIFx1MDAyNiBCTUNSX1JFU0VUKSxcbiYjNDM7XHRcdFx0XHRcdCAgICAgIDUwMDAwLCA2MDAwMDAsIHRydWUpO1xuIFx0fVxuIH1cbiBcbkBAIC0yNTM4LDYgJiM0MzsyNjMzLDggQEAgc3RhdGljIHZvaWQgcnRsX3NjaGVkdWxlX3Rhc2soc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIGVudW0gcnRsX2ZsYWcgZmxhZylcbiBcbiBzdGF0aWMgdm9pZCBydGw4MTY5X2luaXRfcGh5KHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuIHtcbiYjNDM7XHRwaHlfaW5pdF9odyh0cC1cdTAwM2VwaHlkZXYpO1xuJiM0MztcdHBoeV9yZXN1bWUodHAtXHUwMDNlcGh5ZGV2KTtcbiBcdHI4MTY5X2h3X3BoeV9jb25maWcodHAsIHRwLVx1MDAzZXBoeWRldiwgdHAtXHUwMDNlbWFjX3ZlcnNpb24pO1xuIFxuIFx0aWYgKHRwLVx1MDAzZW1hY192ZXJzaW9uIFx1MDAzYz0gUlRMX0dJR0FfTUFDX1ZFUl8wNikge1xuQEAgLTI1NTIsOSAmIzQzOzI2NDksNiBAQCBzdGF0aWMgdm9pZCBydGw4MTY5X2luaXRfcGh5KHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuIFx0ICAgIHRwLVx1MDAzZXBjaV9kZXYtXHUwMDNlc3Vic3lzdGVtX2RldmljZSA9PSAweGUwMDApXG4gXHRcdHBoeV93cml0ZV9wYWdlZCh0cC1cdTAwM2VwaHlkZXYsIDB4MDAwMSwgMHgxMCwgMHhmMDFiKTtcbiBcbi1cdGlmICh0cC1cdTAwM2VzZnBfbW9kZSlcbi1cdFx0cnRsX3NmcF9pbml0KHRwKTtcbi1cbiBcdC8qIFdlIG1heSBoYXZlIGNhbGxlZCBwaHlfc3BlZWRfZG93biBiZWZvcmUgKi9cbiBcdHBoeV9zcGVlZF91cCh0cC1cdTAwM2VwaHlkZXYpO1xuIFxuQEAgLTI2NTcsMTUgJiM0MzsyNzUxLDYgQEAgc3RhdGljIHZvaWQgcnRsX2p1bWJvX2NvbmZpZyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbiBcbiBcdGlmIChwY2lfaXNfcGNpZSh0cC1cdTAwM2VwY2lfZGV2KSBcdTAwMjZcdTAwMjYgdHAtXHUwMDNlc3VwcG9ydHNfZ21paSlcbiBcdFx0cGNpZV9zZXRfcmVhZHJxKHRwLVx1MDAzZXBjaV9kZXYsIHJlYWRycSk7XG4tXG4tXHQvKiBDaGlwIGRvZXNuJiMzOTt0IHN1cHBvcnQgcGF1c2UgaW4ganVtYm8gbW9kZSAqL1xuLVx0aWYgKGp1bWJvKSB7XG4tXHRcdGxpbmttb2RlX2NsZWFyX2JpdChFVEhUT09MX0xJTktfTU9ERV9QYXVzZV9CSVQsXG4tXHRcdFx0XHQgICB0cC1cdTAwM2VwaHlkZXYtXHUwMDNlYWR2ZXJ0aXNpbmcpO1xuLVx0XHRsaW5rbW9kZV9jbGVhcl9iaXQoRVRIVE9PTF9MSU5LX01PREVfQXN5bV9QYXVzZV9CSVQsXG4tXHRcdFx0XHQgICB0cC1cdTAwM2VwaHlkZXYtXHUwMDNlYWR2ZXJ0aXNpbmcpO1xuLVx0XHRwaHlfc3RhcnRfYW5lZyh0cC1cdTAwM2VwaHlkZXYpO1xuLVx0fVxuIH1cbiBcbiBERUNMQVJFX1JUTF9DT05EKHJ0bF9jaGlwY21kX2NvbmQpXG5AQCAtMjc4MCw3ICYjNDM7Mjg2NSw3IEBAIHN0YXRpYyB2b2lkIHJ0bF9wcmVwYXJlX3Bvd2VyX2Rvd24oc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG4gXHRcdHJ0bF9lcGh5X3dyaXRlKHRwLCAweDE5LCAweGZmNjQpO1xuIFxuIFx0aWYgKGRldmljZV9tYXlfd2FrZXVwKHRwX3RvX2Rldih0cCkpKSB7XG4tXHRcdHBoeV9zcGVlZF9kb3duKHRwLVx1MDAzZXBoeWRldiwgZmFsc2UpO1xuJiM0MztcdFx0cGh5bGlua19zcGVlZF9kb3duKHRwLVx1MDAzZXBoeWxpbmssIGZhbHNlKTtcbiBcdFx0cnRsX3dvbF9lbmFibGVfcngodHApO1xuIFx0fVxuIH1cbkBAIC0yODMyLDYgJiM0MzsyOTE3LDE2IEBAIHN0YXRpYyB2b2lkIHJ0bDgxNjlfc2V0X21hZ2ljX3JlZyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbiBcdFJUTF9XMzIodHAsIDB4N2MsIHZhbCk7XG4gfVxuIFxuJiM0MztzdGF0aWMgaW50IHJ0bDgxNjlfaW9jdGwoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IGlmcmVxICppZnIsIGludCBjbWQpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCA9IG5ldGRldl9wcml2KGRldik7XG4mIzQzO1xuJiM0MztcdGlmICghbmV0aWZfcnVubmluZyhkZXYpKVxuJiM0MztcdFx0cmV0dXJuIC1FTk9ERVY7XG4mIzQzO1xuJiM0MztcdHJldHVybiBwaHlsaW5rX21paV9pb2N0bCh0cC1cdTAwM2VwaHlsaW5rLCBpZnIsIGNtZCk7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIHZvaWQgcnRsX3NldF9yeF9tb2RlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4ge1xuIFx0dTMyIHJ4X21vZGUgPSBBY2NlcHRCcm9hZGNhc3QgfCBBY2NlcHRNeVBoeXMgfCBBY2NlcHRNdWx0aWNhc3Q7XG5AQCAtMzA5OCw4ICYjNDM7MzE5MywyMiBAQCBzdGF0aWMgdm9pZCBydGxfZW5hYmxlX2x0cihzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbiBcdFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGYyLCAweDkwMDMpO1xuIFx0XHRyODE2OF9tYWNfb2NwX21vZGlmeSh0cCwgTFRSX09CRkZfTE9DSywgMHgwMDAwLCBMSU5LX1NQRUVEX0NIQU5HRV9FTik7XG4gXHRcdGJyZWFrO1xuLVx0Y2FzZSBSVExfR0lHQV9NQUNfVkVSXzQ2IC4uLiBSVExfR0lHQV9NQUNfVkVSXzQ4OlxuIFx0Y2FzZSBSVExfR0lHQV9NQUNfVkVSXzUyOlxuJiM0MztcdFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGQwLCAweDkwMDMpO1xuJiM0MztcdFx0cjgxNjhfbWFjX29jcF9tb2RpZnkodHAsIExUUl9TTk9PUCwgMHgwMDAwLCBMVFJfU05PT1BfRU4pO1xuJiM0MztcdFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhlMDJjLCAweDE4ODApO1xuJiM0MztcdFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhlMDJlLCAweDQ4ODApO1xuJiM0MztcdFx0cjgxNjhfbWFjX29jcF9tb2RpZnkodHAsIEFMRFBTX0xUUiwgMHgwMDAwLCBBTERQU19MVFJfRU4pO1xuJiM0MztcdFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGQ4LCAweDkwMDMpO1xuJiM0MztcdFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGRhLCAweDkwMDMpO1xuJiM0MztcdFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGRjLCAweDkwMDMpO1xuJiM0MztcdFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGQyLCAweDg4M2MpO1xuJiM0MztcdFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGQ0LCAweDhjMTIpO1xuJiM0MztcdFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGQ2LCAweDkwMDMpO1xuJiM0MztcdFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhlMGE2LCAweDkwMDMpO1xuJiM0MztcdFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhlMGE4LCAweDkwMDMpO1xuJiM0MztcdFx0YnJlYWs7XG4mIzQzO1x0Y2FzZSBSVExfR0lHQV9NQUNfVkVSXzQ2IC4uLiBSVExfR0lHQV9NQUNfVkVSXzQ4OlxuIFx0XHRyODE2OF9tYWNfb2NwX21vZGlmeSh0cCwgQUxEUFNfTFRSLCAweDAwMDAsIEFMRFBTX0xUUl9FTik7XG4gXHRcdFJUTF9XOCh0cCwgQ09NQk9fTFRSX0VYVEVORCwgUlRMX1I4KHRwLCBDT01CT19MVFJfRVhURU5EKSB8IENPTUJPX0xUUl9FWFRFTkRfRU4pO1xuIFx0XHRmYWxsdGhyb3VnaDtcbkBAIC0zMTE5LDYgJiM0MzszMjI4LDcgQEAgc3RhdGljIHZvaWQgcnRsX2VuYWJsZV9sdHIoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG4gXHR9XG4gXHQvKiBjaGlwIGNhbiB0cmlnZ2VyIExUUiAqL1xuIFx0cjgxNjhfbWFjX29jcF9tb2RpZnkodHAsIExUUl9PQkZGX0xPQ0ssIDB4MDAwMywgTFRSX09CRkZfTE9DS19FTik7XG4mIzQzO1x0cjgxNjhfbWFjX29jcF9tb2RpZnkodHAsIFNFTkRfTFRSX01TRywgMHgwMDAwLCBMVFJfTVNHX0VOKTtcbiB9XG4gXG4gc3RhdGljIHZvaWQgcnRsX2h3X2FzcG1fY2xrcmVxX2VuYWJsZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgYm9vbCBlbmFibGUpXG5AQCAtMzE1Miw2ICYjNDM7MzI2Miw3IEBAIHN0YXRpYyB2b2lkIHJ0bF9od19hc3BtX2Nsa3JlcV9lbmFibGUoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIGJvb2wgZW5hYmxlKVxuIFx0XHRydGxfZW5hYmxlX2x0cih0cCk7XG4gXHRcdHN3aXRjaCAodHAtXHUwMDNlbWFjX3ZlcnNpb24pIHtcbiBcdFx0Y2FzZSBSVExfR0lHQV9NQUNfVkVSXzQ2IC4uLiBSVExfR0lHQV9NQUNfVkVSXzQ4OlxuJiM0MztcdFx0Y2FzZSBSVExfR0lHQV9NQUNfVkVSXzUyOlxuIFx0XHRjYXNlIFJUTF9HSUdBX01BQ19WRVJfNjEgLi4uIFJUTF9HSUdBX01BQ19WRVJfTEFTVDpcbiBcdFx0XHQvKiByZXNldCBlcGh5IHR4L3J4IGRpc2FibGUgdGltZXIgKi9cbiBcdFx0XHRyODE2OF9tYWNfb2NwX21vZGlmeSh0cCwgMHhlMDk0LCAweGZmMDAsIDApO1xuQEAgLTMxNjQsNiAmIzQzOzMyNzUsNyBAQCBzdGF0aWMgdm9pZCBydGxfaHdfYXNwbV9jbGtyZXFfZW5hYmxlKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCBib29sIGVuYWJsZSlcbiBcdH0gZWxzZSB7XG4gXHRcdHN3aXRjaCAodHAtXHUwMDNlbWFjX3ZlcnNpb24pIHtcbiBcdFx0Y2FzZSBSVExfR0lHQV9NQUNfVkVSXzQ2IC4uLiBSVExfR0lHQV9NQUNfVkVSXzQ4OlxuJiM0MztcdFx0Y2FzZSBSVExfR0lHQV9NQUNfVkVSXzUyOlxuIFx0XHRjYXNlIFJUTF9HSUdBX01BQ19WRVJfNjEgLi4uIFJUTF9HSUdBX01BQ19WRVJfTEFTVDpcbiBcdFx0XHRyODE2OF9tYWNfb2NwX21vZGlmeSh0cCwgMHhlMDkyLCAweDAwZmYsIDApO1xuIFx0XHRcdGJyZWFrO1xuQEAgLTM2NTcsNiAmIzQzOzM3NjksMzUgQEAgc3RhdGljIHZvaWQgcnRsX2h3X3N0YXJ0XzgxNjhlcF8zKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuIFx0cjgxNjhfbWFjX29jcF9tb2RpZnkodHAsIDB4ZTg2MCwgMHgwMDAwLCAweDAwODApO1xuIH1cbiBcbiYjNDM7c3RhdGljIHZvaWQgcnRsX2xvd3Bvd2VyX2hpZGRlbl9mdW5jdGlvbnMoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG4mIzQzO3tcbiYjNDM7XHR1bnNpZ25lZCBpbnQgc2xvdCA9IFBDSV9TTE9UKHBkZXYtXHUwMDNlZGV2Zm4pO1xuJiM0MztcdHN0cnVjdCBwY2lfYnVzICpidXMgPSBwZGV2LVx1MDAzZWJ1cztcbiYjNDM7XHR1bnNpZ25lZCBpbnQgZGV2Zm47XG4mIzQzO1x0aW50IGZ1bmM7XG4mIzQzO1x0aW50IHJldDtcbiYjNDM7XHR1MzIgdmFsO1xuJiM0MztcbiYjNDM7XHRmb3IgKGZ1bmMgPSAyOyBmdW5jIFx1MDAzYyA4OyBmdW5jJiM0MzsmIzQzOykge1xuJiM0MztcdFx0ZGV2Zm4gPSBQQ0lfREVWRk4oc2xvdCwgZnVuYyk7XG4mIzQzO1xuJiM0MztcdFx0cmV0ID0gcGNpX2J1c19yZWFkX2NvbmZpZ19kd29yZChidXMsIGRldmZuLCBSVEw4MTE2QUZfRlVOQ19QTV9DU1IsIFx1MDAyNnZhbCk7XG4mIzQzO1x0XHRpZiAoIXJldCBcdTAwMjZcdTAwMjYgIVBDSV9QT1NTSUJMRV9FUlJPUih2YWwpKSB7XG4mIzQzO1x0XHRcdHZhbCBcdTAwMjY9IH5QQ0lfUE1fQ1RSTF9QTUVfU1RBVFVTO1xuJiM0MztcdFx0XHR2YWwgXHUwMDI2PSB+KFBDSV9QTV9DVFJMX1NUQVRFX01BU0sgfCBQQ0lfUE1fQ1RSTF9QTUVfRU5BQkxFKTtcbiYjNDM7XHRcdFx0dmFsIHw9IChSVExfUE1fRDNIT1QgfCBQQ0lfUE1fQ1RSTF9QTUVfRU5BQkxFKTtcbiYjNDM7XHRcdFx0cGNpX2J1c193cml0ZV9jb25maWdfZHdvcmQoYnVzLCBkZXZmbiwgUlRMODExNkFGX0ZVTkNfUE1fQ1NSLCB2YWwpO1xuJiM0MztcdFx0fVxuJiM0MztcbiYjNDM7XHRcdHJldCA9IHBjaV9idXNfcmVhZF9jb25maWdfZHdvcmQoYnVzLCBkZXZmbiwgUlRMODExNkFGX0ZVTkNfRVhQX0xOS0NUTCwgXHUwMDI2dmFsKTtcbiYjNDM7XHRcdGlmICghcmV0IFx1MDAyNlx1MDAyNiAhUENJX1BPU1NJQkxFX0VSUk9SKHZhbCkpIHtcbiYjNDM7XHRcdFx0dmFsIFx1MDAyNj0gfigoUENJX0VYUF9MTktTVEFfTEJNUyB8IFBDSV9FWFBfTE5LU1RBX0xBQlMpIFx1MDAzY1x1MDAzYyAxNik7XG4mIzQzO1x0XHRcdHZhbCB8PSBQQ0lfRVhQX0xOS0NUTF9BU1BNQztcbiYjNDM7XHRcdFx0cGNpX2J1c193cml0ZV9jb25maWdfZHdvcmQoYnVzLCBkZXZmbiwgUlRMODExNkFGX0ZVTkNfRVhQX0xOS0NUTCwgdmFsKTtcbiYjNDM7XHRcdH1cbiYjNDM7XHR9XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIHZvaWQgcnRsX2h3X3N0YXJ0XzgxMTcoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG4ge1xuIFx0c3RhdGljIGNvbnN0IHN0cnVjdCBlcGh5X2luZm8gZV9pbmZvXzgxMTdbXSA9IHtcbkBAIC0zNjkzLDEyICYjNDM7MzgzNCwxNCBAQCBzdGF0aWMgdm9pZCBydGxfaHdfc3RhcnRfODExNyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbiBcbiBcdHJ0bF9wY2llX3N0YXRlX2wybDNfZGlzYWJsZSh0cCk7XG4gXG4tXHRyZ19zYXdfY250ID0gcGh5X3JlYWRfcGFnZWQodHAtXHUwMDNlcGh5ZGV2LCAweDBjNDIsIDB4MTMpIFx1MDAyNiAweDNmZmY7XG4tXHRpZiAocmdfc2F3X2NudCBcdTAwM2UgMCkge1xuLVx0XHR1MTYgc3dfY250XzFtc19pbmk7XG4mIzQzO1x0aWYgKHRwLVx1MDAzZXBoeWRldikge1xuJiM0MztcdFx0cmdfc2F3X2NudCA9IHBoeV9yZWFkX3BhZ2VkKHRwLVx1MDAzZXBoeWRldiwgMHgwYzQyLCAweDEzKSBcdTAwMjYgMHgzZmZmO1xuJiM0MztcdFx0aWYgKHJnX3Nhd19jbnQgXHUwMDNlIDApIHtcbiYjNDM7XHRcdFx0dTE2IHN3X2NudF8xbXNfaW5pO1xuIFxuLVx0XHRzd19jbnRfMW1zX2luaSA9ICgxNjAwMDAwMCAvIHJnX3Nhd19jbnQpIFx1MDAyNiAweDBmZmY7XG4tXHRcdHI4MTY4X21hY19vY3BfbW9kaWZ5KHRwLCAweGQ0MTIsIDB4MGZmZiwgc3dfY250XzFtc19pbmkpO1xuJiM0MztcdFx0XHRzd19jbnRfMW1zX2luaSA9ICgxNjAwMDAwMCAvIHJnX3Nhd19jbnQpIFx1MDAyNiAweDBmZmY7XG4mIzQzO1x0XHRcdHI4MTY4X21hY19vY3BfbW9kaWZ5KHRwLCAweGQ0MTIsIDB4MGZmZiwgc3dfY250XzFtc19pbmkpO1xuJiM0MztcdFx0fVxuIFx0fVxuIFxuIFx0cjgxNjhfbWFjX29jcF9tb2RpZnkodHAsIDB4ZTA1NiwgMHgwMGYwLCAweDAwMDApO1xuQEAgLTM3MTEsNiAmIzQzOzM4NTQsOSBAQCBzdGF0aWMgdm9pZCBydGxfaHdfc3RhcnRfODExNyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbiBcdHI4MTY4X21hY19vY3Bfd3JpdGUodHAsIDB4YzA5NCwgMHgwMDAwKTtcbiBcdHI4MTY4X21hY19vY3Bfd3JpdGUodHAsIDB4YzA5ZSwgMHgwMDAwKTtcbiBcbiYjNDM7XHRpZiAocnRsX2lzXzgxMTZhZih0cCkpXG4mIzQzO1x0XHRydGxfbG93cG93ZXJfaGlkZGVuX2Z1bmN0aW9ucyh0cC1cdTAwM2VwY2lfZGV2KTtcbiYjNDM7XG4gXHQvKiBmaXJtd2FyZSBpcyBmb3IgTUFDIG9ubHkgKi9cbiBcdHI4MTY5X2FwcGx5X2Zpcm13YXJlKHRwKTtcbiB9XG5AQCAtNDEzOSwxMiAmIzQzOzQyODUsMjUgQEAgc3RhdGljIHZvaWQgcnRsX2h3X3N0YXJ0KHN0cnVjdCAgcnRsODE2OV9wcml2YXRlICp0cClcbiBzdGF0aWMgaW50IHJ0bDgxNjlfY2hhbmdlX210dShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBpbnQgbmV3X210dSlcbiB7XG4gXHRzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCA9IG5ldGRldl9wcml2KGRldik7XG4mIzQzO1x0Ym9vbCBqdW1ib19iZWZvcmUgPSBkZXYtXHUwMDNlbXR1IFx1MDAzZSBFVEhfREFUQV9MRU47XG4mIzQzO1x0Ym9vbCBqdW1ib19hZnRlciA9IG5ld19tdHUgXHUwMDNlIEVUSF9EQVRBX0xFTjtcbiBcbiBcdFdSSVRFX09OQ0UoZGV2LVx1MDAzZW10dSwgbmV3X210dSk7XG4gXHRuZXRkZXZfdXBkYXRlX2ZlYXR1cmVzKGRldik7XG4gXHRydGxfanVtYm9fY29uZmlnKHRwKTtcbiBcdHJ0bF9zZXRfZWVlX3R4aWRsZV90aW1lcih0cCk7XG4gXG4mIzQzO1x0aWYgKGp1bWJvX2JlZm9yZSAhPSBqdW1ib19hZnRlcikge1xuJiM0MztcdFx0dW5zaWduZWQgbG9uZyBjYXBzID0gdHAtXHUwMDNlcGh5bGlua19jb25maWcubWFjX2NhcGFiaWxpdGllcztcbiYjNDM7XG4mIzQzO1x0XHRpZiAoanVtYm9fYWZ0ZXIpXG4mIzQzO1x0XHRcdGNhcHMgXHUwMDI2PSB+KE1BQ19TWU1fUEFVU0UgfCBNQUNfQVNZTV9QQVVTRSk7XG4mIzQzO1x0XHRlbHNlXG4mIzQzO1x0XHRcdGNhcHMgfD0gKE1BQ19TWU1fUEFVU0UgfCBNQUNfQVNZTV9QQVVTRSk7XG4mIzQzO1xuJiM0MztcdFx0cGh5bGlua19zZXRfbWFjX2NhcGFiaWxpdGllcyh0cC1cdTAwM2VwaHlsaW5rLCBjYXBzKTtcbiYjNDM7XHR9XG4mIzQzO1xuIFx0cmV0dXJuIDA7XG4gfVxuIFxuQEAgLTQ4NjksOCAmIzQzOzUwMjgsMTMgQEAgc3RhdGljIGlycXJldHVybl90IHJ0bDgxNjlfaW50ZXJydXB0KGludCBpcnEsIHZvaWQgKmRldl9pbnN0YW5jZSlcbiBcdFx0Z290byBvdXQ7XG4gXHR9XG4gXG4tXHRpZiAoc3RhdHVzIFx1MDAyNiBMaW5rQ2hnKVxuLVx0XHRwaHlfbWFjX2ludGVycnVwdCh0cC1cdTAwM2VwaHlkZXYpO1xuJiM0MztcdGlmIChzdGF0dXMgXHUwMDI2IExpbmtDaGcpIHtcbiYjNDM7XHRcdGlmICh0cC1cdTAwM2VwaHlkZXYpXG4mIzQzO1x0XHRcdHBoeV9tYWNfaW50ZXJydXB0KHRwLVx1MDAzZXBoeWRldik7XG4mIzQzO1x0XHRlbHNlIGlmICh0cC1cdTAwM2VzZnBfbW9kZSlcbiYjNDM7XHRcdFx0cGh5bGlua19tYWNfY2hhbmdlKHRwLVx1MDAzZXBoeWxpbmssXG4mIzQzO1x0XHRcdFx0XHQgICAhIShSVExfUjgodHAsIFBIWXN0YXR1cykgXHUwMDI2IExpbmtTdGF0dXMpKTtcbiYjNDM7XHR9XG4gXG4gXHRydGxfaXJxX2Rpc2FibGUodHApO1xuIFx0bmFwaV9zY2hlZHVsZShcdTAwMjZ0cC1cdTAwM2VuYXBpKTtcbkBAIC00OTMwLDkgJiM0Mzs1MDk0LDYgQEAgc3RhdGljIGludCBydGw4MTY5X3BvbGwoc3RydWN0IG5hcGlfc3RydWN0ICpuYXBpLCBpbnQgYnVkZ2V0KVxuIFxuIHN0YXRpYyB2b2lkIHJ0bF9lbmFibGVfdHhfbHBpKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCBib29sIGVuYWJsZSlcbiB7XG4tXHRpZiAoIXJ0bF9zdXBwb3J0c19lZWUodHApKVxuLVx0XHRyZXR1cm47XG4tXG4gXHRzd2l0Y2ggKHRwLVx1MDAzZW1hY192ZXJzaW9uKSB7XG4gXHRjYXNlIFJUTF9HSUdBX01BQ19WRVJfMzQgLi4uIFJUTF9HSUdBX01BQ19WRVJfNTI6XG4gXHRcdC8qIEFkanVzdCBFRUUgTEVEIGZyZXF1ZW5jeSAqL1xuQEAgLTQ5NjMsNDAgJiM0Mzs1MTI0LDE1IEBAIHN0YXRpYyB2b2lkIHJ0bF9lbmFibGVfdHhfbHBpKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCBib29sIGVuYWJsZSlcbiBcdH1cbiB9XG4gXG4tc3RhdGljIHZvaWQgcjgxNjlfcGh5bGlua19oYW5kbGVyKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxuLXtcbi1cdHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwID0gbmV0ZGV2X3ByaXYobmRldik7XG4tXHRzdHJ1Y3QgZGV2aWNlICpkID0gdHBfdG9fZGV2KHRwKTtcbi1cbi1cdGlmIChuZXRpZl9jYXJyaWVyX29rKG5kZXYpKSB7XG4tXHRcdHJ0bF9saW5rX2NoZ19wYXRjaCh0cCk7XG4tXHRcdHJ0bF9lbmFibGVfdHhfbHBpKHRwLCB0cC1cdTAwM2VwaHlkZXYtXHUwMDNlZW5hYmxlX3R4X2xwaSk7XG4tXHRcdHBtX3JlcXVlc3RfcmVzdW1lKGQpO1xuLVx0fSBlbHNlIHtcbi1cdFx0cG1fcnVudGltZV9pZGxlKGQpO1xuLVx0fVxuLVxuLVx0cGh5X3ByaW50X3N0YXR1cyh0cC1cdTAwM2VwaHlkZXYpO1xuLX1cbi1cbiBzdGF0aWMgaW50IHI4MTY5X3BoeV9jb25uZWN0KHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuIHtcbi1cdHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYgPSB0cC1cdTAwM2VwaHlkZXY7XG4tXHRwaHlfaW50ZXJmYWNlX3QgcGh5X21vZGU7XG4gXHRpbnQgcmV0O1xuIFxuLVx0cGh5X21vZGUgPSB0cC1cdTAwM2VzdXBwb3J0c19nbWlpID8gUEhZX0lOVEVSRkFDRV9NT0RFX0dNSUkgOlxuLVx0XHQgICBQSFlfSU5URVJGQUNFX01PREVfTUlJO1xuLVxuLVx0cmV0ID0gcGh5X2Nvbm5lY3RfZGlyZWN0KHRwLVx1MDAzZWRldiwgcGh5ZGV2LCByODE2OV9waHlsaW5rX2hhbmRsZXIsXG4tXHRcdFx0XHQgcGh5X21vZGUpO1xuLVx0aWYgKHJldClcbiYjNDM7XHRyZXQgPSBwaHlsaW5rX2Nvbm5lY3RfcGh5KHRwLVx1MDAzZXBoeWxpbmssIHRwLVx1MDAzZXBoeWRldik7XG4mIzQzO1x0aWYgKHJldCkge1xuJiM0MztcdFx0bmV0ZGV2X2Vycih0cC1cdTAwM2VkZXYsIFwmIzM0O2ZhaWxlZCB0byBjb25uZWN0IHBoeVxcblwmIzM0Oyk7XG4gXHRcdHJldHVybiByZXQ7XG4tXG4tXHRpZiAoIXRwLVx1MDAzZXN1cHBvcnRzX2dtaWkpXG4tXHRcdHBoeV9zZXRfbWF4X3NwZWVkKHBoeWRldiwgU1BFRURfMTAwKTtcbi1cbi1cdHBoeV9hdHRhY2hlZF9pbmZvKHBoeWRldik7XG4mIzQzO1x0fVxuIFxuIFx0cmV0dXJuIDA7XG4gfVxuQEAgLTUwMDcsMTAgJiM0Mzs1MTQzLDEwIEBAIHN0YXRpYyB2b2lkIHJ0bDgxNjlfZG93bihzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbiBcdC8qIENsZWFyIGFsbCB0YXNrIGZsYWdzICovXG4gXHRiaXRtYXBfemVybyh0cC1cdTAwM2V3ay5mbGFncywgUlRMX0ZMQUdfTUFYKTtcbiBcbi1cdHBoeV9zdG9wKHRwLVx1MDAzZXBoeWRldik7XG4mIzQzO1x0cGh5bGlua19zdG9wKHRwLVx1MDAzZXBoeWxpbmspO1xuIFxuIFx0LyogUmVzZXQgU2VyRGVzIFBIWSB0byBicmluZyBkb3duIGZpYmVyIGxpbmsgKi9cbi1cdGlmICh0cC1cdTAwM2VzZnBfbW9kZSlcbiYjNDM7XHRpZiAodHAtXHUwMDNlc2ZwX21vZGUgPT0gUlRMX1NGUF84MTI3X0FURilcbiBcdFx0cnRsX3NmcF9yZXNldCh0cCk7XG4gXG4gXHRydGw4MTY5X3VwZGF0ZV9jb3VudGVycyh0cCk7XG5AQCAtNTAzMiwxNCAmIzQzOzUxNjgsMTQgQEAgc3RhdGljIHZvaWQgcnRsODE2OV91cChzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbiBcdFx0cnRsODE2OF9kcml2ZXJfc3RhcnQodHApO1xuIFxuIFx0cGNpX3NldF9tYXN0ZXIodHAtXHUwMDNlcGNpX2Rldik7XG4tXHRwaHlfaW5pdF9odyh0cC1cdTAwM2VwaHlkZXYpO1xuLVx0cGh5X3Jlc3VtZSh0cC1cdTAwM2VwaHlkZXYpO1xuLVx0cnRsODE2OV9pbml0X3BoeSh0cCk7XG4mIzQzO1x0aWYgKHRwLVx1MDAzZXBoeWRldilcbiYjNDM7XHRcdHJ0bDgxNjlfaW5pdF9waHkodHApO1xuJiM0MztcbiBcdG5hcGlfZW5hYmxlKFx1MDAyNnRwLVx1MDAzZW5hcGkpO1xuIFx0ZW5hYmxlX3dvcmsoXHUwMDI2dHAtXHUwMDNld2sud29yayk7XG4gXHRydGxfcmVzZXRfd29yayh0cCk7XG4gXG4tXHRwaHlfc3RhcnQodHAtXHUwMDNlcGh5ZGV2KTtcbiYjNDM7XHRwaHlsaW5rX3N0YXJ0KHRwLVx1MDAzZXBoeWxpbmspO1xuIH1cbiBcbiBzdGF0aWMgaW50IHJ0bDgxNjlfY2xvc2Uoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbkBAIC01MDU1LDcgJiM0Mzs1MTkxLDcgQEAgc3RhdGljIGludCBydGw4MTY5X2Nsb3NlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4gXG4gXHRmcmVlX2lycSh0cC1cdTAwM2VpcnEsIHRwKTtcbiBcbi1cdHBoeV9kaXNjb25uZWN0KHRwLVx1MDAzZXBoeWRldik7XG4mIzQzO1x0cGh5bGlua19kaXNjb25uZWN0X3BoeSh0cC1cdTAwM2VwaHlsaW5rKTtcbiBcbiBcdGRtYV9mcmVlX2NvaGVyZW50KFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBSODE2OV9SWF9SSU5HX0JZVEVTLCB0cC1cdTAwM2VSeERlc2NBcnJheSxcbiBcdFx0XHQgIHRwLVx1MDAzZVJ4UGh5QWRkcik7XG5AQCAtNTExMiw5ICYjNDM7NTI0OCwxMSBAQCBzdGF0aWMgaW50IHJ0bF9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4gXHRpZiAocmV0dmFsIFx1MDAzYyAwKVxuIFx0XHRnb3RvIGVycl9yZWxlYXNlX2Z3XzI7XG4gXG4tXHRyZXR2YWwgPSByODE2OV9waHlfY29ubmVjdCh0cCk7XG4tXHRpZiAocmV0dmFsKVxuLVx0XHRnb3RvIGVycl9mcmVlX2lycTtcbiYjNDM7XHRpZiAodHAtXHUwMDNlcGh5ZGV2KSB7XG4mIzQzO1x0XHRyZXR2YWwgPSByODE2OV9waHlfY29ubmVjdCh0cCk7XG4mIzQzO1x0XHRpZiAocmV0dmFsKVxuJiM0MztcdFx0XHRnb3RvIGVycl9mcmVlX2lycTtcbiYjNDM7XHR9XG4gXG4gXHRydGw4MTY5X3VwKHRwKTtcbiBcdHJ0bDgxNjlfaW5pdF9jb3VudGVyX29mZnNldHModHApO1xuQEAgLTUxOTAsOCAmIzQzOzUzMjgsMTEgQEAgc3RhdGljIGludCBydGw4MTY5X3J1bnRpbWVfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldilcbiBcdHJ0bF9yYXJfc2V0KHRwLCB0cC1cdTAwM2VkZXYtXHUwMDNlZGV2X2FkZHIpO1xuIFx0X19ydGw4MTY5X3NldF93b2wodHAsIHRwLVx1MDAzZXNhdmVkX3dvbG9wdHMpO1xuIFxuLVx0aWYgKHRwLVx1MDAzZVR4RGVzY0FycmF5KVxuJiM0MztcdGlmICh0cC1cdTAwM2VUeERlc2NBcnJheSkge1xuJiM0MztcdFx0cnRubF9sb2NrKCk7XG4gXHRcdHJ0bDgxNjlfdXAodHApO1xuJiM0MztcdFx0cnRubF91bmxvY2soKTtcbiYjNDM7XHR9XG4gXG4gXHRuZXRpZl9kZXZpY2VfYXR0YWNoKHRwLVx1MDAzZWRldik7XG4gXG5AQCAtNTI4OCw2ICYjNDM7NTQyOSw3IEBAIHN0YXRpYyB2b2lkIHJ0bF9yZW1vdmVfb25lKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxuIFx0XHRyODE2OV9yZW1vdmVfbGVkcyh0cC1cdTAwM2VsZWRzKTtcbiBcbiBcdHVucmVnaXN0ZXJfbmV0ZGV2KHRwLVx1MDAzZWRldik7XG4mIzQzO1x0cGh5bGlua19kZXN0cm95KHRwLVx1MDAzZXBoeWxpbmspO1xuIFxuIFx0aWYgKHRwLVx1MDAzZWRhc2hfdHlwZSAhPSBSVExfREFTSF9OT05FKVxuIFx0XHRydGw4MTY4X2RyaXZlcl9zdG9wKHRwKTtcbkBAIC01MzEwLDcgJiM0Mzs1NDUyLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBydGxfbmV0ZGV2X29wcyA9IHtcbiBcdC5uZG9fZml4X2ZlYXR1cmVzXHQ9IHJ0bDgxNjlfZml4X2ZlYXR1cmVzLFxuIFx0Lm5kb19zZXRfZmVhdHVyZXNcdD0gcnRsODE2OV9zZXRfZmVhdHVyZXMsXG4gXHQubmRvX3NldF9tYWNfYWRkcmVzc1x0PSBydGxfc2V0X21hY19hZGRyZXNzLFxuLVx0Lm5kb19ldGhfaW9jdGxcdFx0PSBwaHlfZG9faW9jdGxfcnVubmluZyxcbiYjNDM7XHQubmRvX2V0aF9pb2N0bFx0XHQ9IHJ0bDgxNjlfaW9jdGwsXG4gXHQubmRvX3NldF9yeF9tb2RlXHQ9IHJ0bF9zZXRfcnhfbW9kZSxcbiAjaWZkZWYgQ09ORklHX05FVF9QT0xMX0NPTlRST0xMRVJcbiBcdC5uZG9fcG9sbF9jb250cm9sbGVyXHQ9IHJ0bDgxNjlfbmV0cG9sbCxcbkBAIC01NDc0LDE2ICYjNDM7NTYxNiw2IEBAIHN0YXRpYyBpbnQgcjgxNjlfbWRpb19yZWdpc3RlcihzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbiBcdFx0cmV0dXJuIC1FVU5BVENIO1xuIFx0fVxuIFxuLVx0dHAtXHUwMDNlcGh5ZGV2LVx1MDAzZW1hY19tYW5hZ2VkX3BtID0gdHJ1ZTtcbi1cdGlmIChydGxfc3VwcG9ydHNfZWVlKHRwKSlcbi1cdFx0cGh5X3N1cHBvcnRfZWVlKHRwLVx1MDAzZXBoeWRldik7XG4tXHRwaHlfc3VwcG9ydF9hc3ltX3BhdXNlKHRwLVx1MDAzZXBoeWRldik7XG4tXG4tXHQvKiBtaW1pYyBiZWhhdmlvciBvZiByODEyNS9yODEyNiB2ZW5kb3IgZHJpdmVycyAqL1xuLVx0aWYgKHRwLVx1MDAzZW1hY192ZXJzaW9uID09IFJUTF9HSUdBX01BQ19WRVJfNjEpXG4tXHRcdHBoeV9kaXNhYmxlX2VlZV9tb2RlKHRwLVx1MDAzZXBoeWRldixcbi1cdFx0XHRcdCAgICAgRVRIVE9PTF9MSU5LX01PREVfMjUwMGJhc2VUX0Z1bGxfQklUKTtcbi1cbiBcdC8qIFBIWSB3aWxsIGJlIHdva2VuIHVwIGluIHJ0bF9vcGVuKCkgKi9cbiBcdHBoeV9zdXNwZW5kKHRwLVx1MDAzZXBoeWRldik7XG4gXG5AQCAtNTU5OSw2ICYjNDM7NTczMSwyNDIgQEAgc3RhdGljIGJvb2wgcnRsX2FzcG1faXNfc2FmZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbiBcdHJldHVybiBmYWxzZTtcbiB9XG4gXG4mIzQzO3N0YXRpYyB2b2lkIHJ0bF9tYWNfbGlua19kb3duKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLCB1bnNpZ25lZCBpbnQgbW9kZSxcbiYjNDM7XHRcdFx0ICAgICAgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwID0gY29udGFpbmVyX29mKGNvbmZpZywgc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSwgcGh5bGlua19jb25maWcpO1xuJiM0MztcbiYjNDM7XHR0cC1cdTAwM2VzcGVlZCA9IFNQRUVEX1VOS05PV047XG4mIzQzO1x0cG1fcnVudGltZV9pZGxlKHRwX3RvX2Rldih0cCkpO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgdm9pZCBydGxfbWFjX2xpbmtfdXAoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXG4mIzQzO1x0XHRcdCAgICB1bnNpZ25lZCBpbnQgbW9kZSwgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSxcbiYjNDM7XHRcdFx0ICAgIGludCBzcGVlZCwgaW50IGR1cGxleCwgYm9vbCB0eF9wYXVzZSwgYm9vbCByeF9wYXVzZSlcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwID0gY29udGFpbmVyX29mKGNvbmZpZywgc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSwgcGh5bGlua19jb25maWcpO1xuJiM0MztcdHN0cnVjdCBkZXZpY2UgKmQgPSB0cF90b19kZXYodHApO1xuJiM0MztcbiYjNDM7XHR0cC1cdTAwM2VzcGVlZCA9IHNwZWVkO1xuJiM0MztcdHJ0bF9saW5rX2NoZ19wYXRjaCh0cCwgc3BlZWQpO1xuJiM0MztcbiYjNDM7XHRwbV9yZXF1ZXN0X3Jlc3VtZShkKTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIHN0cnVjdCBwaHlsaW5rX3BjcyAqcnRsX21hY19zZWxlY3RfcGNzKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLFxuJiM0MztcdFx0XHRcdFx0ICAgICAgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwID0gY29udGFpbmVyX29mKGNvbmZpZywgc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSwgcGh5bGlua19jb25maWcpO1xuJiM0MztcbiYjNDM7XHRpZiAoIXRwLVx1MDAzZXBjcy5vcHMpXG4mIzQzO1x0XHRyZXR1cm4gTlVMTDtcbiYjNDM7XG4mIzQzO1x0aWYgKGludGVyZmFjZSA9PSBQSFlfSU5URVJGQUNFX01PREVfMTAwMEJBU0VYIHx8XG4mIzQzO1x0ICAgIGludGVyZmFjZSA9PSBQSFlfSU5URVJGQUNFX01PREVfMTBHQkFTRVIpXG4mIzQzO1x0XHRyZXR1cm4gXHUwMDI2dHAtXHUwMDNlcGNzO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gTlVMTDtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIHZvaWQgcnRsX21hY19jb25maWcoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsIHVuc2lnbmVkIGludCBtb2RlLFxuJiM0MztcdFx0XHQgICBjb25zdCBzdHJ1Y3QgcGh5bGlua19saW5rX3N0YXRlICpzdGF0ZSlcbiYjNDM7e1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgdTE2IHJ0bDgxNjlfc2RzX3JlYWQoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIHUxNiBzZHNfcmVnKVxuJiM0Mzt7XG4mIzQzO1x0dW5zaWduZWQgbG9uZyBmbGFncztcbiYjNDM7XHR1MTYgdmFsID0gMDtcbiYjNDM7XG4mIzQzO1x0cmF3X3NwaW5fbG9ja19pcnFzYXZlKFx1MDAyNnRwLVx1MDAzZW1hY19vY3BfbG9jaywgZmxhZ3MpO1xuJiM0MztcdF9fcjgxNjhfbWFjX29jcF93cml0ZSh0cCwgT0NQX1NEU19BRERSX1JFRywgc2RzX3JlZyk7XG4mIzQzO1x0X19yODE2OF9tYWNfb2NwX3dyaXRlKHRwLCBPQ1BfU0RTX0NNRF9SRUcsIFNEU19DTURfUkVBRCk7XG4mIzQzO1x0dmFsID0gX19yODE2OF9tYWNfb2NwX3JlYWQodHAsIE9DUF9TRFNfREFUQV9SRUcpO1xuJiM0MztcdHJhd19zcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNnRwLVx1MDAzZW1hY19vY3BfbG9jaywgZmxhZ3MpO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gdmFsO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgdm9pZCBydGw4MTY5X3Bjc19nZXRfc3RhdGUoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MsXG4mIzQzO1x0XHRcdFx0ICB1bnNpZ25lZCBpbnQgbmVnX21vZGUsXG4mIzQzO1x0XHRcdFx0ICBzdHJ1Y3QgcGh5bGlua19saW5rX3N0YXRlICpzdGF0ZSlcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwID0gY29udGFpbmVyX29mKHBjcywgc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSwgcGNzKTtcbiYjNDM7XG4mIzQzO1x0aWYgKHRwLVx1MDAzZXNmcF9tb2RlID09IFJUTF9TRlBfODEyN19BVEYpIHtcbiYjNDM7XHRcdHUxNiBzdGF0MTtcbiYjNDM7XG4mIzQzO1x0XHRzdGF0MSA9IHJ0bDgxNjlfc2RzX3JlYWQodHAsIFJUTF9TRFNfQzQ1X0JBU0UgJiM0MzsgTURJT19TVEFUMSk7XG4mIzQzO1xuJiM0MztcdFx0aWYgKCEoc3RhdDEgXHUwMDI2IE1ESU9fU1RBVDFfTFNUQVRVUykpXG4mIzQzO1x0XHRcdHN0YXQxID0gcnRsODE2OV9zZHNfcmVhZCh0cCwgUlRMX1NEU19DNDVfQkFTRSAmIzQzOyBNRElPX1NUQVQxKTtcbiYjNDM7XG4mIzQzO1x0XHRzdGF0ZS1cdTAwM2VsaW5rID0gISEoc3RhdDEgXHUwMDI2IE1ESU9fU1RBVDFfTFNUQVRVUyk7XG4mIzQzO1x0XHRpZiAoIXN0YXRlLVx1MDAzZWxpbmspXG4mIzQzO1x0XHRcdHJldHVybjtcbiYjNDM7XG4mIzQzO1x0XHRzdGF0ZS1cdTAwM2VkdXBsZXggPSBEVVBMRVhfRlVMTDtcbiYjNDM7XHRcdHN0YXRlLVx1MDAzZXNwZWVkID0gU1BFRURfMTAwMDA7XG4mIzQzO1x0fSBlbHNlIHtcbiYjNDM7XHRcdHUxNiBibXNyLCBscGE7XG4mIzQzO1xuJiM0MztcdFx0Ym1zciA9IHJ0bDgxNjlfc2RzX3JlYWQodHAsIFJUTF9TRFNfQzIyX0JBU0UgJiM0MzsgTUlJX0JNU1IpO1xuJiM0MztcdFx0bHBhID0gcnRsODE2OV9zZHNfcmVhZCh0cCwgUlRMX1NEU19DMjJfQkFTRSAmIzQzOyBNSUlfTFBBKTtcbiYjNDM7XHRcdHBoeWxpbmtfbWlpX2MyMl9wY3NfZGVjb2RlX3N0YXRlKHN0YXRlLCBuZWdfbW9kZSwgYm1zciwgbHBhKTtcbiYjNDM7XHR9XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyBpbnQgcnRsODE2OV9wY3NfY29uZmlnKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzLCB1bnNpZ25lZCBpbnQgbW9kZSxcbiYjNDM7XHRcdFx0ICAgICAgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSxcbiYjNDM7XHRcdFx0ICAgICAgY29uc3QgdW5zaWduZWQgbG9uZyAqYWR2ZXJ0aXNpbmcsXG4mIzQzO1x0XHRcdCAgICAgIGJvb2wgcGVybWl0X3BhdXNlX3RvX21hYylcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwID0gY29udGFpbmVyX29mKHBjcywgc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSwgcGNzKTtcbiYjNDM7XG4mIzQzO1x0aWYgKHRwLVx1MDAzZXNmcF9tb2RlID09IFJUTF9TRlBfODEyN19BVEYpIHtcbiYjNDM7XHRcdHN3aXRjaCAoaW50ZXJmYWNlKSB7XG4mIzQzO1x0XHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV8xMEdCQVNFUjpcbiYjNDM7XHRcdFx0cjgxMjdfc2ZwX2luaXRfMTBnKHRwKTtcbiYjNDM7XHRcdFx0YnJlYWs7XG4mIzQzO1x0XHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV8xMDAwQkFTRVg6XG4mIzQzO1x0XHRcdHI4MTI3X3NmcF9pbml0XzFnKHRwKTtcbiYjNDM7XHRcdFx0YnJlYWs7XG4mIzQzO1x0XHRkZWZhdWx0OlxuJiM0MztcdFx0XHRuZXRkZXZfZXJyKHRwLVx1MDAzZWRldiwgXCYjMzQ7VW5zdXBwb3J0ZWQgU0ZQIGludGVyZmFjZSBtb2RlOiAlc1xcblwmIzM0OyxcbiYjNDM7XHRcdFx0XHQgICBwaHlfbW9kZXMoaW50ZXJmYWNlKSk7XG4mIzQzO1x0XHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbiYjNDM7XHRcdH1cbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdHJldHVybiAwO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgaW50IHJ0bDgxNjlfcGNzX3ZhbGlkYXRlKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzLCB1bnNpZ25lZCBsb25nICpzdXBwb3J0ZWQsXG4mIzQzO1x0XHRcdFx0Y29uc3Qgc3RydWN0IHBoeWxpbmtfbGlua19zdGF0ZSAqc3RhdGUpXG4mIzQzO3tcbiYjNDM7XHRyZXR1cm4gMDtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIHZvaWQgcnRsODE2OV9wY3NfYW5fcmVzdGFydChzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcylcbiYjNDM7e1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgdm9pZCBydGxfbWFjX2Rpc2FibGVfdHhfbHBpKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAgPSBjb250YWluZXJfb2YoY29uZmlnLCBzdHJ1Y3QgcnRsODE2OV9wcml2YXRlLCBwaHlsaW5rX2NvbmZpZyk7XG4mIzQzO1xuJiM0MztcdHJ0bF9lbmFibGVfdHhfbHBpKHRwLCBmYWxzZSk7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyBpbnQgcnRsX21hY19lbmFibGVfdHhfbHBpKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLCB1MzIgdGltZXIsIGJvb2wgdHhfY2xrX3N0b3ApXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCA9IGNvbnRhaW5lcl9vZihjb25maWcsIHN0cnVjdCBydGw4MTY5X3ByaXZhdGUsIHBoeWxpbmtfY29uZmlnKTtcbiYjNDM7XG4mIzQzO1x0cnRsX2VuYWJsZV90eF9scGkodHAsIHRydWUpO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gMDtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBwaHlsaW5rX21hY19vcHMgcnRsX3BoeWxpbmtfbWFjX29wcyA9IHtcbiYjNDM7XHQubWFjX3NlbGVjdF9wY3MgPSBydGxfbWFjX3NlbGVjdF9wY3MsXG4mIzQzO1x0Lm1hY19jb25maWcgPSBydGxfbWFjX2NvbmZpZyxcbiYjNDM7XHQubWFjX2xpbmtfZG93biAgPSBydGxfbWFjX2xpbmtfZG93bixcbiYjNDM7XHQubWFjX2xpbmtfdXAgICAgPSBydGxfbWFjX2xpbmtfdXAsXG4mIzQzO1x0Lm1hY19kaXNhYmxlX3R4X2xwaSA9IHJ0bF9tYWNfZGlzYWJsZV90eF9scGksXG4mIzQzO1x0Lm1hY19lbmFibGVfdHhfbHBpID0gcnRsX21hY19lbmFibGVfdHhfbHBpLFxuJiM0Mzt9O1xuJiM0MztcbiYjNDM7c3RhdGljIHVuc2lnbmVkIGxvbmcgcnRsODE2OV9nZXRfbHBpX2NhcHMoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG4mIzQzO3tcbiYjNDM7XHR1bnNpZ25lZCBsb25nIGNhcHMgPSAwO1xuJiM0MztcbiYjNDM7XHRpZiAoIXJ0bF9zdXBwb3J0c19lZWUodHApIHx8IHRwLVx1MDAzZXNmcF9tb2RlID09IFJUTF9TRlBfODEyN19BVEYpXG4mIzQzO1x0XHRyZXR1cm4gMDtcbiYjNDM7XG4mIzQzO1x0Y2FwcyB8PSBNQUNfMTAwRkQgfCBNQUNfMTAwMEZEO1xuJiM0MztcbiYjNDM7XHQvKiBtaW1pYyBiZWhhdmlvciBvZiByODEyNS9yODEyNiB2ZW5kb3IgZHJpdmVyc1xuJiM0MztcdCAqIFJUTF9HSUdBX01BQ19WRVJfNjEgZG9lc24mIzM5O3Qgc3VwcG9ydCAyLjVHIGVlZVxuJiM0MztcdCAqL1xuJiM0MztcdGlmICh0cC1cdTAwM2VtYWNfdmVyc2lvbiBcdTAwM2U9IFJUTF9HSUdBX01BQ19WRVJfNjMpXG4mIzQzO1x0XHRjYXBzIHw9IE1BQ18yNTAwRkQ7XG4mIzQzO1x0aWYgKHRwLVx1MDAzZW1hY192ZXJzaW9uIFx1MDAzZT0gUlRMX0dJR0FfTUFDX1ZFUl83MClcbiYjNDM7XHRcdGNhcHMgfD0gTUFDXzUwMDBGRDtcbiYjNDM7XHRpZiAodHAtXHUwMDNlbWFjX3ZlcnNpb24gPT0gUlRMX0dJR0FfTUFDX1ZFUl84MClcbiYjNDM7XHRcdGNhcHMgfD0gTUFDXzEwMDAwRkQ7XG4mIzQzO1xuJiM0MztcdHJldHVybiBjYXBzO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IHBoeWxpbmtfcGNzX29wcyByODE2OV9wY3Nfb3BzID0ge1xuJiM0MztcdC5wY3NfdmFsaWRhdGUgPSBydGw4MTY5X3Bjc192YWxpZGF0ZSxcbiYjNDM7XHQucGNzX2dldF9zdGF0ZSA9IHJ0bDgxNjlfcGNzX2dldF9zdGF0ZSxcbiYjNDM7XHQucGNzX2NvbmZpZyA9IHJ0bDgxNjlfcGNzX2NvbmZpZyxcbiYjNDM7XHQucGNzX2FuX3Jlc3RhcnQgPSBydGw4MTY5X3Bjc19hbl9yZXN0YXJ0LFxuJiM0Mzt9O1xuJiM0MztcbiYjNDM7c3RhdGljIGludCBydGxfaW5pdF9waHlsaW5rKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IHBoeWxpbmsgKnBsO1xuJiM0MztcdHBoeV9pbnRlcmZhY2VfdCBwaHlfbW9kZTtcbiYjNDM7XG4mIzQzO1x0dHAtXHUwMDNlcGh5bGlua19jb25maWcuZGV2ID0gXHUwMDI2dHAtXHUwMDNlZGV2LVx1MDAzZWRldjtcbiYjNDM7XHR0cC1cdTAwM2VwaHlsaW5rX2NvbmZpZy50eXBlID0gUEhZTElOS19ORVRERVY7XG4mIzQzO1x0dHAtXHUwMDNlcGh5bGlua19jb25maWcubWFjX21hbmFnZWRfcG0gPSB0cnVlO1xuJiM0MztcdHRwLVx1MDAzZXBoeWxpbmtfY29uZmlnLmxwaV9jYXBhYmlsaXRpZXMgPSBydGw4MTY5X2dldF9scGlfY2Fwcyh0cCk7XG4mIzQzO1x0dHAtXHUwMDNlcGh5bGlua19jb25maWcubWFjX2NhcGFiaWxpdGllcyB8PSBNQUNfQVNZTV9QQVVTRSB8IE1BQ19TWU1fUEFVU0U7XG4mIzQzO1xuJiM0MztcdHN3aXRjaCAodHAtXHUwMDNlc2ZwX21vZGUpIHtcbiYjNDM7XHRjYXNlIFJUTF9TRlBfODE2OF9BRjpcbiYjNDM7XHRcdHRwLVx1MDAzZXBjcy5vcHMgPSBcdTAwMjZyODE2OV9wY3Nfb3BzO1xuJiM0MztcdFx0dHAtXHUwMDNlcGh5bGlua19jb25maWcuZGVmYXVsdF9hbl9pbmJhbmQgPSB0cnVlO1xuJiM0MztcdFx0cGh5X21vZGUgPSBQSFlfSU5URVJGQUNFX01PREVfMTAwMEJBU0VYO1xuJiM0MztcdFx0dHAtXHUwMDNlcGh5bGlua19jb25maWcubWFjX2NhcGFiaWxpdGllcyB8PSBNQUNfMTAwMEZEO1xuJiM0MztcdFx0YnJlYWs7XG4mIzQzO1x0Y2FzZSBSVExfU0ZQXzgxMjdfQVRGOlxuJiM0MztcdFx0dHAtXHUwMDNlcGNzLm9wcyA9IFx1MDAyNnI4MTY5X3Bjc19vcHM7XG4mIzQzO1x0XHRwaHlfbW9kZSA9IFBIWV9JTlRFUkZBQ0VfTU9ERV8xMEdCQVNFUjtcbiYjNDM7XHRcdHRwLVx1MDAzZXBoeWxpbmtfY29uZmlnLmRlZmF1bHRfYW5faW5iYW5kID0gdHJ1ZTtcbiYjNDM7XHRcdHRwLVx1MDAzZXBoeWxpbmtfY29uZmlnLm1hY19jYXBhYmlsaXRpZXMgfD0gTUFDXzEwMDBGRCB8IE1BQ18xMDAwMEZEO1xuJiM0MztcdFx0YnJlYWs7XG4mIzQzO1x0ZGVmYXVsdDpcbiYjNDM7XHRcdHBoeV9tb2RlID0gUEhZX0lOVEVSRkFDRV9NT0RFX0lOVEVSTkFMO1xuJiM0MztcdFx0dHAtXHUwMDNlcGh5bGlua19jb25maWcubWFjX2NhcGFiaWxpdGllcyB8PSBNQUNfMTAgfCBNQUNfMTAwO1xuJiM0MztcbiYjNDM7XHRcdGlmICh0cC1cdTAwM2VtYWNfdmVyc2lvbiA9PSBSVExfR0lHQV9NQUNfVkVSXzgwKVxuJiM0MztcdFx0XHR0cC1cdTAwM2VwaHlsaW5rX2NvbmZpZy5tYWNfY2FwYWJpbGl0aWVzIHw9IE1BQ18xMDAwRkQgfCBNQUNfMjUwMEZEIHxcbiYjNDM7XHRcdFx0XHRcdFx0XHQgICAgICAgTUFDXzUwMDBGRCB8IE1BQ18xMDAwMEZEO1xuJiM0MztcdFx0ZWxzZSBpZiAodHAtXHUwMDNlbWFjX3ZlcnNpb24gPT0gUlRMX0dJR0FfTUFDX1ZFUl83MClcbiYjNDM7XHRcdFx0dHAtXHUwMDNlcGh5bGlua19jb25maWcubWFjX2NhcGFiaWxpdGllcyB8PSBNQUNfMTAwMEZEIHxcbiYjNDM7XHRcdFx0XHRcdFx0XHQgICAgICAgTUFDXzI1MDBGRCB8IE1BQ181MDAwRkQ7XG4mIzQzO1x0XHRlbHNlIGlmICh0cC1cdTAwM2VtYWNfdmVyc2lvbiBcdTAwM2U9IFJUTF9HSUdBX01BQ19WRVJfNjEpXG4mIzQzO1x0XHRcdHRwLVx1MDAzZXBoeWxpbmtfY29uZmlnLm1hY19jYXBhYmlsaXRpZXMgfD0gTUFDXzEwMDBGRCB8IE1BQ18yNTAwRkQ7XG4mIzQzO1x0XHRlbHNlXG4mIzQzO1x0XHRcdGlmICh0cC1cdTAwM2VzdXBwb3J0c19nbWlpKVxuJiM0MztcdFx0XHRcdHRwLVx1MDAzZXBoeWxpbmtfY29uZmlnLm1hY19jYXBhYmlsaXRpZXMgfD0gTUFDXzEwMDBGRDtcbiYjNDM7XG4mIzQzO1x0XHRpZiAodHAtXHUwMDNlbWFjX3ZlcnNpb24gXHUwMDNjIFJUTF9HSUdBX01BQ19WRVJfNjEpXG4mIzQzO1x0XHRcdHBoeV9tb2RlID0gdHAtXHUwMDNlc3VwcG9ydHNfZ21paSA/IFBIWV9JTlRFUkZBQ0VfTU9ERV9HTUlJIDpcbiYjNDM7XHRcdFx0XHQgICBQSFlfSU5URVJGQUNFX01PREVfTUlJO1xuJiM0MztcdFx0ZWxzZVxuJiM0MztcdFx0XHRwaHlfbW9kZSA9IFBIWV9JTlRFUkZBQ0VfTU9ERV9JTlRFUk5BTDtcbiYjNDM7XHRcdGJyZWFrO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0X19zZXRfYml0KHBoeV9tb2RlLCB0cC1cdTAwM2VwaHlsaW5rX2NvbmZpZy5zdXBwb3J0ZWRfaW50ZXJmYWNlcyk7XG4mIzQzO1x0aWYgKHRwLVx1MDAzZXBoeWxpbmtfY29uZmlnLmxwaV9jYXBhYmlsaXRpZXMpXG4mIzQzO1x0XHRfX3NldF9iaXQocGh5X21vZGUsIHRwLVx1MDAzZXBoeWxpbmtfY29uZmlnLmxwaV9pbnRlcmZhY2VzKTtcbiYjNDM7XG4mIzQzO1x0cGwgPSBwaHlsaW5rX2NyZWF0ZShcdTAwMjZ0cC1cdTAwM2VwaHlsaW5rX2NvbmZpZywgdHBfdG9fZGV2KHRwKS1cdTAwM2Vmd25vZGUsXG4mIzQzO1x0XHRcdCAgICBwaHlfbW9kZSwgXHUwMDI2cnRsX3BoeWxpbmtfbWFjX29wcyk7XG4mIzQzO1x0aWYgKElTX0VSUihwbCkpXG4mIzQzO1x0XHRyZXR1cm4gUFRSX0VSUihwbCk7XG4mIzQzO1xuJiM0MztcdHRwLVx1MDAzZXBoeWxpbmsgPSBwbDtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIDA7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIGludCBydGxfaW5pdF9vbmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpXG4ge1xuIFx0Y29uc3Qgc3RydWN0IHJ0bF9jaGlwX2luZm8gKmNoaXA7XG5AQCAtNTY2Nyw2ICYjNDM7NjAzNSw3IEBAIHN0YXRpYyBpbnQgcnRsX2luaXRfb25lKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KVxuIFx0XHRcdFx0ICAgICBleHRfeGlkX3N0ciwgeGlkKTtcbiBcdHRwLVx1MDAzZW1hY192ZXJzaW9uID0gY2hpcC1cdTAwM2VtYWNfdmVyc2lvbjtcbiBcdHRwLVx1MDAzZWZ3X25hbWUgPSBjaGlwLVx1MDAzZWZ3X25hbWU7XG4mIzQzO1x0dHAtXHUwMDNlc3BlZWQgPSBTUEVFRF9VTktOT1dOO1xuIFxuIFx0LyogRGlzYWJsZSBBU1BNIEwxIGFzIHRoYXQgY2F1c2UgcmFuZG9tIGRldmljZSBzdG9wIHdvcmtpbmdcbiBcdCAqIHByb2JsZW1zIGFzIHdlbGwgYXMgZnVsbCBzeXN0ZW0gaGFuZ3MgZm9yIHNvbWUgUENJZSBkZXZpY2VzIHVzZXJzLlxuQEAgLTU2NzksMTIgJiM0Mzs2MDQ4LDcgQEAgc3RhdGljIGludCBydGxfaW5pdF9vbmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpXG4gXHR9XG4gXHR0cC1cdTAwM2Vhc3BtX21hbmFnZWFibGUgPSAhcmM7XG4gXG4tXHRpZiAocnRsX2lzXzgxMjUodHApKSB7XG4tXHRcdHUxNiBkYXRhID0gcjgxNjhfbWFjX29jcF9yZWFkKHRwLCAweGQwMDYpO1xuLVxuLVx0XHRpZiAoKGRhdGEgXHUwMDI2IDB4ZmYpID09IDB4MDcpXG4tXHRcdFx0dHAtXHUwMDNlc2ZwX21vZGUgPSB0cnVlO1xuLVx0fVxuJiM0MztcdHRwLVx1MDAzZXNmcF9tb2RlID0gcnRsX2dldF9zZnBfbW9kZSh0cCk7XG4gXG4gXHR0cC1cdTAwM2VkYXNoX3R5cGUgPSBydGxfZ2V0X2Rhc2hfdHlwZSh0cCk7XG4gXHR0cC1cdTAwM2VkYXNoX2VuYWJsZWQgPSBydGxfZGFzaF9pc19lbmFibGVkKHRwKTtcbkBAIC01Nzg4LDEzICYjNDM7NjE1MiwyMyBAQCBzdGF0aWMgaW50IHJ0bF9pbml0X29uZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudClcbiBcbiBcdHBjaV9zZXRfZHJ2ZGF0YShwZGV2LCB0cCk7XG4gXG4tXHRyYyA9IHI4MTY5X21kaW9fcmVnaXN0ZXIodHApO1xuJiM0MztcdHJjID0gcnRsX2luaXRfcGh5bGluayh0cCk7XG4gXHRpZiAocmMpXG4gXHRcdHJldHVybiByYztcbiBcbiYjNDM7XHRpZiAodHAtXHUwMDNlc2ZwX21vZGUgPT0gUlRMX1NGUF9OT05FKSB7XG4mIzQzO1x0XHRyYyA9IHI4MTY5X21kaW9fcmVnaXN0ZXIodHApO1xuJiM0MztcdFx0aWYgKHJjKSB7XG4mIzQzO1x0XHRcdHBoeWxpbmtfZGVzdHJveSh0cC1cdTAwM2VwaHlsaW5rKTtcbiYjNDM7XHRcdFx0cmV0dXJuIHJjO1xuJiM0MztcdFx0fVxuJiM0MztcdH1cbiYjNDM7XG4gXHRyYyA9IHJlZ2lzdGVyX25ldGRldihkZXYpO1xuLVx0aWYgKHJjKVxuJiM0MztcdGlmIChyYykge1xuJiM0MztcdFx0cGh5bGlua19kZXN0cm95KHRwLVx1MDAzZXBoeWxpbmspO1xuIFx0XHRyZXR1cm4gcmM7XG4mIzQzO1x0fVxuIFxuIFx0aWYgKElTX0VOQUJMRUQoQ09ORklHX1I4MTY5X0xFRFMpKSB7XG4gXHRcdGlmIChydGxfaXNfODEyNSh0cCkpXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYyBiL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNcbmluZGV4IDU5ZGZlMzVhZmE1NGZjLi5jNDUwZWUzM2I3NWNjMSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNcbkBAIC0xODI4LDYgJiM0MzsxODI4LDcyIEBAIGludCBwaHlsaW5rX3NldF9maXhlZF9saW5rKHN0cnVjdCBwaHlsaW5rICpwbCxcbiB9XG4gRVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19zZXRfZml4ZWRfbGluayk7XG4gXG4mIzQzOy8qKlxuJiM0MzsgKiBwaHlsaW5rX3NldF9tYWNfY2FwYWJpbGl0aWVzKCkgLSBEeW5hbWljYWxseSB1cGRhdGUgTUFDIGNhcGFiaWxpdGllc1xuJiM0MzsgKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuJiM0MzsgKiBAbWFjX2NhcGFiaWxpdGllczogdGhlIG5ldyBNQUMgY2FwYWJpbGl0aWVzIG1hc2tcbiYjNDM7ICpcbiYjNDM7ICogVGhpcyBmdW5jdGlvbiBhbGxvd3MgYSBNQUMgZHJpdmVyIHRvIGR5bmFtaWNhbGx5IGNoYW5nZSBpdHMgY2FwYWJpbGl0aWVzLFxuJiM0MzsgKiBzdWNoIGFzIGxvc2luZy9nYWluaW5nIFBhdXNlIGZyYW1lIHN1cHBvcnQgYmFzZWQgb24gTVRVIHNpemUuXG4mIzQzOyAqIEl0IHJlY2FsY3VsYXRlcyBzdXBwb3J0ZWQgbGluayBtb2RlcyBhbmQgdHJpZ2dlcnMgcmVuZWdvdGlhdGlvbiBpZiBuZWVkZWQuXG4mIzQzOyAqL1xuJiM0Mzt2b2lkIHBoeWxpbmtfc2V0X21hY19jYXBhYmlsaXRpZXMoc3RydWN0IHBoeWxpbmsgKnBsLCB1bnNpZ25lZCBsb25nIG1hY19jYXBhYmlsaXRpZXMpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgcGh5bGlua19saW5rX3N0YXRlICpjb25maWcgPSBcdTAwMjZwbC1cdTAwM2VsaW5rX2NvbmZpZztcbiYjNDM7XHR1bnNpZ25lZCBsb25nIGNhcHNfYWRkZWQsIGNhcHNfcmVtb3ZlZDtcbiYjNDM7XG4mIzQzO1x0QVNTRVJUX1JUTkwoKTtcbiYjNDM7XG4mIzQzO1x0Y2Fwc19hZGRlZCA9IG1hY19jYXBhYmlsaXRpZXMgXHUwMDI2IH5wbC1cdTAwM2Vjb25maWctXHUwMDNlbWFjX2NhcGFiaWxpdGllcztcbiYjNDM7XHRjYXBzX3JlbW92ZWQgPSBwbC1cdTAwM2Vjb25maWctXHUwMDNlbWFjX2NhcGFiaWxpdGllcyBcdTAwMjYgfm1hY19jYXBhYmlsaXRpZXM7XG4mIzQzO1xuJiM0MztcdGlmICghY2Fwc19hZGRlZCBcdTAwMjZcdTAwMjYgIWNhcHNfcmVtb3ZlZClcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XG4mIzQzO1x0bXV0ZXhfbG9jayhcdTAwMjZwbC1cdTAwM2VzdGF0ZV9tdXRleCk7XG4mIzQzO1xuJiM0MztcdHBsLVx1MDAzZWNvbmZpZy1cdTAwM2VtYWNfY2FwYWJpbGl0aWVzID0gbWFjX2NhcGFiaWxpdGllcztcbiYjNDM7XG4mIzQzO1x0aWYgKGNhcHNfcmVtb3ZlZCBcdTAwMjYgTUFDX1NZTV9QQVVTRSlcbiYjNDM7XHRcdGxpbmttb2RlX2NsZWFyX2JpdChFVEhUT09MX0xJTktfTU9ERV9QYXVzZV9CSVQsIHBsLVx1MDAzZXN1cHBvcnRlZCk7XG4mIzQzO1x0aWYgKGNhcHNfcmVtb3ZlZCBcdTAwMjYgTUFDX0FTWU1fUEFVU0UpXG4mIzQzO1x0XHRsaW5rbW9kZV9jbGVhcl9iaXQoRVRIVE9PTF9MSU5LX01PREVfQXN5bV9QYXVzZV9CSVQsIHBsLVx1MDAzZXN1cHBvcnRlZCk7XG4mIzQzO1xuJiM0MztcdGxpbmttb2RlX2FuZChjb25maWctXHUwMDNlYWR2ZXJ0aXNpbmcsIGNvbmZpZy1cdTAwM2VhZHZlcnRpc2luZywgcGwtXHUwMDNlc3VwcG9ydGVkKTtcbiYjNDM7XG4mIzQzO1x0aWYgKGNhcHNfYWRkZWQgXHUwMDI2IE1BQ19TWU1fUEFVU0UpIHtcbiYjNDM7XHRcdGxpbmttb2RlX3NldF9iaXQoRVRIVE9PTF9MSU5LX01PREVfUGF1c2VfQklULCBwbC1cdTAwM2VzdXBwb3J0ZWQpO1xuJiM0MztcdFx0aWYgKHBsLVx1MDAzZXBoeWRldiBcdTAwMjZcdTAwMjYgIXBoeWxpbmtfdGVzdChwbC1cdTAwM2VwaHlkZXYtXHUwMDNlc3VwcG9ydGVkLCBQYXVzZSkpXG4mIzQzO1x0XHRcdGxpbmttb2RlX2NsZWFyX2JpdChFVEhUT09MX0xJTktfTU9ERV9QYXVzZV9CSVQsIHBsLVx1MDAzZXN1cHBvcnRlZCk7XG4mIzQzO1x0fVxuJiM0MztcdGlmIChjYXBzX2FkZGVkIFx1MDAyNiBNQUNfQVNZTV9QQVVTRSkge1xuJiM0MztcdFx0bGlua21vZGVfc2V0X2JpdChFVEhUT09MX0xJTktfTU9ERV9Bc3ltX1BhdXNlX0JJVCwgcGwtXHUwMDNlc3VwcG9ydGVkKTtcbiYjNDM7XHRcdGlmIChwbC1cdTAwM2VwaHlkZXYgXHUwMDI2XHUwMDI2ICFwaHlsaW5rX3Rlc3QocGwtXHUwMDNlcGh5ZGV2LVx1MDAzZXN1cHBvcnRlZCwgQXN5bV9QYXVzZSkpXG4mIzQzO1x0XHRcdGxpbmttb2RlX2NsZWFyX2JpdChFVEhUT09MX0xJTktfTU9ERV9Bc3ltX1BhdXNlX0JJVCwgcGwtXHUwMDNlc3VwcG9ydGVkKTtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdGxpbmttb2RlX2FuZChjb25maWctXHUwMDNlYWR2ZXJ0aXNpbmcsIGNvbmZpZy1cdTAwM2VhZHZlcnRpc2luZywgcGwtXHUwMDNlc3VwcG9ydGVkKTtcbiYjNDM7XG4mIzQzO1x0aWYgKGNvbmZpZy1cdTAwM2VwYXVzZSBcdTAwMjYgTUxPX1BBVVNFX0FOKSB7XG4mIzQzO1x0XHRpZiAocGh5bGlua190ZXN0KHBsLVx1MDAzZXN1cHBvcnRlZCwgUGF1c2UpKVxuJiM0MztcdFx0XHRsaW5rbW9kZV9zZXRfYml0KEVUSFRPT0xfTElOS19NT0RFX1BhdXNlX0JJVCwgY29uZmlnLVx1MDAzZWFkdmVydGlzaW5nKTtcbiYjNDM7XG4mIzQzO1x0XHRpZiAocGh5bGlua190ZXN0KHBsLVx1MDAzZXN1cHBvcnRlZCwgQXN5bV9QYXVzZSkpXG4mIzQzO1x0XHRcdGxpbmttb2RlX3NldF9iaXQoRVRIVE9PTF9MSU5LX01PREVfQXN5bV9QYXVzZV9CSVQsIGNvbmZpZy1cdTAwM2VhZHZlcnRpc2luZyk7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRpZiAoIXBsLVx1MDAzZXBoeWRldilcbiYjNDM7XHRcdHBoeWxpbmtfY2hhbmdlX2luYmFuZF9hZHZlcnQocGwpO1xuJiM0MztcbiYjNDM7XHRtdXRleF91bmxvY2soXHUwMDI2cGwtXHUwMDNlc3RhdGVfbXV0ZXgpO1xuJiM0MztcbiYjNDM7XHRpZiAocGwtXHUwMDNlcGh5ZGV2KSB7XG4mIzQzO1x0XHRsaW5rbW9kZV9jb3B5KHBsLVx1MDAzZXBoeWRldi1cdTAwM2VhZHZlcnRpc2luZywgY29uZmlnLVx1MDAzZWFkdmVydGlzaW5nKTtcbiYjNDM7XHRcdHBoeV9zdGFydF9hbmVnKHBsLVx1MDAzZXBoeWRldik7XG4mIzQzO1x0fVxuJiM0Mzt9XG4mIzQzO0VYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfc2V0X21hY19jYXBhYmlsaXRpZXMpO1xuJiM0MztcbiAvKipcbiAgKiBwaHlsaW5rX2NyZWF0ZSgpIC0gY3JlYXRlIGEgcGh5bGluayBpbnN0YW5jZVxuICAqIEBjb25maWc6IGEgcG9pbnRlciB0byB0aGUgdGFyZ2V0IFx1MDAyNnN0cnVjdCBwaHlsaW5rX2NvbmZpZ1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jIGIvZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmNcbmluZGV4IGI2NWQwZjVmYTFhMDE0Li40NzIxYmEwNzFjYmJlNCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uY1xuQEAgLTE3LDcgJiM0MzsxNyw2IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvZGVsYXkuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2Nsay5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvc3RyaW5nX2Nob2ljZXMuaFx1MDAzZVxuLSNpbmNsdWRlIFx1MDAzY25ldC9waHkvcmVhbHRla19waHkuaFx1MDAzZVxuIFxuICNpbmNsdWRlIFwmIzM0Oy4uL3BoeWxpYi5oXCYjMzQ7XG4gI2luY2x1ZGUgXCYjMzQ7cmVhbHRlay5oXCYjMzQ7XG5AQCAtMjY0Niw0NSAmIzQzOzI2NDUsNiBAQCBzdGF0aWMgaXJxcmV0dXJuX3QgcnRsODIyMWJfaGFuZGxlX2ludGVycnVwdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuIFx0cmV0dXJuIElSUV9IQU5ETEVEO1xuIH1cbiBcbi1zdGF0aWMgaW50IHJ0bGdlbl9zZnBfZ2V0X2ZlYXR1cmVzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4te1xuLVx0bGlua21vZGVfc2V0X2JpdChFVEhUT09MX0xJTktfTU9ERV8xMDAwMGJhc2VUX0Z1bGxfQklULFxuLVx0XHRcdCBwaHlkZXYtXHUwMDNlc3VwcG9ydGVkKTtcbi1cbi1cdC8qIHNldCBkZWZhdWx0IG1vZGUgKi9cbi1cdHBoeWRldi1cdTAwM2VzcGVlZCA9IFNQRUVEXzEwMDAwO1xuLVx0cGh5ZGV2LVx1MDAzZWR1cGxleCA9IERVUExFWF9GVUxMO1xuLVxuLVx0cGh5ZGV2LVx1MDAzZXBvcnQgPSBQT1JUX0ZJQlJFO1xuLVxuLVx0cmV0dXJuIDA7XG4tfVxuLVxuLXN0YXRpYyBpbnQgcnRsZ2VuX3NmcF9yZWFkX3N0YXR1cyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLXtcbi1cdGludCB2YWwsIGVycjtcbi1cbi1cdGVyciA9IGdlbnBoeV91cGRhdGVfbGluayhwaHlkZXYpO1xuLVx0aWYgKGVycilcbi1cdFx0cmV0dXJuIGVycjtcbi1cbi1cdGlmICghcGh5ZGV2LVx1MDAzZWxpbmspXG4tXHRcdHJldHVybiAwO1xuLVxuLVx0dmFsID0gcGh5X3JlYWQocGh5ZGV2LCBSVExfUEhZU1IpO1xuLVx0aWYgKHZhbCBcdTAwM2MgMClcbi1cdFx0cmV0dXJuIHZhbDtcbi1cbi1cdHJ0bGdlbl9kZWNvZGVfcGh5c3IocGh5ZGV2LCB2YWwpO1xuLVxuLVx0cmV0dXJuIDA7XG4tfVxuLVxuLXN0YXRpYyBpbnQgcnRsZ2VuX3NmcF9jb25maWdfYW5lZyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLXtcbi1cdHJldHVybiAwO1xuLX1cbi1cbiBzdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgcmVhbHRla19kcnZzW10gPSB7XG4gXHR7XG4gXHRcdFBIWV9JRF9NQVRDSF9FWEFDVCgweDAwMDA4MjAxKSxcbkBAIC0yOTM0LDIwICYjNDM7Mjg5NCw2IEBAIHN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciByZWFsdGVrX2RydnNbXSA9IHtcbiBcdFx0LndyaXRlX3BhZ2VcdD0gcnRsODIxeF93cml0ZV9wYWdlLFxuIFx0XHQucmVhZF9tbWRcdD0gcnRsODIyeF9yZWFkX21tZCxcbiBcdFx0LndyaXRlX21tZFx0PSBydGw4MjJ4X3dyaXRlX21tZCxcbi1cdH0sIHtcbi1cdFx0UEhZX0lEX01BVENIX0VYQUNUKFBIWV9JRF9SVExfRFVNTVlfU0ZQKSxcbi1cdFx0Lm5hbWVcdFx0PSBcJiMzNDtSZWFsdGVrIFNGUCBQSFkgTW9kZVwmIzM0Oyxcbi1cdFx0LmZsYWdzXHRcdD0gUEhZX0lTX0lOVEVSTkFMLFxuLVx0XHQucHJvYmVcdFx0PSBydGw4MjJ4X3Byb2JlLFxuLVx0XHQuZ2V0X2ZlYXR1cmVzXHQ9IHJ0bGdlbl9zZnBfZ2V0X2ZlYXR1cmVzLFxuLVx0XHQuY29uZmlnX2FuZWdcdD0gcnRsZ2VuX3NmcF9jb25maWdfYW5lZyxcbi1cdFx0LnJlYWRfc3RhdHVzXHQ9IHJ0bGdlbl9zZnBfcmVhZF9zdGF0dXMsXG4tXHRcdC5zdXNwZW5kXHQ9IGdlbnBoeV9zdXNwZW5kLFxuLVx0XHQucmVzdW1lXHRcdD0gcnRsZ2VuX3Jlc3VtZSxcbi1cdFx0LnJlYWRfcGFnZVx0PSBydGw4MjF4X3JlYWRfcGFnZSxcbi1cdFx0LndyaXRlX3BhZ2VcdD0gcnRsODIxeF93cml0ZV9wYWdlLFxuLVx0XHQucmVhZF9tbWRcdD0gcnRsODIyeF9yZWFkX21tZCxcbi1cdFx0LndyaXRlX21tZFx0PSBydGw4MjJ4X3dyaXRlX21tZCxcbiBcdH0sIHtcbiBcdFx0UEhZX0lEX01BVENIX0VYQUNUKDB4MDAxY2NhZDApLFxuIFx0XHQubmFtZVx0XHQ9IFwmIzM0O1JUTDgyMjQgMi41R2JwcyBQSFlcJiMzNDssXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9waHlsaW5rLmggYi9pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaFxuaW5kZXggMmJjMGRiM2Q1MmFjOGQuLjU2NjQyYWI5NjFhNzUzIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9waHlsaW5rLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvcGh5bGluay5oXG5AQCAtODQyLDQgJiM0Mzs4NDIsNiBAQCB2b2lkIHBoeWxpbmtfcmVwbGF5X2xpbmtfYmVnaW4oc3RydWN0IHBoeWxpbmsgKnBsKTtcbiBcbiB2b2lkIHBoeWxpbmtfcmVwbGF5X2xpbmtfZW5kKHN0cnVjdCBwaHlsaW5rICpwbCk7XG4gXG4mIzQzO3ZvaWQgcGh5bGlua19zZXRfbWFjX2NhcGFiaWxpdGllcyhzdHJ1Y3QgcGh5bGluayAqcGwsIHVuc2lnbmVkIGxvbmcgbWFjX2NhcGFiaWxpdGllcyk7XG4mIzQzO1xuICNlbmRpZlxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L3BoeS9yZWFsdGVrX3BoeS5oIGIvaW5jbHVkZS9uZXQvcGh5L3JlYWx0ZWtfcGh5LmhcbmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggZDY4M2JjMWIwNjU5Y2QuLjAwMDAwMDAwMDAwMDAwXG4tLS0gYS9pbmNsdWRlL25ldC9waHkvcmVhbHRla19waHkuaFxuJiM0MzsmIzQzOyYjNDM7IC9kZXYvbnVsbFxuQEAgLTEsNyAmIzQzOzAsMCBAQFxuLS8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wICovXG4tI2lmbmRlZiBfUkVBTFRFS19QSFlfSFxuLSNkZWZpbmUgX1JFQUxURUtfUEhZX0hcbi1cbi0jZGVmaW5lXHRQSFlfSURfUlRMX0RVTU1ZX1NGUFx0MHgwMDFjY2JmZlxuLVxuLSNlbmRpZiAvKiBfUkVBTFRFS19QSFlfSCAqL1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDE2OjM0PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1I4MTY5JiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cGh5bGlua19zZXRfbWFjX2NhcGFiaWxpdGllcyYjMzQ7LAogICAgJiMzNDtydGxfaW5pdF9waHlsaW5rJiMzNDssCiAgICAmIzM0O3J0bDgxNjlfcGNzX2NvbmZpZyYjMzQ7LAogICAgJiMzNDtydGw4MTY5X3Bjc19nZXRfc3RhdGUmIzM0OywKICAgICYjMzQ7cnRsX21hY19saW5rX3VwJiMzNDssCiAgICAmIzM0O3J0bF9tYWNfbGlua19kb3duJiMzNDssCiAgICAmIzM0O3J0bF9tYWNfc2VsZWN0X3BjcyYjMzQ7LAogICAgJiMzNDtydGxfbWFjX2Rpc2FibGVfdHhfbHBpJiMzNDssCiAgICAmIzM0O3J0bF9tYWNfZW5hYmxlX3R4X2xwaSYjMzQ7LAogICAgJiMzNDtydGw4MTY5X2NoYW5nZV9tdHUmIzM0OywKICAgICYjMzQ7cnRsX2xvd3Bvd2VyX2hpZGRlbl9mdW5jdGlvbnMmIzM0OywKICAgICYjMzQ7cjgxMjdfc2ZwX2luaXRfMWcmIzM0OywKICAgICYjMzQ7cjgxMjdfc2ZwX2luaXRfMTBnJiMzNDssCiAgICAmIzM0O3J0bDgxNjlfaW9jdGwmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbWlncmF0ZXMgdGhlIFJlYWx0ZWsgcjgxNjkgRXRoZXJuZXQgZHJpdmVyIGZyb20gcGh5bGliIHRvIHBoeWxpbmssIGludHJvZHVjaW5nIHNpZ25pZmljYW50IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgZHJpdmVyJiMzOTtzIGluaXRpYWxpemF0aW9uLCBsaW5rIG1hbmFnZW1lbnQsIGFuZCBNVFUgaGFuZGxpbmcuIEl0IGFsc28gYWRkcyBhIG5ldyBwaHlsaW5rIEFQSSBgcGh5bGlua19zZXRfbWFjX2NhcGFiaWxpdGllc2AgdG8gZHluYW1pY2FsbHkgdXBkYXRlIE1BQyBjYXBhYmlsaXRpZXMuIFRoZXNlIGFyZSByZWFjaGFibGUgY29udHJvbC1wYXRoIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQsIGVzcGVjaWFsbHkgdmlhIHN5el9wY2kgYW5kIG5ldGxpbmsvaW9jdGwgaW50ZXJmYWNlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMWY3ODUwMDQ1NmI4MzkzZWFkNmQ2ZmJjMTVhNDljM2I1ODUwYTlmNApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgSnVsIDcgMTY6MzQ6MzkgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWcgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWcKaW5kZXggOWIwZjRmOTYzMWRiYWEuLjQ5YWM3MjczNDIyNWY3IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWcKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9LY29uZmlnCkBAIC04OCw2ICYjNDM7ODgsNyBAQCBjb25maWcgUjgxNjkKIAlzZWxlY3QgQ1JDMzIKIAlzZWxlY3QgUEhZTElCCiAJc2VsZWN0IFJFQUxURUtfUEhZCiYjNDM7CXNlbGVjdCBQSFlMSU5LCiAJaGVscAogCSAgU2F5IFkgaGVyZSBpZiB5b3UgaGF2ZSBhIFJlYWx0ZWsgRXRoZXJuZXQgYWRhcHRlciBiZWxvbmdpbmcgdG8KIAkgIHRoZSBmb2xsb3dpbmcgZmFtaWxpZXM6CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jCmluZGV4IGVjNGZjMjFmYTIxZmIwLi4xMmUwNzNiOWE2MTQ3OSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMKQEAgLTI2LDEyICYjNDM7MjYsMTIgQEAKICNpbmNsdWRlICZsdDtsaW51eC9kbWEtbWFwcGluZy5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3BtX3J1bnRpbWUuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9iaXRmaWVsZC5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9waHlsaW5rLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvcHJlZmV0Y2guaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9pcHY2LmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvdW5hbGlnbmVkLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bmV0L2lwNl9jaGVja3N1bS5oJmd0OwogI2luY2x1ZGUgJmx0O25ldC9uZXRkZXZfcXVldWVzLmgmZ3Q7Ci0jaW5jbHVkZSAmbHQ7bmV0L3BoeS9yZWFsdGVrX3BoeS5oJmd0OwogCiAjaW5jbHVkZSAmIzM0O3I4MTY5LmgmIzM0OwogI2luY2x1ZGUgJiMzNDtyODE2OV9maXJtd2FyZS5oJiMzNDsKQEAgLTk2LDYgJiM0Mzs5NiwyOCBAQAogI2RlZmluZSBKVU1CT185SwkoOSAqIFNaXzFLIC0gVkxBTl9FVEhfSExFTiAtIEVUSF9GQ1NfTEVOKQogI2RlZmluZSBKVU1CT18xNksJKFNaXzE2SyAtIFZMQU5fRVRIX0hMRU4gLSBFVEhfRkNTX0xFTikKIAomIzQzOyNkZWZpbmUgT0NQX1NEU19BRERSX1JFRwkJMHhFQjEwCiYjNDM7I2RlZmluZSBPQ1BfU0RTX0NNRF9SRUcJCQkweEVCMEUKJiM0MzsjZGVmaW5lIE9DUF9TRFNfREFUQV9SRUcJCTB4RUIxNAomIzQzOyNkZWZpbmUgU0RTX0NNRF9SRUFECQkJMHgwMDAxCiYjNDM7I2RlZmluZSBSVExfU0RTX0MyMl9CQVNFCQkweDQwCiYjNDM7I2RlZmluZSBSVExfU0RTX0M0NV9CQVNFCQkweDAwODAKJiM0MzsjZGVmaW5lIFJUTF9QS0dfREVURUNUCQkJMHhkYzAwCiYjNDM7I2RlZmluZSBSVExfUEtHX0RFVEVDVF9NQVNLCQkweDAwNzgKJiM0MzsjZGVmaW5lIFJUTF9QS0dfREVURUNUXzgxMTZBRgkJMHgwMDMwCiYjNDM7I2RlZmluZSBSVExfSU5UX0hXX0lECQkJMHhkMDA2CiYjNDM7I2RlZmluZSBSVExfSU5UX0hXX0lEX01BU0sJCTB4MDBmZgomIzQzOyNkZWZpbmUgUlRMX0lOVF9IV19JRF84MTE2QUYJCTB4MDAwMAomIzQzOyNkZWZpbmUgUlRMODExNkFGX0ZVTkNfUE1fQ1NSCQkweDgwCiYjNDM7I2RlZmluZSBSVEw4MTE2QUZfRlVOQ19FWFBfTE5LQ1RMCTB4NDQKJiM0MzsjZGVmaW5lIFJUTF9QTV9EM0hPVAkJCUdFTk1BU0soMSwgMCkKJiM0MzsjZGVmaW5lIFI4MTI3X1NEU19DTUQJCQkweDIzNDgKJiM0MzsjZGVmaW5lIFI4MTI3X1NEU19BRERSCQkJMHgyMzRhCiYjNDM7I2RlZmluZSBSODEyN19TRFNfREFUQV9JTgkJMHgyMzRjCiYjNDM7I2RlZmluZSBSODEyN19TRFNfREFUQV9PVVQJCTB4MjM0ZQomIzQzOyNkZWZpbmUgUjgxMjdfU0RTX0NNRF9FWEVDCQlCSVQoMCkKJiM0MzsjZGVmaW5lIFI4MTI3X1NEU19DTURfV0UJCUJJVCgxKQomIzQzOwogc3RhdGljIGNvbnN0IHN0cnVjdCBydGxfY2hpcF9pbmZvIHsKIAl1MzIgbWFzazsKIAl1MzIgdmFsOwpAQCAtMzM0LDExICYjNDM7MzU2LDEzIEBAIGVudW0gcnRsX3JlZ2lzdGVycyB7CiAJQUxEUFNfTFRSCT0gMHhlMGEyLAogCUxUUl9PQkZGX0xPQ0sJPSAweGUwMzIsCiAJTFRSX1NOT09QCT0gMHhlMDM0LAomIzQzOwlTRU5EX0xUUl9NU0cJPSAweGUwMzgsCiAKICNkZWZpbmUgQUxEUFNfTFRSX0VOCQkJQklUKDApCiAjZGVmaW5lIExUUl9PQkZGX0xPQ0tfRU4JCUJJVCgwKQogI2RlZmluZSBMSU5LX1NQRUVEX0NIQU5HRV9FTgkJQklUKDE0KQogI2RlZmluZSBMVFJfU05PT1BfRU4JCQlHRU5NQVNLKDE1LCAxNCkKJiM0MzsjZGVmaW5lIExUUl9NU0dfRU4JCQlCSVQoMCkKIH07CiAKIGVudW0gcnRsODE2OF84MTAxX3JlZ2lzdGVycyB7CkBAIC03MjgsNiAmIzQzOzc1MiwxMiBAQCBlbnVtIHJ0bF9kYXNoX3R5cGUgewogCVJUTF9EQVNIXzI1X0JQLAogfTsKIAomIzQzO2VudW0gcnRsX3NmcF9tb2RlIHsKJiM0MzsJUlRMX1NGUF9OT05FLAomIzQzOwlSVExfU0ZQXzgxNjhfQUYsCiYjNDM7CVJUTF9TRlBfODEyN19BVEYsCiYjNDM7fTsKJiM0MzsKIHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgewogCXZvaWQgX19pb21lbSAqbW1pb19hZGRyOwkvKiBtZW1vcnkgbWFwIHBoeXNpY2FsIGFkZHJlc3MgKi8KIAlzdHJ1Y3QgcGNpX2RldiAqcGNpX2RldjsKQEAgLTczNiw2ICYjNDM7NzY2LDcgQEAgc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSB7CiAJc3RydWN0IG5hcGlfc3RydWN0IG5hcGk7CiAJZW51bSBtYWNfdmVyc2lvbiBtYWNfdmVyc2lvbjsKIAllbnVtIHJ0bF9kYXNoX3R5cGUgZGFzaF90eXBlOwomIzQzOwllbnVtIHJ0bF9zZnBfbW9kZSBzZnBfbW9kZTsKIAl1MzIgY3VyX3J4OyAvKiBJbmRleCBpbnRvIHRoZSBSeCBkZXNjcmlwdG9yIGJ1ZmZlciBvZiBuZXh0IFJ4IHBrdC4gKi8KIAl1MzIgY3VyX3R4OyAvKiBJbmRleCBpbnRvIHRoZSBUeCBkZXNjcmlwdG9yIGJ1ZmZlciBvZiBuZXh0IFJ4IHBrdC4gKi8KIAl1MzIgZGlydHlfdHg7CkBAIC03NTAsNiAmIzQzOzc4MSw3IEBAIHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgewogCXUzMiBpcnFfbWFzazsKIAlpbnQgaXJxOwogCXN0cnVjdCBjbGsgKmNsazsKJiM0MzsJaW50IHNwZWVkOwogCiAJc3RydWN0IHsKIAkJREVDTEFSRV9CSVRNQVAoZmxhZ3MsIFJUTF9GTEFHX01BWCk7CkBAIC03NjIsNyAmIzQzOzc5NCw2IEBAIHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgewogCXVuc2lnbmVkIHN1cHBvcnRzX2dtaWk6MTsKIAl1bnNpZ25lZCBhc3BtX21hbmFnZWFibGU6MTsKIAl1bnNpZ25lZCBkYXNoX2VuYWJsZWQ6MTsKLQlib29sIHNmcF9tb2RlOjE7CiAJZG1hX2FkZHJfdCBjb3VudGVyc19waHlzX2FkZHI7CiAJc3RydWN0IHJ0bDgxNjlfY291bnRlcnMgKmNvdW50ZXJzOwogCXN0cnVjdCBydGw4MTY5X3RjX29mZnNldHMgdGNfb2Zmc2V0OwpAQCAtNzc0LDYgJiM0Mzs4MDUsMTEgQEAgc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSB7CiAJc3RydWN0IHI4MTY5X2xlZF9jbGFzc2RldiAqbGVkczsKIAogCXUzMiBvY3BfYmFzZTsKJiM0MzsJc3RydWN0IHBoeWxpbmsgKnBoeWxpbms7CiYjNDM7CXN0cnVjdCBwaHlsaW5rX2NvbmZpZyBwaHlsaW5rX2NvbmZpZzsKJiM0MzsJc3RydWN0IHBoeWxpbmtfcGNzIHBjczsKJiM0MzsJc3RydWN0IGV0aHRvb2xfcGF1c2VwYXJhbSBzYXZlZF9wYXVzZTsKJiM0MzsJYm9vbCBqdW1ib19wYXVzZV9zYXZlZDsKIH07CiAKIHR5cGVkZWYgdm9pZCAoKnJ0bF9nZW5lcmljX2ZjdCkoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApOwpAQCAtMTEyOCwxMCAmIzQzOzExNjQsNiBAQCBzdGF0aWMgaW50IHI4MTY4X3BoeV9vY3BfcmVhZChzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgdTMyIHJlZykKIAlpZiAocnRsX29jcF9yZWdfZmFpbHVyZShyZWcpKQogCQlyZXR1cm4gMDsKIAotCS8qIFJldHVybiBkdW1teSBNSUlfUEhZU0lEMiBpbiBTRlAgbW9kZSB0byBtYXRjaCBTRlAgUEhZIGRyaXZlciAqLwotCWlmICh0cC0mZ3Q7c2ZwX21vZGUgJmFtcDsmYW1wOyByZWcgPT0gKE9DUF9TVERfUEhZX0JBU0UgJiM0MzsgMiAqIE1JSV9QSFlTSUQyKSkKLQkJcmV0dXJuIFBIWV9JRF9SVExfRFVNTVlfU0ZQICZhbXA7IDB4ZmZmZjsKLQogCVJUTF9XMzIodHAsIEdQSFlfT0NQLCByZWcgJmx0OyZsdDsgMTUpOwogCiAJcmV0dXJuIHJ0bF9sb29wX3dhaXRfaGlnaCh0cCwgJmFtcDtydGxfb2NwX2dwaHlfY29uZCwgMjUsIDEwKSA/CkBAIC0xMTk5LDYgJiM0MzsxMjMxLDY3IEBAIHN0YXRpYyB2b2lkIHI4MTI3X3NmcF9zZHNfcGh5X3Jlc2V0KHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKQogCXVzbGVlcF9yYW5nZSgxMCwgMjApOwogfQogCiYjNDM7REVDTEFSRV9SVExfQ09ORChyODEyN19zZHNfY21kX2NvbmQpCiYjNDM7ewomIzQzOwlyZXR1cm4gUlRMX1IxNih0cCwgUjgxMjdfU0RTX0NNRCkgJmFtcDsgUjgxMjdfU0RTX0NNRF9FWEVDOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgdTE2IHI4MTI3X3Nkc19yZWFkKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCB1MTYgaW5kZXgsIHUxNiBwYWdlLCB1MTYgcmVnKQomIzQzO3sKJiM0MzsJdTE2IGFkZHIgPSAoaW5kZXggJmx0OyZsdDsgMTEpIHwgKHBhZ2UgJmx0OyZsdDsgNSkgfCByZWc7CiYjNDM7CiYjNDM7CVJUTF9XMTYodHAsIFI4MTI3X1NEU19BRERSLCBhZGRyKTsKJiM0MzsJUlRMX1cxNih0cCwgUjgxMjdfU0RTX0NNRCwgUjgxMjdfU0RTX0NNRF9FWEVDKTsKJiM0MzsKJiM0MzsJaWYgKHJ0bF9sb29wX3dhaXRfbG93KHRwLCAmYW1wO3I4MTI3X3Nkc19jbWRfY29uZCwgMTAsIDEwMCkpCiYjNDM7CQlyZXR1cm4gUlRMX1IxNih0cCwgUjgxMjdfU0RTX0RBVEFfT1VUKTsKJiM0MzsKJiM0MzsJcmV0dXJuIDB4ZmZmZjsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIHZvaWQgcjgxMjdfc2RzX3dyaXRlKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCB1MTYgaW5kZXgsIHUxNiBwYWdlLAomIzQzOwkJCSAgICB1MTYgcmVnLCB1MTYgdmFsKQomIzQzO3sKJiM0MzsJdTE2IGFkZHIgPSAoaW5kZXggJmx0OyZsdDsgMTEpIHwgKHBhZ2UgJmx0OyZsdDsgNSkgfCByZWc7CiYjNDM7CiYjNDM7CVJUTF9XMTYodHAsIFI4MTI3X1NEU19EQVRBX0lOLCB2YWwpOwomIzQzOwlSVExfVzE2KHRwLCBSODEyN19TRFNfQUREUiwgYWRkcik7CiYjNDM7CVJUTF9XMTYodHAsIFI4MTI3X1NEU19DTUQsIFI4MTI3X1NEU19DTURfRVhFQyB8IFI4MTI3X1NEU19DTURfV0UpOwomIzQzOwomIzQzOwlydGxfbG9vcF93YWl0X2xvdyh0cCwgJmFtcDtyODEyN19zZHNfY21kX2NvbmQsIDEwLCAxMDApOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgdm9pZCByODEyN19zZHNfbW9kaWZ5KHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCB1MTYgaW5kZXgsIHUxNiBwYWdlLAomIzQzOwkJCSAgICAgdTE2IHJlZywgdTE2IGNsZWFybWFzaywgdTE2IHNldG1hc2spCiYjNDM7ewomIzQzOwl1MTYgdmFsID0gcjgxMjdfc2RzX3JlYWQodHAsIGluZGV4LCBwYWdlLCByZWcpOwomIzQzOwomIzQzOwl2YWwgPSAodmFsICZhbXA7IH5jbGVhcm1hc2spIHwgc2V0bWFzazsKJiM0MzsJcjgxMjdfc2RzX3dyaXRlKHRwLCBpbmRleCwgcGFnZSwgcmVnLCB2YWwpOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgdm9pZCByODEyN19zZnBfaW5pdF8xZyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCkKJiM0Mzt7CiYjNDM7CWludCB2YWw7CiYjNDM7CiYjNDM7CXI4MTI3X3NmcF9zZHNfcGh5X3Jlc2V0KHRwKTsKJiM0MzsKJiM0MzsJcjgxMjdfc2RzX21vZGlmeSh0cCwgMCwgMSwgMzEsIDAsIEJJVCgzKSk7CiYjNDM7CXI4MTI3X3Nkc19tb2RpZnkodHAsIDAsIDIsICAwLCBCSVQoMTMpIHwgQklUKDEyKSB8IEJJVCg2KSwgQklUKDEyKSB8IEJJVCg2KSk7CiYjNDM7CXI4MTI3X3Nkc19tb2RpZnkodHAsIDAsIDAsICA0LCAwLCBCSVQoMikpOwomIzQzOwomIzQzOwlSVExfVzE2KHRwLCAweDIzM2EsIDB4ODAwNCk7CiYjNDM7CVJUTF9XMTYodHAsIDB4MjMzZSwgKFJUTF9SMTYodHAsIDB4MjMzZSkgJmFtcDsgfjB4MzAwMykgfCAweDAwMDIpOwomIzQzOwomIzQzOwlyODE2OF9waHlfb2NwX3dyaXRlKHRwLCAweGM0MGEsIDB4MDAwMCk7CiYjNDM7CXI4MTY4X3BoeV9vY3Bfd3JpdGUodHAsIDB4YzQ2NiwgMHgwMDAwKTsKJiM0MzsJcjgxNjhfcGh5X29jcF93cml0ZSh0cCwgMHhjODA4LCAweDAwMDApOwomIzQzOwlyODE2OF9waHlfb2NwX3dyaXRlKHRwLCAweGM4MGEsIDB4MDAwMCk7CiYjNDM7CiYjNDM7CXZhbCA9IHI4MTY4X3BoeV9vY3BfcmVhZCh0cCwgMHhjODA0KTsKJiM0MzsJcjgxNjhfcGh5X29jcF93cml0ZSh0cCwgMHhjODA0LCAodmFsICZhbXA7IH4weDAwMGYpIHwgMHgwMDBjKTsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgdm9pZCByODEyN19zZnBfaW5pdF8xMGcoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApCiB7CiAJaW50IHZhbDsKQEAgLTEyMTcsMTIgJiM0MzsxMzEwLDYgQEAgc3RhdGljIHZvaWQgcjgxMjdfc2ZwX2luaXRfMTBnKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKQogCXI4MTY4X3BoeV9vY3Bfd3JpdGUodHAsIDB4YzgwNCwgKHZhbCAmYW1wOyB+MHgwMDBmKSB8IDB4MDAwYyk7CiB9CiAKLXN0YXRpYyB2b2lkIHJ0bF9zZnBfaW5pdChzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCkKLXsKLQlpZiAodHAtJmd0O21hY192ZXJzaW9uID09IFJUTF9HSUdBX01BQ19WRVJfODApCi0JCXI4MTI3X3NmcF9pbml0XzEwZyh0cCk7Ci19Ci0KIHN0YXRpYyB2b2lkIHJ0bF9zZnBfcmVzZXQoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApCiB7CiAJaWYgKHRwLSZndDttYWNfdmVyc2lvbiA9PSBSVExfR0lHQV9NQUNfVkVSXzgwKQpAQCAtMTI4Myw2ICYjNDM7MTM3MCwxNSBAQCBzdGF0aWMgdm9pZCBtYWNfbWN1X3dyaXRlKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCBpbnQgcmVnLCBpbnQgdmFsdWUpCiAJcjgxNjhfbWFjX29jcF93cml0ZSh0cCwgdHAtJmd0O29jcF9iYXNlICYjNDM7IHJlZywgdmFsdWUpOwogfQogCiYjNDM7c3RhdGljIGJvb2wgcnRsX2lzXzgxMTZhZihzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCkKJiM0Mzt7CiYjNDM7CXJldHVybiB0cC0mZ3Q7bWFjX3ZlcnNpb24gPT0gUlRMX0dJR0FfTUFDX1ZFUl81MiAmYW1wOyZhbXA7CiYjNDM7CQkocjgxNjhfbWFjX29jcF9yZWFkKHRwLCBSVExfUEtHX0RFVEVDVCkgJmFtcDsgUlRMX1BLR19ERVRFQ1RfTUFTSykgPT0KJiM0MzsJCVJUTF9QS0dfREVURUNUXzgxMTZBRiAmYW1wOyZhbXA7CiYjNDM7CQkocjgxNjhfbWFjX29jcF9yZWFkKHRwLCBSVExfSU5UX0hXX0lEKSAmYW1wOyBSVExfSU5UX0hXX0lEX01BU0spID09CiYjNDM7CQlSVExfSU5UX0hXX0lEXzgxMTZBRjsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgaW50IG1hY19tY3VfcmVhZChzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgaW50IHJlZykKIHsKIAlyZXR1cm4gcjgxNjhfbWFjX29jcF9yZWFkKHRwLCB0cC0mZ3Q7b2NwX2Jhc2UgJiM0MzsgcmVnKTsKQEAgLTE1NzgsNiAmIzQzOzE2NzQsMjAgQEAgc3RhdGljIGJvb2wgcnRsX2Rhc2hfaXNfZW5hYmxlZChzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCkKIAl9CiB9CiAKJiM0MztzdGF0aWMgZW51bSBydGxfc2ZwX21vZGUgcnRsX2dldF9zZnBfbW9kZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCkKJiM0Mzt7CiYjNDM7CWlmIChydGxfaXNfODEyNSh0cCkpIHsKJiM0MzsJCXUxNiBkYXRhID0gcjgxNjhfbWFjX29jcF9yZWFkKHRwLCBSVExfSU5UX0hXX0lEKTsKJiM0MzsKJiM0MzsJCWlmICgoZGF0YSAmYW1wOyAweGZmKSA9PSAweDA3KQomIzQzOwkJCXJldHVybiBSVExfU0ZQXzgxMjdfQVRGOwomIzQzOwl9IGVsc2UgaWYgKHJ0bF9pc184MTE2YWYodHApKSB7CiYjNDM7CQlyZXR1cm4gUlRMX1NGUF84MTY4X0FGOwomIzQzOwl9CiYjNDM7CiYjNDM7CXJldHVybiBSVExfU0ZQX05PTkU7CiYjNDM7fQomIzQzOwogc3RhdGljIGVudW0gcnRsX2Rhc2hfdHlwZSBydGxfZ2V0X2Rhc2hfdHlwZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCkKIHsKIAlzd2l0Y2ggKHRwLSZndDttYWNfdmVyc2lvbikgewpAQCAtMTY3MywxNiAmIzQzOzE3ODMsMTQgQEAgc3RhdGljIHZvaWQgcnRsODE2OV9pcnFfbWFza19hbmRfYWNrKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKQogCXJ0bF9wY2lfY29tbWl0KHRwKTsKIH0KIAotc3RhdGljIHZvaWQgcnRsX2xpbmtfY2hnX3BhdGNoKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKQomIzQzO3N0YXRpYyB2b2lkIHJ0bF9saW5rX2NoZ19wYXRjaChzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgaW50IHNwZWVkKQogewotCXN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYgPSB0cC0mZ3Q7cGh5ZGV2OwotCiAJaWYgKHRwLSZndDttYWNfdmVyc2lvbiA9PSBSVExfR0lHQV9NQUNfVkVSXzM0IHx8CiAJICAgIHRwLSZndDttYWNfdmVyc2lvbiA9PSBSVExfR0lHQV9NQUNfVkVSXzM4KSB7Ci0JCWlmIChwaHlkZXYtJmd0O3NwZWVkID09IFNQRUVEXzEwMDApIHsKJiM0MzsJCWlmIChzcGVlZCA9PSBTUEVFRF8xMDAwKSB7CiAJCQlydGxfZXJpX3dyaXRlKHRwLCAweDFiYywgRVJJQVJfTUFTS18xMTExLCAweDAwMDAwMDExKTsKIAkJCXJ0bF9lcmlfd3JpdGUodHAsIDB4MWRjLCBFUklBUl9NQVNLXzExMTEsIDB4MDAwMDAwMDUpOwotCQl9IGVsc2UgaWYgKHBoeWRldi0mZ3Q7c3BlZWQgPT0gU1BFRURfMTAwKSB7CiYjNDM7CQl9IGVsc2UgaWYgKHNwZWVkID09IFNQRUVEXzEwMCkgewogCQkJcnRsX2VyaV93cml0ZSh0cCwgMHgxYmMsIEVSSUFSX01BU0tfMTExMSwgMHgwMDAwMDAxZik7CiAJCQlydGxfZXJpX3dyaXRlKHRwLCAweDFkYywgRVJJQVJfTUFTS18xMTExLCAweDAwMDAwMDA1KTsKIAkJfSBlbHNlIHsKQEAgLTE2OTIsNyAmIzQzOzE4MDAsNyBAQCBzdGF0aWMgdm9pZCBydGxfbGlua19jaGdfcGF0Y2goc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApCiAJCXJ0bF9yZXNldF9wYWNrZXRfZmlsdGVyKHRwKTsKIAl9IGVsc2UgaWYgKHRwLSZndDttYWNfdmVyc2lvbiA9PSBSVExfR0lHQV9NQUNfVkVSXzM1IHx8CiAJCSAgIHRwLSZndDttYWNfdmVyc2lvbiA9PSBSVExfR0lHQV9NQUNfVkVSXzM2KSB7Ci0JCWlmIChwaHlkZXYtJmd0O3NwZWVkID09IFNQRUVEXzEwMDApIHsKJiM0MzsJCWlmIChzcGVlZCA9PSBTUEVFRF8xMDAwKSB7CiAJCQlydGxfZXJpX3dyaXRlKHRwLCAweDFiYywgRVJJQVJfTUFTS18xMTExLCAweDAwMDAwMDExKTsKIAkJCXJ0bF9lcmlfd3JpdGUodHAsIDB4MWRjLCBFUklBUl9NQVNLXzExMTEsIDB4MDAwMDAwMDUpOwogCQl9IGVsc2UgewpAQCAtMTcwMCw3ICYjNDM7MTgwOCw3IEBAIHN0YXRpYyB2b2lkIHJ0bF9saW5rX2NoZ19wYXRjaChzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCkKIAkJCXJ0bF9lcmlfd3JpdGUodHAsIDB4MWRjLCBFUklBUl9NQVNLXzExMTEsIDB4MDAwMDAwM2YpOwogCQl9CiAJfSBlbHNlIGlmICh0cC0mZ3Q7bWFjX3ZlcnNpb24gPT0gUlRMX0dJR0FfTUFDX1ZFUl8zNykgewotCQlpZiAocGh5ZGV2LSZndDtzcGVlZCA9PSBTUEVFRF8xMCkgewomIzQzOwkJaWYgKHNwZWVkID09IFNQRUVEXzEwKSB7CiAJCQlydGxfZXJpX3dyaXRlKHRwLCAweDFkMCwgRVJJQVJfTUFTS18wMDExLCAweDRkMDIpOwogCQkJcnRsX2VyaV93cml0ZSh0cCwgMHgxZGMsIEVSSUFSX01BU0tfMDAxMSwgMHgwMDYwYSk7CiAJCX0gZWxzZSB7CkBAIC0yMDc0LDExICYjNDM7MjE4MiwxMSBAQCBydGxfY29hbGVzY2VfaW5mbyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCkKIAkJY2kgPSBydGxfY29hbGVzY2VfaW5mb184MTY4XzgxMzY7CiAKIAkvKiBpZiBzcGVlZCBpcyB1bmtub3duIGFzc3VtZSBoaWdoZXN0IG9uZSAqLwotCWlmICh0cC0mZ3Q7cGh5ZGV2LSZndDtzcGVlZCA9PSBTUEVFRF9VTktOT1dOKQomIzQzOwlpZiAodHAtJmd0O3NwZWVkID09IFNQRUVEX1VOS05PV04pCiAJCXJldHVybiBjaTsKIAogCWZvciAoOyBjaS0mZ3Q7c3BlZWQ7IGNpJiM0MzsmIzQzOykgewotCQlpZiAodHAtJmd0O3BoeWRldi0mZ3Q7c3BlZWQgPT0gY2ktJmd0O3NwZWVkKQomIzQzOwkJaWYgKHRwLSZndDtzcGVlZCA9PSBjaS0mZ3Q7c3BlZWQpCiAJCQlyZXR1cm4gY2k7CiAJfQogCkBAIC0yMjM2LDcgJiM0MzsyMzQ0LDcgQEAgc3RhdGljIHZvaWQgcnRsX3NldF9lZWVfdHhpZGxlX3RpbWVyKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKQogCiBzdGF0aWMgdW5zaWduZWQgaW50IHI4MTY5X2dldF90eF9scGlfdGltZXJfdXMoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApCiB7Ci0JdW5zaWduZWQgaW50IHNwZWVkID0gdHAtJmd0O3BoeWRldi0mZ3Q7c3BlZWQ7CiYjNDM7CXVuc2lnbmVkIGludCBzcGVlZCA9IHRwLSZndDtzcGVlZDsKIAl1bnNpZ25lZCBpbnQgdGltZXIgPSB0cC0mZ3Q7dHhfbHBpX3RpbWVyOwogCiAJaWYgKCF0aW1lciB8fCBzcGVlZCA9PSBTUEVFRF9VTktOT1dOKQpAQCAtMjI1NCw3ICYjNDM7MjM2Miw3IEBAIHN0YXRpYyBpbnQgcnRsODE2OV9nZXRfZWVlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBldGh0b29sX2tlZWUgKmRhdGEpCiAJaWYgKCFydGxfc3VwcG9ydHNfZWVlKHRwKSkKIAkJcmV0dXJuIC1FT1BOT1RTVVBQOwogCi0JcmV0ID0gcGh5X2V0aHRvb2xfZ2V0X2VlZSh0cC0mZ3Q7cGh5ZGV2LCBkYXRhKTsKJiM0MzsJcmV0ID0gcGh5bGlua19ldGh0b29sX2dldF9lZWUodHAtJmd0O3BoeWxpbmssIGRhdGEpOwogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CiAKQEAgLTIyNzAsNyAmIzQzOzIzNzgsNyBAQCBzdGF0aWMgaW50IHJ0bDgxNjlfc2V0X2VlZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgZXRodG9vbF9rZWVlICpkYXRhKQogCWlmICghcnRsX3N1cHBvcnRzX2VlZSh0cCkpCiAJCXJldHVybiAtRU9QTk9UU1VQUDsKIAotCXJldHVybiBwaHlfZXRodG9vbF9zZXRfZWVlKHRwLSZndDtwaHlkZXYsIGRhdGEpOwomIzQzOwlyZXR1cm4gcGh5bGlua19ldGh0b29sX3NldF9lZWUodHAtJmd0O3BoeWxpbmssIGRhdGEpOwogfQogCiBzdGF0aWMgdm9pZCBydGw4MTY5X2dldF9yaW5ncGFyYW0oc3RydWN0IG5ldF9kZXZpY2UgKmRldiwKQEAgLTIzMDEsMTMgJiM0MzsyNDA5LDggQEAgc3RhdGljIHZvaWQgcnRsODE2OV9nZXRfcGF1c2VwYXJhbShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAogCQkJCSAgIHN0cnVjdCBldGh0b29sX3BhdXNlcGFyYW0gKmRhdGEpCiB7CiAJc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAgPSBuZXRkZXZfcHJpdihkZXYpOwotCWJvb2wgdHhfcGF1c2UsIHJ4X3BhdXNlOwogCi0JcGh5X2dldF9wYXVzZSh0cC0mZ3Q7cGh5ZGV2LCAmYW1wO3R4X3BhdXNlLCAmYW1wO3J4X3BhdXNlKTsKLQotCWRhdGEtJmd0O2F1dG9uZWcgPSB0cC0mZ3Q7cGh5ZGV2LSZndDthdXRvbmVnOwotCWRhdGEtJmd0O3R4X3BhdXNlID0gdHhfcGF1c2UgPyAxIDogMDsKLQlkYXRhLSZndDtyeF9wYXVzZSA9IHJ4X3BhdXNlID8gMSA6IDA7CiYjNDM7CXBoeWxpbmtfZXRodG9vbF9nZXRfcGF1c2VwYXJhbSh0cC0mZ3Q7cGh5bGluaywgZGF0YSk7CiB9CiAKIHN0YXRpYyBpbnQgcnRsODE2OV9zZXRfcGF1c2VwYXJhbShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LApAQCAtMjMxOCw5ICYjNDM7MjQyMSw3IEBAIHN0YXRpYyBpbnQgcnRsODE2OV9zZXRfcGF1c2VwYXJhbShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAogCWlmIChkZXYtJmd0O210dSAmZ3Q7IEVUSF9EQVRBX0xFTikKIAkJcmV0dXJuIC1FT1BOT1RTVVBQOwogCi0JcGh5X3NldF9hc3ltX3BhdXNlKHRwLSZndDtwaHlkZXYsIGRhdGEtJmd0O3J4X3BhdXNlLCBkYXRhLSZndDt0eF9wYXVzZSk7Ci0KLQlyZXR1cm4gMDsKJiM0MzsJcmV0dXJuIHBoeWxpbmtfZXRodG9vbF9zZXRfcGF1c2VwYXJhbSh0cC0mZ3Q7cGh5bGluaywgZGF0YSk7CiB9CiAKIHN0YXRpYyB2b2lkIHJ0bDgxNjlfZ2V0X2V0aF9tYWNfc3RhdHMoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwKQEAgLTIzODYsMzQgJiM0MzsyNDg3LDI3IEBAIHN0YXRpYyB2b2lkIHJ0bDgxNjlfZ2V0X2V0aF9jdHJsX3N0YXRzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCiAJCWxlMzJfdG9fY3B1KHRwLSZndDtjb3VudGVycy0mZ3Q7cnhfdW5rbm93bl9vcGNvZGUpOwogfQogCi1zdGF0aWMgaW50IHJ0bDgxNjlfc2V0X2xpbmtfa3NldHRpbmdzKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LAotCQkJCSAgICAgIGNvbnN0IHN0cnVjdCBldGh0b29sX2xpbmtfa3NldHRpbmdzICpjbWQpCiYjNDM7c3RhdGljIGludCBydGw4MTY5X2dldF9saW5rX2tzZXR0aW5ncyhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwKJiM0MzsJCQkJICAgICAgc3RydWN0IGV0aHRvb2xfbGlua19rc2V0dGluZ3MgKmNtZCkKIHsKIAlzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCA9IG5ldGRldl9wcml2KG5kZXYpOwotCXN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYgPSB0cC0mZ3Q7cGh5ZGV2OwotCWludCBkdXBsZXggPSBjbWQtJmd0O2Jhc2UuZHVwbGV4OwotCWludCBzcGVlZCA9IGNtZC0mZ3Q7YmFzZS5zcGVlZDsKLQotCWlmICghdHAtJmd0O3NmcF9tb2RlKQotCQlyZXR1cm4gcGh5X2V0aHRvb2xfa3NldHRpbmdzX3NldChwaHlkZXYsIGNtZCk7Ci0KLQlpZiAoY21kLSZndDtiYXNlLmF1dG9uZWcgIT0gQVVUT05FR19ESVNBQkxFKQotCQlyZXR1cm4gLUVJTlZBTDsKIAotCWlmICghcGh5X2NoZWNrX3ZhbGlkKHNwZWVkLCBkdXBsZXgsIHBoeWRldi0mZ3Q7c3VwcG9ydGVkKSkKLQkJcmV0dXJuIC1FSU5WQUw7Ci0KLQltdXRleF9sb2NrKCZhbXA7cGh5ZGV2LSZndDtsb2NrKTsKJiM0MzsJcmV0dXJuIHBoeWxpbmtfZXRodG9vbF9rc2V0dGluZ3NfZ2V0KHRwLSZndDtwaHlsaW5rLCBjbWQpOwomIzQzO30KIAotCXBoeWRldi0mZ3Q7YXV0b25lZyA9IEFVVE9ORUdfRElTQUJMRTsKLQlwaHlkZXYtJmd0O3NwZWVkID0gc3BlZWQ7Ci0JcGh5ZGV2LSZndDtkdXBsZXggPSBkdXBsZXg7CiYjNDM7c3RhdGljIGludCBydGw4MTY5X3NldF9saW5rX2tzZXR0aW5ncyhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwKJiM0MzsJCQkJICAgICAgY29uc3Qgc3RydWN0IGV0aHRvb2xfbGlua19rc2V0dGluZ3MgKmNtZCkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwID0gbmV0ZGV2X3ByaXYobmRldik7CiAKLQlydGxfc2ZwX2luaXQodHApOwomIzQzOwlyZXR1cm4gcGh5bGlua19ldGh0b29sX2tzZXR0aW5nc19zZXQodHAtJmd0O3BoeWxpbmssIGNtZCk7CiYjNDM7fQogCi0JbXV0ZXhfdW5sb2NrKCZhbXA7cGh5ZGV2LSZndDtsb2NrKTsKJiM0MztzdGF0aWMgaW50IHJ0bDgxNjlfbndheV9yZXNldChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQomIzQzO3sKJiM0MzsJc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAgPSBuZXRkZXZfcHJpdihkZXYpOwogCi0JcmV0dXJuIDA7CiYjNDM7CXJldHVybiBwaHlsaW5rX2V0aHRvb2xfbndheV9yZXNldCh0cC0mZ3Q7cGh5bGluayk7CiB9CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgcnRsODE2OV9ldGh0b29sX29wcyA9IHsKQEAgLTI0MzEsMTAgJiM0MzsyNTI1LDEwIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgcnRsODE2OV9ldGh0b29sX29wcyA9IHsKIAkuZ2V0X3NzZXRfY291bnQJCT0gcnRsODE2OV9nZXRfc3NldF9jb3VudCwKIAkuZ2V0X2V0aHRvb2xfc3RhdHMJPSBydGw4MTY5X2dldF9ldGh0b29sX3N0YXRzLAogCS5nZXRfdHNfaW5mbwkJPSBldGh0b29sX29wX2dldF90c19pbmZvLAotCS5ud2F5X3Jlc2V0CQk9IHBoeV9ldGh0b29sX253YXlfcmVzZXQsCiYjNDM7CS5ud2F5X3Jlc2V0CQk9IHJ0bDgxNjlfbndheV9yZXNldCwKIAkuZ2V0X2VlZQkJPSBydGw4MTY5X2dldF9lZWUsCiAJLnNldF9lZWUJCT0gcnRsODE2OV9zZXRfZWVlLAotCS5nZXRfbGlua19rc2V0dGluZ3MJPSBwaHlfZXRodG9vbF9nZXRfbGlua19rc2V0dGluZ3MsCiYjNDM7CS5nZXRfbGlua19rc2V0dGluZ3MJPSBydGw4MTY5X2dldF9saW5rX2tzZXR0aW5ncywKIAkuc2V0X2xpbmtfa3NldHRpbmdzCT0gcnRsODE2OV9zZXRfbGlua19rc2V0dGluZ3MsCiAJLmdldF9yaW5ncGFyYW0JCT0gcnRsODE2OV9nZXRfcmluZ3BhcmFtLAogCS5nZXRfcGF1c2Vfc3RhdHMJPSBydGw4MTY5X2dldF9wYXVzZV9zdGF0cywKQEAgLTI0OTksOSAmIzQzOzI1OTMsMTAgQEAgdm9pZCByODE2OV9hcHBseV9maXJtd2FyZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCkKIAkJdHAtJmd0O29jcF9iYXNlID0gT0NQX1NURF9QSFlfQkFTRTsKIAogCQkvKiBQSFkgc29mdCByZXNldCBtYXkgc3RpbGwgYmUgaW4gcHJvZ3Jlc3MgKi8KLQkJcGh5X3JlYWRfcG9sbF90aW1lb3V0KHRwLSZndDtwaHlkZXYsIE1JSV9CTUNSLCB2YWwsCi0JCQkJICAgICAgISh2YWwgJmFtcDsgQk1DUl9SRVNFVCksCi0JCQkJICAgICAgNTAwMDAsIDYwMDAwMCwgdHJ1ZSk7CiYjNDM7CQlpZiAodHAtJmd0O3BoeWRldikKJiM0MzsJCQlwaHlfcmVhZF9wb2xsX3RpbWVvdXQodHAtJmd0O3BoeWRldiwgTUlJX0JNQ1IsIHZhbCwKJiM0MzsJCQkJCSAgICAgICEodmFsICZhbXA7IEJNQ1JfUkVTRVQpLAomIzQzOwkJCQkJICAgICAgNTAwMDAsIDYwMDAwMCwgdHJ1ZSk7CiAJfQogfQogCkBAIC0yNTM4LDYgJiM0MzsyNjMzLDggQEAgc3RhdGljIHZvaWQgcnRsX3NjaGVkdWxlX3Rhc2soc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIGVudW0gcnRsX2ZsYWcgZmxhZykKIAogc3RhdGljIHZvaWQgcnRsODE2OV9pbml0X3BoeShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCkKIHsKJiM0MzsJcGh5X2luaXRfaHcodHAtJmd0O3BoeWRldik7CiYjNDM7CXBoeV9yZXN1bWUodHAtJmd0O3BoeWRldik7CiAJcjgxNjlfaHdfcGh5X2NvbmZpZyh0cCwgdHAtJmd0O3BoeWRldiwgdHAtJmd0O21hY192ZXJzaW9uKTsKIAogCWlmICh0cC0mZ3Q7bWFjX3ZlcnNpb24gJmx0Oz0gUlRMX0dJR0FfTUFDX1ZFUl8wNikgewpAQCAtMjU1Miw5ICYjNDM7MjY0OSw2IEBAIHN0YXRpYyB2b2lkIHJ0bDgxNjlfaW5pdF9waHkoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApCiAJICAgIHRwLSZndDtwY2lfZGV2LSZndDtzdWJzeXN0ZW1fZGV2aWNlID09IDB4ZTAwMCkKIAkJcGh5X3dyaXRlX3BhZ2VkKHRwLSZndDtwaHlkZXYsIDB4MDAwMSwgMHgxMCwgMHhmMDFiKTsKIAotCWlmICh0cC0mZ3Q7c2ZwX21vZGUpCi0JCXJ0bF9zZnBfaW5pdCh0cCk7Ci0KIAkvKiBXZSBtYXkgaGF2ZSBjYWxsZWQgcGh5X3NwZWVkX2Rvd24gYmVmb3JlICovCiAJcGh5X3NwZWVkX3VwKHRwLSZndDtwaHlkZXYpOwogCkBAIC0yNjU3LDE1ICYjNDM7Mjc1MSw2IEBAIHN0YXRpYyB2b2lkIHJ0bF9qdW1ib19jb25maWcoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApCiAKIAlpZiAocGNpX2lzX3BjaWUodHAtJmd0O3BjaV9kZXYpICZhbXA7JmFtcDsgdHAtJmd0O3N1cHBvcnRzX2dtaWkpCiAJCXBjaWVfc2V0X3JlYWRycSh0cC0mZ3Q7cGNpX2RldiwgcmVhZHJxKTsKLQotCS8qIENoaXAgZG9lc24mIzM5O3Qgc3VwcG9ydCBwYXVzZSBpbiBqdW1ibyBtb2RlICovCi0JaWYgKGp1bWJvKSB7Ci0JCWxpbmttb2RlX2NsZWFyX2JpdChFVEhUT09MX0xJTktfTU9ERV9QYXVzZV9CSVQsCi0JCQkJICAgdHAtJmd0O3BoeWRldi0mZ3Q7YWR2ZXJ0aXNpbmcpOwotCQlsaW5rbW9kZV9jbGVhcl9iaXQoRVRIVE9PTF9MSU5LX01PREVfQXN5bV9QYXVzZV9CSVQsCi0JCQkJICAgdHAtJmd0O3BoeWRldi0mZ3Q7YWR2ZXJ0aXNpbmcpOwotCQlwaHlfc3RhcnRfYW5lZyh0cC0mZ3Q7cGh5ZGV2KTsKLQl9CiB9CiAKIERFQ0xBUkVfUlRMX0NPTkQocnRsX2NoaXBjbWRfY29uZCkKQEAgLTI3ODAsNyAmIzQzOzI4NjUsNyBAQCBzdGF0aWMgdm9pZCBydGxfcHJlcGFyZV9wb3dlcl9kb3duKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKQogCQlydGxfZXBoeV93cml0ZSh0cCwgMHgxOSwgMHhmZjY0KTsKIAogCWlmIChkZXZpY2VfbWF5X3dha2V1cCh0cF90b19kZXYodHApKSkgewotCQlwaHlfc3BlZWRfZG93bih0cC0mZ3Q7cGh5ZGV2LCBmYWxzZSk7CiYjNDM7CQlwaHlsaW5rX3NwZWVkX2Rvd24odHAtJmd0O3BoeWxpbmssIGZhbHNlKTsKIAkJcnRsX3dvbF9lbmFibGVfcngodHApOwogCX0KIH0KQEAgLTI4MzIsNiAmIzQzOzI5MTcsMTYgQEAgc3RhdGljIHZvaWQgcnRsODE2OV9zZXRfbWFnaWNfcmVnKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKQogCVJUTF9XMzIodHAsIDB4N2MsIHZhbCk7CiB9CiAKJiM0MztzdGF0aWMgaW50IHJ0bDgxNjlfaW9jdGwoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IGlmcmVxICppZnIsIGludCBjbWQpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCA9IG5ldGRldl9wcml2KGRldik7CiYjNDM7CiYjNDM7CWlmICghbmV0aWZfcnVubmluZyhkZXYpKQomIzQzOwkJcmV0dXJuIC1FTk9ERVY7CiYjNDM7CiYjNDM7CXJldHVybiBwaHlsaW5rX21paV9pb2N0bCh0cC0mZ3Q7cGh5bGluaywgaWZyLCBjbWQpOwomIzQzO30KJiM0MzsKIHN0YXRpYyB2b2lkIHJ0bF9zZXRfcnhfbW9kZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQogewogCXUzMiByeF9tb2RlID0gQWNjZXB0QnJvYWRjYXN0IHwgQWNjZXB0TXlQaHlzIHwgQWNjZXB0TXVsdGljYXN0OwpAQCAtMzA5OCw4ICYjNDM7MzE5MywyMiBAQCBzdGF0aWMgdm9pZCBydGxfZW5hYmxlX2x0cihzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCkKIAkJcjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGYyLCAweDkwMDMpOwogCQlyODE2OF9tYWNfb2NwX21vZGlmeSh0cCwgTFRSX09CRkZfTE9DSywgMHgwMDAwLCBMSU5LX1NQRUVEX0NIQU5HRV9FTik7CiAJCWJyZWFrOwotCWNhc2UgUlRMX0dJR0FfTUFDX1ZFUl80NiAuLi4gUlRMX0dJR0FfTUFDX1ZFUl80ODoKIAljYXNlIFJUTF9HSUdBX01BQ19WRVJfNTI6CiYjNDM7CQlyODE2OF9tYWNfb2NwX3dyaXRlKHRwLCAweGNkZDAsIDB4OTAwMyk7CiYjNDM7CQlyODE2OF9tYWNfb2NwX21vZGlmeSh0cCwgTFRSX1NOT09QLCAweDAwMDAsIExUUl9TTk9PUF9FTik7CiYjNDM7CQlyODE2OF9tYWNfb2NwX3dyaXRlKHRwLCAweGUwMmMsIDB4MTg4MCk7CiYjNDM7CQlyODE2OF9tYWNfb2NwX3dyaXRlKHRwLCAweGUwMmUsIDB4NDg4MCk7CiYjNDM7CQlyODE2OF9tYWNfb2NwX21vZGlmeSh0cCwgQUxEUFNfTFRSLCAweDAwMDAsIEFMRFBTX0xUUl9FTik7CiYjNDM7CQlyODE2OF9tYWNfb2NwX3dyaXRlKHRwLCAweGNkZDgsIDB4OTAwMyk7CiYjNDM7CQlyODE2OF9tYWNfb2NwX3dyaXRlKHRwLCAweGNkZGEsIDB4OTAwMyk7CiYjNDM7CQlyODE2OF9tYWNfb2NwX3dyaXRlKHRwLCAweGNkZGMsIDB4OTAwMyk7CiYjNDM7CQlyODE2OF9tYWNfb2NwX3dyaXRlKHRwLCAweGNkZDIsIDB4ODgzYyk7CiYjNDM7CQlyODE2OF9tYWNfb2NwX3dyaXRlKHRwLCAweGNkZDQsIDB4OGMxMik7CiYjNDM7CQlyODE2OF9tYWNfb2NwX3dyaXRlKHRwLCAweGNkZDYsIDB4OTAwMyk7CiYjNDM7CQlyODE2OF9tYWNfb2NwX3dyaXRlKHRwLCAweGUwYTYsIDB4OTAwMyk7CiYjNDM7CQlyODE2OF9tYWNfb2NwX3dyaXRlKHRwLCAweGUwYTgsIDB4OTAwMyk7CiYjNDM7CQlicmVhazsKJiM0MzsJY2FzZSBSVExfR0lHQV9NQUNfVkVSXzQ2IC4uLiBSVExfR0lHQV9NQUNfVkVSXzQ4OgogCQlyODE2OF9tYWNfb2NwX21vZGlmeSh0cCwgQUxEUFNfTFRSLCAweDAwMDAsIEFMRFBTX0xUUl9FTik7CiAJCVJUTF9XOCh0cCwgQ09NQk9fTFRSX0VYVEVORCwgUlRMX1I4KHRwLCBDT01CT19MVFJfRVhURU5EKSB8IENPTUJPX0xUUl9FWFRFTkRfRU4pOwogCQlmYWxsdGhyb3VnaDsKQEAgLTMxMTksNiAmIzQzOzMyMjgsNyBAQCBzdGF0aWMgdm9pZCBydGxfZW5hYmxlX2x0cihzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCkKIAl9CiAJLyogY2hpcCBjYW4gdHJpZ2dlciBMVFIgKi8KIAlyODE2OF9tYWNfb2NwX21vZGlmeSh0cCwgTFRSX09CRkZfTE9DSywgMHgwMDAzLCBMVFJfT0JGRl9MT0NLX0VOKTsKJiM0MzsJcjgxNjhfbWFjX29jcF9tb2RpZnkodHAsIFNFTkRfTFRSX01TRywgMHgwMDAwLCBMVFJfTVNHX0VOKTsKIH0KIAogc3RhdGljIHZvaWQgcnRsX2h3X2FzcG1fY2xrcmVxX2VuYWJsZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgYm9vbCBlbmFibGUpCkBAIC0zMTUyLDYgJiM0MzszMjYyLDcgQEAgc3RhdGljIHZvaWQgcnRsX2h3X2FzcG1fY2xrcmVxX2VuYWJsZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgYm9vbCBlbmFibGUpCiAJCXJ0bF9lbmFibGVfbHRyKHRwKTsKIAkJc3dpdGNoICh0cC0mZ3Q7bWFjX3ZlcnNpb24pIHsKIAkJY2FzZSBSVExfR0lHQV9NQUNfVkVSXzQ2IC4uLiBSVExfR0lHQV9NQUNfVkVSXzQ4OgomIzQzOwkJY2FzZSBSVExfR0lHQV9NQUNfVkVSXzUyOgogCQljYXNlIFJUTF9HSUdBX01BQ19WRVJfNjEgLi4uIFJUTF9HSUdBX01BQ19WRVJfTEFTVDoKIAkJCS8qIHJlc2V0IGVwaHkgdHgvcnggZGlzYWJsZSB0aW1lciAqLwogCQkJcjgxNjhfbWFjX29jcF9tb2RpZnkodHAsIDB4ZTA5NCwgMHhmZjAwLCAwKTsKQEAgLTMxNjQsNiAmIzQzOzMyNzUsNyBAQCBzdGF0aWMgdm9pZCBydGxfaHdfYXNwbV9jbGtyZXFfZW5hYmxlKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCBib29sIGVuYWJsZSkKIAl9IGVsc2UgewogCQlzd2l0Y2ggKHRwLSZndDttYWNfdmVyc2lvbikgewogCQljYXNlIFJUTF9HSUdBX01BQ19WRVJfNDYgLi4uIFJUTF9HSUdBX01BQ19WRVJfNDg6CiYjNDM7CQljYXNlIFJUTF9HSUdBX01BQ19WRVJfNTI6CiAJCWNhc2UgUlRMX0dJR0FfTUFDX1ZFUl82MSAuLi4gUlRMX0dJR0FfTUFDX1ZFUl9MQVNUOgogCQkJcjgxNjhfbWFjX29jcF9tb2RpZnkodHAsIDB4ZTA5MiwgMHgwMGZmLCAwKTsKIAkJCWJyZWFrOwpAQCAtMzY1Nyw2ICYjNDM7Mzc2OSwzNSBAQCBzdGF0aWMgdm9pZCBydGxfaHdfc3RhcnRfODE2OGVwXzMoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApCiAJcjgxNjhfbWFjX29jcF9tb2RpZnkodHAsIDB4ZTg2MCwgMHgwMDAwLCAweDAwODApOwogfQogCiYjNDM7c3RhdGljIHZvaWQgcnRsX2xvd3Bvd2VyX2hpZGRlbl9mdW5jdGlvbnMoc3RydWN0IHBjaV9kZXYgKnBkZXYpCiYjNDM7ewomIzQzOwl1bnNpZ25lZCBpbnQgc2xvdCA9IFBDSV9TTE9UKHBkZXYtJmd0O2RldmZuKTsKJiM0MzsJc3RydWN0IHBjaV9idXMgKmJ1cyA9IHBkZXYtJmd0O2J1czsKJiM0MzsJdW5zaWduZWQgaW50IGRldmZuOwomIzQzOwlpbnQgZnVuYzsKJiM0MzsJaW50IHJldDsKJiM0MzsJdTMyIHZhbDsKJiM0MzsKJiM0MzsJZm9yIChmdW5jID0gMjsgZnVuYyAmbHQ7IDg7IGZ1bmMmIzQzOyYjNDM7KSB7CiYjNDM7CQlkZXZmbiA9IFBDSV9ERVZGTihzbG90LCBmdW5jKTsKJiM0MzsKJiM0MzsJCXJldCA9IHBjaV9idXNfcmVhZF9jb25maWdfZHdvcmQoYnVzLCBkZXZmbiwgUlRMODExNkFGX0ZVTkNfUE1fQ1NSLCAmYW1wO3ZhbCk7CiYjNDM7CQlpZiAoIXJldCAmYW1wOyZhbXA7ICFQQ0lfUE9TU0lCTEVfRVJST1IodmFsKSkgewomIzQzOwkJCXZhbCAmYW1wOz0gflBDSV9QTV9DVFJMX1BNRV9TVEFUVVM7CiYjNDM7CQkJdmFsICZhbXA7PSB+KFBDSV9QTV9DVFJMX1NUQVRFX01BU0sgfCBQQ0lfUE1fQ1RSTF9QTUVfRU5BQkxFKTsKJiM0MzsJCQl2YWwgfD0gKFJUTF9QTV9EM0hPVCB8IFBDSV9QTV9DVFJMX1BNRV9FTkFCTEUpOwomIzQzOwkJCXBjaV9idXNfd3JpdGVfY29uZmlnX2R3b3JkKGJ1cywgZGV2Zm4sIFJUTDgxMTZBRl9GVU5DX1BNX0NTUiwgdmFsKTsKJiM0MzsJCX0KJiM0MzsKJiM0MzsJCXJldCA9IHBjaV9idXNfcmVhZF9jb25maWdfZHdvcmQoYnVzLCBkZXZmbiwgUlRMODExNkFGX0ZVTkNfRVhQX0xOS0NUTCwgJmFtcDt2YWwpOwomIzQzOwkJaWYgKCFyZXQgJmFtcDsmYW1wOyAhUENJX1BPU1NJQkxFX0VSUk9SKHZhbCkpIHsKJiM0MzsJCQl2YWwgJmFtcDs9IH4oKFBDSV9FWFBfTE5LU1RBX0xCTVMgfCBQQ0lfRVhQX0xOS1NUQV9MQUJTKSAmbHQ7Jmx0OyAxNik7CiYjNDM7CQkJdmFsIHw9IFBDSV9FWFBfTE5LQ1RMX0FTUE1DOwomIzQzOwkJCXBjaV9idXNfd3JpdGVfY29uZmlnX2R3b3JkKGJ1cywgZGV2Zm4sIFJUTDgxMTZBRl9GVU5DX0VYUF9MTktDVEwsIHZhbCk7CiYjNDM7CQl9CiYjNDM7CX0KJiM0Mzt9CiYjNDM7CiBzdGF0aWMgdm9pZCBydGxfaHdfc3RhcnRfODExNyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCkKIHsKIAlzdGF0aWMgY29uc3Qgc3RydWN0IGVwaHlfaW5mbyBlX2luZm9fODExN1tdID0gewpAQCAtMzY5MywxMiAmIzQzOzM4MzQsMTQgQEAgc3RhdGljIHZvaWQgcnRsX2h3X3N0YXJ0XzgxMTcoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApCiAKIAlydGxfcGNpZV9zdGF0ZV9sMmwzX2Rpc2FibGUodHApOwogCi0Jcmdfc2F3X2NudCA9IHBoeV9yZWFkX3BhZ2VkKHRwLSZndDtwaHlkZXYsIDB4MGM0MiwgMHgxMykgJmFtcDsgMHgzZmZmOwotCWlmIChyZ19zYXdfY250ICZndDsgMCkgewotCQl1MTYgc3dfY250XzFtc19pbmk7CiYjNDM7CWlmICh0cC0mZ3Q7cGh5ZGV2KSB7CiYjNDM7CQlyZ19zYXdfY250ID0gcGh5X3JlYWRfcGFnZWQodHAtJmd0O3BoeWRldiwgMHgwYzQyLCAweDEzKSAmYW1wOyAweDNmZmY7CiYjNDM7CQlpZiAocmdfc2F3X2NudCAmZ3Q7IDApIHsKJiM0MzsJCQl1MTYgc3dfY250XzFtc19pbmk7CiAKLQkJc3dfY250XzFtc19pbmkgPSAoMTYwMDAwMDAgLyByZ19zYXdfY250KSAmYW1wOyAweDBmZmY7Ci0JCXI4MTY4X21hY19vY3BfbW9kaWZ5KHRwLCAweGQ0MTIsIDB4MGZmZiwgc3dfY250XzFtc19pbmkpOwomIzQzOwkJCXN3X2NudF8xbXNfaW5pID0gKDE2MDAwMDAwIC8gcmdfc2F3X2NudCkgJmFtcDsgMHgwZmZmOwomIzQzOwkJCXI4MTY4X21hY19vY3BfbW9kaWZ5KHRwLCAweGQ0MTIsIDB4MGZmZiwgc3dfY250XzFtc19pbmkpOwomIzQzOwkJfQogCX0KIAogCXI4MTY4X21hY19vY3BfbW9kaWZ5KHRwLCAweGUwNTYsIDB4MDBmMCwgMHgwMDAwKTsKQEAgLTM3MTEsNiAmIzQzOzM4NTQsOSBAQCBzdGF0aWMgdm9pZCBydGxfaHdfc3RhcnRfODExNyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCkKIAlyODE2OF9tYWNfb2NwX3dyaXRlKHRwLCAweGMwOTQsIDB4MDAwMCk7CiAJcjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjMDllLCAweDAwMDApOwogCiYjNDM7CWlmIChydGxfaXNfODExNmFmKHRwKSkKJiM0MzsJCXJ0bF9sb3dwb3dlcl9oaWRkZW5fZnVuY3Rpb25zKHRwLSZndDtwY2lfZGV2KTsKJiM0MzsKIAkvKiBmaXJtd2FyZSBpcyBmb3IgTUFDIG9ubHkgKi8KIAlyODE2OV9hcHBseV9maXJtd2FyZSh0cCk7CiB9CkBAIC00MTM5LDEyICYjNDM7NDI4NSwyNSBAQCBzdGF0aWMgdm9pZCBydGxfaHdfc3RhcnQoc3RydWN0ICBydGw4MTY5X3ByaXZhdGUgKnRwKQogc3RhdGljIGludCBydGw4MTY5X2NoYW5nZV9tdHUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgaW50IG5ld19tdHUpCiB7CiAJc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAgPSBuZXRkZXZfcHJpdihkZXYpOwomIzQzOwlib29sIGp1bWJvX2JlZm9yZSA9IGRldi0mZ3Q7bXR1ICZndDsgRVRIX0RBVEFfTEVOOwomIzQzOwlib29sIGp1bWJvX2FmdGVyID0gbmV3X210dSAmZ3Q7IEVUSF9EQVRBX0xFTjsKIAogCVdSSVRFX09OQ0UoZGV2LSZndDttdHUsIG5ld19tdHUpOwogCW5ldGRldl91cGRhdGVfZmVhdHVyZXMoZGV2KTsKIAlydGxfanVtYm9fY29uZmlnKHRwKTsKIAlydGxfc2V0X2VlZV90eGlkbGVfdGltZXIodHApOwogCiYjNDM7CWlmIChqdW1ib19iZWZvcmUgIT0ganVtYm9fYWZ0ZXIpIHsKJiM0MzsJCXVuc2lnbmVkIGxvbmcgY2FwcyA9IHRwLSZndDtwaHlsaW5rX2NvbmZpZy5tYWNfY2FwYWJpbGl0aWVzOwomIzQzOwomIzQzOwkJaWYgKGp1bWJvX2FmdGVyKQomIzQzOwkJCWNhcHMgJmFtcDs9IH4oTUFDX1NZTV9QQVVTRSB8IE1BQ19BU1lNX1BBVVNFKTsKJiM0MzsJCWVsc2UKJiM0MzsJCQljYXBzIHw9IChNQUNfU1lNX1BBVVNFIHwgTUFDX0FTWU1fUEFVU0UpOwomIzQzOwomIzQzOwkJcGh5bGlua19zZXRfbWFjX2NhcGFiaWxpdGllcyh0cC0mZ3Q7cGh5bGluaywgY2Fwcyk7CiYjNDM7CX0KJiM0MzsKIAlyZXR1cm4gMDsKIH0KIApAQCAtNDg2OSw4ICYjNDM7NTAyOCwxMyBAQCBzdGF0aWMgaXJxcmV0dXJuX3QgcnRsODE2OV9pbnRlcnJ1cHQoaW50IGlycSwgdm9pZCAqZGV2X2luc3RhbmNlKQogCQlnb3RvIG91dDsKIAl9CiAKLQlpZiAoc3RhdHVzICZhbXA7IExpbmtDaGcpCi0JCXBoeV9tYWNfaW50ZXJydXB0KHRwLSZndDtwaHlkZXYpOwomIzQzOwlpZiAoc3RhdHVzICZhbXA7IExpbmtDaGcpIHsKJiM0MzsJCWlmICh0cC0mZ3Q7cGh5ZGV2KQomIzQzOwkJCXBoeV9tYWNfaW50ZXJydXB0KHRwLSZndDtwaHlkZXYpOwomIzQzOwkJZWxzZSBpZiAodHAtJmd0O3NmcF9tb2RlKQomIzQzOwkJCXBoeWxpbmtfbWFjX2NoYW5nZSh0cC0mZ3Q7cGh5bGluaywKJiM0MzsJCQkJCSAgICEhKFJUTF9SOCh0cCwgUEhZc3RhdHVzKSAmYW1wOyBMaW5rU3RhdHVzKSk7CiYjNDM7CX0KIAogCXJ0bF9pcnFfZGlzYWJsZSh0cCk7CiAJbmFwaV9zY2hlZHVsZSgmYW1wO3RwLSZndDtuYXBpKTsKQEAgLTQ5MzAsOSAmIzQzOzUwOTQsNiBAQCBzdGF0aWMgaW50IHJ0bDgxNjlfcG9sbChzdHJ1Y3QgbmFwaV9zdHJ1Y3QgKm5hcGksIGludCBidWRnZXQpCiAKIHN0YXRpYyB2b2lkIHJ0bF9lbmFibGVfdHhfbHBpKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCBib29sIGVuYWJsZSkKIHsKLQlpZiAoIXJ0bF9zdXBwb3J0c19lZWUodHApKQotCQlyZXR1cm47Ci0KIAlzd2l0Y2ggKHRwLSZndDttYWNfdmVyc2lvbikgewogCWNhc2UgUlRMX0dJR0FfTUFDX1ZFUl8zNCAuLi4gUlRMX0dJR0FfTUFDX1ZFUl81MjoKIAkJLyogQWRqdXN0IEVFRSBMRUQgZnJlcXVlbmN5ICovCkBAIC00OTYzLDQwICYjNDM7NTEyNCwxNSBAQCBzdGF0aWMgdm9pZCBydGxfZW5hYmxlX3R4X2xwaShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgYm9vbCBlbmFibGUpCiAJfQogfQogCi1zdGF0aWMgdm9pZCByODE2OV9waHlsaW5rX2hhbmRsZXIoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpCi17Ci0Jc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAgPSBuZXRkZXZfcHJpdihuZGV2KTsKLQlzdHJ1Y3QgZGV2aWNlICpkID0gdHBfdG9fZGV2KHRwKTsKLQotCWlmIChuZXRpZl9jYXJyaWVyX29rKG5kZXYpKSB7Ci0JCXJ0bF9saW5rX2NoZ19wYXRjaCh0cCk7Ci0JCXJ0bF9lbmFibGVfdHhfbHBpKHRwLCB0cC0mZ3Q7cGh5ZGV2LSZndDtlbmFibGVfdHhfbHBpKTsKLQkJcG1fcmVxdWVzdF9yZXN1bWUoZCk7Ci0JfSBlbHNlIHsKLQkJcG1fcnVudGltZV9pZGxlKGQpOwotCX0KLQotCXBoeV9wcmludF9zdGF0dXModHAtJmd0O3BoeWRldik7Ci19Ci0KIHN0YXRpYyBpbnQgcjgxNjlfcGh5X2Nvbm5lY3Qoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApCiB7Ci0Jc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiA9IHRwLSZndDtwaHlkZXY7Ci0JcGh5X2ludGVyZmFjZV90IHBoeV9tb2RlOwogCWludCByZXQ7CiAKLQlwaHlfbW9kZSA9IHRwLSZndDtzdXBwb3J0c19nbWlpID8gUEhZX0lOVEVSRkFDRV9NT0RFX0dNSUkgOgotCQkgICBQSFlfSU5URVJGQUNFX01PREVfTUlJOwotCi0JcmV0ID0gcGh5X2Nvbm5lY3RfZGlyZWN0KHRwLSZndDtkZXYsIHBoeWRldiwgcjgxNjlfcGh5bGlua19oYW5kbGVyLAotCQkJCSBwaHlfbW9kZSk7Ci0JaWYgKHJldCkKJiM0MzsJcmV0ID0gcGh5bGlua19jb25uZWN0X3BoeSh0cC0mZ3Q7cGh5bGluaywgdHAtJmd0O3BoeWRldik7CiYjNDM7CWlmIChyZXQpIHsKJiM0MzsJCW5ldGRldl9lcnIodHAtJmd0O2RldiwgJiMzNDtmYWlsZWQgdG8gY29ubmVjdCBwaHlcbiYjMzQ7KTsKIAkJcmV0dXJuIHJldDsKLQotCWlmICghdHAtJmd0O3N1cHBvcnRzX2dtaWkpCi0JCXBoeV9zZXRfbWF4X3NwZWVkKHBoeWRldiwgU1BFRURfMTAwKTsKLQotCXBoeV9hdHRhY2hlZF9pbmZvKHBoeWRldik7CiYjNDM7CX0KIAogCXJldHVybiAwOwogfQpAQCAtNTAwNywxMCAmIzQzOzUxNDMsMTAgQEAgc3RhdGljIHZvaWQgcnRsODE2OV9kb3duKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKQogCS8qIENsZWFyIGFsbCB0YXNrIGZsYWdzICovCiAJYml0bWFwX3plcm8odHAtJmd0O3drLmZsYWdzLCBSVExfRkxBR19NQVgpOwogCi0JcGh5X3N0b3AodHAtJmd0O3BoeWRldik7CiYjNDM7CXBoeWxpbmtfc3RvcCh0cC0mZ3Q7cGh5bGluayk7CiAKIAkvKiBSZXNldCBTZXJEZXMgUEhZIHRvIGJyaW5nIGRvd24gZmliZXIgbGluayAqLwotCWlmICh0cC0mZ3Q7c2ZwX21vZGUpCiYjNDM7CWlmICh0cC0mZ3Q7c2ZwX21vZGUgPT0gUlRMX1NGUF84MTI3X0FURikKIAkJcnRsX3NmcF9yZXNldCh0cCk7CiAKIAlydGw4MTY5X3VwZGF0ZV9jb3VudGVycyh0cCk7CkBAIC01MDMyLDE0ICYjNDM7NTE2OCwxNCBAQCBzdGF0aWMgdm9pZCBydGw4MTY5X3VwKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKQogCQlydGw4MTY4X2RyaXZlcl9zdGFydCh0cCk7CiAKIAlwY2lfc2V0X21hc3Rlcih0cC0mZ3Q7cGNpX2Rldik7Ci0JcGh5X2luaXRfaHcodHAtJmd0O3BoeWRldik7Ci0JcGh5X3Jlc3VtZSh0cC0mZ3Q7cGh5ZGV2KTsKLQlydGw4MTY5X2luaXRfcGh5KHRwKTsKJiM0MzsJaWYgKHRwLSZndDtwaHlkZXYpCiYjNDM7CQlydGw4MTY5X2luaXRfcGh5KHRwKTsKJiM0MzsKIAluYXBpX2VuYWJsZSgmYW1wO3RwLSZndDtuYXBpKTsKIAllbmFibGVfd29yaygmYW1wO3RwLSZndDt3ay53b3JrKTsKIAlydGxfcmVzZXRfd29yayh0cCk7CiAKLQlwaHlfc3RhcnQodHAtJmd0O3BoeWRldik7CiYjNDM7CXBoeWxpbmtfc3RhcnQodHAtJmd0O3BoeWxpbmspOwogfQogCiBzdGF0aWMgaW50IHJ0bDgxNjlfY2xvc2Uoc3RydWN0IG5ldF9kZXZpY2UgKmRldikKQEAgLTUwNTUsNyAmIzQzOzUxOTEsNyBAQCBzdGF0aWMgaW50IHJ0bDgxNjlfY2xvc2Uoc3RydWN0IG5ldF9kZXZpY2UgKmRldikKIAogCWZyZWVfaXJxKHRwLSZndDtpcnEsIHRwKTsKIAotCXBoeV9kaXNjb25uZWN0KHRwLSZndDtwaHlkZXYpOwomIzQzOwlwaHlsaW5rX2Rpc2Nvbm5lY3RfcGh5KHRwLSZndDtwaHlsaW5rKTsKIAogCWRtYV9mcmVlX2NvaGVyZW50KCZhbXA7cGRldi0mZ3Q7ZGV2LCBSODE2OV9SWF9SSU5HX0JZVEVTLCB0cC0mZ3Q7UnhEZXNjQXJyYXksCiAJCQkgIHRwLSZndDtSeFBoeUFkZHIpOwpAQCAtNTExMiw5ICYjNDM7NTI0OCwxMSBAQCBzdGF0aWMgaW50IHJ0bF9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCiAJaWYgKHJldHZhbCAmbHQ7IDApCiAJCWdvdG8gZXJyX3JlbGVhc2VfZndfMjsKIAotCXJldHZhbCA9IHI4MTY5X3BoeV9jb25uZWN0KHRwKTsKLQlpZiAocmV0dmFsKQotCQlnb3RvIGVycl9mcmVlX2lycTsKJiM0MzsJaWYgKHRwLSZndDtwaHlkZXYpIHsKJiM0MzsJCXJldHZhbCA9IHI4MTY5X3BoeV9jb25uZWN0KHRwKTsKJiM0MzsJCWlmIChyZXR2YWwpCiYjNDM7CQkJZ290byBlcnJfZnJlZV9pcnE7CiYjNDM7CX0KIAogCXJ0bDgxNjlfdXAodHApOwogCXJ0bDgxNjlfaW5pdF9jb3VudGVyX29mZnNldHModHApOwpAQCAtNTE5MCw4ICYjNDM7NTMyOCwxMSBAQCBzdGF0aWMgaW50IHJ0bDgxNjlfcnVudGltZV9yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2KQogCXJ0bF9yYXJfc2V0KHRwLCB0cC0mZ3Q7ZGV2LSZndDtkZXZfYWRkcik7CiAJX19ydGw4MTY5X3NldF93b2wodHAsIHRwLSZndDtzYXZlZF93b2xvcHRzKTsKIAotCWlmICh0cC0mZ3Q7VHhEZXNjQXJyYXkpCiYjNDM7CWlmICh0cC0mZ3Q7VHhEZXNjQXJyYXkpIHsKJiM0MzsJCXJ0bmxfbG9jaygpOwogCQlydGw4MTY5X3VwKHRwKTsKJiM0MzsJCXJ0bmxfdW5sb2NrKCk7CiYjNDM7CX0KIAogCW5ldGlmX2RldmljZV9hdHRhY2godHAtJmd0O2Rldik7CiAKQEAgLTUyODgsNiAmIzQzOzU0MjksNyBAQCBzdGF0aWMgdm9pZCBydGxfcmVtb3ZlX29uZShzdHJ1Y3QgcGNpX2RldiAqcGRldikKIAkJcjgxNjlfcmVtb3ZlX2xlZHModHAtJmd0O2xlZHMpOwogCiAJdW5yZWdpc3Rlcl9uZXRkZXYodHAtJmd0O2Rldik7CiYjNDM7CXBoeWxpbmtfZGVzdHJveSh0cC0mZ3Q7cGh5bGluayk7CiAKIAlpZiAodHAtJmd0O2Rhc2hfdHlwZSAhPSBSVExfREFTSF9OT05FKQogCQlydGw4MTY4X2RyaXZlcl9zdG9wKHRwKTsKQEAgLTUzMTAsNyAmIzQzOzU0NTIsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIHJ0bF9uZXRkZXZfb3BzID0gewogCS5uZG9fZml4X2ZlYXR1cmVzCT0gcnRsODE2OV9maXhfZmVhdHVyZXMsCiAJLm5kb19zZXRfZmVhdHVyZXMJPSBydGw4MTY5X3NldF9mZWF0dXJlcywKIAkubmRvX3NldF9tYWNfYWRkcmVzcwk9IHJ0bF9zZXRfbWFjX2FkZHJlc3MsCi0JLm5kb19ldGhfaW9jdGwJCT0gcGh5X2RvX2lvY3RsX3J1bm5pbmcsCiYjNDM7CS5uZG9fZXRoX2lvY3RsCQk9IHJ0bDgxNjlfaW9jdGwsCiAJLm5kb19zZXRfcnhfbW9kZQk9IHJ0bF9zZXRfcnhfbW9kZSwKICNpZmRlZiBDT05GSUdfTkVUX1BPTExfQ09OVFJPTExFUgogCS5uZG9fcG9sbF9jb250cm9sbGVyCT0gcnRsODE2OV9uZXRwb2xsLApAQCAtNTQ3NCwxNiAmIzQzOzU2MTYsNiBAQCBzdGF0aWMgaW50IHI4MTY5X21kaW9fcmVnaXN0ZXIoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApCiAJCXJldHVybiAtRVVOQVRDSDsKIAl9CiAKLQl0cC0mZ3Q7cGh5ZGV2LSZndDttYWNfbWFuYWdlZF9wbSA9IHRydWU7Ci0JaWYgKHJ0bF9zdXBwb3J0c19lZWUodHApKQotCQlwaHlfc3VwcG9ydF9lZWUodHAtJmd0O3BoeWRldik7Ci0JcGh5X3N1cHBvcnRfYXN5bV9wYXVzZSh0cC0mZ3Q7cGh5ZGV2KTsKLQotCS8qIG1pbWljIGJlaGF2aW9yIG9mIHI4MTI1L3I4MTI2IHZlbmRvciBkcml2ZXJzICovCi0JaWYgKHRwLSZndDttYWNfdmVyc2lvbiA9PSBSVExfR0lHQV9NQUNfVkVSXzYxKQotCQlwaHlfZGlzYWJsZV9lZWVfbW9kZSh0cC0mZ3Q7cGh5ZGV2LAotCQkJCSAgICAgRVRIVE9PTF9MSU5LX01PREVfMjUwMGJhc2VUX0Z1bGxfQklUKTsKLQogCS8qIFBIWSB3aWxsIGJlIHdva2VuIHVwIGluIHJ0bF9vcGVuKCkgKi8KIAlwaHlfc3VzcGVuZCh0cC0mZ3Q7cGh5ZGV2KTsKIApAQCAtNTU5OSw2ICYjNDM7NTczMSwyNDIgQEAgc3RhdGljIGJvb2wgcnRsX2FzcG1faXNfc2FmZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCkKIAlyZXR1cm4gZmFsc2U7CiB9CiAKJiM0MztzdGF0aWMgdm9pZCBydGxfbWFjX2xpbmtfZG93bihzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZywgdW5zaWduZWQgaW50IG1vZGUsCiYjNDM7CQkJICAgICAgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwID0gY29udGFpbmVyX29mKGNvbmZpZywgc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSwgcGh5bGlua19jb25maWcpOwomIzQzOwomIzQzOwl0cC0mZ3Q7c3BlZWQgPSBTUEVFRF9VTktOT1dOOwomIzQzOwlwbV9ydW50aW1lX2lkbGUodHBfdG9fZGV2KHRwKSk7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyB2b2lkIHJ0bF9tYWNfbGlua191cChzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZywgc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwKJiM0MzsJCQkgICAgdW5zaWduZWQgaW50IG1vZGUsIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UsCiYjNDM7CQkJICAgIGludCBzcGVlZCwgaW50IGR1cGxleCwgYm9vbCB0eF9wYXVzZSwgYm9vbCByeF9wYXVzZSkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwID0gY29udGFpbmVyX29mKGNvbmZpZywgc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSwgcGh5bGlua19jb25maWcpOwomIzQzOwlzdHJ1Y3QgZGV2aWNlICpkID0gdHBfdG9fZGV2KHRwKTsKJiM0MzsKJiM0MzsJdHAtJmd0O3NwZWVkID0gc3BlZWQ7CiYjNDM7CXJ0bF9saW5rX2NoZ19wYXRjaCh0cCwgc3BlZWQpOwomIzQzOwomIzQzOwlwbV9yZXF1ZXN0X3Jlc3VtZShkKTsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIHN0cnVjdCBwaHlsaW5rX3BjcyAqcnRsX21hY19zZWxlY3RfcGNzKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLAomIzQzOwkJCQkJICAgICAgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwID0gY29udGFpbmVyX29mKGNvbmZpZywgc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSwgcGh5bGlua19jb25maWcpOwomIzQzOwomIzQzOwlpZiAoIXRwLSZndDtwY3Mub3BzKQomIzQzOwkJcmV0dXJuIE5VTEw7CiYjNDM7CiYjNDM7CWlmIChpbnRlcmZhY2UgPT0gUEhZX0lOVEVSRkFDRV9NT0RFXzEwMDBCQVNFWCB8fAomIzQzOwkgICAgaW50ZXJmYWNlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV8xMEdCQVNFUikKJiM0MzsJCXJldHVybiAmYW1wO3RwLSZndDtwY3M7CiYjNDM7CiYjNDM7CXJldHVybiBOVUxMOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgdm9pZCBydGxfbWFjX2NvbmZpZyhzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZywgdW5zaWduZWQgaW50IG1vZGUsCiYjNDM7CQkJICAgY29uc3Qgc3RydWN0IHBoeWxpbmtfbGlua19zdGF0ZSAqc3RhdGUpCiYjNDM7ewomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgdTE2IHJ0bDgxNjlfc2RzX3JlYWQoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIHUxNiBzZHNfcmVnKQomIzQzO3sKJiM0MzsJdW5zaWduZWQgbG9uZyBmbGFnczsKJiM0MzsJdTE2IHZhbCA9IDA7CiYjNDM7CiYjNDM7CXJhd19zcGluX2xvY2tfaXJxc2F2ZSgmYW1wO3RwLSZndDttYWNfb2NwX2xvY2ssIGZsYWdzKTsKJiM0MzsJX19yODE2OF9tYWNfb2NwX3dyaXRlKHRwLCBPQ1BfU0RTX0FERFJfUkVHLCBzZHNfcmVnKTsKJiM0MzsJX19yODE2OF9tYWNfb2NwX3dyaXRlKHRwLCBPQ1BfU0RTX0NNRF9SRUcsIFNEU19DTURfUkVBRCk7CiYjNDM7CXZhbCA9IF9fcjgxNjhfbWFjX29jcF9yZWFkKHRwLCBPQ1BfU0RTX0RBVEFfUkVHKTsKJiM0MzsJcmF3X3NwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmFtcDt0cC0mZ3Q7bWFjX29jcF9sb2NrLCBmbGFncyk7CiYjNDM7CiYjNDM7CXJldHVybiB2YWw7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyB2b2lkIHJ0bDgxNjlfcGNzX2dldF9zdGF0ZShzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcywKJiM0MzsJCQkJICB1bnNpZ25lZCBpbnQgbmVnX21vZGUsCiYjNDM7CQkJCSAgc3RydWN0IHBoeWxpbmtfbGlua19zdGF0ZSAqc3RhdGUpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCA9IGNvbnRhaW5lcl9vZihwY3MsIHN0cnVjdCBydGw4MTY5X3ByaXZhdGUsIHBjcyk7CiYjNDM7CiYjNDM7CWlmICh0cC0mZ3Q7c2ZwX21vZGUgPT0gUlRMX1NGUF84MTI3X0FURikgewomIzQzOwkJdTE2IHN0YXQxOwomIzQzOwomIzQzOwkJc3RhdDEgPSBydGw4MTY5X3Nkc19yZWFkKHRwLCBSVExfU0RTX0M0NV9CQVNFICYjNDM7IE1ESU9fU1RBVDEpOwomIzQzOwomIzQzOwkJaWYgKCEoc3RhdDEgJmFtcDsgTURJT19TVEFUMV9MU1RBVFVTKSkKJiM0MzsJCQlzdGF0MSA9IHJ0bDgxNjlfc2RzX3JlYWQodHAsIFJUTF9TRFNfQzQ1X0JBU0UgJiM0MzsgTURJT19TVEFUMSk7CiYjNDM7CiYjNDM7CQlzdGF0ZS0mZ3Q7bGluayA9ICEhKHN0YXQxICZhbXA7IE1ESU9fU1RBVDFfTFNUQVRVUyk7CiYjNDM7CQlpZiAoIXN0YXRlLSZndDtsaW5rKQomIzQzOwkJCXJldHVybjsKJiM0MzsKJiM0MzsJCXN0YXRlLSZndDtkdXBsZXggPSBEVVBMRVhfRlVMTDsKJiM0MzsJCXN0YXRlLSZndDtzcGVlZCA9IFNQRUVEXzEwMDAwOwomIzQzOwl9IGVsc2UgewomIzQzOwkJdTE2IGJtc3IsIGxwYTsKJiM0MzsKJiM0MzsJCWJtc3IgPSBydGw4MTY5X3Nkc19yZWFkKHRwLCBSVExfU0RTX0MyMl9CQVNFICYjNDM7IE1JSV9CTVNSKTsKJiM0MzsJCWxwYSA9IHJ0bDgxNjlfc2RzX3JlYWQodHAsIFJUTF9TRFNfQzIyX0JBU0UgJiM0MzsgTUlJX0xQQSk7CiYjNDM7CQlwaHlsaW5rX21paV9jMjJfcGNzX2RlY29kZV9zdGF0ZShzdGF0ZSwgbmVnX21vZGUsIGJtc3IsIGxwYSk7CiYjNDM7CX0KJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIGludCBydGw4MTY5X3Bjc19jb25maWcoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MsIHVuc2lnbmVkIGludCBtb2RlLAomIzQzOwkJCSAgICAgIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UsCiYjNDM7CQkJICAgICAgY29uc3QgdW5zaWduZWQgbG9uZyAqYWR2ZXJ0aXNpbmcsCiYjNDM7CQkJICAgICAgYm9vbCBwZXJtaXRfcGF1c2VfdG9fbWFjKQomIzQzO3sKJiM0MzsJc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAgPSBjb250YWluZXJfb2YocGNzLCBzdHJ1Y3QgcnRsODE2OV9wcml2YXRlLCBwY3MpOwomIzQzOwomIzQzOwlpZiAodHAtJmd0O3NmcF9tb2RlID09IFJUTF9TRlBfODEyN19BVEYpIHsKJiM0MzsJCXN3aXRjaCAoaW50ZXJmYWNlKSB7CiYjNDM7CQljYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV8xMEdCQVNFUjoKJiM0MzsJCQlyODEyN19zZnBfaW5pdF8xMGcodHApOwomIzQzOwkJCWJyZWFrOwomIzQzOwkJY2FzZSBQSFlfSU5URVJGQUNFX01PREVfMTAwMEJBU0VYOgomIzQzOwkJCXI4MTI3X3NmcF9pbml0XzFnKHRwKTsKJiM0MzsJCQlicmVhazsKJiM0MzsJCWRlZmF1bHQ6CiYjNDM7CQkJbmV0ZGV2X2Vycih0cC0mZ3Q7ZGV2LCAmIzM0O1Vuc3VwcG9ydGVkIFNGUCBpbnRlcmZhY2UgbW9kZTogJXNcbiYjMzQ7LAomIzQzOwkJCQkgICBwaHlfbW9kZXMoaW50ZXJmYWNlKSk7CiYjNDM7CQkJcmV0dXJuIC1FT1BOT1RTVVBQOwomIzQzOwkJfQomIzQzOwl9CiYjNDM7CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgaW50IHJ0bDgxNjlfcGNzX3ZhbGlkYXRlKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzLCB1bnNpZ25lZCBsb25nICpzdXBwb3J0ZWQsCiYjNDM7CQkJCWNvbnN0IHN0cnVjdCBwaHlsaW5rX2xpbmtfc3RhdGUgKnN0YXRlKQomIzQzO3sKJiM0MzsJcmV0dXJuIDA7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyB2b2lkIHJ0bDgxNjlfcGNzX2FuX3Jlc3RhcnQoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MpCiYjNDM7ewomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgdm9pZCBydGxfbWFjX2Rpc2FibGVfdHhfbHBpKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKQomIzQzO3sKJiM0MzsJc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAgPSBjb250YWluZXJfb2YoY29uZmlnLCBzdHJ1Y3QgcnRsODE2OV9wcml2YXRlLCBwaHlsaW5rX2NvbmZpZyk7CiYjNDM7CiYjNDM7CXJ0bF9lbmFibGVfdHhfbHBpKHRwLCBmYWxzZSk7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyBpbnQgcnRsX21hY19lbmFibGVfdHhfbHBpKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLCB1MzIgdGltZXIsIGJvb2wgdHhfY2xrX3N0b3ApCiYjNDM7ewomIzQzOwlzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCA9IGNvbnRhaW5lcl9vZihjb25maWcsIHN0cnVjdCBydGw4MTY5X3ByaXZhdGUsIHBoeWxpbmtfY29uZmlnKTsKJiM0MzsKJiM0MzsJcnRsX2VuYWJsZV90eF9scGkodHAsIHRydWUpOwomIzQzOwomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBwaHlsaW5rX21hY19vcHMgcnRsX3BoeWxpbmtfbWFjX29wcyA9IHsKJiM0MzsJLm1hY19zZWxlY3RfcGNzID0gcnRsX21hY19zZWxlY3RfcGNzLAomIzQzOwkubWFjX2NvbmZpZyA9IHJ0bF9tYWNfY29uZmlnLAomIzQzOwkubWFjX2xpbmtfZG93biAgPSBydGxfbWFjX2xpbmtfZG93biwKJiM0MzsJLm1hY19saW5rX3VwICAgID0gcnRsX21hY19saW5rX3VwLAomIzQzOwkubWFjX2Rpc2FibGVfdHhfbHBpID0gcnRsX21hY19kaXNhYmxlX3R4X2xwaSwKJiM0MzsJLm1hY19lbmFibGVfdHhfbHBpID0gcnRsX21hY19lbmFibGVfdHhfbHBpLAomIzQzO307CiYjNDM7CiYjNDM7c3RhdGljIHVuc2lnbmVkIGxvbmcgcnRsODE2OV9nZXRfbHBpX2NhcHMoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApCiYjNDM7ewomIzQzOwl1bnNpZ25lZCBsb25nIGNhcHMgPSAwOwomIzQzOwomIzQzOwlpZiAoIXJ0bF9zdXBwb3J0c19lZWUodHApIHx8IHRwLSZndDtzZnBfbW9kZSA9PSBSVExfU0ZQXzgxMjdfQVRGKQomIzQzOwkJcmV0dXJuIDA7CiYjNDM7CiYjNDM7CWNhcHMgfD0gTUFDXzEwMEZEIHwgTUFDXzEwMDBGRDsKJiM0MzsKJiM0MzsJLyogbWltaWMgYmVoYXZpb3Igb2YgcjgxMjUvcjgxMjYgdmVuZG9yIGRyaXZlcnMKJiM0MzsJICogUlRMX0dJR0FfTUFDX1ZFUl82MSBkb2VzbiYjMzk7dCBzdXBwb3J0IDIuNUcgZWVlCiYjNDM7CSAqLwomIzQzOwlpZiAodHAtJmd0O21hY192ZXJzaW9uICZndDs9IFJUTF9HSUdBX01BQ19WRVJfNjMpCiYjNDM7CQljYXBzIHw9IE1BQ18yNTAwRkQ7CiYjNDM7CWlmICh0cC0mZ3Q7bWFjX3ZlcnNpb24gJmd0Oz0gUlRMX0dJR0FfTUFDX1ZFUl83MCkKJiM0MzsJCWNhcHMgfD0gTUFDXzUwMDBGRDsKJiM0MzsJaWYgKHRwLSZndDttYWNfdmVyc2lvbiA9PSBSVExfR0lHQV9NQUNfVkVSXzgwKQomIzQzOwkJY2FwcyB8PSBNQUNfMTAwMDBGRDsKJiM0MzsKJiM0MzsJcmV0dXJuIGNhcHM7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgcGh5bGlua19wY3Nfb3BzIHI4MTY5X3Bjc19vcHMgPSB7CiYjNDM7CS5wY3NfdmFsaWRhdGUgPSBydGw4MTY5X3Bjc192YWxpZGF0ZSwKJiM0MzsJLnBjc19nZXRfc3RhdGUgPSBydGw4MTY5X3Bjc19nZXRfc3RhdGUsCiYjNDM7CS5wY3NfY29uZmlnID0gcnRsODE2OV9wY3NfY29uZmlnLAomIzQzOwkucGNzX2FuX3Jlc3RhcnQgPSBydGw4MTY5X3Bjc19hbl9yZXN0YXJ0LAomIzQzO307CiYjNDM7CiYjNDM7c3RhdGljIGludCBydGxfaW5pdF9waHlsaW5rKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKQomIzQzO3sKJiM0MzsJc3RydWN0IHBoeWxpbmsgKnBsOwomIzQzOwlwaHlfaW50ZXJmYWNlX3QgcGh5X21vZGU7CiYjNDM7CiYjNDM7CXRwLSZndDtwaHlsaW5rX2NvbmZpZy5kZXYgPSAmYW1wO3RwLSZndDtkZXYtJmd0O2RldjsKJiM0MzsJdHAtJmd0O3BoeWxpbmtfY29uZmlnLnR5cGUgPSBQSFlMSU5LX05FVERFVjsKJiM0MzsJdHAtJmd0O3BoeWxpbmtfY29uZmlnLm1hY19tYW5hZ2VkX3BtID0gdHJ1ZTsKJiM0MzsJdHAtJmd0O3BoeWxpbmtfY29uZmlnLmxwaV9jYXBhYmlsaXRpZXMgPSBydGw4MTY5X2dldF9scGlfY2Fwcyh0cCk7CiYjNDM7CXRwLSZndDtwaHlsaW5rX2NvbmZpZy5tYWNfY2FwYWJpbGl0aWVzIHw9IE1BQ19BU1lNX1BBVVNFIHwgTUFDX1NZTV9QQVVTRTsKJiM0MzsKJiM0MzsJc3dpdGNoICh0cC0mZ3Q7c2ZwX21vZGUpIHsKJiM0MzsJY2FzZSBSVExfU0ZQXzgxNjhfQUY6CiYjNDM7CQl0cC0mZ3Q7cGNzLm9wcyA9ICZhbXA7cjgxNjlfcGNzX29wczsKJiM0MzsJCXRwLSZndDtwaHlsaW5rX2NvbmZpZy5kZWZhdWx0X2FuX2luYmFuZCA9IHRydWU7CiYjNDM7CQlwaHlfbW9kZSA9IFBIWV9JTlRFUkZBQ0VfTU9ERV8xMDAwQkFTRVg7CiYjNDM7CQl0cC0mZ3Q7cGh5bGlua19jb25maWcubWFjX2NhcGFiaWxpdGllcyB8PSBNQUNfMTAwMEZEOwomIzQzOwkJYnJlYWs7CiYjNDM7CWNhc2UgUlRMX1NGUF84MTI3X0FURjoKJiM0MzsJCXRwLSZndDtwY3Mub3BzID0gJmFtcDtyODE2OV9wY3Nfb3BzOwomIzQzOwkJcGh5X21vZGUgPSBQSFlfSU5URVJGQUNFX01PREVfMTBHQkFTRVI7CiYjNDM7CQl0cC0mZ3Q7cGh5bGlua19jb25maWcuZGVmYXVsdF9hbl9pbmJhbmQgPSB0cnVlOwomIzQzOwkJdHAtJmd0O3BoeWxpbmtfY29uZmlnLm1hY19jYXBhYmlsaXRpZXMgfD0gTUFDXzEwMDBGRCB8IE1BQ18xMDAwMEZEOwomIzQzOwkJYnJlYWs7CiYjNDM7CWRlZmF1bHQ6CiYjNDM7CQlwaHlfbW9kZSA9IFBIWV9JTlRFUkZBQ0VfTU9ERV9JTlRFUk5BTDsKJiM0MzsJCXRwLSZndDtwaHlsaW5rX2NvbmZpZy5tYWNfY2FwYWJpbGl0aWVzIHw9IE1BQ18xMCB8IE1BQ18xMDA7CiYjNDM7CiYjNDM7CQlpZiAodHAtJmd0O21hY192ZXJzaW9uID09IFJUTF9HSUdBX01BQ19WRVJfODApCiYjNDM7CQkJdHAtJmd0O3BoeWxpbmtfY29uZmlnLm1hY19jYXBhYmlsaXRpZXMgfD0gTUFDXzEwMDBGRCB8IE1BQ18yNTAwRkQgfAomIzQzOwkJCQkJCQkgICAgICAgTUFDXzUwMDBGRCB8IE1BQ18xMDAwMEZEOwomIzQzOwkJZWxzZSBpZiAodHAtJmd0O21hY192ZXJzaW9uID09IFJUTF9HSUdBX01BQ19WRVJfNzApCiYjNDM7CQkJdHAtJmd0O3BoeWxpbmtfY29uZmlnLm1hY19jYXBhYmlsaXRpZXMgfD0gTUFDXzEwMDBGRCB8CiYjNDM7CQkJCQkJCSAgICAgICBNQUNfMjUwMEZEIHwgTUFDXzUwMDBGRDsKJiM0MzsJCWVsc2UgaWYgKHRwLSZndDttYWNfdmVyc2lvbiAmZ3Q7PSBSVExfR0lHQV9NQUNfVkVSXzYxKQomIzQzOwkJCXRwLSZndDtwaHlsaW5rX2NvbmZpZy5tYWNfY2FwYWJpbGl0aWVzIHw9IE1BQ18xMDAwRkQgfCBNQUNfMjUwMEZEOwomIzQzOwkJZWxzZQomIzQzOwkJCWlmICh0cC0mZ3Q7c3VwcG9ydHNfZ21paSkKJiM0MzsJCQkJdHAtJmd0O3BoeWxpbmtfY29uZmlnLm1hY19jYXBhYmlsaXRpZXMgfD0gTUFDXzEwMDBGRDsKJiM0MzsKJiM0MzsJCWlmICh0cC0mZ3Q7bWFjX3ZlcnNpb24gJmx0OyBSVExfR0lHQV9NQUNfVkVSXzYxKQomIzQzOwkJCXBoeV9tb2RlID0gdHAtJmd0O3N1cHBvcnRzX2dtaWkgPyBQSFlfSU5URVJGQUNFX01PREVfR01JSSA6CiYjNDM7CQkJCSAgIFBIWV9JTlRFUkZBQ0VfTU9ERV9NSUk7CiYjNDM7CQllbHNlCiYjNDM7CQkJcGh5X21vZGUgPSBQSFlfSU5URVJGQUNFX01PREVfSU5URVJOQUw7CiYjNDM7CQlicmVhazsKJiM0MzsJfQomIzQzOwomIzQzOwlfX3NldF9iaXQocGh5X21vZGUsIHRwLSZndDtwaHlsaW5rX2NvbmZpZy5zdXBwb3J0ZWRfaW50ZXJmYWNlcyk7CiYjNDM7CWlmICh0cC0mZ3Q7cGh5bGlua19jb25maWcubHBpX2NhcGFiaWxpdGllcykKJiM0MzsJCV9fc2V0X2JpdChwaHlfbW9kZSwgdHAtJmd0O3BoeWxpbmtfY29uZmlnLmxwaV9pbnRlcmZhY2VzKTsKJiM0MzsKJiM0MzsJcGwgPSBwaHlsaW5rX2NyZWF0ZSgmYW1wO3RwLSZndDtwaHlsaW5rX2NvbmZpZywgdHBfdG9fZGV2KHRwKS0mZ3Q7Zndub2RlLAomIzQzOwkJCSAgICBwaHlfbW9kZSwgJmFtcDtydGxfcGh5bGlua19tYWNfb3BzKTsKJiM0MzsJaWYgKElTX0VSUihwbCkpCiYjNDM7CQlyZXR1cm4gUFRSX0VSUihwbCk7CiYjNDM7CiYjNDM7CXRwLSZndDtwaHlsaW5rID0gcGw7CiYjNDM7CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MzsKIHN0YXRpYyBpbnQgcnRsX2luaXRfb25lKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KQogewogCWNvbnN0IHN0cnVjdCBydGxfY2hpcF9pbmZvICpjaGlwOwpAQCAtNTY2Nyw2ICYjNDM7NjAzNSw3IEBAIHN0YXRpYyBpbnQgcnRsX2luaXRfb25lKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KQogCQkJCSAgICAgZXh0X3hpZF9zdHIsIHhpZCk7CiAJdHAtJmd0O21hY192ZXJzaW9uID0gY2hpcC0mZ3Q7bWFjX3ZlcnNpb247CiAJdHAtJmd0O2Z3X25hbWUgPSBjaGlwLSZndDtmd19uYW1lOwomIzQzOwl0cC0mZ3Q7c3BlZWQgPSBTUEVFRF9VTktOT1dOOwogCiAJLyogRGlzYWJsZSBBU1BNIEwxIGFzIHRoYXQgY2F1c2UgcmFuZG9tIGRldmljZSBzdG9wIHdvcmtpbmcKIAkgKiBwcm9ibGVtcyBhcyB3ZWxsIGFzIGZ1bGwgc3lzdGVtIGhhbmdzIGZvciBzb21lIFBDSWUgZGV2aWNlcyB1c2Vycy4KQEAgLTU2NzksMTIgJiM0Mzs2MDQ4LDcgQEAgc3RhdGljIGludCBydGxfaW5pdF9vbmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpCiAJfQogCXRwLSZndDthc3BtX21hbmFnZWFibGUgPSAhcmM7CiAKLQlpZiAocnRsX2lzXzgxMjUodHApKSB7Ci0JCXUxNiBkYXRhID0gcjgxNjhfbWFjX29jcF9yZWFkKHRwLCAweGQwMDYpOwotCi0JCWlmICgoZGF0YSAmYW1wOyAweGZmKSA9PSAweDA3KQotCQkJdHAtJmd0O3NmcF9tb2RlID0gdHJ1ZTsKLQl9CiYjNDM7CXRwLSZndDtzZnBfbW9kZSA9IHJ0bF9nZXRfc2ZwX21vZGUodHApOwogCiAJdHAtJmd0O2Rhc2hfdHlwZSA9IHJ0bF9nZXRfZGFzaF90eXBlKHRwKTsKIAl0cC0mZ3Q7ZGFzaF9lbmFibGVkID0gcnRsX2Rhc2hfaXNfZW5hYmxlZCh0cCk7CkBAIC01Nzg4LDEzICYjNDM7NjE1MiwyMyBAQCBzdGF0aWMgaW50IHJ0bF9pbml0X29uZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudCkKIAogCXBjaV9zZXRfZHJ2ZGF0YShwZGV2LCB0cCk7CiAKLQlyYyA9IHI4MTY5X21kaW9fcmVnaXN0ZXIodHApOwomIzQzOwlyYyA9IHJ0bF9pbml0X3BoeWxpbmsodHApOwogCWlmIChyYykKIAkJcmV0dXJuIHJjOwogCiYjNDM7CWlmICh0cC0mZ3Q7c2ZwX21vZGUgPT0gUlRMX1NGUF9OT05FKSB7CiYjNDM7CQlyYyA9IHI4MTY5X21kaW9fcmVnaXN0ZXIodHApOwomIzQzOwkJaWYgKHJjKSB7CiYjNDM7CQkJcGh5bGlua19kZXN0cm95KHRwLSZndDtwaHlsaW5rKTsKJiM0MzsJCQlyZXR1cm4gcmM7CiYjNDM7CQl9CiYjNDM7CX0KJiM0MzsKIAlyYyA9IHJlZ2lzdGVyX25ldGRldihkZXYpOwotCWlmIChyYykKJiM0MzsJaWYgKHJjKSB7CiYjNDM7CQlwaHlsaW5rX2Rlc3Ryb3kodHAtJmd0O3BoeWxpbmspOwogCQlyZXR1cm4gcmM7CiYjNDM7CX0KIAogCWlmIChJU19FTkFCTEVEKENPTkZJR19SODE2OV9MRURTKSkgewogCQlpZiAocnRsX2lzXzgxMjUodHApKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYyBiL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMKaW5kZXggNTlkZmUzNWFmYTU0ZmMuLmM0NTBlZTMzYjc1Y2MxIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMKQEAgLTE4MjgsNiAmIzQzOzE4MjgsNzIgQEAgaW50IHBoeWxpbmtfc2V0X2ZpeGVkX2xpbmsoc3RydWN0IHBoeWxpbmsgKnBsLAogfQogRVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19zZXRfZml4ZWRfbGluayk7CiAKJiM0MzsvKioKJiM0MzsgKiBwaHlsaW5rX3NldF9tYWNfY2FwYWJpbGl0aWVzKCkgLSBEeW5hbWljYWxseSB1cGRhdGUgTUFDIGNhcGFiaWxpdGllcwomIzQzOyAqIEBwbDogYSBwb2ludGVyIHRvIGEgJmFtcDtzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKCkKJiM0MzsgKiBAbWFjX2NhcGFiaWxpdGllczogdGhlIG5ldyBNQUMgY2FwYWJpbGl0aWVzIG1hc2sKJiM0MzsgKgomIzQzOyAqIFRoaXMgZnVuY3Rpb24gYWxsb3dzIGEgTUFDIGRyaXZlciB0byBkeW5hbWljYWxseSBjaGFuZ2UgaXRzIGNhcGFiaWxpdGllcywKJiM0MzsgKiBzdWNoIGFzIGxvc2luZy9nYWluaW5nIFBhdXNlIGZyYW1lIHN1cHBvcnQgYmFzZWQgb24gTVRVIHNpemUuCiYjNDM7ICogSXQgcmVjYWxjdWxhdGVzIHN1cHBvcnRlZCBsaW5rIG1vZGVzIGFuZCB0cmlnZ2VycyByZW5lZ290aWF0aW9uIGlmIG5lZWRlZC4KJiM0MzsgKi8KJiM0Mzt2b2lkIHBoeWxpbmtfc2V0X21hY19jYXBhYmlsaXRpZXMoc3RydWN0IHBoeWxpbmsgKnBsLCB1bnNpZ25lZCBsb25nIG1hY19jYXBhYmlsaXRpZXMpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgcGh5bGlua19saW5rX3N0YXRlICpjb25maWcgPSAmYW1wO3BsLSZndDtsaW5rX2NvbmZpZzsKJiM0MzsJdW5zaWduZWQgbG9uZyBjYXBzX2FkZGVkLCBjYXBzX3JlbW92ZWQ7CiYjNDM7CiYjNDM7CUFTU0VSVF9SVE5MKCk7CiYjNDM7CiYjNDM7CWNhcHNfYWRkZWQgPSBtYWNfY2FwYWJpbGl0aWVzICZhbXA7IH5wbC0mZ3Q7Y29uZmlnLSZndDttYWNfY2FwYWJpbGl0aWVzOwomIzQzOwljYXBzX3JlbW92ZWQgPSBwbC0mZ3Q7Y29uZmlnLSZndDttYWNfY2FwYWJpbGl0aWVzICZhbXA7IH5tYWNfY2FwYWJpbGl0aWVzOwomIzQzOwomIzQzOwlpZiAoIWNhcHNfYWRkZWQgJmFtcDsmYW1wOyAhY2Fwc19yZW1vdmVkKQomIzQzOwkJcmV0dXJuOwomIzQzOwomIzQzOwltdXRleF9sb2NrKCZhbXA7cGwtJmd0O3N0YXRlX211dGV4KTsKJiM0MzsKJiM0MzsJcGwtJmd0O2NvbmZpZy0mZ3Q7bWFjX2NhcGFiaWxpdGllcyA9IG1hY19jYXBhYmlsaXRpZXM7CiYjNDM7CiYjNDM7CWlmIChjYXBzX3JlbW92ZWQgJmFtcDsgTUFDX1NZTV9QQVVTRSkKJiM0MzsJCWxpbmttb2RlX2NsZWFyX2JpdChFVEhUT09MX0xJTktfTU9ERV9QYXVzZV9CSVQsIHBsLSZndDtzdXBwb3J0ZWQpOwomIzQzOwlpZiAoY2Fwc19yZW1vdmVkICZhbXA7IE1BQ19BU1lNX1BBVVNFKQomIzQzOwkJbGlua21vZGVfY2xlYXJfYml0KEVUSFRPT0xfTElOS19NT0RFX0FzeW1fUGF1c2VfQklULCBwbC0mZ3Q7c3VwcG9ydGVkKTsKJiM0MzsKJiM0MzsJbGlua21vZGVfYW5kKGNvbmZpZy0mZ3Q7YWR2ZXJ0aXNpbmcsIGNvbmZpZy0mZ3Q7YWR2ZXJ0aXNpbmcsIHBsLSZndDtzdXBwb3J0ZWQpOwomIzQzOwomIzQzOwlpZiAoY2Fwc19hZGRlZCAmYW1wOyBNQUNfU1lNX1BBVVNFKSB7CiYjNDM7CQlsaW5rbW9kZV9zZXRfYml0KEVUSFRPT0xfTElOS19NT0RFX1BhdXNlX0JJVCwgcGwtJmd0O3N1cHBvcnRlZCk7CiYjNDM7CQlpZiAocGwtJmd0O3BoeWRldiAmYW1wOyZhbXA7ICFwaHlsaW5rX3Rlc3QocGwtJmd0O3BoeWRldi0mZ3Q7c3VwcG9ydGVkLCBQYXVzZSkpCiYjNDM7CQkJbGlua21vZGVfY2xlYXJfYml0KEVUSFRPT0xfTElOS19NT0RFX1BhdXNlX0JJVCwgcGwtJmd0O3N1cHBvcnRlZCk7CiYjNDM7CX0KJiM0MzsJaWYgKGNhcHNfYWRkZWQgJmFtcDsgTUFDX0FTWU1fUEFVU0UpIHsKJiM0MzsJCWxpbmttb2RlX3NldF9iaXQoRVRIVE9PTF9MSU5LX01PREVfQXN5bV9QYXVzZV9CSVQsIHBsLSZndDtzdXBwb3J0ZWQpOwomIzQzOwkJaWYgKHBsLSZndDtwaHlkZXYgJmFtcDsmYW1wOyAhcGh5bGlua190ZXN0KHBsLSZndDtwaHlkZXYtJmd0O3N1cHBvcnRlZCwgQXN5bV9QYXVzZSkpCiYjNDM7CQkJbGlua21vZGVfY2xlYXJfYml0KEVUSFRPT0xfTElOS19NT0RFX0FzeW1fUGF1c2VfQklULCBwbC0mZ3Q7c3VwcG9ydGVkKTsKJiM0MzsJfQomIzQzOwomIzQzOwlsaW5rbW9kZV9hbmQoY29uZmlnLSZndDthZHZlcnRpc2luZywgY29uZmlnLSZndDthZHZlcnRpc2luZywgcGwtJmd0O3N1cHBvcnRlZCk7CiYjNDM7CiYjNDM7CWlmIChjb25maWctJmd0O3BhdXNlICZhbXA7IE1MT19QQVVTRV9BTikgewomIzQzOwkJaWYgKHBoeWxpbmtfdGVzdChwbC0mZ3Q7c3VwcG9ydGVkLCBQYXVzZSkpCiYjNDM7CQkJbGlua21vZGVfc2V0X2JpdChFVEhUT09MX0xJTktfTU9ERV9QYXVzZV9CSVQsIGNvbmZpZy0mZ3Q7YWR2ZXJ0aXNpbmcpOwomIzQzOwomIzQzOwkJaWYgKHBoeWxpbmtfdGVzdChwbC0mZ3Q7c3VwcG9ydGVkLCBBc3ltX1BhdXNlKSkKJiM0MzsJCQlsaW5rbW9kZV9zZXRfYml0KEVUSFRPT0xfTElOS19NT0RFX0FzeW1fUGF1c2VfQklULCBjb25maWctJmd0O2FkdmVydGlzaW5nKTsKJiM0MzsJfQomIzQzOwomIzQzOwlpZiAoIXBsLSZndDtwaHlkZXYpCiYjNDM7CQlwaHlsaW5rX2NoYW5nZV9pbmJhbmRfYWR2ZXJ0KHBsKTsKJiM0MzsKJiM0MzsJbXV0ZXhfdW5sb2NrKCZhbXA7cGwtJmd0O3N0YXRlX211dGV4KTsKJiM0MzsKJiM0MzsJaWYgKHBsLSZndDtwaHlkZXYpIHsKJiM0MzsJCWxpbmttb2RlX2NvcHkocGwtJmd0O3BoeWRldi0mZ3Q7YWR2ZXJ0aXNpbmcsIGNvbmZpZy0mZ3Q7YWR2ZXJ0aXNpbmcpOwomIzQzOwkJcGh5X3N0YXJ0X2FuZWcocGwtJmd0O3BoeWRldik7CiYjNDM7CX0KJiM0Mzt9CiYjNDM7RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19zZXRfbWFjX2NhcGFiaWxpdGllcyk7CiYjNDM7CiAvKioKICAqIHBoeWxpbmtfY3JlYXRlKCkgLSBjcmVhdGUgYSBwaHlsaW5rIGluc3RhbmNlCiAgKiBAY29uZmlnOiBhIHBvaW50ZXIgdG8gdGhlIHRhcmdldCAmYW1wO3N0cnVjdCBwaHlsaW5rX2NvbmZpZwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMgYi9kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYwppbmRleCBiNjVkMGY1ZmExYTAxNC4uNDcyMWJhMDcxY2JiZTQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jCkBAIC0xNyw3ICYjNDM7MTcsNiBAQAogI2luY2x1ZGUgJmx0O2xpbnV4L2RlbGF5LmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvY2xrLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvc3RyaW5nX2Nob2ljZXMuaCZndDsKLSNpbmNsdWRlICZsdDtuZXQvcGh5L3JlYWx0ZWtfcGh5LmgmZ3Q7CiAKICNpbmNsdWRlICYjMzQ7Li4vcGh5bGliLmgmIzM0OwogI2luY2x1ZGUgJiMzNDtyZWFsdGVrLmgmIzM0OwpAQCAtMjY0Niw0NSAmIzQzOzI2NDUsNiBAQCBzdGF0aWMgaXJxcmV0dXJuX3QgcnRsODIyMWJfaGFuZGxlX2ludGVycnVwdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KQogCXJldHVybiBJUlFfSEFORExFRDsKIH0KIAotc3RhdGljIGludCBydGxnZW5fc2ZwX2dldF9mZWF0dXJlcyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KQotewotCWxpbmttb2RlX3NldF9iaXQoRVRIVE9PTF9MSU5LX01PREVfMTAwMDBiYXNlVF9GdWxsX0JJVCwKLQkJCSBwaHlkZXYtJmd0O3N1cHBvcnRlZCk7Ci0KLQkvKiBzZXQgZGVmYXVsdCBtb2RlICovCi0JcGh5ZGV2LSZndDtzcGVlZCA9IFNQRUVEXzEwMDAwOwotCXBoeWRldi0mZ3Q7ZHVwbGV4ID0gRFVQTEVYX0ZVTEw7Ci0KLQlwaHlkZXYtJmd0O3BvcnQgPSBQT1JUX0ZJQlJFOwotCi0JcmV0dXJuIDA7Ci19Ci0KLXN0YXRpYyBpbnQgcnRsZ2VuX3NmcF9yZWFkX3N0YXR1cyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KQotewotCWludCB2YWwsIGVycjsKLQotCWVyciA9IGdlbnBoeV91cGRhdGVfbGluayhwaHlkZXYpOwotCWlmIChlcnIpCi0JCXJldHVybiBlcnI7Ci0KLQlpZiAoIXBoeWRldi0mZ3Q7bGluaykKLQkJcmV0dXJuIDA7Ci0KLQl2YWwgPSBwaHlfcmVhZChwaHlkZXYsIFJUTF9QSFlTUik7Ci0JaWYgKHZhbCAmbHQ7IDApCi0JCXJldHVybiB2YWw7Ci0KLQlydGxnZW5fZGVjb2RlX3BoeXNyKHBoeWRldiwgdmFsKTsKLQotCXJldHVybiAwOwotfQotCi1zdGF0aWMgaW50IHJ0bGdlbl9zZnBfY29uZmlnX2FuZWcoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldikKLXsKLQlyZXR1cm4gMDsKLX0KLQogc3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIHJlYWx0ZWtfZHJ2c1tdID0gewogCXsKIAkJUEhZX0lEX01BVENIX0VYQUNUKDB4MDAwMDgyMDEpLApAQCAtMjkzNCwyMCAmIzQzOzI4OTQsNiBAQCBzdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgcmVhbHRla19kcnZzW10gPSB7CiAJCS53cml0ZV9wYWdlCT0gcnRsODIxeF93cml0ZV9wYWdlLAogCQkucmVhZF9tbWQJPSBydGw4MjJ4X3JlYWRfbW1kLAogCQkud3JpdGVfbW1kCT0gcnRsODIyeF93cml0ZV9tbWQsCi0JfSwgewotCQlQSFlfSURfTUFUQ0hfRVhBQ1QoUEhZX0lEX1JUTF9EVU1NWV9TRlApLAotCQkubmFtZQkJPSAmIzM0O1JlYWx0ZWsgU0ZQIFBIWSBNb2RlJiMzNDssCi0JCS5mbGFncwkJPSBQSFlfSVNfSU5URVJOQUwsCi0JCS5wcm9iZQkJPSBydGw4MjJ4X3Byb2JlLAotCQkuZ2V0X2ZlYXR1cmVzCT0gcnRsZ2VuX3NmcF9nZXRfZmVhdHVyZXMsCi0JCS5jb25maWdfYW5lZwk9IHJ0bGdlbl9zZnBfY29uZmlnX2FuZWcsCi0JCS5yZWFkX3N0YXR1cwk9IHJ0bGdlbl9zZnBfcmVhZF9zdGF0dXMsCi0JCS5zdXNwZW5kCT0gZ2VucGh5X3N1c3BlbmQsCi0JCS5yZXN1bWUJCT0gcnRsZ2VuX3Jlc3VtZSwKLQkJLnJlYWRfcGFnZQk9IHJ0bDgyMXhfcmVhZF9wYWdlLAotCQkud3JpdGVfcGFnZQk9IHJ0bDgyMXhfd3JpdGVfcGFnZSwKLQkJLnJlYWRfbW1kCT0gcnRsODIyeF9yZWFkX21tZCwKLQkJLndyaXRlX21tZAk9IHJ0bDgyMnhfd3JpdGVfbW1kLAogCX0sIHsKIAkJUEhZX0lEX01BVENIX0VYQUNUKDB4MDAxY2NhZDApLAogCQkubmFtZQkJPSAmIzM0O1JUTDgyMjQgMi41R2JwcyBQSFkmIzM0OywKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvcGh5bGluay5oIGIvaW5jbHVkZS9saW51eC9waHlsaW5rLmgKaW5kZXggMmJjMGRiM2Q1MmFjOGQuLjU2NjQyYWI5NjFhNzUzIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaApAQCAtODQyLDQgJiM0Mzs4NDIsNiBAQCB2b2lkIHBoeWxpbmtfcmVwbGF5X2xpbmtfYmVnaW4oc3RydWN0IHBoeWxpbmsgKnBsKTsKIAogdm9pZCBwaHlsaW5rX3JlcGxheV9saW5rX2VuZChzdHJ1Y3QgcGh5bGluayAqcGwpOwogCiYjNDM7dm9pZCBwaHlsaW5rX3NldF9tYWNfY2FwYWJpbGl0aWVzKHN0cnVjdCBwaHlsaW5rICpwbCwgdW5zaWduZWQgbG9uZyBtYWNfY2FwYWJpbGl0aWVzKTsKJiM0MzsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvcGh5L3JlYWx0ZWtfcGh5LmggYi9pbmNsdWRlL25ldC9waHkvcmVhbHRla19waHkuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDY4M2JjMWIwNjU5Y2QuLjAwMDAwMDAwMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmV0L3BoeS9yZWFsdGVrX3BoeS5oCiYjNDM7JiM0MzsmIzQzOyAvZGV2L251bGwKQEAgLTEsNyAmIzQzOzAsMCBAQAotLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgKi8KLSNpZm5kZWYgX1JFQUxURUtfUEhZX0gKLSNkZWZpbmUgX1JFQUxURUtfUEhZX0gKLQotI2RlZmluZQlQSFlfSURfUlRMX0RVTU1ZX1NGUAkweDAwMWNjYmZmCi0KLSNlbmRpZiAvKiBfUkVBTFRFS19QSFlfSCAqLwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAxNjozNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDQ1OAoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDM2OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFJlYWNoYWJpbGl0eSBvZiBhIE5ldHdvcmsgRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoLiBJdCYjMzk7cyBhIHByZXR0eSBzdWJzdGFudGlhbCBjaGFuZ2UsIHJld3JpdGluZyBob3cgdGhlIFJlYWx0ZWsgcjgxNjkgZHJpdmVyIGludGVyYWN0cyB3aXRoIHRoZSBwaHlsaW5rIGZyYW1ld29yay4gU3BlY2lmaWNhbGx5LCBpdCYjMzk7cyBzd2l0Y2hpbmcgZnJvbSBkaXJlY3RseSB1c2luZyBgcGh5bGliYCB0byBgcGh5bGlua2AsIGFuZCB0aGVyZSYjMzk7cyBhIG5ldyBmdW5jdGlvbiBhZGRlZCB0byBgcGh5bGluay5jYCBjYWxsZWQgYHBoeWxpbmtfc2V0X21hY19jYXBhYmlsaXRpZXNgLiBUaGlzIGlzIGEgc2lnbmlmaWNhbnQgZnVuY3Rpb25hbCBzaGlmdCB3aXRoaW4gYSBjb3JlIG5ldHdvcmsgZHJpdmVyIGFuZCBpdHMgYXNzb2NpYXRlZCBmcmFtZXdvcmsuIE15IGltbWVkaWF0ZSBjb25jZXJuLCBhcyBhbHdheXMsIGlzIGhvdyBJIGNhbiB0ZXN0IHRoaXMgZWZmZWN0aXZlbHksIGVzcGVjaWFsbHkgaW4gYSBjb250cm9sbGVkIGVudmlyb25tZW50LgoKVGhlIHI4MTY5IGRyaXZlciB0YXJnZXRzIFJlYWx0ZWsgUENJIEV4cHJlc3MgR2lnYWJpdCBFdGhlcm5ldCBjb250cm9sbGVycy4gTXkgdGhvdWdodCBpcyBjYW4gSSB1c2UgYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBmb3IgdGhpcy4gQ2FuIEkgdXNlIFFFTVU/IEkga25vdyBRRU1VICpkb2VzKiBzdXBwb3J0IHRoZSBvbGRlciBgcnRsODEzOWAgMTAvMTAwIEV0aGVybmV0IGFkYXB0ZXIsIGJ1dCBub3QgdGhlIHI4MTY5IG91dCBvZiB0aGUgYm94LiBTbywgdGhlIHF1ZXN0aW9uIGlzIGhvdyBjYW4gSSB0ZXN0IHRoaXMgaW4gYSB2aXJ0dWFsIGVudmlyb25tZW50PyBJdCYjMzk7cyBhIFBDSSBkZXZpY2UsIHNvIFFFTVUgd291bGQgaGF2ZSB0byBlbXVsYXRlIHRoZSByODE2OSBoYXJkd2FyZS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGRvbiYjMzk7dCBjb25mdXNlIHJ0bDgxMzkgd2l0aCB0aGUgdGFyZ2V0LiBJZiB0aGUgZHJpdmVyIHJlbGllcyBvbiBhIFBDSSBidXMsIHRoZW4gdGhlIGRyaXZlciYjMzk7cyBgcHJvYmVgIGZ1bmN0aW9uIHdvbiYjMzk7dCBldmVuIGJlIGNhbGxlZCB1bmxlc3MgUUVNVSBwcm9wZXJseSBlbXVsYXRlcyB0aGUgZGV2aWNlLiBMZXQgbWUgZG91YmxlIGNoZWNrIGlmIFFFTVUgcHJvdmlkZXMgdGhhdCBlbXVsYXRpb24gc3BlY2lmaWNhbGx5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDE2OjM0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3I4MTY5JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZz04ND1jb25maWcgUjgxNjlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWctMTAwLVx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWc6MTAxOlx0ICB3aWxsIGJlIGNhbGxlZCByODE2OS4gIFRoaXMgaXMgcmVjb21tZW5kZWQuXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWctMTAyLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDE2OjM0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxMjk5CgkJCQkJCQlvdXRwdXQ6IDI1CgkJCQkJCQl0aG91Z2h0czogMjU4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IFN5emthbGxlciBQQ0kgRnV6emluZyBBc3Nlc3NtZW50KioKCk9rYXksIHNvIHRoZSBmaXJzdCB0aGluZyBJJiMzOTttIHRoaW5raW5nIGlzLCBjYW4gU3l6a2FsbGVyIGhpdCB0aGlzPyBNeSBpbW1lZGlhdGUgcmVmbGV4IGlzIHRvIGNoZWNrIGZvciBgc3l6X3BjaV9kZXZpY2VfYWRkYCBvciBzaW1pbGFyIGlmIGl0JiMzOTtzIGEgUENJIGRyaXZlciwgd2hpY2ggdXN1YWxseSBtZWFucyBpdCBuZWVkcyBhbiBlbXVsYXRlZCBQQ0kgZGV2aWNlIG9yIGB2aGNpYCBvciBgcGNpYCBmdXp6aW5nIHN1cHBvcnQuIEJ1dCB3YWl0LCBJIHJlbWVtYmVyIFN5emthbGxlciAqZG9lcyogaGF2ZSBhIGRlZGljYXRlZCBQQ0kgZnV6emVyIHRoYXQgY2FuIGluamVjdCBQQ0kgZGV2aWNlcywgd2hpY2ggaXMgZ3JlYXQuCgpSaWdodCwgYHI4MTY5YCBpcyBpbmRlZWQgYSBQQ0kgZHJpdmVyLiBUaGF0IG1lYW5zIFN5emthbGxlciAqc2hvdWxkKiBiZSBhYmxlIHRvIHRhY2tsZSB0aGlzIHVzaW5nIHRoZSBgc3l6X3BjaWAgcHNldWRvLWRldmljZSBvciBieSBpbmplY3RpbmcgUENJIGNvbmZpZyBzcGFjZSDigJMgY2xhc3NpYyBQQ0kgZnV6emluZyBhcHByb2FjaGVzLgoKQWN0dWFsbHksIGl0IGhpdHMgbWUgdGhhdCBTeXprYWxsZXImIzM5O3MgUENJIGZ1enplciBpcyBkZXNpZ25lZCB0byBmdXp6ICphbnkqIFBDSSBkcml2ZXIgYnkgZWZmZWN0aXZlbHkgc2ltdWxhdGluZyB0aGUgUENJIGRldmljZSBpdHNlbGYuIFRoaXMgaXMgcmVhbGx5IHByb21pc2luZy4KCk5vdywgSSYjMzk7bSBicm91Z2h0IHVwIHNob3J0IGJ5IHRoZSBwcm9tcHQgbWVudGlvbmluZyBjb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIGV2ZW4gd2l0aCBlbXVsYXRlZCBoYXJkd2FyZSBsaWtlIFVTQiBvciBNQUM4MDIxMS4gT2theSwgZG9lcyBTeXprYWxsZXImIzM5O3MgZW11bGF0aW9uIGFjdHVhbGx5IGNvdmVyIHRoYXQgYXNwZWN0PwoKWWVzLCB3YWl0LCBpdCBjbGlja3MuIFN5emthbGxlciYjMzk7cyBnb3QgYHN5el9wY2lgLCB3aGljaCAqYWJzb2x1dGVseSogY2FuIGVtdWxhdGUgUENJIGRldmljZXMuIFRoYXQmIzM5O3MgcHJlY2lzZWx5IHdoYXQgSSBuZWVkLgoKQWxyaWdodCwgZmluYWwgc3RlcDogbGV0JiMzOTtzIHZlcmlmeSBpZiBgcjgxNjlgIGlzICpjdXJyZW50bHkqIGJlaW5nIGZ1enplZCBieSBTeXprYWxsZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMTY6MzQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cjgxNjkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDUzNiBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuRG9jdW1lbnRhdGlvbi9jb3JlLWFwaS9kbWEtYXBpLnJzdD03NDE9ZXhhbXBsZSB3YXJuaW5nIG1lc3NhZ2UgbWF5IGxvb2sgbGlrZSB0aGlzOjpcbi0tXG5Eb2N1bWVudGF0aW9uL2NvcmUtYXBpL2RtYS1hcGkucnN0LTc0OC1cdHNpbmdsZV0gW3VubWFwcGVkIGFzIHBhZ2VdXG5Eb2N1bWVudGF0aW9uL2NvcmUtYXBpL2RtYS1hcGkucnN0Ojc0OTpcdE1vZHVsZXMgbGlua2VkIGluOiBuZnNkIGV4cG9ydGZzIGJyaWRnZSBzdHAgbGxjIHI4MTY5XG5Eb2N1bWVudGF0aW9uL2NvcmUtYXBpL2RtYS1hcGkucnN0LTc1MC1cdFBpZDogMCwgY29tbTogc3dhcHBlciBUYWludGVkOiBHICAgICAgICBXICAyLjYuMjgtZG1hdGVzdC0wOTI4OS1nOGJiOTljMCAjMVxuLS1cbkRvY3VtZW50YXRpb24vbGVkcy93ZWxsLWtub3duLWxlZHMudHh0PTEwNz1Hb29kOiAhbWRpby1tdXghbWRpb0AyIXN3aXRjaEAwIW1kaW86MDE6Z3JlZW46cmlnaHRcbkRvY3VtZW50YXRpb24vbGVkcy93ZWxsLWtub3duLWxlZHMudHh0OjEwODpHb29kOiByODE2OS0wLTIwMDowMDp5ZWxsb3c6Ym90dG9tXG5Eb2N1bWVudGF0aW9uL2xlZHMvd2VsbC1rbm93bi1sZWRzLnR4dC0xMDktXG4tLVxuTUFJTlRBSU5FUlM9MTM2PVM6XHRNYWludGFpbmVkXG5NQUlOVEFJTkVSUzoxMzc6RjpcdGRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjkqXG5NQUlOVEFJTkVSUy0xMzgtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9LY29uZmlnPTg0PWNvbmZpZyBSODE2OVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZy0xMDAtXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZzoxMDE6XHQgIHdpbGwgYmUgY2FsbGVkIHI4MTY5LiAgVGhpcyBpcyByZWNvbW1lbmRlZC5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZy0xMDItXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9NYWtlZmlsZT03PW9iai0kKENPTkZJR184MTM5VE9PKSAmIzQzOz0gODEzOXRvby5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL01ha2VmaWxlOjg6cjgxNjkteSAmIzQzOz0gcjgxNjlfbWFpbi5vIHI4MTY5X2Zpcm13YXJlLm8gcjgxNjlfcGh5X2NvbmZpZy5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL01ha2VmaWxlOjk6cjgxNjktJChDT05GSUdfUjgxNjlfTEVEUykgJiM0Mzs9IHI4MTY5X2xlZHMub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9NYWtlZmlsZToxMDpvYmotJChDT05GSUdfUjgxNjkpICYjNDM7PSByODE2OS5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL01ha2VmaWxlLTExLW9iai0kKENPTkZJR19SVEFTRSkgJiM0Mzs9IHJ0YXNlL1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjkuaC0xLS8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjkuaDoyOi8qIHI4MTY5Lmg6IFJlYWxUZWsgODE2OS84MTY4LzgxMDEgZXRoZXJuZXQgZHJpdmVyLlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OS5oLTMtICpcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5Lmg9ODA9c3RydWN0IHJ0bDgxNjlfcHJpdmF0ZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjkuaDo4MTpzdHJ1Y3QgcjgxNjlfbGVkX2NsYXNzZGV2O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OS5oLTgyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OS5oOjgzOnZvaWQgcjgxNjlfYXBwbHlfZmlybXdhcmUoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OS5oLTg0LXUxNiBydGw4MTY4aF8yX2dldF9hZGNfYmlhc19pb2Zmc2V0KHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjkuaD04NT11OCBydGw4MTY4ZF9lZnVzZV9yZWFkKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCBpbnQgcmVnX2FkZHIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OS5oOjg2OnZvaWQgcjgxNjlfaHdfcGh5X2NvbmZpZyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjkuaC04Ny1cdFx0XHQgZW51bSBtYWNfdmVyc2lvbiB2ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OS5oLTg4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OS5oOjg5OnZvaWQgcjgxNjlfZ2V0X2xlZF9uYW1lKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCBpbnQgaWR4LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OS5oLTkwLVx0XHRcdGNoYXIgKmJ1ZiwgaW50IGJ1Zl9sZW4pO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjkuaD05Mj1pbnQgcnRsODE2OF9sZWRfbW9kX2N0cmwoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIHUxNiBtYXNrLCB1MTYgdmFsKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjkuaDo5MzpzdHJ1Y3QgcjgxNjlfbGVkX2NsYXNzZGV2ICpydGw4MTY4X2luaXRfbGVkcyhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5LmgtOTQtaW50IHJ0bDgxMjVfZ2V0X2xlZF9tb2RlKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCBpbnQgaW5kZXgpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OS5oPTk1PWludCBydGw4MTI1X3NldF9sZWRfbW9kZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgaW50IGluZGV4LCB1MTYgbW9kZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5Lmg6OTY6c3RydWN0IHI4MTY5X2xlZF9jbGFzc2RldiAqcnRsODEyNV9pbml0X2xlZHMoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OS5oOjk3OnZvaWQgcjgxNjlfcmVtb3ZlX2xlZHMoc3RydWN0IHI4MTY5X2xlZF9jbGFzc2RldiAqbGVkcyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9maXJtd2FyZS5jLTEtLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9maXJtd2FyZS5jOjI6LyogcjgxNjlfZmlybXdhcmUuYzogUmVhbFRlayA4MTY5LzgxNjgvODEwMSBldGhlcm5ldCBkcml2ZXIuXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2Zpcm13YXJlLmMtMy0gKlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfZmlybXdhcmUuYy0xMy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfZmlybXdhcmUuYzoxNDojaW5jbHVkZSBcJiMzNDtyODE2OV9maXJtd2FyZS5oXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2Zpcm13YXJlLmMtMTUtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9maXJtd2FyZS5oLTEtLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9maXJtd2FyZS5oOjI6LyogcjgxNjlfZmlybXdhcmUuaDogUmVhbFRlayA4MTY5LzgxNjgvODEwMSBldGhlcm5ldCBkcml2ZXIuXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2Zpcm13YXJlLmgtMy0gKlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jLTEtLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmM6MjovKiByODE2OV9sZWRzLmM6IFJlYWx0ZWsgODE2OS84MTY4LzgxMDEvODEyNSBldGhlcm5ldCBkcml2ZXIuXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYy0zLSAqXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmMtMTItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYzoxMzojaW5jbHVkZSBcJiMzNDtyODE2OS5oXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYy0xNC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYy0yOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jOjMwOnN0cnVjdCByODE2OV9sZWRfY2xhc3NkZXYge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmMtMzEtXHRzdHJ1Y3QgbGVkX2NsYXNzZGV2IGxlZDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYy0zNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jOjM2OiNkZWZpbmUgbGNkZXZfdG9fcjgxNjlfbGRldihsY2RldikgY29udGFpbmVyX29mKGxjZGV2LCBzdHJ1Y3QgcjgxNjlfbGVkX2NsYXNzZGV2LCBsZWQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYy0zNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jOjM4OnN0YXRpYyBib29sIHI4MTY5X3RyaWdnZXJfbW9kZV9pc192YWxpZCh1bnNpZ25lZCBsb25nIGZsYWdzKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmMtMzkte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jPTUzPXN0YXRpYyBpbnQgcnRsODE2OF9sZWRfaHdfY29udHJvbF9pc19zdXBwb3J0ZWQoc3RydWN0IGxlZF9jbGFzc2RldiAqbGVkX2NkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmMtNTUte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmM6NTY6XHRzdHJ1Y3QgcjgxNjlfbGVkX2NsYXNzZGV2ICpsZGV2ID0gbGNkZXZfdG9fcjgxNjlfbGRldihsZWRfY2Rldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYy01Ny1cdHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwID0gbmV0ZGV2X3ByaXYobGRldi1cdTAwM2VuZGV2KTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYy01OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jOjYwOlx0aWYgKCFyODE2OV90cmlnZ2VyX21vZGVfaXNfdmFsaWQoZmxhZ3MpKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYy02MS1cdFx0LyogU3dpdGNoIExFRCBvZmYgdG8gaW5kaWNhdGUgdGhhdCBtb2RlIGlzbiYjMzk7dCBzdXBwb3J0ZWQgKi9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYz02OT1zdGF0aWMgaW50IHJ0bDgxNjhfbGVkX2h3X2NvbnRyb2xfc2V0KHN0cnVjdCBsZWRfY2xhc3NkZXYgKmxlZF9jZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jLTcxLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jOjcyOlx0c3RydWN0IHI4MTY5X2xlZF9jbGFzc2RldiAqbGRldiA9IGxjZGV2X3RvX3I4MTY5X2xkZXYobGVkX2NkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmMtNzMtXHRzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCA9IG5ldGRldl9wcml2KGxkZXYtXHUwMDNlbmRldik7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmM9ODk9c3RhdGljIGludCBydGw4MTY4X2xlZF9od19jb250cm9sX2dldChzdHJ1Y3QgbGVkX2NsYXNzZGV2ICpsZWRfY2Rldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYy05MS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYzo5MjpcdHN0cnVjdCByODE2OV9sZWRfY2xhc3NkZXYgKmxkZXYgPSBsY2Rldl90b19yODE2OV9sZGV2KGxlZF9jZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jLTkzLVx0c3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAgPSBuZXRkZXZfcHJpdihsZGV2LVx1MDAzZW5kZXYpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jPTEyMT1zdGF0aWMgc3RydWN0IGRldmljZSAqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYzoxMjI6XHRyODE2OV9sZWRfaHdfY29udHJvbF9nZXRfZGV2aWNlKHN0cnVjdCBsZWRfY2xhc3NkZXYgKmxlZF9jZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmMtMTIzLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jOjEyNDpcdHN0cnVjdCByODE2OV9sZWRfY2xhc3NkZXYgKmxkZXYgPSBsY2Rldl90b19yODE2OV9sZGV2KGxlZF9jZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jLTEyNS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYy0xMjgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYzoxMjk6c3RhdGljIHZvaWQgcnRsODE2OF9zZXR1cF9sZGV2KHN0cnVjdCByODE2OV9sZWRfY2xhc3NkZXYgKmxkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYy0xMzAtXHRcdFx0ICAgICAgIHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCBpbnQgaW5kZXgpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmMtMTM4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmM6MTM5Olx0cjgxNjlfZ2V0X2xlZF9uYW1lKHRwLCBpbmRleCwgbGVkX25hbWUsIExFRF9NQVhfTkFNRV9TSVpFKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jLTE0MC1cdGxlZF9jZGV2LVx1MDAzZW5hbWUgPSBsZWRfbmFtZTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYy0xNDUtXHRsZWRfY2Rldi1cdTAwM2Vod19jb250cm9sX2dldCA9IHJ0bDgxNjhfbGVkX2h3X2NvbnRyb2xfZ2V0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmM6MTQ2Olx0bGVkX2NkZXYtXHUwMDNlaHdfY29udHJvbF9nZXRfZGV2aWNlID0gcjgxNjlfbGVkX2h3X2NvbnRyb2xfZ2V0X2RldmljZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jLTE0Ny1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYy0xNTEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYzoxNTI6c3RydWN0IHI4MTY5X2xlZF9jbGFzc2RldiAqcnRsODE2OF9pbml0X2xlZHMoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYy0xNTMte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmM6MTU0Olx0c3RydWN0IHI4MTY5X2xlZF9jbGFzc2RldiAqbGVkcztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jLTE1NS1cdGludCBpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jPTE2Nz1zdGF0aWMgaW50IHJ0bDgxMjVfbGVkX2h3X2NvbnRyb2xfaXNfc3VwcG9ydGVkKHN0cnVjdCBsZWRfY2xhc3NkZXYgKmxlZF9jZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jLTE2OS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYzoxNzA6XHRzdHJ1Y3QgcjgxNjlfbGVkX2NsYXNzZGV2ICpsZGV2ID0gbGNkZXZfdG9fcjgxNjlfbGRldihsZWRfY2Rldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYy0xNzEtXHRzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCA9IG5ldGRldl9wcml2KGxkZXYtXHUwMDNlbmRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYy0xNzItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYzoxNzM6XHRpZiAoIXI4MTY5X3RyaWdnZXJfbW9kZV9pc192YWxpZChmbGFncykpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jLTE3NC1cdFx0LyogU3dpdGNoIExFRCBvZmYgdG8gaW5kaWNhdGUgdGhhdCBtb2RlIGlzbiYjMzk7dCBzdXBwb3J0ZWQgKi9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYz0xODI9c3RhdGljIGludCBydGw4MTI1X2xlZF9od19jb250cm9sX3NldChzdHJ1Y3QgbGVkX2NsYXNzZGV2ICpsZWRfY2Rldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYy0xODQte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmM6MTg1Olx0c3RydWN0IHI4MTY5X2xlZF9jbGFzc2RldiAqbGRldiA9IGxjZGV2X3RvX3I4MTY5X2xkZXYobGVkX2NkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmMtMTg2LVx0c3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAgPSBuZXRkZXZfcHJpdihsZGV2LVx1MDAzZW5kZXYpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jPTIwMz1zdGF0aWMgaW50IHJ0bDgxMjVfbGVkX2h3X2NvbnRyb2xfZ2V0KHN0cnVjdCBsZWRfY2xhc3NkZXYgKmxlZF9jZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jLTIwNS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYzoyMDY6XHRzdHJ1Y3QgcjgxNjlfbGVkX2NsYXNzZGV2ICpsZGV2ID0gbGNkZXZfdG9fcjgxNjlfbGRldihsZWRfY2Rldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYy0yMDctXHRzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCA9IG5ldGRldl9wcml2KGxkZXYtXHUwMDNlbmRldik7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmMtMjI3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmM6MjI4OnN0YXRpYyB2b2lkIHJ0bDgxMjVfc2V0dXBfbGVkX2xkZXYoc3RydWN0IHI4MTY5X2xlZF9jbGFzc2RldiAqbGRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jLTIyOS1cdFx0XHRcdCAgIHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCBpbnQgaW5kZXgpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmMtMjM3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmM6MjM4Olx0cjgxNjlfZ2V0X2xlZF9uYW1lKHRwLCBpbmRleCwgbGVkX25hbWUsIExFRF9NQVhfTkFNRV9TSVpFKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jLTIzOS1cdGxlZF9jZGV2LVx1MDAzZW5hbWUgPSBsZWRfbmFtZTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYy0yNDQtXHRsZWRfY2Rldi1cdTAwM2Vod19jb250cm9sX2dldCA9IHJ0bDgxMjVfbGVkX2h3X2NvbnRyb2xfZ2V0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmM6MjQ1Olx0bGVkX2NkZXYtXHUwMDNlaHdfY29udHJvbF9nZXRfZGV2aWNlID0gcjgxNjlfbGVkX2h3X2NvbnRyb2xfZ2V0X2RldmljZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jLTI0Ni1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYy0yNTAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYzoyNTE6c3RydWN0IHI4MTY5X2xlZF9jbGFzc2RldiAqcnRsODEyNV9pbml0X2xlZHMoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYy0yNTIte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmM6MjUzOlx0c3RydWN0IHI4MTY5X2xlZF9jbGFzc2RldiAqbGVkcztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jLTI1NC1cdGludCBpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jLTI2NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jOjI2Njp2b2lkIHI4MTY5X3JlbW92ZV9sZWRzKHN0cnVjdCByODE2OV9sZWRfY2xhc3NkZXYgKmxlZHMpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYy0yNjcte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jLTI3MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jOjI3MTpcdGZvciAoc3RydWN0IHI4MTY5X2xlZF9jbGFzc2RldiAqbCA9IGxlZHM7IGwtXHUwMDNlbmRldjsgbCYjNDM7JiM0MzspXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYy0yNzItXHRcdGxlZF9jbGFzc2Rldl91bnJlZ2lzdGVyKFx1MDAyNmwtXHUwMDNlbGVkKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0yLS8qXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzozOiAqIHI4MTY5LmM6IFJlYWxUZWsgODE2OS84MTY4LzgxMDEgZXRoZXJuZXQgZHJpdmVyLlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNC0gKlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTM1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MzY6I2luY2x1ZGUgXCYjMzQ7cjgxNjkuaFwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6Mzc6I2luY2x1ZGUgXCYjMzQ7cjgxNjlfZmlybXdhcmUuaFwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMzgtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM9NzYxPXN0cnVjdCBydGw4MTY5X3ByaXZhdGUge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTgwNC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjgwNTpcdHN0cnVjdCByODE2OV9sZWRfY2xhc3NkZXYgKmxlZHM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy04MDYtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM9ODE1PXR5cGVkZWYgdm9pZCAoKnJ0bF9nZW5lcmljX2ZjdCkoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtODE2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6ODE3Ok1PRFVMRV9BVVRIT1IoXCYjMzQ7UmVhbHRlayBhbmQgdGhlIExpbnV4IHI4MTY5IGNyZXcgXHUwMDNjbmV0ZGV2QHZnZXIua2VybmVsLm9yZ1x1MDAzZVwmIzM0Oyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy04MTgtTU9EVUxFX0RFU0NSSVBUSU9OKFwmIzM0O1JlYWxUZWsgUlRMLTgxNjkgR2lnYWJpdCBFdGhlcm5ldCBkcml2ZXJcJiMzNDspO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jPTg4MD1zdGF0aWMgdm9pZCBydGxfbW9kX2NvbmZpZzUoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIHU4IGNsZWFyLCB1OCBzZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtODg3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6ODg4OnN0YXRpYyB2b2lkIHI4MTY5X21vZF9yZWc4X2NvbmQoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIGludCByZWcsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy04ODktXHRcdFx0XHR1OCBiaXRzLCBib29sIGNvbmQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM9MTAzNz1pbnQgcnRsODEyNV9nZXRfbGVkX21vZGUoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIGludCBpbmRleClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xMDUzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MTA1NDp2b2lkIHI4MTY5X2dldF9sZWRfbmFtZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgaW50IGlkeCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTEwNTUtXHRcdFx0Y2hhciAqYnVmLCBpbnQgYnVmX2xlbilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYz0xMzg3PURFQ0xBUkVfUlRMX0NPTkQocnRsX3BoeWFyX2NvbmQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTM5MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjEzOTI6c3RhdGljIHZvaWQgcjgxNjlfbWRpb193cml0ZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgaW50IHJlZywgaW50IHZhbHVlKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTM5My17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTQwMy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjE0MDQ6c3RhdGljIGludCByODE2OV9tZGlvX3JlYWQoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIGludCByZWcpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xNDA1LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYz0xNDM5PXN0YXRpYyB2b2lkIHI4MTY4ZHBfMl9tZGlvX3dyaXRlKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCBpbnQgcmVnLCBpbnQgdmFsdWUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTQ0Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjE0NDM6XHRyODE2OV9tZGlvX3dyaXRlKHRwLCByZWcsIHZhbHVlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTE0NDQtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM9MTQ0OD1zdGF0aWMgaW50IHI4MTY4ZHBfMl9tZGlvX3JlYWQoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIGludCByZWcpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTQ1Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjE0NTg6XHR2YWx1ZSA9IHI4MTY5X21kaW9fcmVhZCh0cCwgcmVnKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTE0NTktXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM9MTQ2NT1zdGF0aWMgdm9pZCBydGxfd3JpdGVwaHkoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIGludCBsb2NhdGlvbiwgaW50IHZhbClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xNDc1LVx0ZGVmYXVsdDpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjE0NzY6XHRcdHI4MTY5X21kaW9fd3JpdGUodHAsIGxvY2F0aW9uLCB2YWwpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTQ3Ny1cdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM9MTQ4MT1zdGF0aWMgaW50IHJ0bF9yZWFkcGh5KHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCBpbnQgbG9jYXRpb24pXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTQ4OS1cdGRlZmF1bHQ6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoxNDkwOlx0XHRyZXR1cm4gcjgxNjlfbWRpb19yZWFkKHRwLCBsb2NhdGlvbik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xNDkxLVx0fVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jPTE3MTA9c3RhdGljIHZvaWQgcnRsX3NldF9kM19wbGxfZG93bihzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgYm9vbCBlbmFibGUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTcxOC1cdGNhc2UgUlRMX0dJR0FfTUFDX1ZFUl84MDpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjE3MTk6XHRcdHI4MTY5X21vZF9yZWc4X2NvbmQodHAsIFBNQ0gsIEQzX05PX1BMTF9ET1dOLCB0cnVlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTE3MjAtXHRcdGJyZWFrO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTcyMS1cdGRlZmF1bHQ6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoxNzIyOlx0XHRyODE2OV9tb2RfcmVnOF9jb25kKHRwLCBQTUNILCBEM0hPVF9OT19QTExfRE9XTiwgdHJ1ZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoxNzIzOlx0XHRyODE2OV9tb2RfcmVnOF9jb25kKHRwLCBQTUNILCBEM0NPTERfTk9fUExMX0RPV04sICFlbmFibGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTcyNC1cdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM9MTgzMD1zdGF0aWMgdm9pZCBfX3J0bDgxNjlfc2V0X3dvbChzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgdTMyIHdvbG9wdHMpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTg0NC1cdH0gZWxzZSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoxODQ1Olx0XHRyODE2OV9tb2RfcmVnOF9jb25kKHRwLCBDb25maWczLCBNYWdpY1BhY2tldCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTE4NDYtXHRcdFx0XHQgICAgd29sb3B0cyBcdTAwMjYgV0FLRV9NQUdJQyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTg0OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjE4NDk6XHRyODE2OV9tb2RfcmVnOF9jb25kKHRwLCBDb25maWczLCBMaW5rVXAsIHdvbG9wdHMgXHUwMDI2IFdBS0VfUEhZKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTE4NTAtXHRpZiAocnRsX2lzXzgxMjUodHApKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTE4NTItXHRcdFx0XHQgICAgIHdvbG9wdHMgXHUwMDI2IFdBS0VfUEhZID8gMHgxMyA6IDApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MTg1MzpcdHI4MTY5X21vZF9yZWc4X2NvbmQodHAsIENvbmZpZzUsIFVXRiwgd29sb3B0cyBcdTAwMjYgV0FLRV9VQ0FTVCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoxODU0Olx0cjgxNjlfbW9kX3JlZzhfY29uZCh0cCwgQ29uZmlnNSwgQldGLCB3b2xvcHRzIFx1MDAyNiBXQUtFX0JDQVNUKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjE4NTU6XHRyODE2OV9tb2RfcmVnOF9jb25kKHRwLCBDb25maWc1LCBNV0YsIHdvbG9wdHMgXHUwMDI2IFdBS0VfTUNBU1QpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MTg1NjpcdHI4MTY5X21vZF9yZWc4X2NvbmQodHAsIENvbmZpZzUsIExhbldha2UsIHdvbG9wdHMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTg1Ny1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xODU5LVx0Y2FzZSBSVExfR0lHQV9NQUNfVkVSXzAyIC4uLiBSVExfR0lHQV9NQUNfVkVSXzA2OlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MTg2MDpcdFx0cjgxNjlfbW9kX3JlZzhfY29uZCh0cCwgQ29uZmlnMSwgUE1FbmFibGUsIHdvbG9wdHMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTg2MS1cdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTg2NC1cdGNhc2UgUlRMX0dJR0FfTUFDX1ZFUl8zOSAuLi4gUlRMX0dJR0FfTUFDX1ZFUl9MQVNUOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MTg2NTpcdFx0cjgxNjlfbW9kX3JlZzhfY29uZCh0cCwgQ29uZmlnMiwgUE1FX1NJR05BTCwgd29sb3B0cyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xODY2LVx0XHRicmVhaztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYz0yMzI2PXN0YXRpYyB2b2lkIHJ0bF9zZXRfZWVlX3R4aWRsZV90aW1lcihzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0yMzQ0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MjM0NTpzdGF0aWMgdW5zaWduZWQgaW50IHI4MTY5X2dldF90eF9scGlfdGltZXJfdXMoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0yMzQ2LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYz0yMzU3PXN0YXRpYyBpbnQgcnRsODE2OV9nZXRfZWVlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBldGh0b29sX2tlZWUgKmRhdGEpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMjM2OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjIzNjk6XHRkYXRhLVx1MDAzZXR4X2xwaV90aW1lciA9IHI4MTY5X2dldF90eF9scGlfdGltZXJfdXModHApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMjM3MC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYz0yNTc2PXN0YXRpYyB2b2lkIHJ0bF9yZWxlYXNlX2Zpcm13YXJlKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTI1ODQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoyNTg1OnZvaWQgcjgxNjlfYXBwbHlfZmlybXdhcmUoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0yNTg2LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYz0yNjM0PXN0YXRpYyB2b2lkIHJ0bDgxNjlfaW5pdF9waHkoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMjYzNy1cdHBoeV9yZXN1bWUodHAtXHUwMDNlcGh5ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjI2Mzg6XHRyODE2OV9od19waHlfY29uZmlnKHRwLCB0cC1cdTAwM2VwaHlkZXYsIHRwLVx1MDAzZW1hY192ZXJzaW9uKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTI2MzktXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM9MjcyMT1zdGF0aWMgdm9pZCBydGxfanVtYm9fY29uZmlnKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTI3MzItXHRjYXNlIFJUTF9HSUdBX01BQ19WRVJfMTc6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoyNzMzOlx0XHRyODE2OV9tb2RfcmVnOF9jb25kKHRwLCBDb25maWc0LCBCSVQoMCksIGp1bWJvKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTI3MzQtXHRcdGJyZWFrO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMjczNS1cdGNhc2UgUlRMX0dJR0FfTUFDX1ZFUl8xOCAuLi4gUlRMX0dJR0FfTUFDX1ZFUl8yNjpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjI3MzY6XHRcdHI4MTY5X21vZF9yZWc4X2NvbmQodHAsIENvbmZpZzMsIEp1bWJvX0VuMCwganVtYm8pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MjczNzpcdFx0cjgxNjlfbW9kX3JlZzhfY29uZCh0cCwgQ29uZmlnNCwgSnVtYm9fRW4xLCBqdW1ibyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0yNzM4LVx0XHRicmVhaztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTI3MzktXHRjYXNlIFJUTF9HSUdBX01BQ19WRVJfMjg6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoyNzQwOlx0XHRyODE2OV9tb2RfcmVnOF9jb25kKHRwLCBDb25maWczLCBKdW1ib19FbjAsIGp1bWJvKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTI3NDEtXHRcdGJyZWFrO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTI3NDMtXHRcdFJUTF9XOCh0cCwgTWF4VHhQYWNrZXRTaXplLCBqdW1ibyA/IDB4MjQgOiAweDNmKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjI3NDQ6XHRcdHI4MTY5X21vZF9yZWc4X2NvbmQodHAsIENvbmZpZzMsIEp1bWJvX0VuMCwganVtYm8pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6Mjc0NTpcdFx0cjgxNjlfbW9kX3JlZzhfY29uZCh0cCwgQ29uZmlnNCwgQklUKDApLCBqdW1ibyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0yNzQ2LVx0XHRicmVhaztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYz0zODAxPXN0YXRpYyB2b2lkIHJ0bF9od19zdGFydF84MTE3KHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTM4NjAtXHQvKiBmaXJtd2FyZSBpcyBmb3IgTUFDIG9ubHkgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjM4NjE6XHRyODE2OV9hcHBseV9maXJtd2FyZSh0cCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0zODYyLX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYz01MDk1PXN0YXRpYyB2b2lkIHJ0bF9lbmFibGVfdHhfbHBpKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCBib29sIGVuYWJsZSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy01MTI2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6NTEyNzpzdGF0aWMgaW50IHI4MTY5X3BoeV9jb25uZWN0KHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNTEyOC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM9NTIxNz1zdGF0aWMgaW50IHJ0bF9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNTI1MS1cdGlmICh0cC1cdTAwM2VwaHlkZXYpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjUyNTI6XHRcdHJldHZhbCA9IHI4MTY5X3BoeV9jb25uZWN0KHRwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTUyNTMtXHRcdGlmIChyZXR2YWwpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM9NTQxOT1zdGF0aWMgdm9pZCBydGxfcmVtb3ZlX29uZShzdHJ1Y3QgcGNpX2RldiAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy01NDI4LVx0aWYgKElTX0VOQUJMRUQoQ09ORklHX1I4MTY5X0xFRFMpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6NTQyOTpcdFx0cjgxNjlfcmVtb3ZlX2xlZHModHAtXHUwMDNlbGVkcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy01NDMwLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jPTU1MTM9c3RhdGljIHZvaWQgcjgxNjhnX3dhaXRfbGxfc2hhcmVfZmlmb19yZWFkeShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy01NTE3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6NTUxODpzdGF0aWMgaW50IHI4MTY5X21kaW9fcmVhZF9yZWcoc3RydWN0IG1paV9idXMgKm1paV9idXMsIGludCBwaHlhZGRyLCBpbnQgcGh5cmVnKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNTUxOS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNTUyNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjU1Mjg6c3RhdGljIGludCByODE2OV9tZGlvX3dyaXRlX3JlZyhzdHJ1Y3QgbWlpX2J1cyAqbWlpX2J1cywgaW50IHBoeWFkZHIsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy01NTI5LVx0XHRcdFx0aW50IHBoeXJlZywgdTE2IHZhbClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy01NTQwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6NTU0MTpzdGF0aWMgaW50IHI4MTY5X21kaW9fcmVhZF9yZWdfYzQ1KHN0cnVjdCBtaWlfYnVzICptaWlfYnVzLCBpbnQgYWRkcixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTU1NDItXHRcdFx0XHQgICBpbnQgZGV2bnVtLCBpbnQgcmVnbnVtKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTU1NTQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzo1NTU1OnN0YXRpYyBpbnQgcjgxNjlfbWRpb193cml0ZV9yZWdfYzQ1KHN0cnVjdCBtaWlfYnVzICptaWlfYnVzLCBpbnQgYWRkcixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTU1NTYtXHRcdFx0XHQgICAgaW50IGRldm51bSwgaW50IHJlZ251bSwgdTE2IHZhbClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy01NTY3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6NTU2ODpzdGF0aWMgaW50IHI4MTY5X21kaW9fcmVnaXN0ZXIoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy01NTY5LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy01NTgwLVx0ICAgIHRwLVx1MDAzZW1hY192ZXJzaW9uID09IFJUTF9HSUdBX01BQ19WRVJfMjYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzo1NTgxOlx0XHRyODE2OV9tZGlvX3dyaXRlKHRwLCAweDFmLCAwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTU1ODItXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNTU4Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjU1ODc6XHRuZXdfYnVzLVx1MDAzZW5hbWUgPSBcJiMzNDtyODE2OVwmIzM0OztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTU1ODgtXHRuZXdfYnVzLVx1MDAzZXByaXYgPSB0cDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy01NTkxLVx0bmV3X2J1cy1cdTAwM2VwaHlfbWFzayA9IEdFTk1BU0soMzEsIDEpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6NTU5MjpcdHNucHJpbnRmKG5ld19idXMtXHUwMDNlaWQsIE1JSV9CVVNfSURfU0laRSwgXCYjMzQ7cjgxNjktJXgtJXhcJiMzNDssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy01NTkzLVx0XHQgcGNpX2RvbWFpbl9ucihwZGV2LVx1MDAzZWJ1cyksIHBjaV9kZXZfaWQocGRldikpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNTU5NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjU1OTU6XHRuZXdfYnVzLVx1MDAzZXJlYWQgPSByODE2OV9tZGlvX3JlYWRfcmVnO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6NTU5NjpcdG5ld19idXMtXHUwMDNld3JpdGUgPSByODE2OV9tZGlvX3dyaXRlX3JlZztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTU1OTctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy01NTk4LVx0aWYgKHRwLVx1MDAzZW1hY192ZXJzaW9uIFx1MDAzZT0gUlRMX0dJR0FfTUFDX1ZFUl80MCkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6NTU5OTpcdFx0bmV3X2J1cy1cdTAwM2VyZWFkX2M0NSA9IHI4MTY5X21kaW9fcmVhZF9yZWdfYzQ1O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6NTYwMDpcdFx0bmV3X2J1cy1cdTAwM2V3cml0ZV9jNDUgPSByODE2OV9tZGlvX3dyaXRlX3JlZ19jNDU7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy01NjAxLVx0fVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jPTU4Nzk9c3RhdGljIHVuc2lnbmVkIGxvbmcgcnRsODE2OV9nZXRfbHBpX2NhcHMoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNTkwMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjU5MDE6c3RhdGljIGNvbnN0IHN0cnVjdCBwaHlsaW5rX3Bjc19vcHMgcjgxNjlfcGNzX29wcyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTU5MDItXHQucGNzX3ZhbGlkYXRlID0gcnRsODE2OV9wY3NfdmFsaWRhdGUsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM9NTkwOD1zdGF0aWMgaW50IHJ0bF9pbml0X3BoeWxpbmsoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNTkyMC1cdGNhc2UgUlRMX1NGUF84MTY4X0FGOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6NTkyMTpcdFx0dHAtXHUwMDNlcGNzLm9wcyA9IFx1MDAyNnI4MTY5X3Bjc19vcHM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy01OTIyLVx0XHR0cC1cdTAwM2VwaHlsaW5rX2NvbmZpZy5kZWZhdWx0X2FuX2luYmFuZCA9IHRydWU7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNTkyNi1cdGNhc2UgUlRMX1NGUF84MTI3X0FURjpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjU5Mjc6XHRcdHRwLVx1MDAzZXBjcy5vcHMgPSBcdTAwMjZyODE2OV9wY3Nfb3BzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNTkyOC1cdFx0cGh5X21vZGUgPSBQSFlfSU5URVJGQUNFX01PREVfMTBHQkFTRVI7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM9NTk3MD1zdGF0aWMgaW50IHJ0bF9pbml0X29uZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy02MDMzLVx0XHRyZXR1cm4gZGV2X2Vycl9wcm9iZShcdTAwMjZwZGV2LVx1MDAzZWRldiwgLUVOT0RFVixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjYwMzQ6XHRcdFx0XHQgICAgIFwmIzM0O3Vua25vd24gY2hpcCAlc1hJRCAleCwgY29udGFjdCByODE2OSBtYWludGFpbmVycyAoc2VlIE1BSU5UQUlORVJTIGZpbGUpXFxuXCYjMzQ7LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNjAzNS1cdFx0XHRcdCAgICAgZXh0X3hpZF9zdHIsIHhpZCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNjE1OS1cdGlmICh0cC1cdTAwM2VzZnBfbW9kZSA9PSBSVExfU0ZQX05PTkUpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjYxNjA6XHRcdHJjID0gcjgxNjlfbWRpb19yZWdpc3Rlcih0cCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy02MTYxLVx0XHRpZiAocmMpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X3BoeV9jb25maWcuYy0yLS8qXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X3BoeV9jb25maWcuYzozOiAqIHI4MTY5X3BoeV9jb25maWcuYzogUmVhbFRlayA4MTY5LzgxNjgvODEwMSBldGhlcm5ldCBkcml2ZXIuXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X3BoeV9jb25maWcuYy00LSAqXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9waHlfY29uZmlnLmMtMTQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X3BoeV9jb25maWcuYzoxNTojaW5jbHVkZSBcJiMzNDtyODE2OS5oXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X3BoeV9jb25maWcuYy0xNi1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X3BoeV9jb25maWcuYz00MzI9c3RhdGljIHZvaWQgcnRsODE2OGRfYXBwbHlfZmlybXdhcmVfY29uZChzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X3BoeV9jb25maWcuYy00NDUtXHRlbHNlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X3BoeV9jb25maWcuYzo0NDY6XHRcdHI4MTY5X2FwcGx5X2Zpcm13YXJlKHRwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfcGh5X2NvbmZpZy5jLTQ0Ny19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9waHlfY29uZmlnLmM9NTM4PXN0YXRpYyB2b2lkIHJ0bDgxNjhlXzFfaHdfcGh5X2NvbmZpZyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X3BoeV9jb25maWcuYy01NTEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X3BoeV9jb25maWcuYzo1NTI6XHRyODE2OV9hcHBseV9maXJtd2FyZSh0cCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X3BoeV9jb25maWcuYy01NTMtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9waHlfY29uZmlnLmM9NTgzPXN0YXRpYyB2b2lkIHJ0bDgxNjhlXzJfaHdfcGh5X2NvbmZpZyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X3BoeV9jb25maWcuYy01ODUte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9waHlfY29uZmlnLmM6NTg2Olx0cjgxNjlfYXBwbHlfZmlybXdhcmUodHApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9waHlfY29uZmlnLmMtNTg3LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfcGh5X2NvbmZpZy5jPTY0MT1zdGF0aWMgdm9pZCBydGw4MTY4Zl8xX2h3X3BoeV9jb25maWcoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9waHlfY29uZmlnLmMtNjQzLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfcGh5X2NvbmZpZy5jOjY0NDpcdHI4MTY5X2FwcGx5X2Zpcm13YXJlKHRwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfcGh5X2NvbmZpZy5jLTY0NS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X3BoeV9jb25maWcuYz02Njk9c3RhdGljIHZvaWQgcnRsODE2OGZfMl9od19waHlfY29uZmlnKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfcGh5X2NvbmZpZy5jLTY3MS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X3BoeV9jb25maWcuYzo2NzI6XHRyODE2OV9hcHBseV9maXJtd2FyZSh0cCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X3BoeV9jb25maWcuYy02NzMtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9waHlfY29uZmlnLmM9Njc3PXN0YXRpYyB2b2lkIHJ0bDg0MTFfaHdfcGh5X2NvbmZpZyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X3BoeV9jb25maWcuYy02Nzkte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9waHlfY29uZmlnLmM6NjgwOlx0cjgxNjlfYXBwbHlfZmlybXdhcmUodHApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9waHlfY29uZmlnLmMtNjgxLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfcGh5X2NvbmZpZy5jPTc0MT1zdGF0aWMgdm9pZCBydGw4MTY4Z18xX2h3X3BoeV9jb25maWcoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9waHlfY29uZmlnLmMtNzQ1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9waHlfY29uZmlnLmM6NzQ2Olx0cjgxNjlfYXBwbHlfZmlybXdhcmUodHApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9waHlfY29uZmlnLmMtNzQ3LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfcGh5X2NvbmZpZy5jPTc4OT1zdGF0aWMgdm9pZCBydGw4MTY4Z18yX2h3X3BoeV9jb25maWcoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9waHlfY29uZmlnLmMtNzkxLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfcGh5X2NvbmZpZy5jOjc5MjpcdHI4MTY5X2FwcGx5X2Zpcm13YXJlKHRwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfcGh5X2NvbmZpZy5jLTc5My1cdHJ0bDgxNjhnX2NvbmZpZ19lZWVfcGh5KHBoeWRldik7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9waHlfY29uZmlnLmM9Nzk2PXN0YXRpYyB2b2lkIHJ0bDgxNjhoXzJfaHdfcGh5X2NvbmZpZyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X3BoeV9jb25maWcuYy04MDEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X3BoeV9jb25maWcuYzo4MDI6XHRyODE2OV9hcHBseV9maXJtd2FyZSh0cCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X3BoeV9jb25maWcuYy04MDMtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9waHlfY29uZmlnLmM9OTQ3PXN0YXRpYyB2b2lkIHJ0bDgxMDVlX2h3X3BoeV9jb25maWcoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9waHlfY29uZmlnLmMtOTUzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9waHlfY29uZmlnLmM6OTU0Olx0cjgxNjlfYXBwbHlfZmlybXdhcmUodHApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9waHlfY29uZmlnLmMtOTU1LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfcGh5X2NvbmZpZy5jPTk2MT1zdGF0aWMgdm9pZCBydGw4NDAyX2h3X3BoeV9jb25maWcoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9waHlfY29uZmlnLmMtOTY3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9waHlfY29uZmlnLmM6OTY4Olx0cjgxNjlfYXBwbHlfZmlybXdhcmUodHApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9waHlfY29uZmlnLmMtOTY5LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfcGh5X2NvbmZpZy5jPTk3Nz1zdGF0aWMgdm9pZCBydGw4MTA2ZV9od19waHlfY29uZmlnKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfcGh5X2NvbmZpZy5jLTk5MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfcGh5X2NvbmZpZy5jOjk5MTpcdHI4MTY5X2FwcGx5X2Zpcm13YXJlKHRwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfcGh5X2NvbmZpZy5jLTk5Mi1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X3BoeV9jb25maWcuYz0xMDAxPXN0YXRpYyB2b2lkIHJ0bDgxMjVhXzJfaHdfcGh5X2NvbmZpZyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X3BoeV9jb25maWcuYy0xMDQ1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9waHlfY29uZmlnLmM6MTA0NjpcdHI4MTY5X2FwcGx5X2Zpcm13YXJlKHRwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfcGh5X2NvbmZpZy5jLTEwNDctXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9waHlfY29uZmlnLmM9MTA2Mz1zdGF0aWMgdm9pZCBydGw4MTI1Yl9od19waHlfY29uZmlnKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfcGh5X2NvbmZpZy5jLTEwNjUte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9waHlfY29uZmlnLmM6MTA2NjpcdHI4MTY5X2FwcGx5X2Zpcm13YXJlKHRwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfcGh5X2NvbmZpZy5jLTEwNjctXHRydGw4MTY4Z19lbmFibGVfZ3BoeV8xMG0ocGh5ZGV2KTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X3BoeV9jb25maWcuYz0xMDk4PXN0YXRpYyB2b2lkIHJ0bDgxMjVkX2h3X3BoeV9jb25maWcoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsXG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAxNjozNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNjY1OQoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDk4NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIHRoZSByODE2OSBEcml2ZXIgd2l0aCBzeXpfcGNpKioKCk9rYXksIHNvIHdlJiMzOTtyZSBsb29raW5nIGF0IGZ1enppbmcgdGhlIGByODE2OWAgZHJpdmVyLCB3aGljaCBpcyBhIFBDSSBkcml2ZXIsIHVzaW5nIGBzeXpfcGNpYC4gIFN5emthbGxlciYjMzk7cyBgc3l6X3BjaWAgcHNldWRvLWRldmljZSBpcyB0aGUga2V5IGhlcmUuIFRoZSBxdWVzdGlvbiBpcywgaXMgdGhpcyBwYXRjaCBmdXp6LXdvcnRoeT8gIFllcywgaXQgc2VlbXMgdG8gYmUhIFRoaXMgcGF0Y2ggaW52b2x2ZXMgc2lnbmlmaWNhbnQgY2hhbmdlcywgc3BlY2lmaWNhbGx5IHRoZSBhZG9wdGlvbiBvZiBgcGh5bGlua2AgYnkgdGhlIGByODE2OWAgZHJpdmVyIGFuZCB0aGUgYWRkaXRpb24gb2YgYHBoeWxpbmtfc2V0X21hY19jYXBhYmlsaXRpZXNgIHRvIGBwaHlsaW5rLmNgLgoKUmlnaHQsIGxldCYjMzk7cyBkaXZlIGludG8gdGhlIGRldGFpbHMuIEkgbmVlZCB0byBpZGVudGlmeSB3aGljaCBmdW5jdGlvbnMgYXJlIGJlaW5nIG1vZGlmaWVkIG9yIGFkZGVkLiBMZXQmIzM5O3Mgc2VlLi4uIGluIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uY2AgdGhlcmUmIzM5O3MgcXVpdGUgYSBsaXN0OiBgcjgxMjdfc2RzX3JlYWRgLCBgcjgxMjdfc2RzX3dyaXRlYCwgYHI4MTI3X3Nkc19tb2RpZnlgLCBgcjgxMjdfc2ZwX2luaXRfMWdgLCBgcjgxMjdfc2ZwX2luaXRfMTBnYCwgYHJ0bF9pc184MTE2YWZgLCBgcnRsX2dldF9zZnBfbW9kZWAsIGBydGxfbGlua19jaGdfcGF0Y2hgLCBgcnRsODE2OV9nZXRfbGlua19rc2V0dGluZ3NgLCBgcnRsODE2OV9zZXRfbGlua19rc2V0dGluZ3NgLCBgcnRsODE2OV9ud2F5X3Jlc2V0YCwgYHJ0bDgxNjlfaW9jdGxgLCBgcnRsX2xvd3Bvd2VyX2hpZGRlbl9mdW5jdGlvbnNgLCBgcnRsODE2OV9jaGFuZ2VfbXR1YCwgYHJ0bF9tYWNfbGlua19kb3duYCwgYHJ0bF9tYWNfbGlua191cGAsIGBydGxfbWFjX3NlbGVjdF9wY3NgLCBgcnRsX21hY19jb25maWdgLCBgcnRsODE2OV9zZHNfcmVhZGAsIGBydGw4MTY5X3Bjc19nZXRfc3RhdGVgLCBgcnRsODE2OV9wY3NfY29uZmlnYCwgYHJ0bDgxNjlfcGNzX3ZhbGlkYXRlYCwgYHJ0bDgxNjlfcGNzX2FuX3Jlc3RhcnRgLCBgcnRsX21hY19kaXNhYmxlX3R4X2xwaWAsIGBydGxfbWFjX2VuYWJsZV90eF9scGlgLCBgcnRsODE2OV9nZXRfbHBpX2NhcHNgLCBhbmQgYHJ0bF9pbml0X3BoeWxpbmtgLiBBbmQgaW4gYGRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNgLCB3ZSBoYXZlIGBwaHlsaW5rX3NldF9tYWNfY2FwYWJpbGl0aWVzYC4KCk5leHQsIEkgbmVlZCB0byBjaGVjayBpZiBgQ09ORklHX1I4MTY5YCBpcyBlbmFibGVkIGJ5IGRlZmF1bHQuICBJdCYjMzk7cyBwcm9iYWJseSBlbmFibGVkLCBiZWluZyBhIGNvbW1vbiBuZXR3b3JrIGRyaXZlciwgYnV0IGxldCYjMzk7cyBiZSB0aG9yb3VnaCBhbmQgbGlzdCBpdCBhbnl3YXkuIFdhaXQsIHNjcmF0Y2ggdGhhdC4gVGhlIGluc3RydWN0aW9ucyBhcmUgdG8gbGlzdCBvbmx5IHNwZWNpZmljIGNvbmZpZ3MgdGhhdCBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZSwgYW5kICpub3QqIGluY2x1ZGUgdGhlICYjMzQ7Q09ORklHXyYjMzQ7IHByZWZpeC4gR290IGl0LiBTbywgYFI4MTY5YCBnb2VzIGludG8gYEVuYWJsZUNvbmZpZ3NgIGFuZCBgUEhZTElOS2AgYXMgd2VsbCwgYmVjYXVzZSBgUjgxNjlgIG5vdyBzZWxlY3RzIGl0LgoKT2theSwgbGV0JiMzOTtzIGZpZ3VyZSBvdXQgd2hhdCBzeW1ib2xzIHRvIGZvY3VzIG9uIGZvciBmdXp6aW5nLiBXZSB3YW50IHRoZSBuZXcgb3Igc2lnbmlmaWNhbnRseSBtb2RpZmllZCBmdW5jdGlvbnMuICBBbHJpZ2h0LCBsZXQmIzM5O3Mgc2VlLi4uICBXZSBzaG91bGQgZm9jdXMgb246IGBwaHlsaW5rX3NldF9tYWNfY2FwYWJpbGl0aWVzYCwgYHJ0bF9pbml0X3BoeWxpbmtgLCBgcnRsODE2OV9wY3NfY29uZmlnYCwgYHJ0bDgxNjlfcGNzX2dldF9zdGF0ZWAsIGBydGxfbWFjX2xpbmtfdXBgLCBgcnRsX21hY19saW5rX2Rvd25gLCBgcnRsX21hY19zZWxlY3RfcGNzYCwgYHJ0bF9tYWNfZGlzYWJsZV90eF9scGlgLCBgcnRsX21hY19lbmFibGVfdHhfbHBpYCwgYHJ0bDgxNjlfY2hhbmdlX210dWAsIGBydGxfbG93cG93ZXJfaGlkZGVuX2Z1bmN0aW9uc2AsIGByODEyN19zZnBfaW5pdF8xZ2AsIGByODEyN19zZnBfaW5pdF8xMGdgLCBhbmQgYHJ0bDgxNjlfaW9jdGxgLgoKTm93LCBpcyBgcGh5bGlua19zZXRfbWFjX2NhcGFiaWxpdGllc2AgZXhwb3J0ZWQ/IFllcywgaXQgaXMhICBgRVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19zZXRfbWFjX2NhcGFiaWxpdGllcyk7YCBjb25maXJtcyBpdC4gQW5kLCBsZXQmIzM5O3MgY2hlY2sgYHJ0bDgxNjlfY2hhbmdlX210dWAgLSB5ZXAsIGl0JiMzOTtzIGJlZW4gbW9kaWZpZWQgdG8gY2FsbCBgcGh5bGlua19zZXRfbWFjX2NhcGFiaWxpdGllc2AuCgpGaW5hbGx5LCBhIHF1aWNrIGNvZGUgc2VhcmNoIHRvIHZlcmlmeSBldmVyeXRoaW5nLiBNYWtlcyBzZW5zZSEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAxNjozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwaHlsaW5rX3NldF9tYWNfY2FwYWJpbGl0aWVzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTE4Mjk9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19zZXRfZml4ZWRfbGluayk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xODMxLS8qKlxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxODMyOiAqIHBoeWxpbmtfc2V0X21hY19jYXBhYmlsaXRpZXMoKSAtIER5bmFtaWNhbGx5IHVwZGF0ZSBNQUMgY2FwYWJpbGl0aWVzXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE4MzMtICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE4MzktICovXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjE4NDA6dm9pZCBwaHlsaW5rX3NldF9tYWNfY2FwYWJpbGl0aWVzKHN0cnVjdCBwaHlsaW5rICpwbCwgdW5zaWduZWQgbG9uZyBtYWNfY2FwYWJpbGl0aWVzKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xODQxLXtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE4OTQtfVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxODk1OkVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfc2V0X21hY19jYXBhYmlsaXRpZXMpO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xODk2LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDE2OjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM4ODk4CgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogMzQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEaXZpbmcgaW50byB0aGUgUmVhbHRlayBQSFkgSW5pdGlhbGl6YXRpb24qKgoKT2theSwgdGltZSB0byBnZXQgdG8gdGhlIGhlYXJ0IG9mIHRoaXMgUmVhbHRlayBpc3N1ZS4gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiBob3cgdGhpcyBQSFkgaXMgaW5pdGlhbGl6ZWQsIHNvIEkmIzM5O20gaGVhZGluZyBzdHJhaWdodCBmb3IgYHJ0bF9pbml0X3BoeWxpbmtgLiBJJiMzOTttIGdvaW5nIHRvIG5hdmlnYXRlIHRvIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uY2AuIFRoYXQmIzM5O3Mgd2hlcmUgSSBleHBlY3QgdG8gZmluZCB0aGUgbG93LWxldmVsIFBIWSBpbnRlcmFjdGlvbiBsb2dpYy4gU3BlY2lmaWNhbGx5LCBgcnRsX2luaXRfcGh5bGlua2AgbGlrZWx5IGhhbmRsZXMgdGhlIFBIWSYjMzk7cyBpbml0aWFsIHNldHVwIGFuZCBjb25maWd1cmF0aW9uLCBpbmNsdWRpbmcgcG90ZW50aWFsbHkgYXV0b25lZ290aWF0aW9uIGFuZCBsaW5rIHNwZWVkL2R1cGxleCBzZXR0aW5nLiBJJiMzOTttIGhvcGluZyBJIGNhbiBnbGVhbiBpbmZvcm1hdGlvbiBmcm9tIHRoZXJlIHRoYXQgaGVscHMgbWUgZ2V0IHRvIHRoZSBib3R0b20gb2YgdGhlIHByb2JsZW0uIFRpbWUgdG8gc2VlIHdoYXQmIzM5O3MgZ29pbmcgb24gdW5kZXIgdGhlIGhvb2QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDE2OjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3J0bF9pbml0X3BoeWxpbmsmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYz01OTAxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGh5bGlua19wY3Nfb3BzIHI4MTY5X3Bjc19vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNTkwNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjU5MDg6c3RhdGljIGludCBydGxfaW5pdF9waHlsaW5rKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNTkwOS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM9NTk3MD1zdGF0aWMgaW50IHJ0bF9pbml0X29uZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy02MTU0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6NjE1NTpcdHJjID0gcnRsX2luaXRfcGh5bGluayh0cCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy02MTU2LVx0aWYgKHJjKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAxNjozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzOTQ3MwoJCQkJCQkJb3V0cHV0OiAyOTgKCQkJCQkJCXRob3VnaHRzOiA1MTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBUYXJnZXQgSWRlbnRpZmljYXRpb246IHI4MTY5IERyaXZlciBhbmQgcGh5bGluayBGcmFtZXdvcmsqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gVGhpcyBwYXRjaCBpcyBkZWZpbml0ZWx5IHNpZ25pZmljYW50OyBpdCYjMzk7cyBnb3Qgc29tZSByZWFsIGZ1bmN0aW9uYWwgY2hhbmdlcyBoYXBwZW5pbmcgaW4gdGhlIGByODE2OWAgZHJpdmVyIGFuZCB0aGUgYHBoeWxpbmtgIGZyYW1ld29yay4gU3BlY2lmaWNhbGx5LCB0aGlzIG1vdmUgZnJvbSBgcGh5bGliYCB0byBgcGh5bGlua2AsIGFsb25nc2lkZSB0aGUgYWRkaXRpb24gb2YgZHluYW1pYyBNQUMgY2FwYWJpbGl0aWVzIHVwZGF0ZXMgd2l0aGluIGBwaHlsaW5rYCwgc2hvdXRzICYjMzQ7ZnV6eiBtZSEmIzM0OwoKSSYjMzk7dmUgc2NvcGVkIG91dCB0aGUga2V5IGZ1bmN0aW9ucyB0byB0YXJnZXQuIEhlcmUmIzM5O3Mgd2hhdCBJJiMzOTttIHRoaW5raW5nOgoKKiAgIGBwaHlsaW5rX3NldF9tYWNfY2FwYWJpbGl0aWVzYCAtIHRoaXMgaXMgZ29pbmcgdG8gYmUgaW50ZXJlc3RpbmcsIGVzcGVjaWFsbHkgd2l0aCBkeW5hbWljIHVwZGF0ZXMuCiogICBgcnRsX2luaXRfcGh5bGlua2AKKiAgIGBydGw4MTY5X3Bjc19jb25maWdgCiogICBgcnRsODE2OV9wY3NfZ2V0X3N0YXRlYCAtIE1pZ2h0IGJlIHdvcnRoIGhpdHRpbmcgd2l0aCBhIHN0YXRlLWF3YXJlIGZ1enplciwgc2luY2UgaXQmIzM5O3MgbGlrZWx5IGNhbGxlZCBwZXJpb2RpY2FsbHkuCiogICBgcnRsX21hY19saW5rX3VwYAoqICAgYHJ0bF9tYWNfbGlua19kb3duYAoqICAgYHJ0bF9tYWNfc2VsZWN0X3Bjc2AKKiAgIGBydGxfbWFjX2Rpc2FibGVfdHhfbHBpYAoqICAgYHJ0bF9tYWNfZW5hYmxlX3R4X2xwaWAKKiAgIGBydGw4MTY5X2NoYW5nZV9tdHVgIC0gTGV0JiMzOTtzIHNlZSBpZiB3ZSBjYW4gdHJpZ2dlciBzb21lIGludGVyZXN0aW5nIGVkZ2UgY2FzZXMgdGhyb3VnaCBNVFUgbWFuaXB1bGF0aW9uLgoqICAgYHJ0bF9sb3dwb3dlcl9oaWRkZW5fZnVuY3Rpb25zYCAtIFdvcnRoIGRpZ2dpbmcgaW50byB0aGUgbG9naWMgaW4gdGhlc2UgbG93LXBvd2VyIGZ1bmN0aW9ucy4KKiAgIGByODEyN19zZnBfaW5pdF8xZ2AgLSBJJiMzOTttIGludGVyZXN0ZWQgaW4gaG93IHRoaXMgZGVhbHMgd2l0aCAxRy4KKiAgIGByODEyN19zZnBfaW5pdF8xMGdgIC0gU2ltaWxhcmx5LCB3b3J0aCBjaGVja2luZyB0aGUgMTBHIGltcGxlbWVudGF0aW9uLgoqICAgYHJ0bDgxNjlfaW9jdGxgIC0gVGhpcyB3aWxsIGxpa2VseSBiZSBmcnVpdGZ1bCEKCkNvbmZpZy13aXNlLCBgUjgxNjlgIGlzIG91ciBwcmltYXJ5IGZvY3VzIHNpbmNlIGl0IHNlbGVjdHMgYFBIWUxJTktgLiBFbmFibGluZyBgUjgxNjlgIHNob3VsZCBnZXQgdXMgZXZlcnl0aGluZyB3ZSBuZWVkLiBObyBuZWVkIHRvIGV4cGxpY2l0bHkgbGlzdCBgUEhZTElOS2AuCgpJIGp1c3QgdG9vayBhIHF1aWNrIGxvb2sgYXQgYHJ0bDgxNjlfY2hhbmdlX210dWAgYW5kIGEgZmV3IG90aGVycy4gSXQgY29uZmlybXMgdGhlc2UgZnVuY3Rpb25zIGFyZSBjb250cm9sIHBhdGggb3BlcmF0aW9ucy4gRnVuY3Rpb25zIGxpa2UgYHJ0bDgxNjlfcGNzX2dldF9zdGF0ZWAgbWlnaHQgYmUgaW50ZXJlc3RpbmcgZm9yIHN0YXRlLWF3YXJlIGZ1enplcnMuIFRoZXkgYXJlbiYjMzk7dCBob3QtcGF0aCwgYnV0IHRoZXkgYXJlIHN0aWxsIHZhbHVhYmxlIHRhcmdldHMuCldpdGggdGhpcywgSSB0aGluayB3ZSBoYXZlIGEgc3Ryb25nIHN0YXJ0aW5nIHBvaW50LiBOb3csIGxldCYjMzk7cyBnZXQgdGhhdCBmdXp6aW5nIGNhbXBhaWduIHJvbGxpbmchCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDE2OjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtSODE2OSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3BoeWxpbmtfc2V0X21hY19jYXBhYmlsaXRpZXMmIzM0OywKICAgICYjMzQ7cnRsX2luaXRfcGh5bGluayYjMzQ7LAogICAgJiMzNDtydGw4MTY5X3Bjc19jb25maWcmIzM0OywKICAgICYjMzQ7cnRsODE2OV9wY3NfZ2V0X3N0YXRlJiMzNDssCiAgICAmIzM0O3J0bF9tYWNfbGlua191cCYjMzQ7LAogICAgJiMzNDtydGxfbWFjX2xpbmtfZG93biYjMzQ7LAogICAgJiMzNDtydGxfbWFjX3NlbGVjdF9wY3MmIzM0OywKICAgICYjMzQ7cnRsX21hY19kaXNhYmxlX3R4X2xwaSYjMzQ7LAogICAgJiMzNDtydGxfbWFjX2VuYWJsZV90eF9scGkmIzM0OywKICAgICYjMzQ7cnRsODE2OV9jaGFuZ2VfbXR1JiMzNDssCiAgICAmIzM0O3J0bF9sb3dwb3dlcl9oaWRkZW5fZnVuY3Rpb25zJiMzNDssCiAgICAmIzM0O3I4MTI3X3NmcF9pbml0XzFnJiMzNDssCiAgICAmIzM0O3I4MTI3X3NmcF9pbml0XzEwZyYjMzQ7LAogICAgJiMzNDtydGw4MTY5X2lvY3RsJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1pZ3JhdGVzIHRoZSBSZWFsdGVrIHI4MTY5IEV0aGVybmV0IGRyaXZlciBmcm9tIHBoeWxpYiB0byBwaHlsaW5rLCBpbnRyb2R1Y2luZyBzaWduaWZpY2FudCBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGRyaXZlciYjMzk7cyBpbml0aWFsaXphdGlvbiwgbGluayBtYW5hZ2VtZW50LCBhbmQgTVRVIGhhbmRsaW5nLiBJdCBhbHNvIGFkZHMgYSBuZXcgcGh5bGluayBBUEkgYHBoeWxpbmtfc2V0X21hY19jYXBhYmlsaXRpZXNgIHRvIGR5bmFtaWNhbGx5IHVwZGF0ZSBNQUMgY2FwYWJpbGl0aWVzLiBUaGVzZSBhcmUgcmVhY2hhYmxlIGNvbnRyb2wtcGF0aCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgZnV6emVkLCBlc3BlY2lhbGx5IHZpYSBzeXpfcGNpIGFuZCBuZXRsaW5rL2lvY3RsIGludGVyZmFjZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1I4MTY5JiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cGh5bGlua19zZXRfbWFjX2NhcGFiaWxpdGllcyYjMzQ7LAogICAgJiMzNDtydGxfaW5pdF9waHlsaW5rJiMzNDssCiAgICAmIzM0O3J0bDgxNjlfcGNzX2NvbmZpZyYjMzQ7LAogICAgJiMzNDtydGw4MTY5X3Bjc19nZXRfc3RhdGUmIzM0OywKICAgICYjMzQ7cnRsX21hY19saW5rX3VwJiMzNDssCiAgICAmIzM0O3J0bF9tYWNfbGlua19kb3duJiMzNDssCiAgICAmIzM0O3J0bF9tYWNfc2VsZWN0X3BjcyYjMzQ7LAogICAgJiMzNDtydGxfbWFjX2Rpc2FibGVfdHhfbHBpJiMzNDssCiAgICAmIzM0O3J0bF9tYWNfZW5hYmxlX3R4X2xwaSYjMzQ7LAogICAgJiMzNDtydGw4MTY5X2NoYW5nZV9tdHUmIzM0OywKICAgICYjMzQ7cnRsX2xvd3Bvd2VyX2hpZGRlbl9mdW5jdGlvbnMmIzM0OywKICAgICYjMzQ7cjgxMjdfc2ZwX2luaXRfMWcmIzM0OywKICAgICYjMzQ7cjgxMjdfc2ZwX2luaXRfMTBnJiMzNDssCiAgICAmIzM0O3J0bDgxNjlfaW9jdGwmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbWlncmF0ZXMgdGhlIFJlYWx0ZWsgcjgxNjkgRXRoZXJuZXQgZHJpdmVyIGZyb20gcGh5bGliIHRvIHBoeWxpbmssIGludHJvZHVjaW5nIHNpZ25pZmljYW50IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgZHJpdmVyJiMzOTtzIGluaXRpYWxpemF0aW9uLCBsaW5rIG1hbmFnZW1lbnQsIGFuZCBNVFUgaGFuZGxpbmcuIEl0IGFsc28gYWRkcyBhIG5ldyBwaHlsaW5rIEFQSSBgcGh5bGlua19zZXRfbWFjX2NhcGFiaWxpdGllc2AgdG8gZHluYW1pY2FsbHkgdXBkYXRlIE1BQyBjYXBhYmlsaXRpZXMuIFRoZXNlIGFyZSByZWFjaGFibGUgY29udHJvbC1wYXRoIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQsIGVzcGVjaWFsbHkgdmlhIHN5el9wY2kgYW5kIG5ldGxpbmsvaW9jdGwgaW50ZXJmYWNlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDE2OjM0OjQxLjc4NDI5NDg0M1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5MzM1Mzg2NDYxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlI4MTY5XCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicGh5bGlua19zZXRfbWFjX2NhcGFiaWxpdGllc1wiLFxuICAgIFwicnRsX2luaXRfcGh5bGlua1wiLFxuICAgIFwicnRsODE2OV9wY3NfY29uZmlnXCIsXG4gICAgXCJydGw4MTY5X3Bjc19nZXRfc3RhdGVcIixcbiAgICBcInJ0bF9tYWNfbGlua191cFwiLFxuICAgIFwicnRsX21hY19saW5rX2Rvd25cIixcbiAgICBcInJ0bF9tYWNfc2VsZWN0X3Bjc1wiLFxuICAgIFwicnRsX21hY19kaXNhYmxlX3R4X2xwaVwiLFxuICAgIFwicnRsX21hY19lbmFibGVfdHhfbHBpXCIsXG4gICAgXCJydGw4MTY5X2NoYW5nZV9tdHVcIixcbiAgICBcInJ0bF9sb3dwb3dlcl9oaWRkZW5fZnVuY3Rpb25zXCIsXG4gICAgXCJyODEyN19zZnBfaW5pdF8xZ1wiLFxuICAgIFwicjgxMjdfc2ZwX2luaXRfMTBnXCIsXG4gICAgXCJydGw4MTY5X2lvY3RsXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbWlncmF0ZXMgdGhlIFJlYWx0ZWsgcjgxNjkgRXRoZXJuZXQgZHJpdmVyIGZyb20gcGh5bGliIHRvIHBoeWxpbmssIGludHJvZHVjaW5nIHNpZ25pZmljYW50IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgZHJpdmVyJ3MgaW5pdGlhbGl6YXRpb24sIGxpbmsgbWFuYWdlbWVudCwgYW5kIE1UVSBoYW5kbGluZy4gSXQgYWxzbyBhZGRzIGEgbmV3IHBoeWxpbmsgQVBJIGBwaHlsaW5rX3NldF9tYWNfY2FwYWJpbGl0aWVzYCB0byBkeW5hbWljYWxseSB1cGRhdGUgTUFDIGNhcGFiaWxpdGllcy4gVGhlc2UgYXJlIHJlYWNoYWJsZSBjb250cm9sLXBhdGggZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGZ1enplZCwgZXNwZWNpYWxseSB2aWEgc3l6X3BjaSBhbmQgbmV0bGluay9pb2N0bCBpbnRlcmZhY2VzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QxNjozNDo0MS43ODQzMDE2NjNaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgyMDM2MjM2NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDFmNzg1MDA0NTZiODM5M2VhZDZkNmZiYzE1YTQ5YzNiNTg1MGE5ZjRcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFR1ZSBKdWwgNyAxNjozNDozOSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWcgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWdcXG5pbmRleCA5YjBmNGY5NjMxZGJhYS4uNDlhYzcyNzM0MjI1ZjcgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9LY29uZmlnXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9LY29uZmlnXFxuQEAgLTg4LDYgKzg4LDcgQEAgY29uZmlnIFI4MTY5XFxuIFxcdHNlbGVjdCBDUkMzMlxcbiBcXHRzZWxlY3QgUEhZTElCXFxuIFxcdHNlbGVjdCBSRUFMVEVLX1BIWVxcbitcXHRzZWxlY3QgUEhZTElOS1xcbiBcXHRoZWxwXFxuIFxcdCAgU2F5IFkgaGVyZSBpZiB5b3UgaGF2ZSBhIFJlYWx0ZWsgRXRoZXJuZXQgYWRhcHRlciBiZWxvbmdpbmcgdG9cXG4gXFx0ICB0aGUgZm9sbG93aW5nIGZhbWlsaWVzOlxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jXFxuaW5kZXggZWM0ZmMyMWZhMjFmYjAuLjEyZTA3M2I5YTYxNDc5IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmNcXG5AQCAtMjYsMTIgKzI2LDEyIEBAXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9kbWEtbWFwcGluZy5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvcG1fcnVudGltZS5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvYml0ZmllbGQuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3BoeWxpbmsuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3ByZWZldGNoLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9pcHY2LmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC91bmFsaWduZWQuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY25ldC9pcDZfY2hlY2tzdW0uaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY25ldC9uZXRkZXZfcXVldWVzLmhcXHUwMDNlXFxuLSNpbmNsdWRlIFxcdTAwM2NuZXQvcGh5L3JlYWx0ZWtfcGh5LmhcXHUwMDNlXFxuIFxcbiAjaW5jbHVkZSBcXFwicjgxNjkuaFxcXCJcXG4gI2luY2x1ZGUgXFxcInI4MTY5X2Zpcm13YXJlLmhcXFwiXFxuQEAgLTk2LDYgKzk2LDI4IEBAXFxuICNkZWZpbmUgSlVNQk9fOUtcXHQoOSAqIFNaXzFLIC0gVkxBTl9FVEhfSExFTiAtIEVUSF9GQ1NfTEVOKVxcbiAjZGVmaW5lIEpVTUJPXzE2S1xcdChTWl8xNksgLSBWTEFOX0VUSF9ITEVOIC0gRVRIX0ZDU19MRU4pXFxuIFxcbisjZGVmaW5lIE9DUF9TRFNfQUREUl9SRUdcXHRcXHQweEVCMTBcXG4rI2RlZmluZSBPQ1BfU0RTX0NNRF9SRUdcXHRcXHRcXHQweEVCMEVcXG4rI2RlZmluZSBPQ1BfU0RTX0RBVEFfUkVHXFx0XFx0MHhFQjE0XFxuKyNkZWZpbmUgU0RTX0NNRF9SRUFEXFx0XFx0XFx0MHgwMDAxXFxuKyNkZWZpbmUgUlRMX1NEU19DMjJfQkFTRVxcdFxcdDB4NDBcXG4rI2RlZmluZSBSVExfU0RTX0M0NV9CQVNFXFx0XFx0MHgwMDgwXFxuKyNkZWZpbmUgUlRMX1BLR19ERVRFQ1RcXHRcXHRcXHQweGRjMDBcXG4rI2RlZmluZSBSVExfUEtHX0RFVEVDVF9NQVNLXFx0XFx0MHgwMDc4XFxuKyNkZWZpbmUgUlRMX1BLR19ERVRFQ1RfODExNkFGXFx0XFx0MHgwMDMwXFxuKyNkZWZpbmUgUlRMX0lOVF9IV19JRFxcdFxcdFxcdDB4ZDAwNlxcbisjZGVmaW5lIFJUTF9JTlRfSFdfSURfTUFTS1xcdFxcdDB4MDBmZlxcbisjZGVmaW5lIFJUTF9JTlRfSFdfSURfODExNkFGXFx0XFx0MHgwMDAwXFxuKyNkZWZpbmUgUlRMODExNkFGX0ZVTkNfUE1fQ1NSXFx0XFx0MHg4MFxcbisjZGVmaW5lIFJUTDgxMTZBRl9GVU5DX0VYUF9MTktDVExcXHQweDQ0XFxuKyNkZWZpbmUgUlRMX1BNX0QzSE9UXFx0XFx0XFx0R0VOTUFTSygxLCAwKVxcbisjZGVmaW5lIFI4MTI3X1NEU19DTURcXHRcXHRcXHQweDIzNDhcXG4rI2RlZmluZSBSODEyN19TRFNfQUREUlxcdFxcdFxcdDB4MjM0YVxcbisjZGVmaW5lIFI4MTI3X1NEU19EQVRBX0lOXFx0XFx0MHgyMzRjXFxuKyNkZWZpbmUgUjgxMjdfU0RTX0RBVEFfT1VUXFx0XFx0MHgyMzRlXFxuKyNkZWZpbmUgUjgxMjdfU0RTX0NNRF9FWEVDXFx0XFx0QklUKDApXFxuKyNkZWZpbmUgUjgxMjdfU0RTX0NNRF9XRVxcdFxcdEJJVCgxKVxcbitcXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBydGxfY2hpcF9pbmZvIHtcXG4gXFx0dTMyIG1hc2s7XFxuIFxcdHUzMiB2YWw7XFxuQEAgLTMzNCwxMSArMzU2LDEzIEBAIGVudW0gcnRsX3JlZ2lzdGVycyB7XFxuIFxcdEFMRFBTX0xUUlxcdD0gMHhlMGEyLFxcbiBcXHRMVFJfT0JGRl9MT0NLXFx0PSAweGUwMzIsXFxuIFxcdExUUl9TTk9PUFxcdD0gMHhlMDM0LFxcbitcXHRTRU5EX0xUUl9NU0dcXHQ9IDB4ZTAzOCxcXG4gXFxuICNkZWZpbmUgQUxEUFNfTFRSX0VOXFx0XFx0XFx0QklUKDApXFxuICNkZWZpbmUgTFRSX09CRkZfTE9DS19FTlxcdFxcdEJJVCgwKVxcbiAjZGVmaW5lIExJTktfU1BFRURfQ0hBTkdFX0VOXFx0XFx0QklUKDE0KVxcbiAjZGVmaW5lIExUUl9TTk9PUF9FTlxcdFxcdFxcdEdFTk1BU0soMTUsIDE0KVxcbisjZGVmaW5lIExUUl9NU0dfRU5cXHRcXHRcXHRCSVQoMClcXG4gfTtcXG4gXFxuIGVudW0gcnRsODE2OF84MTAxX3JlZ2lzdGVycyB7XFxuQEAgLTcyOCw2ICs3NTIsMTIgQEAgZW51bSBydGxfZGFzaF90eXBlIHtcXG4gXFx0UlRMX0RBU0hfMjVfQlAsXFxuIH07XFxuIFxcbitlbnVtIHJ0bF9zZnBfbW9kZSB7XFxuK1xcdFJUTF9TRlBfTk9ORSxcXG4rXFx0UlRMX1NGUF84MTY4X0FGLFxcbitcXHRSVExfU0ZQXzgxMjdfQVRGLFxcbit9O1xcbitcXG4gc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSB7XFxuIFxcdHZvaWQgX19pb21lbSAqbW1pb19hZGRyO1xcdC8qIG1lbW9yeSBtYXAgcGh5c2ljYWwgYWRkcmVzcyAqL1xcbiBcXHRzdHJ1Y3QgcGNpX2RldiAqcGNpX2RldjtcXG5AQCAtNzM2LDYgKzc2Niw3IEBAIHN0cnVjdCBydGw4MTY5X3ByaXZhdGUge1xcbiBcXHRzdHJ1Y3QgbmFwaV9zdHJ1Y3QgbmFwaTtcXG4gXFx0ZW51bSBtYWNfdmVyc2lvbiBtYWNfdmVyc2lvbjtcXG4gXFx0ZW51bSBydGxfZGFzaF90eXBlIGRhc2hfdHlwZTtcXG4rXFx0ZW51bSBydGxfc2ZwX21vZGUgc2ZwX21vZGU7XFxuIFxcdHUzMiBjdXJfcng7IC8qIEluZGV4IGludG8gdGhlIFJ4IGRlc2NyaXB0b3IgYnVmZmVyIG9mIG5leHQgUnggcGt0LiAqL1xcbiBcXHR1MzIgY3VyX3R4OyAvKiBJbmRleCBpbnRvIHRoZSBUeCBkZXNjcmlwdG9yIGJ1ZmZlciBvZiBuZXh0IFJ4IHBrdC4gKi9cXG4gXFx0dTMyIGRpcnR5X3R4O1xcbkBAIC03NTAsNiArNzgxLDcgQEAgc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSB7XFxuIFxcdHUzMiBpcnFfbWFzaztcXG4gXFx0aW50IGlycTtcXG4gXFx0c3RydWN0IGNsayAqY2xrO1xcbitcXHRpbnQgc3BlZWQ7XFxuIFxcbiBcXHRzdHJ1Y3Qge1xcbiBcXHRcXHRERUNMQVJFX0JJVE1BUChmbGFncywgUlRMX0ZMQUdfTUFYKTtcXG5AQCAtNzYyLDcgKzc5NCw2IEBAIHN0cnVjdCBydGw4MTY5X3ByaXZhdGUge1xcbiBcXHR1bnNpZ25lZCBzdXBwb3J0c19nbWlpOjE7XFxuIFxcdHVuc2lnbmVkIGFzcG1fbWFuYWdlYWJsZToxO1xcbiBcXHR1bnNpZ25lZCBkYXNoX2VuYWJsZWQ6MTtcXG4tXFx0Ym9vbCBzZnBfbW9kZToxO1xcbiBcXHRkbWFfYWRkcl90IGNvdW50ZXJzX3BoeXNfYWRkcjtcXG4gXFx0c3RydWN0IHJ0bDgxNjlfY291bnRlcnMgKmNvdW50ZXJzO1xcbiBcXHRzdHJ1Y3QgcnRsODE2OV90Y19vZmZzZXRzIHRjX29mZnNldDtcXG5AQCAtNzc0LDYgKzgwNSwxMSBAQCBzdHJ1Y3QgcnRsODE2OV9wcml2YXRlIHtcXG4gXFx0c3RydWN0IHI4MTY5X2xlZF9jbGFzc2RldiAqbGVkcztcXG4gXFxuIFxcdHUzMiBvY3BfYmFzZTtcXG4rXFx0c3RydWN0IHBoeWxpbmsgKnBoeWxpbms7XFxuK1xcdHN0cnVjdCBwaHlsaW5rX2NvbmZpZyBwaHlsaW5rX2NvbmZpZztcXG4rXFx0c3RydWN0IHBoeWxpbmtfcGNzIHBjcztcXG4rXFx0c3RydWN0IGV0aHRvb2xfcGF1c2VwYXJhbSBzYXZlZF9wYXVzZTtcXG4rXFx0Ym9vbCBqdW1ib19wYXVzZV9zYXZlZDtcXG4gfTtcXG4gXFxuIHR5cGVkZWYgdm9pZCAoKnJ0bF9nZW5lcmljX2ZjdCkoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApO1xcbkBAIC0xMTI4LDEwICsxMTY0LDYgQEAgc3RhdGljIGludCByODE2OF9waHlfb2NwX3JlYWQoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIHUzMiByZWcpXFxuIFxcdGlmIChydGxfb2NwX3JlZ19mYWlsdXJlKHJlZykpXFxuIFxcdFxcdHJldHVybiAwO1xcbiBcXG4tXFx0LyogUmV0dXJuIGR1bW15IE1JSV9QSFlTSUQyIGluIFNGUCBtb2RlIHRvIG1hdGNoIFNGUCBQSFkgZHJpdmVyICovXFxuLVxcdGlmICh0cC1cXHUwMDNlc2ZwX21vZGUgXFx1MDAyNlxcdTAwMjYgcmVnID09IChPQ1BfU1REX1BIWV9CQVNFICsgMiAqIE1JSV9QSFlTSUQyKSlcXG4tXFx0XFx0cmV0dXJuIFBIWV9JRF9SVExfRFVNTVlfU0ZQIFxcdTAwMjYgMHhmZmZmO1xcbi1cXG4gXFx0UlRMX1czMih0cCwgR1BIWV9PQ1AsIHJlZyBcXHUwMDNjXFx1MDAzYyAxNSk7XFxuIFxcbiBcXHRyZXR1cm4gcnRsX2xvb3Bfd2FpdF9oaWdoKHRwLCBcXHUwMDI2cnRsX29jcF9ncGh5X2NvbmQsIDI1LCAxMCkgP1xcbkBAIC0xMTk5LDYgKzEyMzEsNjcgQEAgc3RhdGljIHZvaWQgcjgxMjdfc2ZwX3Nkc19waHlfcmVzZXQoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXFxuIFxcdHVzbGVlcF9yYW5nZSgxMCwgMjApO1xcbiB9XFxuIFxcbitERUNMQVJFX1JUTF9DT05EKHI4MTI3X3Nkc19jbWRfY29uZClcXG4re1xcbitcXHRyZXR1cm4gUlRMX1IxNih0cCwgUjgxMjdfU0RTX0NNRCkgXFx1MDAyNiBSODEyN19TRFNfQ01EX0VYRUM7XFxuK31cXG4rXFxuK3N0YXRpYyB1MTYgcjgxMjdfc2RzX3JlYWQoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIHUxNiBpbmRleCwgdTE2IHBhZ2UsIHUxNiByZWcpXFxuK3tcXG4rXFx0dTE2IGFkZHIgPSAoaW5kZXggXFx1MDAzY1xcdTAwM2MgMTEpIHwgKHBhZ2UgXFx1MDAzY1xcdTAwM2MgNSkgfCByZWc7XFxuK1xcbitcXHRSVExfVzE2KHRwLCBSODEyN19TRFNfQUREUiwgYWRkcik7XFxuK1xcdFJUTF9XMTYodHAsIFI4MTI3X1NEU19DTUQsIFI4MTI3X1NEU19DTURfRVhFQyk7XFxuK1xcbitcXHRpZiAocnRsX2xvb3Bfd2FpdF9sb3codHAsIFxcdTAwMjZyODEyN19zZHNfY21kX2NvbmQsIDEwLCAxMDApKVxcbitcXHRcXHRyZXR1cm4gUlRMX1IxNih0cCwgUjgxMjdfU0RTX0RBVEFfT1VUKTtcXG4rXFxuK1xcdHJldHVybiAweGZmZmY7XFxuK31cXG4rXFxuK3N0YXRpYyB2b2lkIHI4MTI3X3Nkc193cml0ZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgdTE2IGluZGV4LCB1MTYgcGFnZSxcXG4rXFx0XFx0XFx0ICAgIHUxNiByZWcsIHUxNiB2YWwpXFxuK3tcXG4rXFx0dTE2IGFkZHIgPSAoaW5kZXggXFx1MDAzY1xcdTAwM2MgMTEpIHwgKHBhZ2UgXFx1MDAzY1xcdTAwM2MgNSkgfCByZWc7XFxuK1xcbitcXHRSVExfVzE2KHRwLCBSODEyN19TRFNfREFUQV9JTiwgdmFsKTtcXG4rXFx0UlRMX1cxNih0cCwgUjgxMjdfU0RTX0FERFIsIGFkZHIpO1xcbitcXHRSVExfVzE2KHRwLCBSODEyN19TRFNfQ01ELCBSODEyN19TRFNfQ01EX0VYRUMgfCBSODEyN19TRFNfQ01EX1dFKTtcXG4rXFxuK1xcdHJ0bF9sb29wX3dhaXRfbG93KHRwLCBcXHUwMDI2cjgxMjdfc2RzX2NtZF9jb25kLCAxMCwgMTAwKTtcXG4rfVxcbitcXG4rc3RhdGljIHZvaWQgcjgxMjdfc2RzX21vZGlmeShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgdTE2IGluZGV4LCB1MTYgcGFnZSxcXG4rXFx0XFx0XFx0ICAgICB1MTYgcmVnLCB1MTYgY2xlYXJtYXNrLCB1MTYgc2V0bWFzaylcXG4re1xcbitcXHR1MTYgdmFsID0gcjgxMjdfc2RzX3JlYWQodHAsIGluZGV4LCBwYWdlLCByZWcpO1xcbitcXG4rXFx0dmFsID0gKHZhbCBcXHUwMDI2IH5jbGVhcm1hc2spIHwgc2V0bWFzaztcXG4rXFx0cjgxMjdfc2RzX3dyaXRlKHRwLCBpbmRleCwgcGFnZSwgcmVnLCB2YWwpO1xcbit9XFxuK1xcbitzdGF0aWMgdm9pZCByODEyN19zZnBfaW5pdF8xZyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcXG4re1xcbitcXHRpbnQgdmFsO1xcbitcXG4rXFx0cjgxMjdfc2ZwX3Nkc19waHlfcmVzZXQodHApO1xcbitcXG4rXFx0cjgxMjdfc2RzX21vZGlmeSh0cCwgMCwgMSwgMzEsIDAsIEJJVCgzKSk7XFxuK1xcdHI4MTI3X3Nkc19tb2RpZnkodHAsIDAsIDIsICAwLCBCSVQoMTMpIHwgQklUKDEyKSB8IEJJVCg2KSwgQklUKDEyKSB8IEJJVCg2KSk7XFxuK1xcdHI4MTI3X3Nkc19tb2RpZnkodHAsIDAsIDAsICA0LCAwLCBCSVQoMikpO1xcbitcXG4rXFx0UlRMX1cxNih0cCwgMHgyMzNhLCAweDgwMDQpO1xcbitcXHRSVExfVzE2KHRwLCAweDIzM2UsIChSVExfUjE2KHRwLCAweDIzM2UpIFxcdTAwMjYgfjB4MzAwMykgfCAweDAwMDIpO1xcbitcXG4rXFx0cjgxNjhfcGh5X29jcF93cml0ZSh0cCwgMHhjNDBhLCAweDAwMDApO1xcbitcXHRyODE2OF9waHlfb2NwX3dyaXRlKHRwLCAweGM0NjYsIDB4MDAwMCk7XFxuK1xcdHI4MTY4X3BoeV9vY3Bfd3JpdGUodHAsIDB4YzgwOCwgMHgwMDAwKTtcXG4rXFx0cjgxNjhfcGh5X29jcF93cml0ZSh0cCwgMHhjODBhLCAweDAwMDApO1xcbitcXG4rXFx0dmFsID0gcjgxNjhfcGh5X29jcF9yZWFkKHRwLCAweGM4MDQpO1xcbitcXHRyODE2OF9waHlfb2NwX3dyaXRlKHRwLCAweGM4MDQsICh2YWwgXFx1MDAyNiB+MHgwMDBmKSB8IDB4MDAwYyk7XFxuK31cXG4rXFxuIHN0YXRpYyB2b2lkIHI4MTI3X3NmcF9pbml0XzEwZyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcXG4ge1xcbiBcXHRpbnQgdmFsO1xcbkBAIC0xMjE3LDEyICsxMzEwLDYgQEAgc3RhdGljIHZvaWQgcjgxMjdfc2ZwX2luaXRfMTBnKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxcbiBcXHRyODE2OF9waHlfb2NwX3dyaXRlKHRwLCAweGM4MDQsICh2YWwgXFx1MDAyNiB+MHgwMDBmKSB8IDB4MDAwYyk7XFxuIH1cXG4gXFxuLXN0YXRpYyB2b2lkIHJ0bF9zZnBfaW5pdChzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcXG4te1xcbi1cXHRpZiAodHAtXFx1MDAzZW1hY192ZXJzaW9uID09IFJUTF9HSUdBX01BQ19WRVJfODApXFxuLVxcdFxcdHI4MTI3X3NmcF9pbml0XzEwZyh0cCk7XFxuLX1cXG4tXFxuIHN0YXRpYyB2b2lkIHJ0bF9zZnBfcmVzZXQoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXFxuIHtcXG4gXFx0aWYgKHRwLVxcdTAwM2VtYWNfdmVyc2lvbiA9PSBSVExfR0lHQV9NQUNfVkVSXzgwKVxcbkBAIC0xMjgzLDYgKzEzNzAsMTUgQEAgc3RhdGljIHZvaWQgbWFjX21jdV93cml0ZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgaW50IHJlZywgaW50IHZhbHVlKVxcbiBcXHRyODE2OF9tYWNfb2NwX3dyaXRlKHRwLCB0cC1cXHUwMDNlb2NwX2Jhc2UgKyByZWcsIHZhbHVlKTtcXG4gfVxcbiBcXG4rc3RhdGljIGJvb2wgcnRsX2lzXzgxMTZhZihzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcXG4re1xcbitcXHRyZXR1cm4gdHAtXFx1MDAzZW1hY192ZXJzaW9uID09IFJUTF9HSUdBX01BQ19WRVJfNTIgXFx1MDAyNlxcdTAwMjZcXG4rXFx0XFx0KHI4MTY4X21hY19vY3BfcmVhZCh0cCwgUlRMX1BLR19ERVRFQ1QpIFxcdTAwMjYgUlRMX1BLR19ERVRFQ1RfTUFTSykgPT1cXG4rXFx0XFx0UlRMX1BLR19ERVRFQ1RfODExNkFGIFxcdTAwMjZcXHUwMDI2XFxuK1xcdFxcdChyODE2OF9tYWNfb2NwX3JlYWQodHAsIFJUTF9JTlRfSFdfSUQpIFxcdTAwMjYgUlRMX0lOVF9IV19JRF9NQVNLKSA9PVxcbitcXHRcXHRSVExfSU5UX0hXX0lEXzgxMTZBRjtcXG4rfVxcbitcXG4gc3RhdGljIGludCBtYWNfbWN1X3JlYWQoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIGludCByZWcpXFxuIHtcXG4gXFx0cmV0dXJuIHI4MTY4X21hY19vY3BfcmVhZCh0cCwgdHAtXFx1MDAzZW9jcF9iYXNlICsgcmVnKTtcXG5AQCAtMTU3OCw2ICsxNjc0LDIwIEBAIHN0YXRpYyBib29sIHJ0bF9kYXNoX2lzX2VuYWJsZWQoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXFxuIFxcdH1cXG4gfVxcbiBcXG4rc3RhdGljIGVudW0gcnRsX3NmcF9tb2RlIHJ0bF9nZXRfc2ZwX21vZGUoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXFxuK3tcXG4rXFx0aWYgKHJ0bF9pc184MTI1KHRwKSkge1xcbitcXHRcXHR1MTYgZGF0YSA9IHI4MTY4X21hY19vY3BfcmVhZCh0cCwgUlRMX0lOVF9IV19JRCk7XFxuK1xcbitcXHRcXHRpZiAoKGRhdGEgXFx1MDAyNiAweGZmKSA9PSAweDA3KVxcbitcXHRcXHRcXHRyZXR1cm4gUlRMX1NGUF84MTI3X0FURjtcXG4rXFx0fSBlbHNlIGlmIChydGxfaXNfODExNmFmKHRwKSkge1xcbitcXHRcXHRyZXR1cm4gUlRMX1NGUF84MTY4X0FGO1xcbitcXHR9XFxuK1xcbitcXHRyZXR1cm4gUlRMX1NGUF9OT05FO1xcbit9XFxuK1xcbiBzdGF0aWMgZW51bSBydGxfZGFzaF90eXBlIHJ0bF9nZXRfZGFzaF90eXBlKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxcbiB7XFxuIFxcdHN3aXRjaCAodHAtXFx1MDAzZW1hY192ZXJzaW9uKSB7XFxuQEAgLTE2NzMsMTYgKzE3ODMsMTQgQEAgc3RhdGljIHZvaWQgcnRsODE2OV9pcnFfbWFza19hbmRfYWNrKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxcbiBcXHRydGxfcGNpX2NvbW1pdCh0cCk7XFxuIH1cXG4gXFxuLXN0YXRpYyB2b2lkIHJ0bF9saW5rX2NoZ19wYXRjaChzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcXG4rc3RhdGljIHZvaWQgcnRsX2xpbmtfY2hnX3BhdGNoKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCBpbnQgc3BlZWQpXFxuIHtcXG4tXFx0c3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiA9IHRwLVxcdTAwM2VwaHlkZXY7XFxuLVxcbiBcXHRpZiAodHAtXFx1MDAzZW1hY192ZXJzaW9uID09IFJUTF9HSUdBX01BQ19WRVJfMzQgfHxcXG4gXFx0ICAgIHRwLVxcdTAwM2VtYWNfdmVyc2lvbiA9PSBSVExfR0lHQV9NQUNfVkVSXzM4KSB7XFxuLVxcdFxcdGlmIChwaHlkZXYtXFx1MDAzZXNwZWVkID09IFNQRUVEXzEwMDApIHtcXG4rXFx0XFx0aWYgKHNwZWVkID09IFNQRUVEXzEwMDApIHtcXG4gXFx0XFx0XFx0cnRsX2VyaV93cml0ZSh0cCwgMHgxYmMsIEVSSUFSX01BU0tfMTExMSwgMHgwMDAwMDAxMSk7XFxuIFxcdFxcdFxcdHJ0bF9lcmlfd3JpdGUodHAsIDB4MWRjLCBFUklBUl9NQVNLXzExMTEsIDB4MDAwMDAwMDUpO1xcbi1cXHRcXHR9IGVsc2UgaWYgKHBoeWRldi1cXHUwMDNlc3BlZWQgPT0gU1BFRURfMTAwKSB7XFxuK1xcdFxcdH0gZWxzZSBpZiAoc3BlZWQgPT0gU1BFRURfMTAwKSB7XFxuIFxcdFxcdFxcdHJ0bF9lcmlfd3JpdGUodHAsIDB4MWJjLCBFUklBUl9NQVNLXzExMTEsIDB4MDAwMDAwMWYpO1xcbiBcXHRcXHRcXHRydGxfZXJpX3dyaXRlKHRwLCAweDFkYywgRVJJQVJfTUFTS18xMTExLCAweDAwMDAwMDA1KTtcXG4gXFx0XFx0fSBlbHNlIHtcXG5AQCAtMTY5Miw3ICsxODAwLDcgQEAgc3RhdGljIHZvaWQgcnRsX2xpbmtfY2hnX3BhdGNoKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxcbiBcXHRcXHRydGxfcmVzZXRfcGFja2V0X2ZpbHRlcih0cCk7XFxuIFxcdH0gZWxzZSBpZiAodHAtXFx1MDAzZW1hY192ZXJzaW9uID09IFJUTF9HSUdBX01BQ19WRVJfMzUgfHxcXG4gXFx0XFx0ICAgdHAtXFx1MDAzZW1hY192ZXJzaW9uID09IFJUTF9HSUdBX01BQ19WRVJfMzYpIHtcXG4tXFx0XFx0aWYgKHBoeWRldi1cXHUwMDNlc3BlZWQgPT0gU1BFRURfMTAwMCkge1xcbitcXHRcXHRpZiAoc3BlZWQgPT0gU1BFRURfMTAwMCkge1xcbiBcXHRcXHRcXHRydGxfZXJpX3dyaXRlKHRwLCAweDFiYywgRVJJQVJfTUFTS18xMTExLCAweDAwMDAwMDExKTtcXG4gXFx0XFx0XFx0cnRsX2VyaV93cml0ZSh0cCwgMHgxZGMsIEVSSUFSX01BU0tfMTExMSwgMHgwMDAwMDAwNSk7XFxuIFxcdFxcdH0gZWxzZSB7XFxuQEAgLTE3MDAsNyArMTgwOCw3IEBAIHN0YXRpYyB2b2lkIHJ0bF9saW5rX2NoZ19wYXRjaChzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcXG4gXFx0XFx0XFx0cnRsX2VyaV93cml0ZSh0cCwgMHgxZGMsIEVSSUFSX01BU0tfMTExMSwgMHgwMDAwMDAzZik7XFxuIFxcdFxcdH1cXG4gXFx0fSBlbHNlIGlmICh0cC1cXHUwMDNlbWFjX3ZlcnNpb24gPT0gUlRMX0dJR0FfTUFDX1ZFUl8zNykge1xcbi1cXHRcXHRpZiAocGh5ZGV2LVxcdTAwM2VzcGVlZCA9PSBTUEVFRF8xMCkge1xcbitcXHRcXHRpZiAoc3BlZWQgPT0gU1BFRURfMTApIHtcXG4gXFx0XFx0XFx0cnRsX2VyaV93cml0ZSh0cCwgMHgxZDAsIEVSSUFSX01BU0tfMDAxMSwgMHg0ZDAyKTtcXG4gXFx0XFx0XFx0cnRsX2VyaV93cml0ZSh0cCwgMHgxZGMsIEVSSUFSX01BU0tfMDAxMSwgMHgwMDYwYSk7XFxuIFxcdFxcdH0gZWxzZSB7XFxuQEAgLTIwNzQsMTEgKzIxODIsMTEgQEAgcnRsX2NvYWxlc2NlX2luZm8oc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXFxuIFxcdFxcdGNpID0gcnRsX2NvYWxlc2NlX2luZm9fODE2OF84MTM2O1xcbiBcXG4gXFx0LyogaWYgc3BlZWQgaXMgdW5rbm93biBhc3N1bWUgaGlnaGVzdCBvbmUgKi9cXG4tXFx0aWYgKHRwLVxcdTAwM2VwaHlkZXYtXFx1MDAzZXNwZWVkID09IFNQRUVEX1VOS05PV04pXFxuK1xcdGlmICh0cC1cXHUwMDNlc3BlZWQgPT0gU1BFRURfVU5LTk9XTilcXG4gXFx0XFx0cmV0dXJuIGNpO1xcbiBcXG4gXFx0Zm9yICg7IGNpLVxcdTAwM2VzcGVlZDsgY2krKykge1xcbi1cXHRcXHRpZiAodHAtXFx1MDAzZXBoeWRldi1cXHUwMDNlc3BlZWQgPT0gY2ktXFx1MDAzZXNwZWVkKVxcbitcXHRcXHRpZiAodHAtXFx1MDAzZXNwZWVkID09IGNpLVxcdTAwM2VzcGVlZClcXG4gXFx0XFx0XFx0cmV0dXJuIGNpO1xcbiBcXHR9XFxuIFxcbkBAIC0yMjM2LDcgKzIzNDQsNyBAQCBzdGF0aWMgdm9pZCBydGxfc2V0X2VlZV90eGlkbGVfdGltZXIoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXFxuIFxcbiBzdGF0aWMgdW5zaWduZWQgaW50IHI4MTY5X2dldF90eF9scGlfdGltZXJfdXMoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXFxuIHtcXG4tXFx0dW5zaWduZWQgaW50IHNwZWVkID0gdHAtXFx1MDAzZXBoeWRldi1cXHUwMDNlc3BlZWQ7XFxuK1xcdHVuc2lnbmVkIGludCBzcGVlZCA9IHRwLVxcdTAwM2VzcGVlZDtcXG4gXFx0dW5zaWduZWQgaW50IHRpbWVyID0gdHAtXFx1MDAzZXR4X2xwaV90aW1lcjtcXG4gXFxuIFxcdGlmICghdGltZXIgfHwgc3BlZWQgPT0gU1BFRURfVU5LTk9XTilcXG5AQCAtMjI1NCw3ICsyMzYyLDcgQEAgc3RhdGljIGludCBydGw4MTY5X2dldF9lZWUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IGV0aHRvb2xfa2VlZSAqZGF0YSlcXG4gXFx0aWYgKCFydGxfc3VwcG9ydHNfZWVlKHRwKSlcXG4gXFx0XFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xcbiBcXG4tXFx0cmV0ID0gcGh5X2V0aHRvb2xfZ2V0X2VlZSh0cC1cXHUwMDNlcGh5ZGV2LCBkYXRhKTtcXG4rXFx0cmV0ID0gcGh5bGlua19ldGh0b29sX2dldF9lZWUodHAtXFx1MDAzZXBoeWxpbmssIGRhdGEpO1xcbiBcXHRpZiAocmV0KVxcbiBcXHRcXHRyZXR1cm4gcmV0O1xcbiBcXG5AQCAtMjI3MCw3ICsyMzc4LDcgQEAgc3RhdGljIGludCBydGw4MTY5X3NldF9lZWUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IGV0aHRvb2xfa2VlZSAqZGF0YSlcXG4gXFx0aWYgKCFydGxfc3VwcG9ydHNfZWVlKHRwKSlcXG4gXFx0XFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xcbiBcXG4tXFx0cmV0dXJuIHBoeV9ldGh0b29sX3NldF9lZWUodHAtXFx1MDAzZXBoeWRldiwgZGF0YSk7XFxuK1xcdHJldHVybiBwaHlsaW5rX2V0aHRvb2xfc2V0X2VlZSh0cC1cXHUwMDNlcGh5bGluaywgZGF0YSk7XFxuIH1cXG4gXFxuIHN0YXRpYyB2b2lkIHJ0bDgxNjlfZ2V0X3JpbmdwYXJhbShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbkBAIC0yMzAxLDEzICsyNDA5LDggQEAgc3RhdGljIHZvaWQgcnRsODE2OV9nZXRfcGF1c2VwYXJhbShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbiBcXHRcXHRcXHRcXHQgICBzdHJ1Y3QgZXRodG9vbF9wYXVzZXBhcmFtICpkYXRhKVxcbiB7XFxuIFxcdHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwID0gbmV0ZGV2X3ByaXYoZGV2KTtcXG4tXFx0Ym9vbCB0eF9wYXVzZSwgcnhfcGF1c2U7XFxuIFxcbi1cXHRwaHlfZ2V0X3BhdXNlKHRwLVxcdTAwM2VwaHlkZXYsIFxcdTAwMjZ0eF9wYXVzZSwgXFx1MDAyNnJ4X3BhdXNlKTtcXG4tXFxuLVxcdGRhdGEtXFx1MDAzZWF1dG9uZWcgPSB0cC1cXHUwMDNlcGh5ZGV2LVxcdTAwM2VhdXRvbmVnO1xcbi1cXHRkYXRhLVxcdTAwM2V0eF9wYXVzZSA9IHR4X3BhdXNlID8gMSA6IDA7XFxuLVxcdGRhdGEtXFx1MDAzZXJ4X3BhdXNlID0gcnhfcGF1c2UgPyAxIDogMDtcXG4rXFx0cGh5bGlua19ldGh0b29sX2dldF9wYXVzZXBhcmFtKHRwLVxcdTAwM2VwaHlsaW5rLCBkYXRhKTtcXG4gfVxcbiBcXG4gc3RhdGljIGludCBydGw4MTY5X3NldF9wYXVzZXBhcmFtKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuQEAgLTIzMTgsOSArMjQyMSw3IEBAIHN0YXRpYyBpbnQgcnRsODE2OV9zZXRfcGF1c2VwYXJhbShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbiBcXHRpZiAoZGV2LVxcdTAwM2VtdHUgXFx1MDAzZSBFVEhfREFUQV9MRU4pXFxuIFxcdFxcdHJldHVybiAtRU9QTk9UU1VQUDtcXG4gXFxuLVxcdHBoeV9zZXRfYXN5bV9wYXVzZSh0cC1cXHUwMDNlcGh5ZGV2LCBkYXRhLVxcdTAwM2VyeF9wYXVzZSwgZGF0YS1cXHUwMDNldHhfcGF1c2UpO1xcbi1cXG4tXFx0cmV0dXJuIDA7XFxuK1xcdHJldHVybiBwaHlsaW5rX2V0aHRvb2xfc2V0X3BhdXNlcGFyYW0odHAtXFx1MDAzZXBoeWxpbmssIGRhdGEpO1xcbiB9XFxuIFxcbiBzdGF0aWMgdm9pZCBydGw4MTY5X2dldF9ldGhfbWFjX3N0YXRzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuQEAgLTIzODYsMzQgKzI0ODcsMjcgQEAgc3RhdGljIHZvaWQgcnRsODE2OV9nZXRfZXRoX2N0cmxfc3RhdHMoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4gXFx0XFx0bGUzMl90b19jcHUodHAtXFx1MDAzZWNvdW50ZXJzLVxcdTAwM2VyeF91bmtub3duX29wY29kZSk7XFxuIH1cXG4gXFxuLXN0YXRpYyBpbnQgcnRsODE2OV9zZXRfbGlua19rc2V0dGluZ3Moc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXFxuLVxcdFxcdFxcdFxcdCAgICAgIGNvbnN0IHN0cnVjdCBldGh0b29sX2xpbmtfa3NldHRpbmdzICpjbWQpXFxuK3N0YXRpYyBpbnQgcnRsODE2OV9nZXRfbGlua19rc2V0dGluZ3Moc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXFxuK1xcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBldGh0b29sX2xpbmtfa3NldHRpbmdzICpjbWQpXFxuIHtcXG4gXFx0c3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAgPSBuZXRkZXZfcHJpdihuZGV2KTtcXG4tXFx0c3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiA9IHRwLVxcdTAwM2VwaHlkZXY7XFxuLVxcdGludCBkdXBsZXggPSBjbWQtXFx1MDAzZWJhc2UuZHVwbGV4O1xcbi1cXHRpbnQgc3BlZWQgPSBjbWQtXFx1MDAzZWJhc2Uuc3BlZWQ7XFxuLVxcbi1cXHRpZiAoIXRwLVxcdTAwM2VzZnBfbW9kZSlcXG4tXFx0XFx0cmV0dXJuIHBoeV9ldGh0b29sX2tzZXR0aW5nc19zZXQocGh5ZGV2LCBjbWQpO1xcbi1cXG4tXFx0aWYgKGNtZC1cXHUwMDNlYmFzZS5hdXRvbmVnICE9IEFVVE9ORUdfRElTQUJMRSlcXG4tXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIFxcbi1cXHRpZiAoIXBoeV9jaGVja192YWxpZChzcGVlZCwgZHVwbGV4LCBwaHlkZXYtXFx1MDAzZXN1cHBvcnRlZCkpXFxuLVxcdFxcdHJldHVybiAtRUlOVkFMO1xcbi1cXG4tXFx0bXV0ZXhfbG9jayhcXHUwMDI2cGh5ZGV2LVxcdTAwM2Vsb2NrKTtcXG4rXFx0cmV0dXJuIHBoeWxpbmtfZXRodG9vbF9rc2V0dGluZ3NfZ2V0KHRwLVxcdTAwM2VwaHlsaW5rLCBjbWQpO1xcbit9XFxuIFxcbi1cXHRwaHlkZXYtXFx1MDAzZWF1dG9uZWcgPSBBVVRPTkVHX0RJU0FCTEU7XFxuLVxcdHBoeWRldi1cXHUwMDNlc3BlZWQgPSBzcGVlZDtcXG4tXFx0cGh5ZGV2LVxcdTAwM2VkdXBsZXggPSBkdXBsZXg7XFxuK3N0YXRpYyBpbnQgcnRsODE2OV9zZXRfbGlua19rc2V0dGluZ3Moc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXFxuK1xcdFxcdFxcdFxcdCAgICAgIGNvbnN0IHN0cnVjdCBldGh0b29sX2xpbmtfa3NldHRpbmdzICpjbWQpXFxuK3tcXG4rXFx0c3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAgPSBuZXRkZXZfcHJpdihuZGV2KTtcXG4gXFxuLVxcdHJ0bF9zZnBfaW5pdCh0cCk7XFxuK1xcdHJldHVybiBwaHlsaW5rX2V0aHRvb2xfa3NldHRpbmdzX3NldCh0cC1cXHUwMDNlcGh5bGluaywgY21kKTtcXG4rfVxcbiBcXG4tXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZwaHlkZXYtXFx1MDAzZWxvY2spO1xcbitzdGF0aWMgaW50IHJ0bDgxNjlfbndheV9yZXNldChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbit7XFxuK1xcdHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwID0gbmV0ZGV2X3ByaXYoZGV2KTtcXG4gXFxuLVxcdHJldHVybiAwO1xcbitcXHRyZXR1cm4gcGh5bGlua19ldGh0b29sX253YXlfcmVzZXQodHAtXFx1MDAzZXBoeWxpbmspO1xcbiB9XFxuIFxcbiBzdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIHJ0bDgxNjlfZXRodG9vbF9vcHMgPSB7XFxuQEAgLTI0MzEsMTAgKzI1MjUsMTAgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBydGw4MTY5X2V0aHRvb2xfb3BzID0ge1xcbiBcXHQuZ2V0X3NzZXRfY291bnRcXHRcXHQ9IHJ0bDgxNjlfZ2V0X3NzZXRfY291bnQsXFxuIFxcdC5nZXRfZXRodG9vbF9zdGF0c1xcdD0gcnRsODE2OV9nZXRfZXRodG9vbF9zdGF0cyxcXG4gXFx0LmdldF90c19pbmZvXFx0XFx0PSBldGh0b29sX29wX2dldF90c19pbmZvLFxcbi1cXHQubndheV9yZXNldFxcdFxcdD0gcGh5X2V0aHRvb2xfbndheV9yZXNldCxcXG4rXFx0Lm53YXlfcmVzZXRcXHRcXHQ9IHJ0bDgxNjlfbndheV9yZXNldCxcXG4gXFx0LmdldF9lZWVcXHRcXHQ9IHJ0bDgxNjlfZ2V0X2VlZSxcXG4gXFx0LnNldF9lZWVcXHRcXHQ9IHJ0bDgxNjlfc2V0X2VlZSxcXG4tXFx0LmdldF9saW5rX2tzZXR0aW5nc1xcdD0gcGh5X2V0aHRvb2xfZ2V0X2xpbmtfa3NldHRpbmdzLFxcbitcXHQuZ2V0X2xpbmtfa3NldHRpbmdzXFx0PSBydGw4MTY5X2dldF9saW5rX2tzZXR0aW5ncyxcXG4gXFx0LnNldF9saW5rX2tzZXR0aW5nc1xcdD0gcnRsODE2OV9zZXRfbGlua19rc2V0dGluZ3MsXFxuIFxcdC5nZXRfcmluZ3BhcmFtXFx0XFx0PSBydGw4MTY5X2dldF9yaW5ncGFyYW0sXFxuIFxcdC5nZXRfcGF1c2Vfc3RhdHNcXHQ9IHJ0bDgxNjlfZ2V0X3BhdXNlX3N0YXRzLFxcbkBAIC0yNDk5LDkgKzI1OTMsMTAgQEAgdm9pZCByODE2OV9hcHBseV9maXJtd2FyZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcXG4gXFx0XFx0dHAtXFx1MDAzZW9jcF9iYXNlID0gT0NQX1NURF9QSFlfQkFTRTtcXG4gXFxuIFxcdFxcdC8qIFBIWSBzb2Z0IHJlc2V0IG1heSBzdGlsbCBiZSBpbiBwcm9ncmVzcyAqL1xcbi1cXHRcXHRwaHlfcmVhZF9wb2xsX3RpbWVvdXQodHAtXFx1MDAzZXBoeWRldiwgTUlJX0JNQ1IsIHZhbCxcXG4tXFx0XFx0XFx0XFx0ICAgICAgISh2YWwgXFx1MDAyNiBCTUNSX1JFU0VUKSxcXG4tXFx0XFx0XFx0XFx0ICAgICAgNTAwMDAsIDYwMDAwMCwgdHJ1ZSk7XFxuK1xcdFxcdGlmICh0cC1cXHUwMDNlcGh5ZGV2KVxcbitcXHRcXHRcXHRwaHlfcmVhZF9wb2xsX3RpbWVvdXQodHAtXFx1MDAzZXBoeWRldiwgTUlJX0JNQ1IsIHZhbCxcXG4rXFx0XFx0XFx0XFx0XFx0ICAgICAgISh2YWwgXFx1MDAyNiBCTUNSX1JFU0VUKSxcXG4rXFx0XFx0XFx0XFx0XFx0ICAgICAgNTAwMDAsIDYwMDAwMCwgdHJ1ZSk7XFxuIFxcdH1cXG4gfVxcbiBcXG5AQCAtMjUzOCw2ICsyNjMzLDggQEAgc3RhdGljIHZvaWQgcnRsX3NjaGVkdWxlX3Rhc2soc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIGVudW0gcnRsX2ZsYWcgZmxhZylcXG4gXFxuIHN0YXRpYyB2b2lkIHJ0bDgxNjlfaW5pdF9waHkoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXFxuIHtcXG4rXFx0cGh5X2luaXRfaHcodHAtXFx1MDAzZXBoeWRldik7XFxuK1xcdHBoeV9yZXN1bWUodHAtXFx1MDAzZXBoeWRldik7XFxuIFxcdHI4MTY5X2h3X3BoeV9jb25maWcodHAsIHRwLVxcdTAwM2VwaHlkZXYsIHRwLVxcdTAwM2VtYWNfdmVyc2lvbik7XFxuIFxcbiBcXHRpZiAodHAtXFx1MDAzZW1hY192ZXJzaW9uIFxcdTAwM2M9IFJUTF9HSUdBX01BQ19WRVJfMDYpIHtcXG5AQCAtMjU1Miw5ICsyNjQ5LDYgQEAgc3RhdGljIHZvaWQgcnRsODE2OV9pbml0X3BoeShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcXG4gXFx0ICAgIHRwLVxcdTAwM2VwY2lfZGV2LVxcdTAwM2VzdWJzeXN0ZW1fZGV2aWNlID09IDB4ZTAwMClcXG4gXFx0XFx0cGh5X3dyaXRlX3BhZ2VkKHRwLVxcdTAwM2VwaHlkZXYsIDB4MDAwMSwgMHgxMCwgMHhmMDFiKTtcXG4gXFxuLVxcdGlmICh0cC1cXHUwMDNlc2ZwX21vZGUpXFxuLVxcdFxcdHJ0bF9zZnBfaW5pdCh0cCk7XFxuLVxcbiBcXHQvKiBXZSBtYXkgaGF2ZSBjYWxsZWQgcGh5X3NwZWVkX2Rvd24gYmVmb3JlICovXFxuIFxcdHBoeV9zcGVlZF91cCh0cC1cXHUwMDNlcGh5ZGV2KTtcXG4gXFxuQEAgLTI2NTcsMTUgKzI3NTEsNiBAQCBzdGF0aWMgdm9pZCBydGxfanVtYm9fY29uZmlnKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxcbiBcXG4gXFx0aWYgKHBjaV9pc19wY2llKHRwLVxcdTAwM2VwY2lfZGV2KSBcXHUwMDI2XFx1MDAyNiB0cC1cXHUwMDNlc3VwcG9ydHNfZ21paSlcXG4gXFx0XFx0cGNpZV9zZXRfcmVhZHJxKHRwLVxcdTAwM2VwY2lfZGV2LCByZWFkcnEpO1xcbi1cXG4tXFx0LyogQ2hpcCBkb2Vzbid0IHN1cHBvcnQgcGF1c2UgaW4ganVtYm8gbW9kZSAqL1xcbi1cXHRpZiAoanVtYm8pIHtcXG4tXFx0XFx0bGlua21vZGVfY2xlYXJfYml0KEVUSFRPT0xfTElOS19NT0RFX1BhdXNlX0JJVCxcXG4tXFx0XFx0XFx0XFx0ICAgdHAtXFx1MDAzZXBoeWRldi1cXHUwMDNlYWR2ZXJ0aXNpbmcpO1xcbi1cXHRcXHRsaW5rbW9kZV9jbGVhcl9iaXQoRVRIVE9PTF9MSU5LX01PREVfQXN5bV9QYXVzZV9CSVQsXFxuLVxcdFxcdFxcdFxcdCAgIHRwLVxcdTAwM2VwaHlkZXYtXFx1MDAzZWFkdmVydGlzaW5nKTtcXG4tXFx0XFx0cGh5X3N0YXJ0X2FuZWcodHAtXFx1MDAzZXBoeWRldik7XFxuLVxcdH1cXG4gfVxcbiBcXG4gREVDTEFSRV9SVExfQ09ORChydGxfY2hpcGNtZF9jb25kKVxcbkBAIC0yNzgwLDcgKzI4NjUsNyBAQCBzdGF0aWMgdm9pZCBydGxfcHJlcGFyZV9wb3dlcl9kb3duKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxcbiBcXHRcXHRydGxfZXBoeV93cml0ZSh0cCwgMHgxOSwgMHhmZjY0KTtcXG4gXFxuIFxcdGlmIChkZXZpY2VfbWF5X3dha2V1cCh0cF90b19kZXYodHApKSkge1xcbi1cXHRcXHRwaHlfc3BlZWRfZG93bih0cC1cXHUwMDNlcGh5ZGV2LCBmYWxzZSk7XFxuK1xcdFxcdHBoeWxpbmtfc3BlZWRfZG93bih0cC1cXHUwMDNlcGh5bGluaywgZmFsc2UpO1xcbiBcXHRcXHRydGxfd29sX2VuYWJsZV9yeCh0cCk7XFxuIFxcdH1cXG4gfVxcbkBAIC0yODMyLDYgKzI5MTcsMTYgQEAgc3RhdGljIHZvaWQgcnRsODE2OV9zZXRfbWFnaWNfcmVnKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxcbiBcXHRSVExfVzMyKHRwLCAweDdjLCB2YWwpO1xcbiB9XFxuIFxcbitzdGF0aWMgaW50IHJ0bDgxNjlfaW9jdGwoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IGlmcmVxICppZnIsIGludCBjbWQpXFxuK3tcXG4rXFx0c3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAgPSBuZXRkZXZfcHJpdihkZXYpO1xcbitcXG4rXFx0aWYgKCFuZXRpZl9ydW5uaW5nKGRldikpXFxuK1xcdFxcdHJldHVybiAtRU5PREVWO1xcbitcXG4rXFx0cmV0dXJuIHBoeWxpbmtfbWlpX2lvY3RsKHRwLVxcdTAwM2VwaHlsaW5rLCBpZnIsIGNtZCk7XFxuK31cXG4rXFxuIHN0YXRpYyB2b2lkIHJ0bF9zZXRfcnhfbW9kZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbiB7XFxuIFxcdHUzMiByeF9tb2RlID0gQWNjZXB0QnJvYWRjYXN0IHwgQWNjZXB0TXlQaHlzIHwgQWNjZXB0TXVsdGljYXN0O1xcbkBAIC0zMDk4LDggKzMxOTMsMjIgQEAgc3RhdGljIHZvaWQgcnRsX2VuYWJsZV9sdHIoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXFxuIFxcdFxcdHI4MTY4X21hY19vY3Bfd3JpdGUodHAsIDB4Y2RmMiwgMHg5MDAzKTtcXG4gXFx0XFx0cjgxNjhfbWFjX29jcF9tb2RpZnkodHAsIExUUl9PQkZGX0xPQ0ssIDB4MDAwMCwgTElOS19TUEVFRF9DSEFOR0VfRU4pO1xcbiBcXHRcXHRicmVhaztcXG4tXFx0Y2FzZSBSVExfR0lHQV9NQUNfVkVSXzQ2IC4uLiBSVExfR0lHQV9NQUNfVkVSXzQ4OlxcbiBcXHRjYXNlIFJUTF9HSUdBX01BQ19WRVJfNTI6XFxuK1xcdFxcdHI4MTY4X21hY19vY3Bfd3JpdGUodHAsIDB4Y2RkMCwgMHg5MDAzKTtcXG4rXFx0XFx0cjgxNjhfbWFjX29jcF9tb2RpZnkodHAsIExUUl9TTk9PUCwgMHgwMDAwLCBMVFJfU05PT1BfRU4pO1xcbitcXHRcXHRyODE2OF9tYWNfb2NwX3dyaXRlKHRwLCAweGUwMmMsIDB4MTg4MCk7XFxuK1xcdFxcdHI4MTY4X21hY19vY3Bfd3JpdGUodHAsIDB4ZTAyZSwgMHg0ODgwKTtcXG4rXFx0XFx0cjgxNjhfbWFjX29jcF9tb2RpZnkodHAsIEFMRFBTX0xUUiwgMHgwMDAwLCBBTERQU19MVFJfRU4pO1xcbitcXHRcXHRyODE2OF9tYWNfb2NwX3dyaXRlKHRwLCAweGNkZDgsIDB4OTAwMyk7XFxuK1xcdFxcdHI4MTY4X21hY19vY3Bfd3JpdGUodHAsIDB4Y2RkYSwgMHg5MDAzKTtcXG4rXFx0XFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGRjLCAweDkwMDMpO1xcbitcXHRcXHRyODE2OF9tYWNfb2NwX3dyaXRlKHRwLCAweGNkZDIsIDB4ODgzYyk7XFxuK1xcdFxcdHI4MTY4X21hY19vY3Bfd3JpdGUodHAsIDB4Y2RkNCwgMHg4YzEyKTtcXG4rXFx0XFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGQ2LCAweDkwMDMpO1xcbitcXHRcXHRyODE2OF9tYWNfb2NwX3dyaXRlKHRwLCAweGUwYTYsIDB4OTAwMyk7XFxuK1xcdFxcdHI4MTY4X21hY19vY3Bfd3JpdGUodHAsIDB4ZTBhOCwgMHg5MDAzKTtcXG4rXFx0XFx0YnJlYWs7XFxuK1xcdGNhc2UgUlRMX0dJR0FfTUFDX1ZFUl80NiAuLi4gUlRMX0dJR0FfTUFDX1ZFUl80ODpcXG4gXFx0XFx0cjgxNjhfbWFjX29jcF9tb2RpZnkodHAsIEFMRFBTX0xUUiwgMHgwMDAwLCBBTERQU19MVFJfRU4pO1xcbiBcXHRcXHRSVExfVzgodHAsIENPTUJPX0xUUl9FWFRFTkQsIFJUTF9SOCh0cCwgQ09NQk9fTFRSX0VYVEVORCkgfCBDT01CT19MVFJfRVhURU5EX0VOKTtcXG4gXFx0XFx0ZmFsbHRocm91Z2g7XFxuQEAgLTMxMTksNiArMzIyOCw3IEBAIHN0YXRpYyB2b2lkIHJ0bF9lbmFibGVfbHRyKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxcbiBcXHR9XFxuIFxcdC8qIGNoaXAgY2FuIHRyaWdnZXIgTFRSICovXFxuIFxcdHI4MTY4X21hY19vY3BfbW9kaWZ5KHRwLCBMVFJfT0JGRl9MT0NLLCAweDAwMDMsIExUUl9PQkZGX0xPQ0tfRU4pO1xcbitcXHRyODE2OF9tYWNfb2NwX21vZGlmeSh0cCwgU0VORF9MVFJfTVNHLCAweDAwMDAsIExUUl9NU0dfRU4pO1xcbiB9XFxuIFxcbiBzdGF0aWMgdm9pZCBydGxfaHdfYXNwbV9jbGtyZXFfZW5hYmxlKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCBib29sIGVuYWJsZSlcXG5AQCAtMzE1Miw2ICszMjYyLDcgQEAgc3RhdGljIHZvaWQgcnRsX2h3X2FzcG1fY2xrcmVxX2VuYWJsZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgYm9vbCBlbmFibGUpXFxuIFxcdFxcdHJ0bF9lbmFibGVfbHRyKHRwKTtcXG4gXFx0XFx0c3dpdGNoICh0cC1cXHUwMDNlbWFjX3ZlcnNpb24pIHtcXG4gXFx0XFx0Y2FzZSBSVExfR0lHQV9NQUNfVkVSXzQ2IC4uLiBSVExfR0lHQV9NQUNfVkVSXzQ4OlxcbitcXHRcXHRjYXNlIFJUTF9HSUdBX01BQ19WRVJfNTI6XFxuIFxcdFxcdGNhc2UgUlRMX0dJR0FfTUFDX1ZFUl82MSAuLi4gUlRMX0dJR0FfTUFDX1ZFUl9MQVNUOlxcbiBcXHRcXHRcXHQvKiByZXNldCBlcGh5IHR4L3J4IGRpc2FibGUgdGltZXIgKi9cXG4gXFx0XFx0XFx0cjgxNjhfbWFjX29jcF9tb2RpZnkodHAsIDB4ZTA5NCwgMHhmZjAwLCAwKTtcXG5AQCAtMzE2NCw2ICszMjc1LDcgQEAgc3RhdGljIHZvaWQgcnRsX2h3X2FzcG1fY2xrcmVxX2VuYWJsZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgYm9vbCBlbmFibGUpXFxuIFxcdH0gZWxzZSB7XFxuIFxcdFxcdHN3aXRjaCAodHAtXFx1MDAzZW1hY192ZXJzaW9uKSB7XFxuIFxcdFxcdGNhc2UgUlRMX0dJR0FfTUFDX1ZFUl80NiAuLi4gUlRMX0dJR0FfTUFDX1ZFUl80ODpcXG4rXFx0XFx0Y2FzZSBSVExfR0lHQV9NQUNfVkVSXzUyOlxcbiBcXHRcXHRjYXNlIFJUTF9HSUdBX01BQ19WRVJfNjEgLi4uIFJUTF9HSUdBX01BQ19WRVJfTEFTVDpcXG4gXFx0XFx0XFx0cjgxNjhfbWFjX29jcF9tb2RpZnkodHAsIDB4ZTA5MiwgMHgwMGZmLCAwKTtcXG4gXFx0XFx0XFx0YnJlYWs7XFxuQEAgLTM2NTcsNiArMzc2OSwzNSBAQCBzdGF0aWMgdm9pZCBydGxfaHdfc3RhcnRfODE2OGVwXzMoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXFxuIFxcdHI4MTY4X21hY19vY3BfbW9kaWZ5KHRwLCAweGU4NjAsIDB4MDAwMCwgMHgwMDgwKTtcXG4gfVxcbiBcXG4rc3RhdGljIHZvaWQgcnRsX2xvd3Bvd2VyX2hpZGRlbl9mdW5jdGlvbnMoc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuK3tcXG4rXFx0dW5zaWduZWQgaW50IHNsb3QgPSBQQ0lfU0xPVChwZGV2LVxcdTAwM2VkZXZmbik7XFxuK1xcdHN0cnVjdCBwY2lfYnVzICpidXMgPSBwZGV2LVxcdTAwM2VidXM7XFxuK1xcdHVuc2lnbmVkIGludCBkZXZmbjtcXG4rXFx0aW50IGZ1bmM7XFxuK1xcdGludCByZXQ7XFxuK1xcdHUzMiB2YWw7XFxuK1xcbitcXHRmb3IgKGZ1bmMgPSAyOyBmdW5jIFxcdTAwM2MgODsgZnVuYysrKSB7XFxuK1xcdFxcdGRldmZuID0gUENJX0RFVkZOKHNsb3QsIGZ1bmMpO1xcbitcXG4rXFx0XFx0cmV0ID0gcGNpX2J1c19yZWFkX2NvbmZpZ19kd29yZChidXMsIGRldmZuLCBSVEw4MTE2QUZfRlVOQ19QTV9DU1IsIFxcdTAwMjZ2YWwpO1xcbitcXHRcXHRpZiAoIXJldCBcXHUwMDI2XFx1MDAyNiAhUENJX1BPU1NJQkxFX0VSUk9SKHZhbCkpIHtcXG4rXFx0XFx0XFx0dmFsIFxcdTAwMjY9IH5QQ0lfUE1fQ1RSTF9QTUVfU1RBVFVTO1xcbitcXHRcXHRcXHR2YWwgXFx1MDAyNj0gfihQQ0lfUE1fQ1RSTF9TVEFURV9NQVNLIHwgUENJX1BNX0NUUkxfUE1FX0VOQUJMRSk7XFxuK1xcdFxcdFxcdHZhbCB8PSAoUlRMX1BNX0QzSE9UIHwgUENJX1BNX0NUUkxfUE1FX0VOQUJMRSk7XFxuK1xcdFxcdFxcdHBjaV9idXNfd3JpdGVfY29uZmlnX2R3b3JkKGJ1cywgZGV2Zm4sIFJUTDgxMTZBRl9GVU5DX1BNX0NTUiwgdmFsKTtcXG4rXFx0XFx0fVxcbitcXG4rXFx0XFx0cmV0ID0gcGNpX2J1c19yZWFkX2NvbmZpZ19kd29yZChidXMsIGRldmZuLCBSVEw4MTE2QUZfRlVOQ19FWFBfTE5LQ1RMLCBcXHUwMDI2dmFsKTtcXG4rXFx0XFx0aWYgKCFyZXQgXFx1MDAyNlxcdTAwMjYgIVBDSV9QT1NTSUJMRV9FUlJPUih2YWwpKSB7XFxuK1xcdFxcdFxcdHZhbCBcXHUwMDI2PSB+KChQQ0lfRVhQX0xOS1NUQV9MQk1TIHwgUENJX0VYUF9MTktTVEFfTEFCUykgXFx1MDAzY1xcdTAwM2MgMTYpO1xcbitcXHRcXHRcXHR2YWwgfD0gUENJX0VYUF9MTktDVExfQVNQTUM7XFxuK1xcdFxcdFxcdHBjaV9idXNfd3JpdGVfY29uZmlnX2R3b3JkKGJ1cywgZGV2Zm4sIFJUTDgxMTZBRl9GVU5DX0VYUF9MTktDVEwsIHZhbCk7XFxuK1xcdFxcdH1cXG4rXFx0fVxcbit9XFxuK1xcbiBzdGF0aWMgdm9pZCBydGxfaHdfc3RhcnRfODExNyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcXG4ge1xcbiBcXHRzdGF0aWMgY29uc3Qgc3RydWN0IGVwaHlfaW5mbyBlX2luZm9fODExN1tdID0ge1xcbkBAIC0zNjkzLDEyICszODM0LDE0IEBAIHN0YXRpYyB2b2lkIHJ0bF9od19zdGFydF84MTE3KHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxcbiBcXG4gXFx0cnRsX3BjaWVfc3RhdGVfbDJsM19kaXNhYmxlKHRwKTtcXG4gXFxuLVxcdHJnX3Nhd19jbnQgPSBwaHlfcmVhZF9wYWdlZCh0cC1cXHUwMDNlcGh5ZGV2LCAweDBjNDIsIDB4MTMpIFxcdTAwMjYgMHgzZmZmO1xcbi1cXHRpZiAocmdfc2F3X2NudCBcXHUwMDNlIDApIHtcXG4tXFx0XFx0dTE2IHN3X2NudF8xbXNfaW5pO1xcbitcXHRpZiAodHAtXFx1MDAzZXBoeWRldikge1xcbitcXHRcXHRyZ19zYXdfY250ID0gcGh5X3JlYWRfcGFnZWQodHAtXFx1MDAzZXBoeWRldiwgMHgwYzQyLCAweDEzKSBcXHUwMDI2IDB4M2ZmZjtcXG4rXFx0XFx0aWYgKHJnX3Nhd19jbnQgXFx1MDAzZSAwKSB7XFxuK1xcdFxcdFxcdHUxNiBzd19jbnRfMW1zX2luaTtcXG4gXFxuLVxcdFxcdHN3X2NudF8xbXNfaW5pID0gKDE2MDAwMDAwIC8gcmdfc2F3X2NudCkgXFx1MDAyNiAweDBmZmY7XFxuLVxcdFxcdHI4MTY4X21hY19vY3BfbW9kaWZ5KHRwLCAweGQ0MTIsIDB4MGZmZiwgc3dfY250XzFtc19pbmkpO1xcbitcXHRcXHRcXHRzd19jbnRfMW1zX2luaSA9ICgxNjAwMDAwMCAvIHJnX3Nhd19jbnQpIFxcdTAwMjYgMHgwZmZmO1xcbitcXHRcXHRcXHRyODE2OF9tYWNfb2NwX21vZGlmeSh0cCwgMHhkNDEyLCAweDBmZmYsIHN3X2NudF8xbXNfaW5pKTtcXG4rXFx0XFx0fVxcbiBcXHR9XFxuIFxcbiBcXHRyODE2OF9tYWNfb2NwX21vZGlmeSh0cCwgMHhlMDU2LCAweDAwZjAsIDB4MDAwMCk7XFxuQEAgLTM3MTEsNiArMzg1NCw5IEBAIHN0YXRpYyB2b2lkIHJ0bF9od19zdGFydF84MTE3KHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxcbiBcXHRyODE2OF9tYWNfb2NwX3dyaXRlKHRwLCAweGMwOTQsIDB4MDAwMCk7XFxuIFxcdHI4MTY4X21hY19vY3Bfd3JpdGUodHAsIDB4YzA5ZSwgMHgwMDAwKTtcXG4gXFxuK1xcdGlmIChydGxfaXNfODExNmFmKHRwKSlcXG4rXFx0XFx0cnRsX2xvd3Bvd2VyX2hpZGRlbl9mdW5jdGlvbnModHAtXFx1MDAzZXBjaV9kZXYpO1xcbitcXG4gXFx0LyogZmlybXdhcmUgaXMgZm9yIE1BQyBvbmx5ICovXFxuIFxcdHI4MTY5X2FwcGx5X2Zpcm13YXJlKHRwKTtcXG4gfVxcbkBAIC00MTM5LDEyICs0Mjg1LDI1IEBAIHN0YXRpYyB2b2lkIHJ0bF9od19zdGFydChzdHJ1Y3QgIHJ0bDgxNjlfcHJpdmF0ZSAqdHApXFxuIHN0YXRpYyBpbnQgcnRsODE2OV9jaGFuZ2VfbXR1KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGludCBuZXdfbXR1KVxcbiB7XFxuIFxcdHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwID0gbmV0ZGV2X3ByaXYoZGV2KTtcXG4rXFx0Ym9vbCBqdW1ib19iZWZvcmUgPSBkZXYtXFx1MDAzZW10dSBcXHUwMDNlIEVUSF9EQVRBX0xFTjtcXG4rXFx0Ym9vbCBqdW1ib19hZnRlciA9IG5ld19tdHUgXFx1MDAzZSBFVEhfREFUQV9MRU47XFxuIFxcbiBcXHRXUklURV9PTkNFKGRldi1cXHUwMDNlbXR1LCBuZXdfbXR1KTtcXG4gXFx0bmV0ZGV2X3VwZGF0ZV9mZWF0dXJlcyhkZXYpO1xcbiBcXHRydGxfanVtYm9fY29uZmlnKHRwKTtcXG4gXFx0cnRsX3NldF9lZWVfdHhpZGxlX3RpbWVyKHRwKTtcXG4gXFxuK1xcdGlmIChqdW1ib19iZWZvcmUgIT0ganVtYm9fYWZ0ZXIpIHtcXG4rXFx0XFx0dW5zaWduZWQgbG9uZyBjYXBzID0gdHAtXFx1MDAzZXBoeWxpbmtfY29uZmlnLm1hY19jYXBhYmlsaXRpZXM7XFxuK1xcbitcXHRcXHRpZiAoanVtYm9fYWZ0ZXIpXFxuK1xcdFxcdFxcdGNhcHMgXFx1MDAyNj0gfihNQUNfU1lNX1BBVVNFIHwgTUFDX0FTWU1fUEFVU0UpO1xcbitcXHRcXHRlbHNlXFxuK1xcdFxcdFxcdGNhcHMgfD0gKE1BQ19TWU1fUEFVU0UgfCBNQUNfQVNZTV9QQVVTRSk7XFxuK1xcbitcXHRcXHRwaHlsaW5rX3NldF9tYWNfY2FwYWJpbGl0aWVzKHRwLVxcdTAwM2VwaHlsaW5rLCBjYXBzKTtcXG4rXFx0fVxcbitcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG4gXFxuQEAgLTQ4NjksOCArNTAyOCwxMyBAQCBzdGF0aWMgaXJxcmV0dXJuX3QgcnRsODE2OV9pbnRlcnJ1cHQoaW50IGlycSwgdm9pZCAqZGV2X2luc3RhbmNlKVxcbiBcXHRcXHRnb3RvIG91dDtcXG4gXFx0fVxcbiBcXG4tXFx0aWYgKHN0YXR1cyBcXHUwMDI2IExpbmtDaGcpXFxuLVxcdFxcdHBoeV9tYWNfaW50ZXJydXB0KHRwLVxcdTAwM2VwaHlkZXYpO1xcbitcXHRpZiAoc3RhdHVzIFxcdTAwMjYgTGlua0NoZykge1xcbitcXHRcXHRpZiAodHAtXFx1MDAzZXBoeWRldilcXG4rXFx0XFx0XFx0cGh5X21hY19pbnRlcnJ1cHQodHAtXFx1MDAzZXBoeWRldik7XFxuK1xcdFxcdGVsc2UgaWYgKHRwLVxcdTAwM2VzZnBfbW9kZSlcXG4rXFx0XFx0XFx0cGh5bGlua19tYWNfY2hhbmdlKHRwLVxcdTAwM2VwaHlsaW5rLFxcbitcXHRcXHRcXHRcXHRcXHQgICAhIShSVExfUjgodHAsIFBIWXN0YXR1cykgXFx1MDAyNiBMaW5rU3RhdHVzKSk7XFxuK1xcdH1cXG4gXFxuIFxcdHJ0bF9pcnFfZGlzYWJsZSh0cCk7XFxuIFxcdG5hcGlfc2NoZWR1bGUoXFx1MDAyNnRwLVxcdTAwM2VuYXBpKTtcXG5AQCAtNDkzMCw5ICs1MDk0LDYgQEAgc3RhdGljIGludCBydGw4MTY5X3BvbGwoc3RydWN0IG5hcGlfc3RydWN0ICpuYXBpLCBpbnQgYnVkZ2V0KVxcbiBcXG4gc3RhdGljIHZvaWQgcnRsX2VuYWJsZV90eF9scGkoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIGJvb2wgZW5hYmxlKVxcbiB7XFxuLVxcdGlmICghcnRsX3N1cHBvcnRzX2VlZSh0cCkpXFxuLVxcdFxcdHJldHVybjtcXG4tXFxuIFxcdHN3aXRjaCAodHAtXFx1MDAzZW1hY192ZXJzaW9uKSB7XFxuIFxcdGNhc2UgUlRMX0dJR0FfTUFDX1ZFUl8zNCAuLi4gUlRMX0dJR0FfTUFDX1ZFUl81MjpcXG4gXFx0XFx0LyogQWRqdXN0IEVFRSBMRUQgZnJlcXVlbmN5ICovXFxuQEAgLTQ5NjMsNDAgKzUxMjQsMTUgQEAgc3RhdGljIHZvaWQgcnRsX2VuYWJsZV90eF9scGkoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIGJvb2wgZW5hYmxlKVxcbiBcXHR9XFxuIH1cXG4gXFxuLXN0YXRpYyB2b2lkIHI4MTY5X3BoeWxpbmtfaGFuZGxlcihzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcXG4te1xcbi1cXHRzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCA9IG5ldGRldl9wcml2KG5kZXYpO1xcbi1cXHRzdHJ1Y3QgZGV2aWNlICpkID0gdHBfdG9fZGV2KHRwKTtcXG4tXFxuLVxcdGlmIChuZXRpZl9jYXJyaWVyX29rKG5kZXYpKSB7XFxuLVxcdFxcdHJ0bF9saW5rX2NoZ19wYXRjaCh0cCk7XFxuLVxcdFxcdHJ0bF9lbmFibGVfdHhfbHBpKHRwLCB0cC1cXHUwMDNlcGh5ZGV2LVxcdTAwM2VlbmFibGVfdHhfbHBpKTtcXG4tXFx0XFx0cG1fcmVxdWVzdF9yZXN1bWUoZCk7XFxuLVxcdH0gZWxzZSB7XFxuLVxcdFxcdHBtX3J1bnRpbWVfaWRsZShkKTtcXG4tXFx0fVxcbi1cXG4tXFx0cGh5X3ByaW50X3N0YXR1cyh0cC1cXHUwMDNlcGh5ZGV2KTtcXG4tfVxcbi1cXG4gc3RhdGljIGludCByODE2OV9waHlfY29ubmVjdChzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcXG4ge1xcbi1cXHRzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2ID0gdHAtXFx1MDAzZXBoeWRldjtcXG4tXFx0cGh5X2ludGVyZmFjZV90IHBoeV9tb2RlO1xcbiBcXHRpbnQgcmV0O1xcbiBcXG4tXFx0cGh5X21vZGUgPSB0cC1cXHUwMDNlc3VwcG9ydHNfZ21paSA/IFBIWV9JTlRFUkZBQ0VfTU9ERV9HTUlJIDpcXG4tXFx0XFx0ICAgUEhZX0lOVEVSRkFDRV9NT0RFX01JSTtcXG4tXFxuLVxcdHJldCA9IHBoeV9jb25uZWN0X2RpcmVjdCh0cC1cXHUwMDNlZGV2LCBwaHlkZXYsIHI4MTY5X3BoeWxpbmtfaGFuZGxlcixcXG4tXFx0XFx0XFx0XFx0IHBoeV9tb2RlKTtcXG4tXFx0aWYgKHJldClcXG4rXFx0cmV0ID0gcGh5bGlua19jb25uZWN0X3BoeSh0cC1cXHUwMDNlcGh5bGluaywgdHAtXFx1MDAzZXBoeWRldik7XFxuK1xcdGlmIChyZXQpIHtcXG4rXFx0XFx0bmV0ZGV2X2Vycih0cC1cXHUwMDNlZGV2LCBcXFwiZmFpbGVkIHRvIGNvbm5lY3QgcGh5XFxcXG5cXFwiKTtcXG4gXFx0XFx0cmV0dXJuIHJldDtcXG4tXFxuLVxcdGlmICghdHAtXFx1MDAzZXN1cHBvcnRzX2dtaWkpXFxuLVxcdFxcdHBoeV9zZXRfbWF4X3NwZWVkKHBoeWRldiwgU1BFRURfMTAwKTtcXG4tXFxuLVxcdHBoeV9hdHRhY2hlZF9pbmZvKHBoeWRldik7XFxuK1xcdH1cXG4gXFxuIFxcdHJldHVybiAwO1xcbiB9XFxuQEAgLTUwMDcsMTAgKzUxNDMsMTAgQEAgc3RhdGljIHZvaWQgcnRsODE2OV9kb3duKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxcbiBcXHQvKiBDbGVhciBhbGwgdGFzayBmbGFncyAqL1xcbiBcXHRiaXRtYXBfemVybyh0cC1cXHUwMDNld2suZmxhZ3MsIFJUTF9GTEFHX01BWCk7XFxuIFxcbi1cXHRwaHlfc3RvcCh0cC1cXHUwMDNlcGh5ZGV2KTtcXG4rXFx0cGh5bGlua19zdG9wKHRwLVxcdTAwM2VwaHlsaW5rKTtcXG4gXFxuIFxcdC8qIFJlc2V0IFNlckRlcyBQSFkgdG8gYnJpbmcgZG93biBmaWJlciBsaW5rICovXFxuLVxcdGlmICh0cC1cXHUwMDNlc2ZwX21vZGUpXFxuK1xcdGlmICh0cC1cXHUwMDNlc2ZwX21vZGUgPT0gUlRMX1NGUF84MTI3X0FURilcXG4gXFx0XFx0cnRsX3NmcF9yZXNldCh0cCk7XFxuIFxcbiBcXHRydGw4MTY5X3VwZGF0ZV9jb3VudGVycyh0cCk7XFxuQEAgLTUwMzIsMTQgKzUxNjgsMTQgQEAgc3RhdGljIHZvaWQgcnRsODE2OV91cChzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcXG4gXFx0XFx0cnRsODE2OF9kcml2ZXJfc3RhcnQodHApO1xcbiBcXG4gXFx0cGNpX3NldF9tYXN0ZXIodHAtXFx1MDAzZXBjaV9kZXYpO1xcbi1cXHRwaHlfaW5pdF9odyh0cC1cXHUwMDNlcGh5ZGV2KTtcXG4tXFx0cGh5X3Jlc3VtZSh0cC1cXHUwMDNlcGh5ZGV2KTtcXG4tXFx0cnRsODE2OV9pbml0X3BoeSh0cCk7XFxuK1xcdGlmICh0cC1cXHUwMDNlcGh5ZGV2KVxcbitcXHRcXHRydGw4MTY5X2luaXRfcGh5KHRwKTtcXG4rXFxuIFxcdG5hcGlfZW5hYmxlKFxcdTAwMjZ0cC1cXHUwMDNlbmFwaSk7XFxuIFxcdGVuYWJsZV93b3JrKFxcdTAwMjZ0cC1cXHUwMDNld2sud29yayk7XFxuIFxcdHJ0bF9yZXNldF93b3JrKHRwKTtcXG4gXFxuLVxcdHBoeV9zdGFydCh0cC1cXHUwMDNlcGh5ZGV2KTtcXG4rXFx0cGh5bGlua19zdGFydCh0cC1cXHUwMDNlcGh5bGluayk7XFxuIH1cXG4gXFxuIHN0YXRpYyBpbnQgcnRsODE2OV9jbG9zZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbkBAIC01MDU1LDcgKzUxOTEsNyBAQCBzdGF0aWMgaW50IHJ0bDgxNjlfY2xvc2Uoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4gXFxuIFxcdGZyZWVfaXJxKHRwLVxcdTAwM2VpcnEsIHRwKTtcXG4gXFxuLVxcdHBoeV9kaXNjb25uZWN0KHRwLVxcdTAwM2VwaHlkZXYpO1xcbitcXHRwaHlsaW5rX2Rpc2Nvbm5lY3RfcGh5KHRwLVxcdTAwM2VwaHlsaW5rKTtcXG4gXFxuIFxcdGRtYV9mcmVlX2NvaGVyZW50KFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIFI4MTY5X1JYX1JJTkdfQllURVMsIHRwLVxcdTAwM2VSeERlc2NBcnJheSxcXG4gXFx0XFx0XFx0ICB0cC1cXHUwMDNlUnhQaHlBZGRyKTtcXG5AQCAtNTExMiw5ICs1MjQ4LDExIEBAIHN0YXRpYyBpbnQgcnRsX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4gXFx0aWYgKHJldHZhbCBcXHUwMDNjIDApXFxuIFxcdFxcdGdvdG8gZXJyX3JlbGVhc2VfZndfMjtcXG4gXFxuLVxcdHJldHZhbCA9IHI4MTY5X3BoeV9jb25uZWN0KHRwKTtcXG4tXFx0aWYgKHJldHZhbClcXG4tXFx0XFx0Z290byBlcnJfZnJlZV9pcnE7XFxuK1xcdGlmICh0cC1cXHUwMDNlcGh5ZGV2KSB7XFxuK1xcdFxcdHJldHZhbCA9IHI4MTY5X3BoeV9jb25uZWN0KHRwKTtcXG4rXFx0XFx0aWYgKHJldHZhbClcXG4rXFx0XFx0XFx0Z290byBlcnJfZnJlZV9pcnE7XFxuK1xcdH1cXG4gXFxuIFxcdHJ0bDgxNjlfdXAodHApO1xcbiBcXHRydGw4MTY5X2luaXRfY291bnRlcl9vZmZzZXRzKHRwKTtcXG5AQCAtNTE5MCw4ICs1MzI4LDExIEBAIHN0YXRpYyBpbnQgcnRsODE2OV9ydW50aW1lX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuIFxcdHJ0bF9yYXJfc2V0KHRwLCB0cC1cXHUwMDNlZGV2LVxcdTAwM2VkZXZfYWRkcik7XFxuIFxcdF9fcnRsODE2OV9zZXRfd29sKHRwLCB0cC1cXHUwMDNlc2F2ZWRfd29sb3B0cyk7XFxuIFxcbi1cXHRpZiAodHAtXFx1MDAzZVR4RGVzY0FycmF5KVxcbitcXHRpZiAodHAtXFx1MDAzZVR4RGVzY0FycmF5KSB7XFxuK1xcdFxcdHJ0bmxfbG9jaygpO1xcbiBcXHRcXHRydGw4MTY5X3VwKHRwKTtcXG4rXFx0XFx0cnRubF91bmxvY2soKTtcXG4rXFx0fVxcbiBcXG4gXFx0bmV0aWZfZGV2aWNlX2F0dGFjaCh0cC1cXHUwMDNlZGV2KTtcXG4gXFxuQEAgLTUyODgsNiArNTQyOSw3IEBAIHN0YXRpYyB2b2lkIHJ0bF9yZW1vdmVfb25lKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcbiBcXHRcXHRyODE2OV9yZW1vdmVfbGVkcyh0cC1cXHUwMDNlbGVkcyk7XFxuIFxcbiBcXHR1bnJlZ2lzdGVyX25ldGRldih0cC1cXHUwMDNlZGV2KTtcXG4rXFx0cGh5bGlua19kZXN0cm95KHRwLVxcdTAwM2VwaHlsaW5rKTtcXG4gXFxuIFxcdGlmICh0cC1cXHUwMDNlZGFzaF90eXBlICE9IFJUTF9EQVNIX05PTkUpXFxuIFxcdFxcdHJ0bDgxNjhfZHJpdmVyX3N0b3AodHApO1xcbkBAIC01MzEwLDcgKzU0NTIsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIHJ0bF9uZXRkZXZfb3BzID0ge1xcbiBcXHQubmRvX2ZpeF9mZWF0dXJlc1xcdD0gcnRsODE2OV9maXhfZmVhdHVyZXMsXFxuIFxcdC5uZG9fc2V0X2ZlYXR1cmVzXFx0PSBydGw4MTY5X3NldF9mZWF0dXJlcyxcXG4gXFx0Lm5kb19zZXRfbWFjX2FkZHJlc3NcXHQ9IHJ0bF9zZXRfbWFjX2FkZHJlc3MsXFxuLVxcdC5uZG9fZXRoX2lvY3RsXFx0XFx0PSBwaHlfZG9faW9jdGxfcnVubmluZyxcXG4rXFx0Lm5kb19ldGhfaW9jdGxcXHRcXHQ9IHJ0bDgxNjlfaW9jdGwsXFxuIFxcdC5uZG9fc2V0X3J4X21vZGVcXHQ9IHJ0bF9zZXRfcnhfbW9kZSxcXG4gI2lmZGVmIENPTkZJR19ORVRfUE9MTF9DT05UUk9MTEVSXFxuIFxcdC5uZG9fcG9sbF9jb250cm9sbGVyXFx0PSBydGw4MTY5X25ldHBvbGwsXFxuQEAgLTU0NzQsMTYgKzU2MTYsNiBAQCBzdGF0aWMgaW50IHI4MTY5X21kaW9fcmVnaXN0ZXIoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXFxuIFxcdFxcdHJldHVybiAtRVVOQVRDSDtcXG4gXFx0fVxcbiBcXG4tXFx0dHAtXFx1MDAzZXBoeWRldi1cXHUwMDNlbWFjX21hbmFnZWRfcG0gPSB0cnVlO1xcbi1cXHRpZiAocnRsX3N1cHBvcnRzX2VlZSh0cCkpXFxuLVxcdFxcdHBoeV9zdXBwb3J0X2VlZSh0cC1cXHUwMDNlcGh5ZGV2KTtcXG4tXFx0cGh5X3N1cHBvcnRfYXN5bV9wYXVzZSh0cC1cXHUwMDNlcGh5ZGV2KTtcXG4tXFxuLVxcdC8qIG1pbWljIGJlaGF2aW9yIG9mIHI4MTI1L3I4MTI2IHZlbmRvciBkcml2ZXJzICovXFxuLVxcdGlmICh0cC1cXHUwMDNlbWFjX3ZlcnNpb24gPT0gUlRMX0dJR0FfTUFDX1ZFUl82MSlcXG4tXFx0XFx0cGh5X2Rpc2FibGVfZWVlX21vZGUodHAtXFx1MDAzZXBoeWRldixcXG4tXFx0XFx0XFx0XFx0ICAgICBFVEhUT09MX0xJTktfTU9ERV8yNTAwYmFzZVRfRnVsbF9CSVQpO1xcbi1cXG4gXFx0LyogUEhZIHdpbGwgYmUgd29rZW4gdXAgaW4gcnRsX29wZW4oKSAqL1xcbiBcXHRwaHlfc3VzcGVuZCh0cC1cXHUwMDNlcGh5ZGV2KTtcXG4gXFxuQEAgLTU1OTksNiArNTczMSwyNDIgQEAgc3RhdGljIGJvb2wgcnRsX2FzcG1faXNfc2FmZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcXG4gXFx0cmV0dXJuIGZhbHNlO1xcbiB9XFxuIFxcbitzdGF0aWMgdm9pZCBydGxfbWFjX2xpbmtfZG93bihzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZywgdW5zaWduZWQgaW50IG1vZGUsXFxuK1xcdFxcdFxcdCAgICAgIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXFxuK3tcXG4rXFx0c3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAgPSBjb250YWluZXJfb2YoY29uZmlnLCBzdHJ1Y3QgcnRsODE2OV9wcml2YXRlLCBwaHlsaW5rX2NvbmZpZyk7XFxuK1xcbitcXHR0cC1cXHUwMDNlc3BlZWQgPSBTUEVFRF9VTktOT1dOO1xcbitcXHRwbV9ydW50aW1lX2lkbGUodHBfdG9fZGV2KHRwKSk7XFxuK31cXG4rXFxuK3N0YXRpYyB2b2lkIHJ0bF9tYWNfbGlua191cChzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZywgc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcXG4rXFx0XFx0XFx0ICAgIHVuc2lnbmVkIGludCBtb2RlLCBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlLFxcbitcXHRcXHRcXHQgICAgaW50IHNwZWVkLCBpbnQgZHVwbGV4LCBib29sIHR4X3BhdXNlLCBib29sIHJ4X3BhdXNlKVxcbit7XFxuK1xcdHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwID0gY29udGFpbmVyX29mKGNvbmZpZywgc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSwgcGh5bGlua19jb25maWcpO1xcbitcXHRzdHJ1Y3QgZGV2aWNlICpkID0gdHBfdG9fZGV2KHRwKTtcXG4rXFxuK1xcdHRwLVxcdTAwM2VzcGVlZCA9IHNwZWVkO1xcbitcXHRydGxfbGlua19jaGdfcGF0Y2godHAsIHNwZWVkKTtcXG4rXFxuK1xcdHBtX3JlcXVlc3RfcmVzdW1lKGQpO1xcbit9XFxuK1xcbitzdGF0aWMgc3RydWN0IHBoeWxpbmtfcGNzICpydGxfbWFjX3NlbGVjdF9wY3Moc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXFxuK1xcdFxcdFxcdFxcdFxcdCAgICAgIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXFxuK3tcXG4rXFx0c3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAgPSBjb250YWluZXJfb2YoY29uZmlnLCBzdHJ1Y3QgcnRsODE2OV9wcml2YXRlLCBwaHlsaW5rX2NvbmZpZyk7XFxuK1xcbitcXHRpZiAoIXRwLVxcdTAwM2VwY3Mub3BzKVxcbitcXHRcXHRyZXR1cm4gTlVMTDtcXG4rXFxuK1xcdGlmIChpbnRlcmZhY2UgPT0gUEhZX0lOVEVSRkFDRV9NT0RFXzEwMDBCQVNFWCB8fFxcbitcXHQgICAgaW50ZXJmYWNlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV8xMEdCQVNFUilcXG4rXFx0XFx0cmV0dXJuIFxcdTAwMjZ0cC1cXHUwMDNlcGNzO1xcbitcXG4rXFx0cmV0dXJuIE5VTEw7XFxuK31cXG4rXFxuK3N0YXRpYyB2b2lkIHJ0bF9tYWNfY29uZmlnKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLCB1bnNpZ25lZCBpbnQgbW9kZSxcXG4rXFx0XFx0XFx0ICAgY29uc3Qgc3RydWN0IHBoeWxpbmtfbGlua19zdGF0ZSAqc3RhdGUpXFxuK3tcXG4rfVxcbitcXG4rc3RhdGljIHUxNiBydGw4MTY5X3Nkc19yZWFkKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCB1MTYgc2RzX3JlZylcXG4re1xcbitcXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xcbitcXHR1MTYgdmFsID0gMDtcXG4rXFxuK1xcdHJhd19zcGluX2xvY2tfaXJxc2F2ZShcXHUwMDI2dHAtXFx1MDAzZW1hY19vY3BfbG9jaywgZmxhZ3MpO1xcbitcXHRfX3I4MTY4X21hY19vY3Bfd3JpdGUodHAsIE9DUF9TRFNfQUREUl9SRUcsIHNkc19yZWcpO1xcbitcXHRfX3I4MTY4X21hY19vY3Bfd3JpdGUodHAsIE9DUF9TRFNfQ01EX1JFRywgU0RTX0NNRF9SRUFEKTtcXG4rXFx0dmFsID0gX19yODE2OF9tYWNfb2NwX3JlYWQodHAsIE9DUF9TRFNfREFUQV9SRUcpO1xcbitcXHRyYXdfc3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcXHUwMDI2dHAtXFx1MDAzZW1hY19vY3BfbG9jaywgZmxhZ3MpO1xcbitcXG4rXFx0cmV0dXJuIHZhbDtcXG4rfVxcbitcXG4rc3RhdGljIHZvaWQgcnRsODE2OV9wY3NfZ2V0X3N0YXRlKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzLFxcbitcXHRcXHRcXHRcXHQgIHVuc2lnbmVkIGludCBuZWdfbW9kZSxcXG4rXFx0XFx0XFx0XFx0ICBzdHJ1Y3QgcGh5bGlua19saW5rX3N0YXRlICpzdGF0ZSlcXG4re1xcbitcXHRzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCA9IGNvbnRhaW5lcl9vZihwY3MsIHN0cnVjdCBydGw4MTY5X3ByaXZhdGUsIHBjcyk7XFxuK1xcbitcXHRpZiAodHAtXFx1MDAzZXNmcF9tb2RlID09IFJUTF9TRlBfODEyN19BVEYpIHtcXG4rXFx0XFx0dTE2IHN0YXQxO1xcbitcXG4rXFx0XFx0c3RhdDEgPSBydGw4MTY5X3Nkc19yZWFkKHRwLCBSVExfU0RTX0M0NV9CQVNFICsgTURJT19TVEFUMSk7XFxuK1xcbitcXHRcXHRpZiAoIShzdGF0MSBcXHUwMDI2IE1ESU9fU1RBVDFfTFNUQVRVUykpXFxuK1xcdFxcdFxcdHN0YXQxID0gcnRsODE2OV9zZHNfcmVhZCh0cCwgUlRMX1NEU19DNDVfQkFTRSArIE1ESU9fU1RBVDEpO1xcbitcXG4rXFx0XFx0c3RhdGUtXFx1MDAzZWxpbmsgPSAhIShzdGF0MSBcXHUwMDI2IE1ESU9fU1RBVDFfTFNUQVRVUyk7XFxuK1xcdFxcdGlmICghc3RhdGUtXFx1MDAzZWxpbmspXFxuK1xcdFxcdFxcdHJldHVybjtcXG4rXFxuK1xcdFxcdHN0YXRlLVxcdTAwM2VkdXBsZXggPSBEVVBMRVhfRlVMTDtcXG4rXFx0XFx0c3RhdGUtXFx1MDAzZXNwZWVkID0gU1BFRURfMTAwMDA7XFxuK1xcdH0gZWxzZSB7XFxuK1xcdFxcdHUxNiBibXNyLCBscGE7XFxuK1xcbitcXHRcXHRibXNyID0gcnRsODE2OV9zZHNfcmVhZCh0cCwgUlRMX1NEU19DMjJfQkFTRSArIE1JSV9CTVNSKTtcXG4rXFx0XFx0bHBhID0gcnRsODE2OV9zZHNfcmVhZCh0cCwgUlRMX1NEU19DMjJfQkFTRSArIE1JSV9MUEEpO1xcbitcXHRcXHRwaHlsaW5rX21paV9jMjJfcGNzX2RlY29kZV9zdGF0ZShzdGF0ZSwgbmVnX21vZGUsIGJtc3IsIGxwYSk7XFxuK1xcdH1cXG4rfVxcbitcXG4rc3RhdGljIGludCBydGw4MTY5X3Bjc19jb25maWcoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MsIHVuc2lnbmVkIGludCBtb2RlLFxcbitcXHRcXHRcXHQgICAgICBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlLFxcbitcXHRcXHRcXHQgICAgICBjb25zdCB1bnNpZ25lZCBsb25nICphZHZlcnRpc2luZyxcXG4rXFx0XFx0XFx0ICAgICAgYm9vbCBwZXJtaXRfcGF1c2VfdG9fbWFjKVxcbit7XFxuK1xcdHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwID0gY29udGFpbmVyX29mKHBjcywgc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSwgcGNzKTtcXG4rXFxuK1xcdGlmICh0cC1cXHUwMDNlc2ZwX21vZGUgPT0gUlRMX1NGUF84MTI3X0FURikge1xcbitcXHRcXHRzd2l0Y2ggKGludGVyZmFjZSkge1xcbitcXHRcXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV8xMEdCQVNFUjpcXG4rXFx0XFx0XFx0cjgxMjdfc2ZwX2luaXRfMTBnKHRwKTtcXG4rXFx0XFx0XFx0YnJlYWs7XFxuK1xcdFxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFXzEwMDBCQVNFWDpcXG4rXFx0XFx0XFx0cjgxMjdfc2ZwX2luaXRfMWcodHApO1xcbitcXHRcXHRcXHRicmVhaztcXG4rXFx0XFx0ZGVmYXVsdDpcXG4rXFx0XFx0XFx0bmV0ZGV2X2Vycih0cC1cXHUwMDNlZGV2LCBcXFwiVW5zdXBwb3J0ZWQgU0ZQIGludGVyZmFjZSBtb2RlOiAlc1xcXFxuXFxcIixcXG4rXFx0XFx0XFx0XFx0ICAgcGh5X21vZGVzKGludGVyZmFjZSkpO1xcbitcXHRcXHRcXHRyZXR1cm4gLUVPUE5PVFNVUFA7XFxuK1xcdFxcdH1cXG4rXFx0fVxcbitcXG4rXFx0cmV0dXJuIDA7XFxuK31cXG4rXFxuK3N0YXRpYyBpbnQgcnRsODE2OV9wY3NfdmFsaWRhdGUoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MsIHVuc2lnbmVkIGxvbmcgKnN1cHBvcnRlZCxcXG4rXFx0XFx0XFx0XFx0Y29uc3Qgc3RydWN0IHBoeWxpbmtfbGlua19zdGF0ZSAqc3RhdGUpXFxuK3tcXG4rXFx0cmV0dXJuIDA7XFxuK31cXG4rXFxuK3N0YXRpYyB2b2lkIHJ0bDgxNjlfcGNzX2FuX3Jlc3RhcnQoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MpXFxuK3tcXG4rfVxcbitcXG4rc3RhdGljIHZvaWQgcnRsX21hY19kaXNhYmxlX3R4X2xwaShzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZylcXG4re1xcbitcXHRzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCA9IGNvbnRhaW5lcl9vZihjb25maWcsIHN0cnVjdCBydGw4MTY5X3ByaXZhdGUsIHBoeWxpbmtfY29uZmlnKTtcXG4rXFxuK1xcdHJ0bF9lbmFibGVfdHhfbHBpKHRwLCBmYWxzZSk7XFxuK31cXG4rXFxuK3N0YXRpYyBpbnQgcnRsX21hY19lbmFibGVfdHhfbHBpKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLCB1MzIgdGltZXIsIGJvb2wgdHhfY2xrX3N0b3ApXFxuK3tcXG4rXFx0c3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAgPSBjb250YWluZXJfb2YoY29uZmlnLCBzdHJ1Y3QgcnRsODE2OV9wcml2YXRlLCBwaHlsaW5rX2NvbmZpZyk7XFxuK1xcbitcXHRydGxfZW5hYmxlX3R4X2xwaSh0cCwgdHJ1ZSk7XFxuK1xcbitcXHRyZXR1cm4gMDtcXG4rfVxcbitcXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBwaHlsaW5rX21hY19vcHMgcnRsX3BoeWxpbmtfbWFjX29wcyA9IHtcXG4rXFx0Lm1hY19zZWxlY3RfcGNzID0gcnRsX21hY19zZWxlY3RfcGNzLFxcbitcXHQubWFjX2NvbmZpZyA9IHJ0bF9tYWNfY29uZmlnLFxcbitcXHQubWFjX2xpbmtfZG93biAgPSBydGxfbWFjX2xpbmtfZG93bixcXG4rXFx0Lm1hY19saW5rX3VwICAgID0gcnRsX21hY19saW5rX3VwLFxcbitcXHQubWFjX2Rpc2FibGVfdHhfbHBpID0gcnRsX21hY19kaXNhYmxlX3R4X2xwaSxcXG4rXFx0Lm1hY19lbmFibGVfdHhfbHBpID0gcnRsX21hY19lbmFibGVfdHhfbHBpLFxcbit9O1xcbitcXG4rc3RhdGljIHVuc2lnbmVkIGxvbmcgcnRsODE2OV9nZXRfbHBpX2NhcHMoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXFxuK3tcXG4rXFx0dW5zaWduZWQgbG9uZyBjYXBzID0gMDtcXG4rXFxuK1xcdGlmICghcnRsX3N1cHBvcnRzX2VlZSh0cCkgfHwgdHAtXFx1MDAzZXNmcF9tb2RlID09IFJUTF9TRlBfODEyN19BVEYpXFxuK1xcdFxcdHJldHVybiAwO1xcbitcXG4rXFx0Y2FwcyB8PSBNQUNfMTAwRkQgfCBNQUNfMTAwMEZEO1xcbitcXG4rXFx0LyogbWltaWMgYmVoYXZpb3Igb2YgcjgxMjUvcjgxMjYgdmVuZG9yIGRyaXZlcnNcXG4rXFx0ICogUlRMX0dJR0FfTUFDX1ZFUl82MSBkb2Vzbid0IHN1cHBvcnQgMi41RyBlZWVcXG4rXFx0ICovXFxuK1xcdGlmICh0cC1cXHUwMDNlbWFjX3ZlcnNpb24gXFx1MDAzZT0gUlRMX0dJR0FfTUFDX1ZFUl82MylcXG4rXFx0XFx0Y2FwcyB8PSBNQUNfMjUwMEZEO1xcbitcXHRpZiAodHAtXFx1MDAzZW1hY192ZXJzaW9uIFxcdTAwM2U9IFJUTF9HSUdBX01BQ19WRVJfNzApXFxuK1xcdFxcdGNhcHMgfD0gTUFDXzUwMDBGRDtcXG4rXFx0aWYgKHRwLVxcdTAwM2VtYWNfdmVyc2lvbiA9PSBSVExfR0lHQV9NQUNfVkVSXzgwKVxcbitcXHRcXHRjYXBzIHw9IE1BQ18xMDAwMEZEO1xcbitcXG4rXFx0cmV0dXJuIGNhcHM7XFxuK31cXG4rXFxuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgcGh5bGlua19wY3Nfb3BzIHI4MTY5X3Bjc19vcHMgPSB7XFxuK1xcdC5wY3NfdmFsaWRhdGUgPSBydGw4MTY5X3Bjc192YWxpZGF0ZSxcXG4rXFx0LnBjc19nZXRfc3RhdGUgPSBydGw4MTY5X3Bjc19nZXRfc3RhdGUsXFxuK1xcdC5wY3NfY29uZmlnID0gcnRsODE2OV9wY3NfY29uZmlnLFxcbitcXHQucGNzX2FuX3Jlc3RhcnQgPSBydGw4MTY5X3Bjc19hbl9yZXN0YXJ0LFxcbit9O1xcbitcXG4rc3RhdGljIGludCBydGxfaW5pdF9waHlsaW5rKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxcbit7XFxuK1xcdHN0cnVjdCBwaHlsaW5rICpwbDtcXG4rXFx0cGh5X2ludGVyZmFjZV90IHBoeV9tb2RlO1xcbitcXG4rXFx0dHAtXFx1MDAzZXBoeWxpbmtfY29uZmlnLmRldiA9IFxcdTAwMjZ0cC1cXHUwMDNlZGV2LVxcdTAwM2VkZXY7XFxuK1xcdHRwLVxcdTAwM2VwaHlsaW5rX2NvbmZpZy50eXBlID0gUEhZTElOS19ORVRERVY7XFxuK1xcdHRwLVxcdTAwM2VwaHlsaW5rX2NvbmZpZy5tYWNfbWFuYWdlZF9wbSA9IHRydWU7XFxuK1xcdHRwLVxcdTAwM2VwaHlsaW5rX2NvbmZpZy5scGlfY2FwYWJpbGl0aWVzID0gcnRsODE2OV9nZXRfbHBpX2NhcHModHApO1xcbitcXHR0cC1cXHUwMDNlcGh5bGlua19jb25maWcubWFjX2NhcGFiaWxpdGllcyB8PSBNQUNfQVNZTV9QQVVTRSB8IE1BQ19TWU1fUEFVU0U7XFxuK1xcbitcXHRzd2l0Y2ggKHRwLVxcdTAwM2VzZnBfbW9kZSkge1xcbitcXHRjYXNlIFJUTF9TRlBfODE2OF9BRjpcXG4rXFx0XFx0dHAtXFx1MDAzZXBjcy5vcHMgPSBcXHUwMDI2cjgxNjlfcGNzX29wcztcXG4rXFx0XFx0dHAtXFx1MDAzZXBoeWxpbmtfY29uZmlnLmRlZmF1bHRfYW5faW5iYW5kID0gdHJ1ZTtcXG4rXFx0XFx0cGh5X21vZGUgPSBQSFlfSU5URVJGQUNFX01PREVfMTAwMEJBU0VYO1xcbitcXHRcXHR0cC1cXHUwMDNlcGh5bGlua19jb25maWcubWFjX2NhcGFiaWxpdGllcyB8PSBNQUNfMTAwMEZEO1xcbitcXHRcXHRicmVhaztcXG4rXFx0Y2FzZSBSVExfU0ZQXzgxMjdfQVRGOlxcbitcXHRcXHR0cC1cXHUwMDNlcGNzLm9wcyA9IFxcdTAwMjZyODE2OV9wY3Nfb3BzO1xcbitcXHRcXHRwaHlfbW9kZSA9IFBIWV9JTlRFUkZBQ0VfTU9ERV8xMEdCQVNFUjtcXG4rXFx0XFx0dHAtXFx1MDAzZXBoeWxpbmtfY29uZmlnLmRlZmF1bHRfYW5faW5iYW5kID0gdHJ1ZTtcXG4rXFx0XFx0dHAtXFx1MDAzZXBoeWxpbmtfY29uZmlnLm1hY19jYXBhYmlsaXRpZXMgfD0gTUFDXzEwMDBGRCB8IE1BQ18xMDAwMEZEO1xcbitcXHRcXHRicmVhaztcXG4rXFx0ZGVmYXVsdDpcXG4rXFx0XFx0cGh5X21vZGUgPSBQSFlfSU5URVJGQUNFX01PREVfSU5URVJOQUw7XFxuK1xcdFxcdHRwLVxcdTAwM2VwaHlsaW5rX2NvbmZpZy5tYWNfY2FwYWJpbGl0aWVzIHw9IE1BQ18xMCB8IE1BQ18xMDA7XFxuK1xcbitcXHRcXHRpZiAodHAtXFx1MDAzZW1hY192ZXJzaW9uID09IFJUTF9HSUdBX01BQ19WRVJfODApXFxuK1xcdFxcdFxcdHRwLVxcdTAwM2VwaHlsaW5rX2NvbmZpZy5tYWNfY2FwYWJpbGl0aWVzIHw9IE1BQ18xMDAwRkQgfCBNQUNfMjUwMEZEIHxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgIE1BQ181MDAwRkQgfCBNQUNfMTAwMDBGRDtcXG4rXFx0XFx0ZWxzZSBpZiAodHAtXFx1MDAzZW1hY192ZXJzaW9uID09IFJUTF9HSUdBX01BQ19WRVJfNzApXFxuK1xcdFxcdFxcdHRwLVxcdTAwM2VwaHlsaW5rX2NvbmZpZy5tYWNfY2FwYWJpbGl0aWVzIHw9IE1BQ18xMDAwRkQgfFxcbitcXHRcXHRcXHRcXHRcXHRcXHRcXHQgICAgICAgTUFDXzI1MDBGRCB8IE1BQ181MDAwRkQ7XFxuK1xcdFxcdGVsc2UgaWYgKHRwLVxcdTAwM2VtYWNfdmVyc2lvbiBcXHUwMDNlPSBSVExfR0lHQV9NQUNfVkVSXzYxKVxcbitcXHRcXHRcXHR0cC1cXHUwMDNlcGh5bGlua19jb25maWcubWFjX2NhcGFiaWxpdGllcyB8PSBNQUNfMTAwMEZEIHwgTUFDXzI1MDBGRDtcXG4rXFx0XFx0ZWxzZVxcbitcXHRcXHRcXHRpZiAodHAtXFx1MDAzZXN1cHBvcnRzX2dtaWkpXFxuK1xcdFxcdFxcdFxcdHRwLVxcdTAwM2VwaHlsaW5rX2NvbmZpZy5tYWNfY2FwYWJpbGl0aWVzIHw9IE1BQ18xMDAwRkQ7XFxuK1xcbitcXHRcXHRpZiAodHAtXFx1MDAzZW1hY192ZXJzaW9uIFxcdTAwM2MgUlRMX0dJR0FfTUFDX1ZFUl82MSlcXG4rXFx0XFx0XFx0cGh5X21vZGUgPSB0cC1cXHUwMDNlc3VwcG9ydHNfZ21paSA/IFBIWV9JTlRFUkZBQ0VfTU9ERV9HTUlJIDpcXG4rXFx0XFx0XFx0XFx0ICAgUEhZX0lOVEVSRkFDRV9NT0RFX01JSTtcXG4rXFx0XFx0ZWxzZVxcbitcXHRcXHRcXHRwaHlfbW9kZSA9IFBIWV9JTlRFUkZBQ0VfTU9ERV9JTlRFUk5BTDtcXG4rXFx0XFx0YnJlYWs7XFxuK1xcdH1cXG4rXFxuK1xcdF9fc2V0X2JpdChwaHlfbW9kZSwgdHAtXFx1MDAzZXBoeWxpbmtfY29uZmlnLnN1cHBvcnRlZF9pbnRlcmZhY2VzKTtcXG4rXFx0aWYgKHRwLVxcdTAwM2VwaHlsaW5rX2NvbmZpZy5scGlfY2FwYWJpbGl0aWVzKVxcbitcXHRcXHRfX3NldF9iaXQocGh5X21vZGUsIHRwLVxcdTAwM2VwaHlsaW5rX2NvbmZpZy5scGlfaW50ZXJmYWNlcyk7XFxuK1xcbitcXHRwbCA9IHBoeWxpbmtfY3JlYXRlKFxcdTAwMjZ0cC1cXHUwMDNlcGh5bGlua19jb25maWcsIHRwX3RvX2Rldih0cCktXFx1MDAzZWZ3bm9kZSxcXG4rXFx0XFx0XFx0ICAgIHBoeV9tb2RlLCBcXHUwMDI2cnRsX3BoeWxpbmtfbWFjX29wcyk7XFxuK1xcdGlmIChJU19FUlIocGwpKVxcbitcXHRcXHRyZXR1cm4gUFRSX0VSUihwbCk7XFxuK1xcbitcXHR0cC1cXHUwMDNlcGh5bGluayA9IHBsO1xcbitcXG4rXFx0cmV0dXJuIDA7XFxuK31cXG4rXFxuIHN0YXRpYyBpbnQgcnRsX2luaXRfb25lKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KVxcbiB7XFxuIFxcdGNvbnN0IHN0cnVjdCBydGxfY2hpcF9pbmZvICpjaGlwO1xcbkBAIC01NjY3LDYgKzYwMzUsNyBAQCBzdGF0aWMgaW50IHJ0bF9pbml0X29uZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudClcXG4gXFx0XFx0XFx0XFx0ICAgICBleHRfeGlkX3N0ciwgeGlkKTtcXG4gXFx0dHAtXFx1MDAzZW1hY192ZXJzaW9uID0gY2hpcC1cXHUwMDNlbWFjX3ZlcnNpb247XFxuIFxcdHRwLVxcdTAwM2Vmd19uYW1lID0gY2hpcC1cXHUwMDNlZndfbmFtZTtcXG4rXFx0dHAtXFx1MDAzZXNwZWVkID0gU1BFRURfVU5LTk9XTjtcXG4gXFxuIFxcdC8qIERpc2FibGUgQVNQTSBMMSBhcyB0aGF0IGNhdXNlIHJhbmRvbSBkZXZpY2Ugc3RvcCB3b3JraW5nXFxuIFxcdCAqIHByb2JsZW1zIGFzIHdlbGwgYXMgZnVsbCBzeXN0ZW0gaGFuZ3MgZm9yIHNvbWUgUENJZSBkZXZpY2VzIHVzZXJzLlxcbkBAIC01Njc5LDEyICs2MDQ4LDcgQEAgc3RhdGljIGludCBydGxfaW5pdF9vbmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpXFxuIFxcdH1cXG4gXFx0dHAtXFx1MDAzZWFzcG1fbWFuYWdlYWJsZSA9ICFyYztcXG4gXFxuLVxcdGlmIChydGxfaXNfODEyNSh0cCkpIHtcXG4tXFx0XFx0dTE2IGRhdGEgPSByODE2OF9tYWNfb2NwX3JlYWQodHAsIDB4ZDAwNik7XFxuLVxcbi1cXHRcXHRpZiAoKGRhdGEgXFx1MDAyNiAweGZmKSA9PSAweDA3KVxcbi1cXHRcXHRcXHR0cC1cXHUwMDNlc2ZwX21vZGUgPSB0cnVlO1xcbi1cXHR9XFxuK1xcdHRwLVxcdTAwM2VzZnBfbW9kZSA9IHJ0bF9nZXRfc2ZwX21vZGUodHApO1xcbiBcXG4gXFx0dHAtXFx1MDAzZWRhc2hfdHlwZSA9IHJ0bF9nZXRfZGFzaF90eXBlKHRwKTtcXG4gXFx0dHAtXFx1MDAzZWRhc2hfZW5hYmxlZCA9IHJ0bF9kYXNoX2lzX2VuYWJsZWQodHApO1xcbkBAIC01Nzg4LDEzICs2MTUyLDIzIEBAIHN0YXRpYyBpbnQgcnRsX2luaXRfb25lKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KVxcbiBcXG4gXFx0cGNpX3NldF9kcnZkYXRhKHBkZXYsIHRwKTtcXG4gXFxuLVxcdHJjID0gcjgxNjlfbWRpb19yZWdpc3Rlcih0cCk7XFxuK1xcdHJjID0gcnRsX2luaXRfcGh5bGluayh0cCk7XFxuIFxcdGlmIChyYylcXG4gXFx0XFx0cmV0dXJuIHJjO1xcbiBcXG4rXFx0aWYgKHRwLVxcdTAwM2VzZnBfbW9kZSA9PSBSVExfU0ZQX05PTkUpIHtcXG4rXFx0XFx0cmMgPSByODE2OV9tZGlvX3JlZ2lzdGVyKHRwKTtcXG4rXFx0XFx0aWYgKHJjKSB7XFxuK1xcdFxcdFxcdHBoeWxpbmtfZGVzdHJveSh0cC1cXHUwMDNlcGh5bGluayk7XFxuK1xcdFxcdFxcdHJldHVybiByYztcXG4rXFx0XFx0fVxcbitcXHR9XFxuK1xcbiBcXHRyYyA9IHJlZ2lzdGVyX25ldGRldihkZXYpO1xcbi1cXHRpZiAocmMpXFxuK1xcdGlmIChyYykge1xcbitcXHRcXHRwaHlsaW5rX2Rlc3Ryb3kodHAtXFx1MDAzZXBoeWxpbmspO1xcbiBcXHRcXHRyZXR1cm4gcmM7XFxuK1xcdH1cXG4gXFxuIFxcdGlmIChJU19FTkFCTEVEKENPTkZJR19SODE2OV9MRURTKSkge1xcbiBcXHRcXHRpZiAocnRsX2lzXzgxMjUodHApKVxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jIGIvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY1xcbmluZGV4IDU5ZGZlMzVhZmE1NGZjLi5jNDUwZWUzM2I3NWNjMSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jXFxuKysrIGIvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY1xcbkBAIC0xODI4LDYgKzE4MjgsNzIgQEAgaW50IHBoeWxpbmtfc2V0X2ZpeGVkX2xpbmsoc3RydWN0IHBoeWxpbmsgKnBsLFxcbiB9XFxuIEVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfc2V0X2ZpeGVkX2xpbmspO1xcbiBcXG4rLyoqXFxuKyAqIHBoeWxpbmtfc2V0X21hY19jYXBhYmlsaXRpZXMoKSAtIER5bmFtaWNhbGx5IHVwZGF0ZSBNQUMgY2FwYWJpbGl0aWVzXFxuKyAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbisgKiBAbWFjX2NhcGFiaWxpdGllczogdGhlIG5ldyBNQUMgY2FwYWJpbGl0aWVzIG1hc2tcXG4rICpcXG4rICogVGhpcyBmdW5jdGlvbiBhbGxvd3MgYSBNQUMgZHJpdmVyIHRvIGR5bmFtaWNhbGx5IGNoYW5nZSBpdHMgY2FwYWJpbGl0aWVzLFxcbisgKiBzdWNoIGFzIGxvc2luZy9nYWluaW5nIFBhdXNlIGZyYW1lIHN1cHBvcnQgYmFzZWQgb24gTVRVIHNpemUuXFxuKyAqIEl0IHJlY2FsY3VsYXRlcyBzdXBwb3J0ZWQgbGluayBtb2RlcyBhbmQgdHJpZ2dlcnMgcmVuZWdvdGlhdGlvbiBpZiBuZWVkZWQuXFxuKyAqL1xcbit2b2lkIHBoeWxpbmtfc2V0X21hY19jYXBhYmlsaXRpZXMoc3RydWN0IHBoeWxpbmsgKnBsLCB1bnNpZ25lZCBsb25nIG1hY19jYXBhYmlsaXRpZXMpXFxuK3tcXG4rXFx0c3RydWN0IHBoeWxpbmtfbGlua19zdGF0ZSAqY29uZmlnID0gXFx1MDAyNnBsLVxcdTAwM2VsaW5rX2NvbmZpZztcXG4rXFx0dW5zaWduZWQgbG9uZyBjYXBzX2FkZGVkLCBjYXBzX3JlbW92ZWQ7XFxuK1xcbitcXHRBU1NFUlRfUlROTCgpO1xcbitcXG4rXFx0Y2Fwc19hZGRlZCA9IG1hY19jYXBhYmlsaXRpZXMgXFx1MDAyNiB+cGwtXFx1MDAzZWNvbmZpZy1cXHUwMDNlbWFjX2NhcGFiaWxpdGllcztcXG4rXFx0Y2Fwc19yZW1vdmVkID0gcGwtXFx1MDAzZWNvbmZpZy1cXHUwMDNlbWFjX2NhcGFiaWxpdGllcyBcXHUwMDI2IH5tYWNfY2FwYWJpbGl0aWVzO1xcbitcXG4rXFx0aWYgKCFjYXBzX2FkZGVkIFxcdTAwMjZcXHUwMDI2ICFjYXBzX3JlbW92ZWQpXFxuK1xcdFxcdHJldHVybjtcXG4rXFxuK1xcdG11dGV4X2xvY2soXFx1MDAyNnBsLVxcdTAwM2VzdGF0ZV9tdXRleCk7XFxuK1xcbitcXHRwbC1cXHUwMDNlY29uZmlnLVxcdTAwM2VtYWNfY2FwYWJpbGl0aWVzID0gbWFjX2NhcGFiaWxpdGllcztcXG4rXFxuK1xcdGlmIChjYXBzX3JlbW92ZWQgXFx1MDAyNiBNQUNfU1lNX1BBVVNFKVxcbitcXHRcXHRsaW5rbW9kZV9jbGVhcl9iaXQoRVRIVE9PTF9MSU5LX01PREVfUGF1c2VfQklULCBwbC1cXHUwMDNlc3VwcG9ydGVkKTtcXG4rXFx0aWYgKGNhcHNfcmVtb3ZlZCBcXHUwMDI2IE1BQ19BU1lNX1BBVVNFKVxcbitcXHRcXHRsaW5rbW9kZV9jbGVhcl9iaXQoRVRIVE9PTF9MSU5LX01PREVfQXN5bV9QYXVzZV9CSVQsIHBsLVxcdTAwM2VzdXBwb3J0ZWQpO1xcbitcXG4rXFx0bGlua21vZGVfYW5kKGNvbmZpZy1cXHUwMDNlYWR2ZXJ0aXNpbmcsIGNvbmZpZy1cXHUwMDNlYWR2ZXJ0aXNpbmcsIHBsLVxcdTAwM2VzdXBwb3J0ZWQpO1xcbitcXG4rXFx0aWYgKGNhcHNfYWRkZWQgXFx1MDAyNiBNQUNfU1lNX1BBVVNFKSB7XFxuK1xcdFxcdGxpbmttb2RlX3NldF9iaXQoRVRIVE9PTF9MSU5LX01PREVfUGF1c2VfQklULCBwbC1cXHUwMDNlc3VwcG9ydGVkKTtcXG4rXFx0XFx0aWYgKHBsLVxcdTAwM2VwaHlkZXYgXFx1MDAyNlxcdTAwMjYgIXBoeWxpbmtfdGVzdChwbC1cXHUwMDNlcGh5ZGV2LVxcdTAwM2VzdXBwb3J0ZWQsIFBhdXNlKSlcXG4rXFx0XFx0XFx0bGlua21vZGVfY2xlYXJfYml0KEVUSFRPT0xfTElOS19NT0RFX1BhdXNlX0JJVCwgcGwtXFx1MDAzZXN1cHBvcnRlZCk7XFxuK1xcdH1cXG4rXFx0aWYgKGNhcHNfYWRkZWQgXFx1MDAyNiBNQUNfQVNZTV9QQVVTRSkge1xcbitcXHRcXHRsaW5rbW9kZV9zZXRfYml0KEVUSFRPT0xfTElOS19NT0RFX0FzeW1fUGF1c2VfQklULCBwbC1cXHUwMDNlc3VwcG9ydGVkKTtcXG4rXFx0XFx0aWYgKHBsLVxcdTAwM2VwaHlkZXYgXFx1MDAyNlxcdTAwMjYgIXBoeWxpbmtfdGVzdChwbC1cXHUwMDNlcGh5ZGV2LVxcdTAwM2VzdXBwb3J0ZWQsIEFzeW1fUGF1c2UpKVxcbitcXHRcXHRcXHRsaW5rbW9kZV9jbGVhcl9iaXQoRVRIVE9PTF9MSU5LX01PREVfQXN5bV9QYXVzZV9CSVQsIHBsLVxcdTAwM2VzdXBwb3J0ZWQpO1xcbitcXHR9XFxuK1xcbitcXHRsaW5rbW9kZV9hbmQoY29uZmlnLVxcdTAwM2VhZHZlcnRpc2luZywgY29uZmlnLVxcdTAwM2VhZHZlcnRpc2luZywgcGwtXFx1MDAzZXN1cHBvcnRlZCk7XFxuK1xcbitcXHRpZiAoY29uZmlnLVxcdTAwM2VwYXVzZSBcXHUwMDI2IE1MT19QQVVTRV9BTikge1xcbitcXHRcXHRpZiAocGh5bGlua190ZXN0KHBsLVxcdTAwM2VzdXBwb3J0ZWQsIFBhdXNlKSlcXG4rXFx0XFx0XFx0bGlua21vZGVfc2V0X2JpdChFVEhUT09MX0xJTktfTU9ERV9QYXVzZV9CSVQsIGNvbmZpZy1cXHUwMDNlYWR2ZXJ0aXNpbmcpO1xcbitcXG4rXFx0XFx0aWYgKHBoeWxpbmtfdGVzdChwbC1cXHUwMDNlc3VwcG9ydGVkLCBBc3ltX1BhdXNlKSlcXG4rXFx0XFx0XFx0bGlua21vZGVfc2V0X2JpdChFVEhUT09MX0xJTktfTU9ERV9Bc3ltX1BhdXNlX0JJVCwgY29uZmlnLVxcdTAwM2VhZHZlcnRpc2luZyk7XFxuK1xcdH1cXG4rXFxuK1xcdGlmICghcGwtXFx1MDAzZXBoeWRldilcXG4rXFx0XFx0cGh5bGlua19jaGFuZ2VfaW5iYW5kX2FkdmVydChwbCk7XFxuK1xcbitcXHRtdXRleF91bmxvY2soXFx1MDAyNnBsLVxcdTAwM2VzdGF0ZV9tdXRleCk7XFxuK1xcbitcXHRpZiAocGwtXFx1MDAzZXBoeWRldikge1xcbitcXHRcXHRsaW5rbW9kZV9jb3B5KHBsLVxcdTAwM2VwaHlkZXYtXFx1MDAzZWFkdmVydGlzaW5nLCBjb25maWctXFx1MDAzZWFkdmVydGlzaW5nKTtcXG4rXFx0XFx0cGh5X3N0YXJ0X2FuZWcocGwtXFx1MDAzZXBoeWRldik7XFxuK1xcdH1cXG4rfVxcbitFWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX3NldF9tYWNfY2FwYWJpbGl0aWVzKTtcXG4rXFxuIC8qKlxcbiAgKiBwaHlsaW5rX2NyZWF0ZSgpIC0gY3JlYXRlIGEgcGh5bGluayBpbnN0YW5jZVxcbiAgKiBAY29uZmlnOiBhIHBvaW50ZXIgdG8gdGhlIHRhcmdldCBcXHUwMDI2c3RydWN0IHBoeWxpbmtfY29uZmlnXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jIGIvZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmNcXG5pbmRleCBiNjVkMGY1ZmExYTAxNC4uNDcyMWJhMDcxY2JiZTQgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmNcXG4rKysgYi9kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uY1xcbkBAIC0xNyw3ICsxNyw2IEBAXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9kZWxheS5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvY2xrLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9zdHJpbmdfY2hvaWNlcy5oXFx1MDAzZVxcbi0jaW5jbHVkZSBcXHUwMDNjbmV0L3BoeS9yZWFsdGVrX3BoeS5oXFx1MDAzZVxcbiBcXG4gI2luY2x1ZGUgXFxcIi4uL3BoeWxpYi5oXFxcIlxcbiAjaW5jbHVkZSBcXFwicmVhbHRlay5oXFxcIlxcbkBAIC0yNjQ2LDQ1ICsyNjQ1LDYgQEAgc3RhdGljIGlycXJldHVybl90IHJ0bDgyMjFiX2hhbmRsZV9pbnRlcnJ1cHQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4gXFx0cmV0dXJuIElSUV9IQU5ETEVEO1xcbiB9XFxuIFxcbi1zdGF0aWMgaW50IHJ0bGdlbl9zZnBfZ2V0X2ZlYXR1cmVzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuLXtcXG4tXFx0bGlua21vZGVfc2V0X2JpdChFVEhUT09MX0xJTktfTU9ERV8xMDAwMGJhc2VUX0Z1bGxfQklULFxcbi1cXHRcXHRcXHQgcGh5ZGV2LVxcdTAwM2VzdXBwb3J0ZWQpO1xcbi1cXG4tXFx0Lyogc2V0IGRlZmF1bHQgbW9kZSAqL1xcbi1cXHRwaHlkZXYtXFx1MDAzZXNwZWVkID0gU1BFRURfMTAwMDA7XFxuLVxcdHBoeWRldi1cXHUwMDNlZHVwbGV4ID0gRFVQTEVYX0ZVTEw7XFxuLVxcbi1cXHRwaHlkZXYtXFx1MDAzZXBvcnQgPSBQT1JUX0ZJQlJFO1xcbi1cXG4tXFx0cmV0dXJuIDA7XFxuLX1cXG4tXFxuLXN0YXRpYyBpbnQgcnRsZ2VuX3NmcF9yZWFkX3N0YXR1cyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi17XFxuLVxcdGludCB2YWwsIGVycjtcXG4tXFxuLVxcdGVyciA9IGdlbnBoeV91cGRhdGVfbGluayhwaHlkZXYpO1xcbi1cXHRpZiAoZXJyKVxcbi1cXHRcXHRyZXR1cm4gZXJyO1xcbi1cXG4tXFx0aWYgKCFwaHlkZXYtXFx1MDAzZWxpbmspXFxuLVxcdFxcdHJldHVybiAwO1xcbi1cXG4tXFx0dmFsID0gcGh5X3JlYWQocGh5ZGV2LCBSVExfUEhZU1IpO1xcbi1cXHRpZiAodmFsIFxcdTAwM2MgMClcXG4tXFx0XFx0cmV0dXJuIHZhbDtcXG4tXFxuLVxcdHJ0bGdlbl9kZWNvZGVfcGh5c3IocGh5ZGV2LCB2YWwpO1xcbi1cXG4tXFx0cmV0dXJuIDA7XFxuLX1cXG4tXFxuLXN0YXRpYyBpbnQgcnRsZ2VuX3NmcF9jb25maWdfYW5lZyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi17XFxuLVxcdHJldHVybiAwO1xcbi19XFxuLVxcbiBzdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgcmVhbHRla19kcnZzW10gPSB7XFxuIFxcdHtcXG4gXFx0XFx0UEhZX0lEX01BVENIX0VYQUNUKDB4MDAwMDgyMDEpLFxcbkBAIC0yOTM0LDIwICsyODk0LDYgQEAgc3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIHJlYWx0ZWtfZHJ2c1tdID0ge1xcbiBcXHRcXHQud3JpdGVfcGFnZVxcdD0gcnRsODIxeF93cml0ZV9wYWdlLFxcbiBcXHRcXHQucmVhZF9tbWRcXHQ9IHJ0bDgyMnhfcmVhZF9tbWQsXFxuIFxcdFxcdC53cml0ZV9tbWRcXHQ9IHJ0bDgyMnhfd3JpdGVfbW1kLFxcbi1cXHR9LCB7XFxuLVxcdFxcdFBIWV9JRF9NQVRDSF9FWEFDVChQSFlfSURfUlRMX0RVTU1ZX1NGUCksXFxuLVxcdFxcdC5uYW1lXFx0XFx0PSBcXFwiUmVhbHRlayBTRlAgUEhZIE1vZGVcXFwiLFxcbi1cXHRcXHQuZmxhZ3NcXHRcXHQ9IFBIWV9JU19JTlRFUk5BTCxcXG4tXFx0XFx0LnByb2JlXFx0XFx0PSBydGw4MjJ4X3Byb2JlLFxcbi1cXHRcXHQuZ2V0X2ZlYXR1cmVzXFx0PSBydGxnZW5fc2ZwX2dldF9mZWF0dXJlcyxcXG4tXFx0XFx0LmNvbmZpZ19hbmVnXFx0PSBydGxnZW5fc2ZwX2NvbmZpZ19hbmVnLFxcbi1cXHRcXHQucmVhZF9zdGF0dXNcXHQ9IHJ0bGdlbl9zZnBfcmVhZF9zdGF0dXMsXFxuLVxcdFxcdC5zdXNwZW5kXFx0PSBnZW5waHlfc3VzcGVuZCxcXG4tXFx0XFx0LnJlc3VtZVxcdFxcdD0gcnRsZ2VuX3Jlc3VtZSxcXG4tXFx0XFx0LnJlYWRfcGFnZVxcdD0gcnRsODIxeF9yZWFkX3BhZ2UsXFxuLVxcdFxcdC53cml0ZV9wYWdlXFx0PSBydGw4MjF4X3dyaXRlX3BhZ2UsXFxuLVxcdFxcdC5yZWFkX21tZFxcdD0gcnRsODIyeF9yZWFkX21tZCxcXG4tXFx0XFx0LndyaXRlX21tZFxcdD0gcnRsODIyeF93cml0ZV9tbWQsXFxuIFxcdH0sIHtcXG4gXFx0XFx0UEhZX0lEX01BVENIX0VYQUNUKDB4MDAxY2NhZDApLFxcbiBcXHRcXHQubmFtZVxcdFxcdD0gXFxcIlJUTDgyMjQgMi41R2JwcyBQSFlcXFwiLFxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaCBiL2luY2x1ZGUvbGludXgvcGh5bGluay5oXFxuaW5kZXggMmJjMGRiM2Q1MmFjOGQuLjU2NjQyYWI5NjFhNzUzIDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvbGludXgvcGh5bGluay5oXFxuKysrIGIvaW5jbHVkZS9saW51eC9waHlsaW5rLmhcXG5AQCAtODQyLDQgKzg0Miw2IEBAIHZvaWQgcGh5bGlua19yZXBsYXlfbGlua19iZWdpbihzdHJ1Y3QgcGh5bGluayAqcGwpO1xcbiBcXG4gdm9pZCBwaHlsaW5rX3JlcGxheV9saW5rX2VuZChzdHJ1Y3QgcGh5bGluayAqcGwpO1xcbiBcXG4rdm9pZCBwaHlsaW5rX3NldF9tYWNfY2FwYWJpbGl0aWVzKHN0cnVjdCBwaHlsaW5rICpwbCwgdW5zaWduZWQgbG9uZyBtYWNfY2FwYWJpbGl0aWVzKTtcXG4rXFxuICNlbmRpZlxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9waHkvcmVhbHRla19waHkuaCBiL2luY2x1ZGUvbmV0L3BoeS9yZWFsdGVrX3BoeS5oXFxuZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0XFxuaW5kZXggZDY4M2JjMWIwNjU5Y2QuLjAwMDAwMDAwMDAwMDAwXFxuLS0tIGEvaW5jbHVkZS9uZXQvcGh5L3JlYWx0ZWtfcGh5LmhcXG4rKysgL2Rldi9udWxsXFxuQEAgLTEsNyArMCwwIEBAXFxuLS8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wICovXFxuLSNpZm5kZWYgX1JFQUxURUtfUEhZX0hcXG4tI2RlZmluZSBfUkVBTFRFS19QSFlfSFxcbi1cXG4tI2RlZmluZVxcdFBIWV9JRF9SVExfRFVNTVlfU0ZQXFx0MHgwMDFjY2JmZlxcbi1cXG4tI2VuZGlmIC8qIF9SRUFMVEVLX1BIWV9IICovXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDE2OjM0OjQyLjYwNTU1NTg1WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0ODUxNDExMTE2NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJSODE2OVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInBoeWxpbmtfc2V0X21hY19jYXBhYmlsaXRpZXNcIixcbiAgICBcInJ0bF9pbml0X3BoeWxpbmtcIixcbiAgICBcInJ0bDgxNjlfcGNzX2NvbmZpZ1wiLFxuICAgIFwicnRsODE2OV9wY3NfZ2V0X3N0YXRlXCIsXG4gICAgXCJydGxfbWFjX2xpbmtfdXBcIixcbiAgICBcInJ0bF9tYWNfbGlua19kb3duXCIsXG4gICAgXCJydGxfbWFjX3NlbGVjdF9wY3NcIixcbiAgICBcInJ0bF9tYWNfZGlzYWJsZV90eF9scGlcIixcbiAgICBcInJ0bF9tYWNfZW5hYmxlX3R4X2xwaVwiLFxuICAgIFwicnRsODE2OV9jaGFuZ2VfbXR1XCIsXG4gICAgXCJydGxfbG93cG93ZXJfaGlkZGVuX2Z1bmN0aW9uc1wiLFxuICAgIFwicjgxMjdfc2ZwX2luaXRfMWdcIixcbiAgICBcInI4MTI3X3NmcF9pbml0XzEwZ1wiLFxuICAgIFwicnRsODE2OV9pb2N0bFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1pZ3JhdGVzIHRoZSBSZWFsdGVrIHI4MTY5IEV0aGVybmV0IGRyaXZlciBmcm9tIHBoeWxpYiB0byBwaHlsaW5rLCBpbnRyb2R1Y2luZyBzaWduaWZpY2FudCBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGRyaXZlcidzIGluaXRpYWxpemF0aW9uLCBsaW5rIG1hbmFnZW1lbnQsIGFuZCBNVFUgaGFuZGxpbmcuIEl0IGFsc28gYWRkcyBhIG5ldyBwaHlsaW5rIEFQSSBgcGh5bGlua19zZXRfbWFjX2NhcGFiaWxpdGllc2AgdG8gZHluYW1pY2FsbHkgdXBkYXRlIE1BQyBjYXBhYmlsaXRpZXMuIFRoZXNlIGFyZSByZWFjaGFibGUgY29udHJvbC1wYXRoIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQsIGVzcGVjaWFsbHkgdmlhIHN5el9wY2kgYW5kIG5ldGxpbmsvaW9jdGwgaW50ZXJmYWNlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAxZjc4NTAwNDU2YjgzOTNlYWQ2ZDZmYmMxNWE0OWMzYjU4NTBhOWY0XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBKdWwgNyAxNjozNDozOSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZ1xuaW5kZXggOWIwZjRmOTYzMWRiYWEuLjQ5YWM3MjczNDIyNWY3IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9LY29uZmlnXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWdcbkBAIC04OCw2ICs4OCw3IEBAIGNvbmZpZyBSODE2OVxuIFx0c2VsZWN0IENSQzMyXG4gXHRzZWxlY3QgUEhZTElCXG4gXHRzZWxlY3QgUkVBTFRFS19QSFlcbitcdHNlbGVjdCBQSFlMSU5LXG4gXHRoZWxwXG4gXHQgIFNheSBZIGhlcmUgaWYgeW91IGhhdmUgYSBSZWFsdGVrIEV0aGVybmV0IGFkYXB0ZXIgYmVsb25naW5nIHRvXG4gXHQgIHRoZSBmb2xsb3dpbmcgZmFtaWxpZXM6XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uY1xuaW5kZXggZWM0ZmMyMWZhMjFmYjAuLjEyZTA3M2I5YTYxNDc5IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jXG5AQCAtMjYsMTIgKzI2LDEyIEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvZG1hLW1hcHBpbmcuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3BtX3J1bnRpbWUuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2JpdGZpZWxkLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9waHlsaW5rLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9wcmVmZXRjaC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvaXB2Ni5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvdW5hbGlnbmVkLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NuZXQvaXA2X2NoZWNrc3VtLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NuZXQvbmV0ZGV2X3F1ZXVlcy5oXHUwMDNlXG4tI2luY2x1ZGUgXHUwMDNjbmV0L3BoeS9yZWFsdGVrX3BoeS5oXHUwMDNlXG4gXG4gI2luY2x1ZGUgXCJyODE2OS5oXCJcbiAjaW5jbHVkZSBcInI4MTY5X2Zpcm13YXJlLmhcIlxuQEAgLTk2LDYgKzk2LDI4IEBAXG4gI2RlZmluZSBKVU1CT185S1x0KDkgKiBTWl8xSyAtIFZMQU5fRVRIX0hMRU4gLSBFVEhfRkNTX0xFTilcbiAjZGVmaW5lIEpVTUJPXzE2S1x0KFNaXzE2SyAtIFZMQU5fRVRIX0hMRU4gLSBFVEhfRkNTX0xFTilcbiBcbisjZGVmaW5lIE9DUF9TRFNfQUREUl9SRUdcdFx0MHhFQjEwXG4rI2RlZmluZSBPQ1BfU0RTX0NNRF9SRUdcdFx0XHQweEVCMEVcbisjZGVmaW5lIE9DUF9TRFNfREFUQV9SRUdcdFx0MHhFQjE0XG4rI2RlZmluZSBTRFNfQ01EX1JFQURcdFx0XHQweDAwMDFcbisjZGVmaW5lIFJUTF9TRFNfQzIyX0JBU0VcdFx0MHg0MFxuKyNkZWZpbmUgUlRMX1NEU19DNDVfQkFTRVx0XHQweDAwODBcbisjZGVmaW5lIFJUTF9QS0dfREVURUNUXHRcdFx0MHhkYzAwXG4rI2RlZmluZSBSVExfUEtHX0RFVEVDVF9NQVNLXHRcdDB4MDA3OFxuKyNkZWZpbmUgUlRMX1BLR19ERVRFQ1RfODExNkFGXHRcdDB4MDAzMFxuKyNkZWZpbmUgUlRMX0lOVF9IV19JRFx0XHRcdDB4ZDAwNlxuKyNkZWZpbmUgUlRMX0lOVF9IV19JRF9NQVNLXHRcdDB4MDBmZlxuKyNkZWZpbmUgUlRMX0lOVF9IV19JRF84MTE2QUZcdFx0MHgwMDAwXG4rI2RlZmluZSBSVEw4MTE2QUZfRlVOQ19QTV9DU1JcdFx0MHg4MFxuKyNkZWZpbmUgUlRMODExNkFGX0ZVTkNfRVhQX0xOS0NUTFx0MHg0NFxuKyNkZWZpbmUgUlRMX1BNX0QzSE9UXHRcdFx0R0VOTUFTSygxLCAwKVxuKyNkZWZpbmUgUjgxMjdfU0RTX0NNRFx0XHRcdDB4MjM0OFxuKyNkZWZpbmUgUjgxMjdfU0RTX0FERFJcdFx0XHQweDIzNGFcbisjZGVmaW5lIFI4MTI3X1NEU19EQVRBX0lOXHRcdDB4MjM0Y1xuKyNkZWZpbmUgUjgxMjdfU0RTX0RBVEFfT1VUXHRcdDB4MjM0ZVxuKyNkZWZpbmUgUjgxMjdfU0RTX0NNRF9FWEVDXHRcdEJJVCgwKVxuKyNkZWZpbmUgUjgxMjdfU0RTX0NNRF9XRVx0XHRCSVQoMSlcbitcbiBzdGF0aWMgY29uc3Qgc3RydWN0IHJ0bF9jaGlwX2luZm8ge1xuIFx0dTMyIG1hc2s7XG4gXHR1MzIgdmFsO1xuQEAgLTMzNCwxMSArMzU2LDEzIEBAIGVudW0gcnRsX3JlZ2lzdGVycyB7XG4gXHRBTERQU19MVFJcdD0gMHhlMGEyLFxuIFx0TFRSX09CRkZfTE9DS1x0PSAweGUwMzIsXG4gXHRMVFJfU05PT1BcdD0gMHhlMDM0LFxuK1x0U0VORF9MVFJfTVNHXHQ9IDB4ZTAzOCxcbiBcbiAjZGVmaW5lIEFMRFBTX0xUUl9FTlx0XHRcdEJJVCgwKVxuICNkZWZpbmUgTFRSX09CRkZfTE9DS19FTlx0XHRCSVQoMClcbiAjZGVmaW5lIExJTktfU1BFRURfQ0hBTkdFX0VOXHRcdEJJVCgxNClcbiAjZGVmaW5lIExUUl9TTk9PUF9FTlx0XHRcdEdFTk1BU0soMTUsIDE0KVxuKyNkZWZpbmUgTFRSX01TR19FTlx0XHRcdEJJVCgwKVxuIH07XG4gXG4gZW51bSBydGw4MTY4XzgxMDFfcmVnaXN0ZXJzIHtcbkBAIC03MjgsNiArNzUyLDEyIEBAIGVudW0gcnRsX2Rhc2hfdHlwZSB7XG4gXHRSVExfREFTSF8yNV9CUCxcbiB9O1xuIFxuK2VudW0gcnRsX3NmcF9tb2RlIHtcbitcdFJUTF9TRlBfTk9ORSxcbitcdFJUTF9TRlBfODE2OF9BRixcbitcdFJUTF9TRlBfODEyN19BVEYsXG4rfTtcbitcbiBzdHJ1Y3QgcnRsODE2OV9wcml2YXRlIHtcbiBcdHZvaWQgX19pb21lbSAqbW1pb19hZGRyO1x0LyogbWVtb3J5IG1hcCBwaHlzaWNhbCBhZGRyZXNzICovXG4gXHRzdHJ1Y3QgcGNpX2RldiAqcGNpX2RldjtcbkBAIC03MzYsNiArNzY2LDcgQEAgc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSB7XG4gXHRzdHJ1Y3QgbmFwaV9zdHJ1Y3QgbmFwaTtcbiBcdGVudW0gbWFjX3ZlcnNpb24gbWFjX3ZlcnNpb247XG4gXHRlbnVtIHJ0bF9kYXNoX3R5cGUgZGFzaF90eXBlO1xuK1x0ZW51bSBydGxfc2ZwX21vZGUgc2ZwX21vZGU7XG4gXHR1MzIgY3VyX3J4OyAvKiBJbmRleCBpbnRvIHRoZSBSeCBkZXNjcmlwdG9yIGJ1ZmZlciBvZiBuZXh0IFJ4IHBrdC4gKi9cbiBcdHUzMiBjdXJfdHg7IC8qIEluZGV4IGludG8gdGhlIFR4IGRlc2NyaXB0b3IgYnVmZmVyIG9mIG5leHQgUnggcGt0LiAqL1xuIFx0dTMyIGRpcnR5X3R4O1xuQEAgLTc1MCw2ICs3ODEsNyBAQCBzdHJ1Y3QgcnRsODE2OV9wcml2YXRlIHtcbiBcdHUzMiBpcnFfbWFzaztcbiBcdGludCBpcnE7XG4gXHRzdHJ1Y3QgY2xrICpjbGs7XG4rXHRpbnQgc3BlZWQ7XG4gXG4gXHRzdHJ1Y3Qge1xuIFx0XHRERUNMQVJFX0JJVE1BUChmbGFncywgUlRMX0ZMQUdfTUFYKTtcbkBAIC03NjIsNyArNzk0LDYgQEAgc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSB7XG4gXHR1bnNpZ25lZCBzdXBwb3J0c19nbWlpOjE7XG4gXHR1bnNpZ25lZCBhc3BtX21hbmFnZWFibGU6MTtcbiBcdHVuc2lnbmVkIGRhc2hfZW5hYmxlZDoxO1xuLVx0Ym9vbCBzZnBfbW9kZToxO1xuIFx0ZG1hX2FkZHJfdCBjb3VudGVyc19waHlzX2FkZHI7XG4gXHRzdHJ1Y3QgcnRsODE2OV9jb3VudGVycyAqY291bnRlcnM7XG4gXHRzdHJ1Y3QgcnRsODE2OV90Y19vZmZzZXRzIHRjX29mZnNldDtcbkBAIC03NzQsNiArODA1LDExIEBAIHN0cnVjdCBydGw4MTY5X3ByaXZhdGUge1xuIFx0c3RydWN0IHI4MTY5X2xlZF9jbGFzc2RldiAqbGVkcztcbiBcbiBcdHUzMiBvY3BfYmFzZTtcbitcdHN0cnVjdCBwaHlsaW5rICpwaHlsaW5rO1xuK1x0c3RydWN0IHBoeWxpbmtfY29uZmlnIHBoeWxpbmtfY29uZmlnO1xuK1x0c3RydWN0IHBoeWxpbmtfcGNzIHBjcztcbitcdHN0cnVjdCBldGh0b29sX3BhdXNlcGFyYW0gc2F2ZWRfcGF1c2U7XG4rXHRib29sIGp1bWJvX3BhdXNlX3NhdmVkO1xuIH07XG4gXG4gdHlwZWRlZiB2b2lkICgqcnRsX2dlbmVyaWNfZmN0KShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCk7XG5AQCAtMTEyOCwxMCArMTE2NCw2IEBAIHN0YXRpYyBpbnQgcjgxNjhfcGh5X29jcF9yZWFkKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCB1MzIgcmVnKVxuIFx0aWYgKHJ0bF9vY3BfcmVnX2ZhaWx1cmUocmVnKSlcbiBcdFx0cmV0dXJuIDA7XG4gXG4tXHQvKiBSZXR1cm4gZHVtbXkgTUlJX1BIWVNJRDIgaW4gU0ZQIG1vZGUgdG8gbWF0Y2ggU0ZQIFBIWSBkcml2ZXIgKi9cbi1cdGlmICh0cC1cdTAwM2VzZnBfbW9kZSBcdTAwMjZcdTAwMjYgcmVnID09IChPQ1BfU1REX1BIWV9CQVNFICsgMiAqIE1JSV9QSFlTSUQyKSlcbi1cdFx0cmV0dXJuIFBIWV9JRF9SVExfRFVNTVlfU0ZQIFx1MDAyNiAweGZmZmY7XG4tXG4gXHRSVExfVzMyKHRwLCBHUEhZX09DUCwgcmVnIFx1MDAzY1x1MDAzYyAxNSk7XG4gXG4gXHRyZXR1cm4gcnRsX2xvb3Bfd2FpdF9oaWdoKHRwLCBcdTAwMjZydGxfb2NwX2dwaHlfY29uZCwgMjUsIDEwKSA/XG5AQCAtMTE5OSw2ICsxMjMxLDY3IEBAIHN0YXRpYyB2b2lkIHI4MTI3X3NmcF9zZHNfcGh5X3Jlc2V0KHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuIFx0dXNsZWVwX3JhbmdlKDEwLCAyMCk7XG4gfVxuIFxuK0RFQ0xBUkVfUlRMX0NPTkQocjgxMjdfc2RzX2NtZF9jb25kKVxuK3tcbitcdHJldHVybiBSVExfUjE2KHRwLCBSODEyN19TRFNfQ01EKSBcdTAwMjYgUjgxMjdfU0RTX0NNRF9FWEVDO1xuK31cbitcbitzdGF0aWMgdTE2IHI4MTI3X3Nkc19yZWFkKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCB1MTYgaW5kZXgsIHUxNiBwYWdlLCB1MTYgcmVnKVxuK3tcbitcdHUxNiBhZGRyID0gKGluZGV4IFx1MDAzY1x1MDAzYyAxMSkgfCAocGFnZSBcdTAwM2NcdTAwM2MgNSkgfCByZWc7XG4rXG4rXHRSVExfVzE2KHRwLCBSODEyN19TRFNfQUREUiwgYWRkcik7XG4rXHRSVExfVzE2KHRwLCBSODEyN19TRFNfQ01ELCBSODEyN19TRFNfQ01EX0VYRUMpO1xuK1xuK1x0aWYgKHJ0bF9sb29wX3dhaXRfbG93KHRwLCBcdTAwMjZyODEyN19zZHNfY21kX2NvbmQsIDEwLCAxMDApKVxuK1x0XHRyZXR1cm4gUlRMX1IxNih0cCwgUjgxMjdfU0RTX0RBVEFfT1VUKTtcbitcbitcdHJldHVybiAweGZmZmY7XG4rfVxuK1xuK3N0YXRpYyB2b2lkIHI4MTI3X3Nkc193cml0ZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgdTE2IGluZGV4LCB1MTYgcGFnZSxcbitcdFx0XHQgICAgdTE2IHJlZywgdTE2IHZhbClcbit7XG4rXHR1MTYgYWRkciA9IChpbmRleCBcdTAwM2NcdTAwM2MgMTEpIHwgKHBhZ2UgXHUwMDNjXHUwMDNjIDUpIHwgcmVnO1xuK1xuK1x0UlRMX1cxNih0cCwgUjgxMjdfU0RTX0RBVEFfSU4sIHZhbCk7XG4rXHRSVExfVzE2KHRwLCBSODEyN19TRFNfQUREUiwgYWRkcik7XG4rXHRSVExfVzE2KHRwLCBSODEyN19TRFNfQ01ELCBSODEyN19TRFNfQ01EX0VYRUMgfCBSODEyN19TRFNfQ01EX1dFKTtcbitcbitcdHJ0bF9sb29wX3dhaXRfbG93KHRwLCBcdTAwMjZyODEyN19zZHNfY21kX2NvbmQsIDEwLCAxMDApO1xuK31cbitcbitzdGF0aWMgdm9pZCByODEyN19zZHNfbW9kaWZ5KHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCB1MTYgaW5kZXgsIHUxNiBwYWdlLFxuK1x0XHRcdCAgICAgdTE2IHJlZywgdTE2IGNsZWFybWFzaywgdTE2IHNldG1hc2spXG4re1xuK1x0dTE2IHZhbCA9IHI4MTI3X3Nkc19yZWFkKHRwLCBpbmRleCwgcGFnZSwgcmVnKTtcbitcbitcdHZhbCA9ICh2YWwgXHUwMDI2IH5jbGVhcm1hc2spIHwgc2V0bWFzaztcbitcdHI4MTI3X3Nkc193cml0ZSh0cCwgaW5kZXgsIHBhZ2UsIHJlZywgdmFsKTtcbit9XG4rXG4rc3RhdGljIHZvaWQgcjgxMjdfc2ZwX2luaXRfMWcoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG4re1xuK1x0aW50IHZhbDtcbitcbitcdHI4MTI3X3NmcF9zZHNfcGh5X3Jlc2V0KHRwKTtcbitcbitcdHI4MTI3X3Nkc19tb2RpZnkodHAsIDAsIDEsIDMxLCAwLCBCSVQoMykpO1xuK1x0cjgxMjdfc2RzX21vZGlmeSh0cCwgMCwgMiwgIDAsIEJJVCgxMykgfCBCSVQoMTIpIHwgQklUKDYpLCBCSVQoMTIpIHwgQklUKDYpKTtcbitcdHI4MTI3X3Nkc19tb2RpZnkodHAsIDAsIDAsICA0LCAwLCBCSVQoMikpO1xuK1xuK1x0UlRMX1cxNih0cCwgMHgyMzNhLCAweDgwMDQpO1xuK1x0UlRMX1cxNih0cCwgMHgyMzNlLCAoUlRMX1IxNih0cCwgMHgyMzNlKSBcdTAwMjYgfjB4MzAwMykgfCAweDAwMDIpO1xuK1xuK1x0cjgxNjhfcGh5X29jcF93cml0ZSh0cCwgMHhjNDBhLCAweDAwMDApO1xuK1x0cjgxNjhfcGh5X29jcF93cml0ZSh0cCwgMHhjNDY2LCAweDAwMDApO1xuK1x0cjgxNjhfcGh5X29jcF93cml0ZSh0cCwgMHhjODA4LCAweDAwMDApO1xuK1x0cjgxNjhfcGh5X29jcF93cml0ZSh0cCwgMHhjODBhLCAweDAwMDApO1xuK1xuK1x0dmFsID0gcjgxNjhfcGh5X29jcF9yZWFkKHRwLCAweGM4MDQpO1xuK1x0cjgxNjhfcGh5X29jcF93cml0ZSh0cCwgMHhjODA0LCAodmFsIFx1MDAyNiB+MHgwMDBmKSB8IDB4MDAwYyk7XG4rfVxuK1xuIHN0YXRpYyB2b2lkIHI4MTI3X3NmcF9pbml0XzEwZyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbiB7XG4gXHRpbnQgdmFsO1xuQEAgLTEyMTcsMTIgKzEzMTAsNiBAQCBzdGF0aWMgdm9pZCByODEyN19zZnBfaW5pdF8xMGcoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG4gXHRyODE2OF9waHlfb2NwX3dyaXRlKHRwLCAweGM4MDQsICh2YWwgXHUwMDI2IH4weDAwMGYpIHwgMHgwMDBjKTtcbiB9XG4gXG4tc3RhdGljIHZvaWQgcnRsX3NmcF9pbml0KHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuLXtcbi1cdGlmICh0cC1cdTAwM2VtYWNfdmVyc2lvbiA9PSBSVExfR0lHQV9NQUNfVkVSXzgwKVxuLVx0XHRyODEyN19zZnBfaW5pdF8xMGcodHApO1xuLX1cbi1cbiBzdGF0aWMgdm9pZCBydGxfc2ZwX3Jlc2V0KHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuIHtcbiBcdGlmICh0cC1cdTAwM2VtYWNfdmVyc2lvbiA9PSBSVExfR0lHQV9NQUNfVkVSXzgwKVxuQEAgLTEyODMsNiArMTM3MCwxNSBAQCBzdGF0aWMgdm9pZCBtYWNfbWN1X3dyaXRlKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCBpbnQgcmVnLCBpbnQgdmFsdWUpXG4gXHRyODE2OF9tYWNfb2NwX3dyaXRlKHRwLCB0cC1cdTAwM2VvY3BfYmFzZSArIHJlZywgdmFsdWUpO1xuIH1cbiBcbitzdGF0aWMgYm9vbCBydGxfaXNfODExNmFmKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuK3tcbitcdHJldHVybiB0cC1cdTAwM2VtYWNfdmVyc2lvbiA9PSBSVExfR0lHQV9NQUNfVkVSXzUyIFx1MDAyNlx1MDAyNlxuK1x0XHQocjgxNjhfbWFjX29jcF9yZWFkKHRwLCBSVExfUEtHX0RFVEVDVCkgXHUwMDI2IFJUTF9QS0dfREVURUNUX01BU0spID09XG4rXHRcdFJUTF9QS0dfREVURUNUXzgxMTZBRiBcdTAwMjZcdTAwMjZcbitcdFx0KHI4MTY4X21hY19vY3BfcmVhZCh0cCwgUlRMX0lOVF9IV19JRCkgXHUwMDI2IFJUTF9JTlRfSFdfSURfTUFTSykgPT1cbitcdFx0UlRMX0lOVF9IV19JRF84MTE2QUY7XG4rfVxuK1xuIHN0YXRpYyBpbnQgbWFjX21jdV9yZWFkKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCBpbnQgcmVnKVxuIHtcbiBcdHJldHVybiByODE2OF9tYWNfb2NwX3JlYWQodHAsIHRwLVx1MDAzZW9jcF9iYXNlICsgcmVnKTtcbkBAIC0xNTc4LDYgKzE2NzQsMjAgQEAgc3RhdGljIGJvb2wgcnRsX2Rhc2hfaXNfZW5hYmxlZChzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbiBcdH1cbiB9XG4gXG4rc3RhdGljIGVudW0gcnRsX3NmcF9tb2RlIHJ0bF9nZXRfc2ZwX21vZGUoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG4re1xuK1x0aWYgKHJ0bF9pc184MTI1KHRwKSkge1xuK1x0XHR1MTYgZGF0YSA9IHI4MTY4X21hY19vY3BfcmVhZCh0cCwgUlRMX0lOVF9IV19JRCk7XG4rXG4rXHRcdGlmICgoZGF0YSBcdTAwMjYgMHhmZikgPT0gMHgwNylcbitcdFx0XHRyZXR1cm4gUlRMX1NGUF84MTI3X0FURjtcbitcdH0gZWxzZSBpZiAocnRsX2lzXzgxMTZhZih0cCkpIHtcbitcdFx0cmV0dXJuIFJUTF9TRlBfODE2OF9BRjtcbitcdH1cbitcbitcdHJldHVybiBSVExfU0ZQX05PTkU7XG4rfVxuK1xuIHN0YXRpYyBlbnVtIHJ0bF9kYXNoX3R5cGUgcnRsX2dldF9kYXNoX3R5cGUoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG4ge1xuIFx0c3dpdGNoICh0cC1cdTAwM2VtYWNfdmVyc2lvbikge1xuQEAgLTE2NzMsMTYgKzE3ODMsMTQgQEAgc3RhdGljIHZvaWQgcnRsODE2OV9pcnFfbWFza19hbmRfYWNrKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuIFx0cnRsX3BjaV9jb21taXQodHApO1xuIH1cbiBcbi1zdGF0aWMgdm9pZCBydGxfbGlua19jaGdfcGF0Y2goc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG4rc3RhdGljIHZvaWQgcnRsX2xpbmtfY2hnX3BhdGNoKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCBpbnQgc3BlZWQpXG4ge1xuLVx0c3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiA9IHRwLVx1MDAzZXBoeWRldjtcbi1cbiBcdGlmICh0cC1cdTAwM2VtYWNfdmVyc2lvbiA9PSBSVExfR0lHQV9NQUNfVkVSXzM0IHx8XG4gXHQgICAgdHAtXHUwMDNlbWFjX3ZlcnNpb24gPT0gUlRMX0dJR0FfTUFDX1ZFUl8zOCkge1xuLVx0XHRpZiAocGh5ZGV2LVx1MDAzZXNwZWVkID09IFNQRUVEXzEwMDApIHtcbitcdFx0aWYgKHNwZWVkID09IFNQRUVEXzEwMDApIHtcbiBcdFx0XHRydGxfZXJpX3dyaXRlKHRwLCAweDFiYywgRVJJQVJfTUFTS18xMTExLCAweDAwMDAwMDExKTtcbiBcdFx0XHRydGxfZXJpX3dyaXRlKHRwLCAweDFkYywgRVJJQVJfTUFTS18xMTExLCAweDAwMDAwMDA1KTtcbi1cdFx0fSBlbHNlIGlmIChwaHlkZXYtXHUwMDNlc3BlZWQgPT0gU1BFRURfMTAwKSB7XG4rXHRcdH0gZWxzZSBpZiAoc3BlZWQgPT0gU1BFRURfMTAwKSB7XG4gXHRcdFx0cnRsX2VyaV93cml0ZSh0cCwgMHgxYmMsIEVSSUFSX01BU0tfMTExMSwgMHgwMDAwMDAxZik7XG4gXHRcdFx0cnRsX2VyaV93cml0ZSh0cCwgMHgxZGMsIEVSSUFSX01BU0tfMTExMSwgMHgwMDAwMDAwNSk7XG4gXHRcdH0gZWxzZSB7XG5AQCAtMTY5Miw3ICsxODAwLDcgQEAgc3RhdGljIHZvaWQgcnRsX2xpbmtfY2hnX3BhdGNoKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuIFx0XHRydGxfcmVzZXRfcGFja2V0X2ZpbHRlcih0cCk7XG4gXHR9IGVsc2UgaWYgKHRwLVx1MDAzZW1hY192ZXJzaW9uID09IFJUTF9HSUdBX01BQ19WRVJfMzUgfHxcbiBcdFx0ICAgdHAtXHUwMDNlbWFjX3ZlcnNpb24gPT0gUlRMX0dJR0FfTUFDX1ZFUl8zNikge1xuLVx0XHRpZiAocGh5ZGV2LVx1MDAzZXNwZWVkID09IFNQRUVEXzEwMDApIHtcbitcdFx0aWYgKHNwZWVkID09IFNQRUVEXzEwMDApIHtcbiBcdFx0XHRydGxfZXJpX3dyaXRlKHRwLCAweDFiYywgRVJJQVJfTUFTS18xMTExLCAweDAwMDAwMDExKTtcbiBcdFx0XHRydGxfZXJpX3dyaXRlKHRwLCAweDFkYywgRVJJQVJfTUFTS18xMTExLCAweDAwMDAwMDA1KTtcbiBcdFx0fSBlbHNlIHtcbkBAIC0xNzAwLDcgKzE4MDgsNyBAQCBzdGF0aWMgdm9pZCBydGxfbGlua19jaGdfcGF0Y2goc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG4gXHRcdFx0cnRsX2VyaV93cml0ZSh0cCwgMHgxZGMsIEVSSUFSX01BU0tfMTExMSwgMHgwMDAwMDAzZik7XG4gXHRcdH1cbiBcdH0gZWxzZSBpZiAodHAtXHUwMDNlbWFjX3ZlcnNpb24gPT0gUlRMX0dJR0FfTUFDX1ZFUl8zNykge1xuLVx0XHRpZiAocGh5ZGV2LVx1MDAzZXNwZWVkID09IFNQRUVEXzEwKSB7XG4rXHRcdGlmIChzcGVlZCA9PSBTUEVFRF8xMCkge1xuIFx0XHRcdHJ0bF9lcmlfd3JpdGUodHAsIDB4MWQwLCBFUklBUl9NQVNLXzAwMTEsIDB4NGQwMik7XG4gXHRcdFx0cnRsX2VyaV93cml0ZSh0cCwgMHgxZGMsIEVSSUFSX01BU0tfMDAxMSwgMHgwMDYwYSk7XG4gXHRcdH0gZWxzZSB7XG5AQCAtMjA3NCwxMSArMjE4MiwxMSBAQCBydGxfY29hbGVzY2VfaW5mbyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbiBcdFx0Y2kgPSBydGxfY29hbGVzY2VfaW5mb184MTY4XzgxMzY7XG4gXG4gXHQvKiBpZiBzcGVlZCBpcyB1bmtub3duIGFzc3VtZSBoaWdoZXN0IG9uZSAqL1xuLVx0aWYgKHRwLVx1MDAzZXBoeWRldi1cdTAwM2VzcGVlZCA9PSBTUEVFRF9VTktOT1dOKVxuK1x0aWYgKHRwLVx1MDAzZXNwZWVkID09IFNQRUVEX1VOS05PV04pXG4gXHRcdHJldHVybiBjaTtcbiBcbiBcdGZvciAoOyBjaS1cdTAwM2VzcGVlZDsgY2krKykge1xuLVx0XHRpZiAodHAtXHUwMDNlcGh5ZGV2LVx1MDAzZXNwZWVkID09IGNpLVx1MDAzZXNwZWVkKVxuK1x0XHRpZiAodHAtXHUwMDNlc3BlZWQgPT0gY2ktXHUwMDNlc3BlZWQpXG4gXHRcdFx0cmV0dXJuIGNpO1xuIFx0fVxuIFxuQEAgLTIyMzYsNyArMjM0NCw3IEBAIHN0YXRpYyB2b2lkIHJ0bF9zZXRfZWVlX3R4aWRsZV90aW1lcihzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbiBcbiBzdGF0aWMgdW5zaWduZWQgaW50IHI4MTY5X2dldF90eF9scGlfdGltZXJfdXMoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG4ge1xuLVx0dW5zaWduZWQgaW50IHNwZWVkID0gdHAtXHUwMDNlcGh5ZGV2LVx1MDAzZXNwZWVkO1xuK1x0dW5zaWduZWQgaW50IHNwZWVkID0gdHAtXHUwMDNlc3BlZWQ7XG4gXHR1bnNpZ25lZCBpbnQgdGltZXIgPSB0cC1cdTAwM2V0eF9scGlfdGltZXI7XG4gXG4gXHRpZiAoIXRpbWVyIHx8IHNwZWVkID09IFNQRUVEX1VOS05PV04pXG5AQCAtMjI1NCw3ICsyMzYyLDcgQEAgc3RhdGljIGludCBydGw4MTY5X2dldF9lZWUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IGV0aHRvb2xfa2VlZSAqZGF0YSlcbiBcdGlmICghcnRsX3N1cHBvcnRzX2VlZSh0cCkpXG4gXHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbiBcbi1cdHJldCA9IHBoeV9ldGh0b29sX2dldF9lZWUodHAtXHUwMDNlcGh5ZGV2LCBkYXRhKTtcbitcdHJldCA9IHBoeWxpbmtfZXRodG9vbF9nZXRfZWVlKHRwLVx1MDAzZXBoeWxpbmssIGRhdGEpO1xuIFx0aWYgKHJldClcbiBcdFx0cmV0dXJuIHJldDtcbiBcbkBAIC0yMjcwLDcgKzIzNzgsNyBAQCBzdGF0aWMgaW50IHJ0bDgxNjlfc2V0X2VlZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgZXRodG9vbF9rZWVlICpkYXRhKVxuIFx0aWYgKCFydGxfc3VwcG9ydHNfZWVlKHRwKSlcbiBcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuIFxuLVx0cmV0dXJuIHBoeV9ldGh0b29sX3NldF9lZWUodHAtXHUwMDNlcGh5ZGV2LCBkYXRhKTtcbitcdHJldHVybiBwaHlsaW5rX2V0aHRvb2xfc2V0X2VlZSh0cC1cdTAwM2VwaHlsaW5rLCBkYXRhKTtcbiB9XG4gXG4gc3RhdGljIHZvaWQgcnRsODE2OV9nZXRfcmluZ3BhcmFtKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG5AQCAtMjMwMSwxMyArMjQwOSw4IEBAIHN0YXRpYyB2b2lkIHJ0bDgxNjlfZ2V0X3BhdXNlcGFyYW0oc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcdFx0XHRcdCAgIHN0cnVjdCBldGh0b29sX3BhdXNlcGFyYW0gKmRhdGEpXG4ge1xuIFx0c3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAgPSBuZXRkZXZfcHJpdihkZXYpO1xuLVx0Ym9vbCB0eF9wYXVzZSwgcnhfcGF1c2U7XG4gXG4tXHRwaHlfZ2V0X3BhdXNlKHRwLVx1MDAzZXBoeWRldiwgXHUwMDI2dHhfcGF1c2UsIFx1MDAyNnJ4X3BhdXNlKTtcbi1cbi1cdGRhdGEtXHUwMDNlYXV0b25lZyA9IHRwLVx1MDAzZXBoeWRldi1cdTAwM2VhdXRvbmVnO1xuLVx0ZGF0YS1cdTAwM2V0eF9wYXVzZSA9IHR4X3BhdXNlID8gMSA6IDA7XG4tXHRkYXRhLVx1MDAzZXJ4X3BhdXNlID0gcnhfcGF1c2UgPyAxIDogMDtcbitcdHBoeWxpbmtfZXRodG9vbF9nZXRfcGF1c2VwYXJhbSh0cC1cdTAwM2VwaHlsaW5rLCBkYXRhKTtcbiB9XG4gXG4gc3RhdGljIGludCBydGw4MTY5X3NldF9wYXVzZXBhcmFtKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG5AQCAtMjMxOCw5ICsyNDIxLDcgQEAgc3RhdGljIGludCBydGw4MTY5X3NldF9wYXVzZXBhcmFtKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4gXHRpZiAoZGV2LVx1MDAzZW10dSBcdTAwM2UgRVRIX0RBVEFfTEVOKVxuIFx0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4gXG4tXHRwaHlfc2V0X2FzeW1fcGF1c2UodHAtXHUwMDNlcGh5ZGV2LCBkYXRhLVx1MDAzZXJ4X3BhdXNlLCBkYXRhLVx1MDAzZXR4X3BhdXNlKTtcbi1cbi1cdHJldHVybiAwO1xuK1x0cmV0dXJuIHBoeWxpbmtfZXRodG9vbF9zZXRfcGF1c2VwYXJhbSh0cC1cdTAwM2VwaHlsaW5rLCBkYXRhKTtcbiB9XG4gXG4gc3RhdGljIHZvaWQgcnRsODE2OV9nZXRfZXRoX21hY19zdGF0cyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuQEAgLTIzODYsMzQgKzI0ODcsMjcgQEAgc3RhdGljIHZvaWQgcnRsODE2OV9nZXRfZXRoX2N0cmxfc3RhdHMoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcdFx0bGUzMl90b19jcHUodHAtXHUwMDNlY291bnRlcnMtXHUwMDNlcnhfdW5rbm93bl9vcGNvZGUpO1xuIH1cbiBcbi1zdGF0aWMgaW50IHJ0bDgxNjlfc2V0X2xpbmtfa3NldHRpbmdzKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxuLVx0XHRcdFx0ICAgICAgY29uc3Qgc3RydWN0IGV0aHRvb2xfbGlua19rc2V0dGluZ3MgKmNtZClcbitzdGF0aWMgaW50IHJ0bDgxNjlfZ2V0X2xpbmtfa3NldHRpbmdzKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxuK1x0XHRcdFx0ICAgICAgc3RydWN0IGV0aHRvb2xfbGlua19rc2V0dGluZ3MgKmNtZClcbiB7XG4gXHRzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCA9IG5ldGRldl9wcml2KG5kZXYpO1xuLVx0c3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiA9IHRwLVx1MDAzZXBoeWRldjtcbi1cdGludCBkdXBsZXggPSBjbWQtXHUwMDNlYmFzZS5kdXBsZXg7XG4tXHRpbnQgc3BlZWQgPSBjbWQtXHUwMDNlYmFzZS5zcGVlZDtcbi1cbi1cdGlmICghdHAtXHUwMDNlc2ZwX21vZGUpXG4tXHRcdHJldHVybiBwaHlfZXRodG9vbF9rc2V0dGluZ3Nfc2V0KHBoeWRldiwgY21kKTtcbi1cbi1cdGlmIChjbWQtXHUwMDNlYmFzZS5hdXRvbmVnICE9IEFVVE9ORUdfRElTQUJMRSlcbi1cdFx0cmV0dXJuIC1FSU5WQUw7XG4gXG4tXHRpZiAoIXBoeV9jaGVja192YWxpZChzcGVlZCwgZHVwbGV4LCBwaHlkZXYtXHUwMDNlc3VwcG9ydGVkKSlcbi1cdFx0cmV0dXJuIC1FSU5WQUw7XG4tXG4tXHRtdXRleF9sb2NrKFx1MDAyNnBoeWRldi1cdTAwM2Vsb2NrKTtcbitcdHJldHVybiBwaHlsaW5rX2V0aHRvb2xfa3NldHRpbmdzX2dldCh0cC1cdTAwM2VwaHlsaW5rLCBjbWQpO1xuK31cbiBcbi1cdHBoeWRldi1cdTAwM2VhdXRvbmVnID0gQVVUT05FR19ESVNBQkxFO1xuLVx0cGh5ZGV2LVx1MDAzZXNwZWVkID0gc3BlZWQ7XG4tXHRwaHlkZXYtXHUwMDNlZHVwbGV4ID0gZHVwbGV4O1xuK3N0YXRpYyBpbnQgcnRsODE2OV9zZXRfbGlua19rc2V0dGluZ3Moc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXG4rXHRcdFx0XHQgICAgICBjb25zdCBzdHJ1Y3QgZXRodG9vbF9saW5rX2tzZXR0aW5ncyAqY21kKVxuK3tcbitcdHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwID0gbmV0ZGV2X3ByaXYobmRldik7XG4gXG4tXHRydGxfc2ZwX2luaXQodHApO1xuK1x0cmV0dXJuIHBoeWxpbmtfZXRodG9vbF9rc2V0dGluZ3Nfc2V0KHRwLVx1MDAzZXBoeWxpbmssIGNtZCk7XG4rfVxuIFxuLVx0bXV0ZXhfdW5sb2NrKFx1MDAyNnBoeWRldi1cdTAwM2Vsb2NrKTtcbitzdGF0aWMgaW50IHJ0bDgxNjlfbndheV9yZXNldChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuK3tcbitcdHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwID0gbmV0ZGV2X3ByaXYoZGV2KTtcbiBcbi1cdHJldHVybiAwO1xuK1x0cmV0dXJuIHBoeWxpbmtfZXRodG9vbF9ud2F5X3Jlc2V0KHRwLVx1MDAzZXBoeWxpbmspO1xuIH1cbiBcbiBzdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIHJ0bDgxNjlfZXRodG9vbF9vcHMgPSB7XG5AQCAtMjQzMSwxMCArMjUyNSwxMCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIHJ0bDgxNjlfZXRodG9vbF9vcHMgPSB7XG4gXHQuZ2V0X3NzZXRfY291bnRcdFx0PSBydGw4MTY5X2dldF9zc2V0X2NvdW50LFxuIFx0LmdldF9ldGh0b29sX3N0YXRzXHQ9IHJ0bDgxNjlfZ2V0X2V0aHRvb2xfc3RhdHMsXG4gXHQuZ2V0X3RzX2luZm9cdFx0PSBldGh0b29sX29wX2dldF90c19pbmZvLFxuLVx0Lm53YXlfcmVzZXRcdFx0PSBwaHlfZXRodG9vbF9ud2F5X3Jlc2V0LFxuK1x0Lm53YXlfcmVzZXRcdFx0PSBydGw4MTY5X253YXlfcmVzZXQsXG4gXHQuZ2V0X2VlZVx0XHQ9IHJ0bDgxNjlfZ2V0X2VlZSxcbiBcdC5zZXRfZWVlXHRcdD0gcnRsODE2OV9zZXRfZWVlLFxuLVx0LmdldF9saW5rX2tzZXR0aW5nc1x0PSBwaHlfZXRodG9vbF9nZXRfbGlua19rc2V0dGluZ3MsXG4rXHQuZ2V0X2xpbmtfa3NldHRpbmdzXHQ9IHJ0bDgxNjlfZ2V0X2xpbmtfa3NldHRpbmdzLFxuIFx0LnNldF9saW5rX2tzZXR0aW5nc1x0PSBydGw4MTY5X3NldF9saW5rX2tzZXR0aW5ncyxcbiBcdC5nZXRfcmluZ3BhcmFtXHRcdD0gcnRsODE2OV9nZXRfcmluZ3BhcmFtLFxuIFx0LmdldF9wYXVzZV9zdGF0c1x0PSBydGw4MTY5X2dldF9wYXVzZV9zdGF0cyxcbkBAIC0yNDk5LDkgKzI1OTMsMTAgQEAgdm9pZCByODE2OV9hcHBseV9maXJtd2FyZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbiBcdFx0dHAtXHUwMDNlb2NwX2Jhc2UgPSBPQ1BfU1REX1BIWV9CQVNFO1xuIFxuIFx0XHQvKiBQSFkgc29mdCByZXNldCBtYXkgc3RpbGwgYmUgaW4gcHJvZ3Jlc3MgKi9cbi1cdFx0cGh5X3JlYWRfcG9sbF90aW1lb3V0KHRwLVx1MDAzZXBoeWRldiwgTUlJX0JNQ1IsIHZhbCxcbi1cdFx0XHRcdCAgICAgICEodmFsIFx1MDAyNiBCTUNSX1JFU0VUKSxcbi1cdFx0XHRcdCAgICAgIDUwMDAwLCA2MDAwMDAsIHRydWUpO1xuK1x0XHRpZiAodHAtXHUwMDNlcGh5ZGV2KVxuK1x0XHRcdHBoeV9yZWFkX3BvbGxfdGltZW91dCh0cC1cdTAwM2VwaHlkZXYsIE1JSV9CTUNSLCB2YWwsXG4rXHRcdFx0XHRcdCAgICAgICEodmFsIFx1MDAyNiBCTUNSX1JFU0VUKSxcbitcdFx0XHRcdFx0ICAgICAgNTAwMDAsIDYwMDAwMCwgdHJ1ZSk7XG4gXHR9XG4gfVxuIFxuQEAgLTI1MzgsNiArMjYzMyw4IEBAIHN0YXRpYyB2b2lkIHJ0bF9zY2hlZHVsZV90YXNrKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCBlbnVtIHJ0bF9mbGFnIGZsYWcpXG4gXG4gc3RhdGljIHZvaWQgcnRsODE2OV9pbml0X3BoeShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbiB7XG4rXHRwaHlfaW5pdF9odyh0cC1cdTAwM2VwaHlkZXYpO1xuK1x0cGh5X3Jlc3VtZSh0cC1cdTAwM2VwaHlkZXYpO1xuIFx0cjgxNjlfaHdfcGh5X2NvbmZpZyh0cCwgdHAtXHUwMDNlcGh5ZGV2LCB0cC1cdTAwM2VtYWNfdmVyc2lvbik7XG4gXG4gXHRpZiAodHAtXHUwMDNlbWFjX3ZlcnNpb24gXHUwMDNjPSBSVExfR0lHQV9NQUNfVkVSXzA2KSB7XG5AQCAtMjU1Miw5ICsyNjQ5LDYgQEAgc3RhdGljIHZvaWQgcnRsODE2OV9pbml0X3BoeShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbiBcdCAgICB0cC1cdTAwM2VwY2lfZGV2LVx1MDAzZXN1YnN5c3RlbV9kZXZpY2UgPT0gMHhlMDAwKVxuIFx0XHRwaHlfd3JpdGVfcGFnZWQodHAtXHUwMDNlcGh5ZGV2LCAweDAwMDEsIDB4MTAsIDB4ZjAxYik7XG4gXG4tXHRpZiAodHAtXHUwMDNlc2ZwX21vZGUpXG4tXHRcdHJ0bF9zZnBfaW5pdCh0cCk7XG4tXG4gXHQvKiBXZSBtYXkgaGF2ZSBjYWxsZWQgcGh5X3NwZWVkX2Rvd24gYmVmb3JlICovXG4gXHRwaHlfc3BlZWRfdXAodHAtXHUwMDNlcGh5ZGV2KTtcbiBcbkBAIC0yNjU3LDE1ICsyNzUxLDYgQEAgc3RhdGljIHZvaWQgcnRsX2p1bWJvX2NvbmZpZyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbiBcbiBcdGlmIChwY2lfaXNfcGNpZSh0cC1cdTAwM2VwY2lfZGV2KSBcdTAwMjZcdTAwMjYgdHAtXHUwMDNlc3VwcG9ydHNfZ21paSlcbiBcdFx0cGNpZV9zZXRfcmVhZHJxKHRwLVx1MDAzZXBjaV9kZXYsIHJlYWRycSk7XG4tXG4tXHQvKiBDaGlwIGRvZXNuJ3Qgc3VwcG9ydCBwYXVzZSBpbiBqdW1ibyBtb2RlICovXG4tXHRpZiAoanVtYm8pIHtcbi1cdFx0bGlua21vZGVfY2xlYXJfYml0KEVUSFRPT0xfTElOS19NT0RFX1BhdXNlX0JJVCxcbi1cdFx0XHRcdCAgIHRwLVx1MDAzZXBoeWRldi1cdTAwM2VhZHZlcnRpc2luZyk7XG4tXHRcdGxpbmttb2RlX2NsZWFyX2JpdChFVEhUT09MX0xJTktfTU9ERV9Bc3ltX1BhdXNlX0JJVCxcbi1cdFx0XHRcdCAgIHRwLVx1MDAzZXBoeWRldi1cdTAwM2VhZHZlcnRpc2luZyk7XG4tXHRcdHBoeV9zdGFydF9hbmVnKHRwLVx1MDAzZXBoeWRldik7XG4tXHR9XG4gfVxuIFxuIERFQ0xBUkVfUlRMX0NPTkQocnRsX2NoaXBjbWRfY29uZClcbkBAIC0yNzgwLDcgKzI4NjUsNyBAQCBzdGF0aWMgdm9pZCBydGxfcHJlcGFyZV9wb3dlcl9kb3duKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuIFx0XHRydGxfZXBoeV93cml0ZSh0cCwgMHgxOSwgMHhmZjY0KTtcbiBcbiBcdGlmIChkZXZpY2VfbWF5X3dha2V1cCh0cF90b19kZXYodHApKSkge1xuLVx0XHRwaHlfc3BlZWRfZG93bih0cC1cdTAwM2VwaHlkZXYsIGZhbHNlKTtcbitcdFx0cGh5bGlua19zcGVlZF9kb3duKHRwLVx1MDAzZXBoeWxpbmssIGZhbHNlKTtcbiBcdFx0cnRsX3dvbF9lbmFibGVfcngodHApO1xuIFx0fVxuIH1cbkBAIC0yODMyLDYgKzI5MTcsMTYgQEAgc3RhdGljIHZvaWQgcnRsODE2OV9zZXRfbWFnaWNfcmVnKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuIFx0UlRMX1czMih0cCwgMHg3YywgdmFsKTtcbiB9XG4gXG4rc3RhdGljIGludCBydGw4MTY5X2lvY3RsKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBpZnJlcSAqaWZyLCBpbnQgY21kKVxuK3tcbitcdHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwID0gbmV0ZGV2X3ByaXYoZGV2KTtcbitcbitcdGlmICghbmV0aWZfcnVubmluZyhkZXYpKVxuK1x0XHRyZXR1cm4gLUVOT0RFVjtcbitcbitcdHJldHVybiBwaHlsaW5rX21paV9pb2N0bCh0cC1cdTAwM2VwaHlsaW5rLCBpZnIsIGNtZCk7XG4rfVxuK1xuIHN0YXRpYyB2b2lkIHJ0bF9zZXRfcnhfbW9kZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIHtcbiBcdHUzMiByeF9tb2RlID0gQWNjZXB0QnJvYWRjYXN0IHwgQWNjZXB0TXlQaHlzIHwgQWNjZXB0TXVsdGljYXN0O1xuQEAgLTMwOTgsOCArMzE5MywyMiBAQCBzdGF0aWMgdm9pZCBydGxfZW5hYmxlX2x0cihzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbiBcdFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGYyLCAweDkwMDMpO1xuIFx0XHRyODE2OF9tYWNfb2NwX21vZGlmeSh0cCwgTFRSX09CRkZfTE9DSywgMHgwMDAwLCBMSU5LX1NQRUVEX0NIQU5HRV9FTik7XG4gXHRcdGJyZWFrO1xuLVx0Y2FzZSBSVExfR0lHQV9NQUNfVkVSXzQ2IC4uLiBSVExfR0lHQV9NQUNfVkVSXzQ4OlxuIFx0Y2FzZSBSVExfR0lHQV9NQUNfVkVSXzUyOlxuK1x0XHRyODE2OF9tYWNfb2NwX3dyaXRlKHRwLCAweGNkZDAsIDB4OTAwMyk7XG4rXHRcdHI4MTY4X21hY19vY3BfbW9kaWZ5KHRwLCBMVFJfU05PT1AsIDB4MDAwMCwgTFRSX1NOT09QX0VOKTtcbitcdFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhlMDJjLCAweDE4ODApO1xuK1x0XHRyODE2OF9tYWNfb2NwX3dyaXRlKHRwLCAweGUwMmUsIDB4NDg4MCk7XG4rXHRcdHI4MTY4X21hY19vY3BfbW9kaWZ5KHRwLCBBTERQU19MVFIsIDB4MDAwMCwgQUxEUFNfTFRSX0VOKTtcbitcdFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGQ4LCAweDkwMDMpO1xuK1x0XHRyODE2OF9tYWNfb2NwX3dyaXRlKHRwLCAweGNkZGEsIDB4OTAwMyk7XG4rXHRcdHI4MTY4X21hY19vY3Bfd3JpdGUodHAsIDB4Y2RkYywgMHg5MDAzKTtcbitcdFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhjZGQyLCAweDg4M2MpO1xuK1x0XHRyODE2OF9tYWNfb2NwX3dyaXRlKHRwLCAweGNkZDQsIDB4OGMxMik7XG4rXHRcdHI4MTY4X21hY19vY3Bfd3JpdGUodHAsIDB4Y2RkNiwgMHg5MDAzKTtcbitcdFx0cjgxNjhfbWFjX29jcF93cml0ZSh0cCwgMHhlMGE2LCAweDkwMDMpO1xuK1x0XHRyODE2OF9tYWNfb2NwX3dyaXRlKHRwLCAweGUwYTgsIDB4OTAwMyk7XG4rXHRcdGJyZWFrO1xuK1x0Y2FzZSBSVExfR0lHQV9NQUNfVkVSXzQ2IC4uLiBSVExfR0lHQV9NQUNfVkVSXzQ4OlxuIFx0XHRyODE2OF9tYWNfb2NwX21vZGlmeSh0cCwgQUxEUFNfTFRSLCAweDAwMDAsIEFMRFBTX0xUUl9FTik7XG4gXHRcdFJUTF9XOCh0cCwgQ09NQk9fTFRSX0VYVEVORCwgUlRMX1I4KHRwLCBDT01CT19MVFJfRVhURU5EKSB8IENPTUJPX0xUUl9FWFRFTkRfRU4pO1xuIFx0XHRmYWxsdGhyb3VnaDtcbkBAIC0zMTE5LDYgKzMyMjgsNyBAQCBzdGF0aWMgdm9pZCBydGxfZW5hYmxlX2x0cihzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbiBcdH1cbiBcdC8qIGNoaXAgY2FuIHRyaWdnZXIgTFRSICovXG4gXHRyODE2OF9tYWNfb2NwX21vZGlmeSh0cCwgTFRSX09CRkZfTE9DSywgMHgwMDAzLCBMVFJfT0JGRl9MT0NLX0VOKTtcbitcdHI4MTY4X21hY19vY3BfbW9kaWZ5KHRwLCBTRU5EX0xUUl9NU0csIDB4MDAwMCwgTFRSX01TR19FTik7XG4gfVxuIFxuIHN0YXRpYyB2b2lkIHJ0bF9od19hc3BtX2Nsa3JlcV9lbmFibGUoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIGJvb2wgZW5hYmxlKVxuQEAgLTMxNTIsNiArMzI2Miw3IEBAIHN0YXRpYyB2b2lkIHJ0bF9od19hc3BtX2Nsa3JlcV9lbmFibGUoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIGJvb2wgZW5hYmxlKVxuIFx0XHRydGxfZW5hYmxlX2x0cih0cCk7XG4gXHRcdHN3aXRjaCAodHAtXHUwMDNlbWFjX3ZlcnNpb24pIHtcbiBcdFx0Y2FzZSBSVExfR0lHQV9NQUNfVkVSXzQ2IC4uLiBSVExfR0lHQV9NQUNfVkVSXzQ4OlxuK1x0XHRjYXNlIFJUTF9HSUdBX01BQ19WRVJfNTI6XG4gXHRcdGNhc2UgUlRMX0dJR0FfTUFDX1ZFUl82MSAuLi4gUlRMX0dJR0FfTUFDX1ZFUl9MQVNUOlxuIFx0XHRcdC8qIHJlc2V0IGVwaHkgdHgvcnggZGlzYWJsZSB0aW1lciAqL1xuIFx0XHRcdHI4MTY4X21hY19vY3BfbW9kaWZ5KHRwLCAweGUwOTQsIDB4ZmYwMCwgMCk7XG5AQCAtMzE2NCw2ICszMjc1LDcgQEAgc3RhdGljIHZvaWQgcnRsX2h3X2FzcG1fY2xrcmVxX2VuYWJsZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgYm9vbCBlbmFibGUpXG4gXHR9IGVsc2Uge1xuIFx0XHRzd2l0Y2ggKHRwLVx1MDAzZW1hY192ZXJzaW9uKSB7XG4gXHRcdGNhc2UgUlRMX0dJR0FfTUFDX1ZFUl80NiAuLi4gUlRMX0dJR0FfTUFDX1ZFUl80ODpcbitcdFx0Y2FzZSBSVExfR0lHQV9NQUNfVkVSXzUyOlxuIFx0XHRjYXNlIFJUTF9HSUdBX01BQ19WRVJfNjEgLi4uIFJUTF9HSUdBX01BQ19WRVJfTEFTVDpcbiBcdFx0XHRyODE2OF9tYWNfb2NwX21vZGlmeSh0cCwgMHhlMDkyLCAweDAwZmYsIDApO1xuIFx0XHRcdGJyZWFrO1xuQEAgLTM2NTcsNiArMzc2OSwzNSBAQCBzdGF0aWMgdm9pZCBydGxfaHdfc3RhcnRfODE2OGVwXzMoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG4gXHRyODE2OF9tYWNfb2NwX21vZGlmeSh0cCwgMHhlODYwLCAweDAwMDAsIDB4MDA4MCk7XG4gfVxuIFxuK3N0YXRpYyB2b2lkIHJ0bF9sb3dwb3dlcl9oaWRkZW5fZnVuY3Rpb25zKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxuK3tcbitcdHVuc2lnbmVkIGludCBzbG90ID0gUENJX1NMT1QocGRldi1cdTAwM2VkZXZmbik7XG4rXHRzdHJ1Y3QgcGNpX2J1cyAqYnVzID0gcGRldi1cdTAwM2VidXM7XG4rXHR1bnNpZ25lZCBpbnQgZGV2Zm47XG4rXHRpbnQgZnVuYztcbitcdGludCByZXQ7XG4rXHR1MzIgdmFsO1xuK1xuK1x0Zm9yIChmdW5jID0gMjsgZnVuYyBcdTAwM2MgODsgZnVuYysrKSB7XG4rXHRcdGRldmZuID0gUENJX0RFVkZOKHNsb3QsIGZ1bmMpO1xuK1xuK1x0XHRyZXQgPSBwY2lfYnVzX3JlYWRfY29uZmlnX2R3b3JkKGJ1cywgZGV2Zm4sIFJUTDgxMTZBRl9GVU5DX1BNX0NTUiwgXHUwMDI2dmFsKTtcbitcdFx0aWYgKCFyZXQgXHUwMDI2XHUwMDI2ICFQQ0lfUE9TU0lCTEVfRVJST1IodmFsKSkge1xuK1x0XHRcdHZhbCBcdTAwMjY9IH5QQ0lfUE1fQ1RSTF9QTUVfU1RBVFVTO1xuK1x0XHRcdHZhbCBcdTAwMjY9IH4oUENJX1BNX0NUUkxfU1RBVEVfTUFTSyB8IFBDSV9QTV9DVFJMX1BNRV9FTkFCTEUpO1xuK1x0XHRcdHZhbCB8PSAoUlRMX1BNX0QzSE9UIHwgUENJX1BNX0NUUkxfUE1FX0VOQUJMRSk7XG4rXHRcdFx0cGNpX2J1c193cml0ZV9jb25maWdfZHdvcmQoYnVzLCBkZXZmbiwgUlRMODExNkFGX0ZVTkNfUE1fQ1NSLCB2YWwpO1xuK1x0XHR9XG4rXG4rXHRcdHJldCA9IHBjaV9idXNfcmVhZF9jb25maWdfZHdvcmQoYnVzLCBkZXZmbiwgUlRMODExNkFGX0ZVTkNfRVhQX0xOS0NUTCwgXHUwMDI2dmFsKTtcbitcdFx0aWYgKCFyZXQgXHUwMDI2XHUwMDI2ICFQQ0lfUE9TU0lCTEVfRVJST1IodmFsKSkge1xuK1x0XHRcdHZhbCBcdTAwMjY9IH4oKFBDSV9FWFBfTE5LU1RBX0xCTVMgfCBQQ0lfRVhQX0xOS1NUQV9MQUJTKSBcdTAwM2NcdTAwM2MgMTYpO1xuK1x0XHRcdHZhbCB8PSBQQ0lfRVhQX0xOS0NUTF9BU1BNQztcbitcdFx0XHRwY2lfYnVzX3dyaXRlX2NvbmZpZ19kd29yZChidXMsIGRldmZuLCBSVEw4MTE2QUZfRlVOQ19FWFBfTE5LQ1RMLCB2YWwpO1xuK1x0XHR9XG4rXHR9XG4rfVxuK1xuIHN0YXRpYyB2b2lkIHJ0bF9od19zdGFydF84MTE3KHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuIHtcbiBcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgZXBoeV9pbmZvIGVfaW5mb184MTE3W10gPSB7XG5AQCAtMzY5MywxMiArMzgzNCwxNCBAQCBzdGF0aWMgdm9pZCBydGxfaHdfc3RhcnRfODExNyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbiBcbiBcdHJ0bF9wY2llX3N0YXRlX2wybDNfZGlzYWJsZSh0cCk7XG4gXG4tXHRyZ19zYXdfY250ID0gcGh5X3JlYWRfcGFnZWQodHAtXHUwMDNlcGh5ZGV2LCAweDBjNDIsIDB4MTMpIFx1MDAyNiAweDNmZmY7XG4tXHRpZiAocmdfc2F3X2NudCBcdTAwM2UgMCkge1xuLVx0XHR1MTYgc3dfY250XzFtc19pbmk7XG4rXHRpZiAodHAtXHUwMDNlcGh5ZGV2KSB7XG4rXHRcdHJnX3Nhd19jbnQgPSBwaHlfcmVhZF9wYWdlZCh0cC1cdTAwM2VwaHlkZXYsIDB4MGM0MiwgMHgxMykgXHUwMDI2IDB4M2ZmZjtcbitcdFx0aWYgKHJnX3Nhd19jbnQgXHUwMDNlIDApIHtcbitcdFx0XHR1MTYgc3dfY250XzFtc19pbmk7XG4gXG4tXHRcdHN3X2NudF8xbXNfaW5pID0gKDE2MDAwMDAwIC8gcmdfc2F3X2NudCkgXHUwMDI2IDB4MGZmZjtcbi1cdFx0cjgxNjhfbWFjX29jcF9tb2RpZnkodHAsIDB4ZDQxMiwgMHgwZmZmLCBzd19jbnRfMW1zX2luaSk7XG4rXHRcdFx0c3dfY250XzFtc19pbmkgPSAoMTYwMDAwMDAgLyByZ19zYXdfY250KSBcdTAwMjYgMHgwZmZmO1xuK1x0XHRcdHI4MTY4X21hY19vY3BfbW9kaWZ5KHRwLCAweGQ0MTIsIDB4MGZmZiwgc3dfY250XzFtc19pbmkpO1xuK1x0XHR9XG4gXHR9XG4gXG4gXHRyODE2OF9tYWNfb2NwX21vZGlmeSh0cCwgMHhlMDU2LCAweDAwZjAsIDB4MDAwMCk7XG5AQCAtMzcxMSw2ICszODU0LDkgQEAgc3RhdGljIHZvaWQgcnRsX2h3X3N0YXJ0XzgxMTcoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG4gXHRyODE2OF9tYWNfb2NwX3dyaXRlKHRwLCAweGMwOTQsIDB4MDAwMCk7XG4gXHRyODE2OF9tYWNfb2NwX3dyaXRlKHRwLCAweGMwOWUsIDB4MDAwMCk7XG4gXG4rXHRpZiAocnRsX2lzXzgxMTZhZih0cCkpXG4rXHRcdHJ0bF9sb3dwb3dlcl9oaWRkZW5fZnVuY3Rpb25zKHRwLVx1MDAzZXBjaV9kZXYpO1xuK1xuIFx0LyogZmlybXdhcmUgaXMgZm9yIE1BQyBvbmx5ICovXG4gXHRyODE2OV9hcHBseV9maXJtd2FyZSh0cCk7XG4gfVxuQEAgLTQxMzksMTIgKzQyODUsMjUgQEAgc3RhdGljIHZvaWQgcnRsX2h3X3N0YXJ0KHN0cnVjdCAgcnRsODE2OV9wcml2YXRlICp0cClcbiBzdGF0aWMgaW50IHJ0bDgxNjlfY2hhbmdlX210dShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBpbnQgbmV3X210dSlcbiB7XG4gXHRzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCA9IG5ldGRldl9wcml2KGRldik7XG4rXHRib29sIGp1bWJvX2JlZm9yZSA9IGRldi1cdTAwM2VtdHUgXHUwMDNlIEVUSF9EQVRBX0xFTjtcbitcdGJvb2wganVtYm9fYWZ0ZXIgPSBuZXdfbXR1IFx1MDAzZSBFVEhfREFUQV9MRU47XG4gXG4gXHRXUklURV9PTkNFKGRldi1cdTAwM2VtdHUsIG5ld19tdHUpO1xuIFx0bmV0ZGV2X3VwZGF0ZV9mZWF0dXJlcyhkZXYpO1xuIFx0cnRsX2p1bWJvX2NvbmZpZyh0cCk7XG4gXHRydGxfc2V0X2VlZV90eGlkbGVfdGltZXIodHApO1xuIFxuK1x0aWYgKGp1bWJvX2JlZm9yZSAhPSBqdW1ib19hZnRlcikge1xuK1x0XHR1bnNpZ25lZCBsb25nIGNhcHMgPSB0cC1cdTAwM2VwaHlsaW5rX2NvbmZpZy5tYWNfY2FwYWJpbGl0aWVzO1xuK1xuK1x0XHRpZiAoanVtYm9fYWZ0ZXIpXG4rXHRcdFx0Y2FwcyBcdTAwMjY9IH4oTUFDX1NZTV9QQVVTRSB8IE1BQ19BU1lNX1BBVVNFKTtcbitcdFx0ZWxzZVxuK1x0XHRcdGNhcHMgfD0gKE1BQ19TWU1fUEFVU0UgfCBNQUNfQVNZTV9QQVVTRSk7XG4rXG4rXHRcdHBoeWxpbmtfc2V0X21hY19jYXBhYmlsaXRpZXModHAtXHUwMDNlcGh5bGluaywgY2Fwcyk7XG4rXHR9XG4rXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG5AQCAtNDg2OSw4ICs1MDI4LDEzIEBAIHN0YXRpYyBpcnFyZXR1cm5fdCBydGw4MTY5X2ludGVycnVwdChpbnQgaXJxLCB2b2lkICpkZXZfaW5zdGFuY2UpXG4gXHRcdGdvdG8gb3V0O1xuIFx0fVxuIFxuLVx0aWYgKHN0YXR1cyBcdTAwMjYgTGlua0NoZylcbi1cdFx0cGh5X21hY19pbnRlcnJ1cHQodHAtXHUwMDNlcGh5ZGV2KTtcbitcdGlmIChzdGF0dXMgXHUwMDI2IExpbmtDaGcpIHtcbitcdFx0aWYgKHRwLVx1MDAzZXBoeWRldilcbitcdFx0XHRwaHlfbWFjX2ludGVycnVwdCh0cC1cdTAwM2VwaHlkZXYpO1xuK1x0XHRlbHNlIGlmICh0cC1cdTAwM2VzZnBfbW9kZSlcbitcdFx0XHRwaHlsaW5rX21hY19jaGFuZ2UodHAtXHUwMDNlcGh5bGluayxcbitcdFx0XHRcdFx0ICAgISEoUlRMX1I4KHRwLCBQSFlzdGF0dXMpIFx1MDAyNiBMaW5rU3RhdHVzKSk7XG4rXHR9XG4gXG4gXHRydGxfaXJxX2Rpc2FibGUodHApO1xuIFx0bmFwaV9zY2hlZHVsZShcdTAwMjZ0cC1cdTAwM2VuYXBpKTtcbkBAIC00OTMwLDkgKzUwOTQsNiBAQCBzdGF0aWMgaW50IHJ0bDgxNjlfcG9sbChzdHJ1Y3QgbmFwaV9zdHJ1Y3QgKm5hcGksIGludCBidWRnZXQpXG4gXG4gc3RhdGljIHZvaWQgcnRsX2VuYWJsZV90eF9scGkoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIGJvb2wgZW5hYmxlKVxuIHtcbi1cdGlmICghcnRsX3N1cHBvcnRzX2VlZSh0cCkpXG4tXHRcdHJldHVybjtcbi1cbiBcdHN3aXRjaCAodHAtXHUwMDNlbWFjX3ZlcnNpb24pIHtcbiBcdGNhc2UgUlRMX0dJR0FfTUFDX1ZFUl8zNCAuLi4gUlRMX0dJR0FfTUFDX1ZFUl81MjpcbiBcdFx0LyogQWRqdXN0IEVFRSBMRUQgZnJlcXVlbmN5ICovXG5AQCAtNDk2Myw0MCArNTEyNCwxNSBAQCBzdGF0aWMgdm9pZCBydGxfZW5hYmxlX3R4X2xwaShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgYm9vbCBlbmFibGUpXG4gXHR9XG4gfVxuIFxuLXN0YXRpYyB2b2lkIHI4MTY5X3BoeWxpbmtfaGFuZGxlcihzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcbi17XG4tXHRzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCA9IG5ldGRldl9wcml2KG5kZXYpO1xuLVx0c3RydWN0IGRldmljZSAqZCA9IHRwX3RvX2Rldih0cCk7XG4tXG4tXHRpZiAobmV0aWZfY2Fycmllcl9vayhuZGV2KSkge1xuLVx0XHRydGxfbGlua19jaGdfcGF0Y2godHApO1xuLVx0XHRydGxfZW5hYmxlX3R4X2xwaSh0cCwgdHAtXHUwMDNlcGh5ZGV2LVx1MDAzZWVuYWJsZV90eF9scGkpO1xuLVx0XHRwbV9yZXF1ZXN0X3Jlc3VtZShkKTtcbi1cdH0gZWxzZSB7XG4tXHRcdHBtX3J1bnRpbWVfaWRsZShkKTtcbi1cdH1cbi1cbi1cdHBoeV9wcmludF9zdGF0dXModHAtXHUwMDNlcGh5ZGV2KTtcbi19XG4tXG4gc3RhdGljIGludCByODE2OV9waHlfY29ubmVjdChzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbiB7XG4tXHRzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2ID0gdHAtXHUwMDNlcGh5ZGV2O1xuLVx0cGh5X2ludGVyZmFjZV90IHBoeV9tb2RlO1xuIFx0aW50IHJldDtcbiBcbi1cdHBoeV9tb2RlID0gdHAtXHUwMDNlc3VwcG9ydHNfZ21paSA/IFBIWV9JTlRFUkZBQ0VfTU9ERV9HTUlJIDpcbi1cdFx0ICAgUEhZX0lOVEVSRkFDRV9NT0RFX01JSTtcbi1cbi1cdHJldCA9IHBoeV9jb25uZWN0X2RpcmVjdCh0cC1cdTAwM2VkZXYsIHBoeWRldiwgcjgxNjlfcGh5bGlua19oYW5kbGVyLFxuLVx0XHRcdFx0IHBoeV9tb2RlKTtcbi1cdGlmIChyZXQpXG4rXHRyZXQgPSBwaHlsaW5rX2Nvbm5lY3RfcGh5KHRwLVx1MDAzZXBoeWxpbmssIHRwLVx1MDAzZXBoeWRldik7XG4rXHRpZiAocmV0KSB7XG4rXHRcdG5ldGRldl9lcnIodHAtXHUwMDNlZGV2LCBcImZhaWxlZCB0byBjb25uZWN0IHBoeVxcblwiKTtcbiBcdFx0cmV0dXJuIHJldDtcbi1cbi1cdGlmICghdHAtXHUwMDNlc3VwcG9ydHNfZ21paSlcbi1cdFx0cGh5X3NldF9tYXhfc3BlZWQocGh5ZGV2LCBTUEVFRF8xMDApO1xuLVxuLVx0cGh5X2F0dGFjaGVkX2luZm8ocGh5ZGV2KTtcbitcdH1cbiBcbiBcdHJldHVybiAwO1xuIH1cbkBAIC01MDA3LDEwICs1MTQzLDEwIEBAIHN0YXRpYyB2b2lkIHJ0bDgxNjlfZG93bihzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbiBcdC8qIENsZWFyIGFsbCB0YXNrIGZsYWdzICovXG4gXHRiaXRtYXBfemVybyh0cC1cdTAwM2V3ay5mbGFncywgUlRMX0ZMQUdfTUFYKTtcbiBcbi1cdHBoeV9zdG9wKHRwLVx1MDAzZXBoeWRldik7XG4rXHRwaHlsaW5rX3N0b3AodHAtXHUwMDNlcGh5bGluayk7XG4gXG4gXHQvKiBSZXNldCBTZXJEZXMgUEhZIHRvIGJyaW5nIGRvd24gZmliZXIgbGluayAqL1xuLVx0aWYgKHRwLVx1MDAzZXNmcF9tb2RlKVxuK1x0aWYgKHRwLVx1MDAzZXNmcF9tb2RlID09IFJUTF9TRlBfODEyN19BVEYpXG4gXHRcdHJ0bF9zZnBfcmVzZXQodHApO1xuIFxuIFx0cnRsODE2OV91cGRhdGVfY291bnRlcnModHApO1xuQEAgLTUwMzIsMTQgKzUxNjgsMTQgQEAgc3RhdGljIHZvaWQgcnRsODE2OV91cChzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbiBcdFx0cnRsODE2OF9kcml2ZXJfc3RhcnQodHApO1xuIFxuIFx0cGNpX3NldF9tYXN0ZXIodHAtXHUwMDNlcGNpX2Rldik7XG4tXHRwaHlfaW5pdF9odyh0cC1cdTAwM2VwaHlkZXYpO1xuLVx0cGh5X3Jlc3VtZSh0cC1cdTAwM2VwaHlkZXYpO1xuLVx0cnRsODE2OV9pbml0X3BoeSh0cCk7XG4rXHRpZiAodHAtXHUwMDNlcGh5ZGV2KVxuK1x0XHRydGw4MTY5X2luaXRfcGh5KHRwKTtcbitcbiBcdG5hcGlfZW5hYmxlKFx1MDAyNnRwLVx1MDAzZW5hcGkpO1xuIFx0ZW5hYmxlX3dvcmsoXHUwMDI2dHAtXHUwMDNld2sud29yayk7XG4gXHRydGxfcmVzZXRfd29yayh0cCk7XG4gXG4tXHRwaHlfc3RhcnQodHAtXHUwMDNlcGh5ZGV2KTtcbitcdHBoeWxpbmtfc3RhcnQodHAtXHUwMDNlcGh5bGluayk7XG4gfVxuIFxuIHN0YXRpYyBpbnQgcnRsODE2OV9jbG9zZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuQEAgLTUwNTUsNyArNTE5MSw3IEBAIHN0YXRpYyBpbnQgcnRsODE2OV9jbG9zZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFxuIFx0ZnJlZV9pcnEodHAtXHUwMDNlaXJxLCB0cCk7XG4gXG4tXHRwaHlfZGlzY29ubmVjdCh0cC1cdTAwM2VwaHlkZXYpO1xuK1x0cGh5bGlua19kaXNjb25uZWN0X3BoeSh0cC1cdTAwM2VwaHlsaW5rKTtcbiBcbiBcdGRtYV9mcmVlX2NvaGVyZW50KFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBSODE2OV9SWF9SSU5HX0JZVEVTLCB0cC1cdTAwM2VSeERlc2NBcnJheSxcbiBcdFx0XHQgIHRwLVx1MDAzZVJ4UGh5QWRkcik7XG5AQCAtNTExMiw5ICs1MjQ4LDExIEBAIHN0YXRpYyBpbnQgcnRsX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiBcdGlmIChyZXR2YWwgXHUwMDNjIDApXG4gXHRcdGdvdG8gZXJyX3JlbGVhc2VfZndfMjtcbiBcbi1cdHJldHZhbCA9IHI4MTY5X3BoeV9jb25uZWN0KHRwKTtcbi1cdGlmIChyZXR2YWwpXG4tXHRcdGdvdG8gZXJyX2ZyZWVfaXJxO1xuK1x0aWYgKHRwLVx1MDAzZXBoeWRldikge1xuK1x0XHRyZXR2YWwgPSByODE2OV9waHlfY29ubmVjdCh0cCk7XG4rXHRcdGlmIChyZXR2YWwpXG4rXHRcdFx0Z290byBlcnJfZnJlZV9pcnE7XG4rXHR9XG4gXG4gXHRydGw4MTY5X3VwKHRwKTtcbiBcdHJ0bDgxNjlfaW5pdF9jb3VudGVyX29mZnNldHModHApO1xuQEAgLTUxOTAsOCArNTMyOCwxMSBAQCBzdGF0aWMgaW50IHJ0bDgxNjlfcnVudGltZV9yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2KVxuIFx0cnRsX3Jhcl9zZXQodHAsIHRwLVx1MDAzZWRldi1cdTAwM2VkZXZfYWRkcik7XG4gXHRfX3J0bDgxNjlfc2V0X3dvbCh0cCwgdHAtXHUwMDNlc2F2ZWRfd29sb3B0cyk7XG4gXG4tXHRpZiAodHAtXHUwMDNlVHhEZXNjQXJyYXkpXG4rXHRpZiAodHAtXHUwMDNlVHhEZXNjQXJyYXkpIHtcbitcdFx0cnRubF9sb2NrKCk7XG4gXHRcdHJ0bDgxNjlfdXAodHApO1xuK1x0XHRydG5sX3VubG9jaygpO1xuK1x0fVxuIFxuIFx0bmV0aWZfZGV2aWNlX2F0dGFjaCh0cC1cdTAwM2VkZXYpO1xuIFxuQEAgLTUyODgsNiArNTQyOSw3IEBAIHN0YXRpYyB2b2lkIHJ0bF9yZW1vdmVfb25lKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxuIFx0XHRyODE2OV9yZW1vdmVfbGVkcyh0cC1cdTAwM2VsZWRzKTtcbiBcbiBcdHVucmVnaXN0ZXJfbmV0ZGV2KHRwLVx1MDAzZWRldik7XG4rXHRwaHlsaW5rX2Rlc3Ryb3kodHAtXHUwMDNlcGh5bGluayk7XG4gXG4gXHRpZiAodHAtXHUwMDNlZGFzaF90eXBlICE9IFJUTF9EQVNIX05PTkUpXG4gXHRcdHJ0bDgxNjhfZHJpdmVyX3N0b3AodHApO1xuQEAgLTUzMTAsNyArNTQ1Miw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgcnRsX25ldGRldl9vcHMgPSB7XG4gXHQubmRvX2ZpeF9mZWF0dXJlc1x0PSBydGw4MTY5X2ZpeF9mZWF0dXJlcyxcbiBcdC5uZG9fc2V0X2ZlYXR1cmVzXHQ9IHJ0bDgxNjlfc2V0X2ZlYXR1cmVzLFxuIFx0Lm5kb19zZXRfbWFjX2FkZHJlc3NcdD0gcnRsX3NldF9tYWNfYWRkcmVzcyxcbi1cdC5uZG9fZXRoX2lvY3RsXHRcdD0gcGh5X2RvX2lvY3RsX3J1bm5pbmcsXG4rXHQubmRvX2V0aF9pb2N0bFx0XHQ9IHJ0bDgxNjlfaW9jdGwsXG4gXHQubmRvX3NldF9yeF9tb2RlXHQ9IHJ0bF9zZXRfcnhfbW9kZSxcbiAjaWZkZWYgQ09ORklHX05FVF9QT0xMX0NPTlRST0xMRVJcbiBcdC5uZG9fcG9sbF9jb250cm9sbGVyXHQ9IHJ0bDgxNjlfbmV0cG9sbCxcbkBAIC01NDc0LDE2ICs1NjE2LDYgQEAgc3RhdGljIGludCByODE2OV9tZGlvX3JlZ2lzdGVyKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuIFx0XHRyZXR1cm4gLUVVTkFUQ0g7XG4gXHR9XG4gXG4tXHR0cC1cdTAwM2VwaHlkZXYtXHUwMDNlbWFjX21hbmFnZWRfcG0gPSB0cnVlO1xuLVx0aWYgKHJ0bF9zdXBwb3J0c19lZWUodHApKVxuLVx0XHRwaHlfc3VwcG9ydF9lZWUodHAtXHUwMDNlcGh5ZGV2KTtcbi1cdHBoeV9zdXBwb3J0X2FzeW1fcGF1c2UodHAtXHUwMDNlcGh5ZGV2KTtcbi1cbi1cdC8qIG1pbWljIGJlaGF2aW9yIG9mIHI4MTI1L3I4MTI2IHZlbmRvciBkcml2ZXJzICovXG4tXHRpZiAodHAtXHUwMDNlbWFjX3ZlcnNpb24gPT0gUlRMX0dJR0FfTUFDX1ZFUl82MSlcbi1cdFx0cGh5X2Rpc2FibGVfZWVlX21vZGUodHAtXHUwMDNlcGh5ZGV2LFxuLVx0XHRcdFx0ICAgICBFVEhUT09MX0xJTktfTU9ERV8yNTAwYmFzZVRfRnVsbF9CSVQpO1xuLVxuIFx0LyogUEhZIHdpbGwgYmUgd29rZW4gdXAgaW4gcnRsX29wZW4oKSAqL1xuIFx0cGh5X3N1c3BlbmQodHAtXHUwMDNlcGh5ZGV2KTtcbiBcbkBAIC01NTk5LDYgKzU3MzEsMjQyIEBAIHN0YXRpYyBib29sIHJ0bF9hc3BtX2lzX3NhZmUoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG4gXHRyZXR1cm4gZmFsc2U7XG4gfVxuIFxuK3N0YXRpYyB2b2lkIHJ0bF9tYWNfbGlua19kb3duKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLCB1bnNpZ25lZCBpbnQgbW9kZSxcbitcdFx0XHQgICAgICBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxuK3tcbitcdHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwID0gY29udGFpbmVyX29mKGNvbmZpZywgc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSwgcGh5bGlua19jb25maWcpO1xuK1xuK1x0dHAtXHUwMDNlc3BlZWQgPSBTUEVFRF9VTktOT1dOO1xuK1x0cG1fcnVudGltZV9pZGxlKHRwX3RvX2Rldih0cCkpO1xuK31cbitcbitzdGF0aWMgdm9pZCBydGxfbWFjX2xpbmtfdXAoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXG4rXHRcdFx0ICAgIHVuc2lnbmVkIGludCBtb2RlLCBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlLFxuK1x0XHRcdCAgICBpbnQgc3BlZWQsIGludCBkdXBsZXgsIGJvb2wgdHhfcGF1c2UsIGJvb2wgcnhfcGF1c2UpXG4re1xuK1x0c3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAgPSBjb250YWluZXJfb2YoY29uZmlnLCBzdHJ1Y3QgcnRsODE2OV9wcml2YXRlLCBwaHlsaW5rX2NvbmZpZyk7XG4rXHRzdHJ1Y3QgZGV2aWNlICpkID0gdHBfdG9fZGV2KHRwKTtcbitcbitcdHRwLVx1MDAzZXNwZWVkID0gc3BlZWQ7XG4rXHRydGxfbGlua19jaGdfcGF0Y2godHAsIHNwZWVkKTtcbitcbitcdHBtX3JlcXVlc3RfcmVzdW1lKGQpO1xuK31cbitcbitzdGF0aWMgc3RydWN0IHBoeWxpbmtfcGNzICpydGxfbWFjX3NlbGVjdF9wY3Moc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXG4rXHRcdFx0XHRcdCAgICAgIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXG4re1xuK1x0c3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAgPSBjb250YWluZXJfb2YoY29uZmlnLCBzdHJ1Y3QgcnRsODE2OV9wcml2YXRlLCBwaHlsaW5rX2NvbmZpZyk7XG4rXG4rXHRpZiAoIXRwLVx1MDAzZXBjcy5vcHMpXG4rXHRcdHJldHVybiBOVUxMO1xuK1xuK1x0aWYgKGludGVyZmFjZSA9PSBQSFlfSU5URVJGQUNFX01PREVfMTAwMEJBU0VYIHx8XG4rXHQgICAgaW50ZXJmYWNlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV8xMEdCQVNFUilcbitcdFx0cmV0dXJuIFx1MDAyNnRwLVx1MDAzZXBjcztcbitcbitcdHJldHVybiBOVUxMO1xuK31cbitcbitzdGF0aWMgdm9pZCBydGxfbWFjX2NvbmZpZyhzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZywgdW5zaWduZWQgaW50IG1vZGUsXG4rXHRcdFx0ICAgY29uc3Qgc3RydWN0IHBoeWxpbmtfbGlua19zdGF0ZSAqc3RhdGUpXG4re1xuK31cbitcbitzdGF0aWMgdTE2IHJ0bDgxNjlfc2RzX3JlYWQoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIHUxNiBzZHNfcmVnKVxuK3tcbitcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XG4rXHR1MTYgdmFsID0gMDtcbitcbitcdHJhd19zcGluX2xvY2tfaXJxc2F2ZShcdTAwMjZ0cC1cdTAwM2VtYWNfb2NwX2xvY2ssIGZsYWdzKTtcbitcdF9fcjgxNjhfbWFjX29jcF93cml0ZSh0cCwgT0NQX1NEU19BRERSX1JFRywgc2RzX3JlZyk7XG4rXHRfX3I4MTY4X21hY19vY3Bfd3JpdGUodHAsIE9DUF9TRFNfQ01EX1JFRywgU0RTX0NNRF9SRUFEKTtcbitcdHZhbCA9IF9fcjgxNjhfbWFjX29jcF9yZWFkKHRwLCBPQ1BfU0RTX0RBVEFfUkVHKTtcbitcdHJhd19zcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNnRwLVx1MDAzZW1hY19vY3BfbG9jaywgZmxhZ3MpO1xuK1xuK1x0cmV0dXJuIHZhbDtcbit9XG4rXG4rc3RhdGljIHZvaWQgcnRsODE2OV9wY3NfZ2V0X3N0YXRlKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzLFxuK1x0XHRcdFx0ICB1bnNpZ25lZCBpbnQgbmVnX21vZGUsXG4rXHRcdFx0XHQgIHN0cnVjdCBwaHlsaW5rX2xpbmtfc3RhdGUgKnN0YXRlKVxuK3tcbitcdHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwID0gY29udGFpbmVyX29mKHBjcywgc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSwgcGNzKTtcbitcbitcdGlmICh0cC1cdTAwM2VzZnBfbW9kZSA9PSBSVExfU0ZQXzgxMjdfQVRGKSB7XG4rXHRcdHUxNiBzdGF0MTtcbitcbitcdFx0c3RhdDEgPSBydGw4MTY5X3Nkc19yZWFkKHRwLCBSVExfU0RTX0M0NV9CQVNFICsgTURJT19TVEFUMSk7XG4rXG4rXHRcdGlmICghKHN0YXQxIFx1MDAyNiBNRElPX1NUQVQxX0xTVEFUVVMpKVxuK1x0XHRcdHN0YXQxID0gcnRsODE2OV9zZHNfcmVhZCh0cCwgUlRMX1NEU19DNDVfQkFTRSArIE1ESU9fU1RBVDEpO1xuK1xuK1x0XHRzdGF0ZS1cdTAwM2VsaW5rID0gISEoc3RhdDEgXHUwMDI2IE1ESU9fU1RBVDFfTFNUQVRVUyk7XG4rXHRcdGlmICghc3RhdGUtXHUwMDNlbGluaylcbitcdFx0XHRyZXR1cm47XG4rXG4rXHRcdHN0YXRlLVx1MDAzZWR1cGxleCA9IERVUExFWF9GVUxMO1xuK1x0XHRzdGF0ZS1cdTAwM2VzcGVlZCA9IFNQRUVEXzEwMDAwO1xuK1x0fSBlbHNlIHtcbitcdFx0dTE2IGJtc3IsIGxwYTtcbitcbitcdFx0Ym1zciA9IHJ0bDgxNjlfc2RzX3JlYWQodHAsIFJUTF9TRFNfQzIyX0JBU0UgKyBNSUlfQk1TUik7XG4rXHRcdGxwYSA9IHJ0bDgxNjlfc2RzX3JlYWQodHAsIFJUTF9TRFNfQzIyX0JBU0UgKyBNSUlfTFBBKTtcbitcdFx0cGh5bGlua19taWlfYzIyX3Bjc19kZWNvZGVfc3RhdGUoc3RhdGUsIG5lZ19tb2RlLCBibXNyLCBscGEpO1xuK1x0fVxuK31cbitcbitzdGF0aWMgaW50IHJ0bDgxNjlfcGNzX2NvbmZpZyhzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcywgdW5zaWduZWQgaW50IG1vZGUsXG4rXHRcdFx0ICAgICAgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSxcbitcdFx0XHQgICAgICBjb25zdCB1bnNpZ25lZCBsb25nICphZHZlcnRpc2luZyxcbitcdFx0XHQgICAgICBib29sIHBlcm1pdF9wYXVzZV90b19tYWMpXG4re1xuK1x0c3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAgPSBjb250YWluZXJfb2YocGNzLCBzdHJ1Y3QgcnRsODE2OV9wcml2YXRlLCBwY3MpO1xuK1xuK1x0aWYgKHRwLVx1MDAzZXNmcF9tb2RlID09IFJUTF9TRlBfODEyN19BVEYpIHtcbitcdFx0c3dpdGNoIChpbnRlcmZhY2UpIHtcbitcdFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfMTBHQkFTRVI6XG4rXHRcdFx0cjgxMjdfc2ZwX2luaXRfMTBnKHRwKTtcbitcdFx0XHRicmVhaztcbitcdFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfMTAwMEJBU0VYOlxuK1x0XHRcdHI4MTI3X3NmcF9pbml0XzFnKHRwKTtcbitcdFx0XHRicmVhaztcbitcdFx0ZGVmYXVsdDpcbitcdFx0XHRuZXRkZXZfZXJyKHRwLVx1MDAzZWRldiwgXCJVbnN1cHBvcnRlZCBTRlAgaW50ZXJmYWNlIG1vZGU6ICVzXFxuXCIsXG4rXHRcdFx0XHQgICBwaHlfbW9kZXMoaW50ZXJmYWNlKSk7XG4rXHRcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuK1x0XHR9XG4rXHR9XG4rXG4rXHRyZXR1cm4gMDtcbit9XG4rXG4rc3RhdGljIGludCBydGw4MTY5X3Bjc192YWxpZGF0ZShzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcywgdW5zaWduZWQgbG9uZyAqc3VwcG9ydGVkLFxuK1x0XHRcdFx0Y29uc3Qgc3RydWN0IHBoeWxpbmtfbGlua19zdGF0ZSAqc3RhdGUpXG4re1xuK1x0cmV0dXJuIDA7XG4rfVxuK1xuK3N0YXRpYyB2b2lkIHJ0bDgxNjlfcGNzX2FuX3Jlc3RhcnQoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MpXG4re1xuK31cbitcbitzdGF0aWMgdm9pZCBydGxfbWFjX2Rpc2FibGVfdHhfbHBpKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxuK3tcbitcdHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwID0gY29udGFpbmVyX29mKGNvbmZpZywgc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSwgcGh5bGlua19jb25maWcpO1xuK1xuK1x0cnRsX2VuYWJsZV90eF9scGkodHAsIGZhbHNlKTtcbit9XG4rXG4rc3RhdGljIGludCBydGxfbWFjX2VuYWJsZV90eF9scGkoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsIHUzMiB0aW1lciwgYm9vbCB0eF9jbGtfc3RvcClcbit7XG4rXHRzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCA9IGNvbnRhaW5lcl9vZihjb25maWcsIHN0cnVjdCBydGw4MTY5X3ByaXZhdGUsIHBoeWxpbmtfY29uZmlnKTtcbitcbitcdHJ0bF9lbmFibGVfdHhfbHBpKHRwLCB0cnVlKTtcbitcbitcdHJldHVybiAwO1xuK31cbitcbitzdGF0aWMgY29uc3Qgc3RydWN0IHBoeWxpbmtfbWFjX29wcyBydGxfcGh5bGlua19tYWNfb3BzID0ge1xuK1x0Lm1hY19zZWxlY3RfcGNzID0gcnRsX21hY19zZWxlY3RfcGNzLFxuK1x0Lm1hY19jb25maWcgPSBydGxfbWFjX2NvbmZpZyxcbitcdC5tYWNfbGlua19kb3duICA9IHJ0bF9tYWNfbGlua19kb3duLFxuK1x0Lm1hY19saW5rX3VwICAgID0gcnRsX21hY19saW5rX3VwLFxuK1x0Lm1hY19kaXNhYmxlX3R4X2xwaSA9IHJ0bF9tYWNfZGlzYWJsZV90eF9scGksXG4rXHQubWFjX2VuYWJsZV90eF9scGkgPSBydGxfbWFjX2VuYWJsZV90eF9scGksXG4rfTtcbitcbitzdGF0aWMgdW5zaWduZWQgbG9uZyBydGw4MTY5X2dldF9scGlfY2FwcyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbit7XG4rXHR1bnNpZ25lZCBsb25nIGNhcHMgPSAwO1xuK1xuK1x0aWYgKCFydGxfc3VwcG9ydHNfZWVlKHRwKSB8fCB0cC1cdTAwM2VzZnBfbW9kZSA9PSBSVExfU0ZQXzgxMjdfQVRGKVxuK1x0XHRyZXR1cm4gMDtcbitcbitcdGNhcHMgfD0gTUFDXzEwMEZEIHwgTUFDXzEwMDBGRDtcbitcbitcdC8qIG1pbWljIGJlaGF2aW9yIG9mIHI4MTI1L3I4MTI2IHZlbmRvciBkcml2ZXJzXG4rXHQgKiBSVExfR0lHQV9NQUNfVkVSXzYxIGRvZXNuJ3Qgc3VwcG9ydCAyLjVHIGVlZVxuK1x0ICovXG4rXHRpZiAodHAtXHUwMDNlbWFjX3ZlcnNpb24gXHUwMDNlPSBSVExfR0lHQV9NQUNfVkVSXzYzKVxuK1x0XHRjYXBzIHw9IE1BQ18yNTAwRkQ7XG4rXHRpZiAodHAtXHUwMDNlbWFjX3ZlcnNpb24gXHUwMDNlPSBSVExfR0lHQV9NQUNfVkVSXzcwKVxuK1x0XHRjYXBzIHw9IE1BQ181MDAwRkQ7XG4rXHRpZiAodHAtXHUwMDNlbWFjX3ZlcnNpb24gPT0gUlRMX0dJR0FfTUFDX1ZFUl84MClcbitcdFx0Y2FwcyB8PSBNQUNfMTAwMDBGRDtcbitcbitcdHJldHVybiBjYXBzO1xuK31cbitcbitzdGF0aWMgY29uc3Qgc3RydWN0IHBoeWxpbmtfcGNzX29wcyByODE2OV9wY3Nfb3BzID0ge1xuK1x0LnBjc192YWxpZGF0ZSA9IHJ0bDgxNjlfcGNzX3ZhbGlkYXRlLFxuK1x0LnBjc19nZXRfc3RhdGUgPSBydGw4MTY5X3Bjc19nZXRfc3RhdGUsXG4rXHQucGNzX2NvbmZpZyA9IHJ0bDgxNjlfcGNzX2NvbmZpZyxcbitcdC5wY3NfYW5fcmVzdGFydCA9IHJ0bDgxNjlfcGNzX2FuX3Jlc3RhcnQsXG4rfTtcbitcbitzdGF0aWMgaW50IHJ0bF9pbml0X3BoeWxpbmsoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG4re1xuK1x0c3RydWN0IHBoeWxpbmsgKnBsO1xuK1x0cGh5X2ludGVyZmFjZV90IHBoeV9tb2RlO1xuK1xuK1x0dHAtXHUwMDNlcGh5bGlua19jb25maWcuZGV2ID0gXHUwMDI2dHAtXHUwMDNlZGV2LVx1MDAzZWRldjtcbitcdHRwLVx1MDAzZXBoeWxpbmtfY29uZmlnLnR5cGUgPSBQSFlMSU5LX05FVERFVjtcbitcdHRwLVx1MDAzZXBoeWxpbmtfY29uZmlnLm1hY19tYW5hZ2VkX3BtID0gdHJ1ZTtcbitcdHRwLVx1MDAzZXBoeWxpbmtfY29uZmlnLmxwaV9jYXBhYmlsaXRpZXMgPSBydGw4MTY5X2dldF9scGlfY2Fwcyh0cCk7XG4rXHR0cC1cdTAwM2VwaHlsaW5rX2NvbmZpZy5tYWNfY2FwYWJpbGl0aWVzIHw9IE1BQ19BU1lNX1BBVVNFIHwgTUFDX1NZTV9QQVVTRTtcbitcbitcdHN3aXRjaCAodHAtXHUwMDNlc2ZwX21vZGUpIHtcbitcdGNhc2UgUlRMX1NGUF84MTY4X0FGOlxuK1x0XHR0cC1cdTAwM2VwY3Mub3BzID0gXHUwMDI2cjgxNjlfcGNzX29wcztcbitcdFx0dHAtXHUwMDNlcGh5bGlua19jb25maWcuZGVmYXVsdF9hbl9pbmJhbmQgPSB0cnVlO1xuK1x0XHRwaHlfbW9kZSA9IFBIWV9JTlRFUkZBQ0VfTU9ERV8xMDAwQkFTRVg7XG4rXHRcdHRwLVx1MDAzZXBoeWxpbmtfY29uZmlnLm1hY19jYXBhYmlsaXRpZXMgfD0gTUFDXzEwMDBGRDtcbitcdFx0YnJlYWs7XG4rXHRjYXNlIFJUTF9TRlBfODEyN19BVEY6XG4rXHRcdHRwLVx1MDAzZXBjcy5vcHMgPSBcdTAwMjZyODE2OV9wY3Nfb3BzO1xuK1x0XHRwaHlfbW9kZSA9IFBIWV9JTlRFUkZBQ0VfTU9ERV8xMEdCQVNFUjtcbitcdFx0dHAtXHUwMDNlcGh5bGlua19jb25maWcuZGVmYXVsdF9hbl9pbmJhbmQgPSB0cnVlO1xuK1x0XHR0cC1cdTAwM2VwaHlsaW5rX2NvbmZpZy5tYWNfY2FwYWJpbGl0aWVzIHw9IE1BQ18xMDAwRkQgfCBNQUNfMTAwMDBGRDtcbitcdFx0YnJlYWs7XG4rXHRkZWZhdWx0OlxuK1x0XHRwaHlfbW9kZSA9IFBIWV9JTlRFUkZBQ0VfTU9ERV9JTlRFUk5BTDtcbitcdFx0dHAtXHUwMDNlcGh5bGlua19jb25maWcubWFjX2NhcGFiaWxpdGllcyB8PSBNQUNfMTAgfCBNQUNfMTAwO1xuK1xuK1x0XHRpZiAodHAtXHUwMDNlbWFjX3ZlcnNpb24gPT0gUlRMX0dJR0FfTUFDX1ZFUl84MClcbitcdFx0XHR0cC1cdTAwM2VwaHlsaW5rX2NvbmZpZy5tYWNfY2FwYWJpbGl0aWVzIHw9IE1BQ18xMDAwRkQgfCBNQUNfMjUwMEZEIHxcbitcdFx0XHRcdFx0XHRcdCAgICAgICBNQUNfNTAwMEZEIHwgTUFDXzEwMDAwRkQ7XG4rXHRcdGVsc2UgaWYgKHRwLVx1MDAzZW1hY192ZXJzaW9uID09IFJUTF9HSUdBX01BQ19WRVJfNzApXG4rXHRcdFx0dHAtXHUwMDNlcGh5bGlua19jb25maWcubWFjX2NhcGFiaWxpdGllcyB8PSBNQUNfMTAwMEZEIHxcbitcdFx0XHRcdFx0XHRcdCAgICAgICBNQUNfMjUwMEZEIHwgTUFDXzUwMDBGRDtcbitcdFx0ZWxzZSBpZiAodHAtXHUwMDNlbWFjX3ZlcnNpb24gXHUwMDNlPSBSVExfR0lHQV9NQUNfVkVSXzYxKVxuK1x0XHRcdHRwLVx1MDAzZXBoeWxpbmtfY29uZmlnLm1hY19jYXBhYmlsaXRpZXMgfD0gTUFDXzEwMDBGRCB8IE1BQ18yNTAwRkQ7XG4rXHRcdGVsc2VcbitcdFx0XHRpZiAodHAtXHUwMDNlc3VwcG9ydHNfZ21paSlcbitcdFx0XHRcdHRwLVx1MDAzZXBoeWxpbmtfY29uZmlnLm1hY19jYXBhYmlsaXRpZXMgfD0gTUFDXzEwMDBGRDtcbitcbitcdFx0aWYgKHRwLVx1MDAzZW1hY192ZXJzaW9uIFx1MDAzYyBSVExfR0lHQV9NQUNfVkVSXzYxKVxuK1x0XHRcdHBoeV9tb2RlID0gdHAtXHUwMDNlc3VwcG9ydHNfZ21paSA/IFBIWV9JTlRFUkZBQ0VfTU9ERV9HTUlJIDpcbitcdFx0XHRcdCAgIFBIWV9JTlRFUkZBQ0VfTU9ERV9NSUk7XG4rXHRcdGVsc2VcbitcdFx0XHRwaHlfbW9kZSA9IFBIWV9JTlRFUkZBQ0VfTU9ERV9JTlRFUk5BTDtcbitcdFx0YnJlYWs7XG4rXHR9XG4rXG4rXHRfX3NldF9iaXQocGh5X21vZGUsIHRwLVx1MDAzZXBoeWxpbmtfY29uZmlnLnN1cHBvcnRlZF9pbnRlcmZhY2VzKTtcbitcdGlmICh0cC1cdTAwM2VwaHlsaW5rX2NvbmZpZy5scGlfY2FwYWJpbGl0aWVzKVxuK1x0XHRfX3NldF9iaXQocGh5X21vZGUsIHRwLVx1MDAzZXBoeWxpbmtfY29uZmlnLmxwaV9pbnRlcmZhY2VzKTtcbitcbitcdHBsID0gcGh5bGlua19jcmVhdGUoXHUwMDI2dHAtXHUwMDNlcGh5bGlua19jb25maWcsIHRwX3RvX2Rldih0cCktXHUwMDNlZndub2RlLFxuK1x0XHRcdCAgICBwaHlfbW9kZSwgXHUwMDI2cnRsX3BoeWxpbmtfbWFjX29wcyk7XG4rXHRpZiAoSVNfRVJSKHBsKSlcbitcdFx0cmV0dXJuIFBUUl9FUlIocGwpO1xuK1xuK1x0dHAtXHUwMDNlcGh5bGluayA9IHBsO1xuK1xuK1x0cmV0dXJuIDA7XG4rfVxuK1xuIHN0YXRpYyBpbnQgcnRsX2luaXRfb25lKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KVxuIHtcbiBcdGNvbnN0IHN0cnVjdCBydGxfY2hpcF9pbmZvICpjaGlwO1xuQEAgLTU2NjcsNiArNjAzNSw3IEBAIHN0YXRpYyBpbnQgcnRsX2luaXRfb25lKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KVxuIFx0XHRcdFx0ICAgICBleHRfeGlkX3N0ciwgeGlkKTtcbiBcdHRwLVx1MDAzZW1hY192ZXJzaW9uID0gY2hpcC1cdTAwM2VtYWNfdmVyc2lvbjtcbiBcdHRwLVx1MDAzZWZ3X25hbWUgPSBjaGlwLVx1MDAzZWZ3X25hbWU7XG4rXHR0cC1cdTAwM2VzcGVlZCA9IFNQRUVEX1VOS05PV047XG4gXG4gXHQvKiBEaXNhYmxlIEFTUE0gTDEgYXMgdGhhdCBjYXVzZSByYW5kb20gZGV2aWNlIHN0b3Agd29ya2luZ1xuIFx0ICogcHJvYmxlbXMgYXMgd2VsbCBhcyBmdWxsIHN5c3RlbSBoYW5ncyBmb3Igc29tZSBQQ0llIGRldmljZXMgdXNlcnMuXG5AQCAtNTY3OSwxMiArNjA0OCw3IEBAIHN0YXRpYyBpbnQgcnRsX2luaXRfb25lKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KVxuIFx0fVxuIFx0dHAtXHUwMDNlYXNwbV9tYW5hZ2VhYmxlID0gIXJjO1xuIFxuLVx0aWYgKHJ0bF9pc184MTI1KHRwKSkge1xuLVx0XHR1MTYgZGF0YSA9IHI4MTY4X21hY19vY3BfcmVhZCh0cCwgMHhkMDA2KTtcbi1cbi1cdFx0aWYgKChkYXRhIFx1MDAyNiAweGZmKSA9PSAweDA3KVxuLVx0XHRcdHRwLVx1MDAzZXNmcF9tb2RlID0gdHJ1ZTtcbi1cdH1cbitcdHRwLVx1MDAzZXNmcF9tb2RlID0gcnRsX2dldF9zZnBfbW9kZSh0cCk7XG4gXG4gXHR0cC1cdTAwM2VkYXNoX3R5cGUgPSBydGxfZ2V0X2Rhc2hfdHlwZSh0cCk7XG4gXHR0cC1cdTAwM2VkYXNoX2VuYWJsZWQgPSBydGxfZGFzaF9pc19lbmFibGVkKHRwKTtcbkBAIC01Nzg4LDEzICs2MTUyLDIzIEBAIHN0YXRpYyBpbnQgcnRsX2luaXRfb25lKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KVxuIFxuIFx0cGNpX3NldF9kcnZkYXRhKHBkZXYsIHRwKTtcbiBcbi1cdHJjID0gcjgxNjlfbWRpb19yZWdpc3Rlcih0cCk7XG4rXHRyYyA9IHJ0bF9pbml0X3BoeWxpbmsodHApO1xuIFx0aWYgKHJjKVxuIFx0XHRyZXR1cm4gcmM7XG4gXG4rXHRpZiAodHAtXHUwMDNlc2ZwX21vZGUgPT0gUlRMX1NGUF9OT05FKSB7XG4rXHRcdHJjID0gcjgxNjlfbWRpb19yZWdpc3Rlcih0cCk7XG4rXHRcdGlmIChyYykge1xuK1x0XHRcdHBoeWxpbmtfZGVzdHJveSh0cC1cdTAwM2VwaHlsaW5rKTtcbitcdFx0XHRyZXR1cm4gcmM7XG4rXHRcdH1cbitcdH1cbitcbiBcdHJjID0gcmVnaXN0ZXJfbmV0ZGV2KGRldik7XG4tXHRpZiAocmMpXG4rXHRpZiAocmMpIHtcbitcdFx0cGh5bGlua19kZXN0cm95KHRwLVx1MDAzZXBoeWxpbmspO1xuIFx0XHRyZXR1cm4gcmM7XG4rXHR9XG4gXG4gXHRpZiAoSVNfRU5BQkxFRChDT05GSUdfUjgxNjlfTEVEUykpIHtcbiBcdFx0aWYgKHJ0bF9pc184MTI1KHRwKSlcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jIGIvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY1xuaW5kZXggNTlkZmUzNWFmYTU0ZmMuLmM0NTBlZTMzYjc1Y2MxIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY1xuKysrIGIvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY1xuQEAgLTE4MjgsNiArMTgyOCw3MiBAQCBpbnQgcGh5bGlua19zZXRfZml4ZWRfbGluayhzdHJ1Y3QgcGh5bGluayAqcGwsXG4gfVxuIEVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfc2V0X2ZpeGVkX2xpbmspO1xuIFxuKy8qKlxuKyAqIHBoeWxpbmtfc2V0X21hY19jYXBhYmlsaXRpZXMoKSAtIER5bmFtaWNhbGx5IHVwZGF0ZSBNQUMgY2FwYWJpbGl0aWVzXG4rICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbisgKiBAbWFjX2NhcGFiaWxpdGllczogdGhlIG5ldyBNQUMgY2FwYWJpbGl0aWVzIG1hc2tcbisgKlxuKyAqIFRoaXMgZnVuY3Rpb24gYWxsb3dzIGEgTUFDIGRyaXZlciB0byBkeW5hbWljYWxseSBjaGFuZ2UgaXRzIGNhcGFiaWxpdGllcyxcbisgKiBzdWNoIGFzIGxvc2luZy9nYWluaW5nIFBhdXNlIGZyYW1lIHN1cHBvcnQgYmFzZWQgb24gTVRVIHNpemUuXG4rICogSXQgcmVjYWxjdWxhdGVzIHN1cHBvcnRlZCBsaW5rIG1vZGVzIGFuZCB0cmlnZ2VycyByZW5lZ290aWF0aW9uIGlmIG5lZWRlZC5cbisgKi9cbit2b2lkIHBoeWxpbmtfc2V0X21hY19jYXBhYmlsaXRpZXMoc3RydWN0IHBoeWxpbmsgKnBsLCB1bnNpZ25lZCBsb25nIG1hY19jYXBhYmlsaXRpZXMpXG4re1xuK1x0c3RydWN0IHBoeWxpbmtfbGlua19zdGF0ZSAqY29uZmlnID0gXHUwMDI2cGwtXHUwMDNlbGlua19jb25maWc7XG4rXHR1bnNpZ25lZCBsb25nIGNhcHNfYWRkZWQsIGNhcHNfcmVtb3ZlZDtcbitcbitcdEFTU0VSVF9SVE5MKCk7XG4rXG4rXHRjYXBzX2FkZGVkID0gbWFjX2NhcGFiaWxpdGllcyBcdTAwMjYgfnBsLVx1MDAzZWNvbmZpZy1cdTAwM2VtYWNfY2FwYWJpbGl0aWVzO1xuK1x0Y2Fwc19yZW1vdmVkID0gcGwtXHUwMDNlY29uZmlnLVx1MDAzZW1hY19jYXBhYmlsaXRpZXMgXHUwMDI2IH5tYWNfY2FwYWJpbGl0aWVzO1xuK1xuK1x0aWYgKCFjYXBzX2FkZGVkIFx1MDAyNlx1MDAyNiAhY2Fwc19yZW1vdmVkKVxuK1x0XHRyZXR1cm47XG4rXG4rXHRtdXRleF9sb2NrKFx1MDAyNnBsLVx1MDAzZXN0YXRlX211dGV4KTtcbitcbitcdHBsLVx1MDAzZWNvbmZpZy1cdTAwM2VtYWNfY2FwYWJpbGl0aWVzID0gbWFjX2NhcGFiaWxpdGllcztcbitcbitcdGlmIChjYXBzX3JlbW92ZWQgXHUwMDI2IE1BQ19TWU1fUEFVU0UpXG4rXHRcdGxpbmttb2RlX2NsZWFyX2JpdChFVEhUT09MX0xJTktfTU9ERV9QYXVzZV9CSVQsIHBsLVx1MDAzZXN1cHBvcnRlZCk7XG4rXHRpZiAoY2Fwc19yZW1vdmVkIFx1MDAyNiBNQUNfQVNZTV9QQVVTRSlcbitcdFx0bGlua21vZGVfY2xlYXJfYml0KEVUSFRPT0xfTElOS19NT0RFX0FzeW1fUGF1c2VfQklULCBwbC1cdTAwM2VzdXBwb3J0ZWQpO1xuK1xuK1x0bGlua21vZGVfYW5kKGNvbmZpZy1cdTAwM2VhZHZlcnRpc2luZywgY29uZmlnLVx1MDAzZWFkdmVydGlzaW5nLCBwbC1cdTAwM2VzdXBwb3J0ZWQpO1xuK1xuK1x0aWYgKGNhcHNfYWRkZWQgXHUwMDI2IE1BQ19TWU1fUEFVU0UpIHtcbitcdFx0bGlua21vZGVfc2V0X2JpdChFVEhUT09MX0xJTktfTU9ERV9QYXVzZV9CSVQsIHBsLVx1MDAzZXN1cHBvcnRlZCk7XG4rXHRcdGlmIChwbC1cdTAwM2VwaHlkZXYgXHUwMDI2XHUwMDI2ICFwaHlsaW5rX3Rlc3QocGwtXHUwMDNlcGh5ZGV2LVx1MDAzZXN1cHBvcnRlZCwgUGF1c2UpKVxuK1x0XHRcdGxpbmttb2RlX2NsZWFyX2JpdChFVEhUT09MX0xJTktfTU9ERV9QYXVzZV9CSVQsIHBsLVx1MDAzZXN1cHBvcnRlZCk7XG4rXHR9XG4rXHRpZiAoY2Fwc19hZGRlZCBcdTAwMjYgTUFDX0FTWU1fUEFVU0UpIHtcbitcdFx0bGlua21vZGVfc2V0X2JpdChFVEhUT09MX0xJTktfTU9ERV9Bc3ltX1BhdXNlX0JJVCwgcGwtXHUwMDNlc3VwcG9ydGVkKTtcbitcdFx0aWYgKHBsLVx1MDAzZXBoeWRldiBcdTAwMjZcdTAwMjYgIXBoeWxpbmtfdGVzdChwbC1cdTAwM2VwaHlkZXYtXHUwMDNlc3VwcG9ydGVkLCBBc3ltX1BhdXNlKSlcbitcdFx0XHRsaW5rbW9kZV9jbGVhcl9iaXQoRVRIVE9PTF9MSU5LX01PREVfQXN5bV9QYXVzZV9CSVQsIHBsLVx1MDAzZXN1cHBvcnRlZCk7XG4rXHR9XG4rXG4rXHRsaW5rbW9kZV9hbmQoY29uZmlnLVx1MDAzZWFkdmVydGlzaW5nLCBjb25maWctXHUwMDNlYWR2ZXJ0aXNpbmcsIHBsLVx1MDAzZXN1cHBvcnRlZCk7XG4rXG4rXHRpZiAoY29uZmlnLVx1MDAzZXBhdXNlIFx1MDAyNiBNTE9fUEFVU0VfQU4pIHtcbitcdFx0aWYgKHBoeWxpbmtfdGVzdChwbC1cdTAwM2VzdXBwb3J0ZWQsIFBhdXNlKSlcbitcdFx0XHRsaW5rbW9kZV9zZXRfYml0KEVUSFRPT0xfTElOS19NT0RFX1BhdXNlX0JJVCwgY29uZmlnLVx1MDAzZWFkdmVydGlzaW5nKTtcbitcbitcdFx0aWYgKHBoeWxpbmtfdGVzdChwbC1cdTAwM2VzdXBwb3J0ZWQsIEFzeW1fUGF1c2UpKVxuK1x0XHRcdGxpbmttb2RlX3NldF9iaXQoRVRIVE9PTF9MSU5LX01PREVfQXN5bV9QYXVzZV9CSVQsIGNvbmZpZy1cdTAwM2VhZHZlcnRpc2luZyk7XG4rXHR9XG4rXG4rXHRpZiAoIXBsLVx1MDAzZXBoeWRldilcbitcdFx0cGh5bGlua19jaGFuZ2VfaW5iYW5kX2FkdmVydChwbCk7XG4rXG4rXHRtdXRleF91bmxvY2soXHUwMDI2cGwtXHUwMDNlc3RhdGVfbXV0ZXgpO1xuK1xuK1x0aWYgKHBsLVx1MDAzZXBoeWRldikge1xuK1x0XHRsaW5rbW9kZV9jb3B5KHBsLVx1MDAzZXBoeWRldi1cdTAwM2VhZHZlcnRpc2luZywgY29uZmlnLVx1MDAzZWFkdmVydGlzaW5nKTtcbitcdFx0cGh5X3N0YXJ0X2FuZWcocGwtXHUwMDNlcGh5ZGV2KTtcbitcdH1cbit9XG4rRVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19zZXRfbWFjX2NhcGFiaWxpdGllcyk7XG4rXG4gLyoqXG4gICogcGh5bGlua19jcmVhdGUoKSAtIGNyZWF0ZSBhIHBoeWxpbmsgaW5zdGFuY2VcbiAgKiBAY29uZmlnOiBhIHBvaW50ZXIgdG8gdGhlIHRhcmdldCBcdTAwMjZzdHJ1Y3QgcGh5bGlua19jb25maWdcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYyBiL2RyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jXG5pbmRleCBiNjVkMGY1ZmExYTAxNC4uNDcyMWJhMDcxY2JiZTQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uY1xuKysrIGIvZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmNcbkBAIC0xNyw3ICsxNyw2IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvZGVsYXkuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2Nsay5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvc3RyaW5nX2Nob2ljZXMuaFx1MDAzZVxuLSNpbmNsdWRlIFx1MDAzY25ldC9waHkvcmVhbHRla19waHkuaFx1MDAzZVxuIFxuICNpbmNsdWRlIFwiLi4vcGh5bGliLmhcIlxuICNpbmNsdWRlIFwicmVhbHRlay5oXCJcbkBAIC0yNjQ2LDQ1ICsyNjQ1LDYgQEAgc3RhdGljIGlycXJldHVybl90IHJ0bDgyMjFiX2hhbmRsZV9pbnRlcnJ1cHQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbiBcdHJldHVybiBJUlFfSEFORExFRDtcbiB9XG4gXG4tc3RhdGljIGludCBydGxnZW5fc2ZwX2dldF9mZWF0dXJlcyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLXtcbi1cdGxpbmttb2RlX3NldF9iaXQoRVRIVE9PTF9MSU5LX01PREVfMTAwMDBiYXNlVF9GdWxsX0JJVCxcbi1cdFx0XHQgcGh5ZGV2LVx1MDAzZXN1cHBvcnRlZCk7XG4tXG4tXHQvKiBzZXQgZGVmYXVsdCBtb2RlICovXG4tXHRwaHlkZXYtXHUwMDNlc3BlZWQgPSBTUEVFRF8xMDAwMDtcbi1cdHBoeWRldi1cdTAwM2VkdXBsZXggPSBEVVBMRVhfRlVMTDtcbi1cbi1cdHBoeWRldi1cdTAwM2Vwb3J0ID0gUE9SVF9GSUJSRTtcbi1cbi1cdHJldHVybiAwO1xuLX1cbi1cbi1zdGF0aWMgaW50IHJ0bGdlbl9zZnBfcmVhZF9zdGF0dXMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbi17XG4tXHRpbnQgdmFsLCBlcnI7XG4tXG4tXHRlcnIgPSBnZW5waHlfdXBkYXRlX2xpbmsocGh5ZGV2KTtcbi1cdGlmIChlcnIpXG4tXHRcdHJldHVybiBlcnI7XG4tXG4tXHRpZiAoIXBoeWRldi1cdTAwM2VsaW5rKVxuLVx0XHRyZXR1cm4gMDtcbi1cbi1cdHZhbCA9IHBoeV9yZWFkKHBoeWRldiwgUlRMX1BIWVNSKTtcbi1cdGlmICh2YWwgXHUwMDNjIDApXG4tXHRcdHJldHVybiB2YWw7XG4tXG4tXHRydGxnZW5fZGVjb2RlX3BoeXNyKHBoeWRldiwgdmFsKTtcbi1cbi1cdHJldHVybiAwO1xuLX1cbi1cbi1zdGF0aWMgaW50IHJ0bGdlbl9zZnBfY29uZmlnX2FuZWcoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbi17XG4tXHRyZXR1cm4gMDtcbi19XG4tXG4gc3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIHJlYWx0ZWtfZHJ2c1tdID0ge1xuIFx0e1xuIFx0XHRQSFlfSURfTUFUQ0hfRVhBQ1QoMHgwMDAwODIwMSksXG5AQCAtMjkzNCwyMCArMjg5NCw2IEBAIHN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciByZWFsdGVrX2RydnNbXSA9IHtcbiBcdFx0LndyaXRlX3BhZ2VcdD0gcnRsODIxeF93cml0ZV9wYWdlLFxuIFx0XHQucmVhZF9tbWRcdD0gcnRsODIyeF9yZWFkX21tZCxcbiBcdFx0LndyaXRlX21tZFx0PSBydGw4MjJ4X3dyaXRlX21tZCxcbi1cdH0sIHtcbi1cdFx0UEhZX0lEX01BVENIX0VYQUNUKFBIWV9JRF9SVExfRFVNTVlfU0ZQKSxcbi1cdFx0Lm5hbWVcdFx0PSBcIlJlYWx0ZWsgU0ZQIFBIWSBNb2RlXCIsXG4tXHRcdC5mbGFnc1x0XHQ9IFBIWV9JU19JTlRFUk5BTCxcbi1cdFx0LnByb2JlXHRcdD0gcnRsODIyeF9wcm9iZSxcbi1cdFx0LmdldF9mZWF0dXJlc1x0PSBydGxnZW5fc2ZwX2dldF9mZWF0dXJlcyxcbi1cdFx0LmNvbmZpZ19hbmVnXHQ9IHJ0bGdlbl9zZnBfY29uZmlnX2FuZWcsXG4tXHRcdC5yZWFkX3N0YXR1c1x0PSBydGxnZW5fc2ZwX3JlYWRfc3RhdHVzLFxuLVx0XHQuc3VzcGVuZFx0PSBnZW5waHlfc3VzcGVuZCxcbi1cdFx0LnJlc3VtZVx0XHQ9IHJ0bGdlbl9yZXN1bWUsXG4tXHRcdC5yZWFkX3BhZ2VcdD0gcnRsODIxeF9yZWFkX3BhZ2UsXG4tXHRcdC53cml0ZV9wYWdlXHQ9IHJ0bDgyMXhfd3JpdGVfcGFnZSxcbi1cdFx0LnJlYWRfbW1kXHQ9IHJ0bDgyMnhfcmVhZF9tbWQsXG4tXHRcdC53cml0ZV9tbWRcdD0gcnRsODIyeF93cml0ZV9tbWQsXG4gXHR9LCB7XG4gXHRcdFBIWV9JRF9NQVRDSF9FWEFDVCgweDAwMWNjYWQwKSxcbiBcdFx0Lm5hbWVcdFx0PSBcIlJUTDgyMjQgMi41R2JwcyBQSFlcIixcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaCBiL2luY2x1ZGUvbGludXgvcGh5bGluay5oXG5pbmRleCAyYmMwZGIzZDUyYWM4ZC4uNTY2NDJhYjk2MWE3NTMgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaFxuKysrIGIvaW5jbHVkZS9saW51eC9waHlsaW5rLmhcbkBAIC04NDIsNCArODQyLDYgQEAgdm9pZCBwaHlsaW5rX3JlcGxheV9saW5rX2JlZ2luKHN0cnVjdCBwaHlsaW5rICpwbCk7XG4gXG4gdm9pZCBwaHlsaW5rX3JlcGxheV9saW5rX2VuZChzdHJ1Y3QgcGh5bGluayAqcGwpO1xuIFxuK3ZvaWQgcGh5bGlua19zZXRfbWFjX2NhcGFiaWxpdGllcyhzdHJ1Y3QgcGh5bGluayAqcGwsIHVuc2lnbmVkIGxvbmcgbWFjX2NhcGFiaWxpdGllcyk7XG4rXG4gI2VuZGlmXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvcGh5L3JlYWx0ZWtfcGh5LmggYi9pbmNsdWRlL25ldC9waHkvcmVhbHRla19waHkuaFxuZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCBkNjgzYmMxYjA2NTljZC4uMDAwMDAwMDAwMDAwMDBcbi0tLSBhL2luY2x1ZGUvbmV0L3BoeS9yZWFsdGVrX3BoeS5oXG4rKysgL2Rldi9udWxsXG5AQCAtMSw3ICswLDAgQEBcbi0vKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCAqL1xuLSNpZm5kZWYgX1JFQUxURUtfUEhZX0hcbi0jZGVmaW5lIF9SRUFMVEVLX1BIWV9IXG4tXG4tI2RlZmluZVx0UEhZX0lEX1JUTF9EVU1NWV9TRlBcdDB4MDAxY2NiZmZcbi1cbi0jZW5kaWYgLyogX1JFQUxURUtfUEhZX0ggKi9cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDE2OjM0OjQyLjYwNTU1Nzc1WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzU0ODM1MzgyNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFJlYWNoYWJpbGl0eSBvZiBhIE5ldHdvcmsgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaC4gSXQncyBhIHByZXR0eSBzdWJzdGFudGlhbCBjaGFuZ2UsIHJld3JpdGluZyBob3cgdGhlIFJlYWx0ZWsgcjgxNjkgZHJpdmVyIGludGVyYWN0cyB3aXRoIHRoZSBwaHlsaW5rIGZyYW1ld29yay4gU3BlY2lmaWNhbGx5LCBpdCdzIHN3aXRjaGluZyBmcm9tIGRpcmVjdGx5IHVzaW5nIGBwaHlsaWJgIHRvIGBwaHlsaW5rYCwgYW5kIHRoZXJlJ3MgYSBuZXcgZnVuY3Rpb24gYWRkZWQgdG8gYHBoeWxpbmsuY2AgY2FsbGVkIGBwaHlsaW5rX3NldF9tYWNfY2FwYWJpbGl0aWVzYC4gVGhpcyBpcyBhIHNpZ25pZmljYW50IGZ1bmN0aW9uYWwgc2hpZnQgd2l0aGluIGEgY29yZSBuZXR3b3JrIGRyaXZlciBhbmQgaXRzIGFzc29jaWF0ZWQgZnJhbWV3b3JrLiBNeSBpbW1lZGlhdGUgY29uY2VybiwgYXMgYWx3YXlzLCBpcyBob3cgSSBjYW4gdGVzdCB0aGlzIGVmZmVjdGl2ZWx5LCBlc3BlY2lhbGx5IGluIGEgY29udHJvbGxlZCBlbnZpcm9ubWVudC5cblxuVGhlIHI4MTY5IGRyaXZlciB0YXJnZXRzIFJlYWx0ZWsgUENJIEV4cHJlc3MgR2lnYWJpdCBFdGhlcm5ldCBjb250cm9sbGVycy4gTXkgdGhvdWdodCBpcyBjYW4gSSB1c2UgYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBmb3IgdGhpcy4gQ2FuIEkgdXNlIFFFTVU/IEkga25vdyBRRU1VICpkb2VzKiBzdXBwb3J0IHRoZSBvbGRlciBgcnRsODEzOWAgMTAvMTAwIEV0aGVybmV0IGFkYXB0ZXIsIGJ1dCBub3QgdGhlIHI4MTY5IG91dCBvZiB0aGUgYm94LiBTbywgdGhlIHF1ZXN0aW9uIGlzIGhvdyBjYW4gSSB0ZXN0IHRoaXMgaW4gYSB2aXJ0dWFsIGVudmlyb25tZW50PyBJdCdzIGEgUENJIGRldmljZSwgc28gUUVNVSB3b3VsZCBoYXZlIHRvIGVtdWxhdGUgdGhlIHI4MTY5IGhhcmR3YXJlLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgZG9uJ3QgY29uZnVzZSBydGw4MTM5IHdpdGggdGhlIHRhcmdldC4gSWYgdGhlIGRyaXZlciByZWxpZXMgb24gYSBQQ0kgYnVzLCB0aGVuIHRoZSBkcml2ZXIncyBgcHJvYmVgIGZ1bmN0aW9uIHdvbid0IGV2ZW4gYmUgY2FsbGVkIHVubGVzcyBRRU1VIHByb3Blcmx5IGVtdWxhdGVzIHRoZSBkZXZpY2UuIExldCBtZSBkb3VibGUgY2hlY2sgaWYgUUVNVSBwcm92aWRlcyB0aGF0IGVtdWxhdGlvbiBzcGVjaWZpY2FsbHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwNDU4LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzY4LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMTY6MzQ6NTAuMTUzOTE0MDY2WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4Nzk2Nzk4OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJyODE2OVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9LY29uZmlnPTg0PWNvbmZpZyBSODE2OVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9LY29uZmlnLTEwMC1cXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWc6MTAxOlxcdCAgd2lsbCBiZSBjYWxsZWQgcjgxNjkuICBUaGlzIGlzIHJlY29tbWVuZGVkLlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZy0xMDItXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDE2OjM0OjUwLjM0MTg4NzY1NVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU3ODE5MTQ0NTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgU3l6a2FsbGVyIFBDSSBGdXp6aW5nIEFzc2Vzc21lbnQqKlxuXG5Pa2F5LCBzbyB0aGUgZmlyc3QgdGhpbmcgSSdtIHRoaW5raW5nIGlzLCBjYW4gU3l6a2FsbGVyIGhpdCB0aGlzPyBNeSBpbW1lZGlhdGUgcmVmbGV4IGlzIHRvIGNoZWNrIGZvciBgc3l6X3BjaV9kZXZpY2VfYWRkYCBvciBzaW1pbGFyIGlmIGl0J3MgYSBQQ0kgZHJpdmVyLCB3aGljaCB1c3VhbGx5IG1lYW5zIGl0IG5lZWRzIGFuIGVtdWxhdGVkIFBDSSBkZXZpY2Ugb3IgYHZoY2lgIG9yIGBwY2lgIGZ1enppbmcgc3VwcG9ydC4gQnV0IHdhaXQsIEkgcmVtZW1iZXIgU3l6a2FsbGVyICpkb2VzKiBoYXZlIGEgZGVkaWNhdGVkIFBDSSBmdXp6ZXIgdGhhdCBjYW4gaW5qZWN0IFBDSSBkZXZpY2VzLCB3aGljaCBpcyBncmVhdC5cblxuUmlnaHQsIGByODE2OWAgaXMgaW5kZWVkIGEgUENJIGRyaXZlci4gVGhhdCBtZWFucyBTeXprYWxsZXIgKnNob3VsZCogYmUgYWJsZSB0byB0YWNrbGUgdGhpcyB1c2luZyB0aGUgYHN5el9wY2lgIHBzZXVkby1kZXZpY2Ugb3IgYnkgaW5qZWN0aW5nIFBDSSBjb25maWcgc3BhY2Ug4oCTIGNsYXNzaWMgUENJIGZ1enppbmcgYXBwcm9hY2hlcy5cblxuQWN0dWFsbHksIGl0IGhpdHMgbWUgdGhhdCBTeXprYWxsZXIncyBQQ0kgZnV6emVyIGlzIGRlc2lnbmVkIHRvIGZ1enogKmFueSogUENJIGRyaXZlciBieSBlZmZlY3RpdmVseSBzaW11bGF0aW5nIHRoZSBQQ0kgZGV2aWNlIGl0c2VsZi4gVGhpcyBpcyByZWFsbHkgcHJvbWlzaW5nLlxuXG5Ob3csIEknbSBicm91Z2h0IHVwIHNob3J0IGJ5IHRoZSBwcm9tcHQgbWVudGlvbmluZyBjb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIGV2ZW4gd2l0aCBlbXVsYXRlZCBoYXJkd2FyZSBsaWtlIFVTQiBvciBNQUM4MDIxMS4gT2theSwgZG9lcyBTeXprYWxsZXIncyBlbXVsYXRpb24gYWN0dWFsbHkgY292ZXIgdGhhdCBhc3BlY3Q/XG5cblllcywgd2FpdCwgaXQgY2xpY2tzLiBTeXprYWxsZXIncyBnb3QgYHN5el9wY2lgLCB3aGljaCAqYWJzb2x1dGVseSogY2FuIGVtdWxhdGUgUENJIGRldmljZXMuIFRoYXQncyBwcmVjaXNlbHkgd2hhdCBJIG5lZWQuXG5cbkFscmlnaHQsIGZpbmFsIHN0ZXA6IGxldCdzIHZlcmlmeSBpZiBgcjgxNjlgIGlzICpjdXJyZW50bHkqIGJlaW5nIGZ1enplZCBieSBTeXprYWxsZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxMjk5LCJPdXRwdXRUb2tlbnMiOjI1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjU4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDE2OjM0OjU2LjEyMzgwNTA5N1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozODI5MDY4NDI3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInI4MTY5XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDUzNiBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxuRG9jdW1lbnRhdGlvbi9jb3JlLWFwaS9kbWEtYXBpLnJzdD03NDE9ZXhhbXBsZSB3YXJuaW5nIG1lc3NhZ2UgbWF5IGxvb2sgbGlrZSB0aGlzOjpcXG4tLVxcbkRvY3VtZW50YXRpb24vY29yZS1hcGkvZG1hLWFwaS5yc3QtNzQ4LVxcdHNpbmdsZV0gW3VubWFwcGVkIGFzIHBhZ2VdXFxuRG9jdW1lbnRhdGlvbi9jb3JlLWFwaS9kbWEtYXBpLnJzdDo3NDk6XFx0TW9kdWxlcyBsaW5rZWQgaW46IG5mc2QgZXhwb3J0ZnMgYnJpZGdlIHN0cCBsbGMgcjgxNjlcXG5Eb2N1bWVudGF0aW9uL2NvcmUtYXBpL2RtYS1hcGkucnN0LTc1MC1cXHRQaWQ6IDAsIGNvbW06IHN3YXBwZXIgVGFpbnRlZDogRyAgICAgICAgVyAgMi42LjI4LWRtYXRlc3QtMDkyODktZzhiYjk5YzAgIzFcXG4tLVxcbkRvY3VtZW50YXRpb24vbGVkcy93ZWxsLWtub3duLWxlZHMudHh0PTEwNz1Hb29kOiAhbWRpby1tdXghbWRpb0AyIXN3aXRjaEAwIW1kaW86MDE6Z3JlZW46cmlnaHRcXG5Eb2N1bWVudGF0aW9uL2xlZHMvd2VsbC1rbm93bi1sZWRzLnR4dDoxMDg6R29vZDogcjgxNjktMC0yMDA6MDA6eWVsbG93OmJvdHRvbVxcbkRvY3VtZW50YXRpb24vbGVkcy93ZWxsLWtub3duLWxlZHMudHh0LTEwOS1cXG4tLVxcbk1BSU5UQUlORVJTPTEzNj1TOlxcdE1haW50YWluZWRcXG5NQUlOVEFJTkVSUzoxMzc6RjpcXHRkcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5Klxcbk1BSU5UQUlORVJTLTEzOC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZz04ND1jb25maWcgUjgxNjlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZy0xMDAtXFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9LY29uZmlnOjEwMTpcXHQgIHdpbGwgYmUgY2FsbGVkIHI4MTY5LiAgVGhpcyBpcyByZWNvbW1lbmRlZC5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWctMTAyLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9NYWtlZmlsZT03PW9iai0kKENPTkZJR184MTM5VE9PKSArPSA4MTM5dG9vLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL01ha2VmaWxlOjg6cjgxNjkteSArPSByODE2OV9tYWluLm8gcjgxNjlfZmlybXdhcmUubyByODE2OV9waHlfY29uZmlnLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL01ha2VmaWxlOjk6cjgxNjktJChDT05GSUdfUjgxNjlfTEVEUykgKz0gcjgxNjlfbGVkcy5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9NYWtlZmlsZToxMDpvYmotJChDT05GSUdfUjgxNjkpICs9IHI4MTY5Lm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL01ha2VmaWxlLTExLW9iai0kKENPTkZJR19SVEFTRSkgKz0gcnRhc2UvXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5LmgtMS0vKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OS5oOjI6LyogcjgxNjkuaDogUmVhbFRlayA4MTY5LzgxNjgvODEwMSBldGhlcm5ldCBkcml2ZXIuXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OS5oLTMtICpcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjkuaD04MD1zdHJ1Y3QgcnRsODE2OV9wcml2YXRlO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjkuaDo4MTpzdHJ1Y3QgcjgxNjlfbGVkX2NsYXNzZGV2O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjkuaC04Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5Lmg6ODM6dm9pZCByODE2OV9hcHBseV9maXJtd2FyZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OS5oLTg0LXUxNiBydGw4MTY4aF8yX2dldF9hZGNfYmlhc19pb2Zmc2V0KHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5Lmg9ODU9dTggcnRsODE2OGRfZWZ1c2VfcmVhZChzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgaW50IHJlZ19hZGRyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5Lmg6ODY6dm9pZCByODE2OV9od19waHlfY29uZmlnKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjkuaC04Ny1cXHRcXHRcXHQgZW51bSBtYWNfdmVyc2lvbiB2ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjkuaC04OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5Lmg6ODk6dm9pZCByODE2OV9nZXRfbGVkX25hbWUoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIGludCBpZHgsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OS5oLTkwLVxcdFxcdFxcdGNoYXIgKmJ1ZiwgaW50IGJ1Zl9sZW4pO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OS5oPTkyPWludCBydGw4MTY4X2xlZF9tb2RfY3RybChzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgdTE2IG1hc2ssIHUxNiB2YWwpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjkuaDo5MzpzdHJ1Y3QgcjgxNjlfbGVkX2NsYXNzZGV2ICpydGw4MTY4X2luaXRfbGVkcyhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OS5oLTk0LWludCBydGw4MTI1X2dldF9sZWRfbW9kZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgaW50IGluZGV4KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5Lmg9OTU9aW50IHJ0bDgxMjVfc2V0X2xlZF9tb2RlKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCBpbnQgaW5kZXgsIHUxNiBtb2RlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5Lmg6OTY6c3RydWN0IHI4MTY5X2xlZF9jbGFzc2RldiAqcnRsODEyNV9pbml0X2xlZHMoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjkuaDo5Nzp2b2lkIHI4MTY5X3JlbW92ZV9sZWRzKHN0cnVjdCByODE2OV9sZWRfY2xhc3NkZXYgKmxlZHMpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9maXJtd2FyZS5jLTEtLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfZmlybXdhcmUuYzoyOi8qIHI4MTY5X2Zpcm13YXJlLmM6IFJlYWxUZWsgODE2OS84MTY4LzgxMDEgZXRoZXJuZXQgZHJpdmVyLlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfZmlybXdhcmUuYy0zLSAqXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2Zpcm13YXJlLmMtMTMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9maXJtd2FyZS5jOjE0OiNpbmNsdWRlIFxcXCJyODE2OV9maXJtd2FyZS5oXFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfZmlybXdhcmUuYy0xNS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfZmlybXdhcmUuaC0xLS8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2Zpcm13YXJlLmg6MjovKiByODE2OV9maXJtd2FyZS5oOiBSZWFsVGVrIDgxNjkvODE2OC84MTAxIGV0aGVybmV0IGRyaXZlci5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2Zpcm13YXJlLmgtMy0gKlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmMtMS0vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmM6MjovKiByODE2OV9sZWRzLmM6IFJlYWx0ZWsgODE2OS84MTY4LzgxMDEvODEyNSBldGhlcm5ldCBkcml2ZXIuXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmMtMy0gKlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmMtMTItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmM6MTM6I2luY2x1ZGUgXFxcInI4MTY5LmhcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmMtMTQtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYy0yOS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYzozMDpzdHJ1Y3QgcjgxNjlfbGVkX2NsYXNzZGV2IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYy0zMS1cXHRzdHJ1Y3QgbGVkX2NsYXNzZGV2IGxlZDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jLTM1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jOjM2OiNkZWZpbmUgbGNkZXZfdG9fcjgxNjlfbGRldihsY2RldikgY29udGFpbmVyX29mKGxjZGV2LCBzdHJ1Y3QgcjgxNjlfbGVkX2NsYXNzZGV2LCBsZWQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmMtMzctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmM6Mzg6c3RhdGljIGJvb2wgcjgxNjlfdHJpZ2dlcl9tb2RlX2lzX3ZhbGlkKHVuc2lnbmVkIGxvbmcgZmxhZ3MpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmMtMzkte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmM9NTM9c3RhdGljIGludCBydGw4MTY4X2xlZF9od19jb250cm9sX2lzX3N1cHBvcnRlZChzdHJ1Y3QgbGVkX2NsYXNzZGV2ICpsZWRfY2RldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jLTU1LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYzo1NjpcXHRzdHJ1Y3QgcjgxNjlfbGVkX2NsYXNzZGV2ICpsZGV2ID0gbGNkZXZfdG9fcjgxNjlfbGRldihsZWRfY2Rldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmMtNTctXFx0c3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAgPSBuZXRkZXZfcHJpdihsZGV2LVxcdTAwM2VuZGV2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jLTU5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jOjYwOlxcdGlmICghcjgxNjlfdHJpZ2dlcl9tb2RlX2lzX3ZhbGlkKGZsYWdzKSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jLTYxLVxcdFxcdC8qIFN3aXRjaCBMRUQgb2ZmIHRvIGluZGljYXRlIHRoYXQgbW9kZSBpc24ndCBzdXBwb3J0ZWQgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jPTY5PXN0YXRpYyBpbnQgcnRsODE2OF9sZWRfaHdfY29udHJvbF9zZXQoc3RydWN0IGxlZF9jbGFzc2RldiAqbGVkX2NkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYy03MS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmM6NzI6XFx0c3RydWN0IHI4MTY5X2xlZF9jbGFzc2RldiAqbGRldiA9IGxjZGV2X3RvX3I4MTY5X2xkZXYobGVkX2NkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jLTczLVxcdHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwID0gbmV0ZGV2X3ByaXYobGRldi1cXHUwMDNlbmRldik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYz04OT1zdGF0aWMgaW50IHJ0bDgxNjhfbGVkX2h3X2NvbnRyb2xfZ2V0KHN0cnVjdCBsZWRfY2xhc3NkZXYgKmxlZF9jZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmMtOTEte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jOjkyOlxcdHN0cnVjdCByODE2OV9sZWRfY2xhc3NkZXYgKmxkZXYgPSBsY2Rldl90b19yODE2OV9sZGV2KGxlZF9jZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYy05My1cXHRzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCA9IG5ldGRldl9wcml2KGxkZXYtXFx1MDAzZW5kZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmM9MTIxPXN0YXRpYyBzdHJ1Y3QgZGV2aWNlICpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYzoxMjI6XFx0cjgxNjlfbGVkX2h3X2NvbnRyb2xfZ2V0X2RldmljZShzdHJ1Y3QgbGVkX2NsYXNzZGV2ICpsZWRfY2RldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYy0xMjMte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jOjEyNDpcXHRzdHJ1Y3QgcjgxNjlfbGVkX2NsYXNzZGV2ICpsZGV2ID0gbGNkZXZfdG9fcjgxNjlfbGRldihsZWRfY2Rldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmMtMTI1LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmMtMTI4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jOjEyOTpzdGF0aWMgdm9pZCBydGw4MTY4X3NldHVwX2xkZXYoc3RydWN0IHI4MTY5X2xlZF9jbGFzc2RldiAqbGRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYy0xMzAtXFx0XFx0XFx0ICAgICAgIHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCBpbnQgaW5kZXgpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYy0xMzgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmM6MTM5OlxcdHI4MTY5X2dldF9sZWRfbmFtZSh0cCwgaW5kZXgsIGxlZF9uYW1lLCBMRURfTUFYX05BTUVfU0laRSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmMtMTQwLVxcdGxlZF9jZGV2LVxcdTAwM2VuYW1lID0gbGVkX25hbWU7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYy0xNDUtXFx0bGVkX2NkZXYtXFx1MDAzZWh3X2NvbnRyb2xfZ2V0ID0gcnRsODE2OF9sZWRfaHdfY29udHJvbF9nZXQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmM6MTQ2OlxcdGxlZF9jZGV2LVxcdTAwM2Vod19jb250cm9sX2dldF9kZXZpY2UgPSByODE2OV9sZWRfaHdfY29udHJvbF9nZXRfZGV2aWNlO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jLTE0Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jLTE1MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYzoxNTI6c3RydWN0IHI4MTY5X2xlZF9jbGFzc2RldiAqcnRsODE2OF9pbml0X2xlZHMoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmMtMTUzLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYzoxNTQ6XFx0c3RydWN0IHI4MTY5X2xlZF9jbGFzc2RldiAqbGVkcztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYy0xNTUtXFx0aW50IGk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYz0xNjc9c3RhdGljIGludCBydGw4MTI1X2xlZF9od19jb250cm9sX2lzX3N1cHBvcnRlZChzdHJ1Y3QgbGVkX2NsYXNzZGV2ICpsZWRfY2RldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jLTE2OS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmM6MTcwOlxcdHN0cnVjdCByODE2OV9sZWRfY2xhc3NkZXYgKmxkZXYgPSBsY2Rldl90b19yODE2OV9sZGV2KGxlZF9jZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYy0xNzEtXFx0c3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAgPSBuZXRkZXZfcHJpdihsZGV2LVxcdTAwM2VuZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYy0xNzItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmM6MTczOlxcdGlmICghcjgxNjlfdHJpZ2dlcl9tb2RlX2lzX3ZhbGlkKGZsYWdzKSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jLTE3NC1cXHRcXHQvKiBTd2l0Y2ggTEVEIG9mZiB0byBpbmRpY2F0ZSB0aGF0IG1vZGUgaXNuJ3Qgc3VwcG9ydGVkICovXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYz0xODI9c3RhdGljIGludCBydGw4MTI1X2xlZF9od19jb250cm9sX3NldChzdHJ1Y3QgbGVkX2NsYXNzZGV2ICpsZWRfY2RldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jLTE4NC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmM6MTg1OlxcdHN0cnVjdCByODE2OV9sZWRfY2xhc3NkZXYgKmxkZXYgPSBsY2Rldl90b19yODE2OV9sZGV2KGxlZF9jZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYy0xODYtXFx0c3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAgPSBuZXRkZXZfcHJpdihsZGV2LVxcdTAwM2VuZGV2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jPTIwMz1zdGF0aWMgaW50IHJ0bDgxMjVfbGVkX2h3X2NvbnRyb2xfZ2V0KHN0cnVjdCBsZWRfY2xhc3NkZXYgKmxlZF9jZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmMtMjA1LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYzoyMDY6XFx0c3RydWN0IHI4MTY5X2xlZF9jbGFzc2RldiAqbGRldiA9IGxjZGV2X3RvX3I4MTY5X2xkZXYobGVkX2NkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jLTIwNy1cXHRzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCA9IG5ldGRldl9wcml2KGxkZXYtXFx1MDAzZW5kZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmMtMjI3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jOjIyODpzdGF0aWMgdm9pZCBydGw4MTI1X3NldHVwX2xlZF9sZGV2KHN0cnVjdCByODE2OV9sZWRfY2xhc3NkZXYgKmxkZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmMtMjI5LVxcdFxcdFxcdFxcdCAgIHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCBpbnQgaW5kZXgpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYy0yMzctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmM6MjM4OlxcdHI4MTY5X2dldF9sZWRfbmFtZSh0cCwgaW5kZXgsIGxlZF9uYW1lLCBMRURfTUFYX05BTUVfU0laRSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmMtMjM5LVxcdGxlZF9jZGV2LVxcdTAwM2VuYW1lID0gbGVkX25hbWU7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYy0yNDQtXFx0bGVkX2NkZXYtXFx1MDAzZWh3X2NvbnRyb2xfZ2V0ID0gcnRsODEyNV9sZWRfaHdfY29udHJvbF9nZXQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmM6MjQ1OlxcdGxlZF9jZGV2LVxcdTAwM2Vod19jb250cm9sX2dldF9kZXZpY2UgPSByODE2OV9sZWRfaHdfY29udHJvbF9nZXRfZGV2aWNlO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jLTI0Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jLTI1MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYzoyNTE6c3RydWN0IHI4MTY5X2xlZF9jbGFzc2RldiAqcnRsODEyNV9pbml0X2xlZHMoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmMtMjUyLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYzoyNTM6XFx0c3RydWN0IHI4MTY5X2xlZF9jbGFzc2RldiAqbGVkcztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYy0yNTQtXFx0aW50IGk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYy0yNjUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmM6MjY2OnZvaWQgcjgxNjlfcmVtb3ZlX2xlZHMoc3RydWN0IHI4MTY5X2xlZF9jbGFzc2RldiAqbGVkcylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X2xlZHMuYy0yNjcte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmMtMjcwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbGVkcy5jOjI3MTpcXHRmb3IgKHN0cnVjdCByODE2OV9sZWRfY2xhc3NkZXYgKmwgPSBsZWRzOyBsLVxcdTAwM2VuZGV2OyBsKyspXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9sZWRzLmMtMjcyLVxcdFxcdGxlZF9jbGFzc2Rldl91bnJlZ2lzdGVyKFxcdTAwMjZsLVxcdTAwM2VsZWQpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMi0vKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjM6ICogcjgxNjkuYzogUmVhbFRlayA4MTY5LzgxNjgvODEwMSBldGhlcm5ldCBkcml2ZXIuXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNC0gKlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMzUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MzY6I2luY2x1ZGUgXFxcInI4MTY5LmhcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6Mzc6I2luY2x1ZGUgXFxcInI4MTY5X2Zpcm13YXJlLmhcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMzgtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYz03NjE9c3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy04MDQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6ODA1OlxcdHN0cnVjdCByODE2OV9sZWRfY2xhc3NkZXYgKmxlZHM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtODA2LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM9ODE1PXR5cGVkZWYgdm9pZCAoKnJ0bF9nZW5lcmljX2ZjdCkoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTgxNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzo4MTc6TU9EVUxFX0FVVEhPUihcXFwiUmVhbHRlayBhbmQgdGhlIExpbnV4IHI4MTY5IGNyZXcgXFx1MDAzY25ldGRldkB2Z2VyLmtlcm5lbC5vcmdcXHUwMDNlXFxcIik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtODE4LU1PRFVMRV9ERVNDUklQVElPTihcXFwiUmVhbFRlayBSVEwtODE2OSBHaWdhYml0IEV0aGVybmV0IGRyaXZlclxcXCIpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM9ODgwPXN0YXRpYyB2b2lkIHJ0bF9tb2RfY29uZmlnNShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgdTggY2xlYXIsIHU4IHNldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTg4Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzo4ODg6c3RhdGljIHZvaWQgcjgxNjlfbW9kX3JlZzhfY29uZChzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgaW50IHJlZyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy04ODktXFx0XFx0XFx0XFx0dTggYml0cywgYm9vbCBjb25kKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM9MTAzNz1pbnQgcnRsODEyNV9nZXRfbGVkX21vZGUoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIGludCBpbmRleClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTEwNTMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MTA1NDp2b2lkIHI4MTY5X2dldF9sZWRfbmFtZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgaW50IGlkeCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xMDU1LVxcdFxcdFxcdGNoYXIgKmJ1ZiwgaW50IGJ1Zl9sZW4pXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYz0xMzg3PURFQ0xBUkVfUlRMX0NPTkQocnRsX3BoeWFyX2NvbmQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xMzkxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjEzOTI6c3RhdGljIHZvaWQgcjgxNjlfbWRpb193cml0ZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgaW50IHJlZywgaW50IHZhbHVlKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTEzOTMte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTQwMy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoxNDA0OnN0YXRpYyBpbnQgcjgxNjlfbWRpb19yZWFkKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCBpbnQgcmVnKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTE0MDUte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM9MTQzOT1zdGF0aWMgdm9pZCByODE2OGRwXzJfbWRpb193cml0ZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgaW50IHJlZywgaW50IHZhbHVlKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTQ0Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoxNDQzOlxcdHI4MTY5X21kaW9fd3JpdGUodHAsIHJlZywgdmFsdWUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTE0NDQtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYz0xNDQ4PXN0YXRpYyBpbnQgcjgxNjhkcF8yX21kaW9fcmVhZChzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgaW50IHJlZylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTE0NTctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MTQ1ODpcXHR2YWx1ZSA9IHI4MTY5X21kaW9fcmVhZCh0cCwgcmVnKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xNDU5LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM9MTQ2NT1zdGF0aWMgdm9pZCBydGxfd3JpdGVwaHkoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIGludCBsb2NhdGlvbiwgaW50IHZhbClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTE0NzUtXFx0ZGVmYXVsdDpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoxNDc2OlxcdFxcdHI4MTY5X21kaW9fd3JpdGUodHAsIGxvY2F0aW9uLCB2YWwpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTE0NzctXFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYz0xNDgxPXN0YXRpYyBpbnQgcnRsX3JlYWRwaHkoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIGludCBsb2NhdGlvbilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTE0ODktXFx0ZGVmYXVsdDpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoxNDkwOlxcdFxcdHJldHVybiByODE2OV9tZGlvX3JlYWQodHAsIGxvY2F0aW9uKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xNDkxLVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jPTE3MTA9c3RhdGljIHZvaWQgcnRsX3NldF9kM19wbGxfZG93bihzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgYm9vbCBlbmFibGUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xNzE4LVxcdGNhc2UgUlRMX0dJR0FfTUFDX1ZFUl84MDpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoxNzE5OlxcdFxcdHI4MTY5X21vZF9yZWc4X2NvbmQodHAsIFBNQ0gsIEQzX05PX1BMTF9ET1dOLCB0cnVlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xNzIwLVxcdFxcdGJyZWFrO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTE3MjEtXFx0ZGVmYXVsdDpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoxNzIyOlxcdFxcdHI4MTY5X21vZF9yZWc4X2NvbmQodHAsIFBNQ0gsIEQzSE9UX05PX1BMTF9ET1dOLCB0cnVlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoxNzIzOlxcdFxcdHI4MTY5X21vZF9yZWc4X2NvbmQodHAsIFBNQ0gsIEQzQ09MRF9OT19QTExfRE9XTiwgIWVuYWJsZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTcyNC1cXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jPTE4MzA9c3RhdGljIHZvaWQgX19ydGw4MTY5X3NldF93b2woc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIHUzMiB3b2xvcHRzKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTg0NC1cXHR9IGVsc2Uge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjE4NDU6XFx0XFx0cjgxNjlfbW9kX3JlZzhfY29uZCh0cCwgQ29uZmlnMywgTWFnaWNQYWNrZXQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTg0Ni1cXHRcXHRcXHRcXHQgICAgd29sb3B0cyBcXHUwMDI2IFdBS0VfTUFHSUMpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTg0OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoxODQ5OlxcdHI4MTY5X21vZF9yZWc4X2NvbmQodHAsIENvbmZpZzMsIExpbmtVcCwgd29sb3B0cyBcXHUwMDI2IFdBS0VfUEhZKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xODUwLVxcdGlmIChydGxfaXNfODEyNSh0cCkpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xODUyLVxcdFxcdFxcdFxcdCAgICAgd29sb3B0cyBcXHUwMDI2IFdBS0VfUEhZID8gMHgxMyA6IDApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjE4NTM6XFx0cjgxNjlfbW9kX3JlZzhfY29uZCh0cCwgQ29uZmlnNSwgVVdGLCB3b2xvcHRzIFxcdTAwMjYgV0FLRV9VQ0FTVCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MTg1NDpcXHRyODE2OV9tb2RfcmVnOF9jb25kKHRwLCBDb25maWc1LCBCV0YsIHdvbG9wdHMgXFx1MDAyNiBXQUtFX0JDQVNUKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoxODU1OlxcdHI4MTY5X21vZF9yZWc4X2NvbmQodHAsIENvbmZpZzUsIE1XRiwgd29sb3B0cyBcXHUwMDI2IFdBS0VfTUNBU1QpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjE4NTY6XFx0cjgxNjlfbW9kX3JlZzhfY29uZCh0cCwgQ29uZmlnNSwgTGFuV2FrZSwgd29sb3B0cyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTg1Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTE4NTktXFx0Y2FzZSBSVExfR0lHQV9NQUNfVkVSXzAyIC4uLiBSVExfR0lHQV9NQUNfVkVSXzA2OlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjE4NjA6XFx0XFx0cjgxNjlfbW9kX3JlZzhfY29uZCh0cCwgQ29uZmlnMSwgUE1FbmFibGUsIHdvbG9wdHMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTE4NjEtXFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0xODY0LVxcdGNhc2UgUlRMX0dJR0FfTUFDX1ZFUl8zOSAuLi4gUlRMX0dJR0FfTUFDX1ZFUl9MQVNUOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjE4NjU6XFx0XFx0cjgxNjlfbW9kX3JlZzhfY29uZCh0cCwgQ29uZmlnMiwgUE1FX1NJR05BTCwgd29sb3B0cyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMTg2Ni1cXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jPTIzMjY9c3RhdGljIHZvaWQgcnRsX3NldF9lZWVfdHhpZGxlX3RpbWVyKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMjM0NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoyMzQ1OnN0YXRpYyB1bnNpZ25lZCBpbnQgcjgxNjlfZ2V0X3R4X2xwaV90aW1lcl91cyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0yMzQ2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jPTIzNTc9c3RhdGljIGludCBydGw4MTY5X2dldF9lZWUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IGV0aHRvb2xfa2VlZSAqZGF0YSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTIzNjgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MjM2OTpcXHRkYXRhLVxcdTAwM2V0eF9scGlfdGltZXIgPSByODE2OV9nZXRfdHhfbHBpX3RpbWVyX3VzKHRwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0yMzcwLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM9MjU3Nj1zdGF0aWMgdm9pZCBydGxfcmVsZWFzZV9maXJtd2FyZShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTI1ODQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MjU4NTp2b2lkIHI4MTY5X2FwcGx5X2Zpcm13YXJlKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTI1ODYte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM9MjYzND1zdGF0aWMgdm9pZCBydGw4MTY5X2luaXRfcGh5KHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMjYzNy1cXHRwaHlfcmVzdW1lKHRwLVxcdTAwM2VwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjI2Mzg6XFx0cjgxNjlfaHdfcGh5X2NvbmZpZyh0cCwgdHAtXFx1MDAzZXBoeWRldiwgdHAtXFx1MDAzZW1hY192ZXJzaW9uKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0yNjM5LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM9MjcyMT1zdGF0aWMgdm9pZCBydGxfanVtYm9fY29uZmlnKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMjczMi1cXHRjYXNlIFJUTF9HSUdBX01BQ19WRVJfMTc6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MjczMzpcXHRcXHRyODE2OV9tb2RfcmVnOF9jb25kKHRwLCBDb25maWc0LCBCSVQoMCksIGp1bWJvKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0yNzM0LVxcdFxcdGJyZWFrO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTI3MzUtXFx0Y2FzZSBSVExfR0lHQV9NQUNfVkVSXzE4IC4uLiBSVExfR0lHQV9NQUNfVkVSXzI2OlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjI3MzY6XFx0XFx0cjgxNjlfbW9kX3JlZzhfY29uZCh0cCwgQ29uZmlnMywgSnVtYm9fRW4wLCBqdW1ibyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6MjczNzpcXHRcXHRyODE2OV9tb2RfcmVnOF9jb25kKHRwLCBDb25maWc0LCBKdW1ib19FbjEsIGp1bWJvKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0yNzM4LVxcdFxcdGJyZWFrO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTI3MzktXFx0Y2FzZSBSVExfR0lHQV9NQUNfVkVSXzI4OlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjI3NDA6XFx0XFx0cjgxNjlfbW9kX3JlZzhfY29uZCh0cCwgQ29uZmlnMywgSnVtYm9fRW4wLCBqdW1ibyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMjc0MS1cXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTI3NDMtXFx0XFx0UlRMX1c4KHRwLCBNYXhUeFBhY2tldFNpemUsIGp1bWJvID8gMHgyNCA6IDB4M2YpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjI3NDQ6XFx0XFx0cjgxNjlfbW9kX3JlZzhfY29uZCh0cCwgQ29uZmlnMywgSnVtYm9fRW4wLCBqdW1ibyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6Mjc0NTpcXHRcXHRyODE2OV9tb2RfcmVnOF9jb25kKHRwLCBDb25maWc0LCBCSVQoMCksIGp1bWJvKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0yNzQ2LVxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM9MzgwMT1zdGF0aWMgdm9pZCBydGxfaHdfc3RhcnRfODExNyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTM4NjAtXFx0LyogZmlybXdhcmUgaXMgZm9yIE1BQyBvbmx5ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6Mzg2MTpcXHRyODE2OV9hcHBseV9maXJtd2FyZSh0cCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtMzg2Mi19XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYz01MDk1PXN0YXRpYyB2b2lkIHJ0bF9lbmFibGVfdHhfbHBpKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCBib29sIGVuYWJsZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTUxMjYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6NTEyNzpzdGF0aWMgaW50IHI4MTY5X3BoeV9jb25uZWN0KHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTUxMjgte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM9NTIxNz1zdGF0aWMgaW50IHJ0bF9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy01MjUxLVxcdGlmICh0cC1cXHUwMDNlcGh5ZGV2KSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6NTI1MjpcXHRcXHRyZXR2YWwgPSByODE2OV9waHlfY29ubmVjdCh0cCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNTI1My1cXHRcXHRpZiAocmV0dmFsKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM9NTQxOT1zdGF0aWMgdm9pZCBydGxfcmVtb3ZlX29uZShzdHJ1Y3QgcGNpX2RldiAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTU0MjgtXFx0aWYgKElTX0VOQUJMRUQoQ09ORklHX1I4MTY5X0xFRFMpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjU0Mjk6XFx0XFx0cjgxNjlfcmVtb3ZlX2xlZHModHAtXFx1MDAzZWxlZHMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTU0MzAtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYz01NTEzPXN0YXRpYyB2b2lkIHI4MTY4Z193YWl0X2xsX3NoYXJlX2ZpZm9fcmVhZHkoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy01NTE3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjU1MTg6c3RhdGljIGludCByODE2OV9tZGlvX3JlYWRfcmVnKHN0cnVjdCBtaWlfYnVzICptaWlfYnVzLCBpbnQgcGh5YWRkciwgaW50IHBoeXJlZylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy01NTE5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTU1MjctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6NTUyODpzdGF0aWMgaW50IHI4MTY5X21kaW9fd3JpdGVfcmVnKHN0cnVjdCBtaWlfYnVzICptaWlfYnVzLCBpbnQgcGh5YWRkcixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy01NTI5LVxcdFxcdFxcdFxcdGludCBwaHlyZWcsIHUxNiB2YWwpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy01NTQwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjU1NDE6c3RhdGljIGludCByODE2OV9tZGlvX3JlYWRfcmVnX2M0NShzdHJ1Y3QgbWlpX2J1cyAqbWlpX2J1cywgaW50IGFkZHIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNTU0Mi1cXHRcXHRcXHRcXHQgICBpbnQgZGV2bnVtLCBpbnQgcmVnbnVtKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNTU1NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzo1NTU1OnN0YXRpYyBpbnQgcjgxNjlfbWRpb193cml0ZV9yZWdfYzQ1KHN0cnVjdCBtaWlfYnVzICptaWlfYnVzLCBpbnQgYWRkcixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy01NTU2LVxcdFxcdFxcdFxcdCAgICBpbnQgZGV2bnVtLCBpbnQgcmVnbnVtLCB1MTYgdmFsKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNTU2Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzo1NTY4OnN0YXRpYyBpbnQgcjgxNjlfbWRpb19yZWdpc3RlcihzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy01NTY5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTU1ODAtXFx0ICAgIHRwLVxcdTAwM2VtYWNfdmVyc2lvbiA9PSBSVExfR0lHQV9NQUNfVkVSXzI2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjU1ODE6XFx0XFx0cjgxNjlfbWRpb193cml0ZSh0cCwgMHgxZiwgMCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNTU4Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTU1ODYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6NTU4NzpcXHRuZXdfYnVzLVxcdTAwM2VuYW1lID0gXFxcInI4MTY5XFxcIjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy01NTg4LVxcdG5ld19idXMtXFx1MDAzZXByaXYgPSB0cDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTU1OTEtXFx0bmV3X2J1cy1cXHUwMDNlcGh5X21hc2sgPSBHRU5NQVNLKDMxLCAxKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzo1NTkyOlxcdHNucHJpbnRmKG5ld19idXMtXFx1MDAzZWlkLCBNSUlfQlVTX0lEX1NJWkUsIFxcXCJyODE2OS0leC0leFxcXCIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNTU5My1cXHRcXHQgcGNpX2RvbWFpbl9ucihwZGV2LVxcdTAwM2VidXMpLCBwY2lfZGV2X2lkKHBkZXYpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy01NTk0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjU1OTU6XFx0bmV3X2J1cy1cXHUwMDNlcmVhZCA9IHI4MTY5X21kaW9fcmVhZF9yZWc7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6NTU5NjpcXHRuZXdfYnVzLVxcdTAwM2V3cml0ZSA9IHI4MTY5X21kaW9fd3JpdGVfcmVnO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTU1OTctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNTU5OC1cXHRpZiAodHAtXFx1MDAzZW1hY192ZXJzaW9uIFxcdTAwM2U9IFJUTF9HSUdBX01BQ19WRVJfNDApIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzo1NTk5OlxcdFxcdG5ld19idXMtXFx1MDAzZXJlYWRfYzQ1ID0gcjgxNjlfbWRpb19yZWFkX3JlZ19jNDU7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6NTYwMDpcXHRcXHRuZXdfYnVzLVxcdTAwM2V3cml0ZV9jNDUgPSByODE2OV9tZGlvX3dyaXRlX3JlZ19jNDU7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNTYwMS1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYz01ODc5PXN0YXRpYyB1bnNpZ25lZCBsb25nIHJ0bDgxNjlfZ2V0X2xwaV9jYXBzKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNTkwMC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzo1OTAxOnN0YXRpYyBjb25zdCBzdHJ1Y3QgcGh5bGlua19wY3Nfb3BzIHI4MTY5X3Bjc19vcHMgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNTkwMi1cXHQucGNzX3ZhbGlkYXRlID0gcnRsODE2OV9wY3NfdmFsaWRhdGUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYz01OTA4PXN0YXRpYyBpbnQgcnRsX2luaXRfcGh5bGluayhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTU5MjAtXFx0Y2FzZSBSVExfU0ZQXzgxNjhfQUY6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6NTkyMTpcXHRcXHR0cC1cXHUwMDNlcGNzLm9wcyA9IFxcdTAwMjZyODE2OV9wY3Nfb3BzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTU5MjItXFx0XFx0dHAtXFx1MDAzZXBoeWxpbmtfY29uZmlnLmRlZmF1bHRfYW5faW5iYW5kID0gdHJ1ZTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTU5MjYtXFx0Y2FzZSBSVExfU0ZQXzgxMjdfQVRGOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjU5Mjc6XFx0XFx0dHAtXFx1MDAzZXBjcy5vcHMgPSBcXHUwMDI2cjgxNjlfcGNzX29wcztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy01OTI4LVxcdFxcdHBoeV9tb2RlID0gUEhZX0lOVEVSRkFDRV9NT0RFXzEwR0JBU0VSO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM9NTk3MD1zdGF0aWMgaW50IHJ0bF9pbml0X29uZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTYwMzMtXFx0XFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgLUVOT0RFVixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzo2MDM0OlxcdFxcdFxcdFxcdCAgICAgXFxcInVua25vd24gY2hpcCAlc1hJRCAleCwgY29udGFjdCByODE2OSBtYWludGFpbmVycyAoc2VlIE1BSU5UQUlORVJTIGZpbGUpXFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTYwMzUtXFx0XFx0XFx0XFx0ICAgICBleHRfeGlkX3N0ciwgeGlkKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTYxNTktXFx0aWYgKHRwLVxcdTAwM2VzZnBfbW9kZSA9PSBSVExfU0ZQX05PTkUpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzo2MTYwOlxcdFxcdHJjID0gcjgxNjlfbWRpb19yZWdpc3Rlcih0cCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNjE2MS1cXHRcXHRpZiAocmMpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfcGh5X2NvbmZpZy5jLTItLypcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X3BoeV9jb25maWcuYzozOiAqIHI4MTY5X3BoeV9jb25maWcuYzogUmVhbFRlayA4MTY5LzgxNjgvODEwMSBldGhlcm5ldCBkcml2ZXIuXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9waHlfY29uZmlnLmMtNC0gKlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9waHlfY29uZmlnLmMtMTQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9waHlfY29uZmlnLmM6MTU6I2luY2x1ZGUgXFxcInI4MTY5LmhcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9waHlfY29uZmlnLmMtMTYtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X3BoeV9jb25maWcuYz00MzI9c3RhdGljIHZvaWQgcnRsODE2OGRfYXBwbHlfZmlybXdhcmVfY29uZChzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfcGh5X2NvbmZpZy5jLTQ0NS1cXHRlbHNlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9waHlfY29uZmlnLmM6NDQ2OlxcdFxcdHI4MTY5X2FwcGx5X2Zpcm13YXJlKHRwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X3BoeV9jb25maWcuYy00NDctfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9waHlfY29uZmlnLmM9NTM4PXN0YXRpYyB2b2lkIHJ0bDgxNjhlXzFfaHdfcGh5X2NvbmZpZyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfcGh5X2NvbmZpZy5jLTU1MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X3BoeV9jb25maWcuYzo1NTI6XFx0cjgxNjlfYXBwbHlfZmlybXdhcmUodHApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfcGh5X2NvbmZpZy5jLTU1My1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfcGh5X2NvbmZpZy5jPTU4Mz1zdGF0aWMgdm9pZCBydGw4MTY4ZV8yX2h3X3BoeV9jb25maWcoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X3BoeV9jb25maWcuYy01ODUte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfcGh5X2NvbmZpZy5jOjU4NjpcXHRyODE2OV9hcHBseV9maXJtd2FyZSh0cCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9waHlfY29uZmlnLmMtNTg3LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9waHlfY29uZmlnLmM9NjQxPXN0YXRpYyB2b2lkIHJ0bDgxNjhmXzFfaHdfcGh5X2NvbmZpZyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfcGh5X2NvbmZpZy5jLTY0My17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9waHlfY29uZmlnLmM6NjQ0OlxcdHI4MTY5X2FwcGx5X2Zpcm13YXJlKHRwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X3BoeV9jb25maWcuYy02NDUtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X3BoeV9jb25maWcuYz02Njk9c3RhdGljIHZvaWQgcnRsODE2OGZfMl9od19waHlfY29uZmlnKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9waHlfY29uZmlnLmMtNjcxLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X3BoeV9jb25maWcuYzo2NzI6XFx0cjgxNjlfYXBwbHlfZmlybXdhcmUodHApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfcGh5X2NvbmZpZy5jLTY3My1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfcGh5X2NvbmZpZy5jPTY3Nz1zdGF0aWMgdm9pZCBydGw4NDExX2h3X3BoeV9jb25maWcoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X3BoeV9jb25maWcuYy02Nzkte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfcGh5X2NvbmZpZy5jOjY4MDpcXHRyODE2OV9hcHBseV9maXJtd2FyZSh0cCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9waHlfY29uZmlnLmMtNjgxLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9waHlfY29uZmlnLmM9NzQxPXN0YXRpYyB2b2lkIHJ0bDgxNjhnXzFfaHdfcGh5X2NvbmZpZyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfcGh5X2NvbmZpZy5jLTc0NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X3BoeV9jb25maWcuYzo3NDY6XFx0cjgxNjlfYXBwbHlfZmlybXdhcmUodHApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfcGh5X2NvbmZpZy5jLTc0Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfcGh5X2NvbmZpZy5jPTc4OT1zdGF0aWMgdm9pZCBydGw4MTY4Z18yX2h3X3BoeV9jb25maWcoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X3BoeV9jb25maWcuYy03OTEte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfcGh5X2NvbmZpZy5jOjc5MjpcXHRyODE2OV9hcHBseV9maXJtd2FyZSh0cCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9waHlfY29uZmlnLmMtNzkzLVxcdHJ0bDgxNjhnX2NvbmZpZ19lZWVfcGh5KHBoeWRldik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X3BoeV9jb25maWcuYz03OTY9c3RhdGljIHZvaWQgcnRsODE2OGhfMl9od19waHlfY29uZmlnKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9waHlfY29uZmlnLmMtODAxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfcGh5X2NvbmZpZy5jOjgwMjpcXHRyODE2OV9hcHBseV9maXJtd2FyZSh0cCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9waHlfY29uZmlnLmMtODAzLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9waHlfY29uZmlnLmM9OTQ3PXN0YXRpYyB2b2lkIHJ0bDgxMDVlX2h3X3BoeV9jb25maWcoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X3BoeV9jb25maWcuYy05NTMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9waHlfY29uZmlnLmM6OTU0OlxcdHI4MTY5X2FwcGx5X2Zpcm13YXJlKHRwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X3BoeV9jb25maWcuYy05NTUtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X3BoeV9jb25maWcuYz05NjE9c3RhdGljIHZvaWQgcnRsODQwMl9od19waHlfY29uZmlnKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9waHlfY29uZmlnLmMtOTY3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfcGh5X2NvbmZpZy5jOjk2ODpcXHRyODE2OV9hcHBseV9maXJtd2FyZSh0cCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9waHlfY29uZmlnLmMtOTY5LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9waHlfY29uZmlnLmM9OTc3PXN0YXRpYyB2b2lkIHJ0bDgxMDZlX2h3X3BoeV9jb25maWcoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X3BoeV9jb25maWcuYy05OTAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9waHlfY29uZmlnLmM6OTkxOlxcdHI4MTY5X2FwcGx5X2Zpcm13YXJlKHRwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X3BoeV9jb25maWcuYy05OTItXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X3BoeV9jb25maWcuYz0xMDAxPXN0YXRpYyB2b2lkIHJ0bDgxMjVhXzJfaHdfcGh5X2NvbmZpZyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfcGh5X2NvbmZpZy5jLTEwNDUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9waHlfY29uZmlnLmM6MTA0NjpcXHRyODE2OV9hcHBseV9maXJtd2FyZSh0cCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9waHlfY29uZmlnLmMtMTA0Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfcGh5X2NvbmZpZy5jPTEwNjM9c3RhdGljIHZvaWQgcnRsODEyNWJfaHdfcGh5X2NvbmZpZyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfcGh5X2NvbmZpZy5jLTEwNjUte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfcGh5X2NvbmZpZy5jOjEwNjY6XFx0cjgxNjlfYXBwbHlfZmlybXdhcmUodHApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfcGh5X2NvbmZpZy5jLTEwNjctXFx0cnRsODE2OGdfZW5hYmxlX2dwaHlfMTBtKHBoeWRldik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X3BoeV9jb25maWcuYz0xMDk4PXN0YXRpYyB2b2lkIHJ0bDgxMjVkX2h3X3BoeV9jb25maWcoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsXFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDE2OjM0OjU5Ljk1Mjg4MDgxNFoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEyNDEyMjUzNzAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgdGhlIHI4MTY5IERyaXZlciB3aXRoIHN5el9wY2kqKlxuXG5Pa2F5LCBzbyB3ZSdyZSBsb29raW5nIGF0IGZ1enppbmcgdGhlIGByODE2OWAgZHJpdmVyLCB3aGljaCBpcyBhIFBDSSBkcml2ZXIsIHVzaW5nIGBzeXpfcGNpYC4gIFN5emthbGxlcidzIGBzeXpfcGNpYCBwc2V1ZG8tZGV2aWNlIGlzIHRoZSBrZXkgaGVyZS4gVGhlIHF1ZXN0aW9uIGlzLCBpcyB0aGlzIHBhdGNoIGZ1enotd29ydGh5PyAgWWVzLCBpdCBzZWVtcyB0byBiZSEgVGhpcyBwYXRjaCBpbnZvbHZlcyBzaWduaWZpY2FudCBjaGFuZ2VzLCBzcGVjaWZpY2FsbHkgdGhlIGFkb3B0aW9uIG9mIGBwaHlsaW5rYCBieSB0aGUgYHI4MTY5YCBkcml2ZXIgYW5kIHRoZSBhZGRpdGlvbiBvZiBgcGh5bGlua19zZXRfbWFjX2NhcGFiaWxpdGllc2AgdG8gYHBoeWxpbmsuY2AuXG5cblJpZ2h0LCBsZXQncyBkaXZlIGludG8gdGhlIGRldGFpbHMuIEkgbmVlZCB0byBpZGVudGlmeSB3aGljaCBmdW5jdGlvbnMgYXJlIGJlaW5nIG1vZGlmaWVkIG9yIGFkZGVkLiBMZXQncyBzZWUuLi4gaW4gYGRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jYCB0aGVyZSdzIHF1aXRlIGEgbGlzdDogYHI4MTI3X3Nkc19yZWFkYCwgYHI4MTI3X3Nkc193cml0ZWAsIGByODEyN19zZHNfbW9kaWZ5YCwgYHI4MTI3X3NmcF9pbml0XzFnYCwgYHI4MTI3X3NmcF9pbml0XzEwZ2AsIGBydGxfaXNfODExNmFmYCwgYHJ0bF9nZXRfc2ZwX21vZGVgLCBgcnRsX2xpbmtfY2hnX3BhdGNoYCwgYHJ0bDgxNjlfZ2V0X2xpbmtfa3NldHRpbmdzYCwgYHJ0bDgxNjlfc2V0X2xpbmtfa3NldHRpbmdzYCwgYHJ0bDgxNjlfbndheV9yZXNldGAsIGBydGw4MTY5X2lvY3RsYCwgYHJ0bF9sb3dwb3dlcl9oaWRkZW5fZnVuY3Rpb25zYCwgYHJ0bDgxNjlfY2hhbmdlX210dWAsIGBydGxfbWFjX2xpbmtfZG93bmAsIGBydGxfbWFjX2xpbmtfdXBgLCBgcnRsX21hY19zZWxlY3RfcGNzYCwgYHJ0bF9tYWNfY29uZmlnYCwgYHJ0bDgxNjlfc2RzX3JlYWRgLCBgcnRsODE2OV9wY3NfZ2V0X3N0YXRlYCwgYHJ0bDgxNjlfcGNzX2NvbmZpZ2AsIGBydGw4MTY5X3Bjc192YWxpZGF0ZWAsIGBydGw4MTY5X3Bjc19hbl9yZXN0YXJ0YCwgYHJ0bF9tYWNfZGlzYWJsZV90eF9scGlgLCBgcnRsX21hY19lbmFibGVfdHhfbHBpYCwgYHJ0bDgxNjlfZ2V0X2xwaV9jYXBzYCwgYW5kIGBydGxfaW5pdF9waHlsaW5rYC4gQW5kIGluIGBkcml2ZXJzL25ldC9waHkvcGh5bGluay5jYCwgd2UgaGF2ZSBgcGh5bGlua19zZXRfbWFjX2NhcGFiaWxpdGllc2AuXG5cbk5leHQsIEkgbmVlZCB0byBjaGVjayBpZiBgQ09ORklHX1I4MTY5YCBpcyBlbmFibGVkIGJ5IGRlZmF1bHQuICBJdCdzIHByb2JhYmx5IGVuYWJsZWQsIGJlaW5nIGEgY29tbW9uIG5ldHdvcmsgZHJpdmVyLCBidXQgbGV0J3MgYmUgdGhvcm91Z2ggYW5kIGxpc3QgaXQgYW55d2F5LiBXYWl0LCBzY3JhdGNoIHRoYXQuIFRoZSBpbnN0cnVjdGlvbnMgYXJlIHRvIGxpc3Qgb25seSBzcGVjaWZpYyBjb25maWdzIHRoYXQgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUsIGFuZCAqbm90KiBpbmNsdWRlIHRoZSBcIkNPTkZJR19cIiBwcmVmaXguIEdvdCBpdC4gU28sIGBSODE2OWAgZ29lcyBpbnRvIGBFbmFibGVDb25maWdzYCBhbmQgYFBIWUxJTktgIGFzIHdlbGwsIGJlY2F1c2UgYFI4MTY5YCBub3cgc2VsZWN0cyBpdC5cblxuT2theSwgbGV0J3MgZmlndXJlIG91dCB3aGF0IHN5bWJvbHMgdG8gZm9jdXMgb24gZm9yIGZ1enppbmcuIFdlIHdhbnQgdGhlIG5ldyBvciBzaWduaWZpY2FudGx5IG1vZGlmaWVkIGZ1bmN0aW9ucy4gIEFscmlnaHQsIGxldCdzIHNlZS4uLiAgV2Ugc2hvdWxkIGZvY3VzIG9uOiBgcGh5bGlua19zZXRfbWFjX2NhcGFiaWxpdGllc2AsIGBydGxfaW5pdF9waHlsaW5rYCwgYHJ0bDgxNjlfcGNzX2NvbmZpZ2AsIGBydGw4MTY5X3Bjc19nZXRfc3RhdGVgLCBgcnRsX21hY19saW5rX3VwYCwgYHJ0bF9tYWNfbGlua19kb3duYCwgYHJ0bF9tYWNfc2VsZWN0X3Bjc2AsIGBydGxfbWFjX2Rpc2FibGVfdHhfbHBpYCwgYHJ0bF9tYWNfZW5hYmxlX3R4X2xwaWAsIGBydGw4MTY5X2NoYW5nZV9tdHVgLCBgcnRsX2xvd3Bvd2VyX2hpZGRlbl9mdW5jdGlvbnNgLCBgcjgxMjdfc2ZwX2luaXRfMWdgLCBgcjgxMjdfc2ZwX2luaXRfMTBnYCwgYW5kIGBydGw4MTY5X2lvY3RsYC5cblxuTm93LCBpcyBgcGh5bGlua19zZXRfbWFjX2NhcGFiaWxpdGllc2AgZXhwb3J0ZWQ/IFllcywgaXQgaXMhICBgRVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19zZXRfbWFjX2NhcGFiaWxpdGllcyk7YCBjb25maXJtcyBpdC4gQW5kLCBsZXQncyBjaGVjayBgcnRsODE2OV9jaGFuZ2VfbXR1YCAtIHllcCwgaXQncyBiZWVuIG1vZGlmaWVkIHRvIGNhbGwgYHBoeWxpbmtfc2V0X21hY19jYXBhYmlsaXRpZXNgLlxuXG5GaW5hbGx5LCBhIHF1aWNrIGNvZGUgc2VhcmNoIHRvIHZlcmlmeSBldmVyeXRoaW5nLiBNYWtlcyBzZW5zZSFcblxuXG4iLCJJbnB1dFRva2VucyI6MzY2NTksIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5ODQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMTY6MzU6MTIuMzY1MTM4ODA0WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExNDk4ODQ5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwaHlsaW5rX3NldF9tYWNfY2FwYWJpbGl0aWVzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0xODI5PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfc2V0X2ZpeGVkX2xpbmspO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xODMxLS8qKlxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTgzMjogKiBwaHlsaW5rX3NldF9tYWNfY2FwYWJpbGl0aWVzKCkgLSBEeW5hbWljYWxseSB1cGRhdGUgTUFDIGNhcGFiaWxpdGllc1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTgzMy0gKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTgzOS0gKi9cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjE4NDA6dm9pZCBwaHlsaW5rX3NldF9tYWNfY2FwYWJpbGl0aWVzKHN0cnVjdCBwaHlsaW5rICpwbCwgdW5zaWduZWQgbG9uZyBtYWNfY2FwYWJpbGl0aWVzKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTg0MS17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE4OTQtfVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTg5NTpFWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX3NldF9tYWNfY2FwYWJpbGl0aWVzKTtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE4OTYtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDE2OjM1OjEyLjQ4MDEzNDI0NFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjgxNDYzNDAzMjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGl2aW5nIGludG8gdGhlIFJlYWx0ZWsgUEhZIEluaXRpYWxpemF0aW9uKipcblxuT2theSwgdGltZSB0byBnZXQgdG8gdGhlIGhlYXJ0IG9mIHRoaXMgUmVhbHRlayBpc3N1ZS4gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiBob3cgdGhpcyBQSFkgaXMgaW5pdGlhbGl6ZWQsIHNvIEknbSBoZWFkaW5nIHN0cmFpZ2h0IGZvciBgcnRsX2luaXRfcGh5bGlua2AuIEknbSBnb2luZyB0byBuYXZpZ2F0ZSB0byBgZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmNgLiBUaGF0J3Mgd2hlcmUgSSBleHBlY3QgdG8gZmluZCB0aGUgbG93LWxldmVsIFBIWSBpbnRlcmFjdGlvbiBsb2dpYy4gU3BlY2lmaWNhbGx5LCBgcnRsX2luaXRfcGh5bGlua2AgbGlrZWx5IGhhbmRsZXMgdGhlIFBIWSdzIGluaXRpYWwgc2V0dXAgYW5kIGNvbmZpZ3VyYXRpb24sIGluY2x1ZGluZyBwb3RlbnRpYWxseSBhdXRvbmVnb3RpYXRpb24gYW5kIGxpbmsgc3BlZWQvZHVwbGV4IHNldHRpbmcuIEknbSBob3BpbmcgSSBjYW4gZ2xlYW4gaW5mb3JtYXRpb24gZnJvbSB0aGVyZSB0aGF0IGhlbHBzIG1lIGdldCB0byB0aGUgYm90dG9tIG9mIHRoZSBwcm9ibGVtLiBUaW1lIHRvIHNlZSB3aGF0J3MgZ29pbmcgb24gdW5kZXIgdGhlIGhvb2QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM4ODk4LCJPdXRwdXRUb2tlbnMiOjQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMTY6MzU6MjAuNjI2NDc2ODM4WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTYxNTAwMjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicnRsX2luaXRfcGh5bGlua1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYz01OTAxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGh5bGlua19wY3Nfb3BzIHI4MTY5X3Bjc19vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy01OTA3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjU5MDg6c3RhdGljIGludCBydGxfaW5pdF9waHlsaW5rKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTU5MDkte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM9NTk3MD1zdGF0aWMgaW50IHJ0bF9pbml0X29uZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTYxNTQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6NjE1NTpcXHRyYyA9IHJ0bF9pbml0X3BoeWxpbmsodHApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTYxNTYtXFx0aWYgKHJjKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QxNjozNToyMC43NDI2MzQ2MTdaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTAyMTQxMTk5ODYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBUYXJnZXQgSWRlbnRpZmljYXRpb246IHI4MTY5IERyaXZlciBhbmQgcGh5bGluayBGcmFtZXdvcmsqKlxuXG5BbHJpZ2h0LCBsZXQncyBicmVhayB0aGlzIGRvd24uIFRoaXMgcGF0Y2ggaXMgZGVmaW5pdGVseSBzaWduaWZpY2FudDsgaXQncyBnb3Qgc29tZSByZWFsIGZ1bmN0aW9uYWwgY2hhbmdlcyBoYXBwZW5pbmcgaW4gdGhlIGByODE2OWAgZHJpdmVyIGFuZCB0aGUgYHBoeWxpbmtgIGZyYW1ld29yay4gU3BlY2lmaWNhbGx5LCB0aGlzIG1vdmUgZnJvbSBgcGh5bGliYCB0byBgcGh5bGlua2AsIGFsb25nc2lkZSB0aGUgYWRkaXRpb24gb2YgZHluYW1pYyBNQUMgY2FwYWJpbGl0aWVzIHVwZGF0ZXMgd2l0aGluIGBwaHlsaW5rYCwgc2hvdXRzIFwiZnV6eiBtZSFcIlxuXG5JJ3ZlIHNjb3BlZCBvdXQgdGhlIGtleSBmdW5jdGlvbnMgdG8gdGFyZ2V0LiBIZXJlJ3Mgd2hhdCBJJ20gdGhpbmtpbmc6XG5cbiogICBgcGh5bGlua19zZXRfbWFjX2NhcGFiaWxpdGllc2AgLSB0aGlzIGlzIGdvaW5nIHRvIGJlIGludGVyZXN0aW5nLCBlc3BlY2lhbGx5IHdpdGggZHluYW1pYyB1cGRhdGVzLlxuKiAgIGBydGxfaW5pdF9waHlsaW5rYFxuKiAgIGBydGw4MTY5X3Bjc19jb25maWdgXG4qICAgYHJ0bDgxNjlfcGNzX2dldF9zdGF0ZWAgLSBNaWdodCBiZSB3b3J0aCBoaXR0aW5nIHdpdGggYSBzdGF0ZS1hd2FyZSBmdXp6ZXIsIHNpbmNlIGl0J3MgbGlrZWx5IGNhbGxlZCBwZXJpb2RpY2FsbHkuXG4qICAgYHJ0bF9tYWNfbGlua191cGBcbiogICBgcnRsX21hY19saW5rX2Rvd25gXG4qICAgYHJ0bF9tYWNfc2VsZWN0X3Bjc2BcbiogICBgcnRsX21hY19kaXNhYmxlX3R4X2xwaWBcbiogICBgcnRsX21hY19lbmFibGVfdHhfbHBpYFxuKiAgIGBydGw4MTY5X2NoYW5nZV9tdHVgIC0gTGV0J3Mgc2VlIGlmIHdlIGNhbiB0cmlnZ2VyIHNvbWUgaW50ZXJlc3RpbmcgZWRnZSBjYXNlcyB0aHJvdWdoIE1UVSBtYW5pcHVsYXRpb24uXG4qICAgYHJ0bF9sb3dwb3dlcl9oaWRkZW5fZnVuY3Rpb25zYCAtIFdvcnRoIGRpZ2dpbmcgaW50byB0aGUgbG9naWMgaW4gdGhlc2UgbG93LXBvd2VyIGZ1bmN0aW9ucy5cbiogICBgcjgxMjdfc2ZwX2luaXRfMWdgIC0gSSdtIGludGVyZXN0ZWQgaW4gaG93IHRoaXMgZGVhbHMgd2l0aCAxRy5cbiogICBgcjgxMjdfc2ZwX2luaXRfMTBnYCAtIFNpbWlsYXJseSwgd29ydGggY2hlY2tpbmcgdGhlIDEwRyBpbXBsZW1lbnRhdGlvbi5cbiogICBgcnRsODE2OV9pb2N0bGAgLSBUaGlzIHdpbGwgbGlrZWx5IGJlIGZydWl0ZnVsIVxuXG5Db25maWctd2lzZSwgYFI4MTY5YCBpcyBvdXIgcHJpbWFyeSBmb2N1cyBzaW5jZSBpdCBzZWxlY3RzIGBQSFlMSU5LYC4gRW5hYmxpbmcgYFI4MTY5YCBzaG91bGQgZ2V0IHVzIGV2ZXJ5dGhpbmcgd2UgbmVlZC4gTm8gbmVlZCB0byBleHBsaWNpdGx5IGxpc3QgYFBIWUxJTktgLlxuXG5JIGp1c3QgdG9vayBhIHF1aWNrIGxvb2sgYXQgYHJ0bDgxNjlfY2hhbmdlX210dWAgYW5kIGEgZmV3IG90aGVycy4gSXQgY29uZmlybXMgdGhlc2UgZnVuY3Rpb25zIGFyZSBjb250cm9sIHBhdGggb3BlcmF0aW9ucy4gRnVuY3Rpb25zIGxpa2UgYHJ0bDgxNjlfcGNzX2dldF9zdGF0ZWAgbWlnaHQgYmUgaW50ZXJlc3RpbmcgZm9yIHN0YXRlLWF3YXJlIGZ1enplcnMuIFRoZXkgYXJlbid0IGhvdC1wYXRoLCBidXQgdGhleSBhcmUgc3RpbGwgdmFsdWFibGUgdGFyZ2V0cy5cbldpdGggdGhpcywgSSB0aGluayB3ZSBoYXZlIGEgc3Ryb25nIHN0YXJ0aW5nIHBvaW50LiBOb3csIGxldCdzIGdldCB0aGF0IGZ1enppbmcgY2FtcGFpZ24gcm9sbGluZyFcblxuXG4iLCJJbnB1dFRva2VucyI6Mzk0NzMsIk91dHB1dFRva2VucyI6Mjk4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTE0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDE2OjM1OjMwLjk1Njc1NzcyNFoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2MjkwMTU5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiUjgxNjlcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJwaHlsaW5rX3NldF9tYWNfY2FwYWJpbGl0aWVzXCIsXG4gICAgXCJydGxfaW5pdF9waHlsaW5rXCIsXG4gICAgXCJydGw4MTY5X3Bjc19jb25maWdcIixcbiAgICBcInJ0bDgxNjlfcGNzX2dldF9zdGF0ZVwiLFxuICAgIFwicnRsX21hY19saW5rX3VwXCIsXG4gICAgXCJydGxfbWFjX2xpbmtfZG93blwiLFxuICAgIFwicnRsX21hY19zZWxlY3RfcGNzXCIsXG4gICAgXCJydGxfbWFjX2Rpc2FibGVfdHhfbHBpXCIsXG4gICAgXCJydGxfbWFjX2VuYWJsZV90eF9scGlcIixcbiAgICBcInJ0bDgxNjlfY2hhbmdlX210dVwiLFxuICAgIFwicnRsX2xvd3Bvd2VyX2hpZGRlbl9mdW5jdGlvbnNcIixcbiAgICBcInI4MTI3X3NmcF9pbml0XzFnXCIsXG4gICAgXCJyODEyN19zZnBfaW5pdF8xMGdcIixcbiAgICBcInJ0bDgxNjlfaW9jdGxcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtaWdyYXRlcyB0aGUgUmVhbHRlayByODE2OSBFdGhlcm5ldCBkcml2ZXIgZnJvbSBwaHlsaWIgdG8gcGh5bGluaywgaW50cm9kdWNpbmcgc2lnbmlmaWNhbnQgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBkcml2ZXIncyBpbml0aWFsaXphdGlvbiwgbGluayBtYW5hZ2VtZW50LCBhbmQgTVRVIGhhbmRsaW5nLiBJdCBhbHNvIGFkZHMgYSBuZXcgcGh5bGluayBBUEkgYHBoeWxpbmtfc2V0X21hY19jYXBhYmlsaXRpZXNgIHRvIGR5bmFtaWNhbGx5IHVwZGF0ZSBNQUMgY2FwYWJpbGl0aWVzLiBUaGVzZSBhcmUgcmVhY2hhYmxlIGNvbnRyb2wtcGF0aCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgZnV6emVkLCBlc3BlY2lhbGx5IHZpYSBzeXpfcGNpIGFuZCBuZXRsaW5rL2lvY3RsIGludGVyZmFjZXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiUjgxNjlcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJwaHlsaW5rX3NldF9tYWNfY2FwYWJpbGl0aWVzXCIsXG4gICAgXCJydGxfaW5pdF9waHlsaW5rXCIsXG4gICAgXCJydGw4MTY5X3Bjc19jb25maWdcIixcbiAgICBcInJ0bDgxNjlfcGNzX2dldF9zdGF0ZVwiLFxuICAgIFwicnRsX21hY19saW5rX3VwXCIsXG4gICAgXCJydGxfbWFjX2xpbmtfZG93blwiLFxuICAgIFwicnRsX21hY19zZWxlY3RfcGNzXCIsXG4gICAgXCJydGxfbWFjX2Rpc2FibGVfdHhfbHBpXCIsXG4gICAgXCJydGxfbWFjX2VuYWJsZV90eF9scGlcIixcbiAgICBcInJ0bDgxNjlfY2hhbmdlX210dVwiLFxuICAgIFwicnRsX2xvd3Bvd2VyX2hpZGRlbl9mdW5jdGlvbnNcIixcbiAgICBcInI4MTI3X3NmcF9pbml0XzFnXCIsXG4gICAgXCJyODEyN19zZnBfaW5pdF8xMGdcIixcbiAgICBcInJ0bDgxNjlfaW9jdGxcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtaWdyYXRlcyB0aGUgUmVhbHRlayByODE2OSBFdGhlcm5ldCBkcml2ZXIgZnJvbSBwaHlsaWIgdG8gcGh5bGluaywgaW50cm9kdWNpbmcgc2lnbmlmaWNhbnQgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBkcml2ZXIncyBpbml0aWFsaXphdGlvbiwgbGluayBtYW5hZ2VtZW50LCBhbmQgTVRVIGhhbmRsaW5nLiBJdCBhbHNvIGFkZHMgYSBuZXcgcGh5bGluayBBUEkgYHBoeWxpbmtfc2V0X21hY19jYXBhYmlsaXRpZXNgIHRvIGR5bmFtaWNhbGx5IHVwZGF0ZSBNQUMgY2FwYWJpbGl0aWVzLiBUaGVzZSBhcmUgcmVhY2hhYmxlIGNvbnRyb2wtcGF0aCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgZnV6emVkLCBlc3BlY2lhbGx5IHZpYSBzeXpfcGNpIGFuZCBuZXRsaW5rL2lvY3RsIGludGVyZmFjZXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowkfg52[1] Phase: Succeeded StartedAt: 2026-07-07 16:36:52 +0000 UTC FinishedAt: 2026-07-07 16:36:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkfg52[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-07 16:36:52 +0000 UTC FinishedAt: 2026-07-07 16:36:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkfg52[2] Phase: Succeeded StartedAt: 2026-07-07 16:36:52 +0000 UTC FinishedAt: 2026-07-07 18:41:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkfg52[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a13f31a92f35161b499bf29638336885259da78","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phylink_set_mac_capabilities","rtl_init_phylink","rtl8169_pcs_config","rtl8169_pcs_get_state","rtl_mac_link_up","rtl_mac_link_down","rtl_mac_select_pcs","rtl_mac_disable_tx_lpi","rtl_mac_enable_tx_lpi","rtl8169_change_mtu","rtl_lowpower_hidden_functions","r8127_sfp_init_1g","r8127_sfp_init_10g","rtl8169_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a13f31a92f35161b499bf29638336885259da78","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"4ffdf5e5-ff65-480e-9d14-ebde9e0d0133","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-07 16:36:52 +0000 UTC FinishedAt: 2026-07-07 18:41:36 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"4a13f31a92f35161b499bf29638336885259da78","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phylink_set_mac_capabilities","rtl_init_phylink","rtl8169_pcs_config","rtl8169_pcs_get_state","rtl_mac_link_up","rtl_mac_link_down","rtl_mac_select_pcs","rtl_mac_disable_tx_lpi","rtl_mac_enable_tx_lpi","rtl8169_change_mtu","rtl_lowpower_hidden_functions","r8127_sfp_init_1g","r8127_sfp_init_10g","rtl8169_ioctl"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"4a13f31a92f35161b499bf29638336885259da78","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"4ffdf5e5-ff65-480e-9d14-ebde9e0d0133","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowkfg52[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a13f31a92f35161b499bf29638336885259da78","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phylink_set_mac_capabilities","rtl_init_phylink","rtl8169_pcs_config","rtl8169_pcs_get_state","rtl_mac_link_up","rtl_mac_link_down","rtl_mac_select_pcs","rtl_mac_disable_tx_lpi","rtl_mac_enable_tx_lpi","rtl8169_change_mtu","rtl_lowpower_hidden_functions","r8127_sfp_init_1g","r8127_sfp_init_10g","rtl8169_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a13f31a92f35161b499bf29638336885259da78","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"4ffdf5e5-ff65-480e-9d14-ebde9e0d0133","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-07 16:36:52 +0000 UTC FinishedAt: 2026-07-07 16:37:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkfg52[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a13f31a92f35161b499bf29638336885259da78","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phylink_set_mac_capabilities","rtl_init_phylink","rtl8169_pcs_config","rtl8169_pcs_get_state","rtl_mac_link_up","rtl_mac_link_down","rtl_mac_select_pcs","rtl_mac_disable_tx_lpi","rtl_mac_enable_tx_lpi","rtl8169_change_mtu","rtl_lowpower_hidden_functions","r8127_sfp_init_1g","r8127_sfp_init_10g","rtl8169_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a13f31a92f35161b499bf29638336885259da78","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"4ffdf5e5-ff65-480e-9d14-ebde9e0d0133","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-07 16:36:52 +0000 UTC FinishedAt: 2026-07-07 16:37:05 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"4a13f31a92f35161b499bf29638336885259da78","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowkfg52/series-workflowkfg52-convert-artifact-3243145719/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowkfg52[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a13f31a92f35161b499bf29638336885259da78","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phylink_set_mac_capabilities","rtl_init_phylink","rtl8169_pcs_config","rtl8169_pcs_get_state","rtl_mac_link_up","rtl_mac_link_down","rtl_mac_select_pcs","rtl_mac_disable_tx_lpi","rtl_mac_enable_tx_lpi","rtl8169_change_mtu","rtl_lowpower_hidden_functions","r8127_sfp_init_1g","r8127_sfp_init_10g","rtl8169_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a13f31a92f35161b499bf29638336885259da78","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"4ffdf5e5-ff65-480e-9d14-ebde9e0d0133","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-07 16:37:12 +0000 UTC FinishedAt: 2026-07-07 17:10:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkfg52[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a13f31a92f35161b499bf29638336885259da78","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phylink_set_mac_capabilities","rtl_init_phylink","rtl8169_pcs_config","rtl8169_pcs_get_state","rtl_mac_link_up","rtl_mac_link_down","rtl_mac_select_pcs","rtl_mac_disable_tx_lpi","rtl_mac_enable_tx_lpi","rtl8169_change_mtu","rtl_lowpower_hidden_functions","r8127_sfp_init_1g","r8127_sfp_init_10g","rtl8169_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a13f31a92f35161b499bf29638336885259da78","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"4ffdf5e5-ff65-480e-9d14-ebde9e0d0133","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-07 16:37:12 +0000 UTC FinishedAt: 2026-07-07 17:10:22 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*d9e249ef-d0d0-4510-8b3a-b4038b596bf6,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-workflowkfg52/series-workflowkfg52-convert-artifact-3243145719/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": "933a8ff9-77a5-44fb-92b4-707208553878", "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-workflowkfg52/series-workflowkfg52-build-action-4243852365/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowkfg52[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a13f31a92f35161b499bf29638336885259da78","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phylink_set_mac_capabilities","rtl_init_phylink","rtl8169_pcs_config","rtl8169_pcs_get_state","rtl_mac_link_up","rtl_mac_link_down","rtl_mac_select_pcs","rtl_mac_disable_tx_lpi","rtl_mac_enable_tx_lpi","rtl8169_change_mtu","rtl_lowpower_hidden_functions","r8127_sfp_init_1g","r8127_sfp_init_10g","rtl8169_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a13f31a92f35161b499bf29638336885259da78","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"4ffdf5e5-ff65-480e-9d14-ebde9e0d0133","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-07 16:37:12 +0000 UTC FinishedAt: 2026-07-07 17:10:08 +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:*d9e249ef-d0d0-4510-8b3a-b4038b596bf6,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-workflowkfg52/series-workflowkfg52-convert-artifact-3243145719/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": "933a8ff9-77a5-44fb-92b4-707208553878", "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-workflowkfg52/series-workflowkfg52-build-action-4243852365/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowkfg52[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a13f31a92f35161b499bf29638336885259da78","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phylink_set_mac_capabilities","rtl_init_phylink","rtl8169_pcs_config","rtl8169_pcs_get_state","rtl_mac_link_up","rtl_mac_link_down","rtl_mac_select_pcs","rtl_mac_disable_tx_lpi","rtl_mac_enable_tx_lpi","rtl8169_change_mtu","rtl_lowpower_hidden_functions","r8127_sfp_init_1g","r8127_sfp_init_10g","rtl8169_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a13f31a92f35161b499bf29638336885259da78","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"4ffdf5e5-ff65-480e-9d14-ebde9e0d0133","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-07 17:10:22 +0000 UTC FinishedAt: 2026-07-07 17:10:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkfg52[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a13f31a92f35161b499bf29638336885259da78","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phylink_set_mac_capabilities","rtl_init_phylink","rtl8169_pcs_config","rtl8169_pcs_get_state","rtl_mac_link_up","rtl_mac_link_down","rtl_mac_select_pcs","rtl_mac_disable_tx_lpi","rtl_mac_enable_tx_lpi","rtl8169_change_mtu","rtl_lowpower_hidden_functions","r8127_sfp_init_1g","r8127_sfp_init_10g","rtl8169_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a13f31a92f35161b499bf29638336885259da78","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"4ffdf5e5-ff65-480e-9d14-ebde9e0d0133","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-07 17:10:22 +0000 UTC FinishedAt: 2026-07-07 17:10:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkfg52[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a13f31a92f35161b499bf29638336885259da78","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phylink_set_mac_capabilities","rtl_init_phylink","rtl8169_pcs_config","rtl8169_pcs_get_state","rtl_mac_link_up","rtl_mac_link_down","rtl_mac_select_pcs","rtl_mac_disable_tx_lpi","rtl_mac_enable_tx_lpi","rtl8169_change_mtu","rtl_lowpower_hidden_functions","r8127_sfp_init_1g","r8127_sfp_init_10g","rtl8169_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a13f31a92f35161b499bf29638336885259da78","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"4ffdf5e5-ff65-480e-9d14-ebde9e0d0133","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-07 17:10:22 +0000 UTC FinishedAt: 2026-07-07 17:11:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkfg52[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a13f31a92f35161b499bf29638336885259da78","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phylink_set_mac_capabilities","rtl_init_phylink","rtl8169_pcs_config","rtl8169_pcs_get_state","rtl_mac_link_up","rtl_mac_link_down","rtl_mac_select_pcs","rtl_mac_disable_tx_lpi","rtl_mac_enable_tx_lpi","rtl8169_change_mtu","rtl_lowpower_hidden_functions","r8127_sfp_init_1g","r8127_sfp_init_10g","rtl8169_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a13f31a92f35161b499bf29638336885259da78","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"4ffdf5e5-ff65-480e-9d14-ebde9e0d0133","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-07 17:10:22 +0000 UTC FinishedAt: 2026-07-07 17:10:45 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"4a13f31a92f35161b499bf29638336885259da78","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"4ffdf5e5-ff65-480e-9d14-ebde9e0d0133","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowkfg52/series-workflowkfg52-convert-artifact-570416422/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowkfg52[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a13f31a92f35161b499bf29638336885259da78","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phylink_set_mac_capabilities","rtl_init_phylink","rtl8169_pcs_config","rtl8169_pcs_get_state","rtl_mac_link_up","rtl_mac_link_down","rtl_mac_select_pcs","rtl_mac_disable_tx_lpi","rtl_mac_enable_tx_lpi","rtl8169_change_mtu","rtl_lowpower_hidden_functions","r8127_sfp_init_1g","r8127_sfp_init_10g","rtl8169_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a13f31a92f35161b499bf29638336885259da78","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"4ffdf5e5-ff65-480e-9d14-ebde9e0d0133","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-07 17:11:03 +0000 UTC FinishedAt: 2026-07-07 17:13:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkfg52[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a13f31a92f35161b499bf29638336885259da78","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phylink_set_mac_capabilities","rtl_init_phylink","rtl8169_pcs_config","rtl8169_pcs_get_state","rtl_mac_link_up","rtl_mac_link_down","rtl_mac_select_pcs","rtl_mac_disable_tx_lpi","rtl_mac_enable_tx_lpi","rtl8169_change_mtu","rtl_lowpower_hidden_functions","r8127_sfp_init_1g","r8127_sfp_init_10g","rtl8169_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a13f31a92f35161b499bf29638336885259da78","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"4ffdf5e5-ff65-480e-9d14-ebde9e0d0133","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-07 17:11:03 +0000 UTC FinishedAt: 2026-07-07 17:12:59 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*933a8ff9-77a5-44fb-92b4-707208553878,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-workflowkfg52/series-workflowkfg52-build-action-4243852365/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-workflowkfg52[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a13f31a92f35161b499bf29638336885259da78","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phylink_set_mac_capabilities","rtl_init_phylink","rtl8169_pcs_config","rtl8169_pcs_get_state","rtl_mac_link_up","rtl_mac_link_down","rtl_mac_select_pcs","rtl_mac_disable_tx_lpi","rtl_mac_enable_tx_lpi","rtl8169_change_mtu","rtl_lowpower_hidden_functions","r8127_sfp_init_1g","r8127_sfp_init_10g","rtl8169_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a13f31a92f35161b499bf29638336885259da78","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"4ffdf5e5-ff65-480e-9d14-ebde9e0d0133","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-07 17:13:42 +0000 UTC FinishedAt: 2026-07-07 17:13:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkfg52[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a13f31a92f35161b499bf29638336885259da78","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phylink_set_mac_capabilities","rtl_init_phylink","rtl8169_pcs_config","rtl8169_pcs_get_state","rtl_mac_link_up","rtl_mac_link_down","rtl_mac_select_pcs","rtl_mac_disable_tx_lpi","rtl_mac_enable_tx_lpi","rtl8169_change_mtu","rtl_lowpower_hidden_functions","r8127_sfp_init_1g","r8127_sfp_init_10g","rtl8169_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a13f31a92f35161b499bf29638336885259da78","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"4ffdf5e5-ff65-480e-9d14-ebde9e0d0133","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-07 17:13:43 +0000 UTC FinishedAt: 2026-07-07 17:13:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkfg52[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a13f31a92f35161b499bf29638336885259da78","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phylink_set_mac_capabilities","rtl_init_phylink","rtl8169_pcs_config","rtl8169_pcs_get_state","rtl_mac_link_up","rtl_mac_link_down","rtl_mac_select_pcs","rtl_mac_disable_tx_lpi","rtl_mac_enable_tx_lpi","rtl8169_change_mtu","rtl_lowpower_hidden_functions","r8127_sfp_init_1g","r8127_sfp_init_10g","rtl8169_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a13f31a92f35161b499bf29638336885259da78","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"4ffdf5e5-ff65-480e-9d14-ebde9e0d0133","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-07 17:13:43 +0000 UTC FinishedAt: 2026-07-07 17:47:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkfg52[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a13f31a92f35161b499bf29638336885259da78","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phylink_set_mac_capabilities","rtl_init_phylink","rtl8169_pcs_config","rtl8169_pcs_get_state","rtl_mac_link_up","rtl_mac_link_down","rtl_mac_select_pcs","rtl_mac_disable_tx_lpi","rtl_mac_enable_tx_lpi","rtl8169_change_mtu","rtl_lowpower_hidden_functions","r8127_sfp_init_1g","r8127_sfp_init_10g","rtl8169_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a13f31a92f35161b499bf29638336885259da78","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"4ffdf5e5-ff65-480e-9d14-ebde9e0d0133","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-07 17:14:34 +0000 UTC FinishedAt: 2026-07-07 17:47:13 +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:*d9e249ef-d0d0-4510-8b3a-b4038b596bf6,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-workflowkfg52/series-workflowkfg52-convert-artifact-570416422/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": "1a9459fa-8dda-4678-96ad-7278e2987549", "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-workflowkfg52/series-workflowkfg52-build-action-1389296362/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowkfg52[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a13f31a92f35161b499bf29638336885259da78","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phylink_set_mac_capabilities","rtl_init_phylink","rtl8169_pcs_config","rtl8169_pcs_get_state","rtl_mac_link_up","rtl_mac_link_down","rtl_mac_select_pcs","rtl_mac_disable_tx_lpi","rtl_mac_enable_tx_lpi","rtl8169_change_mtu","rtl_lowpower_hidden_functions","r8127_sfp_init_1g","r8127_sfp_init_10g","rtl8169_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a13f31a92f35161b499bf29638336885259da78","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"4ffdf5e5-ff65-480e-9d14-ebde9e0d0133","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-07 17:14:34 +0000 UTC FinishedAt: 2026-07-07 17:47:03 +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:*d9e249ef-d0d0-4510-8b3a-b4038b596bf6,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-workflowkfg52/series-workflowkfg52-convert-artifact-570416422/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": "1a9459fa-8dda-4678-96ad-7278e2987549", "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-workflowkfg52/series-workflowkfg52-build-action-1389296362/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowkfg52[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a13f31a92f35161b499bf29638336885259da78","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phylink_set_mac_capabilities","rtl_init_phylink","rtl8169_pcs_config","rtl8169_pcs_get_state","rtl_mac_link_up","rtl_mac_link_down","rtl_mac_select_pcs","rtl_mac_disable_tx_lpi","rtl_mac_enable_tx_lpi","rtl8169_change_mtu","rtl_lowpower_hidden_functions","r8127_sfp_init_1g","r8127_sfp_init_10g","rtl8169_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a13f31a92f35161b499bf29638336885259da78","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"4ffdf5e5-ff65-480e-9d14-ebde9e0d0133","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-07 17:47:13 +0000 UTC FinishedAt: 2026-07-07 17:47:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkfg52[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a13f31a92f35161b499bf29638336885259da78","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phylink_set_mac_capabilities","rtl_init_phylink","rtl8169_pcs_config","rtl8169_pcs_get_state","rtl_mac_link_up","rtl_mac_link_down","rtl_mac_select_pcs","rtl_mac_disable_tx_lpi","rtl_mac_enable_tx_lpi","rtl8169_change_mtu","rtl_lowpower_hidden_functions","r8127_sfp_init_1g","r8127_sfp_init_10g","rtl8169_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a13f31a92f35161b499bf29638336885259da78","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"4ffdf5e5-ff65-480e-9d14-ebde9e0d0133","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-07 17:47:13 +0000 UTC FinishedAt: 2026-07-07 17:47:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkfg52[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a13f31a92f35161b499bf29638336885259da78","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phylink_set_mac_capabilities","rtl_init_phylink","rtl8169_pcs_config","rtl8169_pcs_get_state","rtl_mac_link_up","rtl_mac_link_down","rtl_mac_select_pcs","rtl_mac_disable_tx_lpi","rtl_mac_enable_tx_lpi","rtl8169_change_mtu","rtl_lowpower_hidden_functions","r8127_sfp_init_1g","r8127_sfp_init_10g","rtl8169_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a13f31a92f35161b499bf29638336885259da78","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"4ffdf5e5-ff65-480e-9d14-ebde9e0d0133","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-07 17:47:13 +0000 UTC FinishedAt: 2026-07-07 17:49:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkfg52[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a13f31a92f35161b499bf29638336885259da78","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phylink_set_mac_capabilities","rtl_init_phylink","rtl8169_pcs_config","rtl8169_pcs_get_state","rtl_mac_link_up","rtl_mac_link_down","rtl_mac_select_pcs","rtl_mac_disable_tx_lpi","rtl_mac_enable_tx_lpi","rtl8169_change_mtu","rtl_lowpower_hidden_functions","r8127_sfp_init_1g","r8127_sfp_init_10g","rtl8169_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a13f31a92f35161b499bf29638336885259da78","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"4ffdf5e5-ff65-480e-9d14-ebde9e0d0133","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-07 17:47:13 +0000 UTC FinishedAt: 2026-07-07 17:49:02 +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:*1a9459fa-8dda-4678-96ad-7278e2987549,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-workflowkfg52/series-workflowkfg52-build-action-1389296362/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-workflowkfg52[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a13f31a92f35161b499bf29638336885259da78","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phylink_set_mac_capabilities","rtl_init_phylink","rtl8169_pcs_config","rtl8169_pcs_get_state","rtl_mac_link_up","rtl_mac_link_down","rtl_mac_select_pcs","rtl_mac_disable_tx_lpi","rtl_mac_enable_tx_lpi","rtl8169_change_mtu","rtl_lowpower_hidden_functions","r8127_sfp_init_1g","r8127_sfp_init_10g","rtl8169_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a13f31a92f35161b499bf29638336885259da78","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"4ffdf5e5-ff65-480e-9d14-ebde9e0d0133","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-07 17:49:12 +0000 UTC FinishedAt: 2026-07-07 18:41:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkfg52[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a13f31a92f35161b499bf29638336885259da78","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phylink_set_mac_capabilities","rtl_init_phylink","rtl8169_pcs_config","rtl8169_pcs_get_state","rtl_mac_link_up","rtl_mac_link_down","rtl_mac_select_pcs","rtl_mac_disable_tx_lpi","rtl_mac_enable_tx_lpi","rtl8169_change_mtu","rtl_lowpower_hidden_functions","r8127_sfp_init_1g","r8127_sfp_init_10g","rtl8169_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a13f31a92f35161b499bf29638336885259da78","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"4ffdf5e5-ff65-480e-9d14-ebde9e0d0133","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-07 17:49:12 +0000 UTC FinishedAt: 2026-07-07 18:41:36 +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":["phylink_set_mac_capabilities","rtl_init_phylink","rtl8169_pcs_config","rtl8169_pcs_get_state","rtl_mac_link_up","rtl_mac_link_down","rtl_mac_select_pcs","rtl_mac_disable_tx_lpi","rtl_mac_enable_tx_lpi","rtl8169_change_mtu","rtl_lowpower_hidden_functions","r8127_sfp_init_1g","r8127_sfp_init_10g","rtl8169_ioctl"],"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:*933a8ff9-77a5-44fb-92b4-707208553878,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*1a9459fa-8dda-4678-96ad-7278e2987549,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-workflowkfg52/series-workflowkfg52-build-action-4243852365/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-workflowkfg52/series-workflowkfg52-build-action-1389296362/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowkfg52[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a13f31a92f35161b499bf29638336885259da78","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phylink_set_mac_capabilities","rtl_init_phylink","rtl8169_pcs_config","rtl8169_pcs_get_state","rtl_mac_link_up","rtl_mac_link_down","rtl_mac_select_pcs","rtl_mac_disable_tx_lpi","rtl_mac_enable_tx_lpi","rtl8169_change_mtu","rtl_lowpower_hidden_functions","r8127_sfp_init_1g","r8127_sfp_init_10g","rtl8169_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a13f31a92f35161b499bf29638336885259da78","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"4ffdf5e5-ff65-480e-9d14-ebde9e0d0133","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-07 17:49:12 +0000 UTC FinishedAt: 2026-07-07 17:49:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkfg52[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a13f31a92f35161b499bf29638336885259da78","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phylink_set_mac_capabilities","rtl_init_phylink","rtl8169_pcs_config","rtl8169_pcs_get_state","rtl_mac_link_up","rtl_mac_link_down","rtl_mac_select_pcs","rtl_mac_disable_tx_lpi","rtl_mac_enable_tx_lpi","rtl8169_change_mtu","rtl_lowpower_hidden_functions","r8127_sfp_init_1g","r8127_sfp_init_10g","rtl8169_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a13f31a92f35161b499bf29638336885259da78","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"4ffdf5e5-ff65-480e-9d14-ebde9e0d0133","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-07 17:49:12 +0000 UTC FinishedAt: 2026-07-07 17:49:21 +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":["phylink_set_mac_capabilities","rtl_init_phylink","rtl8169_pcs_config","rtl8169_pcs_get_state","rtl_mac_link_up","rtl_mac_link_down","rtl_mac_select_pcs","rtl_mac_disable_tx_lpi","rtl_mac_enable_tx_lpi","rtl8169_change_mtu","rtl_lowpower_hidden_functions","r8127_sfp_init_1g","r8127_sfp_init_10g","rtl8169_ioctl"],"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-workflowkfg52/series-workflowkfg52-convert-artifact-2256180331/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowkfg52[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a13f31a92f35161b499bf29638336885259da78","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phylink_set_mac_capabilities","rtl_init_phylink","rtl8169_pcs_config","rtl8169_pcs_get_state","rtl_mac_link_up","rtl_mac_link_down","rtl_mac_select_pcs","rtl_mac_disable_tx_lpi","rtl_mac_enable_tx_lpi","rtl8169_change_mtu","rtl_lowpower_hidden_functions","r8127_sfp_init_1g","r8127_sfp_init_10g","rtl8169_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a13f31a92f35161b499bf29638336885259da78","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"4ffdf5e5-ff65-480e-9d14-ebde9e0d0133","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-07 17:49:12 +0000 UTC FinishedAt: 2026-07-07 17:49:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkfg52[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a13f31a92f35161b499bf29638336885259da78","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phylink_set_mac_capabilities","rtl_init_phylink","rtl8169_pcs_config","rtl8169_pcs_get_state","rtl_mac_link_up","rtl_mac_link_down","rtl_mac_select_pcs","rtl_mac_disable_tx_lpi","rtl_mac_enable_tx_lpi","rtl8169_change_mtu","rtl_lowpower_hidden_functions","r8127_sfp_init_1g","r8127_sfp_init_10g","rtl8169_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a13f31a92f35161b499bf29638336885259da78","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"4ffdf5e5-ff65-480e-9d14-ebde9e0d0133","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-07 17:49:12 +0000 UTC FinishedAt: 2026-07-07 17:49:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkfg52[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a13f31a92f35161b499bf29638336885259da78","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phylink_set_mac_capabilities","rtl_init_phylink","rtl8169_pcs_config","rtl8169_pcs_get_state","rtl_mac_link_up","rtl_mac_link_down","rtl_mac_select_pcs","rtl_mac_disable_tx_lpi","rtl_mac_enable_tx_lpi","rtl8169_change_mtu","rtl_lowpower_hidden_functions","r8127_sfp_init_1g","r8127_sfp_init_10g","rtl8169_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a13f31a92f35161b499bf29638336885259da78","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"4ffdf5e5-ff65-480e-9d14-ebde9e0d0133","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-07 17:49:12 +0000 UTC FinishedAt: 2026-07-07 17:49:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkfg52[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a13f31a92f35161b499bf29638336885259da78","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phylink_set_mac_capabilities","rtl_init_phylink","rtl8169_pcs_config","rtl8169_pcs_get_state","rtl_mac_link_up","rtl_mac_link_down","rtl_mac_select_pcs","rtl_mac_disable_tx_lpi","rtl_mac_enable_tx_lpi","rtl8169_change_mtu","rtl_lowpower_hidden_functions","r8127_sfp_init_1g","r8127_sfp_init_10g","rtl8169_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a13f31a92f35161b499bf29638336885259da78","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"4ffdf5e5-ff65-480e-9d14-ebde9e0d0133","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-07 17:49:33 +0000 UTC FinishedAt: 2026-07-07 18:41:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkfg52[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a13f31a92f35161b499bf29638336885259da78","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phylink_set_mac_capabilities","rtl_init_phylink","rtl8169_pcs_config","rtl8169_pcs_get_state","rtl_mac_link_up","rtl_mac_link_down","rtl_mac_select_pcs","rtl_mac_disable_tx_lpi","rtl_mac_enable_tx_lpi","rtl8169_change_mtu","rtl_lowpower_hidden_functions","r8127_sfp_init_1g","r8127_sfp_init_10g","rtl8169_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a13f31a92f35161b499bf29638336885259da78","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"4ffdf5e5-ff65-480e-9d14-ebde9e0d0133","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-07 17:49:33 +0000 UTC FinishedAt: 2026-07-07 18:41:26 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*933a8ff9-77a5-44fb-92b4-707208553878,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*1a9459fa-8dda-4678-96ad-7278e2987549,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-workflowkfg52/series-workflowkfg52-build-action-4243852365/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-workflowkfg52/series-workflowkfg52-build-action-1389296362/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-workflowkfg52/series-workflowkfg52-convert-artifact-2256180331/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,}