Name: series-workflowdmp7m Phase: Running StartedAt: 2026-09-08 21:19:51 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdmp7m[0] Phase: Succeeded StartedAt: 2026-09-08 21:19:51 +0000 UTC FinishedAt: 2026-09-08 21:42:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdmp7m[0].run-triage Phase: Succeeded StartedAt: 2026-09-08 21:19:51 +0000 UTC FinishedAt: 2026-09-08 21:42:30 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "13e51269b6656768dc595ed6025e4974f2026543", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "RTW89", "RTW89_CORE", "RTW89_USB", "RTW89_8852AU", "MAC80211" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "13e51269b6656768dc595ed6025e4974f2026543", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "RTW89", "RTW89_CORE", "RTW89_USB", "RTW89_8852AU", "MAC80211" ], "series_id": "aacedae2-9bbb-41ff-a42c-2ee0d38a7e1b" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "rtw89_cam_reset_keys", "rtw89_wow_construct_key_info", "rtw89_wow_update_key_info" ], "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+CgkJCTx0ZD4yMDI2LzA5LzA4IDIxOjQwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1JUVzg5JiMzNDssCiAgICAmIzM0O1JUVzg5X0NPUkUmIzM0OywKICAgICYjMzQ7UlRXODlfVVNCJiMzNDssCiAgICAmIzM0O1JUVzg5Xzg4NTJBVSYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3J0dzg5X2NhbV9yZXNldF9rZXlzJiMzNDssCiAgICAmIzM0O3J0dzg5X3dvd19jb25zdHJ1Y3Rfa2V5X2luZm8mIzM0OywKICAgICYjMzQ7cnR3ODlfd293X3VwZGF0ZV9rZXlfaW5mbyYjMzQ7CiAgXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlcGxhY2VzIGByY3VfcmVhZF9sb2NrKClgIC8gYGllZWU4MDIxMV9pdGVyX2tleXNfcmN1KClgIHdpdGggYGllZWU4MDIxMV9pdGVyX2tleXMoKWAgaW4gdGhlIFJlYWx0ZWsgcnR3ODkgZHJpdmVyIChgcnR3ODlfY2FtX3Jlc2V0X2tleXNgLCBgcnR3ODlfd293X2NvbnN0cnVjdF9rZXlfaW5mb2AsIGFuZCBgcnR3ODlfd293X3VwZGF0ZV9rZXlfaW5mb2ApLlxuXG5UaGlzIGNoYW5nZSBwdXJlbHkgYWRqdXN0cyBob3cgdGhlIGRyaXZlciBpdGVyYXRlcyBvdmVyIG1hYzgwMjExIGtleXMsIHJlbHlpbmcgb24gdGhlIGNhbGxlciBob2xkaW5nIHRoZSB3aXBoeSBsb2NrIChgbG9ja2RlcF9hc3NlcnRfd2lwaHlgKSBpbnN0ZWFkIG9mIGVudGVyaW5nIGFuIFJDVSByZWFkLXNpZGUgY3JpdGljYWwgc2VjdGlvbi5cblxuVGhlcmUgYXJlIG5vIG5ldyBtZW1vcnkgYWxsb2NhdGlvbnMsIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUgYWNjZXNzZXMsIGluZm8tbGVha3MgdG8gdXNlcnNwYWNlLCBvciBhbHRlcmVkIGJ1ZmZlciBib3VuZHMuIEFueSBwb3RlbnRpYWwgbG9ja2luZyBpc3N1ZXMgKHN1Y2ggYXMgbWlzc2luZyB3aXBoeSBsb2NrKSBvciBzeW5jaHJvbml6YXRpb24vbWVtb3J5IHNhZmV0eSBidWdzIChzdWNoIGFzIGNvbmN1cnJlbnQgbGlzdCBhY2Nlc3Mgb3IgdXNlLWFmdGVyLWZyZWUpIGFyZSBkZXRlY3RhYmxlIGJ5IExPQ0tERVAgYW5kIEtBU0FOLiBUaGVyZWZvcmUsIEtNU0FOIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcmVwbGFjZXMgUkNVLWJhc2VkIGtleSBpdGVyYXRpb24gKGllZWU4MDIxMV9pdGVyX2tleXNfcmN1KSB3aXRoIGllZWU4MDIxMV9pdGVyX2tleXMgaW4gcnR3ODkgQ0FNIGFuZCBXb1dMQU4gcGF0aHMuIGllZWU4MDIxMV9pdGVyX2tleXMgZW5mb3JjZXMgYSB3aXBoeSBtdXRleCBhc3NlcnRpb24gKGxvY2tkZXBfYXNzZXJ0X3dpcGh5KSwgY2hhbmdpbmcgbG9ja2luZyBhbmQgc3luY2hyb25pemF0aW9uIGFzc3VtcHRpb25zIGR1cmluZyBrZXkgcmVzZXQgYW5kIFdvV0xBTiBrZXkgY29uc3RydWN0aW9uL3VwZGF0ZXMuIFRoZSBkcml2ZXIgaXMgYWNjZXNzaWJsZSB2aWEgVVNCIGdhZGdldCBlbXVsYXRpb24gYW5kIHdvcnRoIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMjE6NDA8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA0ODk2NzI2MTIyYTQ5YzJmNjk3NGQ3MmRmY2I2ZWMzMmQ0MTRlNzhjXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBTZXAgOCAyMTo0MDoyOCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NhbS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jYW0uY1xuaW5kZXggN2M2MmVjZTEzN2QwMS4uMjJmMjFhMDRhOTZkMiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY2FtLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY2FtLmNcbkBAIC02MDUsOSAmIzQzOzYwNSw3IEBAIHZvaWQgcnR3ODlfY2FtX2RlaW5pdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHN0cnVjdCBydHc4OV92aWZfbGluayAqcnR3dmlmX2xpXG4gXG4gdm9pZCBydHc4OV9jYW1fcmVzZXRfa2V5cyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXG4ge1xuLVx0cmN1X3JlYWRfbG9jaygpO1xuLVx0aWVlZTgwMjExX2l0ZXJfa2V5c19yY3UocnR3ZGV2LVx1MDAzZWh3LCBOVUxMLCBydHc4OV9jYW1fcmVzZXRfa2V5X2l0ZXIsIHJ0d2Rldik7XG4tXHRyY3VfcmVhZF91bmxvY2soKTtcbiYjNDM7XHRpZWVlODAyMTFfaXRlcl9rZXlzKHJ0d2Rldi1cdTAwM2VodywgTlVMTCwgcnR3ODlfY2FtX3Jlc2V0X2tleV9pdGVyLCBydHdkZXYpO1xuIH1cbiBcbiBzdGF0aWMgaW50IHJ0dzg5X2NhbV9nZXRfYXZhaWxfYWRkcl9jYW0oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jXG5pbmRleCAyZGZhMjRjNTRlN2Q3Li4wYmYzNDY5MmM3Y2UzIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuY1xuQEAgLTQ3MywxMCAmIzQzOzQ3Myw4IEBAIHN0YXRpYyB2b2lkIHJ0dzg5X3dvd19jb25zdHJ1Y3Rfa2V5X2luZm8oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuIFx0c3RydWN0IGllZWU4MDIxMV92aWYgKndvd192aWYgPSBydHd2aWZfbGlua190b192aWYocnR3dmlmX2xpbmspO1xuIFx0Ym9vbCBlcnIgPSBmYWxzZTtcbiBcbi1cdHJjdV9yZWFkX2xvY2soKTtcbi1cdGllZWU4MDIxMV9pdGVyX2tleXNfcmN1KHJ0d2Rldi1cdTAwM2Vodywgd293X3ZpZixcbi1cdFx0XHRcdHJ0dzg5X3dvd19nZXRfa2V5X2luZm9faXRlciwgXHUwMDI2ZXJyKTtcbi1cdHJjdV9yZWFkX3VubG9jaygpO1xuJiM0MztcdGllZWU4MDIxMV9pdGVyX2tleXMocnR3ZGV2LVx1MDAzZWh3LCB3b3dfdmlmLFxuJiM0MztcdFx0XHQgICAgcnR3ODlfd293X2dldF9rZXlfaW5mb19pdGVyLCBcdTAwMjZlcnIpO1xuIFxuIFx0aWYgKGVycikge1xuIFx0XHRydHc4OV93b3dfa2V5X2NsZWFyKHJ0d2Rldik7XG5AQCAtNjk1LDEwICYjNDM7NjkzLDggQEAgc3RhdGljIHZvaWQgcnR3ODlfd293X3VwZGF0ZV9rZXlfaW5mbyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGJvb2wgcnhfcmVhZHkpXG4gXHRzdHJ1Y3QgaWVlZTgwMjExX2Jzc19jb25mICpic3NfY29uZjtcbiBcdHN0cnVjdCBpZWVlODAyMTFfa2V5X2NvbmYgKmtleTtcbiBcbi1cdHJjdV9yZWFkX2xvY2soKTtcbi1cdGllZWU4MDIxMV9pdGVyX2tleXNfcmN1KHJ0d2Rldi1cdTAwM2Vodywgd293X3ZpZixcbi1cdFx0XHRcdHJ0dzg5X3dvd19zZXRfa2V5X2luZm9faXRlciwgXHUwMDI2ZGF0YSk7XG4tXHRyY3VfcmVhZF91bmxvY2soKTtcbiYjNDM7XHRpZWVlODAyMTFfaXRlcl9rZXlzKHJ0d2Rldi1cdTAwM2Vodywgd293X3ZpZixcbiYjNDM7XHRcdFx0ICAgIHJ0dzg5X3dvd19zZXRfa2V5X2luZm9faXRlciwgXHUwMDI2ZGF0YSk7XG4gXG4gXHRpZiAoZGF0YS5lcnJvcikge1xuIFx0XHRydHc4OV9kZWJ1ZyhydHdkZXYsIFJUVzg5X0RCR19XT1csIFwmIzM0OyVzIGVycm9yXFxuXCYjMzQ7LCBfX2Z1bmNfXyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMjE6NDA8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7UlRXODkmIzM0OywKICAgICYjMzQ7UlRXODlfQ09SRSYjMzQ7LAogICAgJiMzNDtSVFc4OV9VU0ImIzM0OywKICAgICYjMzQ7UlRXODlfODg1MkFVJiMzNDssCiAgICAmIzM0O01BQzgwMjExJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cnR3ODlfY2FtX3Jlc2V0X2tleXMmIzM0OywKICAgICYjMzQ7cnR3ODlfd293X2NvbnN0cnVjdF9rZXlfaW5mbyYjMzQ7LAogICAgJiMzNDtydHc4OV93b3dfdXBkYXRlX2tleV9pbmZvJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlcGxhY2VzIFJDVS1iYXNlZCBrZXkgaXRlcmF0aW9uIChpZWVlODAyMTFfaXRlcl9rZXlzX3JjdSkgd2l0aCBpZWVlODAyMTFfaXRlcl9rZXlzIGluIHJ0dzg5IENBTSBhbmQgV29XTEFOIHBhdGhzLiBpZWVlODAyMTFfaXRlcl9rZXlzIGVuZm9yY2VzIGEgd2lwaHkgbXV0ZXggYXNzZXJ0aW9uIChsb2NrZGVwX2Fzc2VydF93aXBoeSksIGNoYW5naW5nIGxvY2tpbmcgYW5kIHN5bmNocm9uaXphdGlvbiBhc3N1bXB0aW9ucyBkdXJpbmcga2V5IHJlc2V0IGFuZCBXb1dMQU4ga2V5IGNvbnN0cnVjdGlvbi91cGRhdGVzLiBUaGUgZHJpdmVyIGlzIGFjY2Vzc2libGUgdmlhIFVTQiBnYWRnZXQgZW11bGF0aW9uIGFuZCB3b3J0aCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3MKdG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncywKYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy4KCi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6CiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZAogIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuCiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLAogIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy4KCi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgJiMzNDtOTyBGVU5DVElPTkFMIENIQU5HRSYjMzQ7IChORkNJKSBPUiAmIzM0O1JFRkFDVE9SSU5HJiMzNDsgQ0xBSU1TOgogIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgJiMzNDtjbGVhbnVwcyYjMzQ7LCAmIzM0O3JlZmFjdG9yaW5ncyYjMzQ7LCBvciBzdGF0ZQogICYjMzQ7Tm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWQmIzM0Oy4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuCiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50CiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuCiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC4KCi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6CiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLAogIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLgogIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXIKICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoyLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOgoKLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOgogICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLgogICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pCiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuCiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50cwogICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy4KICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy4KLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6CiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczoKICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZwogICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuCiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQozLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6Ci0gQ29yZSBTdWJzeXN0ZW1zOgogICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLAogICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLgotIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczoKICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy4KLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6CiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuCi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczoKICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpXaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjoKCi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOgogIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzCiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHQKICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS4KICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgJiMzNDtmb2N1c2VkJiMzNDssCiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLgoKLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6CiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzCiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuCgotIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKToKICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrCiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuCiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyCiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlncwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOgotIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCi0gQ2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC4KLSBTdHJpcCBhbnkgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNDg5NjcyNjEyMmE0OWMyZjY5NzRkNzJkZmNiNmVjMzJkNDE0ZTc4YwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgU2VwIDggMjE6NDA6MjggMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NhbS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jYW0uYwppbmRleCA3YzYyZWNlMTM3ZDAxLi4yMmYyMWEwNGE5NmQyIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NhbS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY2FtLmMKQEAgLTYwNSw5ICYjNDM7NjA1LDcgQEAgdm9pZCBydHc4OV9jYW1fZGVpbml0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldiwgc3RydWN0IHJ0dzg5X3ZpZl9saW5rICpydHd2aWZfbGkKIAogdm9pZCBydHc4OV9jYW1fcmVzZXRfa2V5cyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpCiB7Ci0JcmN1X3JlYWRfbG9jaygpOwotCWllZWU4MDIxMV9pdGVyX2tleXNfcmN1KHJ0d2Rldi0mZ3Q7aHcsIE5VTEwsIHJ0dzg5X2NhbV9yZXNldF9rZXlfaXRlciwgcnR3ZGV2KTsKLQlyY3VfcmVhZF91bmxvY2soKTsKJiM0MzsJaWVlZTgwMjExX2l0ZXJfa2V5cyhydHdkZXYtJmd0O2h3LCBOVUxMLCBydHc4OV9jYW1fcmVzZXRfa2V5X2l0ZXIsIHJ0d2Rldik7CiB9CiAKIHN0YXRpYyBpbnQgcnR3ODlfY2FtX2dldF9hdmFpbF9hZGRyX2NhbShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYwppbmRleCAyZGZhMjRjNTRlN2Q3Li4wYmYzNDY5MmM3Y2UzIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMKQEAgLTQ3MywxMCAmIzQzOzQ3Myw4IEBAIHN0YXRpYyB2b2lkIHJ0dzg5X3dvd19jb25zdHJ1Y3Rfa2V5X2luZm8oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KQogCXN0cnVjdCBpZWVlODAyMTFfdmlmICp3b3dfdmlmID0gcnR3dmlmX2xpbmtfdG9fdmlmKHJ0d3ZpZl9saW5rKTsKIAlib29sIGVyciA9IGZhbHNlOwogCi0JcmN1X3JlYWRfbG9jaygpOwotCWllZWU4MDIxMV9pdGVyX2tleXNfcmN1KHJ0d2Rldi0mZ3Q7aHcsIHdvd192aWYsCi0JCQkJcnR3ODlfd293X2dldF9rZXlfaW5mb19pdGVyLCAmYW1wO2Vycik7Ci0JcmN1X3JlYWRfdW5sb2NrKCk7CiYjNDM7CWllZWU4MDIxMV9pdGVyX2tleXMocnR3ZGV2LSZndDtodywgd293X3ZpZiwKJiM0MzsJCQkgICAgcnR3ODlfd293X2dldF9rZXlfaW5mb19pdGVyLCAmYW1wO2Vycik7CiAKIAlpZiAoZXJyKSB7CiAJCXJ0dzg5X3dvd19rZXlfY2xlYXIocnR3ZGV2KTsKQEAgLTY5NSwxMCAmIzQzOzY5Myw4IEBAIHN0YXRpYyB2b2lkIHJ0dzg5X3dvd191cGRhdGVfa2V5X2luZm8oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBib29sIHJ4X3JlYWR5KQogCXN0cnVjdCBpZWVlODAyMTFfYnNzX2NvbmYgKmJzc19jb25mOwogCXN0cnVjdCBpZWVlODAyMTFfa2V5X2NvbmYgKmtleTsKIAotCXJjdV9yZWFkX2xvY2soKTsKLQlpZWVlODAyMTFfaXRlcl9rZXlzX3JjdShydHdkZXYtJmd0O2h3LCB3b3dfdmlmLAotCQkJCXJ0dzg5X3dvd19zZXRfa2V5X2luZm9faXRlciwgJmFtcDtkYXRhKTsKLQlyY3VfcmVhZF91bmxvY2soKTsKJiM0MzsJaWVlZTgwMjExX2l0ZXJfa2V5cyhydHdkZXYtJmd0O2h3LCB3b3dfdmlmLAomIzQzOwkJCSAgICBydHc4OV93b3dfc2V0X2tleV9pbmZvX2l0ZXIsICZhbXA7ZGF0YSk7CiAKIAlpZiAoZGF0YS5lcnJvcikgewogCQlydHc4OV9kZWJ1ZyhydHdkZXYsIFJUVzg5X0RCR19XT1csICYjMzQ7JXMgZXJyb3JcbiYjMzQ7LCBfX2Z1bmNfXyk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDIxOjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM2MDYKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAxMDIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBSVFc4OSBQYXRjaCoqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgcGF0Y2guIEkgc2VlIG1vZGlmaWNhdGlvbnMgdG91Y2hpbmcgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY2FtLmNgIGFuZCBgZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuY2AuIEltbWVkaWF0ZWx5LCBteSBicmFpbiBraWNrcyBpbnRvIGdlYXI6IHJ0dzg5Li4uIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeS4gSXMgdGhpcyB0aGUgUENJZSwgVVNCLCBvciBTRElPIFJlYWx0ZWsgd2lyZWxlc3MgZHJpdmVyPyBUaW1lIHRvIHF1aWNrbHkgY29uZmlybSBteSBhc3N1bXB0aW9ucy4gSSYjMzk7bGwgcHJvYmFibHkgZmlyZSB1cCBgZ3JlcHBlcmAgb3IganVzdCBxdWlja2x5IHJlYWQgdGhlIHJlbGV2YW50IGZpbGVzIGFuZCB0aGUgYXNzb2NpYXRlZCBLY29uZmlnIHRvIGdldCB0aGUgY29tcGxldGUgcGljdHVyZS4gTmVlZCB0byB1bmRlcnN0YW5kIHRoZSBzY29wZSBvZiB0aGVzZSBjaGFuZ2VzIGJlZm9yZSBJIGNhbiBhc3Nlc3MgdGhlIGltcGFjdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAyMTo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgUlRXODkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgT1IgQlNELTMtQ2xhdXNlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MjptZW51Y29uZmlnIFJUVzg5XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODAyLjExYXggd2lyZWxlc3MgY2hpcHMgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZz0xMT1pZiBSVFc4OVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTEyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjEzOmNvbmZpZyBSVFc4OV9DT1JFXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTQtXHR0cmlzdGF0ZVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoxNzpjb25maWcgUlRXODlfUENJXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTgtXHR0cmlzdGF0ZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjIwOmNvbmZpZyBSVFc4OV9VU0JcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0yMS1cdHRyaXN0YXRlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMjItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MjM6Y29uZmlnIFJUVzg5Xzg4NTFCXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMjQtXHR0cmlzdGF0ZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTI1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjI2OmNvbmZpZyBSVFc4OV84ODUyQVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTI3LVx0dHJpc3RhdGVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0yOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoyOTpjb25maWcgUlRXODlfODg1MkJfQ09NTU9OXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMzAtXHR0cmlzdGF0ZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTMxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjMyOmNvbmZpZyBSVFc4OV84ODUyQlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTMzLVx0dHJpc3RhdGVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0zNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzozNTpjb25maWcgUlRXODlfODg1MkJUXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMzYtXHR0cmlzdGF0ZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTM3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjM4OmNvbmZpZyBSVFc4OV84ODUyQ1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTM5LVx0dHJpc3RhdGVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy00MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzo0MTpjb25maWcgUlRXODlfODkyMkFcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy00Mi1cdHRyaXN0YXRlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctNDMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6NDQ6Y29uZmlnIFJUVzg5Xzg5MjJEXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctNDUtXHR0cmlzdGF0ZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTQ2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjQ3OmNvbmZpZyBSVFc4OV84ODUxQkVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy00OC1cdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODg1MUJFIFBDSSB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2KSBhZGFwdGVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTU3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjU4OmNvbmZpZyBSVFc4OV84ODUxQlVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy01OS1cdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODg1MUJVIFVTQiB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2KSBhZGFwdGVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTY4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjY5OmNvbmZpZyBSVFc4OV84ODUyQUVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy03MC1cdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODg1MkFFIFBDSSB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2KSBhZGFwdGVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTc5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjgwOmNvbmZpZyBSVFc4OV84ODUyQVVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy04MS1cdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODg1MkFVIFVTQiB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2KSBhZGFwdGVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTkwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjkxOmNvbmZpZyBSVFc4OV84ODUyQkVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy05Mi1cdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODg1MkJFIFBDSSB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2KSBhZGFwdGVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTEwMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoxMDM6Y29uZmlnIFJUVzg5Xzg4NTJCVVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTEwNC1cdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODg1MkJVIFVTQiB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2KSBhZGFwdGVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTExNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoxMTU6Y29uZmlnIFJUVzg5Xzg4NTJCVEVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xMTYtXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg4NTJCRS1WVCBQQ0kgd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNikgYWRhcHRlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xMjYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTI3OmNvbmZpZyBSVFc4OV84ODUyQ0VcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xMjgtXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg4NTJDRSBQQ0kgd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNkUpIGFkYXB0ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTM3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjEzODpjb25maWcgUlRXODlfODg1MkNVXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTM5LVx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayA4ODUyQ1UgVVNCIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDZFKSBhZGFwdGVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE0OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoxNDk6Y29uZmlnIFJUVzg5Xzg5MjJBRVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE1MC1cdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODkyMkFFLzg5MjJBRS1WUyBQQ0kgd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNykgYWRhcHRlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xNjItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTYzOmNvbmZpZyBSVFc4OV84OTIyQVVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xNjQtXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg5MjJBVSBVU0Igd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNykgYWRhcHRlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xNzQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTc1OmNvbmZpZyBSVFc4OV84OTIyREVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xNzYtXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg5MjJERS84OTIyREUtVlMgUENJIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDcpIGFkYXB0ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTg2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjE4Nzpjb25maWcgUlRXODlfREVCVUdcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xODgtXHRib29sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTg5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjE5MDpjb25maWcgUlRXODlfREVCVUdNU0dcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xOTEtXHRib29sIFwmIzM0O1JlYWx0ZWsgcnR3ODkgZGVidWcgbWVzc2FnZSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE5OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoxOTk6Y29uZmlnIFJUVzg5X0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0yMDAtXHRib29sIFwmIzM0O1JlYWx0ZWsgcnR3ODkgZGVidWdmcyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTIwNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoyMDg6Y29uZmlnIFJUVzg5X0xFRFNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0yMDktXHRib29sXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTIxNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoyMTU6Y29uZmlnIFJUVzg5X0xFRFNfTUNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0yMTYtXHRib29sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMjE6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjU0OQoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDI2MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipVU0IgUlRXODkgRHJpdmVyIEV4cGxvcmF0aW9uKioKCk9rYXksIHNvIEkmIzM5O3ZlIG5vdGljZWQgdGhlc2UgVVNCIHZlcnNpb25zIG9mIHJ0dzg5IGRyaXZlcnMg4oCTIFJUVzg5Xzg4NTFCVSwgODg1MkFVLCBldGMuIEludGVyZXN0aW5nLiBTaW5jZSB0aGV5JiMzOTtyZSBVU0IsIHRoYXQgb3BlbnMgdXAgYSB3aG9sZSBhdmVudWUgZm9yIHRlc3RpbmcuIEkgY291bGQgZW11bGF0ZSB0aGVtIHVzaW5nIFVTQiBnYWRnZXQsIHJhdy1nYWRnZXQsIG9yIGV2ZW4gc3l6a2FsbGVyJiMzOTtzIFVTQiBmdXp6aW5nIGNhcGFiaWxpdGllcyAobGlrZSBzeXpfdXNiX2Nvbm5lY3QpLiBWaXJ0dWFsIFVTQiBpcyBhbm90aGVyIG9wdGlvbi4KCk15IGltbWVkaWF0ZSBxdWVzdGlvbiBpczogZG9lcyBzeXprYWxsZXIgYWxyZWFkeSB0YXJnZXQgVVNCIFdpLUZpIGRyaXZlcnMsIGFuZCwgbW9yZSBzcGVjaWZpY2FsbHksIGlzIHRoaXMgUlRXODkgVVNCIGRyaXZlciBlbXVsYXRhYmxlIG9yIGV2ZW4gcmVhY2hhYmxlIHdpdGggdGhvc2UgdG9vbHM/IFRoYXQmIzM5O3Mgd2hhdCBJIG5lZWQgdG8gZmlndXJlIG91dCBmaXJzdC4KCkJleW9uZCB0aGF0LCBJIG5lZWQgdG8gZGVsdmUgaW50byB0aGlzIHBhdGNoIGFuZCB1bmRlcnN0YW5kIHRoZSBjb2RlIGl0c2VsZi4gSSYjMzk7bSB3b25kZXJpbmcgaWYgbWFjODAyMTEgb3IgbWFjODAyMTFfaHdzaW0gKG9yIHNvbWV0aGluZyBzaW1pbGFyKSBpcyBpbiB0aGUgbWl4LiBJIHJlYWxseSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCYjMzk7cyBnb2luZyBvbiB3aXRoIGBydHc4OV9jYW1fcmVzZXRfa2V5c2AgYW5kIHRoZSBgcnR3ODlfd293XypgIGZ1bmN0aW9ucywgcGFydGljdWxhcmx5IGBydHc4OV93b3dfY29uc3RydWN0X2tleV9pbmZvYCBhbmQgYHJ0dzg5X3dvd191cGRhdGVfa2V5X2luZm9gLiBUaGF0IG5hbWluZyBzdWdnZXN0cyBzb21lIGtpbmQgb2Ygd2FrZS1vbi13aXJlbGVzcyBvciBzZWN1cml0eSBrZXkgbWFuYWdlbWVudCwgYW5kIHRoYXQgY291bGQgYmUgaW50ZXJlc3RpbmcgZnJvbSBhIHNlY3VyaXR5IHBlcnNwZWN0aXZlLgoKVG8gZ2FpbiBhIHNvbGlkIHVuZGVyc3RhbmRpbmcsIEkmIzM5O2xsIHN0YXJ0IGJ5IGNoZWNraW5nIGFsbCB0aGUgY2FsbGVycyBvZiBgcnR3ODlfY2FtX3Jlc2V0X2tleXNgLCBgcnR3ODlfd293X2NvbnN0cnVjdF9rZXlfaW5mb2AsIGFuZCBgcnR3ODlfd293X3VwZGF0ZV9rZXlfaW5mb2AuIFRoaXMgc2hvdWxkIGdpdmUgbWUgYSBnb29kIGhhbmRsZSBvbiBob3cgdGhlc2UgZnVuY3Rpb25zIGFyZSB1c2VkIHdpdGhpbiB0aGUgZHJpdmVyJiMzOTtzIGNvbnRleHQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMjE6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cnR3ODlfY2FtX3Jlc2V0X2tleXMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY2FtLmM9NTk3PXZvaWQgcnR3ODlfY2FtX2RlaW5pdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHN0cnVjdCBydHc4OV92aWZfbGluayAqcnR3dmlmX2xpbmspXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jYW0uYy02MDUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NhbS5jOjYwNjp2b2lkIHJ0dzg5X2NhbV9yZXNldF9rZXlzKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY2FtLmMtNjA3LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NhbS5oPTQ3Mz12b2lkIHJ0dzg5X2NhbV9ic3NpZF9jaGFuZ2VkKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY2FtLmgtNDc0LVx0XHRcdCAgICAgc3RydWN0IHJ0dzg5X3ZpZl9saW5rICpydHd2aWZfbGluayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NhbS5oOjQ3NTp2b2lkIHJ0dzg5X2NhbV9yZXNldF9rZXlzKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NhbS5oLTQ3Ni1pbnQgcnR3ODlfY2FtX2F0dGFjaF9saW5rX3NlY19jYW0oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvc2VyLmM9MzU3PXN0YXRpYyB2b2lkIHNlcl9yZXNldF9tYWNfYmluZGluZyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9zZXIuYy0zNjAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3Nlci5jOjM2MTpcdHJ0dzg5X2NhbV9yZXNldF9rZXlzKHJ0d2Rldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3Nlci5jLTM2Mi1cdHJ0dzg5X2Zvcl9lYWNoX3J0d3ZpZihydHdkZXYsIHJ0d3ZpZilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jPTEyNTY9c3RhdGljIGludCBydHc4OV93b3dfc3dhcF9mdyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGJvb2wgd293KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtMTMxNC1cdGlmICghaXNfY29ubilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmM6MTMxNTpcdFx0cnR3ODlfY2FtX3Jlc2V0X2tleXMocnR3ZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtMTMxNi1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAyMTo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3ODk1CgkJCQkJCQlvdXRwdXQ6IDQ3CgkJCQkJCQl0aG91Z2h0czogMzUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcyBjb2RlLiBIZXJlJiMzOTtzIHdoYXQgSSYjMzk7bSB0aGlua2luZyByaWdodCBub3c6CgoqKkludmVzdGlnYXRpbmcgV2FrZS1vbi1XTEFOIEtleSBNYW5hZ2VtZW50KioKCkFscmlnaHQsIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgV2FrZS1vbi1XTEFOIChXb1dMQU4pIGtleSBpbmZvcm1hdGlvbiBpcyBiZWluZyBoYW5kbGVkIGluIHRoaXMgYHJ0dzg5YCBkcml2ZXIuIFRvIGdldCBhIHNvbGlkIGdyYXNwLCBJJiMzOTttIGdvaW5nIHRvIHN0YXJ0IGJ5IHRyYWNpbmcgdGhlIGNhbGxlcnMgb2YgdGhvc2Uga2V5IGZ1bmN0aW9uczogYHJ0dzg5X3dvd19jb25zdHJ1Y3Rfa2V5X2luZm9gIGFuZCBgcnR3ODlfd293X3VwZGF0ZV9rZXlfaW5mb2AuIFVuZGVyc3RhbmRpbmcgd2hlcmUgdGhlc2UgYXJlIGJlaW5nIGludm9rZWQgd2lsbCBnaXZlIG1lIGEgZ29vZCBwaWN0dXJlIG9mIHRoZSBXb1dMQU4ga2V5IGluaXRpYWxpemF0aW9uIGFuZCB1cGRhdGUgZmxvdy4gS25vd2luZyB0aGUgY29udGV4dCBvZiB0aGVzZSBjYWxscyBpcyBjcml0aWNhbCB0byBlbnN1cmluZyB0aGUgc2VjdXJpdHkgYW5kIHByb3BlciBmdW5jdGlvbiBvZiBXb1dMQU4gd2l0aGluIHRoZSBkcml2ZXIuIExldCYjMzk7cyBzZWUgd2hhdCB0aGUgY2FsbCBncmFwaHMgcmV2ZWFsLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDIxOjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3J0dzg5X3dvd18oY29uc3RydWN0fHVwZGF0ZSlfa2V5X2luZm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmM9NDU3PXN0YXRpYyB2b2lkIHJ0dzg5X3dvd19rZXlfY2xlYXIoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtNDY3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYzo0Njg6c3RhdGljIHZvaWQgcnR3ODlfd293X2NvbnN0cnVjdF9rZXlfaW5mbyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTQ2OS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYz02NDM9c3RhdGljIHN0cnVjdCBpZWVlODAyMTFfa2V5X2NvbmYgKnJ0dzg5X3dvd19ndGtfcmVrZXkoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtNjgzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYzo2ODQ6c3RhdGljIHZvaWQgcnR3ODlfd293X3VwZGF0ZV9rZXlfaW5mbyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGJvb2wgcnhfcmVhZHkpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTY4NS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYz0xMzk5PXN0YXRpYyBpbnQgcnR3ODlfd293X2Rpc2FibGVfdHJ4X3ByZShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy0xNDI4LVx0aWYgKCFyZXQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jOjE0Mjk6XHRcdHJ0dzg5X3dvd191cGRhdGVfa2V5X2luZm8ocnR3ZGV2LCBmYWxzZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTE0MzAtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy0xNDMzLVx0aWYgKCFyZXQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jOjE0MzQ6XHRcdHJ0dzg5X3dvd191cGRhdGVfa2V5X2luZm8ocnR3ZGV2LCB0cnVlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtMTQzNS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jPTE1NzU9c3RhdGljIGludCBydHc4OV93b3dfZndfc3RhcnQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtMTU5NC1cdFx0cnR3ODlfd293X3BhdHRlcm5fd3JpdGUocnR3ZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmM6MTU5NTpcdFx0cnR3ODlfd293X2NvbnN0cnVjdF9rZXlfaW5mbyhydHdkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy0xNTk2LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDIxOjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg4ODUKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiA5OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIG1hYzgwMjExIEtleSBJdGVyYXRpb24gQ2hhbmdlKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcyBjb2RlIGNoYW5nZS4gTXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzIHdoeSB3ZSYjMzk7dmUgc3dpdGNoZWQgZnJvbSB1c2luZyBgaWVlZTgwMjExX2l0ZXJfa2V5c2AgdG8gYGllZWU4MDIxMV9pdGVyX2tleXNfcmN1YC4gVGhpcyBsaWtlbHkgcG9pbnRzIHRvIGNvbmN1cnJlbmN5IGlzc3VlcyBvciBhIG5lZWQgZm9yIHNhZmVyIGtleSBhY2Nlc3Mgd2l0aGluIHRoZSBtYWM4MDIxMSBzdGFjay4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGZ1bmRhbWVudGFsIGRpZmZlcmVuY2UgaGVyZS4KCk15IG5leHQgc3RlcCBpcyB0byBleGFtaW5lIHRoZSBkZWZpbml0aW9ucyBvZiBib3RoIGZ1bmN0aW9ucywgYGllZWU4MDIxMV9pdGVyX2tleXNgIGFuZCBgaWVlZTgwMjExX2l0ZXJfa2V5c19yY3VgLCB0byBpZGVudGlmeSB0aGVpciBzcGVjaWZpYyBmdW5jdGlvbmFsaXRpZXMgYW5kIHRoZWlyIHVzYWdlIGNvbnRleHQuIEkmIzM5O2xsIGJlIGxvb2tpbmcgaW4gYGluY2x1ZGUvbmV0L21hYzgwMjExLmhgIGFuZCB0aGVuIHRoZSBtYWM4MDIxMSBzb3VyY2UgZGlyZWN0b3J5IHRvIGdldCB0aGUgY29kZS4gVGhpcyB3aWxsIGNsYXJpZnkgaG93IHRoZSBSQ1UgdmVyc2lvbiBoYW5kbGVzIGtleSBpdGVyYXRpb25zIGRpZmZlcmVudGx5IGFuZCwgaG9wZWZ1bGx5LCByZXZlYWwgdGhlIHVuZGVybHlpbmcgcmVhc29uIGZvciB0aGUgc3dpdGNoLiBJJiMzOTttIGV4cGVjdGluZyB0aGUgUkNVIHZlcnNpb24gdG8gcHJvdmlkZSBzb21lIGZvcm0gb2YgcmVhZC1jb3B5LXVwZGF0ZSBwcm90ZWN0aW9uIGZvciB0aGUga2V5IGRhdGEgc3RydWN0dXJlcywgYnV0IEkgbmVlZCB0byBjb25maXJtIHRoaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDIxOjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2llZWU4MDIxMV9pdGVyX2tleXMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtpbmNsdWRlLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL25ldC9tYWM4MDIxMS5oPTY4OTE9dTMyIGllZWU4MDIxMV90eHFfYXFsX3BlbmRpbmcoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4tLVxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaC02ODk0LS8qKlxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaDo2ODk1OiAqIGllZWU4MDIxMV9pdGVyX2tleXMgLSBpdGVyYXRlIGtleXMgcHJvZ3JhbW1lZCBpbnRvIHRoZSBkZXZpY2VcbmluY2x1ZGUvbmV0L21hYzgwMjExLmgtNjg5Ni0gKiBAaHc6IHBvaW50ZXIgb2J0YWluZWQgZnJvbSBpZWVlODAyMTFfYWxsb2NfaHcoKVxuLS1cbmluY2x1ZGUvbmV0L21hYzgwMjExLmgtNjkxMS0gKi9cbmluY2x1ZGUvbmV0L21hYzgwMjExLmg6NjkxMjp2b2lkIGllZWU4MDIxMV9pdGVyX2tleXMoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oLTY5MTMtXHRcdFx0IHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXG4tLVxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaC02OTIxLS8qKlxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaDo2OTIyOiAqIGllZWU4MDIxMV9pdGVyX2tleXNfcmN1IC0gaXRlcmF0ZSBrZXlzIHByb2dyYW1tZWQgaW50byB0aGUgZGV2aWNlXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oLTY5MjMtICogQGh3OiBwb2ludGVyIG9idGFpbmVkIGZyb20gaWVlZTgwMjExX2FsbG9jX2h3KClcbi0tXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oLTY5MzUtICovXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oOjY5MzY6dm9pZCBpZWVlODAyMTFfaXRlcl9rZXlzX3JjdShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbmluY2x1ZGUvbmV0L21hYzgwMjExLmgtNjkzNy1cdFx0XHQgICAgIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDIxOjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk3MzEKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiAzOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgYXNzdW1pbmcgSSYjMzk7bSBhbHJlYWR5IHByZXR0eSBmYW1pbGlhciB3aXRoIDgwMi4xMSBhbmQgd2lyZWxlc3MgbmV0d29ya2luZzoKCioqRGl2aW5nIGludG8gS2V5IEl0ZXJhdGlvbioqCgpSaWdodCwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlc2Uga2V5IGl0ZXJhdGlvbiBmdW5jdGlvbnMsIGBpZWVlODAyMTFfaXRlcl9rZXlzYCBhbmQgYGllZWU4MDIxMV9pdGVyX2tleXNfcmN1YCwgYXJlIGltcGxlbWVudGVkLiBDbGVhcmx5LCB0aGVyZSYjMzk7cyBhIG5lZWQgdG8gaGFuZGxlIGtleXMgd2l0aGluIHRoZSA4MDIuMTEgY29udGV4dCwgbGlrZWx5IHJlbGF0ZWQgdG8gc2VjdXJpdHkgYW5kIGVuY3J5cHRpb24sIGFuZCB0aGUgY2hvaWNlIG9mIGByY3VgIGluIG9uZSBvZiB0aGUgZnVuY3Rpb25zIHN1Z2dlc3RzIHRoYXQgY29uY3VycmVuY3kgaXMgYSBjb3JlIGNvbmNlcm4g4oCTIHRoZXkmIzM5O3JlIGxpa2VseSBkZWFsaW5nIHdpdGggYSBzaGFyZWQgcmVzb3VyY2UgdGhhdCBtdWx0aXBsZSB0aHJlYWRzIG9yIHByb2Nlc3NlcyBtaWdodCBhY2Nlc3MuIEkmIzM5O2xsIG5lZWQgdG8gcGF5IGNsb3NlIGF0dGVudGlvbiB0byB0aGUgbG9jayBtYW5hZ2VtZW50IHN0cmF0ZWdpZXMgdXNlZCBpbiBlYWNoIGZ1bmN0aW9uLiBEb2VzIG9uZSB1c2UgbXV0ZXhlcywgc3BpbmxvY2tzLCBvciBzb21ldGhpbmcgbW9yZSBzb3BoaXN0aWNhdGVkPyBXaGF0IGFib3V0IFJDVSYjMzk7cyByZWFkLWNvcHktdXBkYXRlIHNlbWFudGljcyBpbiB0aGUgYF9yY3VgIHZlcnNpb24/IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBudWFuY2VzIG9mIGhvdyB0aGVzZSBrZXlzIGFyZSBzdG9yZWQsIGFjY2Vzc2VkLCBhbmQgbW9kaWZpZWQsIGVzcGVjaWFsbHkgd2hlbiBjb25jdXJyZW50IGFjY2VzcyBpcyBsaWtlbHkuIEkmIzM5O20gaG9waW5nIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2YgaG93IHRoZXkgZ3VhcmFudGVlIGRhdGEgaW50ZWdyaXR5IGFuZCB0aHJlYWQgc2FmZXR5LiBSZWFkaW5nIHRoZSBpbXBsZW1lbnRhdGlvbiBpdHNlbGYsIGFsb25nIHdpdGggdGhlIGRvY3VtZW50YXRpb24sIHdpbGwgZ2l2ZSBtZSB0aGUgaW5zaWdodHMgSSBuZWVkIHRvIHNlZSBob3cgdGhlc2UgZnVuY3Rpb25zIGNvbnRyaWJ1dGUgdG8gdGhlIG92ZXJhbGwgODAyLjExIHNlY3VyaXR5IGFyY2hpdGVjdHVyZS4gVW5kZXJzdGFuZGluZyB0aGVzZSB0d28gaW1wbGVtZW50YXRpb25zLCBhbmQgaG93IHRoZXkgcmVsYXRlLCBpcyBnb2luZyB0byBiZSBjcnVjaWFsIGZvciBteSB3b3JrLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAyMTo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS9rZXkuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEwMDAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogODAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTAwMDpcdHN0YXRpYyB2b2lkXG4xMDAxOlx0aWVlZTgwMjExX2tleV9pdGVyKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuMTAwMjpcdFx0XHQgICBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxuMTAwMzpcdFx0XHQgICBzdHJ1Y3QgaWVlZTgwMjExX2tleSAqa2V5LFxuMTAwNDpcdFx0XHQgICB2b2lkICgqaXRlcikoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4xMDA1Olx0XHRcdFx0XHRzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxuMTAwNjpcdFx0XHRcdFx0c3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSxcbjEwMDc6XHRcdFx0XHRcdHN0cnVjdCBpZWVlODAyMTFfa2V5X2NvbmYgKmtleSxcbjEwMDg6XHRcdFx0XHRcdHZvaWQgKmRhdGEpLFxuMTAwOTpcdFx0XHQgICB2b2lkICppdGVyX2RhdGEpXG4xMDEwOlx0e1xuMTAxMTpcdFx0Lyogc2tpcCBrZXlzIG9mIHN0YXRpb24gaW4gcmVtb3ZhbCBwcm9jZXNzICovXG4xMDEyOlx0XHRpZiAoa2V5LVx1MDAzZXN0YSBcdTAwMjZcdTAwMjYga2V5LVx1MDAzZXN0YS1cdTAwM2VyZW1vdmVkKVxuMTAxMzpcdFx0XHRyZXR1cm47XG4xMDE0Olx0XHRpZiAoIShrZXktXHUwMDNlZmxhZ3MgXHUwMDI2IEtFWV9GTEFHX1VQTE9BREVEX1RPX0hBUkRXQVJFKSlcbjEwMTU6XHRcdFx0cmV0dXJuO1xuMTAxNjpcdFx0aXRlcihodywgdmlmLCBrZXktXHUwMDNlc3RhID8gXHUwMDI2a2V5LVx1MDAzZXN0YS1cdTAwM2VzdGEgOiBOVUxMLFxuMTAxNzpcdFx0ICAgICBcdTAwMjZrZXktXHUwMDNlY29uZiwgaXRlcl9kYXRhKTtcbjEwMTg6XHR9XG4xMDE5Olx0XG4xMDIwOlx0dm9pZCBpZWVlODAyMTFfaXRlcl9rZXlzKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuMTAyMTpcdFx0XHRcdCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxuMTAyMjpcdFx0XHRcdCB2b2lkICgqaXRlcikoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4xMDIzOlx0XHRcdFx0XHQgICAgICBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxuMTAyNDpcdFx0XHRcdFx0ICAgICAgc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSxcbjEwMjU6XHRcdFx0XHRcdCAgICAgIHN0cnVjdCBpZWVlODAyMTFfa2V5X2NvbmYgKmtleSxcbjEwMjY6XHRcdFx0XHRcdCAgICAgIHZvaWQgKmRhdGEpLFxuMTAyNzpcdFx0XHRcdCB2b2lkICppdGVyX2RhdGEpXG4xMDI4Olx0e1xuMTAyOTpcdFx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBod190b19sb2NhbChodyk7XG4xMDMwOlx0XHRzdHJ1Y3QgaWVlZTgwMjExX2tleSAqa2V5LCAqdG1wO1xuMTAzMTpcdFx0c3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGE7XG4xMDMyOlx0XG4xMDMzOlx0XHRsb2NrZGVwX2Fzc2VydF93aXBoeShody1cdTAwM2V3aXBoeSk7XG4xMDM0Olx0XG4xMDM1Olx0XHRpZiAodmlmKSB7XG4xMDM2Olx0XHRcdHNkYXRhID0gdmlmX3RvX3NkYXRhKHZpZik7XG4xMDM3Olx0XHRcdGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShrZXksIHRtcCwgXHUwMDI2c2RhdGEtXHUwMDNla2V5X2xpc3QsIGxpc3QpXG4xMDM4Olx0XHRcdFx0aWVlZTgwMjExX2tleV9pdGVyKGh3LCB2aWYsIGtleSwgaXRlciwgaXRlcl9kYXRhKTtcbjEwMzk6XHRcdH0gZWxzZSB7XG4xMDQwOlx0XHRcdGxpc3RfZm9yX2VhY2hfZW50cnkoc2RhdGEsIFx1MDAyNmxvY2FsLVx1MDAzZWludGVyZmFjZXMsIGxpc3QpXG4xMDQxOlx0XHRcdFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGtleSwgdG1wLFxuMTA0MjpcdFx0XHRcdFx0XHRcdCBcdTAwMjZzZGF0YS1cdTAwM2VrZXlfbGlzdCwgbGlzdClcbjEwNDM6XHRcdFx0XHRcdGllZWU4MDIxMV9rZXlfaXRlcihodywgXHUwMDI2c2RhdGEtXHUwMDNldmlmLCBrZXksXG4xMDQ0Olx0XHRcdFx0XHRcdFx0ICAgaXRlciwgaXRlcl9kYXRhKTtcbjEwNDU6XHRcdH1cbjEwNDY6XHR9XG4xMDQ3Olx0RVhQT1JUX1NZTUJPTChpZWVlODAyMTFfaXRlcl9rZXlzKTtcbjEwNDg6XHRcbjEwNDk6XHRzdGF0aWMgdm9pZFxuMTA1MDpcdF9pZWVlODAyMTFfaXRlcl9rZXlzX3JjdShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbjEwNTE6XHRcdFx0XHQgc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4xMDUyOlx0XHRcdFx0IHZvaWQgKCppdGVyKShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbjEwNTM6XHRcdFx0XHRcdCAgICAgIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXG4xMDU0Olx0XHRcdFx0XHQgICAgICBzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqc3RhLFxuMTA1NTpcdFx0XHRcdFx0ICAgICAgc3RydWN0IGllZWU4MDIxMV9rZXlfY29uZiAqa2V5LFxuMTA1NjpcdFx0XHRcdFx0ICAgICAgdm9pZCAqZGF0YSksXG4xMDU3Olx0XHRcdFx0IHZvaWQgKml0ZXJfZGF0YSlcbjEwNTg6XHR7XG4xMDU5Olx0XHRzdHJ1Y3QgaWVlZTgwMjExX2tleSAqa2V5O1xuMTA2MDpcdFxuMTA2MTpcdFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9yY3Uoa2V5LCBcdTAwMjZzZGF0YS1cdTAwM2VrZXlfbGlzdCwgbGlzdClcbjEwNjI6XHRcdFx0aWVlZTgwMjExX2tleV9pdGVyKGh3LCBcdTAwMjZzZGF0YS1cdTAwM2V2aWYsIGtleSwgaXRlciwgaXRlcl9kYXRhKTtcbjEwNjM6XHR9XG4xMDY0Olx0XG4xMDY1Olx0dm9pZCBpZWVlODAyMTFfaXRlcl9rZXlzX3JjdShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbjEwNjY6XHRcdFx0XHQgICAgIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXG4xMDY3Olx0XHRcdFx0ICAgICB2b2lkICgqaXRlcikoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4xMDY4Olx0XHRcdFx0XHRcdCAgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcbjEwNjk6XHRcdFx0XHRcdFx0ICBzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqc3RhLFxuMTA3MDpcdFx0XHRcdFx0XHQgIHN0cnVjdCBpZWVlODAyMTFfa2V5X2NvbmYgKmtleSxcbjEwNzE6XHRcdFx0XHRcdFx0ICB2b2lkICpkYXRhKSxcbjEwNzI6XHRcdFx0XHQgICAgIHZvaWQgKml0ZXJfZGF0YSlcbjEwNzM6XHR7XG4xMDc0Olx0XHRzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCA9IGh3X3RvX2xvY2FsKGh3KTtcbjEwNzU6XHRcdHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhO1xuMTA3NjpcdFxuMTA3NzpcdFx0aWYgKHZpZikge1xuMTA3ODpcdFx0XHRzZGF0YSA9IHZpZl90b19zZGF0YSh2aWYpO1xuMTA3OTpcdFx0XHRfaWVlZTgwMjExX2l0ZXJfa2V5c19yY3UoaHcsIHNkYXRhLCBpdGVyLCBpdGVyX2RhdGEpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAyMTo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTY0MwoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDIxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYGllZWU4MDIxMV9pdGVyX2tleXNgIGFuZCBydHc4OSBSZWFjaGFiaWxpdHkqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gVGhlIGZpcnN0IHRoaW5nIHRoYXQganVtcHMgb3V0IGlzIHRoaXMgYGxvY2tkZXBfYXNzZXJ0X3dpcGh5KGh3LSZndDt3aXBoeSk7YCB3aXRoaW4gYGllZWU4MDIxMV9pdGVyX2tleXNgLiBUaGF0JiMzOTtzIGEgcmVkIGZsYWchIEl0IG1lYW5zIHRoaXMgZnVuY3Rpb24gKmRlbWFuZHMqIHRoZSB3aXBoeSBsb2NrIGJlIGhlbGQuIEFuZCwgYXMgYSBzZWFzb25lZCBwcm8sIEkga25vdyB0aGF0IGlmIGBpZWVlODAyMTFfaXRlcl9rZXlzX3JjdWAgKmRvZXNuJiMzOTt0KiBoYXZlIHRoYXQgYXNzZXJ0aW9uLCB0aGVuIHdlJiMzOTt2ZSBnb3QgYSBwb3RlbnRpYWwgbG9jayBvcmRlciBpc3N1ZSBpZiB3ZSYjMzk7cmUgbm90IGNhcmVmdWwuIElmIGFueSBjYWxsZXIgZmFpbHMgdG8gaG9sZCB0aGF0IGxvY2ssIGxvY2tkZXAgd2lsbCBhYnNvbHV0ZWx5IHNjcmVhbSBhdCB1cy4gSSBuZWVkIHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiBvZiB0aGUgbG9jayBhY3F1aXNpdGlvbiBwYXRoIGZvciBhbnl0aGluZyBjYWxsaW5nIHRoaXMgZnVuY3Rpb24uCgpOb3csIHNoaWZ0aW5nIGdlYXJzLCBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgYHJ0dzg5YCBlbnRlcnMgdGhlIHBpY3R1cmUgYW5kIGlmIGl0JiMzOTtzIHJlYWNoYWJsZSBmb3IgdGVzdGluZy4gQ2FuIEkgc2ltdWxhdGUgdGhpcyBlYXNpbHkgaW4gYSBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaWtlIFFFTVUgb3IgZXZlbiBHQ0U/IE15IGltbWVkaWF0ZSBuZXh0IHN0ZXAgaXMgdG8gYXNzZXNzIHRoZSBwcm9iaW5nIG1lY2hhbmlzbXMuIENhbiBJIHRyaWdnZXIgaXQgdmlhIFVTQiBlbXVsYXRpb24g4oCTIHJhdy1nYWRnZXQgc3R5bGUgb3Igd2l0aCBzeXprYWxsZXIgZnV6emluZz8gRG9lcyBpdCByZWx5IG9uIHNwZWNpZmljIGZpcm13YXJlIGZpbGVzLCBvciBpcyBhY3R1YWwgcGh5c2ljYWwgaGFyZHdhcmUgcmVxdWlyZWQ/IEEgcXVpY2sgc2VhcmNoIGZvciB0aGUgVVNCIElEIHRhYmxlIHdpdGhpbiB0aGUgYHJ0dzg5YCBkcml2ZXIgaXMgaW4gb3JkZXIuIFRoYXQmIzM5O2xsIGdpdmUgbWUgYSBnb29kIGhhbmRsZSBvbiBob3cgdGhlIGhhcmR3YXJlIGlzIGRldGVjdGVkIGFuZCBpbml0aWFsaXplZCwgYW5kIHRoZXJlZm9yZSwgaG93IGVhc3kgaXQgd2lsbCBiZSB0byBnZXQgbXkgaGFuZHMgb24gaXQgZm9yIGFuYWx5c2lzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgYWNjZXNzIHBhdGggdG8gZ2V0IG15IGhhbmRzIG9uIGl0LCB3aGV0aGVyIHZpYSBVU0IgZW11bGF0aW9uIG9yIGEgbW9yZSBwaHlzaWNhbCBhY2Nlc3Mgcm91dGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDIxOjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3J0dzg5X3VzYiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDYzOCBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZT0xMDY9cnR3ODlfcGNpLXkgOj0gcGNpLm8gcGNpX2JlLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGUtMTA3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZToxMDg6b2JqLSQoQ09ORklHX1JUVzg5X1VTQikgJiM0Mzs9IHJ0dzg5X3VzYi5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlOjEwOTpydHc4OV91c2IteSA6PSB1c2Iub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZS0xMTAtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmg9MjA9c3RydWN0IHJ0dzg5X3BjaV9pbmZvO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmg6MjE6c3RydWN0IHJ0dzg5X3VzYl9pbmZvO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmgtMjItc3RydWN0IHJ0dzg5X21hY19nZW5fZGVmO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oPTU4NzI9dW5pb24gcnR3ODlfYnVzX2luZm8ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmgtNTg3My1cdGNvbnN0IHN0cnVjdCBydHc4OV9wY2lfaW5mbyAqcGNpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmg6NTg3NDpcdGNvbnN0IHN0cnVjdCBydHc4OV91c2JfaW5mbyAqdXNiO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmgtNTg3NS19O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MWJ1LmMtMTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTFidS5jOjExOnN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfdXNiX2luZm8gcnR3ODg1MWJfdXNiX2luZm8gPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTFidS5jLTEyLVx0LnVzYl9ob3N0X3JlcXVlc3RfMlx0XHQ9IFJfQVhfVVNCX0hPU1RfUkVRVUVTVF8yLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MWJ1LmM9NjI9c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIHJ0d184ODUxYnVfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MWJ1LmMtNjQtXHQuaWRfdGFibGUgPSBydHdfODg1MWJ1X2lkX3RhYmxlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUxYnUuYzo2NTpcdC5wcm9iZSA9IHJ0dzg5X3VzYl9wcm9iZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MWJ1LmM6NjY6XHQuZGlzY29ubmVjdCA9IHJ0dzg5X3VzYl9kaXNjb25uZWN0LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUxYnUuYy02Ny19O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmF1LmMtMTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJhdS5jOjExOnN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfdXNiX2luZm8gcnR3ODg1MmFfdXNiX2luZm8gPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJhdS5jLTEyLVx0LnVzYl9ob3N0X3JlcXVlc3RfMlx0XHQ9IFJfQVhfVVNCX0hPU1RfUkVRVUVTVF8yLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmF1LmM9NzY9c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIHJ0d184ODUyYXVfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmF1LmMtNzgtXHQuaWRfdGFibGUgPSBydHdfODg1MmF1X2lkX3RhYmxlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYXUuYzo3OTpcdC5wcm9iZSA9IHJ0dzg5X3VzYl9wcm9iZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmF1LmM6ODA6XHQuZGlzY29ubmVjdCA9IHJ0dzg5X3VzYl9kaXNjb25uZWN0LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYXUuYy04MS19O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmJ1LmMtMTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJidS5jOjExOnN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfdXNiX2luZm8gcnR3ODg1MmJfdXNiX2luZm8gPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJidS5jLTEyLVx0LnVzYl9ob3N0X3JlcXVlc3RfMlx0XHQ9IFJfQVhfVVNCX0hPU1RfUkVRVUVTVF8yLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmJ1LmM9NzY9c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIHJ0d184ODUyYnVfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmJ1LmMtNzgtXHQuaWRfdGFibGUgPSBydHdfODg1MmJ1X2lkX3RhYmxlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYnUuYzo3OTpcdC5wcm9iZSA9IHJ0dzg5X3VzYl9wcm9iZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmJ1LmM6ODA6XHQuZGlzY29ubmVjdCA9IHJ0dzg5X3VzYl9kaXNjb25uZWN0LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYnUuYy04MS19O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmN1LmMtMTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJjdS5jOjExOnN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfdXNiX2luZm8gcnR3ODg1MmNfdXNiX2luZm8gPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJjdS5jLTEyLVx0LnVzYl9ob3N0X3JlcXVlc3RfMlx0XHQ9IFJfQVhfVVNCX0hPU1RfUkVRVUVTVF8yX1YxLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmN1LmM9MTM2PXN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBydHdfODg1MmN1X2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJjdS5jLTEzOC1cdC5pZF90YWJsZSA9IHJ0d184ODUyY3VfaWRfdGFibGUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJjdS5jOjEzOTpcdC5wcm9iZSA9IHJ0dzg5X3VzYl9wcm9iZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmN1LmM6MTQwOlx0LmRpc2Nvbm5lY3QgPSBydHc4OV91c2JfZGlzY29ubmVjdCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmN1LmMtMTQxLX07XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyYXUuYy05LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyYXUuYzoxMDpzdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X3VzYl9pbmZvIHJ0dzg5MjJhX3VzYl9pbmZvID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyYXUuYy0xMS1cdC51c2JfaG9zdF9yZXF1ZXN0XzJcdFx0PSAwLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmF1LmM9Nzc9c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIHJ0d184OTIyYXVfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmF1LmMtNzktXHQuaWRfdGFibGUgPSBydHdfODkyMmF1X2lkX3RhYmxlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyYXUuYzo4MDpcdC5wcm9iZSA9IHJ0dzg5X3VzYl9wcm9iZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmF1LmM6ODE6XHQuZGlzY29ubmVjdCA9IHJ0dzg5X3VzYl9kaXNjb25uZWN0LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyYXUuYy04Mi19O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjEyOnN0YXRpYyB2b2lkIHJ0dzg5X3VzYl9yZWFkX3BvcnRfY29tcGxldGUoc3RydWN0IHVyYiAqdXJiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjE0OnN0YXRpYyB2b2lkIF9fcnR3ODlfdXNiX3ZlbmRvcnJlcShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHUzMiBhZGRyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xNS1cdFx0XHRcdCAgdm9pZCAqZGF0YSwgdTE2IGxlbiwgdTggcmVxdHlwZSwgYm9vbCB3YXJuKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xNi17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjE3Olx0c3RydWN0IHJ0dzg5X3VzYiAqcnR3dXNiID0gcnR3ODlfdXNiX3ByaXYocnR3ZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTgtXHRzdHJ1Y3QgdXNiX2RldmljZSAqdWRldiA9IHJ0d3VzYi1cdTAwM2V1ZGV2O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNzEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjcyOnN0YXRpYyB2b2lkIHJ0dzg5X3VzYl92ZW5kb3JyZXEoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1MzIgYWRkcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNzMtXHRcdFx0XHR2b2lkICpkYXRhLCB1MTYgbGVuLCB1OCByZXF0eXBlKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy03NC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjc1Olx0X19ydHc4OV91c2JfdmVuZG9ycmVxKHJ0d2RldiwgYWRkciwgZGF0YSwgbGVuLCByZXF0eXBlLCB0cnVlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNzYtfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy03Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6Nzg6c3RhdGljIHUzMiBydHc4OV91c2JfcmVhZF9jbWFjKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTMyIGFkZHIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTc5LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTg3LVx0Zm9yIChjb3VudCA9IDA7IDsgY291bnQmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjg4Olx0XHRydHc4OV91c2JfdmVuZG9ycmVxKHJ0d2RldiwgYWRkcjMyLCBcdTAwMjZkYXRhLCA0LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy04OS1cdFx0XHRcdCAgICBSVFc4OV9VU0JfVkVOUVRfUkVBRCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xMDctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjEwODpzdGF0aWMgdTggcnR3ODlfdXNiX29wc19yZWFkOChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHUzMiBhZGRyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xMDkte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTEyLVx0aWYgKEFDQ0VTU19DTUFDKGFkZHIpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzoxMTM6XHRcdHJldHVybiBydHc4OV91c2JfcmVhZF9jbWFjKHJ0d2RldiwgYWRkcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTExNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6MTE1Olx0cnR3ODlfdXNiX3ZlbmRvcnJlcShydHdkZXYsIGFkZHIsIFx1MDAyNmRhdGEsIDEsIFJUVzg5X1VTQl9WRU5RVF9SRUFEKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTE2LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTE5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzoxMjA6c3RhdGljIHUxNiBydHc4OV91c2Jfb3BzX3JlYWQxNihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHUzMiBhZGRyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xMjEte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTI0LVx0aWYgKEFDQ0VTU19DTUFDKGFkZHIpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzoxMjU6XHRcdHJldHVybiBydHc4OV91c2JfcmVhZF9jbWFjKHJ0d2RldiwgYWRkcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTEyNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6MTI3Olx0cnR3ODlfdXNiX3ZlbmRvcnJlcShydHdkZXYsIGFkZHIsIFx1MDAyNmRhdGEsIDIsIFJUVzg5X1VTQl9WRU5RVF9SRUFEKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTI4LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTMxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzoxMzI6c3RhdGljIHUzMiBydHc4OV91c2Jfb3BzX3JlYWQzMihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHUzMiBhZGRyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xMzMte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTM2LVx0aWYgKEFDQ0VTU19DTUFDKGFkZHIpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzoxMzc6XHRcdHJldHVybiBydHc4OV91c2JfcmVhZF9jbWFjKHJ0d2RldiwgYWRkcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTEzOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6MTM5Olx0cnR3ODlfdXNiX3ZlbmRvcnJlcShydHdkZXYsIGFkZHIsIFx1MDAyNmRhdGEsIDQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTE0MC1cdFx0XHQgICAgUlRXODlfVVNCX1ZFTlFUX1JFQUQpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTQ0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzoxNDU6c3RhdGljIHZvaWQgcnR3ODlfdXNiX29wc193cml0ZTgoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1MzIgYWRkciwgdTggdmFsKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xNDYte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTQ4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzoxNDk6XHRydHc4OV91c2JfdmVuZG9ycmVxKHJ0d2RldiwgYWRkciwgXHUwMDI2ZGF0YSwgMSwgUlRXODlfVVNCX1ZFTlFUX1dSSVRFKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTUwLX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTUxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzoxNTI6c3RhdGljIHZvaWQgcnR3ODlfdXNiX29wc193cml0ZTE2KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTMyIGFkZHIsIHUxNiB2YWwpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTE1My17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xNTUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjE1NjpcdHJ0dzg5X3VzYl92ZW5kb3JyZXEocnR3ZGV2LCBhZGRyLCBcdTAwMjZkYXRhLCAyLCBSVFc4OV9VU0JfVkVOUVRfV1JJVEUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xNTctfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xNTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjE1OTpzdGF0aWMgdm9pZCBydHc4OV91c2Jfb3BzX3dyaXRlMzIoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1MzIgYWRkciwgdTMyIHZhbClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTYwLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTE2Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6MTYzOlx0cnR3ODlfdXNiX3ZlbmRvcnJlcShydHdkZXYsIGFkZHIsIFx1MDAyNmRhdGEsIDQsIFJUVzg5X1VTQl9WRU5RVF9XUklURSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTE2NC19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTE2NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6MTY2OnN0YXRpYyB2b2lkIHJ0dzg5X3VzYl93cml0ZTMyX3F1aWV0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTMyIGFkZHIsIHUzMiB2YWwpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTE2Ny17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xNjktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjE3MDpcdF9fcnR3ODlfdXNiX3ZlbmRvcnJlcShydHdkZXYsIGFkZHIsIFx1MDAyNmRhdGEsIDQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTE3MS1cdFx0XHQgICAgICBSVFc4OV9VU0JfVkVOUVRfV1JJVEUsIGZhbHNlKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jPTE3ND1zdGF0aWMgdTMyXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjE3NTpydHc4OV91c2Jfb3BzX2NoZWNrX2FuZF9yZWNsYWltX3R4X3Jlc291cmNlKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTc2LVx0XHRcdFx0XHQgICAgdTggdHhjaClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTc3LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6MTc4Olx0c3RydWN0IHJ0dzg5X3VzYiAqcnR3dXNiID0gcnR3ODlfdXNiX3ByaXYocnR3ZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTc5LVx0aW50IGluZmxpZ2h0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTkwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzoxOTE6c3RhdGljIHZvaWQgcnR3ODlfdXNiX3dyaXRlX3BvcnRfY29tcGxldGUoc3RydWN0IHVyYiAqdXJiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xOTIte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzoxOTM6XHRzdHJ1Y3QgcnR3ODlfdXNiX3R4X2N0cmxfYmxvY2sgKnR4Y2IgPSB1cmItXHUwMDNlY29udGV4dDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTk0LVx0c3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2ID0gdHhjYi1cdTAwM2VydHdkZXY7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjE5NTpcdHN0cnVjdCBydHc4OV91c2IgKnJ0d3VzYiA9IHJ0dzg5X3VzYl9wcml2KHJ0d2Rldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTE5Ni1cdHN0cnVjdCBpZWVlODAyMTFfdHhfaW5mbyAqaW5mbztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTI1OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6MjU5OnN0YXRpYyBpbnQgcnR3ODlfdXNiX3dyaXRlX3BvcnQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCBjaF9kbWEsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTI2MC1cdFx0XHRcdHZvaWQgKmRhdGEsIGludCBsZW4sIHZvaWQgKmNvbnRleHQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTI2MS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjI2MjpcdHN0cnVjdCBydHc4OV91c2IgKnJ0d3VzYiA9IHJ0dzg5X3VzYl9wcml2KHJ0d2Rldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjI2MzpcdGNvbnN0IHN0cnVjdCBydHc4OV91c2JfaW5mbyAqaW5mbyA9IHJ0d3VzYi1cdTAwM2VpbmZvO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0yNjQtXHRzdHJ1Y3QgdXNiX2RldmljZSAqdXNiZCA9IHJ0d3VzYi1cdTAwM2V1ZGV2O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMjc5LVx0dXNiX2ZpbGxfYnVsa191cmIodXJiLCB1c2JkLCBwaXBlLCBkYXRhLCBsZW4sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjI4MDpcdFx0XHQgIHJ0dzg5X3VzYl93cml0ZV9wb3J0X2NvbXBsZXRlLCBjb250ZXh0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMjgxLVx0dXJiLVx1MDAzZXRyYW5zZmVyX2ZsYWdzIHw9IFVSQl9aRVJPX1BBQ0tFVDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTI5OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6MzAwOnN0YXRpYyB2b2lkIHJ0dzg5X3VzYl90eF9mcmVlX3NrYihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IHR4Y2gsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTMwMS1cdFx0XHRcdCAgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTMwOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6MzA5OnN0YXRpYyB2b2lkIHJ0dzg5X3VzYl9vcHNfdHhfa2lja19vZmYoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCB0eGNoKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0zMTAte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzozMTE6XHRzdHJ1Y3QgcnR3ODlfdXNiICpydHd1c2IgPSBydHc4OV91c2JfcHJpdihydHdkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzozMTI6XHRzdHJ1Y3QgcnR3ODlfdXNiX3R4X2N0cmxfYmxvY2sgKnR4Y2I7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTMxMy1cdHN0cnVjdCBza19idWZmICpza2I7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0zMjItXHRcdGlmICghdHhjYikge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzozMjM6XHRcdFx0cnR3ODlfdXNiX3R4X2ZyZWVfc2tiKHJ0d2RldiwgdHhjaCwgc2tiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMzI0LVx0XHRcdGNvbnRpbnVlO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMzM0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzozMzU6XHRcdHJldCA9IHJ0dzg5X3VzYl93cml0ZV9wb3J0KHJ0d2RldiwgdHhjaCwgc2tiLVx1MDAzZWRhdGEsIHNrYi1cdTAwM2VsZW4sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTMzNi1cdFx0XHRcdFx0ICAgdHhjYik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0zNDUtXHRcdFx0a2ZyZWUodHhjYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjM0NjpcdFx0XHRydHc4OV91c2JfdHhfZnJlZV9za2IocnR3ZGV2LCB0eGNoLCBza2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0zNDctXHRcdH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTM1MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6MzUxOnN0YXRpYyBpbnQgcnR3ODlfdXNiX3R4X3dyaXRlX2Z3Y21kKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMzUyLVx0XHRcdFx0ICAgIHN0cnVjdCBydHc4OV9jb3JlX3R4X3JlcXVlc3QgKnR4X3JlcSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTM1NC1cdHN0cnVjdCBydHc4OV90eF9kZXNjX2luZm8gKmRlc2NfaW5mbyA9IFx1MDAyNnR4X3JlcS1cdTAwM2VkZXNjX2luZm87XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjM1NTpcdHN0cnVjdCBydHc4OV91c2IgKnJ0d3VzYiA9IHJ0dzg5X3VzYl9wcml2KHJ0d2Rldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTM1Ni1cdHN0cnVjdCBza19idWZmICpza2IgPSB0eF9yZXEtXHUwMDNlc2tiO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMzkyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzozOTM6c3RhdGljIGludCBydHc4OV91c2Jfb3BzX3R4X3dyaXRlKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMzk0LVx0XHRcdFx0ICBzdHJ1Y3QgcnR3ODlfY29yZV90eF9yZXF1ZXN0ICp0eF9yZXEpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0zOTYtXHRzdHJ1Y3QgcnR3ODlfdHhfZGVzY19pbmZvICpkZXNjX2luZm8gPSBcdTAwMjZ0eF9yZXEtXHUwMDNlZGVzY19pbmZvO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzozOTc6XHRzdHJ1Y3QgcnR3ODlfdXNiICpydHd1c2IgPSBydHc4OV91c2JfcHJpdihydHdkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0zOTgtXHRzdHJ1Y3QgcnR3ODlfdHhfc2tiX2RhdGEgKnNrYl9kYXRhO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNDEyLVx0aWYgKGRlc2NfaW5mby1cdTAwM2VjaF9kbWEgPT0gUlRXODlfVFhDSF9DSDEyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo0MTM6XHRcdHJldHVybiBydHc4OV91c2JfdHhfd3JpdGVfZndjbWQocnR3ZGV2LCB0eF9yZXEpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy00MTQtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy00MzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjQzNjpzdGF0aWMgdm9pZCBydHc4OV91c2JfcnhfaGFuZGxlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTQzNy17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjQzODpcdHN0cnVjdCBydHc4OV91c2IgKnJ0d3VzYiA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgcnR3ODlfdXNiLCByeF93b3JrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6NDM5Olx0Y29uc3Qgc3RydWN0IHJ0dzg5X3VzYl9pbmZvICppbmZvID0gcnR3dXNiLVx1MDAzZWluZm87XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTQ0MC1cdHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiA9IHJ0d3VzYi1cdTAwM2VydHdkZXY7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy01MDYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjUwNzpzdGF0aWMgdm9pZCBydHc4OV91c2JfcnhfcmVzdWJtaXQoc3RydWN0IHJ0dzg5X3VzYiAqcnR3dXNiLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo1MDg6XHRcdFx0XHQgIHN0cnVjdCBydHc4OV91c2JfcnhfY3RybF9ibG9jayAqcnhjYixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNTA5LVx0XHRcdFx0ICBnZnBfdCBnZnApXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy01MjktXHRcdFx0ICByeGNiLVx1MDAzZXJ4X3NrYi1cdTAwM2VkYXRhLCBSVFc4OV9VU0JfUkVDVkJVRl9TWixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6NTMwOlx0XHRcdCAgcnR3ODlfdXNiX3JlYWRfcG9ydF9jb21wbGV0ZSwgcnhjYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTUzMS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTU1MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6NTUyOnN0YXRpYyB2b2lkIHJ0dzg5X3VzYl9yeF9yZXN1Ym1pdF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNTUzLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6NTU0Olx0c3RydWN0IHJ0dzg5X3VzYiAqcnR3dXNiID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBydHc4OV91c2IsIHJ4X3VyYl93b3JrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6NTU1Olx0c3RydWN0IHJ0dzg5X3VzYl9yeF9jdHJsX2Jsb2NrICpyeGNiO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy01NTYtXHRpbnQgaTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTU2MS1cdFx0aWYgKCFyeGNiLVx1MDAzZXJ4X3NrYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6NTYyOlx0XHRcdHJ0dzg5X3VzYl9yeF9yZXN1Ym1pdChydHd1c2IsIHJ4Y2IsIEdGUF9BVE9NSUMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy01NjMtXHR9XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy01NjUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjU2NjpzdGF0aWMgdm9pZCBydHc4OV91c2JfcmVhZF9wb3J0X2NvbXBsZXRlKHN0cnVjdCB1cmIgKnVyYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNTY3LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6NTY4Olx0c3RydWN0IHJ0dzg5X3VzYl9yeF9jdHJsX2Jsb2NrICpyeGNiID0gdXJiLVx1MDAzZWNvbnRleHQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTU2OS1cdHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiA9IHJ4Y2ItXHUwMDNlcnR3ZGV2O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo1NzA6XHRzdHJ1Y3QgcnR3ODlfdXNiICpydHd1c2IgPSBydHc4OV91c2JfcHJpdihydHdkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy01NzEtXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiID0gcnhjYi1cdTAwM2VyeF9za2I7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy01ODQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjU4NTpcdFx0cnR3ODlfdXNiX3J4X3Jlc3VibWl0KHJ0d3VzYiwgcnhjYiwgR0ZQX0FUT01JQyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTU4Ni1cdH0gZWxzZSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy02MTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjYxNzpzdGF0aWMgdm9pZCBydHc4OV91c2JfY2FuY2VsX3J4X2J1ZnMoc3RydWN0IHJ0dzg5X3VzYiAqcnR3dXNiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy02MTgte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo2MTk6XHRzdHJ1Y3QgcnR3ODlfdXNiX3J4X2N0cmxfYmxvY2sgKnJ4Y2I7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTYyMC1cdGludCBpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNjI3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo2Mjg6c3RhdGljIHZvaWQgcnR3ODlfdXNiX2NhbmNlbF90eF9idWZzKHN0cnVjdCBydHc4OV91c2IgKnJ0d3VzYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNjI5LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTYzMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6NjMzOnN0YXRpYyB2b2lkIHJ0dzg5X3VzYl9mcmVlX3J4X2J1ZnMoc3RydWN0IHJ0dzg5X3VzYiAqcnR3dXNiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy02MzQte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo2MzU6XHRzdHJ1Y3QgcnR3ODlfdXNiX3J4X2N0cmxfYmxvY2sgKnJ4Y2I7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTYzNi1cdGludCBpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNjQzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo2NDQ6c3RhdGljIGludCBydHc4OV91c2JfYWxsb2NfcnhfYnVmcyhzdHJ1Y3QgcnR3ODlfdXNiICpydHd1c2IpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTY0NS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjY0NjpcdHN0cnVjdCBydHc4OV91c2JfcnhfY3RybF9ibG9jayAqcnhjYjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNjQ3LVx0aW50IGk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy02NTQtXHRcdGlmICghcnhjYi1cdTAwM2VyeF91cmIpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6NjU1Olx0XHRcdHJ0dzg5X3VzYl9mcmVlX3J4X2J1ZnMocnR3dXNiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNjU2LVx0XHRcdHJldHVybiAtRU5PTUVNO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNjYyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo2NjM6c3RhdGljIGludCBydHc4OV91c2JfaW5pdF9yeChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTY2NC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjY2NTpcdHN0cnVjdCBydHc4OV91c2IgKnJ0d3VzYiA9IHJ0dzg5X3VzYl9wcml2KHJ0d2Rldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTY2Ni1cdHN0cnVjdCBza19idWZmICpyeF9za2I7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy02NjgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjY2OTpcdHJ0d3VzYi1cdTAwM2VyeHdxID0gYWxsb2Nfd29ya3F1ZXVlKFwmIzM0O3J0dzg5X3VzYjogcnggd3FcJiMzNDssIFdRX0JIIHwgV1FfUEVSQ1BVLCAwKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNjcwLVx0aWYgKCFydHd1c2ItXHUwMDNlcnh3cSkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNjc3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo2Nzg6XHRJTklUX1dPUksoXHUwMDI2cnR3dXNiLVx1MDAzZXJ4X3dvcmssIHJ0dzg5X3VzYl9yeF9oYW5kbGVyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6Njc5Olx0SU5JVF9XT1JLKFx1MDAyNnJ0d3VzYi1cdTAwM2VyeF91cmJfd29yaywgcnR3ODlfdXNiX3J4X3Jlc3VibWl0X3dvcmspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy02ODAtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy02ODktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjY5MDpzdGF0aWMgdm9pZCBydHc4OV91c2JfZGVpbml0X3J4KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNjkxLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6NjkyOlx0c3RydWN0IHJ0dzg5X3VzYiAqcnR3dXNiID0gcnR3ODlfdXNiX3ByaXYocnR3ZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNjkzLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNzAwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo3MDE6c3RhdGljIHZvaWQgcnR3ODlfdXNiX3N0YXJ0X3J4KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNzAyLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6NzAzOlx0c3RydWN0IHJ0dzg5X3VzYiAqcnR3dXNiID0gcnR3ODlfdXNiX3ByaXYocnR3ZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNzA0LVx0aW50IGk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy03MDYtXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBSVFc4OV9VU0JfUlhDQl9OVU07IGkmIzQzOyYjNDM7KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo3MDc6XHRcdHJ0dzg5X3VzYl9yeF9yZXN1Ym1pdChydHd1c2IsIFx1MDAyNnJ0d3VzYi1cdTAwM2VyeF9jYltpXSwgR0ZQX0tFUk5FTCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTcwOC19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTcwOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6NzEwOnN0YXRpYyB2b2lkIHJ0dzg5X3VzYl9pbml0X3R4KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNzExLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6NzEyOlx0c3RydWN0IHJ0dzg5X3VzYiAqcnR3dXNiID0gcnR3ODlfdXNiX3ByaXYocnR3ZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNzEzLVx0aW50IGk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy03MjAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjcyMTpzdGF0aWMgdm9pZCBydHc4OV91c2JfZGVpbml0X3R4KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNzIyLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6NzIzOlx0c3RydWN0IHJ0dzg5X3VzYiAqcnR3dXNiID0gcnR3ODlfdXNiX3ByaXYocnR3ZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNzI0LVx0aW50IGk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy03MzMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjczNDpzdGF0aWMgdm9pZCBydHc4OV91c2Jfb3BzX3Jlc2V0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNzM1LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6NzM2Olx0c3RydWN0IHJ0dzg5X3VzYiAqcnR3dXNiID0gcnR3ODlfdXNiX3ByaXYocnR3ZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNzM3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo3Mzg6XHRydHc4OV91c2JfY2FuY2VsX3R4X2J1ZnMocnR3dXNiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNzM5LVx0cnR3ODlfdHhfcnB0X3NrYnNfcHVyZ2UocnR3ZGV2KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTc0MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6NzQyOnN0YXRpYyBpbnQgcnR3ODlfdXNiX29wc19zdGFydChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTc0My17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy03NDYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjc0NzpzdGF0aWMgdm9pZCBydHc4OV91c2Jfb3BzX3N0b3Aoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy03NDgte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNzUxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo3NTI6c3RhdGljIHZvaWQgcnR3ODlfdXNiX29wc19wYXVzZShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGJvb2wgcGF1c2UpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTc1My17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy03NTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjc1NzpzdGF0aWMgdm9pZCBydHc4OV91c2Jfb3BzX3N3aXRjaF9tb2RlKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgYm9vbCBsb3dfcG93ZXIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTc1OC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy03NjEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjc2MjpzdGF0aWMgaW50IHJ0dzg5X3VzYl9vcHNfZGVpbml0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNzYzLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTc2Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6NzY3OnN0YXRpYyBpbnQgcnR3ODlfdXNiX29wc19tYWNfcHJlX2luaXQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy03Njgte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo3Njk6XHRzdHJ1Y3QgcnR3ODlfdXNiICpydHd1c2IgPSBydHc4OV91c2JfcHJpdihydHdkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo3NzA6XHRjb25zdCBzdHJ1Y3QgcnR3ODlfdXNiX2luZm8gKmluZm8gPSBydHd1c2ItXHUwMDNlaW5mbztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNzcxLVx0dTMyIHZhbDMyO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNzkzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo3OTQ6c3RhdGljIGludCBydHc4OV91c2Jfb3BzX21hY19wcmVfZGVpbml0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNzk1LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTc5OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6Nzk5OnN0YXRpYyB2b2lkIHJ0dzg5X3VzYl9yeF9hZ2dfY2ZnX3YxKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtODAwLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTgwOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6ODA5OnN0YXRpYyB2b2lkIHJ0dzg5X3VzYl9yeF9hZ2dfY2ZnX3YyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtODEwLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTgxOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6ODIwOnN0YXRpYyB2b2lkIHJ0dzg5X3VzYl9yeF9hZ2dfY2ZnX3YzKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtODIxLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTgzMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6ODMxOnN0YXRpYyB2b2lkIHJ0dzg5X3VzYl9yeF9hZ2dfY2ZnKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtODMyLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTgzNi1cdGNhc2UgUlRMODg1MkI6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjgzNzpcdFx0cnR3ODlfdXNiX3J4X2FnZ19jZmdfdjEocnR3ZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtODM4LVx0XHRicmVhaztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtODM5LVx0Y2FzZSBSVEw4ODUyQzpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6ODQwOlx0XHRydHc4OV91c2JfcnhfYWdnX2NmZ192MihydHdkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy04NDEtXHRcdGJyZWFrO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy04NDItXHRjYXNlIFJUTDg5MjJBOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo4NDM6XHRcdHJ0dzg5X3VzYl9yeF9hZ2dfY2ZnX3YzKHJ0d2Rldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTg0NC1cdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy04NTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjg1MTpzdGF0aWMgaW50IHJ0dzg5X3VzYl9vcHNfbWFjX3Bvc3RfaW5pdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTg1Mi17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjg1MzpcdHN0cnVjdCBydHc4OV91c2IgKnJ0d3VzYiA9IHJ0dzg5X3VzYl9wcml2KHJ0d2Rldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjg1NDpcdGNvbnN0IHN0cnVjdCBydHc4OV91c2JfaW5mbyAqaW5mbyA9IHJ0d3VzYi1cdTAwM2VpbmZvO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy04NTUtXHRlbnVtIHVzYl9kZXZpY2Vfc3BlZWQgc3BlZWQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy04ODItcnhfYWdnX2NmZzpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6ODgzOlx0cnR3ODlfdXNiX3J4X2FnZ19jZmcocnR3ZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtODg0LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtODg3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo4ODg6c3RhdGljIHZvaWQgcnR3ODlfdXNiX29wc19yZWNhbGNfaW50X21pdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTg4OS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy04OTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjg5MzpzdGF0aWMgaW50IHJ0dzg5X3VzYl9vcHNfbWFjX2x2MV9yY3Z5KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtODk0LVx0XHRcdFx0ICAgICAgZW51bSBydHc4OV9sdjFfcmN2eV9zdGVwIHN0ZXApXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy05MzMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjkzNDpzdGF0aWMgdm9pZCBydHc4OV91c2Jfb3BzX2R1bXBfZXJyX3N0YXR1cyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTkzNS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy05MzgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjkzOTpzdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X2hjaV9vcHMgcnR3ODlfdXNiX29wcyA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6OTQwOlx0LnR4X3dyaXRlXHQ9IHJ0dzg5X3VzYl9vcHNfdHhfd3JpdGUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjk0MTpcdC50eF9raWNrX29mZlx0PSBydHc4OV91c2Jfb3BzX3R4X2tpY2tfb2ZmLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy05NDItXHQuZmx1c2hfcXVldWVzXHQ9IE5VTEwsIC8qIE5vdCBuZWVkZWQ/ICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjk0MzpcdC5yZXNldFx0XHQ9IHJ0dzg5X3VzYl9vcHNfcmVzZXQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjk0NDpcdC5zdGFydFx0XHQ9IHJ0dzg5X3VzYl9vcHNfc3RhcnQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjk0NTpcdC5zdG9wXHRcdD0gcnR3ODlfdXNiX29wc19zdG9wLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo5NDY6XHQucGF1c2VcdFx0PSBydHc4OV91c2Jfb3BzX3BhdXNlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo5NDc6XHQuc3dpdGNoX21vZGVcdD0gcnR3ODlfdXNiX29wc19zd2l0Y2hfbW9kZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6OTQ4Olx0LnJlY2FsY19pbnRfbWl0ID0gcnR3ODlfdXNiX29wc19yZWNhbGNfaW50X21pdCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtOTQ5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo5NTA6XHQucmVhZDhcdFx0PSBydHc4OV91c2Jfb3BzX3JlYWQ4LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo5NTE6XHQucmVhZDE2XHRcdD0gcnR3ODlfdXNiX29wc19yZWFkMTYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjk1MjpcdC5yZWFkMzJcdFx0PSBydHc4OV91c2Jfb3BzX3JlYWQzMixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6OTUzOlx0LndyaXRlOFx0XHQ9IHJ0dzg5X3VzYl9vcHNfd3JpdGU4LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo5NTQ6XHQud3JpdGUxNlx0PSBydHc4OV91c2Jfb3BzX3dyaXRlMTYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjk1NTpcdC53cml0ZTMyXHQ9IHJ0dzg5X3VzYl9vcHNfd3JpdGUzMixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtOTU2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo5NTc6XHQubWFjX3ByZV9pbml0XHQ9IHJ0dzg5X3VzYl9vcHNfbWFjX3ByZV9pbml0LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo5NTg6XHQubWFjX3ByZV9kZWluaXRcdD0gcnR3ODlfdXNiX29wc19tYWNfcHJlX2RlaW5pdCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6OTU5Olx0Lm1hY19wb3N0X2luaXRcdD0gcnR3ODlfdXNiX29wc19tYWNfcG9zdF9pbml0LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo5NjA6XHQuZGVpbml0XHRcdD0gcnR3ODlfdXNiX29wc19kZWluaXQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTk2MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6OTYyOlx0LmNoZWNrX2FuZF9yZWNsYWltX3R4X3Jlc291cmNlID0gcnR3ODlfdXNiX29wc19jaGVja19hbmRfcmVjbGFpbV90eF9yZXNvdXJjZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6OTYzOlx0Lm1hY19sdjFfcmN2eVx0PSBydHc4OV91c2Jfb3BzX21hY19sdjFfcmN2eSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6OTY0Olx0LmR1bXBfZXJyX3N0YXR1cyA9IHJ0dzg5X3VzYl9vcHNfZHVtcF9lcnJfc3RhdHVzLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy05NjUtXHQubmFwaV9wb2xsXHQ9IE5VTEwsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy05ODEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjk4MjpzdGF0aWMgaW50IHJ0dzg5X3VzYl9wYXJzZShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTk4My1cdFx0XHQgICBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50Zilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTk4Ni1cdHN0cnVjdCB1c2JfaW50ZXJmYWNlX2Rlc2NyaXB0b3IgKmludGZfZGVzYyA9IFx1MDAyNmhvc3RfaW50ZXJmYWNlLVx1MDAzZWRlc2M7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjk4NzpcdHN0cnVjdCBydHc4OV91c2IgKnJ0d3VzYiA9IHJ0dzg5X3VzYl9wcml2KHJ0d2Rldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTk4OC1cdHN0cnVjdCB1c2JfZW5kcG9pbnRfZGVzY3JpcHRvciAqZW5kcG9pbnQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xMDQxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzoxMDQyOnN0YXRpYyBpbnQgcnR3ODlfdXNiX2ludGZfaW5pdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTEwNDMtXHRcdFx0ICAgICAgIHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xMDQ0LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6MTA0NTpcdHN0cnVjdCBydHc4OV91c2IgKnJ0d3VzYiA9IHJ0dzg5X3VzYl9wcml2KHJ0d2Rldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTEwNDYtXHRpbnQgcmV0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTA0OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6MTA1MDpcdHJldCA9IHJ0dzg5X3VzYl9wYXJzZShydHdkZXYsIGludGYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xMDUxLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTEwNjYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjEwNjc6c3RhdGljIHZvaWQgcnR3ODlfdXNiX2ludGZfZGVpbml0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTA2OC1cdFx0XHRcdCAgc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTEwNjkte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzoxMDcwOlx0c3RydWN0IHJ0dzg5X3VzYiAqcnR3dXNiID0gcnR3ODlfdXNiX3ByaXYocnR3ZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTA3MS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTEwNzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjEwNzY6c3RhdGljIGludCBydHc4OV91c2Jfc3dpdGNoX21vZGVfYXgoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xMDc3LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTEwODMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjEwODQ6XHRwYWRfY3RybDIgPSBydHc4OV91c2Jfb3BzX3JlYWQzMihydHdkZXYsIFJfQVhfUEFEX0NUUkwyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTA4NS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTExMDItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjExMDM6XHRydHc4OV91c2Jfd3JpdGUzMl9xdWlldChydHdkZXYsIFJfQVhfUEFEX0NUUkwyLCBwYWRfY3RybDIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xMTA0LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTEwNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6MTEwODpzdGF0aWMgaW50IHJ0dzg5X3VzYl9zd2l0Y2hfbW9kZV9iZShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTExMDkte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTExMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6MTExMjpcdHBhZF9jdHJsMiA9IHJ0dzg5X3VzYl9vcHNfcmVhZDMyKHJ0d2RldiwgUl9CRV9QQURfQ1RSTDIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xMTEzLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTEzMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6MTEzMjpcdHJ0dzg5X3VzYl93cml0ZTMyX3F1aWV0KHJ0d2RldiwgUl9CRV9QQURfQ1RSTDIsIHBhZF9jdHJsMik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTExMzMtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xMTM2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzoxMTM3OnN0YXRpYyBpbnQgcnR3ODlfdXNiX3N3aXRjaF9tb2RlKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTEzOC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjExMzk6XHRzdHJ1Y3QgcnR3ODlfdXNiICpydHd1c2IgPSBydHc4OV91c2JfcHJpdihydHdkZXYpO1xuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDIxOjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3MjIwCgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogNDYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhpbmtpbmcgcHJvY2VzczoKCioqRGl2aW5nIGludG8gdGhlIGBydHc4OV91c2JfcHJvYmVgIEZ1bmN0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gc3RhcnRpbmcgYnkgbG9va2luZyBhdCBgcnR3ODlfdXNiX3Byb2JlYCwgd2hpY2ggaXMgaW4gdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jYCBmaWxlLiBHaXZlbiBteSBleHBlcnRpc2UsIEkga25vdyB0aGlzIGlzIHRoZSBlbnRyeSBwb2ludCBmb3IgcHJvYmluZyB0aGUgUmVhbHRlayBydHc4OSB3aXJlbGVzcyBVU0IgZGV2aWNlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGhhcHBlbnMgZHVyaW5nIHRoZSBkZXZpY2UgaW5pdGlhbGl6YXRpb24gYW5kIGNvbm5lY3Rpb24gcHJvY2Vzcy4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gcmVhZCB0aGUgc3Vycm91bmRpbmcgY29kZSwgZXNwZWNpYWxseSBhcm91bmQgdGhpcyBgcHJvYmVgIGZ1bmN0aW9uLiBJIHdhbnQgdG8gdHJhY2UgdGhlIGZsb3cgb2YgZXhlY3V0aW9uIGZyb20gdGhlIG1vbWVudCB0aGUgVVNCIGRldmljZSBpcyBwbHVnZ2VkIGluIHRvIHNlZSBob3cgaXQgaXMgaWRlbnRpZmllZCwgaW5pdGlhbGlzZWQgYW5kIHJlZ2lzdGVyZWQgd2l0aCB0aGUgc3lzdGVtLiBJJiMzOTttIGdvaW5nIHRvIGxvb2sgZm9yIHJlbGF0ZWQgZnVuY3Rpb25zIHRoYXQgZ2V0IGNhbGxlZCB3aXRoaW4gYHByb2JlYCB0byBnZXQgYSBzZW5zZSBvZiB0aGUgcHJvY2Vzcy4gSSYjMzk7bGwgYmUgcGFydGljdWxhcmx5IGludGVyZXN0ZWQgaW4gaG93IHJlc291cmNlcyBhcmUgYWxsb2NhdGVkIGFuZCBpbml0aWFsaXNlZCwgYW5kIGFueSBlcnJvciBoYW5kbGluZyB0aGF0IGlzIGltcGxlbWVudGVkLiBJJiMzOTtsbCBuZWVkIHRvIHBheSBjbG9zZSBhdHRlbnRpb24gdG8gdGhlIGRyaXZlciYjMzk7cyBpbnRlcmFjdGlvbiB3aXRoIHRoZSBVU0IgY29yZSwgYW5kIHdoYXQmIzM5O3MgYmVpbmcgZG9uZSB0byBnZXQgdGhpcyBkZXZpY2Ugd29ya2luZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMjE6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cnR3ODlfdXNiX3Byb2JlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTFidS5jPTYyPXN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBydHdfODg1MWJ1X2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTFidS5jLTY0LVx0LmlkX3RhYmxlID0gcnR3Xzg4NTFidV9pZF90YWJsZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MWJ1LmM6NjU6XHQucHJvYmUgPSBydHc4OV91c2JfcHJvYmUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTFidS5jLTY2LVx0LmRpc2Nvbm5lY3QgPSBydHc4OV91c2JfZGlzY29ubmVjdCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJhdS5jPTc2PXN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBydHdfODg1MmF1X2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJhdS5jLTc4LVx0LmlkX3RhYmxlID0gcnR3Xzg4NTJhdV9pZF90YWJsZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmF1LmM6Nzk6XHQucHJvYmUgPSBydHc4OV91c2JfcHJvYmUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJhdS5jLTgwLVx0LmRpc2Nvbm5lY3QgPSBydHc4OV91c2JfZGlzY29ubmVjdCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJidS5jPTc2PXN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBydHdfODg1MmJ1X2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJidS5jLTc4LVx0LmlkX3RhYmxlID0gcnR3Xzg4NTJidV9pZF90YWJsZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmJ1LmM6Nzk6XHQucHJvYmUgPSBydHc4OV91c2JfcHJvYmUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJidS5jLTgwLVx0LmRpc2Nvbm5lY3QgPSBydHc4OV91c2JfZGlzY29ubmVjdCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJjdS5jPTEzNj1zdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgcnR3Xzg4NTJjdV9kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyY3UuYy0xMzgtXHQuaWRfdGFibGUgPSBydHdfODg1MmN1X2lkX3RhYmxlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyY3UuYzoxMzk6XHQucHJvYmUgPSBydHc4OV91c2JfcHJvYmUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJjdS5jLTE0MC1cdC5kaXNjb25uZWN0ID0gcnR3ODlfdXNiX2Rpc2Nvbm5lY3QsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyYXUuYz03Nz1zdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgcnR3Xzg5MjJhdV9kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyYXUuYy03OS1cdC5pZF90YWJsZSA9IHJ0d184OTIyYXVfaWRfdGFibGUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJhdS5jOjgwOlx0LnByb2JlID0gcnR3ODlfdXNiX3Byb2JlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyYXUuYy04MS1cdC5kaXNjb25uZWN0ID0gcnR3ODlfdXNiX2Rpc2Nvbm5lY3QsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYz0xMjAxPV9fQVRUUklCVVRFX0dST1VQUyhydHc4OV91c2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xMjAyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzoxMjAzOmludCBydHc4OV91c2JfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTEyMDQtXHRcdCAgICBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqaWQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xMjk0LX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6MTI5NTpFWFBPUlRfU1lNQk9MKHJ0dzg5X3VzYl9wcm9iZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTEyOTYtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuaD05Mj1zdGF0aWMgaW5saW5lIHN0cnVjdCBydHc4OV91c2IgKnJ0dzg5X3VzYl9wcml2KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5oLTk2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuaDo5NzppbnQgcnR3ODlfdXNiX3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuaC05OC1cdFx0ICAgIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDIxOjQxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI4ODMwCgkJCQkJCQlvdXRwdXQ6IDQ2CgkJCQkJCQl0aG91Z2h0czogMTE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgcnR3ODkgVVNCIFByb2JlKioKCk9rYXksIHNvIEkmIzM5O20gZGl2aW5nIGludG8gdGhpcyBgcnR3ODlgIGRyaXZlciwgd2hpY2ggaGFuZGxlcyBSZWFsdGVrIFdpLUZpIGNoaXBzIGFjcm9zcyBib3RoIFBDSSBhbmQgVVNCIGludGVyZmFjZXMuIE15IGdvYWwgaXMgdG8gdW5kZXJzdGFuZCB0aGUgVVNCIHByb2JpbmcgcHJvY2Vzcywgc3BlY2lmaWNhbGx5IHRoZSBmdW5jdGlvbiBgcnR3ODlfdXNiX3Byb2JlYC4gIExldCBtZSByZWZyZXNoIG15IG1lbW9yeTsgaXQgc3VwcG9ydHMgY2hpcHMgbGlrZSB0aGUgODg1MUIsIDg4NTJBLCBhbmQgdGhvc2Ugb3RoZXJzLiBJIG5lZWQgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiB3aGF0JiMzOTtzIGhhcHBlbmluZyB3aGVuIGEgVVNCIGRldmljZSBpcyBkZXRlY3RlZC4KClJpZ2h0LCBzbyBJIG5lZWQgdG8gbmF2aWdhdGUgdG8gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmNgIGFuZCB0YWtlIGEgbG9vayBhcm91bmQgbGluZSAxMjAzLiBMZXQmIzM5O3Mgc2VlIGhvdyB0aGUgZHJpdmVyIGhhbmRsZXMgaW5pdGlhbGl6YXRpb24gYW5kIGFueSByZWxldmFudCBoYXJkd2FyZSBpZGVudGlmaWNhdGlvbiBkdXJpbmcgdGhlIFVTQiBkZXZpY2UgcHJvYmUuIEkmIzM5O20gZXhwZWN0aW5nIHRvIGZpbmQgdGhlIGtleSBzdGVwcyBoZXJlOiBkZXZpY2Ugc2V0dXAsIHJlc291cmNlIGFsbG9jYXRpb24sIGFuZCwgb2YgY291cnNlLCB0aGUgYWN0dWFsIFdpLUZpIGNvbnRyb2xsZXIgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UuIExldCYjMzk7cyBkaWcgaW4gYW5kIGZpZ3VyZSBvdXQgdGhlIGV4YWN0IGZsb3cuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDIxOjQxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEyMDAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogODAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTIwMDpcdH07XG4xMjAxOlx0X19BVFRSSUJVVEVfR1JPVVBTKHJ0dzg5X3VzYik7XG4xMjAyOlx0XG4xMjAzOlx0aW50IHJ0dzg5X3VzYl9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZixcbjEyMDQ6XHRcdFx0ICAgIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZClcbjEyMDU6XHR7XG4xMjA2Olx0XHRjb25zdCBzdHJ1Y3QgcnR3ODlfZHJpdmVyX2luZm8gKmluZm87XG4xMjA3Olx0XHRzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXY7XG4xMjA4Olx0XHRzdHJ1Y3QgcnR3ODlfdXNiICpydHd1c2I7XG4xMjA5Olx0XHRpbnQgcmV0O1xuMTIxMDpcdFxuMTIxMTpcdFx0aW5mbyA9IChjb25zdCBzdHJ1Y3QgcnR3ODlfZHJpdmVyX2luZm8gKilpZC1cdTAwM2Vkcml2ZXJfaW5mbztcbjEyMTI6XHRcbjEyMTM6XHRcdHJ0d2RldiA9IHJ0dzg5X2FsbG9jX2llZWU4MDIxMV9odyhcdTAwMjZpbnRmLVx1MDAzZWRldixcbjEyMTQ6XHRcdFx0XHRcdFx0ICBzaXplb2Yoc3RydWN0IHJ0dzg5X3VzYiksIGluZm8pO1xuMTIxNTpcdFx0aWYgKCFydHdkZXYpIHtcbjEyMTY6XHRcdFx0ZGV2X2VycihcdTAwMjZpbnRmLVx1MDAzZWRldiwgXCYjMzQ7ZmFpbGVkIHRvIGFsbG9jYXRlIGh3XFxuXCYjMzQ7KTtcbjEyMTc6XHRcdFx0cmV0dXJuIC1FTk9NRU07XG4xMjE4Olx0XHR9XG4xMjE5Olx0XG4xMjIwOlx0XHRydHd1c2IgPSBydHc4OV91c2JfcHJpdihydHdkZXYpO1xuMTIyMTpcdFx0cnR3dXNiLVx1MDAzZXJ0d2RldiA9IHJ0d2RldjtcbjEyMjI6XHRcdHJ0d3VzYi1cdTAwM2VpbmZvID0gaW5mby1cdTAwM2VidXMudXNiO1xuMTIyMzpcdFxuMTIyNDpcdFx0cnR3ZGV2LVx1MDAzZWh3LVx1MDAzZXdpcGh5LVx1MDAzZWRldi5ncm91cHMgPSBydHc4OV91c2JfZ3JvdXBzO1xuMTIyNTpcdFxuMTIyNjpcdFx0cnR3ZGV2LVx1MDAzZWhjaS5vcHMgPSBcdTAwMjZydHc4OV91c2Jfb3BzO1xuMTIyNzpcdFx0cnR3ZGV2LVx1MDAzZWhjaS50eXBlID0gUlRXODlfSENJX1RZUEVfVVNCO1xuMTIyODpcdFx0cnR3ZGV2LVx1MDAzZWhjaS50eF9ycHRfZW5hYmxlZCA9IHRydWU7XG4xMjI5Olx0XG4xMjMwOlx0XHRyZXQgPSBydHc4OV91c2JfaW50Zl9pbml0KHJ0d2RldiwgaW50Zik7XG4xMjMxOlx0XHRpZiAocmV0KSB7XG4xMjMyOlx0XHRcdHJ0dzg5X2VycihydHdkZXYsIFwmIzM0O2ZhaWxlZCB0byBpbml0aWFsaXNlIGludGY6ICVkXFxuXCYjMzQ7LCByZXQpO1xuMTIzMzpcdFx0XHRnb3RvIGVycl9mcmVlX2h3O1xuMTIzNDpcdFx0fVxuMTIzNTpcdFxuMTIzNjpcdFx0cmV0ID0gcnR3ODlfdXNiX3N3aXRjaF9tb2RlKHJ0d2Rldik7XG4xMjM3Olx0XHRpZiAocmV0KSB7XG4xMjM4Olx0XHRcdC8qIE5vdCBhIGZhaWwsIGJ1dCB3ZSBkbyBuZWVkIHRvIHNraXAgcnR3ODlfY29yZV9yZWdpc3Rlci4gKi9cbjEyMzk6XHRcdFx0cmV0ID0gMDtcbjEyNDA6XHRcdFx0Z290byBlcnJfaW50Zl9kZWluaXQ7XG4xMjQxOlx0XHR9XG4xMjQyOlx0XG4xMjQzOlx0XHRpZiAocnR3dXNiLVx1MDAzZXVkZXYtXHUwMDNlc3BlZWQgPT0gVVNCX1NQRUVEX1NVUEVSKVxuMTI0NDpcdFx0XHRydHdkZXYtXHUwMDNlaGNpLmRsZV90eXBlID0gUlRXODlfSENJX0RMRV9UWVBFX1VTQjM7XG4xMjQ1Olx0XHRlbHNlXG4xMjQ2Olx0XHRcdHJ0d2Rldi1cdTAwM2VoY2kuZGxlX3R5cGUgPSBSVFc4OV9IQ0lfRExFX1RZUEVfVVNCMjtcbjEyNDc6XHRcbjEyNDg6XHRcdHJ0dzg5X3VzYl9pbml0X3R4KHJ0d2Rldik7XG4xMjQ5Olx0XG4xMjUwOlx0XHRyZXQgPSBydHc4OV91c2JfYWxsb2NfcnhfYnVmcyhydHd1c2IpO1xuMTI1MTpcdFx0aWYgKHJldClcbjEyNTI6XHRcdFx0Z290byBlcnJfaW50Zl9kZWluaXQ7XG4xMjUzOlx0XG4xMjU0Olx0XHRyZXQgPSBydHc4OV91c2JfaW5pdF9yeChydHdkZXYpO1xuMTI1NTpcdFx0aWYgKHJldClcbjEyNTY6XHRcdFx0Z290byBlcnJfZnJlZV9yeF9idWZzO1xuMTI1NzpcdFxuMTI1ODpcdFx0cmV0ID0gcnR3ODlfY29yZV9pbml0KHJ0d2Rldik7XG4xMjU5Olx0XHRpZiAocmV0KSB7XG4xMjYwOlx0XHRcdHJ0dzg5X2VycihydHdkZXYsIFwmIzM0O2ZhaWxlZCB0byBpbml0aWFsaXNlIGNvcmU6ICVkXFxuXCYjMzQ7LCByZXQpO1xuMTI2MTpcdFx0XHRnb3RvIGVycl9kZWluaXRfcng7XG4xMjYyOlx0XHR9XG4xMjYzOlx0XG4xMjY0Olx0XHRyZXQgPSBydHc4OV9jaGlwX2luZm9fc2V0dXAocnR3ZGV2KTtcbjEyNjU6XHRcdGlmIChyZXQpIHtcbjEyNjY6XHRcdFx0cnR3ODlfZXJyKHJ0d2RldiwgXCYjMzQ7ZmFpbGVkIHRvIHNldHVwIGNoaXAgaW5mb3JtYXRpb25cXG5cJiMzNDspO1xuMTI2NzpcdFx0XHRnb3RvIGVycl9jb3JlX2RlaW5pdDtcbjEyNjg6XHRcdH1cbjEyNjk6XHRcbjEyNzA6XHRcdHJldCA9IHJ0dzg5X2NvcmVfcmVnaXN0ZXIocnR3ZGV2KTtcbjEyNzE6XHRcdGlmIChyZXQpIHtcbjEyNzI6XHRcdFx0cnR3ODlfZXJyKHJ0d2RldiwgXCYjMzQ7ZmFpbGVkIHRvIHJlZ2lzdGVyIGNvcmVcXG5cJiMzNDspO1xuMTI3MzpcdFx0XHRnb3RvIGVycl9jb3JlX2RlaW5pdDtcbjEyNzQ6XHRcdH1cbjEyNzU6XHRcbjEyNzY6XHRcdHJ0dzg5X3VzYl9zdGFydF9yeChydHdkZXYpO1xuMTI3NzpcdFxuMTI3ODpcdFx0c2V0X2JpdChSVFc4OV9GTEFHX1BST0JFX0RPTkUsIHJ0d2Rldi1cdTAwM2VmbGFncyk7XG4xMjc5Olx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDIxOjQxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwNTI0CgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogMzE0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEludmVzdGlnYXRpb24gaW50byBydHc4OSYjMzk7cyBpbnRlcmFjdGlvbiB3aXRoIG1hYzgwMjExIGFuZCBzeXprYWxsZXIqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGRpdmUgaW50byBob3cgdGhlIGBydHc4OWAgZHJpdmVyIGludGVyZmFjZXMgd2l0aCB0aGUgYG1hYzgwMjExYCBzdWJzeXN0ZW0gYW5kIHBvdGVudGlhbGx5IGdldHMgZnV6emVkIGJ5IGBzeXprYWxsZXJgLiBJIGtub3cgYHN5emthbGxlcmAgaGFzIGRlc2NyaXB0aW9ucyBmb3IgVVNCIGVtdWxhdGlvbiBhbmQgd2lmaSBmdXp6aW5nLCBpbmNsdWRpbmcgZnVuY3Rpb25zIGxpa2UgYHN5el91c2JfY29ubmVjdGAsIGBubDgwMjExYCwgYW5kIGNvbXBvbmVudHMgb2YgYG1hYzgwMjExYCwgc28gSSB3YW50IHRvIHVuZGVyc3RhbmQgdGhlIGF0dGFjayBzdXJmYWNlLgoKTXkgaW5pdGlhbCBmb2N1cyBpcyBvbiBpZGVudGlmeWluZyBtb2RpZmllZCBmdW5jdGlvbnMgYW5kIHRyYWNpbmcgdGhlaXIgZXhlY3V0aW9uIHBhdGhzLiBJJiMzOTt2ZSBwaW5wb2ludGVkIHRocmVlIGludGVyZXN0aW5nIGZ1bmN0aW9uczogYHJ0dzg5X2NhbV9yZXNldF9rZXlzYCwgYHJ0dzg5X3dvd19jb25zdHJ1Y3Rfa2V5X2luZm9gLCBhbmQgYHJ0dzg5X3dvd191cGRhdGVfa2V5X2luZm9gLgoKTGV0JiMzOTtzIHN0YXJ0IGJ5IGV4YW1pbmluZyBgcnR3ODlfY2FtX3Jlc2V0X2tleXNgLCBsb2NhdGVkIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NhbS5jYC4gTG9va2luZyBhdCB0aGUgY29kZToKCmBgYGMKdm9pZCBydHc4OV9jYW1fcmVzZXRfa2V5cyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpCnsKCWllZWU4MDIxMV9pdGVyX2tleXMocnR3ZGV2LSZndDtodywgTlVMTCwgcnR3ODlfY2FtX3Jlc2V0X2tleV9pdGVyLCBydHdkZXYpOwp9CmBgYAoKT2theSwgaXQgaXRlcmF0ZXMgdGhyb3VnaCBrZXlzIHVzaW5nIGBpZWVlODAyMTFfaXRlcl9rZXlzYC4gTm93IEkgbmVlZCB0byBmaWd1cmUgb3V0ICp3aGVyZSogYHJ0dzg5X2NhbV9yZXNldF9rZXlzYCBpcyBjYWxsZWQuCgpJJiMzOTt2ZSBhbHJlYWR5IGZvdW5kIG9uZSBjYWxsIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3Nlci5jYCwgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgYHNlcl9yZXNldF9tYWNfYmluZGluZ2AgZnVuY3Rpb24uIE15IG5leHQgc3RlcCBpcyB0byB0cmFjZSB0aGUgY2FsbGVycyBvZiBgc2VyX3Jlc2V0X21hY19iaW5kaW5nYCB0byBzZWUgaG93IGl0IGNhbiBiZSB0cmlnZ2VyZWQsIGFuZCBwb3RlbnRpYWxseSBleHBsb2l0ZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDIxOjQxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3Nlcl9yZXNldF9tYWNfYmluZGluZyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9zZXIuYz0zNDI9c3RhdGljIHZvaWQgc2VyX2RlaW5pdF9jYW0oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBzdHJ1Y3QgcnR3ODlfdmlmICpydHd2aWYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9zZXIuYy0zNTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3Nlci5jOjM1NzpzdGF0aWMgdm9pZCBzZXJfcmVzZXRfbWFjX2JpbmRpbmcoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9zZXIuYy0zNTgte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvc2VyLmM9Njk1PXN0YXRpYyB2b2lkIHNlcl9sMl9yZXNldF9zdF9wcmVfaGRsKHN0cnVjdCBydHc4OV9zZXIgKnNlcilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3Nlci5jLTcxOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvc2VyLmM6NzIwOlx0c2VyX3Jlc2V0X21hY19iaW5kaW5nKHJ0d2Rldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3Nlci5jLTcyMS1cdHJ0dzg5X2NvcmVfc3RvcChydHdkZXYpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAyMTo0MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMTYxMAoJCQkJCQkJb3V0cHV0OiA0NgoJCQkJCQkJdGhvdWdodHM6IDg4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGFuYWx5c2lzIG9mIHRoZSBwcm92aWRlZCBjb2RlIGluc3BlY3Rpb24gcmVxdWVzdCwgZnJvbSBteSBwZXJzcGVjdGl2ZSBhcyBhIHNlYXNvbmVkIHByb2Zlc3Npb25hbDoKCioqRGVlcCBEaXZlIGludG8gUmVhbHRlayYjMzk7cyBydHc4OSBXaXJlbGVzcyBEcml2ZXImIzM5O3MgV2FrZS1vbi1XaXJlbGVzcyAoV29XKSBGdW5jdGlvbmFsaXR5KioKCk9rYXksIHNvIHdlJiMzOTtyZSBsb29raW5nIGF0IHRoZSBSZWFsdGVrIGBydHc4OWAgd2lyZWxlc3MgZHJpdmVyLCBzcGVjaWZpY2FsbHkgaXRzIFdha2Utb24tV2lyZWxlc3MgKFdvVykgY2FwYWJpbGl0aWVzLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gemVybyBpbiBvbiB0aGUgYHJ0dzg5X3dvd19zd2FwX2Z3YCBmdW5jdGlvbiB3aXRoaW4gYHdvdy5jYC4gVGhpcyBzdHJvbmdseSBzdWdnZXN0cyB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGEgY3JpdGljYWwgcm91dGluZSBmb3Igc3dhcHBpbmcgZmlybXdhcmUgb3IgbWFuYWdpbmcgZmlybXdhcmUgc3RhdGVzIHJlbGF0ZWQgdG8gV29XIGZ1bmN0aW9uYWxpdHkuIFRoZSBsaW5lIG51bWJlciwgYHJ0dzg5L3dvdy5jOjEzMTVgLCBpcyBvdXIgcHJpbWFyeSBmb2N1cy4KClNpbmNlIHRoZSBnb2FsIGlzIGFuIGluZm9ybWVkIGluc3BlY3Rpb24sIEkmIzM5O2xsIG5lZWQgdG8gaW1tZWRpYXRlbHkgZXhwYW5kIG15IHNjb3BlLiBJJiMzOTttIGdvaW5nIHRvIGxvb2sgYXQgbGluZXMgYXJvdW5kIHRoZSBwcm92aWRlZCBudW1iZXIsIHRvIGdldCB0aGUgYmlnZ2VyIHBpY3R1cmUuIEkmIzM5O20gdGhpbmtpbmcgSSYjMzk7bGwgc3RhcnQgYSBiaXQgYmVmb3JlLCBhcm91bmQgbGluZSAxMjU2LCB0byB1bmRlcnN0YW5kIHRoZSBzdXJyb3VuZGluZyBjb250ZXh0IGFuZCBmbG93IG9mIHRoZSBXb1cgZmlybXdhcmUgc3dhcCBwcm9jZXNzLiBUaGVuLCBJIHdpbGwgZGVmaW5pdGVseSBhbHNvIGFkZCBsaW5lcyAxNDI5IGFuZCAxNTk1IHRvIG15IGludmVzdGlnYXRpb24sIHRvIHRyeSB0byBjYXRjaCBhbnkgb2J2aW91cyBpbnRlcmFjdGlvbnMgb3Igb3RoZXIgY2FsbHMgaW4gdGhlIGFyZWEuIFRoaXMgYnJvYWRlciBjb250ZXh0IHdpbGwgYmUgY3J1Y2lhbCBmb3IgdW5kZXJzdGFuZGluZyBwb3RlbnRpYWwgaXNzdWVzLCBkZXBlbmRlbmNpZXMsIG9yIHRoZSBvdmVyYWxsIGFyY2hpdGVjdHVyZSBvZiBob3cgdGhlIGRyaXZlciBoYW5kbGVzIFdvVy1yZWxhdGVkIGZpcm13YXJlLiBLbm93aW5nIHRoZSBiaWdnZXIgcGljdHVyZSBpcyB0aGUgb25seSB3YXkgdG8gcGVyZm9ybSBhIHByb3BlciBhbmQgaW4tZGVwdGggY29kZSBpbnNwZWN0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAyMTo0MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxMzAwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzEzMDA6XHRcbjEzMDE6XHRcdHJldCA9IHJ0dzg5X2Z3X2gyY19yb2xlX21haW50YWluKHJ0d2RldiwgcnR3dmlmX2xpbmssIHJ0d3N0YV9saW5rLFxuMTMwMjpcdFx0XHRcdFx0XHQgUlRXODlfUk9MRV9GV19SRVNUT1JFKTtcbjEzMDM6XHRcdGlmIChyZXQpIHtcbjEzMDQ6XHRcdFx0cnR3ODlfd2FybihydHdkZXYsIFwmIzM0O2ZhaWxlZCB0byBzZW5kIGgyYyByb2xlIG1haW50YWluXFxuXCYjMzQ7KTtcbjEzMDU6XHRcdFx0cmV0dXJuIHJldDtcbjEzMDY6XHRcdH1cbjEzMDc6XHRcbjEzMDg6XHRcdHJldCA9IHJ0dzg5X2NoaXBfaDJjX2Fzc29jX2NtYWNfdGJsKHJ0d2RldiwgcnR3dmlmX2xpbmssIHJ0d3N0YV9saW5rKTtcbjEzMDk6XHRcdGlmIChyZXQpIHtcbjEzMTA6XHRcdFx0cnR3ODlfd2FybihydHdkZXYsIFwmIzM0O2ZhaWxlZCB0byBzZW5kIGgyYyBhc3NvYyBjbWFjIHRibFxcblwmIzM0Oyk7XG4xMzExOlx0XHRcdHJldHVybiByZXQ7XG4xMzEyOlx0XHR9XG4xMzEzOlx0XG4xMzE0Olx0XHRpZiAoIWlzX2Nvbm4pXG4xMzE1Olx0XHRcdHJ0dzg5X2NhbV9yZXNldF9rZXlzKHJ0d2Rldik7XG4xMzE2Olx0XG4xMzE3Olx0XHRyZXQgPSBydHc4OV9md19oMmNfam9pbl9pbmZvKHJ0d2RldiwgcnR3dmlmX2xpbmssIHJ0d3N0YV9saW5rLCAhaXNfY29ubik7XG4xMzE4Olx0XHRpZiAocmV0KSB7XG4xMzE5Olx0XHRcdHJ0dzg5X3dhcm4ocnR3ZGV2LCBcJiMzNDtmYWlsZWQgdG8gc2VuZCBoMmMgam9pbiBpbmZvXFxuXCYjMzQ7KTtcbjEzMjA6XHRcdFx0cmV0dXJuIHJldDtcbjEzMjE6XHRcdH1cbjEzMjI6XHRcbjEzMjM6XHRcdHJldCA9IHJ0dzg5X2Z3X2gyY19jYW0ocnR3ZGV2LCBydHd2aWZfbGluaywgcnR3c3RhX2xpbmssIE5VTEwsXG4xMzI0Olx0XHRcdFx0ICAgICAgIFJUVzg5X1JPTEVfRldfUkVTVE9SRSk7XG4xMzI1Olx0XHRpZiAocmV0KSB7XG4xMzI2Olx0XHRcdHJ0dzg5X3dhcm4ocnR3ZGV2LCBcJiMzNDtmYWlsZWQgdG8gc2VuZCBoMmMgY2FtXFxuXCYjMzQ7KTtcbjEzMjc6XHRcdFx0cmV0dXJuIHJldDtcbjEzMjg6XHRcdH1cbjEzMjk6XHRcbjEzMzA6XHRcdGlmIChpc19jb25uKSB7XG4xMzMxOlx0XHRcdHJldCA9IHJ0dzg5X2Z3X2gyY19nZW5lcmFsX3BrdChydHdkZXYsIHJ0d3ZpZl9saW5rLCBydHdzdGFfbGluay1cdTAwM2VtYWNfaWQpO1xuMTMzMjpcdFx0XHRpZiAocmV0KSB7XG4xMzMzOlx0XHRcdFx0cnR3ODlfd2FybihydHdkZXYsIFwmIzM0O2ZhaWxlZCB0byBzZW5kIGgyYyBnZW5lcmFsIHBhY2tldFxcblwmIzM0Oyk7XG4xMzM0Olx0XHRcdFx0cmV0dXJuIHJldDtcbjEzMzU6XHRcdFx0fVxuMTMzNjpcdFx0XHRydHc4OV9waHlfcmFfYXNzb2MocnR3ZGV2LCBydHdzdGFfbGluayk7XG4xMzM3Olx0XHRcdHJ0dzg5X3BoeV9zZXRfYnNzX2NvbG9yKHJ0d2RldiwgcnR3dmlmX2xpbmspO1xuMTMzODpcdFx0XHRydHc4OV9jaGlwX2NmZ190eHB3cl91bF90Yl9vZmZzZXQocnR3ZGV2LCBydHd2aWZfbGluayk7XG4xMzM5Olx0XHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDIxOjQxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMyODIzCgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogODIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYW5hbHlzaXMgb2YgdGhpcyBjb2RlIHNuaXBwZXQ6CgoqKkRlZXAgRGl2ZSBpbnRvIHJ0dzg5JiMzOTtzIFdvV0xBTiBJbXBsZW1lbnRhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYHdvdy5jYCBpbiB0aGUgcnR3ODkgZHJpdmVyLCBhbmQgaXQmIzM5O3MgaW1tZWRpYXRlbHkgb2J2aW91cyB0aGlzIGlzIGFsbCBhYm91dCBXYWtlIG9uIFdpcmVsZXNzIExBTiAoV29XTEFOKS4gTm93LCBteSBnb2FsIGlzIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBkcml2ZXIgbWFuYWdlcyBhbmQgdXRpbGl6ZXMgaXRzIGtleSBpbmZvcm1hdGlvbiBmb3IgdGhpcyBmdW5jdGlvbmFsaXR5LiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byB0cmFjZSB0aGUgdXNhZ2Ugb2YgdGhlc2Uga2V5LXJlbGF0ZWQgZnVuY3Rpb25zOiBgcnR3ODlfd293X2NvbnN0cnVjdF9rZXlfaW5mb2AsIGBydHc4OV93b3dfdXBkYXRlX2tleV9pbmZvYCwgYW5kIGBydHc4OV93b3dfc3dhcF9md2AuIFRoZSBjb3JlIG9mIGFueSBnb29kIFdvV0xBTiBpbXBsZW1lbnRhdGlvbiBoYXMgc2VjdXJlIGtleSBoYW5kbGluZywgc28gSSBuZWVkIHRvIGtub3cgdGhlIGZsb3cuIFRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5IGFuZCBzdGFydCBzZWFyY2hpbmcgd2l0aGluIHRoZSBydHc4OSBjb2RlYmFzZSBpdHNlbGYuIEkmIzM5O2xsIG5lZWQgdG8gc2VlIGhvdyB0aGVzZSBmdW5jdGlvbnMgYXJlIGNvbnN0cnVjdGVkLCB1cGRhdGVkIGFuZCBzd2FwcGVkLCBhbmQgd2hhdCBjb250ZXh0cyB0aGV5IGFyZSBjYWxsZWQgZnJvbS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMjE6NDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cnR3ODlfd293XyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDc2NyBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jYW0uYz05Mjg9dm9pZCBydHc4OV9jYW1fZmlsbF9kY3RsX3NlY19jYW1faW5mb192MShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jYW0uYy05MzQtXHRcdHJ0dzg5X2dldF9hZGRyX2NhbV9vZihydHd2aWZfbGluaywgcnR3c3RhX2xpbmspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jYW0uYzo5MzU6XHRzdHJ1Y3QgcnR3ODlfd293X3BhcmFtICpydHdfd293ID0gXHUwMDI2cnR3ZGV2LVx1MDAzZXdvdztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY2FtLmMtOTM2LVx0dTggKnB0a190eF9pdiA9IHJ0d193b3ctXHUwMDNla2V5X2luZm8ucHRrX3R4X2l2O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY2FtLmM9MTAwOT12b2lkIHJ0dzg5X2NhbV9maWxsX2RjdGxfc2VjX2NhbV9pbmZvX3YyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NhbS5jLTEwMTktXHRib29sIGlzX21sZCA9IHN0YSA/IHN0YS1cdTAwM2VtbG8gOiBpZWVlODAyMTFfdmlmX2lzX21sZCh2aWYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jYW0uYzoxMDIwOlx0c3RydWN0IHJ0dzg5X3dvd19wYXJhbSAqcnR3X3dvdyA9IFx1MDAyNnJ0d2Rldi1cdTAwM2V3b3c7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NhbS5jLTEwMjEtXHR1OCAqcHRrX3R4X2l2ID0gcnR3X3dvdy1cdTAwM2VrZXlfaW5mby5wdGtfdHhfaXY7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jYW0uYz0xMTQyPXZvaWQgcnR3ODlfY2FtX2ZpbGxfZGN0bF9zZWNfY2FtX2luZm9fdjMoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY2FtLmMtMTE1Mi1cdGJvb2wgaXNfbWxkID0gc3RhID8gc3RhLVx1MDAzZW1sbyA6IGllZWU4MDIxMV92aWZfaXNfbWxkKHZpZik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NhbS5jOjExNTM6XHRzdHJ1Y3QgcnR3ODlfd293X3BhcmFtICpydHdfd293ID0gXHUwMDI2cnR3ZGV2LVx1MDAzZXdvdztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY2FtLmMtMTE1NC1cdHU4ICpwdGtfdHhfaXYgPSBydHdfd293LVx1MDAzZWtleV9pbmZvLnB0a190eF9pdjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYz0xNDE0PXN0YXRpYyBpbnQgcnR3ODlfY29yZV90eF93cml0ZV9saW5rKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy0xNDM0LVx0cnR3ODlfdHJhZmZpY19zdGF0c19hY2N1KHJ0d2RldiwgcnR3dmlmLCBza2IsIHRydWUsIHRydWUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmM6MTQzNTpcdHJ0dzg5X3dvd19wYXJzZV9ha20ocnR3ZGV2LCBza2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtMTQzNi1cdHJ0dzg5X2NvcmVfdHhfdXBkYXRlX2Rlc2NfaW5mbyhydHdkZXYsIFx1MDAyNnR4X3JlcSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmg9MzM9c3RydWN0IHJ0dzg5X3JlZ2RfZGF0YTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oOjM0OnN0cnVjdCBydHc4OV93b3dfY2FtX2luZm87XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaC0zNS1zdHJ1Y3QgcnR3ODlfYmJfd3JhcF9kYXRhO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oPTEwMjQ9ZW51bSBydHc4OV9yZnNpX2N0cmxfYmFuZCB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmgtMTAzMS0vKiBvbmx5IG1nZCBmZWF0dXJlcyBjYW4gYmUgYWRkZWQgdG8gdGhlIGVudW0gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oOjEwMzI6ZW51bSBydHc4OV93b3dfZmxhZ3Mge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmgtMTAzMy1cdFJUVzg5X1dPV19GTEFHX0VOX01BR0lDX1BLVCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaD00ODc3PXN0cnVjdCBydHc4OV9jaGlwX29wcyB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmgtNDk5Mi1cdGludCAoKmgyY193b3dfY2FtX3VwZGF0ZSkoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmg6NDk5MzpcdFx0XHRcdCAgc3RydWN0IHJ0dzg5X3dvd19jYW1faW5mbyAqY2FtX2luZm8pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmgtNDk5NC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaD03MzA3PXN0cnVjdCBydHc4OV9waHlfY2FsY19lZnVzZV9nYWluIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaC03MzE2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmg6NzMxNzpzdHJ1Y3QgcnR3ODlfd293X2NhbV9pbmZvIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oLTczMTgtXHRib29sIHJfdztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaC03MzI5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmg6NzMzMDpzdHJ1Y3QgcnR3ODlfd293X2tleV9pbmZvIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oLTczMzEtXHR1OCBwdGtfdHhfaXZbOF07XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmgtNzMzOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oOjczNDA6c3RydWN0IHJ0dzg5X3dvd19ndGtfaW5mbyB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaC03MzQxLVx0dTgga2NrWzMyXTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaC03MzUxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmg6NzM1MjpzdHJ1Y3QgcnR3ODlfd293X2FvYWNfcmVwb3J0IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oLTczNTMtXHR1OCBycHRfdmVyO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oLTczNzItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaDo3MzczOnN0cnVjdCBydHc4OV93b3dfcGFyYW0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmgtNzM3NC1cdHN0cnVjdCBydHc4OV92aWZfbGluayAqcnR3dmlmX2xpbms7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaC03Mzc1LVx0REVDTEFSRV9CSVRNQVAoZmxhZ3MsIFJUVzg5X1dPV19GTEFHX05VTSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaDo3Mzc2Olx0c3RydWN0IHJ0dzg5X3dvd19jYW1faW5mbyBwYXR0ZXJuc1tSVFc4OV9NQVhfUEFUVEVSTl9OVU1dO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmg6NzM3NzpcdHN0cnVjdCBydHc4OV93b3dfa2V5X2luZm8ga2V5X2luZm87XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaDo3Mzc4Olx0c3RydWN0IHJ0dzg5X3dvd19ndGtfaW5mbyBndGtfaW5mbztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oOjczNzk6XHRzdHJ1Y3QgcnR3ODlfd293X2FvYWNfcmVwb3J0IGFvYWNfcnB0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmgtNzM4MC1cdHU4IHBhdHRlcm5fY250O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oPTc1NTE9c3RydWN0IHJ0dzg5X2RldiB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmgtNzY4NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oOjc2ODU6XHRzdHJ1Y3QgcnR3ODlfd293X3BhcmFtIHdvdztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oLTc2ODYtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jPTI4NzA9c3RhdGljIHN0cnVjdCBza19idWZmICpydHc4OV9lYXBvbF9nZXQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0yODc0LVx0XHRcdFx0ICAgICAweDhFLCAweDAxLCAweDAzLCAweDAwLCAweDVGLCAweDAyLCAweDAzfTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYzoyODc1Olx0dTggc2VjX2hkcl9sZW4gPSBydHc4OV93b3dfZ2V0X3NlY19oZHJfbGVuKHJ0d2Rldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM6Mjg3NjpcdHN0cnVjdCBydHc4OV93b3dfcGFyYW0gKnJ0d193b3cgPSBcdTAwMjZydHdkZXYtXHUwMDNld293O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTI4NzctXHRzdHJ1Y3QgcnR3ODlfZWFwb2xfMl9vZl8yICplYXBvbF9wa3Q7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jPTI5MjA9c3RhdGljIHN0cnVjdCBza19idWZmICpydHc4OV9zYV9xdWVyeV9nZXQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0yOTIyLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYzoyOTIzOlx0dTggc2VjX2hkcl9sZW4gPSBydHc4OV93b3dfZ2V0X3NlY19oZHJfbGVuKHJ0d2Rldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMjkyNC1cdHN0cnVjdCBpZWVlODAyMTFfYnNzX2NvbmYgKmJzc19jb25mO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYz0yOTU3PXN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqcnR3ODlfYXJwX3Jlc3BvbnNlX2dldChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTI5NjEtXHRzdHJ1Y3QgcnR3ODlfdmlmICpydHd2aWYgPSBydHd2aWZfbGluay1cdTAwM2VydHd2aWY7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM6Mjk2MjpcdHU4IHNlY19oZHJfbGVuID0gcnR3ODlfd293X2dldF9zZWNfaGRyX2xlbihydHdkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jOjI5NjM6XHRzdHJ1Y3QgcnR3ODlfd293X3BhcmFtICpydHdfd293ID0gXHUwMDI2cnR3ZGV2LVx1MDAzZXdvdztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0yOTY0LVx0c3RydWN0IGllZWU4MDIxMV9oZHJfM2FkZHIgKmhkcjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM9NzcxOT12b2lkIHJ0dzg5X2h3X3NjYW5fY2FsY19yZXFfc3NpZChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTc3MjQtXHRzdHJ1Y3QgY2ZnODAyMTFfc2Nhbl9yZXF1ZXN0ICpyZXEgPSBydHd2aWYtXHUwMDNlc2Nhbl9yZXE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM6NzcyNTpcdHN0cnVjdCBydHc4OV93b3dfcGFyYW0gKnJ0d193b3cgPSBcdTAwMjZydHdkZXYtXHUwMDNld293O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTc3MjYtXHRzdHJ1Y3QgY2ZnODAyMTFfc2NoZWRfc2Nhbl9yZXF1ZXN0ICpuZF9jb25maWc7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jPTc3NDc9aW50IHJ0dzg5X2Z3X2gyY19zY2FuX29mZmxvYWRfYmUoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy03NzY1LVx0dTggb3BjaF9zaXplID0gc2l6ZW9mKCpvcGNoKSAqIG9wdGlvbi1cdTAwM2VudW1fb3BjaDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYzo3NzY2Olx0c3RydWN0IHJ0dzg5X3dvd19wYXJhbSAqcnR3X3dvdyA9IFx1MDAyNnJ0d2Rldi1cdTAwM2V3b3c7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtNzc2Ny1cdHN0cnVjdCBjZmc4MDIxMV9zY2hlZF9zY2FuX3JlcXVlc3QgKm5kX2NvbmZpZztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM9OTQyMD1pbnQgcnR3ODlfaHdfc2Nhbl9hcHBlbmRfd2lsZGNhcmRfcHJvYmVfcmVxKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtOTQyOS1cdHN0cnVjdCBpZWVlODAyMTFfc2Nhbl9pZXMgKmllcyA9IHJ0d3ZpZi1cdTAwM2VzY2FuX2llcztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYzo5NDMwOlx0c3RydWN0IHJ0dzg5X3dvd19wYXJhbSAqcnR3X3dvdyA9IFx1MDAyNnJ0d2Rldi1cdTAwM2V3b3c7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtOTQzMS1cdHN0cnVjdCBjZmc4MDIxMV9zY2hlZF9zY2FuX3JlcXVlc3QgKm5kX2NvbmZpZztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM9OTU3OT1zdGF0aWMgdm9pZCBydHc4OV9wbm9fc2Nhbl9hZGRfY2hhbl9heChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTk1ODIte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jOjk1ODM6XHRzdHJ1Y3QgcnR3ODlfd293X3BhcmFtICpydHdfd293ID0gXHUwMDI2cnR3ZGV2LVx1MDAzZXdvdztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy05NTg0LVx0c3RydWN0IHJ0dzg5X3BrdG9mbGRfaW5mbyAqaW5mbztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM9OTcyND1zdGF0aWMgdm9pZCBydHc4OV9wbm9fc2Nhbl9hZGRfY2hhbl9iZShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGludCBjaGFuX3R5cGUsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTk3Mjcte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jOjk3Mjg6XHRzdHJ1Y3QgcnR3ODlfd293X3BhcmFtICpydHdfd293ID0gXHUwMDI2cnR3ZGV2LVx1MDAzZXdvdztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy05NzI5LVx0c3RydWN0IHJ0dzg5X3BrdG9mbGRfaW5mbyAqaW5mbztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM9OTgyOT1pbnQgcnR3ODlfcG5vX3NjYW5fYWRkX2NoYW5fbGlzdF9heChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTk4MzEte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jOjk4MzI6XHRzdHJ1Y3QgcnR3ODlfd293X3BhcmFtICpydHdfd293ID0gXHUwMDI2cnR3ZGV2LVx1MDAzZXdvdztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy05ODMzLVx0c3RydWN0IGNmZzgwMjExX3NjaGVkX3NjYW5fcmVxdWVzdCAqbmRfY29uZmlnID0gcnR3X3dvdy1cdTAwM2VuZF9jb25maWc7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jPTEwMDQ3PWludCBydHc4OV9wbm9fc2Nhbl9hZGRfY2hhbl9saXN0X2JlKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTAwNDkte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jOjEwMDUwOlx0c3RydWN0IHJ0dzg5X3dvd19wYXJhbSAqcnR3X3dvdyA9IFx1MDAyNnJ0d2Rldi1cdTAwM2V3b3c7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTAwNTEtXHRzdHJ1Y3QgY2ZnODAyMTFfc2NoZWRfc2Nhbl9yZXF1ZXN0ICpuZF9jb25maWcgPSBydHdfd293LVx1MDAzZW5kX2NvbmZpZztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM9MTA3ODQ9aW50IHJ0dzg5X2Z3X2gyY19kaXNjb25uZWN0X2RldGVjdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTEwNzg2LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYzoxMDc4NzpcdHN0cnVjdCBydHc4OV93b3dfcGFyYW0gKnJ0d193b3cgPSBcdTAwMjZydHdkZXYtXHUwMDNld293O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTEwNzg4LVx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM9MTA4Mjg9aW50IHJ0dzg5X2Z3X2gyY19jZmdfcG5vKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldiwgc3RydWN0IHJ0dzg5X3ZpZl9saW5rICpydHd2aWZfbGluayxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTA4MzAte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jOjEwODMxOlx0c3RydWN0IHJ0dzg5X3dvd19wYXJhbSAqcnR3X3dvdyA9IFx1MDAyNnJ0d2Rldi1cdTAwM2V3b3c7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTA4MzItXHRzdHJ1Y3QgY2ZnODAyMTFfc2NoZWRfc2Nhbl9yZXF1ZXN0ICpuZF9jb25maWcgPSBydHdfd293LVx1MDAzZW5kX2NvbmZpZztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM9MTA4Nzk9aW50IHJ0dzg5X2Z3X2gyY193b3dfZ2xvYmFsKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldiwgc3RydWN0IHJ0dzg5X3ZpZl9saW5rICpydHd2aWZfbGluayxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTA4ODEte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jOjEwODgyOlx0c3RydWN0IHJ0dzg5X3dvd19wYXJhbSAqcnR3X3dvdyA9IFx1MDAyNnJ0d2Rldi1cdTAwM2V3b3c7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTA4ODMtXHRzdHJ1Y3QgcnR3ODlfaDJjX3dvd19nbG9iYWwgKmgyYztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM9MTA5MjY9aW50IHJ0dzg5X2Z3X2gyY193b3dfd2FrZXVwX2N0cmwoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0xMDkzMC1cdHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYgPSBydHd2aWZfbGlua190b192aWYocnR3dmlmX2xpbmspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jOjEwOTMxOlx0c3RydWN0IHJ0dzg5X3dvd19wYXJhbSAqcnR3X3dvdyA9IFx1MDAyNnJ0d2Rldi1cdTAwM2V3b3c7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTA5MzItXHRzdHJ1Y3QgcnR3ODlfaDJjX3dvd193YWtldXBfY3RybCAqaDJjO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYz0xMDk4ND1pbnQgcnR3ODlfZndfaDJjX3dvd19jYW1fdXBkYXRlKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYzoxMDk4NTpcdFx0XHRcdHN0cnVjdCBydHc4OV93b3dfY2FtX2luZm8gKmNhbV9pbmZvKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTEwOTg2LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM9MTEwNDE9aW50IHJ0dzg5X2Z3X2gyY193b3dfY2FtX3VwZGF0ZV92MShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM6MTEwNDI6XHRcdFx0XHQgICBzdHJ1Y3QgcnR3ODlfd293X2NhbV9pbmZvICpjYW1faW5mbylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0xMTA0My17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jPTExMDk5PWludCBydHc4OV9md19oMmNfd293X2d0a19vZmxkKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTExMDIte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jOjExMTAzOlx0c3RydWN0IHJ0dzg5X3dvd19wYXJhbSAqcnR3X3dvdyA9IFx1MDAyNnJ0d2Rldi1cdTAwM2V3b3c7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM6MTExMDQ6XHRzdHJ1Y3QgcnR3ODlfd293X2d0a19pbmZvICpndGtfaW5mbyA9IFx1MDAyNnJ0d193b3ctXHUwMDNlZ3RrX2luZm87XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTExMDUtXHRzdHJ1Y3QgcnR3ODlfaDJjX3dvd19ndGtfb2ZsZCAqaDJjO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuaD0yMjE1PXN0cnVjdCBydHc4OV9oMmNfd293X2dsb2JhbCB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmgtMjIxNi1cdF9fbGUzMiB3MDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuaDoyMjE3Olx0c3RydWN0IHJ0dzg5X3dvd19rZXlfaW5mbyBrZXlfaW5mbztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuaC0yMjE4LX0gX19wYWNrZWQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5oPTIzMTI9c3RydWN0IHJ0dzg5X2gyY193b3dfZ3RrX29mbGQge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuaC0yMzE0LVx0X19sZTMyIHcxO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5oOjIzMTU6XHRzdHJ1Y3QgcnR3ODlfd293X2d0a19pbmZvIGd0a19pbmZvO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5oLTIzMTYtfSBfX3BhY2tlZDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3Lmg9NDY2NT1zdHJ1Y3QgcnR3ODlfZndfaDJjX3JmX3JlZ19pbmZvIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmgtNDY5OS0jZGVmaW5lIEgyQ19DTF9NQUNfV09XXHRcdFx0MHgxXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3Lmg6NDcwMDplbnVtIHJ0dzg5X3dvd19oMmNfZnVuYyB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmgtNDcwMS1cdEgyQ19GVU5DX0tFRVBfQUxJVkVcdFx0PSAweDAsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5oPTU2MzQ9aW50IHJ0dzg5X2Z3X2gyY193b3dfY2FtX3VwZGF0ZShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3Lmg6NTYzNTpcdFx0XHRcdHN0cnVjdCBydHc4OV93b3dfY2FtX2luZm8gKmNhbV9pbmZvKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuaC01NjM2LWludCBydHc4OV9md19oMmNfd293X2NhbV91cGRhdGVfdjEoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5oOjU2Mzc6XHRcdFx0XHQgICBzdHJ1Y3QgcnR3ODlfd293X2NhbV9pbmZvICpjYW1faW5mbyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmgtNTYzOC1pbnQgcnR3ODlfZndfaDJjX3dvd19ndGtfb2ZsZChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5oPTU4MTE9aW50IHJ0dzg5X2NoaXBfaDJjX3dvd19jYW1fdXBkYXRlKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuaDo1ODEyOlx0XHRcdFx0ICBzdHJ1Y3QgcnR3ODlfd293X2NhbV9pbmZvICpjYW1faW5mbylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuaC01ODEzLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3Lmg9NTkyMz1ydHc4OV9sb2FkX3JmZV9kYXRhX2Zyb21fZncoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuaC01OTI1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5oOjU5MjY6ZW51bSBydHc4OV93b3dfd2FrZXVwX3ZlciB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmgtNTkyNy1cdFJUVzg5X1dPV19SRUFTT05fVjAsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWMuYz01ODkwPXJ0dzg5X21hY19jMmhfd293X2FvYWNfcnB0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldiwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTMyIGxlbilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjLmMtNTg5MS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYy5jOjU4OTI6XHRzdHJ1Y3QgcnR3ODlfd293X3BhcmFtICpydHdfd293ID0gXHUwMDI2cnR3ZGV2LVx1MDAzZXdvdztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjLmM6NTg5MzpcdHN0cnVjdCBydHc4OV93b3dfYW9hY19yZXBvcnQgKmFvYWNfcnB0ID0gXHUwMDI2cnR3X3dvdy1cdTAwM2Vhb2FjX3JwdDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjLmMtNTg5NC1cdHN0cnVjdCBydHc4OV93YWl0X2luZm8gKndhaXQgPSBcdTAwMjZydHdfd293LVx1MDAzZXdhaXQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWMuYz03MzUxPWludCBydHc4OV9tYWNfY3B1X2lvX3J4KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgYm9vbCB3b3dfZW5hYmxlKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjLmMtNzM2My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjLmM6NzM2NDpzdGF0aWMgaW50IHJ0dzg5X3dvd19jb25maWdfbWFjX2F4KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgYm9vbCBlbmFibGVfd293KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWMuYy03MzY1LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYy5jPTc0NTA9Y29uc3Qgc3RydWN0IHJ0dzg5X21hY19nZW5fZGVmIHJ0dzg5X21hY19nZW5fYXggPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWMuYy03NTQ3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWMuYzo3NTQ4Olx0Lndvd19jb25maWdfbWFjID0gcnR3ODlfd293X2NvbmZpZ19tYWNfYXgsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYy5jLTc1NDktfTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM9MTg5Nj1zdGF0aWMgaW50IHJ0dzg5X29wc19zdXNwZW5kKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0xOTA3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjE5MDg6XHRyZXQgPSBydHc4OV93b3dfc3VzcGVuZChydHdkZXYsIHdvd2xhbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMTkwOS1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM9MTkxOD1zdGF0aWMgaW50IHJ0dzg5X29wc19yZXN1bWUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTE5MjQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MTkyNTpcdHJldCA9IHJ0dzg5X3dvd19yZXN1bWUocnR3ZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0xOTI2LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM9MTk0NT1zdGF0aWMgdm9pZCBydHc4OV9zZXRfcmVrZXlfZGF0YShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMTk0OS1cdHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiA9IGh3LVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MTk1MDpcdHN0cnVjdCBydHc4OV93b3dfcGFyYW0gKnJ0d193b3cgPSBcdTAwMjZydHdkZXYtXHUwMDNld293O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjE5NTE6XHRzdHJ1Y3QgcnR3ODlfd293X2d0a19pbmZvICpndGtfaW5mbyA9IFx1MDAyNnJ0d193b3ctXHUwMDNlZ3RrX2luZm87XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMTk1Mi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hY19iZS5jPTI5NjU9c3RhdGljIHZvaWQgcnR3ODlfbWFjX2R1bXBfcXRhX2xvc3RfYmUoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjX2JlLmMtMzA1MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjX2JlLmM6MzA1MjpzdGF0aWMgaW50IHJ0dzg5X3dvd19jb25maWdfbWFjX2JlKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgYm9vbCBlbmFibGVfd293KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWNfYmUuYy0zMDUzLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hY19iZS5jPTMyNjg9Y29uc3Qgc3RydWN0IHJ0dzg5X21hY19nZW5fZGVmIHJ0dzg5X21hY19nZW5fYmUgPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWNfYmUuYy0zMzY1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWNfYmUuYzozMzY2Olx0Lndvd19jb25maWdfbWFjID0gcnR3ODlfd293X2NvbmZpZ19tYWNfYmUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hY19iZS5jLTMzNjctfTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTE0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYzoxNTp2b2lkIF9fcnR3ODlfd293X3BhcnNlX2FrbShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHN0cnVjdCBza19idWZmICpza2IpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTE2LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtMTctXHRzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXQgPSAoc3RydWN0IGllZWU4MDIxMV9tZ210ICopc2tiLVx1MDAzZWRhdGE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jOjE4Olx0c3RydWN0IHJ0dzg5X3dvd19wYXJhbSAqcnR3X3dvdyA9IFx1MDAyNnJ0d2Rldi1cdTAwM2V3b3c7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTE5LVx0Y29uc3QgdTggKnJzbiwgKmllcyA9IG1nbXQtXHUwMDNldS5hc3NvY19yZXEudmFyaWFibGU7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYz0yMzk9c3RhdGljIGludCBydHc4OV9yeF9wbl9nZXRfcG1mKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtMjQwLVx0XHRcdCAgICAgICBzdHJ1Y3QgaWVlZTgwMjExX2tleV9jb25mICprZXksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jOjI0MTpcdFx0XHQgICAgICAgc3RydWN0IHJ0dzg5X3dvd19ndGtfaW5mbyAqZ3RrX2luZm8pXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTI0Mi17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYz0yNzA9c3RhdGljIGludCBydHc4OV9yeF9wbl9zZXRfcG1mKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTI3My17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jOjI3NDpcdHN0cnVjdCBydHc4OV93b3dfcGFyYW0gKnJ0d193b3cgPSBcdTAwMjZydHdkZXYtXHUwMDNld293O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYzoyNzU6XHRzdHJ1Y3QgcnR3ODlfd293X2FvYWNfcmVwb3J0ICphb2FjX3JwdCA9IFx1MDAyNnJ0d193b3ctXHUwMDNlYW9hY19ycHQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTI3Ni1cdHN0cnVjdCBpZWVlODAyMTFfa2V5X3NlcSBzZXE7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy0yOTUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jOjI5NjpzdGF0aWMgdm9pZCBydHc4OV93b3dfZ2V0X2tleV9pbmZvX2l0ZXIoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTI5Ny1cdFx0XHRcdFx0c3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTMwMi1cdHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiA9IGh3LVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jOjMwMzpcdHN0cnVjdCBydHc4OV93b3dfcGFyYW0gKnJ0d193b3cgPSBcdTAwMjZydHdkZXYtXHUwMDNld293O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYzozMDQ6XHRzdHJ1Y3QgcnR3ODlfd293X2tleV9pbmZvICprZXlfaW5mbyA9IFx1MDAyNnJ0d193b3ctXHUwMDNla2V5X2luZm87XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jOjMwNTpcdHN0cnVjdCBydHc4OV93b3dfZ3RrX2luZm8gKmd0a19pbmZvID0gXHUwMDI2cnR3X3dvdy1cdTAwM2VndGtfaW5mbztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtMzA2LVx0Y29uc3Qgc3RydWN0IHJ0dzg5X2NpcGhlcl9pbmZvICpjaXBoZXJfaW5mbztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTM3MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmM6MzcxOnN0YXRpYyB2b2lkIHJ0dzg5X3dvd19zZXRfa2V5X2luZm9faXRlcihzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtMzcyLVx0XHRcdFx0XHRzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtMzc3LVx0c3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2ID0gaHctXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmM6Mzc4Olx0c3RydWN0IHJ0dzg5X3dvd19wYXJhbSAqcnR3X3dvdyA9IFx1MDAyNnJ0d2Rldi1cdTAwM2V3b3c7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jOjM3OTpcdHN0cnVjdCBydHc4OV93b3dfYW9hY19yZXBvcnQgKmFvYWNfcnB0ID0gXHUwMDI2cnR3X3dvdy1cdTAwM2Vhb2FjX3JwdDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtMzgwLVx0c3RydWN0IHJ0dzg5X3NldF9rZXlfaW5mb19pdGVyX2RhdGEgKml0ZXJfZGF0YSA9IGRhdGE7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy00NTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jOjQ1NzpzdGF0aWMgdm9pZCBydHc4OV93b3dfa2V5X2NsZWFyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtNDU4LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmM6NDU5Olx0c3RydWN0IHJ0dzg5X3dvd19wYXJhbSAqcnR3X3dvdyA9IFx1MDAyNnJ0d2Rldi1cdTAwM2V3b3c7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTQ2MC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTQ2Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmM6NDY4OnN0YXRpYyB2b2lkIHJ0dzg5X3dvd19jb25zdHJ1Y3Rfa2V5X2luZm8oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy00Njkte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYzo0NzA6XHRzdHJ1Y3QgcnR3ODlfd293X3BhcmFtICpydHdfd293ID0gXHUwMDI2cnR3ZGV2LVx1MDAzZXdvdztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmM6NDcxOlx0c3RydWN0IHJ0dzg5X3dvd19rZXlfaW5mbyAqa2V5X2luZm8gPSBcdTAwMjZydHdfd293LVx1MDAzZWtleV9pbmZvO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy00NzItXHRzdHJ1Y3QgcnR3ODlfdmlmX2xpbmsgKnJ0d3ZpZl9saW5rID0gcnR3ZGV2LVx1MDAzZXdvdy5ydHd2aWZfbGluaztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTQ3Ni1cdGllZWU4MDIxMV9pdGVyX2tleXMocnR3ZGV2LVx1MDAzZWh3LCB3b3dfdmlmLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYzo0Nzc6XHRcdFx0ICAgIHJ0dzg5X3dvd19nZXRfa2V5X2luZm9faXRlciwgXHUwMDI2ZXJyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtNDc4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy00NzktXHRpZiAoZXJyKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jOjQ4MDpcdFx0cnR3ODlfd293X2tleV9jbGVhcihydHdkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy00ODEtXHRcdHJldHVybjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTQ4OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmM6NDg5OnN0YXRpYyB2b2lkIHJ0dzg5X3dvd19kZWJ1Z19hb2FjX3JwdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTQ5MC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jOjQ5MTpcdHN0cnVjdCBydHc4OV93b3dfcGFyYW0gKnJ0d193b3cgPSBcdTAwMjZydHdkZXYtXHUwMDNld293O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYzo0OTI6XHRzdHJ1Y3QgcnR3ODlfd293X2FvYWNfcmVwb3J0ICphb2FjX3JwdCA9IFx1MDAyNnJ0d193b3ctXHUwMDNlYW9hY19ycHQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTQ5My1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTUyOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmM6NTMwOnN0YXRpYyBpbnQgcnR3ODlfd293X2dldF9hb2FjX3JwdF9yZWcoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy01MzEte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYzo1MzI6XHRzdHJ1Y3QgcnR3ODlfd293X3BhcmFtICpydHdfd293ID0gXHUwMDI2cnR3ZGV2LVx1MDAzZXdvdztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmM6NTMzOlx0c3RydWN0IHJ0dzg5X3dvd19hb2FjX3JlcG9ydCAqYW9hY19ycHQgPSBcdTAwMjZydHdfd293LVx1MDAzZWFvYWNfcnB0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy01MzQtXHRzdHJ1Y3QgcnR3ODlfbWFjX2MyaF9pbmZvIGMyaF9pbmZvID0ge307XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy02MTUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jOjYxNjpzdGF0aWMgaW50IHJ0dzg5X3dvd19nZXRfYW9hY19ycHQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBib29sIHJ4X3JlYWR5KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy02MTcte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYzo2MTg6XHRzdHJ1Y3QgcnR3ODlfd293X3BhcmFtICpydHdfd293ID0gXHUwMDI2cnR3ZGV2LVx1MDAzZXdvdztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtNjE5LVx0aW50IHJldDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTYyNC1cdGlmICghcnhfcmVhZHkpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmM6NjI1Olx0XHRyZXQgPSBydHc4OV93b3dfZ2V0X2FvYWNfcnB0X3JlZyhydHdkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy02MjYtXHRcdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTYzNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmM6NjM4Olx0cnR3ODlfd293X2RlYnVnX2FvYWNfcnB0KHJ0d2Rldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTYzOS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTY0Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmM6NjQzOnN0YXRpYyBzdHJ1Y3QgaWVlZTgwMjExX2tleV9jb25mICpydHc4OV93b3dfZ3RrX3Jla2V5KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtNjQ0LVx0XHRcdFx0XHRcdCAgICAgIHUzMiBjaXBoZXIsIHU4IGtleWlkeCwgdTggKmd0aylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTY4My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmM6Njg0OnN0YXRpYyB2b2lkIHJ0dzg5X3dvd191cGRhdGVfa2V5X2luZm8oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBib29sIHJ4X3JlYWR5KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy02ODUte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtNjg3LVx0c3RydWN0IGllZWU4MDIxMV92aWYgKndvd192aWYgPSBydHd2aWZfbGlua190b192aWYocnR3dmlmX2xpbmspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYzo2ODg6XHRzdHJ1Y3QgcnR3ODlfd293X3BhcmFtICpydHdfd293ID0gXHUwMDI2cnR3ZGV2LVx1MDAzZXdvdztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmM6Njg5Olx0c3RydWN0IHJ0dzg5X3dvd19hb2FjX3JlcG9ydCAqYW9hY19ycHQgPSBcdTAwMjZydHdfd293LVx1MDAzZWFvYWNfcnB0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy02OTAtXHRzdHJ1Y3QgcnR3ODlfc2V0X2tleV9pbmZvX2l0ZXJfZGF0YSBkYXRhID0gey5lcnJvciA9IGZhbHNlLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtNjk2LVx0aWVlZTgwMjExX2l0ZXJfa2V5cyhydHdkZXYtXHUwMDNlaHcsIHdvd192aWYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jOjY5NzpcdFx0XHQgICAgcnR3ODlfd293X3NldF9rZXlfaW5mb19pdGVyLCBcdTAwMjZkYXRhKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtNjk4LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtNzA2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYzo3MDc6XHRrZXkgPSBydHc4OV93b3dfZ3RrX3Jla2V5KHJ0d2RldiwgZGF0YS5ndGtfY2lwaGVyLCBhb2FjX3JwdC1cdTAwM2VrZXlfaWR4LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy03MDgtXHRcdFx0XHQgIGFvYWNfcnB0LVx1MDAzZWd0ayk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy03MTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jOjcxODpcdGtleSA9IHJ0dzg5X3dvd19ndGtfcmVrZXkocnR3ZGV2LCBkYXRhLmlndGtfY2lwaGVyLCBhb2FjX3JwdC1cdTAwM2VpZ3RrX2tleV9pZCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtNzE5LVx0XHRcdFx0ICBhb2FjX3JwdC1cdTAwM2VpZ3RrKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTczNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmM6NzM1OnN0YXRpYyB2b2lkIHJ0dzg5X3dvd19sZWF2ZV9kZWVwX3BzKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtNzM2LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTczOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmM6NzQwOnN0YXRpYyB2b2lkIHJ0dzg5X3dvd19lbnRlcl9kZWVwX3BzKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtNzQxLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTc0NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmM6NzQ1OnN0YXRpYyB2b2lkIHJ0dzg5X3dvd19lbnRlcl9wcyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTc0Ni17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy03NDgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jOjc0OTpcdGlmIChydHc4OV93b3dfbWdkX2xpbmtlZChydHdkZXYpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy03NTAtXHRcdHJ0dzg5X2VudGVyX2xwcyhydHdkZXYsIHJ0d3ZpZl9saW5rLVx1MDAzZXJ0d3ZpZiwgZmFsc2UpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYzo3NTE6XHRlbHNlIGlmIChydHc4OV93b3dfbm9fbGluayhydHdkZXYpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy03NTItXHRcdHJ0dzg5X2Z3X2gyY19md2lwcyhydHdkZXYsIHJ0d3ZpZl9saW5rLCB0cnVlKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTc1NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmM6NzU1OnN0YXRpYyB2b2lkIHJ0dzg5X3dvd19sZWF2ZV9wcyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGJvb2wgZW5hYmxlX3dvdylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtNzU2LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTc1OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmM6NzU5Olx0aWYgKHJ0dzg5X3dvd19tZ2RfbGlua2VkKHJ0d2RldikpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtNzYwLVx0XHRydHc4OV9sZWF2ZV9scHMocnR3ZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmM6NzYxOlx0fSBlbHNlIGlmIChydHc4OV93b3dfbm9fbGluayhydHdkZXYpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTc2Mi1cdFx0aWYgKGVuYWJsZV93b3cpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy03NjgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jOjc2OTpzdGF0aWMgaW50IHJ0dzg5X3dvd19jb25maWdfbWFjKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgYm9vbCBlbmFibGVfd293KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy03NzAte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtNzc1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYzo3NzY6c3RhdGljIHZvaWQgcnR3ODlfd293X3NldF9yeF9maWx0ZXIoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBib29sIGVuYWJsZSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtNzc3LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTc4Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmM6Nzg4OnN0YXRpYyB2b2lkIHJ0dzg5X3dvd19zaG93X3dha2V1cF9yZWFzb24oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy03ODkte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtNzkxLVx0c3RydWN0IGllZWU4MDIxMV92aWYgKndvd192aWYgPSBydHd2aWZfbGlua190b192aWYocnR3dmlmX2xpbmspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYzo3OTI6XHRzdHJ1Y3QgcnR3ODlfd293X3BhcmFtICpydHdfd293ID0gXHUwMDI2cnR3ZGV2LVx1MDAzZXdvdztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmM6NzkzOlx0c3RydWN0IHJ0dzg5X3dvd19hb2FjX3JlcG9ydCAqYW9hY19ycHQgPSBcdTAwMjZydHdfd293LVx1MDAzZWFvYWNfcnB0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy03OTQtXHRzdHJ1Y3QgY2ZnODAyMTFfd293bGFuX25kX2luZm8gbmRfaW5mbztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTg0OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmM6ODQ5OnN0YXRpYyB2b2lkIHJ0dzg5X3dvd192aWZfaXRlcihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTg1MC1cdFx0XHQgICAgICAgc3RydWN0IHJ0dzg5X3ZpZl9saW5rICpydHd2aWZfbGluaylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtODUxLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmM6ODUyOlx0c3RydWN0IHJ0dzg5X3dvd19wYXJhbSAqcnR3X3dvdyA9IFx1MDAyNnJ0d2Rldi1cdTAwM2V3b3c7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTg1My1cdHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYgPSBydHd2aWZfbGlua190b192aWYocnR3dmlmX2xpbmspO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmM9OTE0PXN0YXRpYyB1MTYgcnR3ODlfY2FsY19jcmModTggKnBkYXRhLCBpbnQgbGVuZ3RoKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtOTI1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYzo5MjY6c3RhdGljIGludCBydHc4OV93b3dfcGF0dGVybl9nZXRfdHlwZShzdHJ1Y3QgcnR3ODlfdmlmX2xpbmsgKnJ0d3ZpZl9saW5rLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYzo5Mjc6XHRcdFx0XHQgICAgICBzdHJ1Y3QgcnR3ODlfd293X2NhbV9pbmZvICpydHdfcGF0dGVybixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtOTI4LVx0XHRcdFx0ICAgICAgY29uc3QgdTggKnBhdHRlcm4sIHU4IGRhX21hc2spXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy05NTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jOjk1NzpzdGF0aWMgaW50IHJ0dzg5X3dvd19wYXR0ZXJuX2dlbmVyYXRlKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtOTU4LVx0XHRcdFx0ICAgICAgc3RydWN0IHJ0dzg5X3ZpZl9saW5rICpydHd2aWZfbGluayxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtOTU5LVx0XHRcdFx0ICAgICAgY29uc3Qgc3RydWN0IGNmZzgwMjExX3BrdF9wYXR0ZXJuICpwa3RfcGF0dGVybixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmM6OTYwOlx0XHRcdFx0ICAgICAgc3RydWN0IHJ0dzg5X3dvd19jYW1faW5mbyAqcnR3X3BhdHRlcm4pXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTk2MS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy05NzYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jOjk3NzpcdHJldCA9IHJ0dzg5X3dvd19wYXR0ZXJuX2dldF90eXBlKHJ0d3ZpZl9saW5rLCBydHdfcGF0dGVybiwgcGF0dGVybixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtOTc4LVx0XHRcdFx0XHQgbWFza1swXSBcdTAwMjYgR0VOTUFTSyg1LCAwKSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy0xMDI5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYzoxMDMwOnN0YXRpYyBpbnQgcnR3ODlfd293X3BhcnNlX3BhdHRlcm5zKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtMTAzMS1cdFx0XHRcdCAgICBzdHJ1Y3QgcnR3ODlfdmlmX2xpbmsgKnJ0d3ZpZl9saW5rLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtMTAzMy17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jOjEwMzQ6XHRzdHJ1Y3QgcnR3ODlfd293X3BhcmFtICpydHdfd293ID0gXHUwMDI2cnR3ZGV2LVx1MDAzZXdvdztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmM6MTAzNTpcdHN0cnVjdCBydHc4OV93b3dfY2FtX2luZm8gKnJ0d19wYXR0ZXJuID0gcnR3X3dvdy1cdTAwM2VwYXR0ZXJucztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtMTAzNi1cdGludCBpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtMTA0My1cdFx0cnR3X3BhdHRlcm4gPSBcdTAwMjZydHdfd293LVx1MDAzZXBhdHRlcm5zW2ldO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYzoxMDQ0Olx0XHRyZXQgPSBydHc4OV93b3dfcGF0dGVybl9nZW5lcmF0ZShydHdkZXYsIHJ0d3ZpZl9saW5rLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy0xMDQ1LVx0XHRcdFx0XHRcdCBcdTAwMjZ3b3dsYW4tXHUwMDNlcGF0dGVybnNbaV0sXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy0xMDYzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYzoxMDY0OnN0YXRpYyB2b2lkIHJ0dzg5X3dvd19wYXR0ZXJuX2NsZWFyX2NhbShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTEwNjUte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYzoxMDY2Olx0c3RydWN0IHJ0dzg5X3dvd19wYXJhbSAqcnR3X3dvdyA9IFx1MDAyNnJ0d2Rldi1cdTAwM2V3b3c7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jOjEwNjc6XHRzdHJ1Y3QgcnR3ODlfd293X2NhbV9pbmZvICpydHdfcGF0dGVybiA9IHJ0d193b3ctXHUwMDNlcGF0dGVybnM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTEwNjgtXHRpbnQgaSA9IDA7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy0xMDc2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYzoxMDc3OnN0YXRpYyB2b2lkIHJ0dzg5X3dvd19wYXR0ZXJuX3dyaXRlKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtMTA3OC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jOjEwNzk6XHRzdHJ1Y3QgcnR3ODlfd293X3BhcmFtICpydHdfd293ID0gXHUwMDI2cnR3ZGV2LVx1MDAzZXdvdztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmM6MTA4MDpcdHN0cnVjdCBydHc4OV93b3dfY2FtX2luZm8gKnJ0d19wYXR0ZXJuID0gcnR3X3dvdy1cdTAwM2VwYXR0ZXJucztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtMTA4MS1cdGludCBpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtMTA4Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmM6MTA4NzpzdGF0aWMgdm9pZCBydHc4OV93b3dfcGF0dGVybl9jbGVhcihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTEwODgte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYzoxMDg5Olx0c3RydWN0IHJ0dzg5X3dvd19wYXJhbSAqcnR3X3dvdyA9IFx1MDAyNnJ0d2Rldi1cdTAwM2V3b3c7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTEwOTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jOjEwOTE6XHRydHc4OV93b3dfcGF0dGVybl9jbGVhcl9jYW0ocnR3ZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtMTA5Mi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTEwOTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jOjEwOTc6c3RhdGljIHZvaWQgcnR3ODlfd293X2NsZWFyX3dha2V1cHMoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy0xMDk4LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmM6MTA5OTpcdHN0cnVjdCBydHc4OV93b3dfcGFyYW0gKnJ0d193b3cgPSBcdTAwMjZydHdkZXYtXHUwMDNld293O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy0xMTAwLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtMTEwNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmM6MTEwNzpzdGF0aWMgdm9pZCBydHc4OV93b3dfaW5pdF9wbm8oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy0xMTA4LVx0XHRcdCAgICAgICBzdHJ1Y3QgY2ZnODAyMTFfc2NoZWRfc2Nhbl9yZXF1ZXN0ICpuZF9jb25maWcpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTExMDkte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYzoxMTEwOlx0c3RydWN0IHJ0dzg5X3dvd19wYXJhbSAqcnR3X3dvdyA9IFx1MDAyNnJ0d2Rldi1cdTAwM2V3b3c7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTExMTEtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy0xMTIyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYzoxMTIzOnN0YXRpYyBpbnQgcnR3ODlfd293X3NldF93YWtldXBzKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtMTEyNC1cdFx0XHRcdCBzdHJ1Y3QgY2ZnODAyMTFfd293bGFuICp3b3dsYW4pXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTExMjUte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYzoxMTI2Olx0c3RydWN0IHJ0dzg5X3dvd19wYXJhbSAqcnR3X3dvdyA9IFx1MDAyNnJ0d2Rldi1cdTAwM2V3b3c7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTExMjctXHRzdHJ1Y3QgcnR3ODlfdmlmX2xpbmsgKnJ0d3ZpZl9saW5rO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtMTEzNy1cdGlmICh3b3dsYW4tXHUwMDNlbmRfY29uZmlnKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYzoxMTM4Olx0XHRydHc4OV93b3dfaW5pdF9wbm8ocnR3ZGV2LCB3b3dsYW4tXHUwMDNlbmRfY29uZmlnKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtMTEzOS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTExNDQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jOjExNDU6XHRcdHJ0dzg5X3dvd192aWZfaXRlcihydHdkZXYsIHJ0d3ZpZl9saW5rKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtMTE0Ni1cdH1cblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAyMTo0MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0ODQ2NQoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDY4MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgS2V5IEhhbmRsaW5nIGluIHJ0dzg5IGFuZCBtYWM4MDIxMSoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBJJiMzOTttIHNlZWluZyB0aGF0IGBydHc4OV93b3dfc3VzcGVuZGAgYW5kIGBydHc4OV93b3dfcmVzdW1lYCBhcmUgY2FsbGVkIHdpdGhpbiB0aGUgYHJ0dzg5X29wc19zdXNwZW5kYCBhbmQgYHJ0dzg5X29wc19yZXN1bWVgIGZ1bmN0aW9ucywgd2hpY2ggYXJlIHBhcnQgb2YgbWFjODAyMTEmIzM5O3Mgb3BlcmF0aW9uYWwgZnVuY3Rpb25zLiBNeSBpbW1lZGlhdGUgY29uY2VybiBpcyB0aGUgY29udGV4dCBpbiB3aGljaCB0aGVzZSBzdXNwZW5kL3Jlc3VtZSBvcGVyYXRpb25zIGFyZSB0cmlnZ2VyZWQgd2l0aGluIHRoZSBtYWM4MDIxMSBmcmFtZXdvcmsuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjYWxsaW5nIGNoYWluIGJldHRlciwgc28gSSYjMzk7bSB0aGlua2luZyBhYm91dCBob3cgc3VzcGVuZC9yZXN1bWUgaXMgaW5pdGlhdGVkIHdpdGhpbiBtYWM4MDIxMSBhbmQgY2ZnODAyMTEuIEl0IGNvdWxkIGJlIGZyb20gcG93ZXIgbWFuYWdlbWVudCBldmVudHMsIGxpa2UgUE0gb3IgV29MIGNvbW1hbmRzIHRocm91Z2ggbmw4MDIxMS4gSSBzaG91bGQgYWxzbyBjb25zaWRlciB0aGUgc3lzdGVtLWxldmVsIHN1c3BlbmQvcmVzdW1lIHRyaWdnZXJlZCBieSBgL3N5cy9wb3dlci9zdGF0ZWAsIHBtIGlvY3Rscywgb3Igc3lzdGVtIGNhbGxzLCBlc3BlY2lhbGx5IHdpdGggc3l6a2FsbGVyIHRlc3RzLgoKTm93LCB3aGF0IGFib3V0IGBzZXJfcmVzZXRfbWFjX2JpbmRpbmdgPyBTRVIgKFN5c3RlbSBFcnJvciBSZWNvdmVyeSkgaW4gdGhlIHJ0dzg5IGRyaXZlciBpcyB0cmlnZ2VyZWQgYnkgY2hpcCBlcnJvcnMgb3IgdGltZW91dHMsIHNvIHRoaXMgaXMgaW1wb3J0YW50IGZyb20gYSByZWxpYWJpbGl0eSBzdGFuZHBvaW50LiBBbmQgaXQgbG9va3MgbGlrZSBgcnR3ODlfY2FtX3Jlc2V0X2tleXNgIGlzIGNhbGxlZCBpbiBgc2VyX3Jlc2V0X21hY19iaW5kaW5nYCBhbmQgYWxzbyBgcnR3ODlfd293X3N3YXBfZndgLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IGBydHc4OV9jYW1fcmVzZXRfa2V5c2AgYWN0dWFsbHkgKmRvZXMqLgoKT2theSwgaXQgY2FsbHMgYGllZWU4MDIxMV9pdGVyX2tleXNgIChvciB1c2VkIHRvIGNhbGwgYGllZWU4MDIxMV9pdGVyX2tleXNfcmN1YCBwcmV2aW91c2x5KSB3aXRoIGEgY3VzdG9tIGl0ZXJhdG9yLCBgcnR3ODlfY2FtX3Jlc2V0X2tleV9pdGVyYC4gVGhpcyBzdWdnZXN0cyBzb21lIGtpbmQgb2Yga2V5IG1hbmFnZW1lbnQgb3IgY2xlYXJpbmcgb3BlcmF0aW9uLCBwcm9iYWJseSBmb3Igc2VjdXJpdHkgcmVhc29ucy4gQW5kIEkgc2hvdWxkIG5vdGUgdGhhdCBgd293LmNgIGlzIGFsc28gdXNpbmcgYGllZWU4MDIxMV9pdGVyX2tleXNgIGluIGBydHc4OV93b3dfY29uc3RydWN0X2tleV9pbmZvYCBhbmQgYHJ0dzg5X3dvd191cGRhdGVfa2V5X2luZm9gLgoKV2FpdCBhIG1pbnV0ZSwgYGllZWU4MDIxMV9pdGVyX2tleXNgIGhhcyBhIGBsb2NrZGVwX2Fzc2VydF93aXBoeShody0mZ3Q7d2lwaHkpO2AgY2FsbC4gVGhpcyBpcyBrZXkhIEkgbmVlZCB0byBpbnZlc3RpZ2F0ZSB0aGUgaW1wbGljYXRpb25zIGhlcmUuIEl0JiMzOTtzIGF0IGxpbmUgMTAzMyBvZiBgbmV0L21hYzgwMjExL2tleS5jYC4gU28gSSBzaG91bGQgY2hlY2sgdGhlIGRlZmluaXRpb24gb2YgYGxvY2tkZXBfYXNzZXJ0X3dpcGh5YCBpbiBgaW5jbHVkZS9uZXQvY2ZnODAyMTEuaGAgb3IgYGluY2x1ZGUvbmV0L21hYzgwMjExLmhgIHRvIHVuZGVyc3RhbmQgaXRzIHB1cnBvc2UgYW5kIGhvdyBpdCByZWxhdGVzIHRvIGxvY2tpbmcgYW5kIGNvbmN1cnJlbmN5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAyMTo0MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtsb2NrZGVwX2Fzc2VydF93aXBoeSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2luY2x1ZGUvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbmV0L2NmZzgwMjExLmg9NjgxMD1pbnQgd2lwaHlfcmVnaXN0ZXIoc3RydWN0IHdpcGh5ICp3aXBoeSk7XG4tLVxuaW5jbHVkZS9uZXQvY2ZnODAyMTEuaC02ODEyLS8qIHRoaXMgaXMgYSBkZWZpbmUgZm9yIGJldHRlciBlcnJvciByZXBvcnRpbmcgKGZpbGUvbGluZSkgKi9cbmluY2x1ZGUvbmV0L2NmZzgwMjExLmg6NjgxMzojZGVmaW5lIGxvY2tkZXBfYXNzZXJ0X3dpcGh5KHdpcGh5KSBsb2NrZGVwX2Fzc2VydF9oZWxkKFx1MDAyNih3aXBoeSktXHUwMDNlbXR4KVxuaW5jbHVkZS9uZXQvY2ZnODAyMTEuaC02ODE0LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAyMTo0MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0OTkxMAoJCQkJCQkJb3V0cHV0OiA0NgoJCQkJCQkJdGhvdWdodHM6IDExMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgUmVhbHRlayBXaUZpIERyaXZlciYjMzk7cyBMb2NraW5nIFN0cmF0ZWd5KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIFJlYWx0ZWsgZHJpdmVyIGNvZGUgYW5kIGltbWVkaWF0ZWx5IEkgc2VlIGBsb2NrZGVwX2Fzc2VydF93aXBoeWAuIFRoYXQmIzM5O3MgdGVsbGluZyBtZSwgcmlnaHQgb2ZmIHRoZSBiYXQsIHRoYXQgc29tZXdoZXJlIGluIHRoaXMgbG9naWMsIHRoZXkmIzM5O3JlIGV4cGVjdGluZyB0aGUgYHdpcGh5LSZndDttdHhgIG11dGV4IHRvIGJlIGhlbGQuIFRoZSBxdWVzdGlvbiB0aGF0IGltbWVkaWF0ZWx5IHNwcmluZ3MgdG8gbXkgbWluZCBpczogd2hlcmU/IFNwZWNpZmljYWxseSwgSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aG9zZSBjcml0aWNhbCBsaWZlY3ljbGUgZnVuY3Rpb25zOiBgcnR3ODlfb3BzX3N1c3BlbmRgIGFuZCBgcnR3ODlfb3BzX3Jlc3VtZWAuIEFyZSB0aGV5IHByb3Blcmx5IGFjcXVpcmluZyBhbmQgcmVsZWFzaW5nIHRoYXQgbXV0ZXg/IEFuZCB3aGF0IGFib3V0IHRoZSBTeXN0ZW0gRXJyb3IgUmVzZXQgKFNFUikgc2NlbmFyaW8sIHRyaWdnZXJlZCBieSBgc2VyX3Jlc2V0X21hY19iaW5kaW5nYCDigJMgZG9lcyB0aGF0IGFkaGVyZSB0byB0aGUgbG9jayYjMzk7cyBjb25zdHJhaW50cz8KClRvIGdldCBhIGJldHRlciBncmlwIG9uIGl0IEkgd2FudCB0byB0cmFjZSB0aGUgY29kZS4gTXkgYmVzdCBiZXQgaXMgdG8gY2hlY2sgYHNlcl9sMl9yZXNldF9zdF9wcmVfaGRsYCBpbiB0aGUgYHNlci5jYCBmaWxlIG9mIHRoZSBkcml2ZXIuIFRoYXQgc2hvdWxkIGdpdmUgbWUgdGhlIHByZWNpc2UgY29udGV4dCBuZWVkZWQgdG8gZXZhbHVhdGUgd2hldGhlciB0aGUgbXV0ZXggaXMgY29ycmVjdGx5IGhlbGQgb3Igbm90LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAyMTo0MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzZXJfbDJfcmVzZXRfc3RfcHJlX2hkbCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9zZXIuYz02NDU9c3RhdGljIGludCBydHc4OV9zZXJfZndfYmFja3RyYWNlX2R1bXAoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCAqYnVmLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvc2VyLmMtNjk0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9zZXIuYzo2OTU6c3RhdGljIHZvaWQgc2VyX2wyX3Jlc2V0X3N0X3ByZV9oZGwoc3RydWN0IHJ0dzg5X3NlciAqc2VyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9zZXIuYy02OTYte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvc2VyLmM9NzI3PXN0YXRpYyB2b2lkIHNlcl9sMl9yZXNldF9zdF9oZGwoc3RydWN0IHJ0dzg5X3NlciAqc2VyLCB1OCBldnQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9zZXIuYy03MzQtXHRcdHNlci1cdTAwM2Vzd19jbnQubDImIzQzOyYjNDM7O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9zZXIuYzo3MzU6XHRcdHNlcl9sMl9yZXNldF9zdF9wcmVfaGRsKHNlcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3Nlci5jLTczNi1cdFx0d2lwaHlfdW5sb2NrKHJ0d2Rldi1cdTAwM2Vody1cdTAwM2V3aXBoeSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDIxOjQxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUwNjMwCgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogOTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYW5hbHlzaXMgb2YgdGhhdCBjb2RlIHNuaXBwZXQ6CgoqKkRlYnVnZ2luZyBhIE5ldHdvcmsgRHJpdmVyIFJlc2V0KioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIGBzZXJfbDJfcmVzZXRfc3RfaGRsYCwgbGlrZWx5IHRyeWluZyB0byB1bmRlcnN0YW5kIGEgbmV0d29yayByZXNldCBzZXF1ZW5jZS4gVGhlIGNvcmUgb2YgdGhpcyBzZWVtcyB0byBiZTogd2UmIzM5O3JlIGdyYWJiaW5nIHRoZSB3aXBoeSBsb2NrIHdpdGggYHdpcGh5X2xvY2socnR3ZGV2LSZndDtody0mZ3Q7d2lwaHkpO2AgKGxvb2tzIGxpa2UgaXQmIzM5O3MgaGFwcGVuaW5nIHJpZ2h0IGJlZm9yZSBsaW5lIDczNSwgZ2l2ZSBvciB0YWtlIGEgZmV3IGxpbmVzKS4gQWZ0ZXIgdGhlIGxvY2sgaXMgYWNxdWlyZWQsIHRoZSBjYWxsIHByb2NlZWRzIHdpdGggYHNlcl9sMl9yZXNldF9zdF9wcmVfaGRsKHNlcik7YC4gU28sIHdoYXRldmVyIHByZS1oYW5kbGluZyBuZWVkcyB0byBoYXBwZW4gZm9yIHRoZSByZXNldCBpcyBlbmNhcHN1bGF0ZWQgdGhlcmUuIEZpbmFsbHksIHdlIG1ha2Ugc3VyZSB3ZSByZWxlYXNlIHRoZSBsb2NrIHdpdGggYHdpcGh5X3VubG9jayguLi4pYC4gVGhpcyBsb29rcyBsaWtlIHN0YW5kYXJkIGxvY2svdW5sb2NrIHByb2NlZHVyZSwgbGlrZWx5IHByb3RlY3Rpbmcgc2hhcmVkIGhhcmR3YXJlIG9yIGRhdGEgc3RydWN0dXJlcy4KClRvIGNvbmZpcm0gdGhlIGNvbnRleHQsIEkgc2hvdWxkIHF1aWNrbHkganVtcCBvdmVyIHRvIGBzZXIuY2AgYW5kIHRha2UgYSBsb29rIGFyb3VuZCBsaW5lIDczMC4gSSYjMzk7bSBhZnRlciB0aGUgZnVsbCBwaWN0dXJlIGhlcmUsIG5vdCBqdXN0IG9uZSBzbWFsbCBwaWVjZS4gVGhlIHN1cnJvdW5kaW5nIGNvZGUgd2lsbCBwcm92aWRlIHRoZSBjb250ZXh0IEkgbmVlZCB0byByZWFsbHkgdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMgbG9ja2luZyBzZXF1ZW5jZSBhbmQgaG93IGl0IGZpdHMgaW50byB0aGUgb3ZlcmFsbCByZXNldCBwcm9jZXNzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAyMTo0MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvc2VyLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA3MjUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMzAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDcyNTpcdH1cbiA3MjY6XHRcbiA3Mjc6XHRzdGF0aWMgdm9pZCBzZXJfbDJfcmVzZXRfc3RfaGRsKHN0cnVjdCBydHc4OV9zZXIgKnNlciwgdTggZXZ0KVxuIDcyODpcdHtcbiA3Mjk6XHRcdHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiA9IGNvbnRhaW5lcl9vZihzZXIsIHN0cnVjdCBydHc4OV9kZXYsIHNlcik7XG4gNzMwOlx0XG4gNzMxOlx0XHRzd2l0Y2ggKGV2dCkge1xuIDczMjpcdFx0Y2FzZSBTRVJfRVZfU1RBVEVfSU46XG4gNzMzOlx0XHRcdHdpcGh5X2xvY2socnR3ZGV2LVx1MDAzZWh3LVx1MDAzZXdpcGh5KTtcbiA3MzQ6XHRcdFx0c2VyLVx1MDAzZXN3X2NudC5sMiYjNDM7JiM0Mzs7XG4gNzM1Olx0XHRcdHNlcl9sMl9yZXNldF9zdF9wcmVfaGRsKHNlcik7XG4gNzM2Olx0XHRcdHdpcGh5X3VubG9jayhydHdkZXYtXHUwMDNlaHctXHUwMDNld2lwaHkpO1xuIDczNzpcdFxuIDczODpcdFx0XHRpZWVlODAyMTFfcmVzdGFydF9odyhydHdkZXYtXHUwMDNlaHcpO1xuIDczOTpcdFx0XHRzZXJfc2V0X2FsYXJtKHNlciwgU0VSX1JFQ0ZHX1RJTUVPVVQsIFNFUl9FVl9MMl9SRUNGR19USU1FT1VUKTtcbiA3NDA6XHRcdFx0YnJlYWs7XG4gNzQxOlx0XG4gNzQyOlx0XHRjYXNlIFNFUl9FVl9MMl9SRUNGR19USU1FT1VUOlxuIDc0MzpcdFx0XHRydHc4OV9pbmZvKHJ0d2RldiwgXCYjMzQ7RXJyOiBzZXIgTDIgcmUtY29uZmlnIHRpbWVvdXRcXG5cJiMzNDspO1xuIDc0NDpcdFx0XHRmYWxsdGhyb3VnaDtcbiA3NDU6XHRcdGNhc2UgU0VSX0VWX0wyX1JFQ0ZHX0RPTkU6XG4gNzQ2Olx0XHRcdHNlcl9zdGF0ZV9nb3RvKHNlciwgU0VSX0lETEVfU1QpO1xuIDc0NzpcdFx0XHRicmVhaztcbiA3NDg6XHRcbiA3NDk6XHRcdGNhc2UgU0VSX0VWX1NUQVRFX09VVDpcbiA3NTA6XHRcdFx0c2VyX2RlbF9hbGFybShzZXIpO1xuIDc1MTpcdFx0XHRicmVhaztcbiA3NTI6XHRcbiA3NTM6XHRcdGRlZmF1bHQ6XG4gNzU0Olx0XHRcdGJyZWFrO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAyMTo0MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MTUxNAoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDQ1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuCgoqKkludmVzdGlnYXRpbmcgdGhlIGBydHc4OV93b3dfc3dhcF9md2AgRnVuY3Rpb24qKgoKUmlnaHQsIG15IGZvY3VzIGlzIG5vdyBvbiBgcnR3ODlfd293X3N3YXBfZndgLiBUaGUgaW1tZWRpYXRlIHF1ZXN0aW9uIHRoYXQgc3ByaW5ncyB0byBtaW5kLCBhcyBhbHdheXMsIGlzIGFib3V0IHBvdGVudGlhbCBjb25jdXJyZW5jeSBpc3N1ZXMuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIHZlcmlmeSB3aGV0aGVyIHRoZSBgd2lwaHlgIGxvY2sgaXMgYXBwcm9wcmlhdGVseSBoZWxkIHdpdGhpbiB0aGF0IGZ1bmN0aW9uLiBFbnN1cmluZyB0aGF0IGxldmVsIG9mIHByb3RlY3Rpb24gaXMgcGFyYW1vdW50IHRvIGF2b2lkaW5nIHN1YnRsZSByYWNlIGNvbmRpdGlvbnMgdGhhdCBjb3VsZCBsZWFkIHRvIGludGVybWl0dGVudCBmYWlsdXJlcywgZXNwZWNpYWxseSBpbiBhIGRyaXZlciBkZWFsaW5nIHdpdGggZmlybXdhcmUgc3dhcHBpbmcsIHdoZXJlIHRpbWluZyBpcyBjcml0aWNhbC4KClNvLCB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gdHJhY2sgZG93biBhbGwgdGhlIGNhbGwgc2l0ZXMgb2YgYHJ0dzg5X3dvd19zd2FwX2Z3YC4gVW5kZXJzdGFuZGluZyAqd2hlcmUqIHRoaXMgZnVuY3Rpb24gaXMgaW52b2tlZCB3aWxsIGdpdmUgbWUgdGhlIGNydWNpYWwgY29udGV4dCBJIG5lZWQgdG8gYXNzZXNzIGl0cyB0aHJlYWQgc2FmZXR5IGFuZCBkZXRlcm1pbmUgaWYgdGhlIGxvY2tpbmcgc3RyYXRlZ3kgaXMgYWRlcXVhdGUgaW4gZWFjaCBzY2VuYXJpby4gS25vd2luZyB0aGUgY2FsbCBncmFwaCB3aWxsIHJlYWxseSBoZWxwIHRvIGRldGVybWluZSBpZiB3ZSBhcmUgc2VlaW5nIHRoZSBleHBlY3RlZCBiZWhhdmlvdXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDIxOjQxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3J0dzg5X3dvd19zd2FwX2Z3JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jPTEyNDA9c3RhdGljIGludCBydHc4OV93b3dfY2hlY2tfZndfc3RhdHVzKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgYm9vbCB3b3dfZW5hYmxlKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtMTI1NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmM6MTI1NjpzdGF0aWMgaW50IHJ0dzg5X3dvd19zd2FwX2Z3KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgYm9vbCB3b3cpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTEyNTcte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmM9MTcwOD1zdGF0aWMgaW50IHJ0dzg5X3dvd19lbmFibGUoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtMTcyMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmM6MTcyMjpcdHJldCA9IHJ0dzg5X3dvd19zd2FwX2Z3KHJ0d2RldiwgdHJ1ZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTE3MjMtXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYz0xNzQ5PXN0YXRpYyBpbnQgcnR3ODlfd293X2Rpc2FibGUoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtMTc2OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmM6MTc2OTpcdHJldCA9IHJ0dzg5X3dvd19zd2FwX2Z3KHJ0d2RldiwgZmFsc2UpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy0xNzcwLVx0aWYgKHJldCkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAyMTo0MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MjI2NwoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDY0OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBSZWFsdGVrIHJ0dzg5IERyaXZlciYjMzk7cyBGdXp6aW5nIFBvdGVudGlhbCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIHRob3VnaHQgd2FzIHRvIHF1aWNrbHkgYXNzZXNzIGBydHc4OV93b3dfZW5hYmxlYCBhbmQgYHJ0dzg5X3dvd19kaXNhYmxlYCBhbmQgaG93IHRoZXkgaW50ZXJhY3Qgd2l0aCBzdXNwZW5kL3Jlc3VtZSwgbm90aW5nIHRoYXQgYHdpcGh5LSZndDttdHhgIGlzIGhlbGQgZHVyaW5nIHRoZXNlIG9wZXJhdGlvbnMgaW4gdGhlIG1hYzgwMjExIGZyYW1ld29yay4gQnV0LCB0aGF0JiMzOTtzIG5vdCB0aGUgY3J1Y2lhbCBxdWVzdGlvbiBoZXJlLiBUaGUgcmVhbCBxdWVzdGlvbiBpcyB3aGV0aGVyIHN5emthbGxlciAqY2FuKiBnZXQgYXQgaXQuCgpGaXJzdCwgbGV0JiMzOTtzIGJlIG1ldGhvZGljYWwuIFdlIG5lZWQgdG8gZXZhbHVhdGUgaWYgcnR3ODkgaXMgKnJlYWNoYWJsZSogdmlhIHN5emthbGxlci4gVGhlIGRvY3VtZW50YXRpb24gcHJvdmlkZXMgY2xlYXIgbmVnYXRpdmUgYW5kIHBvc2l0aXZlIGNyaXRlcmlhLiBXZSBuZWVkIHRvIGF2b2lkIHRob3NlICYjMzQ7c3RydWN0dXJhbGx5IHVucmVhY2hhYmxlJiMzNDsgaGFyZHdhcmUgZHJpdmVycyBzdWNoIGFzIHRob3NlIHRoYXQgcmVxdWlyZSBzcGVjaWZpYyBBU0lDcyBvciBQQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBhIHN0YW5kYXJkIFFFTVUgZW52aXJvbm1lbnQuIEFsc28sIHdlIG5lZWQgdG8gc3RheSBhd2F5IGZyb20gdGhlIGRyaXZlcnMgdGhhdCBhcmUgdHJpZ2dlcmVkIG9ubHkgZHVyaW5nIHVucGx1ZyBldmVudHMuIE9uIHRoZSBmbGlwIHNpZGUsIHdlIHdhbnQgdGhpbmdzIHRoYXQgYXJlIGVhc2lseSBhY2Nlc3NpYmxlLCBzdWNoIGFzIHRocm91Z2ggdmlydHVhbCBidXNlcyBsaWtlIHZpcnRpbywgVVNCIGdhZGdldCwgbmV0bGluaywgb3Igc29ja2V0cy4KCkFoLCB3YWl0LiAqVGhhdCYjMzk7cyogdGhlIGtleS4gSXMgcnR3ODkgYSBVU0IgZHJpdmVyPyBMZXQmIzM5O3MgY2hlY2suIFllcyEgTG9va2luZyB3aXRoaW4gdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2AgZGlyZWN0b3J5LCB0aGVyZSBhcmUgaW5kZWVkIFVTQiBkcml2ZXIgbW9kdWxlczogUlRXODlfODg1MUJVLCBSVFc4OV84ODUyQVUsIFJUVzg5Xzg4NTJCVSwgUlRXODlfODg1MkNVLCBhbmQgUlRXODlfODkyMkFVLiBUaGVzZSBtb2R1bGVzIHJlZ2lzdGVyIGEgYHVzYl9kcml2ZXJgIHdpdGggVVNCIElEcy4gVGhpcyBpcyBwcm9taXNpbmcuCgpOb3csIGRvZXMgc3l6a2FsbGVyICpzdXBwb3J0KiBmdXp6aW5nIFVTQiBkcml2ZXJzPyBJdCBkb2VzISBSZW1lbWJlciBgc3l6X3VzYl9jb25uZWN0YCwgYHN5el91c2JfY29udHJvbF9pb2AsIGFuZCBgc3l6X3VzYl9lcF93cml0ZWA/IFN5emthbGxlciB1c2VzIHRoZSBVU0IgUkFXIGdhZGdldCwgYSBkdW1teSBIQ0QsIGFuZCBVU0IgZW11bGF0aW9uIHRvIGludGVyYWN0IHdpdGggVVNCIGRldmljZXMuCgpTbywgd2hlbiBzeXprYWxsZXIgZW11bGF0ZXMgYSBVU0IgZGV2aWNlIHRoYXQgbWF0Y2hlcyBSZWFsdGVrJiMzOTtzIHZlbmRvci9kZXZpY2UgSUQsIGBydHc4OV91c2JfcHJvYmVgIHdpbGwgYmUgY2FsbGVkLiBOb3cgd2UgbmVlZCB0byBkZXRlcm1pbmUgaWYgdGhpcyBvcGVucyB0aGUgZG9vciB0byBmdXp6aW5nIHRoZSBSZWFsdGVrIGRyaXZlci4gVGhpcyBpcyB0aGUgY3J1Y2lhbCBwb2ludCEgRG9lcyBgcnR3ODlfdXNiX3Byb2JlYCBsb2FkIGZpcm13YXJlPyBEb2VzIGl0IHRhbGsgdG8gaGFyZHdhcmUgZGlyZWN0bHk/IExldCYjMzk7cyBsb29rIGF0IGBydHc4OV9jb3JlX2luaXRgLCBgcnR3ODlfY29yZV9yZWdpc3RlcmAsIGFuZCB0aGUgZmlybXdhcmUgbG9hZGluZyBwcm9jZXNzIHdpdGhpbiBgcnR3ODlgLiBJZiB0aGVyZSYjMzk7cyBmaXJtd2FyZSBpbnZvbHZlZCwgdGhhdCYjMzk7cyBhIHZlY3Rvci4gSWYgd2UgY2FuIHJlYWNoIHRoZSBoYXJkd2FyZSB0aHJvdWdoIGEgJiMzNDtmdXp6YWJsZSYjMzQ7IHBhdGh3YXkgdmlhIHRoZSBVU0IgaW50ZXJmYWNlLCB0aGVuIHdlIGhhdmUgYSBwb3NpdGl2ZSBjYW5kaWRhdGUuIFdlIG5lZWQgdG8gYW5hbHl6ZSB0aGlzIG1vcmUgY2xvc2VseSwgYnV0IHRoZSBpbml0aWFsIHNpZ25zIGxvb2sgdmVyeSBnb29kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAyMTo0MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtyZXF1ZXN0X2Zpcm13YXJlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM9OTk0PXJ0dzg5X2Vhcmx5X2Z3X2ZlYXR1cmVfcmVjb2duaXplKHN0cnVjdCBkZXZpY2UgKmRldmljZSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTAxMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYzoxMDExOlx0XHRyZXQgPSByZXF1ZXN0X2Zpcm13YXJlKFx1MDAyNmZpcm13YXJlLCBmd19uYW1lLCBkZXZpY2UpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTEwMTItXHRcdGlmICghcmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jPTIwNjk9c3RhdGljIGludCBydHc4OV9sb2FkX2Zpcm13YXJlX3JlcShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTIwODQtXHRlbHNlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM6MjA4NTpcdFx0cmV0ID0gcmVxdWVzdF9maXJtd2FyZShcdTAwMjZyZXEtXHUwMDNlZmlybXdhcmUsIGZ3X25hbWUsIHJ0d2Rldi1cdTAwM2VkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTIwODYtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDIxOjQxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUzODY2CgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMTAxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludmVzdGlnYXRpbmcgdGhlIHJ0dzg5IFdpLUZpIERyaXZlcioqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgYHJ0dzg5YCBkcml2ZXIuIFNpbmNlIEkgc2VlIGBydHc4OWAsIG15IGZpcnN0IHRob3VnaHQgaXMgV2ktRmksIGFuZCB0aGUgbWVudGlvbiBvZiBVU0IgaW50ZXJmYWNlcyBjb25maXJtcyB0aGlzLiBUaGUgaW1tZWRpYXRlIGdvYWwgaXMgdG8gdW5kZXJzdGFuZCBpdHMgYnVpbGQgc3RhdHVzIGFuZCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIE15IHByb2Nlc3Mgd2lsbCBiZSB0byBzdGFydCBieSBleGFtaW5pbmcgdGhlIEtjb25maWcgZmlsZXMsIHNwZWNpZmljYWxseSBsb29raW5nIGZvciB0aG9zZSBuYW1lZCBhZnRlciB0aGUgZHJpdmVyIGZhbWlseTogYFJUVzg5YCwgYFJUVzg5X0NPUkVgLCBgUlRXODlfUENJYCwgYFJUVzg5X1VTQmAsIGFuZCBzbyBvbi4gVW5kZXJzdGFuZGluZyB0aGVzZSB3aWxsIGxheSB0aGUgZ3JvdW5kd29yayBmb3IgdW5kZXJzdGFuZGluZyB0aGUgc3RydWN0dXJlIG9mIHRoZSByZWxldmFudCBmZWF0dXJlcy4gVGhlIGxpa2VseSBsb2NhdGlvbiBmb3IgdGhlc2UgS2NvbmZpZyBlbnRyaWVzIGlzIHRoZSBkaXJlY3RvcnkgcmVsYXRlZCB0byB0aGUgZHJpdmVyLCBhbmQgdGh1cyB0aGUgcGF0aCBgZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnYCB3aWxsIHByb3ZpZGUgdGhlIGluaXRpYWwgYW5kIG1vc3QgY29tcHJlaGVuc2l2ZSBvdmVydmlldy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMjE6NDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDg1Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wIE9SIEJTRC0zLUNsYXVzZVxuICAgMjpcdG1lbnVjb25maWcgUlRXODlcbiAgIDM6XHRcdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODAyLjExYXggd2lyZWxlc3MgY2hpcHMgc3VwcG9ydFwmIzM0O1xuICAgNDpcdFx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxuICAgNTpcdFx0aGVscFxuICAgNjpcdFx0ICBUaGlzIG1vZHVsZSBhZGRzIHN1cHBvcnQgZm9yIG1hYzgwMjExLWJhc2VkIHdpcmVsZXNzIGRyaXZlcnMgdGhhdFxuICAgNzpcdFx0ICBlbmFibGVzIFJlYWx0ZWsgSUVFRSA4MDIuMTFheCB3aXJlbGVzcyBjaGlwc2V0cy5cbiAgIDg6XHRcbiAgIDk6XHRcdCAgSWYgeW91IGNob29zZSB0byBidWlsZCBhIG1vZHVsZSwgaXQmIzM5O2xsIGJlIGNhbGxlZCBydHc4OS5cbiAgMTA6XHRcbiAgMTE6XHRpZiBSVFc4OVxuICAxMjpcdFxuICAxMzpcdGNvbmZpZyBSVFc4OV9DT1JFXG4gIDE0Olx0XHR0cmlzdGF0ZVxuICAxNTpcdFx0c2VsZWN0IFdBTlRfREVWX0NPUkVEVU1QXG4gIDE2Olx0XG4gIDE3Olx0Y29uZmlnIFJUVzg5X1BDSVxuICAxODpcdFx0dHJpc3RhdGVcbiAgMTk6XHRcbiAgMjA6XHRjb25maWcgUlRXODlfVVNCXG4gIDIxOlx0XHR0cmlzdGF0ZVxuICAyMjpcdFxuICAyMzpcdGNvbmZpZyBSVFc4OV84ODUxQlxuICAyNDpcdFx0dHJpc3RhdGVcbiAgMjU6XHRcbiAgMjY6XHRjb25maWcgUlRXODlfODg1MkFcbiAgMjc6XHRcdHRyaXN0YXRlXG4gIDI4Olx0XG4gIDI5Olx0Y29uZmlnIFJUVzg5Xzg4NTJCX0NPTU1PTlxuICAzMDpcdFx0dHJpc3RhdGVcbiAgMzE6XHRcbiAgMzI6XHRjb25maWcgUlRXODlfODg1MkJcbiAgMzM6XHRcdHRyaXN0YXRlXG4gIDM0Olx0XG4gIDM1Olx0Y29uZmlnIFJUVzg5Xzg4NTJCVFxuICAzNjpcdFx0dHJpc3RhdGVcbiAgMzc6XHRcbiAgMzg6XHRjb25maWcgUlRXODlfODg1MkNcbiAgMzk6XHRcdHRyaXN0YXRlXG4gIDQwOlx0XG4gIDQxOlx0Y29uZmlnIFJUVzg5Xzg5MjJBXG4gIDQyOlx0XHR0cmlzdGF0ZVxuICA0MzpcdFxuICA0NDpcdGNvbmZpZyBSVFc4OV84OTIyRFxuICA0NTpcdFx0dHJpc3RhdGVcbiAgNDY6XHRcbiAgNDc6XHRjb25maWcgUlRXODlfODg1MUJFXG4gIDQ4Olx0XHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg4NTFCRSBQQ0kgd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNikgYWRhcHRlclwmIzM0O1xuICA0OTpcdFx0ZGVwZW5kcyBvbiBQQ0lcbiAgNTA6XHRcdHNlbGVjdCBSVFc4OV9DT1JFXG4gIDUxOlx0XHRzZWxlY3QgUlRXODlfUENJXG4gIDUyOlx0XHRzZWxlY3QgUlRXODlfODg1MUJcbiAgNTM6XHRcdGhlbHBcbiAgNTQ6XHRcdCAgU2VsZWN0IHRoaXMgb3B0aW9uIHdpbGwgZW5hYmxlIHN1cHBvcnQgZm9yIDg4NTFCRSBjaGlwc2V0XG4gIDU1Olx0XG4gIDU2Olx0XHQgIDgwMi4xMWF4IFBDSWUgd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNikgYWRhcHRlclxuICA1NzpcdFxuICA1ODpcdGNvbmZpZyBSVFc4OV84ODUxQlVcbiAgNTk6XHRcdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODg1MUJVIFVTQiB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2KSBhZGFwdGVyXCYjMzQ7XG4gIDYwOlx0XHRkZXBlbmRzIG9uIFVTQlxuICA2MTpcdFx0c2VsZWN0IFJUVzg5X0NPUkVcbiAgNjI6XHRcdHNlbGVjdCBSVFc4OV9VU0JcbiAgNjM6XHRcdHNlbGVjdCBSVFc4OV84ODUxQlxuICA2NDpcdFx0aGVscFxuICA2NTpcdFx0ICBTZWxlY3QgdGhpcyBvcHRpb24gd2lsbCBlbmFibGUgc3VwcG9ydCBmb3IgODg1MUJVIGNoaXBzZXRcbiAgNjY6XHRcbiAgNjc6XHRcdCAgODAyLjExYXggVVNCIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDYpIGFkYXB0ZXJcbiAgNjg6XHRcbiAgNjk6XHRjb25maWcgUlRXODlfODg1MkFFXG4gIDcwOlx0XHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg4NTJBRSBQQ0kgd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNikgYWRhcHRlclwmIzM0O1xuICA3MTpcdFx0ZGVwZW5kcyBvbiBQQ0lcbiAgNzI6XHRcdHNlbGVjdCBSVFc4OV9DT1JFXG4gIDczOlx0XHRzZWxlY3QgUlRXODlfUENJXG4gIDc0Olx0XHRzZWxlY3QgUlRXODlfODg1MkFcbiAgNzU6XHRcdGhlbHBcbiAgNzY6XHRcdCAgU2VsZWN0IHRoaXMgb3B0aW9uIHdpbGwgZW5hYmxlIHN1cHBvcnQgZm9yIDg4NTJBRSBjaGlwc2V0XG4gIDc3Olx0XG4gIDc4Olx0XHQgIDgwMi4xMWF4IFBDSWUgd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNikgYWRhcHRlclxuICA3OTpcdFxuICA4MDpcdGNvbmZpZyBSVFc4OV84ODUyQVVcbiAgODE6XHRcdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODg1MkFVIFVTQiB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2KSBhZGFwdGVyXCYjMzQ7XG4gIDgyOlx0XHRkZXBlbmRzIG9uIFVTQlxuICA4MzpcdFx0c2VsZWN0IFJUVzg5X0NPUkVcbiAgODQ6XHRcdHNlbGVjdCBSVFc4OV9VU0JcbiAgODU6XHRcdHNlbGVjdCBSVFc4OV84ODUyQVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAyMTo0MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NTMzMQoJCQkJCQkJb3V0cHV0OiAyMjIKCQkJCQkJCXRob3VnaHRzOiAxNjIxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgQW5hbHlzaXMgZm9yIFJlYWx0ZWsgUlRXODkgRHJpdmVyIEtleSBJdGVyYXRpb24gQ2hhbmdlcyoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgSSBzZWUgYSBkZXBlbmRlbmN5IHN0cnVjdHVyZTogYFJUVzg5YCByZWxpZXMgb24gYE1BQzgwMjExYC4gU3BlY2lmaWMgUlRXODkgVVNCIGRyaXZlcnMsIHN1Y2ggYXMgYFJUVzg5Xzg4NTFCVWAsIGRlcGVuZCBvbiBgVVNCYCBhbmQgc2VsZWN0IGBSVFc4OV9DT1JFYCBhbmQgYFJUVzg5X1VTQmAuICBUaGVyZSYjMzk7cyBhbHNvIGEgUENJIHZhcmlhbnQsIGBSVFc4OV84ODUxQkVgLCB0aGF0IGRlcGVuZHMgb24gYFBDSWAgYW5kIGFsc28gc2VsZWN0cyBgUlRXODlfQ09SRWAuCgpOb3csIHRoZSBjb3JlIG9mIHRoZSBtYXR0ZXI6IEkmIzM5O20gbG9va2luZyBhdCBjaGFuZ2VzIGluIGBjYW0uY2AgYW5kIGB3b3cuY2AuICBTcGVjaWZpY2FsbHksIHRoZSBjb2RlIGlzIHRyYW5zaXRpb25pbmcgZnJvbSBgaWVlZTgwMjExX2l0ZXJfa2V5c19yY3VgIHRvIGBpZWVlODAyMTFfaXRlcl9rZXlzYCB3aXRoaW4gdGhlIGBydHc4OV9jYW1fcmVzZXRfa2V5c2AsIGBydHc4OV93b3dfY29uc3RydWN0X2tleV9pbmZvYCwgYW5kIGBydHc4OV93b3dfdXBkYXRlX2tleV9pbmZvYCBmdW5jdGlvbnMuICBUaGlzIGNoYW5nZSBzZWVtcyB0byBpbmRpY2F0ZSBhIHNoaWZ0IGluIGhvdyBrZXkgaXRlcmF0aW9uIGlzIGhhbmRsZWQuIFRoZSBjcml0aWNhbCBwb2ludCBpcyB0aGF0IGBpZWVlODAyMTFfaXRlcl9rZXlzYCBjb250YWlucyBgbG9ja2RlcF9hc3NlcnRfd2lwaHkoaHctJmd0O3dpcGh5KWAsIG1lYW5pbmcgd2UmIzM5O3JlIGludHJvZHVjaW5nIG9yIHRpZ2h0ZW5pbmcgbG9ja2luZyByZXF1aXJlbWVudHMgcmVsYXRlZCB0byB0aGUgd2lwaHkuCgpUaGlzIGlzIGEgcmVkIGZsYWcsIHJpZ2h0PyAgVGhlIGRvY3VtZW50YXRpb24gY2xlYXJseSBzdGF0ZXMgdGhhdCBjaGFuZ2VzIGludHJvZHVjaW5nIG9yIG1vZGlmeWluZyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIGluIHJlYWNoYWJsZSBjb2RlICptdXN0KiBiZSBmdXp6ZWQsIHBhcnRpY3VsYXJseSBmb3IgZHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzLCBzdWNoIGFzIFVTQiBnYWRnZXQuICBDcnVjaWFsbHksIHRoZSBSVFc4OSBVU0IgZHJpdmVycyAoYHJ0dzg5Xzg4NTFidWAsIGBydHc4OV84ODUyYXVgLCBgcnR3ODlfODg1MmJ1YCwgYHJ0dzg5Xzg4NTJjdWAsIGFuZCBgcnR3ODlfODkyMmF1YCkgKmFyZSogcmVhY2hhYmxlIHZpYSBVU0IgZ2FkZ2V0IGVtdWxhdGlvbiB3aXRoaW4gU3l6a2FsbGVyLiAgRnVydGhlcm1vcmUsIG9wZXJhdGlvbnMgbGlrZSBubDgwMjExIG5ldGxpbmsgY29tbWFuZHMsIG1hYzgwMjExIGludGVyYWN0aW9ucywgc3VzcGVuZC9yZXN1bWUgY3ljbGVzLCBhbmQgU0VSIGVycm9yIGhhbmRsaW5nIGNhbiBleGVyY2lzZSB0aGUgd293bGFuIGFuZCBDQU0ga2V5IHJlc2V0IHJvdXRpbmVzLiAgVGhlc2UgYXJlIGFsbCBhdmVudWVzIHdoZXJlIHRoaXMgY2hhbmdlIGluIGtleSBpdGVyYXRpb24gY291bGQgaW50cm9kdWNlIG5ldywgb3IgdW5jb3ZlciBleGlzdGluZywgcmFjZSBjb25kaXRpb25zIG9yIGxvY2tpbmcgaXNzdWVzLgoKVGhlIG1haW4gc3ltYm9scyBJIG5lZWQgdG8gZm9jdXMgb24gYXJlOiBgcnR3ODlfY2FtX3Jlc2V0X2tleXNgLCBgcnR3ODlfd293X2NvbnN0cnVjdF9rZXlfaW5mb2AsIGFuZCBgcnR3ODlfd293X3VwZGF0ZV9rZXlfaW5mb2AsIHdoaWNoIGFyZSBkaXJlY3RseSBtb2RpZmllZCBieSB0aGUgcGF0Y2guIEFkZGl0aW9uYWwgc3ltYm9scyBvZiBpbnRlcmVzdDogYHJ0dzg5X3dvd19zdXNwZW5kYCwgYHJ0dzg5X3dvd19yZXN1bWVgLCBhbmQgYHNlcl9yZXNldF9tYWNfYmluZGluZ2AsIHdoaWNoIGFyZSBwb3RlbnRpYWxseSBpbmRpcmVjdGx5IGFmZmVjdGVkIGJ5IHRoZXNlIGNoYW5nZXMuCgpUbyBlbnN1cmUgdGhpcyBpcyB0ZXN0YWJsZSwgSSYjMzk7bGwgbmVlZCB0aGVzZSBjb25maWd1cmF0aW9ucyBlbmFibGVkOiBgUlRXODlgLCBgUlRXODlfQ09SRWAsIGBSVFc4OV9VU0JgLCBhbmQgYSBzcGVjaWZpYyBVU0IgZHJpdmVyIGxpa2UgYFJUVzg5Xzg4NTJBVWAgYWxvbmcgd2l0aCBgTUFDODAyMTFgLgoKVG8gc3VtbWFyaXplOiBUaGlzIHBhdGNoIHJlcXVpcmVzIGZ1enppbmcgZHVlIHRvIHRoZSBpbnRyb2R1Y3Rpb24gb2Ygd2lwaHkgbG9ja2luZyBhc3NlcnRpb25zIGR1cmluZyBrZXkgaXRlcmF0aW9uLCBwb3RlbnRpYWxseSBhZmZlY3Rpbmcgc3luY2hyb25pY2l0eSB3aXRoaW4gd293bGFuIGFuZCBDQU0ga2V5IHJlc2V0IHJvdXRpbmVzIGluIGEgVVNCIGFjY2Vzc2libGUgd2lyZWxlc3MgZHJpdmVyLiBJJiMzOTttIGNhbGxpbmcgaXQ6IHdvcnRoIGZ1enppbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDIxOjQxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtSVFc4OSYjMzQ7LAogICAgJiMzNDtSVFc4OV9DT1JFJiMzNDssCiAgICAmIzM0O1JUVzg5X1VTQiYjMzQ7LAogICAgJiMzNDtSVFc4OV84ODUyQVUmIzM0OywKICAgICYjMzQ7TUFDODAyMTEmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtydHc4OV9jYW1fcmVzZXRfa2V5cyYjMzQ7LAogICAgJiMzNDtydHc4OV93b3dfY29uc3RydWN0X2tleV9pbmZvJiMzNDssCiAgICAmIzM0O3J0dzg5X3dvd191cGRhdGVfa2V5X2luZm8mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcmVwbGFjZXMgUkNVLWJhc2VkIGtleSBpdGVyYXRpb24gKGllZWU4MDIxMV9pdGVyX2tleXNfcmN1KSB3aXRoIGllZWU4MDIxMV9pdGVyX2tleXMgaW4gcnR3ODkgQ0FNIGFuZCBXb1dMQU4gcGF0aHMuIGllZWU4MDIxMV9pdGVyX2tleXMgZW5mb3JjZXMgYSB3aXBoeSBtdXRleCBhc3NlcnRpb24gKGxvY2tkZXBfYXNzZXJ0X3dpcGh5KSwgY2hhbmdpbmcgbG9ja2luZyBhbmQgc3luY2hyb25pemF0aW9uIGFzc3VtcHRpb25zIGR1cmluZyBrZXkgcmVzZXQgYW5kIFdvV0xBTiBrZXkgY29uc3RydWN0aW9uL3VwZGF0ZXMuIFRoZSBkcml2ZXIgaXMgYWNjZXNzaWJsZSB2aWEgVVNCIGdhZGdldCBlbXVsYXRpb24gYW5kIHdvcnRoIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1JUVzg5JiMzNDssCiAgICAmIzM0O1JUVzg5X0NPUkUmIzM0OywKICAgICYjMzQ7UlRXODlfVVNCJiMzNDssCiAgICAmIzM0O1JUVzg5Xzg4NTJBVSYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3J0dzg5X2NhbV9yZXNldF9rZXlzJiMzNDssCiAgICAmIzM0O3J0dzg5X3dvd19jb25zdHJ1Y3Rfa2V5X2luZm8mIzM0OywKICAgICYjMzQ7cnR3ODlfd293X3VwZGF0ZV9rZXlfaW5mbyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZXBsYWNlcyBSQ1UtYmFzZWQga2V5IGl0ZXJhdGlvbiAoaWVlZTgwMjExX2l0ZXJfa2V5c19yY3UpIHdpdGggaWVlZTgwMjExX2l0ZXJfa2V5cyBpbiBydHc4OSBDQU0gYW5kIFdvV0xBTiBwYXRocy4gaWVlZTgwMjExX2l0ZXJfa2V5cyBlbmZvcmNlcyBhIHdpcGh5IG11dGV4IGFzc2VydGlvbiAobG9ja2RlcF9hc3NlcnRfd2lwaHkpLCBjaGFuZ2luZyBsb2NraW5nIGFuZCBzeW5jaHJvbml6YXRpb24gYXNzdW1wdGlvbnMgZHVyaW5nIGtleSByZXNldCBhbmQgV29XTEFOIGtleSBjb25zdHJ1Y3Rpb24vdXBkYXRlcy4gVGhlIGRyaXZlciBpcyBhY2Nlc3NpYmxlIHZpYSBVU0IgZ2FkZ2V0IGVtdWxhdGlvbiBhbmQgd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMjE6NDE8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAyMTo0MTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlcGxhY2VzIGByY3VfcmVhZF9sb2NrKClgIC8gYGllZWU4MDIxMV9pdGVyX2tleXNfcmN1KClgIHdpdGggYGllZWU4MDIxMV9pdGVyX2tleXMoKWAgaW4gdGhlIFJlYWx0ZWsgcnR3ODkgZHJpdmVyIChgcnR3ODlfY2FtX3Jlc2V0X2tleXNgLCBgcnR3ODlfd293X2NvbnN0cnVjdF9rZXlfaW5mb2AsIGFuZCBgcnR3ODlfd293X3VwZGF0ZV9rZXlfaW5mb2ApLlxuXG5UaGlzIGNoYW5nZSBwdXJlbHkgYWRqdXN0cyBob3cgdGhlIGRyaXZlciBpdGVyYXRlcyBvdmVyIG1hYzgwMjExIGtleXMsIHJlbHlpbmcgb24gdGhlIGNhbGxlciBob2xkaW5nIHRoZSB3aXBoeSBsb2NrIChgbG9ja2RlcF9hc3NlcnRfd2lwaHlgKSBpbnN0ZWFkIG9mIGVudGVyaW5nIGFuIFJDVSByZWFkLXNpZGUgY3JpdGljYWwgc2VjdGlvbi5cblxuVGhlcmUgYXJlIG5vIG5ldyBtZW1vcnkgYWxsb2NhdGlvbnMsIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUgYWNjZXNzZXMsIGluZm8tbGVha3MgdG8gdXNlcnNwYWNlLCBvciBhbHRlcmVkIGJ1ZmZlciBib3VuZHMuIEFueSBwb3RlbnRpYWwgbG9ja2luZyBpc3N1ZXMgKHN1Y2ggYXMgbWlzc2luZyB3aXBoeSBsb2NrKSBvciBzeW5jaHJvbml6YXRpb24vbWVtb3J5IHNhZmV0eSBidWdzIChzdWNoIGFzIGNvbmN1cnJlbnQgbGlzdCBhY2Nlc3Mgb3IgdXNlLWFmdGVyLWZyZWUpIGFyZSBkZXRlY3RhYmxlIGJ5IExPQ0tERVAgYW5kIEtBU0FOLiBUaGVyZWZvcmUsIEtNU0FOIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0CgpGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDQ4OTY3MjYxMjJhNDljMmY2OTc0ZDcyZGZjYjZlYzMyZDQxNGU3OGMKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIFNlcCA4IDIxOjQwOjI4IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jYW0uYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY2FtLmMKaW5kZXggN2M2MmVjZTEzN2QwMS4uMjJmMjFhMDRhOTZkMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jYW0uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NhbS5jCkBAIC02MDUsOSAmIzQzOzYwNSw3IEBAIHZvaWQgcnR3ODlfY2FtX2RlaW5pdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHN0cnVjdCBydHc4OV92aWZfbGluayAqcnR3dmlmX2xpCiAKIHZvaWQgcnR3ODlfY2FtX3Jlc2V0X2tleXMoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KQogewotCXJjdV9yZWFkX2xvY2soKTsKLQlpZWVlODAyMTFfaXRlcl9rZXlzX3JjdShydHdkZXYtJmd0O2h3LCBOVUxMLCBydHc4OV9jYW1fcmVzZXRfa2V5X2l0ZXIsIHJ0d2Rldik7Ci0JcmN1X3JlYWRfdW5sb2NrKCk7CiYjNDM7CWllZWU4MDIxMV9pdGVyX2tleXMocnR3ZGV2LSZndDtodywgTlVMTCwgcnR3ODlfY2FtX3Jlc2V0X2tleV9pdGVyLCBydHdkZXYpOwogfQogCiBzdGF0aWMgaW50IHJ0dzg5X2NhbV9nZXRfYXZhaWxfYWRkcl9jYW0oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMKaW5kZXggMmRmYTI0YzU0ZTdkNy4uMGJmMzQ2OTJjN2NlMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jCkBAIC00NzMsMTAgJiM0Mzs0NzMsOCBAQCBzdGF0aWMgdm9pZCBydHc4OV93b3dfY29uc3RydWN0X2tleV9pbmZvKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldikKIAlzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqd293X3ZpZiA9IHJ0d3ZpZl9saW5rX3RvX3ZpZihydHd2aWZfbGluayk7CiAJYm9vbCBlcnIgPSBmYWxzZTsKIAotCXJjdV9yZWFkX2xvY2soKTsKLQlpZWVlODAyMTFfaXRlcl9rZXlzX3JjdShydHdkZXYtJmd0O2h3LCB3b3dfdmlmLAotCQkJCXJ0dzg5X3dvd19nZXRfa2V5X2luZm9faXRlciwgJmFtcDtlcnIpOwotCXJjdV9yZWFkX3VubG9jaygpOwomIzQzOwlpZWVlODAyMTFfaXRlcl9rZXlzKHJ0d2Rldi0mZ3Q7aHcsIHdvd192aWYsCiYjNDM7CQkJICAgIHJ0dzg5X3dvd19nZXRfa2V5X2luZm9faXRlciwgJmFtcDtlcnIpOwogCiAJaWYgKGVycikgewogCQlydHc4OV93b3dfa2V5X2NsZWFyKHJ0d2Rldik7CkBAIC02OTUsMTAgJiM0Mzs2OTMsOCBAQCBzdGF0aWMgdm9pZCBydHc4OV93b3dfdXBkYXRlX2tleV9pbmZvKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgYm9vbCByeF9yZWFkeSkKIAlzdHJ1Y3QgaWVlZTgwMjExX2Jzc19jb25mICpic3NfY29uZjsKIAlzdHJ1Y3QgaWVlZTgwMjExX2tleV9jb25mICprZXk7CiAKLQlyY3VfcmVhZF9sb2NrKCk7Ci0JaWVlZTgwMjExX2l0ZXJfa2V5c19yY3UocnR3ZGV2LSZndDtodywgd293X3ZpZiwKLQkJCQlydHc4OV93b3dfc2V0X2tleV9pbmZvX2l0ZXIsICZhbXA7ZGF0YSk7Ci0JcmN1X3JlYWRfdW5sb2NrKCk7CiYjNDM7CWllZWU4MDIxMV9pdGVyX2tleXMocnR3ZGV2LSZndDtodywgd293X3ZpZiwKJiM0MzsJCQkgICAgcnR3ODlfd293X3NldF9rZXlfaW5mb19pdGVyLCAmYW1wO2RhdGEpOwogCiAJaWYgKGRhdGEuZXJyb3IpIHsKIAkJcnR3ODlfZGVidWcocnR3ZGV2LCBSVFc4OV9EQkdfV09XLCAmIzM0OyVzIGVycm9yXG4mIzM0OywgX19mdW5jX18pOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MS8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMjE6NDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjgxOAoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDI3MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgVGhpcyBMaW51eCBLZXJuZWwgUGF0Y2ggZm9yIEtNU0FOIEZ1enppbmcgTmVlZHMqKgoKT2theSwgc28gSSBuZWVkIHRvIGRlY2lkZSBpZiB0aGlzIHBhdGNoIHNlcmllcyBuZWNlc3NpdGF0ZXMgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBydW4uIExldCYjMzk7cyBicmVhayBpdCBkb3duLiBJdCBsb29rcyBsaWtlIHRoZSBtYWluIGNoYW5nZSBpcyBpbiB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYCBkaXJlY3RvcnksIHNwZWNpZmljYWxseSBgY2FtLmNgIGFuZCBgd293LmNgLiBUaGUgY29yZSBvZiB0aGUgbW9kaWZpY2F0aW9uIGlzIHRoZSByZXBsYWNlbWVudCBvZiBgcmN1X3JlYWRfbG9jaygpYC9gaWVlZTgwMjExX2l0ZXJfa2V5c19yY3UoKWAvYHJjdV9yZWFkX3VubG9jaygpYCBzZXF1ZW5jZXMgd2l0aCBhIHNpbXBsZSBgaWVlZTgwMjExX2l0ZXJfa2V5cygpYC4gVGhpcyBwYXR0ZXJuIHJlcGVhdHMgaW4gYSBjb3VwbGUgb2YgcGxhY2VzIHdpdGhpbiB0aG9zZSBmaWxlcy4KCk15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHRoaXMgaXMgYSBjaGFuZ2UgaW52b2x2aW5nIFJDVSAoUmVhZC1Db3B5LVVwZGF0ZSkgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXMgaW4gYSB3aXJlbGVzcyBkcml2ZXIgY29udGV4dC4gVGhpcyBpbW1lZGlhdGVseSBmbGFncyBhIHBvdGVudGlhbCBhcmVhIGZvciBmdXp6aW5nIGNvbnNpZGVyYXRpb24uIFRoZSByZW1vdmFsIG9mIFJDVSBzdWdnZXN0cyBhIHNoaWZ0IGluIGhvdyBrZXkgaXRlcmF0aW9uIGlzIGhhbmRsZWQuIElzIGl0IHN0aWxsIHNhZmU/IERpZCB0aGV5IG1vdmUgdGhlIGxvY2tpbmcgdG8gYW5vdGhlciBwb2ludD8gSXMgdGhlcmUgYSBzdWJ0bGUgcmFjZSBjb25kaXRpb24gdGhleSByZW1vdmVkPwoKVG8gZ2V0IGEgY2xlYXJlciBwaWN0dXJlIGFuZCBkZXRlcm1pbmUgdGhlIGZ1enppbmcgaW1wbGljYXRpb25zLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgbnVhbmNlcyBvZiB0aGUgZnVuY3Rpb25zIGludm9sdmVkLiBJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgZ3JlcCB0aHJvdWdoIHRoZSBrZXJuZWwgc291cmNlIGFuZCBwb3NzaWJseSByZWFkIHRoZSBmaWxlcyBjb250YWluaW5nIGBpZWVlODAyMTFfaXRlcl9rZXlzYCBhbmQgYGllZWU4MDIxMV9pdGVyX2tleXNfcmN1YCB0byBzZWUgaG93IHRob3NlIGFyZSBpbXBsZW1lbnRlZCBhbmQsIG1vcmUgaW1wb3J0YW50bHksIHdoYXQgY29udGV4dCB0aGV5IGFyZSB1c2VkIHdpdGhpbi4gVW5kZXJzdGFuZGluZyB0aGUgZGF0YSBzdHJ1Y3R1cmVzIGFuZCBjb250cm9sIGZsb3cgYXJvdW5kIHRoZXNlIGtleSBpdGVyYXRpb25zIGlzIGNydWNpYWwuIFRoZSBmYWN0IHRoYXQgdGhpcyBpbXBhY3RzIGJvdGggYGNhbS5jYCBhbmQgYHdvdy5jYCBzdWdnZXN0cyBhIG1vcmUgZ2VuZXJhbCBwYXR0ZXJuLCBpbmNyZWFzaW5nIHRoZSBsaWtlbGlob29kIG9mIGEgc3VidGxlLCBidXQgc3lzdGVtLXdpZGUsIGlzc3VlLiBJIG5lZWQgdG8gYmUgc3VyZSB0aGF0IHRoZXNlIGNoYW5nZXMgYXJlIG5vdCBpbnRyb2R1Y2luZywgb3IgZXhwb3NpbmcsIGFueSBuZXcgcmFjZSBjb25kaXRpb25zIHRoYXQgY291bGQgbGVhZCB0byBtZW1vcnkgY29ycnVwdGlvbiBvciBkYXRhIHJhY2VzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQyLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAyMTo0MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpZWVlODAyMTFfaXRlcl9rZXlzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS9rZXkuYz0xMDAxPWllZWU4MDIxMV9rZXlfaXRlcihzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbi0tXG5uZXQvbWFjODAyMTEva2V5LmMtMTAxOS1cbm5ldC9tYWM4MDIxMS9rZXkuYzoxMDIwOnZvaWQgaWVlZTgwMjExX2l0ZXJfa2V5cyhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbm5ldC9tYWM4MDIxMS9rZXkuYy0xMDIxLVx0XHRcdCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxuLS1cbm5ldC9tYWM4MDIxMS9rZXkuYy0xMDQ2LX1cbm5ldC9tYWM4MDIxMS9rZXkuYzoxMDQ3OkVYUE9SVF9TWU1CT0woaWVlZTgwMjExX2l0ZXJfa2V5cyk7XG5uZXQvbWFjODAyMTEva2V5LmMtMTA0OC1cbm5ldC9tYWM4MDIxMS9rZXkuYz0xMDQ5PXN0YXRpYyB2b2lkXG5uZXQvbWFjODAyMTEva2V5LmM6MTA1MDpfaWVlZTgwMjExX2l0ZXJfa2V5c19yY3Uoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG5uZXQvbWFjODAyMTEva2V5LmMtMTA1MS1cdFx0XHQgc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4tLVxubmV0L21hYzgwMjExL2tleS5jLTEwNjQtXG5uZXQvbWFjODAyMTEva2V5LmM6MTA2NTp2b2lkIGllZWU4MDIxMV9pdGVyX2tleXNfcmN1KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxubmV0L21hYzgwMjExL2tleS5jLTEwNjYtXHRcdFx0ICAgICBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxuLS1cbm5ldC9tYWM4MDIxMS9rZXkuYy0xMDc4LVx0XHRzZGF0YSA9IHZpZl90b19zZGF0YSh2aWYpO1xubmV0L21hYzgwMjExL2tleS5jOjEwNzk6XHRcdF9pZWVlODAyMTFfaXRlcl9rZXlzX3JjdShodywgc2RhdGEsIGl0ZXIsIGl0ZXJfZGF0YSk7XG5uZXQvbWFjODAyMTEva2V5LmMtMTA4MC1cdH0gZWxzZSB7XG5uZXQvbWFjODAyMTEva2V5LmMtMTA4MS1cdFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9yY3Uoc2RhdGEsIFx1MDAyNmxvY2FsLVx1MDAzZWludGVyZmFjZXMsIGxpc3QpXG5uZXQvbWFjODAyMTEva2V5LmM6MTA4MjpcdFx0XHRfaWVlZTgwMjExX2l0ZXJfa2V5c19yY3UoaHcsIHNkYXRhLCBpdGVyLCBpdGVyX2RhdGEpO1xubmV0L21hYzgwMjExL2tleS5jLTEwODMtXHR9XG5uZXQvbWFjODAyMTEva2V5LmMtMTA4NC19XG5uZXQvbWFjODAyMTEva2V5LmM6MTA4NTpFWFBPUlRfU1lNQk9MKGllZWU4MDIxMV9pdGVyX2tleXNfcmN1KTtcbm5ldC9tYWM4MDIxMS9rZXkuYy0xMDg2LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQzLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAyMTo0MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MjYzCgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkmIzM5O20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIHRoZSBNQUM4MDIxMSBLZXkgTWFuYWdlbWVudCBJbXBsZW1lbnRhdGlvbioqCgpPa2F5LCB0aW1lIHRvIGRpZyBpbnRvIHRoZSBgbmV0L21hYzgwMjExL2tleS5jYCBmaWxlLiBTcGVjaWZpY2FsbHksIEkmIzM5O20gZm9jdXNpbmcgb24gbGluZXMgMTAwMCB0byAxMDgwLiBUaGF0IHJlZ2lvbiB1c3VhbGx5IGRlYWxzIHdpdGgga2V5LXJlbGF0ZWQgbG9naWMsIGFuZCBiYXNlZCBvbiB0aGUgcmVjZW50IGNoYW5nZXMgSSYjMzk7dmUgYmVlbiB0cmFja2luZywgSSBoYXZlIGEgZmVlbGluZyB0aGUgc291cmNlIG9mIHRoZSBpc3N1ZSBJJiMzOTttIGNoYXNpbmcgaXMgd2l0aGluIHRoZSBrZXkgbWFuYWdlbWVudCBzeXN0ZW0uIFRoaXMgaXMgd2hlcmUgdGhlIGNvcmUga2V5IHNldHVwIGFuZCBoYW5kbGluZyBpcyBkb25lIHdpdGhpbiB0aGUgbWFjODAyMTEgZnJhbWV3b3JrLCBzbyB0aGlzIGlzIGEgZ3JlYXQgcGxhY2UgdG8gc3RhcnQgbXkgaW52ZXN0aWdhdGlvbi4gSSYjMzk7bSBleHBlY3RpbmcgdG8gc2VlIGZ1bmN0aW9ucyByZXNwb25zaWJsZSBmb3IgYWRkaW5nLCBkZWxldGluZywgYW5kIHVwZGF0aW5nIGNyeXB0b2dyYXBoaWMga2V5cywgcGVyaGFwcyB3aXRoIHJlbGF0ZWQgZXJyb3IgY2hlY2tpbmcuIEkmIzM5O20ga2VlbiB0byBzZWUgdGhlIGludGVybmFsIGRhdGEgc3RydWN0dXJlcyB1c2VkIHRvIHJlcHJlc2VudCBrZXlzLCB0b28sIGFzIHRoYXQgd2lsbCBpbGx1bWluYXRlIGhvdyB0aGVzZSBrZXlzIGFyZSBzdG9yZWQgYW5kIG1hbmFnZWQuIExldCYjMzk7cyBnZXQgY3JhY2tpbmcgYW5kIGlkZW50aWZ5IHdoZXJlIHRoZSBwcm9ibGVtIGlzLi4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDQvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDIxOjQyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExL2tleS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTAwMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA4NQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsxMDAwOlx0c3RhdGljIHZvaWRcbjEwMDE6XHRpZWVlODAyMTFfa2V5X2l0ZXIoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4xMDAyOlx0XHRcdCAgIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXG4xMDAzOlx0XHRcdCAgIHN0cnVjdCBpZWVlODAyMTFfa2V5ICprZXksXG4xMDA0Olx0XHRcdCAgIHZvaWQgKCppdGVyKShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbjEwMDU6XHRcdFx0XHRcdHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXG4xMDA2Olx0XHRcdFx0XHRzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqc3RhLFxuMTAwNzpcdFx0XHRcdFx0c3RydWN0IGllZWU4MDIxMV9rZXlfY29uZiAqa2V5LFxuMTAwODpcdFx0XHRcdFx0dm9pZCAqZGF0YSksXG4xMDA5Olx0XHRcdCAgIHZvaWQgKml0ZXJfZGF0YSlcbjEwMTA6XHR7XG4xMDExOlx0XHQvKiBza2lwIGtleXMgb2Ygc3RhdGlvbiBpbiByZW1vdmFsIHByb2Nlc3MgKi9cbjEwMTI6XHRcdGlmIChrZXktXHUwMDNlc3RhIFx1MDAyNlx1MDAyNiBrZXktXHUwMDNlc3RhLVx1MDAzZXJlbW92ZWQpXG4xMDEzOlx0XHRcdHJldHVybjtcbjEwMTQ6XHRcdGlmICghKGtleS1cdTAwM2VmbGFncyBcdTAwMjYgS0VZX0ZMQUdfVVBMT0FERURfVE9fSEFSRFdBUkUpKVxuMTAxNTpcdFx0XHRyZXR1cm47XG4xMDE2Olx0XHRpdGVyKGh3LCB2aWYsIGtleS1cdTAwM2VzdGEgPyBcdTAwMjZrZXktXHUwMDNlc3RhLVx1MDAzZXN0YSA6IE5VTEwsXG4xMDE3Olx0XHQgICAgIFx1MDAyNmtleS1cdTAwM2Vjb25mLCBpdGVyX2RhdGEpO1xuMTAxODpcdH1cbjEwMTk6XHRcbjEwMjA6XHR2b2lkIGllZWU4MDIxMV9pdGVyX2tleXMoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4xMDIxOlx0XHRcdFx0IHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXG4xMDIyOlx0XHRcdFx0IHZvaWQgKCppdGVyKShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbjEwMjM6XHRcdFx0XHRcdCAgICAgIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXG4xMDI0Olx0XHRcdFx0XHQgICAgICBzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqc3RhLFxuMTAyNTpcdFx0XHRcdFx0ICAgICAgc3RydWN0IGllZWU4MDIxMV9rZXlfY29uZiAqa2V5LFxuMTAyNjpcdFx0XHRcdFx0ICAgICAgdm9pZCAqZGF0YSksXG4xMDI3Olx0XHRcdFx0IHZvaWQgKml0ZXJfZGF0YSlcbjEwMjg6XHR7XG4xMDI5Olx0XHRzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCA9IGh3X3RvX2xvY2FsKGh3KTtcbjEwMzA6XHRcdHN0cnVjdCBpZWVlODAyMTFfa2V5ICprZXksICp0bXA7XG4xMDMxOlx0XHRzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YTtcbjEwMzI6XHRcbjEwMzM6XHRcdGxvY2tkZXBfYXNzZXJ0X3dpcGh5KGh3LVx1MDAzZXdpcGh5KTtcbjEwMzQ6XHRcbjEwMzU6XHRcdGlmICh2aWYpIHtcbjEwMzY6XHRcdFx0c2RhdGEgPSB2aWZfdG9fc2RhdGEodmlmKTtcbjEwMzc6XHRcdFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGtleSwgdG1wLCBcdTAwMjZzZGF0YS1cdTAwM2VrZXlfbGlzdCwgbGlzdClcbjEwMzg6XHRcdFx0XHRpZWVlODAyMTFfa2V5X2l0ZXIoaHcsIHZpZiwga2V5LCBpdGVyLCBpdGVyX2RhdGEpO1xuMTAzOTpcdFx0fSBlbHNlIHtcbjEwNDA6XHRcdFx0bGlzdF9mb3JfZWFjaF9lbnRyeShzZGF0YSwgXHUwMDI2bG9jYWwtXHUwMDNlaW50ZXJmYWNlcywgbGlzdClcbjEwNDE6XHRcdFx0XHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoa2V5LCB0bXAsXG4xMDQyOlx0XHRcdFx0XHRcdFx0IFx1MDAyNnNkYXRhLVx1MDAzZWtleV9saXN0LCBsaXN0KVxuMTA0MzpcdFx0XHRcdFx0aWVlZTgwMjExX2tleV9pdGVyKGh3LCBcdTAwMjZzZGF0YS1cdTAwM2V2aWYsIGtleSxcbjEwNDQ6XHRcdFx0XHRcdFx0XHQgICBpdGVyLCBpdGVyX2RhdGEpO1xuMTA0NTpcdFx0fVxuMTA0NjpcdH1cbjEwNDc6XHRFWFBPUlRfU1lNQk9MKGllZWU4MDIxMV9pdGVyX2tleXMpO1xuMTA0ODpcdFxuMTA0OTpcdHN0YXRpYyB2b2lkXG4xMDUwOlx0X2llZWU4MDIxMV9pdGVyX2tleXNfcmN1KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuMTA1MTpcdFx0XHRcdCBzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbjEwNTI6XHRcdFx0XHQgdm9pZCAoKml0ZXIpKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuMTA1MzpcdFx0XHRcdFx0ICAgICAgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcbjEwNTQ6XHRcdFx0XHRcdCAgICAgIHN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGEsXG4xMDU1Olx0XHRcdFx0XHQgICAgICBzdHJ1Y3QgaWVlZTgwMjExX2tleV9jb25mICprZXksXG4xMDU2Olx0XHRcdFx0XHQgICAgICB2b2lkICpkYXRhKSxcbjEwNTc6XHRcdFx0XHQgdm9pZCAqaXRlcl9kYXRhKVxuMTA1ODpcdHtcbjEwNTk6XHRcdHN0cnVjdCBpZWVlODAyMTFfa2V5ICprZXk7XG4xMDYwOlx0XG4xMDYxOlx0XHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShrZXksIFx1MDAyNnNkYXRhLVx1MDAzZWtleV9saXN0LCBsaXN0KVxuMTA2MjpcdFx0XHRpZWVlODAyMTFfa2V5X2l0ZXIoaHcsIFx1MDAyNnNkYXRhLVx1MDAzZXZpZiwga2V5LCBpdGVyLCBpdGVyX2RhdGEpO1xuMTA2MzpcdH1cbjEwNjQ6XHRcbjEwNjU6XHR2b2lkIGllZWU4MDIxMV9pdGVyX2tleXNfcmN1KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuMTA2NjpcdFx0XHRcdCAgICAgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcbjEwNjc6XHRcdFx0XHQgICAgIHZvaWQgKCppdGVyKShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbjEwNjg6XHRcdFx0XHRcdFx0ICBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxuMTA2OTpcdFx0XHRcdFx0XHQgIHN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGEsXG4xMDcwOlx0XHRcdFx0XHRcdCAgc3RydWN0IGllZWU4MDIxMV9rZXlfY29uZiAqa2V5LFxuMTA3MTpcdFx0XHRcdFx0XHQgIHZvaWQgKmRhdGEpLFxuMTA3MjpcdFx0XHRcdCAgICAgdm9pZCAqaXRlcl9kYXRhKVxuMTA3MzpcdHtcbjEwNzQ6XHRcdHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsID0gaHdfdG9fbG9jYWwoaHcpO1xuMTA3NTpcdFx0c3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGE7XG4xMDc2Olx0XG4xMDc3Olx0XHRpZiAodmlmKSB7XG4xMDc4Olx0XHRcdHNkYXRhID0gdmlmX3RvX3NkYXRhKHZpZik7XG4xMDc5Olx0XHRcdF9pZWVlODAyMTFfaXRlcl9rZXlzX3JjdShodywgc2RhdGEsIGl0ZXIsIGl0ZXJfZGF0YSk7XG4xMDgwOlx0XHR9IGVsc2Uge1xuMTA4MTpcdFx0XHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShzZGF0YSwgXHUwMDI2bG9jYWwtXHUwMDNlaW50ZXJmYWNlcywgbGlzdClcbjEwODI6XHRcdFx0XHRfaWVlZTgwMjExX2l0ZXJfa2V5c19yY3UoaHcsIHNkYXRhLCBpdGVyLCBpdGVyX2RhdGEpO1xuMTA4MzpcdFx0fVxuMTA4NDpcdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40NS8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMjE6NDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjE1NgoJCQkJCQkJb3V0cHV0OiA0NQoJCQkJCQkJdGhvdWdodHM6IDI5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgZmlsZXM6CgoqKkRpdmluZyBpbnRvIHRoZSBSZWFsdGVrIDgwMi4xMWF4IFdha2Utb24tV2lyZWxlc3MgKFdvV0xBTikgSW1wbGVtZW50YXRpb24qKgoKT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGludGVyYWN0aW9uIGJldHdlZW4gdGhlIENBTSAoQ29udGVudCBBZGRyZXNzYWJsZSBNZW1vcnkpIGNvbmZpZ3VyYXRpb24gYW5kIHRoZSB3YWtlLW9uLXdpcmVsZXNzIGZ1bmN0aW9uYWxpdHkgd2l0aGluIHRoZSBSZWFsdGVrIDgwMi4xMWF4IGRyaXZlciwgc3BlY2lmaWNhbGx5IHRoZSBgcnR3ODlgIHNlcmllcy4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gY2hlY2sgb3V0IGBkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NhbS5jYCDigJMgdGhhdCYjMzk7cyB3aGVyZSB0aGUgY3JpdGljYWwgbWF0Y2hpbmcgcnVsZXMgZm9yIHRoZSBDQU0gc2hvdWxkIHJlc2lkZSwgYW5kIGl0JiMzOTtzIHdoZXJlIHRoZSBsb2dpYyBmb3IgZW5hYmxpbmcgYW5kIGNvbmZpZ3VyaW5nIHRob3NlIHJ1bGVzIHRvIHRyaWdnZXIgYSB3YWtlLXVwIGV2ZW50IGlzIHByb2JhYmx5IGxvY2F0ZWQuIEkmIzM5O20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIGhvdyBpdCBoYW5kbGVzIHBhdHRlcm4gbWF0Y2hpbmcsIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgcG93ZXIgbWFuYWdlbWVudCBzdGF0ZXMsIGFuZCB3aGV0aGVyIHRoZSBDQU0gc2V0dXAgaXMgaW50ZWdyYXRlZCB3aXRoIHRoZSBoYXJkd2FyZSYjMzk7cyBsb3ctcG93ZXIgbW9kZXMgZWZmaWNpZW50bHkuIEFueSBwb3RlbnRpYWwgaW5lZmZpY2llbmNpZXMgaW4gdGhlIENBTSBjb25maWd1cmF0aW9uIHByb2Nlc3MgY291bGQgdHJhbnNsYXRlIGRpcmVjdGx5IGludG8gdW5uZWNlc3NhcnkgcG93ZXIgY29uc3VtcHRpb24sIG5lZ2F0aW5nIHRoZSB3aG9sZSBwb2ludCBvZiBXb1dMQU4uCgpUaGVuLCBJJiMzOTtsbCBuZWVkIHRvIGRyaWxsIGRvd24gaW50byB0aGUgJiMzOTt3b3cuYyYjMzk7IHRvIHNlZSBob3cgdGhlIHNvZnR3YXJlIGFjdHVhbGx5IG9yY2hlc3RyYXRlcyB0aGUgd2FrZS11cCBwcm9jZXNzLiBJJiMzOTttIGV4cGVjdGluZyB0byBmaW5kIHRoZSBob29rcyBpbnRvIHRoZSBSZWFsdGVrIGhhcmR3YXJlLCB0aGUgaGFuZGxpbmcgb2YgdGhlIGludGVycnVwdHMgZ2VuZXJhdGVkIGJ5IHRoZSBDQU0gaGl0cywgYW5kIHRoZSBzdGVwcyB0byB0cmFuc2l0aW9uIHRoZSBzeXN0ZW0gZnJvbSBhIGxvdy1wb3dlciBzdGF0ZSBiYWNrIHRvIGEgZnVsbHkgYWN0aXZlIHN0YXRlIHVwb24gYSBtYXRjaGluZyBldmVudC4gV2hhdCYjMzk7cyB0aGUgc3BlY2lmaWMgc2VxdWVuY2U/IFdoYXQgYXJlIHRoZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlcyB1c2VkIHRvIGVuc3VyZSBkYXRhIGludGVncml0eSBkdXJpbmcgdGhlIHBvd2VyIHN0YXRlIHRyYW5zaXRpb25zPyBIb3cgZG9lcyBpdCBoYW5kbGUgdGhlIGNvbXBsZXhpdGllcyBvZiBuZXR3b3JrIHN0YWNrIGluaXRpYWxpemF0aW9uIGFmdGVyIGEgd2FrZS11cD8gQW5kLCBtb3N0IGltcG9ydGFudGx5LCB3aGF0JiMzOTtzIHRoZSBvdmVyYWxsIHBvd2VyIGJ1ZGdldD8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBkcml2ZXIgbWFuYWdlcyB0byBhY2hpZXZlIHRoZSBjbGFpbWVkIHBvd2VyIHNhdmluZ3MgY29tcGFyZWQgdG8gc3RhbmRhcmQgV2ktRmkgb3BlcmF0aW9uLiBJJiMzOTttIGxvb2tpbmcgZm9yIGEgY2xlYXIgZmxvdyBvZiBvcGVyYXRpb25zIGJldHdlZW4gdGhlIENBTSBjb25maWd1cmF0aW9uIGFuZCB0aGUgYWN0dWFsIFdvV0xBTiB0cmlnZ2VyIGV2ZW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ2LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAyMTo0MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY2FtLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA1OTUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDU5NTpcdH1cbiA1OTY6XHRcbiA1OTc6XHR2b2lkIHJ0dzg5X2NhbV9kZWluaXQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBzdHJ1Y3QgcnR3ODlfdmlmX2xpbmsgKnJ0d3ZpZl9saW5rKVxuIDU5ODpcdHtcbiA1OTk6XHRcdHN0cnVjdCBydHc4OV9hZGRyX2NhbV9lbnRyeSAqYWRkcl9jYW0gPSBcdTAwMjZydHd2aWZfbGluay1cdTAwM2VhZGRyX2NhbTtcbiA2MDA6XHRcdHN0cnVjdCBydHc4OV9ic3NpZF9jYW1fZW50cnkgKmJzc2lkX2NhbSA9IFx1MDAyNnJ0d3ZpZl9saW5rLVx1MDAzZWJzc2lkX2NhbTtcbiA2MDE6XHRcbiA2MDI6XHRcdHJ0dzg5X2NhbV9kZWluaXRfYWRkcl9jYW0ocnR3ZGV2LCBhZGRyX2NhbSk7XG4gNjAzOlx0XHRydHc4OV9jYW1fZGVpbml0X2Jzc2lkX2NhbShydHdkZXYsIGJzc2lkX2NhbSk7XG4gNjA0Olx0fVxuIDYwNTpcdFxuIDYwNjpcdHZvaWQgcnR3ODlfY2FtX3Jlc2V0X2tleXMoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuIDYwNzpcdHtcbiA2MDg6XHRcdGllZWU4MDIxMV9pdGVyX2tleXMocnR3ZGV2LVx1MDAzZWh3LCBOVUxMLCBydHc4OV9jYW1fcmVzZXRfa2V5X2l0ZXIsIHJ0d2Rldik7XG4gNjA5Olx0fVxuIDYxMDpcdFxuIDYxMTpcdHN0YXRpYyBpbnQgcnR3ODlfY2FtX2dldF9hdmFpbF9hZGRyX2NhbShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG4gNjEyOlx0XHRcdFx0XHRcdHU4ICphZGRyX2NhbV9pZHgpXG4gNjEzOlx0e1xuIDYxNDpcdFx0Y29uc3Qgc3RydWN0IHJ0dzg5X2NoaXBfaW5mbyAqY2hpcCA9IHJ0d2Rldi1cdTAwM2VjaGlwO1xuIDYxNTpcdFx0c3RydWN0IHJ0dzg5X2NhbV9pbmZvICpjYW1faW5mbyA9IFx1MDAyNnJ0d2Rldi1cdTAwM2VjYW1faW5mbztcbiA2MTY6XHRcdHU4IGFkZHJfY2FtX251bSA9IGNoaXAtXHUwMDNlYWNhbV9udW07XG4gNjE3Olx0XHR1OCBpZHg7XG4gNjE4Olx0XG4gNjE5Olx0XHRpZHggPSBmaW5kX2ZpcnN0X3plcm9fYml0KGNhbV9pbmZvLVx1MDAzZWFkZHJfY2FtX21hcCwgYWRkcl9jYW1fbnVtKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Ny8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMjE6NDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzE0NwoJCQkJCQkJb3V0cHV0OiA0NQoJCQkJCQkJdGhvdWdodHM6IDUzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRoaW5raW5nIHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIHRoZSBSZWFsdGVrIFdPVyBDb2RlKioKCk9rYXksIHRpbWUgdG8gZGlnIGludG8gdGhlIFJlYWx0ZWsgd2lyZWxlc3MgZHJpdmVyJiMzOTtzIHdha2Utb24td2lyZWxlc3MgKFdPVykgZnVuY3Rpb25hbGl0eSwgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgYHJ0dzg5YCBjb2RlLiBNeSBnb2FsIGlzIHRvIHVuZGVyc3RhbmQgaG93IHRoZXNlIGtleXMgYXJlIGNvbnN0cnVjdGVkIGFuZCB1cGRhdGVkIGZvciBXT1cuIEkmIzM5O20gZ29pbmcgdG8gZm9jdXMgbXkgYXR0ZW50aW9uIG9uIHRoZSBgcnR3ODlfd293X2NvbnN0cnVjdF9rZXlfaW5mb2AgZnVuY3Rpb24gYW5kIHRoZSBgcnR3ODlfd293X3VwZGF0ZV9rZXlfaW5mb2AgZnVuY3Rpb24sIGJvdGggbG9jYXRlZCB3aXRoaW4gdGhlIGB3b3cuY2AgZmlsZSBpbiB0aGUgZHJpdmVyJiMzOTtzIHNvdXJjZS4gVGhpcyBsb29rcyBsaWtlIHRoZSBwbGFjZSB0byBzdGFydCBhbmFseXppbmcgdGhlIHByb2Nlc3MuIFRoaXMgd2lsbCBnaXZlIG1lIGEgZ29vZCB1bmRlcnN0YW5kaW5nIG9mIGhvdyB0aGlzIHBvcnRpb24gb2YgdGhlIGNvZGUgaXMgaGFuZGxlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40OC8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMjE6NDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNDYwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA0NjA6XHRcbiA0NjE6XHRcdG1lbXNldChcdTAwMjZydHdfd293LVx1MDAzZWFvYWNfcnB0LCAwLCBzaXplb2YocnR3X3dvdy1cdTAwM2Vhb2FjX3JwdCkpO1xuIDQ2MjpcdFx0bWVtc2V0KFx1MDAyNnJ0d193b3ctXHUwMDNlZ3RrX2luZm8sIDAsIHNpemVvZihydHdfd293LVx1MDAzZWd0a19pbmZvKSk7XG4gNDYzOlx0XHRtZW1zZXQoXHUwMDI2cnR3X3dvdy1cdTAwM2VrZXlfaW5mbywgMCwgc2l6ZW9mKHJ0d193b3ctXHUwMDNla2V5X2luZm8pKTtcbiA0NjQ6XHRcdHJ0d193b3ctXHUwMDNlcHRrX2FsZyA9IDA7XG4gNDY1Olx0XHRydHdfd293LVx1MDAzZWd0a19hbGcgPSAwO1xuIDQ2NjpcdH1cbiA0Njc6XHRcbiA0Njg6XHRzdGF0aWMgdm9pZCBydHc4OV93b3dfY29uc3RydWN0X2tleV9pbmZvKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcbiA0Njk6XHR7XG4gNDcwOlx0XHRzdHJ1Y3QgcnR3ODlfd293X3BhcmFtICpydHdfd293ID0gXHUwMDI2cnR3ZGV2LVx1MDAzZXdvdztcbiA0NzE6XHRcdHN0cnVjdCBydHc4OV93b3dfa2V5X2luZm8gKmtleV9pbmZvID0gXHUwMDI2cnR3X3dvdy1cdTAwM2VrZXlfaW5mbztcbiA0NzI6XHRcdHN0cnVjdCBydHc4OV92aWZfbGluayAqcnR3dmlmX2xpbmsgPSBydHdkZXYtXHUwMDNld293LnJ0d3ZpZl9saW5rO1xuIDQ3MzpcdFx0c3RydWN0IGllZWU4MDIxMV92aWYgKndvd192aWYgPSBydHd2aWZfbGlua190b192aWYocnR3dmlmX2xpbmspO1xuIDQ3NDpcdFx0Ym9vbCBlcnIgPSBmYWxzZTtcbiA0NzU6XHRcbiA0NzY6XHRcdGllZWU4MDIxMV9pdGVyX2tleXMocnR3ZGV2LVx1MDAzZWh3LCB3b3dfdmlmLFxuIDQ3NzpcdFx0XHRcdCAgICBydHc4OV93b3dfZ2V0X2tleV9pbmZvX2l0ZXIsIFx1MDAyNmVycik7XG4gNDc4Olx0XG4gNDc5Olx0XHRpZiAoZXJyKSB7XG4gNDgwOlx0XHRcdHJ0dzg5X3dvd19rZXlfY2xlYXIocnR3ZGV2KTtcbiA0ODE6XHRcdFx0cmV0dXJuO1xuIDQ4MjpcdFx0fVxuIDQ4MzpcdFxuIDQ4NDpcdFx0a2V5X2luZm8tXHUwMDNldmFsaWRfY2hlY2sgPSBSVFc4OV9XT1dfVkFMSURfQ0hFQ0s7XG4gNDg1Olx0XHRrZXlfaW5mby1cdTAwM2VzeW1ib2xfY2hlY2tfZW4gPSBSVFc4OV9XT1dfU1lNQk9MX0NIS19QVEsgfFxuIDQ4NjpcdFx0XHRcdFx0ICAgIFJUVzg5X1dPV19TWU1CT0xfQ0hLX0dUSztcbiA0ODc6XHR9XG4gNDg4Olx0XG4gNDg5Olx0c3RhdGljIHZvaWQgcnR3ODlfd293X2RlYnVnX2FvYWNfcnB0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcbiA0OTA6XHR7XG4gNDkxOlx0XHRzdHJ1Y3QgcnR3ODlfd293X3BhcmFtICpydHdfd293ID0gXHUwMDI2cnR3ZGV2LVx1MDAzZXdvdztcbiA0OTI6XHRcdHN0cnVjdCBydHc4OV93b3dfYW9hY19yZXBvcnQgKmFvYWNfcnB0ID0gXHUwMDI2cnR3X3dvdy1cdTAwM2Vhb2FjX3JwdDtcbiA0OTM6XHRcbiA0OTQ6XHRcdGlmICghcnR3ODlfZGVidWdfaXNfZW5hYmxlZChydHdkZXYsIFJUVzg5X0RCR19XT1cpKVxuIDQ5NTpcdFx0XHRyZXR1cm47XG4gNDk2Olx0XG4gNDk3Olx0XHRydHc4OV9kZWJ1ZyhydHdkZXYsIFJUVzg5X0RCR19XT1csIFwmIzM0O1thb2FjX3JwdF0gcnB0X3ZlciA9ICVkXFxuXCYjMzQ7LFxuIDQ5ODpcdFx0XHQgICAgYW9hY19ycHQtXHUwMDNlcnB0X3Zlcik7XG4gNDk5Olx0XHRydHc4OV9kZWJ1ZyhydHdkZXYsIFJUVzg5X0RCR19XT1csIFwmIzM0O1thb2FjX3JwdF0gc2VjX3R5cGUgPSAlZFxcblwmIzM0OyxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40OS8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMjE6NDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODI1NgoJCQkJCQkJb3V0cHV0OiA0NQoJCQkJCQkJdGhvdWdodHM6IDIxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyb20gbXkgcGVyc3BlY3RpdmUgYXMgYW4gZXhwZXJ0OgoKKipJbnZlc3RpZ2F0aW5nIGEgUG90ZW50aWFsIElzc3VlKioKCk9rYXksIHNvIHdlJiMzOTtyZSBsb29raW5nIGludG8gc29tZXRoaW5nIGFuZCBgcnR3ODlfd293X3VwZGF0ZV9rZXlfaW5mb2AgaXMgcGluZ2luZyBteSByYWRhci4gR2l2ZW4gd2hhdCBJJiMzOTttIGRlYWxpbmcgd2l0aCwgaXQmIzM5O3MgaW1tZWRpYXRlbHkgb2J2aW91cyB0aGF0IHRoaXMgZnVuY3Rpb24gZGVzZXJ2ZXMgYSBjbG9zZXIgbG9vay4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJvbGUgaW4gdGhpcyBzeXN0ZW0gYW5kIGhvdyBpdCBtaWdodCBiZSBpbnZvbHZlZCBpbiB0aGUgYmVoYXZpb3Igd2UmIzM5O3JlIG9ic2VydmluZy4gSXQmIzM5O3MgdGltZSB0byBkaWcgaW50byB0aGUgY29kZSBhbmQgc2VlIHdoYXQgYHJ0dzg5X3dvd191cGRhdGVfa2V5X2luZm9gIGlzIGFjdHVhbGx5IGRvaW5nLiBNeSBndXQmIzM5O3MgdGVsbGluZyBtZSB0aGF0IHRoaXMgaXMgYSBjcml0aWNhbCBjb21wb25lbnQgdGhhdCB3YXJyYW50cyB0aG9yb3VnaCBpbnZlc3RpZ2F0aW9uIHRvIGlzb2xhdGUgYW5kIHVuZGVyc3RhbmQgYW55IHByb2JsZW0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTAvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDIxOjQyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDY4MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNjgwOlx0XG4gNjgxOlx0XHRyZXR1cm4ga2V5O1xuIDY4MjpcdH1cbiA2ODM6XHRcbiA2ODQ6XHRzdGF0aWMgdm9pZCBydHc4OV93b3dfdXBkYXRlX2tleV9pbmZvKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgYm9vbCByeF9yZWFkeSlcbiA2ODU6XHR7XG4gNjg2Olx0XHRzdHJ1Y3QgcnR3ODlfdmlmX2xpbmsgKnJ0d3ZpZl9saW5rID0gcnR3ZGV2LVx1MDAzZXdvdy5ydHd2aWZfbGluaztcbiA2ODc6XHRcdHN0cnVjdCBpZWVlODAyMTFfdmlmICp3b3dfdmlmID0gcnR3dmlmX2xpbmtfdG9fdmlmKHJ0d3ZpZl9saW5rKTtcbiA2ODg6XHRcdHN0cnVjdCBydHc4OV93b3dfcGFyYW0gKnJ0d193b3cgPSBcdTAwMjZydHdkZXYtXHUwMDNld293O1xuIDY4OTpcdFx0c3RydWN0IHJ0dzg5X3dvd19hb2FjX3JlcG9ydCAqYW9hY19ycHQgPSBcdTAwMjZydHdfd293LVx1MDAzZWFvYWNfcnB0O1xuIDY5MDpcdFx0c3RydWN0IHJ0dzg5X3NldF9rZXlfaW5mb19pdGVyX2RhdGEgZGF0YSA9IHsuZXJyb3IgPSBmYWxzZSxcbiA2OTE6XHRcdFx0XHRcdFx0XHQgICAgLnJ4X3JlYWR5ID0gcnhfcmVhZHksXG4gNjkyOlx0XHRcdFx0XHRcdFx0ICAgIC50a2lwX2d0a19zd2FwcGVkID0gZmFsc2V9O1xuIDY5MzpcdFx0c3RydWN0IGllZWU4MDIxMV9ic3NfY29uZiAqYnNzX2NvbmY7XG4gNjk0Olx0XHRzdHJ1Y3QgaWVlZTgwMjExX2tleV9jb25mICprZXk7XG4gNjk1Olx0XG4gNjk2Olx0XHRpZWVlODAyMTFfaXRlcl9rZXlzKHJ0d2Rldi1cdTAwM2Vodywgd293X3ZpZixcbiA2OTc6XHRcdFx0XHQgICAgcnR3ODlfd293X3NldF9rZXlfaW5mb19pdGVyLCBcdTAwMjZkYXRhKTtcbiA2OTg6XHRcbiA2OTk6XHRcdGlmIChkYXRhLmVycm9yKSB7XG4gNzAwOlx0XHRcdHJ0dzg5X2RlYnVnKHJ0d2RldiwgUlRXODlfREJHX1dPVywgXCYjMzQ7JXMgZXJyb3JcXG5cJiMzNDssIF9fZnVuY19fKTtcbiA3MDE6XHRcdFx0cmV0dXJuO1xuIDcwMjpcdFx0fVxuIDcwMzpcdFxuIDcwNDpcdFx0aWYgKCFkYXRhLmd0a19jaXBoZXIpXG4gNzA1Olx0XHRcdHJldHVybjtcbiA3MDY6XHRcbiA3MDc6XHRcdGtleSA9IHJ0dzg5X3dvd19ndGtfcmVrZXkocnR3ZGV2LCBkYXRhLmd0a19jaXBoZXIsIGFvYWNfcnB0LVx1MDAzZWtleV9pZHgsXG4gNzA4Olx0XHRcdFx0XHQgIGFvYWNfcnB0LVx1MDAzZWd0ayk7XG4gNzA5Olx0XHRpZiAoIWtleSlcbiA3MTA6XHRcdFx0cmV0dXJuO1xuIDcxMTpcdFxuIDcxMjpcdFx0cnR3ODlfcnhfaXZfdG9fcG4ocnR3ZGV2LCBrZXksXG4gNzEzOlx0XHRcdFx0ICBhb2FjX3JwdC1cdTAwM2VndGtfcnhfaXZba2V5LVx1MDAzZWtleWlkeF0pO1xuIDcxNDpcdFxuIDcxNTpcdFx0aWYgKCFkYXRhLmlndGtfY2lwaGVyKVxuIDcxNjpcdFx0XHRyZXR1cm47XG4gNzE3Olx0XG4gNzE4Olx0XHRrZXkgPSBydHc4OV93b3dfZ3RrX3Jla2V5KHJ0d2RldiwgZGF0YS5pZ3RrX2NpcGhlciwgYW9hY19ycHQtXHUwMDNlaWd0a19rZXlfaWQsXG4gNzE5Olx0XHRcdFx0XHQgIGFvYWNfcnB0LVx1MDAzZWlndGspO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUxLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAyMTo0MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5MjI3CgkJCQkJCQlvdXRwdXQ6IDI0MQoJCQkJCQkJdGhvdWdodHM6IDYwMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBydHc4OSBQYXRjaCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBJdCBsb29rcyBsaWtlIHRoZSBgcnR3ODlgIGRyaXZlciBoYXMgYmVlbiB1cGRhdGVkIHRvIHJlcGxhY2UgdGhlIFJDVS1iYXNlZCBrZXkgaXRlcmF0aW9uIChgcmN1X3JlYWRfbG9jaygpOyBpZWVlODAyMTFfaXRlcl9rZXlzX3JjdSguLi4pOyByY3VfcmVhZF91bmxvY2soKTtgKSB3aXRoIGEgZGlyZWN0IGNhbGwgdG8gYGllZWU4MDIxMV9pdGVyX2tleXMoKWAuIFRoZSByYXRpb25hbGUgaXMgc3RyYWlnaHRmb3J3YXJkOiBgaWVlZTgwMjExX2l0ZXJfa2V5cygpYCBleHBlY3RzIHRoZSB3aXBoeSBsb2NrIHRvIGJlIGhlbGQgKHZlcmlmaWVkIGJ5IGBsb2NrZGVwX2Fzc2VydF93aXBoeShody0mZ3Q7d2lwaHkpO2ApLCB3aGljaCBpcyBsaWtlbHkgYWxyZWFkeSB0aGUgY2FzZSBpbiB0aGUgY2FsbGVycywgdGhlcmVmb3JlIHVzaW5nIHRoYXQgbWV0aG9kIGlzIGJldHRlciB0aGFuIHRoZSBSQ1UgbWV0aG9kLiBJdCBhbHNvIHVzZXMgc2FmZSBpdGVyYXRpb24sIGBsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmVgLgoKTm93LCB0aGUgaW1wb3J0YW50IHF1ZXN0aW9uOiBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3M/IExldCYjMzk7cyB0aWNrIHRocm91Z2ggdGhlIHVzdWFsIHN1c3BlY3RzLiBGaXJzdCwgaXMgYW55dGhpbmcgYmVpbmcgc2VudCB0byB1c2VyIHNwYWNlPyBOb3BlLCB0aGF0JiMzOTtzIG5vdCB0aGUgY2FzZS4gTmV4dCwgaXMgdGhlcmUgYW55IGNvbmRpdGlvbmFsIGxvZ2ljIHRoYXQgcmVsaWVzIG9uIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzPyBOb3BlLiBBcmUgd2UgYWxsb2NhdGluZyBhbmQgaW5pdGlhbGl6aW5nIG5ldyBkYXRhIHN0cnVjdHVyZXM/IE5vcGUuIEZpbmFsbHksIGFyZSB3ZSBkZWFsaW5nIHdpdGggYm91bmRzIGNoZWNrcyBvciBsZW5ndGggY2FsY3VsYXRpb25zIHRoYXQgbWlnaHQgYWxsb3cgYWNjZXNzIHRvIHVuaW5pdGlhbGl6ZWQgYnl0ZXM/IE5vcGUuCgpCYXNpY2FsbHksIHRoaXMgcGF0Y2ggaXMgYSBwdXJlIHJlZmFjdG9yaW5nIG9mIHRoZSBpdGVyYXRpb24gaGVscGVyLCBjaGFuZ2luZyBpdCBmcm9tIHRoZSBSQ1UgdmVyc2lvbiB0byB0aGUgbG9ja2VkIHZlcnNpb24uIEFueSBjb25jdXJyZW5jeSBwcm9ibGVtcyDigJMgbGlrZSBub3QgaG9sZGluZyB0aGUgd2lwaHkgbG9jaywgb3IgcG90ZW50aWFsIGtleS1mcmVlaW5nIGlzc3VlcyDigJMgYXJlIGdvaW5nIHRvIGJlIGNhdWdodCBieSBMT0NLREVQIG9yIEtBU0FOLiBXZSBhcmVuJiMzOTt0IGludHJvZHVjaW5nIGFueSByaXNrcyBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2Ugb3IgaW5mb3JtYXRpb24gbGVha3MuCgpUaGVyZWZvcmUsIHRoaXMgcGF0Y2ggZG9lc24mIzM5O3Qgd2FycmFudCBLTVNBTiBmdXp6aW5nLiBJdCYjMzk7cyBhIGNvbmN1cnJlbmN5LXJlbGF0ZWQgY2hhbmdlLCB3aGljaCBpcyBiZXN0IGFkZHJlc3NlZCBieSBMT0NLREVQIGFuZCBLQVNBTi4gSXQmIzM5O3MgYSBzeW5jaHJvbml6YXRpb24vbG9ja2luZyByZWZhY3RvciwgZm9jdXNpbmcgb24gaXRlcmF0aW9uIHRocm91Z2gga2V5cywgYW5kIGFzc2VydGluZyB0aGUgd2lwaHkgbG9jayBpbnN0ZWFkIG9mIHVzaW5nIHRoZSBSQ1UgcmVhZCBsb2NrLiBObyBtZW1vcnkgYWxsb2NhdGlvbiwgbm8gbW9kaWZpY2F0aW9uIG9mIGJ1ZmZlciBib3VuZHMsIG5vIG5ldyBzdHJ1Y3RzLCBubyBjb3B5IG9mIHVuaW5pdGlhbGl6ZWQgZGF0YSB0byB1c2Vyc3BhY2UuIExvY2tpbmcgaXNzdWVzIG9yIGNvbmN1cnJlbnQgbW9kaWZpY2F0aW9uL1VBRiBhcmUgdGhlIHJpc2tzIGhlcmUsIGFuZCBLQVNBTi9MT0NLREVQIGhhbmRsZSB0aG9zZSBjYXNlcy4gVGhlcmVmb3JlLCBubyBuZWVkIHRvIHJ1biBhIEtNU0FOIGZ1enppbmcgc2Vzc2lvbi4gTGV0JiMzOTtzIGNhbGwgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41Mi8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMjE6NDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcmVwbGFjZXMgYHJjdV9yZWFkX2xvY2soKWAgLyBgaWVlZTgwMjExX2l0ZXJfa2V5c19yY3UoKWAgd2l0aCBgaWVlZTgwMjExX2l0ZXJfa2V5cygpYCBpbiB0aGUgUmVhbHRlayBydHc4OSBkcml2ZXIgKGBydHc4OV9jYW1fcmVzZXRfa2V5c2AsIGBydHc4OV93b3dfY29uc3RydWN0X2tleV9pbmZvYCwgYW5kIGBydHc4OV93b3dfdXBkYXRlX2tleV9pbmZvYCkuXG5cblRoaXMgY2hhbmdlIHB1cmVseSBhZGp1c3RzIGhvdyB0aGUgZHJpdmVyIGl0ZXJhdGVzIG92ZXIgbWFjODAyMTEga2V5cywgcmVseWluZyBvbiB0aGUgY2FsbGVyIGhvbGRpbmcgdGhlIHdpcGh5IGxvY2sgKGBsb2NrZGVwX2Fzc2VydF93aXBoeWApIGluc3RlYWQgb2YgZW50ZXJpbmcgYW4gUkNVIHJlYWQtc2lkZSBjcml0aWNhbCBzZWN0aW9uLlxuXG5UaGVyZSBhcmUgbm8gbmV3IG1lbW9yeSBhbGxvY2F0aW9ucywgdW5pbml0aWFsaXplZCB2YXJpYWJsZSBhY2Nlc3NlcywgaW5mby1sZWFrcyB0byB1c2Vyc3BhY2UsIG9yIGFsdGVyZWQgYnVmZmVyIGJvdW5kcy4gQW55IHBvdGVudGlhbCBsb2NraW5nIGlzc3VlcyAoc3VjaCBhcyBtaXNzaW5nIHdpcGh5IGxvY2spIG9yIHN5bmNocm9uaXphdGlvbi9tZW1vcnkgc2FmZXR5IGJ1Z3MgKHN1Y2ggYXMgY29uY3VycmVudCBsaXN0IGFjY2VzcyBvciB1c2UtYWZ0ZXItZnJlZSkgYXJlIGRldGVjdGFibGUgYnkgTE9DS0RFUCBhbmQgS0FTQU4uIFRoZXJlZm9yZSwgS01TQU4gaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcmVwbGFjZXMgYHJjdV9yZWFkX2xvY2soKWAgLyBgaWVlZTgwMjExX2l0ZXJfa2V5c19yY3UoKWAgd2l0aCBgaWVlZTgwMjExX2l0ZXJfa2V5cygpYCBpbiB0aGUgUmVhbHRlayBydHc4OSBkcml2ZXIgKGBydHc4OV9jYW1fcmVzZXRfa2V5c2AsIGBydHc4OV93b3dfY29uc3RydWN0X2tleV9pbmZvYCwgYW5kIGBydHc4OV93b3dfdXBkYXRlX2tleV9pbmZvYCkuXG5cblRoaXMgY2hhbmdlIHB1cmVseSBhZGp1c3RzIGhvdyB0aGUgZHJpdmVyIGl0ZXJhdGVzIG92ZXIgbWFjODAyMTEga2V5cywgcmVseWluZyBvbiB0aGUgY2FsbGVyIGhvbGRpbmcgdGhlIHdpcGh5IGxvY2sgKGBsb2NrZGVwX2Fzc2VydF93aXBoeWApIGluc3RlYWQgb2YgZW50ZXJpbmcgYW4gUkNVIHJlYWQtc2lkZSBjcml0aWNhbCBzZWN0aW9uLlxuXG5UaGVyZSBhcmUgbm8gbmV3IG1lbW9yeSBhbGxvY2F0aW9ucywgdW5pbml0aWFsaXplZCB2YXJpYWJsZSBhY2Nlc3NlcywgaW5mby1sZWFrcyB0byB1c2Vyc3BhY2UsIG9yIGFsdGVyZWQgYnVmZmVyIGJvdW5kcy4gQW55IHBvdGVudGlhbCBsb2NraW5nIGlzc3VlcyAoc3VjaCBhcyBtaXNzaW5nIHdpcGh5IGxvY2spIG9yIHN5bmNocm9uaXphdGlvbi9tZW1vcnkgc2FmZXR5IGJ1Z3MgKHN1Y2ggYXMgY29uY3VycmVudCBsaXN0IGFjY2VzcyBvciB1c2UtYWZ0ZXItZnJlZSkgYXJlIGRldGVjdGFibGUgYnkgTE9DS0RFUCBhbmQgS0FTQU4uIFRoZXJlZm9yZSwgS01TQU4gaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOS0wOFQyMTo0MDoyOS43NjUwNzQ5NDVaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDkzNTU5Mjg3NDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiUlRXODlcIixcbiAgICBcIlJUVzg5X0NPUkVcIixcbiAgICBcIlJUVzg5X1VTQlwiLFxuICAgIFwiUlRXODlfODg1MkFVXCIsXG4gICAgXCJNQUM4MDIxMVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInJ0dzg5X2NhbV9yZXNldF9rZXlzXCIsXG4gICAgXCJydHc4OV93b3dfY29uc3RydWN0X2tleV9pbmZvXCIsXG4gICAgXCJydHc4OV93b3dfdXBkYXRlX2tleV9pbmZvXCJcbiAgXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCByZXBsYWNlcyBgcmN1X3JlYWRfbG9jaygpYCAvIGBpZWVlODAyMTFfaXRlcl9rZXlzX3JjdSgpYCB3aXRoIGBpZWVlODAyMTFfaXRlcl9rZXlzKClgIGluIHRoZSBSZWFsdGVrIHJ0dzg5IGRyaXZlciAoYHJ0dzg5X2NhbV9yZXNldF9rZXlzYCwgYHJ0dzg5X3dvd19jb25zdHJ1Y3Rfa2V5X2luZm9gLCBhbmQgYHJ0dzg5X3dvd191cGRhdGVfa2V5X2luZm9gKS5cXG5cXG5UaGlzIGNoYW5nZSBwdXJlbHkgYWRqdXN0cyBob3cgdGhlIGRyaXZlciBpdGVyYXRlcyBvdmVyIG1hYzgwMjExIGtleXMsIHJlbHlpbmcgb24gdGhlIGNhbGxlciBob2xkaW5nIHRoZSB3aXBoeSBsb2NrIChgbG9ja2RlcF9hc3NlcnRfd2lwaHlgKSBpbnN0ZWFkIG9mIGVudGVyaW5nIGFuIFJDVSByZWFkLXNpZGUgY3JpdGljYWwgc2VjdGlvbi5cXG5cXG5UaGVyZSBhcmUgbm8gbmV3IG1lbW9yeSBhbGxvY2F0aW9ucywgdW5pbml0aWFsaXplZCB2YXJpYWJsZSBhY2Nlc3NlcywgaW5mby1sZWFrcyB0byB1c2Vyc3BhY2UsIG9yIGFsdGVyZWQgYnVmZmVyIGJvdW5kcy4gQW55IHBvdGVudGlhbCBsb2NraW5nIGlzc3VlcyAoc3VjaCBhcyBtaXNzaW5nIHdpcGh5IGxvY2spIG9yIHN5bmNocm9uaXphdGlvbi9tZW1vcnkgc2FmZXR5IGJ1Z3MgKHN1Y2ggYXMgY29uY3VycmVudCBsaXN0IGFjY2VzcyBvciB1c2UtYWZ0ZXItZnJlZSkgYXJlIGRldGVjdGFibGUgYnkgTE9DS0RFUCBhbmQgS0FTQU4uIFRoZXJlZm9yZSwgS01TQU4gaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlcGxhY2VzIFJDVS1iYXNlZCBrZXkgaXRlcmF0aW9uIChpZWVlODAyMTFfaXRlcl9rZXlzX3JjdSkgd2l0aCBpZWVlODAyMTFfaXRlcl9rZXlzIGluIHJ0dzg5IENBTSBhbmQgV29XTEFOIHBhdGhzLiBpZWVlODAyMTFfaXRlcl9rZXlzIGVuZm9yY2VzIGEgd2lwaHkgbXV0ZXggYXNzZXJ0aW9uIChsb2NrZGVwX2Fzc2VydF93aXBoeSksIGNoYW5naW5nIGxvY2tpbmcgYW5kIHN5bmNocm9uaXphdGlvbiBhc3N1bXB0aW9ucyBkdXJpbmcga2V5IHJlc2V0IGFuZCBXb1dMQU4ga2V5IGNvbnN0cnVjdGlvbi91cGRhdGVzLiBUaGUgZHJpdmVyIGlzIGFjY2Vzc2libGUgdmlhIFVTQiBnYWRnZXQgZW11bGF0aW9uIGFuZCB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQyMTo0MDoyOS43NjUwODExODVaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU4NjgxNjk4MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDQ4OTY3MjYxMjJhNDljMmY2OTc0ZDcyZGZjYjZlYzMyZDQxNGU3OGNcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFR1ZSBTZXAgOCAyMTo0MDoyOCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NhbS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jYW0uY1xcbmluZGV4IDdjNjJlY2UxMzdkMDEuLjIyZjIxYTA0YTk2ZDIgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jYW0uY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY2FtLmNcXG5AQCAtNjA1LDkgKzYwNSw3IEBAIHZvaWQgcnR3ODlfY2FtX2RlaW5pdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHN0cnVjdCBydHc4OV92aWZfbGluayAqcnR3dmlmX2xpXFxuIFxcbiB2b2lkIHJ0dzg5X2NhbV9yZXNldF9rZXlzKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcXG4ge1xcbi1cXHRyY3VfcmVhZF9sb2NrKCk7XFxuLVxcdGllZWU4MDIxMV9pdGVyX2tleXNfcmN1KHJ0d2Rldi1cXHUwMDNlaHcsIE5VTEwsIHJ0dzg5X2NhbV9yZXNldF9rZXlfaXRlciwgcnR3ZGV2KTtcXG4tXFx0cmN1X3JlYWRfdW5sb2NrKCk7XFxuK1xcdGllZWU4MDIxMV9pdGVyX2tleXMocnR3ZGV2LVxcdTAwM2VodywgTlVMTCwgcnR3ODlfY2FtX3Jlc2V0X2tleV9pdGVyLCBydHdkZXYpO1xcbiB9XFxuIFxcbiBzdGF0aWMgaW50IHJ0dzg5X2NhbV9nZXRfYXZhaWxfYWRkcl9jYW0oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuY1xcbmluZGV4IDJkZmEyNGM1NGU3ZDcuLjBiZjM0NjkyYzdjZTMgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmNcXG5AQCAtNDczLDEwICs0NzMsOCBAQCBzdGF0aWMgdm9pZCBydHc4OV93b3dfY29uc3RydWN0X2tleV9pbmZvKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcXG4gXFx0c3RydWN0IGllZWU4MDIxMV92aWYgKndvd192aWYgPSBydHd2aWZfbGlua190b192aWYocnR3dmlmX2xpbmspO1xcbiBcXHRib29sIGVyciA9IGZhbHNlO1xcbiBcXG4tXFx0cmN1X3JlYWRfbG9jaygpO1xcbi1cXHRpZWVlODAyMTFfaXRlcl9rZXlzX3JjdShydHdkZXYtXFx1MDAzZWh3LCB3b3dfdmlmLFxcbi1cXHRcXHRcXHRcXHRydHc4OV93b3dfZ2V0X2tleV9pbmZvX2l0ZXIsIFxcdTAwMjZlcnIpO1xcbi1cXHRyY3VfcmVhZF91bmxvY2soKTtcXG4rXFx0aWVlZTgwMjExX2l0ZXJfa2V5cyhydHdkZXYtXFx1MDAzZWh3LCB3b3dfdmlmLFxcbitcXHRcXHRcXHQgICAgcnR3ODlfd293X2dldF9rZXlfaW5mb19pdGVyLCBcXHUwMDI2ZXJyKTtcXG4gXFxuIFxcdGlmIChlcnIpIHtcXG4gXFx0XFx0cnR3ODlfd293X2tleV9jbGVhcihydHdkZXYpO1xcbkBAIC02OTUsMTAgKzY5Myw4IEBAIHN0YXRpYyB2b2lkIHJ0dzg5X3dvd191cGRhdGVfa2V5X2luZm8oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBib29sIHJ4X3JlYWR5KVxcbiBcXHRzdHJ1Y3QgaWVlZTgwMjExX2Jzc19jb25mICpic3NfY29uZjtcXG4gXFx0c3RydWN0IGllZWU4MDIxMV9rZXlfY29uZiAqa2V5O1xcbiBcXG4tXFx0cmN1X3JlYWRfbG9jaygpO1xcbi1cXHRpZWVlODAyMTFfaXRlcl9rZXlzX3JjdShydHdkZXYtXFx1MDAzZWh3LCB3b3dfdmlmLFxcbi1cXHRcXHRcXHRcXHRydHc4OV93b3dfc2V0X2tleV9pbmZvX2l0ZXIsIFxcdTAwMjZkYXRhKTtcXG4tXFx0cmN1X3JlYWRfdW5sb2NrKCk7XFxuK1xcdGllZWU4MDIxMV9pdGVyX2tleXMocnR3ZGV2LVxcdTAwM2Vodywgd293X3ZpZixcXG4rXFx0XFx0XFx0ICAgIHJ0dzg5X3dvd19zZXRfa2V5X2luZm9faXRlciwgXFx1MDAyNmRhdGEpO1xcbiBcXG4gXFx0aWYgKGRhdGEuZXJyb3IpIHtcXG4gXFx0XFx0cnR3ODlfZGVidWcocnR3ZGV2LCBSVFc4OV9EQkdfV09XLCBcXFwiJXMgZXJyb3JcXFxcblxcXCIsIF9fZnVuY19fKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMjE6NDA6MzAuMzUyODcxODI1WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjo4MjQzNTM5NjExOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJSVFc4OVwiLFxuICAgIFwiUlRXODlfQ09SRVwiLFxuICAgIFwiUlRXODlfVVNCXCIsXG4gICAgXCJSVFc4OV84ODUyQVVcIixcbiAgICBcIk1BQzgwMjExXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicnR3ODlfY2FtX3Jlc2V0X2tleXNcIixcbiAgICBcInJ0dzg5X3dvd19jb25zdHJ1Y3Rfa2V5X2luZm9cIixcbiAgICBcInJ0dzg5X3dvd191cGRhdGVfa2V5X2luZm9cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCByZXBsYWNlcyBSQ1UtYmFzZWQga2V5IGl0ZXJhdGlvbiAoaWVlZTgwMjExX2l0ZXJfa2V5c19yY3UpIHdpdGggaWVlZTgwMjExX2l0ZXJfa2V5cyBpbiBydHc4OSBDQU0gYW5kIFdvV0xBTiBwYXRocy4gaWVlZTgwMjExX2l0ZXJfa2V5cyBlbmZvcmNlcyBhIHdpcGh5IG11dGV4IGFzc2VydGlvbiAobG9ja2RlcF9hc3NlcnRfd2lwaHkpLCBjaGFuZ2luZyBsb2NraW5nIGFuZCBzeW5jaHJvbml6YXRpb24gYXNzdW1wdGlvbnMgZHVyaW5nIGtleSByZXNldCBhbmQgV29XTEFOIGtleSBjb25zdHJ1Y3Rpb24vdXBkYXRlcy4gVGhlIGRyaXZlciBpcyBhY2Nlc3NpYmxlIHZpYSBVU0IgZ2FkZ2V0IGVtdWxhdGlvbiBhbmQgd29ydGggZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzc1xudG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5UaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLFxuYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy5cblxuLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURTpcbiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZFxuICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLlxuICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsXG4gIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy5cblxuLSBETyBOT1QgQkxJTkRMWSBUUlVTVCBcIk5PIEZVTkNUSU9OQUwgQ0hBTkdFXCIgKE5GQ0kpIE9SIFwiUkVGQUNUT1JJTkdcIiBDTEFJTVM6XG4gIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgXCJjbGVhbnVwc1wiLCBcInJlZmFjdG9yaW5nc1wiLCBvciBzdGF0ZVxuICBcIk5vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkXCIuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLlxuICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnRcbiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuXG4gIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuXG5cbi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6XG4gIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKixcbiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuXG4gIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXJcbiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOlxuXG4tIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6XG4gICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLlxuICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKVxuICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy5cbiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50c1xuICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuXG4gICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLlxuLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6XG4gICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczpcbiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmdcbiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy5cbiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4zLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzpcbi0gQ29yZSBTdWJzeXN0ZW1zOlxuICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSxcbiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuXG4tIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczpcbiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuXG4tIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczpcbiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuXG4tIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6XG4gICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6XG5cbi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOlxuICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1c1xuICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdFxuICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS5cbiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzIFwiZm9jdXNlZFwiLFxuICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuXG5cbi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOlxuICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHNcbiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuXG5cbi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOlxuICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrXG4gIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLlxuICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXJcbiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlnc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6XG4tIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4tIENoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuXG4tIFN0cmlwIGFueSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA0ODk2NzI2MTIyYTQ5YzJmNjk3NGQ3MmRmY2I2ZWMzMmQ0MTRlNzhjXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBTZXAgOCAyMTo0MDoyOCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY2FtLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NhbS5jXG5pbmRleCA3YzYyZWNlMTM3ZDAxLi4yMmYyMWEwNGE5NmQyIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jYW0uY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jYW0uY1xuQEAgLTYwNSw5ICs2MDUsNyBAQCB2b2lkIHJ0dzg5X2NhbV9kZWluaXQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBzdHJ1Y3QgcnR3ODlfdmlmX2xpbmsgKnJ0d3ZpZl9saVxuIFxuIHZvaWQgcnR3ODlfY2FtX3Jlc2V0X2tleXMoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuIHtcbi1cdHJjdV9yZWFkX2xvY2soKTtcbi1cdGllZWU4MDIxMV9pdGVyX2tleXNfcmN1KHJ0d2Rldi1cdTAwM2VodywgTlVMTCwgcnR3ODlfY2FtX3Jlc2V0X2tleV9pdGVyLCBydHdkZXYpO1xuLVx0cmN1X3JlYWRfdW5sb2NrKCk7XG4rXHRpZWVlODAyMTFfaXRlcl9rZXlzKHJ0d2Rldi1cdTAwM2VodywgTlVMTCwgcnR3ODlfY2FtX3Jlc2V0X2tleV9pdGVyLCBydHdkZXYpO1xuIH1cbiBcbiBzdGF0aWMgaW50IHJ0dzg5X2NhbV9nZXRfYXZhaWxfYWRkcl9jYW0oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jXG5pbmRleCAyZGZhMjRjNTRlN2Q3Li4wYmYzNDY5MmM3Y2UzIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuY1xuQEAgLTQ3MywxMCArNDczLDggQEAgc3RhdGljIHZvaWQgcnR3ODlfd293X2NvbnN0cnVjdF9rZXlfaW5mbyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXG4gXHRzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqd293X3ZpZiA9IHJ0d3ZpZl9saW5rX3RvX3ZpZihydHd2aWZfbGluayk7XG4gXHRib29sIGVyciA9IGZhbHNlO1xuIFxuLVx0cmN1X3JlYWRfbG9jaygpO1xuLVx0aWVlZTgwMjExX2l0ZXJfa2V5c19yY3UocnR3ZGV2LVx1MDAzZWh3LCB3b3dfdmlmLFxuLVx0XHRcdFx0cnR3ODlfd293X2dldF9rZXlfaW5mb19pdGVyLCBcdTAwMjZlcnIpO1xuLVx0cmN1X3JlYWRfdW5sb2NrKCk7XG4rXHRpZWVlODAyMTFfaXRlcl9rZXlzKHJ0d2Rldi1cdTAwM2Vodywgd293X3ZpZixcbitcdFx0XHQgICAgcnR3ODlfd293X2dldF9rZXlfaW5mb19pdGVyLCBcdTAwMjZlcnIpO1xuIFxuIFx0aWYgKGVycikge1xuIFx0XHRydHc4OV93b3dfa2V5X2NsZWFyKHJ0d2Rldik7XG5AQCAtNjk1LDEwICs2OTMsOCBAQCBzdGF0aWMgdm9pZCBydHc4OV93b3dfdXBkYXRlX2tleV9pbmZvKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgYm9vbCByeF9yZWFkeSlcbiBcdHN0cnVjdCBpZWVlODAyMTFfYnNzX2NvbmYgKmJzc19jb25mO1xuIFx0c3RydWN0IGllZWU4MDIxMV9rZXlfY29uZiAqa2V5O1xuIFxuLVx0cmN1X3JlYWRfbG9jaygpO1xuLVx0aWVlZTgwMjExX2l0ZXJfa2V5c19yY3UocnR3ZGV2LVx1MDAzZWh3LCB3b3dfdmlmLFxuLVx0XHRcdFx0cnR3ODlfd293X3NldF9rZXlfaW5mb19pdGVyLCBcdTAwMjZkYXRhKTtcbi1cdHJjdV9yZWFkX3VubG9jaygpO1xuK1x0aWVlZTgwMjExX2l0ZXJfa2V5cyhydHdkZXYtXHUwMDNlaHcsIHdvd192aWYsXG4rXHRcdFx0ICAgIHJ0dzg5X3dvd19zZXRfa2V5X2luZm9faXRlciwgXHUwMDI2ZGF0YSk7XG4gXG4gXHRpZiAoZGF0YS5lcnJvcikge1xuIFx0XHRydHc4OV9kZWJ1ZyhydHdkZXYsIFJUVzg5X0RCR19XT1csIFwiJXMgZXJyb3JcXG5cIiwgX19mdW5jX18pO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMjE6NDA6MzAuMzUyODc0MDQ1WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6Njc0NTI1MTYwNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFJUVzg5IFBhdGNoKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgcGF0Y2guIEkgc2VlIG1vZGlmaWNhdGlvbnMgdG91Y2hpbmcgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY2FtLmNgIGFuZCBgZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuY2AuIEltbWVkaWF0ZWx5LCBteSBicmFpbiBraWNrcyBpbnRvIGdlYXI6IHJ0dzg5Li4uIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeS4gSXMgdGhpcyB0aGUgUENJZSwgVVNCLCBvciBTRElPIFJlYWx0ZWsgd2lyZWxlc3MgZHJpdmVyPyBUaW1lIHRvIHF1aWNrbHkgY29uZmlybSBteSBhc3N1bXB0aW9ucy4gSSdsbCBwcm9iYWJseSBmaXJlIHVwIGBncmVwcGVyYCBvciBqdXN0IHF1aWNrbHkgcmVhZCB0aGUgcmVsZXZhbnQgZmlsZXMgYW5kIHRoZSBhc3NvY2lhdGVkIEtjb25maWcgdG8gZ2V0IHRoZSBjb21wbGV0ZSBwaWN0dXJlLiBOZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHNjb3BlIG9mIHRoZXNlIGNoYW5nZXMgYmVmb3JlIEkgY2FuIGFzc2VzcyB0aGUgaW1wYWN0LlxuXG5cbiIsIklucHV0VG9rZW5zIjozNjA2LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTAyLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMjE6NDA6MzcuMDk4MTI4MDMyWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk3ODA5OTQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBSVFc4OVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgT1IgQlNELTMtQ2xhdXNlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjI6bWVudWNvbmZpZyBSVFc4OVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIDgwMi4xMWF4IHdpcmVsZXNzIGNoaXBzIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc9MTE9aWYgUlRXODlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjEzOmNvbmZpZyBSVFc4OV9DT1JFXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE0LVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjE3OmNvbmZpZyBSVFc4OV9QQ0lcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTgtXFx0dHJpc3RhdGVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjIwOmNvbmZpZyBSVFc4OV9VU0JcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMjEtXFx0dHJpc3RhdGVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMjItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjIzOmNvbmZpZyBSVFc4OV84ODUxQlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0yNC1cXHR0cmlzdGF0ZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0yNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MjY6Y29uZmlnIFJUVzg5Xzg4NTJBXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTI3LVxcdHRyaXN0YXRlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTI4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoyOTpjb25maWcgUlRXODlfODg1MkJfQ09NTU9OXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTMwLVxcdHRyaXN0YXRlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTMxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzozMjpjb25maWcgUlRXODlfODg1MkJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMzMtXFx0dHJpc3RhdGVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMzQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjM1OmNvbmZpZyBSVFc4OV84ODUyQlRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMzYtXFx0dHJpc3RhdGVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMzctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjM4OmNvbmZpZyBSVFc4OV84ODUyQ1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0zOS1cXHR0cmlzdGF0ZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy00MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6NDE6Y29uZmlnIFJUVzg5Xzg5MjJBXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTQyLVxcdHRyaXN0YXRlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTQzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzo0NDpjb25maWcgUlRXODlfODkyMkRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctNDUtXFx0dHJpc3RhdGVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctNDYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjQ3OmNvbmZpZyBSVFc4OV84ODUxQkVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctNDgtXFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgODg1MUJFIFBDSSB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2KSBhZGFwdGVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTU3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzo1ODpjb25maWcgUlRXODlfODg1MUJVXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTU5LVxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIDg4NTFCVSBVU0Igd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNikgYWRhcHRlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy02OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6Njk6Y29uZmlnIFJUVzg5Xzg4NTJBRVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy03MC1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4ODUyQUUgUENJIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDYpIGFkYXB0ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctNzktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjgwOmNvbmZpZyBSVFc4OV84ODUyQVVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctODEtXFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgODg1MkFVIFVTQiB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2KSBhZGFwdGVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTkwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzo5MTpjb25maWcgUlRXODlfODg1MkJFXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTkyLVxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIDg4NTJCRSBQQ0kgd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNikgYWRhcHRlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xMDItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjEwMzpjb25maWcgUlRXODlfODg1MkJVXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTEwNC1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4ODUyQlUgVVNCIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDYpIGFkYXB0ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTE0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoxMTU6Y29uZmlnIFJUVzg5Xzg4NTJCVEVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTE2LVxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIDg4NTJCRS1WVCBQQ0kgd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNikgYWRhcHRlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xMjYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjEyNzpjb25maWcgUlRXODlfODg1MkNFXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTEyOC1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4ODUyQ0UgUENJIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDZFKSBhZGFwdGVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTEzNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTM4OmNvbmZpZyBSVFc4OV84ODUyQ1VcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTM5LVxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIDg4NTJDVSBVU0Igd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNkUpIGFkYXB0ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTQ4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoxNDk6Y29uZmlnIFJUVzg5Xzg5MjJBRVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xNTAtXFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgODkyMkFFLzg5MjJBRS1WUyBQQ0kgd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNykgYWRhcHRlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xNjItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjE2Mzpjb25maWcgUlRXODlfODkyMkFVXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE2NC1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4OTIyQVUgVVNCIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDcpIGFkYXB0ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTc0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoxNzU6Y29uZmlnIFJUVzg5Xzg5MjJERVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xNzYtXFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgODkyMkRFLzg5MjJERS1WUyBQQ0kgd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNykgYWRhcHRlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xODYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjE4Nzpjb25maWcgUlRXODlfREVCVUdcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTg4LVxcdGJvb2xcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTg5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoxOTA6Y29uZmlnIFJUVzg5X0RFQlVHTVNHXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE5MS1cXHRib29sIFxcXCJSZWFsdGVrIHJ0dzg5IGRlYnVnIG1lc3NhZ2Ugc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xOTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjE5OTpjb25maWcgUlRXODlfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0yMDAtXFx0Ym9vbCBcXFwiUmVhbHRlayBydHc4OSBkZWJ1Z2ZzIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMjA3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoyMDg6Y29uZmlnIFJUVzg5X0xFRFNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMjA5LVxcdGJvb2xcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0yMTQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjIxNTpjb25maWcgUlRXODlfTEVEU19NQ1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0yMTYtXFx0Ym9vbFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQyMTo0MDozNy4xOTU5NDIzNzFaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo1MzY4NjQ3Mzk4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlVTQiBSVFc4OSBEcml2ZXIgRXhwbG9yYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ3ZlIG5vdGljZWQgdGhlc2UgVVNCIHZlcnNpb25zIG9mIHJ0dzg5IGRyaXZlcnMg4oCTIFJUVzg5Xzg4NTFCVSwgODg1MkFVLCBldGMuIEludGVyZXN0aW5nLiBTaW5jZSB0aGV5J3JlIFVTQiwgdGhhdCBvcGVucyB1cCBhIHdob2xlIGF2ZW51ZSBmb3IgdGVzdGluZy4gSSBjb3VsZCBlbXVsYXRlIHRoZW0gdXNpbmcgVVNCIGdhZGdldCwgcmF3LWdhZGdldCwgb3IgZXZlbiBzeXprYWxsZXIncyBVU0IgZnV6emluZyBjYXBhYmlsaXRpZXMgKGxpa2Ugc3l6X3VzYl9jb25uZWN0KS4gVmlydHVhbCBVU0IgaXMgYW5vdGhlciBvcHRpb24uXG5cbk15IGltbWVkaWF0ZSBxdWVzdGlvbiBpczogZG9lcyBzeXprYWxsZXIgYWxyZWFkeSB0YXJnZXQgVVNCIFdpLUZpIGRyaXZlcnMsIGFuZCwgbW9yZSBzcGVjaWZpY2FsbHksIGlzIHRoaXMgUlRXODkgVVNCIGRyaXZlciBlbXVsYXRhYmxlIG9yIGV2ZW4gcmVhY2hhYmxlIHdpdGggdGhvc2UgdG9vbHM/IFRoYXQncyB3aGF0IEkgbmVlZCB0byBmaWd1cmUgb3V0IGZpcnN0LlxuXG5CZXlvbmQgdGhhdCwgSSBuZWVkIHRvIGRlbHZlIGludG8gdGhpcyBwYXRjaCBhbmQgdW5kZXJzdGFuZCB0aGUgY29kZSBpdHNlbGYuIEknbSB3b25kZXJpbmcgaWYgbWFjODAyMTEgb3IgbWFjODAyMTFfaHdzaW0gKG9yIHNvbWV0aGluZyBzaW1pbGFyKSBpcyBpbiB0aGUgbWl4LiBJIHJlYWxseSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCdzIGdvaW5nIG9uIHdpdGggYHJ0dzg5X2NhbV9yZXNldF9rZXlzYCBhbmQgdGhlIGBydHc4OV93b3dfKmAgZnVuY3Rpb25zLCBwYXJ0aWN1bGFybHkgYHJ0dzg5X3dvd19jb25zdHJ1Y3Rfa2V5X2luZm9gIGFuZCBgcnR3ODlfd293X3VwZGF0ZV9rZXlfaW5mb2AuIFRoYXQgbmFtaW5nIHN1Z2dlc3RzIHNvbWUga2luZCBvZiB3YWtlLW9uLXdpcmVsZXNzIG9yIHNlY3VyaXR5IGtleSBtYW5hZ2VtZW50LCBhbmQgdGhhdCBjb3VsZCBiZSBpbnRlcmVzdGluZyBmcm9tIGEgc2VjdXJpdHkgcGVyc3BlY3RpdmUuXG5cblRvIGdhaW4gYSBzb2xpZCB1bmRlcnN0YW5kaW5nLCBJJ2xsIHN0YXJ0IGJ5IGNoZWNraW5nIGFsbCB0aGUgY2FsbGVycyBvZiBgcnR3ODlfY2FtX3Jlc2V0X2tleXNgLCBgcnR3ODlfd293X2NvbnN0cnVjdF9rZXlfaW5mb2AsIGFuZCBgcnR3ODlfd293X3VwZGF0ZV9rZXlfaW5mb2AuIFRoaXMgc2hvdWxkIGdpdmUgbWUgYSBnb29kIGhhbmRsZSBvbiBob3cgdGhlc2UgZnVuY3Rpb25zIGFyZSB1c2VkIHdpdGhpbiB0aGUgZHJpdmVyJ3MgY29udGV4dC5cblxuXG4iLCJJbnB1dFRva2VucyI6NjU0OSwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQyMTo0MDo0Mi41NjQ2MDAwNDlaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTMwNTI2MDQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJ0dzg5X2NhbV9yZXNldF9rZXlzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODlcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jYW0uYz01OTc9dm9pZCBydHc4OV9jYW1fZGVpbml0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldiwgc3RydWN0IHJ0dzg5X3ZpZl9saW5rICpydHd2aWZfbGluaylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY2FtLmMtNjA1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY2FtLmM6NjA2OnZvaWQgcnR3ODlfY2FtX3Jlc2V0X2tleXMoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY2FtLmMtNjA3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY2FtLmg9NDczPXZvaWQgcnR3ODlfY2FtX2Jzc2lkX2NoYW5nZWQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY2FtLmgtNDc0LVxcdFxcdFxcdCAgICAgc3RydWN0IHJ0dzg5X3ZpZl9saW5rICpydHd2aWZfbGluayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jYW0uaDo0NzU6dm9pZCBydHc4OV9jYW1fcmVzZXRfa2V5cyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY2FtLmgtNDc2LWludCBydHc4OV9jYW1fYXR0YWNoX2xpbmtfc2VjX2NhbShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3Nlci5jPTM1Nz1zdGF0aWMgdm9pZCBzZXJfcmVzZXRfbWFjX2JpbmRpbmcoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9zZXIuYy0zNjAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9zZXIuYzozNjE6XFx0cnR3ODlfY2FtX3Jlc2V0X2tleXMocnR3ZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3Nlci5jLTM2Mi1cXHRydHc4OV9mb3JfZWFjaF9ydHd2aWYocnR3ZGV2LCBydHd2aWYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jPTEyNTY9c3RhdGljIGludCBydHc4OV93b3dfc3dhcF9mdyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGJvb2wgd293KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy0xMzE0LVxcdGlmICghaXNfY29ubilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jOjEzMTU6XFx0XFx0cnR3ODlfY2FtX3Jlc2V0X2tleXMocnR3ZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTEzMTYtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDIxOjQwOjQyLjY5NTEzMDc2N1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI4NTIyODIyNjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzIGNvZGUuIEhlcmUncyB3aGF0IEknbSB0aGlua2luZyByaWdodCBub3c6XG5cbioqSW52ZXN0aWdhdGluZyBXYWtlLW9uLVdMQU4gS2V5IE1hbmFnZW1lbnQqKlxuXG5BbHJpZ2h0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIFdha2Utb24tV0xBTiAoV29XTEFOKSBrZXkgaW5mb3JtYXRpb24gaXMgYmVpbmcgaGFuZGxlZCBpbiB0aGlzIGBydHc4OWAgZHJpdmVyLiBUbyBnZXQgYSBzb2xpZCBncmFzcCwgSSdtIGdvaW5nIHRvIHN0YXJ0IGJ5IHRyYWNpbmcgdGhlIGNhbGxlcnMgb2YgdGhvc2Uga2V5IGZ1bmN0aW9uczogYHJ0dzg5X3dvd19jb25zdHJ1Y3Rfa2V5X2luZm9gIGFuZCBgcnR3ODlfd293X3VwZGF0ZV9rZXlfaW5mb2AuIFVuZGVyc3RhbmRpbmcgd2hlcmUgdGhlc2UgYXJlIGJlaW5nIGludm9rZWQgd2lsbCBnaXZlIG1lIGEgZ29vZCBwaWN0dXJlIG9mIHRoZSBXb1dMQU4ga2V5IGluaXRpYWxpemF0aW9uIGFuZCB1cGRhdGUgZmxvdy4gS25vd2luZyB0aGUgY29udGV4dCBvZiB0aGVzZSBjYWxscyBpcyBjcml0aWNhbCB0byBlbnN1cmluZyB0aGUgc2VjdXJpdHkgYW5kIHByb3BlciBmdW5jdGlvbiBvZiBXb1dMQU4gd2l0aGluIHRoZSBkcml2ZXIuIExldCdzIHNlZSB3aGF0IHRoZSBjYWxsIGdyYXBocyByZXZlYWwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc4OTUsIk91dHB1dFRva2VucyI6NDcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQyMTo0MDo0NS41NDc0MTY2NjNaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI1OTYyNjg4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJ0dzg5X3dvd18oY29uc3RydWN0fHVwZGF0ZSlfa2V5X2luZm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jPTQ1Nz1zdGF0aWMgdm9pZCBydHc4OV93b3dfa2V5X2NsZWFyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtNDY3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmM6NDY4OnN0YXRpYyB2b2lkIHJ0dzg5X3dvd19jb25zdHJ1Y3Rfa2V5X2luZm8oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtNDY5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmM9NjQzPXN0YXRpYyBzdHJ1Y3QgaWVlZTgwMjExX2tleV9jb25mICpydHc4OV93b3dfZ3RrX3Jla2V5KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtNjgzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmM6Njg0OnN0YXRpYyB2b2lkIHJ0dzg5X3dvd191cGRhdGVfa2V5X2luZm8oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBib29sIHJ4X3JlYWR5KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtNjg1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmM9MTM5OT1zdGF0aWMgaW50IHJ0dzg5X3dvd19kaXNhYmxlX3RyeF9wcmUoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy0xNDI4LVxcdGlmICghcmV0KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmM6MTQyOTpcXHRcXHRydHc4OV93b3dfdXBkYXRlX2tleV9pbmZvKHJ0d2RldiwgZmFsc2UpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtMTQzMC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtMTQzMy1cXHRpZiAoIXJldClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jOjE0MzQ6XFx0XFx0cnR3ODlfd293X3VwZGF0ZV9rZXlfaW5mbyhydHdkZXYsIHRydWUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtMTQzNS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmM9MTU3NT1zdGF0aWMgaW50IHJ0dzg5X3dvd19md19zdGFydChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTE1OTQtXFx0XFx0cnR3ODlfd293X3BhdHRlcm5fd3JpdGUocnR3ZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jOjE1OTU6XFx0XFx0cnR3ODlfd293X2NvbnN0cnVjdF9rZXlfaW5mbyhydHdkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtMTU5Ni1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMjE6NDA6NDUuNjczMzg2MDkxWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjE5ODY3OTI0NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIG1hYzgwMjExIEtleSBJdGVyYXRpb24gQ2hhbmdlKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgY29kZSBjaGFuZ2UuIE15IGltbWVkaWF0ZSBxdWVzdGlvbiBpcyB3aHkgd2UndmUgc3dpdGNoZWQgZnJvbSB1c2luZyBgaWVlZTgwMjExX2l0ZXJfa2V5c2AgdG8gYGllZWU4MDIxMV9pdGVyX2tleXNfcmN1YC4gVGhpcyBsaWtlbHkgcG9pbnRzIHRvIGNvbmN1cnJlbmN5IGlzc3VlcyBvciBhIG5lZWQgZm9yIHNhZmVyIGtleSBhY2Nlc3Mgd2l0aGluIHRoZSBtYWM4MDIxMSBzdGFjay4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGZ1bmRhbWVudGFsIGRpZmZlcmVuY2UgaGVyZS5cblxuTXkgbmV4dCBzdGVwIGlzIHRvIGV4YW1pbmUgdGhlIGRlZmluaXRpb25zIG9mIGJvdGggZnVuY3Rpb25zLCBgaWVlZTgwMjExX2l0ZXJfa2V5c2AgYW5kIGBpZWVlODAyMTFfaXRlcl9rZXlzX3JjdWAsIHRvIGlkZW50aWZ5IHRoZWlyIHNwZWNpZmljIGZ1bmN0aW9uYWxpdGllcyBhbmQgdGhlaXIgdXNhZ2UgY29udGV4dC4gSSdsbCBiZSBsb29raW5nIGluIGBpbmNsdWRlL25ldC9tYWM4MDIxMS5oYCBhbmQgdGhlbiB0aGUgbWFjODAyMTEgc291cmNlIGRpcmVjdG9yeSB0byBnZXQgdGhlIGNvZGUuIFRoaXMgd2lsbCBjbGFyaWZ5IGhvdyB0aGUgUkNVIHZlcnNpb24gaGFuZGxlcyBrZXkgaXRlcmF0aW9ucyBkaWZmZXJlbnRseSBhbmQsIGhvcGVmdWxseSwgcmV2ZWFsIHRoZSB1bmRlcmx5aW5nIHJlYXNvbiBmb3IgdGhlIHN3aXRjaC4gSSdtIGV4cGVjdGluZyB0aGUgUkNVIHZlcnNpb24gdG8gcHJvdmlkZSBzb21lIGZvcm0gb2YgcmVhZC1jb3B5LXVwZGF0ZSBwcm90ZWN0aW9uIGZvciB0aGUga2V5IGRhdGEgc3RydWN0dXJlcywgYnV0IEkgbmVlZCB0byBjb25maXJtIHRoaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg4ODUsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQyMTo0MDo0Ny44NzIwNzAxNzdaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI2NjA3NzU5NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpZWVlODAyMTFfaXRlcl9rZXlzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImluY2x1ZGUvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbmV0L21hYzgwMjExLmg9Njg5MT11MzIgaWVlZTgwMjExX3R4cV9hcWxfcGVuZGluZyhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4tLVxcbmluY2x1ZGUvbmV0L21hYzgwMjExLmgtNjg5NC0vKipcXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oOjY4OTU6ICogaWVlZTgwMjExX2l0ZXJfa2V5cyAtIGl0ZXJhdGUga2V5cyBwcm9ncmFtbWVkIGludG8gdGhlIGRldmljZVxcbmluY2x1ZGUvbmV0L21hYzgwMjExLmgtNjg5Ni0gKiBAaHc6IHBvaW50ZXIgb2J0YWluZWQgZnJvbSBpZWVlODAyMTFfYWxsb2NfaHcoKVxcbi0tXFxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaC02OTExLSAqL1xcbmluY2x1ZGUvbmV0L21hYzgwMjExLmg6NjkxMjp2b2lkIGllZWU4MDIxMV9pdGVyX2tleXMoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaC02OTEzLVxcdFxcdFxcdCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxcbi0tXFxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaC02OTIxLS8qKlxcbmluY2x1ZGUvbmV0L21hYzgwMjExLmg6NjkyMjogKiBpZWVlODAyMTFfaXRlcl9rZXlzX3JjdSAtIGl0ZXJhdGUga2V5cyBwcm9ncmFtbWVkIGludG8gdGhlIGRldmljZVxcbmluY2x1ZGUvbmV0L21hYzgwMjExLmgtNjkyMy0gKiBAaHc6IHBvaW50ZXIgb2J0YWluZWQgZnJvbSBpZWVlODAyMTFfYWxsb2NfaHcoKVxcbi0tXFxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaC02OTM1LSAqL1xcbmluY2x1ZGUvbmV0L21hYzgwMjExLmg6NjkzNjp2b2lkIGllZWU4MDIxMV9pdGVyX2tleXNfcmN1KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbmluY2x1ZGUvbmV0L21hYzgwMjExLmgtNjkzNy1cXHRcXHRcXHQgICAgIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDIxOjQwOjQ4LjEzODE1NzI4NFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo1MDUzNDI2NDgyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEknbSBhbHJlYWR5IHByZXR0eSBmYW1pbGlhciB3aXRoIDgwMi4xMSBhbmQgd2lyZWxlc3MgbmV0d29ya2luZzpcblxuKipEaXZpbmcgaW50byBLZXkgSXRlcmF0aW9uKipcblxuUmlnaHQsIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlc2Uga2V5IGl0ZXJhdGlvbiBmdW5jdGlvbnMsIGBpZWVlODAyMTFfaXRlcl9rZXlzYCBhbmQgYGllZWU4MDIxMV9pdGVyX2tleXNfcmN1YCwgYXJlIGltcGxlbWVudGVkLiBDbGVhcmx5LCB0aGVyZSdzIGEgbmVlZCB0byBoYW5kbGUga2V5cyB3aXRoaW4gdGhlIDgwMi4xMSBjb250ZXh0LCBsaWtlbHkgcmVsYXRlZCB0byBzZWN1cml0eSBhbmQgZW5jcnlwdGlvbiwgYW5kIHRoZSBjaG9pY2Ugb2YgYHJjdWAgaW4gb25lIG9mIHRoZSBmdW5jdGlvbnMgc3VnZ2VzdHMgdGhhdCBjb25jdXJyZW5jeSBpcyBhIGNvcmUgY29uY2VybiDigJMgdGhleSdyZSBsaWtlbHkgZGVhbGluZyB3aXRoIGEgc2hhcmVkIHJlc291cmNlIHRoYXQgbXVsdGlwbGUgdGhyZWFkcyBvciBwcm9jZXNzZXMgbWlnaHQgYWNjZXNzLiBJJ2xsIG5lZWQgdG8gcGF5IGNsb3NlIGF0dGVudGlvbiB0byB0aGUgbG9jayBtYW5hZ2VtZW50IHN0cmF0ZWdpZXMgdXNlZCBpbiBlYWNoIGZ1bmN0aW9uLiBEb2VzIG9uZSB1c2UgbXV0ZXhlcywgc3BpbmxvY2tzLCBvciBzb21ldGhpbmcgbW9yZSBzb3BoaXN0aWNhdGVkPyBXaGF0IGFib3V0IFJDVSdzIHJlYWQtY29weS11cGRhdGUgc2VtYW50aWNzIGluIHRoZSBgX3JjdWAgdmVyc2lvbj8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIG51YW5jZXMgb2YgaG93IHRoZXNlIGtleXMgYXJlIHN0b3JlZCwgYWNjZXNzZWQsIGFuZCBtb2RpZmllZCwgZXNwZWNpYWxseSB3aGVuIGNvbmN1cnJlbnQgYWNjZXNzIGlzIGxpa2VseS4gSSdtIGhvcGluZyB0byBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIGhvdyB0aGV5IGd1YXJhbnRlZSBkYXRhIGludGVncml0eSBhbmQgdGhyZWFkIHNhZmV0eS4gUmVhZGluZyB0aGUgaW1wbGVtZW50YXRpb24gaXRzZWxmLCBhbG9uZyB3aXRoIHRoZSBkb2N1bWVudGF0aW9uLCB3aWxsIGdpdmUgbWUgdGhlIGluc2lnaHRzIEkgbmVlZCB0byBzZWUgaG93IHRoZXNlIGZ1bmN0aW9ucyBjb250cmlidXRlIHRvIHRoZSBvdmVyYWxsIDgwMi4xMSBzZWN1cml0eSBhcmNoaXRlY3R1cmUuIFVuZGVyc3RhbmRpbmcgdGhlc2UgdHdvIGltcGxlbWVudGF0aW9ucywgYW5kIGhvdyB0aGV5IHJlbGF0ZSwgaXMgZ29pbmcgdG8gYmUgY3J1Y2lhbCBmb3IgbXkgd29yay5cblxuXG4iLCJJbnB1dFRva2VucyI6OTczMSwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDIxOjQwOjUzLjE5MTU4NjYyNloiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDQ4MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L21hYzgwMjExL2tleS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEwMDAsXG4gIFwiTGluZUNvdW50XCI6IDgwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjEwMDA6XFx0c3RhdGljIHZvaWRcXG4xMDAxOlxcdGllZWU4MDIxMV9rZXlfaXRlcihzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4xMDAyOlxcdFxcdFxcdCAgIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXFxuMTAwMzpcXHRcXHRcXHQgICBzdHJ1Y3QgaWVlZTgwMjExX2tleSAqa2V5LFxcbjEwMDQ6XFx0XFx0XFx0ICAgdm9pZCAoKml0ZXIpKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbjEwMDU6XFx0XFx0XFx0XFx0XFx0c3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcXG4xMDA2OlxcdFxcdFxcdFxcdFxcdHN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGEsXFxuMTAwNzpcXHRcXHRcXHRcXHRcXHRzdHJ1Y3QgaWVlZTgwMjExX2tleV9jb25mICprZXksXFxuMTAwODpcXHRcXHRcXHRcXHRcXHR2b2lkICpkYXRhKSxcXG4xMDA5OlxcdFxcdFxcdCAgIHZvaWQgKml0ZXJfZGF0YSlcXG4xMDEwOlxcdHtcXG4xMDExOlxcdFxcdC8qIHNraXAga2V5cyBvZiBzdGF0aW9uIGluIHJlbW92YWwgcHJvY2VzcyAqL1xcbjEwMTI6XFx0XFx0aWYgKGtleS1cXHUwMDNlc3RhIFxcdTAwMjZcXHUwMDI2IGtleS1cXHUwMDNlc3RhLVxcdTAwM2VyZW1vdmVkKVxcbjEwMTM6XFx0XFx0XFx0cmV0dXJuO1xcbjEwMTQ6XFx0XFx0aWYgKCEoa2V5LVxcdTAwM2VmbGFncyBcXHUwMDI2IEtFWV9GTEFHX1VQTE9BREVEX1RPX0hBUkRXQVJFKSlcXG4xMDE1OlxcdFxcdFxcdHJldHVybjtcXG4xMDE2OlxcdFxcdGl0ZXIoaHcsIHZpZiwga2V5LVxcdTAwM2VzdGEgPyBcXHUwMDI2a2V5LVxcdTAwM2VzdGEtXFx1MDAzZXN0YSA6IE5VTEwsXFxuMTAxNzpcXHRcXHQgICAgIFxcdTAwMjZrZXktXFx1MDAzZWNvbmYsIGl0ZXJfZGF0YSk7XFxuMTAxODpcXHR9XFxuMTAxOTpcXHRcXG4xMDIwOlxcdHZvaWQgaWVlZTgwMjExX2l0ZXJfa2V5cyhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4xMDIxOlxcdFxcdFxcdFxcdCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxcbjEwMjI6XFx0XFx0XFx0XFx0IHZvaWQgKCppdGVyKShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4xMDIzOlxcdFxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXFxuMTAyNDpcXHRcXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqc3RhLFxcbjEwMjU6XFx0XFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IGllZWU4MDIxMV9rZXlfY29uZiAqa2V5LFxcbjEwMjY6XFx0XFx0XFx0XFx0XFx0ICAgICAgdm9pZCAqZGF0YSksXFxuMTAyNzpcXHRcXHRcXHRcXHQgdm9pZCAqaXRlcl9kYXRhKVxcbjEwMjg6XFx0e1xcbjEwMjk6XFx0XFx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBod190b19sb2NhbChodyk7XFxuMTAzMDpcXHRcXHRzdHJ1Y3QgaWVlZTgwMjExX2tleSAqa2V5LCAqdG1wO1xcbjEwMzE6XFx0XFx0c3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGE7XFxuMTAzMjpcXHRcXG4xMDMzOlxcdFxcdGxvY2tkZXBfYXNzZXJ0X3dpcGh5KGh3LVxcdTAwM2V3aXBoeSk7XFxuMTAzNDpcXHRcXG4xMDM1OlxcdFxcdGlmICh2aWYpIHtcXG4xMDM2OlxcdFxcdFxcdHNkYXRhID0gdmlmX3RvX3NkYXRhKHZpZik7XFxuMTAzNzpcXHRcXHRcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoa2V5LCB0bXAsIFxcdTAwMjZzZGF0YS1cXHUwMDNla2V5X2xpc3QsIGxpc3QpXFxuMTAzODpcXHRcXHRcXHRcXHRpZWVlODAyMTFfa2V5X2l0ZXIoaHcsIHZpZiwga2V5LCBpdGVyLCBpdGVyX2RhdGEpO1xcbjEwMzk6XFx0XFx0fSBlbHNlIHtcXG4xMDQwOlxcdFxcdFxcdGxpc3RfZm9yX2VhY2hfZW50cnkoc2RhdGEsIFxcdTAwMjZsb2NhbC1cXHUwMDNlaW50ZXJmYWNlcywgbGlzdClcXG4xMDQxOlxcdFxcdFxcdFxcdGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShrZXksIHRtcCxcXG4xMDQyOlxcdFxcdFxcdFxcdFxcdFxcdFxcdCBcXHUwMDI2c2RhdGEtXFx1MDAzZWtleV9saXN0LCBsaXN0KVxcbjEwNDM6XFx0XFx0XFx0XFx0XFx0aWVlZTgwMjExX2tleV9pdGVyKGh3LCBcXHUwMDI2c2RhdGEtXFx1MDAzZXZpZiwga2V5LFxcbjEwNDQ6XFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgaXRlciwgaXRlcl9kYXRhKTtcXG4xMDQ1OlxcdFxcdH1cXG4xMDQ2OlxcdH1cXG4xMDQ3OlxcdEVYUE9SVF9TWU1CT0woaWVlZTgwMjExX2l0ZXJfa2V5cyk7XFxuMTA0ODpcXHRcXG4xMDQ5OlxcdHN0YXRpYyB2b2lkXFxuMTA1MDpcXHRfaWVlZTgwMjExX2l0ZXJfa2V5c19yY3Uoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuMTA1MTpcXHRcXHRcXHRcXHQgc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuMTA1MjpcXHRcXHRcXHRcXHQgdm9pZCAoKml0ZXIpKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbjEwNTM6XFx0XFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcXG4xMDU0OlxcdFxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGEsXFxuMTA1NTpcXHRcXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgaWVlZTgwMjExX2tleV9jb25mICprZXksXFxuMTA1NjpcXHRcXHRcXHRcXHRcXHQgICAgICB2b2lkICpkYXRhKSxcXG4xMDU3OlxcdFxcdFxcdFxcdCB2b2lkICppdGVyX2RhdGEpXFxuMTA1ODpcXHR7XFxuMTA1OTpcXHRcXHRzdHJ1Y3QgaWVlZTgwMjExX2tleSAqa2V5O1xcbjEwNjA6XFx0XFxuMTA2MTpcXHRcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShrZXksIFxcdTAwMjZzZGF0YS1cXHUwMDNla2V5X2xpc3QsIGxpc3QpXFxuMTA2MjpcXHRcXHRcXHRpZWVlODAyMTFfa2V5X2l0ZXIoaHcsIFxcdTAwMjZzZGF0YS1cXHUwMDNldmlmLCBrZXksIGl0ZXIsIGl0ZXJfZGF0YSk7XFxuMTA2MzpcXHR9XFxuMTA2NDpcXHRcXG4xMDY1OlxcdHZvaWQgaWVlZTgwMjExX2l0ZXJfa2V5c19yY3Uoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuMTA2NjpcXHRcXHRcXHRcXHQgICAgIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXFxuMTA2NzpcXHRcXHRcXHRcXHQgICAgIHZvaWQgKCppdGVyKShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4xMDY4OlxcdFxcdFxcdFxcdFxcdFxcdCAgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcXG4xMDY5OlxcdFxcdFxcdFxcdFxcdFxcdCAgc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSxcXG4xMDcwOlxcdFxcdFxcdFxcdFxcdFxcdCAgc3RydWN0IGllZWU4MDIxMV9rZXlfY29uZiAqa2V5LFxcbjEwNzE6XFx0XFx0XFx0XFx0XFx0XFx0ICB2b2lkICpkYXRhKSxcXG4xMDcyOlxcdFxcdFxcdFxcdCAgICAgdm9pZCAqaXRlcl9kYXRhKVxcbjEwNzM6XFx0e1xcbjEwNzQ6XFx0XFx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBod190b19sb2NhbChodyk7XFxuMTA3NTpcXHRcXHRzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YTtcXG4xMDc2OlxcdFxcbjEwNzc6XFx0XFx0aWYgKHZpZikge1xcbjEwNzg6XFx0XFx0XFx0c2RhdGEgPSB2aWZfdG9fc2RhdGEodmlmKTtcXG4xMDc5OlxcdFxcdFxcdF9pZWVlODAyMTFfaXRlcl9rZXlzX3JjdShodywgc2RhdGEsIGl0ZXIsIGl0ZXJfZGF0YSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDIxOjQwOjUzLjE5MTY5Mjg4NloiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozNTc2MDcwNjI1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBgaWVlZTgwMjExX2l0ZXJfa2V5c2AgYW5kIHJ0dzg5IFJlYWNoYWJpbGl0eSoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gVGhlIGZpcnN0IHRoaW5nIHRoYXQganVtcHMgb3V0IGlzIHRoaXMgYGxvY2tkZXBfYXNzZXJ0X3dpcGh5KGh3LVx1MDAzZXdpcGh5KTtgIHdpdGhpbiBgaWVlZTgwMjExX2l0ZXJfa2V5c2AuIFRoYXQncyBhIHJlZCBmbGFnISBJdCBtZWFucyB0aGlzIGZ1bmN0aW9uICpkZW1hbmRzKiB0aGUgd2lwaHkgbG9jayBiZSBoZWxkLiBBbmQsIGFzIGEgc2Vhc29uZWQgcHJvLCBJIGtub3cgdGhhdCBpZiBgaWVlZTgwMjExX2l0ZXJfa2V5c19yY3VgICpkb2Vzbid0KiBoYXZlIHRoYXQgYXNzZXJ0aW9uLCB0aGVuIHdlJ3ZlIGdvdCBhIHBvdGVudGlhbCBsb2NrIG9yZGVyIGlzc3VlIGlmIHdlJ3JlIG5vdCBjYXJlZnVsLiBJZiBhbnkgY2FsbGVyIGZhaWxzIHRvIGhvbGQgdGhhdCBsb2NrLCBsb2NrZGVwIHdpbGwgYWJzb2x1dGVseSBzY3JlYW0gYXQgdXMuIEkgbmVlZCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4gb2YgdGhlIGxvY2sgYWNxdWlzaXRpb24gcGF0aCBmb3IgYW55dGhpbmcgY2FsbGluZyB0aGlzIGZ1bmN0aW9uLlxuXG5Ob3csIHNoaWZ0aW5nIGdlYXJzLCBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgYHJ0dzg5YCBlbnRlcnMgdGhlIHBpY3R1cmUgYW5kIGlmIGl0J3MgcmVhY2hhYmxlIGZvciB0ZXN0aW5nLiBDYW4gSSBzaW11bGF0ZSB0aGlzIGVhc2lseSBpbiBhIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2UgUUVNVSBvciBldmVuIEdDRT8gTXkgaW1tZWRpYXRlIG5leHQgc3RlcCBpcyB0byBhc3Nlc3MgdGhlIHByb2JpbmcgbWVjaGFuaXNtcy4gQ2FuIEkgdHJpZ2dlciBpdCB2aWEgVVNCIGVtdWxhdGlvbiDigJMgcmF3LWdhZGdldCBzdHlsZSBvciB3aXRoIHN5emthbGxlciBmdXp6aW5nPyBEb2VzIGl0IHJlbHkgb24gc3BlY2lmaWMgZmlybXdhcmUgZmlsZXMsIG9yIGlzIGFjdHVhbCBwaHlzaWNhbCBoYXJkd2FyZSByZXF1aXJlZD8gQSBxdWljayBzZWFyY2ggZm9yIHRoZSBVU0IgSUQgdGFibGUgd2l0aGluIHRoZSBgcnR3ODlgIGRyaXZlciBpcyBpbiBvcmRlci4gVGhhdCdsbCBnaXZlIG1lIGEgZ29vZCBoYW5kbGUgb24gaG93IHRoZSBoYXJkd2FyZSBpcyBkZXRlY3RlZCBhbmQgaW5pdGlhbGl6ZWQsIGFuZCB0aGVyZWZvcmUsIGhvdyBlYXN5IGl0IHdpbGwgYmUgdG8gZ2V0IG15IGhhbmRzIG9uIGl0IGZvciBhbmFseXNpcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGFjY2VzcyBwYXRoIHRvIGdldCBteSBoYW5kcyBvbiBpdCwgd2hldGhlciB2aWEgVVNCIGVtdWxhdGlvbiBvciBhIG1vcmUgcGh5c2ljYWwgYWNjZXNzIHJvdXRlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTY0MywiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxNiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDIxOjQwOjU2Ljc2Nzc2NjgxMVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAzMTI1MTM5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJ0dzg5X3VzYlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNjM4IGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlPTEwNj1ydHc4OV9wY2kteSA6PSBwY2kubyBwY2lfYmUub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGUtMTA3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGU6MTA4Om9iai0kKENPTkZJR19SVFc4OV9VU0IpICs9IHJ0dzg5X3VzYi5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZToxMDk6cnR3ODlfdXNiLXkgOj0gdXNiLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlLTExMC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oPTIwPXN0cnVjdCBydHc4OV9wY2lfaW5mbztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaDoyMTpzdHJ1Y3QgcnR3ODlfdXNiX2luZm87XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmgtMjItc3RydWN0IHJ0dzg5X21hY19nZW5fZGVmO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmg9NTg3Mj11bmlvbiBydHc4OV9idXNfaW5mbyB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmgtNTg3My1cXHRjb25zdCBzdHJ1Y3QgcnR3ODlfcGNpX2luZm8gKnBjaTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaDo1ODc0OlxcdGNvbnN0IHN0cnVjdCBydHc4OV91c2JfaW5mbyAqdXNiO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oLTU4NzUtfTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MWJ1LmMtMTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUxYnUuYzoxMTpzdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X3VzYl9pbmZvIHJ0dzg4NTFiX3VzYl9pbmZvID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MWJ1LmMtMTItXFx0LnVzYl9ob3N0X3JlcXVlc3RfMlxcdFxcdD0gUl9BWF9VU0JfSE9TVF9SRVFVRVNUXzIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTFidS5jPTYyPXN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBydHdfODg1MWJ1X2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MWJ1LmMtNjQtXFx0LmlkX3RhYmxlID0gcnR3Xzg4NTFidV9pZF90YWJsZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTFidS5jOjY1OlxcdC5wcm9iZSA9IHJ0dzg5X3VzYl9wcm9iZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTFidS5jOjY2OlxcdC5kaXNjb25uZWN0ID0gcnR3ODlfdXNiX2Rpc2Nvbm5lY3QsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUxYnUuYy02Ny19O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYXUuYy0xMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJhdS5jOjExOnN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfdXNiX2luZm8gcnR3ODg1MmFfdXNiX2luZm8gPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYXUuYy0xMi1cXHQudXNiX2hvc3RfcmVxdWVzdF8yXFx0XFx0PSBSX0FYX1VTQl9IT1NUX1JFUVVFU1RfMixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmF1LmM9NzY9c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIHJ0d184ODUyYXVfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYXUuYy03OC1cXHQuaWRfdGFibGUgPSBydHdfODg1MmF1X2lkX3RhYmxlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmF1LmM6Nzk6XFx0LnByb2JlID0gcnR3ODlfdXNiX3Byb2JlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmF1LmM6ODA6XFx0LmRpc2Nvbm5lY3QgPSBydHc4OV91c2JfZGlzY29ubmVjdCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJhdS5jLTgxLX07XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJidS5jLTEwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmJ1LmM6MTE6c3RhdGljIGNvbnN0IHN0cnVjdCBydHc4OV91c2JfaW5mbyBydHc4ODUyYl91c2JfaW5mbyA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJidS5jLTEyLVxcdC51c2JfaG9zdF9yZXF1ZXN0XzJcXHRcXHQ9IFJfQVhfVVNCX0hPU1RfUkVRVUVTVF8yLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYnUuYz03Nj1zdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgcnR3Xzg4NTJidV9kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJidS5jLTc4LVxcdC5pZF90YWJsZSA9IHJ0d184ODUyYnVfaWRfdGFibGUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYnUuYzo3OTpcXHQucHJvYmUgPSBydHc4OV91c2JfcHJvYmUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYnUuYzo4MDpcXHQuZGlzY29ubmVjdCA9IHJ0dzg5X3VzYl9kaXNjb25uZWN0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmJ1LmMtODEtfTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmN1LmMtMTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyY3UuYzoxMTpzdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X3VzYl9pbmZvIHJ0dzg4NTJjX3VzYl9pbmZvID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmN1LmMtMTItXFx0LnVzYl9ob3N0X3JlcXVlc3RfMlxcdFxcdD0gUl9BWF9VU0JfSE9TVF9SRVFVRVNUXzJfVjEsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJjdS5jPTEzNj1zdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgcnR3Xzg4NTJjdV9kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJjdS5jLTEzOC1cXHQuaWRfdGFibGUgPSBydHdfODg1MmN1X2lkX3RhYmxlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmN1LmM6MTM5OlxcdC5wcm9iZSA9IHJ0dzg5X3VzYl9wcm9iZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJjdS5jOjE0MDpcXHQuZGlzY29ubmVjdCA9IHJ0dzg5X3VzYl9kaXNjb25uZWN0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmN1LmMtMTQxLX07XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJhdS5jLTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyYXUuYzoxMDpzdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X3VzYl9pbmZvIHJ0dzg5MjJhX3VzYl9pbmZvID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmF1LmMtMTEtXFx0LnVzYl9ob3N0X3JlcXVlc3RfMlxcdFxcdD0gMCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmF1LmM9Nzc9c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIHJ0d184OTIyYXVfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyYXUuYy03OS1cXHQuaWRfdGFibGUgPSBydHdfODkyMmF1X2lkX3RhYmxlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmF1LmM6ODA6XFx0LnByb2JlID0gcnR3ODlfdXNiX3Byb2JlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmF1LmM6ODE6XFx0LmRpc2Nvbm5lY3QgPSBydHc4OV91c2JfZGlzY29ubmVjdCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJhdS5jLTgyLX07XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTExLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6MTI6c3RhdGljIHZvaWQgcnR3ODlfdXNiX3JlYWRfcG9ydF9jb21wbGV0ZShzdHJ1Y3QgdXJiICp1cmIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzoxNDpzdGF0aWMgdm9pZCBfX3J0dzg5X3VzYl92ZW5kb3JyZXEoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1MzIgYWRkcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTE1LVxcdFxcdFxcdFxcdCAgdm9pZCAqZGF0YSwgdTE2IGxlbiwgdTggcmVxdHlwZSwgYm9vbCB3YXJuKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTYte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6MTc6XFx0c3RydWN0IHJ0dzg5X3VzYiAqcnR3dXNiID0gcnR3ODlfdXNiX3ByaXYocnR3ZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTE4LVxcdHN0cnVjdCB1c2JfZGV2aWNlICp1ZGV2ID0gcnR3dXNiLVxcdTAwM2V1ZGV2O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy03MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjcyOnN0YXRpYyB2b2lkIHJ0dzg5X3VzYl92ZW5kb3JyZXEoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1MzIgYWRkcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTczLVxcdFxcdFxcdFxcdHZvaWQgKmRhdGEsIHUxNiBsZW4sIHU4IHJlcXR5cGUpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy03NC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo3NTpcXHRfX3J0dzg5X3VzYl92ZW5kb3JyZXEocnR3ZGV2LCBhZGRyLCBkYXRhLCBsZW4sIHJlcXR5cGUsIHRydWUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNzYtfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNzctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo3ODpzdGF0aWMgdTMyIHJ0dzg5X3VzYl9yZWFkX2NtYWMoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1MzIgYWRkcilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTc5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtODctXFx0Zm9yIChjb3VudCA9IDA7IDsgY291bnQrKykge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6ODg6XFx0XFx0cnR3ODlfdXNiX3ZlbmRvcnJlcShydHdkZXYsIGFkZHIzMiwgXFx1MDAyNmRhdGEsIDQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy04OS1cXHRcXHRcXHRcXHQgICAgUlRXODlfVVNCX1ZFTlFUX1JFQUQpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xMDctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzoxMDg6c3RhdGljIHU4IHJ0dzg5X3VzYl9vcHNfcmVhZDgoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1MzIgYWRkcilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTEwOS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTExMi1cXHRpZiAoQUNDRVNTX0NNQUMoYWRkcikpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzoxMTM6XFx0XFx0cmV0dXJuIHJ0dzg5X3VzYl9yZWFkX2NtYWMocnR3ZGV2LCBhZGRyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTExNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjExNTpcXHRydHc4OV91c2JfdmVuZG9ycmVxKHJ0d2RldiwgYWRkciwgXFx1MDAyNmRhdGEsIDEsIFJUVzg5X1VTQl9WRU5RVF9SRUFEKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTExNi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTE5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6MTIwOnN0YXRpYyB1MTYgcnR3ODlfdXNiX29wc19yZWFkMTYoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1MzIgYWRkcilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTEyMS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTEyNC1cXHRpZiAoQUNDRVNTX0NNQUMoYWRkcikpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzoxMjU6XFx0XFx0cmV0dXJuIHJ0dzg5X3VzYl9yZWFkX2NtYWMocnR3ZGV2LCBhZGRyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTEyNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjEyNzpcXHRydHc4OV91c2JfdmVuZG9ycmVxKHJ0d2RldiwgYWRkciwgXFx1MDAyNmRhdGEsIDIsIFJUVzg5X1VTQl9WRU5RVF9SRUFEKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTEyOC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTMxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6MTMyOnN0YXRpYyB1MzIgcnR3ODlfdXNiX29wc19yZWFkMzIoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1MzIgYWRkcilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTEzMy17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTEzNi1cXHRpZiAoQUNDRVNTX0NNQUMoYWRkcikpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzoxMzc6XFx0XFx0cmV0dXJuIHJ0dzg5X3VzYl9yZWFkX2NtYWMocnR3ZGV2LCBhZGRyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTEzOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjEzOTpcXHRydHc4OV91c2JfdmVuZG9ycmVxKHJ0d2RldiwgYWRkciwgXFx1MDAyNmRhdGEsIDQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xNDAtXFx0XFx0XFx0ICAgIFJUVzg5X1VTQl9WRU5RVF9SRUFEKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTQ0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6MTQ1OnN0YXRpYyB2b2lkIHJ0dzg5X3VzYl9vcHNfd3JpdGU4KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTMyIGFkZHIsIHU4IHZhbClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTE0Ni17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTE0OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjE0OTpcXHRydHc4OV91c2JfdmVuZG9ycmVxKHJ0d2RldiwgYWRkciwgXFx1MDAyNmRhdGEsIDEsIFJUVzg5X1VTQl9WRU5RVF9XUklURSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xNTAtfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTUxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6MTUyOnN0YXRpYyB2b2lkIHJ0dzg5X3VzYl9vcHNfd3JpdGUxNihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHUzMiBhZGRyLCB1MTYgdmFsKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTUzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTU1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6MTU2OlxcdHJ0dzg5X3VzYl92ZW5kb3JyZXEocnR3ZGV2LCBhZGRyLCBcXHUwMDI2ZGF0YSwgMiwgUlRXODlfVVNCX1ZFTlFUX1dSSVRFKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTE1Ny19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xNTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzoxNTk6c3RhdGljIHZvaWQgcnR3ODlfdXNiX29wc193cml0ZTMyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTMyIGFkZHIsIHUzMiB2YWwpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xNjAte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xNjItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzoxNjM6XFx0cnR3ODlfdXNiX3ZlbmRvcnJlcShydHdkZXYsIGFkZHIsIFxcdTAwMjZkYXRhLCA0LCBSVFc4OV9VU0JfVkVOUVRfV1JJVEUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTY0LX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTE2NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjE2NjpzdGF0aWMgdm9pZCBydHc4OV91c2Jfd3JpdGUzMl9xdWlldChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHUzMiBhZGRyLCB1MzIgdmFsKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTY3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTY5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6MTcwOlxcdF9fcnR3ODlfdXNiX3ZlbmRvcnJlcShydHdkZXYsIGFkZHIsIFxcdTAwMjZkYXRhLCA0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTcxLVxcdFxcdFxcdCAgICAgIFJUVzg5X1VTQl9WRU5RVF9XUklURSwgZmFsc2UpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYz0xNzQ9c3RhdGljIHUzMlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6MTc1OnJ0dzg5X3VzYl9vcHNfY2hlY2tfYW5kX3JlY2xhaW1fdHhfcmVzb3VyY2Uoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTc2LVxcdFxcdFxcdFxcdFxcdCAgICB1OCB0eGNoKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTc3LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjE3ODpcXHRzdHJ1Y3QgcnR3ODlfdXNiICpydHd1c2IgPSBydHc4OV91c2JfcHJpdihydHdkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTc5LVxcdGludCBpbmZsaWdodDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTkwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6MTkxOnN0YXRpYyB2b2lkIHJ0dzg5X3VzYl93cml0ZV9wb3J0X2NvbXBsZXRlKHN0cnVjdCB1cmIgKnVyYilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTE5Mi17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzoxOTM6XFx0c3RydWN0IHJ0dzg5X3VzYl90eF9jdHJsX2Jsb2NrICp0eGNiID0gdXJiLVxcdTAwM2Vjb250ZXh0O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTk0LVxcdHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiA9IHR4Y2ItXFx1MDAzZXJ0d2RldjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjE5NTpcXHRzdHJ1Y3QgcnR3ODlfdXNiICpydHd1c2IgPSBydHc4OV91c2JfcHJpdihydHdkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTk2LVxcdHN0cnVjdCBpZWVlODAyMTFfdHhfaW5mbyAqaW5mbztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMjU4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6MjU5OnN0YXRpYyBpbnQgcnR3ODlfdXNiX3dyaXRlX3BvcnQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCBjaF9kbWEsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0yNjAtXFx0XFx0XFx0XFx0dm9pZCAqZGF0YSwgaW50IGxlbiwgdm9pZCAqY29udGV4dClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTI2MS17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzoyNjI6XFx0c3RydWN0IHJ0dzg5X3VzYiAqcnR3dXNiID0gcnR3ODlfdXNiX3ByaXYocnR3ZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjI2MzpcXHRjb25zdCBzdHJ1Y3QgcnR3ODlfdXNiX2luZm8gKmluZm8gPSBydHd1c2ItXFx1MDAzZWluZm87XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0yNjQtXFx0c3RydWN0IHVzYl9kZXZpY2UgKnVzYmQgPSBydHd1c2ItXFx1MDAzZXVkZXY7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTI3OS1cXHR1c2JfZmlsbF9idWxrX3VyYih1cmIsIHVzYmQsIHBpcGUsIGRhdGEsIGxlbixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjI4MDpcXHRcXHRcXHQgIHJ0dzg5X3VzYl93cml0ZV9wb3J0X2NvbXBsZXRlLCBjb250ZXh0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTI4MS1cXHR1cmItXFx1MDAzZXRyYW5zZmVyX2ZsYWdzIHw9IFVSQl9aRVJPX1BBQ0tFVDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMjk5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6MzAwOnN0YXRpYyB2b2lkIHJ0dzg5X3VzYl90eF9mcmVlX3NrYihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IHR4Y2gsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0zMDEtXFx0XFx0XFx0XFx0ICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0zMDgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzozMDk6c3RhdGljIHZvaWQgcnR3ODlfdXNiX29wc190eF9raWNrX29mZihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IHR4Y2gpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0zMTAte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6MzExOlxcdHN0cnVjdCBydHc4OV91c2IgKnJ0d3VzYiA9IHJ0dzg5X3VzYl9wcml2KHJ0d2Rldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzozMTI6XFx0c3RydWN0IHJ0dzg5X3VzYl90eF9jdHJsX2Jsb2NrICp0eGNiO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMzEzLVxcdHN0cnVjdCBza19idWZmICpza2I7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTMyMi1cXHRcXHRpZiAoIXR4Y2IpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjMyMzpcXHRcXHRcXHRydHc4OV91c2JfdHhfZnJlZV9za2IocnR3ZGV2LCB0eGNoLCBza2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMzI0LVxcdFxcdFxcdGNvbnRpbnVlO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0zMzQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzozMzU6XFx0XFx0cmV0ID0gcnR3ODlfdXNiX3dyaXRlX3BvcnQocnR3ZGV2LCB0eGNoLCBza2ItXFx1MDAzZWRhdGEsIHNrYi1cXHUwMDNlbGVuLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMzM2LVxcdFxcdFxcdFxcdFxcdCAgIHR4Y2IpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0zNDUtXFx0XFx0XFx0a2ZyZWUodHhjYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzozNDY6XFx0XFx0XFx0cnR3ODlfdXNiX3R4X2ZyZWVfc2tiKHJ0d2RldiwgdHhjaCwgc2tiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTM0Ny1cXHRcXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTM1MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjM1MTpzdGF0aWMgaW50IHJ0dzg5X3VzYl90eF93cml0ZV9md2NtZChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0zNTItXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBydHc4OV9jb3JlX3R4X3JlcXVlc3QgKnR4X3JlcSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMzU0LVxcdHN0cnVjdCBydHc4OV90eF9kZXNjX2luZm8gKmRlc2NfaW5mbyA9IFxcdTAwMjZ0eF9yZXEtXFx1MDAzZWRlc2NfaW5mbztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjM1NTpcXHRzdHJ1Y3QgcnR3ODlfdXNiICpydHd1c2IgPSBydHc4OV91c2JfcHJpdihydHdkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMzU2LVxcdHN0cnVjdCBza19idWZmICpza2IgPSB0eF9yZXEtXFx1MDAzZXNrYjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMzkyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6MzkzOnN0YXRpYyBpbnQgcnR3ODlfdXNiX29wc190eF93cml0ZShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0zOTQtXFx0XFx0XFx0XFx0ICBzdHJ1Y3QgcnR3ODlfY29yZV90eF9yZXF1ZXN0ICp0eF9yZXEpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTM5Ni1cXHRzdHJ1Y3QgcnR3ODlfdHhfZGVzY19pbmZvICpkZXNjX2luZm8gPSBcXHUwMDI2dHhfcmVxLVxcdTAwM2VkZXNjX2luZm87XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzozOTc6XFx0c3RydWN0IHJ0dzg5X3VzYiAqcnR3dXNiID0gcnR3ODlfdXNiX3ByaXYocnR3ZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTM5OC1cXHRzdHJ1Y3QgcnR3ODlfdHhfc2tiX2RhdGEgKnNrYl9kYXRhO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy00MTItXFx0aWYgKGRlc2NfaW5mby1cXHUwMDNlY2hfZG1hID09IFJUVzg5X1RYQ0hfQ0gxMilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjQxMzpcXHRcXHRyZXR1cm4gcnR3ODlfdXNiX3R4X3dyaXRlX2Z3Y21kKHJ0d2RldiwgdHhfcmVxKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTQxNC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNDM1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6NDM2OnN0YXRpYyB2b2lkIHJ0dzg5X3VzYl9yeF9oYW5kbGVyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTQzNy17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo0Mzg6XFx0c3RydWN0IHJ0dzg5X3VzYiAqcnR3dXNiID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBydHc4OV91c2IsIHJ4X3dvcmspO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6NDM5OlxcdGNvbnN0IHN0cnVjdCBydHc4OV91c2JfaW5mbyAqaW5mbyA9IHJ0d3VzYi1cXHUwMDNlaW5mbztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTQ0MC1cXHRzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYgPSBydHd1c2ItXFx1MDAzZXJ0d2RldjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNTA2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6NTA3OnN0YXRpYyB2b2lkIHJ0dzg5X3VzYl9yeF9yZXN1Ym1pdChzdHJ1Y3QgcnR3ODlfdXNiICpydHd1c2IsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo1MDg6XFx0XFx0XFx0XFx0ICBzdHJ1Y3QgcnR3ODlfdXNiX3J4X2N0cmxfYmxvY2sgKnJ4Y2IsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy01MDktXFx0XFx0XFx0XFx0ICBnZnBfdCBnZnApXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTUyOS1cXHRcXHRcXHQgIHJ4Y2ItXFx1MDAzZXJ4X3NrYi1cXHUwMDNlZGF0YSwgUlRXODlfVVNCX1JFQ1ZCVUZfU1osXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo1MzA6XFx0XFx0XFx0ICBydHc4OV91c2JfcmVhZF9wb3J0X2NvbXBsZXRlLCByeGNiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTUzMS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNTUxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6NTUyOnN0YXRpYyB2b2lkIHJ0dzg5X3VzYl9yeF9yZXN1Ym1pdF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTU1My17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo1NTQ6XFx0c3RydWN0IHJ0dzg5X3VzYiAqcnR3dXNiID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBydHc4OV91c2IsIHJ4X3VyYl93b3JrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjU1NTpcXHRzdHJ1Y3QgcnR3ODlfdXNiX3J4X2N0cmxfYmxvY2sgKnJ4Y2I7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy01NTYtXFx0aW50IGk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTU2MS1cXHRcXHRpZiAoIXJ4Y2ItXFx1MDAzZXJ4X3NrYilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjU2MjpcXHRcXHRcXHRydHc4OV91c2JfcnhfcmVzdWJtaXQocnR3dXNiLCByeGNiLCBHRlBfQVRPTUlDKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTU2My1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTU2NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjU2NjpzdGF0aWMgdm9pZCBydHc4OV91c2JfcmVhZF9wb3J0X2NvbXBsZXRlKHN0cnVjdCB1cmIgKnVyYilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTU2Ny17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo1Njg6XFx0c3RydWN0IHJ0dzg5X3VzYl9yeF9jdHJsX2Jsb2NrICpyeGNiID0gdXJiLVxcdTAwM2Vjb250ZXh0O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNTY5LVxcdHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiA9IHJ4Y2ItXFx1MDAzZXJ0d2RldjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjU3MDpcXHRzdHJ1Y3QgcnR3ODlfdXNiICpydHd1c2IgPSBydHc4OV91c2JfcHJpdihydHdkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNTcxLVxcdHN0cnVjdCBza19idWZmICpza2IgPSByeGNiLVxcdTAwM2VyeF9za2I7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTU4NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjU4NTpcXHRcXHRydHc4OV91c2JfcnhfcmVzdWJtaXQocnR3dXNiLCByeGNiLCBHRlBfQVRPTUlDKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTU4Ni1cXHR9IGVsc2Uge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy02MTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo2MTc6c3RhdGljIHZvaWQgcnR3ODlfdXNiX2NhbmNlbF9yeF9idWZzKHN0cnVjdCBydHc4OV91c2IgKnJ0d3VzYilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTYxOC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo2MTk6XFx0c3RydWN0IHJ0dzg5X3VzYl9yeF9jdHJsX2Jsb2NrICpyeGNiO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNjIwLVxcdGludCBpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy02MjctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo2Mjg6c3RhdGljIHZvaWQgcnR3ODlfdXNiX2NhbmNlbF90eF9idWZzKHN0cnVjdCBydHc4OV91c2IgKnJ0d3VzYilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTYyOS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTYzMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjYzMzpzdGF0aWMgdm9pZCBydHc4OV91c2JfZnJlZV9yeF9idWZzKHN0cnVjdCBydHc4OV91c2IgKnJ0d3VzYilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTYzNC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo2MzU6XFx0c3RydWN0IHJ0dzg5X3VzYl9yeF9jdHJsX2Jsb2NrICpyeGNiO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNjM2LVxcdGludCBpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy02NDMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo2NDQ6c3RhdGljIGludCBydHc4OV91c2JfYWxsb2NfcnhfYnVmcyhzdHJ1Y3QgcnR3ODlfdXNiICpydHd1c2IpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy02NDUte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6NjQ2OlxcdHN0cnVjdCBydHc4OV91c2JfcnhfY3RybF9ibG9jayAqcnhjYjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTY0Ny1cXHRpbnQgaTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNjU0LVxcdFxcdGlmICghcnhjYi1cXHUwMDNlcnhfdXJiKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo2NTU6XFx0XFx0XFx0cnR3ODlfdXNiX2ZyZWVfcnhfYnVmcyhydHd1c2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNjU2LVxcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy02NjItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo2NjM6c3RhdGljIGludCBydHc4OV91c2JfaW5pdF9yeChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy02NjQte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6NjY1OlxcdHN0cnVjdCBydHc4OV91c2IgKnJ0d3VzYiA9IHJ0dzg5X3VzYl9wcml2KHJ0d2Rldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy02NjYtXFx0c3RydWN0IHNrX2J1ZmYgKnJ4X3NrYjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNjY4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6NjY5OlxcdHJ0d3VzYi1cXHUwMDNlcnh3cSA9IGFsbG9jX3dvcmtxdWV1ZShcXFwicnR3ODlfdXNiOiByeCB3cVxcXCIsIFdRX0JIIHwgV1FfUEVSQ1BVLCAwKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTY3MC1cXHRpZiAoIXJ0d3VzYi1cXHUwMDNlcnh3cSkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy02NzctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo2Nzg6XFx0SU5JVF9XT1JLKFxcdTAwMjZydHd1c2ItXFx1MDAzZXJ4X3dvcmssIHJ0dzg5X3VzYl9yeF9oYW5kbGVyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjY3OTpcXHRJTklUX1dPUksoXFx1MDAyNnJ0d3VzYi1cXHUwMDNlcnhfdXJiX3dvcmssIHJ0dzg5X3VzYl9yeF9yZXN1Ym1pdF93b3JrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTY4MC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNjg5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6NjkwOnN0YXRpYyB2b2lkIHJ0dzg5X3VzYl9kZWluaXRfcngoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNjkxLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjY5MjpcXHRzdHJ1Y3QgcnR3ODlfdXNiICpydHd1c2IgPSBydHc4OV91c2JfcHJpdihydHdkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNjkzLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy03MDAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo3MDE6c3RhdGljIHZvaWQgcnR3ODlfdXNiX3N0YXJ0X3J4KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTcwMi17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo3MDM6XFx0c3RydWN0IHJ0dzg5X3VzYiAqcnR3dXNiID0gcnR3ODlfdXNiX3ByaXYocnR3ZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTcwNC1cXHRpbnQgaTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNzA2LVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBSVFc4OV9VU0JfUlhDQl9OVU07IGkrKylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjcwNzpcXHRcXHRydHc4OV91c2JfcnhfcmVzdWJtaXQocnR3dXNiLCBcXHUwMDI2cnR3dXNiLVxcdTAwM2VyeF9jYltpXSwgR0ZQX0tFUk5FTCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy03MDgtfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNzA5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6NzEwOnN0YXRpYyB2b2lkIHJ0dzg5X3VzYl9pbml0X3R4KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTcxMS17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo3MTI6XFx0c3RydWN0IHJ0dzg5X3VzYiAqcnR3dXNiID0gcnR3ODlfdXNiX3ByaXYocnR3ZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTcxMy1cXHRpbnQgaTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNzIwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6NzIxOnN0YXRpYyB2b2lkIHJ0dzg5X3VzYl9kZWluaXRfdHgoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNzIyLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjcyMzpcXHRzdHJ1Y3QgcnR3ODlfdXNiICpydHd1c2IgPSBydHc4OV91c2JfcHJpdihydHdkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNzI0LVxcdGludCBpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy03MzMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo3MzQ6c3RhdGljIHZvaWQgcnR3ODlfdXNiX29wc19yZXNldChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy03MzUte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6NzM2OlxcdHN0cnVjdCBydHc4OV91c2IgKnJ0d3VzYiA9IHJ0dzg5X3VzYl9wcml2KHJ0d2Rldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy03MzctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo3Mzg6XFx0cnR3ODlfdXNiX2NhbmNlbF90eF9idWZzKHJ0d3VzYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy03MzktXFx0cnR3ODlfdHhfcnB0X3NrYnNfcHVyZ2UocnR3ZGV2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNzQxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6NzQyOnN0YXRpYyBpbnQgcnR3ODlfdXNiX29wc19zdGFydChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy03NDMte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy03NDYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo3NDc6c3RhdGljIHZvaWQgcnR3ODlfdXNiX29wc19zdG9wKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTc0OC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTc1MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjc1MjpzdGF0aWMgdm9pZCBydHc4OV91c2Jfb3BzX3BhdXNlKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgYm9vbCBwYXVzZSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTc1My17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTc1Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjc1NzpzdGF0aWMgdm9pZCBydHc4OV91c2Jfb3BzX3N3aXRjaF9tb2RlKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgYm9vbCBsb3dfcG93ZXIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy03NTgte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy03NjEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo3NjI6c3RhdGljIGludCBydHc4OV91c2Jfb3BzX2RlaW5pdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy03NjMte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy03NjYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo3Njc6c3RhdGljIGludCBydHc4OV91c2Jfb3BzX21hY19wcmVfaW5pdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy03Njgte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6NzY5OlxcdHN0cnVjdCBydHc4OV91c2IgKnJ0d3VzYiA9IHJ0dzg5X3VzYl9wcml2KHJ0d2Rldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo3NzA6XFx0Y29uc3Qgc3RydWN0IHJ0dzg5X3VzYl9pbmZvICppbmZvID0gcnR3dXNiLVxcdTAwM2VpbmZvO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNzcxLVxcdHUzMiB2YWwzMjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNzkzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6Nzk0OnN0YXRpYyBpbnQgcnR3ODlfdXNiX29wc19tYWNfcHJlX2RlaW5pdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy03OTUte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy03OTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo3OTk6c3RhdGljIHZvaWQgcnR3ODlfdXNiX3J4X2FnZ19jZmdfdjEoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtODAwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtODA4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6ODA5OnN0YXRpYyB2b2lkIHJ0dzg5X3VzYl9yeF9hZ2dfY2ZnX3YyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTgxMC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTgxOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjgyMDpzdGF0aWMgdm9pZCBydHc4OV91c2JfcnhfYWdnX2NmZ192MyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy04MjEte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy04MzAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo4MzE6c3RhdGljIHZvaWQgcnR3ODlfdXNiX3J4X2FnZ19jZmcoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtODMyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtODM2LVxcdGNhc2UgUlRMODg1MkI6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo4Mzc6XFx0XFx0cnR3ODlfdXNiX3J4X2FnZ19jZmdfdjEocnR3ZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTgzOC1cXHRcXHRicmVhaztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTgzOS1cXHRjYXNlIFJUTDg4NTJDOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6ODQwOlxcdFxcdHJ0dzg5X3VzYl9yeF9hZ2dfY2ZnX3YyKHJ0d2Rldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy04NDEtXFx0XFx0YnJlYWs7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy04NDItXFx0Y2FzZSBSVEw4OTIyQTpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjg0MzpcXHRcXHRydHc4OV91c2JfcnhfYWdnX2NmZ192MyhydHdkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtODQ0LVxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy04NTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo4NTE6c3RhdGljIGludCBydHc4OV91c2Jfb3BzX21hY19wb3N0X2luaXQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtODUyLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjg1MzpcXHRzdHJ1Y3QgcnR3ODlfdXNiICpydHd1c2IgPSBydHc4OV91c2JfcHJpdihydHdkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6ODU0OlxcdGNvbnN0IHN0cnVjdCBydHc4OV91c2JfaW5mbyAqaW5mbyA9IHJ0d3VzYi1cXHUwMDNlaW5mbztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTg1NS1cXHRlbnVtIHVzYl9kZXZpY2Vfc3BlZWQgc3BlZWQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTg4Mi1yeF9hZ2dfY2ZnOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6ODgzOlxcdHJ0dzg5X3VzYl9yeF9hZ2dfY2ZnKHJ0d2Rldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy04ODQtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTg4Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjg4ODpzdGF0aWMgdm9pZCBydHc4OV91c2Jfb3BzX3JlY2FsY19pbnRfbWl0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTg4OS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTg5Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjg5MzpzdGF0aWMgaW50IHJ0dzg5X3VzYl9vcHNfbWFjX2x2MV9yY3Z5KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTg5NC1cXHRcXHRcXHRcXHQgICAgICBlbnVtIHJ0dzg5X2x2MV9yY3Z5X3N0ZXAgc3RlcClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtOTMzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6OTM0OnN0YXRpYyB2b2lkIHJ0dzg5X3VzYl9vcHNfZHVtcF9lcnJfc3RhdHVzKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTkzNS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTkzOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjkzOTpzdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X2hjaV9vcHMgcnR3ODlfdXNiX29wcyA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjk0MDpcXHQudHhfd3JpdGVcXHQ9IHJ0dzg5X3VzYl9vcHNfdHhfd3JpdGUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo5NDE6XFx0LnR4X2tpY2tfb2ZmXFx0PSBydHc4OV91c2Jfb3BzX3R4X2tpY2tfb2ZmLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtOTQyLVxcdC5mbHVzaF9xdWV1ZXNcXHQ9IE5VTEwsIC8qIE5vdCBuZWVkZWQ/ICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo5NDM6XFx0LnJlc2V0XFx0XFx0PSBydHc4OV91c2Jfb3BzX3Jlc2V0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6OTQ0OlxcdC5zdGFydFxcdFxcdD0gcnR3ODlfdXNiX29wc19zdGFydCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjk0NTpcXHQuc3RvcFxcdFxcdD0gcnR3ODlfdXNiX29wc19zdG9wLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6OTQ2OlxcdC5wYXVzZVxcdFxcdD0gcnR3ODlfdXNiX29wc19wYXVzZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjk0NzpcXHQuc3dpdGNoX21vZGVcXHQ9IHJ0dzg5X3VzYl9vcHNfc3dpdGNoX21vZGUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo5NDg6XFx0LnJlY2FsY19pbnRfbWl0ID0gcnR3ODlfdXNiX29wc19yZWNhbGNfaW50X21pdCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTk0OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjk1MDpcXHQucmVhZDhcXHRcXHQ9IHJ0dzg5X3VzYl9vcHNfcmVhZDgsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo5NTE6XFx0LnJlYWQxNlxcdFxcdD0gcnR3ODlfdXNiX29wc19yZWFkMTYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo5NTI6XFx0LnJlYWQzMlxcdFxcdD0gcnR3ODlfdXNiX29wc19yZWFkMzIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo5NTM6XFx0LndyaXRlOFxcdFxcdD0gcnR3ODlfdXNiX29wc193cml0ZTgsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo5NTQ6XFx0LndyaXRlMTZcXHQ9IHJ0dzg5X3VzYl9vcHNfd3JpdGUxNixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjk1NTpcXHQud3JpdGUzMlxcdD0gcnR3ODlfdXNiX29wc193cml0ZTMyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtOTU2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6OTU3OlxcdC5tYWNfcHJlX2luaXRcXHQ9IHJ0dzg5X3VzYl9vcHNfbWFjX3ByZV9pbml0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6OTU4OlxcdC5tYWNfcHJlX2RlaW5pdFxcdD0gcnR3ODlfdXNiX29wc19tYWNfcHJlX2RlaW5pdCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjk1OTpcXHQubWFjX3Bvc3RfaW5pdFxcdD0gcnR3ODlfdXNiX29wc19tYWNfcG9zdF9pbml0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6OTYwOlxcdC5kZWluaXRcXHRcXHQ9IHJ0dzg5X3VzYl9vcHNfZGVpbml0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtOTYxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6OTYyOlxcdC5jaGVja19hbmRfcmVjbGFpbV90eF9yZXNvdXJjZSA9IHJ0dzg5X3VzYl9vcHNfY2hlY2tfYW5kX3JlY2xhaW1fdHhfcmVzb3VyY2UsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo5NjM6XFx0Lm1hY19sdjFfcmN2eVxcdD0gcnR3ODlfdXNiX29wc19tYWNfbHYxX3JjdnksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo5NjQ6XFx0LmR1bXBfZXJyX3N0YXR1cyA9IHJ0dzg5X3VzYl9vcHNfZHVtcF9lcnJfc3RhdHVzLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtOTY1LVxcdC5uYXBpX3BvbGxcXHQ9IE5VTEwsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTk4MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjk4MjpzdGF0aWMgaW50IHJ0dzg5X3VzYl9wYXJzZShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy05ODMtXFx0XFx0XFx0ICAgc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTk4Ni1cXHRzdHJ1Y3QgdXNiX2ludGVyZmFjZV9kZXNjcmlwdG9yICppbnRmX2Rlc2MgPSBcXHUwMDI2aG9zdF9pbnRlcmZhY2UtXFx1MDAzZWRlc2M7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo5ODc6XFx0c3RydWN0IHJ0dzg5X3VzYiAqcnR3dXNiID0gcnR3ODlfdXNiX3ByaXYocnR3ZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTk4OC1cXHRzdHJ1Y3QgdXNiX2VuZHBvaW50X2Rlc2NyaXB0b3IgKmVuZHBvaW50O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xMDQxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6MTA0MjpzdGF0aWMgaW50IHJ0dzg5X3VzYl9pbnRmX2luaXQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTA0My1cXHRcXHRcXHQgICAgICAgc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xMDQ0LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjEwNDU6XFx0c3RydWN0IHJ0dzg5X3VzYiAqcnR3dXNiID0gcnR3ODlfdXNiX3ByaXYocnR3ZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTEwNDYtXFx0aW50IHJldDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTA0OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjEwNTA6XFx0cmV0ID0gcnR3ODlfdXNiX3BhcnNlKHJ0d2RldiwgaW50Zik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xMDUxLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTEwNjYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzoxMDY3OnN0YXRpYyB2b2lkIHJ0dzg5X3VzYl9pbnRmX2RlaW5pdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xMDY4LVxcdFxcdFxcdFxcdCAgc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xMDY5LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjEwNzA6XFx0c3RydWN0IHJ0dzg5X3VzYiAqcnR3dXNiID0gcnR3ODlfdXNiX3ByaXYocnR3ZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTEwNzEtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTEwNzUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzoxMDc2OnN0YXRpYyBpbnQgcnR3ODlfdXNiX3N3aXRjaF9tb2RlX2F4KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTEwNzcte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xMDgzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6MTA4NDpcXHRwYWRfY3RybDIgPSBydHc4OV91c2Jfb3BzX3JlYWQzMihydHdkZXYsIFJfQVhfUEFEX0NUUkwyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTEwODUtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTExMDItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzoxMTAzOlxcdHJ0dzg5X3VzYl93cml0ZTMyX3F1aWV0KHJ0d2RldiwgUl9BWF9QQURfQ1RSTDIsIHBhZF9jdHJsMik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xMTA0LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xMTA3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6MTEwODpzdGF0aWMgaW50IHJ0dzg5X3VzYl9zd2l0Y2hfbW9kZV9iZShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xMTA5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTExMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjExMTI6XFx0cGFkX2N0cmwyID0gcnR3ODlfdXNiX29wc19yZWFkMzIocnR3ZGV2LCBSX0JFX1BBRF9DVFJMMik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xMTEzLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xMTMxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6MTEzMjpcXHRydHc4OV91c2Jfd3JpdGUzMl9xdWlldChydHdkZXYsIFJfQkVfUEFEX0NUUkwyLCBwYWRfY3RybDIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTEzMy1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTEzNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjExMzc6c3RhdGljIGludCBydHc4OV91c2Jfc3dpdGNoX21vZGUoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTEzOC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzoxMTM5OlxcdHN0cnVjdCBydHc4OV91c2IgKnJ0d3VzYiA9IHJ0dzg5X3VzYl9wcml2KHJ0d2Rldik7XFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDIxOjQwOjU2Ljg3MDg5NzE2WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjMxMTcyMDIyODIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aGlua2luZyBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBgcnR3ODlfdXNiX3Byb2JlYCBGdW5jdGlvbioqXG5cbk9rYXksIHNvIEknbSBzdGFydGluZyBieSBsb29raW5nIGF0IGBydHc4OV91c2JfcHJvYmVgLCB3aGljaCBpcyBpbiB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmNgIGZpbGUuIEdpdmVuIG15IGV4cGVydGlzZSwgSSBrbm93IHRoaXMgaXMgdGhlIGVudHJ5IHBvaW50IGZvciBwcm9iaW5nIHRoZSBSZWFsdGVrIHJ0dzg5IHdpcmVsZXNzIFVTQiBkZXZpY2UuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgaGFwcGVucyBkdXJpbmcgdGhlIGRldmljZSBpbml0aWFsaXphdGlvbiBhbmQgY29ubmVjdGlvbiBwcm9jZXNzLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byByZWFkIHRoZSBzdXJyb3VuZGluZyBjb2RlLCBlc3BlY2lhbGx5IGFyb3VuZCB0aGlzIGBwcm9iZWAgZnVuY3Rpb24uIEkgd2FudCB0byB0cmFjZSB0aGUgZmxvdyBvZiBleGVjdXRpb24gZnJvbSB0aGUgbW9tZW50IHRoZSBVU0IgZGV2aWNlIGlzIHBsdWdnZWQgaW4gdG8gc2VlIGhvdyBpdCBpcyBpZGVudGlmaWVkLCBpbml0aWFsaXNlZCBhbmQgcmVnaXN0ZXJlZCB3aXRoIHRoZSBzeXN0ZW0uIEknbSBnb2luZyB0byBsb29rIGZvciByZWxhdGVkIGZ1bmN0aW9ucyB0aGF0IGdldCBjYWxsZWQgd2l0aGluIGBwcm9iZWAgdG8gZ2V0IGEgc2Vuc2Ugb2YgdGhlIHByb2Nlc3MuIEknbGwgYmUgcGFydGljdWxhcmx5IGludGVyZXN0ZWQgaW4gaG93IHJlc291cmNlcyBhcmUgYWxsb2NhdGVkIGFuZCBpbml0aWFsaXNlZCwgYW5kIGFueSBlcnJvciBoYW5kbGluZyB0aGF0IGlzIGltcGxlbWVudGVkLiBJJ2xsIG5lZWQgdG8gcGF5IGNsb3NlIGF0dGVudGlvbiB0byB0aGUgZHJpdmVyJ3MgaW50ZXJhY3Rpb24gd2l0aCB0aGUgVVNCIGNvcmUsIGFuZCB3aGF0J3MgYmVpbmcgZG9uZSB0byBnZXQgdGhpcyBkZXZpY2Ugd29ya2luZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjcyMjAsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQyMTo0MDo1OS45ODgxMDE3NzJaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwNTcyMjMwOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJydHc4OV91c2JfcHJvYmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTFidS5jPTYyPXN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBydHdfODg1MWJ1X2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MWJ1LmMtNjQtXFx0LmlkX3RhYmxlID0gcnR3Xzg4NTFidV9pZF90YWJsZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTFidS5jOjY1OlxcdC5wcm9iZSA9IHJ0dzg5X3VzYl9wcm9iZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTFidS5jLTY2LVxcdC5kaXNjb25uZWN0ID0gcnR3ODlfdXNiX2Rpc2Nvbm5lY3QsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJhdS5jPTc2PXN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBydHdfODg1MmF1X2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmF1LmMtNzgtXFx0LmlkX3RhYmxlID0gcnR3Xzg4NTJhdV9pZF90YWJsZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJhdS5jOjc5OlxcdC5wcm9iZSA9IHJ0dzg5X3VzYl9wcm9iZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJhdS5jLTgwLVxcdC5kaXNjb25uZWN0ID0gcnR3ODlfdXNiX2Rpc2Nvbm5lY3QsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJidS5jPTc2PXN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBydHdfODg1MmJ1X2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmJ1LmMtNzgtXFx0LmlkX3RhYmxlID0gcnR3Xzg4NTJidV9pZF90YWJsZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJidS5jOjc5OlxcdC5wcm9iZSA9IHJ0dzg5X3VzYl9wcm9iZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJidS5jLTgwLVxcdC5kaXNjb25uZWN0ID0gcnR3ODlfdXNiX2Rpc2Nvbm5lY3QsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJjdS5jPTEzNj1zdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgcnR3Xzg4NTJjdV9kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJjdS5jLTEzOC1cXHQuaWRfdGFibGUgPSBydHdfODg1MmN1X2lkX3RhYmxlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmN1LmM6MTM5OlxcdC5wcm9iZSA9IHJ0dzg5X3VzYl9wcm9iZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJjdS5jLTE0MC1cXHQuZGlzY29ubmVjdCA9IHJ0dzg5X3VzYl9kaXNjb25uZWN0LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyYXUuYz03Nz1zdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgcnR3Xzg5MjJhdV9kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJhdS5jLTc5LVxcdC5pZF90YWJsZSA9IHJ0d184OTIyYXVfaWRfdGFibGUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyYXUuYzo4MDpcXHQucHJvYmUgPSBydHc4OV91c2JfcHJvYmUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyYXUuYy04MS1cXHQuZGlzY29ubmVjdCA9IHJ0dzg5X3VzYl9kaXNjb25uZWN0LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYz0xMjAxPV9fQVRUUklCVVRFX0dST1VQUyhydHc4OV91c2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTIwMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjEyMDM6aW50IHJ0dzg5X3VzYl9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTEyMDQtXFx0XFx0ICAgIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTI5NC19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzoxMjk1OkVYUE9SVF9TWU1CT0wocnR3ODlfdXNiX3Byb2JlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTEyOTYtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5oPTkyPXN0YXRpYyBpbmxpbmUgc3RydWN0IHJ0dzg5X3VzYiAqcnR3ODlfdXNiX3ByaXYoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuaC05Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5oOjk3OmludCBydHc4OV91c2JfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuaC05OC1cXHRcXHQgICAgY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgKmlkKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMjE6NDE6MDAuMDkzODI4NTlaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NjE3NTY5MzU2NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIHJ0dzg5IFVTQiBQcm9iZSoqXG5cbk9rYXksIHNvIEknbSBkaXZpbmcgaW50byB0aGlzIGBydHc4OWAgZHJpdmVyLCB3aGljaCBoYW5kbGVzIFJlYWx0ZWsgV2ktRmkgY2hpcHMgYWNyb3NzIGJvdGggUENJIGFuZCBVU0IgaW50ZXJmYWNlcy4gTXkgZ29hbCBpcyB0byB1bmRlcnN0YW5kIHRoZSBVU0IgcHJvYmluZyBwcm9jZXNzLCBzcGVjaWZpY2FsbHkgdGhlIGZ1bmN0aW9uIGBydHc4OV91c2JfcHJvYmVgLiAgTGV0IG1lIHJlZnJlc2ggbXkgbWVtb3J5OyBpdCBzdXBwb3J0cyBjaGlwcyBsaWtlIHRoZSA4ODUxQiwgODg1MkEsIGFuZCB0aG9zZSBvdGhlcnMuIEkgbmVlZCB0byBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIHdoYXQncyBoYXBwZW5pbmcgd2hlbiBhIFVTQiBkZXZpY2UgaXMgZGV0ZWN0ZWQuXG5cblJpZ2h0LCBzbyBJIG5lZWQgdG8gbmF2aWdhdGUgdG8gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmNgIGFuZCB0YWtlIGEgbG9vayBhcm91bmQgbGluZSAxMjAzLiBMZXQncyBzZWUgaG93IHRoZSBkcml2ZXIgaGFuZGxlcyBpbml0aWFsaXphdGlvbiBhbmQgYW55IHJlbGV2YW50IGhhcmR3YXJlIGlkZW50aWZpY2F0aW9uIGR1cmluZyB0aGUgVVNCIGRldmljZSBwcm9iZS4gSSdtIGV4cGVjdGluZyB0byBmaW5kIHRoZSBrZXkgc3RlcHMgaGVyZTogZGV2aWNlIHNldHVwLCByZXNvdXJjZSBhbGxvY2F0aW9uLCBhbmQsIG9mIGNvdXJzZSwgdGhlIGFjdHVhbCBXaS1GaSBjb250cm9sbGVyIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlLiBMZXQncyBkaWcgaW4gYW5kIGZpZ3VyZSBvdXQgdGhlIGV4YWN0IGZsb3cuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI4ODMwLCJPdXRwdXRUb2tlbnMiOjQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTE3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDIxOjQxOjA2LjI2OTUyNTIwNloiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTMxMTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxMjAwLFxuICBcIkxpbmVDb3VudFwiOiA4MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxMjAwOlxcdH07XFxuMTIwMTpcXHRfX0FUVFJJQlVURV9HUk9VUFMocnR3ODlfdXNiKTtcXG4xMjAyOlxcdFxcbjEyMDM6XFx0aW50IHJ0dzg5X3VzYl9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZixcXG4xMjA0OlxcdFxcdFxcdCAgICBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqaWQpXFxuMTIwNTpcXHR7XFxuMTIwNjpcXHRcXHRjb25zdCBzdHJ1Y3QgcnR3ODlfZHJpdmVyX2luZm8gKmluZm87XFxuMTIwNzpcXHRcXHRzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXY7XFxuMTIwODpcXHRcXHRzdHJ1Y3QgcnR3ODlfdXNiICpydHd1c2I7XFxuMTIwOTpcXHRcXHRpbnQgcmV0O1xcbjEyMTA6XFx0XFxuMTIxMTpcXHRcXHRpbmZvID0gKGNvbnN0IHN0cnVjdCBydHc4OV9kcml2ZXJfaW5mbyAqKWlkLVxcdTAwM2Vkcml2ZXJfaW5mbztcXG4xMjEyOlxcdFxcbjEyMTM6XFx0XFx0cnR3ZGV2ID0gcnR3ODlfYWxsb2NfaWVlZTgwMjExX2h3KFxcdTAwMjZpbnRmLVxcdTAwM2VkZXYsXFxuMTIxNDpcXHRcXHRcXHRcXHRcXHRcXHQgIHNpemVvZihzdHJ1Y3QgcnR3ODlfdXNiKSwgaW5mbyk7XFxuMTIxNTpcXHRcXHRpZiAoIXJ0d2Rldikge1xcbjEyMTY6XFx0XFx0XFx0ZGV2X2VycihcXHUwMDI2aW50Zi1cXHUwMDNlZGV2LCBcXFwiZmFpbGVkIHRvIGFsbG9jYXRlIGh3XFxcXG5cXFwiKTtcXG4xMjE3OlxcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbjEyMTg6XFx0XFx0fVxcbjEyMTk6XFx0XFxuMTIyMDpcXHRcXHRydHd1c2IgPSBydHc4OV91c2JfcHJpdihydHdkZXYpO1xcbjEyMjE6XFx0XFx0cnR3dXNiLVxcdTAwM2VydHdkZXYgPSBydHdkZXY7XFxuMTIyMjpcXHRcXHRydHd1c2ItXFx1MDAzZWluZm8gPSBpbmZvLVxcdTAwM2VidXMudXNiO1xcbjEyMjM6XFx0XFxuMTIyNDpcXHRcXHRydHdkZXYtXFx1MDAzZWh3LVxcdTAwM2V3aXBoeS1cXHUwMDNlZGV2Lmdyb3VwcyA9IHJ0dzg5X3VzYl9ncm91cHM7XFxuMTIyNTpcXHRcXG4xMjI2OlxcdFxcdHJ0d2Rldi1cXHUwMDNlaGNpLm9wcyA9IFxcdTAwMjZydHc4OV91c2Jfb3BzO1xcbjEyMjc6XFx0XFx0cnR3ZGV2LVxcdTAwM2VoY2kudHlwZSA9IFJUVzg5X0hDSV9UWVBFX1VTQjtcXG4xMjI4OlxcdFxcdHJ0d2Rldi1cXHUwMDNlaGNpLnR4X3JwdF9lbmFibGVkID0gdHJ1ZTtcXG4xMjI5OlxcdFxcbjEyMzA6XFx0XFx0cmV0ID0gcnR3ODlfdXNiX2ludGZfaW5pdChydHdkZXYsIGludGYpO1xcbjEyMzE6XFx0XFx0aWYgKHJldCkge1xcbjEyMzI6XFx0XFx0XFx0cnR3ODlfZXJyKHJ0d2RldiwgXFxcImZhaWxlZCB0byBpbml0aWFsaXNlIGludGY6ICVkXFxcXG5cXFwiLCByZXQpO1xcbjEyMzM6XFx0XFx0XFx0Z290byBlcnJfZnJlZV9odztcXG4xMjM0OlxcdFxcdH1cXG4xMjM1OlxcdFxcbjEyMzY6XFx0XFx0cmV0ID0gcnR3ODlfdXNiX3N3aXRjaF9tb2RlKHJ0d2Rldik7XFxuMTIzNzpcXHRcXHRpZiAocmV0KSB7XFxuMTIzODpcXHRcXHRcXHQvKiBOb3QgYSBmYWlsLCBidXQgd2UgZG8gbmVlZCB0byBza2lwIHJ0dzg5X2NvcmVfcmVnaXN0ZXIuICovXFxuMTIzOTpcXHRcXHRcXHRyZXQgPSAwO1xcbjEyNDA6XFx0XFx0XFx0Z290byBlcnJfaW50Zl9kZWluaXQ7XFxuMTI0MTpcXHRcXHR9XFxuMTI0MjpcXHRcXG4xMjQzOlxcdFxcdGlmIChydHd1c2ItXFx1MDAzZXVkZXYtXFx1MDAzZXNwZWVkID09IFVTQl9TUEVFRF9TVVBFUilcXG4xMjQ0OlxcdFxcdFxcdHJ0d2Rldi1cXHUwMDNlaGNpLmRsZV90eXBlID0gUlRXODlfSENJX0RMRV9UWVBFX1VTQjM7XFxuMTI0NTpcXHRcXHRlbHNlXFxuMTI0NjpcXHRcXHRcXHRydHdkZXYtXFx1MDAzZWhjaS5kbGVfdHlwZSA9IFJUVzg5X0hDSV9ETEVfVFlQRV9VU0IyO1xcbjEyNDc6XFx0XFxuMTI0ODpcXHRcXHRydHc4OV91c2JfaW5pdF90eChydHdkZXYpO1xcbjEyNDk6XFx0XFxuMTI1MDpcXHRcXHRyZXQgPSBydHc4OV91c2JfYWxsb2NfcnhfYnVmcyhydHd1c2IpO1xcbjEyNTE6XFx0XFx0aWYgKHJldClcXG4xMjUyOlxcdFxcdFxcdGdvdG8gZXJyX2ludGZfZGVpbml0O1xcbjEyNTM6XFx0XFxuMTI1NDpcXHRcXHRyZXQgPSBydHc4OV91c2JfaW5pdF9yeChydHdkZXYpO1xcbjEyNTU6XFx0XFx0aWYgKHJldClcXG4xMjU2OlxcdFxcdFxcdGdvdG8gZXJyX2ZyZWVfcnhfYnVmcztcXG4xMjU3OlxcdFxcbjEyNTg6XFx0XFx0cmV0ID0gcnR3ODlfY29yZV9pbml0KHJ0d2Rldik7XFxuMTI1OTpcXHRcXHRpZiAocmV0KSB7XFxuMTI2MDpcXHRcXHRcXHRydHc4OV9lcnIocnR3ZGV2LCBcXFwiZmFpbGVkIHRvIGluaXRpYWxpc2UgY29yZTogJWRcXFxcblxcXCIsIHJldCk7XFxuMTI2MTpcXHRcXHRcXHRnb3RvIGVycl9kZWluaXRfcng7XFxuMTI2MjpcXHRcXHR9XFxuMTI2MzpcXHRcXG4xMjY0OlxcdFxcdHJldCA9IHJ0dzg5X2NoaXBfaW5mb19zZXR1cChydHdkZXYpO1xcbjEyNjU6XFx0XFx0aWYgKHJldCkge1xcbjEyNjY6XFx0XFx0XFx0cnR3ODlfZXJyKHJ0d2RldiwgXFxcImZhaWxlZCB0byBzZXR1cCBjaGlwIGluZm9ybWF0aW9uXFxcXG5cXFwiKTtcXG4xMjY3OlxcdFxcdFxcdGdvdG8gZXJyX2NvcmVfZGVpbml0O1xcbjEyNjg6XFx0XFx0fVxcbjEyNjk6XFx0XFxuMTI3MDpcXHRcXHRyZXQgPSBydHc4OV9jb3JlX3JlZ2lzdGVyKHJ0d2Rldik7XFxuMTI3MTpcXHRcXHRpZiAocmV0KSB7XFxuMTI3MjpcXHRcXHRcXHRydHc4OV9lcnIocnR3ZGV2LCBcXFwiZmFpbGVkIHRvIHJlZ2lzdGVyIGNvcmVcXFxcblxcXCIpO1xcbjEyNzM6XFx0XFx0XFx0Z290byBlcnJfY29yZV9kZWluaXQ7XFxuMTI3NDpcXHRcXHR9XFxuMTI3NTpcXHRcXG4xMjc2OlxcdFxcdHJ0dzg5X3VzYl9zdGFydF9yeChydHdkZXYpO1xcbjEyNzc6XFx0XFxuMTI3ODpcXHRcXHRzZXRfYml0KFJUVzg5X0ZMQUdfUFJPQkVfRE9ORSwgcnR3ZGV2LVxcdTAwM2VmbGFncyk7XFxuMTI3OTpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMjE6NDE6MDYuMjY5NjgyMzI2WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjgwMDU0NTU3NTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgSW52ZXN0aWdhdGlvbiBpbnRvIHJ0dzg5J3MgaW50ZXJhY3Rpb24gd2l0aCBtYWM4MDIxMSBhbmQgc3l6a2FsbGVyKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbnRvIGhvdyB0aGUgYHJ0dzg5YCBkcml2ZXIgaW50ZXJmYWNlcyB3aXRoIHRoZSBgbWFjODAyMTFgIHN1YnN5c3RlbSBhbmQgcG90ZW50aWFsbHkgZ2V0cyBmdXp6ZWQgYnkgYHN5emthbGxlcmAuIEkga25vdyBgc3l6a2FsbGVyYCBoYXMgZGVzY3JpcHRpb25zIGZvciBVU0IgZW11bGF0aW9uIGFuZCB3aWZpIGZ1enppbmcsIGluY2x1ZGluZyBmdW5jdGlvbnMgbGlrZSBgc3l6X3VzYl9jb25uZWN0YCwgYG5sODAyMTFgLCBhbmQgY29tcG9uZW50cyBvZiBgbWFjODAyMTFgLCBzbyBJIHdhbnQgdG8gdW5kZXJzdGFuZCB0aGUgYXR0YWNrIHN1cmZhY2UuXG5cbk15IGluaXRpYWwgZm9jdXMgaXMgb24gaWRlbnRpZnlpbmcgbW9kaWZpZWQgZnVuY3Rpb25zIGFuZCB0cmFjaW5nIHRoZWlyIGV4ZWN1dGlvbiBwYXRocy4gSSd2ZSBwaW5wb2ludGVkIHRocmVlIGludGVyZXN0aW5nIGZ1bmN0aW9uczogYHJ0dzg5X2NhbV9yZXNldF9rZXlzYCwgYHJ0dzg5X3dvd19jb25zdHJ1Y3Rfa2V5X2luZm9gLCBhbmQgYHJ0dzg5X3dvd191cGRhdGVfa2V5X2luZm9gLlxuXG5MZXQncyBzdGFydCBieSBleGFtaW5pbmcgYHJ0dzg5X2NhbV9yZXNldF9rZXlzYCwgbG9jYXRlZCBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jYW0uY2AuIExvb2tpbmcgYXQgdGhlIGNvZGU6XG5cbmBgYGNcbnZvaWQgcnR3ODlfY2FtX3Jlc2V0X2tleXMoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxue1xuXHRpZWVlODAyMTFfaXRlcl9rZXlzKHJ0d2Rldi1cdTAwM2VodywgTlVMTCwgcnR3ODlfY2FtX3Jlc2V0X2tleV9pdGVyLCBydHdkZXYpO1xufVxuYGBgXG5cbk9rYXksIGl0IGl0ZXJhdGVzIHRocm91Z2gga2V5cyB1c2luZyBgaWVlZTgwMjExX2l0ZXJfa2V5c2AuIE5vdyBJIG5lZWQgdG8gZmlndXJlIG91dCAqd2hlcmUqIGBydHc4OV9jYW1fcmVzZXRfa2V5c2AgaXMgY2FsbGVkLlxuXG5JJ3ZlIGFscmVhZHkgZm91bmQgb25lIGNhbGwgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvc2VyLmNgLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBgc2VyX3Jlc2V0X21hY19iaW5kaW5nYCBmdW5jdGlvbi4gTXkgbmV4dCBzdGVwIGlzIHRvIHRyYWNlIHRoZSBjYWxsZXJzIG9mIGBzZXJfcmVzZXRfbWFjX2JpbmRpbmdgIHRvIHNlZSBob3cgaXQgY2FuIGJlIHRyaWdnZXJlZCwgYW5kIHBvdGVudGlhbGx5IGV4cGxvaXRlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzA1MjQsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMTQsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQyMTo0MToxNC4yNzUxNDA2NjNaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExNjAzMjQxOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzZXJfcmVzZXRfbWFjX2JpbmRpbmdcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3Nlci5jPTM0Mj1zdGF0aWMgdm9pZCBzZXJfZGVpbml0X2NhbShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHN0cnVjdCBydHc4OV92aWYgKnJ0d3ZpZilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvc2VyLmMtMzU2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvc2VyLmM6MzU3OnN0YXRpYyB2b2lkIHNlcl9yZXNldF9tYWNfYmluZGluZyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9zZXIuYy0zNTgte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9zZXIuYz02OTU9c3RhdGljIHZvaWQgc2VyX2wyX3Jlc2V0X3N0X3ByZV9oZGwoc3RydWN0IHJ0dzg5X3NlciAqc2VyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9zZXIuYy03MTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9zZXIuYzo3MjA6XFx0c2VyX3Jlc2V0X21hY19iaW5kaW5nKHJ0d2Rldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9zZXIuYy03MjEtXFx0cnR3ODlfY29yZV9zdG9wKHJ0d2Rldik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDIxOjQxOjE0LjM5MTE3ODE0MloiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyODc1MTM4OTk2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYW5hbHlzaXMgb2YgdGhlIHByb3ZpZGVkIGNvZGUgaW5zcGVjdGlvbiByZXF1ZXN0LCBmcm9tIG15IHBlcnNwZWN0aXZlIGFzIGEgc2Vhc29uZWQgcHJvZmVzc2lvbmFsOlxuXG4qKkRlZXAgRGl2ZSBpbnRvIFJlYWx0ZWsncyBydHc4OSBXaXJlbGVzcyBEcml2ZXIncyBXYWtlLW9uLVdpcmVsZXNzIChXb1cpIEZ1bmN0aW9uYWxpdHkqKlxuXG5Pa2F5LCBzbyB3ZSdyZSBsb29raW5nIGF0IHRoZSBSZWFsdGVrIGBydHc4OWAgd2lyZWxlc3MgZHJpdmVyLCBzcGVjaWZpY2FsbHkgaXRzIFdha2Utb24tV2lyZWxlc3MgKFdvVykgY2FwYWJpbGl0aWVzLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gemVybyBpbiBvbiB0aGUgYHJ0dzg5X3dvd19zd2FwX2Z3YCBmdW5jdGlvbiB3aXRoaW4gYHdvdy5jYC4gVGhpcyBzdHJvbmdseSBzdWdnZXN0cyB3ZSdyZSBkZWFsaW5nIHdpdGggYSBjcml0aWNhbCByb3V0aW5lIGZvciBzd2FwcGluZyBmaXJtd2FyZSBvciBtYW5hZ2luZyBmaXJtd2FyZSBzdGF0ZXMgcmVsYXRlZCB0byBXb1cgZnVuY3Rpb25hbGl0eS4gVGhlIGxpbmUgbnVtYmVyLCBgcnR3ODkvd293LmM6MTMxNWAsIGlzIG91ciBwcmltYXJ5IGZvY3VzLlxuXG5TaW5jZSB0aGUgZ29hbCBpcyBhbiBpbmZvcm1lZCBpbnNwZWN0aW9uLCBJJ2xsIG5lZWQgdG8gaW1tZWRpYXRlbHkgZXhwYW5kIG15IHNjb3BlLiBJJ20gZ29pbmcgdG8gbG9vayBhdCBsaW5lcyBhcm91bmQgdGhlIHByb3ZpZGVkIG51bWJlciwgdG8gZ2V0IHRoZSBiaWdnZXIgcGljdHVyZS4gSSdtIHRoaW5raW5nIEknbGwgc3RhcnQgYSBiaXQgYmVmb3JlLCBhcm91bmQgbGluZSAxMjU2LCB0byB1bmRlcnN0YW5kIHRoZSBzdXJyb3VuZGluZyBjb250ZXh0IGFuZCBmbG93IG9mIHRoZSBXb1cgZmlybXdhcmUgc3dhcCBwcm9jZXNzLiBUaGVuLCBJIHdpbGwgZGVmaW5pdGVseSBhbHNvIGFkZCBsaW5lcyAxNDI5IGFuZCAxNTk1IHRvIG15IGludmVzdGlnYXRpb24sIHRvIHRyeSB0byBjYXRjaCBhbnkgb2J2aW91cyBpbnRlcmFjdGlvbnMgb3Igb3RoZXIgY2FsbHMgaW4gdGhlIGFyZWEuIFRoaXMgYnJvYWRlciBjb250ZXh0IHdpbGwgYmUgY3J1Y2lhbCBmb3IgdW5kZXJzdGFuZGluZyBwb3RlbnRpYWwgaXNzdWVzLCBkZXBlbmRlbmNpZXMsIG9yIHRoZSBvdmVyYWxsIGFyY2hpdGVjdHVyZSBvZiBob3cgdGhlIGRyaXZlciBoYW5kbGVzIFdvVy1yZWxhdGVkIGZpcm13YXJlLiBLbm93aW5nIHRoZSBiaWdnZXIgcGljdHVyZSBpcyB0aGUgb25seSB3YXkgdG8gcGVyZm9ybSBhIHByb3BlciBhbmQgaW4tZGVwdGggY29kZSBpbnNwZWN0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMTYxMCwiT3V0cHV0VG9rZW5zIjo0NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDIxOjQxOjE3LjI2NjMyMDc4N1oiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTU0MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxMzAwLFxuICBcIkxpbmVDb3VudFwiOiA0MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxMzAwOlxcdFxcbjEzMDE6XFx0XFx0cmV0ID0gcnR3ODlfZndfaDJjX3JvbGVfbWFpbnRhaW4ocnR3ZGV2LCBydHd2aWZfbGluaywgcnR3c3RhX2xpbmssXFxuMTMwMjpcXHRcXHRcXHRcXHRcXHRcXHQgUlRXODlfUk9MRV9GV19SRVNUT1JFKTtcXG4xMzAzOlxcdFxcdGlmIChyZXQpIHtcXG4xMzA0OlxcdFxcdFxcdHJ0dzg5X3dhcm4ocnR3ZGV2LCBcXFwiZmFpbGVkIHRvIHNlbmQgaDJjIHJvbGUgbWFpbnRhaW5cXFxcblxcXCIpO1xcbjEzMDU6XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4xMzA2OlxcdFxcdH1cXG4xMzA3OlxcdFxcbjEzMDg6XFx0XFx0cmV0ID0gcnR3ODlfY2hpcF9oMmNfYXNzb2NfY21hY190YmwocnR3ZGV2LCBydHd2aWZfbGluaywgcnR3c3RhX2xpbmspO1xcbjEzMDk6XFx0XFx0aWYgKHJldCkge1xcbjEzMTA6XFx0XFx0XFx0cnR3ODlfd2FybihydHdkZXYsIFxcXCJmYWlsZWQgdG8gc2VuZCBoMmMgYXNzb2MgY21hYyB0YmxcXFxcblxcXCIpO1xcbjEzMTE6XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4xMzEyOlxcdFxcdH1cXG4xMzEzOlxcdFxcbjEzMTQ6XFx0XFx0aWYgKCFpc19jb25uKVxcbjEzMTU6XFx0XFx0XFx0cnR3ODlfY2FtX3Jlc2V0X2tleXMocnR3ZGV2KTtcXG4xMzE2OlxcdFxcbjEzMTc6XFx0XFx0cmV0ID0gcnR3ODlfZndfaDJjX2pvaW5faW5mbyhydHdkZXYsIHJ0d3ZpZl9saW5rLCBydHdzdGFfbGluaywgIWlzX2Nvbm4pO1xcbjEzMTg6XFx0XFx0aWYgKHJldCkge1xcbjEzMTk6XFx0XFx0XFx0cnR3ODlfd2FybihydHdkZXYsIFxcXCJmYWlsZWQgdG8gc2VuZCBoMmMgam9pbiBpbmZvXFxcXG5cXFwiKTtcXG4xMzIwOlxcdFxcdFxcdHJldHVybiByZXQ7XFxuMTMyMTpcXHRcXHR9XFxuMTMyMjpcXHRcXG4xMzIzOlxcdFxcdHJldCA9IHJ0dzg5X2Z3X2gyY19jYW0ocnR3ZGV2LCBydHd2aWZfbGluaywgcnR3c3RhX2xpbmssIE5VTEwsXFxuMTMyNDpcXHRcXHRcXHRcXHQgICAgICAgUlRXODlfUk9MRV9GV19SRVNUT1JFKTtcXG4xMzI1OlxcdFxcdGlmIChyZXQpIHtcXG4xMzI2OlxcdFxcdFxcdHJ0dzg5X3dhcm4ocnR3ZGV2LCBcXFwiZmFpbGVkIHRvIHNlbmQgaDJjIGNhbVxcXFxuXFxcIik7XFxuMTMyNzpcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbjEzMjg6XFx0XFx0fVxcbjEzMjk6XFx0XFxuMTMzMDpcXHRcXHRpZiAoaXNfY29ubikge1xcbjEzMzE6XFx0XFx0XFx0cmV0ID0gcnR3ODlfZndfaDJjX2dlbmVyYWxfcGt0KHJ0d2RldiwgcnR3dmlmX2xpbmssIHJ0d3N0YV9saW5rLVxcdTAwM2VtYWNfaWQpO1xcbjEzMzI6XFx0XFx0XFx0aWYgKHJldCkge1xcbjEzMzM6XFx0XFx0XFx0XFx0cnR3ODlfd2FybihydHdkZXYsIFxcXCJmYWlsZWQgdG8gc2VuZCBoMmMgZ2VuZXJhbCBwYWNrZXRcXFxcblxcXCIpO1xcbjEzMzQ6XFx0XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4xMzM1OlxcdFxcdFxcdH1cXG4xMzM2OlxcdFxcdFxcdHJ0dzg5X3BoeV9yYV9hc3NvYyhydHdkZXYsIHJ0d3N0YV9saW5rKTtcXG4xMzM3OlxcdFxcdFxcdHJ0dzg5X3BoeV9zZXRfYnNzX2NvbG9yKHJ0d2RldiwgcnR3dmlmX2xpbmspO1xcbjEzMzg6XFx0XFx0XFx0cnR3ODlfY2hpcF9jZmdfdHhwd3JfdWxfdGJfb2Zmc2V0KHJ0d2RldiwgcnR3dmlmX2xpbmspO1xcbjEzMzk6XFx0XFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQyMTo0MToxNy4yNjY0Nzg3MDdaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjI0OTk0Nzg3NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGFuYWx5c2lzIG9mIHRoaXMgY29kZSBzbmlwcGV0OlxuXG4qKkRlZXAgRGl2ZSBpbnRvIHJ0dzg5J3MgV29XTEFOIEltcGxlbWVudGF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYHdvdy5jYCBpbiB0aGUgcnR3ODkgZHJpdmVyLCBhbmQgaXQncyBpbW1lZGlhdGVseSBvYnZpb3VzIHRoaXMgaXMgYWxsIGFib3V0IFdha2Ugb24gV2lyZWxlc3MgTEFOIChXb1dMQU4pLiBOb3csIG15IGdvYWwgaXMgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGRyaXZlciBtYW5hZ2VzIGFuZCB1dGlsaXplcyBpdHMga2V5IGluZm9ybWF0aW9uIGZvciB0aGlzIGZ1bmN0aW9uYWxpdHkuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIHRyYWNlIHRoZSB1c2FnZSBvZiB0aGVzZSBrZXktcmVsYXRlZCBmdW5jdGlvbnM6IGBydHc4OV93b3dfY29uc3RydWN0X2tleV9pbmZvYCwgYHJ0dzg5X3dvd191cGRhdGVfa2V5X2luZm9gLCBhbmQgYHJ0dzg5X3dvd19zd2FwX2Z3YC4gVGhlIGNvcmUgb2YgYW55IGdvb2QgV29XTEFOIGltcGxlbWVudGF0aW9uIGhhcyBzZWN1cmUga2V5IGhhbmRsaW5nLCBzbyBJIG5lZWQgdG8ga25vdyB0aGUgZmxvdy4gVGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkgYW5kIHN0YXJ0IHNlYXJjaGluZyB3aXRoaW4gdGhlIHJ0dzg5IGNvZGViYXNlIGl0c2VsZi4gSSdsbCBuZWVkIHRvIHNlZSBob3cgdGhlc2UgZnVuY3Rpb25zIGFyZSBjb25zdHJ1Y3RlZCwgdXBkYXRlZCBhbmQgc3dhcHBlZCwgYW5kIHdoYXQgY29udGV4dHMgdGhleSBhcmUgY2FsbGVkIGZyb20uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMyODIzLCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODIsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQyMTo0MToxOS41MTY0MzAzMTNaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc5MzYwNDA5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJ0dzg5X3dvd19cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDc2NyBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jYW0uYz05Mjg9dm9pZCBydHc4OV9jYW1fZmlsbF9kY3RsX3NlY19jYW1faW5mb192MShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NhbS5jLTkzNC1cXHRcXHRydHc4OV9nZXRfYWRkcl9jYW1fb2YocnR3dmlmX2xpbmssIHJ0d3N0YV9saW5rKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NhbS5jOjkzNTpcXHRzdHJ1Y3QgcnR3ODlfd293X3BhcmFtICpydHdfd293ID0gXFx1MDAyNnJ0d2Rldi1cXHUwMDNld293O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY2FtLmMtOTM2LVxcdHU4ICpwdGtfdHhfaXYgPSBydHdfd293LVxcdTAwM2VrZXlfaW5mby5wdGtfdHhfaXY7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NhbS5jPTEwMDk9dm9pZCBydHc4OV9jYW1fZmlsbF9kY3RsX3NlY19jYW1faW5mb192MihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NhbS5jLTEwMTktXFx0Ym9vbCBpc19tbGQgPSBzdGEgPyBzdGEtXFx1MDAzZW1sbyA6IGllZWU4MDIxMV92aWZfaXNfbWxkKHZpZik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jYW0uYzoxMDIwOlxcdHN0cnVjdCBydHc4OV93b3dfcGFyYW0gKnJ0d193b3cgPSBcXHUwMDI2cnR3ZGV2LVxcdTAwM2V3b3c7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jYW0uYy0xMDIxLVxcdHU4ICpwdGtfdHhfaXYgPSBydHdfd293LVxcdTAwM2VrZXlfaW5mby5wdGtfdHhfaXY7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NhbS5jPTExNDI9dm9pZCBydHc4OV9jYW1fZmlsbF9kY3RsX3NlY19jYW1faW5mb192MyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NhbS5jLTExNTItXFx0Ym9vbCBpc19tbGQgPSBzdGEgPyBzdGEtXFx1MDAzZW1sbyA6IGllZWU4MDIxMV92aWZfaXNfbWxkKHZpZik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jYW0uYzoxMTUzOlxcdHN0cnVjdCBydHc4OV93b3dfcGFyYW0gKnJ0d193b3cgPSBcXHUwMDI2cnR3ZGV2LVxcdTAwM2V3b3c7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jYW0uYy0xMTU0LVxcdHU4ICpwdGtfdHhfaXYgPSBydHdfd293LVxcdTAwM2VrZXlfaW5mby5wdGtfdHhfaXY7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYz0xNDE0PXN0YXRpYyBpbnQgcnR3ODlfY29yZV90eF93cml0ZV9saW5rKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTE0MzQtXFx0cnR3ODlfdHJhZmZpY19zdGF0c19hY2N1KHJ0d2RldiwgcnR3dmlmLCBza2IsIHRydWUsIHRydWUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jOjE0MzU6XFx0cnR3ODlfd293X3BhcnNlX2FrbShydHdkZXYsIHNrYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtMTQzNi1cXHRydHc4OV9jb3JlX3R4X3VwZGF0ZV9kZXNjX2luZm8ocnR3ZGV2LCBcXHUwMDI2dHhfcmVxKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oPTMzPXN0cnVjdCBydHc4OV9yZWdkX2RhdGE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmg6MzQ6c3RydWN0IHJ0dzg5X3dvd19jYW1faW5mbztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaC0zNS1zdHJ1Y3QgcnR3ODlfYmJfd3JhcF9kYXRhO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmg9MTAyND1lbnVtIHJ0dzg5X3Jmc2lfY3RybF9iYW5kIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oLTEwMzEtLyogb25seSBtZ2QgZmVhdHVyZXMgY2FuIGJlIGFkZGVkIHRvIHRoZSBlbnVtICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmg6MTAzMjplbnVtIHJ0dzg5X3dvd19mbGFncyB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmgtMTAzMy1cXHRSVFc4OV9XT1dfRkxBR19FTl9NQUdJQ19QS1QsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaD00ODc3PXN0cnVjdCBydHc4OV9jaGlwX29wcyB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaC00OTkyLVxcdGludCAoKmgyY193b3dfY2FtX3VwZGF0ZSkoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oOjQ5OTM6XFx0XFx0XFx0XFx0ICBzdHJ1Y3QgcnR3ODlfd293X2NhbV9pbmZvICpjYW1faW5mbyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmgtNDk5NC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oPTczMDc9c3RydWN0IHJ0dzg5X3BoeV9jYWxjX2VmdXNlX2dhaW4ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmgtNzMxNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaDo3MzE3OnN0cnVjdCBydHc4OV93b3dfY2FtX2luZm8ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oLTczMTgtXFx0Ym9vbCByX3c7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaC03MzI5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oOjczMzA6c3RydWN0IHJ0dzg5X3dvd19rZXlfaW5mbyB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmgtNzMzMS1cXHR1OCBwdGtfdHhfaXZbOF07XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaC03MzM5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oOjczNDA6c3RydWN0IHJ0dzg5X3dvd19ndGtfaW5mbyB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmgtNzM0MS1cXHR1OCBrY2tbMzJdO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmgtNzM1MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaDo3MzUyOnN0cnVjdCBydHc4OV93b3dfYW9hY19yZXBvcnQge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oLTczNTMtXFx0dTggcnB0X3ZlcjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oLTczNzItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmg6NzM3MzpzdHJ1Y3QgcnR3ODlfd293X3BhcmFtIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaC03Mzc0LVxcdHN0cnVjdCBydHc4OV92aWZfbGluayAqcnR3dmlmX2xpbms7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmgtNzM3NS1cXHRERUNMQVJFX0JJVE1BUChmbGFncywgUlRXODlfV09XX0ZMQUdfTlVNKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaDo3Mzc2OlxcdHN0cnVjdCBydHc4OV93b3dfY2FtX2luZm8gcGF0dGVybnNbUlRXODlfTUFYX1BBVFRFUk5fTlVNXTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaDo3Mzc3OlxcdHN0cnVjdCBydHc4OV93b3dfa2V5X2luZm8ga2V5X2luZm87XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmg6NzM3ODpcXHRzdHJ1Y3QgcnR3ODlfd293X2d0a19pbmZvIGd0a19pbmZvO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oOjczNzk6XFx0c3RydWN0IHJ0dzg5X3dvd19hb2FjX3JlcG9ydCBhb2FjX3JwdDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaC03MzgwLVxcdHU4IHBhdHRlcm5fY250O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmg9NzU1MT1zdHJ1Y3QgcnR3ODlfZGV2IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oLTc2ODQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmg6NzY4NTpcXHRzdHJ1Y3QgcnR3ODlfd293X3BhcmFtIHdvdztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaC03Njg2LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jPTI4NzA9c3RhdGljIHN0cnVjdCBza19idWZmICpydHc4OV9lYXBvbF9nZXQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTI4NzQtXFx0XFx0XFx0XFx0ICAgICAweDhFLCAweDAxLCAweDAzLCAweDAwLCAweDVGLCAweDAyLCAweDAzfTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM6Mjg3NTpcXHR1OCBzZWNfaGRyX2xlbiA9IHJ0dzg5X3dvd19nZXRfc2VjX2hkcl9sZW4ocnR3ZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM6Mjg3NjpcXHRzdHJ1Y3QgcnR3ODlfd293X3BhcmFtICpydHdfd293ID0gXFx1MDAyNnJ0d2Rldi1cXHUwMDNld293O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0yODc3LVxcdHN0cnVjdCBydHc4OV9lYXBvbF8yX29mXzIgKmVhcG9sX3BrdDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYz0yOTIwPXN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqcnR3ODlfc2FfcXVlcnlfZ2V0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0yOTIyLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM6MjkyMzpcXHR1OCBzZWNfaGRyX2xlbiA9IHJ0dzg5X3dvd19nZXRfc2VjX2hkcl9sZW4ocnR3ZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMjkyNC1cXHRzdHJ1Y3QgaWVlZTgwMjExX2Jzc19jb25mICpic3NfY29uZjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYz0yOTU3PXN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqcnR3ODlfYXJwX3Jlc3BvbnNlX2dldChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMjk2MS1cXHRzdHJ1Y3QgcnR3ODlfdmlmICpydHd2aWYgPSBydHd2aWZfbGluay1cXHUwMDNlcnR3dmlmO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYzoyOTYyOlxcdHU4IHNlY19oZHJfbGVuID0gcnR3ODlfd293X2dldF9zZWNfaGRyX2xlbihydHdkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYzoyOTYzOlxcdHN0cnVjdCBydHc4OV93b3dfcGFyYW0gKnJ0d193b3cgPSBcXHUwMDI2cnR3ZGV2LVxcdTAwM2V3b3c7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTI5NjQtXFx0c3RydWN0IGllZWU4MDIxMV9oZHJfM2FkZHIgKmhkcjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYz03NzE5PXZvaWQgcnR3ODlfaHdfc2Nhbl9jYWxjX3JlcV9zc2lkKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy03NzI0LVxcdHN0cnVjdCBjZmc4MDIxMV9zY2FuX3JlcXVlc3QgKnJlcSA9IHJ0d3ZpZi1cXHUwMDNlc2Nhbl9yZXE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jOjc3MjU6XFx0c3RydWN0IHJ0dzg5X3dvd19wYXJhbSAqcnR3X3dvdyA9IFxcdTAwMjZydHdkZXYtXFx1MDAzZXdvdztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtNzcyNi1cXHRzdHJ1Y3QgY2ZnODAyMTFfc2NoZWRfc2Nhbl9yZXF1ZXN0ICpuZF9jb25maWc7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM9Nzc0Nz1pbnQgcnR3ODlfZndfaDJjX3NjYW5fb2ZmbG9hZF9iZShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtNzc2NS1cXHR1OCBvcGNoX3NpemUgPSBzaXplb2YoKm9wY2gpICogb3B0aW9uLVxcdTAwM2VudW1fb3BjaDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM6Nzc2NjpcXHRzdHJ1Y3QgcnR3ODlfd293X3BhcmFtICpydHdfd293ID0gXFx1MDAyNnJ0d2Rldi1cXHUwMDNld293O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy03NzY3LVxcdHN0cnVjdCBjZmc4MDIxMV9zY2hlZF9zY2FuX3JlcXVlc3QgKm5kX2NvbmZpZztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYz05NDIwPWludCBydHc4OV9od19zY2FuX2FwcGVuZF93aWxkY2FyZF9wcm9iZV9yZXEoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTk0MjktXFx0c3RydWN0IGllZWU4MDIxMV9zY2FuX2llcyAqaWVzID0gcnR3dmlmLVxcdTAwM2VzY2FuX2llcztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM6OTQzMDpcXHRzdHJ1Y3QgcnR3ODlfd293X3BhcmFtICpydHdfd293ID0gXFx1MDAyNnJ0d2Rldi1cXHUwMDNld293O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy05NDMxLVxcdHN0cnVjdCBjZmc4MDIxMV9zY2hlZF9zY2FuX3JlcXVlc3QgKm5kX2NvbmZpZztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYz05NTc5PXN0YXRpYyB2b2lkIHJ0dzg5X3Bub19zY2FuX2FkZF9jaGFuX2F4KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy05NTgyLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM6OTU4MzpcXHRzdHJ1Y3QgcnR3ODlfd293X3BhcmFtICpydHdfd293ID0gXFx1MDAyNnJ0d2Rldi1cXHUwMDNld293O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy05NTg0LVxcdHN0cnVjdCBydHc4OV9wa3RvZmxkX2luZm8gKmluZm87XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM9OTcyND1zdGF0aWMgdm9pZCBydHc4OV9wbm9fc2Nhbl9hZGRfY2hhbl9iZShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGludCBjaGFuX3R5cGUsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtOTcyNy17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jOjk3Mjg6XFx0c3RydWN0IHJ0dzg5X3dvd19wYXJhbSAqcnR3X3dvdyA9IFxcdTAwMjZydHdkZXYtXFx1MDAzZXdvdztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtOTcyOS1cXHRzdHJ1Y3QgcnR3ODlfcGt0b2ZsZF9pbmZvICppbmZvO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jPTk4Mjk9aW50IHJ0dzg5X3Bub19zY2FuX2FkZF9jaGFuX2xpc3RfYXgoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTk4MzEte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYzo5ODMyOlxcdHN0cnVjdCBydHc4OV93b3dfcGFyYW0gKnJ0d193b3cgPSBcXHUwMDI2cnR3ZGV2LVxcdTAwM2V3b3c7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTk4MzMtXFx0c3RydWN0IGNmZzgwMjExX3NjaGVkX3NjYW5fcmVxdWVzdCAqbmRfY29uZmlnID0gcnR3X3dvdy1cXHUwMDNlbmRfY29uZmlnO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jPTEwMDQ3PWludCBydHc4OV9wbm9fc2Nhbl9hZGRfY2hhbl9saXN0X2JlKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0xMDA0OS17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jOjEwMDUwOlxcdHN0cnVjdCBydHc4OV93b3dfcGFyYW0gKnJ0d193b3cgPSBcXHUwMDI2cnR3ZGV2LVxcdTAwM2V3b3c7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTEwMDUxLVxcdHN0cnVjdCBjZmc4MDIxMV9zY2hlZF9zY2FuX3JlcXVlc3QgKm5kX2NvbmZpZyA9IHJ0d193b3ctXFx1MDAzZW5kX2NvbmZpZztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYz0xMDc4ND1pbnQgcnR3ODlfZndfaDJjX2Rpc2Nvbm5lY3RfZGV0ZWN0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0xMDc4Ni17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jOjEwNzg3OlxcdHN0cnVjdCBydHc4OV93b3dfcGFyYW0gKnJ0d193b3cgPSBcXHUwMDI2cnR3ZGV2LVxcdTAwM2V3b3c7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTEwNzg4LVxcdHN0cnVjdCBza19idWZmICpza2I7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM9MTA4Mjg9aW50IHJ0dzg5X2Z3X2gyY19jZmdfcG5vKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldiwgc3RydWN0IHJ0dzg5X3ZpZl9saW5rICpydHd2aWZfbGluayxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0xMDgzMC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jOjEwODMxOlxcdHN0cnVjdCBydHc4OV93b3dfcGFyYW0gKnJ0d193b3cgPSBcXHUwMDI2cnR3ZGV2LVxcdTAwM2V3b3c7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTEwODMyLVxcdHN0cnVjdCBjZmc4MDIxMV9zY2hlZF9zY2FuX3JlcXVlc3QgKm5kX2NvbmZpZyA9IHJ0d193b3ctXFx1MDAzZW5kX2NvbmZpZztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYz0xMDg3OT1pbnQgcnR3ODlfZndfaDJjX3dvd19nbG9iYWwoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBzdHJ1Y3QgcnR3ODlfdmlmX2xpbmsgKnJ0d3ZpZl9saW5rLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTEwODgxLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM6MTA4ODI6XFx0c3RydWN0IHJ0dzg5X3dvd19wYXJhbSAqcnR3X3dvdyA9IFxcdTAwMjZydHdkZXYtXFx1MDAzZXdvdztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTA4ODMtXFx0c3RydWN0IHJ0dzg5X2gyY193b3dfZ2xvYmFsICpoMmM7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM9MTA5MjY9aW50IHJ0dzg5X2Z3X2gyY193b3dfd2FrZXVwX2N0cmwoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTEwOTMwLVxcdHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYgPSBydHd2aWZfbGlua190b192aWYocnR3dmlmX2xpbmspO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYzoxMDkzMTpcXHRzdHJ1Y3QgcnR3ODlfd293X3BhcmFtICpydHdfd293ID0gXFx1MDAyNnJ0d2Rldi1cXHUwMDNld293O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0xMDkzMi1cXHRzdHJ1Y3QgcnR3ODlfaDJjX3dvd193YWtldXBfY3RybCAqaDJjO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jPTEwOTg0PWludCBydHc4OV9md19oMmNfd293X2NhbV91cGRhdGUoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYzoxMDk4NTpcXHRcXHRcXHRcXHRzdHJ1Y3QgcnR3ODlfd293X2NhbV9pbmZvICpjYW1faW5mbylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTA5ODYte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jPTExMDQxPWludCBydHc4OV9md19oMmNfd293X2NhbV91cGRhdGVfdjEoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYzoxMTA0MjpcXHRcXHRcXHRcXHQgICBzdHJ1Y3QgcnR3ODlfd293X2NhbV9pbmZvICpjYW1faW5mbylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTEwNDMte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jPTExMDk5PWludCBydHc4OV9md19oMmNfd293X2d0a19vZmxkKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0xMTEwMi17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jOjExMTAzOlxcdHN0cnVjdCBydHc4OV93b3dfcGFyYW0gKnJ0d193b3cgPSBcXHUwMDI2cnR3ZGV2LVxcdTAwM2V3b3c7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jOjExMTA0OlxcdHN0cnVjdCBydHc4OV93b3dfZ3RrX2luZm8gKmd0a19pbmZvID0gXFx1MDAyNnJ0d193b3ctXFx1MDAzZWd0a19pbmZvO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0xMTEwNS1cXHRzdHJ1Y3QgcnR3ODlfaDJjX3dvd19ndGtfb2ZsZCAqaDJjO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5oPTIyMTU9c3RydWN0IHJ0dzg5X2gyY193b3dfZ2xvYmFsIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmgtMjIxNi1cXHRfX2xlMzIgdzA7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5oOjIyMTc6XFx0c3RydWN0IHJ0dzg5X3dvd19rZXlfaW5mbyBrZXlfaW5mbztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmgtMjIxOC19IF9fcGFja2VkO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5oPTIzMTI9c3RydWN0IHJ0dzg5X2gyY193b3dfZ3RrX29mbGQge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5oLTIzMTQtXFx0X19sZTMyIHcxO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuaDoyMzE1OlxcdHN0cnVjdCBydHc4OV93b3dfZ3RrX2luZm8gZ3RrX2luZm87XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5oLTIzMTYtfSBfX3BhY2tlZDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuaD00NjY1PXN0cnVjdCBydHc4OV9md19oMmNfcmZfcmVnX2luZm8ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5oLTQ2OTktI2RlZmluZSBIMkNfQ0xfTUFDX1dPV1xcdFxcdFxcdDB4MVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuaDo0NzAwOmVudW0gcnR3ODlfd293X2gyY19mdW5jIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmgtNDcwMS1cXHRIMkNfRlVOQ19LRUVQX0FMSVZFXFx0XFx0PSAweDAsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3Lmg9NTYzND1pbnQgcnR3ODlfZndfaDJjX3dvd19jYW1fdXBkYXRlKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3Lmg6NTYzNTpcXHRcXHRcXHRcXHRzdHJ1Y3QgcnR3ODlfd293X2NhbV9pbmZvICpjYW1faW5mbyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5oLTU2MzYtaW50IHJ0dzg5X2Z3X2gyY193b3dfY2FtX3VwZGF0ZV92MShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5oOjU2Mzc6XFx0XFx0XFx0XFx0ICAgc3RydWN0IHJ0dzg5X3dvd19jYW1faW5mbyAqY2FtX2luZm8pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuaC01NjM4LWludCBydHc4OV9md19oMmNfd293X2d0a19vZmxkKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuaD01ODExPWludCBydHc4OV9jaGlwX2gyY193b3dfY2FtX3VwZGF0ZShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5oOjU4MTI6XFx0XFx0XFx0XFx0ICBzdHJ1Y3QgcnR3ODlfd293X2NhbV9pbmZvICpjYW1faW5mbylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmgtNTgxMy17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3Lmg9NTkyMz1ydHc4OV9sb2FkX3JmZV9kYXRhX2Zyb21fZncoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5oLTU5MjUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5oOjU5MjY6ZW51bSBydHc4OV93b3dfd2FrZXVwX3ZlciB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5oLTU5MjctXFx0UlRXODlfV09XX1JFQVNPTl9WMCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjLmM9NTg5MD1ydHc4OV9tYWNfYzJoX3dvd19hb2FjX3JwdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHN0cnVjdCBza19idWZmICpza2IsIHUzMiBsZW4pXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWMuYy01ODkxLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYy5jOjU4OTI6XFx0c3RydWN0IHJ0dzg5X3dvd19wYXJhbSAqcnR3X3dvdyA9IFxcdTAwMjZydHdkZXYtXFx1MDAzZXdvdztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYy5jOjU4OTM6XFx0c3RydWN0IHJ0dzg5X3dvd19hb2FjX3JlcG9ydCAqYW9hY19ycHQgPSBcXHUwMDI2cnR3X3dvdy1cXHUwMDNlYW9hY19ycHQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWMuYy01ODk0LVxcdHN0cnVjdCBydHc4OV93YWl0X2luZm8gKndhaXQgPSBcXHUwMDI2cnR3X3dvdy1cXHUwMDNld2FpdDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjLmM9NzM1MT1pbnQgcnR3ODlfbWFjX2NwdV9pb19yeChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGJvb2wgd293X2VuYWJsZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjLmMtNzM2My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYy5jOjczNjQ6c3RhdGljIGludCBydHc4OV93b3dfY29uZmlnX21hY19heChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGJvb2wgZW5hYmxlX3dvdylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYy5jLTczNjUte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWMuYz03NDUwPWNvbnN0IHN0cnVjdCBydHc4OV9tYWNfZ2VuX2RlZiBydHc4OV9tYWNfZ2VuX2F4ID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWMuYy03NTQ3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjLmM6NzU0ODpcXHQud293X2NvbmZpZ19tYWMgPSBydHc4OV93b3dfY29uZmlnX21hY19heCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYy5jLTc1NDktfTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYz0xODk2PXN0YXRpYyBpbnQgcnR3ODlfb3BzX3N1c3BlbmQoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMTkwNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MTkwODpcXHRyZXQgPSBydHc4OV93b3dfc3VzcGVuZChydHdkZXYsIHdvd2xhbik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTE5MDktXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jPTE5MTg9c3RhdGljIGludCBydHc4OV9vcHNfcmVzdW1lKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTE5MjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjE5MjU6XFx0cmV0ID0gcnR3ODlfd293X3Jlc3VtZShydHdkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0xOTI2LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM9MTk0NT1zdGF0aWMgdm9pZCBydHc4OV9zZXRfcmVrZXlfZGF0YShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0xOTQ5LVxcdHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiA9IGh3LVxcdTAwM2Vwcml2O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoxOTUwOlxcdHN0cnVjdCBydHc4OV93b3dfcGFyYW0gKnJ0d193b3cgPSBcXHUwMDI2cnR3ZGV2LVxcdTAwM2V3b3c7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjE5NTE6XFx0c3RydWN0IHJ0dzg5X3dvd19ndGtfaW5mbyAqZ3RrX2luZm8gPSBcXHUwMDI2cnR3X3dvdy1cXHUwMDNlZ3RrX2luZm87XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTE5NTItXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hY19iZS5jPTI5NjU9c3RhdGljIHZvaWQgcnR3ODlfbWFjX2R1bXBfcXRhX2xvc3RfYmUoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWNfYmUuYy0zMDUxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjX2JlLmM6MzA1MjpzdGF0aWMgaW50IHJ0dzg5X3dvd19jb25maWdfbWFjX2JlKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgYm9vbCBlbmFibGVfd293KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjX2JlLmMtMzA1My17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hY19iZS5jPTMyNjg9Y29uc3Qgc3RydWN0IHJ0dzg5X21hY19nZW5fZGVmIHJ0dzg5X21hY19nZW5fYmUgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hY19iZS5jLTMzNjUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWNfYmUuYzozMzY2OlxcdC53b3dfY29uZmlnX21hYyA9IHJ0dzg5X3dvd19jb25maWdfbWFjX2JlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjX2JlLmMtMzM2Ny19O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy0xNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jOjE1OnZvaWQgX19ydHc4OV93b3dfcGFyc2VfYWttKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTE2LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTE3LVxcdHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqbWdtdCA9IChzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKilza2ItXFx1MDAzZWRhdGE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYzoxODpcXHRzdHJ1Y3QgcnR3ODlfd293X3BhcmFtICpydHdfd293ID0gXFx1MDAyNnJ0d2Rldi1cXHUwMDNld293O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtMTktXFx0Y29uc3QgdTggKnJzbiwgKmllcyA9IG1nbXQtXFx1MDAzZXUuYXNzb2NfcmVxLnZhcmlhYmxlO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYz0yMzk9c3RhdGljIGludCBydHc4OV9yeF9wbl9nZXRfcG1mKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTI0MC1cXHRcXHRcXHQgICAgICAgc3RydWN0IGllZWU4MDIxMV9rZXlfY29uZiAqa2V5LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmM6MjQxOlxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgcnR3ODlfd293X2d0a19pbmZvICpndGtfaW5mbylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTI0Mi17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jPTI3MD1zdGF0aWMgaW50IHJ0dzg5X3J4X3BuX3NldF9wbWYoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy0yNzMte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmM6Mjc0OlxcdHN0cnVjdCBydHc4OV93b3dfcGFyYW0gKnJ0d193b3cgPSBcXHUwMDI2cnR3ZGV2LVxcdTAwM2V3b3c7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYzoyNzU6XFx0c3RydWN0IHJ0dzg5X3dvd19hb2FjX3JlcG9ydCAqYW9hY19ycHQgPSBcXHUwMDI2cnR3X3dvdy1cXHUwMDNlYW9hY19ycHQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy0yNzYtXFx0c3RydWN0IGllZWU4MDIxMV9rZXlfc2VxIHNlcTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtMjk1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmM6Mjk2OnN0YXRpYyB2b2lkIHJ0dzg5X3dvd19nZXRfa2V5X2luZm9faXRlcihzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTI5Ny1cXHRcXHRcXHRcXHRcXHRzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy0zMDItXFx0c3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2ID0gaHctXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYzozMDM6XFx0c3RydWN0IHJ0dzg5X3dvd19wYXJhbSAqcnR3X3dvdyA9IFxcdTAwMjZydHdkZXYtXFx1MDAzZXdvdztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jOjMwNDpcXHRzdHJ1Y3QgcnR3ODlfd293X2tleV9pbmZvICprZXlfaW5mbyA9IFxcdTAwMjZydHdfd293LVxcdTAwM2VrZXlfaW5mbztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jOjMwNTpcXHRzdHJ1Y3QgcnR3ODlfd293X2d0a19pbmZvICpndGtfaW5mbyA9IFxcdTAwMjZydHdfd293LVxcdTAwM2VndGtfaW5mbztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTMwNi1cXHRjb25zdCBzdHJ1Y3QgcnR3ODlfY2lwaGVyX2luZm8gKmNpcGhlcl9pbmZvO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy0zNzAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYzozNzE6c3RhdGljIHZvaWQgcnR3ODlfd293X3NldF9rZXlfaW5mb19pdGVyKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtMzcyLVxcdFxcdFxcdFxcdFxcdHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTM3Ny1cXHRzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYgPSBody1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jOjM3ODpcXHRzdHJ1Y3QgcnR3ODlfd293X3BhcmFtICpydHdfd293ID0gXFx1MDAyNnJ0d2Rldi1cXHUwMDNld293O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmM6Mzc5OlxcdHN0cnVjdCBydHc4OV93b3dfYW9hY19yZXBvcnQgKmFvYWNfcnB0ID0gXFx1MDAyNnJ0d193b3ctXFx1MDAzZWFvYWNfcnB0O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtMzgwLVxcdHN0cnVjdCBydHc4OV9zZXRfa2V5X2luZm9faXRlcl9kYXRhICppdGVyX2RhdGEgPSBkYXRhO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy00NTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYzo0NTc6c3RhdGljIHZvaWQgcnR3ODlfd293X2tleV9jbGVhcihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy00NTgte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmM6NDU5OlxcdHN0cnVjdCBydHc4OV93b3dfcGFyYW0gKnJ0d193b3cgPSBcXHUwMDI2cnR3ZGV2LVxcdTAwM2V3b3c7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy00NjAtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTQ2Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jOjQ2ODpzdGF0aWMgdm9pZCBydHc4OV93b3dfY29uc3RydWN0X2tleV9pbmZvKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTQ2OS17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYzo0NzA6XFx0c3RydWN0IHJ0dzg5X3dvd19wYXJhbSAqcnR3X3dvdyA9IFxcdTAwMjZydHdkZXYtXFx1MDAzZXdvdztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jOjQ3MTpcXHRzdHJ1Y3QgcnR3ODlfd293X2tleV9pbmZvICprZXlfaW5mbyA9IFxcdTAwMjZydHdfd293LVxcdTAwM2VrZXlfaW5mbztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTQ3Mi1cXHRzdHJ1Y3QgcnR3ODlfdmlmX2xpbmsgKnJ0d3ZpZl9saW5rID0gcnR3ZGV2LVxcdTAwM2V3b3cucnR3dmlmX2xpbms7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTQ3Ni1cXHRpZWVlODAyMTFfaXRlcl9rZXlzKHJ0d2Rldi1cXHUwMDNlaHcsIHdvd192aWYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYzo0Nzc6XFx0XFx0XFx0ICAgIHJ0dzg5X3dvd19nZXRfa2V5X2luZm9faXRlciwgXFx1MDAyNmVycik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy00NzgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy00NzktXFx0aWYgKGVycikge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmM6NDgwOlxcdFxcdHJ0dzg5X3dvd19rZXlfY2xlYXIocnR3ZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTQ4MS1cXHRcXHRyZXR1cm47XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTQ4OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jOjQ4OTpzdGF0aWMgdm9pZCBydHc4OV93b3dfZGVidWdfYW9hY19ycHQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtNDkwLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jOjQ5MTpcXHRzdHJ1Y3QgcnR3ODlfd293X3BhcmFtICpydHdfd293ID0gXFx1MDAyNnJ0d2Rldi1cXHUwMDNld293O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmM6NDkyOlxcdHN0cnVjdCBydHc4OV93b3dfYW9hY19yZXBvcnQgKmFvYWNfcnB0ID0gXFx1MDAyNnJ0d193b3ctXFx1MDAzZWFvYWNfcnB0O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtNDkzLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy01MjktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYzo1MzA6c3RhdGljIGludCBydHc4OV93b3dfZ2V0X2FvYWNfcnB0X3JlZyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy01MzEte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmM6NTMyOlxcdHN0cnVjdCBydHc4OV93b3dfcGFyYW0gKnJ0d193b3cgPSBcXHUwMDI2cnR3ZGV2LVxcdTAwM2V3b3c7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYzo1MzM6XFx0c3RydWN0IHJ0dzg5X3dvd19hb2FjX3JlcG9ydCAqYW9hY19ycHQgPSBcXHUwMDI2cnR3X3dvdy1cXHUwMDNlYW9hY19ycHQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy01MzQtXFx0c3RydWN0IHJ0dzg5X21hY19jMmhfaW5mbyBjMmhfaW5mbyA9IHt9O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy02MTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYzo2MTY6c3RhdGljIGludCBydHc4OV93b3dfZ2V0X2FvYWNfcnB0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgYm9vbCByeF9yZWFkeSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTYxNy17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYzo2MTg6XFx0c3RydWN0IHJ0dzg5X3dvd19wYXJhbSAqcnR3X3dvdyA9IFxcdTAwMjZydHdkZXYtXFx1MDAzZXdvdztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTYxOS1cXHRpbnQgcmV0O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy02MjQtXFx0aWYgKCFyeF9yZWFkeSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmM6NjI1OlxcdFxcdHJldCA9IHJ0dzg5X3dvd19nZXRfYW9hY19ycHRfcmVnKHJ0d2Rldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy02MjYtXFx0XFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy02MzctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYzo2Mzg6XFx0cnR3ODlfd293X2RlYnVnX2FvYWNfcnB0KHJ0d2Rldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy02MzktXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTY0Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jOjY0MzpzdGF0aWMgc3RydWN0IGllZWU4MDIxMV9rZXlfY29uZiAqcnR3ODlfd293X2d0a19yZWtleShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy02NDQtXFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgdTMyIGNpcGhlciwgdTgga2V5aWR4LCB1OCAqZ3RrKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy02ODMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYzo2ODQ6c3RhdGljIHZvaWQgcnR3ODlfd293X3VwZGF0ZV9rZXlfaW5mbyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGJvb2wgcnhfcmVhZHkpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy02ODUte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy02ODctXFx0c3RydWN0IGllZWU4MDIxMV92aWYgKndvd192aWYgPSBydHd2aWZfbGlua190b192aWYocnR3dmlmX2xpbmspO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmM6Njg4OlxcdHN0cnVjdCBydHc4OV93b3dfcGFyYW0gKnJ0d193b3cgPSBcXHUwMDI2cnR3ZGV2LVxcdTAwM2V3b3c7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYzo2ODk6XFx0c3RydWN0IHJ0dzg5X3dvd19hb2FjX3JlcG9ydCAqYW9hY19ycHQgPSBcXHUwMDI2cnR3X3dvdy1cXHUwMDNlYW9hY19ycHQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy02OTAtXFx0c3RydWN0IHJ0dzg5X3NldF9rZXlfaW5mb19pdGVyX2RhdGEgZGF0YSA9IHsuZXJyb3IgPSBmYWxzZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtNjk2LVxcdGllZWU4MDIxMV9pdGVyX2tleXMocnR3ZGV2LVxcdTAwM2Vodywgd293X3ZpZixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jOjY5NzpcXHRcXHRcXHQgICAgcnR3ODlfd293X3NldF9rZXlfaW5mb19pdGVyLCBcXHUwMDI2ZGF0YSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy02OTgtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTcwNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jOjcwNzpcXHRrZXkgPSBydHc4OV93b3dfZ3RrX3Jla2V5KHJ0d2RldiwgZGF0YS5ndGtfY2lwaGVyLCBhb2FjX3JwdC1cXHUwMDNla2V5X2lkeCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTcwOC1cXHRcXHRcXHRcXHQgIGFvYWNfcnB0LVxcdTAwM2VndGspO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy03MTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYzo3MTg6XFx0a2V5ID0gcnR3ODlfd293X2d0a19yZWtleShydHdkZXYsIGRhdGEuaWd0a19jaXBoZXIsIGFvYWNfcnB0LVxcdTAwM2VpZ3RrX2tleV9pZCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTcxOS1cXHRcXHRcXHRcXHQgIGFvYWNfcnB0LVxcdTAwM2VpZ3RrKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtNzM0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmM6NzM1OnN0YXRpYyB2b2lkIHJ0dzg5X3dvd19sZWF2ZV9kZWVwX3BzKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTczNi17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTczOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jOjc0MDpzdGF0aWMgdm9pZCBydHc4OV93b3dfZW50ZXJfZGVlcF9wcyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy03NDEte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy03NDQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYzo3NDU6c3RhdGljIHZvaWQgcnR3ODlfd293X2VudGVyX3BzKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTc0Ni17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTc0OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jOjc0OTpcXHRpZiAocnR3ODlfd293X21nZF9saW5rZWQocnR3ZGV2KSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTc1MC1cXHRcXHRydHc4OV9lbnRlcl9scHMocnR3ZGV2LCBydHd2aWZfbGluay1cXHUwMDNlcnR3dmlmLCBmYWxzZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYzo3NTE6XFx0ZWxzZSBpZiAocnR3ODlfd293X25vX2xpbmsocnR3ZGV2KSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTc1Mi1cXHRcXHRydHc4OV9md19oMmNfZndpcHMocnR3ZGV2LCBydHd2aWZfbGluaywgdHJ1ZSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTc1NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jOjc1NTpzdGF0aWMgdm9pZCBydHc4OV93b3dfbGVhdmVfcHMoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBib29sIGVuYWJsZV93b3cpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy03NTYte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy03NTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYzo3NTk6XFx0aWYgKHJ0dzg5X3dvd19tZ2RfbGlua2VkKHJ0d2RldikpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTc2MC1cXHRcXHRydHc4OV9sZWF2ZV9scHMocnR3ZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jOjc2MTpcXHR9IGVsc2UgaWYgKHJ0dzg5X3dvd19ub19saW5rKHJ0d2RldikpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTc2Mi1cXHRcXHRpZiAoZW5hYmxlX3dvdylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtNzY4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmM6NzY5OnN0YXRpYyBpbnQgcnR3ODlfd293X2NvbmZpZ19tYWMoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBib29sIGVuYWJsZV93b3cpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy03NzAte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy03NzUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYzo3NzY6c3RhdGljIHZvaWQgcnR3ODlfd293X3NldF9yeF9maWx0ZXIoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBib29sIGVuYWJsZSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTc3Ny17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTc4Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jOjc4ODpzdGF0aWMgdm9pZCBydHc4OV93b3dfc2hvd193YWtldXBfcmVhc29uKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTc4OS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTc5MS1cXHRzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqd293X3ZpZiA9IHJ0d3ZpZl9saW5rX3RvX3ZpZihydHd2aWZfbGluayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYzo3OTI6XFx0c3RydWN0IHJ0dzg5X3dvd19wYXJhbSAqcnR3X3dvdyA9IFxcdTAwMjZydHdkZXYtXFx1MDAzZXdvdztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jOjc5MzpcXHRzdHJ1Y3QgcnR3ODlfd293X2FvYWNfcmVwb3J0ICphb2FjX3JwdCA9IFxcdTAwMjZydHdfd293LVxcdTAwM2Vhb2FjX3JwdDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTc5NC1cXHRzdHJ1Y3QgY2ZnODAyMTFfd293bGFuX25kX2luZm8gbmRfaW5mbztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtODQ4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmM6ODQ5OnN0YXRpYyB2b2lkIHJ0dzg5X3dvd192aWZfaXRlcihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy04NTAtXFx0XFx0XFx0ICAgICAgIHN0cnVjdCBydHc4OV92aWZfbGluayAqcnR3dmlmX2xpbmspXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy04NTEte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmM6ODUyOlxcdHN0cnVjdCBydHc4OV93b3dfcGFyYW0gKnJ0d193b3cgPSBcXHUwMDI2cnR3ZGV2LVxcdTAwM2V3b3c7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy04NTMtXFx0c3RydWN0IGllZWU4MDIxMV92aWYgKnZpZiA9IHJ0d3ZpZl9saW5rX3RvX3ZpZihydHd2aWZfbGluayk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jPTkxND1zdGF0aWMgdTE2IHJ0dzg5X2NhbGNfY3JjKHU4ICpwZGF0YSwgaW50IGxlbmd0aClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtOTI1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmM6OTI2OnN0YXRpYyBpbnQgcnR3ODlfd293X3BhdHRlcm5fZ2V0X3R5cGUoc3RydWN0IHJ0dzg5X3ZpZl9saW5rICpydHd2aWZfbGluayxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jOjkyNzpcXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgcnR3ODlfd293X2NhbV9pbmZvICpydHdfcGF0dGVybixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTkyOC1cXHRcXHRcXHRcXHQgICAgICBjb25zdCB1OCAqcGF0dGVybiwgdTggZGFfbWFzaylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtOTU2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmM6OTU3OnN0YXRpYyBpbnQgcnR3ODlfd293X3BhdHRlcm5fZ2VuZXJhdGUoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtOTU4LVxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBydHc4OV92aWZfbGluayAqcnR3dmlmX2xpbmssXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy05NTktXFx0XFx0XFx0XFx0ICAgICAgY29uc3Qgc3RydWN0IGNmZzgwMjExX3BrdF9wYXR0ZXJuICpwa3RfcGF0dGVybixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jOjk2MDpcXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgcnR3ODlfd293X2NhbV9pbmZvICpydHdfcGF0dGVybilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTk2MS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTk3Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jOjk3NzpcXHRyZXQgPSBydHc4OV93b3dfcGF0dGVybl9nZXRfdHlwZShydHd2aWZfbGluaywgcnR3X3BhdHRlcm4sIHBhdHRlcm4sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy05NzgtXFx0XFx0XFx0XFx0XFx0IG1hc2tbMF0gXFx1MDAyNiBHRU5NQVNLKDUsIDApKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtMTAyOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jOjEwMzA6c3RhdGljIGludCBydHc4OV93b3dfcGFyc2VfcGF0dGVybnMoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtMTAzMS1cXHRcXHRcXHRcXHQgICAgc3RydWN0IHJ0dzg5X3ZpZl9saW5rICpydHd2aWZfbGluayxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtMTAzMy17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYzoxMDM0OlxcdHN0cnVjdCBydHc4OV93b3dfcGFyYW0gKnJ0d193b3cgPSBcXHUwMDI2cnR3ZGV2LVxcdTAwM2V3b3c7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYzoxMDM1OlxcdHN0cnVjdCBydHc4OV93b3dfY2FtX2luZm8gKnJ0d19wYXR0ZXJuID0gcnR3X3dvdy1cXHUwMDNlcGF0dGVybnM7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy0xMDM2LVxcdGludCBpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy0xMDQzLVxcdFxcdHJ0d19wYXR0ZXJuID0gXFx1MDAyNnJ0d193b3ctXFx1MDAzZXBhdHRlcm5zW2ldO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmM6MTA0NDpcXHRcXHRyZXQgPSBydHc4OV93b3dfcGF0dGVybl9nZW5lcmF0ZShydHdkZXYsIHJ0d3ZpZl9saW5rLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtMTA0NS1cXHRcXHRcXHRcXHRcXHRcXHQgXFx1MDAyNndvd2xhbi1cXHUwMDNlcGF0dGVybnNbaV0sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTEwNjMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYzoxMDY0OnN0YXRpYyB2b2lkIHJ0dzg5X3dvd19wYXR0ZXJuX2NsZWFyX2NhbShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy0xMDY1LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jOjEwNjY6XFx0c3RydWN0IHJ0dzg5X3dvd19wYXJhbSAqcnR3X3dvdyA9IFxcdTAwMjZydHdkZXYtXFx1MDAzZXdvdztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jOjEwNjc6XFx0c3RydWN0IHJ0dzg5X3dvd19jYW1faW5mbyAqcnR3X3BhdHRlcm4gPSBydHdfd293LVxcdTAwM2VwYXR0ZXJucztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTEwNjgtXFx0aW50IGkgPSAwO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy0xMDc2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmM6MTA3NzpzdGF0aWMgdm9pZCBydHc4OV93b3dfcGF0dGVybl93cml0ZShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy0xMDc4LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jOjEwNzk6XFx0c3RydWN0IHJ0dzg5X3dvd19wYXJhbSAqcnR3X3dvdyA9IFxcdTAwMjZydHdkZXYtXFx1MDAzZXdvdztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jOjEwODA6XFx0c3RydWN0IHJ0dzg5X3dvd19jYW1faW5mbyAqcnR3X3BhdHRlcm4gPSBydHdfd293LVxcdTAwM2VwYXR0ZXJucztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTEwODEtXFx0aW50IGk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTEwODYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYzoxMDg3OnN0YXRpYyB2b2lkIHJ0dzg5X3dvd19wYXR0ZXJuX2NsZWFyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTEwODgte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmM6MTA4OTpcXHRzdHJ1Y3QgcnR3ODlfd293X3BhcmFtICpydHdfd293ID0gXFx1MDAyNnJ0d2Rldi1cXHUwMDNld293O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtMTA5MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jOjEwOTE6XFx0cnR3ODlfd293X3BhdHRlcm5fY2xlYXJfY2FtKHJ0d2Rldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy0xMDkyLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy0xMDk2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmM6MTA5NzpzdGF0aWMgdm9pZCBydHc4OV93b3dfY2xlYXJfd2FrZXVwcyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy0xMDk4LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jOjEwOTk6XFx0c3RydWN0IHJ0dzg5X3dvd19wYXJhbSAqcnR3X3dvdyA9IFxcdTAwMjZydHdkZXYtXFx1MDAzZXdvdztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTExMDAtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTExMDYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYzoxMTA3OnN0YXRpYyB2b2lkIHJ0dzg5X3dvd19pbml0X3BubyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy0xMTA4LVxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgY2ZnODAyMTFfc2NoZWRfc2Nhbl9yZXF1ZXN0ICpuZF9jb25maWcpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy0xMTA5LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jOjExMTA6XFx0c3RydWN0IHJ0dzg5X3dvd19wYXJhbSAqcnR3X3dvdyA9IFxcdTAwMjZydHdkZXYtXFx1MDAzZXdvdztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTExMTEtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTExMjItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYzoxMTIzOnN0YXRpYyBpbnQgcnR3ODlfd293X3NldF93YWtldXBzKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTExMjQtXFx0XFx0XFx0XFx0IHN0cnVjdCBjZmc4MDIxMV93b3dsYW4gKndvd2xhbilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTExMjUte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmM6MTEyNjpcXHRzdHJ1Y3QgcnR3ODlfd293X3BhcmFtICpydHdfd293ID0gXFx1MDAyNnJ0d2Rldi1cXHUwMDNld293O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtMTEyNy1cXHRzdHJ1Y3QgcnR3ODlfdmlmX2xpbmsgKnJ0d3ZpZl9saW5rO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy0xMTM3LVxcdGlmICh3b3dsYW4tXFx1MDAzZW5kX2NvbmZpZylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jOjExMzg6XFx0XFx0cnR3ODlfd293X2luaXRfcG5vKHJ0d2Rldiwgd293bGFuLVxcdTAwM2VuZF9jb25maWcpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtMTEzOS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtMTE0NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jOjExNDU6XFx0XFx0cnR3ODlfd293X3ZpZl9pdGVyKHJ0d2RldiwgcnR3dmlmX2xpbmspO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtMTE0Ni1cXHR9XFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDIxOjQxOjE5LjU5NTc5NjA4MloiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo2MzQzMDkyNTEzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBLZXkgSGFuZGxpbmcgaW4gcnR3ODkgYW5kIG1hYzgwMjExKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBJJ20gc2VlaW5nIHRoYXQgYHJ0dzg5X3dvd19zdXNwZW5kYCBhbmQgYHJ0dzg5X3dvd19yZXN1bWVgIGFyZSBjYWxsZWQgd2l0aGluIHRoZSBgcnR3ODlfb3BzX3N1c3BlbmRgIGFuZCBgcnR3ODlfb3BzX3Jlc3VtZWAgZnVuY3Rpb25zLCB3aGljaCBhcmUgcGFydCBvZiBtYWM4MDIxMSdzIG9wZXJhdGlvbmFsIGZ1bmN0aW9ucy4gTXkgaW1tZWRpYXRlIGNvbmNlcm4gaXMgdGhlIGNvbnRleHQgaW4gd2hpY2ggdGhlc2Ugc3VzcGVuZC9yZXN1bWUgb3BlcmF0aW9ucyBhcmUgdHJpZ2dlcmVkIHdpdGhpbiB0aGUgbWFjODAyMTEgZnJhbWV3b3JrLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY2FsbGluZyBjaGFpbiBiZXR0ZXIsIHNvIEknbSB0aGlua2luZyBhYm91dCBob3cgc3VzcGVuZC9yZXN1bWUgaXMgaW5pdGlhdGVkIHdpdGhpbiBtYWM4MDIxMSBhbmQgY2ZnODAyMTEuIEl0IGNvdWxkIGJlIGZyb20gcG93ZXIgbWFuYWdlbWVudCBldmVudHMsIGxpa2UgUE0gb3IgV29MIGNvbW1hbmRzIHRocm91Z2ggbmw4MDIxMS4gSSBzaG91bGQgYWxzbyBjb25zaWRlciB0aGUgc3lzdGVtLWxldmVsIHN1c3BlbmQvcmVzdW1lIHRyaWdnZXJlZCBieSBgL3N5cy9wb3dlci9zdGF0ZWAsIHBtIGlvY3Rscywgb3Igc3lzdGVtIGNhbGxzLCBlc3BlY2lhbGx5IHdpdGggc3l6a2FsbGVyIHRlc3RzLlxuXG5Ob3csIHdoYXQgYWJvdXQgYHNlcl9yZXNldF9tYWNfYmluZGluZ2A/IFNFUiAoU3lzdGVtIEVycm9yIFJlY292ZXJ5KSBpbiB0aGUgcnR3ODkgZHJpdmVyIGlzIHRyaWdnZXJlZCBieSBjaGlwIGVycm9ycyBvciB0aW1lb3V0cywgc28gdGhpcyBpcyBpbXBvcnRhbnQgZnJvbSBhIHJlbGlhYmlsaXR5IHN0YW5kcG9pbnQuIEFuZCBpdCBsb29rcyBsaWtlIGBydHc4OV9jYW1fcmVzZXRfa2V5c2AgaXMgY2FsbGVkIGluIGBzZXJfcmVzZXRfbWFjX2JpbmRpbmdgIGFuZCBhbHNvIGBydHc4OV93b3dfc3dhcF9md2AuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgYHJ0dzg5X2NhbV9yZXNldF9rZXlzYCBhY3R1YWxseSAqZG9lcyouXG5cbk9rYXksIGl0IGNhbGxzIGBpZWVlODAyMTFfaXRlcl9rZXlzYCAob3IgdXNlZCB0byBjYWxsIGBpZWVlODAyMTFfaXRlcl9rZXlzX3JjdWAgcHJldmlvdXNseSkgd2l0aCBhIGN1c3RvbSBpdGVyYXRvciwgYHJ0dzg5X2NhbV9yZXNldF9rZXlfaXRlcmAuIFRoaXMgc3VnZ2VzdHMgc29tZSBraW5kIG9mIGtleSBtYW5hZ2VtZW50IG9yIGNsZWFyaW5nIG9wZXJhdGlvbiwgcHJvYmFibHkgZm9yIHNlY3VyaXR5IHJlYXNvbnMuIEFuZCBJIHNob3VsZCBub3RlIHRoYXQgYHdvdy5jYCBpcyBhbHNvIHVzaW5nIGBpZWVlODAyMTFfaXRlcl9rZXlzYCBpbiBgcnR3ODlfd293X2NvbnN0cnVjdF9rZXlfaW5mb2AgYW5kIGBydHc4OV93b3dfdXBkYXRlX2tleV9pbmZvYC5cblxuV2FpdCBhIG1pbnV0ZSwgYGllZWU4MDIxMV9pdGVyX2tleXNgIGhhcyBhIGBsb2NrZGVwX2Fzc2VydF93aXBoeShody1cdTAwM2V3aXBoeSk7YCBjYWxsLiBUaGlzIGlzIGtleSEgSSBuZWVkIHRvIGludmVzdGlnYXRlIHRoZSBpbXBsaWNhdGlvbnMgaGVyZS4gSXQncyBhdCBsaW5lIDEwMzMgb2YgYG5ldC9tYWM4MDIxMS9rZXkuY2AuIFNvIEkgc2hvdWxkIGNoZWNrIHRoZSBkZWZpbml0aW9uIG9mIGBsb2NrZGVwX2Fzc2VydF93aXBoeWAgaW4gYGluY2x1ZGUvbmV0L2NmZzgwMjExLmhgIG9yIGBpbmNsdWRlL25ldC9tYWM4MDIxMS5oYCB0byB1bmRlcnN0YW5kIGl0cyBwdXJwb3NlIGFuZCBob3cgaXQgcmVsYXRlcyB0byBsb2NraW5nIGFuZCBjb25jdXJyZW5jeS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDg0NjUsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2ODIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMjE6NDE6MjUuOTM4ODkyMTc1WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNTI0ODcxMzYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibG9ja2RlcF9hc3NlcnRfd2lwaHlcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiaW5jbHVkZS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9uZXQvY2ZnODAyMTEuaD02ODEwPWludCB3aXBoeV9yZWdpc3RlcihzdHJ1Y3Qgd2lwaHkgKndpcGh5KTtcXG4tLVxcbmluY2x1ZGUvbmV0L2NmZzgwMjExLmgtNjgxMi0vKiB0aGlzIGlzIGEgZGVmaW5lIGZvciBiZXR0ZXIgZXJyb3IgcmVwb3J0aW5nIChmaWxlL2xpbmUpICovXFxuaW5jbHVkZS9uZXQvY2ZnODAyMTEuaDo2ODEzOiNkZWZpbmUgbG9ja2RlcF9hc3NlcnRfd2lwaHkod2lwaHkpIGxvY2tkZXBfYXNzZXJ0X2hlbGQoXFx1MDAyNih3aXBoeSktXFx1MDAzZW10eClcXG5pbmNsdWRlL25ldC9jZmc4MDIxMS5oLTY4MTQtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDIxOjQxOjI2LjE5MTM4MzE2MVoiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyNjYwOTg3MTQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBSZWFsdGVrIFdpRmkgRHJpdmVyJ3MgTG9ja2luZyBTdHJhdGVneSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgUmVhbHRlayBkcml2ZXIgY29kZSBhbmQgaW1tZWRpYXRlbHkgSSBzZWUgYGxvY2tkZXBfYXNzZXJ0X3dpcGh5YC4gVGhhdCdzIHRlbGxpbmcgbWUsIHJpZ2h0IG9mZiB0aGUgYmF0LCB0aGF0IHNvbWV3aGVyZSBpbiB0aGlzIGxvZ2ljLCB0aGV5J3JlIGV4cGVjdGluZyB0aGUgYHdpcGh5LVx1MDAzZW10eGAgbXV0ZXggdG8gYmUgaGVsZC4gVGhlIHF1ZXN0aW9uIHRoYXQgaW1tZWRpYXRlbHkgc3ByaW5ncyB0byBteSBtaW5kIGlzOiB3aGVyZT8gU3BlY2lmaWNhbGx5LCBJJ20gdGhpbmtpbmcgYWJvdXQgdGhvc2UgY3JpdGljYWwgbGlmZWN5Y2xlIGZ1bmN0aW9uczogYHJ0dzg5X29wc19zdXNwZW5kYCBhbmQgYHJ0dzg5X29wc19yZXN1bWVgLiBBcmUgdGhleSBwcm9wZXJseSBhY3F1aXJpbmcgYW5kIHJlbGVhc2luZyB0aGF0IG11dGV4PyBBbmQgd2hhdCBhYm91dCB0aGUgU3lzdGVtIEVycm9yIFJlc2V0IChTRVIpIHNjZW5hcmlvLCB0cmlnZ2VyZWQgYnkgYHNlcl9yZXNldF9tYWNfYmluZGluZ2Ag4oCTIGRvZXMgdGhhdCBhZGhlcmUgdG8gdGhlIGxvY2sncyBjb25zdHJhaW50cz9cblxuVG8gZ2V0IGEgYmV0dGVyIGdyaXAgb24gaXQgSSB3YW50IHRvIHRyYWNlIHRoZSBjb2RlLiBNeSBiZXN0IGJldCBpcyB0byBjaGVjayBgc2VyX2wyX3Jlc2V0X3N0X3ByZV9oZGxgIGluIHRoZSBgc2VyLmNgIGZpbGUgb2YgdGhlIGRyaXZlci4gVGhhdCBzaG91bGQgZ2l2ZSBtZSB0aGUgcHJlY2lzZSBjb250ZXh0IG5lZWRlZCB0byBldmFsdWF0ZSB3aGV0aGVyIHRoZSBtdXRleCBpcyBjb3JyZWN0bHkgaGVsZCBvciBub3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ5OTEwLCJPdXRwdXRUb2tlbnMiOjQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTExLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDIxOjQxOjI4Ljg1MjM3NTYzWiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NDE2MDQ2NDIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic2VyX2wyX3Jlc2V0X3N0X3ByZV9oZGxcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3Nlci5jPTY0NT1zdGF0aWMgaW50IHJ0dzg5X3Nlcl9md19iYWNrdHJhY2VfZHVtcChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4ICpidWYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3Nlci5jLTY5NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3Nlci5jOjY5NTpzdGF0aWMgdm9pZCBzZXJfbDJfcmVzZXRfc3RfcHJlX2hkbChzdHJ1Y3QgcnR3ODlfc2VyICpzZXIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9zZXIuYy02OTYte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9zZXIuYz03Mjc9c3RhdGljIHZvaWQgc2VyX2wyX3Jlc2V0X3N0X2hkbChzdHJ1Y3QgcnR3ODlfc2VyICpzZXIsIHU4IGV2dClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvc2VyLmMtNzM0LVxcdFxcdHNlci1cXHUwMDNlc3dfY250LmwyKys7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9zZXIuYzo3MzU6XFx0XFx0c2VyX2wyX3Jlc2V0X3N0X3ByZV9oZGwoc2VyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3Nlci5jLTczNi1cXHRcXHR3aXBoeV91bmxvY2socnR3ZGV2LVxcdTAwM2Vody1cXHUwMDNld2lwaHkpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQyMTo0MToyOS4zOTM5ODYyOTJaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6Mjg3ODk3MTQ3NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGFuYWx5c2lzIG9mIHRoYXQgY29kZSBzbmlwcGV0OlxuXG4qKkRlYnVnZ2luZyBhIE5ldHdvcmsgRHJpdmVyIFJlc2V0KipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byBgc2VyX2wyX3Jlc2V0X3N0X2hkbGAsIGxpa2VseSB0cnlpbmcgdG8gdW5kZXJzdGFuZCBhIG5ldHdvcmsgcmVzZXQgc2VxdWVuY2UuIFRoZSBjb3JlIG9mIHRoaXMgc2VlbXMgdG8gYmU6IHdlJ3JlIGdyYWJiaW5nIHRoZSB3aXBoeSBsb2NrIHdpdGggYHdpcGh5X2xvY2socnR3ZGV2LVx1MDAzZWh3LVx1MDAzZXdpcGh5KTtgIChsb29rcyBsaWtlIGl0J3MgaGFwcGVuaW5nIHJpZ2h0IGJlZm9yZSBsaW5lIDczNSwgZ2l2ZSBvciB0YWtlIGEgZmV3IGxpbmVzKS4gQWZ0ZXIgdGhlIGxvY2sgaXMgYWNxdWlyZWQsIHRoZSBjYWxsIHByb2NlZWRzIHdpdGggYHNlcl9sMl9yZXNldF9zdF9wcmVfaGRsKHNlcik7YC4gU28sIHdoYXRldmVyIHByZS1oYW5kbGluZyBuZWVkcyB0byBoYXBwZW4gZm9yIHRoZSByZXNldCBpcyBlbmNhcHN1bGF0ZWQgdGhlcmUuIEZpbmFsbHksIHdlIG1ha2Ugc3VyZSB3ZSByZWxlYXNlIHRoZSBsb2NrIHdpdGggYHdpcGh5X3VubG9jayguLi4pYC4gVGhpcyBsb29rcyBsaWtlIHN0YW5kYXJkIGxvY2svdW5sb2NrIHByb2NlZHVyZSwgbGlrZWx5IHByb3RlY3Rpbmcgc2hhcmVkIGhhcmR3YXJlIG9yIGRhdGEgc3RydWN0dXJlcy5cblxuVG8gY29uZmlybSB0aGUgY29udGV4dCwgSSBzaG91bGQgcXVpY2tseSBqdW1wIG92ZXIgdG8gYHNlci5jYCBhbmQgdGFrZSBhIGxvb2sgYXJvdW5kIGxpbmUgNzMwLiBJJ20gYWZ0ZXIgdGhlIGZ1bGwgcGljdHVyZSBoZXJlLCBub3QganVzdCBvbmUgc21hbGwgcGllY2UuIFRoZSBzdXJyb3VuZGluZyBjb2RlIHdpbGwgcHJvdmlkZSB0aGUgY29udGV4dCBJIG5lZWQgdG8gcmVhbGx5IHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIGxvY2tpbmcgc2VxdWVuY2UgYW5kIGhvdyBpdCBmaXRzIGludG8gdGhlIG92ZXJhbGwgcmVzZXQgcHJvY2Vzcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTA2MzAsIk91dHB1dFRva2VucyI6NDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQyMTo0MTozMi4yNzI5NjU2MDhaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjg2OTUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvc2VyLmNcIixcbiAgXCJGaXJzdExpbmVcIjogNzI1LFxuICBcIkxpbmVDb3VudFwiOiAzMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNzI1OlxcdH1cXG4gNzI2OlxcdFxcbiA3Mjc6XFx0c3RhdGljIHZvaWQgc2VyX2wyX3Jlc2V0X3N0X2hkbChzdHJ1Y3QgcnR3ODlfc2VyICpzZXIsIHU4IGV2dClcXG4gNzI4OlxcdHtcXG4gNzI5OlxcdFxcdHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiA9IGNvbnRhaW5lcl9vZihzZXIsIHN0cnVjdCBydHc4OV9kZXYsIHNlcik7XFxuIDczMDpcXHRcXG4gNzMxOlxcdFxcdHN3aXRjaCAoZXZ0KSB7XFxuIDczMjpcXHRcXHRjYXNlIFNFUl9FVl9TVEFURV9JTjpcXG4gNzMzOlxcdFxcdFxcdHdpcGh5X2xvY2socnR3ZGV2LVxcdTAwM2Vody1cXHUwMDNld2lwaHkpO1xcbiA3MzQ6XFx0XFx0XFx0c2VyLVxcdTAwM2Vzd19jbnQubDIrKztcXG4gNzM1OlxcdFxcdFxcdHNlcl9sMl9yZXNldF9zdF9wcmVfaGRsKHNlcik7XFxuIDczNjpcXHRcXHRcXHR3aXBoeV91bmxvY2socnR3ZGV2LVxcdTAwM2Vody1cXHUwMDNld2lwaHkpO1xcbiA3Mzc6XFx0XFxuIDczODpcXHRcXHRcXHRpZWVlODAyMTFfcmVzdGFydF9odyhydHdkZXYtXFx1MDAzZWh3KTtcXG4gNzM5OlxcdFxcdFxcdHNlcl9zZXRfYWxhcm0oc2VyLCBTRVJfUkVDRkdfVElNRU9VVCwgU0VSX0VWX0wyX1JFQ0ZHX1RJTUVPVVQpO1xcbiA3NDA6XFx0XFx0XFx0YnJlYWs7XFxuIDc0MTpcXHRcXG4gNzQyOlxcdFxcdGNhc2UgU0VSX0VWX0wyX1JFQ0ZHX1RJTUVPVVQ6XFxuIDc0MzpcXHRcXHRcXHRydHc4OV9pbmZvKHJ0d2RldiwgXFxcIkVycjogc2VyIEwyIHJlLWNvbmZpZyB0aW1lb3V0XFxcXG5cXFwiKTtcXG4gNzQ0OlxcdFxcdFxcdGZhbGx0aHJvdWdoO1xcbiA3NDU6XFx0XFx0Y2FzZSBTRVJfRVZfTDJfUkVDRkdfRE9ORTpcXG4gNzQ2OlxcdFxcdFxcdHNlcl9zdGF0ZV9nb3RvKHNlciwgU0VSX0lETEVfU1QpO1xcbiA3NDc6XFx0XFx0XFx0YnJlYWs7XFxuIDc0ODpcXHRcXG4gNzQ5OlxcdFxcdGNhc2UgU0VSX0VWX1NUQVRFX09VVDpcXG4gNzUwOlxcdFxcdFxcdHNlcl9kZWxfYWxhcm0oc2VyKTtcXG4gNzUxOlxcdFxcdFxcdGJyZWFrO1xcbiA3NTI6XFx0XFxuIDc1MzpcXHRcXHRkZWZhdWx0OlxcbiA3NTQ6XFx0XFx0XFx0YnJlYWs7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDIxOjQxOjMyLjI3MzI1NjQxOFoiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo0MzE5MTIxODU0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy5cblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBgcnR3ODlfd293X3N3YXBfZndgIEZ1bmN0aW9uKipcblxuUmlnaHQsIG15IGZvY3VzIGlzIG5vdyBvbiBgcnR3ODlfd293X3N3YXBfZndgLiBUaGUgaW1tZWRpYXRlIHF1ZXN0aW9uIHRoYXQgc3ByaW5ncyB0byBtaW5kLCBhcyBhbHdheXMsIGlzIGFib3V0IHBvdGVudGlhbCBjb25jdXJyZW5jeSBpc3N1ZXMuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIHZlcmlmeSB3aGV0aGVyIHRoZSBgd2lwaHlgIGxvY2sgaXMgYXBwcm9wcmlhdGVseSBoZWxkIHdpdGhpbiB0aGF0IGZ1bmN0aW9uLiBFbnN1cmluZyB0aGF0IGxldmVsIG9mIHByb3RlY3Rpb24gaXMgcGFyYW1vdW50IHRvIGF2b2lkaW5nIHN1YnRsZSByYWNlIGNvbmRpdGlvbnMgdGhhdCBjb3VsZCBsZWFkIHRvIGludGVybWl0dGVudCBmYWlsdXJlcywgZXNwZWNpYWxseSBpbiBhIGRyaXZlciBkZWFsaW5nIHdpdGggZmlybXdhcmUgc3dhcHBpbmcsIHdoZXJlIHRpbWluZyBpcyBjcml0aWNhbC5cblxuU28sIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byB0cmFjayBkb3duIGFsbCB0aGUgY2FsbCBzaXRlcyBvZiBgcnR3ODlfd293X3N3YXBfZndgLiBVbmRlcnN0YW5kaW5nICp3aGVyZSogdGhpcyBmdW5jdGlvbiBpcyBpbnZva2VkIHdpbGwgZ2l2ZSBtZSB0aGUgY3J1Y2lhbCBjb250ZXh0IEkgbmVlZCB0byBhc3Nlc3MgaXRzIHRocmVhZCBzYWZldHkgYW5kIGRldGVybWluZSBpZiB0aGUgbG9ja2luZyBzdHJhdGVneSBpcyBhZGVxdWF0ZSBpbiBlYWNoIHNjZW5hcmlvLiBLbm93aW5nIHRoZSBjYWxsIGdyYXBoIHdpbGwgcmVhbGx5IGhlbHAgdG8gZGV0ZXJtaW5lIGlmIHdlIGFyZSBzZWVpbmcgdGhlIGV4cGVjdGVkIGJlaGF2aW91ci5cblxuXG4iLCJJbnB1dFRva2VucyI6NTE1MTQsIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDIxOjQxOjM2LjU5MjM4MjkwMloiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTEyODExNzc4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJ0dzg5X3dvd19zd2FwX2Z3XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODlcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYz0xMjQwPXN0YXRpYyBpbnQgcnR3ODlfd293X2NoZWNrX2Z3X3N0YXR1cyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGJvb2wgd293X2VuYWJsZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtMTI1NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jOjEyNTY6c3RhdGljIGludCBydHc4OV93b3dfc3dhcF9mdyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGJvb2wgd293KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtMTI1Ny17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jPTE3MDg9c3RhdGljIGludCBydHc4OV93b3dfZW5hYmxlKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtMTcyMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jOjE3MjI6XFx0cmV0ID0gcnR3ODlfd293X3N3YXBfZncocnR3ZGV2LCB0cnVlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTE3MjMtXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYz0xNzQ5PXN0YXRpYyBpbnQgcnR3ODlfd293X2Rpc2FibGUoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy0xNzY4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmM6MTc2OTpcXHRyZXQgPSBydHc4OV93b3dfc3dhcF9mdyhydHdkZXYsIGZhbHNlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTE3NzAtXFx0aWYgKHJldCkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQyMTo0MTozNi43MDUyMDMyNloiLCJTZXEiOjMzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo1MzEzMzgyODc5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIFJlYWx0ZWsgcnR3ODkgRHJpdmVyJ3MgRnV6emluZyBQb3RlbnRpYWwqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgdGhvdWdodCB3YXMgdG8gcXVpY2tseSBhc3Nlc3MgYHJ0dzg5X3dvd19lbmFibGVgIGFuZCBgcnR3ODlfd293X2Rpc2FibGVgIGFuZCBob3cgdGhleSBpbnRlcmFjdCB3aXRoIHN1c3BlbmQvcmVzdW1lLCBub3RpbmcgdGhhdCBgd2lwaHktXHUwMDNlbXR4YCBpcyBoZWxkIGR1cmluZyB0aGVzZSBvcGVyYXRpb25zIGluIHRoZSBtYWM4MDIxMSBmcmFtZXdvcmsuIEJ1dCwgdGhhdCdzIG5vdCB0aGUgY3J1Y2lhbCBxdWVzdGlvbiBoZXJlLiBUaGUgcmVhbCBxdWVzdGlvbiBpcyB3aGV0aGVyIHN5emthbGxlciAqY2FuKiBnZXQgYXQgaXQuXG5cbkZpcnN0LCBsZXQncyBiZSBtZXRob2RpY2FsLiBXZSBuZWVkIHRvIGV2YWx1YXRlIGlmIHJ0dzg5IGlzICpyZWFjaGFibGUqIHZpYSBzeXprYWxsZXIuIFRoZSBkb2N1bWVudGF0aW9uIHByb3ZpZGVzIGNsZWFyIG5lZ2F0aXZlIGFuZCBwb3NpdGl2ZSBjcml0ZXJpYS4gV2UgbmVlZCB0byBhdm9pZCB0aG9zZSBcInN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZVwiIGhhcmR3YXJlIGRyaXZlcnMgc3VjaCBhcyB0aG9zZSB0aGF0IHJlcXVpcmUgc3BlY2lmaWMgQVNJQ3Mgb3IgUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gYSBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50LiBBbHNvLCB3ZSBuZWVkIHRvIHN0YXkgYXdheSBmcm9tIHRoZSBkcml2ZXJzIHRoYXQgYXJlIHRyaWdnZXJlZCBvbmx5IGR1cmluZyB1bnBsdWcgZXZlbnRzLiBPbiB0aGUgZmxpcCBzaWRlLCB3ZSB3YW50IHRoaW5ncyB0aGF0IGFyZSBlYXNpbHkgYWNjZXNzaWJsZSwgc3VjaCBhcyB0aHJvdWdoIHZpcnR1YWwgYnVzZXMgbGlrZSB2aXJ0aW8sIFVTQiBnYWRnZXQsIG5ldGxpbmssIG9yIHNvY2tldHMuXG5cbkFoLCB3YWl0LiAqVGhhdCdzKiB0aGUga2V5LiBJcyBydHc4OSBhIFVTQiBkcml2ZXI/IExldCdzIGNoZWNrLiBZZXMhIExvb2tpbmcgd2l0aGluIHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9gIGRpcmVjdG9yeSwgdGhlcmUgYXJlIGluZGVlZCBVU0IgZHJpdmVyIG1vZHVsZXM6IFJUVzg5Xzg4NTFCVSwgUlRXODlfODg1MkFVLCBSVFc4OV84ODUyQlUsIFJUVzg5Xzg4NTJDVSwgYW5kIFJUVzg5Xzg5MjJBVS4gVGhlc2UgbW9kdWxlcyByZWdpc3RlciBhIGB1c2JfZHJpdmVyYCB3aXRoIFVTQiBJRHMuIFRoaXMgaXMgcHJvbWlzaW5nLlxuXG5Ob3csIGRvZXMgc3l6a2FsbGVyICpzdXBwb3J0KiBmdXp6aW5nIFVTQiBkcml2ZXJzPyBJdCBkb2VzISBSZW1lbWJlciBgc3l6X3VzYl9jb25uZWN0YCwgYHN5el91c2JfY29udHJvbF9pb2AsIGFuZCBgc3l6X3VzYl9lcF93cml0ZWA/IFN5emthbGxlciB1c2VzIHRoZSBVU0IgUkFXIGdhZGdldCwgYSBkdW1teSBIQ0QsIGFuZCBVU0IgZW11bGF0aW9uIHRvIGludGVyYWN0IHdpdGggVVNCIGRldmljZXMuXG5cblNvLCB3aGVuIHN5emthbGxlciBlbXVsYXRlcyBhIFVTQiBkZXZpY2UgdGhhdCBtYXRjaGVzIFJlYWx0ZWsncyB2ZW5kb3IvZGV2aWNlIElELCBgcnR3ODlfdXNiX3Byb2JlYCB3aWxsIGJlIGNhbGxlZC4gTm93IHdlIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIHRoaXMgb3BlbnMgdGhlIGRvb3IgdG8gZnV6emluZyB0aGUgUmVhbHRlayBkcml2ZXIuIFRoaXMgaXMgdGhlIGNydWNpYWwgcG9pbnQhIERvZXMgYHJ0dzg5X3VzYl9wcm9iZWAgbG9hZCBmaXJtd2FyZT8gRG9lcyBpdCB0YWxrIHRvIGhhcmR3YXJlIGRpcmVjdGx5PyBMZXQncyBsb29rIGF0IGBydHc4OV9jb3JlX2luaXRgLCBgcnR3ODlfY29yZV9yZWdpc3RlcmAsIGFuZCB0aGUgZmlybXdhcmUgbG9hZGluZyBwcm9jZXNzIHdpdGhpbiBgcnR3ODlgLiBJZiB0aGVyZSdzIGZpcm13YXJlIGludm9sdmVkLCB0aGF0J3MgYSB2ZWN0b3IuIElmIHdlIGNhbiByZWFjaCB0aGUgaGFyZHdhcmUgdGhyb3VnaCBhIFwiZnV6emFibGVcIiBwYXRod2F5IHZpYSB0aGUgVVNCIGludGVyZmFjZSwgdGhlbiB3ZSBoYXZlIGEgcG9zaXRpdmUgY2FuZGlkYXRlLiBXZSBuZWVkIHRvIGFuYWx5emUgdGhpcyBtb3JlIGNsb3NlbHksIGJ1dCB0aGUgaW5pdGlhbCBzaWducyBsb29rIHZlcnkgZ29vZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTIyNjcsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NDgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMjE6NDE6NDIuMDE4NTg5NjI5WiIsIlNlcSI6MzQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MDIwMTUyOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJyZXF1ZXN0X2Zpcm13YXJlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODlcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jPTk5ND1ydHc4OV9lYXJseV9md19mZWF0dXJlX3JlY29nbml6ZShzdHJ1Y3QgZGV2aWNlICpkZXZpY2UsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTAxMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM6MTAxMTpcXHRcXHRyZXQgPSByZXF1ZXN0X2Zpcm13YXJlKFxcdTAwMjZmaXJtd2FyZSwgZndfbmFtZSwgZGV2aWNlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTAxMi1cXHRcXHRpZiAoIXJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jPTIwNjk9c3RhdGljIGludCBydHc4OV9sb2FkX2Zpcm13YXJlX3JlcShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMjA4NC1cXHRlbHNlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jOjIwODU6XFx0XFx0cmV0ID0gcmVxdWVzdF9maXJtd2FyZShcXHUwMDI2cmVxLVxcdTAwM2VmaXJtd2FyZSwgZndfbmFtZSwgcnR3ZGV2LVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0yMDg2LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQyMTo0MTo0Mi4wOTg3OTg0MTdaIiwiU2VxIjozNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjQwOTE4NzM5MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbnZlc3RpZ2F0aW5nIHRoZSBydHc4OSBXaS1GaSBEcml2ZXIqKlxuXG5BbHJpZ2h0LCBsZXQncyBkaXZlIGludG8gdGhpcyBgcnR3ODlgIGRyaXZlci4gU2luY2UgSSBzZWUgYHJ0dzg5YCwgbXkgZmlyc3QgdGhvdWdodCBpcyBXaS1GaSwgYW5kIHRoZSBtZW50aW9uIG9mIFVTQiBpbnRlcmZhY2VzIGNvbmZpcm1zIHRoaXMuIFRoZSBpbW1lZGlhdGUgZ29hbCBpcyB0byB1bmRlcnN0YW5kIGl0cyBidWlsZCBzdGF0dXMgYW5kIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gTXkgcHJvY2VzcyB3aWxsIGJlIHRvIHN0YXJ0IGJ5IGV4YW1pbmluZyB0aGUgS2NvbmZpZyBmaWxlcywgc3BlY2lmaWNhbGx5IGxvb2tpbmcgZm9yIHRob3NlIG5hbWVkIGFmdGVyIHRoZSBkcml2ZXIgZmFtaWx5OiBgUlRXODlgLCBgUlRXODlfQ09SRWAsIGBSVFc4OV9QQ0lgLCBgUlRXODlfVVNCYCwgYW5kIHNvIG9uLiBVbmRlcnN0YW5kaW5nIHRoZXNlIHdpbGwgbGF5IHRoZSBncm91bmR3b3JrIGZvciB1bmRlcnN0YW5kaW5nIHRoZSBzdHJ1Y3R1cmUgb2YgdGhlIHJlbGV2YW50IGZlYXR1cmVzLiBUaGUgbGlrZWx5IGxvY2F0aW9uIGZvciB0aGVzZSBLY29uZmlnIGVudHJpZXMgaXMgdGhlIGRpcmVjdG9yeSByZWxhdGVkIHRvIHRoZSBkcml2ZXIsIGFuZCB0aHVzIHRoZSBwYXRoIGBkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWdgIHdpbGwgcHJvdmlkZSB0aGUgaW5pdGlhbCBhbmQgbW9zdCBjb21wcmVoZW5zaXZlIG92ZXJ2aWV3LlxuXG5cbiIsIklucHV0VG9rZW5zIjo1Mzg2NiwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQyMTo0MTo0NC41MDc5ODkyMjFaIiwiU2VxIjozNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ2NDgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiA4NVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgT1IgQlNELTMtQ2xhdXNlXFxuICAgMjpcXHRtZW51Y29uZmlnIFJUVzg5XFxuICAgMzpcXHRcXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4MDIuMTFheCB3aXJlbGVzcyBjaGlwcyBzdXBwb3J0XFxcIlxcbiAgIDQ6XFx0XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxcbiAgIDU6XFx0XFx0aGVscFxcbiAgIDY6XFx0XFx0ICBUaGlzIG1vZHVsZSBhZGRzIHN1cHBvcnQgZm9yIG1hYzgwMjExLWJhc2VkIHdpcmVsZXNzIGRyaXZlcnMgdGhhdFxcbiAgIDc6XFx0XFx0ICBlbmFibGVzIFJlYWx0ZWsgSUVFRSA4MDIuMTFheCB3aXJlbGVzcyBjaGlwc2V0cy5cXG4gICA4OlxcdFxcbiAgIDk6XFx0XFx0ICBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGEgbW9kdWxlLCBpdCdsbCBiZSBjYWxsZWQgcnR3ODkuXFxuICAxMDpcXHRcXG4gIDExOlxcdGlmIFJUVzg5XFxuICAxMjpcXHRcXG4gIDEzOlxcdGNvbmZpZyBSVFc4OV9DT1JFXFxuICAxNDpcXHRcXHR0cmlzdGF0ZVxcbiAgMTU6XFx0XFx0c2VsZWN0IFdBTlRfREVWX0NPUkVEVU1QXFxuICAxNjpcXHRcXG4gIDE3OlxcdGNvbmZpZyBSVFc4OV9QQ0lcXG4gIDE4OlxcdFxcdHRyaXN0YXRlXFxuICAxOTpcXHRcXG4gIDIwOlxcdGNvbmZpZyBSVFc4OV9VU0JcXG4gIDIxOlxcdFxcdHRyaXN0YXRlXFxuICAyMjpcXHRcXG4gIDIzOlxcdGNvbmZpZyBSVFc4OV84ODUxQlxcbiAgMjQ6XFx0XFx0dHJpc3RhdGVcXG4gIDI1OlxcdFxcbiAgMjY6XFx0Y29uZmlnIFJUVzg5Xzg4NTJBXFxuICAyNzpcXHRcXHR0cmlzdGF0ZVxcbiAgMjg6XFx0XFxuICAyOTpcXHRjb25maWcgUlRXODlfODg1MkJfQ09NTU9OXFxuICAzMDpcXHRcXHR0cmlzdGF0ZVxcbiAgMzE6XFx0XFxuICAzMjpcXHRjb25maWcgUlRXODlfODg1MkJcXG4gIDMzOlxcdFxcdHRyaXN0YXRlXFxuICAzNDpcXHRcXG4gIDM1OlxcdGNvbmZpZyBSVFc4OV84ODUyQlRcXG4gIDM2OlxcdFxcdHRyaXN0YXRlXFxuICAzNzpcXHRcXG4gIDM4OlxcdGNvbmZpZyBSVFc4OV84ODUyQ1xcbiAgMzk6XFx0XFx0dHJpc3RhdGVcXG4gIDQwOlxcdFxcbiAgNDE6XFx0Y29uZmlnIFJUVzg5Xzg5MjJBXFxuICA0MjpcXHRcXHR0cmlzdGF0ZVxcbiAgNDM6XFx0XFxuICA0NDpcXHRjb25maWcgUlRXODlfODkyMkRcXG4gIDQ1OlxcdFxcdHRyaXN0YXRlXFxuICA0NjpcXHRcXG4gIDQ3OlxcdGNvbmZpZyBSVFc4OV84ODUxQkVcXG4gIDQ4OlxcdFxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIDg4NTFCRSBQQ0kgd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNikgYWRhcHRlclxcXCJcXG4gIDQ5OlxcdFxcdGRlcGVuZHMgb24gUENJXFxuICA1MDpcXHRcXHRzZWxlY3QgUlRXODlfQ09SRVxcbiAgNTE6XFx0XFx0c2VsZWN0IFJUVzg5X1BDSVxcbiAgNTI6XFx0XFx0c2VsZWN0IFJUVzg5Xzg4NTFCXFxuICA1MzpcXHRcXHRoZWxwXFxuICA1NDpcXHRcXHQgIFNlbGVjdCB0aGlzIG9wdGlvbiB3aWxsIGVuYWJsZSBzdXBwb3J0IGZvciA4ODUxQkUgY2hpcHNldFxcbiAgNTU6XFx0XFxuICA1NjpcXHRcXHQgIDgwMi4xMWF4IFBDSWUgd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNikgYWRhcHRlclxcbiAgNTc6XFx0XFxuICA1ODpcXHRjb25maWcgUlRXODlfODg1MUJVXFxuICA1OTpcXHRcXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4ODUxQlUgVVNCIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDYpIGFkYXB0ZXJcXFwiXFxuICA2MDpcXHRcXHRkZXBlbmRzIG9uIFVTQlxcbiAgNjE6XFx0XFx0c2VsZWN0IFJUVzg5X0NPUkVcXG4gIDYyOlxcdFxcdHNlbGVjdCBSVFc4OV9VU0JcXG4gIDYzOlxcdFxcdHNlbGVjdCBSVFc4OV84ODUxQlxcbiAgNjQ6XFx0XFx0aGVscFxcbiAgNjU6XFx0XFx0ICBTZWxlY3QgdGhpcyBvcHRpb24gd2lsbCBlbmFibGUgc3VwcG9ydCBmb3IgODg1MUJVIGNoaXBzZXRcXG4gIDY2OlxcdFxcbiAgNjc6XFx0XFx0ICA4MDIuMTFheCBVU0Igd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNikgYWRhcHRlclxcbiAgNjg6XFx0XFxuICA2OTpcXHRjb25maWcgUlRXODlfODg1MkFFXFxuICA3MDpcXHRcXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4ODUyQUUgUENJIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDYpIGFkYXB0ZXJcXFwiXFxuICA3MTpcXHRcXHRkZXBlbmRzIG9uIFBDSVxcbiAgNzI6XFx0XFx0c2VsZWN0IFJUVzg5X0NPUkVcXG4gIDczOlxcdFxcdHNlbGVjdCBSVFc4OV9QQ0lcXG4gIDc0OlxcdFxcdHNlbGVjdCBSVFc4OV84ODUyQVxcbiAgNzU6XFx0XFx0aGVscFxcbiAgNzY6XFx0XFx0ICBTZWxlY3QgdGhpcyBvcHRpb24gd2lsbCBlbmFibGUgc3VwcG9ydCBmb3IgODg1MkFFIGNoaXBzZXRcXG4gIDc3OlxcdFxcbiAgNzg6XFx0XFx0ICA4MDIuMTFheCBQQ0llIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDYpIGFkYXB0ZXJcXG4gIDc5OlxcdFxcbiAgODA6XFx0Y29uZmlnIFJUVzg5Xzg4NTJBVVxcbiAgODE6XFx0XFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgODg1MkFVIFVTQiB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2KSBhZGFwdGVyXFxcIlxcbiAgODI6XFx0XFx0ZGVwZW5kcyBvbiBVU0JcXG4gIDgzOlxcdFxcdHNlbGVjdCBSVFc4OV9DT1JFXFxuICA4NDpcXHRcXHRzZWxlY3QgUlRXODlfVVNCXFxuICA4NTpcXHRcXHRzZWxlY3QgUlRXODlfODg1MkFcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMjE6NDE6NDQuNTA4MTM3OTNaIiwiU2VxIjozNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6ODE2MjgyNTEwNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIEFuYWx5c2lzIGZvciBSZWFsdGVrIFJUVzg5IERyaXZlciBLZXkgSXRlcmF0aW9uIENoYW5nZXMqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBJIHNlZSBhIGRlcGVuZGVuY3kgc3RydWN0dXJlOiBgUlRXODlgIHJlbGllcyBvbiBgTUFDODAyMTFgLiBTcGVjaWZpYyBSVFc4OSBVU0IgZHJpdmVycywgc3VjaCBhcyBgUlRXODlfODg1MUJVYCwgZGVwZW5kIG9uIGBVU0JgIGFuZCBzZWxlY3QgYFJUVzg5X0NPUkVgIGFuZCBgUlRXODlfVVNCYC4gIFRoZXJlJ3MgYWxzbyBhIFBDSSB2YXJpYW50LCBgUlRXODlfODg1MUJFYCwgdGhhdCBkZXBlbmRzIG9uIGBQQ0lgIGFuZCBhbHNvIHNlbGVjdHMgYFJUVzg5X0NPUkVgLlxuXG5Ob3csIHRoZSBjb3JlIG9mIHRoZSBtYXR0ZXI6IEknbSBsb29raW5nIGF0IGNoYW5nZXMgaW4gYGNhbS5jYCBhbmQgYHdvdy5jYC4gIFNwZWNpZmljYWxseSwgdGhlIGNvZGUgaXMgdHJhbnNpdGlvbmluZyBmcm9tIGBpZWVlODAyMTFfaXRlcl9rZXlzX3JjdWAgdG8gYGllZWU4MDIxMV9pdGVyX2tleXNgIHdpdGhpbiB0aGUgYHJ0dzg5X2NhbV9yZXNldF9rZXlzYCwgYHJ0dzg5X3dvd19jb25zdHJ1Y3Rfa2V5X2luZm9gLCBhbmQgYHJ0dzg5X3dvd191cGRhdGVfa2V5X2luZm9gIGZ1bmN0aW9ucy4gIFRoaXMgY2hhbmdlIHNlZW1zIHRvIGluZGljYXRlIGEgc2hpZnQgaW4gaG93IGtleSBpdGVyYXRpb24gaXMgaGFuZGxlZC4gVGhlIGNyaXRpY2FsIHBvaW50IGlzIHRoYXQgYGllZWU4MDIxMV9pdGVyX2tleXNgIGNvbnRhaW5zIGBsb2NrZGVwX2Fzc2VydF93aXBoeShody1cdTAwM2V3aXBoeSlgLCBtZWFuaW5nIHdlJ3JlIGludHJvZHVjaW5nIG9yIHRpZ2h0ZW5pbmcgbG9ja2luZyByZXF1aXJlbWVudHMgcmVsYXRlZCB0byB0aGUgd2lwaHkuXG5cblRoaXMgaXMgYSByZWQgZmxhZywgcmlnaHQ/ICBUaGUgZG9jdW1lbnRhdGlvbiBjbGVhcmx5IHN0YXRlcyB0aGF0IGNoYW5nZXMgaW50cm9kdWNpbmcgb3IgbW9kaWZ5aW5nIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgaW4gcmVhY2hhYmxlIGNvZGUgKm11c3QqIGJlIGZ1enplZCwgcGFydGljdWxhcmx5IGZvciBkcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMsIHN1Y2ggYXMgVVNCIGdhZGdldC4gIENydWNpYWxseSwgdGhlIFJUVzg5IFVTQiBkcml2ZXJzIChgcnR3ODlfODg1MWJ1YCwgYHJ0dzg5Xzg4NTJhdWAsIGBydHc4OV84ODUyYnVgLCBgcnR3ODlfODg1MmN1YCwgYW5kIGBydHc4OV84OTIyYXVgKSAqYXJlKiByZWFjaGFibGUgdmlhIFVTQiBnYWRnZXQgZW11bGF0aW9uIHdpdGhpbiBTeXprYWxsZXIuICBGdXJ0aGVybW9yZSwgb3BlcmF0aW9ucyBsaWtlIG5sODAyMTEgbmV0bGluayBjb21tYW5kcywgbWFjODAyMTEgaW50ZXJhY3Rpb25zLCBzdXNwZW5kL3Jlc3VtZSBjeWNsZXMsIGFuZCBTRVIgZXJyb3IgaGFuZGxpbmcgY2FuIGV4ZXJjaXNlIHRoZSB3b3dsYW4gYW5kIENBTSBrZXkgcmVzZXQgcm91dGluZXMuICBUaGVzZSBhcmUgYWxsIGF2ZW51ZXMgd2hlcmUgdGhpcyBjaGFuZ2UgaW4ga2V5IGl0ZXJhdGlvbiBjb3VsZCBpbnRyb2R1Y2UgbmV3LCBvciB1bmNvdmVyIGV4aXN0aW5nLCByYWNlIGNvbmRpdGlvbnMgb3IgbG9ja2luZyBpc3N1ZXMuXG5cblRoZSBtYWluIHN5bWJvbHMgSSBuZWVkIHRvIGZvY3VzIG9uIGFyZTogYHJ0dzg5X2NhbV9yZXNldF9rZXlzYCwgYHJ0dzg5X3dvd19jb25zdHJ1Y3Rfa2V5X2luZm9gLCBhbmQgYHJ0dzg5X3dvd191cGRhdGVfa2V5X2luZm9gLCB3aGljaCBhcmUgZGlyZWN0bHkgbW9kaWZpZWQgYnkgdGhlIHBhdGNoLiBBZGRpdGlvbmFsIHN5bWJvbHMgb2YgaW50ZXJlc3Q6IGBydHc4OV93b3dfc3VzcGVuZGAsIGBydHc4OV93b3dfcmVzdW1lYCwgYW5kIGBzZXJfcmVzZXRfbWFjX2JpbmRpbmdgLCB3aGljaCBhcmUgcG90ZW50aWFsbHkgaW5kaXJlY3RseSBhZmZlY3RlZCBieSB0aGVzZSBjaGFuZ2VzLlxuXG5UbyBlbnN1cmUgdGhpcyBpcyB0ZXN0YWJsZSwgSSdsbCBuZWVkIHRoZXNlIGNvbmZpZ3VyYXRpb25zIGVuYWJsZWQ6IGBSVFc4OWAsIGBSVFc4OV9DT1JFYCwgYFJUVzg5X1VTQmAsIGFuZCBhIHNwZWNpZmljIFVTQiBkcml2ZXIgbGlrZSBgUlRXODlfODg1MkFVYCBhbG9uZyB3aXRoIGBNQUM4MDIxMWAuXG5cblRvIHN1bW1hcml6ZTogVGhpcyBwYXRjaCByZXF1aXJlcyBmdXp6aW5nIGR1ZSB0byB0aGUgaW50cm9kdWN0aW9uIG9mIHdpcGh5IGxvY2tpbmcgYXNzZXJ0aW9ucyBkdXJpbmcga2V5IGl0ZXJhdGlvbiwgcG90ZW50aWFsbHkgYWZmZWN0aW5nIHN5bmNocm9uaWNpdHkgd2l0aGluIHdvd2xhbiBhbmQgQ0FNIGtleSByZXNldCByb3V0aW5lcyBpbiBhIFVTQiBhY2Nlc3NpYmxlIHdpcmVsZXNzIGRyaXZlci4gSSdtIGNhbGxpbmcgaXQ6IHdvcnRoIGZ1enppbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU1MzMxLCJPdXRwdXRUb2tlbnMiOjIyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2MjEsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQyMTo0MTo1Mi42NzA5NjU2OTZaIiwiU2VxIjozOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTcyOTg5MzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlJUVzg5XCIsXG4gICAgXCJSVFc4OV9DT1JFXCIsXG4gICAgXCJSVFc4OV9VU0JcIixcbiAgICBcIlJUVzg5Xzg4NTJBVVwiLFxuICAgIFwiTUFDODAyMTFcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJydHc4OV9jYW1fcmVzZXRfa2V5c1wiLFxuICAgIFwicnR3ODlfd293X2NvbnN0cnVjdF9rZXlfaW5mb1wiLFxuICAgIFwicnR3ODlfd293X3VwZGF0ZV9rZXlfaW5mb1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlcGxhY2VzIFJDVS1iYXNlZCBrZXkgaXRlcmF0aW9uIChpZWVlODAyMTFfaXRlcl9rZXlzX3JjdSkgd2l0aCBpZWVlODAyMTFfaXRlcl9rZXlzIGluIHJ0dzg5IENBTSBhbmQgV29XTEFOIHBhdGhzLiBpZWVlODAyMTFfaXRlcl9rZXlzIGVuZm9yY2VzIGEgd2lwaHkgbXV0ZXggYXNzZXJ0aW9uIChsb2NrZGVwX2Fzc2VydF93aXBoeSksIGNoYW5naW5nIGxvY2tpbmcgYW5kIHN5bmNocm9uaXphdGlvbiBhc3N1bXB0aW9ucyBkdXJpbmcga2V5IHJlc2V0IGFuZCBXb1dMQU4ga2V5IGNvbnN0cnVjdGlvbi91cGRhdGVzLiBUaGUgZHJpdmVyIGlzIGFjY2Vzc2libGUgdmlhIFVTQiBnYWRnZXQgZW11bGF0aW9uIGFuZCB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlJUVzg5XCIsXG4gICAgXCJSVFc4OV9DT1JFXCIsXG4gICAgXCJSVFc4OV9VU0JcIixcbiAgICBcIlJUVzg5Xzg4NTJBVVwiLFxuICAgIFwiTUFDODAyMTFcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJydHc4OV9jYW1fcmVzZXRfa2V5c1wiLFxuICAgIFwicnR3ODlfd293X2NvbnN0cnVjdF9rZXlfaW5mb1wiLFxuICAgIFwicnR3ODlfd293X3VwZGF0ZV9rZXlfaW5mb1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlcGxhY2VzIFJDVS1iYXNlZCBrZXkgaXRlcmF0aW9uIChpZWVlODAyMTFfaXRlcl9rZXlzX3JjdSkgd2l0aCBpZWVlODAyMTFfaXRlcl9rZXlzIGluIHJ0dzg5IENBTSBhbmQgV29XTEFOIHBhdGhzLiBpZWVlODAyMTFfaXRlcl9rZXlzIGVuZm9yY2VzIGEgd2lwaHkgbXV0ZXggYXNzZXJ0aW9uIChsb2NrZGVwX2Fzc2VydF93aXBoeSksIGNoYW5naW5nIGxvY2tpbmcgYW5kIHN5bmNocm9uaXphdGlvbiBhc3N1bXB0aW9ucyBkdXJpbmcga2V5IHJlc2V0IGFuZCBXb1dMQU4ga2V5IGNvbnN0cnVjdGlvbi91cGRhdGVzLiBUaGUgZHJpdmVyIGlzIGFjY2Vzc2libGUgdmlhIFVTQiBnYWRnZXQgZW11bGF0aW9uIGFuZCB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQyMTo0MTo1Mi43ODgyNzE3MzRaIiwiU2VxIjozOSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI2MzMyNzE1MDA3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMjE6NDE6NTIuNzg4NzU2MzY0WiIsIlNlcSI6NDAsIk5lc3RpbmciOjIsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6MjYzMzIyMjQ0NzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlcGxhY2VzIGByY3VfcmVhZF9sb2NrKClgIC8gYGllZWU4MDIxMV9pdGVyX2tleXNfcmN1KClgIHdpdGggYGllZWU4MDIxMV9pdGVyX2tleXMoKWAgaW4gdGhlIFJlYWx0ZWsgcnR3ODkgZHJpdmVyIChgcnR3ODlfY2FtX3Jlc2V0X2tleXNgLCBgcnR3ODlfd293X2NvbnN0cnVjdF9rZXlfaW5mb2AsIGFuZCBgcnR3ODlfd293X3VwZGF0ZV9rZXlfaW5mb2ApLlxcblxcblRoaXMgY2hhbmdlIHB1cmVseSBhZGp1c3RzIGhvdyB0aGUgZHJpdmVyIGl0ZXJhdGVzIG92ZXIgbWFjODAyMTEga2V5cywgcmVseWluZyBvbiB0aGUgY2FsbGVyIGhvbGRpbmcgdGhlIHdpcGh5IGxvY2sgKGBsb2NrZGVwX2Fzc2VydF93aXBoeWApIGluc3RlYWQgb2YgZW50ZXJpbmcgYW4gUkNVIHJlYWQtc2lkZSBjcml0aWNhbCBzZWN0aW9uLlxcblxcblRoZXJlIGFyZSBubyBuZXcgbWVtb3J5IGFsbG9jYXRpb25zLCB1bmluaXRpYWxpemVkIHZhcmlhYmxlIGFjY2Vzc2VzLCBpbmZvLWxlYWtzIHRvIHVzZXJzcGFjZSwgb3IgYWx0ZXJlZCBidWZmZXIgYm91bmRzLiBBbnkgcG90ZW50aWFsIGxvY2tpbmcgaXNzdWVzIChzdWNoIGFzIG1pc3Npbmcgd2lwaHkgbG9jaykgb3Igc3luY2hyb25pemF0aW9uL21lbW9yeSBzYWZldHkgYnVncyAoc3VjaCBhcyBjb25jdXJyZW50IGxpc3QgYWNjZXNzIG9yIHVzZS1hZnRlci1mcmVlKSBhcmUgZGV0ZWN0YWJsZSBieSBMT0NLREVQIGFuZCBLQVNBTi4gVGhlcmVmb3JlLCBLTVNBTiBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiVGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjRcblxuRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNDg5NjcyNjEyMmE0OWMyZjY5NzRkNzJkZmNiNmVjMzJkNDE0ZTc4Y1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgU2VwIDggMjE6NDA6MjggMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NhbS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jYW0uY1xuaW5kZXggN2M2MmVjZTEzN2QwMS4uMjJmMjFhMDRhOTZkMiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY2FtLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY2FtLmNcbkBAIC02MDUsOSArNjA1LDcgQEAgdm9pZCBydHc4OV9jYW1fZGVpbml0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldiwgc3RydWN0IHJ0dzg5X3ZpZl9saW5rICpydHd2aWZfbGlcbiBcbiB2b2lkIHJ0dzg5X2NhbV9yZXNldF9rZXlzKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcbiB7XG4tXHRyY3VfcmVhZF9sb2NrKCk7XG4tXHRpZWVlODAyMTFfaXRlcl9rZXlzX3JjdShydHdkZXYtXHUwMDNlaHcsIE5VTEwsIHJ0dzg5X2NhbV9yZXNldF9rZXlfaXRlciwgcnR3ZGV2KTtcbi1cdHJjdV9yZWFkX3VubG9jaygpO1xuK1x0aWVlZTgwMjExX2l0ZXJfa2V5cyhydHdkZXYtXHUwMDNlaHcsIE5VTEwsIHJ0dzg5X2NhbV9yZXNldF9rZXlfaXRlciwgcnR3ZGV2KTtcbiB9XG4gXG4gc3RhdGljIGludCBydHc4OV9jYW1fZ2V0X2F2YWlsX2FkZHJfY2FtKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuY1xuaW5kZXggMmRmYTI0YzU0ZTdkNy4uMGJmMzQ2OTJjN2NlMyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmNcbkBAIC00NzMsMTAgKzQ3Myw4IEBAIHN0YXRpYyB2b2lkIHJ0dzg5X3dvd19jb25zdHJ1Y3Rfa2V5X2luZm8oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuIFx0c3RydWN0IGllZWU4MDIxMV92aWYgKndvd192aWYgPSBydHd2aWZfbGlua190b192aWYocnR3dmlmX2xpbmspO1xuIFx0Ym9vbCBlcnIgPSBmYWxzZTtcbiBcbi1cdHJjdV9yZWFkX2xvY2soKTtcbi1cdGllZWU4MDIxMV9pdGVyX2tleXNfcmN1KHJ0d2Rldi1cdTAwM2Vodywgd293X3ZpZixcbi1cdFx0XHRcdHJ0dzg5X3dvd19nZXRfa2V5X2luZm9faXRlciwgXHUwMDI2ZXJyKTtcbi1cdHJjdV9yZWFkX3VubG9jaygpO1xuK1x0aWVlZTgwMjExX2l0ZXJfa2V5cyhydHdkZXYtXHUwMDNlaHcsIHdvd192aWYsXG4rXHRcdFx0ICAgIHJ0dzg5X3dvd19nZXRfa2V5X2luZm9faXRlciwgXHUwMDI2ZXJyKTtcbiBcbiBcdGlmIChlcnIpIHtcbiBcdFx0cnR3ODlfd293X2tleV9jbGVhcihydHdkZXYpO1xuQEAgLTY5NSwxMCArNjkzLDggQEAgc3RhdGljIHZvaWQgcnR3ODlfd293X3VwZGF0ZV9rZXlfaW5mbyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGJvb2wgcnhfcmVhZHkpXG4gXHRzdHJ1Y3QgaWVlZTgwMjExX2Jzc19jb25mICpic3NfY29uZjtcbiBcdHN0cnVjdCBpZWVlODAyMTFfa2V5X2NvbmYgKmtleTtcbiBcbi1cdHJjdV9yZWFkX2xvY2soKTtcbi1cdGllZWU4MDIxMV9pdGVyX2tleXNfcmN1KHJ0d2Rldi1cdTAwM2Vodywgd293X3ZpZixcbi1cdFx0XHRcdHJ0dzg5X3dvd19zZXRfa2V5X2luZm9faXRlciwgXHUwMDI2ZGF0YSk7XG4tXHRyY3VfcmVhZF91bmxvY2soKTtcbitcdGllZWU4MDIxMV9pdGVyX2tleXMocnR3ZGV2LVx1MDAzZWh3LCB3b3dfdmlmLFxuK1x0XHRcdCAgICBydHc4OV93b3dfc2V0X2tleV9pbmZvX2l0ZXIsIFx1MDAyNmRhdGEpO1xuIFxuIFx0aWYgKGRhdGEuZXJyb3IpIHtcbiBcdFx0cnR3ODlfZGVidWcocnR3ZGV2LCBSVFc4OV9EQkdfV09XLCBcIiVzIGVycm9yXFxuXCIsIF9fZnVuY19fKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDIxOjQxOjUyLjc4ODc1NzM3NFoiLCJTZXEiOjQxLCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxMTg0OTQxODgyOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgVGhpcyBMaW51eCBLZXJuZWwgUGF0Y2ggZm9yIEtNU0FOIEZ1enppbmcgTmVlZHMqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZGVjaWRlIGlmIHRoaXMgcGF0Y2ggc2VyaWVzIG5lY2Vzc2l0YXRlcyBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHJ1bi4gTGV0J3MgYnJlYWsgaXQgZG93bi4gSXQgbG9va3MgbGlrZSB0aGUgbWFpbiBjaGFuZ2UgaXMgaW4gdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2AgZGlyZWN0b3J5LCBzcGVjaWZpY2FsbHkgYGNhbS5jYCBhbmQgYHdvdy5jYC4gVGhlIGNvcmUgb2YgdGhlIG1vZGlmaWNhdGlvbiBpcyB0aGUgcmVwbGFjZW1lbnQgb2YgYHJjdV9yZWFkX2xvY2soKWAvYGllZWU4MDIxMV9pdGVyX2tleXNfcmN1KClgL2ByY3VfcmVhZF91bmxvY2soKWAgc2VxdWVuY2VzIHdpdGggYSBzaW1wbGUgYGllZWU4MDIxMV9pdGVyX2tleXMoKWAuIFRoaXMgcGF0dGVybiByZXBlYXRzIGluIGEgY291cGxlIG9mIHBsYWNlcyB3aXRoaW4gdGhvc2UgZmlsZXMuXG5cbk15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHRoaXMgaXMgYSBjaGFuZ2UgaW52b2x2aW5nIFJDVSAoUmVhZC1Db3B5LVVwZGF0ZSkgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXMgaW4gYSB3aXJlbGVzcyBkcml2ZXIgY29udGV4dC4gVGhpcyBpbW1lZGlhdGVseSBmbGFncyBhIHBvdGVudGlhbCBhcmVhIGZvciBmdXp6aW5nIGNvbnNpZGVyYXRpb24uIFRoZSByZW1vdmFsIG9mIFJDVSBzdWdnZXN0cyBhIHNoaWZ0IGluIGhvdyBrZXkgaXRlcmF0aW9uIGlzIGhhbmRsZWQuIElzIGl0IHN0aWxsIHNhZmU/IERpZCB0aGV5IG1vdmUgdGhlIGxvY2tpbmcgdG8gYW5vdGhlciBwb2ludD8gSXMgdGhlcmUgYSBzdWJ0bGUgcmFjZSBjb25kaXRpb24gdGhleSByZW1vdmVkP1xuXG5UbyBnZXQgYSBjbGVhcmVyIHBpY3R1cmUgYW5kIGRldGVybWluZSB0aGUgZnV6emluZyBpbXBsaWNhdGlvbnMsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBudWFuY2VzIG9mIHRoZSBmdW5jdGlvbnMgaW52b2x2ZWQuIEknbSBnb2luZyB0byBxdWlja2x5IGdyZXAgdGhyb3VnaCB0aGUga2VybmVsIHNvdXJjZSBhbmQgcG9zc2libHkgcmVhZCB0aGUgZmlsZXMgY29udGFpbmluZyBgaWVlZTgwMjExX2l0ZXJfa2V5c2AgYW5kIGBpZWVlODAyMTFfaXRlcl9rZXlzX3JjdWAgdG8gc2VlIGhvdyB0aG9zZSBhcmUgaW1wbGVtZW50ZWQgYW5kLCBtb3JlIGltcG9ydGFudGx5LCB3aGF0IGNvbnRleHQgdGhleSBhcmUgdXNlZCB3aXRoaW4uIFVuZGVyc3RhbmRpbmcgdGhlIGRhdGEgc3RydWN0dXJlcyBhbmQgY29udHJvbCBmbG93IGFyb3VuZCB0aGVzZSBrZXkgaXRlcmF0aW9ucyBpcyBjcnVjaWFsLiBUaGUgZmFjdCB0aGF0IHRoaXMgaW1wYWN0cyBib3RoIGBjYW0uY2AgYW5kIGB3b3cuY2Agc3VnZ2VzdHMgYSBtb3JlIGdlbmVyYWwgcGF0dGVybiwgaW5jcmVhc2luZyB0aGUgbGlrZWxpaG9vZCBvZiBhIHN1YnRsZSwgYnV0IHN5c3RlbS13aWRlLCBpc3N1ZS4gSSBuZWVkIHRvIGJlIHN1cmUgdGhhdCB0aGVzZSBjaGFuZ2VzIGFyZSBub3QgaW50cm9kdWNpbmcsIG9yIGV4cG9zaW5nLCBhbnkgbmV3IHJhY2UgY29uZGl0aW9ucyB0aGF0IGNvdWxkIGxlYWQgdG8gbWVtb3J5IGNvcnJ1cHRpb24gb3IgZGF0YSByYWNlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjgxOCwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI3MiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDIxOjQyOjA0LjYzODE4MDczMloiLCJTZXEiOjQyLCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ0Mjc3NDc4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImllZWU4MDIxMV9pdGVyX2tleXNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L21hYzgwMjExXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9tYWM4MDIxMS9rZXkuYz0xMDAxPWllZWU4MDIxMV9rZXlfaXRlcihzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4tLVxcbm5ldC9tYWM4MDIxMS9rZXkuYy0xMDE5LVxcbm5ldC9tYWM4MDIxMS9rZXkuYzoxMDIwOnZvaWQgaWVlZTgwMjExX2l0ZXJfa2V5cyhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG5uZXQvbWFjODAyMTEva2V5LmMtMTAyMS1cXHRcXHRcXHQgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcXG4tLVxcbm5ldC9tYWM4MDIxMS9rZXkuYy0xMDQ2LX1cXG5uZXQvbWFjODAyMTEva2V5LmM6MTA0NzpFWFBPUlRfU1lNQk9MKGllZWU4MDIxMV9pdGVyX2tleXMpO1xcbm5ldC9tYWM4MDIxMS9rZXkuYy0xMDQ4LVxcbm5ldC9tYWM4MDIxMS9rZXkuYz0xMDQ5PXN0YXRpYyB2b2lkXFxubmV0L21hYzgwMjExL2tleS5jOjEwNTA6X2llZWU4MDIxMV9pdGVyX2tleXNfcmN1KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbm5ldC9tYWM4MDIxMS9rZXkuYy0xMDUxLVxcdFxcdFxcdCBzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9rZXkuYy0xMDY0LVxcbm5ldC9tYWM4MDIxMS9rZXkuYzoxMDY1OnZvaWQgaWVlZTgwMjExX2l0ZXJfa2V5c19yY3Uoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxubmV0L21hYzgwMjExL2tleS5jLTEwNjYtXFx0XFx0XFx0ICAgICBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxcbi0tXFxubmV0L21hYzgwMjExL2tleS5jLTEwNzgtXFx0XFx0c2RhdGEgPSB2aWZfdG9fc2RhdGEodmlmKTtcXG5uZXQvbWFjODAyMTEva2V5LmM6MTA3OTpcXHRcXHRfaWVlZTgwMjExX2l0ZXJfa2V5c19yY3UoaHcsIHNkYXRhLCBpdGVyLCBpdGVyX2RhdGEpO1xcbm5ldC9tYWM4MDIxMS9rZXkuYy0xMDgwLVxcdH0gZWxzZSB7XFxubmV0L21hYzgwMjExL2tleS5jLTEwODEtXFx0XFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9yY3Uoc2RhdGEsIFxcdTAwMjZsb2NhbC1cXHUwMDNlaW50ZXJmYWNlcywgbGlzdClcXG5uZXQvbWFjODAyMTEva2V5LmM6MTA4MjpcXHRcXHRcXHRfaWVlZTgwMjExX2l0ZXJfa2V5c19yY3UoaHcsIHNkYXRhLCBpdGVyLCBpdGVyX2RhdGEpO1xcbm5ldC9tYWM4MDIxMS9rZXkuYy0xMDgzLVxcdH1cXG5uZXQvbWFjODAyMTEva2V5LmMtMTA4NC19XFxubmV0L21hYzgwMjExL2tleS5jOjEwODU6RVhQT1JUX1NZTUJPTChpZWVlODAyMTFfaXRlcl9rZXlzX3JjdSk7XFxubmV0L21hYzgwMjExL2tleS5jLTEwODYtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDIxOjQyOjA0Ljc4MjQ2NDk2WiIsIlNlcSI6NDMsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjE3NzI3MjUzNTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSdtIHRoaW5raW5nIHRocm91Z2ggdGhpcyBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBNQUM4MDIxMSBLZXkgTWFuYWdlbWVudCBJbXBsZW1lbnRhdGlvbioqXG5cbk9rYXksIHRpbWUgdG8gZGlnIGludG8gdGhlIGBuZXQvbWFjODAyMTEva2V5LmNgIGZpbGUuIFNwZWNpZmljYWxseSwgSSdtIGZvY3VzaW5nIG9uIGxpbmVzIDEwMDAgdG8gMTA4MC4gVGhhdCByZWdpb24gdXN1YWxseSBkZWFscyB3aXRoIGtleS1yZWxhdGVkIGxvZ2ljLCBhbmQgYmFzZWQgb24gdGhlIHJlY2VudCBjaGFuZ2VzIEkndmUgYmVlbiB0cmFja2luZywgSSBoYXZlIGEgZmVlbGluZyB0aGUgc291cmNlIG9mIHRoZSBpc3N1ZSBJJ20gY2hhc2luZyBpcyB3aXRoaW4gdGhlIGtleSBtYW5hZ2VtZW50IHN5c3RlbS4gVGhpcyBpcyB3aGVyZSB0aGUgY29yZSBrZXkgc2V0dXAgYW5kIGhhbmRsaW5nIGlzIGRvbmUgd2l0aGluIHRoZSBtYWM4MDIxMSBmcmFtZXdvcmssIHNvIHRoaXMgaXMgYSBncmVhdCBwbGFjZSB0byBzdGFydCBteSBpbnZlc3RpZ2F0aW9uLiBJJ20gZXhwZWN0aW5nIHRvIHNlZSBmdW5jdGlvbnMgcmVzcG9uc2libGUgZm9yIGFkZGluZywgZGVsZXRpbmcsIGFuZCB1cGRhdGluZyBjcnlwdG9ncmFwaGljIGtleXMsIHBlcmhhcHMgd2l0aCByZWxhdGVkIGVycm9yIGNoZWNraW5nLiBJJ20ga2VlbiB0byBzZWUgdGhlIGludGVybmFsIGRhdGEgc3RydWN0dXJlcyB1c2VkIHRvIHJlcHJlc2VudCBrZXlzLCB0b28sIGFzIHRoYXQgd2lsbCBpbGx1bWluYXRlIGhvdyB0aGVzZSBrZXlzIGFyZSBzdG9yZWQgYW5kIG1hbmFnZWQuIExldCdzIGdldCBjcmFja2luZyBhbmQgaWRlbnRpZnkgd2hlcmUgdGhlIHByb2JsZW0gaXMuLi5cblxuXG4iLCJJbnB1dFRva2VucyI6NDI2MywiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDIxOjQyOjA2LjU1NTIwMzY4M1oiLCJTZXEiOjQ0LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNjEwNTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L21hYzgwMjExL2tleS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEwMDAsXG4gIFwiTGluZUNvdW50XCI6IDg1XG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjEwMDA6XFx0c3RhdGljIHZvaWRcXG4xMDAxOlxcdGllZWU4MDIxMV9rZXlfaXRlcihzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4xMDAyOlxcdFxcdFxcdCAgIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXFxuMTAwMzpcXHRcXHRcXHQgICBzdHJ1Y3QgaWVlZTgwMjExX2tleSAqa2V5LFxcbjEwMDQ6XFx0XFx0XFx0ICAgdm9pZCAoKml0ZXIpKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbjEwMDU6XFx0XFx0XFx0XFx0XFx0c3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcXG4xMDA2OlxcdFxcdFxcdFxcdFxcdHN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGEsXFxuMTAwNzpcXHRcXHRcXHRcXHRcXHRzdHJ1Y3QgaWVlZTgwMjExX2tleV9jb25mICprZXksXFxuMTAwODpcXHRcXHRcXHRcXHRcXHR2b2lkICpkYXRhKSxcXG4xMDA5OlxcdFxcdFxcdCAgIHZvaWQgKml0ZXJfZGF0YSlcXG4xMDEwOlxcdHtcXG4xMDExOlxcdFxcdC8qIHNraXAga2V5cyBvZiBzdGF0aW9uIGluIHJlbW92YWwgcHJvY2VzcyAqL1xcbjEwMTI6XFx0XFx0aWYgKGtleS1cXHUwMDNlc3RhIFxcdTAwMjZcXHUwMDI2IGtleS1cXHUwMDNlc3RhLVxcdTAwM2VyZW1vdmVkKVxcbjEwMTM6XFx0XFx0XFx0cmV0dXJuO1xcbjEwMTQ6XFx0XFx0aWYgKCEoa2V5LVxcdTAwM2VmbGFncyBcXHUwMDI2IEtFWV9GTEFHX1VQTE9BREVEX1RPX0hBUkRXQVJFKSlcXG4xMDE1OlxcdFxcdFxcdHJldHVybjtcXG4xMDE2OlxcdFxcdGl0ZXIoaHcsIHZpZiwga2V5LVxcdTAwM2VzdGEgPyBcXHUwMDI2a2V5LVxcdTAwM2VzdGEtXFx1MDAzZXN0YSA6IE5VTEwsXFxuMTAxNzpcXHRcXHQgICAgIFxcdTAwMjZrZXktXFx1MDAzZWNvbmYsIGl0ZXJfZGF0YSk7XFxuMTAxODpcXHR9XFxuMTAxOTpcXHRcXG4xMDIwOlxcdHZvaWQgaWVlZTgwMjExX2l0ZXJfa2V5cyhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4xMDIxOlxcdFxcdFxcdFxcdCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxcbjEwMjI6XFx0XFx0XFx0XFx0IHZvaWQgKCppdGVyKShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4xMDIzOlxcdFxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXFxuMTAyNDpcXHRcXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqc3RhLFxcbjEwMjU6XFx0XFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IGllZWU4MDIxMV9rZXlfY29uZiAqa2V5LFxcbjEwMjY6XFx0XFx0XFx0XFx0XFx0ICAgICAgdm9pZCAqZGF0YSksXFxuMTAyNzpcXHRcXHRcXHRcXHQgdm9pZCAqaXRlcl9kYXRhKVxcbjEwMjg6XFx0e1xcbjEwMjk6XFx0XFx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBod190b19sb2NhbChodyk7XFxuMTAzMDpcXHRcXHRzdHJ1Y3QgaWVlZTgwMjExX2tleSAqa2V5LCAqdG1wO1xcbjEwMzE6XFx0XFx0c3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGE7XFxuMTAzMjpcXHRcXG4xMDMzOlxcdFxcdGxvY2tkZXBfYXNzZXJ0X3dpcGh5KGh3LVxcdTAwM2V3aXBoeSk7XFxuMTAzNDpcXHRcXG4xMDM1OlxcdFxcdGlmICh2aWYpIHtcXG4xMDM2OlxcdFxcdFxcdHNkYXRhID0gdmlmX3RvX3NkYXRhKHZpZik7XFxuMTAzNzpcXHRcXHRcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoa2V5LCB0bXAsIFxcdTAwMjZzZGF0YS1cXHUwMDNla2V5X2xpc3QsIGxpc3QpXFxuMTAzODpcXHRcXHRcXHRcXHRpZWVlODAyMTFfa2V5X2l0ZXIoaHcsIHZpZiwga2V5LCBpdGVyLCBpdGVyX2RhdGEpO1xcbjEwMzk6XFx0XFx0fSBlbHNlIHtcXG4xMDQwOlxcdFxcdFxcdGxpc3RfZm9yX2VhY2hfZW50cnkoc2RhdGEsIFxcdTAwMjZsb2NhbC1cXHUwMDNlaW50ZXJmYWNlcywgbGlzdClcXG4xMDQxOlxcdFxcdFxcdFxcdGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShrZXksIHRtcCxcXG4xMDQyOlxcdFxcdFxcdFxcdFxcdFxcdFxcdCBcXHUwMDI2c2RhdGEtXFx1MDAzZWtleV9saXN0LCBsaXN0KVxcbjEwNDM6XFx0XFx0XFx0XFx0XFx0aWVlZTgwMjExX2tleV9pdGVyKGh3LCBcXHUwMDI2c2RhdGEtXFx1MDAzZXZpZiwga2V5LFxcbjEwNDQ6XFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgaXRlciwgaXRlcl9kYXRhKTtcXG4xMDQ1OlxcdFxcdH1cXG4xMDQ2OlxcdH1cXG4xMDQ3OlxcdEVYUE9SVF9TWU1CT0woaWVlZTgwMjExX2l0ZXJfa2V5cyk7XFxuMTA0ODpcXHRcXG4xMDQ5OlxcdHN0YXRpYyB2b2lkXFxuMTA1MDpcXHRfaWVlZTgwMjExX2l0ZXJfa2V5c19yY3Uoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuMTA1MTpcXHRcXHRcXHRcXHQgc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuMTA1MjpcXHRcXHRcXHRcXHQgdm9pZCAoKml0ZXIpKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbjEwNTM6XFx0XFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcXG4xMDU0OlxcdFxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGEsXFxuMTA1NTpcXHRcXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgaWVlZTgwMjExX2tleV9jb25mICprZXksXFxuMTA1NjpcXHRcXHRcXHRcXHRcXHQgICAgICB2b2lkICpkYXRhKSxcXG4xMDU3OlxcdFxcdFxcdFxcdCB2b2lkICppdGVyX2RhdGEpXFxuMTA1ODpcXHR7XFxuMTA1OTpcXHRcXHRzdHJ1Y3QgaWVlZTgwMjExX2tleSAqa2V5O1xcbjEwNjA6XFx0XFxuMTA2MTpcXHRcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShrZXksIFxcdTAwMjZzZGF0YS1cXHUwMDNla2V5X2xpc3QsIGxpc3QpXFxuMTA2MjpcXHRcXHRcXHRpZWVlODAyMTFfa2V5X2l0ZXIoaHcsIFxcdTAwMjZzZGF0YS1cXHUwMDNldmlmLCBrZXksIGl0ZXIsIGl0ZXJfZGF0YSk7XFxuMTA2MzpcXHR9XFxuMTA2NDpcXHRcXG4xMDY1OlxcdHZvaWQgaWVlZTgwMjExX2l0ZXJfa2V5c19yY3Uoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuMTA2NjpcXHRcXHRcXHRcXHQgICAgIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXFxuMTA2NzpcXHRcXHRcXHRcXHQgICAgIHZvaWQgKCppdGVyKShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4xMDY4OlxcdFxcdFxcdFxcdFxcdFxcdCAgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcXG4xMDY5OlxcdFxcdFxcdFxcdFxcdFxcdCAgc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSxcXG4xMDcwOlxcdFxcdFxcdFxcdFxcdFxcdCAgc3RydWN0IGllZWU4MDIxMV9rZXlfY29uZiAqa2V5LFxcbjEwNzE6XFx0XFx0XFx0XFx0XFx0XFx0ICB2b2lkICpkYXRhKSxcXG4xMDcyOlxcdFxcdFxcdFxcdCAgICAgdm9pZCAqaXRlcl9kYXRhKVxcbjEwNzM6XFx0e1xcbjEwNzQ6XFx0XFx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBod190b19sb2NhbChodyk7XFxuMTA3NTpcXHRcXHRzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YTtcXG4xMDc2OlxcdFxcbjEwNzc6XFx0XFx0aWYgKHZpZikge1xcbjEwNzg6XFx0XFx0XFx0c2RhdGEgPSB2aWZfdG9fc2RhdGEodmlmKTtcXG4xMDc5OlxcdFxcdFxcdF9pZWVlODAyMTFfaXRlcl9rZXlzX3JjdShodywgc2RhdGEsIGl0ZXIsIGl0ZXJfZGF0YSk7XFxuMTA4MDpcXHRcXHR9IGVsc2Uge1xcbjEwODE6XFx0XFx0XFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9yY3Uoc2RhdGEsIFxcdTAwMjZsb2NhbC1cXHUwMDNlaW50ZXJmYWNlcywgbGlzdClcXG4xMDgyOlxcdFxcdFxcdFxcdF9pZWVlODAyMTFfaXRlcl9rZXlzX3JjdShodywgc2RhdGEsIGl0ZXIsIGl0ZXJfZGF0YSk7XFxuMTA4MzpcXHRcXHR9XFxuMTA4NDpcXHR9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDIxOjQyOjA2LjU1NTQ2ODYwM1oiLCJTZXEiOjQ1LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozNDc0MzA0Njk3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSBmaWxlczpcblxuKipEaXZpbmcgaW50byB0aGUgUmVhbHRlayA4MDIuMTFheCBXYWtlLW9uLVdpcmVsZXNzIChXb1dMQU4pIEltcGxlbWVudGF0aW9uKipcblxuT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGludGVyYWN0aW9uIGJldHdlZW4gdGhlIENBTSAoQ29udGVudCBBZGRyZXNzYWJsZSBNZW1vcnkpIGNvbmZpZ3VyYXRpb24gYW5kIHRoZSB3YWtlLW9uLXdpcmVsZXNzIGZ1bmN0aW9uYWxpdHkgd2l0aGluIHRoZSBSZWFsdGVrIDgwMi4xMWF4IGRyaXZlciwgc3BlY2lmaWNhbGx5IHRoZSBgcnR3ODlgIHNlcmllcy4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gY2hlY2sgb3V0IGBkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NhbS5jYCDigJMgdGhhdCdzIHdoZXJlIHRoZSBjcml0aWNhbCBtYXRjaGluZyBydWxlcyBmb3IgdGhlIENBTSBzaG91bGQgcmVzaWRlLCBhbmQgaXQncyB3aGVyZSB0aGUgbG9naWMgZm9yIGVuYWJsaW5nIGFuZCBjb25maWd1cmluZyB0aG9zZSBydWxlcyB0byB0cmlnZ2VyIGEgd2FrZS11cCBldmVudCBpcyBwcm9iYWJseSBsb2NhdGVkLiBJJ20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIGhvdyBpdCBoYW5kbGVzIHBhdHRlcm4gbWF0Y2hpbmcsIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgcG93ZXIgbWFuYWdlbWVudCBzdGF0ZXMsIGFuZCB3aGV0aGVyIHRoZSBDQU0gc2V0dXAgaXMgaW50ZWdyYXRlZCB3aXRoIHRoZSBoYXJkd2FyZSdzIGxvdy1wb3dlciBtb2RlcyBlZmZpY2llbnRseS4gQW55IHBvdGVudGlhbCBpbmVmZmljaWVuY2llcyBpbiB0aGUgQ0FNIGNvbmZpZ3VyYXRpb24gcHJvY2VzcyBjb3VsZCB0cmFuc2xhdGUgZGlyZWN0bHkgaW50byB1bm5lY2Vzc2FyeSBwb3dlciBjb25zdW1wdGlvbiwgbmVnYXRpbmcgdGhlIHdob2xlIHBvaW50IG9mIFdvV0xBTi5cblxuVGhlbiwgSSdsbCBuZWVkIHRvIGRyaWxsIGRvd24gaW50byB0aGUgJ3dvdy5jJyB0byBzZWUgaG93IHRoZSBzb2Z0d2FyZSBhY3R1YWxseSBvcmNoZXN0cmF0ZXMgdGhlIHdha2UtdXAgcHJvY2Vzcy4gSSdtIGV4cGVjdGluZyB0byBmaW5kIHRoZSBob29rcyBpbnRvIHRoZSBSZWFsdGVrIGhhcmR3YXJlLCB0aGUgaGFuZGxpbmcgb2YgdGhlIGludGVycnVwdHMgZ2VuZXJhdGVkIGJ5IHRoZSBDQU0gaGl0cywgYW5kIHRoZSBzdGVwcyB0byB0cmFuc2l0aW9uIHRoZSBzeXN0ZW0gZnJvbSBhIGxvdy1wb3dlciBzdGF0ZSBiYWNrIHRvIGEgZnVsbHkgYWN0aXZlIHN0YXRlIHVwb24gYSBtYXRjaGluZyBldmVudC4gV2hhdCdzIHRoZSBzcGVjaWZpYyBzZXF1ZW5jZT8gV2hhdCBhcmUgdGhlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzIHVzZWQgdG8gZW5zdXJlIGRhdGEgaW50ZWdyaXR5IGR1cmluZyB0aGUgcG93ZXIgc3RhdGUgdHJhbnNpdGlvbnM/IEhvdyBkb2VzIGl0IGhhbmRsZSB0aGUgY29tcGxleGl0aWVzIG9mIG5ldHdvcmsgc3RhY2sgaW5pdGlhbGl6YXRpb24gYWZ0ZXIgYSB3YWtlLXVwPyBBbmQsIG1vc3QgaW1wb3J0YW50bHksIHdoYXQncyB0aGUgb3ZlcmFsbCBwb3dlciBidWRnZXQ/IEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgZHJpdmVyIG1hbmFnZXMgdG8gYWNoaWV2ZSB0aGUgY2xhaW1lZCBwb3dlciBzYXZpbmdzIGNvbXBhcmVkIHRvIHN0YW5kYXJkIFdpLUZpIG9wZXJhdGlvbi4gSSdtIGxvb2tpbmcgZm9yIGEgY2xlYXIgZmxvdyBvZiBvcGVyYXRpb25zIGJldHdlZW4gdGhlIENBTSBjb25maWd1cmF0aW9uIGFuZCB0aGUgYWN0dWFsIFdvV0xBTiB0cmlnZ2VyIGV2ZW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MTU2LCJPdXRwdXRUb2tlbnMiOjQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQyMTo0MjoxMC4wMjk3NzY1MloiLCJTZXEiOjQ2LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjA3MzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jYW0uY1wiLFxuICBcIkZpcnN0TGluZVwiOiA1OTUsXG4gIFwiTGluZUNvdW50XCI6IDI1XG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA1OTU6XFx0fVxcbiA1OTY6XFx0XFxuIDU5NzpcXHR2b2lkIHJ0dzg5X2NhbV9kZWluaXQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBzdHJ1Y3QgcnR3ODlfdmlmX2xpbmsgKnJ0d3ZpZl9saW5rKVxcbiA1OTg6XFx0e1xcbiA1OTk6XFx0XFx0c3RydWN0IHJ0dzg5X2FkZHJfY2FtX2VudHJ5ICphZGRyX2NhbSA9IFxcdTAwMjZydHd2aWZfbGluay1cXHUwMDNlYWRkcl9jYW07XFxuIDYwMDpcXHRcXHRzdHJ1Y3QgcnR3ODlfYnNzaWRfY2FtX2VudHJ5ICpic3NpZF9jYW0gPSBcXHUwMDI2cnR3dmlmX2xpbmstXFx1MDAzZWJzc2lkX2NhbTtcXG4gNjAxOlxcdFxcbiA2MDI6XFx0XFx0cnR3ODlfY2FtX2RlaW5pdF9hZGRyX2NhbShydHdkZXYsIGFkZHJfY2FtKTtcXG4gNjAzOlxcdFxcdHJ0dzg5X2NhbV9kZWluaXRfYnNzaWRfY2FtKHJ0d2RldiwgYnNzaWRfY2FtKTtcXG4gNjA0OlxcdH1cXG4gNjA1OlxcdFxcbiA2MDY6XFx0dm9pZCBydHc4OV9jYW1fcmVzZXRfa2V5cyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXFxuIDYwNzpcXHR7XFxuIDYwODpcXHRcXHRpZWVlODAyMTFfaXRlcl9rZXlzKHJ0d2Rldi1cXHUwMDNlaHcsIE5VTEwsIHJ0dzg5X2NhbV9yZXNldF9rZXlfaXRlciwgcnR3ZGV2KTtcXG4gNjA5OlxcdH1cXG4gNjEwOlxcdFxcbiA2MTE6XFx0c3RhdGljIGludCBydHc4OV9jYW1fZ2V0X2F2YWlsX2FkZHJfY2FtKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcXG4gNjEyOlxcdFxcdFxcdFxcdFxcdFxcdHU4ICphZGRyX2NhbV9pZHgpXFxuIDYxMzpcXHR7XFxuIDYxNDpcXHRcXHRjb25zdCBzdHJ1Y3QgcnR3ODlfY2hpcF9pbmZvICpjaGlwID0gcnR3ZGV2LVxcdTAwM2VjaGlwO1xcbiA2MTU6XFx0XFx0c3RydWN0IHJ0dzg5X2NhbV9pbmZvICpjYW1faW5mbyA9IFxcdTAwMjZydHdkZXYtXFx1MDAzZWNhbV9pbmZvO1xcbiA2MTY6XFx0XFx0dTggYWRkcl9jYW1fbnVtID0gY2hpcC1cXHUwMDNlYWNhbV9udW07XFxuIDYxNzpcXHRcXHR1OCBpZHg7XFxuIDYxODpcXHRcXG4gNjE5OlxcdFxcdGlkeCA9IGZpbmRfZmlyc3RfemVyb19iaXQoY2FtX2luZm8tXFx1MDAzZWFkZHJfY2FtX21hcCwgYWRkcl9jYW1fbnVtKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMjE6NDI6MTAuMDI5OTM5NloiLCJTZXEiOjQ3LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxODM5MTQxMDEyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhpbmtpbmcgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byB0aGUgUmVhbHRlayBXT1cgQ29kZSoqXG5cbk9rYXksIHRpbWUgdG8gZGlnIGludG8gdGhlIFJlYWx0ZWsgd2lyZWxlc3MgZHJpdmVyJ3Mgd2FrZS1vbi13aXJlbGVzcyAoV09XKSBmdW5jdGlvbmFsaXR5LCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBgcnR3ODlgIGNvZGUuIE15IGdvYWwgaXMgdG8gdW5kZXJzdGFuZCBob3cgdGhlc2Uga2V5cyBhcmUgY29uc3RydWN0ZWQgYW5kIHVwZGF0ZWQgZm9yIFdPVy4gSSdtIGdvaW5nIHRvIGZvY3VzIG15IGF0dGVudGlvbiBvbiB0aGUgYHJ0dzg5X3dvd19jb25zdHJ1Y3Rfa2V5X2luZm9gIGZ1bmN0aW9uIGFuZCB0aGUgYHJ0dzg5X3dvd191cGRhdGVfa2V5X2luZm9gIGZ1bmN0aW9uLCBib3RoIGxvY2F0ZWQgd2l0aGluIHRoZSBgd293LmNgIGZpbGUgaW4gdGhlIGRyaXZlcidzIHNvdXJjZS4gVGhpcyBsb29rcyBsaWtlIHRoZSBwbGFjZSB0byBzdGFydCBhbmFseXppbmcgdGhlIHByb2Nlc3MuIFRoaXMgd2lsbCBnaXZlIG1lIGEgZ29vZCB1bmRlcnN0YW5kaW5nIG9mIGhvdyB0aGlzIHBvcnRpb24gb2YgdGhlIGNvZGUgaXMgaGFuZGxlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NzE0NywiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUzLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMjE6NDI6MTEuODY5MDg0MDUyWiIsIlNlcSI6NDgsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyMzM3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDQ2MCxcbiAgXCJMaW5lQ291bnRcIjogNDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDQ2MDpcXHRcXG4gNDYxOlxcdFxcdG1lbXNldChcXHUwMDI2cnR3X3dvdy1cXHUwMDNlYW9hY19ycHQsIDAsIHNpemVvZihydHdfd293LVxcdTAwM2Vhb2FjX3JwdCkpO1xcbiA0NjI6XFx0XFx0bWVtc2V0KFxcdTAwMjZydHdfd293LVxcdTAwM2VndGtfaW5mbywgMCwgc2l6ZW9mKHJ0d193b3ctXFx1MDAzZWd0a19pbmZvKSk7XFxuIDQ2MzpcXHRcXHRtZW1zZXQoXFx1MDAyNnJ0d193b3ctXFx1MDAzZWtleV9pbmZvLCAwLCBzaXplb2YocnR3X3dvdy1cXHUwMDNla2V5X2luZm8pKTtcXG4gNDY0OlxcdFxcdHJ0d193b3ctXFx1MDAzZXB0a19hbGcgPSAwO1xcbiA0NjU6XFx0XFx0cnR3X3dvdy1cXHUwMDNlZ3RrX2FsZyA9IDA7XFxuIDQ2NjpcXHR9XFxuIDQ2NzpcXHRcXG4gNDY4OlxcdHN0YXRpYyB2b2lkIHJ0dzg5X3dvd19jb25zdHJ1Y3Rfa2V5X2luZm8oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxcbiA0Njk6XFx0e1xcbiA0NzA6XFx0XFx0c3RydWN0IHJ0dzg5X3dvd19wYXJhbSAqcnR3X3dvdyA9IFxcdTAwMjZydHdkZXYtXFx1MDAzZXdvdztcXG4gNDcxOlxcdFxcdHN0cnVjdCBydHc4OV93b3dfa2V5X2luZm8gKmtleV9pbmZvID0gXFx1MDAyNnJ0d193b3ctXFx1MDAzZWtleV9pbmZvO1xcbiA0NzI6XFx0XFx0c3RydWN0IHJ0dzg5X3ZpZl9saW5rICpydHd2aWZfbGluayA9IHJ0d2Rldi1cXHUwMDNld293LnJ0d3ZpZl9saW5rO1xcbiA0NzM6XFx0XFx0c3RydWN0IGllZWU4MDIxMV92aWYgKndvd192aWYgPSBydHd2aWZfbGlua190b192aWYocnR3dmlmX2xpbmspO1xcbiA0NzQ6XFx0XFx0Ym9vbCBlcnIgPSBmYWxzZTtcXG4gNDc1OlxcdFxcbiA0NzY6XFx0XFx0aWVlZTgwMjExX2l0ZXJfa2V5cyhydHdkZXYtXFx1MDAzZWh3LCB3b3dfdmlmLFxcbiA0Nzc6XFx0XFx0XFx0XFx0ICAgIHJ0dzg5X3dvd19nZXRfa2V5X2luZm9faXRlciwgXFx1MDAyNmVycik7XFxuIDQ3ODpcXHRcXG4gNDc5OlxcdFxcdGlmIChlcnIpIHtcXG4gNDgwOlxcdFxcdFxcdHJ0dzg5X3dvd19rZXlfY2xlYXIocnR3ZGV2KTtcXG4gNDgxOlxcdFxcdFxcdHJldHVybjtcXG4gNDgyOlxcdFxcdH1cXG4gNDgzOlxcdFxcbiA0ODQ6XFx0XFx0a2V5X2luZm8tXFx1MDAzZXZhbGlkX2NoZWNrID0gUlRXODlfV09XX1ZBTElEX0NIRUNLO1xcbiA0ODU6XFx0XFx0a2V5X2luZm8tXFx1MDAzZXN5bWJvbF9jaGVja19lbiA9IFJUVzg5X1dPV19TWU1CT0xfQ0hLX1BUSyB8XFxuIDQ4NjpcXHRcXHRcXHRcXHRcXHQgICAgUlRXODlfV09XX1NZTUJPTF9DSEtfR1RLO1xcbiA0ODc6XFx0fVxcbiA0ODg6XFx0XFxuIDQ4OTpcXHRzdGF0aWMgdm9pZCBydHc4OV93b3dfZGVidWdfYW9hY19ycHQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxcbiA0OTA6XFx0e1xcbiA0OTE6XFx0XFx0c3RydWN0IHJ0dzg5X3dvd19wYXJhbSAqcnR3X3dvdyA9IFxcdTAwMjZydHdkZXYtXFx1MDAzZXdvdztcXG4gNDkyOlxcdFxcdHN0cnVjdCBydHc4OV93b3dfYW9hY19yZXBvcnQgKmFvYWNfcnB0ID0gXFx1MDAyNnJ0d193b3ctXFx1MDAzZWFvYWNfcnB0O1xcbiA0OTM6XFx0XFxuIDQ5NDpcXHRcXHRpZiAoIXJ0dzg5X2RlYnVnX2lzX2VuYWJsZWQocnR3ZGV2LCBSVFc4OV9EQkdfV09XKSlcXG4gNDk1OlxcdFxcdFxcdHJldHVybjtcXG4gNDk2OlxcdFxcbiA0OTc6XFx0XFx0cnR3ODlfZGVidWcocnR3ZGV2LCBSVFc4OV9EQkdfV09XLCBcXFwiW2FvYWNfcnB0XSBycHRfdmVyID0gJWRcXFxcblxcXCIsXFxuIDQ5ODpcXHRcXHRcXHQgICAgYW9hY19ycHQtXFx1MDAzZXJwdF92ZXIpO1xcbiA0OTk6XFx0XFx0cnR3ODlfZGVidWcocnR3ZGV2LCBSVFc4OV9EQkdfV09XLCBcXFwiW2FvYWNfcnB0XSBzZWNfdHlwZSA9ICVkXFxcXG5cXFwiLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQyMTo0MjoxMS44NjkzMjAzNDJaIiwiU2VxIjo0OSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTg5ODE3MjA5MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyb20gbXkgcGVyc3BlY3RpdmUgYXMgYW4gZXhwZXJ0OlxuXG4qKkludmVzdGlnYXRpbmcgYSBQb3RlbnRpYWwgSXNzdWUqKlxuXG5Pa2F5LCBzbyB3ZSdyZSBsb29raW5nIGludG8gc29tZXRoaW5nIGFuZCBgcnR3ODlfd293X3VwZGF0ZV9rZXlfaW5mb2AgaXMgcGluZ2luZyBteSByYWRhci4gR2l2ZW4gd2hhdCBJJ20gZGVhbGluZyB3aXRoLCBpdCdzIGltbWVkaWF0ZWx5IG9idmlvdXMgdGhhdCB0aGlzIGZ1bmN0aW9uIGRlc2VydmVzIGEgY2xvc2VyIGxvb2suIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByb2xlIGluIHRoaXMgc3lzdGVtIGFuZCBob3cgaXQgbWlnaHQgYmUgaW52b2x2ZWQgaW4gdGhlIGJlaGF2aW9yIHdlJ3JlIG9ic2VydmluZy4gSXQncyB0aW1lIHRvIGRpZyBpbnRvIHRoZSBjb2RlIGFuZCBzZWUgd2hhdCBgcnR3ODlfd293X3VwZGF0ZV9rZXlfaW5mb2AgaXMgYWN0dWFsbHkgZG9pbmcuIE15IGd1dCdzIHRlbGxpbmcgbWUgdGhhdCB0aGlzIGlzIGEgY3JpdGljYWwgY29tcG9uZW50IHRoYXQgd2FycmFudHMgdGhvcm91Z2ggaW52ZXN0aWdhdGlvbiB0byBpc29sYXRlIGFuZCB1bmRlcnN0YW5kIGFueSBwcm9ibGVtLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MjU2LCJPdXRwdXRUb2tlbnMiOjQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjEsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQyMTo0MjoxMy43Njc0OTUzOTNaIiwiU2VxIjo1MCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjMxNzgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmNcIixcbiAgXCJGaXJzdExpbmVcIjogNjgwLFxuICBcIkxpbmVDb3VudFwiOiA0MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNjgwOlxcdFxcbiA2ODE6XFx0XFx0cmV0dXJuIGtleTtcXG4gNjgyOlxcdH1cXG4gNjgzOlxcdFxcbiA2ODQ6XFx0c3RhdGljIHZvaWQgcnR3ODlfd293X3VwZGF0ZV9rZXlfaW5mbyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGJvb2wgcnhfcmVhZHkpXFxuIDY4NTpcXHR7XFxuIDY4NjpcXHRcXHRzdHJ1Y3QgcnR3ODlfdmlmX2xpbmsgKnJ0d3ZpZl9saW5rID0gcnR3ZGV2LVxcdTAwM2V3b3cucnR3dmlmX2xpbms7XFxuIDY4NzpcXHRcXHRzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqd293X3ZpZiA9IHJ0d3ZpZl9saW5rX3RvX3ZpZihydHd2aWZfbGluayk7XFxuIDY4ODpcXHRcXHRzdHJ1Y3QgcnR3ODlfd293X3BhcmFtICpydHdfd293ID0gXFx1MDAyNnJ0d2Rldi1cXHUwMDNld293O1xcbiA2ODk6XFx0XFx0c3RydWN0IHJ0dzg5X3dvd19hb2FjX3JlcG9ydCAqYW9hY19ycHQgPSBcXHUwMDI2cnR3X3dvdy1cXHUwMDNlYW9hY19ycHQ7XFxuIDY5MDpcXHRcXHRzdHJ1Y3QgcnR3ODlfc2V0X2tleV9pbmZvX2l0ZXJfZGF0YSBkYXRhID0gey5lcnJvciA9IGZhbHNlLFxcbiA2OTE6XFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgIC5yeF9yZWFkeSA9IHJ4X3JlYWR5LFxcbiA2OTI6XFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgIC50a2lwX2d0a19zd2FwcGVkID0gZmFsc2V9O1xcbiA2OTM6XFx0XFx0c3RydWN0IGllZWU4MDIxMV9ic3NfY29uZiAqYnNzX2NvbmY7XFxuIDY5NDpcXHRcXHRzdHJ1Y3QgaWVlZTgwMjExX2tleV9jb25mICprZXk7XFxuIDY5NTpcXHRcXG4gNjk2OlxcdFxcdGllZWU4MDIxMV9pdGVyX2tleXMocnR3ZGV2LVxcdTAwM2Vodywgd293X3ZpZixcXG4gNjk3OlxcdFxcdFxcdFxcdCAgICBydHc4OV93b3dfc2V0X2tleV9pbmZvX2l0ZXIsIFxcdTAwMjZkYXRhKTtcXG4gNjk4OlxcdFxcbiA2OTk6XFx0XFx0aWYgKGRhdGEuZXJyb3IpIHtcXG4gNzAwOlxcdFxcdFxcdHJ0dzg5X2RlYnVnKHJ0d2RldiwgUlRXODlfREJHX1dPVywgXFxcIiVzIGVycm9yXFxcXG5cXFwiLCBfX2Z1bmNfXyk7XFxuIDcwMTpcXHRcXHRcXHRyZXR1cm47XFxuIDcwMjpcXHRcXHR9XFxuIDcwMzpcXHRcXG4gNzA0OlxcdFxcdGlmICghZGF0YS5ndGtfY2lwaGVyKVxcbiA3MDU6XFx0XFx0XFx0cmV0dXJuO1xcbiA3MDY6XFx0XFxuIDcwNzpcXHRcXHRrZXkgPSBydHc4OV93b3dfZ3RrX3Jla2V5KHJ0d2RldiwgZGF0YS5ndGtfY2lwaGVyLCBhb2FjX3JwdC1cXHUwMDNla2V5X2lkeCxcXG4gNzA4OlxcdFxcdFxcdFxcdFxcdCAgYW9hY19ycHQtXFx1MDAzZWd0ayk7XFxuIDcwOTpcXHRcXHRpZiAoIWtleSlcXG4gNzEwOlxcdFxcdFxcdHJldHVybjtcXG4gNzExOlxcdFxcbiA3MTI6XFx0XFx0cnR3ODlfcnhfaXZfdG9fcG4ocnR3ZGV2LCBrZXksXFxuIDcxMzpcXHRcXHRcXHRcXHQgIGFvYWNfcnB0LVxcdTAwM2VndGtfcnhfaXZba2V5LVxcdTAwM2VrZXlpZHhdKTtcXG4gNzE0OlxcdFxcbiA3MTU6XFx0XFx0aWYgKCFkYXRhLmlndGtfY2lwaGVyKVxcbiA3MTY6XFx0XFx0XFx0cmV0dXJuO1xcbiA3MTc6XFx0XFxuIDcxODpcXHRcXHRrZXkgPSBydHc4OV93b3dfZ3RrX3Jla2V5KHJ0d2RldiwgZGF0YS5pZ3RrX2NpcGhlciwgYW9hY19ycHQtXFx1MDAzZWlndGtfa2V5X2lkLFxcbiA3MTk6XFx0XFx0XFx0XFx0XFx0ICBhb2FjX3JwdC1cXHUwMDNlaWd0ayk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDIxOjQyOjEzLjc2NzcyOTkwM1oiLCJTZXEiOjUxLCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo1MzUzMjIxNzM4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIHJ0dzg5IFBhdGNoKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBJdCBsb29rcyBsaWtlIHRoZSBgcnR3ODlgIGRyaXZlciBoYXMgYmVlbiB1cGRhdGVkIHRvIHJlcGxhY2UgdGhlIFJDVS1iYXNlZCBrZXkgaXRlcmF0aW9uIChgcmN1X3JlYWRfbG9jaygpOyBpZWVlODAyMTFfaXRlcl9rZXlzX3JjdSguLi4pOyByY3VfcmVhZF91bmxvY2soKTtgKSB3aXRoIGEgZGlyZWN0IGNhbGwgdG8gYGllZWU4MDIxMV9pdGVyX2tleXMoKWAuIFRoZSByYXRpb25hbGUgaXMgc3RyYWlnaHRmb3J3YXJkOiBgaWVlZTgwMjExX2l0ZXJfa2V5cygpYCBleHBlY3RzIHRoZSB3aXBoeSBsb2NrIHRvIGJlIGhlbGQgKHZlcmlmaWVkIGJ5IGBsb2NrZGVwX2Fzc2VydF93aXBoeShody1cdTAwM2V3aXBoeSk7YCksIHdoaWNoIGlzIGxpa2VseSBhbHJlYWR5IHRoZSBjYXNlIGluIHRoZSBjYWxsZXJzLCB0aGVyZWZvcmUgdXNpbmcgdGhhdCBtZXRob2QgaXMgYmV0dGVyIHRoYW4gdGhlIFJDVSBtZXRob2QuIEl0IGFsc28gdXNlcyBzYWZlIGl0ZXJhdGlvbiwgYGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZWAuXG5cbk5vdywgdGhlIGltcG9ydGFudCBxdWVzdGlvbjogYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzPyBMZXQncyB0aWNrIHRocm91Z2ggdGhlIHVzdWFsIHN1c3BlY3RzLiBGaXJzdCwgaXMgYW55dGhpbmcgYmVpbmcgc2VudCB0byB1c2VyIHNwYWNlPyBOb3BlLCB0aGF0J3Mgbm90IHRoZSBjYXNlLiBOZXh0LCBpcyB0aGVyZSBhbnkgY29uZGl0aW9uYWwgbG9naWMgdGhhdCByZWxpZXMgb24gdW5pbml0aWFsaXplZCB2YXJpYWJsZXM/IE5vcGUuIEFyZSB3ZSBhbGxvY2F0aW5nIGFuZCBpbml0aWFsaXppbmcgbmV3IGRhdGEgc3RydWN0dXJlcz8gTm9wZS4gRmluYWxseSwgYXJlIHdlIGRlYWxpbmcgd2l0aCBib3VuZHMgY2hlY2tzIG9yIGxlbmd0aCBjYWxjdWxhdGlvbnMgdGhhdCBtaWdodCBhbGxvdyBhY2Nlc3MgdG8gdW5pbml0aWFsaXplZCBieXRlcz8gTm9wZS5cblxuQmFzaWNhbGx5LCB0aGlzIHBhdGNoIGlzIGEgcHVyZSByZWZhY3RvcmluZyBvZiB0aGUgaXRlcmF0aW9uIGhlbHBlciwgY2hhbmdpbmcgaXQgZnJvbSB0aGUgUkNVIHZlcnNpb24gdG8gdGhlIGxvY2tlZCB2ZXJzaW9uLiBBbnkgY29uY3VycmVuY3kgcHJvYmxlbXMg4oCTIGxpa2Ugbm90IGhvbGRpbmcgdGhlIHdpcGh5IGxvY2ssIG9yIHBvdGVudGlhbCBrZXktZnJlZWluZyBpc3N1ZXMg4oCTIGFyZSBnb2luZyB0byBiZSBjYXVnaHQgYnkgTE9DS0RFUCBvciBLQVNBTi4gV2UgYXJlbid0IGludHJvZHVjaW5nIGFueSByaXNrcyBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2Ugb3IgaW5mb3JtYXRpb24gbGVha3MuXG5cblRoZXJlZm9yZSwgdGhpcyBwYXRjaCBkb2Vzbid0IHdhcnJhbnQgS01TQU4gZnV6emluZy4gSXQncyBhIGNvbmN1cnJlbmN5LXJlbGF0ZWQgY2hhbmdlLCB3aGljaCBpcyBiZXN0IGFkZHJlc3NlZCBieSBMT0NLREVQIGFuZCBLQVNBTi4gSXQncyBhIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIHJlZmFjdG9yLCBmb2N1c2luZyBvbiBpdGVyYXRpb24gdGhyb3VnaCBrZXlzLCBhbmQgYXNzZXJ0aW5nIHRoZSB3aXBoeSBsb2NrIGluc3RlYWQgb2YgdXNpbmcgdGhlIFJDVSByZWFkIGxvY2suIE5vIG1lbW9yeSBhbGxvY2F0aW9uLCBubyBtb2RpZmljYXRpb24gb2YgYnVmZmVyIGJvdW5kcywgbm8gbmV3IHN0cnVjdHMsIG5vIGNvcHkgb2YgdW5pbml0aWFsaXplZCBkYXRhIHRvIHVzZXJzcGFjZS4gTG9ja2luZyBpc3N1ZXMgb3IgY29uY3VycmVudCBtb2RpZmljYXRpb24vVUFGIGFyZSB0aGUgcmlza3MgaGVyZSwgYW5kIEtBU0FOL0xPQ0tERVAgaGFuZGxlIHRob3NlIGNhc2VzLiBUaGVyZWZvcmUsIG5vIG5lZWQgdG8gcnVuIGEgS01TQU4gZnV6emluZyBzZXNzaW9uLiBMZXQncyBjYWxsIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjkyMjcsIk91dHB1dFRva2VucyI6MjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjAzLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMjE6NDI6MTkuMTIwOTU1MTExWiIsIlNlcSI6NTIsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjM4MzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCByZXBsYWNlcyBgcmN1X3JlYWRfbG9jaygpYCAvIGBpZWVlODAyMTFfaXRlcl9rZXlzX3JjdSgpYCB3aXRoIGBpZWVlODAyMTFfaXRlcl9rZXlzKClgIGluIHRoZSBSZWFsdGVrIHJ0dzg5IGRyaXZlciAoYHJ0dzg5X2NhbV9yZXNldF9rZXlzYCwgYHJ0dzg5X3dvd19jb25zdHJ1Y3Rfa2V5X2luZm9gLCBhbmQgYHJ0dzg5X3dvd191cGRhdGVfa2V5X2luZm9gKS5cXG5cXG5UaGlzIGNoYW5nZSBwdXJlbHkgYWRqdXN0cyBob3cgdGhlIGRyaXZlciBpdGVyYXRlcyBvdmVyIG1hYzgwMjExIGtleXMsIHJlbHlpbmcgb24gdGhlIGNhbGxlciBob2xkaW5nIHRoZSB3aXBoeSBsb2NrIChgbG9ja2RlcF9hc3NlcnRfd2lwaHlgKSBpbnN0ZWFkIG9mIGVudGVyaW5nIGFuIFJDVSByZWFkLXNpZGUgY3JpdGljYWwgc2VjdGlvbi5cXG5cXG5UaGVyZSBhcmUgbm8gbmV3IG1lbW9yeSBhbGxvY2F0aW9ucywgdW5pbml0aWFsaXplZCB2YXJpYWJsZSBhY2Nlc3NlcywgaW5mby1sZWFrcyB0byB1c2Vyc3BhY2UsIG9yIGFsdGVyZWQgYnVmZmVyIGJvdW5kcy4gQW55IHBvdGVudGlhbCBsb2NraW5nIGlzc3VlcyAoc3VjaCBhcyBtaXNzaW5nIHdpcGh5IGxvY2spIG9yIHN5bmNocm9uaXphdGlvbi9tZW1vcnkgc2FmZXR5IGJ1Z3MgKHN1Y2ggYXMgY29uY3VycmVudCBsaXN0IGFjY2VzcyBvciB1c2UtYWZ0ZXItZnJlZSkgYXJlIGRldGVjdGFibGUgYnkgTE9DS0RFUCBhbmQgS0FTQU4uIFRoZXJlZm9yZSwgS01TQU4gaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlcGxhY2VzIGByY3VfcmVhZF9sb2NrKClgIC8gYGllZWU4MDIxMV9pdGVyX2tleXNfcmN1KClgIHdpdGggYGllZWU4MDIxMV9pdGVyX2tleXMoKWAgaW4gdGhlIFJlYWx0ZWsgcnR3ODkgZHJpdmVyIChgcnR3ODlfY2FtX3Jlc2V0X2tleXNgLCBgcnR3ODlfd293X2NvbnN0cnVjdF9rZXlfaW5mb2AsIGFuZCBgcnR3ODlfd293X3VwZGF0ZV9rZXlfaW5mb2ApLlxcblxcblRoaXMgY2hhbmdlIHB1cmVseSBhZGp1c3RzIGhvdyB0aGUgZHJpdmVyIGl0ZXJhdGVzIG92ZXIgbWFjODAyMTEga2V5cywgcmVseWluZyBvbiB0aGUgY2FsbGVyIGhvbGRpbmcgdGhlIHdpcGh5IGxvY2sgKGBsb2NrZGVwX2Fzc2VydF93aXBoeWApIGluc3RlYWQgb2YgZW50ZXJpbmcgYW4gUkNVIHJlYWQtc2lkZSBjcml0aWNhbCBzZWN0aW9uLlxcblxcblRoZXJlIGFyZSBubyBuZXcgbWVtb3J5IGFsbG9jYXRpb25zLCB1bmluaXRpYWxpemVkIHZhcmlhYmxlIGFjY2Vzc2VzLCBpbmZvLWxlYWtzIHRvIHVzZXJzcGFjZSwgb3IgYWx0ZXJlZCBidWZmZXIgYm91bmRzLiBBbnkgcG90ZW50aWFsIGxvY2tpbmcgaXNzdWVzIChzdWNoIGFzIG1pc3Npbmcgd2lwaHkgbG9jaykgb3Igc3luY2hyb25pemF0aW9uL21lbW9yeSBzYWZldHkgYnVncyAoc3VjaCBhcyBjb25jdXJyZW50IGxpc3QgYWNjZXNzIG9yIHVzZS1hZnRlci1mcmVlKSBhcmUgZGV0ZWN0YWJsZSBieSBMT0NLREVQIGFuZCBLQVNBTi4gVGhlcmVmb3JlLCBLTVNBTiBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },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-workflowdmp7m[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-08 21:19:51 +0000 UTC FinishedAt: 2026-09-08 21:42:20 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "13e51269b6656768dc595ed6025e4974f2026543", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "RTW89", "RTW89_CORE", "RTW89_USB", "RTW89_8852AU", "MAC80211" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "13e51269b6656768dc595ed6025e4974f2026543", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "RTW89", "RTW89_CORE", "RTW89_USB", "RTW89_8852AU", "MAC80211" ], "series_id": "aacedae2-9bbb-41ff-a42c-2ee0d38a7e1b" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "rtw89_cam_reset_keys", "rtw89_wow_construct_key_info", "rtw89_wow_update_key_info" ], "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+CgkJCTx0ZD4yMDI2LzA5LzA4IDIxOjQwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1JUVzg5JiMzNDssCiAgICAmIzM0O1JUVzg5X0NPUkUmIzM0OywKICAgICYjMzQ7UlRXODlfVVNCJiMzNDssCiAgICAmIzM0O1JUVzg5Xzg4NTJBVSYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3J0dzg5X2NhbV9yZXNldF9rZXlzJiMzNDssCiAgICAmIzM0O3J0dzg5X3dvd19jb25zdHJ1Y3Rfa2V5X2luZm8mIzM0OywKICAgICYjMzQ7cnR3ODlfd293X3VwZGF0ZV9rZXlfaW5mbyYjMzQ7CiAgXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlcGxhY2VzIGByY3VfcmVhZF9sb2NrKClgIC8gYGllZWU4MDIxMV9pdGVyX2tleXNfcmN1KClgIHdpdGggYGllZWU4MDIxMV9pdGVyX2tleXMoKWAgaW4gdGhlIFJlYWx0ZWsgcnR3ODkgZHJpdmVyIChgcnR3ODlfY2FtX3Jlc2V0X2tleXNgLCBgcnR3ODlfd293X2NvbnN0cnVjdF9rZXlfaW5mb2AsIGFuZCBgcnR3ODlfd293X3VwZGF0ZV9rZXlfaW5mb2ApLlxuXG5UaGlzIGNoYW5nZSBwdXJlbHkgYWRqdXN0cyBob3cgdGhlIGRyaXZlciBpdGVyYXRlcyBvdmVyIG1hYzgwMjExIGtleXMsIHJlbHlpbmcgb24gdGhlIGNhbGxlciBob2xkaW5nIHRoZSB3aXBoeSBsb2NrIChgbG9ja2RlcF9hc3NlcnRfd2lwaHlgKSBpbnN0ZWFkIG9mIGVudGVyaW5nIGFuIFJDVSByZWFkLXNpZGUgY3JpdGljYWwgc2VjdGlvbi5cblxuVGhlcmUgYXJlIG5vIG5ldyBtZW1vcnkgYWxsb2NhdGlvbnMsIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUgYWNjZXNzZXMsIGluZm8tbGVha3MgdG8gdXNlcnNwYWNlLCBvciBhbHRlcmVkIGJ1ZmZlciBib3VuZHMuIEFueSBwb3RlbnRpYWwgbG9ja2luZyBpc3N1ZXMgKHN1Y2ggYXMgbWlzc2luZyB3aXBoeSBsb2NrKSBvciBzeW5jaHJvbml6YXRpb24vbWVtb3J5IHNhZmV0eSBidWdzIChzdWNoIGFzIGNvbmN1cnJlbnQgbGlzdCBhY2Nlc3Mgb3IgdXNlLWFmdGVyLWZyZWUpIGFyZSBkZXRlY3RhYmxlIGJ5IExPQ0tERVAgYW5kIEtBU0FOLiBUaGVyZWZvcmUsIEtNU0FOIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcmVwbGFjZXMgUkNVLWJhc2VkIGtleSBpdGVyYXRpb24gKGllZWU4MDIxMV9pdGVyX2tleXNfcmN1KSB3aXRoIGllZWU4MDIxMV9pdGVyX2tleXMgaW4gcnR3ODkgQ0FNIGFuZCBXb1dMQU4gcGF0aHMuIGllZWU4MDIxMV9pdGVyX2tleXMgZW5mb3JjZXMgYSB3aXBoeSBtdXRleCBhc3NlcnRpb24gKGxvY2tkZXBfYXNzZXJ0X3dpcGh5KSwgY2hhbmdpbmcgbG9ja2luZyBhbmQgc3luY2hyb25pemF0aW9uIGFzc3VtcHRpb25zIGR1cmluZyBrZXkgcmVzZXQgYW5kIFdvV0xBTiBrZXkgY29uc3RydWN0aW9uL3VwZGF0ZXMuIFRoZSBkcml2ZXIgaXMgYWNjZXNzaWJsZSB2aWEgVVNCIGdhZGdldCBlbXVsYXRpb24gYW5kIHdvcnRoIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMjE6NDA8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA0ODk2NzI2MTIyYTQ5YzJmNjk3NGQ3MmRmY2I2ZWMzMmQ0MTRlNzhjXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBTZXAgOCAyMTo0MDoyOCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NhbS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jYW0uY1xuaW5kZXggN2M2MmVjZTEzN2QwMS4uMjJmMjFhMDRhOTZkMiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY2FtLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY2FtLmNcbkBAIC02MDUsOSAmIzQzOzYwNSw3IEBAIHZvaWQgcnR3ODlfY2FtX2RlaW5pdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHN0cnVjdCBydHc4OV92aWZfbGluayAqcnR3dmlmX2xpXG4gXG4gdm9pZCBydHc4OV9jYW1fcmVzZXRfa2V5cyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXG4ge1xuLVx0cmN1X3JlYWRfbG9jaygpO1xuLVx0aWVlZTgwMjExX2l0ZXJfa2V5c19yY3UocnR3ZGV2LVx1MDAzZWh3LCBOVUxMLCBydHc4OV9jYW1fcmVzZXRfa2V5X2l0ZXIsIHJ0d2Rldik7XG4tXHRyY3VfcmVhZF91bmxvY2soKTtcbiYjNDM7XHRpZWVlODAyMTFfaXRlcl9rZXlzKHJ0d2Rldi1cdTAwM2VodywgTlVMTCwgcnR3ODlfY2FtX3Jlc2V0X2tleV9pdGVyLCBydHdkZXYpO1xuIH1cbiBcbiBzdGF0aWMgaW50IHJ0dzg5X2NhbV9nZXRfYXZhaWxfYWRkcl9jYW0oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jXG5pbmRleCAyZGZhMjRjNTRlN2Q3Li4wYmYzNDY5MmM3Y2UzIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuY1xuQEAgLTQ3MywxMCAmIzQzOzQ3Myw4IEBAIHN0YXRpYyB2b2lkIHJ0dzg5X3dvd19jb25zdHJ1Y3Rfa2V5X2luZm8oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuIFx0c3RydWN0IGllZWU4MDIxMV92aWYgKndvd192aWYgPSBydHd2aWZfbGlua190b192aWYocnR3dmlmX2xpbmspO1xuIFx0Ym9vbCBlcnIgPSBmYWxzZTtcbiBcbi1cdHJjdV9yZWFkX2xvY2soKTtcbi1cdGllZWU4MDIxMV9pdGVyX2tleXNfcmN1KHJ0d2Rldi1cdTAwM2Vodywgd293X3ZpZixcbi1cdFx0XHRcdHJ0dzg5X3dvd19nZXRfa2V5X2luZm9faXRlciwgXHUwMDI2ZXJyKTtcbi1cdHJjdV9yZWFkX3VubG9jaygpO1xuJiM0MztcdGllZWU4MDIxMV9pdGVyX2tleXMocnR3ZGV2LVx1MDAzZWh3LCB3b3dfdmlmLFxuJiM0MztcdFx0XHQgICAgcnR3ODlfd293X2dldF9rZXlfaW5mb19pdGVyLCBcdTAwMjZlcnIpO1xuIFxuIFx0aWYgKGVycikge1xuIFx0XHRydHc4OV93b3dfa2V5X2NsZWFyKHJ0d2Rldik7XG5AQCAtNjk1LDEwICYjNDM7NjkzLDggQEAgc3RhdGljIHZvaWQgcnR3ODlfd293X3VwZGF0ZV9rZXlfaW5mbyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGJvb2wgcnhfcmVhZHkpXG4gXHRzdHJ1Y3QgaWVlZTgwMjExX2Jzc19jb25mICpic3NfY29uZjtcbiBcdHN0cnVjdCBpZWVlODAyMTFfa2V5X2NvbmYgKmtleTtcbiBcbi1cdHJjdV9yZWFkX2xvY2soKTtcbi1cdGllZWU4MDIxMV9pdGVyX2tleXNfcmN1KHJ0d2Rldi1cdTAwM2Vodywgd293X3ZpZixcbi1cdFx0XHRcdHJ0dzg5X3dvd19zZXRfa2V5X2luZm9faXRlciwgXHUwMDI2ZGF0YSk7XG4tXHRyY3VfcmVhZF91bmxvY2soKTtcbiYjNDM7XHRpZWVlODAyMTFfaXRlcl9rZXlzKHJ0d2Rldi1cdTAwM2Vodywgd293X3ZpZixcbiYjNDM7XHRcdFx0ICAgIHJ0dzg5X3dvd19zZXRfa2V5X2luZm9faXRlciwgXHUwMDI2ZGF0YSk7XG4gXG4gXHRpZiAoZGF0YS5lcnJvcikge1xuIFx0XHRydHc4OV9kZWJ1ZyhydHdkZXYsIFJUVzg5X0RCR19XT1csIFwmIzM0OyVzIGVycm9yXFxuXCYjMzQ7LCBfX2Z1bmNfXyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMjE6NDA8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7UlRXODkmIzM0OywKICAgICYjMzQ7UlRXODlfQ09SRSYjMzQ7LAogICAgJiMzNDtSVFc4OV9VU0ImIzM0OywKICAgICYjMzQ7UlRXODlfODg1MkFVJiMzNDssCiAgICAmIzM0O01BQzgwMjExJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cnR3ODlfY2FtX3Jlc2V0X2tleXMmIzM0OywKICAgICYjMzQ7cnR3ODlfd293X2NvbnN0cnVjdF9rZXlfaW5mbyYjMzQ7LAogICAgJiMzNDtydHc4OV93b3dfdXBkYXRlX2tleV9pbmZvJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlcGxhY2VzIFJDVS1iYXNlZCBrZXkgaXRlcmF0aW9uIChpZWVlODAyMTFfaXRlcl9rZXlzX3JjdSkgd2l0aCBpZWVlODAyMTFfaXRlcl9rZXlzIGluIHJ0dzg5IENBTSBhbmQgV29XTEFOIHBhdGhzLiBpZWVlODAyMTFfaXRlcl9rZXlzIGVuZm9yY2VzIGEgd2lwaHkgbXV0ZXggYXNzZXJ0aW9uIChsb2NrZGVwX2Fzc2VydF93aXBoeSksIGNoYW5naW5nIGxvY2tpbmcgYW5kIHN5bmNocm9uaXphdGlvbiBhc3N1bXB0aW9ucyBkdXJpbmcga2V5IHJlc2V0IGFuZCBXb1dMQU4ga2V5IGNvbnN0cnVjdGlvbi91cGRhdGVzLiBUaGUgZHJpdmVyIGlzIGFjY2Vzc2libGUgdmlhIFVTQiBnYWRnZXQgZW11bGF0aW9uIGFuZCB3b3J0aCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3MKdG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncywKYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy4KCi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6CiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZAogIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuCiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLAogIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy4KCi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgJiMzNDtOTyBGVU5DVElPTkFMIENIQU5HRSYjMzQ7IChORkNJKSBPUiAmIzM0O1JFRkFDVE9SSU5HJiMzNDsgQ0xBSU1TOgogIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgJiMzNDtjbGVhbnVwcyYjMzQ7LCAmIzM0O3JlZmFjdG9yaW5ncyYjMzQ7LCBvciBzdGF0ZQogICYjMzQ7Tm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWQmIzM0Oy4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuCiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50CiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuCiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC4KCi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6CiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLAogIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLgogIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXIKICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoyLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOgoKLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOgogICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLgogICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pCiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuCiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50cwogICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy4KICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy4KLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6CiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczoKICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZwogICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuCiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQozLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6Ci0gQ29yZSBTdWJzeXN0ZW1zOgogICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLAogICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLgotIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczoKICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy4KLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6CiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuCi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczoKICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpXaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjoKCi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOgogIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzCiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHQKICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS4KICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgJiMzNDtmb2N1c2VkJiMzNDssCiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLgoKLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6CiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzCiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuCgotIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKToKICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrCiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuCiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyCiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlncwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOgotIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCi0gQ2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC4KLSBTdHJpcCBhbnkgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNDg5NjcyNjEyMmE0OWMyZjY5NzRkNzJkZmNiNmVjMzJkNDE0ZTc4YwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgU2VwIDggMjE6NDA6MjggMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NhbS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jYW0uYwppbmRleCA3YzYyZWNlMTM3ZDAxLi4yMmYyMWEwNGE5NmQyIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NhbS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY2FtLmMKQEAgLTYwNSw5ICYjNDM7NjA1LDcgQEAgdm9pZCBydHc4OV9jYW1fZGVpbml0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldiwgc3RydWN0IHJ0dzg5X3ZpZl9saW5rICpydHd2aWZfbGkKIAogdm9pZCBydHc4OV9jYW1fcmVzZXRfa2V5cyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpCiB7Ci0JcmN1X3JlYWRfbG9jaygpOwotCWllZWU4MDIxMV9pdGVyX2tleXNfcmN1KHJ0d2Rldi0mZ3Q7aHcsIE5VTEwsIHJ0dzg5X2NhbV9yZXNldF9rZXlfaXRlciwgcnR3ZGV2KTsKLQlyY3VfcmVhZF91bmxvY2soKTsKJiM0MzsJaWVlZTgwMjExX2l0ZXJfa2V5cyhydHdkZXYtJmd0O2h3LCBOVUxMLCBydHc4OV9jYW1fcmVzZXRfa2V5X2l0ZXIsIHJ0d2Rldik7CiB9CiAKIHN0YXRpYyBpbnQgcnR3ODlfY2FtX2dldF9hdmFpbF9hZGRyX2NhbShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYwppbmRleCAyZGZhMjRjNTRlN2Q3Li4wYmYzNDY5MmM3Y2UzIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMKQEAgLTQ3MywxMCAmIzQzOzQ3Myw4IEBAIHN0YXRpYyB2b2lkIHJ0dzg5X3dvd19jb25zdHJ1Y3Rfa2V5X2luZm8oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KQogCXN0cnVjdCBpZWVlODAyMTFfdmlmICp3b3dfdmlmID0gcnR3dmlmX2xpbmtfdG9fdmlmKHJ0d3ZpZl9saW5rKTsKIAlib29sIGVyciA9IGZhbHNlOwogCi0JcmN1X3JlYWRfbG9jaygpOwotCWllZWU4MDIxMV9pdGVyX2tleXNfcmN1KHJ0d2Rldi0mZ3Q7aHcsIHdvd192aWYsCi0JCQkJcnR3ODlfd293X2dldF9rZXlfaW5mb19pdGVyLCAmYW1wO2Vycik7Ci0JcmN1X3JlYWRfdW5sb2NrKCk7CiYjNDM7CWllZWU4MDIxMV9pdGVyX2tleXMocnR3ZGV2LSZndDtodywgd293X3ZpZiwKJiM0MzsJCQkgICAgcnR3ODlfd293X2dldF9rZXlfaW5mb19pdGVyLCAmYW1wO2Vycik7CiAKIAlpZiAoZXJyKSB7CiAJCXJ0dzg5X3dvd19rZXlfY2xlYXIocnR3ZGV2KTsKQEAgLTY5NSwxMCAmIzQzOzY5Myw4IEBAIHN0YXRpYyB2b2lkIHJ0dzg5X3dvd191cGRhdGVfa2V5X2luZm8oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBib29sIHJ4X3JlYWR5KQogCXN0cnVjdCBpZWVlODAyMTFfYnNzX2NvbmYgKmJzc19jb25mOwogCXN0cnVjdCBpZWVlODAyMTFfa2V5X2NvbmYgKmtleTsKIAotCXJjdV9yZWFkX2xvY2soKTsKLQlpZWVlODAyMTFfaXRlcl9rZXlzX3JjdShydHdkZXYtJmd0O2h3LCB3b3dfdmlmLAotCQkJCXJ0dzg5X3dvd19zZXRfa2V5X2luZm9faXRlciwgJmFtcDtkYXRhKTsKLQlyY3VfcmVhZF91bmxvY2soKTsKJiM0MzsJaWVlZTgwMjExX2l0ZXJfa2V5cyhydHdkZXYtJmd0O2h3LCB3b3dfdmlmLAomIzQzOwkJCSAgICBydHc4OV93b3dfc2V0X2tleV9pbmZvX2l0ZXIsICZhbXA7ZGF0YSk7CiAKIAlpZiAoZGF0YS5lcnJvcikgewogCQlydHc4OV9kZWJ1ZyhydHdkZXYsIFJUVzg5X0RCR19XT1csICYjMzQ7JXMgZXJyb3JcbiYjMzQ7LCBfX2Z1bmNfXyk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDIxOjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM2MDYKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAxMDIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBSVFc4OSBQYXRjaCoqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgcGF0Y2guIEkgc2VlIG1vZGlmaWNhdGlvbnMgdG91Y2hpbmcgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY2FtLmNgIGFuZCBgZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuY2AuIEltbWVkaWF0ZWx5LCBteSBicmFpbiBraWNrcyBpbnRvIGdlYXI6IHJ0dzg5Li4uIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeS4gSXMgdGhpcyB0aGUgUENJZSwgVVNCLCBvciBTRElPIFJlYWx0ZWsgd2lyZWxlc3MgZHJpdmVyPyBUaW1lIHRvIHF1aWNrbHkgY29uZmlybSBteSBhc3N1bXB0aW9ucy4gSSYjMzk7bGwgcHJvYmFibHkgZmlyZSB1cCBgZ3JlcHBlcmAgb3IganVzdCBxdWlja2x5IHJlYWQgdGhlIHJlbGV2YW50IGZpbGVzIGFuZCB0aGUgYXNzb2NpYXRlZCBLY29uZmlnIHRvIGdldCB0aGUgY29tcGxldGUgcGljdHVyZS4gTmVlZCB0byB1bmRlcnN0YW5kIHRoZSBzY29wZSBvZiB0aGVzZSBjaGFuZ2VzIGJlZm9yZSBJIGNhbiBhc3Nlc3MgdGhlIGltcGFjdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAyMTo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgUlRXODkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgT1IgQlNELTMtQ2xhdXNlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MjptZW51Y29uZmlnIFJUVzg5XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODAyLjExYXggd2lyZWxlc3MgY2hpcHMgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZz0xMT1pZiBSVFc4OVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTEyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjEzOmNvbmZpZyBSVFc4OV9DT1JFXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTQtXHR0cmlzdGF0ZVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoxNzpjb25maWcgUlRXODlfUENJXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTgtXHR0cmlzdGF0ZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjIwOmNvbmZpZyBSVFc4OV9VU0JcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0yMS1cdHRyaXN0YXRlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMjItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MjM6Y29uZmlnIFJUVzg5Xzg4NTFCXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMjQtXHR0cmlzdGF0ZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTI1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjI2OmNvbmZpZyBSVFc4OV84ODUyQVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTI3LVx0dHJpc3RhdGVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0yOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoyOTpjb25maWcgUlRXODlfODg1MkJfQ09NTU9OXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMzAtXHR0cmlzdGF0ZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTMxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjMyOmNvbmZpZyBSVFc4OV84ODUyQlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTMzLVx0dHJpc3RhdGVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0zNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzozNTpjb25maWcgUlRXODlfODg1MkJUXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMzYtXHR0cmlzdGF0ZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTM3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjM4OmNvbmZpZyBSVFc4OV84ODUyQ1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTM5LVx0dHJpc3RhdGVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy00MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzo0MTpjb25maWcgUlRXODlfODkyMkFcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy00Mi1cdHRyaXN0YXRlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctNDMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6NDQ6Y29uZmlnIFJUVzg5Xzg5MjJEXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctNDUtXHR0cmlzdGF0ZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTQ2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjQ3OmNvbmZpZyBSVFc4OV84ODUxQkVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy00OC1cdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODg1MUJFIFBDSSB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2KSBhZGFwdGVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTU3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjU4OmNvbmZpZyBSVFc4OV84ODUxQlVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy01OS1cdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODg1MUJVIFVTQiB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2KSBhZGFwdGVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTY4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjY5OmNvbmZpZyBSVFc4OV84ODUyQUVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy03MC1cdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODg1MkFFIFBDSSB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2KSBhZGFwdGVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTc5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjgwOmNvbmZpZyBSVFc4OV84ODUyQVVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy04MS1cdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODg1MkFVIFVTQiB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2KSBhZGFwdGVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTkwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjkxOmNvbmZpZyBSVFc4OV84ODUyQkVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy05Mi1cdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODg1MkJFIFBDSSB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2KSBhZGFwdGVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTEwMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoxMDM6Y29uZmlnIFJUVzg5Xzg4NTJCVVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTEwNC1cdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODg1MkJVIFVTQiB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2KSBhZGFwdGVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTExNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoxMTU6Y29uZmlnIFJUVzg5Xzg4NTJCVEVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xMTYtXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg4NTJCRS1WVCBQQ0kgd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNikgYWRhcHRlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xMjYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTI3OmNvbmZpZyBSVFc4OV84ODUyQ0VcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xMjgtXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg4NTJDRSBQQ0kgd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNkUpIGFkYXB0ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTM3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjEzODpjb25maWcgUlRXODlfODg1MkNVXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTM5LVx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayA4ODUyQ1UgVVNCIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDZFKSBhZGFwdGVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE0OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoxNDk6Y29uZmlnIFJUVzg5Xzg5MjJBRVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE1MC1cdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODkyMkFFLzg5MjJBRS1WUyBQQ0kgd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNykgYWRhcHRlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xNjItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTYzOmNvbmZpZyBSVFc4OV84OTIyQVVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xNjQtXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg5MjJBVSBVU0Igd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNykgYWRhcHRlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xNzQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTc1OmNvbmZpZyBSVFc4OV84OTIyREVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xNzYtXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg5MjJERS84OTIyREUtVlMgUENJIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDcpIGFkYXB0ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTg2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjE4Nzpjb25maWcgUlRXODlfREVCVUdcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xODgtXHRib29sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTg5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjE5MDpjb25maWcgUlRXODlfREVCVUdNU0dcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xOTEtXHRib29sIFwmIzM0O1JlYWx0ZWsgcnR3ODkgZGVidWcgbWVzc2FnZSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE5OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoxOTk6Y29uZmlnIFJUVzg5X0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0yMDAtXHRib29sIFwmIzM0O1JlYWx0ZWsgcnR3ODkgZGVidWdmcyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTIwNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoyMDg6Y29uZmlnIFJUVzg5X0xFRFNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0yMDktXHRib29sXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTIxNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoyMTU6Y29uZmlnIFJUVzg5X0xFRFNfTUNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0yMTYtXHRib29sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMjE6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjU0OQoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDI2MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipVU0IgUlRXODkgRHJpdmVyIEV4cGxvcmF0aW9uKioKCk9rYXksIHNvIEkmIzM5O3ZlIG5vdGljZWQgdGhlc2UgVVNCIHZlcnNpb25zIG9mIHJ0dzg5IGRyaXZlcnMg4oCTIFJUVzg5Xzg4NTFCVSwgODg1MkFVLCBldGMuIEludGVyZXN0aW5nLiBTaW5jZSB0aGV5JiMzOTtyZSBVU0IsIHRoYXQgb3BlbnMgdXAgYSB3aG9sZSBhdmVudWUgZm9yIHRlc3RpbmcuIEkgY291bGQgZW11bGF0ZSB0aGVtIHVzaW5nIFVTQiBnYWRnZXQsIHJhdy1nYWRnZXQsIG9yIGV2ZW4gc3l6a2FsbGVyJiMzOTtzIFVTQiBmdXp6aW5nIGNhcGFiaWxpdGllcyAobGlrZSBzeXpfdXNiX2Nvbm5lY3QpLiBWaXJ0dWFsIFVTQiBpcyBhbm90aGVyIG9wdGlvbi4KCk15IGltbWVkaWF0ZSBxdWVzdGlvbiBpczogZG9lcyBzeXprYWxsZXIgYWxyZWFkeSB0YXJnZXQgVVNCIFdpLUZpIGRyaXZlcnMsIGFuZCwgbW9yZSBzcGVjaWZpY2FsbHksIGlzIHRoaXMgUlRXODkgVVNCIGRyaXZlciBlbXVsYXRhYmxlIG9yIGV2ZW4gcmVhY2hhYmxlIHdpdGggdGhvc2UgdG9vbHM/IFRoYXQmIzM5O3Mgd2hhdCBJIG5lZWQgdG8gZmlndXJlIG91dCBmaXJzdC4KCkJleW9uZCB0aGF0LCBJIG5lZWQgdG8gZGVsdmUgaW50byB0aGlzIHBhdGNoIGFuZCB1bmRlcnN0YW5kIHRoZSBjb2RlIGl0c2VsZi4gSSYjMzk7bSB3b25kZXJpbmcgaWYgbWFjODAyMTEgb3IgbWFjODAyMTFfaHdzaW0gKG9yIHNvbWV0aGluZyBzaW1pbGFyKSBpcyBpbiB0aGUgbWl4LiBJIHJlYWxseSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCYjMzk7cyBnb2luZyBvbiB3aXRoIGBydHc4OV9jYW1fcmVzZXRfa2V5c2AgYW5kIHRoZSBgcnR3ODlfd293XypgIGZ1bmN0aW9ucywgcGFydGljdWxhcmx5IGBydHc4OV93b3dfY29uc3RydWN0X2tleV9pbmZvYCBhbmQgYHJ0dzg5X3dvd191cGRhdGVfa2V5X2luZm9gLiBUaGF0IG5hbWluZyBzdWdnZXN0cyBzb21lIGtpbmQgb2Ygd2FrZS1vbi13aXJlbGVzcyBvciBzZWN1cml0eSBrZXkgbWFuYWdlbWVudCwgYW5kIHRoYXQgY291bGQgYmUgaW50ZXJlc3RpbmcgZnJvbSBhIHNlY3VyaXR5IHBlcnNwZWN0aXZlLgoKVG8gZ2FpbiBhIHNvbGlkIHVuZGVyc3RhbmRpbmcsIEkmIzM5O2xsIHN0YXJ0IGJ5IGNoZWNraW5nIGFsbCB0aGUgY2FsbGVycyBvZiBgcnR3ODlfY2FtX3Jlc2V0X2tleXNgLCBgcnR3ODlfd293X2NvbnN0cnVjdF9rZXlfaW5mb2AsIGFuZCBgcnR3ODlfd293X3VwZGF0ZV9rZXlfaW5mb2AuIFRoaXMgc2hvdWxkIGdpdmUgbWUgYSBnb29kIGhhbmRsZSBvbiBob3cgdGhlc2UgZnVuY3Rpb25zIGFyZSB1c2VkIHdpdGhpbiB0aGUgZHJpdmVyJiMzOTtzIGNvbnRleHQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMjE6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cnR3ODlfY2FtX3Jlc2V0X2tleXMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY2FtLmM9NTk3PXZvaWQgcnR3ODlfY2FtX2RlaW5pdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHN0cnVjdCBydHc4OV92aWZfbGluayAqcnR3dmlmX2xpbmspXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jYW0uYy02MDUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NhbS5jOjYwNjp2b2lkIHJ0dzg5X2NhbV9yZXNldF9rZXlzKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY2FtLmMtNjA3LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NhbS5oPTQ3Mz12b2lkIHJ0dzg5X2NhbV9ic3NpZF9jaGFuZ2VkKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY2FtLmgtNDc0LVx0XHRcdCAgICAgc3RydWN0IHJ0dzg5X3ZpZl9saW5rICpydHd2aWZfbGluayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NhbS5oOjQ3NTp2b2lkIHJ0dzg5X2NhbV9yZXNldF9rZXlzKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NhbS5oLTQ3Ni1pbnQgcnR3ODlfY2FtX2F0dGFjaF9saW5rX3NlY19jYW0oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvc2VyLmM9MzU3PXN0YXRpYyB2b2lkIHNlcl9yZXNldF9tYWNfYmluZGluZyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9zZXIuYy0zNjAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3Nlci5jOjM2MTpcdHJ0dzg5X2NhbV9yZXNldF9rZXlzKHJ0d2Rldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3Nlci5jLTM2Mi1cdHJ0dzg5X2Zvcl9lYWNoX3J0d3ZpZihydHdkZXYsIHJ0d3ZpZilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jPTEyNTY9c3RhdGljIGludCBydHc4OV93b3dfc3dhcF9mdyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGJvb2wgd293KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtMTMxNC1cdGlmICghaXNfY29ubilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmM6MTMxNTpcdFx0cnR3ODlfY2FtX3Jlc2V0X2tleXMocnR3ZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtMTMxNi1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAyMTo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3ODk1CgkJCQkJCQlvdXRwdXQ6IDQ3CgkJCQkJCQl0aG91Z2h0czogMzUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcyBjb2RlLiBIZXJlJiMzOTtzIHdoYXQgSSYjMzk7bSB0aGlua2luZyByaWdodCBub3c6CgoqKkludmVzdGlnYXRpbmcgV2FrZS1vbi1XTEFOIEtleSBNYW5hZ2VtZW50KioKCkFscmlnaHQsIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgV2FrZS1vbi1XTEFOIChXb1dMQU4pIGtleSBpbmZvcm1hdGlvbiBpcyBiZWluZyBoYW5kbGVkIGluIHRoaXMgYHJ0dzg5YCBkcml2ZXIuIFRvIGdldCBhIHNvbGlkIGdyYXNwLCBJJiMzOTttIGdvaW5nIHRvIHN0YXJ0IGJ5IHRyYWNpbmcgdGhlIGNhbGxlcnMgb2YgdGhvc2Uga2V5IGZ1bmN0aW9uczogYHJ0dzg5X3dvd19jb25zdHJ1Y3Rfa2V5X2luZm9gIGFuZCBgcnR3ODlfd293X3VwZGF0ZV9rZXlfaW5mb2AuIFVuZGVyc3RhbmRpbmcgd2hlcmUgdGhlc2UgYXJlIGJlaW5nIGludm9rZWQgd2lsbCBnaXZlIG1lIGEgZ29vZCBwaWN0dXJlIG9mIHRoZSBXb1dMQU4ga2V5IGluaXRpYWxpemF0aW9uIGFuZCB1cGRhdGUgZmxvdy4gS25vd2luZyB0aGUgY29udGV4dCBvZiB0aGVzZSBjYWxscyBpcyBjcml0aWNhbCB0byBlbnN1cmluZyB0aGUgc2VjdXJpdHkgYW5kIHByb3BlciBmdW5jdGlvbiBvZiBXb1dMQU4gd2l0aGluIHRoZSBkcml2ZXIuIExldCYjMzk7cyBzZWUgd2hhdCB0aGUgY2FsbCBncmFwaHMgcmV2ZWFsLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDIxOjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3J0dzg5X3dvd18oY29uc3RydWN0fHVwZGF0ZSlfa2V5X2luZm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmM9NDU3PXN0YXRpYyB2b2lkIHJ0dzg5X3dvd19rZXlfY2xlYXIoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtNDY3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYzo0Njg6c3RhdGljIHZvaWQgcnR3ODlfd293X2NvbnN0cnVjdF9rZXlfaW5mbyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTQ2OS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYz02NDM9c3RhdGljIHN0cnVjdCBpZWVlODAyMTFfa2V5X2NvbmYgKnJ0dzg5X3dvd19ndGtfcmVrZXkoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtNjgzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYzo2ODQ6c3RhdGljIHZvaWQgcnR3ODlfd293X3VwZGF0ZV9rZXlfaW5mbyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGJvb2wgcnhfcmVhZHkpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTY4NS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYz0xMzk5PXN0YXRpYyBpbnQgcnR3ODlfd293X2Rpc2FibGVfdHJ4X3ByZShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy0xNDI4LVx0aWYgKCFyZXQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jOjE0Mjk6XHRcdHJ0dzg5X3dvd191cGRhdGVfa2V5X2luZm8ocnR3ZGV2LCBmYWxzZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTE0MzAtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy0xNDMzLVx0aWYgKCFyZXQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jOjE0MzQ6XHRcdHJ0dzg5X3dvd191cGRhdGVfa2V5X2luZm8ocnR3ZGV2LCB0cnVlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtMTQzNS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jPTE1NzU9c3RhdGljIGludCBydHc4OV93b3dfZndfc3RhcnQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtMTU5NC1cdFx0cnR3ODlfd293X3BhdHRlcm5fd3JpdGUocnR3ZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmM6MTU5NTpcdFx0cnR3ODlfd293X2NvbnN0cnVjdF9rZXlfaW5mbyhydHdkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy0xNTk2LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDIxOjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg4ODUKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiA5OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIG1hYzgwMjExIEtleSBJdGVyYXRpb24gQ2hhbmdlKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcyBjb2RlIGNoYW5nZS4gTXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzIHdoeSB3ZSYjMzk7dmUgc3dpdGNoZWQgZnJvbSB1c2luZyBgaWVlZTgwMjExX2l0ZXJfa2V5c2AgdG8gYGllZWU4MDIxMV9pdGVyX2tleXNfcmN1YC4gVGhpcyBsaWtlbHkgcG9pbnRzIHRvIGNvbmN1cnJlbmN5IGlzc3VlcyBvciBhIG5lZWQgZm9yIHNhZmVyIGtleSBhY2Nlc3Mgd2l0aGluIHRoZSBtYWM4MDIxMSBzdGFjay4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGZ1bmRhbWVudGFsIGRpZmZlcmVuY2UgaGVyZS4KCk15IG5leHQgc3RlcCBpcyB0byBleGFtaW5lIHRoZSBkZWZpbml0aW9ucyBvZiBib3RoIGZ1bmN0aW9ucywgYGllZWU4MDIxMV9pdGVyX2tleXNgIGFuZCBgaWVlZTgwMjExX2l0ZXJfa2V5c19yY3VgLCB0byBpZGVudGlmeSB0aGVpciBzcGVjaWZpYyBmdW5jdGlvbmFsaXRpZXMgYW5kIHRoZWlyIHVzYWdlIGNvbnRleHQuIEkmIzM5O2xsIGJlIGxvb2tpbmcgaW4gYGluY2x1ZGUvbmV0L21hYzgwMjExLmhgIGFuZCB0aGVuIHRoZSBtYWM4MDIxMSBzb3VyY2UgZGlyZWN0b3J5IHRvIGdldCB0aGUgY29kZS4gVGhpcyB3aWxsIGNsYXJpZnkgaG93IHRoZSBSQ1UgdmVyc2lvbiBoYW5kbGVzIGtleSBpdGVyYXRpb25zIGRpZmZlcmVudGx5IGFuZCwgaG9wZWZ1bGx5LCByZXZlYWwgdGhlIHVuZGVybHlpbmcgcmVhc29uIGZvciB0aGUgc3dpdGNoLiBJJiMzOTttIGV4cGVjdGluZyB0aGUgUkNVIHZlcnNpb24gdG8gcHJvdmlkZSBzb21lIGZvcm0gb2YgcmVhZC1jb3B5LXVwZGF0ZSBwcm90ZWN0aW9uIGZvciB0aGUga2V5IGRhdGEgc3RydWN0dXJlcywgYnV0IEkgbmVlZCB0byBjb25maXJtIHRoaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDIxOjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2llZWU4MDIxMV9pdGVyX2tleXMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtpbmNsdWRlLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL25ldC9tYWM4MDIxMS5oPTY4OTE9dTMyIGllZWU4MDIxMV90eHFfYXFsX3BlbmRpbmcoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4tLVxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaC02ODk0LS8qKlxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaDo2ODk1OiAqIGllZWU4MDIxMV9pdGVyX2tleXMgLSBpdGVyYXRlIGtleXMgcHJvZ3JhbW1lZCBpbnRvIHRoZSBkZXZpY2VcbmluY2x1ZGUvbmV0L21hYzgwMjExLmgtNjg5Ni0gKiBAaHc6IHBvaW50ZXIgb2J0YWluZWQgZnJvbSBpZWVlODAyMTFfYWxsb2NfaHcoKVxuLS1cbmluY2x1ZGUvbmV0L21hYzgwMjExLmgtNjkxMS0gKi9cbmluY2x1ZGUvbmV0L21hYzgwMjExLmg6NjkxMjp2b2lkIGllZWU4MDIxMV9pdGVyX2tleXMoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oLTY5MTMtXHRcdFx0IHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXG4tLVxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaC02OTIxLS8qKlxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaDo2OTIyOiAqIGllZWU4MDIxMV9pdGVyX2tleXNfcmN1IC0gaXRlcmF0ZSBrZXlzIHByb2dyYW1tZWQgaW50byB0aGUgZGV2aWNlXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oLTY5MjMtICogQGh3OiBwb2ludGVyIG9idGFpbmVkIGZyb20gaWVlZTgwMjExX2FsbG9jX2h3KClcbi0tXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oLTY5MzUtICovXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oOjY5MzY6dm9pZCBpZWVlODAyMTFfaXRlcl9rZXlzX3JjdShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbmluY2x1ZGUvbmV0L21hYzgwMjExLmgtNjkzNy1cdFx0XHQgICAgIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDIxOjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk3MzEKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiAzOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgYXNzdW1pbmcgSSYjMzk7bSBhbHJlYWR5IHByZXR0eSBmYW1pbGlhciB3aXRoIDgwMi4xMSBhbmQgd2lyZWxlc3MgbmV0d29ya2luZzoKCioqRGl2aW5nIGludG8gS2V5IEl0ZXJhdGlvbioqCgpSaWdodCwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlc2Uga2V5IGl0ZXJhdGlvbiBmdW5jdGlvbnMsIGBpZWVlODAyMTFfaXRlcl9rZXlzYCBhbmQgYGllZWU4MDIxMV9pdGVyX2tleXNfcmN1YCwgYXJlIGltcGxlbWVudGVkLiBDbGVhcmx5LCB0aGVyZSYjMzk7cyBhIG5lZWQgdG8gaGFuZGxlIGtleXMgd2l0aGluIHRoZSA4MDIuMTEgY29udGV4dCwgbGlrZWx5IHJlbGF0ZWQgdG8gc2VjdXJpdHkgYW5kIGVuY3J5cHRpb24sIGFuZCB0aGUgY2hvaWNlIG9mIGByY3VgIGluIG9uZSBvZiB0aGUgZnVuY3Rpb25zIHN1Z2dlc3RzIHRoYXQgY29uY3VycmVuY3kgaXMgYSBjb3JlIGNvbmNlcm4g4oCTIHRoZXkmIzM5O3JlIGxpa2VseSBkZWFsaW5nIHdpdGggYSBzaGFyZWQgcmVzb3VyY2UgdGhhdCBtdWx0aXBsZSB0aHJlYWRzIG9yIHByb2Nlc3NlcyBtaWdodCBhY2Nlc3MuIEkmIzM5O2xsIG5lZWQgdG8gcGF5IGNsb3NlIGF0dGVudGlvbiB0byB0aGUgbG9jayBtYW5hZ2VtZW50IHN0cmF0ZWdpZXMgdXNlZCBpbiBlYWNoIGZ1bmN0aW9uLiBEb2VzIG9uZSB1c2UgbXV0ZXhlcywgc3BpbmxvY2tzLCBvciBzb21ldGhpbmcgbW9yZSBzb3BoaXN0aWNhdGVkPyBXaGF0IGFib3V0IFJDVSYjMzk7cyByZWFkLWNvcHktdXBkYXRlIHNlbWFudGljcyBpbiB0aGUgYF9yY3VgIHZlcnNpb24/IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBudWFuY2VzIG9mIGhvdyB0aGVzZSBrZXlzIGFyZSBzdG9yZWQsIGFjY2Vzc2VkLCBhbmQgbW9kaWZpZWQsIGVzcGVjaWFsbHkgd2hlbiBjb25jdXJyZW50IGFjY2VzcyBpcyBsaWtlbHkuIEkmIzM5O20gaG9waW5nIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2YgaG93IHRoZXkgZ3VhcmFudGVlIGRhdGEgaW50ZWdyaXR5IGFuZCB0aHJlYWQgc2FmZXR5LiBSZWFkaW5nIHRoZSBpbXBsZW1lbnRhdGlvbiBpdHNlbGYsIGFsb25nIHdpdGggdGhlIGRvY3VtZW50YXRpb24sIHdpbGwgZ2l2ZSBtZSB0aGUgaW5zaWdodHMgSSBuZWVkIHRvIHNlZSBob3cgdGhlc2UgZnVuY3Rpb25zIGNvbnRyaWJ1dGUgdG8gdGhlIG92ZXJhbGwgODAyLjExIHNlY3VyaXR5IGFyY2hpdGVjdHVyZS4gVW5kZXJzdGFuZGluZyB0aGVzZSB0d28gaW1wbGVtZW50YXRpb25zLCBhbmQgaG93IHRoZXkgcmVsYXRlLCBpcyBnb2luZyB0byBiZSBjcnVjaWFsIGZvciBteSB3b3JrLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAyMTo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS9rZXkuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEwMDAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogODAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTAwMDpcdHN0YXRpYyB2b2lkXG4xMDAxOlx0aWVlZTgwMjExX2tleV9pdGVyKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuMTAwMjpcdFx0XHQgICBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxuMTAwMzpcdFx0XHQgICBzdHJ1Y3QgaWVlZTgwMjExX2tleSAqa2V5LFxuMTAwNDpcdFx0XHQgICB2b2lkICgqaXRlcikoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4xMDA1Olx0XHRcdFx0XHRzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxuMTAwNjpcdFx0XHRcdFx0c3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSxcbjEwMDc6XHRcdFx0XHRcdHN0cnVjdCBpZWVlODAyMTFfa2V5X2NvbmYgKmtleSxcbjEwMDg6XHRcdFx0XHRcdHZvaWQgKmRhdGEpLFxuMTAwOTpcdFx0XHQgICB2b2lkICppdGVyX2RhdGEpXG4xMDEwOlx0e1xuMTAxMTpcdFx0Lyogc2tpcCBrZXlzIG9mIHN0YXRpb24gaW4gcmVtb3ZhbCBwcm9jZXNzICovXG4xMDEyOlx0XHRpZiAoa2V5LVx1MDAzZXN0YSBcdTAwMjZcdTAwMjYga2V5LVx1MDAzZXN0YS1cdTAwM2VyZW1vdmVkKVxuMTAxMzpcdFx0XHRyZXR1cm47XG4xMDE0Olx0XHRpZiAoIShrZXktXHUwMDNlZmxhZ3MgXHUwMDI2IEtFWV9GTEFHX1VQTE9BREVEX1RPX0hBUkRXQVJFKSlcbjEwMTU6XHRcdFx0cmV0dXJuO1xuMTAxNjpcdFx0aXRlcihodywgdmlmLCBrZXktXHUwMDNlc3RhID8gXHUwMDI2a2V5LVx1MDAzZXN0YS1cdTAwM2VzdGEgOiBOVUxMLFxuMTAxNzpcdFx0ICAgICBcdTAwMjZrZXktXHUwMDNlY29uZiwgaXRlcl9kYXRhKTtcbjEwMTg6XHR9XG4xMDE5Olx0XG4xMDIwOlx0dm9pZCBpZWVlODAyMTFfaXRlcl9rZXlzKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuMTAyMTpcdFx0XHRcdCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxuMTAyMjpcdFx0XHRcdCB2b2lkICgqaXRlcikoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4xMDIzOlx0XHRcdFx0XHQgICAgICBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxuMTAyNDpcdFx0XHRcdFx0ICAgICAgc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSxcbjEwMjU6XHRcdFx0XHRcdCAgICAgIHN0cnVjdCBpZWVlODAyMTFfa2V5X2NvbmYgKmtleSxcbjEwMjY6XHRcdFx0XHRcdCAgICAgIHZvaWQgKmRhdGEpLFxuMTAyNzpcdFx0XHRcdCB2b2lkICppdGVyX2RhdGEpXG4xMDI4Olx0e1xuMTAyOTpcdFx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBod190b19sb2NhbChodyk7XG4xMDMwOlx0XHRzdHJ1Y3QgaWVlZTgwMjExX2tleSAqa2V5LCAqdG1wO1xuMTAzMTpcdFx0c3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGE7XG4xMDMyOlx0XG4xMDMzOlx0XHRsb2NrZGVwX2Fzc2VydF93aXBoeShody1cdTAwM2V3aXBoeSk7XG4xMDM0Olx0XG4xMDM1Olx0XHRpZiAodmlmKSB7XG4xMDM2Olx0XHRcdHNkYXRhID0gdmlmX3RvX3NkYXRhKHZpZik7XG4xMDM3Olx0XHRcdGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShrZXksIHRtcCwgXHUwMDI2c2RhdGEtXHUwMDNla2V5X2xpc3QsIGxpc3QpXG4xMDM4Olx0XHRcdFx0aWVlZTgwMjExX2tleV9pdGVyKGh3LCB2aWYsIGtleSwgaXRlciwgaXRlcl9kYXRhKTtcbjEwMzk6XHRcdH0gZWxzZSB7XG4xMDQwOlx0XHRcdGxpc3RfZm9yX2VhY2hfZW50cnkoc2RhdGEsIFx1MDAyNmxvY2FsLVx1MDAzZWludGVyZmFjZXMsIGxpc3QpXG4xMDQxOlx0XHRcdFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGtleSwgdG1wLFxuMTA0MjpcdFx0XHRcdFx0XHRcdCBcdTAwMjZzZGF0YS1cdTAwM2VrZXlfbGlzdCwgbGlzdClcbjEwNDM6XHRcdFx0XHRcdGllZWU4MDIxMV9rZXlfaXRlcihodywgXHUwMDI2c2RhdGEtXHUwMDNldmlmLCBrZXksXG4xMDQ0Olx0XHRcdFx0XHRcdFx0ICAgaXRlciwgaXRlcl9kYXRhKTtcbjEwNDU6XHRcdH1cbjEwNDY6XHR9XG4xMDQ3Olx0RVhQT1JUX1NZTUJPTChpZWVlODAyMTFfaXRlcl9rZXlzKTtcbjEwNDg6XHRcbjEwNDk6XHRzdGF0aWMgdm9pZFxuMTA1MDpcdF9pZWVlODAyMTFfaXRlcl9rZXlzX3JjdShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbjEwNTE6XHRcdFx0XHQgc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4xMDUyOlx0XHRcdFx0IHZvaWQgKCppdGVyKShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbjEwNTM6XHRcdFx0XHRcdCAgICAgIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXG4xMDU0Olx0XHRcdFx0XHQgICAgICBzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqc3RhLFxuMTA1NTpcdFx0XHRcdFx0ICAgICAgc3RydWN0IGllZWU4MDIxMV9rZXlfY29uZiAqa2V5LFxuMTA1NjpcdFx0XHRcdFx0ICAgICAgdm9pZCAqZGF0YSksXG4xMDU3Olx0XHRcdFx0IHZvaWQgKml0ZXJfZGF0YSlcbjEwNTg6XHR7XG4xMDU5Olx0XHRzdHJ1Y3QgaWVlZTgwMjExX2tleSAqa2V5O1xuMTA2MDpcdFxuMTA2MTpcdFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9yY3Uoa2V5LCBcdTAwMjZzZGF0YS1cdTAwM2VrZXlfbGlzdCwgbGlzdClcbjEwNjI6XHRcdFx0aWVlZTgwMjExX2tleV9pdGVyKGh3LCBcdTAwMjZzZGF0YS1cdTAwM2V2aWYsIGtleSwgaXRlciwgaXRlcl9kYXRhKTtcbjEwNjM6XHR9XG4xMDY0Olx0XG4xMDY1Olx0dm9pZCBpZWVlODAyMTFfaXRlcl9rZXlzX3JjdShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbjEwNjY6XHRcdFx0XHQgICAgIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXG4xMDY3Olx0XHRcdFx0ICAgICB2b2lkICgqaXRlcikoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4xMDY4Olx0XHRcdFx0XHRcdCAgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcbjEwNjk6XHRcdFx0XHRcdFx0ICBzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqc3RhLFxuMTA3MDpcdFx0XHRcdFx0XHQgIHN0cnVjdCBpZWVlODAyMTFfa2V5X2NvbmYgKmtleSxcbjEwNzE6XHRcdFx0XHRcdFx0ICB2b2lkICpkYXRhKSxcbjEwNzI6XHRcdFx0XHQgICAgIHZvaWQgKml0ZXJfZGF0YSlcbjEwNzM6XHR7XG4xMDc0Olx0XHRzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCA9IGh3X3RvX2xvY2FsKGh3KTtcbjEwNzU6XHRcdHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhO1xuMTA3NjpcdFxuMTA3NzpcdFx0aWYgKHZpZikge1xuMTA3ODpcdFx0XHRzZGF0YSA9IHZpZl90b19zZGF0YSh2aWYpO1xuMTA3OTpcdFx0XHRfaWVlZTgwMjExX2l0ZXJfa2V5c19yY3UoaHcsIHNkYXRhLCBpdGVyLCBpdGVyX2RhdGEpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAyMTo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTY0MwoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDIxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYGllZWU4MDIxMV9pdGVyX2tleXNgIGFuZCBydHc4OSBSZWFjaGFiaWxpdHkqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gVGhlIGZpcnN0IHRoaW5nIHRoYXQganVtcHMgb3V0IGlzIHRoaXMgYGxvY2tkZXBfYXNzZXJ0X3dpcGh5KGh3LSZndDt3aXBoeSk7YCB3aXRoaW4gYGllZWU4MDIxMV9pdGVyX2tleXNgLiBUaGF0JiMzOTtzIGEgcmVkIGZsYWchIEl0IG1lYW5zIHRoaXMgZnVuY3Rpb24gKmRlbWFuZHMqIHRoZSB3aXBoeSBsb2NrIGJlIGhlbGQuIEFuZCwgYXMgYSBzZWFzb25lZCBwcm8sIEkga25vdyB0aGF0IGlmIGBpZWVlODAyMTFfaXRlcl9rZXlzX3JjdWAgKmRvZXNuJiMzOTt0KiBoYXZlIHRoYXQgYXNzZXJ0aW9uLCB0aGVuIHdlJiMzOTt2ZSBnb3QgYSBwb3RlbnRpYWwgbG9jayBvcmRlciBpc3N1ZSBpZiB3ZSYjMzk7cmUgbm90IGNhcmVmdWwuIElmIGFueSBjYWxsZXIgZmFpbHMgdG8gaG9sZCB0aGF0IGxvY2ssIGxvY2tkZXAgd2lsbCBhYnNvbHV0ZWx5IHNjcmVhbSBhdCB1cy4gSSBuZWVkIHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiBvZiB0aGUgbG9jayBhY3F1aXNpdGlvbiBwYXRoIGZvciBhbnl0aGluZyBjYWxsaW5nIHRoaXMgZnVuY3Rpb24uCgpOb3csIHNoaWZ0aW5nIGdlYXJzLCBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgYHJ0dzg5YCBlbnRlcnMgdGhlIHBpY3R1cmUgYW5kIGlmIGl0JiMzOTtzIHJlYWNoYWJsZSBmb3IgdGVzdGluZy4gQ2FuIEkgc2ltdWxhdGUgdGhpcyBlYXNpbHkgaW4gYSBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaWtlIFFFTVUgb3IgZXZlbiBHQ0U/IE15IGltbWVkaWF0ZSBuZXh0IHN0ZXAgaXMgdG8gYXNzZXNzIHRoZSBwcm9iaW5nIG1lY2hhbmlzbXMuIENhbiBJIHRyaWdnZXIgaXQgdmlhIFVTQiBlbXVsYXRpb24g4oCTIHJhdy1nYWRnZXQgc3R5bGUgb3Igd2l0aCBzeXprYWxsZXIgZnV6emluZz8gRG9lcyBpdCByZWx5IG9uIHNwZWNpZmljIGZpcm13YXJlIGZpbGVzLCBvciBpcyBhY3R1YWwgcGh5c2ljYWwgaGFyZHdhcmUgcmVxdWlyZWQ/IEEgcXVpY2sgc2VhcmNoIGZvciB0aGUgVVNCIElEIHRhYmxlIHdpdGhpbiB0aGUgYHJ0dzg5YCBkcml2ZXIgaXMgaW4gb3JkZXIuIFRoYXQmIzM5O2xsIGdpdmUgbWUgYSBnb29kIGhhbmRsZSBvbiBob3cgdGhlIGhhcmR3YXJlIGlzIGRldGVjdGVkIGFuZCBpbml0aWFsaXplZCwgYW5kIHRoZXJlZm9yZSwgaG93IGVhc3kgaXQgd2lsbCBiZSB0byBnZXQgbXkgaGFuZHMgb24gaXQgZm9yIGFuYWx5c2lzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgYWNjZXNzIHBhdGggdG8gZ2V0IG15IGhhbmRzIG9uIGl0LCB3aGV0aGVyIHZpYSBVU0IgZW11bGF0aW9uIG9yIGEgbW9yZSBwaHlzaWNhbCBhY2Nlc3Mgcm91dGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDIxOjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3J0dzg5X3VzYiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDYzOCBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZT0xMDY9cnR3ODlfcGNpLXkgOj0gcGNpLm8gcGNpX2JlLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGUtMTA3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZToxMDg6b2JqLSQoQ09ORklHX1JUVzg5X1VTQikgJiM0Mzs9IHJ0dzg5X3VzYi5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlOjEwOTpydHc4OV91c2IteSA6PSB1c2Iub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZS0xMTAtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmg9MjA9c3RydWN0IHJ0dzg5X3BjaV9pbmZvO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmg6MjE6c3RydWN0IHJ0dzg5X3VzYl9pbmZvO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmgtMjItc3RydWN0IHJ0dzg5X21hY19nZW5fZGVmO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oPTU4NzI9dW5pb24gcnR3ODlfYnVzX2luZm8ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmgtNTg3My1cdGNvbnN0IHN0cnVjdCBydHc4OV9wY2lfaW5mbyAqcGNpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmg6NTg3NDpcdGNvbnN0IHN0cnVjdCBydHc4OV91c2JfaW5mbyAqdXNiO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmgtNTg3NS19O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MWJ1LmMtMTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTFidS5jOjExOnN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfdXNiX2luZm8gcnR3ODg1MWJfdXNiX2luZm8gPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTFidS5jLTEyLVx0LnVzYl9ob3N0X3JlcXVlc3RfMlx0XHQ9IFJfQVhfVVNCX0hPU1RfUkVRVUVTVF8yLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MWJ1LmM9NjI9c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIHJ0d184ODUxYnVfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MWJ1LmMtNjQtXHQuaWRfdGFibGUgPSBydHdfODg1MWJ1X2lkX3RhYmxlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUxYnUuYzo2NTpcdC5wcm9iZSA9IHJ0dzg5X3VzYl9wcm9iZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MWJ1LmM6NjY6XHQuZGlzY29ubmVjdCA9IHJ0dzg5X3VzYl9kaXNjb25uZWN0LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUxYnUuYy02Ny19O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmF1LmMtMTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJhdS5jOjExOnN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfdXNiX2luZm8gcnR3ODg1MmFfdXNiX2luZm8gPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJhdS5jLTEyLVx0LnVzYl9ob3N0X3JlcXVlc3RfMlx0XHQ9IFJfQVhfVVNCX0hPU1RfUkVRVUVTVF8yLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmF1LmM9NzY9c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIHJ0d184ODUyYXVfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmF1LmMtNzgtXHQuaWRfdGFibGUgPSBydHdfODg1MmF1X2lkX3RhYmxlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYXUuYzo3OTpcdC5wcm9iZSA9IHJ0dzg5X3VzYl9wcm9iZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmF1LmM6ODA6XHQuZGlzY29ubmVjdCA9IHJ0dzg5X3VzYl9kaXNjb25uZWN0LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYXUuYy04MS19O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmJ1LmMtMTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJidS5jOjExOnN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfdXNiX2luZm8gcnR3ODg1MmJfdXNiX2luZm8gPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJidS5jLTEyLVx0LnVzYl9ob3N0X3JlcXVlc3RfMlx0XHQ9IFJfQVhfVVNCX0hPU1RfUkVRVUVTVF8yLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmJ1LmM9NzY9c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIHJ0d184ODUyYnVfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmJ1LmMtNzgtXHQuaWRfdGFibGUgPSBydHdfODg1MmJ1X2lkX3RhYmxlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYnUuYzo3OTpcdC5wcm9iZSA9IHJ0dzg5X3VzYl9wcm9iZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmJ1LmM6ODA6XHQuZGlzY29ubmVjdCA9IHJ0dzg5X3VzYl9kaXNjb25uZWN0LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYnUuYy04MS19O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmN1LmMtMTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJjdS5jOjExOnN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfdXNiX2luZm8gcnR3ODg1MmNfdXNiX2luZm8gPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJjdS5jLTEyLVx0LnVzYl9ob3N0X3JlcXVlc3RfMlx0XHQ9IFJfQVhfVVNCX0hPU1RfUkVRVUVTVF8yX1YxLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmN1LmM9MTM2PXN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBydHdfODg1MmN1X2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJjdS5jLTEzOC1cdC5pZF90YWJsZSA9IHJ0d184ODUyY3VfaWRfdGFibGUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJjdS5jOjEzOTpcdC5wcm9iZSA9IHJ0dzg5X3VzYl9wcm9iZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmN1LmM6MTQwOlx0LmRpc2Nvbm5lY3QgPSBydHc4OV91c2JfZGlzY29ubmVjdCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmN1LmMtMTQxLX07XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyYXUuYy05LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyYXUuYzoxMDpzdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X3VzYl9pbmZvIHJ0dzg5MjJhX3VzYl9pbmZvID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyYXUuYy0xMS1cdC51c2JfaG9zdF9yZXF1ZXN0XzJcdFx0PSAwLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmF1LmM9Nzc9c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIHJ0d184OTIyYXVfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmF1LmMtNzktXHQuaWRfdGFibGUgPSBydHdfODkyMmF1X2lkX3RhYmxlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyYXUuYzo4MDpcdC5wcm9iZSA9IHJ0dzg5X3VzYl9wcm9iZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmF1LmM6ODE6XHQuZGlzY29ubmVjdCA9IHJ0dzg5X3VzYl9kaXNjb25uZWN0LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyYXUuYy04Mi19O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjEyOnN0YXRpYyB2b2lkIHJ0dzg5X3VzYl9yZWFkX3BvcnRfY29tcGxldGUoc3RydWN0IHVyYiAqdXJiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjE0OnN0YXRpYyB2b2lkIF9fcnR3ODlfdXNiX3ZlbmRvcnJlcShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHUzMiBhZGRyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xNS1cdFx0XHRcdCAgdm9pZCAqZGF0YSwgdTE2IGxlbiwgdTggcmVxdHlwZSwgYm9vbCB3YXJuKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xNi17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjE3Olx0c3RydWN0IHJ0dzg5X3VzYiAqcnR3dXNiID0gcnR3ODlfdXNiX3ByaXYocnR3ZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTgtXHRzdHJ1Y3QgdXNiX2RldmljZSAqdWRldiA9IHJ0d3VzYi1cdTAwM2V1ZGV2O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNzEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjcyOnN0YXRpYyB2b2lkIHJ0dzg5X3VzYl92ZW5kb3JyZXEoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1MzIgYWRkcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNzMtXHRcdFx0XHR2b2lkICpkYXRhLCB1MTYgbGVuLCB1OCByZXF0eXBlKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy03NC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjc1Olx0X19ydHc4OV91c2JfdmVuZG9ycmVxKHJ0d2RldiwgYWRkciwgZGF0YSwgbGVuLCByZXF0eXBlLCB0cnVlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNzYtfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy03Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6Nzg6c3RhdGljIHUzMiBydHc4OV91c2JfcmVhZF9jbWFjKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTMyIGFkZHIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTc5LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTg3LVx0Zm9yIChjb3VudCA9IDA7IDsgY291bnQmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjg4Olx0XHRydHc4OV91c2JfdmVuZG9ycmVxKHJ0d2RldiwgYWRkcjMyLCBcdTAwMjZkYXRhLCA0LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy04OS1cdFx0XHRcdCAgICBSVFc4OV9VU0JfVkVOUVRfUkVBRCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xMDctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjEwODpzdGF0aWMgdTggcnR3ODlfdXNiX29wc19yZWFkOChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHUzMiBhZGRyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xMDkte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTEyLVx0aWYgKEFDQ0VTU19DTUFDKGFkZHIpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzoxMTM6XHRcdHJldHVybiBydHc4OV91c2JfcmVhZF9jbWFjKHJ0d2RldiwgYWRkcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTExNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6MTE1Olx0cnR3ODlfdXNiX3ZlbmRvcnJlcShydHdkZXYsIGFkZHIsIFx1MDAyNmRhdGEsIDEsIFJUVzg5X1VTQl9WRU5RVF9SRUFEKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTE2LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTE5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzoxMjA6c3RhdGljIHUxNiBydHc4OV91c2Jfb3BzX3JlYWQxNihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHUzMiBhZGRyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xMjEte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTI0LVx0aWYgKEFDQ0VTU19DTUFDKGFkZHIpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzoxMjU6XHRcdHJldHVybiBydHc4OV91c2JfcmVhZF9jbWFjKHJ0d2RldiwgYWRkcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTEyNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6MTI3Olx0cnR3ODlfdXNiX3ZlbmRvcnJlcShydHdkZXYsIGFkZHIsIFx1MDAyNmRhdGEsIDIsIFJUVzg5X1VTQl9WRU5RVF9SRUFEKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTI4LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTMxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzoxMzI6c3RhdGljIHUzMiBydHc4OV91c2Jfb3BzX3JlYWQzMihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHUzMiBhZGRyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xMzMte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTM2LVx0aWYgKEFDQ0VTU19DTUFDKGFkZHIpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzoxMzc6XHRcdHJldHVybiBydHc4OV91c2JfcmVhZF9jbWFjKHJ0d2RldiwgYWRkcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTEzOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6MTM5Olx0cnR3ODlfdXNiX3ZlbmRvcnJlcShydHdkZXYsIGFkZHIsIFx1MDAyNmRhdGEsIDQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTE0MC1cdFx0XHQgICAgUlRXODlfVVNCX1ZFTlFUX1JFQUQpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTQ0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzoxNDU6c3RhdGljIHZvaWQgcnR3ODlfdXNiX29wc193cml0ZTgoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1MzIgYWRkciwgdTggdmFsKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xNDYte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTQ4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzoxNDk6XHRydHc4OV91c2JfdmVuZG9ycmVxKHJ0d2RldiwgYWRkciwgXHUwMDI2ZGF0YSwgMSwgUlRXODlfVVNCX1ZFTlFUX1dSSVRFKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTUwLX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTUxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzoxNTI6c3RhdGljIHZvaWQgcnR3ODlfdXNiX29wc193cml0ZTE2KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTMyIGFkZHIsIHUxNiB2YWwpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTE1My17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xNTUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjE1NjpcdHJ0dzg5X3VzYl92ZW5kb3JyZXEocnR3ZGV2LCBhZGRyLCBcdTAwMjZkYXRhLCAyLCBSVFc4OV9VU0JfVkVOUVRfV1JJVEUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xNTctfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xNTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjE1OTpzdGF0aWMgdm9pZCBydHc4OV91c2Jfb3BzX3dyaXRlMzIoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1MzIgYWRkciwgdTMyIHZhbClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTYwLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTE2Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6MTYzOlx0cnR3ODlfdXNiX3ZlbmRvcnJlcShydHdkZXYsIGFkZHIsIFx1MDAyNmRhdGEsIDQsIFJUVzg5X1VTQl9WRU5RVF9XUklURSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTE2NC19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTE2NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6MTY2OnN0YXRpYyB2b2lkIHJ0dzg5X3VzYl93cml0ZTMyX3F1aWV0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTMyIGFkZHIsIHUzMiB2YWwpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTE2Ny17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xNjktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjE3MDpcdF9fcnR3ODlfdXNiX3ZlbmRvcnJlcShydHdkZXYsIGFkZHIsIFx1MDAyNmRhdGEsIDQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTE3MS1cdFx0XHQgICAgICBSVFc4OV9VU0JfVkVOUVRfV1JJVEUsIGZhbHNlKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jPTE3ND1zdGF0aWMgdTMyXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjE3NTpydHc4OV91c2Jfb3BzX2NoZWNrX2FuZF9yZWNsYWltX3R4X3Jlc291cmNlKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTc2LVx0XHRcdFx0XHQgICAgdTggdHhjaClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTc3LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6MTc4Olx0c3RydWN0IHJ0dzg5X3VzYiAqcnR3dXNiID0gcnR3ODlfdXNiX3ByaXYocnR3ZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTc5LVx0aW50IGluZmxpZ2h0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTkwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzoxOTE6c3RhdGljIHZvaWQgcnR3ODlfdXNiX3dyaXRlX3BvcnRfY29tcGxldGUoc3RydWN0IHVyYiAqdXJiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xOTIte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzoxOTM6XHRzdHJ1Y3QgcnR3ODlfdXNiX3R4X2N0cmxfYmxvY2sgKnR4Y2IgPSB1cmItXHUwMDNlY29udGV4dDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTk0LVx0c3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2ID0gdHhjYi1cdTAwM2VydHdkZXY7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjE5NTpcdHN0cnVjdCBydHc4OV91c2IgKnJ0d3VzYiA9IHJ0dzg5X3VzYl9wcml2KHJ0d2Rldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTE5Ni1cdHN0cnVjdCBpZWVlODAyMTFfdHhfaW5mbyAqaW5mbztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTI1OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6MjU5OnN0YXRpYyBpbnQgcnR3ODlfdXNiX3dyaXRlX3BvcnQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCBjaF9kbWEsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTI2MC1cdFx0XHRcdHZvaWQgKmRhdGEsIGludCBsZW4sIHZvaWQgKmNvbnRleHQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTI2MS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjI2MjpcdHN0cnVjdCBydHc4OV91c2IgKnJ0d3VzYiA9IHJ0dzg5X3VzYl9wcml2KHJ0d2Rldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjI2MzpcdGNvbnN0IHN0cnVjdCBydHc4OV91c2JfaW5mbyAqaW5mbyA9IHJ0d3VzYi1cdTAwM2VpbmZvO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0yNjQtXHRzdHJ1Y3QgdXNiX2RldmljZSAqdXNiZCA9IHJ0d3VzYi1cdTAwM2V1ZGV2O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMjc5LVx0dXNiX2ZpbGxfYnVsa191cmIodXJiLCB1c2JkLCBwaXBlLCBkYXRhLCBsZW4sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjI4MDpcdFx0XHQgIHJ0dzg5X3VzYl93cml0ZV9wb3J0X2NvbXBsZXRlLCBjb250ZXh0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMjgxLVx0dXJiLVx1MDAzZXRyYW5zZmVyX2ZsYWdzIHw9IFVSQl9aRVJPX1BBQ0tFVDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTI5OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6MzAwOnN0YXRpYyB2b2lkIHJ0dzg5X3VzYl90eF9mcmVlX3NrYihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IHR4Y2gsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTMwMS1cdFx0XHRcdCAgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTMwOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6MzA5OnN0YXRpYyB2b2lkIHJ0dzg5X3VzYl9vcHNfdHhfa2lja19vZmYoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCB0eGNoKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0zMTAte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzozMTE6XHRzdHJ1Y3QgcnR3ODlfdXNiICpydHd1c2IgPSBydHc4OV91c2JfcHJpdihydHdkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzozMTI6XHRzdHJ1Y3QgcnR3ODlfdXNiX3R4X2N0cmxfYmxvY2sgKnR4Y2I7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTMxMy1cdHN0cnVjdCBza19idWZmICpza2I7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0zMjItXHRcdGlmICghdHhjYikge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzozMjM6XHRcdFx0cnR3ODlfdXNiX3R4X2ZyZWVfc2tiKHJ0d2RldiwgdHhjaCwgc2tiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMzI0LVx0XHRcdGNvbnRpbnVlO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMzM0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzozMzU6XHRcdHJldCA9IHJ0dzg5X3VzYl93cml0ZV9wb3J0KHJ0d2RldiwgdHhjaCwgc2tiLVx1MDAzZWRhdGEsIHNrYi1cdTAwM2VsZW4sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTMzNi1cdFx0XHRcdFx0ICAgdHhjYik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0zNDUtXHRcdFx0a2ZyZWUodHhjYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjM0NjpcdFx0XHRydHc4OV91c2JfdHhfZnJlZV9za2IocnR3ZGV2LCB0eGNoLCBza2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0zNDctXHRcdH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTM1MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6MzUxOnN0YXRpYyBpbnQgcnR3ODlfdXNiX3R4X3dyaXRlX2Z3Y21kKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMzUyLVx0XHRcdFx0ICAgIHN0cnVjdCBydHc4OV9jb3JlX3R4X3JlcXVlc3QgKnR4X3JlcSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTM1NC1cdHN0cnVjdCBydHc4OV90eF9kZXNjX2luZm8gKmRlc2NfaW5mbyA9IFx1MDAyNnR4X3JlcS1cdTAwM2VkZXNjX2luZm87XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjM1NTpcdHN0cnVjdCBydHc4OV91c2IgKnJ0d3VzYiA9IHJ0dzg5X3VzYl9wcml2KHJ0d2Rldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTM1Ni1cdHN0cnVjdCBza19idWZmICpza2IgPSB0eF9yZXEtXHUwMDNlc2tiO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMzkyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzozOTM6c3RhdGljIGludCBydHc4OV91c2Jfb3BzX3R4X3dyaXRlKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMzk0LVx0XHRcdFx0ICBzdHJ1Y3QgcnR3ODlfY29yZV90eF9yZXF1ZXN0ICp0eF9yZXEpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0zOTYtXHRzdHJ1Y3QgcnR3ODlfdHhfZGVzY19pbmZvICpkZXNjX2luZm8gPSBcdTAwMjZ0eF9yZXEtXHUwMDNlZGVzY19pbmZvO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzozOTc6XHRzdHJ1Y3QgcnR3ODlfdXNiICpydHd1c2IgPSBydHc4OV91c2JfcHJpdihydHdkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0zOTgtXHRzdHJ1Y3QgcnR3ODlfdHhfc2tiX2RhdGEgKnNrYl9kYXRhO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNDEyLVx0aWYgKGRlc2NfaW5mby1cdTAwM2VjaF9kbWEgPT0gUlRXODlfVFhDSF9DSDEyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo0MTM6XHRcdHJldHVybiBydHc4OV91c2JfdHhfd3JpdGVfZndjbWQocnR3ZGV2LCB0eF9yZXEpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy00MTQtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy00MzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjQzNjpzdGF0aWMgdm9pZCBydHc4OV91c2JfcnhfaGFuZGxlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTQzNy17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjQzODpcdHN0cnVjdCBydHc4OV91c2IgKnJ0d3VzYiA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgcnR3ODlfdXNiLCByeF93b3JrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6NDM5Olx0Y29uc3Qgc3RydWN0IHJ0dzg5X3VzYl9pbmZvICppbmZvID0gcnR3dXNiLVx1MDAzZWluZm87XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTQ0MC1cdHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiA9IHJ0d3VzYi1cdTAwM2VydHdkZXY7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy01MDYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjUwNzpzdGF0aWMgdm9pZCBydHc4OV91c2JfcnhfcmVzdWJtaXQoc3RydWN0IHJ0dzg5X3VzYiAqcnR3dXNiLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo1MDg6XHRcdFx0XHQgIHN0cnVjdCBydHc4OV91c2JfcnhfY3RybF9ibG9jayAqcnhjYixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNTA5LVx0XHRcdFx0ICBnZnBfdCBnZnApXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy01MjktXHRcdFx0ICByeGNiLVx1MDAzZXJ4X3NrYi1cdTAwM2VkYXRhLCBSVFc4OV9VU0JfUkVDVkJVRl9TWixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6NTMwOlx0XHRcdCAgcnR3ODlfdXNiX3JlYWRfcG9ydF9jb21wbGV0ZSwgcnhjYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTUzMS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTU1MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6NTUyOnN0YXRpYyB2b2lkIHJ0dzg5X3VzYl9yeF9yZXN1Ym1pdF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNTUzLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6NTU0Olx0c3RydWN0IHJ0dzg5X3VzYiAqcnR3dXNiID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBydHc4OV91c2IsIHJ4X3VyYl93b3JrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6NTU1Olx0c3RydWN0IHJ0dzg5X3VzYl9yeF9jdHJsX2Jsb2NrICpyeGNiO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy01NTYtXHRpbnQgaTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTU2MS1cdFx0aWYgKCFyeGNiLVx1MDAzZXJ4X3NrYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6NTYyOlx0XHRcdHJ0dzg5X3VzYl9yeF9yZXN1Ym1pdChydHd1c2IsIHJ4Y2IsIEdGUF9BVE9NSUMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy01NjMtXHR9XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy01NjUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjU2NjpzdGF0aWMgdm9pZCBydHc4OV91c2JfcmVhZF9wb3J0X2NvbXBsZXRlKHN0cnVjdCB1cmIgKnVyYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNTY3LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6NTY4Olx0c3RydWN0IHJ0dzg5X3VzYl9yeF9jdHJsX2Jsb2NrICpyeGNiID0gdXJiLVx1MDAzZWNvbnRleHQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTU2OS1cdHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiA9IHJ4Y2ItXHUwMDNlcnR3ZGV2O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo1NzA6XHRzdHJ1Y3QgcnR3ODlfdXNiICpydHd1c2IgPSBydHc4OV91c2JfcHJpdihydHdkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy01NzEtXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiID0gcnhjYi1cdTAwM2VyeF9za2I7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy01ODQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjU4NTpcdFx0cnR3ODlfdXNiX3J4X3Jlc3VibWl0KHJ0d3VzYiwgcnhjYiwgR0ZQX0FUT01JQyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTU4Ni1cdH0gZWxzZSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy02MTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjYxNzpzdGF0aWMgdm9pZCBydHc4OV91c2JfY2FuY2VsX3J4X2J1ZnMoc3RydWN0IHJ0dzg5X3VzYiAqcnR3dXNiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy02MTgte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo2MTk6XHRzdHJ1Y3QgcnR3ODlfdXNiX3J4X2N0cmxfYmxvY2sgKnJ4Y2I7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTYyMC1cdGludCBpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNjI3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo2Mjg6c3RhdGljIHZvaWQgcnR3ODlfdXNiX2NhbmNlbF90eF9idWZzKHN0cnVjdCBydHc4OV91c2IgKnJ0d3VzYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNjI5LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTYzMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6NjMzOnN0YXRpYyB2b2lkIHJ0dzg5X3VzYl9mcmVlX3J4X2J1ZnMoc3RydWN0IHJ0dzg5X3VzYiAqcnR3dXNiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy02MzQte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo2MzU6XHRzdHJ1Y3QgcnR3ODlfdXNiX3J4X2N0cmxfYmxvY2sgKnJ4Y2I7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTYzNi1cdGludCBpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNjQzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo2NDQ6c3RhdGljIGludCBydHc4OV91c2JfYWxsb2NfcnhfYnVmcyhzdHJ1Y3QgcnR3ODlfdXNiICpydHd1c2IpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTY0NS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjY0NjpcdHN0cnVjdCBydHc4OV91c2JfcnhfY3RybF9ibG9jayAqcnhjYjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNjQ3LVx0aW50IGk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy02NTQtXHRcdGlmICghcnhjYi1cdTAwM2VyeF91cmIpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6NjU1Olx0XHRcdHJ0dzg5X3VzYl9mcmVlX3J4X2J1ZnMocnR3dXNiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNjU2LVx0XHRcdHJldHVybiAtRU5PTUVNO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNjYyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo2NjM6c3RhdGljIGludCBydHc4OV91c2JfaW5pdF9yeChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTY2NC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjY2NTpcdHN0cnVjdCBydHc4OV91c2IgKnJ0d3VzYiA9IHJ0dzg5X3VzYl9wcml2KHJ0d2Rldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTY2Ni1cdHN0cnVjdCBza19idWZmICpyeF9za2I7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy02NjgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjY2OTpcdHJ0d3VzYi1cdTAwM2VyeHdxID0gYWxsb2Nfd29ya3F1ZXVlKFwmIzM0O3J0dzg5X3VzYjogcnggd3FcJiMzNDssIFdRX0JIIHwgV1FfUEVSQ1BVLCAwKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNjcwLVx0aWYgKCFydHd1c2ItXHUwMDNlcnh3cSkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNjc3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo2Nzg6XHRJTklUX1dPUksoXHUwMDI2cnR3dXNiLVx1MDAzZXJ4X3dvcmssIHJ0dzg5X3VzYl9yeF9oYW5kbGVyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6Njc5Olx0SU5JVF9XT1JLKFx1MDAyNnJ0d3VzYi1cdTAwM2VyeF91cmJfd29yaywgcnR3ODlfdXNiX3J4X3Jlc3VibWl0X3dvcmspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy02ODAtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy02ODktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjY5MDpzdGF0aWMgdm9pZCBydHc4OV91c2JfZGVpbml0X3J4KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNjkxLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6NjkyOlx0c3RydWN0IHJ0dzg5X3VzYiAqcnR3dXNiID0gcnR3ODlfdXNiX3ByaXYocnR3ZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNjkzLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNzAwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo3MDE6c3RhdGljIHZvaWQgcnR3ODlfdXNiX3N0YXJ0X3J4KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNzAyLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6NzAzOlx0c3RydWN0IHJ0dzg5X3VzYiAqcnR3dXNiID0gcnR3ODlfdXNiX3ByaXYocnR3ZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNzA0LVx0aW50IGk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy03MDYtXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBSVFc4OV9VU0JfUlhDQl9OVU07IGkmIzQzOyYjNDM7KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo3MDc6XHRcdHJ0dzg5X3VzYl9yeF9yZXN1Ym1pdChydHd1c2IsIFx1MDAyNnJ0d3VzYi1cdTAwM2VyeF9jYltpXSwgR0ZQX0tFUk5FTCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTcwOC19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTcwOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6NzEwOnN0YXRpYyB2b2lkIHJ0dzg5X3VzYl9pbml0X3R4KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNzExLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6NzEyOlx0c3RydWN0IHJ0dzg5X3VzYiAqcnR3dXNiID0gcnR3ODlfdXNiX3ByaXYocnR3ZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNzEzLVx0aW50IGk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy03MjAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjcyMTpzdGF0aWMgdm9pZCBydHc4OV91c2JfZGVpbml0X3R4KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNzIyLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6NzIzOlx0c3RydWN0IHJ0dzg5X3VzYiAqcnR3dXNiID0gcnR3ODlfdXNiX3ByaXYocnR3ZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNzI0LVx0aW50IGk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy03MzMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjczNDpzdGF0aWMgdm9pZCBydHc4OV91c2Jfb3BzX3Jlc2V0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNzM1LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6NzM2Olx0c3RydWN0IHJ0dzg5X3VzYiAqcnR3dXNiID0gcnR3ODlfdXNiX3ByaXYocnR3ZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNzM3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo3Mzg6XHRydHc4OV91c2JfY2FuY2VsX3R4X2J1ZnMocnR3dXNiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNzM5LVx0cnR3ODlfdHhfcnB0X3NrYnNfcHVyZ2UocnR3ZGV2KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTc0MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6NzQyOnN0YXRpYyBpbnQgcnR3ODlfdXNiX29wc19zdGFydChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTc0My17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy03NDYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjc0NzpzdGF0aWMgdm9pZCBydHc4OV91c2Jfb3BzX3N0b3Aoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy03NDgte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNzUxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo3NTI6c3RhdGljIHZvaWQgcnR3ODlfdXNiX29wc19wYXVzZShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGJvb2wgcGF1c2UpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTc1My17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy03NTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjc1NzpzdGF0aWMgdm9pZCBydHc4OV91c2Jfb3BzX3N3aXRjaF9tb2RlKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgYm9vbCBsb3dfcG93ZXIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTc1OC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy03NjEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjc2MjpzdGF0aWMgaW50IHJ0dzg5X3VzYl9vcHNfZGVpbml0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNzYzLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTc2Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6NzY3OnN0YXRpYyBpbnQgcnR3ODlfdXNiX29wc19tYWNfcHJlX2luaXQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy03Njgte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo3Njk6XHRzdHJ1Y3QgcnR3ODlfdXNiICpydHd1c2IgPSBydHc4OV91c2JfcHJpdihydHdkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo3NzA6XHRjb25zdCBzdHJ1Y3QgcnR3ODlfdXNiX2luZm8gKmluZm8gPSBydHd1c2ItXHUwMDNlaW5mbztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNzcxLVx0dTMyIHZhbDMyO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNzkzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo3OTQ6c3RhdGljIGludCBydHc4OV91c2Jfb3BzX21hY19wcmVfZGVpbml0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNzk1LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTc5OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6Nzk5OnN0YXRpYyB2b2lkIHJ0dzg5X3VzYl9yeF9hZ2dfY2ZnX3YxKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtODAwLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTgwOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6ODA5OnN0YXRpYyB2b2lkIHJ0dzg5X3VzYl9yeF9hZ2dfY2ZnX3YyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtODEwLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTgxOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6ODIwOnN0YXRpYyB2b2lkIHJ0dzg5X3VzYl9yeF9hZ2dfY2ZnX3YzKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtODIxLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTgzMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6ODMxOnN0YXRpYyB2b2lkIHJ0dzg5X3VzYl9yeF9hZ2dfY2ZnKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtODMyLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTgzNi1cdGNhc2UgUlRMODg1MkI6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjgzNzpcdFx0cnR3ODlfdXNiX3J4X2FnZ19jZmdfdjEocnR3ZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtODM4LVx0XHRicmVhaztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtODM5LVx0Y2FzZSBSVEw4ODUyQzpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6ODQwOlx0XHRydHc4OV91c2JfcnhfYWdnX2NmZ192MihydHdkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy04NDEtXHRcdGJyZWFrO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy04NDItXHRjYXNlIFJUTDg5MjJBOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo4NDM6XHRcdHJ0dzg5X3VzYl9yeF9hZ2dfY2ZnX3YzKHJ0d2Rldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTg0NC1cdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy04NTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjg1MTpzdGF0aWMgaW50IHJ0dzg5X3VzYl9vcHNfbWFjX3Bvc3RfaW5pdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTg1Mi17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjg1MzpcdHN0cnVjdCBydHc4OV91c2IgKnJ0d3VzYiA9IHJ0dzg5X3VzYl9wcml2KHJ0d2Rldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjg1NDpcdGNvbnN0IHN0cnVjdCBydHc4OV91c2JfaW5mbyAqaW5mbyA9IHJ0d3VzYi1cdTAwM2VpbmZvO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy04NTUtXHRlbnVtIHVzYl9kZXZpY2Vfc3BlZWQgc3BlZWQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy04ODItcnhfYWdnX2NmZzpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6ODgzOlx0cnR3ODlfdXNiX3J4X2FnZ19jZmcocnR3ZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtODg0LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtODg3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo4ODg6c3RhdGljIHZvaWQgcnR3ODlfdXNiX29wc19yZWNhbGNfaW50X21pdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTg4OS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy04OTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjg5MzpzdGF0aWMgaW50IHJ0dzg5X3VzYl9vcHNfbWFjX2x2MV9yY3Z5KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtODk0LVx0XHRcdFx0ICAgICAgZW51bSBydHc4OV9sdjFfcmN2eV9zdGVwIHN0ZXApXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy05MzMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjkzNDpzdGF0aWMgdm9pZCBydHc4OV91c2Jfb3BzX2R1bXBfZXJyX3N0YXR1cyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTkzNS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy05MzgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjkzOTpzdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X2hjaV9vcHMgcnR3ODlfdXNiX29wcyA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6OTQwOlx0LnR4X3dyaXRlXHQ9IHJ0dzg5X3VzYl9vcHNfdHhfd3JpdGUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjk0MTpcdC50eF9raWNrX29mZlx0PSBydHc4OV91c2Jfb3BzX3R4X2tpY2tfb2ZmLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy05NDItXHQuZmx1c2hfcXVldWVzXHQ9IE5VTEwsIC8qIE5vdCBuZWVkZWQ/ICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjk0MzpcdC5yZXNldFx0XHQ9IHJ0dzg5X3VzYl9vcHNfcmVzZXQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjk0NDpcdC5zdGFydFx0XHQ9IHJ0dzg5X3VzYl9vcHNfc3RhcnQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjk0NTpcdC5zdG9wXHRcdD0gcnR3ODlfdXNiX29wc19zdG9wLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo5NDY6XHQucGF1c2VcdFx0PSBydHc4OV91c2Jfb3BzX3BhdXNlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo5NDc6XHQuc3dpdGNoX21vZGVcdD0gcnR3ODlfdXNiX29wc19zd2l0Y2hfbW9kZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6OTQ4Olx0LnJlY2FsY19pbnRfbWl0ID0gcnR3ODlfdXNiX29wc19yZWNhbGNfaW50X21pdCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtOTQ5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo5NTA6XHQucmVhZDhcdFx0PSBydHc4OV91c2Jfb3BzX3JlYWQ4LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo5NTE6XHQucmVhZDE2XHRcdD0gcnR3ODlfdXNiX29wc19yZWFkMTYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjk1MjpcdC5yZWFkMzJcdFx0PSBydHc4OV91c2Jfb3BzX3JlYWQzMixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6OTUzOlx0LndyaXRlOFx0XHQ9IHJ0dzg5X3VzYl9vcHNfd3JpdGU4LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo5NTQ6XHQud3JpdGUxNlx0PSBydHc4OV91c2Jfb3BzX3dyaXRlMTYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjk1NTpcdC53cml0ZTMyXHQ9IHJ0dzg5X3VzYl9vcHNfd3JpdGUzMixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtOTU2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo5NTc6XHQubWFjX3ByZV9pbml0XHQ9IHJ0dzg5X3VzYl9vcHNfbWFjX3ByZV9pbml0LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo5NTg6XHQubWFjX3ByZV9kZWluaXRcdD0gcnR3ODlfdXNiX29wc19tYWNfcHJlX2RlaW5pdCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6OTU5Olx0Lm1hY19wb3N0X2luaXRcdD0gcnR3ODlfdXNiX29wc19tYWNfcG9zdF9pbml0LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo5NjA6XHQuZGVpbml0XHRcdD0gcnR3ODlfdXNiX29wc19kZWluaXQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTk2MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6OTYyOlx0LmNoZWNrX2FuZF9yZWNsYWltX3R4X3Jlc291cmNlID0gcnR3ODlfdXNiX29wc19jaGVja19hbmRfcmVjbGFpbV90eF9yZXNvdXJjZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6OTYzOlx0Lm1hY19sdjFfcmN2eVx0PSBydHc4OV91c2Jfb3BzX21hY19sdjFfcmN2eSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6OTY0Olx0LmR1bXBfZXJyX3N0YXR1cyA9IHJ0dzg5X3VzYl9vcHNfZHVtcF9lcnJfc3RhdHVzLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy05NjUtXHQubmFwaV9wb2xsXHQ9IE5VTEwsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy05ODEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjk4MjpzdGF0aWMgaW50IHJ0dzg5X3VzYl9wYXJzZShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTk4My1cdFx0XHQgICBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50Zilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTk4Ni1cdHN0cnVjdCB1c2JfaW50ZXJmYWNlX2Rlc2NyaXB0b3IgKmludGZfZGVzYyA9IFx1MDAyNmhvc3RfaW50ZXJmYWNlLVx1MDAzZWRlc2M7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjk4NzpcdHN0cnVjdCBydHc4OV91c2IgKnJ0d3VzYiA9IHJ0dzg5X3VzYl9wcml2KHJ0d2Rldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTk4OC1cdHN0cnVjdCB1c2JfZW5kcG9pbnRfZGVzY3JpcHRvciAqZW5kcG9pbnQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xMDQxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzoxMDQyOnN0YXRpYyBpbnQgcnR3ODlfdXNiX2ludGZfaW5pdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTEwNDMtXHRcdFx0ICAgICAgIHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xMDQ0LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6MTA0NTpcdHN0cnVjdCBydHc4OV91c2IgKnJ0d3VzYiA9IHJ0dzg5X3VzYl9wcml2KHJ0d2Rldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTEwNDYtXHRpbnQgcmV0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTA0OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6MTA1MDpcdHJldCA9IHJ0dzg5X3VzYl9wYXJzZShydHdkZXYsIGludGYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xMDUxLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTEwNjYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjEwNjc6c3RhdGljIHZvaWQgcnR3ODlfdXNiX2ludGZfZGVpbml0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTA2OC1cdFx0XHRcdCAgc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTEwNjkte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzoxMDcwOlx0c3RydWN0IHJ0dzg5X3VzYiAqcnR3dXNiID0gcnR3ODlfdXNiX3ByaXYocnR3ZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTA3MS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTEwNzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjEwNzY6c3RhdGljIGludCBydHc4OV91c2Jfc3dpdGNoX21vZGVfYXgoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xMDc3LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTEwODMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjEwODQ6XHRwYWRfY3RybDIgPSBydHc4OV91c2Jfb3BzX3JlYWQzMihydHdkZXYsIFJfQVhfUEFEX0NUUkwyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTA4NS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTExMDItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjExMDM6XHRydHc4OV91c2Jfd3JpdGUzMl9xdWlldChydHdkZXYsIFJfQVhfUEFEX0NUUkwyLCBwYWRfY3RybDIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xMTA0LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTEwNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6MTEwODpzdGF0aWMgaW50IHJ0dzg5X3VzYl9zd2l0Y2hfbW9kZV9iZShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTExMDkte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTExMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6MTExMjpcdHBhZF9jdHJsMiA9IHJ0dzg5X3VzYl9vcHNfcmVhZDMyKHJ0d2RldiwgUl9CRV9QQURfQ1RSTDIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xMTEzLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTEzMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6MTEzMjpcdHJ0dzg5X3VzYl93cml0ZTMyX3F1aWV0KHJ0d2RldiwgUl9CRV9QQURfQ1RSTDIsIHBhZF9jdHJsMik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTExMzMtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xMTM2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzoxMTM3OnN0YXRpYyBpbnQgcnR3ODlfdXNiX3N3aXRjaF9tb2RlKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTEzOC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjExMzk6XHRzdHJ1Y3QgcnR3ODlfdXNiICpydHd1c2IgPSBydHc4OV91c2JfcHJpdihydHdkZXYpO1xuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDIxOjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3MjIwCgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogNDYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhpbmtpbmcgcHJvY2VzczoKCioqRGl2aW5nIGludG8gdGhlIGBydHc4OV91c2JfcHJvYmVgIEZ1bmN0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gc3RhcnRpbmcgYnkgbG9va2luZyBhdCBgcnR3ODlfdXNiX3Byb2JlYCwgd2hpY2ggaXMgaW4gdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jYCBmaWxlLiBHaXZlbiBteSBleHBlcnRpc2UsIEkga25vdyB0aGlzIGlzIHRoZSBlbnRyeSBwb2ludCBmb3IgcHJvYmluZyB0aGUgUmVhbHRlayBydHc4OSB3aXJlbGVzcyBVU0IgZGV2aWNlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGhhcHBlbnMgZHVyaW5nIHRoZSBkZXZpY2UgaW5pdGlhbGl6YXRpb24gYW5kIGNvbm5lY3Rpb24gcHJvY2Vzcy4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gcmVhZCB0aGUgc3Vycm91bmRpbmcgY29kZSwgZXNwZWNpYWxseSBhcm91bmQgdGhpcyBgcHJvYmVgIGZ1bmN0aW9uLiBJIHdhbnQgdG8gdHJhY2UgdGhlIGZsb3cgb2YgZXhlY3V0aW9uIGZyb20gdGhlIG1vbWVudCB0aGUgVVNCIGRldmljZSBpcyBwbHVnZ2VkIGluIHRvIHNlZSBob3cgaXQgaXMgaWRlbnRpZmllZCwgaW5pdGlhbGlzZWQgYW5kIHJlZ2lzdGVyZWQgd2l0aCB0aGUgc3lzdGVtLiBJJiMzOTttIGdvaW5nIHRvIGxvb2sgZm9yIHJlbGF0ZWQgZnVuY3Rpb25zIHRoYXQgZ2V0IGNhbGxlZCB3aXRoaW4gYHByb2JlYCB0byBnZXQgYSBzZW5zZSBvZiB0aGUgcHJvY2Vzcy4gSSYjMzk7bGwgYmUgcGFydGljdWxhcmx5IGludGVyZXN0ZWQgaW4gaG93IHJlc291cmNlcyBhcmUgYWxsb2NhdGVkIGFuZCBpbml0aWFsaXNlZCwgYW5kIGFueSBlcnJvciBoYW5kbGluZyB0aGF0IGlzIGltcGxlbWVudGVkLiBJJiMzOTtsbCBuZWVkIHRvIHBheSBjbG9zZSBhdHRlbnRpb24gdG8gdGhlIGRyaXZlciYjMzk7cyBpbnRlcmFjdGlvbiB3aXRoIHRoZSBVU0IgY29yZSwgYW5kIHdoYXQmIzM5O3MgYmVpbmcgZG9uZSB0byBnZXQgdGhpcyBkZXZpY2Ugd29ya2luZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMjE6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cnR3ODlfdXNiX3Byb2JlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTFidS5jPTYyPXN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBydHdfODg1MWJ1X2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTFidS5jLTY0LVx0LmlkX3RhYmxlID0gcnR3Xzg4NTFidV9pZF90YWJsZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MWJ1LmM6NjU6XHQucHJvYmUgPSBydHc4OV91c2JfcHJvYmUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTFidS5jLTY2LVx0LmRpc2Nvbm5lY3QgPSBydHc4OV91c2JfZGlzY29ubmVjdCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJhdS5jPTc2PXN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBydHdfODg1MmF1X2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJhdS5jLTc4LVx0LmlkX3RhYmxlID0gcnR3Xzg4NTJhdV9pZF90YWJsZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmF1LmM6Nzk6XHQucHJvYmUgPSBydHc4OV91c2JfcHJvYmUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJhdS5jLTgwLVx0LmRpc2Nvbm5lY3QgPSBydHc4OV91c2JfZGlzY29ubmVjdCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJidS5jPTc2PXN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBydHdfODg1MmJ1X2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJidS5jLTc4LVx0LmlkX3RhYmxlID0gcnR3Xzg4NTJidV9pZF90YWJsZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmJ1LmM6Nzk6XHQucHJvYmUgPSBydHc4OV91c2JfcHJvYmUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJidS5jLTgwLVx0LmRpc2Nvbm5lY3QgPSBydHc4OV91c2JfZGlzY29ubmVjdCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJjdS5jPTEzNj1zdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgcnR3Xzg4NTJjdV9kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyY3UuYy0xMzgtXHQuaWRfdGFibGUgPSBydHdfODg1MmN1X2lkX3RhYmxlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyY3UuYzoxMzk6XHQucHJvYmUgPSBydHc4OV91c2JfcHJvYmUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJjdS5jLTE0MC1cdC5kaXNjb25uZWN0ID0gcnR3ODlfdXNiX2Rpc2Nvbm5lY3QsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyYXUuYz03Nz1zdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgcnR3Xzg5MjJhdV9kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyYXUuYy03OS1cdC5pZF90YWJsZSA9IHJ0d184OTIyYXVfaWRfdGFibGUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJhdS5jOjgwOlx0LnByb2JlID0gcnR3ODlfdXNiX3Byb2JlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyYXUuYy04MS1cdC5kaXNjb25uZWN0ID0gcnR3ODlfdXNiX2Rpc2Nvbm5lY3QsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYz0xMjAxPV9fQVRUUklCVVRFX0dST1VQUyhydHc4OV91c2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xMjAyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzoxMjAzOmludCBydHc4OV91c2JfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTEyMDQtXHRcdCAgICBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqaWQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xMjk0LX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6MTI5NTpFWFBPUlRfU1lNQk9MKHJ0dzg5X3VzYl9wcm9iZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTEyOTYtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuaD05Mj1zdGF0aWMgaW5saW5lIHN0cnVjdCBydHc4OV91c2IgKnJ0dzg5X3VzYl9wcml2KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5oLTk2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuaDo5NzppbnQgcnR3ODlfdXNiX3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuaC05OC1cdFx0ICAgIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDIxOjQxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI4ODMwCgkJCQkJCQlvdXRwdXQ6IDQ2CgkJCQkJCQl0aG91Z2h0czogMTE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgcnR3ODkgVVNCIFByb2JlKioKCk9rYXksIHNvIEkmIzM5O20gZGl2aW5nIGludG8gdGhpcyBgcnR3ODlgIGRyaXZlciwgd2hpY2ggaGFuZGxlcyBSZWFsdGVrIFdpLUZpIGNoaXBzIGFjcm9zcyBib3RoIFBDSSBhbmQgVVNCIGludGVyZmFjZXMuIE15IGdvYWwgaXMgdG8gdW5kZXJzdGFuZCB0aGUgVVNCIHByb2JpbmcgcHJvY2Vzcywgc3BlY2lmaWNhbGx5IHRoZSBmdW5jdGlvbiBgcnR3ODlfdXNiX3Byb2JlYC4gIExldCBtZSByZWZyZXNoIG15IG1lbW9yeTsgaXQgc3VwcG9ydHMgY2hpcHMgbGlrZSB0aGUgODg1MUIsIDg4NTJBLCBhbmQgdGhvc2Ugb3RoZXJzLiBJIG5lZWQgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiB3aGF0JiMzOTtzIGhhcHBlbmluZyB3aGVuIGEgVVNCIGRldmljZSBpcyBkZXRlY3RlZC4KClJpZ2h0LCBzbyBJIG5lZWQgdG8gbmF2aWdhdGUgdG8gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmNgIGFuZCB0YWtlIGEgbG9vayBhcm91bmQgbGluZSAxMjAzLiBMZXQmIzM5O3Mgc2VlIGhvdyB0aGUgZHJpdmVyIGhhbmRsZXMgaW5pdGlhbGl6YXRpb24gYW5kIGFueSByZWxldmFudCBoYXJkd2FyZSBpZGVudGlmaWNhdGlvbiBkdXJpbmcgdGhlIFVTQiBkZXZpY2UgcHJvYmUuIEkmIzM5O20gZXhwZWN0aW5nIHRvIGZpbmQgdGhlIGtleSBzdGVwcyBoZXJlOiBkZXZpY2Ugc2V0dXAsIHJlc291cmNlIGFsbG9jYXRpb24sIGFuZCwgb2YgY291cnNlLCB0aGUgYWN0dWFsIFdpLUZpIGNvbnRyb2xsZXIgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UuIExldCYjMzk7cyBkaWcgaW4gYW5kIGZpZ3VyZSBvdXQgdGhlIGV4YWN0IGZsb3cuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDIxOjQxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEyMDAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogODAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTIwMDpcdH07XG4xMjAxOlx0X19BVFRSSUJVVEVfR1JPVVBTKHJ0dzg5X3VzYik7XG4xMjAyOlx0XG4xMjAzOlx0aW50IHJ0dzg5X3VzYl9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZixcbjEyMDQ6XHRcdFx0ICAgIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZClcbjEyMDU6XHR7XG4xMjA2Olx0XHRjb25zdCBzdHJ1Y3QgcnR3ODlfZHJpdmVyX2luZm8gKmluZm87XG4xMjA3Olx0XHRzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXY7XG4xMjA4Olx0XHRzdHJ1Y3QgcnR3ODlfdXNiICpydHd1c2I7XG4xMjA5Olx0XHRpbnQgcmV0O1xuMTIxMDpcdFxuMTIxMTpcdFx0aW5mbyA9IChjb25zdCBzdHJ1Y3QgcnR3ODlfZHJpdmVyX2luZm8gKilpZC1cdTAwM2Vkcml2ZXJfaW5mbztcbjEyMTI6XHRcbjEyMTM6XHRcdHJ0d2RldiA9IHJ0dzg5X2FsbG9jX2llZWU4MDIxMV9odyhcdTAwMjZpbnRmLVx1MDAzZWRldixcbjEyMTQ6XHRcdFx0XHRcdFx0ICBzaXplb2Yoc3RydWN0IHJ0dzg5X3VzYiksIGluZm8pO1xuMTIxNTpcdFx0aWYgKCFydHdkZXYpIHtcbjEyMTY6XHRcdFx0ZGV2X2VycihcdTAwMjZpbnRmLVx1MDAzZWRldiwgXCYjMzQ7ZmFpbGVkIHRvIGFsbG9jYXRlIGh3XFxuXCYjMzQ7KTtcbjEyMTc6XHRcdFx0cmV0dXJuIC1FTk9NRU07XG4xMjE4Olx0XHR9XG4xMjE5Olx0XG4xMjIwOlx0XHRydHd1c2IgPSBydHc4OV91c2JfcHJpdihydHdkZXYpO1xuMTIyMTpcdFx0cnR3dXNiLVx1MDAzZXJ0d2RldiA9IHJ0d2RldjtcbjEyMjI6XHRcdHJ0d3VzYi1cdTAwM2VpbmZvID0gaW5mby1cdTAwM2VidXMudXNiO1xuMTIyMzpcdFxuMTIyNDpcdFx0cnR3ZGV2LVx1MDAzZWh3LVx1MDAzZXdpcGh5LVx1MDAzZWRldi5ncm91cHMgPSBydHc4OV91c2JfZ3JvdXBzO1xuMTIyNTpcdFxuMTIyNjpcdFx0cnR3ZGV2LVx1MDAzZWhjaS5vcHMgPSBcdTAwMjZydHc4OV91c2Jfb3BzO1xuMTIyNzpcdFx0cnR3ZGV2LVx1MDAzZWhjaS50eXBlID0gUlRXODlfSENJX1RZUEVfVVNCO1xuMTIyODpcdFx0cnR3ZGV2LVx1MDAzZWhjaS50eF9ycHRfZW5hYmxlZCA9IHRydWU7XG4xMjI5Olx0XG4xMjMwOlx0XHRyZXQgPSBydHc4OV91c2JfaW50Zl9pbml0KHJ0d2RldiwgaW50Zik7XG4xMjMxOlx0XHRpZiAocmV0KSB7XG4xMjMyOlx0XHRcdHJ0dzg5X2VycihydHdkZXYsIFwmIzM0O2ZhaWxlZCB0byBpbml0aWFsaXNlIGludGY6ICVkXFxuXCYjMzQ7LCByZXQpO1xuMTIzMzpcdFx0XHRnb3RvIGVycl9mcmVlX2h3O1xuMTIzNDpcdFx0fVxuMTIzNTpcdFxuMTIzNjpcdFx0cmV0ID0gcnR3ODlfdXNiX3N3aXRjaF9tb2RlKHJ0d2Rldik7XG4xMjM3Olx0XHRpZiAocmV0KSB7XG4xMjM4Olx0XHRcdC8qIE5vdCBhIGZhaWwsIGJ1dCB3ZSBkbyBuZWVkIHRvIHNraXAgcnR3ODlfY29yZV9yZWdpc3Rlci4gKi9cbjEyMzk6XHRcdFx0cmV0ID0gMDtcbjEyNDA6XHRcdFx0Z290byBlcnJfaW50Zl9kZWluaXQ7XG4xMjQxOlx0XHR9XG4xMjQyOlx0XG4xMjQzOlx0XHRpZiAocnR3dXNiLVx1MDAzZXVkZXYtXHUwMDNlc3BlZWQgPT0gVVNCX1NQRUVEX1NVUEVSKVxuMTI0NDpcdFx0XHRydHdkZXYtXHUwMDNlaGNpLmRsZV90eXBlID0gUlRXODlfSENJX0RMRV9UWVBFX1VTQjM7XG4xMjQ1Olx0XHRlbHNlXG4xMjQ2Olx0XHRcdHJ0d2Rldi1cdTAwM2VoY2kuZGxlX3R5cGUgPSBSVFc4OV9IQ0lfRExFX1RZUEVfVVNCMjtcbjEyNDc6XHRcbjEyNDg6XHRcdHJ0dzg5X3VzYl9pbml0X3R4KHJ0d2Rldik7XG4xMjQ5Olx0XG4xMjUwOlx0XHRyZXQgPSBydHc4OV91c2JfYWxsb2NfcnhfYnVmcyhydHd1c2IpO1xuMTI1MTpcdFx0aWYgKHJldClcbjEyNTI6XHRcdFx0Z290byBlcnJfaW50Zl9kZWluaXQ7XG4xMjUzOlx0XG4xMjU0Olx0XHRyZXQgPSBydHc4OV91c2JfaW5pdF9yeChydHdkZXYpO1xuMTI1NTpcdFx0aWYgKHJldClcbjEyNTY6XHRcdFx0Z290byBlcnJfZnJlZV9yeF9idWZzO1xuMTI1NzpcdFxuMTI1ODpcdFx0cmV0ID0gcnR3ODlfY29yZV9pbml0KHJ0d2Rldik7XG4xMjU5Olx0XHRpZiAocmV0KSB7XG4xMjYwOlx0XHRcdHJ0dzg5X2VycihydHdkZXYsIFwmIzM0O2ZhaWxlZCB0byBpbml0aWFsaXNlIGNvcmU6ICVkXFxuXCYjMzQ7LCByZXQpO1xuMTI2MTpcdFx0XHRnb3RvIGVycl9kZWluaXRfcng7XG4xMjYyOlx0XHR9XG4xMjYzOlx0XG4xMjY0Olx0XHRyZXQgPSBydHc4OV9jaGlwX2luZm9fc2V0dXAocnR3ZGV2KTtcbjEyNjU6XHRcdGlmIChyZXQpIHtcbjEyNjY6XHRcdFx0cnR3ODlfZXJyKHJ0d2RldiwgXCYjMzQ7ZmFpbGVkIHRvIHNldHVwIGNoaXAgaW5mb3JtYXRpb25cXG5cJiMzNDspO1xuMTI2NzpcdFx0XHRnb3RvIGVycl9jb3JlX2RlaW5pdDtcbjEyNjg6XHRcdH1cbjEyNjk6XHRcbjEyNzA6XHRcdHJldCA9IHJ0dzg5X2NvcmVfcmVnaXN0ZXIocnR3ZGV2KTtcbjEyNzE6XHRcdGlmIChyZXQpIHtcbjEyNzI6XHRcdFx0cnR3ODlfZXJyKHJ0d2RldiwgXCYjMzQ7ZmFpbGVkIHRvIHJlZ2lzdGVyIGNvcmVcXG5cJiMzNDspO1xuMTI3MzpcdFx0XHRnb3RvIGVycl9jb3JlX2RlaW5pdDtcbjEyNzQ6XHRcdH1cbjEyNzU6XHRcbjEyNzY6XHRcdHJ0dzg5X3VzYl9zdGFydF9yeChydHdkZXYpO1xuMTI3NzpcdFxuMTI3ODpcdFx0c2V0X2JpdChSVFc4OV9GTEFHX1BST0JFX0RPTkUsIHJ0d2Rldi1cdTAwM2VmbGFncyk7XG4xMjc5Olx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDIxOjQxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwNTI0CgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogMzE0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEludmVzdGlnYXRpb24gaW50byBydHc4OSYjMzk7cyBpbnRlcmFjdGlvbiB3aXRoIG1hYzgwMjExIGFuZCBzeXprYWxsZXIqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGRpdmUgaW50byBob3cgdGhlIGBydHc4OWAgZHJpdmVyIGludGVyZmFjZXMgd2l0aCB0aGUgYG1hYzgwMjExYCBzdWJzeXN0ZW0gYW5kIHBvdGVudGlhbGx5IGdldHMgZnV6emVkIGJ5IGBzeXprYWxsZXJgLiBJIGtub3cgYHN5emthbGxlcmAgaGFzIGRlc2NyaXB0aW9ucyBmb3IgVVNCIGVtdWxhdGlvbiBhbmQgd2lmaSBmdXp6aW5nLCBpbmNsdWRpbmcgZnVuY3Rpb25zIGxpa2UgYHN5el91c2JfY29ubmVjdGAsIGBubDgwMjExYCwgYW5kIGNvbXBvbmVudHMgb2YgYG1hYzgwMjExYCwgc28gSSB3YW50IHRvIHVuZGVyc3RhbmQgdGhlIGF0dGFjayBzdXJmYWNlLgoKTXkgaW5pdGlhbCBmb2N1cyBpcyBvbiBpZGVudGlmeWluZyBtb2RpZmllZCBmdW5jdGlvbnMgYW5kIHRyYWNpbmcgdGhlaXIgZXhlY3V0aW9uIHBhdGhzLiBJJiMzOTt2ZSBwaW5wb2ludGVkIHRocmVlIGludGVyZXN0aW5nIGZ1bmN0aW9uczogYHJ0dzg5X2NhbV9yZXNldF9rZXlzYCwgYHJ0dzg5X3dvd19jb25zdHJ1Y3Rfa2V5X2luZm9gLCBhbmQgYHJ0dzg5X3dvd191cGRhdGVfa2V5X2luZm9gLgoKTGV0JiMzOTtzIHN0YXJ0IGJ5IGV4YW1pbmluZyBgcnR3ODlfY2FtX3Jlc2V0X2tleXNgLCBsb2NhdGVkIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NhbS5jYC4gTG9va2luZyBhdCB0aGUgY29kZToKCmBgYGMKdm9pZCBydHc4OV9jYW1fcmVzZXRfa2V5cyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpCnsKCWllZWU4MDIxMV9pdGVyX2tleXMocnR3ZGV2LSZndDtodywgTlVMTCwgcnR3ODlfY2FtX3Jlc2V0X2tleV9pdGVyLCBydHdkZXYpOwp9CmBgYAoKT2theSwgaXQgaXRlcmF0ZXMgdGhyb3VnaCBrZXlzIHVzaW5nIGBpZWVlODAyMTFfaXRlcl9rZXlzYC4gTm93IEkgbmVlZCB0byBmaWd1cmUgb3V0ICp3aGVyZSogYHJ0dzg5X2NhbV9yZXNldF9rZXlzYCBpcyBjYWxsZWQuCgpJJiMzOTt2ZSBhbHJlYWR5IGZvdW5kIG9uZSBjYWxsIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3Nlci5jYCwgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgYHNlcl9yZXNldF9tYWNfYmluZGluZ2AgZnVuY3Rpb24uIE15IG5leHQgc3RlcCBpcyB0byB0cmFjZSB0aGUgY2FsbGVycyBvZiBgc2VyX3Jlc2V0X21hY19iaW5kaW5nYCB0byBzZWUgaG93IGl0IGNhbiBiZSB0cmlnZ2VyZWQsIGFuZCBwb3RlbnRpYWxseSBleHBsb2l0ZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDIxOjQxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3Nlcl9yZXNldF9tYWNfYmluZGluZyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9zZXIuYz0zNDI9c3RhdGljIHZvaWQgc2VyX2RlaW5pdF9jYW0oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBzdHJ1Y3QgcnR3ODlfdmlmICpydHd2aWYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9zZXIuYy0zNTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3Nlci5jOjM1NzpzdGF0aWMgdm9pZCBzZXJfcmVzZXRfbWFjX2JpbmRpbmcoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9zZXIuYy0zNTgte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvc2VyLmM9Njk1PXN0YXRpYyB2b2lkIHNlcl9sMl9yZXNldF9zdF9wcmVfaGRsKHN0cnVjdCBydHc4OV9zZXIgKnNlcilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3Nlci5jLTcxOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvc2VyLmM6NzIwOlx0c2VyX3Jlc2V0X21hY19iaW5kaW5nKHJ0d2Rldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3Nlci5jLTcyMS1cdHJ0dzg5X2NvcmVfc3RvcChydHdkZXYpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAyMTo0MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMTYxMAoJCQkJCQkJb3V0cHV0OiA0NgoJCQkJCQkJdGhvdWdodHM6IDg4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGFuYWx5c2lzIG9mIHRoZSBwcm92aWRlZCBjb2RlIGluc3BlY3Rpb24gcmVxdWVzdCwgZnJvbSBteSBwZXJzcGVjdGl2ZSBhcyBhIHNlYXNvbmVkIHByb2Zlc3Npb25hbDoKCioqRGVlcCBEaXZlIGludG8gUmVhbHRlayYjMzk7cyBydHc4OSBXaXJlbGVzcyBEcml2ZXImIzM5O3MgV2FrZS1vbi1XaXJlbGVzcyAoV29XKSBGdW5jdGlvbmFsaXR5KioKCk9rYXksIHNvIHdlJiMzOTtyZSBsb29raW5nIGF0IHRoZSBSZWFsdGVrIGBydHc4OWAgd2lyZWxlc3MgZHJpdmVyLCBzcGVjaWZpY2FsbHkgaXRzIFdha2Utb24tV2lyZWxlc3MgKFdvVykgY2FwYWJpbGl0aWVzLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gemVybyBpbiBvbiB0aGUgYHJ0dzg5X3dvd19zd2FwX2Z3YCBmdW5jdGlvbiB3aXRoaW4gYHdvdy5jYC4gVGhpcyBzdHJvbmdseSBzdWdnZXN0cyB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGEgY3JpdGljYWwgcm91dGluZSBmb3Igc3dhcHBpbmcgZmlybXdhcmUgb3IgbWFuYWdpbmcgZmlybXdhcmUgc3RhdGVzIHJlbGF0ZWQgdG8gV29XIGZ1bmN0aW9uYWxpdHkuIFRoZSBsaW5lIG51bWJlciwgYHJ0dzg5L3dvdy5jOjEzMTVgLCBpcyBvdXIgcHJpbWFyeSBmb2N1cy4KClNpbmNlIHRoZSBnb2FsIGlzIGFuIGluZm9ybWVkIGluc3BlY3Rpb24sIEkmIzM5O2xsIG5lZWQgdG8gaW1tZWRpYXRlbHkgZXhwYW5kIG15IHNjb3BlLiBJJiMzOTttIGdvaW5nIHRvIGxvb2sgYXQgbGluZXMgYXJvdW5kIHRoZSBwcm92aWRlZCBudW1iZXIsIHRvIGdldCB0aGUgYmlnZ2VyIHBpY3R1cmUuIEkmIzM5O20gdGhpbmtpbmcgSSYjMzk7bGwgc3RhcnQgYSBiaXQgYmVmb3JlLCBhcm91bmQgbGluZSAxMjU2LCB0byB1bmRlcnN0YW5kIHRoZSBzdXJyb3VuZGluZyBjb250ZXh0IGFuZCBmbG93IG9mIHRoZSBXb1cgZmlybXdhcmUgc3dhcCBwcm9jZXNzLiBUaGVuLCBJIHdpbGwgZGVmaW5pdGVseSBhbHNvIGFkZCBsaW5lcyAxNDI5IGFuZCAxNTk1IHRvIG15IGludmVzdGlnYXRpb24sIHRvIHRyeSB0byBjYXRjaCBhbnkgb2J2aW91cyBpbnRlcmFjdGlvbnMgb3Igb3RoZXIgY2FsbHMgaW4gdGhlIGFyZWEuIFRoaXMgYnJvYWRlciBjb250ZXh0IHdpbGwgYmUgY3J1Y2lhbCBmb3IgdW5kZXJzdGFuZGluZyBwb3RlbnRpYWwgaXNzdWVzLCBkZXBlbmRlbmNpZXMsIG9yIHRoZSBvdmVyYWxsIGFyY2hpdGVjdHVyZSBvZiBob3cgdGhlIGRyaXZlciBoYW5kbGVzIFdvVy1yZWxhdGVkIGZpcm13YXJlLiBLbm93aW5nIHRoZSBiaWdnZXIgcGljdHVyZSBpcyB0aGUgb25seSB3YXkgdG8gcGVyZm9ybSBhIHByb3BlciBhbmQgaW4tZGVwdGggY29kZSBpbnNwZWN0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAyMTo0MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxMzAwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzEzMDA6XHRcbjEzMDE6XHRcdHJldCA9IHJ0dzg5X2Z3X2gyY19yb2xlX21haW50YWluKHJ0d2RldiwgcnR3dmlmX2xpbmssIHJ0d3N0YV9saW5rLFxuMTMwMjpcdFx0XHRcdFx0XHQgUlRXODlfUk9MRV9GV19SRVNUT1JFKTtcbjEzMDM6XHRcdGlmIChyZXQpIHtcbjEzMDQ6XHRcdFx0cnR3ODlfd2FybihydHdkZXYsIFwmIzM0O2ZhaWxlZCB0byBzZW5kIGgyYyByb2xlIG1haW50YWluXFxuXCYjMzQ7KTtcbjEzMDU6XHRcdFx0cmV0dXJuIHJldDtcbjEzMDY6XHRcdH1cbjEzMDc6XHRcbjEzMDg6XHRcdHJldCA9IHJ0dzg5X2NoaXBfaDJjX2Fzc29jX2NtYWNfdGJsKHJ0d2RldiwgcnR3dmlmX2xpbmssIHJ0d3N0YV9saW5rKTtcbjEzMDk6XHRcdGlmIChyZXQpIHtcbjEzMTA6XHRcdFx0cnR3ODlfd2FybihydHdkZXYsIFwmIzM0O2ZhaWxlZCB0byBzZW5kIGgyYyBhc3NvYyBjbWFjIHRibFxcblwmIzM0Oyk7XG4xMzExOlx0XHRcdHJldHVybiByZXQ7XG4xMzEyOlx0XHR9XG4xMzEzOlx0XG4xMzE0Olx0XHRpZiAoIWlzX2Nvbm4pXG4xMzE1Olx0XHRcdHJ0dzg5X2NhbV9yZXNldF9rZXlzKHJ0d2Rldik7XG4xMzE2Olx0XG4xMzE3Olx0XHRyZXQgPSBydHc4OV9md19oMmNfam9pbl9pbmZvKHJ0d2RldiwgcnR3dmlmX2xpbmssIHJ0d3N0YV9saW5rLCAhaXNfY29ubik7XG4xMzE4Olx0XHRpZiAocmV0KSB7XG4xMzE5Olx0XHRcdHJ0dzg5X3dhcm4ocnR3ZGV2LCBcJiMzNDtmYWlsZWQgdG8gc2VuZCBoMmMgam9pbiBpbmZvXFxuXCYjMzQ7KTtcbjEzMjA6XHRcdFx0cmV0dXJuIHJldDtcbjEzMjE6XHRcdH1cbjEzMjI6XHRcbjEzMjM6XHRcdHJldCA9IHJ0dzg5X2Z3X2gyY19jYW0ocnR3ZGV2LCBydHd2aWZfbGluaywgcnR3c3RhX2xpbmssIE5VTEwsXG4xMzI0Olx0XHRcdFx0ICAgICAgIFJUVzg5X1JPTEVfRldfUkVTVE9SRSk7XG4xMzI1Olx0XHRpZiAocmV0KSB7XG4xMzI2Olx0XHRcdHJ0dzg5X3dhcm4ocnR3ZGV2LCBcJiMzNDtmYWlsZWQgdG8gc2VuZCBoMmMgY2FtXFxuXCYjMzQ7KTtcbjEzMjc6XHRcdFx0cmV0dXJuIHJldDtcbjEzMjg6XHRcdH1cbjEzMjk6XHRcbjEzMzA6XHRcdGlmIChpc19jb25uKSB7XG4xMzMxOlx0XHRcdHJldCA9IHJ0dzg5X2Z3X2gyY19nZW5lcmFsX3BrdChydHdkZXYsIHJ0d3ZpZl9saW5rLCBydHdzdGFfbGluay1cdTAwM2VtYWNfaWQpO1xuMTMzMjpcdFx0XHRpZiAocmV0KSB7XG4xMzMzOlx0XHRcdFx0cnR3ODlfd2FybihydHdkZXYsIFwmIzM0O2ZhaWxlZCB0byBzZW5kIGgyYyBnZW5lcmFsIHBhY2tldFxcblwmIzM0Oyk7XG4xMzM0Olx0XHRcdFx0cmV0dXJuIHJldDtcbjEzMzU6XHRcdFx0fVxuMTMzNjpcdFx0XHRydHc4OV9waHlfcmFfYXNzb2MocnR3ZGV2LCBydHdzdGFfbGluayk7XG4xMzM3Olx0XHRcdHJ0dzg5X3BoeV9zZXRfYnNzX2NvbG9yKHJ0d2RldiwgcnR3dmlmX2xpbmspO1xuMTMzODpcdFx0XHRydHc4OV9jaGlwX2NmZ190eHB3cl91bF90Yl9vZmZzZXQocnR3ZGV2LCBydHd2aWZfbGluayk7XG4xMzM5Olx0XHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDIxOjQxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMyODIzCgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogODIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYW5hbHlzaXMgb2YgdGhpcyBjb2RlIHNuaXBwZXQ6CgoqKkRlZXAgRGl2ZSBpbnRvIHJ0dzg5JiMzOTtzIFdvV0xBTiBJbXBsZW1lbnRhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYHdvdy5jYCBpbiB0aGUgcnR3ODkgZHJpdmVyLCBhbmQgaXQmIzM5O3MgaW1tZWRpYXRlbHkgb2J2aW91cyB0aGlzIGlzIGFsbCBhYm91dCBXYWtlIG9uIFdpcmVsZXNzIExBTiAoV29XTEFOKS4gTm93LCBteSBnb2FsIGlzIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBkcml2ZXIgbWFuYWdlcyBhbmQgdXRpbGl6ZXMgaXRzIGtleSBpbmZvcm1hdGlvbiBmb3IgdGhpcyBmdW5jdGlvbmFsaXR5LiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byB0cmFjZSB0aGUgdXNhZ2Ugb2YgdGhlc2Uga2V5LXJlbGF0ZWQgZnVuY3Rpb25zOiBgcnR3ODlfd293X2NvbnN0cnVjdF9rZXlfaW5mb2AsIGBydHc4OV93b3dfdXBkYXRlX2tleV9pbmZvYCwgYW5kIGBydHc4OV93b3dfc3dhcF9md2AuIFRoZSBjb3JlIG9mIGFueSBnb29kIFdvV0xBTiBpbXBsZW1lbnRhdGlvbiBoYXMgc2VjdXJlIGtleSBoYW5kbGluZywgc28gSSBuZWVkIHRvIGtub3cgdGhlIGZsb3cuIFRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5IGFuZCBzdGFydCBzZWFyY2hpbmcgd2l0aGluIHRoZSBydHc4OSBjb2RlYmFzZSBpdHNlbGYuIEkmIzM5O2xsIG5lZWQgdG8gc2VlIGhvdyB0aGVzZSBmdW5jdGlvbnMgYXJlIGNvbnN0cnVjdGVkLCB1cGRhdGVkIGFuZCBzd2FwcGVkLCBhbmQgd2hhdCBjb250ZXh0cyB0aGV5IGFyZSBjYWxsZWQgZnJvbS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMjE6NDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cnR3ODlfd293XyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDc2NyBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jYW0uYz05Mjg9dm9pZCBydHc4OV9jYW1fZmlsbF9kY3RsX3NlY19jYW1faW5mb192MShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jYW0uYy05MzQtXHRcdHJ0dzg5X2dldF9hZGRyX2NhbV9vZihydHd2aWZfbGluaywgcnR3c3RhX2xpbmspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jYW0uYzo5MzU6XHRzdHJ1Y3QgcnR3ODlfd293X3BhcmFtICpydHdfd293ID0gXHUwMDI2cnR3ZGV2LVx1MDAzZXdvdztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY2FtLmMtOTM2LVx0dTggKnB0a190eF9pdiA9IHJ0d193b3ctXHUwMDNla2V5X2luZm8ucHRrX3R4X2l2O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY2FtLmM9MTAwOT12b2lkIHJ0dzg5X2NhbV9maWxsX2RjdGxfc2VjX2NhbV9pbmZvX3YyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NhbS5jLTEwMTktXHRib29sIGlzX21sZCA9IHN0YSA/IHN0YS1cdTAwM2VtbG8gOiBpZWVlODAyMTFfdmlmX2lzX21sZCh2aWYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jYW0uYzoxMDIwOlx0c3RydWN0IHJ0dzg5X3dvd19wYXJhbSAqcnR3X3dvdyA9IFx1MDAyNnJ0d2Rldi1cdTAwM2V3b3c7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NhbS5jLTEwMjEtXHR1OCAqcHRrX3R4X2l2ID0gcnR3X3dvdy1cdTAwM2VrZXlfaW5mby5wdGtfdHhfaXY7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jYW0uYz0xMTQyPXZvaWQgcnR3ODlfY2FtX2ZpbGxfZGN0bF9zZWNfY2FtX2luZm9fdjMoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY2FtLmMtMTE1Mi1cdGJvb2wgaXNfbWxkID0gc3RhID8gc3RhLVx1MDAzZW1sbyA6IGllZWU4MDIxMV92aWZfaXNfbWxkKHZpZik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NhbS5jOjExNTM6XHRzdHJ1Y3QgcnR3ODlfd293X3BhcmFtICpydHdfd293ID0gXHUwMDI2cnR3ZGV2LVx1MDAzZXdvdztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY2FtLmMtMTE1NC1cdHU4ICpwdGtfdHhfaXYgPSBydHdfd293LVx1MDAzZWtleV9pbmZvLnB0a190eF9pdjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYz0xNDE0PXN0YXRpYyBpbnQgcnR3ODlfY29yZV90eF93cml0ZV9saW5rKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy0xNDM0LVx0cnR3ODlfdHJhZmZpY19zdGF0c19hY2N1KHJ0d2RldiwgcnR3dmlmLCBza2IsIHRydWUsIHRydWUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmM6MTQzNTpcdHJ0dzg5X3dvd19wYXJzZV9ha20ocnR3ZGV2LCBza2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtMTQzNi1cdHJ0dzg5X2NvcmVfdHhfdXBkYXRlX2Rlc2NfaW5mbyhydHdkZXYsIFx1MDAyNnR4X3JlcSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmg9MzM9c3RydWN0IHJ0dzg5X3JlZ2RfZGF0YTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oOjM0OnN0cnVjdCBydHc4OV93b3dfY2FtX2luZm87XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaC0zNS1zdHJ1Y3QgcnR3ODlfYmJfd3JhcF9kYXRhO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oPTEwMjQ9ZW51bSBydHc4OV9yZnNpX2N0cmxfYmFuZCB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmgtMTAzMS0vKiBvbmx5IG1nZCBmZWF0dXJlcyBjYW4gYmUgYWRkZWQgdG8gdGhlIGVudW0gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oOjEwMzI6ZW51bSBydHc4OV93b3dfZmxhZ3Mge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmgtMTAzMy1cdFJUVzg5X1dPV19GTEFHX0VOX01BR0lDX1BLVCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaD00ODc3PXN0cnVjdCBydHc4OV9jaGlwX29wcyB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmgtNDk5Mi1cdGludCAoKmgyY193b3dfY2FtX3VwZGF0ZSkoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmg6NDk5MzpcdFx0XHRcdCAgc3RydWN0IHJ0dzg5X3dvd19jYW1faW5mbyAqY2FtX2luZm8pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmgtNDk5NC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaD03MzA3PXN0cnVjdCBydHc4OV9waHlfY2FsY19lZnVzZV9nYWluIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaC03MzE2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmg6NzMxNzpzdHJ1Y3QgcnR3ODlfd293X2NhbV9pbmZvIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oLTczMTgtXHRib29sIHJfdztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaC03MzI5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmg6NzMzMDpzdHJ1Y3QgcnR3ODlfd293X2tleV9pbmZvIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oLTczMzEtXHR1OCBwdGtfdHhfaXZbOF07XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmgtNzMzOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oOjczNDA6c3RydWN0IHJ0dzg5X3dvd19ndGtfaW5mbyB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaC03MzQxLVx0dTgga2NrWzMyXTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaC03MzUxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmg6NzM1MjpzdHJ1Y3QgcnR3ODlfd293X2FvYWNfcmVwb3J0IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oLTczNTMtXHR1OCBycHRfdmVyO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oLTczNzItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaDo3MzczOnN0cnVjdCBydHc4OV93b3dfcGFyYW0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmgtNzM3NC1cdHN0cnVjdCBydHc4OV92aWZfbGluayAqcnR3dmlmX2xpbms7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaC03Mzc1LVx0REVDTEFSRV9CSVRNQVAoZmxhZ3MsIFJUVzg5X1dPV19GTEFHX05VTSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaDo3Mzc2Olx0c3RydWN0IHJ0dzg5X3dvd19jYW1faW5mbyBwYXR0ZXJuc1tSVFc4OV9NQVhfUEFUVEVSTl9OVU1dO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmg6NzM3NzpcdHN0cnVjdCBydHc4OV93b3dfa2V5X2luZm8ga2V5X2luZm87XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaDo3Mzc4Olx0c3RydWN0IHJ0dzg5X3dvd19ndGtfaW5mbyBndGtfaW5mbztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oOjczNzk6XHRzdHJ1Y3QgcnR3ODlfd293X2FvYWNfcmVwb3J0IGFvYWNfcnB0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmgtNzM4MC1cdHU4IHBhdHRlcm5fY250O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oPTc1NTE9c3RydWN0IHJ0dzg5X2RldiB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmgtNzY4NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oOjc2ODU6XHRzdHJ1Y3QgcnR3ODlfd293X3BhcmFtIHdvdztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oLTc2ODYtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jPTI4NzA9c3RhdGljIHN0cnVjdCBza19idWZmICpydHc4OV9lYXBvbF9nZXQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0yODc0LVx0XHRcdFx0ICAgICAweDhFLCAweDAxLCAweDAzLCAweDAwLCAweDVGLCAweDAyLCAweDAzfTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYzoyODc1Olx0dTggc2VjX2hkcl9sZW4gPSBydHc4OV93b3dfZ2V0X3NlY19oZHJfbGVuKHJ0d2Rldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM6Mjg3NjpcdHN0cnVjdCBydHc4OV93b3dfcGFyYW0gKnJ0d193b3cgPSBcdTAwMjZydHdkZXYtXHUwMDNld293O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTI4NzctXHRzdHJ1Y3QgcnR3ODlfZWFwb2xfMl9vZl8yICplYXBvbF9wa3Q7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jPTI5MjA9c3RhdGljIHN0cnVjdCBza19idWZmICpydHc4OV9zYV9xdWVyeV9nZXQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0yOTIyLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYzoyOTIzOlx0dTggc2VjX2hkcl9sZW4gPSBydHc4OV93b3dfZ2V0X3NlY19oZHJfbGVuKHJ0d2Rldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMjkyNC1cdHN0cnVjdCBpZWVlODAyMTFfYnNzX2NvbmYgKmJzc19jb25mO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYz0yOTU3PXN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqcnR3ODlfYXJwX3Jlc3BvbnNlX2dldChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTI5NjEtXHRzdHJ1Y3QgcnR3ODlfdmlmICpydHd2aWYgPSBydHd2aWZfbGluay1cdTAwM2VydHd2aWY7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM6Mjk2MjpcdHU4IHNlY19oZHJfbGVuID0gcnR3ODlfd293X2dldF9zZWNfaGRyX2xlbihydHdkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jOjI5NjM6XHRzdHJ1Y3QgcnR3ODlfd293X3BhcmFtICpydHdfd293ID0gXHUwMDI2cnR3ZGV2LVx1MDAzZXdvdztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0yOTY0LVx0c3RydWN0IGllZWU4MDIxMV9oZHJfM2FkZHIgKmhkcjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM9NzcxOT12b2lkIHJ0dzg5X2h3X3NjYW5fY2FsY19yZXFfc3NpZChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTc3MjQtXHRzdHJ1Y3QgY2ZnODAyMTFfc2Nhbl9yZXF1ZXN0ICpyZXEgPSBydHd2aWYtXHUwMDNlc2Nhbl9yZXE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM6NzcyNTpcdHN0cnVjdCBydHc4OV93b3dfcGFyYW0gKnJ0d193b3cgPSBcdTAwMjZydHdkZXYtXHUwMDNld293O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTc3MjYtXHRzdHJ1Y3QgY2ZnODAyMTFfc2NoZWRfc2Nhbl9yZXF1ZXN0ICpuZF9jb25maWc7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jPTc3NDc9aW50IHJ0dzg5X2Z3X2gyY19zY2FuX29mZmxvYWRfYmUoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy03NzY1LVx0dTggb3BjaF9zaXplID0gc2l6ZW9mKCpvcGNoKSAqIG9wdGlvbi1cdTAwM2VudW1fb3BjaDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYzo3NzY2Olx0c3RydWN0IHJ0dzg5X3dvd19wYXJhbSAqcnR3X3dvdyA9IFx1MDAyNnJ0d2Rldi1cdTAwM2V3b3c7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtNzc2Ny1cdHN0cnVjdCBjZmc4MDIxMV9zY2hlZF9zY2FuX3JlcXVlc3QgKm5kX2NvbmZpZztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM9OTQyMD1pbnQgcnR3ODlfaHdfc2Nhbl9hcHBlbmRfd2lsZGNhcmRfcHJvYmVfcmVxKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtOTQyOS1cdHN0cnVjdCBpZWVlODAyMTFfc2Nhbl9pZXMgKmllcyA9IHJ0d3ZpZi1cdTAwM2VzY2FuX2llcztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYzo5NDMwOlx0c3RydWN0IHJ0dzg5X3dvd19wYXJhbSAqcnR3X3dvdyA9IFx1MDAyNnJ0d2Rldi1cdTAwM2V3b3c7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtOTQzMS1cdHN0cnVjdCBjZmc4MDIxMV9zY2hlZF9zY2FuX3JlcXVlc3QgKm5kX2NvbmZpZztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM9OTU3OT1zdGF0aWMgdm9pZCBydHc4OV9wbm9fc2Nhbl9hZGRfY2hhbl9heChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTk1ODIte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jOjk1ODM6XHRzdHJ1Y3QgcnR3ODlfd293X3BhcmFtICpydHdfd293ID0gXHUwMDI2cnR3ZGV2LVx1MDAzZXdvdztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy05NTg0LVx0c3RydWN0IHJ0dzg5X3BrdG9mbGRfaW5mbyAqaW5mbztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM9OTcyND1zdGF0aWMgdm9pZCBydHc4OV9wbm9fc2Nhbl9hZGRfY2hhbl9iZShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGludCBjaGFuX3R5cGUsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTk3Mjcte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jOjk3Mjg6XHRzdHJ1Y3QgcnR3ODlfd293X3BhcmFtICpydHdfd293ID0gXHUwMDI2cnR3ZGV2LVx1MDAzZXdvdztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy05NzI5LVx0c3RydWN0IHJ0dzg5X3BrdG9mbGRfaW5mbyAqaW5mbztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM9OTgyOT1pbnQgcnR3ODlfcG5vX3NjYW5fYWRkX2NoYW5fbGlzdF9heChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTk4MzEte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jOjk4MzI6XHRzdHJ1Y3QgcnR3ODlfd293X3BhcmFtICpydHdfd293ID0gXHUwMDI2cnR3ZGV2LVx1MDAzZXdvdztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy05ODMzLVx0c3RydWN0IGNmZzgwMjExX3NjaGVkX3NjYW5fcmVxdWVzdCAqbmRfY29uZmlnID0gcnR3X3dvdy1cdTAwM2VuZF9jb25maWc7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jPTEwMDQ3PWludCBydHc4OV9wbm9fc2Nhbl9hZGRfY2hhbl9saXN0X2JlKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTAwNDkte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jOjEwMDUwOlx0c3RydWN0IHJ0dzg5X3dvd19wYXJhbSAqcnR3X3dvdyA9IFx1MDAyNnJ0d2Rldi1cdTAwM2V3b3c7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTAwNTEtXHRzdHJ1Y3QgY2ZnODAyMTFfc2NoZWRfc2Nhbl9yZXF1ZXN0ICpuZF9jb25maWcgPSBydHdfd293LVx1MDAzZW5kX2NvbmZpZztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM9MTA3ODQ9aW50IHJ0dzg5X2Z3X2gyY19kaXNjb25uZWN0X2RldGVjdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTEwNzg2LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYzoxMDc4NzpcdHN0cnVjdCBydHc4OV93b3dfcGFyYW0gKnJ0d193b3cgPSBcdTAwMjZydHdkZXYtXHUwMDNld293O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTEwNzg4LVx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM9MTA4Mjg9aW50IHJ0dzg5X2Z3X2gyY19jZmdfcG5vKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldiwgc3RydWN0IHJ0dzg5X3ZpZl9saW5rICpydHd2aWZfbGluayxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTA4MzAte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jOjEwODMxOlx0c3RydWN0IHJ0dzg5X3dvd19wYXJhbSAqcnR3X3dvdyA9IFx1MDAyNnJ0d2Rldi1cdTAwM2V3b3c7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTA4MzItXHRzdHJ1Y3QgY2ZnODAyMTFfc2NoZWRfc2Nhbl9yZXF1ZXN0ICpuZF9jb25maWcgPSBydHdfd293LVx1MDAzZW5kX2NvbmZpZztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM9MTA4Nzk9aW50IHJ0dzg5X2Z3X2gyY193b3dfZ2xvYmFsKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldiwgc3RydWN0IHJ0dzg5X3ZpZl9saW5rICpydHd2aWZfbGluayxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTA4ODEte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jOjEwODgyOlx0c3RydWN0IHJ0dzg5X3dvd19wYXJhbSAqcnR3X3dvdyA9IFx1MDAyNnJ0d2Rldi1cdTAwM2V3b3c7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTA4ODMtXHRzdHJ1Y3QgcnR3ODlfaDJjX3dvd19nbG9iYWwgKmgyYztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM9MTA5MjY9aW50IHJ0dzg5X2Z3X2gyY193b3dfd2FrZXVwX2N0cmwoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0xMDkzMC1cdHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYgPSBydHd2aWZfbGlua190b192aWYocnR3dmlmX2xpbmspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jOjEwOTMxOlx0c3RydWN0IHJ0dzg5X3dvd19wYXJhbSAqcnR3X3dvdyA9IFx1MDAyNnJ0d2Rldi1cdTAwM2V3b3c7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTA5MzItXHRzdHJ1Y3QgcnR3ODlfaDJjX3dvd193YWtldXBfY3RybCAqaDJjO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYz0xMDk4ND1pbnQgcnR3ODlfZndfaDJjX3dvd19jYW1fdXBkYXRlKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYzoxMDk4NTpcdFx0XHRcdHN0cnVjdCBydHc4OV93b3dfY2FtX2luZm8gKmNhbV9pbmZvKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTEwOTg2LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM9MTEwNDE9aW50IHJ0dzg5X2Z3X2gyY193b3dfY2FtX3VwZGF0ZV92MShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM6MTEwNDI6XHRcdFx0XHQgICBzdHJ1Y3QgcnR3ODlfd293X2NhbV9pbmZvICpjYW1faW5mbylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0xMTA0My17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jPTExMDk5PWludCBydHc4OV9md19oMmNfd293X2d0a19vZmxkKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTExMDIte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jOjExMTAzOlx0c3RydWN0IHJ0dzg5X3dvd19wYXJhbSAqcnR3X3dvdyA9IFx1MDAyNnJ0d2Rldi1cdTAwM2V3b3c7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM6MTExMDQ6XHRzdHJ1Y3QgcnR3ODlfd293X2d0a19pbmZvICpndGtfaW5mbyA9IFx1MDAyNnJ0d193b3ctXHUwMDNlZ3RrX2luZm87XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTExMDUtXHRzdHJ1Y3QgcnR3ODlfaDJjX3dvd19ndGtfb2ZsZCAqaDJjO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuaD0yMjE1PXN0cnVjdCBydHc4OV9oMmNfd293X2dsb2JhbCB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmgtMjIxNi1cdF9fbGUzMiB3MDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuaDoyMjE3Olx0c3RydWN0IHJ0dzg5X3dvd19rZXlfaW5mbyBrZXlfaW5mbztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuaC0yMjE4LX0gX19wYWNrZWQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5oPTIzMTI9c3RydWN0IHJ0dzg5X2gyY193b3dfZ3RrX29mbGQge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuaC0yMzE0LVx0X19sZTMyIHcxO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5oOjIzMTU6XHRzdHJ1Y3QgcnR3ODlfd293X2d0a19pbmZvIGd0a19pbmZvO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5oLTIzMTYtfSBfX3BhY2tlZDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3Lmg9NDY2NT1zdHJ1Y3QgcnR3ODlfZndfaDJjX3JmX3JlZ19pbmZvIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmgtNDY5OS0jZGVmaW5lIEgyQ19DTF9NQUNfV09XXHRcdFx0MHgxXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3Lmg6NDcwMDplbnVtIHJ0dzg5X3dvd19oMmNfZnVuYyB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmgtNDcwMS1cdEgyQ19GVU5DX0tFRVBfQUxJVkVcdFx0PSAweDAsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5oPTU2MzQ9aW50IHJ0dzg5X2Z3X2gyY193b3dfY2FtX3VwZGF0ZShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3Lmg6NTYzNTpcdFx0XHRcdHN0cnVjdCBydHc4OV93b3dfY2FtX2luZm8gKmNhbV9pbmZvKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuaC01NjM2LWludCBydHc4OV9md19oMmNfd293X2NhbV91cGRhdGVfdjEoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5oOjU2Mzc6XHRcdFx0XHQgICBzdHJ1Y3QgcnR3ODlfd293X2NhbV9pbmZvICpjYW1faW5mbyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmgtNTYzOC1pbnQgcnR3ODlfZndfaDJjX3dvd19ndGtfb2ZsZChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5oPTU4MTE9aW50IHJ0dzg5X2NoaXBfaDJjX3dvd19jYW1fdXBkYXRlKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuaDo1ODEyOlx0XHRcdFx0ICBzdHJ1Y3QgcnR3ODlfd293X2NhbV9pbmZvICpjYW1faW5mbylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuaC01ODEzLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3Lmg9NTkyMz1ydHc4OV9sb2FkX3JmZV9kYXRhX2Zyb21fZncoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuaC01OTI1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5oOjU5MjY6ZW51bSBydHc4OV93b3dfd2FrZXVwX3ZlciB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmgtNTkyNy1cdFJUVzg5X1dPV19SRUFTT05fVjAsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWMuYz01ODkwPXJ0dzg5X21hY19jMmhfd293X2FvYWNfcnB0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldiwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTMyIGxlbilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjLmMtNTg5MS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYy5jOjU4OTI6XHRzdHJ1Y3QgcnR3ODlfd293X3BhcmFtICpydHdfd293ID0gXHUwMDI2cnR3ZGV2LVx1MDAzZXdvdztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjLmM6NTg5MzpcdHN0cnVjdCBydHc4OV93b3dfYW9hY19yZXBvcnQgKmFvYWNfcnB0ID0gXHUwMDI2cnR3X3dvdy1cdTAwM2Vhb2FjX3JwdDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjLmMtNTg5NC1cdHN0cnVjdCBydHc4OV93YWl0X2luZm8gKndhaXQgPSBcdTAwMjZydHdfd293LVx1MDAzZXdhaXQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWMuYz03MzUxPWludCBydHc4OV9tYWNfY3B1X2lvX3J4KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgYm9vbCB3b3dfZW5hYmxlKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjLmMtNzM2My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjLmM6NzM2NDpzdGF0aWMgaW50IHJ0dzg5X3dvd19jb25maWdfbWFjX2F4KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgYm9vbCBlbmFibGVfd293KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWMuYy03MzY1LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYy5jPTc0NTA9Y29uc3Qgc3RydWN0IHJ0dzg5X21hY19nZW5fZGVmIHJ0dzg5X21hY19nZW5fYXggPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWMuYy03NTQ3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWMuYzo3NTQ4Olx0Lndvd19jb25maWdfbWFjID0gcnR3ODlfd293X2NvbmZpZ19tYWNfYXgsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYy5jLTc1NDktfTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM9MTg5Nj1zdGF0aWMgaW50IHJ0dzg5X29wc19zdXNwZW5kKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0xOTA3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjE5MDg6XHRyZXQgPSBydHc4OV93b3dfc3VzcGVuZChydHdkZXYsIHdvd2xhbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMTkwOS1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM9MTkxOD1zdGF0aWMgaW50IHJ0dzg5X29wc19yZXN1bWUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTE5MjQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MTkyNTpcdHJldCA9IHJ0dzg5X3dvd19yZXN1bWUocnR3ZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0xOTI2LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM9MTk0NT1zdGF0aWMgdm9pZCBydHc4OV9zZXRfcmVrZXlfZGF0YShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMTk0OS1cdHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiA9IGh3LVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MTk1MDpcdHN0cnVjdCBydHc4OV93b3dfcGFyYW0gKnJ0d193b3cgPSBcdTAwMjZydHdkZXYtXHUwMDNld293O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjE5NTE6XHRzdHJ1Y3QgcnR3ODlfd293X2d0a19pbmZvICpndGtfaW5mbyA9IFx1MDAyNnJ0d193b3ctXHUwMDNlZ3RrX2luZm87XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMTk1Mi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hY19iZS5jPTI5NjU9c3RhdGljIHZvaWQgcnR3ODlfbWFjX2R1bXBfcXRhX2xvc3RfYmUoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjX2JlLmMtMzA1MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjX2JlLmM6MzA1MjpzdGF0aWMgaW50IHJ0dzg5X3dvd19jb25maWdfbWFjX2JlKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgYm9vbCBlbmFibGVfd293KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWNfYmUuYy0zMDUzLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hY19iZS5jPTMyNjg9Y29uc3Qgc3RydWN0IHJ0dzg5X21hY19nZW5fZGVmIHJ0dzg5X21hY19nZW5fYmUgPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWNfYmUuYy0zMzY1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWNfYmUuYzozMzY2Olx0Lndvd19jb25maWdfbWFjID0gcnR3ODlfd293X2NvbmZpZ19tYWNfYmUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hY19iZS5jLTMzNjctfTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTE0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYzoxNTp2b2lkIF9fcnR3ODlfd293X3BhcnNlX2FrbShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHN0cnVjdCBza19idWZmICpza2IpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTE2LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtMTctXHRzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXQgPSAoc3RydWN0IGllZWU4MDIxMV9tZ210ICopc2tiLVx1MDAzZWRhdGE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jOjE4Olx0c3RydWN0IHJ0dzg5X3dvd19wYXJhbSAqcnR3X3dvdyA9IFx1MDAyNnJ0d2Rldi1cdTAwM2V3b3c7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTE5LVx0Y29uc3QgdTggKnJzbiwgKmllcyA9IG1nbXQtXHUwMDNldS5hc3NvY19yZXEudmFyaWFibGU7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYz0yMzk9c3RhdGljIGludCBydHc4OV9yeF9wbl9nZXRfcG1mKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtMjQwLVx0XHRcdCAgICAgICBzdHJ1Y3QgaWVlZTgwMjExX2tleV9jb25mICprZXksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jOjI0MTpcdFx0XHQgICAgICAgc3RydWN0IHJ0dzg5X3dvd19ndGtfaW5mbyAqZ3RrX2luZm8pXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTI0Mi17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYz0yNzA9c3RhdGljIGludCBydHc4OV9yeF9wbl9zZXRfcG1mKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTI3My17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jOjI3NDpcdHN0cnVjdCBydHc4OV93b3dfcGFyYW0gKnJ0d193b3cgPSBcdTAwMjZydHdkZXYtXHUwMDNld293O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYzoyNzU6XHRzdHJ1Y3QgcnR3ODlfd293X2FvYWNfcmVwb3J0ICphb2FjX3JwdCA9IFx1MDAyNnJ0d193b3ctXHUwMDNlYW9hY19ycHQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTI3Ni1cdHN0cnVjdCBpZWVlODAyMTFfa2V5X3NlcSBzZXE7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy0yOTUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jOjI5NjpzdGF0aWMgdm9pZCBydHc4OV93b3dfZ2V0X2tleV9pbmZvX2l0ZXIoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTI5Ny1cdFx0XHRcdFx0c3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTMwMi1cdHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiA9IGh3LVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jOjMwMzpcdHN0cnVjdCBydHc4OV93b3dfcGFyYW0gKnJ0d193b3cgPSBcdTAwMjZydHdkZXYtXHUwMDNld293O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYzozMDQ6XHRzdHJ1Y3QgcnR3ODlfd293X2tleV9pbmZvICprZXlfaW5mbyA9IFx1MDAyNnJ0d193b3ctXHUwMDNla2V5X2luZm87XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jOjMwNTpcdHN0cnVjdCBydHc4OV93b3dfZ3RrX2luZm8gKmd0a19pbmZvID0gXHUwMDI2cnR3X3dvdy1cdTAwM2VndGtfaW5mbztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtMzA2LVx0Y29uc3Qgc3RydWN0IHJ0dzg5X2NpcGhlcl9pbmZvICpjaXBoZXJfaW5mbztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTM3MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmM6MzcxOnN0YXRpYyB2b2lkIHJ0dzg5X3dvd19zZXRfa2V5X2luZm9faXRlcihzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtMzcyLVx0XHRcdFx0XHRzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtMzc3LVx0c3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2ID0gaHctXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmM6Mzc4Olx0c3RydWN0IHJ0dzg5X3dvd19wYXJhbSAqcnR3X3dvdyA9IFx1MDAyNnJ0d2Rldi1cdTAwM2V3b3c7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jOjM3OTpcdHN0cnVjdCBydHc4OV93b3dfYW9hY19yZXBvcnQgKmFvYWNfcnB0ID0gXHUwMDI2cnR3X3dvdy1cdTAwM2Vhb2FjX3JwdDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtMzgwLVx0c3RydWN0IHJ0dzg5X3NldF9rZXlfaW5mb19pdGVyX2RhdGEgKml0ZXJfZGF0YSA9IGRhdGE7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy00NTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jOjQ1NzpzdGF0aWMgdm9pZCBydHc4OV93b3dfa2V5X2NsZWFyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtNDU4LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmM6NDU5Olx0c3RydWN0IHJ0dzg5X3dvd19wYXJhbSAqcnR3X3dvdyA9IFx1MDAyNnJ0d2Rldi1cdTAwM2V3b3c7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTQ2MC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTQ2Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmM6NDY4OnN0YXRpYyB2b2lkIHJ0dzg5X3dvd19jb25zdHJ1Y3Rfa2V5X2luZm8oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy00Njkte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYzo0NzA6XHRzdHJ1Y3QgcnR3ODlfd293X3BhcmFtICpydHdfd293ID0gXHUwMDI2cnR3ZGV2LVx1MDAzZXdvdztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmM6NDcxOlx0c3RydWN0IHJ0dzg5X3dvd19rZXlfaW5mbyAqa2V5X2luZm8gPSBcdTAwMjZydHdfd293LVx1MDAzZWtleV9pbmZvO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy00NzItXHRzdHJ1Y3QgcnR3ODlfdmlmX2xpbmsgKnJ0d3ZpZl9saW5rID0gcnR3ZGV2LVx1MDAzZXdvdy5ydHd2aWZfbGluaztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTQ3Ni1cdGllZWU4MDIxMV9pdGVyX2tleXMocnR3ZGV2LVx1MDAzZWh3LCB3b3dfdmlmLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYzo0Nzc6XHRcdFx0ICAgIHJ0dzg5X3dvd19nZXRfa2V5X2luZm9faXRlciwgXHUwMDI2ZXJyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtNDc4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy00NzktXHRpZiAoZXJyKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jOjQ4MDpcdFx0cnR3ODlfd293X2tleV9jbGVhcihydHdkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy00ODEtXHRcdHJldHVybjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTQ4OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmM6NDg5OnN0YXRpYyB2b2lkIHJ0dzg5X3dvd19kZWJ1Z19hb2FjX3JwdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTQ5MC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jOjQ5MTpcdHN0cnVjdCBydHc4OV93b3dfcGFyYW0gKnJ0d193b3cgPSBcdTAwMjZydHdkZXYtXHUwMDNld293O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYzo0OTI6XHRzdHJ1Y3QgcnR3ODlfd293X2FvYWNfcmVwb3J0ICphb2FjX3JwdCA9IFx1MDAyNnJ0d193b3ctXHUwMDNlYW9hY19ycHQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTQ5My1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTUyOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmM6NTMwOnN0YXRpYyBpbnQgcnR3ODlfd293X2dldF9hb2FjX3JwdF9yZWcoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy01MzEte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYzo1MzI6XHRzdHJ1Y3QgcnR3ODlfd293X3BhcmFtICpydHdfd293ID0gXHUwMDI2cnR3ZGV2LVx1MDAzZXdvdztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmM6NTMzOlx0c3RydWN0IHJ0dzg5X3dvd19hb2FjX3JlcG9ydCAqYW9hY19ycHQgPSBcdTAwMjZydHdfd293LVx1MDAzZWFvYWNfcnB0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy01MzQtXHRzdHJ1Y3QgcnR3ODlfbWFjX2MyaF9pbmZvIGMyaF9pbmZvID0ge307XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy02MTUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jOjYxNjpzdGF0aWMgaW50IHJ0dzg5X3dvd19nZXRfYW9hY19ycHQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBib29sIHJ4X3JlYWR5KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy02MTcte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYzo2MTg6XHRzdHJ1Y3QgcnR3ODlfd293X3BhcmFtICpydHdfd293ID0gXHUwMDI2cnR3ZGV2LVx1MDAzZXdvdztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtNjE5LVx0aW50IHJldDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTYyNC1cdGlmICghcnhfcmVhZHkpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmM6NjI1Olx0XHRyZXQgPSBydHc4OV93b3dfZ2V0X2FvYWNfcnB0X3JlZyhydHdkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy02MjYtXHRcdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTYzNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmM6NjM4Olx0cnR3ODlfd293X2RlYnVnX2FvYWNfcnB0KHJ0d2Rldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTYzOS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTY0Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmM6NjQzOnN0YXRpYyBzdHJ1Y3QgaWVlZTgwMjExX2tleV9jb25mICpydHc4OV93b3dfZ3RrX3Jla2V5KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtNjQ0LVx0XHRcdFx0XHRcdCAgICAgIHUzMiBjaXBoZXIsIHU4IGtleWlkeCwgdTggKmd0aylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTY4My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmM6Njg0OnN0YXRpYyB2b2lkIHJ0dzg5X3dvd191cGRhdGVfa2V5X2luZm8oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBib29sIHJ4X3JlYWR5KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy02ODUte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtNjg3LVx0c3RydWN0IGllZWU4MDIxMV92aWYgKndvd192aWYgPSBydHd2aWZfbGlua190b192aWYocnR3dmlmX2xpbmspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYzo2ODg6XHRzdHJ1Y3QgcnR3ODlfd293X3BhcmFtICpydHdfd293ID0gXHUwMDI2cnR3ZGV2LVx1MDAzZXdvdztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmM6Njg5Olx0c3RydWN0IHJ0dzg5X3dvd19hb2FjX3JlcG9ydCAqYW9hY19ycHQgPSBcdTAwMjZydHdfd293LVx1MDAzZWFvYWNfcnB0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy02OTAtXHRzdHJ1Y3QgcnR3ODlfc2V0X2tleV9pbmZvX2l0ZXJfZGF0YSBkYXRhID0gey5lcnJvciA9IGZhbHNlLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtNjk2LVx0aWVlZTgwMjExX2l0ZXJfa2V5cyhydHdkZXYtXHUwMDNlaHcsIHdvd192aWYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jOjY5NzpcdFx0XHQgICAgcnR3ODlfd293X3NldF9rZXlfaW5mb19pdGVyLCBcdTAwMjZkYXRhKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtNjk4LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtNzA2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYzo3MDc6XHRrZXkgPSBydHc4OV93b3dfZ3RrX3Jla2V5KHJ0d2RldiwgZGF0YS5ndGtfY2lwaGVyLCBhb2FjX3JwdC1cdTAwM2VrZXlfaWR4LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy03MDgtXHRcdFx0XHQgIGFvYWNfcnB0LVx1MDAzZWd0ayk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy03MTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jOjcxODpcdGtleSA9IHJ0dzg5X3dvd19ndGtfcmVrZXkocnR3ZGV2LCBkYXRhLmlndGtfY2lwaGVyLCBhb2FjX3JwdC1cdTAwM2VpZ3RrX2tleV9pZCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtNzE5LVx0XHRcdFx0ICBhb2FjX3JwdC1cdTAwM2VpZ3RrKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTczNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmM6NzM1OnN0YXRpYyB2b2lkIHJ0dzg5X3dvd19sZWF2ZV9kZWVwX3BzKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtNzM2LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTczOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmM6NzQwOnN0YXRpYyB2b2lkIHJ0dzg5X3dvd19lbnRlcl9kZWVwX3BzKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtNzQxLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTc0NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmM6NzQ1OnN0YXRpYyB2b2lkIHJ0dzg5X3dvd19lbnRlcl9wcyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTc0Ni17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy03NDgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jOjc0OTpcdGlmIChydHc4OV93b3dfbWdkX2xpbmtlZChydHdkZXYpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy03NTAtXHRcdHJ0dzg5X2VudGVyX2xwcyhydHdkZXYsIHJ0d3ZpZl9saW5rLVx1MDAzZXJ0d3ZpZiwgZmFsc2UpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYzo3NTE6XHRlbHNlIGlmIChydHc4OV93b3dfbm9fbGluayhydHdkZXYpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy03NTItXHRcdHJ0dzg5X2Z3X2gyY19md2lwcyhydHdkZXYsIHJ0d3ZpZl9saW5rLCB0cnVlKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTc1NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmM6NzU1OnN0YXRpYyB2b2lkIHJ0dzg5X3dvd19sZWF2ZV9wcyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGJvb2wgZW5hYmxlX3dvdylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtNzU2LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTc1OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmM6NzU5Olx0aWYgKHJ0dzg5X3dvd19tZ2RfbGlua2VkKHJ0d2RldikpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtNzYwLVx0XHRydHc4OV9sZWF2ZV9scHMocnR3ZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmM6NzYxOlx0fSBlbHNlIGlmIChydHc4OV93b3dfbm9fbGluayhydHdkZXYpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTc2Mi1cdFx0aWYgKGVuYWJsZV93b3cpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy03NjgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jOjc2OTpzdGF0aWMgaW50IHJ0dzg5X3dvd19jb25maWdfbWFjKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgYm9vbCBlbmFibGVfd293KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy03NzAte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtNzc1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYzo3NzY6c3RhdGljIHZvaWQgcnR3ODlfd293X3NldF9yeF9maWx0ZXIoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBib29sIGVuYWJsZSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtNzc3LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTc4Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmM6Nzg4OnN0YXRpYyB2b2lkIHJ0dzg5X3dvd19zaG93X3dha2V1cF9yZWFzb24oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy03ODkte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtNzkxLVx0c3RydWN0IGllZWU4MDIxMV92aWYgKndvd192aWYgPSBydHd2aWZfbGlua190b192aWYocnR3dmlmX2xpbmspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYzo3OTI6XHRzdHJ1Y3QgcnR3ODlfd293X3BhcmFtICpydHdfd293ID0gXHUwMDI2cnR3ZGV2LVx1MDAzZXdvdztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmM6NzkzOlx0c3RydWN0IHJ0dzg5X3dvd19hb2FjX3JlcG9ydCAqYW9hY19ycHQgPSBcdTAwMjZydHdfd293LVx1MDAzZWFvYWNfcnB0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy03OTQtXHRzdHJ1Y3QgY2ZnODAyMTFfd293bGFuX25kX2luZm8gbmRfaW5mbztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTg0OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmM6ODQ5OnN0YXRpYyB2b2lkIHJ0dzg5X3dvd192aWZfaXRlcihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTg1MC1cdFx0XHQgICAgICAgc3RydWN0IHJ0dzg5X3ZpZl9saW5rICpydHd2aWZfbGluaylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtODUxLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmM6ODUyOlx0c3RydWN0IHJ0dzg5X3dvd19wYXJhbSAqcnR3X3dvdyA9IFx1MDAyNnJ0d2Rldi1cdTAwM2V3b3c7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTg1My1cdHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYgPSBydHd2aWZfbGlua190b192aWYocnR3dmlmX2xpbmspO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmM9OTE0PXN0YXRpYyB1MTYgcnR3ODlfY2FsY19jcmModTggKnBkYXRhLCBpbnQgbGVuZ3RoKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtOTI1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYzo5MjY6c3RhdGljIGludCBydHc4OV93b3dfcGF0dGVybl9nZXRfdHlwZShzdHJ1Y3QgcnR3ODlfdmlmX2xpbmsgKnJ0d3ZpZl9saW5rLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYzo5Mjc6XHRcdFx0XHQgICAgICBzdHJ1Y3QgcnR3ODlfd293X2NhbV9pbmZvICpydHdfcGF0dGVybixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtOTI4LVx0XHRcdFx0ICAgICAgY29uc3QgdTggKnBhdHRlcm4sIHU4IGRhX21hc2spXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy05NTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jOjk1NzpzdGF0aWMgaW50IHJ0dzg5X3dvd19wYXR0ZXJuX2dlbmVyYXRlKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtOTU4LVx0XHRcdFx0ICAgICAgc3RydWN0IHJ0dzg5X3ZpZl9saW5rICpydHd2aWZfbGluayxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtOTU5LVx0XHRcdFx0ICAgICAgY29uc3Qgc3RydWN0IGNmZzgwMjExX3BrdF9wYXR0ZXJuICpwa3RfcGF0dGVybixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmM6OTYwOlx0XHRcdFx0ICAgICAgc3RydWN0IHJ0dzg5X3dvd19jYW1faW5mbyAqcnR3X3BhdHRlcm4pXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTk2MS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy05NzYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jOjk3NzpcdHJldCA9IHJ0dzg5X3dvd19wYXR0ZXJuX2dldF90eXBlKHJ0d3ZpZl9saW5rLCBydHdfcGF0dGVybiwgcGF0dGVybixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtOTc4LVx0XHRcdFx0XHQgbWFza1swXSBcdTAwMjYgR0VOTUFTSyg1LCAwKSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy0xMDI5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYzoxMDMwOnN0YXRpYyBpbnQgcnR3ODlfd293X3BhcnNlX3BhdHRlcm5zKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtMTAzMS1cdFx0XHRcdCAgICBzdHJ1Y3QgcnR3ODlfdmlmX2xpbmsgKnJ0d3ZpZl9saW5rLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtMTAzMy17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jOjEwMzQ6XHRzdHJ1Y3QgcnR3ODlfd293X3BhcmFtICpydHdfd293ID0gXHUwMDI2cnR3ZGV2LVx1MDAzZXdvdztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmM6MTAzNTpcdHN0cnVjdCBydHc4OV93b3dfY2FtX2luZm8gKnJ0d19wYXR0ZXJuID0gcnR3X3dvdy1cdTAwM2VwYXR0ZXJucztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtMTAzNi1cdGludCBpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtMTA0My1cdFx0cnR3X3BhdHRlcm4gPSBcdTAwMjZydHdfd293LVx1MDAzZXBhdHRlcm5zW2ldO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYzoxMDQ0Olx0XHRyZXQgPSBydHc4OV93b3dfcGF0dGVybl9nZW5lcmF0ZShydHdkZXYsIHJ0d3ZpZl9saW5rLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy0xMDQ1LVx0XHRcdFx0XHRcdCBcdTAwMjZ3b3dsYW4tXHUwMDNlcGF0dGVybnNbaV0sXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy0xMDYzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYzoxMDY0OnN0YXRpYyB2b2lkIHJ0dzg5X3dvd19wYXR0ZXJuX2NsZWFyX2NhbShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTEwNjUte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYzoxMDY2Olx0c3RydWN0IHJ0dzg5X3dvd19wYXJhbSAqcnR3X3dvdyA9IFx1MDAyNnJ0d2Rldi1cdTAwM2V3b3c7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jOjEwNjc6XHRzdHJ1Y3QgcnR3ODlfd293X2NhbV9pbmZvICpydHdfcGF0dGVybiA9IHJ0d193b3ctXHUwMDNlcGF0dGVybnM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTEwNjgtXHRpbnQgaSA9IDA7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy0xMDc2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYzoxMDc3OnN0YXRpYyB2b2lkIHJ0dzg5X3dvd19wYXR0ZXJuX3dyaXRlKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtMTA3OC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jOjEwNzk6XHRzdHJ1Y3QgcnR3ODlfd293X3BhcmFtICpydHdfd293ID0gXHUwMDI2cnR3ZGV2LVx1MDAzZXdvdztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmM6MTA4MDpcdHN0cnVjdCBydHc4OV93b3dfY2FtX2luZm8gKnJ0d19wYXR0ZXJuID0gcnR3X3dvdy1cdTAwM2VwYXR0ZXJucztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtMTA4MS1cdGludCBpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtMTA4Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmM6MTA4NzpzdGF0aWMgdm9pZCBydHc4OV93b3dfcGF0dGVybl9jbGVhcihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTEwODgte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYzoxMDg5Olx0c3RydWN0IHJ0dzg5X3dvd19wYXJhbSAqcnR3X3dvdyA9IFx1MDAyNnJ0d2Rldi1cdTAwM2V3b3c7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTEwOTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jOjEwOTE6XHRydHc4OV93b3dfcGF0dGVybl9jbGVhcl9jYW0ocnR3ZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtMTA5Mi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTEwOTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jOjEwOTc6c3RhdGljIHZvaWQgcnR3ODlfd293X2NsZWFyX3dha2V1cHMoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy0xMDk4LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmM6MTA5OTpcdHN0cnVjdCBydHc4OV93b3dfcGFyYW0gKnJ0d193b3cgPSBcdTAwMjZydHdkZXYtXHUwMDNld293O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy0xMTAwLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtMTEwNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmM6MTEwNzpzdGF0aWMgdm9pZCBydHc4OV93b3dfaW5pdF9wbm8oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy0xMTA4LVx0XHRcdCAgICAgICBzdHJ1Y3QgY2ZnODAyMTFfc2NoZWRfc2Nhbl9yZXF1ZXN0ICpuZF9jb25maWcpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTExMDkte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYzoxMTEwOlx0c3RydWN0IHJ0dzg5X3dvd19wYXJhbSAqcnR3X3dvdyA9IFx1MDAyNnJ0d2Rldi1cdTAwM2V3b3c7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTExMTEtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy0xMTIyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYzoxMTIzOnN0YXRpYyBpbnQgcnR3ODlfd293X3NldF93YWtldXBzKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtMTEyNC1cdFx0XHRcdCBzdHJ1Y3QgY2ZnODAyMTFfd293bGFuICp3b3dsYW4pXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTExMjUte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYzoxMTI2Olx0c3RydWN0IHJ0dzg5X3dvd19wYXJhbSAqcnR3X3dvdyA9IFx1MDAyNnJ0d2Rldi1cdTAwM2V3b3c7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTExMjctXHRzdHJ1Y3QgcnR3ODlfdmlmX2xpbmsgKnJ0d3ZpZl9saW5rO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtMTEzNy1cdGlmICh3b3dsYW4tXHUwMDNlbmRfY29uZmlnKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYzoxMTM4Olx0XHRydHc4OV93b3dfaW5pdF9wbm8ocnR3ZGV2LCB3b3dsYW4tXHUwMDNlbmRfY29uZmlnKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtMTEzOS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTExNDQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jOjExNDU6XHRcdHJ0dzg5X3dvd192aWZfaXRlcihydHdkZXYsIHJ0d3ZpZl9saW5rKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtMTE0Ni1cdH1cblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAyMTo0MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0ODQ2NQoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDY4MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgS2V5IEhhbmRsaW5nIGluIHJ0dzg5IGFuZCBtYWM4MDIxMSoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBJJiMzOTttIHNlZWluZyB0aGF0IGBydHc4OV93b3dfc3VzcGVuZGAgYW5kIGBydHc4OV93b3dfcmVzdW1lYCBhcmUgY2FsbGVkIHdpdGhpbiB0aGUgYHJ0dzg5X29wc19zdXNwZW5kYCBhbmQgYHJ0dzg5X29wc19yZXN1bWVgIGZ1bmN0aW9ucywgd2hpY2ggYXJlIHBhcnQgb2YgbWFjODAyMTEmIzM5O3Mgb3BlcmF0aW9uYWwgZnVuY3Rpb25zLiBNeSBpbW1lZGlhdGUgY29uY2VybiBpcyB0aGUgY29udGV4dCBpbiB3aGljaCB0aGVzZSBzdXNwZW5kL3Jlc3VtZSBvcGVyYXRpb25zIGFyZSB0cmlnZ2VyZWQgd2l0aGluIHRoZSBtYWM4MDIxMSBmcmFtZXdvcmsuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjYWxsaW5nIGNoYWluIGJldHRlciwgc28gSSYjMzk7bSB0aGlua2luZyBhYm91dCBob3cgc3VzcGVuZC9yZXN1bWUgaXMgaW5pdGlhdGVkIHdpdGhpbiBtYWM4MDIxMSBhbmQgY2ZnODAyMTEuIEl0IGNvdWxkIGJlIGZyb20gcG93ZXIgbWFuYWdlbWVudCBldmVudHMsIGxpa2UgUE0gb3IgV29MIGNvbW1hbmRzIHRocm91Z2ggbmw4MDIxMS4gSSBzaG91bGQgYWxzbyBjb25zaWRlciB0aGUgc3lzdGVtLWxldmVsIHN1c3BlbmQvcmVzdW1lIHRyaWdnZXJlZCBieSBgL3N5cy9wb3dlci9zdGF0ZWAsIHBtIGlvY3Rscywgb3Igc3lzdGVtIGNhbGxzLCBlc3BlY2lhbGx5IHdpdGggc3l6a2FsbGVyIHRlc3RzLgoKTm93LCB3aGF0IGFib3V0IGBzZXJfcmVzZXRfbWFjX2JpbmRpbmdgPyBTRVIgKFN5c3RlbSBFcnJvciBSZWNvdmVyeSkgaW4gdGhlIHJ0dzg5IGRyaXZlciBpcyB0cmlnZ2VyZWQgYnkgY2hpcCBlcnJvcnMgb3IgdGltZW91dHMsIHNvIHRoaXMgaXMgaW1wb3J0YW50IGZyb20gYSByZWxpYWJpbGl0eSBzdGFuZHBvaW50LiBBbmQgaXQgbG9va3MgbGlrZSBgcnR3ODlfY2FtX3Jlc2V0X2tleXNgIGlzIGNhbGxlZCBpbiBgc2VyX3Jlc2V0X21hY19iaW5kaW5nYCBhbmQgYWxzbyBgcnR3ODlfd293X3N3YXBfZndgLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IGBydHc4OV9jYW1fcmVzZXRfa2V5c2AgYWN0dWFsbHkgKmRvZXMqLgoKT2theSwgaXQgY2FsbHMgYGllZWU4MDIxMV9pdGVyX2tleXNgIChvciB1c2VkIHRvIGNhbGwgYGllZWU4MDIxMV9pdGVyX2tleXNfcmN1YCBwcmV2aW91c2x5KSB3aXRoIGEgY3VzdG9tIGl0ZXJhdG9yLCBgcnR3ODlfY2FtX3Jlc2V0X2tleV9pdGVyYC4gVGhpcyBzdWdnZXN0cyBzb21lIGtpbmQgb2Yga2V5IG1hbmFnZW1lbnQgb3IgY2xlYXJpbmcgb3BlcmF0aW9uLCBwcm9iYWJseSBmb3Igc2VjdXJpdHkgcmVhc29ucy4gQW5kIEkgc2hvdWxkIG5vdGUgdGhhdCBgd293LmNgIGlzIGFsc28gdXNpbmcgYGllZWU4MDIxMV9pdGVyX2tleXNgIGluIGBydHc4OV93b3dfY29uc3RydWN0X2tleV9pbmZvYCBhbmQgYHJ0dzg5X3dvd191cGRhdGVfa2V5X2luZm9gLgoKV2FpdCBhIG1pbnV0ZSwgYGllZWU4MDIxMV9pdGVyX2tleXNgIGhhcyBhIGBsb2NrZGVwX2Fzc2VydF93aXBoeShody0mZ3Q7d2lwaHkpO2AgY2FsbC4gVGhpcyBpcyBrZXkhIEkgbmVlZCB0byBpbnZlc3RpZ2F0ZSB0aGUgaW1wbGljYXRpb25zIGhlcmUuIEl0JiMzOTtzIGF0IGxpbmUgMTAzMyBvZiBgbmV0L21hYzgwMjExL2tleS5jYC4gU28gSSBzaG91bGQgY2hlY2sgdGhlIGRlZmluaXRpb24gb2YgYGxvY2tkZXBfYXNzZXJ0X3dpcGh5YCBpbiBgaW5jbHVkZS9uZXQvY2ZnODAyMTEuaGAgb3IgYGluY2x1ZGUvbmV0L21hYzgwMjExLmhgIHRvIHVuZGVyc3RhbmQgaXRzIHB1cnBvc2UgYW5kIGhvdyBpdCByZWxhdGVzIHRvIGxvY2tpbmcgYW5kIGNvbmN1cnJlbmN5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAyMTo0MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtsb2NrZGVwX2Fzc2VydF93aXBoeSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2luY2x1ZGUvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbmV0L2NmZzgwMjExLmg9NjgxMD1pbnQgd2lwaHlfcmVnaXN0ZXIoc3RydWN0IHdpcGh5ICp3aXBoeSk7XG4tLVxuaW5jbHVkZS9uZXQvY2ZnODAyMTEuaC02ODEyLS8qIHRoaXMgaXMgYSBkZWZpbmUgZm9yIGJldHRlciBlcnJvciByZXBvcnRpbmcgKGZpbGUvbGluZSkgKi9cbmluY2x1ZGUvbmV0L2NmZzgwMjExLmg6NjgxMzojZGVmaW5lIGxvY2tkZXBfYXNzZXJ0X3dpcGh5KHdpcGh5KSBsb2NrZGVwX2Fzc2VydF9oZWxkKFx1MDAyNih3aXBoeSktXHUwMDNlbXR4KVxuaW5jbHVkZS9uZXQvY2ZnODAyMTEuaC02ODE0LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAyMTo0MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0OTkxMAoJCQkJCQkJb3V0cHV0OiA0NgoJCQkJCQkJdGhvdWdodHM6IDExMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgUmVhbHRlayBXaUZpIERyaXZlciYjMzk7cyBMb2NraW5nIFN0cmF0ZWd5KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIFJlYWx0ZWsgZHJpdmVyIGNvZGUgYW5kIGltbWVkaWF0ZWx5IEkgc2VlIGBsb2NrZGVwX2Fzc2VydF93aXBoeWAuIFRoYXQmIzM5O3MgdGVsbGluZyBtZSwgcmlnaHQgb2ZmIHRoZSBiYXQsIHRoYXQgc29tZXdoZXJlIGluIHRoaXMgbG9naWMsIHRoZXkmIzM5O3JlIGV4cGVjdGluZyB0aGUgYHdpcGh5LSZndDttdHhgIG11dGV4IHRvIGJlIGhlbGQuIFRoZSBxdWVzdGlvbiB0aGF0IGltbWVkaWF0ZWx5IHNwcmluZ3MgdG8gbXkgbWluZCBpczogd2hlcmU/IFNwZWNpZmljYWxseSwgSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aG9zZSBjcml0aWNhbCBsaWZlY3ljbGUgZnVuY3Rpb25zOiBgcnR3ODlfb3BzX3N1c3BlbmRgIGFuZCBgcnR3ODlfb3BzX3Jlc3VtZWAuIEFyZSB0aGV5IHByb3Blcmx5IGFjcXVpcmluZyBhbmQgcmVsZWFzaW5nIHRoYXQgbXV0ZXg/IEFuZCB3aGF0IGFib3V0IHRoZSBTeXN0ZW0gRXJyb3IgUmVzZXQgKFNFUikgc2NlbmFyaW8sIHRyaWdnZXJlZCBieSBgc2VyX3Jlc2V0X21hY19iaW5kaW5nYCDigJMgZG9lcyB0aGF0IGFkaGVyZSB0byB0aGUgbG9jayYjMzk7cyBjb25zdHJhaW50cz8KClRvIGdldCBhIGJldHRlciBncmlwIG9uIGl0IEkgd2FudCB0byB0cmFjZSB0aGUgY29kZS4gTXkgYmVzdCBiZXQgaXMgdG8gY2hlY2sgYHNlcl9sMl9yZXNldF9zdF9wcmVfaGRsYCBpbiB0aGUgYHNlci5jYCBmaWxlIG9mIHRoZSBkcml2ZXIuIFRoYXQgc2hvdWxkIGdpdmUgbWUgdGhlIHByZWNpc2UgY29udGV4dCBuZWVkZWQgdG8gZXZhbHVhdGUgd2hldGhlciB0aGUgbXV0ZXggaXMgY29ycmVjdGx5IGhlbGQgb3Igbm90LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAyMTo0MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzZXJfbDJfcmVzZXRfc3RfcHJlX2hkbCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9zZXIuYz02NDU9c3RhdGljIGludCBydHc4OV9zZXJfZndfYmFja3RyYWNlX2R1bXAoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCAqYnVmLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvc2VyLmMtNjk0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9zZXIuYzo2OTU6c3RhdGljIHZvaWQgc2VyX2wyX3Jlc2V0X3N0X3ByZV9oZGwoc3RydWN0IHJ0dzg5X3NlciAqc2VyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9zZXIuYy02OTYte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvc2VyLmM9NzI3PXN0YXRpYyB2b2lkIHNlcl9sMl9yZXNldF9zdF9oZGwoc3RydWN0IHJ0dzg5X3NlciAqc2VyLCB1OCBldnQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9zZXIuYy03MzQtXHRcdHNlci1cdTAwM2Vzd19jbnQubDImIzQzOyYjNDM7O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9zZXIuYzo3MzU6XHRcdHNlcl9sMl9yZXNldF9zdF9wcmVfaGRsKHNlcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3Nlci5jLTczNi1cdFx0d2lwaHlfdW5sb2NrKHJ0d2Rldi1cdTAwM2Vody1cdTAwM2V3aXBoeSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDIxOjQxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUwNjMwCgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogOTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYW5hbHlzaXMgb2YgdGhhdCBjb2RlIHNuaXBwZXQ6CgoqKkRlYnVnZ2luZyBhIE5ldHdvcmsgRHJpdmVyIFJlc2V0KioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIGBzZXJfbDJfcmVzZXRfc3RfaGRsYCwgbGlrZWx5IHRyeWluZyB0byB1bmRlcnN0YW5kIGEgbmV0d29yayByZXNldCBzZXF1ZW5jZS4gVGhlIGNvcmUgb2YgdGhpcyBzZWVtcyB0byBiZTogd2UmIzM5O3JlIGdyYWJiaW5nIHRoZSB3aXBoeSBsb2NrIHdpdGggYHdpcGh5X2xvY2socnR3ZGV2LSZndDtody0mZ3Q7d2lwaHkpO2AgKGxvb2tzIGxpa2UgaXQmIzM5O3MgaGFwcGVuaW5nIHJpZ2h0IGJlZm9yZSBsaW5lIDczNSwgZ2l2ZSBvciB0YWtlIGEgZmV3IGxpbmVzKS4gQWZ0ZXIgdGhlIGxvY2sgaXMgYWNxdWlyZWQsIHRoZSBjYWxsIHByb2NlZWRzIHdpdGggYHNlcl9sMl9yZXNldF9zdF9wcmVfaGRsKHNlcik7YC4gU28sIHdoYXRldmVyIHByZS1oYW5kbGluZyBuZWVkcyB0byBoYXBwZW4gZm9yIHRoZSByZXNldCBpcyBlbmNhcHN1bGF0ZWQgdGhlcmUuIEZpbmFsbHksIHdlIG1ha2Ugc3VyZSB3ZSByZWxlYXNlIHRoZSBsb2NrIHdpdGggYHdpcGh5X3VubG9jayguLi4pYC4gVGhpcyBsb29rcyBsaWtlIHN0YW5kYXJkIGxvY2svdW5sb2NrIHByb2NlZHVyZSwgbGlrZWx5IHByb3RlY3Rpbmcgc2hhcmVkIGhhcmR3YXJlIG9yIGRhdGEgc3RydWN0dXJlcy4KClRvIGNvbmZpcm0gdGhlIGNvbnRleHQsIEkgc2hvdWxkIHF1aWNrbHkganVtcCBvdmVyIHRvIGBzZXIuY2AgYW5kIHRha2UgYSBsb29rIGFyb3VuZCBsaW5lIDczMC4gSSYjMzk7bSBhZnRlciB0aGUgZnVsbCBwaWN0dXJlIGhlcmUsIG5vdCBqdXN0IG9uZSBzbWFsbCBwaWVjZS4gVGhlIHN1cnJvdW5kaW5nIGNvZGUgd2lsbCBwcm92aWRlIHRoZSBjb250ZXh0IEkgbmVlZCB0byByZWFsbHkgdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMgbG9ja2luZyBzZXF1ZW5jZSBhbmQgaG93IGl0IGZpdHMgaW50byB0aGUgb3ZlcmFsbCByZXNldCBwcm9jZXNzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAyMTo0MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvc2VyLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA3MjUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMzAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDcyNTpcdH1cbiA3MjY6XHRcbiA3Mjc6XHRzdGF0aWMgdm9pZCBzZXJfbDJfcmVzZXRfc3RfaGRsKHN0cnVjdCBydHc4OV9zZXIgKnNlciwgdTggZXZ0KVxuIDcyODpcdHtcbiA3Mjk6XHRcdHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiA9IGNvbnRhaW5lcl9vZihzZXIsIHN0cnVjdCBydHc4OV9kZXYsIHNlcik7XG4gNzMwOlx0XG4gNzMxOlx0XHRzd2l0Y2ggKGV2dCkge1xuIDczMjpcdFx0Y2FzZSBTRVJfRVZfU1RBVEVfSU46XG4gNzMzOlx0XHRcdHdpcGh5X2xvY2socnR3ZGV2LVx1MDAzZWh3LVx1MDAzZXdpcGh5KTtcbiA3MzQ6XHRcdFx0c2VyLVx1MDAzZXN3X2NudC5sMiYjNDM7JiM0Mzs7XG4gNzM1Olx0XHRcdHNlcl9sMl9yZXNldF9zdF9wcmVfaGRsKHNlcik7XG4gNzM2Olx0XHRcdHdpcGh5X3VubG9jayhydHdkZXYtXHUwMDNlaHctXHUwMDNld2lwaHkpO1xuIDczNzpcdFxuIDczODpcdFx0XHRpZWVlODAyMTFfcmVzdGFydF9odyhydHdkZXYtXHUwMDNlaHcpO1xuIDczOTpcdFx0XHRzZXJfc2V0X2FsYXJtKHNlciwgU0VSX1JFQ0ZHX1RJTUVPVVQsIFNFUl9FVl9MMl9SRUNGR19USU1FT1VUKTtcbiA3NDA6XHRcdFx0YnJlYWs7XG4gNzQxOlx0XG4gNzQyOlx0XHRjYXNlIFNFUl9FVl9MMl9SRUNGR19USU1FT1VUOlxuIDc0MzpcdFx0XHRydHc4OV9pbmZvKHJ0d2RldiwgXCYjMzQ7RXJyOiBzZXIgTDIgcmUtY29uZmlnIHRpbWVvdXRcXG5cJiMzNDspO1xuIDc0NDpcdFx0XHRmYWxsdGhyb3VnaDtcbiA3NDU6XHRcdGNhc2UgU0VSX0VWX0wyX1JFQ0ZHX0RPTkU6XG4gNzQ2Olx0XHRcdHNlcl9zdGF0ZV9nb3RvKHNlciwgU0VSX0lETEVfU1QpO1xuIDc0NzpcdFx0XHRicmVhaztcbiA3NDg6XHRcbiA3NDk6XHRcdGNhc2UgU0VSX0VWX1NUQVRFX09VVDpcbiA3NTA6XHRcdFx0c2VyX2RlbF9hbGFybShzZXIpO1xuIDc1MTpcdFx0XHRicmVhaztcbiA3NTI6XHRcbiA3NTM6XHRcdGRlZmF1bHQ6XG4gNzU0Olx0XHRcdGJyZWFrO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAyMTo0MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MTUxNAoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDQ1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuCgoqKkludmVzdGlnYXRpbmcgdGhlIGBydHc4OV93b3dfc3dhcF9md2AgRnVuY3Rpb24qKgoKUmlnaHQsIG15IGZvY3VzIGlzIG5vdyBvbiBgcnR3ODlfd293X3N3YXBfZndgLiBUaGUgaW1tZWRpYXRlIHF1ZXN0aW9uIHRoYXQgc3ByaW5ncyB0byBtaW5kLCBhcyBhbHdheXMsIGlzIGFib3V0IHBvdGVudGlhbCBjb25jdXJyZW5jeSBpc3N1ZXMuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIHZlcmlmeSB3aGV0aGVyIHRoZSBgd2lwaHlgIGxvY2sgaXMgYXBwcm9wcmlhdGVseSBoZWxkIHdpdGhpbiB0aGF0IGZ1bmN0aW9uLiBFbnN1cmluZyB0aGF0IGxldmVsIG9mIHByb3RlY3Rpb24gaXMgcGFyYW1vdW50IHRvIGF2b2lkaW5nIHN1YnRsZSByYWNlIGNvbmRpdGlvbnMgdGhhdCBjb3VsZCBsZWFkIHRvIGludGVybWl0dGVudCBmYWlsdXJlcywgZXNwZWNpYWxseSBpbiBhIGRyaXZlciBkZWFsaW5nIHdpdGggZmlybXdhcmUgc3dhcHBpbmcsIHdoZXJlIHRpbWluZyBpcyBjcml0aWNhbC4KClNvLCB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gdHJhY2sgZG93biBhbGwgdGhlIGNhbGwgc2l0ZXMgb2YgYHJ0dzg5X3dvd19zd2FwX2Z3YC4gVW5kZXJzdGFuZGluZyAqd2hlcmUqIHRoaXMgZnVuY3Rpb24gaXMgaW52b2tlZCB3aWxsIGdpdmUgbWUgdGhlIGNydWNpYWwgY29udGV4dCBJIG5lZWQgdG8gYXNzZXNzIGl0cyB0aHJlYWQgc2FmZXR5IGFuZCBkZXRlcm1pbmUgaWYgdGhlIGxvY2tpbmcgc3RyYXRlZ3kgaXMgYWRlcXVhdGUgaW4gZWFjaCBzY2VuYXJpby4gS25vd2luZyB0aGUgY2FsbCBncmFwaCB3aWxsIHJlYWxseSBoZWxwIHRvIGRldGVybWluZSBpZiB3ZSBhcmUgc2VlaW5nIHRoZSBleHBlY3RlZCBiZWhhdmlvdXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDIxOjQxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3J0dzg5X3dvd19zd2FwX2Z3JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jPTEyNDA9c3RhdGljIGludCBydHc4OV93b3dfY2hlY2tfZndfc3RhdHVzKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgYm9vbCB3b3dfZW5hYmxlKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtMTI1NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmM6MTI1NjpzdGF0aWMgaW50IHJ0dzg5X3dvd19zd2FwX2Z3KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgYm9vbCB3b3cpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTEyNTcte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmM9MTcwOD1zdGF0aWMgaW50IHJ0dzg5X3dvd19lbmFibGUoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtMTcyMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmM6MTcyMjpcdHJldCA9IHJ0dzg5X3dvd19zd2FwX2Z3KHJ0d2RldiwgdHJ1ZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTE3MjMtXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYz0xNzQ5PXN0YXRpYyBpbnQgcnR3ODlfd293X2Rpc2FibGUoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtMTc2OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmM6MTc2OTpcdHJldCA9IHJ0dzg5X3dvd19zd2FwX2Z3KHJ0d2RldiwgZmFsc2UpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy0xNzcwLVx0aWYgKHJldCkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAyMTo0MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MjI2NwoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDY0OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBSZWFsdGVrIHJ0dzg5IERyaXZlciYjMzk7cyBGdXp6aW5nIFBvdGVudGlhbCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIHRob3VnaHQgd2FzIHRvIHF1aWNrbHkgYXNzZXNzIGBydHc4OV93b3dfZW5hYmxlYCBhbmQgYHJ0dzg5X3dvd19kaXNhYmxlYCBhbmQgaG93IHRoZXkgaW50ZXJhY3Qgd2l0aCBzdXNwZW5kL3Jlc3VtZSwgbm90aW5nIHRoYXQgYHdpcGh5LSZndDttdHhgIGlzIGhlbGQgZHVyaW5nIHRoZXNlIG9wZXJhdGlvbnMgaW4gdGhlIG1hYzgwMjExIGZyYW1ld29yay4gQnV0LCB0aGF0JiMzOTtzIG5vdCB0aGUgY3J1Y2lhbCBxdWVzdGlvbiBoZXJlLiBUaGUgcmVhbCBxdWVzdGlvbiBpcyB3aGV0aGVyIHN5emthbGxlciAqY2FuKiBnZXQgYXQgaXQuCgpGaXJzdCwgbGV0JiMzOTtzIGJlIG1ldGhvZGljYWwuIFdlIG5lZWQgdG8gZXZhbHVhdGUgaWYgcnR3ODkgaXMgKnJlYWNoYWJsZSogdmlhIHN5emthbGxlci4gVGhlIGRvY3VtZW50YXRpb24gcHJvdmlkZXMgY2xlYXIgbmVnYXRpdmUgYW5kIHBvc2l0aXZlIGNyaXRlcmlhLiBXZSBuZWVkIHRvIGF2b2lkIHRob3NlICYjMzQ7c3RydWN0dXJhbGx5IHVucmVhY2hhYmxlJiMzNDsgaGFyZHdhcmUgZHJpdmVycyBzdWNoIGFzIHRob3NlIHRoYXQgcmVxdWlyZSBzcGVjaWZpYyBBU0lDcyBvciBQQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBhIHN0YW5kYXJkIFFFTVUgZW52aXJvbm1lbnQuIEFsc28sIHdlIG5lZWQgdG8gc3RheSBhd2F5IGZyb20gdGhlIGRyaXZlcnMgdGhhdCBhcmUgdHJpZ2dlcmVkIG9ubHkgZHVyaW5nIHVucGx1ZyBldmVudHMuIE9uIHRoZSBmbGlwIHNpZGUsIHdlIHdhbnQgdGhpbmdzIHRoYXQgYXJlIGVhc2lseSBhY2Nlc3NpYmxlLCBzdWNoIGFzIHRocm91Z2ggdmlydHVhbCBidXNlcyBsaWtlIHZpcnRpbywgVVNCIGdhZGdldCwgbmV0bGluaywgb3Igc29ja2V0cy4KCkFoLCB3YWl0LiAqVGhhdCYjMzk7cyogdGhlIGtleS4gSXMgcnR3ODkgYSBVU0IgZHJpdmVyPyBMZXQmIzM5O3MgY2hlY2suIFllcyEgTG9va2luZyB3aXRoaW4gdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2AgZGlyZWN0b3J5LCB0aGVyZSBhcmUgaW5kZWVkIFVTQiBkcml2ZXIgbW9kdWxlczogUlRXODlfODg1MUJVLCBSVFc4OV84ODUyQVUsIFJUVzg5Xzg4NTJCVSwgUlRXODlfODg1MkNVLCBhbmQgUlRXODlfODkyMkFVLiBUaGVzZSBtb2R1bGVzIHJlZ2lzdGVyIGEgYHVzYl9kcml2ZXJgIHdpdGggVVNCIElEcy4gVGhpcyBpcyBwcm9taXNpbmcuCgpOb3csIGRvZXMgc3l6a2FsbGVyICpzdXBwb3J0KiBmdXp6aW5nIFVTQiBkcml2ZXJzPyBJdCBkb2VzISBSZW1lbWJlciBgc3l6X3VzYl9jb25uZWN0YCwgYHN5el91c2JfY29udHJvbF9pb2AsIGFuZCBgc3l6X3VzYl9lcF93cml0ZWA/IFN5emthbGxlciB1c2VzIHRoZSBVU0IgUkFXIGdhZGdldCwgYSBkdW1teSBIQ0QsIGFuZCBVU0IgZW11bGF0aW9uIHRvIGludGVyYWN0IHdpdGggVVNCIGRldmljZXMuCgpTbywgd2hlbiBzeXprYWxsZXIgZW11bGF0ZXMgYSBVU0IgZGV2aWNlIHRoYXQgbWF0Y2hlcyBSZWFsdGVrJiMzOTtzIHZlbmRvci9kZXZpY2UgSUQsIGBydHc4OV91c2JfcHJvYmVgIHdpbGwgYmUgY2FsbGVkLiBOb3cgd2UgbmVlZCB0byBkZXRlcm1pbmUgaWYgdGhpcyBvcGVucyB0aGUgZG9vciB0byBmdXp6aW5nIHRoZSBSZWFsdGVrIGRyaXZlci4gVGhpcyBpcyB0aGUgY3J1Y2lhbCBwb2ludCEgRG9lcyBgcnR3ODlfdXNiX3Byb2JlYCBsb2FkIGZpcm13YXJlPyBEb2VzIGl0IHRhbGsgdG8gaGFyZHdhcmUgZGlyZWN0bHk/IExldCYjMzk7cyBsb29rIGF0IGBydHc4OV9jb3JlX2luaXRgLCBgcnR3ODlfY29yZV9yZWdpc3RlcmAsIGFuZCB0aGUgZmlybXdhcmUgbG9hZGluZyBwcm9jZXNzIHdpdGhpbiBgcnR3ODlgLiBJZiB0aGVyZSYjMzk7cyBmaXJtd2FyZSBpbnZvbHZlZCwgdGhhdCYjMzk7cyBhIHZlY3Rvci4gSWYgd2UgY2FuIHJlYWNoIHRoZSBoYXJkd2FyZSB0aHJvdWdoIGEgJiMzNDtmdXp6YWJsZSYjMzQ7IHBhdGh3YXkgdmlhIHRoZSBVU0IgaW50ZXJmYWNlLCB0aGVuIHdlIGhhdmUgYSBwb3NpdGl2ZSBjYW5kaWRhdGUuIFdlIG5lZWQgdG8gYW5hbHl6ZSB0aGlzIG1vcmUgY2xvc2VseSwgYnV0IHRoZSBpbml0aWFsIHNpZ25zIGxvb2sgdmVyeSBnb29kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAyMTo0MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtyZXF1ZXN0X2Zpcm13YXJlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM9OTk0PXJ0dzg5X2Vhcmx5X2Z3X2ZlYXR1cmVfcmVjb2duaXplKHN0cnVjdCBkZXZpY2UgKmRldmljZSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTAxMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYzoxMDExOlx0XHRyZXQgPSByZXF1ZXN0X2Zpcm13YXJlKFx1MDAyNmZpcm13YXJlLCBmd19uYW1lLCBkZXZpY2UpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTEwMTItXHRcdGlmICghcmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jPTIwNjk9c3RhdGljIGludCBydHc4OV9sb2FkX2Zpcm13YXJlX3JlcShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTIwODQtXHRlbHNlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM6MjA4NTpcdFx0cmV0ID0gcmVxdWVzdF9maXJtd2FyZShcdTAwMjZyZXEtXHUwMDNlZmlybXdhcmUsIGZ3X25hbWUsIHJ0d2Rldi1cdTAwM2VkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTIwODYtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDIxOjQxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUzODY2CgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMTAxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludmVzdGlnYXRpbmcgdGhlIHJ0dzg5IFdpLUZpIERyaXZlcioqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgYHJ0dzg5YCBkcml2ZXIuIFNpbmNlIEkgc2VlIGBydHc4OWAsIG15IGZpcnN0IHRob3VnaHQgaXMgV2ktRmksIGFuZCB0aGUgbWVudGlvbiBvZiBVU0IgaW50ZXJmYWNlcyBjb25maXJtcyB0aGlzLiBUaGUgaW1tZWRpYXRlIGdvYWwgaXMgdG8gdW5kZXJzdGFuZCBpdHMgYnVpbGQgc3RhdHVzIGFuZCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIE15IHByb2Nlc3Mgd2lsbCBiZSB0byBzdGFydCBieSBleGFtaW5pbmcgdGhlIEtjb25maWcgZmlsZXMsIHNwZWNpZmljYWxseSBsb29raW5nIGZvciB0aG9zZSBuYW1lZCBhZnRlciB0aGUgZHJpdmVyIGZhbWlseTogYFJUVzg5YCwgYFJUVzg5X0NPUkVgLCBgUlRXODlfUENJYCwgYFJUVzg5X1VTQmAsIGFuZCBzbyBvbi4gVW5kZXJzdGFuZGluZyB0aGVzZSB3aWxsIGxheSB0aGUgZ3JvdW5kd29yayBmb3IgdW5kZXJzdGFuZGluZyB0aGUgc3RydWN0dXJlIG9mIHRoZSByZWxldmFudCBmZWF0dXJlcy4gVGhlIGxpa2VseSBsb2NhdGlvbiBmb3IgdGhlc2UgS2NvbmZpZyBlbnRyaWVzIGlzIHRoZSBkaXJlY3RvcnkgcmVsYXRlZCB0byB0aGUgZHJpdmVyLCBhbmQgdGh1cyB0aGUgcGF0aCBgZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnYCB3aWxsIHByb3ZpZGUgdGhlIGluaXRpYWwgYW5kIG1vc3QgY29tcHJlaGVuc2l2ZSBvdmVydmlldy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMjE6NDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDg1Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wIE9SIEJTRC0zLUNsYXVzZVxuICAgMjpcdG1lbnVjb25maWcgUlRXODlcbiAgIDM6XHRcdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODAyLjExYXggd2lyZWxlc3MgY2hpcHMgc3VwcG9ydFwmIzM0O1xuICAgNDpcdFx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxuICAgNTpcdFx0aGVscFxuICAgNjpcdFx0ICBUaGlzIG1vZHVsZSBhZGRzIHN1cHBvcnQgZm9yIG1hYzgwMjExLWJhc2VkIHdpcmVsZXNzIGRyaXZlcnMgdGhhdFxuICAgNzpcdFx0ICBlbmFibGVzIFJlYWx0ZWsgSUVFRSA4MDIuMTFheCB3aXJlbGVzcyBjaGlwc2V0cy5cbiAgIDg6XHRcbiAgIDk6XHRcdCAgSWYgeW91IGNob29zZSB0byBidWlsZCBhIG1vZHVsZSwgaXQmIzM5O2xsIGJlIGNhbGxlZCBydHc4OS5cbiAgMTA6XHRcbiAgMTE6XHRpZiBSVFc4OVxuICAxMjpcdFxuICAxMzpcdGNvbmZpZyBSVFc4OV9DT1JFXG4gIDE0Olx0XHR0cmlzdGF0ZVxuICAxNTpcdFx0c2VsZWN0IFdBTlRfREVWX0NPUkVEVU1QXG4gIDE2Olx0XG4gIDE3Olx0Y29uZmlnIFJUVzg5X1BDSVxuICAxODpcdFx0dHJpc3RhdGVcbiAgMTk6XHRcbiAgMjA6XHRjb25maWcgUlRXODlfVVNCXG4gIDIxOlx0XHR0cmlzdGF0ZVxuICAyMjpcdFxuICAyMzpcdGNvbmZpZyBSVFc4OV84ODUxQlxuICAyNDpcdFx0dHJpc3RhdGVcbiAgMjU6XHRcbiAgMjY6XHRjb25maWcgUlRXODlfODg1MkFcbiAgMjc6XHRcdHRyaXN0YXRlXG4gIDI4Olx0XG4gIDI5Olx0Y29uZmlnIFJUVzg5Xzg4NTJCX0NPTU1PTlxuICAzMDpcdFx0dHJpc3RhdGVcbiAgMzE6XHRcbiAgMzI6XHRjb25maWcgUlRXODlfODg1MkJcbiAgMzM6XHRcdHRyaXN0YXRlXG4gIDM0Olx0XG4gIDM1Olx0Y29uZmlnIFJUVzg5Xzg4NTJCVFxuICAzNjpcdFx0dHJpc3RhdGVcbiAgMzc6XHRcbiAgMzg6XHRjb25maWcgUlRXODlfODg1MkNcbiAgMzk6XHRcdHRyaXN0YXRlXG4gIDQwOlx0XG4gIDQxOlx0Y29uZmlnIFJUVzg5Xzg5MjJBXG4gIDQyOlx0XHR0cmlzdGF0ZVxuICA0MzpcdFxuICA0NDpcdGNvbmZpZyBSVFc4OV84OTIyRFxuICA0NTpcdFx0dHJpc3RhdGVcbiAgNDY6XHRcbiAgNDc6XHRjb25maWcgUlRXODlfODg1MUJFXG4gIDQ4Olx0XHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg4NTFCRSBQQ0kgd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNikgYWRhcHRlclwmIzM0O1xuICA0OTpcdFx0ZGVwZW5kcyBvbiBQQ0lcbiAgNTA6XHRcdHNlbGVjdCBSVFc4OV9DT1JFXG4gIDUxOlx0XHRzZWxlY3QgUlRXODlfUENJXG4gIDUyOlx0XHRzZWxlY3QgUlRXODlfODg1MUJcbiAgNTM6XHRcdGhlbHBcbiAgNTQ6XHRcdCAgU2VsZWN0IHRoaXMgb3B0aW9uIHdpbGwgZW5hYmxlIHN1cHBvcnQgZm9yIDg4NTFCRSBjaGlwc2V0XG4gIDU1Olx0XG4gIDU2Olx0XHQgIDgwMi4xMWF4IFBDSWUgd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNikgYWRhcHRlclxuICA1NzpcdFxuICA1ODpcdGNvbmZpZyBSVFc4OV84ODUxQlVcbiAgNTk6XHRcdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODg1MUJVIFVTQiB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2KSBhZGFwdGVyXCYjMzQ7XG4gIDYwOlx0XHRkZXBlbmRzIG9uIFVTQlxuICA2MTpcdFx0c2VsZWN0IFJUVzg5X0NPUkVcbiAgNjI6XHRcdHNlbGVjdCBSVFc4OV9VU0JcbiAgNjM6XHRcdHNlbGVjdCBSVFc4OV84ODUxQlxuICA2NDpcdFx0aGVscFxuICA2NTpcdFx0ICBTZWxlY3QgdGhpcyBvcHRpb24gd2lsbCBlbmFibGUgc3VwcG9ydCBmb3IgODg1MUJVIGNoaXBzZXRcbiAgNjY6XHRcbiAgNjc6XHRcdCAgODAyLjExYXggVVNCIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDYpIGFkYXB0ZXJcbiAgNjg6XHRcbiAgNjk6XHRjb25maWcgUlRXODlfODg1MkFFXG4gIDcwOlx0XHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg4NTJBRSBQQ0kgd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNikgYWRhcHRlclwmIzM0O1xuICA3MTpcdFx0ZGVwZW5kcyBvbiBQQ0lcbiAgNzI6XHRcdHNlbGVjdCBSVFc4OV9DT1JFXG4gIDczOlx0XHRzZWxlY3QgUlRXODlfUENJXG4gIDc0Olx0XHRzZWxlY3QgUlRXODlfODg1MkFcbiAgNzU6XHRcdGhlbHBcbiAgNzY6XHRcdCAgU2VsZWN0IHRoaXMgb3B0aW9uIHdpbGwgZW5hYmxlIHN1cHBvcnQgZm9yIDg4NTJBRSBjaGlwc2V0XG4gIDc3Olx0XG4gIDc4Olx0XHQgIDgwMi4xMWF4IFBDSWUgd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNikgYWRhcHRlclxuICA3OTpcdFxuICA4MDpcdGNvbmZpZyBSVFc4OV84ODUyQVVcbiAgODE6XHRcdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODg1MkFVIFVTQiB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2KSBhZGFwdGVyXCYjMzQ7XG4gIDgyOlx0XHRkZXBlbmRzIG9uIFVTQlxuICA4MzpcdFx0c2VsZWN0IFJUVzg5X0NPUkVcbiAgODQ6XHRcdHNlbGVjdCBSVFc4OV9VU0JcbiAgODU6XHRcdHNlbGVjdCBSVFc4OV84ODUyQVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAyMTo0MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NTMzMQoJCQkJCQkJb3V0cHV0OiAyMjIKCQkJCQkJCXRob3VnaHRzOiAxNjIxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgQW5hbHlzaXMgZm9yIFJlYWx0ZWsgUlRXODkgRHJpdmVyIEtleSBJdGVyYXRpb24gQ2hhbmdlcyoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgSSBzZWUgYSBkZXBlbmRlbmN5IHN0cnVjdHVyZTogYFJUVzg5YCByZWxpZXMgb24gYE1BQzgwMjExYC4gU3BlY2lmaWMgUlRXODkgVVNCIGRyaXZlcnMsIHN1Y2ggYXMgYFJUVzg5Xzg4NTFCVWAsIGRlcGVuZCBvbiBgVVNCYCBhbmQgc2VsZWN0IGBSVFc4OV9DT1JFYCBhbmQgYFJUVzg5X1VTQmAuICBUaGVyZSYjMzk7cyBhbHNvIGEgUENJIHZhcmlhbnQsIGBSVFc4OV84ODUxQkVgLCB0aGF0IGRlcGVuZHMgb24gYFBDSWAgYW5kIGFsc28gc2VsZWN0cyBgUlRXODlfQ09SRWAuCgpOb3csIHRoZSBjb3JlIG9mIHRoZSBtYXR0ZXI6IEkmIzM5O20gbG9va2luZyBhdCBjaGFuZ2VzIGluIGBjYW0uY2AgYW5kIGB3b3cuY2AuICBTcGVjaWZpY2FsbHksIHRoZSBjb2RlIGlzIHRyYW5zaXRpb25pbmcgZnJvbSBgaWVlZTgwMjExX2l0ZXJfa2V5c19yY3VgIHRvIGBpZWVlODAyMTFfaXRlcl9rZXlzYCB3aXRoaW4gdGhlIGBydHc4OV9jYW1fcmVzZXRfa2V5c2AsIGBydHc4OV93b3dfY29uc3RydWN0X2tleV9pbmZvYCwgYW5kIGBydHc4OV93b3dfdXBkYXRlX2tleV9pbmZvYCBmdW5jdGlvbnMuICBUaGlzIGNoYW5nZSBzZWVtcyB0byBpbmRpY2F0ZSBhIHNoaWZ0IGluIGhvdyBrZXkgaXRlcmF0aW9uIGlzIGhhbmRsZWQuIFRoZSBjcml0aWNhbCBwb2ludCBpcyB0aGF0IGBpZWVlODAyMTFfaXRlcl9rZXlzYCBjb250YWlucyBgbG9ja2RlcF9hc3NlcnRfd2lwaHkoaHctJmd0O3dpcGh5KWAsIG1lYW5pbmcgd2UmIzM5O3JlIGludHJvZHVjaW5nIG9yIHRpZ2h0ZW5pbmcgbG9ja2luZyByZXF1aXJlbWVudHMgcmVsYXRlZCB0byB0aGUgd2lwaHkuCgpUaGlzIGlzIGEgcmVkIGZsYWcsIHJpZ2h0PyAgVGhlIGRvY3VtZW50YXRpb24gY2xlYXJseSBzdGF0ZXMgdGhhdCBjaGFuZ2VzIGludHJvZHVjaW5nIG9yIG1vZGlmeWluZyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIGluIHJlYWNoYWJsZSBjb2RlICptdXN0KiBiZSBmdXp6ZWQsIHBhcnRpY3VsYXJseSBmb3IgZHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzLCBzdWNoIGFzIFVTQiBnYWRnZXQuICBDcnVjaWFsbHksIHRoZSBSVFc4OSBVU0IgZHJpdmVycyAoYHJ0dzg5Xzg4NTFidWAsIGBydHc4OV84ODUyYXVgLCBgcnR3ODlfODg1MmJ1YCwgYHJ0dzg5Xzg4NTJjdWAsIGFuZCBgcnR3ODlfODkyMmF1YCkgKmFyZSogcmVhY2hhYmxlIHZpYSBVU0IgZ2FkZ2V0IGVtdWxhdGlvbiB3aXRoaW4gU3l6a2FsbGVyLiAgRnVydGhlcm1vcmUsIG9wZXJhdGlvbnMgbGlrZSBubDgwMjExIG5ldGxpbmsgY29tbWFuZHMsIG1hYzgwMjExIGludGVyYWN0aW9ucywgc3VzcGVuZC9yZXN1bWUgY3ljbGVzLCBhbmQgU0VSIGVycm9yIGhhbmRsaW5nIGNhbiBleGVyY2lzZSB0aGUgd293bGFuIGFuZCBDQU0ga2V5IHJlc2V0IHJvdXRpbmVzLiAgVGhlc2UgYXJlIGFsbCBhdmVudWVzIHdoZXJlIHRoaXMgY2hhbmdlIGluIGtleSBpdGVyYXRpb24gY291bGQgaW50cm9kdWNlIG5ldywgb3IgdW5jb3ZlciBleGlzdGluZywgcmFjZSBjb25kaXRpb25zIG9yIGxvY2tpbmcgaXNzdWVzLgoKVGhlIG1haW4gc3ltYm9scyBJIG5lZWQgdG8gZm9jdXMgb24gYXJlOiBgcnR3ODlfY2FtX3Jlc2V0X2tleXNgLCBgcnR3ODlfd293X2NvbnN0cnVjdF9rZXlfaW5mb2AsIGFuZCBgcnR3ODlfd293X3VwZGF0ZV9rZXlfaW5mb2AsIHdoaWNoIGFyZSBkaXJlY3RseSBtb2RpZmllZCBieSB0aGUgcGF0Y2guIEFkZGl0aW9uYWwgc3ltYm9scyBvZiBpbnRlcmVzdDogYHJ0dzg5X3dvd19zdXNwZW5kYCwgYHJ0dzg5X3dvd19yZXN1bWVgLCBhbmQgYHNlcl9yZXNldF9tYWNfYmluZGluZ2AsIHdoaWNoIGFyZSBwb3RlbnRpYWxseSBpbmRpcmVjdGx5IGFmZmVjdGVkIGJ5IHRoZXNlIGNoYW5nZXMuCgpUbyBlbnN1cmUgdGhpcyBpcyB0ZXN0YWJsZSwgSSYjMzk7bGwgbmVlZCB0aGVzZSBjb25maWd1cmF0aW9ucyBlbmFibGVkOiBgUlRXODlgLCBgUlRXODlfQ09SRWAsIGBSVFc4OV9VU0JgLCBhbmQgYSBzcGVjaWZpYyBVU0IgZHJpdmVyIGxpa2UgYFJUVzg5Xzg4NTJBVWAgYWxvbmcgd2l0aCBgTUFDODAyMTFgLgoKVG8gc3VtbWFyaXplOiBUaGlzIHBhdGNoIHJlcXVpcmVzIGZ1enppbmcgZHVlIHRvIHRoZSBpbnRyb2R1Y3Rpb24gb2Ygd2lwaHkgbG9ja2luZyBhc3NlcnRpb25zIGR1cmluZyBrZXkgaXRlcmF0aW9uLCBwb3RlbnRpYWxseSBhZmZlY3Rpbmcgc3luY2hyb25pY2l0eSB3aXRoaW4gd293bGFuIGFuZCBDQU0ga2V5IHJlc2V0IHJvdXRpbmVzIGluIGEgVVNCIGFjY2Vzc2libGUgd2lyZWxlc3MgZHJpdmVyLiBJJiMzOTttIGNhbGxpbmcgaXQ6IHdvcnRoIGZ1enppbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDIxOjQxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtSVFc4OSYjMzQ7LAogICAgJiMzNDtSVFc4OV9DT1JFJiMzNDssCiAgICAmIzM0O1JUVzg5X1VTQiYjMzQ7LAogICAgJiMzNDtSVFc4OV84ODUyQVUmIzM0OywKICAgICYjMzQ7TUFDODAyMTEmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtydHc4OV9jYW1fcmVzZXRfa2V5cyYjMzQ7LAogICAgJiMzNDtydHc4OV93b3dfY29uc3RydWN0X2tleV9pbmZvJiMzNDssCiAgICAmIzM0O3J0dzg5X3dvd191cGRhdGVfa2V5X2luZm8mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcmVwbGFjZXMgUkNVLWJhc2VkIGtleSBpdGVyYXRpb24gKGllZWU4MDIxMV9pdGVyX2tleXNfcmN1KSB3aXRoIGllZWU4MDIxMV9pdGVyX2tleXMgaW4gcnR3ODkgQ0FNIGFuZCBXb1dMQU4gcGF0aHMuIGllZWU4MDIxMV9pdGVyX2tleXMgZW5mb3JjZXMgYSB3aXBoeSBtdXRleCBhc3NlcnRpb24gKGxvY2tkZXBfYXNzZXJ0X3dpcGh5KSwgY2hhbmdpbmcgbG9ja2luZyBhbmQgc3luY2hyb25pemF0aW9uIGFzc3VtcHRpb25zIGR1cmluZyBrZXkgcmVzZXQgYW5kIFdvV0xBTiBrZXkgY29uc3RydWN0aW9uL3VwZGF0ZXMuIFRoZSBkcml2ZXIgaXMgYWNjZXNzaWJsZSB2aWEgVVNCIGdhZGdldCBlbXVsYXRpb24gYW5kIHdvcnRoIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1JUVzg5JiMzNDssCiAgICAmIzM0O1JUVzg5X0NPUkUmIzM0OywKICAgICYjMzQ7UlRXODlfVVNCJiMzNDssCiAgICAmIzM0O1JUVzg5Xzg4NTJBVSYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3J0dzg5X2NhbV9yZXNldF9rZXlzJiMzNDssCiAgICAmIzM0O3J0dzg5X3dvd19jb25zdHJ1Y3Rfa2V5X2luZm8mIzM0OywKICAgICYjMzQ7cnR3ODlfd293X3VwZGF0ZV9rZXlfaW5mbyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZXBsYWNlcyBSQ1UtYmFzZWQga2V5IGl0ZXJhdGlvbiAoaWVlZTgwMjExX2l0ZXJfa2V5c19yY3UpIHdpdGggaWVlZTgwMjExX2l0ZXJfa2V5cyBpbiBydHc4OSBDQU0gYW5kIFdvV0xBTiBwYXRocy4gaWVlZTgwMjExX2l0ZXJfa2V5cyBlbmZvcmNlcyBhIHdpcGh5IG11dGV4IGFzc2VydGlvbiAobG9ja2RlcF9hc3NlcnRfd2lwaHkpLCBjaGFuZ2luZyBsb2NraW5nIGFuZCBzeW5jaHJvbml6YXRpb24gYXNzdW1wdGlvbnMgZHVyaW5nIGtleSByZXNldCBhbmQgV29XTEFOIGtleSBjb25zdHJ1Y3Rpb24vdXBkYXRlcy4gVGhlIGRyaXZlciBpcyBhY2Nlc3NpYmxlIHZpYSBVU0IgZ2FkZ2V0IGVtdWxhdGlvbiBhbmQgd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMjE6NDE8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAyMTo0MTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlcGxhY2VzIGByY3VfcmVhZF9sb2NrKClgIC8gYGllZWU4MDIxMV9pdGVyX2tleXNfcmN1KClgIHdpdGggYGllZWU4MDIxMV9pdGVyX2tleXMoKWAgaW4gdGhlIFJlYWx0ZWsgcnR3ODkgZHJpdmVyIChgcnR3ODlfY2FtX3Jlc2V0X2tleXNgLCBgcnR3ODlfd293X2NvbnN0cnVjdF9rZXlfaW5mb2AsIGFuZCBgcnR3ODlfd293X3VwZGF0ZV9rZXlfaW5mb2ApLlxuXG5UaGlzIGNoYW5nZSBwdXJlbHkgYWRqdXN0cyBob3cgdGhlIGRyaXZlciBpdGVyYXRlcyBvdmVyIG1hYzgwMjExIGtleXMsIHJlbHlpbmcgb24gdGhlIGNhbGxlciBob2xkaW5nIHRoZSB3aXBoeSBsb2NrIChgbG9ja2RlcF9hc3NlcnRfd2lwaHlgKSBpbnN0ZWFkIG9mIGVudGVyaW5nIGFuIFJDVSByZWFkLXNpZGUgY3JpdGljYWwgc2VjdGlvbi5cblxuVGhlcmUgYXJlIG5vIG5ldyBtZW1vcnkgYWxsb2NhdGlvbnMsIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUgYWNjZXNzZXMsIGluZm8tbGVha3MgdG8gdXNlcnNwYWNlLCBvciBhbHRlcmVkIGJ1ZmZlciBib3VuZHMuIEFueSBwb3RlbnRpYWwgbG9ja2luZyBpc3N1ZXMgKHN1Y2ggYXMgbWlzc2luZyB3aXBoeSBsb2NrKSBvciBzeW5jaHJvbml6YXRpb24vbWVtb3J5IHNhZmV0eSBidWdzIChzdWNoIGFzIGNvbmN1cnJlbnQgbGlzdCBhY2Nlc3Mgb3IgdXNlLWFmdGVyLWZyZWUpIGFyZSBkZXRlY3RhYmxlIGJ5IExPQ0tERVAgYW5kIEtBU0FOLiBUaGVyZWZvcmUsIEtNU0FOIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0CgpGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDQ4OTY3MjYxMjJhNDljMmY2OTc0ZDcyZGZjYjZlYzMyZDQxNGU3OGMKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIFNlcCA4IDIxOjQwOjI4IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jYW0uYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY2FtLmMKaW5kZXggN2M2MmVjZTEzN2QwMS4uMjJmMjFhMDRhOTZkMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jYW0uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NhbS5jCkBAIC02MDUsOSAmIzQzOzYwNSw3IEBAIHZvaWQgcnR3ODlfY2FtX2RlaW5pdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHN0cnVjdCBydHc4OV92aWZfbGluayAqcnR3dmlmX2xpCiAKIHZvaWQgcnR3ODlfY2FtX3Jlc2V0X2tleXMoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KQogewotCXJjdV9yZWFkX2xvY2soKTsKLQlpZWVlODAyMTFfaXRlcl9rZXlzX3JjdShydHdkZXYtJmd0O2h3LCBOVUxMLCBydHc4OV9jYW1fcmVzZXRfa2V5X2l0ZXIsIHJ0d2Rldik7Ci0JcmN1X3JlYWRfdW5sb2NrKCk7CiYjNDM7CWllZWU4MDIxMV9pdGVyX2tleXMocnR3ZGV2LSZndDtodywgTlVMTCwgcnR3ODlfY2FtX3Jlc2V0X2tleV9pdGVyLCBydHdkZXYpOwogfQogCiBzdGF0aWMgaW50IHJ0dzg5X2NhbV9nZXRfYXZhaWxfYWRkcl9jYW0oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMKaW5kZXggMmRmYTI0YzU0ZTdkNy4uMGJmMzQ2OTJjN2NlMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jCkBAIC00NzMsMTAgJiM0Mzs0NzMsOCBAQCBzdGF0aWMgdm9pZCBydHc4OV93b3dfY29uc3RydWN0X2tleV9pbmZvKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldikKIAlzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqd293X3ZpZiA9IHJ0d3ZpZl9saW5rX3RvX3ZpZihydHd2aWZfbGluayk7CiAJYm9vbCBlcnIgPSBmYWxzZTsKIAotCXJjdV9yZWFkX2xvY2soKTsKLQlpZWVlODAyMTFfaXRlcl9rZXlzX3JjdShydHdkZXYtJmd0O2h3LCB3b3dfdmlmLAotCQkJCXJ0dzg5X3dvd19nZXRfa2V5X2luZm9faXRlciwgJmFtcDtlcnIpOwotCXJjdV9yZWFkX3VubG9jaygpOwomIzQzOwlpZWVlODAyMTFfaXRlcl9rZXlzKHJ0d2Rldi0mZ3Q7aHcsIHdvd192aWYsCiYjNDM7CQkJICAgIHJ0dzg5X3dvd19nZXRfa2V5X2luZm9faXRlciwgJmFtcDtlcnIpOwogCiAJaWYgKGVycikgewogCQlydHc4OV93b3dfa2V5X2NsZWFyKHJ0d2Rldik7CkBAIC02OTUsMTAgJiM0Mzs2OTMsOCBAQCBzdGF0aWMgdm9pZCBydHc4OV93b3dfdXBkYXRlX2tleV9pbmZvKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgYm9vbCByeF9yZWFkeSkKIAlzdHJ1Y3QgaWVlZTgwMjExX2Jzc19jb25mICpic3NfY29uZjsKIAlzdHJ1Y3QgaWVlZTgwMjExX2tleV9jb25mICprZXk7CiAKLQlyY3VfcmVhZF9sb2NrKCk7Ci0JaWVlZTgwMjExX2l0ZXJfa2V5c19yY3UocnR3ZGV2LSZndDtodywgd293X3ZpZiwKLQkJCQlydHc4OV93b3dfc2V0X2tleV9pbmZvX2l0ZXIsICZhbXA7ZGF0YSk7Ci0JcmN1X3JlYWRfdW5sb2NrKCk7CiYjNDM7CWllZWU4MDIxMV9pdGVyX2tleXMocnR3ZGV2LSZndDtodywgd293X3ZpZiwKJiM0MzsJCQkgICAgcnR3ODlfd293X3NldF9rZXlfaW5mb19pdGVyLCAmYW1wO2RhdGEpOwogCiAJaWYgKGRhdGEuZXJyb3IpIHsKIAkJcnR3ODlfZGVidWcocnR3ZGV2LCBSVFc4OV9EQkdfV09XLCAmIzM0OyVzIGVycm9yXG4mIzM0OywgX19mdW5jX18pOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MS8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMjE6NDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjgxOAoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDI3MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgVGhpcyBMaW51eCBLZXJuZWwgUGF0Y2ggZm9yIEtNU0FOIEZ1enppbmcgTmVlZHMqKgoKT2theSwgc28gSSBuZWVkIHRvIGRlY2lkZSBpZiB0aGlzIHBhdGNoIHNlcmllcyBuZWNlc3NpdGF0ZXMgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBydW4uIExldCYjMzk7cyBicmVhayBpdCBkb3duLiBJdCBsb29rcyBsaWtlIHRoZSBtYWluIGNoYW5nZSBpcyBpbiB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYCBkaXJlY3RvcnksIHNwZWNpZmljYWxseSBgY2FtLmNgIGFuZCBgd293LmNgLiBUaGUgY29yZSBvZiB0aGUgbW9kaWZpY2F0aW9uIGlzIHRoZSByZXBsYWNlbWVudCBvZiBgcmN1X3JlYWRfbG9jaygpYC9gaWVlZTgwMjExX2l0ZXJfa2V5c19yY3UoKWAvYHJjdV9yZWFkX3VubG9jaygpYCBzZXF1ZW5jZXMgd2l0aCBhIHNpbXBsZSBgaWVlZTgwMjExX2l0ZXJfa2V5cygpYC4gVGhpcyBwYXR0ZXJuIHJlcGVhdHMgaW4gYSBjb3VwbGUgb2YgcGxhY2VzIHdpdGhpbiB0aG9zZSBmaWxlcy4KCk15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHRoaXMgaXMgYSBjaGFuZ2UgaW52b2x2aW5nIFJDVSAoUmVhZC1Db3B5LVVwZGF0ZSkgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXMgaW4gYSB3aXJlbGVzcyBkcml2ZXIgY29udGV4dC4gVGhpcyBpbW1lZGlhdGVseSBmbGFncyBhIHBvdGVudGlhbCBhcmVhIGZvciBmdXp6aW5nIGNvbnNpZGVyYXRpb24uIFRoZSByZW1vdmFsIG9mIFJDVSBzdWdnZXN0cyBhIHNoaWZ0IGluIGhvdyBrZXkgaXRlcmF0aW9uIGlzIGhhbmRsZWQuIElzIGl0IHN0aWxsIHNhZmU/IERpZCB0aGV5IG1vdmUgdGhlIGxvY2tpbmcgdG8gYW5vdGhlciBwb2ludD8gSXMgdGhlcmUgYSBzdWJ0bGUgcmFjZSBjb25kaXRpb24gdGhleSByZW1vdmVkPwoKVG8gZ2V0IGEgY2xlYXJlciBwaWN0dXJlIGFuZCBkZXRlcm1pbmUgdGhlIGZ1enppbmcgaW1wbGljYXRpb25zLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgbnVhbmNlcyBvZiB0aGUgZnVuY3Rpb25zIGludm9sdmVkLiBJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgZ3JlcCB0aHJvdWdoIHRoZSBrZXJuZWwgc291cmNlIGFuZCBwb3NzaWJseSByZWFkIHRoZSBmaWxlcyBjb250YWluaW5nIGBpZWVlODAyMTFfaXRlcl9rZXlzYCBhbmQgYGllZWU4MDIxMV9pdGVyX2tleXNfcmN1YCB0byBzZWUgaG93IHRob3NlIGFyZSBpbXBsZW1lbnRlZCBhbmQsIG1vcmUgaW1wb3J0YW50bHksIHdoYXQgY29udGV4dCB0aGV5IGFyZSB1c2VkIHdpdGhpbi4gVW5kZXJzdGFuZGluZyB0aGUgZGF0YSBzdHJ1Y3R1cmVzIGFuZCBjb250cm9sIGZsb3cgYXJvdW5kIHRoZXNlIGtleSBpdGVyYXRpb25zIGlzIGNydWNpYWwuIFRoZSBmYWN0IHRoYXQgdGhpcyBpbXBhY3RzIGJvdGggYGNhbS5jYCBhbmQgYHdvdy5jYCBzdWdnZXN0cyBhIG1vcmUgZ2VuZXJhbCBwYXR0ZXJuLCBpbmNyZWFzaW5nIHRoZSBsaWtlbGlob29kIG9mIGEgc3VidGxlLCBidXQgc3lzdGVtLXdpZGUsIGlzc3VlLiBJIG5lZWQgdG8gYmUgc3VyZSB0aGF0IHRoZXNlIGNoYW5nZXMgYXJlIG5vdCBpbnRyb2R1Y2luZywgb3IgZXhwb3NpbmcsIGFueSBuZXcgcmFjZSBjb25kaXRpb25zIHRoYXQgY291bGQgbGVhZCB0byBtZW1vcnkgY29ycnVwdGlvbiBvciBkYXRhIHJhY2VzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQyLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAyMTo0MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpZWVlODAyMTFfaXRlcl9rZXlzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS9rZXkuYz0xMDAxPWllZWU4MDIxMV9rZXlfaXRlcihzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbi0tXG5uZXQvbWFjODAyMTEva2V5LmMtMTAxOS1cbm5ldC9tYWM4MDIxMS9rZXkuYzoxMDIwOnZvaWQgaWVlZTgwMjExX2l0ZXJfa2V5cyhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbm5ldC9tYWM4MDIxMS9rZXkuYy0xMDIxLVx0XHRcdCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxuLS1cbm5ldC9tYWM4MDIxMS9rZXkuYy0xMDQ2LX1cbm5ldC9tYWM4MDIxMS9rZXkuYzoxMDQ3OkVYUE9SVF9TWU1CT0woaWVlZTgwMjExX2l0ZXJfa2V5cyk7XG5uZXQvbWFjODAyMTEva2V5LmMtMTA0OC1cbm5ldC9tYWM4MDIxMS9rZXkuYz0xMDQ5PXN0YXRpYyB2b2lkXG5uZXQvbWFjODAyMTEva2V5LmM6MTA1MDpfaWVlZTgwMjExX2l0ZXJfa2V5c19yY3Uoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG5uZXQvbWFjODAyMTEva2V5LmMtMTA1MS1cdFx0XHQgc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4tLVxubmV0L21hYzgwMjExL2tleS5jLTEwNjQtXG5uZXQvbWFjODAyMTEva2V5LmM6MTA2NTp2b2lkIGllZWU4MDIxMV9pdGVyX2tleXNfcmN1KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxubmV0L21hYzgwMjExL2tleS5jLTEwNjYtXHRcdFx0ICAgICBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxuLS1cbm5ldC9tYWM4MDIxMS9rZXkuYy0xMDc4LVx0XHRzZGF0YSA9IHZpZl90b19zZGF0YSh2aWYpO1xubmV0L21hYzgwMjExL2tleS5jOjEwNzk6XHRcdF9pZWVlODAyMTFfaXRlcl9rZXlzX3JjdShodywgc2RhdGEsIGl0ZXIsIGl0ZXJfZGF0YSk7XG5uZXQvbWFjODAyMTEva2V5LmMtMTA4MC1cdH0gZWxzZSB7XG5uZXQvbWFjODAyMTEva2V5LmMtMTA4MS1cdFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9yY3Uoc2RhdGEsIFx1MDAyNmxvY2FsLVx1MDAzZWludGVyZmFjZXMsIGxpc3QpXG5uZXQvbWFjODAyMTEva2V5LmM6MTA4MjpcdFx0XHRfaWVlZTgwMjExX2l0ZXJfa2V5c19yY3UoaHcsIHNkYXRhLCBpdGVyLCBpdGVyX2RhdGEpO1xubmV0L21hYzgwMjExL2tleS5jLTEwODMtXHR9XG5uZXQvbWFjODAyMTEva2V5LmMtMTA4NC19XG5uZXQvbWFjODAyMTEva2V5LmM6MTA4NTpFWFBPUlRfU1lNQk9MKGllZWU4MDIxMV9pdGVyX2tleXNfcmN1KTtcbm5ldC9tYWM4MDIxMS9rZXkuYy0xMDg2LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQzLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAyMTo0MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MjYzCgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkmIzM5O20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIHRoZSBNQUM4MDIxMSBLZXkgTWFuYWdlbWVudCBJbXBsZW1lbnRhdGlvbioqCgpPa2F5LCB0aW1lIHRvIGRpZyBpbnRvIHRoZSBgbmV0L21hYzgwMjExL2tleS5jYCBmaWxlLiBTcGVjaWZpY2FsbHksIEkmIzM5O20gZm9jdXNpbmcgb24gbGluZXMgMTAwMCB0byAxMDgwLiBUaGF0IHJlZ2lvbiB1c3VhbGx5IGRlYWxzIHdpdGgga2V5LXJlbGF0ZWQgbG9naWMsIGFuZCBiYXNlZCBvbiB0aGUgcmVjZW50IGNoYW5nZXMgSSYjMzk7dmUgYmVlbiB0cmFja2luZywgSSBoYXZlIGEgZmVlbGluZyB0aGUgc291cmNlIG9mIHRoZSBpc3N1ZSBJJiMzOTttIGNoYXNpbmcgaXMgd2l0aGluIHRoZSBrZXkgbWFuYWdlbWVudCBzeXN0ZW0uIFRoaXMgaXMgd2hlcmUgdGhlIGNvcmUga2V5IHNldHVwIGFuZCBoYW5kbGluZyBpcyBkb25lIHdpdGhpbiB0aGUgbWFjODAyMTEgZnJhbWV3b3JrLCBzbyB0aGlzIGlzIGEgZ3JlYXQgcGxhY2UgdG8gc3RhcnQgbXkgaW52ZXN0aWdhdGlvbi4gSSYjMzk7bSBleHBlY3RpbmcgdG8gc2VlIGZ1bmN0aW9ucyByZXNwb25zaWJsZSBmb3IgYWRkaW5nLCBkZWxldGluZywgYW5kIHVwZGF0aW5nIGNyeXB0b2dyYXBoaWMga2V5cywgcGVyaGFwcyB3aXRoIHJlbGF0ZWQgZXJyb3IgY2hlY2tpbmcuIEkmIzM5O20ga2VlbiB0byBzZWUgdGhlIGludGVybmFsIGRhdGEgc3RydWN0dXJlcyB1c2VkIHRvIHJlcHJlc2VudCBrZXlzLCB0b28sIGFzIHRoYXQgd2lsbCBpbGx1bWluYXRlIGhvdyB0aGVzZSBrZXlzIGFyZSBzdG9yZWQgYW5kIG1hbmFnZWQuIExldCYjMzk7cyBnZXQgY3JhY2tpbmcgYW5kIGlkZW50aWZ5IHdoZXJlIHRoZSBwcm9ibGVtIGlzLi4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDQvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDIxOjQyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExL2tleS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTAwMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA4NQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsxMDAwOlx0c3RhdGljIHZvaWRcbjEwMDE6XHRpZWVlODAyMTFfa2V5X2l0ZXIoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4xMDAyOlx0XHRcdCAgIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXG4xMDAzOlx0XHRcdCAgIHN0cnVjdCBpZWVlODAyMTFfa2V5ICprZXksXG4xMDA0Olx0XHRcdCAgIHZvaWQgKCppdGVyKShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbjEwMDU6XHRcdFx0XHRcdHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXG4xMDA2Olx0XHRcdFx0XHRzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqc3RhLFxuMTAwNzpcdFx0XHRcdFx0c3RydWN0IGllZWU4MDIxMV9rZXlfY29uZiAqa2V5LFxuMTAwODpcdFx0XHRcdFx0dm9pZCAqZGF0YSksXG4xMDA5Olx0XHRcdCAgIHZvaWQgKml0ZXJfZGF0YSlcbjEwMTA6XHR7XG4xMDExOlx0XHQvKiBza2lwIGtleXMgb2Ygc3RhdGlvbiBpbiByZW1vdmFsIHByb2Nlc3MgKi9cbjEwMTI6XHRcdGlmIChrZXktXHUwMDNlc3RhIFx1MDAyNlx1MDAyNiBrZXktXHUwMDNlc3RhLVx1MDAzZXJlbW92ZWQpXG4xMDEzOlx0XHRcdHJldHVybjtcbjEwMTQ6XHRcdGlmICghKGtleS1cdTAwM2VmbGFncyBcdTAwMjYgS0VZX0ZMQUdfVVBMT0FERURfVE9fSEFSRFdBUkUpKVxuMTAxNTpcdFx0XHRyZXR1cm47XG4xMDE2Olx0XHRpdGVyKGh3LCB2aWYsIGtleS1cdTAwM2VzdGEgPyBcdTAwMjZrZXktXHUwMDNlc3RhLVx1MDAzZXN0YSA6IE5VTEwsXG4xMDE3Olx0XHQgICAgIFx1MDAyNmtleS1cdTAwM2Vjb25mLCBpdGVyX2RhdGEpO1xuMTAxODpcdH1cbjEwMTk6XHRcbjEwMjA6XHR2b2lkIGllZWU4MDIxMV9pdGVyX2tleXMoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4xMDIxOlx0XHRcdFx0IHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXG4xMDIyOlx0XHRcdFx0IHZvaWQgKCppdGVyKShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbjEwMjM6XHRcdFx0XHRcdCAgICAgIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXG4xMDI0Olx0XHRcdFx0XHQgICAgICBzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqc3RhLFxuMTAyNTpcdFx0XHRcdFx0ICAgICAgc3RydWN0IGllZWU4MDIxMV9rZXlfY29uZiAqa2V5LFxuMTAyNjpcdFx0XHRcdFx0ICAgICAgdm9pZCAqZGF0YSksXG4xMDI3Olx0XHRcdFx0IHZvaWQgKml0ZXJfZGF0YSlcbjEwMjg6XHR7XG4xMDI5Olx0XHRzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCA9IGh3X3RvX2xvY2FsKGh3KTtcbjEwMzA6XHRcdHN0cnVjdCBpZWVlODAyMTFfa2V5ICprZXksICp0bXA7XG4xMDMxOlx0XHRzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YTtcbjEwMzI6XHRcbjEwMzM6XHRcdGxvY2tkZXBfYXNzZXJ0X3dpcGh5KGh3LVx1MDAzZXdpcGh5KTtcbjEwMzQ6XHRcbjEwMzU6XHRcdGlmICh2aWYpIHtcbjEwMzY6XHRcdFx0c2RhdGEgPSB2aWZfdG9fc2RhdGEodmlmKTtcbjEwMzc6XHRcdFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGtleSwgdG1wLCBcdTAwMjZzZGF0YS1cdTAwM2VrZXlfbGlzdCwgbGlzdClcbjEwMzg6XHRcdFx0XHRpZWVlODAyMTFfa2V5X2l0ZXIoaHcsIHZpZiwga2V5LCBpdGVyLCBpdGVyX2RhdGEpO1xuMTAzOTpcdFx0fSBlbHNlIHtcbjEwNDA6XHRcdFx0bGlzdF9mb3JfZWFjaF9lbnRyeShzZGF0YSwgXHUwMDI2bG9jYWwtXHUwMDNlaW50ZXJmYWNlcywgbGlzdClcbjEwNDE6XHRcdFx0XHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoa2V5LCB0bXAsXG4xMDQyOlx0XHRcdFx0XHRcdFx0IFx1MDAyNnNkYXRhLVx1MDAzZWtleV9saXN0LCBsaXN0KVxuMTA0MzpcdFx0XHRcdFx0aWVlZTgwMjExX2tleV9pdGVyKGh3LCBcdTAwMjZzZGF0YS1cdTAwM2V2aWYsIGtleSxcbjEwNDQ6XHRcdFx0XHRcdFx0XHQgICBpdGVyLCBpdGVyX2RhdGEpO1xuMTA0NTpcdFx0fVxuMTA0NjpcdH1cbjEwNDc6XHRFWFBPUlRfU1lNQk9MKGllZWU4MDIxMV9pdGVyX2tleXMpO1xuMTA0ODpcdFxuMTA0OTpcdHN0YXRpYyB2b2lkXG4xMDUwOlx0X2llZWU4MDIxMV9pdGVyX2tleXNfcmN1KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuMTA1MTpcdFx0XHRcdCBzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbjEwNTI6XHRcdFx0XHQgdm9pZCAoKml0ZXIpKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuMTA1MzpcdFx0XHRcdFx0ICAgICAgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcbjEwNTQ6XHRcdFx0XHRcdCAgICAgIHN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGEsXG4xMDU1Olx0XHRcdFx0XHQgICAgICBzdHJ1Y3QgaWVlZTgwMjExX2tleV9jb25mICprZXksXG4xMDU2Olx0XHRcdFx0XHQgICAgICB2b2lkICpkYXRhKSxcbjEwNTc6XHRcdFx0XHQgdm9pZCAqaXRlcl9kYXRhKVxuMTA1ODpcdHtcbjEwNTk6XHRcdHN0cnVjdCBpZWVlODAyMTFfa2V5ICprZXk7XG4xMDYwOlx0XG4xMDYxOlx0XHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShrZXksIFx1MDAyNnNkYXRhLVx1MDAzZWtleV9saXN0LCBsaXN0KVxuMTA2MjpcdFx0XHRpZWVlODAyMTFfa2V5X2l0ZXIoaHcsIFx1MDAyNnNkYXRhLVx1MDAzZXZpZiwga2V5LCBpdGVyLCBpdGVyX2RhdGEpO1xuMTA2MzpcdH1cbjEwNjQ6XHRcbjEwNjU6XHR2b2lkIGllZWU4MDIxMV9pdGVyX2tleXNfcmN1KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuMTA2NjpcdFx0XHRcdCAgICAgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcbjEwNjc6XHRcdFx0XHQgICAgIHZvaWQgKCppdGVyKShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbjEwNjg6XHRcdFx0XHRcdFx0ICBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxuMTA2OTpcdFx0XHRcdFx0XHQgIHN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGEsXG4xMDcwOlx0XHRcdFx0XHRcdCAgc3RydWN0IGllZWU4MDIxMV9rZXlfY29uZiAqa2V5LFxuMTA3MTpcdFx0XHRcdFx0XHQgIHZvaWQgKmRhdGEpLFxuMTA3MjpcdFx0XHRcdCAgICAgdm9pZCAqaXRlcl9kYXRhKVxuMTA3MzpcdHtcbjEwNzQ6XHRcdHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsID0gaHdfdG9fbG9jYWwoaHcpO1xuMTA3NTpcdFx0c3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGE7XG4xMDc2Olx0XG4xMDc3Olx0XHRpZiAodmlmKSB7XG4xMDc4Olx0XHRcdHNkYXRhID0gdmlmX3RvX3NkYXRhKHZpZik7XG4xMDc5Olx0XHRcdF9pZWVlODAyMTFfaXRlcl9rZXlzX3JjdShodywgc2RhdGEsIGl0ZXIsIGl0ZXJfZGF0YSk7XG4xMDgwOlx0XHR9IGVsc2Uge1xuMTA4MTpcdFx0XHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShzZGF0YSwgXHUwMDI2bG9jYWwtXHUwMDNlaW50ZXJmYWNlcywgbGlzdClcbjEwODI6XHRcdFx0XHRfaWVlZTgwMjExX2l0ZXJfa2V5c19yY3UoaHcsIHNkYXRhLCBpdGVyLCBpdGVyX2RhdGEpO1xuMTA4MzpcdFx0fVxuMTA4NDpcdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40NS8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMjE6NDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjE1NgoJCQkJCQkJb3V0cHV0OiA0NQoJCQkJCQkJdGhvdWdodHM6IDI5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgZmlsZXM6CgoqKkRpdmluZyBpbnRvIHRoZSBSZWFsdGVrIDgwMi4xMWF4IFdha2Utb24tV2lyZWxlc3MgKFdvV0xBTikgSW1wbGVtZW50YXRpb24qKgoKT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGludGVyYWN0aW9uIGJldHdlZW4gdGhlIENBTSAoQ29udGVudCBBZGRyZXNzYWJsZSBNZW1vcnkpIGNvbmZpZ3VyYXRpb24gYW5kIHRoZSB3YWtlLW9uLXdpcmVsZXNzIGZ1bmN0aW9uYWxpdHkgd2l0aGluIHRoZSBSZWFsdGVrIDgwMi4xMWF4IGRyaXZlciwgc3BlY2lmaWNhbGx5IHRoZSBgcnR3ODlgIHNlcmllcy4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gY2hlY2sgb3V0IGBkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NhbS5jYCDigJMgdGhhdCYjMzk7cyB3aGVyZSB0aGUgY3JpdGljYWwgbWF0Y2hpbmcgcnVsZXMgZm9yIHRoZSBDQU0gc2hvdWxkIHJlc2lkZSwgYW5kIGl0JiMzOTtzIHdoZXJlIHRoZSBsb2dpYyBmb3IgZW5hYmxpbmcgYW5kIGNvbmZpZ3VyaW5nIHRob3NlIHJ1bGVzIHRvIHRyaWdnZXIgYSB3YWtlLXVwIGV2ZW50IGlzIHByb2JhYmx5IGxvY2F0ZWQuIEkmIzM5O20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIGhvdyBpdCBoYW5kbGVzIHBhdHRlcm4gbWF0Y2hpbmcsIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgcG93ZXIgbWFuYWdlbWVudCBzdGF0ZXMsIGFuZCB3aGV0aGVyIHRoZSBDQU0gc2V0dXAgaXMgaW50ZWdyYXRlZCB3aXRoIHRoZSBoYXJkd2FyZSYjMzk7cyBsb3ctcG93ZXIgbW9kZXMgZWZmaWNpZW50bHkuIEFueSBwb3RlbnRpYWwgaW5lZmZpY2llbmNpZXMgaW4gdGhlIENBTSBjb25maWd1cmF0aW9uIHByb2Nlc3MgY291bGQgdHJhbnNsYXRlIGRpcmVjdGx5IGludG8gdW5uZWNlc3NhcnkgcG93ZXIgY29uc3VtcHRpb24sIG5lZ2F0aW5nIHRoZSB3aG9sZSBwb2ludCBvZiBXb1dMQU4uCgpUaGVuLCBJJiMzOTtsbCBuZWVkIHRvIGRyaWxsIGRvd24gaW50byB0aGUgJiMzOTt3b3cuYyYjMzk7IHRvIHNlZSBob3cgdGhlIHNvZnR3YXJlIGFjdHVhbGx5IG9yY2hlc3RyYXRlcyB0aGUgd2FrZS11cCBwcm9jZXNzLiBJJiMzOTttIGV4cGVjdGluZyB0byBmaW5kIHRoZSBob29rcyBpbnRvIHRoZSBSZWFsdGVrIGhhcmR3YXJlLCB0aGUgaGFuZGxpbmcgb2YgdGhlIGludGVycnVwdHMgZ2VuZXJhdGVkIGJ5IHRoZSBDQU0gaGl0cywgYW5kIHRoZSBzdGVwcyB0byB0cmFuc2l0aW9uIHRoZSBzeXN0ZW0gZnJvbSBhIGxvdy1wb3dlciBzdGF0ZSBiYWNrIHRvIGEgZnVsbHkgYWN0aXZlIHN0YXRlIHVwb24gYSBtYXRjaGluZyBldmVudC4gV2hhdCYjMzk7cyB0aGUgc3BlY2lmaWMgc2VxdWVuY2U/IFdoYXQgYXJlIHRoZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlcyB1c2VkIHRvIGVuc3VyZSBkYXRhIGludGVncml0eSBkdXJpbmcgdGhlIHBvd2VyIHN0YXRlIHRyYW5zaXRpb25zPyBIb3cgZG9lcyBpdCBoYW5kbGUgdGhlIGNvbXBsZXhpdGllcyBvZiBuZXR3b3JrIHN0YWNrIGluaXRpYWxpemF0aW9uIGFmdGVyIGEgd2FrZS11cD8gQW5kLCBtb3N0IGltcG9ydGFudGx5LCB3aGF0JiMzOTtzIHRoZSBvdmVyYWxsIHBvd2VyIGJ1ZGdldD8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBkcml2ZXIgbWFuYWdlcyB0byBhY2hpZXZlIHRoZSBjbGFpbWVkIHBvd2VyIHNhdmluZ3MgY29tcGFyZWQgdG8gc3RhbmRhcmQgV2ktRmkgb3BlcmF0aW9uLiBJJiMzOTttIGxvb2tpbmcgZm9yIGEgY2xlYXIgZmxvdyBvZiBvcGVyYXRpb25zIGJldHdlZW4gdGhlIENBTSBjb25maWd1cmF0aW9uIGFuZCB0aGUgYWN0dWFsIFdvV0xBTiB0cmlnZ2VyIGV2ZW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ2LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAyMTo0MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY2FtLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA1OTUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDU5NTpcdH1cbiA1OTY6XHRcbiA1OTc6XHR2b2lkIHJ0dzg5X2NhbV9kZWluaXQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBzdHJ1Y3QgcnR3ODlfdmlmX2xpbmsgKnJ0d3ZpZl9saW5rKVxuIDU5ODpcdHtcbiA1OTk6XHRcdHN0cnVjdCBydHc4OV9hZGRyX2NhbV9lbnRyeSAqYWRkcl9jYW0gPSBcdTAwMjZydHd2aWZfbGluay1cdTAwM2VhZGRyX2NhbTtcbiA2MDA6XHRcdHN0cnVjdCBydHc4OV9ic3NpZF9jYW1fZW50cnkgKmJzc2lkX2NhbSA9IFx1MDAyNnJ0d3ZpZl9saW5rLVx1MDAzZWJzc2lkX2NhbTtcbiA2MDE6XHRcbiA2MDI6XHRcdHJ0dzg5X2NhbV9kZWluaXRfYWRkcl9jYW0ocnR3ZGV2LCBhZGRyX2NhbSk7XG4gNjAzOlx0XHRydHc4OV9jYW1fZGVpbml0X2Jzc2lkX2NhbShydHdkZXYsIGJzc2lkX2NhbSk7XG4gNjA0Olx0fVxuIDYwNTpcdFxuIDYwNjpcdHZvaWQgcnR3ODlfY2FtX3Jlc2V0X2tleXMoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuIDYwNzpcdHtcbiA2MDg6XHRcdGllZWU4MDIxMV9pdGVyX2tleXMocnR3ZGV2LVx1MDAzZWh3LCBOVUxMLCBydHc4OV9jYW1fcmVzZXRfa2V5X2l0ZXIsIHJ0d2Rldik7XG4gNjA5Olx0fVxuIDYxMDpcdFxuIDYxMTpcdHN0YXRpYyBpbnQgcnR3ODlfY2FtX2dldF9hdmFpbF9hZGRyX2NhbShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG4gNjEyOlx0XHRcdFx0XHRcdHU4ICphZGRyX2NhbV9pZHgpXG4gNjEzOlx0e1xuIDYxNDpcdFx0Y29uc3Qgc3RydWN0IHJ0dzg5X2NoaXBfaW5mbyAqY2hpcCA9IHJ0d2Rldi1cdTAwM2VjaGlwO1xuIDYxNTpcdFx0c3RydWN0IHJ0dzg5X2NhbV9pbmZvICpjYW1faW5mbyA9IFx1MDAyNnJ0d2Rldi1cdTAwM2VjYW1faW5mbztcbiA2MTY6XHRcdHU4IGFkZHJfY2FtX251bSA9IGNoaXAtXHUwMDNlYWNhbV9udW07XG4gNjE3Olx0XHR1OCBpZHg7XG4gNjE4Olx0XG4gNjE5Olx0XHRpZHggPSBmaW5kX2ZpcnN0X3plcm9fYml0KGNhbV9pbmZvLVx1MDAzZWFkZHJfY2FtX21hcCwgYWRkcl9jYW1fbnVtKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Ny8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMjE6NDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzE0NwoJCQkJCQkJb3V0cHV0OiA0NQoJCQkJCQkJdGhvdWdodHM6IDUzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRoaW5raW5nIHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIHRoZSBSZWFsdGVrIFdPVyBDb2RlKioKCk9rYXksIHRpbWUgdG8gZGlnIGludG8gdGhlIFJlYWx0ZWsgd2lyZWxlc3MgZHJpdmVyJiMzOTtzIHdha2Utb24td2lyZWxlc3MgKFdPVykgZnVuY3Rpb25hbGl0eSwgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgYHJ0dzg5YCBjb2RlLiBNeSBnb2FsIGlzIHRvIHVuZGVyc3RhbmQgaG93IHRoZXNlIGtleXMgYXJlIGNvbnN0cnVjdGVkIGFuZCB1cGRhdGVkIGZvciBXT1cuIEkmIzM5O20gZ29pbmcgdG8gZm9jdXMgbXkgYXR0ZW50aW9uIG9uIHRoZSBgcnR3ODlfd293X2NvbnN0cnVjdF9rZXlfaW5mb2AgZnVuY3Rpb24gYW5kIHRoZSBgcnR3ODlfd293X3VwZGF0ZV9rZXlfaW5mb2AgZnVuY3Rpb24sIGJvdGggbG9jYXRlZCB3aXRoaW4gdGhlIGB3b3cuY2AgZmlsZSBpbiB0aGUgZHJpdmVyJiMzOTtzIHNvdXJjZS4gVGhpcyBsb29rcyBsaWtlIHRoZSBwbGFjZSB0byBzdGFydCBhbmFseXppbmcgdGhlIHByb2Nlc3MuIFRoaXMgd2lsbCBnaXZlIG1lIGEgZ29vZCB1bmRlcnN0YW5kaW5nIG9mIGhvdyB0aGlzIHBvcnRpb24gb2YgdGhlIGNvZGUgaXMgaGFuZGxlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40OC8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMjE6NDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNDYwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA0NjA6XHRcbiA0NjE6XHRcdG1lbXNldChcdTAwMjZydHdfd293LVx1MDAzZWFvYWNfcnB0LCAwLCBzaXplb2YocnR3X3dvdy1cdTAwM2Vhb2FjX3JwdCkpO1xuIDQ2MjpcdFx0bWVtc2V0KFx1MDAyNnJ0d193b3ctXHUwMDNlZ3RrX2luZm8sIDAsIHNpemVvZihydHdfd293LVx1MDAzZWd0a19pbmZvKSk7XG4gNDYzOlx0XHRtZW1zZXQoXHUwMDI2cnR3X3dvdy1cdTAwM2VrZXlfaW5mbywgMCwgc2l6ZW9mKHJ0d193b3ctXHUwMDNla2V5X2luZm8pKTtcbiA0NjQ6XHRcdHJ0d193b3ctXHUwMDNlcHRrX2FsZyA9IDA7XG4gNDY1Olx0XHRydHdfd293LVx1MDAzZWd0a19hbGcgPSAwO1xuIDQ2NjpcdH1cbiA0Njc6XHRcbiA0Njg6XHRzdGF0aWMgdm9pZCBydHc4OV93b3dfY29uc3RydWN0X2tleV9pbmZvKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcbiA0Njk6XHR7XG4gNDcwOlx0XHRzdHJ1Y3QgcnR3ODlfd293X3BhcmFtICpydHdfd293ID0gXHUwMDI2cnR3ZGV2LVx1MDAzZXdvdztcbiA0NzE6XHRcdHN0cnVjdCBydHc4OV93b3dfa2V5X2luZm8gKmtleV9pbmZvID0gXHUwMDI2cnR3X3dvdy1cdTAwM2VrZXlfaW5mbztcbiA0NzI6XHRcdHN0cnVjdCBydHc4OV92aWZfbGluayAqcnR3dmlmX2xpbmsgPSBydHdkZXYtXHUwMDNld293LnJ0d3ZpZl9saW5rO1xuIDQ3MzpcdFx0c3RydWN0IGllZWU4MDIxMV92aWYgKndvd192aWYgPSBydHd2aWZfbGlua190b192aWYocnR3dmlmX2xpbmspO1xuIDQ3NDpcdFx0Ym9vbCBlcnIgPSBmYWxzZTtcbiA0NzU6XHRcbiA0NzY6XHRcdGllZWU4MDIxMV9pdGVyX2tleXMocnR3ZGV2LVx1MDAzZWh3LCB3b3dfdmlmLFxuIDQ3NzpcdFx0XHRcdCAgICBydHc4OV93b3dfZ2V0X2tleV9pbmZvX2l0ZXIsIFx1MDAyNmVycik7XG4gNDc4Olx0XG4gNDc5Olx0XHRpZiAoZXJyKSB7XG4gNDgwOlx0XHRcdHJ0dzg5X3dvd19rZXlfY2xlYXIocnR3ZGV2KTtcbiA0ODE6XHRcdFx0cmV0dXJuO1xuIDQ4MjpcdFx0fVxuIDQ4MzpcdFxuIDQ4NDpcdFx0a2V5X2luZm8tXHUwMDNldmFsaWRfY2hlY2sgPSBSVFc4OV9XT1dfVkFMSURfQ0hFQ0s7XG4gNDg1Olx0XHRrZXlfaW5mby1cdTAwM2VzeW1ib2xfY2hlY2tfZW4gPSBSVFc4OV9XT1dfU1lNQk9MX0NIS19QVEsgfFxuIDQ4NjpcdFx0XHRcdFx0ICAgIFJUVzg5X1dPV19TWU1CT0xfQ0hLX0dUSztcbiA0ODc6XHR9XG4gNDg4Olx0XG4gNDg5Olx0c3RhdGljIHZvaWQgcnR3ODlfd293X2RlYnVnX2FvYWNfcnB0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcbiA0OTA6XHR7XG4gNDkxOlx0XHRzdHJ1Y3QgcnR3ODlfd293X3BhcmFtICpydHdfd293ID0gXHUwMDI2cnR3ZGV2LVx1MDAzZXdvdztcbiA0OTI6XHRcdHN0cnVjdCBydHc4OV93b3dfYW9hY19yZXBvcnQgKmFvYWNfcnB0ID0gXHUwMDI2cnR3X3dvdy1cdTAwM2Vhb2FjX3JwdDtcbiA0OTM6XHRcbiA0OTQ6XHRcdGlmICghcnR3ODlfZGVidWdfaXNfZW5hYmxlZChydHdkZXYsIFJUVzg5X0RCR19XT1cpKVxuIDQ5NTpcdFx0XHRyZXR1cm47XG4gNDk2Olx0XG4gNDk3Olx0XHRydHc4OV9kZWJ1ZyhydHdkZXYsIFJUVzg5X0RCR19XT1csIFwmIzM0O1thb2FjX3JwdF0gcnB0X3ZlciA9ICVkXFxuXCYjMzQ7LFxuIDQ5ODpcdFx0XHQgICAgYW9hY19ycHQtXHUwMDNlcnB0X3Zlcik7XG4gNDk5Olx0XHRydHc4OV9kZWJ1ZyhydHdkZXYsIFJUVzg5X0RCR19XT1csIFwmIzM0O1thb2FjX3JwdF0gc2VjX3R5cGUgPSAlZFxcblwmIzM0OyxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40OS8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMjE6NDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODI1NgoJCQkJCQkJb3V0cHV0OiA0NQoJCQkJCQkJdGhvdWdodHM6IDIxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyb20gbXkgcGVyc3BlY3RpdmUgYXMgYW4gZXhwZXJ0OgoKKipJbnZlc3RpZ2F0aW5nIGEgUG90ZW50aWFsIElzc3VlKioKCk9rYXksIHNvIHdlJiMzOTtyZSBsb29raW5nIGludG8gc29tZXRoaW5nIGFuZCBgcnR3ODlfd293X3VwZGF0ZV9rZXlfaW5mb2AgaXMgcGluZ2luZyBteSByYWRhci4gR2l2ZW4gd2hhdCBJJiMzOTttIGRlYWxpbmcgd2l0aCwgaXQmIzM5O3MgaW1tZWRpYXRlbHkgb2J2aW91cyB0aGF0IHRoaXMgZnVuY3Rpb24gZGVzZXJ2ZXMgYSBjbG9zZXIgbG9vay4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJvbGUgaW4gdGhpcyBzeXN0ZW0gYW5kIGhvdyBpdCBtaWdodCBiZSBpbnZvbHZlZCBpbiB0aGUgYmVoYXZpb3Igd2UmIzM5O3JlIG9ic2VydmluZy4gSXQmIzM5O3MgdGltZSB0byBkaWcgaW50byB0aGUgY29kZSBhbmQgc2VlIHdoYXQgYHJ0dzg5X3dvd191cGRhdGVfa2V5X2luZm9gIGlzIGFjdHVhbGx5IGRvaW5nLiBNeSBndXQmIzM5O3MgdGVsbGluZyBtZSB0aGF0IHRoaXMgaXMgYSBjcml0aWNhbCBjb21wb25lbnQgdGhhdCB3YXJyYW50cyB0aG9yb3VnaCBpbnZlc3RpZ2F0aW9uIHRvIGlzb2xhdGUgYW5kIHVuZGVyc3RhbmQgYW55IHByb2JsZW0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTAvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDIxOjQyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDY4MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNjgwOlx0XG4gNjgxOlx0XHRyZXR1cm4ga2V5O1xuIDY4MjpcdH1cbiA2ODM6XHRcbiA2ODQ6XHRzdGF0aWMgdm9pZCBydHc4OV93b3dfdXBkYXRlX2tleV9pbmZvKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgYm9vbCByeF9yZWFkeSlcbiA2ODU6XHR7XG4gNjg2Olx0XHRzdHJ1Y3QgcnR3ODlfdmlmX2xpbmsgKnJ0d3ZpZl9saW5rID0gcnR3ZGV2LVx1MDAzZXdvdy5ydHd2aWZfbGluaztcbiA2ODc6XHRcdHN0cnVjdCBpZWVlODAyMTFfdmlmICp3b3dfdmlmID0gcnR3dmlmX2xpbmtfdG9fdmlmKHJ0d3ZpZl9saW5rKTtcbiA2ODg6XHRcdHN0cnVjdCBydHc4OV93b3dfcGFyYW0gKnJ0d193b3cgPSBcdTAwMjZydHdkZXYtXHUwMDNld293O1xuIDY4OTpcdFx0c3RydWN0IHJ0dzg5X3dvd19hb2FjX3JlcG9ydCAqYW9hY19ycHQgPSBcdTAwMjZydHdfd293LVx1MDAzZWFvYWNfcnB0O1xuIDY5MDpcdFx0c3RydWN0IHJ0dzg5X3NldF9rZXlfaW5mb19pdGVyX2RhdGEgZGF0YSA9IHsuZXJyb3IgPSBmYWxzZSxcbiA2OTE6XHRcdFx0XHRcdFx0XHQgICAgLnJ4X3JlYWR5ID0gcnhfcmVhZHksXG4gNjkyOlx0XHRcdFx0XHRcdFx0ICAgIC50a2lwX2d0a19zd2FwcGVkID0gZmFsc2V9O1xuIDY5MzpcdFx0c3RydWN0IGllZWU4MDIxMV9ic3NfY29uZiAqYnNzX2NvbmY7XG4gNjk0Olx0XHRzdHJ1Y3QgaWVlZTgwMjExX2tleV9jb25mICprZXk7XG4gNjk1Olx0XG4gNjk2Olx0XHRpZWVlODAyMTFfaXRlcl9rZXlzKHJ0d2Rldi1cdTAwM2Vodywgd293X3ZpZixcbiA2OTc6XHRcdFx0XHQgICAgcnR3ODlfd293X3NldF9rZXlfaW5mb19pdGVyLCBcdTAwMjZkYXRhKTtcbiA2OTg6XHRcbiA2OTk6XHRcdGlmIChkYXRhLmVycm9yKSB7XG4gNzAwOlx0XHRcdHJ0dzg5X2RlYnVnKHJ0d2RldiwgUlRXODlfREJHX1dPVywgXCYjMzQ7JXMgZXJyb3JcXG5cJiMzNDssIF9fZnVuY19fKTtcbiA3MDE6XHRcdFx0cmV0dXJuO1xuIDcwMjpcdFx0fVxuIDcwMzpcdFxuIDcwNDpcdFx0aWYgKCFkYXRhLmd0a19jaXBoZXIpXG4gNzA1Olx0XHRcdHJldHVybjtcbiA3MDY6XHRcbiA3MDc6XHRcdGtleSA9IHJ0dzg5X3dvd19ndGtfcmVrZXkocnR3ZGV2LCBkYXRhLmd0a19jaXBoZXIsIGFvYWNfcnB0LVx1MDAzZWtleV9pZHgsXG4gNzA4Olx0XHRcdFx0XHQgIGFvYWNfcnB0LVx1MDAzZWd0ayk7XG4gNzA5Olx0XHRpZiAoIWtleSlcbiA3MTA6XHRcdFx0cmV0dXJuO1xuIDcxMTpcdFxuIDcxMjpcdFx0cnR3ODlfcnhfaXZfdG9fcG4ocnR3ZGV2LCBrZXksXG4gNzEzOlx0XHRcdFx0ICBhb2FjX3JwdC1cdTAwM2VndGtfcnhfaXZba2V5LVx1MDAzZWtleWlkeF0pO1xuIDcxNDpcdFxuIDcxNTpcdFx0aWYgKCFkYXRhLmlndGtfY2lwaGVyKVxuIDcxNjpcdFx0XHRyZXR1cm47XG4gNzE3Olx0XG4gNzE4Olx0XHRrZXkgPSBydHc4OV93b3dfZ3RrX3Jla2V5KHJ0d2RldiwgZGF0YS5pZ3RrX2NpcGhlciwgYW9hY19ycHQtXHUwMDNlaWd0a19rZXlfaWQsXG4gNzE5Olx0XHRcdFx0XHQgIGFvYWNfcnB0LVx1MDAzZWlndGspO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUxLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAyMTo0MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5MjI3CgkJCQkJCQlvdXRwdXQ6IDI0MQoJCQkJCQkJdGhvdWdodHM6IDYwMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBydHc4OSBQYXRjaCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBJdCBsb29rcyBsaWtlIHRoZSBgcnR3ODlgIGRyaXZlciBoYXMgYmVlbiB1cGRhdGVkIHRvIHJlcGxhY2UgdGhlIFJDVS1iYXNlZCBrZXkgaXRlcmF0aW9uIChgcmN1X3JlYWRfbG9jaygpOyBpZWVlODAyMTFfaXRlcl9rZXlzX3JjdSguLi4pOyByY3VfcmVhZF91bmxvY2soKTtgKSB3aXRoIGEgZGlyZWN0IGNhbGwgdG8gYGllZWU4MDIxMV9pdGVyX2tleXMoKWAuIFRoZSByYXRpb25hbGUgaXMgc3RyYWlnaHRmb3J3YXJkOiBgaWVlZTgwMjExX2l0ZXJfa2V5cygpYCBleHBlY3RzIHRoZSB3aXBoeSBsb2NrIHRvIGJlIGhlbGQgKHZlcmlmaWVkIGJ5IGBsb2NrZGVwX2Fzc2VydF93aXBoeShody0mZ3Q7d2lwaHkpO2ApLCB3aGljaCBpcyBsaWtlbHkgYWxyZWFkeSB0aGUgY2FzZSBpbiB0aGUgY2FsbGVycywgdGhlcmVmb3JlIHVzaW5nIHRoYXQgbWV0aG9kIGlzIGJldHRlciB0aGFuIHRoZSBSQ1UgbWV0aG9kLiBJdCBhbHNvIHVzZXMgc2FmZSBpdGVyYXRpb24sIGBsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmVgLgoKTm93LCB0aGUgaW1wb3J0YW50IHF1ZXN0aW9uOiBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3M/IExldCYjMzk7cyB0aWNrIHRocm91Z2ggdGhlIHVzdWFsIHN1c3BlY3RzLiBGaXJzdCwgaXMgYW55dGhpbmcgYmVpbmcgc2VudCB0byB1c2VyIHNwYWNlPyBOb3BlLCB0aGF0JiMzOTtzIG5vdCB0aGUgY2FzZS4gTmV4dCwgaXMgdGhlcmUgYW55IGNvbmRpdGlvbmFsIGxvZ2ljIHRoYXQgcmVsaWVzIG9uIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzPyBOb3BlLiBBcmUgd2UgYWxsb2NhdGluZyBhbmQgaW5pdGlhbGl6aW5nIG5ldyBkYXRhIHN0cnVjdHVyZXM/IE5vcGUuIEZpbmFsbHksIGFyZSB3ZSBkZWFsaW5nIHdpdGggYm91bmRzIGNoZWNrcyBvciBsZW5ndGggY2FsY3VsYXRpb25zIHRoYXQgbWlnaHQgYWxsb3cgYWNjZXNzIHRvIHVuaW5pdGlhbGl6ZWQgYnl0ZXM/IE5vcGUuCgpCYXNpY2FsbHksIHRoaXMgcGF0Y2ggaXMgYSBwdXJlIHJlZmFjdG9yaW5nIG9mIHRoZSBpdGVyYXRpb24gaGVscGVyLCBjaGFuZ2luZyBpdCBmcm9tIHRoZSBSQ1UgdmVyc2lvbiB0byB0aGUgbG9ja2VkIHZlcnNpb24uIEFueSBjb25jdXJyZW5jeSBwcm9ibGVtcyDigJMgbGlrZSBub3QgaG9sZGluZyB0aGUgd2lwaHkgbG9jaywgb3IgcG90ZW50aWFsIGtleS1mcmVlaW5nIGlzc3VlcyDigJMgYXJlIGdvaW5nIHRvIGJlIGNhdWdodCBieSBMT0NLREVQIG9yIEtBU0FOLiBXZSBhcmVuJiMzOTt0IGludHJvZHVjaW5nIGFueSByaXNrcyBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2Ugb3IgaW5mb3JtYXRpb24gbGVha3MuCgpUaGVyZWZvcmUsIHRoaXMgcGF0Y2ggZG9lc24mIzM5O3Qgd2FycmFudCBLTVNBTiBmdXp6aW5nLiBJdCYjMzk7cyBhIGNvbmN1cnJlbmN5LXJlbGF0ZWQgY2hhbmdlLCB3aGljaCBpcyBiZXN0IGFkZHJlc3NlZCBieSBMT0NLREVQIGFuZCBLQVNBTi4gSXQmIzM5O3MgYSBzeW5jaHJvbml6YXRpb24vbG9ja2luZyByZWZhY3RvciwgZm9jdXNpbmcgb24gaXRlcmF0aW9uIHRocm91Z2gga2V5cywgYW5kIGFzc2VydGluZyB0aGUgd2lwaHkgbG9jayBpbnN0ZWFkIG9mIHVzaW5nIHRoZSBSQ1UgcmVhZCBsb2NrLiBObyBtZW1vcnkgYWxsb2NhdGlvbiwgbm8gbW9kaWZpY2F0aW9uIG9mIGJ1ZmZlciBib3VuZHMsIG5vIG5ldyBzdHJ1Y3RzLCBubyBjb3B5IG9mIHVuaW5pdGlhbGl6ZWQgZGF0YSB0byB1c2Vyc3BhY2UuIExvY2tpbmcgaXNzdWVzIG9yIGNvbmN1cnJlbnQgbW9kaWZpY2F0aW9uL1VBRiBhcmUgdGhlIHJpc2tzIGhlcmUsIGFuZCBLQVNBTi9MT0NLREVQIGhhbmRsZSB0aG9zZSBjYXNlcy4gVGhlcmVmb3JlLCBubyBuZWVkIHRvIHJ1biBhIEtNU0FOIGZ1enppbmcgc2Vzc2lvbi4gTGV0JiMzOTtzIGNhbGwgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41Mi8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMjE6NDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcmVwbGFjZXMgYHJjdV9yZWFkX2xvY2soKWAgLyBgaWVlZTgwMjExX2l0ZXJfa2V5c19yY3UoKWAgd2l0aCBgaWVlZTgwMjExX2l0ZXJfa2V5cygpYCBpbiB0aGUgUmVhbHRlayBydHc4OSBkcml2ZXIgKGBydHc4OV9jYW1fcmVzZXRfa2V5c2AsIGBydHc4OV93b3dfY29uc3RydWN0X2tleV9pbmZvYCwgYW5kIGBydHc4OV93b3dfdXBkYXRlX2tleV9pbmZvYCkuXG5cblRoaXMgY2hhbmdlIHB1cmVseSBhZGp1c3RzIGhvdyB0aGUgZHJpdmVyIGl0ZXJhdGVzIG92ZXIgbWFjODAyMTEga2V5cywgcmVseWluZyBvbiB0aGUgY2FsbGVyIGhvbGRpbmcgdGhlIHdpcGh5IGxvY2sgKGBsb2NrZGVwX2Fzc2VydF93aXBoeWApIGluc3RlYWQgb2YgZW50ZXJpbmcgYW4gUkNVIHJlYWQtc2lkZSBjcml0aWNhbCBzZWN0aW9uLlxuXG5UaGVyZSBhcmUgbm8gbmV3IG1lbW9yeSBhbGxvY2F0aW9ucywgdW5pbml0aWFsaXplZCB2YXJpYWJsZSBhY2Nlc3NlcywgaW5mby1sZWFrcyB0byB1c2Vyc3BhY2UsIG9yIGFsdGVyZWQgYnVmZmVyIGJvdW5kcy4gQW55IHBvdGVudGlhbCBsb2NraW5nIGlzc3VlcyAoc3VjaCBhcyBtaXNzaW5nIHdpcGh5IGxvY2spIG9yIHN5bmNocm9uaXphdGlvbi9tZW1vcnkgc2FmZXR5IGJ1Z3MgKHN1Y2ggYXMgY29uY3VycmVudCBsaXN0IGFjY2VzcyBvciB1c2UtYWZ0ZXItZnJlZSkgYXJlIGRldGVjdGFibGUgYnkgTE9DS0RFUCBhbmQgS0FTQU4uIFRoZXJlZm9yZSwgS01TQU4gaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcmVwbGFjZXMgYHJjdV9yZWFkX2xvY2soKWAgLyBgaWVlZTgwMjExX2l0ZXJfa2V5c19yY3UoKWAgd2l0aCBgaWVlZTgwMjExX2l0ZXJfa2V5cygpYCBpbiB0aGUgUmVhbHRlayBydHc4OSBkcml2ZXIgKGBydHc4OV9jYW1fcmVzZXRfa2V5c2AsIGBydHc4OV93b3dfY29uc3RydWN0X2tleV9pbmZvYCwgYW5kIGBydHc4OV93b3dfdXBkYXRlX2tleV9pbmZvYCkuXG5cblRoaXMgY2hhbmdlIHB1cmVseSBhZGp1c3RzIGhvdyB0aGUgZHJpdmVyIGl0ZXJhdGVzIG92ZXIgbWFjODAyMTEga2V5cywgcmVseWluZyBvbiB0aGUgY2FsbGVyIGhvbGRpbmcgdGhlIHdpcGh5IGxvY2sgKGBsb2NrZGVwX2Fzc2VydF93aXBoeWApIGluc3RlYWQgb2YgZW50ZXJpbmcgYW4gUkNVIHJlYWQtc2lkZSBjcml0aWNhbCBzZWN0aW9uLlxuXG5UaGVyZSBhcmUgbm8gbmV3IG1lbW9yeSBhbGxvY2F0aW9ucywgdW5pbml0aWFsaXplZCB2YXJpYWJsZSBhY2Nlc3NlcywgaW5mby1sZWFrcyB0byB1c2Vyc3BhY2UsIG9yIGFsdGVyZWQgYnVmZmVyIGJvdW5kcy4gQW55IHBvdGVudGlhbCBsb2NraW5nIGlzc3VlcyAoc3VjaCBhcyBtaXNzaW5nIHdpcGh5IGxvY2spIG9yIHN5bmNocm9uaXphdGlvbi9tZW1vcnkgc2FmZXR5IGJ1Z3MgKHN1Y2ggYXMgY29uY3VycmVudCBsaXN0IGFjY2VzcyBvciB1c2UtYWZ0ZXItZnJlZSkgYXJlIGRldGVjdGFibGUgYnkgTE9DS0RFUCBhbmQgS0FTQU4uIFRoZXJlZm9yZSwgS01TQU4gaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOS0wOFQyMTo0MDoyOS43NjUwNzQ5NDVaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDkzNTU5Mjg3NDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiUlRXODlcIixcbiAgICBcIlJUVzg5X0NPUkVcIixcbiAgICBcIlJUVzg5X1VTQlwiLFxuICAgIFwiUlRXODlfODg1MkFVXCIsXG4gICAgXCJNQUM4MDIxMVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInJ0dzg5X2NhbV9yZXNldF9rZXlzXCIsXG4gICAgXCJydHc4OV93b3dfY29uc3RydWN0X2tleV9pbmZvXCIsXG4gICAgXCJydHc4OV93b3dfdXBkYXRlX2tleV9pbmZvXCJcbiAgXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCByZXBsYWNlcyBgcmN1X3JlYWRfbG9jaygpYCAvIGBpZWVlODAyMTFfaXRlcl9rZXlzX3JjdSgpYCB3aXRoIGBpZWVlODAyMTFfaXRlcl9rZXlzKClgIGluIHRoZSBSZWFsdGVrIHJ0dzg5IGRyaXZlciAoYHJ0dzg5X2NhbV9yZXNldF9rZXlzYCwgYHJ0dzg5X3dvd19jb25zdHJ1Y3Rfa2V5X2luZm9gLCBhbmQgYHJ0dzg5X3dvd191cGRhdGVfa2V5X2luZm9gKS5cXG5cXG5UaGlzIGNoYW5nZSBwdXJlbHkgYWRqdXN0cyBob3cgdGhlIGRyaXZlciBpdGVyYXRlcyBvdmVyIG1hYzgwMjExIGtleXMsIHJlbHlpbmcgb24gdGhlIGNhbGxlciBob2xkaW5nIHRoZSB3aXBoeSBsb2NrIChgbG9ja2RlcF9hc3NlcnRfd2lwaHlgKSBpbnN0ZWFkIG9mIGVudGVyaW5nIGFuIFJDVSByZWFkLXNpZGUgY3JpdGljYWwgc2VjdGlvbi5cXG5cXG5UaGVyZSBhcmUgbm8gbmV3IG1lbW9yeSBhbGxvY2F0aW9ucywgdW5pbml0aWFsaXplZCB2YXJpYWJsZSBhY2Nlc3NlcywgaW5mby1sZWFrcyB0byB1c2Vyc3BhY2UsIG9yIGFsdGVyZWQgYnVmZmVyIGJvdW5kcy4gQW55IHBvdGVudGlhbCBsb2NraW5nIGlzc3VlcyAoc3VjaCBhcyBtaXNzaW5nIHdpcGh5IGxvY2spIG9yIHN5bmNocm9uaXphdGlvbi9tZW1vcnkgc2FmZXR5IGJ1Z3MgKHN1Y2ggYXMgY29uY3VycmVudCBsaXN0IGFjY2VzcyBvciB1c2UtYWZ0ZXItZnJlZSkgYXJlIGRldGVjdGFibGUgYnkgTE9DS0RFUCBhbmQgS0FTQU4uIFRoZXJlZm9yZSwgS01TQU4gaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlcGxhY2VzIFJDVS1iYXNlZCBrZXkgaXRlcmF0aW9uIChpZWVlODAyMTFfaXRlcl9rZXlzX3JjdSkgd2l0aCBpZWVlODAyMTFfaXRlcl9rZXlzIGluIHJ0dzg5IENBTSBhbmQgV29XTEFOIHBhdGhzLiBpZWVlODAyMTFfaXRlcl9rZXlzIGVuZm9yY2VzIGEgd2lwaHkgbXV0ZXggYXNzZXJ0aW9uIChsb2NrZGVwX2Fzc2VydF93aXBoeSksIGNoYW5naW5nIGxvY2tpbmcgYW5kIHN5bmNocm9uaXphdGlvbiBhc3N1bXB0aW9ucyBkdXJpbmcga2V5IHJlc2V0IGFuZCBXb1dMQU4ga2V5IGNvbnN0cnVjdGlvbi91cGRhdGVzLiBUaGUgZHJpdmVyIGlzIGFjY2Vzc2libGUgdmlhIFVTQiBnYWRnZXQgZW11bGF0aW9uIGFuZCB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQyMTo0MDoyOS43NjUwODExODVaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU4NjgxNjk4MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDQ4OTY3MjYxMjJhNDljMmY2OTc0ZDcyZGZjYjZlYzMyZDQxNGU3OGNcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFR1ZSBTZXAgOCAyMTo0MDoyOCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NhbS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jYW0uY1xcbmluZGV4IDdjNjJlY2UxMzdkMDEuLjIyZjIxYTA0YTk2ZDIgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jYW0uY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY2FtLmNcXG5AQCAtNjA1LDkgKzYwNSw3IEBAIHZvaWQgcnR3ODlfY2FtX2RlaW5pdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHN0cnVjdCBydHc4OV92aWZfbGluayAqcnR3dmlmX2xpXFxuIFxcbiB2b2lkIHJ0dzg5X2NhbV9yZXNldF9rZXlzKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcXG4ge1xcbi1cXHRyY3VfcmVhZF9sb2NrKCk7XFxuLVxcdGllZWU4MDIxMV9pdGVyX2tleXNfcmN1KHJ0d2Rldi1cXHUwMDNlaHcsIE5VTEwsIHJ0dzg5X2NhbV9yZXNldF9rZXlfaXRlciwgcnR3ZGV2KTtcXG4tXFx0cmN1X3JlYWRfdW5sb2NrKCk7XFxuK1xcdGllZWU4MDIxMV9pdGVyX2tleXMocnR3ZGV2LVxcdTAwM2VodywgTlVMTCwgcnR3ODlfY2FtX3Jlc2V0X2tleV9pdGVyLCBydHdkZXYpO1xcbiB9XFxuIFxcbiBzdGF0aWMgaW50IHJ0dzg5X2NhbV9nZXRfYXZhaWxfYWRkcl9jYW0oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuY1xcbmluZGV4IDJkZmEyNGM1NGU3ZDcuLjBiZjM0NjkyYzdjZTMgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmNcXG5AQCAtNDczLDEwICs0NzMsOCBAQCBzdGF0aWMgdm9pZCBydHc4OV93b3dfY29uc3RydWN0X2tleV9pbmZvKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcXG4gXFx0c3RydWN0IGllZWU4MDIxMV92aWYgKndvd192aWYgPSBydHd2aWZfbGlua190b192aWYocnR3dmlmX2xpbmspO1xcbiBcXHRib29sIGVyciA9IGZhbHNlO1xcbiBcXG4tXFx0cmN1X3JlYWRfbG9jaygpO1xcbi1cXHRpZWVlODAyMTFfaXRlcl9rZXlzX3JjdShydHdkZXYtXFx1MDAzZWh3LCB3b3dfdmlmLFxcbi1cXHRcXHRcXHRcXHRydHc4OV93b3dfZ2V0X2tleV9pbmZvX2l0ZXIsIFxcdTAwMjZlcnIpO1xcbi1cXHRyY3VfcmVhZF91bmxvY2soKTtcXG4rXFx0aWVlZTgwMjExX2l0ZXJfa2V5cyhydHdkZXYtXFx1MDAzZWh3LCB3b3dfdmlmLFxcbitcXHRcXHRcXHQgICAgcnR3ODlfd293X2dldF9rZXlfaW5mb19pdGVyLCBcXHUwMDI2ZXJyKTtcXG4gXFxuIFxcdGlmIChlcnIpIHtcXG4gXFx0XFx0cnR3ODlfd293X2tleV9jbGVhcihydHdkZXYpO1xcbkBAIC02OTUsMTAgKzY5Myw4IEBAIHN0YXRpYyB2b2lkIHJ0dzg5X3dvd191cGRhdGVfa2V5X2luZm8oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBib29sIHJ4X3JlYWR5KVxcbiBcXHRzdHJ1Y3QgaWVlZTgwMjExX2Jzc19jb25mICpic3NfY29uZjtcXG4gXFx0c3RydWN0IGllZWU4MDIxMV9rZXlfY29uZiAqa2V5O1xcbiBcXG4tXFx0cmN1X3JlYWRfbG9jaygpO1xcbi1cXHRpZWVlODAyMTFfaXRlcl9rZXlzX3JjdShydHdkZXYtXFx1MDAzZWh3LCB3b3dfdmlmLFxcbi1cXHRcXHRcXHRcXHRydHc4OV93b3dfc2V0X2tleV9pbmZvX2l0ZXIsIFxcdTAwMjZkYXRhKTtcXG4tXFx0cmN1X3JlYWRfdW5sb2NrKCk7XFxuK1xcdGllZWU4MDIxMV9pdGVyX2tleXMocnR3ZGV2LVxcdTAwM2Vodywgd293X3ZpZixcXG4rXFx0XFx0XFx0ICAgIHJ0dzg5X3dvd19zZXRfa2V5X2luZm9faXRlciwgXFx1MDAyNmRhdGEpO1xcbiBcXG4gXFx0aWYgKGRhdGEuZXJyb3IpIHtcXG4gXFx0XFx0cnR3ODlfZGVidWcocnR3ZGV2LCBSVFc4OV9EQkdfV09XLCBcXFwiJXMgZXJyb3JcXFxcblxcXCIsIF9fZnVuY19fKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMjE6NDA6MzAuMzUyODcxODI1WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjo4MjQzNTM5NjExOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJSVFc4OVwiLFxuICAgIFwiUlRXODlfQ09SRVwiLFxuICAgIFwiUlRXODlfVVNCXCIsXG4gICAgXCJSVFc4OV84ODUyQVVcIixcbiAgICBcIk1BQzgwMjExXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicnR3ODlfY2FtX3Jlc2V0X2tleXNcIixcbiAgICBcInJ0dzg5X3dvd19jb25zdHJ1Y3Rfa2V5X2luZm9cIixcbiAgICBcInJ0dzg5X3dvd191cGRhdGVfa2V5X2luZm9cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCByZXBsYWNlcyBSQ1UtYmFzZWQga2V5IGl0ZXJhdGlvbiAoaWVlZTgwMjExX2l0ZXJfa2V5c19yY3UpIHdpdGggaWVlZTgwMjExX2l0ZXJfa2V5cyBpbiBydHc4OSBDQU0gYW5kIFdvV0xBTiBwYXRocy4gaWVlZTgwMjExX2l0ZXJfa2V5cyBlbmZvcmNlcyBhIHdpcGh5IG11dGV4IGFzc2VydGlvbiAobG9ja2RlcF9hc3NlcnRfd2lwaHkpLCBjaGFuZ2luZyBsb2NraW5nIGFuZCBzeW5jaHJvbml6YXRpb24gYXNzdW1wdGlvbnMgZHVyaW5nIGtleSByZXNldCBhbmQgV29XTEFOIGtleSBjb25zdHJ1Y3Rpb24vdXBkYXRlcy4gVGhlIGRyaXZlciBpcyBhY2Nlc3NpYmxlIHZpYSBVU0IgZ2FkZ2V0IGVtdWxhdGlvbiBhbmQgd29ydGggZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzc1xudG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5UaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLFxuYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy5cblxuLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURTpcbiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZFxuICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLlxuICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsXG4gIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy5cblxuLSBETyBOT1QgQkxJTkRMWSBUUlVTVCBcIk5PIEZVTkNUSU9OQUwgQ0hBTkdFXCIgKE5GQ0kpIE9SIFwiUkVGQUNUT1JJTkdcIiBDTEFJTVM6XG4gIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgXCJjbGVhbnVwc1wiLCBcInJlZmFjdG9yaW5nc1wiLCBvciBzdGF0ZVxuICBcIk5vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkXCIuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLlxuICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnRcbiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuXG4gIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuXG5cbi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6XG4gIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKixcbiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuXG4gIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXJcbiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOlxuXG4tIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6XG4gICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLlxuICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKVxuICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy5cbiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50c1xuICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuXG4gICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLlxuLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6XG4gICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczpcbiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmdcbiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy5cbiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4zLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzpcbi0gQ29yZSBTdWJzeXN0ZW1zOlxuICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSxcbiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuXG4tIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczpcbiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuXG4tIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczpcbiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuXG4tIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6XG4gICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6XG5cbi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOlxuICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1c1xuICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdFxuICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS5cbiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzIFwiZm9jdXNlZFwiLFxuICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuXG5cbi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOlxuICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHNcbiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuXG5cbi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOlxuICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrXG4gIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLlxuICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXJcbiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlnc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6XG4tIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4tIENoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuXG4tIFN0cmlwIGFueSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA0ODk2NzI2MTIyYTQ5YzJmNjk3NGQ3MmRmY2I2ZWMzMmQ0MTRlNzhjXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBTZXAgOCAyMTo0MDoyOCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY2FtLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NhbS5jXG5pbmRleCA3YzYyZWNlMTM3ZDAxLi4yMmYyMWEwNGE5NmQyIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jYW0uY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jYW0uY1xuQEAgLTYwNSw5ICs2MDUsNyBAQCB2b2lkIHJ0dzg5X2NhbV9kZWluaXQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBzdHJ1Y3QgcnR3ODlfdmlmX2xpbmsgKnJ0d3ZpZl9saVxuIFxuIHZvaWQgcnR3ODlfY2FtX3Jlc2V0X2tleXMoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuIHtcbi1cdHJjdV9yZWFkX2xvY2soKTtcbi1cdGllZWU4MDIxMV9pdGVyX2tleXNfcmN1KHJ0d2Rldi1cdTAwM2VodywgTlVMTCwgcnR3ODlfY2FtX3Jlc2V0X2tleV9pdGVyLCBydHdkZXYpO1xuLVx0cmN1X3JlYWRfdW5sb2NrKCk7XG4rXHRpZWVlODAyMTFfaXRlcl9rZXlzKHJ0d2Rldi1cdTAwM2VodywgTlVMTCwgcnR3ODlfY2FtX3Jlc2V0X2tleV9pdGVyLCBydHdkZXYpO1xuIH1cbiBcbiBzdGF0aWMgaW50IHJ0dzg5X2NhbV9nZXRfYXZhaWxfYWRkcl9jYW0oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jXG5pbmRleCAyZGZhMjRjNTRlN2Q3Li4wYmYzNDY5MmM3Y2UzIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuY1xuQEAgLTQ3MywxMCArNDczLDggQEAgc3RhdGljIHZvaWQgcnR3ODlfd293X2NvbnN0cnVjdF9rZXlfaW5mbyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXG4gXHRzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqd293X3ZpZiA9IHJ0d3ZpZl9saW5rX3RvX3ZpZihydHd2aWZfbGluayk7XG4gXHRib29sIGVyciA9IGZhbHNlO1xuIFxuLVx0cmN1X3JlYWRfbG9jaygpO1xuLVx0aWVlZTgwMjExX2l0ZXJfa2V5c19yY3UocnR3ZGV2LVx1MDAzZWh3LCB3b3dfdmlmLFxuLVx0XHRcdFx0cnR3ODlfd293X2dldF9rZXlfaW5mb19pdGVyLCBcdTAwMjZlcnIpO1xuLVx0cmN1X3JlYWRfdW5sb2NrKCk7XG4rXHRpZWVlODAyMTFfaXRlcl9rZXlzKHJ0d2Rldi1cdTAwM2Vodywgd293X3ZpZixcbitcdFx0XHQgICAgcnR3ODlfd293X2dldF9rZXlfaW5mb19pdGVyLCBcdTAwMjZlcnIpO1xuIFxuIFx0aWYgKGVycikge1xuIFx0XHRydHc4OV93b3dfa2V5X2NsZWFyKHJ0d2Rldik7XG5AQCAtNjk1LDEwICs2OTMsOCBAQCBzdGF0aWMgdm9pZCBydHc4OV93b3dfdXBkYXRlX2tleV9pbmZvKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgYm9vbCByeF9yZWFkeSlcbiBcdHN0cnVjdCBpZWVlODAyMTFfYnNzX2NvbmYgKmJzc19jb25mO1xuIFx0c3RydWN0IGllZWU4MDIxMV9rZXlfY29uZiAqa2V5O1xuIFxuLVx0cmN1X3JlYWRfbG9jaygpO1xuLVx0aWVlZTgwMjExX2l0ZXJfa2V5c19yY3UocnR3ZGV2LVx1MDAzZWh3LCB3b3dfdmlmLFxuLVx0XHRcdFx0cnR3ODlfd293X3NldF9rZXlfaW5mb19pdGVyLCBcdTAwMjZkYXRhKTtcbi1cdHJjdV9yZWFkX3VubG9jaygpO1xuK1x0aWVlZTgwMjExX2l0ZXJfa2V5cyhydHdkZXYtXHUwMDNlaHcsIHdvd192aWYsXG4rXHRcdFx0ICAgIHJ0dzg5X3dvd19zZXRfa2V5X2luZm9faXRlciwgXHUwMDI2ZGF0YSk7XG4gXG4gXHRpZiAoZGF0YS5lcnJvcikge1xuIFx0XHRydHc4OV9kZWJ1ZyhydHdkZXYsIFJUVzg5X0RCR19XT1csIFwiJXMgZXJyb3JcXG5cIiwgX19mdW5jX18pO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMjE6NDA6MzAuMzUyODc0MDQ1WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6Njc0NTI1MTYwNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFJUVzg5IFBhdGNoKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgcGF0Y2guIEkgc2VlIG1vZGlmaWNhdGlvbnMgdG91Y2hpbmcgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY2FtLmNgIGFuZCBgZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuY2AuIEltbWVkaWF0ZWx5LCBteSBicmFpbiBraWNrcyBpbnRvIGdlYXI6IHJ0dzg5Li4uIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeS4gSXMgdGhpcyB0aGUgUENJZSwgVVNCLCBvciBTRElPIFJlYWx0ZWsgd2lyZWxlc3MgZHJpdmVyPyBUaW1lIHRvIHF1aWNrbHkgY29uZmlybSBteSBhc3N1bXB0aW9ucy4gSSdsbCBwcm9iYWJseSBmaXJlIHVwIGBncmVwcGVyYCBvciBqdXN0IHF1aWNrbHkgcmVhZCB0aGUgcmVsZXZhbnQgZmlsZXMgYW5kIHRoZSBhc3NvY2lhdGVkIEtjb25maWcgdG8gZ2V0IHRoZSBjb21wbGV0ZSBwaWN0dXJlLiBOZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHNjb3BlIG9mIHRoZXNlIGNoYW5nZXMgYmVmb3JlIEkgY2FuIGFzc2VzcyB0aGUgaW1wYWN0LlxuXG5cbiIsIklucHV0VG9rZW5zIjozNjA2LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTAyLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMjE6NDA6MzcuMDk4MTI4MDMyWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk3ODA5OTQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBSVFc4OVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgT1IgQlNELTMtQ2xhdXNlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjI6bWVudWNvbmZpZyBSVFc4OVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIDgwMi4xMWF4IHdpcmVsZXNzIGNoaXBzIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc9MTE9aWYgUlRXODlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjEzOmNvbmZpZyBSVFc4OV9DT1JFXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE0LVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjE3OmNvbmZpZyBSVFc4OV9QQ0lcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTgtXFx0dHJpc3RhdGVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjIwOmNvbmZpZyBSVFc4OV9VU0JcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMjEtXFx0dHJpc3RhdGVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMjItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjIzOmNvbmZpZyBSVFc4OV84ODUxQlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0yNC1cXHR0cmlzdGF0ZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0yNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MjY6Y29uZmlnIFJUVzg5Xzg4NTJBXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTI3LVxcdHRyaXN0YXRlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTI4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoyOTpjb25maWcgUlRXODlfODg1MkJfQ09NTU9OXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTMwLVxcdHRyaXN0YXRlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTMxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzozMjpjb25maWcgUlRXODlfODg1MkJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMzMtXFx0dHJpc3RhdGVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMzQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjM1OmNvbmZpZyBSVFc4OV84ODUyQlRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMzYtXFx0dHJpc3RhdGVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMzctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjM4OmNvbmZpZyBSVFc4OV84ODUyQ1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0zOS1cXHR0cmlzdGF0ZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy00MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6NDE6Y29uZmlnIFJUVzg5Xzg5MjJBXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTQyLVxcdHRyaXN0YXRlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTQzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzo0NDpjb25maWcgUlRXODlfODkyMkRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctNDUtXFx0dHJpc3RhdGVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctNDYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjQ3OmNvbmZpZyBSVFc4OV84ODUxQkVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctNDgtXFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgODg1MUJFIFBDSSB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2KSBhZGFwdGVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTU3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzo1ODpjb25maWcgUlRXODlfODg1MUJVXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTU5LVxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIDg4NTFCVSBVU0Igd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNikgYWRhcHRlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy02OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6Njk6Y29uZmlnIFJUVzg5Xzg4NTJBRVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy03MC1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4ODUyQUUgUENJIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDYpIGFkYXB0ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctNzktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjgwOmNvbmZpZyBSVFc4OV84ODUyQVVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctODEtXFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgODg1MkFVIFVTQiB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2KSBhZGFwdGVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTkwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzo5MTpjb25maWcgUlRXODlfODg1MkJFXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTkyLVxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIDg4NTJCRSBQQ0kgd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNikgYWRhcHRlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xMDItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjEwMzpjb25maWcgUlRXODlfODg1MkJVXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTEwNC1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4ODUyQlUgVVNCIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDYpIGFkYXB0ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTE0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoxMTU6Y29uZmlnIFJUVzg5Xzg4NTJCVEVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTE2LVxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIDg4NTJCRS1WVCBQQ0kgd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNikgYWRhcHRlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xMjYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjEyNzpjb25maWcgUlRXODlfODg1MkNFXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTEyOC1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4ODUyQ0UgUENJIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDZFKSBhZGFwdGVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTEzNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTM4OmNvbmZpZyBSVFc4OV84ODUyQ1VcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTM5LVxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIDg4NTJDVSBVU0Igd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNkUpIGFkYXB0ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTQ4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoxNDk6Y29uZmlnIFJUVzg5Xzg5MjJBRVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xNTAtXFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgODkyMkFFLzg5MjJBRS1WUyBQQ0kgd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNykgYWRhcHRlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xNjItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjE2Mzpjb25maWcgUlRXODlfODkyMkFVXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE2NC1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4OTIyQVUgVVNCIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDcpIGFkYXB0ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTc0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoxNzU6Y29uZmlnIFJUVzg5Xzg5MjJERVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xNzYtXFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgODkyMkRFLzg5MjJERS1WUyBQQ0kgd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNykgYWRhcHRlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xODYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjE4Nzpjb25maWcgUlRXODlfREVCVUdcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTg4LVxcdGJvb2xcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTg5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoxOTA6Y29uZmlnIFJUVzg5X0RFQlVHTVNHXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE5MS1cXHRib29sIFxcXCJSZWFsdGVrIHJ0dzg5IGRlYnVnIG1lc3NhZ2Ugc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xOTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjE5OTpjb25maWcgUlRXODlfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0yMDAtXFx0Ym9vbCBcXFwiUmVhbHRlayBydHc4OSBkZWJ1Z2ZzIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMjA3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoyMDg6Y29uZmlnIFJUVzg5X0xFRFNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMjA5LVxcdGJvb2xcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0yMTQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjIxNTpjb25maWcgUlRXODlfTEVEU19NQ1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0yMTYtXFx0Ym9vbFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQyMTo0MDozNy4xOTU5NDIzNzFaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo1MzY4NjQ3Mzk4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlVTQiBSVFc4OSBEcml2ZXIgRXhwbG9yYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ3ZlIG5vdGljZWQgdGhlc2UgVVNCIHZlcnNpb25zIG9mIHJ0dzg5IGRyaXZlcnMg4oCTIFJUVzg5Xzg4NTFCVSwgODg1MkFVLCBldGMuIEludGVyZXN0aW5nLiBTaW5jZSB0aGV5J3JlIFVTQiwgdGhhdCBvcGVucyB1cCBhIHdob2xlIGF2ZW51ZSBmb3IgdGVzdGluZy4gSSBjb3VsZCBlbXVsYXRlIHRoZW0gdXNpbmcgVVNCIGdhZGdldCwgcmF3LWdhZGdldCwgb3IgZXZlbiBzeXprYWxsZXIncyBVU0IgZnV6emluZyBjYXBhYmlsaXRpZXMgKGxpa2Ugc3l6X3VzYl9jb25uZWN0KS4gVmlydHVhbCBVU0IgaXMgYW5vdGhlciBvcHRpb24uXG5cbk15IGltbWVkaWF0ZSBxdWVzdGlvbiBpczogZG9lcyBzeXprYWxsZXIgYWxyZWFkeSB0YXJnZXQgVVNCIFdpLUZpIGRyaXZlcnMsIGFuZCwgbW9yZSBzcGVjaWZpY2FsbHksIGlzIHRoaXMgUlRXODkgVVNCIGRyaXZlciBlbXVsYXRhYmxlIG9yIGV2ZW4gcmVhY2hhYmxlIHdpdGggdGhvc2UgdG9vbHM/IFRoYXQncyB3aGF0IEkgbmVlZCB0byBmaWd1cmUgb3V0IGZpcnN0LlxuXG5CZXlvbmQgdGhhdCwgSSBuZWVkIHRvIGRlbHZlIGludG8gdGhpcyBwYXRjaCBhbmQgdW5kZXJzdGFuZCB0aGUgY29kZSBpdHNlbGYuIEknbSB3b25kZXJpbmcgaWYgbWFjODAyMTEgb3IgbWFjODAyMTFfaHdzaW0gKG9yIHNvbWV0aGluZyBzaW1pbGFyKSBpcyBpbiB0aGUgbWl4LiBJIHJlYWxseSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCdzIGdvaW5nIG9uIHdpdGggYHJ0dzg5X2NhbV9yZXNldF9rZXlzYCBhbmQgdGhlIGBydHc4OV93b3dfKmAgZnVuY3Rpb25zLCBwYXJ0aWN1bGFybHkgYHJ0dzg5X3dvd19jb25zdHJ1Y3Rfa2V5X2luZm9gIGFuZCBgcnR3ODlfd293X3VwZGF0ZV9rZXlfaW5mb2AuIFRoYXQgbmFtaW5nIHN1Z2dlc3RzIHNvbWUga2luZCBvZiB3YWtlLW9uLXdpcmVsZXNzIG9yIHNlY3VyaXR5IGtleSBtYW5hZ2VtZW50LCBhbmQgdGhhdCBjb3VsZCBiZSBpbnRlcmVzdGluZyBmcm9tIGEgc2VjdXJpdHkgcGVyc3BlY3RpdmUuXG5cblRvIGdhaW4gYSBzb2xpZCB1bmRlcnN0YW5kaW5nLCBJJ2xsIHN0YXJ0IGJ5IGNoZWNraW5nIGFsbCB0aGUgY2FsbGVycyBvZiBgcnR3ODlfY2FtX3Jlc2V0X2tleXNgLCBgcnR3ODlfd293X2NvbnN0cnVjdF9rZXlfaW5mb2AsIGFuZCBgcnR3ODlfd293X3VwZGF0ZV9rZXlfaW5mb2AuIFRoaXMgc2hvdWxkIGdpdmUgbWUgYSBnb29kIGhhbmRsZSBvbiBob3cgdGhlc2UgZnVuY3Rpb25zIGFyZSB1c2VkIHdpdGhpbiB0aGUgZHJpdmVyJ3MgY29udGV4dC5cblxuXG4iLCJJbnB1dFRva2VucyI6NjU0OSwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQyMTo0MDo0Mi41NjQ2MDAwNDlaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTMwNTI2MDQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJ0dzg5X2NhbV9yZXNldF9rZXlzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODlcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jYW0uYz01OTc9dm9pZCBydHc4OV9jYW1fZGVpbml0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldiwgc3RydWN0IHJ0dzg5X3ZpZl9saW5rICpydHd2aWZfbGluaylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY2FtLmMtNjA1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY2FtLmM6NjA2OnZvaWQgcnR3ODlfY2FtX3Jlc2V0X2tleXMoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY2FtLmMtNjA3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY2FtLmg9NDczPXZvaWQgcnR3ODlfY2FtX2Jzc2lkX2NoYW5nZWQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY2FtLmgtNDc0LVxcdFxcdFxcdCAgICAgc3RydWN0IHJ0dzg5X3ZpZl9saW5rICpydHd2aWZfbGluayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jYW0uaDo0NzU6dm9pZCBydHc4OV9jYW1fcmVzZXRfa2V5cyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY2FtLmgtNDc2LWludCBydHc4OV9jYW1fYXR0YWNoX2xpbmtfc2VjX2NhbShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3Nlci5jPTM1Nz1zdGF0aWMgdm9pZCBzZXJfcmVzZXRfbWFjX2JpbmRpbmcoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9zZXIuYy0zNjAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9zZXIuYzozNjE6XFx0cnR3ODlfY2FtX3Jlc2V0X2tleXMocnR3ZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3Nlci5jLTM2Mi1cXHRydHc4OV9mb3JfZWFjaF9ydHd2aWYocnR3ZGV2LCBydHd2aWYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jPTEyNTY9c3RhdGljIGludCBydHc4OV93b3dfc3dhcF9mdyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGJvb2wgd293KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy0xMzE0LVxcdGlmICghaXNfY29ubilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jOjEzMTU6XFx0XFx0cnR3ODlfY2FtX3Jlc2V0X2tleXMocnR3ZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTEzMTYtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDIxOjQwOjQyLjY5NTEzMDc2N1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI4NTIyODIyNjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzIGNvZGUuIEhlcmUncyB3aGF0IEknbSB0aGlua2luZyByaWdodCBub3c6XG5cbioqSW52ZXN0aWdhdGluZyBXYWtlLW9uLVdMQU4gS2V5IE1hbmFnZW1lbnQqKlxuXG5BbHJpZ2h0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIFdha2Utb24tV0xBTiAoV29XTEFOKSBrZXkgaW5mb3JtYXRpb24gaXMgYmVpbmcgaGFuZGxlZCBpbiB0aGlzIGBydHc4OWAgZHJpdmVyLiBUbyBnZXQgYSBzb2xpZCBncmFzcCwgSSdtIGdvaW5nIHRvIHN0YXJ0IGJ5IHRyYWNpbmcgdGhlIGNhbGxlcnMgb2YgdGhvc2Uga2V5IGZ1bmN0aW9uczogYHJ0dzg5X3dvd19jb25zdHJ1Y3Rfa2V5X2luZm9gIGFuZCBgcnR3ODlfd293X3VwZGF0ZV9rZXlfaW5mb2AuIFVuZGVyc3RhbmRpbmcgd2hlcmUgdGhlc2UgYXJlIGJlaW5nIGludm9rZWQgd2lsbCBnaXZlIG1lIGEgZ29vZCBwaWN0dXJlIG9mIHRoZSBXb1dMQU4ga2V5IGluaXRpYWxpemF0aW9uIGFuZCB1cGRhdGUgZmxvdy4gS25vd2luZyB0aGUgY29udGV4dCBvZiB0aGVzZSBjYWxscyBpcyBjcml0aWNhbCB0byBlbnN1cmluZyB0aGUgc2VjdXJpdHkgYW5kIHByb3BlciBmdW5jdGlvbiBvZiBXb1dMQU4gd2l0aGluIHRoZSBkcml2ZXIuIExldCdzIHNlZSB3aGF0IHRoZSBjYWxsIGdyYXBocyByZXZlYWwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc4OTUsIk91dHB1dFRva2VucyI6NDcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQyMTo0MDo0NS41NDc0MTY2NjNaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI1OTYyNjg4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJ0dzg5X3dvd18oY29uc3RydWN0fHVwZGF0ZSlfa2V5X2luZm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jPTQ1Nz1zdGF0aWMgdm9pZCBydHc4OV93b3dfa2V5X2NsZWFyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtNDY3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmM6NDY4OnN0YXRpYyB2b2lkIHJ0dzg5X3dvd19jb25zdHJ1Y3Rfa2V5X2luZm8oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtNDY5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmM9NjQzPXN0YXRpYyBzdHJ1Y3QgaWVlZTgwMjExX2tleV9jb25mICpydHc4OV93b3dfZ3RrX3Jla2V5KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtNjgzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmM6Njg0OnN0YXRpYyB2b2lkIHJ0dzg5X3dvd191cGRhdGVfa2V5X2luZm8oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBib29sIHJ4X3JlYWR5KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtNjg1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmM9MTM5OT1zdGF0aWMgaW50IHJ0dzg5X3dvd19kaXNhYmxlX3RyeF9wcmUoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy0xNDI4LVxcdGlmICghcmV0KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmM6MTQyOTpcXHRcXHRydHc4OV93b3dfdXBkYXRlX2tleV9pbmZvKHJ0d2RldiwgZmFsc2UpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtMTQzMC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtMTQzMy1cXHRpZiAoIXJldClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jOjE0MzQ6XFx0XFx0cnR3ODlfd293X3VwZGF0ZV9rZXlfaW5mbyhydHdkZXYsIHRydWUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtMTQzNS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmM9MTU3NT1zdGF0aWMgaW50IHJ0dzg5X3dvd19md19zdGFydChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTE1OTQtXFx0XFx0cnR3ODlfd293X3BhdHRlcm5fd3JpdGUocnR3ZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jOjE1OTU6XFx0XFx0cnR3ODlfd293X2NvbnN0cnVjdF9rZXlfaW5mbyhydHdkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtMTU5Ni1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMjE6NDA6NDUuNjczMzg2MDkxWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjE5ODY3OTI0NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIG1hYzgwMjExIEtleSBJdGVyYXRpb24gQ2hhbmdlKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgY29kZSBjaGFuZ2UuIE15IGltbWVkaWF0ZSBxdWVzdGlvbiBpcyB3aHkgd2UndmUgc3dpdGNoZWQgZnJvbSB1c2luZyBgaWVlZTgwMjExX2l0ZXJfa2V5c2AgdG8gYGllZWU4MDIxMV9pdGVyX2tleXNfcmN1YC4gVGhpcyBsaWtlbHkgcG9pbnRzIHRvIGNvbmN1cnJlbmN5IGlzc3VlcyBvciBhIG5lZWQgZm9yIHNhZmVyIGtleSBhY2Nlc3Mgd2l0aGluIHRoZSBtYWM4MDIxMSBzdGFjay4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGZ1bmRhbWVudGFsIGRpZmZlcmVuY2UgaGVyZS5cblxuTXkgbmV4dCBzdGVwIGlzIHRvIGV4YW1pbmUgdGhlIGRlZmluaXRpb25zIG9mIGJvdGggZnVuY3Rpb25zLCBgaWVlZTgwMjExX2l0ZXJfa2V5c2AgYW5kIGBpZWVlODAyMTFfaXRlcl9rZXlzX3JjdWAsIHRvIGlkZW50aWZ5IHRoZWlyIHNwZWNpZmljIGZ1bmN0aW9uYWxpdGllcyBhbmQgdGhlaXIgdXNhZ2UgY29udGV4dC4gSSdsbCBiZSBsb29raW5nIGluIGBpbmNsdWRlL25ldC9tYWM4MDIxMS5oYCBhbmQgdGhlbiB0aGUgbWFjODAyMTEgc291cmNlIGRpcmVjdG9yeSB0byBnZXQgdGhlIGNvZGUuIFRoaXMgd2lsbCBjbGFyaWZ5IGhvdyB0aGUgUkNVIHZlcnNpb24gaGFuZGxlcyBrZXkgaXRlcmF0aW9ucyBkaWZmZXJlbnRseSBhbmQsIGhvcGVmdWxseSwgcmV2ZWFsIHRoZSB1bmRlcmx5aW5nIHJlYXNvbiBmb3IgdGhlIHN3aXRjaC4gSSdtIGV4cGVjdGluZyB0aGUgUkNVIHZlcnNpb24gdG8gcHJvdmlkZSBzb21lIGZvcm0gb2YgcmVhZC1jb3B5LXVwZGF0ZSBwcm90ZWN0aW9uIGZvciB0aGUga2V5IGRhdGEgc3RydWN0dXJlcywgYnV0IEkgbmVlZCB0byBjb25maXJtIHRoaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg4ODUsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQyMTo0MDo0Ny44NzIwNzAxNzdaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI2NjA3NzU5NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpZWVlODAyMTFfaXRlcl9rZXlzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImluY2x1ZGUvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbmV0L21hYzgwMjExLmg9Njg5MT11MzIgaWVlZTgwMjExX3R4cV9hcWxfcGVuZGluZyhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4tLVxcbmluY2x1ZGUvbmV0L21hYzgwMjExLmgtNjg5NC0vKipcXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oOjY4OTU6ICogaWVlZTgwMjExX2l0ZXJfa2V5cyAtIGl0ZXJhdGUga2V5cyBwcm9ncmFtbWVkIGludG8gdGhlIGRldmljZVxcbmluY2x1ZGUvbmV0L21hYzgwMjExLmgtNjg5Ni0gKiBAaHc6IHBvaW50ZXIgb2J0YWluZWQgZnJvbSBpZWVlODAyMTFfYWxsb2NfaHcoKVxcbi0tXFxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaC02OTExLSAqL1xcbmluY2x1ZGUvbmV0L21hYzgwMjExLmg6NjkxMjp2b2lkIGllZWU4MDIxMV9pdGVyX2tleXMoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaC02OTEzLVxcdFxcdFxcdCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxcbi0tXFxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaC02OTIxLS8qKlxcbmluY2x1ZGUvbmV0L21hYzgwMjExLmg6NjkyMjogKiBpZWVlODAyMTFfaXRlcl9rZXlzX3JjdSAtIGl0ZXJhdGUga2V5cyBwcm9ncmFtbWVkIGludG8gdGhlIGRldmljZVxcbmluY2x1ZGUvbmV0L21hYzgwMjExLmgtNjkyMy0gKiBAaHc6IHBvaW50ZXIgb2J0YWluZWQgZnJvbSBpZWVlODAyMTFfYWxsb2NfaHcoKVxcbi0tXFxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaC02OTM1LSAqL1xcbmluY2x1ZGUvbmV0L21hYzgwMjExLmg6NjkzNjp2b2lkIGllZWU4MDIxMV9pdGVyX2tleXNfcmN1KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbmluY2x1ZGUvbmV0L21hYzgwMjExLmgtNjkzNy1cXHRcXHRcXHQgICAgIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDIxOjQwOjQ4LjEzODE1NzI4NFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo1MDUzNDI2NDgyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEknbSBhbHJlYWR5IHByZXR0eSBmYW1pbGlhciB3aXRoIDgwMi4xMSBhbmQgd2lyZWxlc3MgbmV0d29ya2luZzpcblxuKipEaXZpbmcgaW50byBLZXkgSXRlcmF0aW9uKipcblxuUmlnaHQsIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlc2Uga2V5IGl0ZXJhdGlvbiBmdW5jdGlvbnMsIGBpZWVlODAyMTFfaXRlcl9rZXlzYCBhbmQgYGllZWU4MDIxMV9pdGVyX2tleXNfcmN1YCwgYXJlIGltcGxlbWVudGVkLiBDbGVhcmx5LCB0aGVyZSdzIGEgbmVlZCB0byBoYW5kbGUga2V5cyB3aXRoaW4gdGhlIDgwMi4xMSBjb250ZXh0LCBsaWtlbHkgcmVsYXRlZCB0byBzZWN1cml0eSBhbmQgZW5jcnlwdGlvbiwgYW5kIHRoZSBjaG9pY2Ugb2YgYHJjdWAgaW4gb25lIG9mIHRoZSBmdW5jdGlvbnMgc3VnZ2VzdHMgdGhhdCBjb25jdXJyZW5jeSBpcyBhIGNvcmUgY29uY2VybiDigJMgdGhleSdyZSBsaWtlbHkgZGVhbGluZyB3aXRoIGEgc2hhcmVkIHJlc291cmNlIHRoYXQgbXVsdGlwbGUgdGhyZWFkcyBvciBwcm9jZXNzZXMgbWlnaHQgYWNjZXNzLiBJJ2xsIG5lZWQgdG8gcGF5IGNsb3NlIGF0dGVudGlvbiB0byB0aGUgbG9jayBtYW5hZ2VtZW50IHN0cmF0ZWdpZXMgdXNlZCBpbiBlYWNoIGZ1bmN0aW9uLiBEb2VzIG9uZSB1c2UgbXV0ZXhlcywgc3BpbmxvY2tzLCBvciBzb21ldGhpbmcgbW9yZSBzb3BoaXN0aWNhdGVkPyBXaGF0IGFib3V0IFJDVSdzIHJlYWQtY29weS11cGRhdGUgc2VtYW50aWNzIGluIHRoZSBgX3JjdWAgdmVyc2lvbj8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIG51YW5jZXMgb2YgaG93IHRoZXNlIGtleXMgYXJlIHN0b3JlZCwgYWNjZXNzZWQsIGFuZCBtb2RpZmllZCwgZXNwZWNpYWxseSB3aGVuIGNvbmN1cnJlbnQgYWNjZXNzIGlzIGxpa2VseS4gSSdtIGhvcGluZyB0byBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIGhvdyB0aGV5IGd1YXJhbnRlZSBkYXRhIGludGVncml0eSBhbmQgdGhyZWFkIHNhZmV0eS4gUmVhZGluZyB0aGUgaW1wbGVtZW50YXRpb24gaXRzZWxmLCBhbG9uZyB3aXRoIHRoZSBkb2N1bWVudGF0aW9uLCB3aWxsIGdpdmUgbWUgdGhlIGluc2lnaHRzIEkgbmVlZCB0byBzZWUgaG93IHRoZXNlIGZ1bmN0aW9ucyBjb250cmlidXRlIHRvIHRoZSBvdmVyYWxsIDgwMi4xMSBzZWN1cml0eSBhcmNoaXRlY3R1cmUuIFVuZGVyc3RhbmRpbmcgdGhlc2UgdHdvIGltcGxlbWVudGF0aW9ucywgYW5kIGhvdyB0aGV5IHJlbGF0ZSwgaXMgZ29pbmcgdG8gYmUgY3J1Y2lhbCBmb3IgbXkgd29yay5cblxuXG4iLCJJbnB1dFRva2VucyI6OTczMSwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDIxOjQwOjUzLjE5MTU4NjYyNloiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDQ4MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L21hYzgwMjExL2tleS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEwMDAsXG4gIFwiTGluZUNvdW50XCI6IDgwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjEwMDA6XFx0c3RhdGljIHZvaWRcXG4xMDAxOlxcdGllZWU4MDIxMV9rZXlfaXRlcihzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4xMDAyOlxcdFxcdFxcdCAgIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXFxuMTAwMzpcXHRcXHRcXHQgICBzdHJ1Y3QgaWVlZTgwMjExX2tleSAqa2V5LFxcbjEwMDQ6XFx0XFx0XFx0ICAgdm9pZCAoKml0ZXIpKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbjEwMDU6XFx0XFx0XFx0XFx0XFx0c3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcXG4xMDA2OlxcdFxcdFxcdFxcdFxcdHN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGEsXFxuMTAwNzpcXHRcXHRcXHRcXHRcXHRzdHJ1Y3QgaWVlZTgwMjExX2tleV9jb25mICprZXksXFxuMTAwODpcXHRcXHRcXHRcXHRcXHR2b2lkICpkYXRhKSxcXG4xMDA5OlxcdFxcdFxcdCAgIHZvaWQgKml0ZXJfZGF0YSlcXG4xMDEwOlxcdHtcXG4xMDExOlxcdFxcdC8qIHNraXAga2V5cyBvZiBzdGF0aW9uIGluIHJlbW92YWwgcHJvY2VzcyAqL1xcbjEwMTI6XFx0XFx0aWYgKGtleS1cXHUwMDNlc3RhIFxcdTAwMjZcXHUwMDI2IGtleS1cXHUwMDNlc3RhLVxcdTAwM2VyZW1vdmVkKVxcbjEwMTM6XFx0XFx0XFx0cmV0dXJuO1xcbjEwMTQ6XFx0XFx0aWYgKCEoa2V5LVxcdTAwM2VmbGFncyBcXHUwMDI2IEtFWV9GTEFHX1VQTE9BREVEX1RPX0hBUkRXQVJFKSlcXG4xMDE1OlxcdFxcdFxcdHJldHVybjtcXG4xMDE2OlxcdFxcdGl0ZXIoaHcsIHZpZiwga2V5LVxcdTAwM2VzdGEgPyBcXHUwMDI2a2V5LVxcdTAwM2VzdGEtXFx1MDAzZXN0YSA6IE5VTEwsXFxuMTAxNzpcXHRcXHQgICAgIFxcdTAwMjZrZXktXFx1MDAzZWNvbmYsIGl0ZXJfZGF0YSk7XFxuMTAxODpcXHR9XFxuMTAxOTpcXHRcXG4xMDIwOlxcdHZvaWQgaWVlZTgwMjExX2l0ZXJfa2V5cyhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4xMDIxOlxcdFxcdFxcdFxcdCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxcbjEwMjI6XFx0XFx0XFx0XFx0IHZvaWQgKCppdGVyKShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4xMDIzOlxcdFxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXFxuMTAyNDpcXHRcXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqc3RhLFxcbjEwMjU6XFx0XFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IGllZWU4MDIxMV9rZXlfY29uZiAqa2V5LFxcbjEwMjY6XFx0XFx0XFx0XFx0XFx0ICAgICAgdm9pZCAqZGF0YSksXFxuMTAyNzpcXHRcXHRcXHRcXHQgdm9pZCAqaXRlcl9kYXRhKVxcbjEwMjg6XFx0e1xcbjEwMjk6XFx0XFx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBod190b19sb2NhbChodyk7XFxuMTAzMDpcXHRcXHRzdHJ1Y3QgaWVlZTgwMjExX2tleSAqa2V5LCAqdG1wO1xcbjEwMzE6XFx0XFx0c3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGE7XFxuMTAzMjpcXHRcXG4xMDMzOlxcdFxcdGxvY2tkZXBfYXNzZXJ0X3dpcGh5KGh3LVxcdTAwM2V3aXBoeSk7XFxuMTAzNDpcXHRcXG4xMDM1OlxcdFxcdGlmICh2aWYpIHtcXG4xMDM2OlxcdFxcdFxcdHNkYXRhID0gdmlmX3RvX3NkYXRhKHZpZik7XFxuMTAzNzpcXHRcXHRcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoa2V5LCB0bXAsIFxcdTAwMjZzZGF0YS1cXHUwMDNla2V5X2xpc3QsIGxpc3QpXFxuMTAzODpcXHRcXHRcXHRcXHRpZWVlODAyMTFfa2V5X2l0ZXIoaHcsIHZpZiwga2V5LCBpdGVyLCBpdGVyX2RhdGEpO1xcbjEwMzk6XFx0XFx0fSBlbHNlIHtcXG4xMDQwOlxcdFxcdFxcdGxpc3RfZm9yX2VhY2hfZW50cnkoc2RhdGEsIFxcdTAwMjZsb2NhbC1cXHUwMDNlaW50ZXJmYWNlcywgbGlzdClcXG4xMDQxOlxcdFxcdFxcdFxcdGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShrZXksIHRtcCxcXG4xMDQyOlxcdFxcdFxcdFxcdFxcdFxcdFxcdCBcXHUwMDI2c2RhdGEtXFx1MDAzZWtleV9saXN0LCBsaXN0KVxcbjEwNDM6XFx0XFx0XFx0XFx0XFx0aWVlZTgwMjExX2tleV9pdGVyKGh3LCBcXHUwMDI2c2RhdGEtXFx1MDAzZXZpZiwga2V5LFxcbjEwNDQ6XFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgaXRlciwgaXRlcl9kYXRhKTtcXG4xMDQ1OlxcdFxcdH1cXG4xMDQ2OlxcdH1cXG4xMDQ3OlxcdEVYUE9SVF9TWU1CT0woaWVlZTgwMjExX2l0ZXJfa2V5cyk7XFxuMTA0ODpcXHRcXG4xMDQ5OlxcdHN0YXRpYyB2b2lkXFxuMTA1MDpcXHRfaWVlZTgwMjExX2l0ZXJfa2V5c19yY3Uoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuMTA1MTpcXHRcXHRcXHRcXHQgc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuMTA1MjpcXHRcXHRcXHRcXHQgdm9pZCAoKml0ZXIpKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbjEwNTM6XFx0XFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcXG4xMDU0OlxcdFxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGEsXFxuMTA1NTpcXHRcXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgaWVlZTgwMjExX2tleV9jb25mICprZXksXFxuMTA1NjpcXHRcXHRcXHRcXHRcXHQgICAgICB2b2lkICpkYXRhKSxcXG4xMDU3OlxcdFxcdFxcdFxcdCB2b2lkICppdGVyX2RhdGEpXFxuMTA1ODpcXHR7XFxuMTA1OTpcXHRcXHRzdHJ1Y3QgaWVlZTgwMjExX2tleSAqa2V5O1xcbjEwNjA6XFx0XFxuMTA2MTpcXHRcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShrZXksIFxcdTAwMjZzZGF0YS1cXHUwMDNla2V5X2xpc3QsIGxpc3QpXFxuMTA2MjpcXHRcXHRcXHRpZWVlODAyMTFfa2V5X2l0ZXIoaHcsIFxcdTAwMjZzZGF0YS1cXHUwMDNldmlmLCBrZXksIGl0ZXIsIGl0ZXJfZGF0YSk7XFxuMTA2MzpcXHR9XFxuMTA2NDpcXHRcXG4xMDY1OlxcdHZvaWQgaWVlZTgwMjExX2l0ZXJfa2V5c19yY3Uoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuMTA2NjpcXHRcXHRcXHRcXHQgICAgIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXFxuMTA2NzpcXHRcXHRcXHRcXHQgICAgIHZvaWQgKCppdGVyKShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4xMDY4OlxcdFxcdFxcdFxcdFxcdFxcdCAgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcXG4xMDY5OlxcdFxcdFxcdFxcdFxcdFxcdCAgc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSxcXG4xMDcwOlxcdFxcdFxcdFxcdFxcdFxcdCAgc3RydWN0IGllZWU4MDIxMV9rZXlfY29uZiAqa2V5LFxcbjEwNzE6XFx0XFx0XFx0XFx0XFx0XFx0ICB2b2lkICpkYXRhKSxcXG4xMDcyOlxcdFxcdFxcdFxcdCAgICAgdm9pZCAqaXRlcl9kYXRhKVxcbjEwNzM6XFx0e1xcbjEwNzQ6XFx0XFx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBod190b19sb2NhbChodyk7XFxuMTA3NTpcXHRcXHRzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YTtcXG4xMDc2OlxcdFxcbjEwNzc6XFx0XFx0aWYgKHZpZikge1xcbjEwNzg6XFx0XFx0XFx0c2RhdGEgPSB2aWZfdG9fc2RhdGEodmlmKTtcXG4xMDc5OlxcdFxcdFxcdF9pZWVlODAyMTFfaXRlcl9rZXlzX3JjdShodywgc2RhdGEsIGl0ZXIsIGl0ZXJfZGF0YSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDIxOjQwOjUzLjE5MTY5Mjg4NloiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozNTc2MDcwNjI1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBgaWVlZTgwMjExX2l0ZXJfa2V5c2AgYW5kIHJ0dzg5IFJlYWNoYWJpbGl0eSoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gVGhlIGZpcnN0IHRoaW5nIHRoYXQganVtcHMgb3V0IGlzIHRoaXMgYGxvY2tkZXBfYXNzZXJ0X3dpcGh5KGh3LVx1MDAzZXdpcGh5KTtgIHdpdGhpbiBgaWVlZTgwMjExX2l0ZXJfa2V5c2AuIFRoYXQncyBhIHJlZCBmbGFnISBJdCBtZWFucyB0aGlzIGZ1bmN0aW9uICpkZW1hbmRzKiB0aGUgd2lwaHkgbG9jayBiZSBoZWxkLiBBbmQsIGFzIGEgc2Vhc29uZWQgcHJvLCBJIGtub3cgdGhhdCBpZiBgaWVlZTgwMjExX2l0ZXJfa2V5c19yY3VgICpkb2Vzbid0KiBoYXZlIHRoYXQgYXNzZXJ0aW9uLCB0aGVuIHdlJ3ZlIGdvdCBhIHBvdGVudGlhbCBsb2NrIG9yZGVyIGlzc3VlIGlmIHdlJ3JlIG5vdCBjYXJlZnVsLiBJZiBhbnkgY2FsbGVyIGZhaWxzIHRvIGhvbGQgdGhhdCBsb2NrLCBsb2NrZGVwIHdpbGwgYWJzb2x1dGVseSBzY3JlYW0gYXQgdXMuIEkgbmVlZCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4gb2YgdGhlIGxvY2sgYWNxdWlzaXRpb24gcGF0aCBmb3IgYW55dGhpbmcgY2FsbGluZyB0aGlzIGZ1bmN0aW9uLlxuXG5Ob3csIHNoaWZ0aW5nIGdlYXJzLCBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgYHJ0dzg5YCBlbnRlcnMgdGhlIHBpY3R1cmUgYW5kIGlmIGl0J3MgcmVhY2hhYmxlIGZvciB0ZXN0aW5nLiBDYW4gSSBzaW11bGF0ZSB0aGlzIGVhc2lseSBpbiBhIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2UgUUVNVSBvciBldmVuIEdDRT8gTXkgaW1tZWRpYXRlIG5leHQgc3RlcCBpcyB0byBhc3Nlc3MgdGhlIHByb2JpbmcgbWVjaGFuaXNtcy4gQ2FuIEkgdHJpZ2dlciBpdCB2aWEgVVNCIGVtdWxhdGlvbiDigJMgcmF3LWdhZGdldCBzdHlsZSBvciB3aXRoIHN5emthbGxlciBmdXp6aW5nPyBEb2VzIGl0IHJlbHkgb24gc3BlY2lmaWMgZmlybXdhcmUgZmlsZXMsIG9yIGlzIGFjdHVhbCBwaHlzaWNhbCBoYXJkd2FyZSByZXF1aXJlZD8gQSBxdWljayBzZWFyY2ggZm9yIHRoZSBVU0IgSUQgdGFibGUgd2l0aGluIHRoZSBgcnR3ODlgIGRyaXZlciBpcyBpbiBvcmRlci4gVGhhdCdsbCBnaXZlIG1lIGEgZ29vZCBoYW5kbGUgb24gaG93IHRoZSBoYXJkd2FyZSBpcyBkZXRlY3RlZCBhbmQgaW5pdGlhbGl6ZWQsIGFuZCB0aGVyZWZvcmUsIGhvdyBlYXN5IGl0IHdpbGwgYmUgdG8gZ2V0IG15IGhhbmRzIG9uIGl0IGZvciBhbmFseXNpcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGFjY2VzcyBwYXRoIHRvIGdldCBteSBoYW5kcyBvbiBpdCwgd2hldGhlciB2aWEgVVNCIGVtdWxhdGlvbiBvciBhIG1vcmUgcGh5c2ljYWwgYWNjZXNzIHJvdXRlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTY0MywiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxNiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDIxOjQwOjU2Ljc2Nzc2NjgxMVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAzMTI1MTM5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJ0dzg5X3VzYlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNjM4IGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlPTEwNj1ydHc4OV9wY2kteSA6PSBwY2kubyBwY2lfYmUub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGUtMTA3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGU6MTA4Om9iai0kKENPTkZJR19SVFc4OV9VU0IpICs9IHJ0dzg5X3VzYi5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZToxMDk6cnR3ODlfdXNiLXkgOj0gdXNiLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlLTExMC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oPTIwPXN0cnVjdCBydHc4OV9wY2lfaW5mbztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaDoyMTpzdHJ1Y3QgcnR3ODlfdXNiX2luZm87XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmgtMjItc3RydWN0IHJ0dzg5X21hY19nZW5fZGVmO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmg9NTg3Mj11bmlvbiBydHc4OV9idXNfaW5mbyB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmgtNTg3My1cXHRjb25zdCBzdHJ1Y3QgcnR3ODlfcGNpX2luZm8gKnBjaTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaDo1ODc0OlxcdGNvbnN0IHN0cnVjdCBydHc4OV91c2JfaW5mbyAqdXNiO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oLTU4NzUtfTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MWJ1LmMtMTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUxYnUuYzoxMTpzdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X3VzYl9pbmZvIHJ0dzg4NTFiX3VzYl9pbmZvID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MWJ1LmMtMTItXFx0LnVzYl9ob3N0X3JlcXVlc3RfMlxcdFxcdD0gUl9BWF9VU0JfSE9TVF9SRVFVRVNUXzIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTFidS5jPTYyPXN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBydHdfODg1MWJ1X2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MWJ1LmMtNjQtXFx0LmlkX3RhYmxlID0gcnR3Xzg4NTFidV9pZF90YWJsZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTFidS5jOjY1OlxcdC5wcm9iZSA9IHJ0dzg5X3VzYl9wcm9iZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTFidS5jOjY2OlxcdC5kaXNjb25uZWN0ID0gcnR3ODlfdXNiX2Rpc2Nvbm5lY3QsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUxYnUuYy02Ny19O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYXUuYy0xMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJhdS5jOjExOnN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfdXNiX2luZm8gcnR3ODg1MmFfdXNiX2luZm8gPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYXUuYy0xMi1cXHQudXNiX2hvc3RfcmVxdWVzdF8yXFx0XFx0PSBSX0FYX1VTQl9IT1NUX1JFUVVFU1RfMixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmF1LmM9NzY9c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIHJ0d184ODUyYXVfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYXUuYy03OC1cXHQuaWRfdGFibGUgPSBydHdfODg1MmF1X2lkX3RhYmxlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmF1LmM6Nzk6XFx0LnByb2JlID0gcnR3ODlfdXNiX3Byb2JlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmF1LmM6ODA6XFx0LmRpc2Nvbm5lY3QgPSBydHc4OV91c2JfZGlzY29ubmVjdCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJhdS5jLTgxLX07XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJidS5jLTEwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmJ1LmM6MTE6c3RhdGljIGNvbnN0IHN0cnVjdCBydHc4OV91c2JfaW5mbyBydHc4ODUyYl91c2JfaW5mbyA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJidS5jLTEyLVxcdC51c2JfaG9zdF9yZXF1ZXN0XzJcXHRcXHQ9IFJfQVhfVVNCX0hPU1RfUkVRVUVTVF8yLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYnUuYz03Nj1zdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgcnR3Xzg4NTJidV9kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJidS5jLTc4LVxcdC5pZF90YWJsZSA9IHJ0d184ODUyYnVfaWRfdGFibGUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYnUuYzo3OTpcXHQucHJvYmUgPSBydHc4OV91c2JfcHJvYmUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYnUuYzo4MDpcXHQuZGlzY29ubmVjdCA9IHJ0dzg5X3VzYl9kaXNjb25uZWN0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmJ1LmMtODEtfTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmN1LmMtMTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyY3UuYzoxMTpzdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X3VzYl9pbmZvIHJ0dzg4NTJjX3VzYl9pbmZvID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmN1LmMtMTItXFx0LnVzYl9ob3N0X3JlcXVlc3RfMlxcdFxcdD0gUl9BWF9VU0JfSE9TVF9SRVFVRVNUXzJfVjEsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJjdS5jPTEzNj1zdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgcnR3Xzg4NTJjdV9kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJjdS5jLTEzOC1cXHQuaWRfdGFibGUgPSBydHdfODg1MmN1X2lkX3RhYmxlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmN1LmM6MTM5OlxcdC5wcm9iZSA9IHJ0dzg5X3VzYl9wcm9iZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJjdS5jOjE0MDpcXHQuZGlzY29ubmVjdCA9IHJ0dzg5X3VzYl9kaXNjb25uZWN0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmN1LmMtMTQxLX07XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJhdS5jLTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyYXUuYzoxMDpzdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X3VzYl9pbmZvIHJ0dzg5MjJhX3VzYl9pbmZvID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmF1LmMtMTEtXFx0LnVzYl9ob3N0X3JlcXVlc3RfMlxcdFxcdD0gMCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmF1LmM9Nzc9c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIHJ0d184OTIyYXVfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyYXUuYy03OS1cXHQuaWRfdGFibGUgPSBydHdfODkyMmF1X2lkX3RhYmxlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmF1LmM6ODA6XFx0LnByb2JlID0gcnR3ODlfdXNiX3Byb2JlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmF1LmM6ODE6XFx0LmRpc2Nvbm5lY3QgPSBydHc4OV91c2JfZGlzY29ubmVjdCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJhdS5jLTgyLX07XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTExLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6MTI6c3RhdGljIHZvaWQgcnR3ODlfdXNiX3JlYWRfcG9ydF9jb21wbGV0ZShzdHJ1Y3QgdXJiICp1cmIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzoxNDpzdGF0aWMgdm9pZCBfX3J0dzg5X3VzYl92ZW5kb3JyZXEoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1MzIgYWRkcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTE1LVxcdFxcdFxcdFxcdCAgdm9pZCAqZGF0YSwgdTE2IGxlbiwgdTggcmVxdHlwZSwgYm9vbCB3YXJuKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTYte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6MTc6XFx0c3RydWN0IHJ0dzg5X3VzYiAqcnR3dXNiID0gcnR3ODlfdXNiX3ByaXYocnR3ZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTE4LVxcdHN0cnVjdCB1c2JfZGV2aWNlICp1ZGV2ID0gcnR3dXNiLVxcdTAwM2V1ZGV2O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy03MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjcyOnN0YXRpYyB2b2lkIHJ0dzg5X3VzYl92ZW5kb3JyZXEoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1MzIgYWRkcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTczLVxcdFxcdFxcdFxcdHZvaWQgKmRhdGEsIHUxNiBsZW4sIHU4IHJlcXR5cGUpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy03NC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo3NTpcXHRfX3J0dzg5X3VzYl92ZW5kb3JyZXEocnR3ZGV2LCBhZGRyLCBkYXRhLCBsZW4sIHJlcXR5cGUsIHRydWUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNzYtfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNzctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo3ODpzdGF0aWMgdTMyIHJ0dzg5X3VzYl9yZWFkX2NtYWMoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1MzIgYWRkcilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTc5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtODctXFx0Zm9yIChjb3VudCA9IDA7IDsgY291bnQrKykge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6ODg6XFx0XFx0cnR3ODlfdXNiX3ZlbmRvcnJlcShydHdkZXYsIGFkZHIzMiwgXFx1MDAyNmRhdGEsIDQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy04OS1cXHRcXHRcXHRcXHQgICAgUlRXODlfVVNCX1ZFTlFUX1JFQUQpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xMDctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzoxMDg6c3RhdGljIHU4IHJ0dzg5X3VzYl9vcHNfcmVhZDgoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1MzIgYWRkcilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTEwOS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTExMi1cXHRpZiAoQUNDRVNTX0NNQUMoYWRkcikpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzoxMTM6XFx0XFx0cmV0dXJuIHJ0dzg5X3VzYl9yZWFkX2NtYWMocnR3ZGV2LCBhZGRyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTExNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjExNTpcXHRydHc4OV91c2JfdmVuZG9ycmVxKHJ0d2RldiwgYWRkciwgXFx1MDAyNmRhdGEsIDEsIFJUVzg5X1VTQl9WRU5RVF9SRUFEKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTExNi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTE5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6MTIwOnN0YXRpYyB1MTYgcnR3ODlfdXNiX29wc19yZWFkMTYoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1MzIgYWRkcilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTEyMS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTEyNC1cXHRpZiAoQUNDRVNTX0NNQUMoYWRkcikpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzoxMjU6XFx0XFx0cmV0dXJuIHJ0dzg5X3VzYl9yZWFkX2NtYWMocnR3ZGV2LCBhZGRyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTEyNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjEyNzpcXHRydHc4OV91c2JfdmVuZG9ycmVxKHJ0d2RldiwgYWRkciwgXFx1MDAyNmRhdGEsIDIsIFJUVzg5X1VTQl9WRU5RVF9SRUFEKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTEyOC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTMxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6MTMyOnN0YXRpYyB1MzIgcnR3ODlfdXNiX29wc19yZWFkMzIoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1MzIgYWRkcilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTEzMy17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTEzNi1cXHRpZiAoQUNDRVNTX0NNQUMoYWRkcikpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzoxMzc6XFx0XFx0cmV0dXJuIHJ0dzg5X3VzYl9yZWFkX2NtYWMocnR3ZGV2LCBhZGRyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTEzOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjEzOTpcXHRydHc4OV91c2JfdmVuZG9ycmVxKHJ0d2RldiwgYWRkciwgXFx1MDAyNmRhdGEsIDQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xNDAtXFx0XFx0XFx0ICAgIFJUVzg5X1VTQl9WRU5RVF9SRUFEKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTQ0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6MTQ1OnN0YXRpYyB2b2lkIHJ0dzg5X3VzYl9vcHNfd3JpdGU4KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTMyIGFkZHIsIHU4IHZhbClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTE0Ni17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTE0OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjE0OTpcXHRydHc4OV91c2JfdmVuZG9ycmVxKHJ0d2RldiwgYWRkciwgXFx1MDAyNmRhdGEsIDEsIFJUVzg5X1VTQl9WRU5RVF9XUklURSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xNTAtfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTUxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6MTUyOnN0YXRpYyB2b2lkIHJ0dzg5X3VzYl9vcHNfd3JpdGUxNihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHUzMiBhZGRyLCB1MTYgdmFsKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTUzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTU1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6MTU2OlxcdHJ0dzg5X3VzYl92ZW5kb3JyZXEocnR3ZGV2LCBhZGRyLCBcXHUwMDI2ZGF0YSwgMiwgUlRXODlfVVNCX1ZFTlFUX1dSSVRFKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTE1Ny19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xNTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzoxNTk6c3RhdGljIHZvaWQgcnR3ODlfdXNiX29wc193cml0ZTMyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTMyIGFkZHIsIHUzMiB2YWwpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xNjAte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xNjItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzoxNjM6XFx0cnR3ODlfdXNiX3ZlbmRvcnJlcShydHdkZXYsIGFkZHIsIFxcdTAwMjZkYXRhLCA0LCBSVFc4OV9VU0JfVkVOUVRfV1JJVEUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTY0LX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTE2NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjE2NjpzdGF0aWMgdm9pZCBydHc4OV91c2Jfd3JpdGUzMl9xdWlldChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHUzMiBhZGRyLCB1MzIgdmFsKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTY3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTY5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6MTcwOlxcdF9fcnR3ODlfdXNiX3ZlbmRvcnJlcShydHdkZXYsIGFkZHIsIFxcdTAwMjZkYXRhLCA0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTcxLVxcdFxcdFxcdCAgICAgIFJUVzg5X1VTQl9WRU5RVF9XUklURSwgZmFsc2UpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYz0xNzQ9c3RhdGljIHUzMlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6MTc1OnJ0dzg5X3VzYl9vcHNfY2hlY2tfYW5kX3JlY2xhaW1fdHhfcmVzb3VyY2Uoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTc2LVxcdFxcdFxcdFxcdFxcdCAgICB1OCB0eGNoKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTc3LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjE3ODpcXHRzdHJ1Y3QgcnR3ODlfdXNiICpydHd1c2IgPSBydHc4OV91c2JfcHJpdihydHdkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTc5LVxcdGludCBpbmZsaWdodDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTkwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6MTkxOnN0YXRpYyB2b2lkIHJ0dzg5X3VzYl93cml0ZV9wb3J0X2NvbXBsZXRlKHN0cnVjdCB1cmIgKnVyYilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTE5Mi17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzoxOTM6XFx0c3RydWN0IHJ0dzg5X3VzYl90eF9jdHJsX2Jsb2NrICp0eGNiID0gdXJiLVxcdTAwM2Vjb250ZXh0O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTk0LVxcdHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiA9IHR4Y2ItXFx1MDAzZXJ0d2RldjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjE5NTpcXHRzdHJ1Y3QgcnR3ODlfdXNiICpydHd1c2IgPSBydHc4OV91c2JfcHJpdihydHdkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTk2LVxcdHN0cnVjdCBpZWVlODAyMTFfdHhfaW5mbyAqaW5mbztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMjU4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6MjU5OnN0YXRpYyBpbnQgcnR3ODlfdXNiX3dyaXRlX3BvcnQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCBjaF9kbWEsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0yNjAtXFx0XFx0XFx0XFx0dm9pZCAqZGF0YSwgaW50IGxlbiwgdm9pZCAqY29udGV4dClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTI2MS17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzoyNjI6XFx0c3RydWN0IHJ0dzg5X3VzYiAqcnR3dXNiID0gcnR3ODlfdXNiX3ByaXYocnR3ZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjI2MzpcXHRjb25zdCBzdHJ1Y3QgcnR3ODlfdXNiX2luZm8gKmluZm8gPSBydHd1c2ItXFx1MDAzZWluZm87XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0yNjQtXFx0c3RydWN0IHVzYl9kZXZpY2UgKnVzYmQgPSBydHd1c2ItXFx1MDAzZXVkZXY7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTI3OS1cXHR1c2JfZmlsbF9idWxrX3VyYih1cmIsIHVzYmQsIHBpcGUsIGRhdGEsIGxlbixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjI4MDpcXHRcXHRcXHQgIHJ0dzg5X3VzYl93cml0ZV9wb3J0X2NvbXBsZXRlLCBjb250ZXh0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTI4MS1cXHR1cmItXFx1MDAzZXRyYW5zZmVyX2ZsYWdzIHw9IFVSQl9aRVJPX1BBQ0tFVDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMjk5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6MzAwOnN0YXRpYyB2b2lkIHJ0dzg5X3VzYl90eF9mcmVlX3NrYihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IHR4Y2gsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0zMDEtXFx0XFx0XFx0XFx0ICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0zMDgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzozMDk6c3RhdGljIHZvaWQgcnR3ODlfdXNiX29wc190eF9raWNrX29mZihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IHR4Y2gpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0zMTAte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6MzExOlxcdHN0cnVjdCBydHc4OV91c2IgKnJ0d3VzYiA9IHJ0dzg5X3VzYl9wcml2KHJ0d2Rldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzozMTI6XFx0c3RydWN0IHJ0dzg5X3VzYl90eF9jdHJsX2Jsb2NrICp0eGNiO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMzEzLVxcdHN0cnVjdCBza19idWZmICpza2I7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTMyMi1cXHRcXHRpZiAoIXR4Y2IpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjMyMzpcXHRcXHRcXHRydHc4OV91c2JfdHhfZnJlZV9za2IocnR3ZGV2LCB0eGNoLCBza2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMzI0LVxcdFxcdFxcdGNvbnRpbnVlO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0zMzQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzozMzU6XFx0XFx0cmV0ID0gcnR3ODlfdXNiX3dyaXRlX3BvcnQocnR3ZGV2LCB0eGNoLCBza2ItXFx1MDAzZWRhdGEsIHNrYi1cXHUwMDNlbGVuLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMzM2LVxcdFxcdFxcdFxcdFxcdCAgIHR4Y2IpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0zNDUtXFx0XFx0XFx0a2ZyZWUodHhjYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzozNDY6XFx0XFx0XFx0cnR3ODlfdXNiX3R4X2ZyZWVfc2tiKHJ0d2RldiwgdHhjaCwgc2tiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTM0Ny1cXHRcXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTM1MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjM1MTpzdGF0aWMgaW50IHJ0dzg5X3VzYl90eF93cml0ZV9md2NtZChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0zNTItXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBydHc4OV9jb3JlX3R4X3JlcXVlc3QgKnR4X3JlcSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMzU0LVxcdHN0cnVjdCBydHc4OV90eF9kZXNjX2luZm8gKmRlc2NfaW5mbyA9IFxcdTAwMjZ0eF9yZXEtXFx1MDAzZWRlc2NfaW5mbztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjM1NTpcXHRzdHJ1Y3QgcnR3ODlfdXNiICpydHd1c2IgPSBydHc4OV91c2JfcHJpdihydHdkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMzU2LVxcdHN0cnVjdCBza19idWZmICpza2IgPSB0eF9yZXEtXFx1MDAzZXNrYjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMzkyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6MzkzOnN0YXRpYyBpbnQgcnR3ODlfdXNiX29wc190eF93cml0ZShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0zOTQtXFx0XFx0XFx0XFx0ICBzdHJ1Y3QgcnR3ODlfY29yZV90eF9yZXF1ZXN0ICp0eF9yZXEpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTM5Ni1cXHRzdHJ1Y3QgcnR3ODlfdHhfZGVzY19pbmZvICpkZXNjX2luZm8gPSBcXHUwMDI2dHhfcmVxLVxcdTAwM2VkZXNjX2luZm87XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzozOTc6XFx0c3RydWN0IHJ0dzg5X3VzYiAqcnR3dXNiID0gcnR3ODlfdXNiX3ByaXYocnR3ZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTM5OC1cXHRzdHJ1Y3QgcnR3ODlfdHhfc2tiX2RhdGEgKnNrYl9kYXRhO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy00MTItXFx0aWYgKGRlc2NfaW5mby1cXHUwMDNlY2hfZG1hID09IFJUVzg5X1RYQ0hfQ0gxMilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjQxMzpcXHRcXHRyZXR1cm4gcnR3ODlfdXNiX3R4X3dyaXRlX2Z3Y21kKHJ0d2RldiwgdHhfcmVxKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTQxNC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNDM1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6NDM2OnN0YXRpYyB2b2lkIHJ0dzg5X3VzYl9yeF9oYW5kbGVyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTQzNy17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo0Mzg6XFx0c3RydWN0IHJ0dzg5X3VzYiAqcnR3dXNiID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBydHc4OV91c2IsIHJ4X3dvcmspO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6NDM5OlxcdGNvbnN0IHN0cnVjdCBydHc4OV91c2JfaW5mbyAqaW5mbyA9IHJ0d3VzYi1cXHUwMDNlaW5mbztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTQ0MC1cXHRzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYgPSBydHd1c2ItXFx1MDAzZXJ0d2RldjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNTA2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6NTA3OnN0YXRpYyB2b2lkIHJ0dzg5X3VzYl9yeF9yZXN1Ym1pdChzdHJ1Y3QgcnR3ODlfdXNiICpydHd1c2IsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo1MDg6XFx0XFx0XFx0XFx0ICBzdHJ1Y3QgcnR3ODlfdXNiX3J4X2N0cmxfYmxvY2sgKnJ4Y2IsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy01MDktXFx0XFx0XFx0XFx0ICBnZnBfdCBnZnApXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTUyOS1cXHRcXHRcXHQgIHJ4Y2ItXFx1MDAzZXJ4X3NrYi1cXHUwMDNlZGF0YSwgUlRXODlfVVNCX1JFQ1ZCVUZfU1osXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo1MzA6XFx0XFx0XFx0ICBydHc4OV91c2JfcmVhZF9wb3J0X2NvbXBsZXRlLCByeGNiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTUzMS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNTUxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6NTUyOnN0YXRpYyB2b2lkIHJ0dzg5X3VzYl9yeF9yZXN1Ym1pdF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTU1My17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo1NTQ6XFx0c3RydWN0IHJ0dzg5X3VzYiAqcnR3dXNiID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBydHc4OV91c2IsIHJ4X3VyYl93b3JrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjU1NTpcXHRzdHJ1Y3QgcnR3ODlfdXNiX3J4X2N0cmxfYmxvY2sgKnJ4Y2I7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy01NTYtXFx0aW50IGk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTU2MS1cXHRcXHRpZiAoIXJ4Y2ItXFx1MDAzZXJ4X3NrYilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjU2MjpcXHRcXHRcXHRydHc4OV91c2JfcnhfcmVzdWJtaXQocnR3dXNiLCByeGNiLCBHRlBfQVRPTUlDKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTU2My1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTU2NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjU2NjpzdGF0aWMgdm9pZCBydHc4OV91c2JfcmVhZF9wb3J0X2NvbXBsZXRlKHN0cnVjdCB1cmIgKnVyYilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTU2Ny17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo1Njg6XFx0c3RydWN0IHJ0dzg5X3VzYl9yeF9jdHJsX2Jsb2NrICpyeGNiID0gdXJiLVxcdTAwM2Vjb250ZXh0O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNTY5LVxcdHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiA9IHJ4Y2ItXFx1MDAzZXJ0d2RldjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjU3MDpcXHRzdHJ1Y3QgcnR3ODlfdXNiICpydHd1c2IgPSBydHc4OV91c2JfcHJpdihydHdkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNTcxLVxcdHN0cnVjdCBza19idWZmICpza2IgPSByeGNiLVxcdTAwM2VyeF9za2I7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTU4NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjU4NTpcXHRcXHRydHc4OV91c2JfcnhfcmVzdWJtaXQocnR3dXNiLCByeGNiLCBHRlBfQVRPTUlDKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTU4Ni1cXHR9IGVsc2Uge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy02MTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo2MTc6c3RhdGljIHZvaWQgcnR3ODlfdXNiX2NhbmNlbF9yeF9idWZzKHN0cnVjdCBydHc4OV91c2IgKnJ0d3VzYilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTYxOC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo2MTk6XFx0c3RydWN0IHJ0dzg5X3VzYl9yeF9jdHJsX2Jsb2NrICpyeGNiO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNjIwLVxcdGludCBpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy02MjctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo2Mjg6c3RhdGljIHZvaWQgcnR3ODlfdXNiX2NhbmNlbF90eF9idWZzKHN0cnVjdCBydHc4OV91c2IgKnJ0d3VzYilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTYyOS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTYzMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjYzMzpzdGF0aWMgdm9pZCBydHc4OV91c2JfZnJlZV9yeF9idWZzKHN0cnVjdCBydHc4OV91c2IgKnJ0d3VzYilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTYzNC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo2MzU6XFx0c3RydWN0IHJ0dzg5X3VzYl9yeF9jdHJsX2Jsb2NrICpyeGNiO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNjM2LVxcdGludCBpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy02NDMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo2NDQ6c3RhdGljIGludCBydHc4OV91c2JfYWxsb2NfcnhfYnVmcyhzdHJ1Y3QgcnR3ODlfdXNiICpydHd1c2IpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy02NDUte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6NjQ2OlxcdHN0cnVjdCBydHc4OV91c2JfcnhfY3RybF9ibG9jayAqcnhjYjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTY0Ny1cXHRpbnQgaTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNjU0LVxcdFxcdGlmICghcnhjYi1cXHUwMDNlcnhfdXJiKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo2NTU6XFx0XFx0XFx0cnR3ODlfdXNiX2ZyZWVfcnhfYnVmcyhydHd1c2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNjU2LVxcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy02NjItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo2NjM6c3RhdGljIGludCBydHc4OV91c2JfaW5pdF9yeChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy02NjQte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6NjY1OlxcdHN0cnVjdCBydHc4OV91c2IgKnJ0d3VzYiA9IHJ0dzg5X3VzYl9wcml2KHJ0d2Rldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy02NjYtXFx0c3RydWN0IHNrX2J1ZmYgKnJ4X3NrYjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNjY4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6NjY5OlxcdHJ0d3VzYi1cXHUwMDNlcnh3cSA9IGFsbG9jX3dvcmtxdWV1ZShcXFwicnR3ODlfdXNiOiByeCB3cVxcXCIsIFdRX0JIIHwgV1FfUEVSQ1BVLCAwKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTY3MC1cXHRpZiAoIXJ0d3VzYi1cXHUwMDNlcnh3cSkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy02NzctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo2Nzg6XFx0SU5JVF9XT1JLKFxcdTAwMjZydHd1c2ItXFx1MDAzZXJ4X3dvcmssIHJ0dzg5X3VzYl9yeF9oYW5kbGVyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjY3OTpcXHRJTklUX1dPUksoXFx1MDAyNnJ0d3VzYi1cXHUwMDNlcnhfdXJiX3dvcmssIHJ0dzg5X3VzYl9yeF9yZXN1Ym1pdF93b3JrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTY4MC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNjg5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6NjkwOnN0YXRpYyB2b2lkIHJ0dzg5X3VzYl9kZWluaXRfcngoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNjkxLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjY5MjpcXHRzdHJ1Y3QgcnR3ODlfdXNiICpydHd1c2IgPSBydHc4OV91c2JfcHJpdihydHdkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNjkzLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy03MDAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo3MDE6c3RhdGljIHZvaWQgcnR3ODlfdXNiX3N0YXJ0X3J4KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTcwMi17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo3MDM6XFx0c3RydWN0IHJ0dzg5X3VzYiAqcnR3dXNiID0gcnR3ODlfdXNiX3ByaXYocnR3ZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTcwNC1cXHRpbnQgaTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNzA2LVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBSVFc4OV9VU0JfUlhDQl9OVU07IGkrKylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjcwNzpcXHRcXHRydHc4OV91c2JfcnhfcmVzdWJtaXQocnR3dXNiLCBcXHUwMDI2cnR3dXNiLVxcdTAwM2VyeF9jYltpXSwgR0ZQX0tFUk5FTCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy03MDgtfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNzA5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6NzEwOnN0YXRpYyB2b2lkIHJ0dzg5X3VzYl9pbml0X3R4KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTcxMS17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo3MTI6XFx0c3RydWN0IHJ0dzg5X3VzYiAqcnR3dXNiID0gcnR3ODlfdXNiX3ByaXYocnR3ZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTcxMy1cXHRpbnQgaTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNzIwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6NzIxOnN0YXRpYyB2b2lkIHJ0dzg5X3VzYl9kZWluaXRfdHgoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNzIyLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjcyMzpcXHRzdHJ1Y3QgcnR3ODlfdXNiICpydHd1c2IgPSBydHc4OV91c2JfcHJpdihydHdkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNzI0LVxcdGludCBpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy03MzMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo3MzQ6c3RhdGljIHZvaWQgcnR3ODlfdXNiX29wc19yZXNldChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy03MzUte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6NzM2OlxcdHN0cnVjdCBydHc4OV91c2IgKnJ0d3VzYiA9IHJ0dzg5X3VzYl9wcml2KHJ0d2Rldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy03MzctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo3Mzg6XFx0cnR3ODlfdXNiX2NhbmNlbF90eF9idWZzKHJ0d3VzYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy03MzktXFx0cnR3ODlfdHhfcnB0X3NrYnNfcHVyZ2UocnR3ZGV2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNzQxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6NzQyOnN0YXRpYyBpbnQgcnR3ODlfdXNiX29wc19zdGFydChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy03NDMte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy03NDYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo3NDc6c3RhdGljIHZvaWQgcnR3ODlfdXNiX29wc19zdG9wKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTc0OC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTc1MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjc1MjpzdGF0aWMgdm9pZCBydHc4OV91c2Jfb3BzX3BhdXNlKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgYm9vbCBwYXVzZSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTc1My17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTc1Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjc1NzpzdGF0aWMgdm9pZCBydHc4OV91c2Jfb3BzX3N3aXRjaF9tb2RlKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgYm9vbCBsb3dfcG93ZXIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy03NTgte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy03NjEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo3NjI6c3RhdGljIGludCBydHc4OV91c2Jfb3BzX2RlaW5pdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy03NjMte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy03NjYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo3Njc6c3RhdGljIGludCBydHc4OV91c2Jfb3BzX21hY19wcmVfaW5pdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy03Njgte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6NzY5OlxcdHN0cnVjdCBydHc4OV91c2IgKnJ0d3VzYiA9IHJ0dzg5X3VzYl9wcml2KHJ0d2Rldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo3NzA6XFx0Y29uc3Qgc3RydWN0IHJ0dzg5X3VzYl9pbmZvICppbmZvID0gcnR3dXNiLVxcdTAwM2VpbmZvO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNzcxLVxcdHUzMiB2YWwzMjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNzkzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6Nzk0OnN0YXRpYyBpbnQgcnR3ODlfdXNiX29wc19tYWNfcHJlX2RlaW5pdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy03OTUte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy03OTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo3OTk6c3RhdGljIHZvaWQgcnR3ODlfdXNiX3J4X2FnZ19jZmdfdjEoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtODAwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtODA4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6ODA5OnN0YXRpYyB2b2lkIHJ0dzg5X3VzYl9yeF9hZ2dfY2ZnX3YyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTgxMC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTgxOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjgyMDpzdGF0aWMgdm9pZCBydHc4OV91c2JfcnhfYWdnX2NmZ192MyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy04MjEte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy04MzAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo4MzE6c3RhdGljIHZvaWQgcnR3ODlfdXNiX3J4X2FnZ19jZmcoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtODMyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtODM2LVxcdGNhc2UgUlRMODg1MkI6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo4Mzc6XFx0XFx0cnR3ODlfdXNiX3J4X2FnZ19jZmdfdjEocnR3ZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTgzOC1cXHRcXHRicmVhaztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTgzOS1cXHRjYXNlIFJUTDg4NTJDOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6ODQwOlxcdFxcdHJ0dzg5X3VzYl9yeF9hZ2dfY2ZnX3YyKHJ0d2Rldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy04NDEtXFx0XFx0YnJlYWs7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy04NDItXFx0Y2FzZSBSVEw4OTIyQTpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjg0MzpcXHRcXHRydHc4OV91c2JfcnhfYWdnX2NmZ192MyhydHdkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtODQ0LVxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy04NTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo4NTE6c3RhdGljIGludCBydHc4OV91c2Jfb3BzX21hY19wb3N0X2luaXQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtODUyLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjg1MzpcXHRzdHJ1Y3QgcnR3ODlfdXNiICpydHd1c2IgPSBydHc4OV91c2JfcHJpdihydHdkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6ODU0OlxcdGNvbnN0IHN0cnVjdCBydHc4OV91c2JfaW5mbyAqaW5mbyA9IHJ0d3VzYi1cXHUwMDNlaW5mbztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTg1NS1cXHRlbnVtIHVzYl9kZXZpY2Vfc3BlZWQgc3BlZWQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTg4Mi1yeF9hZ2dfY2ZnOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6ODgzOlxcdHJ0dzg5X3VzYl9yeF9hZ2dfY2ZnKHJ0d2Rldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy04ODQtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTg4Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjg4ODpzdGF0aWMgdm9pZCBydHc4OV91c2Jfb3BzX3JlY2FsY19pbnRfbWl0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTg4OS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTg5Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjg5MzpzdGF0aWMgaW50IHJ0dzg5X3VzYl9vcHNfbWFjX2x2MV9yY3Z5KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTg5NC1cXHRcXHRcXHRcXHQgICAgICBlbnVtIHJ0dzg5X2x2MV9yY3Z5X3N0ZXAgc3RlcClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtOTMzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6OTM0OnN0YXRpYyB2b2lkIHJ0dzg5X3VzYl9vcHNfZHVtcF9lcnJfc3RhdHVzKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTkzNS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTkzOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjkzOTpzdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X2hjaV9vcHMgcnR3ODlfdXNiX29wcyA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjk0MDpcXHQudHhfd3JpdGVcXHQ9IHJ0dzg5X3VzYl9vcHNfdHhfd3JpdGUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo5NDE6XFx0LnR4X2tpY2tfb2ZmXFx0PSBydHc4OV91c2Jfb3BzX3R4X2tpY2tfb2ZmLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtOTQyLVxcdC5mbHVzaF9xdWV1ZXNcXHQ9IE5VTEwsIC8qIE5vdCBuZWVkZWQ/ICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo5NDM6XFx0LnJlc2V0XFx0XFx0PSBydHc4OV91c2Jfb3BzX3Jlc2V0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6OTQ0OlxcdC5zdGFydFxcdFxcdD0gcnR3ODlfdXNiX29wc19zdGFydCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjk0NTpcXHQuc3RvcFxcdFxcdD0gcnR3ODlfdXNiX29wc19zdG9wLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6OTQ2OlxcdC5wYXVzZVxcdFxcdD0gcnR3ODlfdXNiX29wc19wYXVzZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjk0NzpcXHQuc3dpdGNoX21vZGVcXHQ9IHJ0dzg5X3VzYl9vcHNfc3dpdGNoX21vZGUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo5NDg6XFx0LnJlY2FsY19pbnRfbWl0ID0gcnR3ODlfdXNiX29wc19yZWNhbGNfaW50X21pdCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTk0OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjk1MDpcXHQucmVhZDhcXHRcXHQ9IHJ0dzg5X3VzYl9vcHNfcmVhZDgsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo5NTE6XFx0LnJlYWQxNlxcdFxcdD0gcnR3ODlfdXNiX29wc19yZWFkMTYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo5NTI6XFx0LnJlYWQzMlxcdFxcdD0gcnR3ODlfdXNiX29wc19yZWFkMzIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo5NTM6XFx0LndyaXRlOFxcdFxcdD0gcnR3ODlfdXNiX29wc193cml0ZTgsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo5NTQ6XFx0LndyaXRlMTZcXHQ9IHJ0dzg5X3VzYl9vcHNfd3JpdGUxNixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjk1NTpcXHQud3JpdGUzMlxcdD0gcnR3ODlfdXNiX29wc193cml0ZTMyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtOTU2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6OTU3OlxcdC5tYWNfcHJlX2luaXRcXHQ9IHJ0dzg5X3VzYl9vcHNfbWFjX3ByZV9pbml0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6OTU4OlxcdC5tYWNfcHJlX2RlaW5pdFxcdD0gcnR3ODlfdXNiX29wc19tYWNfcHJlX2RlaW5pdCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjk1OTpcXHQubWFjX3Bvc3RfaW5pdFxcdD0gcnR3ODlfdXNiX29wc19tYWNfcG9zdF9pbml0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6OTYwOlxcdC5kZWluaXRcXHRcXHQ9IHJ0dzg5X3VzYl9vcHNfZGVpbml0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtOTYxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6OTYyOlxcdC5jaGVja19hbmRfcmVjbGFpbV90eF9yZXNvdXJjZSA9IHJ0dzg5X3VzYl9vcHNfY2hlY2tfYW5kX3JlY2xhaW1fdHhfcmVzb3VyY2UsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo5NjM6XFx0Lm1hY19sdjFfcmN2eVxcdD0gcnR3ODlfdXNiX29wc19tYWNfbHYxX3JjdnksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo5NjQ6XFx0LmR1bXBfZXJyX3N0YXR1cyA9IHJ0dzg5X3VzYl9vcHNfZHVtcF9lcnJfc3RhdHVzLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtOTY1LVxcdC5uYXBpX3BvbGxcXHQ9IE5VTEwsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTk4MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjk4MjpzdGF0aWMgaW50IHJ0dzg5X3VzYl9wYXJzZShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy05ODMtXFx0XFx0XFx0ICAgc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTk4Ni1cXHRzdHJ1Y3QgdXNiX2ludGVyZmFjZV9kZXNjcmlwdG9yICppbnRmX2Rlc2MgPSBcXHUwMDI2aG9zdF9pbnRlcmZhY2UtXFx1MDAzZWRlc2M7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo5ODc6XFx0c3RydWN0IHJ0dzg5X3VzYiAqcnR3dXNiID0gcnR3ODlfdXNiX3ByaXYocnR3ZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTk4OC1cXHRzdHJ1Y3QgdXNiX2VuZHBvaW50X2Rlc2NyaXB0b3IgKmVuZHBvaW50O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xMDQxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6MTA0MjpzdGF0aWMgaW50IHJ0dzg5X3VzYl9pbnRmX2luaXQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTA0My1cXHRcXHRcXHQgICAgICAgc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xMDQ0LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjEwNDU6XFx0c3RydWN0IHJ0dzg5X3VzYiAqcnR3dXNiID0gcnR3ODlfdXNiX3ByaXYocnR3ZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTEwNDYtXFx0aW50IHJldDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTA0OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjEwNTA6XFx0cmV0ID0gcnR3ODlfdXNiX3BhcnNlKHJ0d2RldiwgaW50Zik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xMDUxLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTEwNjYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzoxMDY3OnN0YXRpYyB2b2lkIHJ0dzg5X3VzYl9pbnRmX2RlaW5pdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xMDY4LVxcdFxcdFxcdFxcdCAgc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xMDY5LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjEwNzA6XFx0c3RydWN0IHJ0dzg5X3VzYiAqcnR3dXNiID0gcnR3ODlfdXNiX3ByaXYocnR3ZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTEwNzEtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTEwNzUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzoxMDc2OnN0YXRpYyBpbnQgcnR3ODlfdXNiX3N3aXRjaF9tb2RlX2F4KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTEwNzcte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xMDgzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6MTA4NDpcXHRwYWRfY3RybDIgPSBydHc4OV91c2Jfb3BzX3JlYWQzMihydHdkZXYsIFJfQVhfUEFEX0NUUkwyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTEwODUtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTExMDItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzoxMTAzOlxcdHJ0dzg5X3VzYl93cml0ZTMyX3F1aWV0KHJ0d2RldiwgUl9BWF9QQURfQ1RSTDIsIHBhZF9jdHJsMik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xMTA0LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xMTA3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6MTEwODpzdGF0aWMgaW50IHJ0dzg5X3VzYl9zd2l0Y2hfbW9kZV9iZShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xMTA5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTExMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjExMTI6XFx0cGFkX2N0cmwyID0gcnR3ODlfdXNiX29wc19yZWFkMzIocnR3ZGV2LCBSX0JFX1BBRF9DVFJMMik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xMTEzLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xMTMxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6MTEzMjpcXHRydHc4OV91c2Jfd3JpdGUzMl9xdWlldChydHdkZXYsIFJfQkVfUEFEX0NUUkwyLCBwYWRfY3RybDIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTEzMy1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTEzNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjExMzc6c3RhdGljIGludCBydHc4OV91c2Jfc3dpdGNoX21vZGUoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTEzOC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzoxMTM5OlxcdHN0cnVjdCBydHc4OV91c2IgKnJ0d3VzYiA9IHJ0dzg5X3VzYl9wcml2KHJ0d2Rldik7XFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDIxOjQwOjU2Ljg3MDg5NzE2WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjMxMTcyMDIyODIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aGlua2luZyBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBgcnR3ODlfdXNiX3Byb2JlYCBGdW5jdGlvbioqXG5cbk9rYXksIHNvIEknbSBzdGFydGluZyBieSBsb29raW5nIGF0IGBydHc4OV91c2JfcHJvYmVgLCB3aGljaCBpcyBpbiB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmNgIGZpbGUuIEdpdmVuIG15IGV4cGVydGlzZSwgSSBrbm93IHRoaXMgaXMgdGhlIGVudHJ5IHBvaW50IGZvciBwcm9iaW5nIHRoZSBSZWFsdGVrIHJ0dzg5IHdpcmVsZXNzIFVTQiBkZXZpY2UuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgaGFwcGVucyBkdXJpbmcgdGhlIGRldmljZSBpbml0aWFsaXphdGlvbiBhbmQgY29ubmVjdGlvbiBwcm9jZXNzLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byByZWFkIHRoZSBzdXJyb3VuZGluZyBjb2RlLCBlc3BlY2lhbGx5IGFyb3VuZCB0aGlzIGBwcm9iZWAgZnVuY3Rpb24uIEkgd2FudCB0byB0cmFjZSB0aGUgZmxvdyBvZiBleGVjdXRpb24gZnJvbSB0aGUgbW9tZW50IHRoZSBVU0IgZGV2aWNlIGlzIHBsdWdnZWQgaW4gdG8gc2VlIGhvdyBpdCBpcyBpZGVudGlmaWVkLCBpbml0aWFsaXNlZCBhbmQgcmVnaXN0ZXJlZCB3aXRoIHRoZSBzeXN0ZW0uIEknbSBnb2luZyB0byBsb29rIGZvciByZWxhdGVkIGZ1bmN0aW9ucyB0aGF0IGdldCBjYWxsZWQgd2l0aGluIGBwcm9iZWAgdG8gZ2V0IGEgc2Vuc2Ugb2YgdGhlIHByb2Nlc3MuIEknbGwgYmUgcGFydGljdWxhcmx5IGludGVyZXN0ZWQgaW4gaG93IHJlc291cmNlcyBhcmUgYWxsb2NhdGVkIGFuZCBpbml0aWFsaXNlZCwgYW5kIGFueSBlcnJvciBoYW5kbGluZyB0aGF0IGlzIGltcGxlbWVudGVkLiBJJ2xsIG5lZWQgdG8gcGF5IGNsb3NlIGF0dGVudGlvbiB0byB0aGUgZHJpdmVyJ3MgaW50ZXJhY3Rpb24gd2l0aCB0aGUgVVNCIGNvcmUsIGFuZCB3aGF0J3MgYmVpbmcgZG9uZSB0byBnZXQgdGhpcyBkZXZpY2Ugd29ya2luZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjcyMjAsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQyMTo0MDo1OS45ODgxMDE3NzJaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwNTcyMjMwOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJydHc4OV91c2JfcHJvYmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTFidS5jPTYyPXN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBydHdfODg1MWJ1X2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MWJ1LmMtNjQtXFx0LmlkX3RhYmxlID0gcnR3Xzg4NTFidV9pZF90YWJsZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTFidS5jOjY1OlxcdC5wcm9iZSA9IHJ0dzg5X3VzYl9wcm9iZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTFidS5jLTY2LVxcdC5kaXNjb25uZWN0ID0gcnR3ODlfdXNiX2Rpc2Nvbm5lY3QsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJhdS5jPTc2PXN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBydHdfODg1MmF1X2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmF1LmMtNzgtXFx0LmlkX3RhYmxlID0gcnR3Xzg4NTJhdV9pZF90YWJsZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJhdS5jOjc5OlxcdC5wcm9iZSA9IHJ0dzg5X3VzYl9wcm9iZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJhdS5jLTgwLVxcdC5kaXNjb25uZWN0ID0gcnR3ODlfdXNiX2Rpc2Nvbm5lY3QsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJidS5jPTc2PXN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBydHdfODg1MmJ1X2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmJ1LmMtNzgtXFx0LmlkX3RhYmxlID0gcnR3Xzg4NTJidV9pZF90YWJsZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJidS5jOjc5OlxcdC5wcm9iZSA9IHJ0dzg5X3VzYl9wcm9iZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJidS5jLTgwLVxcdC5kaXNjb25uZWN0ID0gcnR3ODlfdXNiX2Rpc2Nvbm5lY3QsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJjdS5jPTEzNj1zdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgcnR3Xzg4NTJjdV9kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJjdS5jLTEzOC1cXHQuaWRfdGFibGUgPSBydHdfODg1MmN1X2lkX3RhYmxlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmN1LmM6MTM5OlxcdC5wcm9iZSA9IHJ0dzg5X3VzYl9wcm9iZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJjdS5jLTE0MC1cXHQuZGlzY29ubmVjdCA9IHJ0dzg5X3VzYl9kaXNjb25uZWN0LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyYXUuYz03Nz1zdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgcnR3Xzg5MjJhdV9kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJhdS5jLTc5LVxcdC5pZF90YWJsZSA9IHJ0d184OTIyYXVfaWRfdGFibGUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyYXUuYzo4MDpcXHQucHJvYmUgPSBydHc4OV91c2JfcHJvYmUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyYXUuYy04MS1cXHQuZGlzY29ubmVjdCA9IHJ0dzg5X3VzYl9kaXNjb25uZWN0LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYz0xMjAxPV9fQVRUUklCVVRFX0dST1VQUyhydHc4OV91c2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTIwMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjEyMDM6aW50IHJ0dzg5X3VzYl9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTEyMDQtXFx0XFx0ICAgIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTI5NC19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzoxMjk1OkVYUE9SVF9TWU1CT0wocnR3ODlfdXNiX3Byb2JlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTEyOTYtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5oPTkyPXN0YXRpYyBpbmxpbmUgc3RydWN0IHJ0dzg5X3VzYiAqcnR3ODlfdXNiX3ByaXYoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuaC05Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5oOjk3OmludCBydHc4OV91c2JfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuaC05OC1cXHRcXHQgICAgY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgKmlkKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMjE6NDE6MDAuMDkzODI4NTlaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NjE3NTY5MzU2NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIHJ0dzg5IFVTQiBQcm9iZSoqXG5cbk9rYXksIHNvIEknbSBkaXZpbmcgaW50byB0aGlzIGBydHc4OWAgZHJpdmVyLCB3aGljaCBoYW5kbGVzIFJlYWx0ZWsgV2ktRmkgY2hpcHMgYWNyb3NzIGJvdGggUENJIGFuZCBVU0IgaW50ZXJmYWNlcy4gTXkgZ29hbCBpcyB0byB1bmRlcnN0YW5kIHRoZSBVU0IgcHJvYmluZyBwcm9jZXNzLCBzcGVjaWZpY2FsbHkgdGhlIGZ1bmN0aW9uIGBydHc4OV91c2JfcHJvYmVgLiAgTGV0IG1lIHJlZnJlc2ggbXkgbWVtb3J5OyBpdCBzdXBwb3J0cyBjaGlwcyBsaWtlIHRoZSA4ODUxQiwgODg1MkEsIGFuZCB0aG9zZSBvdGhlcnMuIEkgbmVlZCB0byBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIHdoYXQncyBoYXBwZW5pbmcgd2hlbiBhIFVTQiBkZXZpY2UgaXMgZGV0ZWN0ZWQuXG5cblJpZ2h0LCBzbyBJIG5lZWQgdG8gbmF2aWdhdGUgdG8gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmNgIGFuZCB0YWtlIGEgbG9vayBhcm91bmQgbGluZSAxMjAzLiBMZXQncyBzZWUgaG93IHRoZSBkcml2ZXIgaGFuZGxlcyBpbml0aWFsaXphdGlvbiBhbmQgYW55IHJlbGV2YW50IGhhcmR3YXJlIGlkZW50aWZpY2F0aW9uIGR1cmluZyB0aGUgVVNCIGRldmljZSBwcm9iZS4gSSdtIGV4cGVjdGluZyB0byBmaW5kIHRoZSBrZXkgc3RlcHMgaGVyZTogZGV2aWNlIHNldHVwLCByZXNvdXJjZSBhbGxvY2F0aW9uLCBhbmQsIG9mIGNvdXJzZSwgdGhlIGFjdHVhbCBXaS1GaSBjb250cm9sbGVyIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlLiBMZXQncyBkaWcgaW4gYW5kIGZpZ3VyZSBvdXQgdGhlIGV4YWN0IGZsb3cuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI4ODMwLCJPdXRwdXRUb2tlbnMiOjQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTE3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDIxOjQxOjA2LjI2OTUyNTIwNloiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTMxMTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxMjAwLFxuICBcIkxpbmVDb3VudFwiOiA4MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxMjAwOlxcdH07XFxuMTIwMTpcXHRfX0FUVFJJQlVURV9HUk9VUFMocnR3ODlfdXNiKTtcXG4xMjAyOlxcdFxcbjEyMDM6XFx0aW50IHJ0dzg5X3VzYl9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZixcXG4xMjA0OlxcdFxcdFxcdCAgICBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqaWQpXFxuMTIwNTpcXHR7XFxuMTIwNjpcXHRcXHRjb25zdCBzdHJ1Y3QgcnR3ODlfZHJpdmVyX2luZm8gKmluZm87XFxuMTIwNzpcXHRcXHRzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXY7XFxuMTIwODpcXHRcXHRzdHJ1Y3QgcnR3ODlfdXNiICpydHd1c2I7XFxuMTIwOTpcXHRcXHRpbnQgcmV0O1xcbjEyMTA6XFx0XFxuMTIxMTpcXHRcXHRpbmZvID0gKGNvbnN0IHN0cnVjdCBydHc4OV9kcml2ZXJfaW5mbyAqKWlkLVxcdTAwM2Vkcml2ZXJfaW5mbztcXG4xMjEyOlxcdFxcbjEyMTM6XFx0XFx0cnR3ZGV2ID0gcnR3ODlfYWxsb2NfaWVlZTgwMjExX2h3KFxcdTAwMjZpbnRmLVxcdTAwM2VkZXYsXFxuMTIxNDpcXHRcXHRcXHRcXHRcXHRcXHQgIHNpemVvZihzdHJ1Y3QgcnR3ODlfdXNiKSwgaW5mbyk7XFxuMTIxNTpcXHRcXHRpZiAoIXJ0d2Rldikge1xcbjEyMTY6XFx0XFx0XFx0ZGV2X2VycihcXHUwMDI2aW50Zi1cXHUwMDNlZGV2LCBcXFwiZmFpbGVkIHRvIGFsbG9jYXRlIGh3XFxcXG5cXFwiKTtcXG4xMjE3OlxcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbjEyMTg6XFx0XFx0fVxcbjEyMTk6XFx0XFxuMTIyMDpcXHRcXHRydHd1c2IgPSBydHc4OV91c2JfcHJpdihydHdkZXYpO1xcbjEyMjE6XFx0XFx0cnR3dXNiLVxcdTAwM2VydHdkZXYgPSBydHdkZXY7XFxuMTIyMjpcXHRcXHRydHd1c2ItXFx1MDAzZWluZm8gPSBpbmZvLVxcdTAwM2VidXMudXNiO1xcbjEyMjM6XFx0XFxuMTIyNDpcXHRcXHRydHdkZXYtXFx1MDAzZWh3LVxcdTAwM2V3aXBoeS1cXHUwMDNlZGV2Lmdyb3VwcyA9IHJ0dzg5X3VzYl9ncm91cHM7XFxuMTIyNTpcXHRcXG4xMjI2OlxcdFxcdHJ0d2Rldi1cXHUwMDNlaGNpLm9wcyA9IFxcdTAwMjZydHc4OV91c2Jfb3BzO1xcbjEyMjc6XFx0XFx0cnR3ZGV2LVxcdTAwM2VoY2kudHlwZSA9IFJUVzg5X0hDSV9UWVBFX1VTQjtcXG4xMjI4OlxcdFxcdHJ0d2Rldi1cXHUwMDNlaGNpLnR4X3JwdF9lbmFibGVkID0gdHJ1ZTtcXG4xMjI5OlxcdFxcbjEyMzA6XFx0XFx0cmV0ID0gcnR3ODlfdXNiX2ludGZfaW5pdChydHdkZXYsIGludGYpO1xcbjEyMzE6XFx0XFx0aWYgKHJldCkge1xcbjEyMzI6XFx0XFx0XFx0cnR3ODlfZXJyKHJ0d2RldiwgXFxcImZhaWxlZCB0byBpbml0aWFsaXNlIGludGY6ICVkXFxcXG5cXFwiLCByZXQpO1xcbjEyMzM6XFx0XFx0XFx0Z290byBlcnJfZnJlZV9odztcXG4xMjM0OlxcdFxcdH1cXG4xMjM1OlxcdFxcbjEyMzY6XFx0XFx0cmV0ID0gcnR3ODlfdXNiX3N3aXRjaF9tb2RlKHJ0d2Rldik7XFxuMTIzNzpcXHRcXHRpZiAocmV0KSB7XFxuMTIzODpcXHRcXHRcXHQvKiBOb3QgYSBmYWlsLCBidXQgd2UgZG8gbmVlZCB0byBza2lwIHJ0dzg5X2NvcmVfcmVnaXN0ZXIuICovXFxuMTIzOTpcXHRcXHRcXHRyZXQgPSAwO1xcbjEyNDA6XFx0XFx0XFx0Z290byBlcnJfaW50Zl9kZWluaXQ7XFxuMTI0MTpcXHRcXHR9XFxuMTI0MjpcXHRcXG4xMjQzOlxcdFxcdGlmIChydHd1c2ItXFx1MDAzZXVkZXYtXFx1MDAzZXNwZWVkID09IFVTQl9TUEVFRF9TVVBFUilcXG4xMjQ0OlxcdFxcdFxcdHJ0d2Rldi1cXHUwMDNlaGNpLmRsZV90eXBlID0gUlRXODlfSENJX0RMRV9UWVBFX1VTQjM7XFxuMTI0NTpcXHRcXHRlbHNlXFxuMTI0NjpcXHRcXHRcXHRydHdkZXYtXFx1MDAzZWhjaS5kbGVfdHlwZSA9IFJUVzg5X0hDSV9ETEVfVFlQRV9VU0IyO1xcbjEyNDc6XFx0XFxuMTI0ODpcXHRcXHRydHc4OV91c2JfaW5pdF90eChydHdkZXYpO1xcbjEyNDk6XFx0XFxuMTI1MDpcXHRcXHRyZXQgPSBydHc4OV91c2JfYWxsb2NfcnhfYnVmcyhydHd1c2IpO1xcbjEyNTE6XFx0XFx0aWYgKHJldClcXG4xMjUyOlxcdFxcdFxcdGdvdG8gZXJyX2ludGZfZGVpbml0O1xcbjEyNTM6XFx0XFxuMTI1NDpcXHRcXHRyZXQgPSBydHc4OV91c2JfaW5pdF9yeChydHdkZXYpO1xcbjEyNTU6XFx0XFx0aWYgKHJldClcXG4xMjU2OlxcdFxcdFxcdGdvdG8gZXJyX2ZyZWVfcnhfYnVmcztcXG4xMjU3OlxcdFxcbjEyNTg6XFx0XFx0cmV0ID0gcnR3ODlfY29yZV9pbml0KHJ0d2Rldik7XFxuMTI1OTpcXHRcXHRpZiAocmV0KSB7XFxuMTI2MDpcXHRcXHRcXHRydHc4OV9lcnIocnR3ZGV2LCBcXFwiZmFpbGVkIHRvIGluaXRpYWxpc2UgY29yZTogJWRcXFxcblxcXCIsIHJldCk7XFxuMTI2MTpcXHRcXHRcXHRnb3RvIGVycl9kZWluaXRfcng7XFxuMTI2MjpcXHRcXHR9XFxuMTI2MzpcXHRcXG4xMjY0OlxcdFxcdHJldCA9IHJ0dzg5X2NoaXBfaW5mb19zZXR1cChydHdkZXYpO1xcbjEyNjU6XFx0XFx0aWYgKHJldCkge1xcbjEyNjY6XFx0XFx0XFx0cnR3ODlfZXJyKHJ0d2RldiwgXFxcImZhaWxlZCB0byBzZXR1cCBjaGlwIGluZm9ybWF0aW9uXFxcXG5cXFwiKTtcXG4xMjY3OlxcdFxcdFxcdGdvdG8gZXJyX2NvcmVfZGVpbml0O1xcbjEyNjg6XFx0XFx0fVxcbjEyNjk6XFx0XFxuMTI3MDpcXHRcXHRyZXQgPSBydHc4OV9jb3JlX3JlZ2lzdGVyKHJ0d2Rldik7XFxuMTI3MTpcXHRcXHRpZiAocmV0KSB7XFxuMTI3MjpcXHRcXHRcXHRydHc4OV9lcnIocnR3ZGV2LCBcXFwiZmFpbGVkIHRvIHJlZ2lzdGVyIGNvcmVcXFxcblxcXCIpO1xcbjEyNzM6XFx0XFx0XFx0Z290byBlcnJfY29yZV9kZWluaXQ7XFxuMTI3NDpcXHRcXHR9XFxuMTI3NTpcXHRcXG4xMjc2OlxcdFxcdHJ0dzg5X3VzYl9zdGFydF9yeChydHdkZXYpO1xcbjEyNzc6XFx0XFxuMTI3ODpcXHRcXHRzZXRfYml0KFJUVzg5X0ZMQUdfUFJPQkVfRE9ORSwgcnR3ZGV2LVxcdTAwM2VmbGFncyk7XFxuMTI3OTpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMjE6NDE6MDYuMjY5NjgyMzI2WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjgwMDU0NTU3NTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgSW52ZXN0aWdhdGlvbiBpbnRvIHJ0dzg5J3MgaW50ZXJhY3Rpb24gd2l0aCBtYWM4MDIxMSBhbmQgc3l6a2FsbGVyKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbnRvIGhvdyB0aGUgYHJ0dzg5YCBkcml2ZXIgaW50ZXJmYWNlcyB3aXRoIHRoZSBgbWFjODAyMTFgIHN1YnN5c3RlbSBhbmQgcG90ZW50aWFsbHkgZ2V0cyBmdXp6ZWQgYnkgYHN5emthbGxlcmAuIEkga25vdyBgc3l6a2FsbGVyYCBoYXMgZGVzY3JpcHRpb25zIGZvciBVU0IgZW11bGF0aW9uIGFuZCB3aWZpIGZ1enppbmcsIGluY2x1ZGluZyBmdW5jdGlvbnMgbGlrZSBgc3l6X3VzYl9jb25uZWN0YCwgYG5sODAyMTFgLCBhbmQgY29tcG9uZW50cyBvZiBgbWFjODAyMTFgLCBzbyBJIHdhbnQgdG8gdW5kZXJzdGFuZCB0aGUgYXR0YWNrIHN1cmZhY2UuXG5cbk15IGluaXRpYWwgZm9jdXMgaXMgb24gaWRlbnRpZnlpbmcgbW9kaWZpZWQgZnVuY3Rpb25zIGFuZCB0cmFjaW5nIHRoZWlyIGV4ZWN1dGlvbiBwYXRocy4gSSd2ZSBwaW5wb2ludGVkIHRocmVlIGludGVyZXN0aW5nIGZ1bmN0aW9uczogYHJ0dzg5X2NhbV9yZXNldF9rZXlzYCwgYHJ0dzg5X3dvd19jb25zdHJ1Y3Rfa2V5X2luZm9gLCBhbmQgYHJ0dzg5X3dvd191cGRhdGVfa2V5X2luZm9gLlxuXG5MZXQncyBzdGFydCBieSBleGFtaW5pbmcgYHJ0dzg5X2NhbV9yZXNldF9rZXlzYCwgbG9jYXRlZCBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jYW0uY2AuIExvb2tpbmcgYXQgdGhlIGNvZGU6XG5cbmBgYGNcbnZvaWQgcnR3ODlfY2FtX3Jlc2V0X2tleXMoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxue1xuXHRpZWVlODAyMTFfaXRlcl9rZXlzKHJ0d2Rldi1cdTAwM2VodywgTlVMTCwgcnR3ODlfY2FtX3Jlc2V0X2tleV9pdGVyLCBydHdkZXYpO1xufVxuYGBgXG5cbk9rYXksIGl0IGl0ZXJhdGVzIHRocm91Z2gga2V5cyB1c2luZyBgaWVlZTgwMjExX2l0ZXJfa2V5c2AuIE5vdyBJIG5lZWQgdG8gZmlndXJlIG91dCAqd2hlcmUqIGBydHc4OV9jYW1fcmVzZXRfa2V5c2AgaXMgY2FsbGVkLlxuXG5JJ3ZlIGFscmVhZHkgZm91bmQgb25lIGNhbGwgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvc2VyLmNgLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBgc2VyX3Jlc2V0X21hY19iaW5kaW5nYCBmdW5jdGlvbi4gTXkgbmV4dCBzdGVwIGlzIHRvIHRyYWNlIHRoZSBjYWxsZXJzIG9mIGBzZXJfcmVzZXRfbWFjX2JpbmRpbmdgIHRvIHNlZSBob3cgaXQgY2FuIGJlIHRyaWdnZXJlZCwgYW5kIHBvdGVudGlhbGx5IGV4cGxvaXRlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzA1MjQsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMTQsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQyMTo0MToxNC4yNzUxNDA2NjNaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExNjAzMjQxOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzZXJfcmVzZXRfbWFjX2JpbmRpbmdcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3Nlci5jPTM0Mj1zdGF0aWMgdm9pZCBzZXJfZGVpbml0X2NhbShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHN0cnVjdCBydHc4OV92aWYgKnJ0d3ZpZilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvc2VyLmMtMzU2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvc2VyLmM6MzU3OnN0YXRpYyB2b2lkIHNlcl9yZXNldF9tYWNfYmluZGluZyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9zZXIuYy0zNTgte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9zZXIuYz02OTU9c3RhdGljIHZvaWQgc2VyX2wyX3Jlc2V0X3N0X3ByZV9oZGwoc3RydWN0IHJ0dzg5X3NlciAqc2VyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9zZXIuYy03MTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9zZXIuYzo3MjA6XFx0c2VyX3Jlc2V0X21hY19iaW5kaW5nKHJ0d2Rldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9zZXIuYy03MjEtXFx0cnR3ODlfY29yZV9zdG9wKHJ0d2Rldik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDIxOjQxOjE0LjM5MTE3ODE0MloiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyODc1MTM4OTk2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYW5hbHlzaXMgb2YgdGhlIHByb3ZpZGVkIGNvZGUgaW5zcGVjdGlvbiByZXF1ZXN0LCBmcm9tIG15IHBlcnNwZWN0aXZlIGFzIGEgc2Vhc29uZWQgcHJvZmVzc2lvbmFsOlxuXG4qKkRlZXAgRGl2ZSBpbnRvIFJlYWx0ZWsncyBydHc4OSBXaXJlbGVzcyBEcml2ZXIncyBXYWtlLW9uLVdpcmVsZXNzIChXb1cpIEZ1bmN0aW9uYWxpdHkqKlxuXG5Pa2F5LCBzbyB3ZSdyZSBsb29raW5nIGF0IHRoZSBSZWFsdGVrIGBydHc4OWAgd2lyZWxlc3MgZHJpdmVyLCBzcGVjaWZpY2FsbHkgaXRzIFdha2Utb24tV2lyZWxlc3MgKFdvVykgY2FwYWJpbGl0aWVzLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gemVybyBpbiBvbiB0aGUgYHJ0dzg5X3dvd19zd2FwX2Z3YCBmdW5jdGlvbiB3aXRoaW4gYHdvdy5jYC4gVGhpcyBzdHJvbmdseSBzdWdnZXN0cyB3ZSdyZSBkZWFsaW5nIHdpdGggYSBjcml0aWNhbCByb3V0aW5lIGZvciBzd2FwcGluZyBmaXJtd2FyZSBvciBtYW5hZ2luZyBmaXJtd2FyZSBzdGF0ZXMgcmVsYXRlZCB0byBXb1cgZnVuY3Rpb25hbGl0eS4gVGhlIGxpbmUgbnVtYmVyLCBgcnR3ODkvd293LmM6MTMxNWAsIGlzIG91ciBwcmltYXJ5IGZvY3VzLlxuXG5TaW5jZSB0aGUgZ29hbCBpcyBhbiBpbmZvcm1lZCBpbnNwZWN0aW9uLCBJJ2xsIG5lZWQgdG8gaW1tZWRpYXRlbHkgZXhwYW5kIG15IHNjb3BlLiBJJ20gZ29pbmcgdG8gbG9vayBhdCBsaW5lcyBhcm91bmQgdGhlIHByb3ZpZGVkIG51bWJlciwgdG8gZ2V0IHRoZSBiaWdnZXIgcGljdHVyZS4gSSdtIHRoaW5raW5nIEknbGwgc3RhcnQgYSBiaXQgYmVmb3JlLCBhcm91bmQgbGluZSAxMjU2LCB0byB1bmRlcnN0YW5kIHRoZSBzdXJyb3VuZGluZyBjb250ZXh0IGFuZCBmbG93IG9mIHRoZSBXb1cgZmlybXdhcmUgc3dhcCBwcm9jZXNzLiBUaGVuLCBJIHdpbGwgZGVmaW5pdGVseSBhbHNvIGFkZCBsaW5lcyAxNDI5IGFuZCAxNTk1IHRvIG15IGludmVzdGlnYXRpb24sIHRvIHRyeSB0byBjYXRjaCBhbnkgb2J2aW91cyBpbnRlcmFjdGlvbnMgb3Igb3RoZXIgY2FsbHMgaW4gdGhlIGFyZWEuIFRoaXMgYnJvYWRlciBjb250ZXh0IHdpbGwgYmUgY3J1Y2lhbCBmb3IgdW5kZXJzdGFuZGluZyBwb3RlbnRpYWwgaXNzdWVzLCBkZXBlbmRlbmNpZXMsIG9yIHRoZSBvdmVyYWxsIGFyY2hpdGVjdHVyZSBvZiBob3cgdGhlIGRyaXZlciBoYW5kbGVzIFdvVy1yZWxhdGVkIGZpcm13YXJlLiBLbm93aW5nIHRoZSBiaWdnZXIgcGljdHVyZSBpcyB0aGUgb25seSB3YXkgdG8gcGVyZm9ybSBhIHByb3BlciBhbmQgaW4tZGVwdGggY29kZSBpbnNwZWN0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMTYxMCwiT3V0cHV0VG9rZW5zIjo0NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDIxOjQxOjE3LjI2NjMyMDc4N1oiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTU0MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxMzAwLFxuICBcIkxpbmVDb3VudFwiOiA0MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxMzAwOlxcdFxcbjEzMDE6XFx0XFx0cmV0ID0gcnR3ODlfZndfaDJjX3JvbGVfbWFpbnRhaW4ocnR3ZGV2LCBydHd2aWZfbGluaywgcnR3c3RhX2xpbmssXFxuMTMwMjpcXHRcXHRcXHRcXHRcXHRcXHQgUlRXODlfUk9MRV9GV19SRVNUT1JFKTtcXG4xMzAzOlxcdFxcdGlmIChyZXQpIHtcXG4xMzA0OlxcdFxcdFxcdHJ0dzg5X3dhcm4ocnR3ZGV2LCBcXFwiZmFpbGVkIHRvIHNlbmQgaDJjIHJvbGUgbWFpbnRhaW5cXFxcblxcXCIpO1xcbjEzMDU6XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4xMzA2OlxcdFxcdH1cXG4xMzA3OlxcdFxcbjEzMDg6XFx0XFx0cmV0ID0gcnR3ODlfY2hpcF9oMmNfYXNzb2NfY21hY190YmwocnR3ZGV2LCBydHd2aWZfbGluaywgcnR3c3RhX2xpbmspO1xcbjEzMDk6XFx0XFx0aWYgKHJldCkge1xcbjEzMTA6XFx0XFx0XFx0cnR3ODlfd2FybihydHdkZXYsIFxcXCJmYWlsZWQgdG8gc2VuZCBoMmMgYXNzb2MgY21hYyB0YmxcXFxcblxcXCIpO1xcbjEzMTE6XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4xMzEyOlxcdFxcdH1cXG4xMzEzOlxcdFxcbjEzMTQ6XFx0XFx0aWYgKCFpc19jb25uKVxcbjEzMTU6XFx0XFx0XFx0cnR3ODlfY2FtX3Jlc2V0X2tleXMocnR3ZGV2KTtcXG4xMzE2OlxcdFxcbjEzMTc6XFx0XFx0cmV0ID0gcnR3ODlfZndfaDJjX2pvaW5faW5mbyhydHdkZXYsIHJ0d3ZpZl9saW5rLCBydHdzdGFfbGluaywgIWlzX2Nvbm4pO1xcbjEzMTg6XFx0XFx0aWYgKHJldCkge1xcbjEzMTk6XFx0XFx0XFx0cnR3ODlfd2FybihydHdkZXYsIFxcXCJmYWlsZWQgdG8gc2VuZCBoMmMgam9pbiBpbmZvXFxcXG5cXFwiKTtcXG4xMzIwOlxcdFxcdFxcdHJldHVybiByZXQ7XFxuMTMyMTpcXHRcXHR9XFxuMTMyMjpcXHRcXG4xMzIzOlxcdFxcdHJldCA9IHJ0dzg5X2Z3X2gyY19jYW0ocnR3ZGV2LCBydHd2aWZfbGluaywgcnR3c3RhX2xpbmssIE5VTEwsXFxuMTMyNDpcXHRcXHRcXHRcXHQgICAgICAgUlRXODlfUk9MRV9GV19SRVNUT1JFKTtcXG4xMzI1OlxcdFxcdGlmIChyZXQpIHtcXG4xMzI2OlxcdFxcdFxcdHJ0dzg5X3dhcm4ocnR3ZGV2LCBcXFwiZmFpbGVkIHRvIHNlbmQgaDJjIGNhbVxcXFxuXFxcIik7XFxuMTMyNzpcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbjEzMjg6XFx0XFx0fVxcbjEzMjk6XFx0XFxuMTMzMDpcXHRcXHRpZiAoaXNfY29ubikge1xcbjEzMzE6XFx0XFx0XFx0cmV0ID0gcnR3ODlfZndfaDJjX2dlbmVyYWxfcGt0KHJ0d2RldiwgcnR3dmlmX2xpbmssIHJ0d3N0YV9saW5rLVxcdTAwM2VtYWNfaWQpO1xcbjEzMzI6XFx0XFx0XFx0aWYgKHJldCkge1xcbjEzMzM6XFx0XFx0XFx0XFx0cnR3ODlfd2FybihydHdkZXYsIFxcXCJmYWlsZWQgdG8gc2VuZCBoMmMgZ2VuZXJhbCBwYWNrZXRcXFxcblxcXCIpO1xcbjEzMzQ6XFx0XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4xMzM1OlxcdFxcdFxcdH1cXG4xMzM2OlxcdFxcdFxcdHJ0dzg5X3BoeV9yYV9hc3NvYyhydHdkZXYsIHJ0d3N0YV9saW5rKTtcXG4xMzM3OlxcdFxcdFxcdHJ0dzg5X3BoeV9zZXRfYnNzX2NvbG9yKHJ0d2RldiwgcnR3dmlmX2xpbmspO1xcbjEzMzg6XFx0XFx0XFx0cnR3ODlfY2hpcF9jZmdfdHhwd3JfdWxfdGJfb2Zmc2V0KHJ0d2RldiwgcnR3dmlmX2xpbmspO1xcbjEzMzk6XFx0XFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQyMTo0MToxNy4yNjY0Nzg3MDdaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjI0OTk0Nzg3NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGFuYWx5c2lzIG9mIHRoaXMgY29kZSBzbmlwcGV0OlxuXG4qKkRlZXAgRGl2ZSBpbnRvIHJ0dzg5J3MgV29XTEFOIEltcGxlbWVudGF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYHdvdy5jYCBpbiB0aGUgcnR3ODkgZHJpdmVyLCBhbmQgaXQncyBpbW1lZGlhdGVseSBvYnZpb3VzIHRoaXMgaXMgYWxsIGFib3V0IFdha2Ugb24gV2lyZWxlc3MgTEFOIChXb1dMQU4pLiBOb3csIG15IGdvYWwgaXMgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGRyaXZlciBtYW5hZ2VzIGFuZCB1dGlsaXplcyBpdHMga2V5IGluZm9ybWF0aW9uIGZvciB0aGlzIGZ1bmN0aW9uYWxpdHkuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIHRyYWNlIHRoZSB1c2FnZSBvZiB0aGVzZSBrZXktcmVsYXRlZCBmdW5jdGlvbnM6IGBydHc4OV93b3dfY29uc3RydWN0X2tleV9pbmZvYCwgYHJ0dzg5X3dvd191cGRhdGVfa2V5X2luZm9gLCBhbmQgYHJ0dzg5X3dvd19zd2FwX2Z3YC4gVGhlIGNvcmUgb2YgYW55IGdvb2QgV29XTEFOIGltcGxlbWVudGF0aW9uIGhhcyBzZWN1cmUga2V5IGhhbmRsaW5nLCBzbyBJIG5lZWQgdG8ga25vdyB0aGUgZmxvdy4gVGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkgYW5kIHN0YXJ0IHNlYXJjaGluZyB3aXRoaW4gdGhlIHJ0dzg5IGNvZGViYXNlIGl0c2VsZi4gSSdsbCBuZWVkIHRvIHNlZSBob3cgdGhlc2UgZnVuY3Rpb25zIGFyZSBjb25zdHJ1Y3RlZCwgdXBkYXRlZCBhbmQgc3dhcHBlZCwgYW5kIHdoYXQgY29udGV4dHMgdGhleSBhcmUgY2FsbGVkIGZyb20uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMyODIzLCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODIsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQyMTo0MToxOS41MTY0MzAzMTNaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc5MzYwNDA5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJ0dzg5X3dvd19cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDc2NyBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jYW0uYz05Mjg9dm9pZCBydHc4OV9jYW1fZmlsbF9kY3RsX3NlY19jYW1faW5mb192MShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NhbS5jLTkzNC1cXHRcXHRydHc4OV9nZXRfYWRkcl9jYW1fb2YocnR3dmlmX2xpbmssIHJ0d3N0YV9saW5rKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NhbS5jOjkzNTpcXHRzdHJ1Y3QgcnR3ODlfd293X3BhcmFtICpydHdfd293ID0gXFx1MDAyNnJ0d2Rldi1cXHUwMDNld293O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY2FtLmMtOTM2LVxcdHU4ICpwdGtfdHhfaXYgPSBydHdfd293LVxcdTAwM2VrZXlfaW5mby5wdGtfdHhfaXY7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NhbS5jPTEwMDk9dm9pZCBydHc4OV9jYW1fZmlsbF9kY3RsX3NlY19jYW1faW5mb192MihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NhbS5jLTEwMTktXFx0Ym9vbCBpc19tbGQgPSBzdGEgPyBzdGEtXFx1MDAzZW1sbyA6IGllZWU4MDIxMV92aWZfaXNfbWxkKHZpZik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jYW0uYzoxMDIwOlxcdHN0cnVjdCBydHc4OV93b3dfcGFyYW0gKnJ0d193b3cgPSBcXHUwMDI2cnR3ZGV2LVxcdTAwM2V3b3c7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jYW0uYy0xMDIxLVxcdHU4ICpwdGtfdHhfaXYgPSBydHdfd293LVxcdTAwM2VrZXlfaW5mby5wdGtfdHhfaXY7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NhbS5jPTExNDI9dm9pZCBydHc4OV9jYW1fZmlsbF9kY3RsX3NlY19jYW1faW5mb192MyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NhbS5jLTExNTItXFx0Ym9vbCBpc19tbGQgPSBzdGEgPyBzdGEtXFx1MDAzZW1sbyA6IGllZWU4MDIxMV92aWZfaXNfbWxkKHZpZik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jYW0uYzoxMTUzOlxcdHN0cnVjdCBydHc4OV93b3dfcGFyYW0gKnJ0d193b3cgPSBcXHUwMDI2cnR3ZGV2LVxcdTAwM2V3b3c7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jYW0uYy0xMTU0LVxcdHU4ICpwdGtfdHhfaXYgPSBydHdfd293LVxcdTAwM2VrZXlfaW5mby5wdGtfdHhfaXY7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYz0xNDE0PXN0YXRpYyBpbnQgcnR3ODlfY29yZV90eF93cml0ZV9saW5rKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTE0MzQtXFx0cnR3ODlfdHJhZmZpY19zdGF0c19hY2N1KHJ0d2RldiwgcnR3dmlmLCBza2IsIHRydWUsIHRydWUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jOjE0MzU6XFx0cnR3ODlfd293X3BhcnNlX2FrbShydHdkZXYsIHNrYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtMTQzNi1cXHRydHc4OV9jb3JlX3R4X3VwZGF0ZV9kZXNjX2luZm8ocnR3ZGV2LCBcXHUwMDI2dHhfcmVxKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oPTMzPXN0cnVjdCBydHc4OV9yZWdkX2RhdGE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmg6MzQ6c3RydWN0IHJ0dzg5X3dvd19jYW1faW5mbztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaC0zNS1zdHJ1Y3QgcnR3ODlfYmJfd3JhcF9kYXRhO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmg9MTAyND1lbnVtIHJ0dzg5X3Jmc2lfY3RybF9iYW5kIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oLTEwMzEtLyogb25seSBtZ2QgZmVhdHVyZXMgY2FuIGJlIGFkZGVkIHRvIHRoZSBlbnVtICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmg6MTAzMjplbnVtIHJ0dzg5X3dvd19mbGFncyB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmgtMTAzMy1cXHRSVFc4OV9XT1dfRkxBR19FTl9NQUdJQ19QS1QsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaD00ODc3PXN0cnVjdCBydHc4OV9jaGlwX29wcyB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaC00OTkyLVxcdGludCAoKmgyY193b3dfY2FtX3VwZGF0ZSkoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oOjQ5OTM6XFx0XFx0XFx0XFx0ICBzdHJ1Y3QgcnR3ODlfd293X2NhbV9pbmZvICpjYW1faW5mbyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmgtNDk5NC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oPTczMDc9c3RydWN0IHJ0dzg5X3BoeV9jYWxjX2VmdXNlX2dhaW4ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmgtNzMxNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaDo3MzE3OnN0cnVjdCBydHc4OV93b3dfY2FtX2luZm8ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oLTczMTgtXFx0Ym9vbCByX3c7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaC03MzI5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oOjczMzA6c3RydWN0IHJ0dzg5X3dvd19rZXlfaW5mbyB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmgtNzMzMS1cXHR1OCBwdGtfdHhfaXZbOF07XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaC03MzM5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oOjczNDA6c3RydWN0IHJ0dzg5X3dvd19ndGtfaW5mbyB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmgtNzM0MS1cXHR1OCBrY2tbMzJdO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmgtNzM1MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaDo3MzUyOnN0cnVjdCBydHc4OV93b3dfYW9hY19yZXBvcnQge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oLTczNTMtXFx0dTggcnB0X3ZlcjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oLTczNzItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmg6NzM3MzpzdHJ1Y3QgcnR3ODlfd293X3BhcmFtIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaC03Mzc0LVxcdHN0cnVjdCBydHc4OV92aWZfbGluayAqcnR3dmlmX2xpbms7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmgtNzM3NS1cXHRERUNMQVJFX0JJVE1BUChmbGFncywgUlRXODlfV09XX0ZMQUdfTlVNKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaDo3Mzc2OlxcdHN0cnVjdCBydHc4OV93b3dfY2FtX2luZm8gcGF0dGVybnNbUlRXODlfTUFYX1BBVFRFUk5fTlVNXTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaDo3Mzc3OlxcdHN0cnVjdCBydHc4OV93b3dfa2V5X2luZm8ga2V5X2luZm87XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmg6NzM3ODpcXHRzdHJ1Y3QgcnR3ODlfd293X2d0a19pbmZvIGd0a19pbmZvO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oOjczNzk6XFx0c3RydWN0IHJ0dzg5X3dvd19hb2FjX3JlcG9ydCBhb2FjX3JwdDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaC03MzgwLVxcdHU4IHBhdHRlcm5fY250O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmg9NzU1MT1zdHJ1Y3QgcnR3ODlfZGV2IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oLTc2ODQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmg6NzY4NTpcXHRzdHJ1Y3QgcnR3ODlfd293X3BhcmFtIHdvdztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaC03Njg2LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jPTI4NzA9c3RhdGljIHN0cnVjdCBza19idWZmICpydHc4OV9lYXBvbF9nZXQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTI4NzQtXFx0XFx0XFx0XFx0ICAgICAweDhFLCAweDAxLCAweDAzLCAweDAwLCAweDVGLCAweDAyLCAweDAzfTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM6Mjg3NTpcXHR1OCBzZWNfaGRyX2xlbiA9IHJ0dzg5X3dvd19nZXRfc2VjX2hkcl9sZW4ocnR3ZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM6Mjg3NjpcXHRzdHJ1Y3QgcnR3ODlfd293X3BhcmFtICpydHdfd293ID0gXFx1MDAyNnJ0d2Rldi1cXHUwMDNld293O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0yODc3LVxcdHN0cnVjdCBydHc4OV9lYXBvbF8yX29mXzIgKmVhcG9sX3BrdDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYz0yOTIwPXN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqcnR3ODlfc2FfcXVlcnlfZ2V0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0yOTIyLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM6MjkyMzpcXHR1OCBzZWNfaGRyX2xlbiA9IHJ0dzg5X3dvd19nZXRfc2VjX2hkcl9sZW4ocnR3ZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMjkyNC1cXHRzdHJ1Y3QgaWVlZTgwMjExX2Jzc19jb25mICpic3NfY29uZjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYz0yOTU3PXN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqcnR3ODlfYXJwX3Jlc3BvbnNlX2dldChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMjk2MS1cXHRzdHJ1Y3QgcnR3ODlfdmlmICpydHd2aWYgPSBydHd2aWZfbGluay1cXHUwMDNlcnR3dmlmO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYzoyOTYyOlxcdHU4IHNlY19oZHJfbGVuID0gcnR3ODlfd293X2dldF9zZWNfaGRyX2xlbihydHdkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYzoyOTYzOlxcdHN0cnVjdCBydHc4OV93b3dfcGFyYW0gKnJ0d193b3cgPSBcXHUwMDI2cnR3ZGV2LVxcdTAwM2V3b3c7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTI5NjQtXFx0c3RydWN0IGllZWU4MDIxMV9oZHJfM2FkZHIgKmhkcjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYz03NzE5PXZvaWQgcnR3ODlfaHdfc2Nhbl9jYWxjX3JlcV9zc2lkKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy03NzI0LVxcdHN0cnVjdCBjZmc4MDIxMV9zY2FuX3JlcXVlc3QgKnJlcSA9IHJ0d3ZpZi1cXHUwMDNlc2Nhbl9yZXE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jOjc3MjU6XFx0c3RydWN0IHJ0dzg5X3dvd19wYXJhbSAqcnR3X3dvdyA9IFxcdTAwMjZydHdkZXYtXFx1MDAzZXdvdztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtNzcyNi1cXHRzdHJ1Y3QgY2ZnODAyMTFfc2NoZWRfc2Nhbl9yZXF1ZXN0ICpuZF9jb25maWc7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM9Nzc0Nz1pbnQgcnR3ODlfZndfaDJjX3NjYW5fb2ZmbG9hZF9iZShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtNzc2NS1cXHR1OCBvcGNoX3NpemUgPSBzaXplb2YoKm9wY2gpICogb3B0aW9uLVxcdTAwM2VudW1fb3BjaDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM6Nzc2NjpcXHRzdHJ1Y3QgcnR3ODlfd293X3BhcmFtICpydHdfd293ID0gXFx1MDAyNnJ0d2Rldi1cXHUwMDNld293O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy03NzY3LVxcdHN0cnVjdCBjZmc4MDIxMV9zY2hlZF9zY2FuX3JlcXVlc3QgKm5kX2NvbmZpZztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYz05NDIwPWludCBydHc4OV9od19zY2FuX2FwcGVuZF93aWxkY2FyZF9wcm9iZV9yZXEoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTk0MjktXFx0c3RydWN0IGllZWU4MDIxMV9zY2FuX2llcyAqaWVzID0gcnR3dmlmLVxcdTAwM2VzY2FuX2llcztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM6OTQzMDpcXHRzdHJ1Y3QgcnR3ODlfd293X3BhcmFtICpydHdfd293ID0gXFx1MDAyNnJ0d2Rldi1cXHUwMDNld293O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy05NDMxLVxcdHN0cnVjdCBjZmc4MDIxMV9zY2hlZF9zY2FuX3JlcXVlc3QgKm5kX2NvbmZpZztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYz05NTc5PXN0YXRpYyB2b2lkIHJ0dzg5X3Bub19zY2FuX2FkZF9jaGFuX2F4KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy05NTgyLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM6OTU4MzpcXHRzdHJ1Y3QgcnR3ODlfd293X3BhcmFtICpydHdfd293ID0gXFx1MDAyNnJ0d2Rldi1cXHUwMDNld293O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy05NTg0LVxcdHN0cnVjdCBydHc4OV9wa3RvZmxkX2luZm8gKmluZm87XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM9OTcyND1zdGF0aWMgdm9pZCBydHc4OV9wbm9fc2Nhbl9hZGRfY2hhbl9iZShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGludCBjaGFuX3R5cGUsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtOTcyNy17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jOjk3Mjg6XFx0c3RydWN0IHJ0dzg5X3dvd19wYXJhbSAqcnR3X3dvdyA9IFxcdTAwMjZydHdkZXYtXFx1MDAzZXdvdztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtOTcyOS1cXHRzdHJ1Y3QgcnR3ODlfcGt0b2ZsZF9pbmZvICppbmZvO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jPTk4Mjk9aW50IHJ0dzg5X3Bub19zY2FuX2FkZF9jaGFuX2xpc3RfYXgoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTk4MzEte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYzo5ODMyOlxcdHN0cnVjdCBydHc4OV93b3dfcGFyYW0gKnJ0d193b3cgPSBcXHUwMDI2cnR3ZGV2LVxcdTAwM2V3b3c7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTk4MzMtXFx0c3RydWN0IGNmZzgwMjExX3NjaGVkX3NjYW5fcmVxdWVzdCAqbmRfY29uZmlnID0gcnR3X3dvdy1cXHUwMDNlbmRfY29uZmlnO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jPTEwMDQ3PWludCBydHc4OV9wbm9fc2Nhbl9hZGRfY2hhbl9saXN0X2JlKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0xMDA0OS17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jOjEwMDUwOlxcdHN0cnVjdCBydHc4OV93b3dfcGFyYW0gKnJ0d193b3cgPSBcXHUwMDI2cnR3ZGV2LVxcdTAwM2V3b3c7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTEwMDUxLVxcdHN0cnVjdCBjZmc4MDIxMV9zY2hlZF9zY2FuX3JlcXVlc3QgKm5kX2NvbmZpZyA9IHJ0d193b3ctXFx1MDAzZW5kX2NvbmZpZztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYz0xMDc4ND1pbnQgcnR3ODlfZndfaDJjX2Rpc2Nvbm5lY3RfZGV0ZWN0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0xMDc4Ni17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jOjEwNzg3OlxcdHN0cnVjdCBydHc4OV93b3dfcGFyYW0gKnJ0d193b3cgPSBcXHUwMDI2cnR3ZGV2LVxcdTAwM2V3b3c7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTEwNzg4LVxcdHN0cnVjdCBza19idWZmICpza2I7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM9MTA4Mjg9aW50IHJ0dzg5X2Z3X2gyY19jZmdfcG5vKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldiwgc3RydWN0IHJ0dzg5X3ZpZl9saW5rICpydHd2aWZfbGluayxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0xMDgzMC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jOjEwODMxOlxcdHN0cnVjdCBydHc4OV93b3dfcGFyYW0gKnJ0d193b3cgPSBcXHUwMDI2cnR3ZGV2LVxcdTAwM2V3b3c7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTEwODMyLVxcdHN0cnVjdCBjZmc4MDIxMV9zY2hlZF9zY2FuX3JlcXVlc3QgKm5kX2NvbmZpZyA9IHJ0d193b3ctXFx1MDAzZW5kX2NvbmZpZztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYz0xMDg3OT1pbnQgcnR3ODlfZndfaDJjX3dvd19nbG9iYWwoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBzdHJ1Y3QgcnR3ODlfdmlmX2xpbmsgKnJ0d3ZpZl9saW5rLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTEwODgxLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM6MTA4ODI6XFx0c3RydWN0IHJ0dzg5X3dvd19wYXJhbSAqcnR3X3dvdyA9IFxcdTAwMjZydHdkZXYtXFx1MDAzZXdvdztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTA4ODMtXFx0c3RydWN0IHJ0dzg5X2gyY193b3dfZ2xvYmFsICpoMmM7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM9MTA5MjY9aW50IHJ0dzg5X2Z3X2gyY193b3dfd2FrZXVwX2N0cmwoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTEwOTMwLVxcdHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYgPSBydHd2aWZfbGlua190b192aWYocnR3dmlmX2xpbmspO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYzoxMDkzMTpcXHRzdHJ1Y3QgcnR3ODlfd293X3BhcmFtICpydHdfd293ID0gXFx1MDAyNnJ0d2Rldi1cXHUwMDNld293O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0xMDkzMi1cXHRzdHJ1Y3QgcnR3ODlfaDJjX3dvd193YWtldXBfY3RybCAqaDJjO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jPTEwOTg0PWludCBydHc4OV9md19oMmNfd293X2NhbV91cGRhdGUoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYzoxMDk4NTpcXHRcXHRcXHRcXHRzdHJ1Y3QgcnR3ODlfd293X2NhbV9pbmZvICpjYW1faW5mbylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTA5ODYte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jPTExMDQxPWludCBydHc4OV9md19oMmNfd293X2NhbV91cGRhdGVfdjEoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYzoxMTA0MjpcXHRcXHRcXHRcXHQgICBzdHJ1Y3QgcnR3ODlfd293X2NhbV9pbmZvICpjYW1faW5mbylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTEwNDMte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jPTExMDk5PWludCBydHc4OV9md19oMmNfd293X2d0a19vZmxkKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0xMTEwMi17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jOjExMTAzOlxcdHN0cnVjdCBydHc4OV93b3dfcGFyYW0gKnJ0d193b3cgPSBcXHUwMDI2cnR3ZGV2LVxcdTAwM2V3b3c7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jOjExMTA0OlxcdHN0cnVjdCBydHc4OV93b3dfZ3RrX2luZm8gKmd0a19pbmZvID0gXFx1MDAyNnJ0d193b3ctXFx1MDAzZWd0a19pbmZvO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0xMTEwNS1cXHRzdHJ1Y3QgcnR3ODlfaDJjX3dvd19ndGtfb2ZsZCAqaDJjO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5oPTIyMTU9c3RydWN0IHJ0dzg5X2gyY193b3dfZ2xvYmFsIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmgtMjIxNi1cXHRfX2xlMzIgdzA7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5oOjIyMTc6XFx0c3RydWN0IHJ0dzg5X3dvd19rZXlfaW5mbyBrZXlfaW5mbztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmgtMjIxOC19IF9fcGFja2VkO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5oPTIzMTI9c3RydWN0IHJ0dzg5X2gyY193b3dfZ3RrX29mbGQge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5oLTIzMTQtXFx0X19sZTMyIHcxO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuaDoyMzE1OlxcdHN0cnVjdCBydHc4OV93b3dfZ3RrX2luZm8gZ3RrX2luZm87XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5oLTIzMTYtfSBfX3BhY2tlZDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuaD00NjY1PXN0cnVjdCBydHc4OV9md19oMmNfcmZfcmVnX2luZm8ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5oLTQ2OTktI2RlZmluZSBIMkNfQ0xfTUFDX1dPV1xcdFxcdFxcdDB4MVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuaDo0NzAwOmVudW0gcnR3ODlfd293X2gyY19mdW5jIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmgtNDcwMS1cXHRIMkNfRlVOQ19LRUVQX0FMSVZFXFx0XFx0PSAweDAsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3Lmg9NTYzND1pbnQgcnR3ODlfZndfaDJjX3dvd19jYW1fdXBkYXRlKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3Lmg6NTYzNTpcXHRcXHRcXHRcXHRzdHJ1Y3QgcnR3ODlfd293X2NhbV9pbmZvICpjYW1faW5mbyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5oLTU2MzYtaW50IHJ0dzg5X2Z3X2gyY193b3dfY2FtX3VwZGF0ZV92MShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5oOjU2Mzc6XFx0XFx0XFx0XFx0ICAgc3RydWN0IHJ0dzg5X3dvd19jYW1faW5mbyAqY2FtX2luZm8pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuaC01NjM4LWludCBydHc4OV9md19oMmNfd293X2d0a19vZmxkKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuaD01ODExPWludCBydHc4OV9jaGlwX2gyY193b3dfY2FtX3VwZGF0ZShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5oOjU4MTI6XFx0XFx0XFx0XFx0ICBzdHJ1Y3QgcnR3ODlfd293X2NhbV9pbmZvICpjYW1faW5mbylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmgtNTgxMy17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3Lmg9NTkyMz1ydHc4OV9sb2FkX3JmZV9kYXRhX2Zyb21fZncoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5oLTU5MjUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5oOjU5MjY6ZW51bSBydHc4OV93b3dfd2FrZXVwX3ZlciB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5oLTU5MjctXFx0UlRXODlfV09XX1JFQVNPTl9WMCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjLmM9NTg5MD1ydHc4OV9tYWNfYzJoX3dvd19hb2FjX3JwdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHN0cnVjdCBza19idWZmICpza2IsIHUzMiBsZW4pXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWMuYy01ODkxLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYy5jOjU4OTI6XFx0c3RydWN0IHJ0dzg5X3dvd19wYXJhbSAqcnR3X3dvdyA9IFxcdTAwMjZydHdkZXYtXFx1MDAzZXdvdztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYy5jOjU4OTM6XFx0c3RydWN0IHJ0dzg5X3dvd19hb2FjX3JlcG9ydCAqYW9hY19ycHQgPSBcXHUwMDI2cnR3X3dvdy1cXHUwMDNlYW9hY19ycHQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWMuYy01ODk0LVxcdHN0cnVjdCBydHc4OV93YWl0X2luZm8gKndhaXQgPSBcXHUwMDI2cnR3X3dvdy1cXHUwMDNld2FpdDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjLmM9NzM1MT1pbnQgcnR3ODlfbWFjX2NwdV9pb19yeChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGJvb2wgd293X2VuYWJsZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjLmMtNzM2My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYy5jOjczNjQ6c3RhdGljIGludCBydHc4OV93b3dfY29uZmlnX21hY19heChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGJvb2wgZW5hYmxlX3dvdylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYy5jLTczNjUte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWMuYz03NDUwPWNvbnN0IHN0cnVjdCBydHc4OV9tYWNfZ2VuX2RlZiBydHc4OV9tYWNfZ2VuX2F4ID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWMuYy03NTQ3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjLmM6NzU0ODpcXHQud293X2NvbmZpZ19tYWMgPSBydHc4OV93b3dfY29uZmlnX21hY19heCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYy5jLTc1NDktfTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYz0xODk2PXN0YXRpYyBpbnQgcnR3ODlfb3BzX3N1c3BlbmQoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMTkwNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MTkwODpcXHRyZXQgPSBydHc4OV93b3dfc3VzcGVuZChydHdkZXYsIHdvd2xhbik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTE5MDktXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jPTE5MTg9c3RhdGljIGludCBydHc4OV9vcHNfcmVzdW1lKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTE5MjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjE5MjU6XFx0cmV0ID0gcnR3ODlfd293X3Jlc3VtZShydHdkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0xOTI2LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM9MTk0NT1zdGF0aWMgdm9pZCBydHc4OV9zZXRfcmVrZXlfZGF0YShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0xOTQ5LVxcdHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiA9IGh3LVxcdTAwM2Vwcml2O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoxOTUwOlxcdHN0cnVjdCBydHc4OV93b3dfcGFyYW0gKnJ0d193b3cgPSBcXHUwMDI2cnR3ZGV2LVxcdTAwM2V3b3c7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjE5NTE6XFx0c3RydWN0IHJ0dzg5X3dvd19ndGtfaW5mbyAqZ3RrX2luZm8gPSBcXHUwMDI2cnR3X3dvdy1cXHUwMDNlZ3RrX2luZm87XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTE5NTItXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hY19iZS5jPTI5NjU9c3RhdGljIHZvaWQgcnR3ODlfbWFjX2R1bXBfcXRhX2xvc3RfYmUoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWNfYmUuYy0zMDUxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjX2JlLmM6MzA1MjpzdGF0aWMgaW50IHJ0dzg5X3dvd19jb25maWdfbWFjX2JlKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgYm9vbCBlbmFibGVfd293KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjX2JlLmMtMzA1My17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hY19iZS5jPTMyNjg9Y29uc3Qgc3RydWN0IHJ0dzg5X21hY19nZW5fZGVmIHJ0dzg5X21hY19nZW5fYmUgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hY19iZS5jLTMzNjUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWNfYmUuYzozMzY2OlxcdC53b3dfY29uZmlnX21hYyA9IHJ0dzg5X3dvd19jb25maWdfbWFjX2JlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjX2JlLmMtMzM2Ny19O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy0xNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jOjE1OnZvaWQgX19ydHc4OV93b3dfcGFyc2VfYWttKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTE2LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTE3LVxcdHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqbWdtdCA9IChzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKilza2ItXFx1MDAzZWRhdGE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYzoxODpcXHRzdHJ1Y3QgcnR3ODlfd293X3BhcmFtICpydHdfd293ID0gXFx1MDAyNnJ0d2Rldi1cXHUwMDNld293O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtMTktXFx0Y29uc3QgdTggKnJzbiwgKmllcyA9IG1nbXQtXFx1MDAzZXUuYXNzb2NfcmVxLnZhcmlhYmxlO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYz0yMzk9c3RhdGljIGludCBydHc4OV9yeF9wbl9nZXRfcG1mKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTI0MC1cXHRcXHRcXHQgICAgICAgc3RydWN0IGllZWU4MDIxMV9rZXlfY29uZiAqa2V5LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmM6MjQxOlxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgcnR3ODlfd293X2d0a19pbmZvICpndGtfaW5mbylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTI0Mi17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jPTI3MD1zdGF0aWMgaW50IHJ0dzg5X3J4X3BuX3NldF9wbWYoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy0yNzMte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmM6Mjc0OlxcdHN0cnVjdCBydHc4OV93b3dfcGFyYW0gKnJ0d193b3cgPSBcXHUwMDI2cnR3ZGV2LVxcdTAwM2V3b3c7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYzoyNzU6XFx0c3RydWN0IHJ0dzg5X3dvd19hb2FjX3JlcG9ydCAqYW9hY19ycHQgPSBcXHUwMDI2cnR3X3dvdy1cXHUwMDNlYW9hY19ycHQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy0yNzYtXFx0c3RydWN0IGllZWU4MDIxMV9rZXlfc2VxIHNlcTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtMjk1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmM6Mjk2OnN0YXRpYyB2b2lkIHJ0dzg5X3dvd19nZXRfa2V5X2luZm9faXRlcihzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTI5Ny1cXHRcXHRcXHRcXHRcXHRzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy0zMDItXFx0c3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2ID0gaHctXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYzozMDM6XFx0c3RydWN0IHJ0dzg5X3dvd19wYXJhbSAqcnR3X3dvdyA9IFxcdTAwMjZydHdkZXYtXFx1MDAzZXdvdztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jOjMwNDpcXHRzdHJ1Y3QgcnR3ODlfd293X2tleV9pbmZvICprZXlfaW5mbyA9IFxcdTAwMjZydHdfd293LVxcdTAwM2VrZXlfaW5mbztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jOjMwNTpcXHRzdHJ1Y3QgcnR3ODlfd293X2d0a19pbmZvICpndGtfaW5mbyA9IFxcdTAwMjZydHdfd293LVxcdTAwM2VndGtfaW5mbztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTMwNi1cXHRjb25zdCBzdHJ1Y3QgcnR3ODlfY2lwaGVyX2luZm8gKmNpcGhlcl9pbmZvO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy0zNzAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYzozNzE6c3RhdGljIHZvaWQgcnR3ODlfd293X3NldF9rZXlfaW5mb19pdGVyKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtMzcyLVxcdFxcdFxcdFxcdFxcdHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTM3Ny1cXHRzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYgPSBody1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jOjM3ODpcXHRzdHJ1Y3QgcnR3ODlfd293X3BhcmFtICpydHdfd293ID0gXFx1MDAyNnJ0d2Rldi1cXHUwMDNld293O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmM6Mzc5OlxcdHN0cnVjdCBydHc4OV93b3dfYW9hY19yZXBvcnQgKmFvYWNfcnB0ID0gXFx1MDAyNnJ0d193b3ctXFx1MDAzZWFvYWNfcnB0O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtMzgwLVxcdHN0cnVjdCBydHc4OV9zZXRfa2V5X2luZm9faXRlcl9kYXRhICppdGVyX2RhdGEgPSBkYXRhO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy00NTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYzo0NTc6c3RhdGljIHZvaWQgcnR3ODlfd293X2tleV9jbGVhcihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy00NTgte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmM6NDU5OlxcdHN0cnVjdCBydHc4OV93b3dfcGFyYW0gKnJ0d193b3cgPSBcXHUwMDI2cnR3ZGV2LVxcdTAwM2V3b3c7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy00NjAtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTQ2Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jOjQ2ODpzdGF0aWMgdm9pZCBydHc4OV93b3dfY29uc3RydWN0X2tleV9pbmZvKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTQ2OS17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYzo0NzA6XFx0c3RydWN0IHJ0dzg5X3dvd19wYXJhbSAqcnR3X3dvdyA9IFxcdTAwMjZydHdkZXYtXFx1MDAzZXdvdztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jOjQ3MTpcXHRzdHJ1Y3QgcnR3ODlfd293X2tleV9pbmZvICprZXlfaW5mbyA9IFxcdTAwMjZydHdfd293LVxcdTAwM2VrZXlfaW5mbztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTQ3Mi1cXHRzdHJ1Y3QgcnR3ODlfdmlmX2xpbmsgKnJ0d3ZpZl9saW5rID0gcnR3ZGV2LVxcdTAwM2V3b3cucnR3dmlmX2xpbms7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTQ3Ni1cXHRpZWVlODAyMTFfaXRlcl9rZXlzKHJ0d2Rldi1cXHUwMDNlaHcsIHdvd192aWYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYzo0Nzc6XFx0XFx0XFx0ICAgIHJ0dzg5X3dvd19nZXRfa2V5X2luZm9faXRlciwgXFx1MDAyNmVycik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy00NzgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy00NzktXFx0aWYgKGVycikge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmM6NDgwOlxcdFxcdHJ0dzg5X3dvd19rZXlfY2xlYXIocnR3ZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTQ4MS1cXHRcXHRyZXR1cm47XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTQ4OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jOjQ4OTpzdGF0aWMgdm9pZCBydHc4OV93b3dfZGVidWdfYW9hY19ycHQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtNDkwLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jOjQ5MTpcXHRzdHJ1Y3QgcnR3ODlfd293X3BhcmFtICpydHdfd293ID0gXFx1MDAyNnJ0d2Rldi1cXHUwMDNld293O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmM6NDkyOlxcdHN0cnVjdCBydHc4OV93b3dfYW9hY19yZXBvcnQgKmFvYWNfcnB0ID0gXFx1MDAyNnJ0d193b3ctXFx1MDAzZWFvYWNfcnB0O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtNDkzLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy01MjktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYzo1MzA6c3RhdGljIGludCBydHc4OV93b3dfZ2V0X2FvYWNfcnB0X3JlZyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy01MzEte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmM6NTMyOlxcdHN0cnVjdCBydHc4OV93b3dfcGFyYW0gKnJ0d193b3cgPSBcXHUwMDI2cnR3ZGV2LVxcdTAwM2V3b3c7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYzo1MzM6XFx0c3RydWN0IHJ0dzg5X3dvd19hb2FjX3JlcG9ydCAqYW9hY19ycHQgPSBcXHUwMDI2cnR3X3dvdy1cXHUwMDNlYW9hY19ycHQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy01MzQtXFx0c3RydWN0IHJ0dzg5X21hY19jMmhfaW5mbyBjMmhfaW5mbyA9IHt9O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy02MTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYzo2MTY6c3RhdGljIGludCBydHc4OV93b3dfZ2V0X2FvYWNfcnB0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgYm9vbCByeF9yZWFkeSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTYxNy17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYzo2MTg6XFx0c3RydWN0IHJ0dzg5X3dvd19wYXJhbSAqcnR3X3dvdyA9IFxcdTAwMjZydHdkZXYtXFx1MDAzZXdvdztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTYxOS1cXHRpbnQgcmV0O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy02MjQtXFx0aWYgKCFyeF9yZWFkeSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmM6NjI1OlxcdFxcdHJldCA9IHJ0dzg5X3dvd19nZXRfYW9hY19ycHRfcmVnKHJ0d2Rldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy02MjYtXFx0XFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy02MzctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYzo2Mzg6XFx0cnR3ODlfd293X2RlYnVnX2FvYWNfcnB0KHJ0d2Rldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy02MzktXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTY0Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jOjY0MzpzdGF0aWMgc3RydWN0IGllZWU4MDIxMV9rZXlfY29uZiAqcnR3ODlfd293X2d0a19yZWtleShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy02NDQtXFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgdTMyIGNpcGhlciwgdTgga2V5aWR4LCB1OCAqZ3RrKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy02ODMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYzo2ODQ6c3RhdGljIHZvaWQgcnR3ODlfd293X3VwZGF0ZV9rZXlfaW5mbyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGJvb2wgcnhfcmVhZHkpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy02ODUte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy02ODctXFx0c3RydWN0IGllZWU4MDIxMV92aWYgKndvd192aWYgPSBydHd2aWZfbGlua190b192aWYocnR3dmlmX2xpbmspO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmM6Njg4OlxcdHN0cnVjdCBydHc4OV93b3dfcGFyYW0gKnJ0d193b3cgPSBcXHUwMDI2cnR3ZGV2LVxcdTAwM2V3b3c7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYzo2ODk6XFx0c3RydWN0IHJ0dzg5X3dvd19hb2FjX3JlcG9ydCAqYW9hY19ycHQgPSBcXHUwMDI2cnR3X3dvdy1cXHUwMDNlYW9hY19ycHQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy02OTAtXFx0c3RydWN0IHJ0dzg5X3NldF9rZXlfaW5mb19pdGVyX2RhdGEgZGF0YSA9IHsuZXJyb3IgPSBmYWxzZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtNjk2LVxcdGllZWU4MDIxMV9pdGVyX2tleXMocnR3ZGV2LVxcdTAwM2Vodywgd293X3ZpZixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jOjY5NzpcXHRcXHRcXHQgICAgcnR3ODlfd293X3NldF9rZXlfaW5mb19pdGVyLCBcXHUwMDI2ZGF0YSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy02OTgtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTcwNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jOjcwNzpcXHRrZXkgPSBydHc4OV93b3dfZ3RrX3Jla2V5KHJ0d2RldiwgZGF0YS5ndGtfY2lwaGVyLCBhb2FjX3JwdC1cXHUwMDNla2V5X2lkeCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTcwOC1cXHRcXHRcXHRcXHQgIGFvYWNfcnB0LVxcdTAwM2VndGspO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy03MTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYzo3MTg6XFx0a2V5ID0gcnR3ODlfd293X2d0a19yZWtleShydHdkZXYsIGRhdGEuaWd0a19jaXBoZXIsIGFvYWNfcnB0LVxcdTAwM2VpZ3RrX2tleV9pZCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTcxOS1cXHRcXHRcXHRcXHQgIGFvYWNfcnB0LVxcdTAwM2VpZ3RrKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtNzM0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmM6NzM1OnN0YXRpYyB2b2lkIHJ0dzg5X3dvd19sZWF2ZV9kZWVwX3BzKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTczNi17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTczOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jOjc0MDpzdGF0aWMgdm9pZCBydHc4OV93b3dfZW50ZXJfZGVlcF9wcyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy03NDEte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy03NDQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYzo3NDU6c3RhdGljIHZvaWQgcnR3ODlfd293X2VudGVyX3BzKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTc0Ni17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTc0OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jOjc0OTpcXHRpZiAocnR3ODlfd293X21nZF9saW5rZWQocnR3ZGV2KSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTc1MC1cXHRcXHRydHc4OV9lbnRlcl9scHMocnR3ZGV2LCBydHd2aWZfbGluay1cXHUwMDNlcnR3dmlmLCBmYWxzZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYzo3NTE6XFx0ZWxzZSBpZiAocnR3ODlfd293X25vX2xpbmsocnR3ZGV2KSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTc1Mi1cXHRcXHRydHc4OV9md19oMmNfZndpcHMocnR3ZGV2LCBydHd2aWZfbGluaywgdHJ1ZSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTc1NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jOjc1NTpzdGF0aWMgdm9pZCBydHc4OV93b3dfbGVhdmVfcHMoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBib29sIGVuYWJsZV93b3cpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy03NTYte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy03NTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYzo3NTk6XFx0aWYgKHJ0dzg5X3dvd19tZ2RfbGlua2VkKHJ0d2RldikpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTc2MC1cXHRcXHRydHc4OV9sZWF2ZV9scHMocnR3ZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jOjc2MTpcXHR9IGVsc2UgaWYgKHJ0dzg5X3dvd19ub19saW5rKHJ0d2RldikpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTc2Mi1cXHRcXHRpZiAoZW5hYmxlX3dvdylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtNzY4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmM6NzY5OnN0YXRpYyBpbnQgcnR3ODlfd293X2NvbmZpZ19tYWMoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBib29sIGVuYWJsZV93b3cpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy03NzAte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy03NzUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYzo3NzY6c3RhdGljIHZvaWQgcnR3ODlfd293X3NldF9yeF9maWx0ZXIoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBib29sIGVuYWJsZSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTc3Ny17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTc4Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jOjc4ODpzdGF0aWMgdm9pZCBydHc4OV93b3dfc2hvd193YWtldXBfcmVhc29uKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTc4OS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTc5MS1cXHRzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqd293X3ZpZiA9IHJ0d3ZpZl9saW5rX3RvX3ZpZihydHd2aWZfbGluayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYzo3OTI6XFx0c3RydWN0IHJ0dzg5X3dvd19wYXJhbSAqcnR3X3dvdyA9IFxcdTAwMjZydHdkZXYtXFx1MDAzZXdvdztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jOjc5MzpcXHRzdHJ1Y3QgcnR3ODlfd293X2FvYWNfcmVwb3J0ICphb2FjX3JwdCA9IFxcdTAwMjZydHdfd293LVxcdTAwM2Vhb2FjX3JwdDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTc5NC1cXHRzdHJ1Y3QgY2ZnODAyMTFfd293bGFuX25kX2luZm8gbmRfaW5mbztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtODQ4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmM6ODQ5OnN0YXRpYyB2b2lkIHJ0dzg5X3dvd192aWZfaXRlcihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy04NTAtXFx0XFx0XFx0ICAgICAgIHN0cnVjdCBydHc4OV92aWZfbGluayAqcnR3dmlmX2xpbmspXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy04NTEte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmM6ODUyOlxcdHN0cnVjdCBydHc4OV93b3dfcGFyYW0gKnJ0d193b3cgPSBcXHUwMDI2cnR3ZGV2LVxcdTAwM2V3b3c7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy04NTMtXFx0c3RydWN0IGllZWU4MDIxMV92aWYgKnZpZiA9IHJ0d3ZpZl9saW5rX3RvX3ZpZihydHd2aWZfbGluayk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jPTkxND1zdGF0aWMgdTE2IHJ0dzg5X2NhbGNfY3JjKHU4ICpwZGF0YSwgaW50IGxlbmd0aClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtOTI1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmM6OTI2OnN0YXRpYyBpbnQgcnR3ODlfd293X3BhdHRlcm5fZ2V0X3R5cGUoc3RydWN0IHJ0dzg5X3ZpZl9saW5rICpydHd2aWZfbGluayxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jOjkyNzpcXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgcnR3ODlfd293X2NhbV9pbmZvICpydHdfcGF0dGVybixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTkyOC1cXHRcXHRcXHRcXHQgICAgICBjb25zdCB1OCAqcGF0dGVybiwgdTggZGFfbWFzaylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtOTU2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmM6OTU3OnN0YXRpYyBpbnQgcnR3ODlfd293X3BhdHRlcm5fZ2VuZXJhdGUoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtOTU4LVxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBydHc4OV92aWZfbGluayAqcnR3dmlmX2xpbmssXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy05NTktXFx0XFx0XFx0XFx0ICAgICAgY29uc3Qgc3RydWN0IGNmZzgwMjExX3BrdF9wYXR0ZXJuICpwa3RfcGF0dGVybixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jOjk2MDpcXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgcnR3ODlfd293X2NhbV9pbmZvICpydHdfcGF0dGVybilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTk2MS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTk3Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jOjk3NzpcXHRyZXQgPSBydHc4OV93b3dfcGF0dGVybl9nZXRfdHlwZShydHd2aWZfbGluaywgcnR3X3BhdHRlcm4sIHBhdHRlcm4sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy05NzgtXFx0XFx0XFx0XFx0XFx0IG1hc2tbMF0gXFx1MDAyNiBHRU5NQVNLKDUsIDApKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtMTAyOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jOjEwMzA6c3RhdGljIGludCBydHc4OV93b3dfcGFyc2VfcGF0dGVybnMoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtMTAzMS1cXHRcXHRcXHRcXHQgICAgc3RydWN0IHJ0dzg5X3ZpZl9saW5rICpydHd2aWZfbGluayxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtMTAzMy17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYzoxMDM0OlxcdHN0cnVjdCBydHc4OV93b3dfcGFyYW0gKnJ0d193b3cgPSBcXHUwMDI2cnR3ZGV2LVxcdTAwM2V3b3c7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYzoxMDM1OlxcdHN0cnVjdCBydHc4OV93b3dfY2FtX2luZm8gKnJ0d19wYXR0ZXJuID0gcnR3X3dvdy1cXHUwMDNlcGF0dGVybnM7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy0xMDM2LVxcdGludCBpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy0xMDQzLVxcdFxcdHJ0d19wYXR0ZXJuID0gXFx1MDAyNnJ0d193b3ctXFx1MDAzZXBhdHRlcm5zW2ldO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmM6MTA0NDpcXHRcXHRyZXQgPSBydHc4OV93b3dfcGF0dGVybl9nZW5lcmF0ZShydHdkZXYsIHJ0d3ZpZl9saW5rLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtMTA0NS1cXHRcXHRcXHRcXHRcXHRcXHQgXFx1MDAyNndvd2xhbi1cXHUwMDNlcGF0dGVybnNbaV0sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTEwNjMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYzoxMDY0OnN0YXRpYyB2b2lkIHJ0dzg5X3dvd19wYXR0ZXJuX2NsZWFyX2NhbShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy0xMDY1LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jOjEwNjY6XFx0c3RydWN0IHJ0dzg5X3dvd19wYXJhbSAqcnR3X3dvdyA9IFxcdTAwMjZydHdkZXYtXFx1MDAzZXdvdztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jOjEwNjc6XFx0c3RydWN0IHJ0dzg5X3dvd19jYW1faW5mbyAqcnR3X3BhdHRlcm4gPSBydHdfd293LVxcdTAwM2VwYXR0ZXJucztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTEwNjgtXFx0aW50IGkgPSAwO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy0xMDc2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmM6MTA3NzpzdGF0aWMgdm9pZCBydHc4OV93b3dfcGF0dGVybl93cml0ZShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy0xMDc4LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jOjEwNzk6XFx0c3RydWN0IHJ0dzg5X3dvd19wYXJhbSAqcnR3X3dvdyA9IFxcdTAwMjZydHdkZXYtXFx1MDAzZXdvdztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jOjEwODA6XFx0c3RydWN0IHJ0dzg5X3dvd19jYW1faW5mbyAqcnR3X3BhdHRlcm4gPSBydHdfd293LVxcdTAwM2VwYXR0ZXJucztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTEwODEtXFx0aW50IGk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTEwODYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYzoxMDg3OnN0YXRpYyB2b2lkIHJ0dzg5X3dvd19wYXR0ZXJuX2NsZWFyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTEwODgte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmM6MTA4OTpcXHRzdHJ1Y3QgcnR3ODlfd293X3BhcmFtICpydHdfd293ID0gXFx1MDAyNnJ0d2Rldi1cXHUwMDNld293O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtMTA5MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jOjEwOTE6XFx0cnR3ODlfd293X3BhdHRlcm5fY2xlYXJfY2FtKHJ0d2Rldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy0xMDkyLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy0xMDk2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmM6MTA5NzpzdGF0aWMgdm9pZCBydHc4OV93b3dfY2xlYXJfd2FrZXVwcyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy0xMDk4LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jOjEwOTk6XFx0c3RydWN0IHJ0dzg5X3dvd19wYXJhbSAqcnR3X3dvdyA9IFxcdTAwMjZydHdkZXYtXFx1MDAzZXdvdztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTExMDAtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTExMDYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYzoxMTA3OnN0YXRpYyB2b2lkIHJ0dzg5X3dvd19pbml0X3BubyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy0xMTA4LVxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgY2ZnODAyMTFfc2NoZWRfc2Nhbl9yZXF1ZXN0ICpuZF9jb25maWcpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy0xMTA5LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jOjExMTA6XFx0c3RydWN0IHJ0dzg5X3dvd19wYXJhbSAqcnR3X3dvdyA9IFxcdTAwMjZydHdkZXYtXFx1MDAzZXdvdztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTExMTEtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTExMjItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYzoxMTIzOnN0YXRpYyBpbnQgcnR3ODlfd293X3NldF93YWtldXBzKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTExMjQtXFx0XFx0XFx0XFx0IHN0cnVjdCBjZmc4MDIxMV93b3dsYW4gKndvd2xhbilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTExMjUte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmM6MTEyNjpcXHRzdHJ1Y3QgcnR3ODlfd293X3BhcmFtICpydHdfd293ID0gXFx1MDAyNnJ0d2Rldi1cXHUwMDNld293O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtMTEyNy1cXHRzdHJ1Y3QgcnR3ODlfdmlmX2xpbmsgKnJ0d3ZpZl9saW5rO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy0xMTM3LVxcdGlmICh3b3dsYW4tXFx1MDAzZW5kX2NvbmZpZylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jOjExMzg6XFx0XFx0cnR3ODlfd293X2luaXRfcG5vKHJ0d2Rldiwgd293bGFuLVxcdTAwM2VuZF9jb25maWcpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtMTEzOS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtMTE0NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jOjExNDU6XFx0XFx0cnR3ODlfd293X3ZpZl9pdGVyKHJ0d2RldiwgcnR3dmlmX2xpbmspO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtMTE0Ni1cXHR9XFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDIxOjQxOjE5LjU5NTc5NjA4MloiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo2MzQzMDkyNTEzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBLZXkgSGFuZGxpbmcgaW4gcnR3ODkgYW5kIG1hYzgwMjExKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBJJ20gc2VlaW5nIHRoYXQgYHJ0dzg5X3dvd19zdXNwZW5kYCBhbmQgYHJ0dzg5X3dvd19yZXN1bWVgIGFyZSBjYWxsZWQgd2l0aGluIHRoZSBgcnR3ODlfb3BzX3N1c3BlbmRgIGFuZCBgcnR3ODlfb3BzX3Jlc3VtZWAgZnVuY3Rpb25zLCB3aGljaCBhcmUgcGFydCBvZiBtYWM4MDIxMSdzIG9wZXJhdGlvbmFsIGZ1bmN0aW9ucy4gTXkgaW1tZWRpYXRlIGNvbmNlcm4gaXMgdGhlIGNvbnRleHQgaW4gd2hpY2ggdGhlc2Ugc3VzcGVuZC9yZXN1bWUgb3BlcmF0aW9ucyBhcmUgdHJpZ2dlcmVkIHdpdGhpbiB0aGUgbWFjODAyMTEgZnJhbWV3b3JrLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY2FsbGluZyBjaGFpbiBiZXR0ZXIsIHNvIEknbSB0aGlua2luZyBhYm91dCBob3cgc3VzcGVuZC9yZXN1bWUgaXMgaW5pdGlhdGVkIHdpdGhpbiBtYWM4MDIxMSBhbmQgY2ZnODAyMTEuIEl0IGNvdWxkIGJlIGZyb20gcG93ZXIgbWFuYWdlbWVudCBldmVudHMsIGxpa2UgUE0gb3IgV29MIGNvbW1hbmRzIHRocm91Z2ggbmw4MDIxMS4gSSBzaG91bGQgYWxzbyBjb25zaWRlciB0aGUgc3lzdGVtLWxldmVsIHN1c3BlbmQvcmVzdW1lIHRyaWdnZXJlZCBieSBgL3N5cy9wb3dlci9zdGF0ZWAsIHBtIGlvY3Rscywgb3Igc3lzdGVtIGNhbGxzLCBlc3BlY2lhbGx5IHdpdGggc3l6a2FsbGVyIHRlc3RzLlxuXG5Ob3csIHdoYXQgYWJvdXQgYHNlcl9yZXNldF9tYWNfYmluZGluZ2A/IFNFUiAoU3lzdGVtIEVycm9yIFJlY292ZXJ5KSBpbiB0aGUgcnR3ODkgZHJpdmVyIGlzIHRyaWdnZXJlZCBieSBjaGlwIGVycm9ycyBvciB0aW1lb3V0cywgc28gdGhpcyBpcyBpbXBvcnRhbnQgZnJvbSBhIHJlbGlhYmlsaXR5IHN0YW5kcG9pbnQuIEFuZCBpdCBsb29rcyBsaWtlIGBydHc4OV9jYW1fcmVzZXRfa2V5c2AgaXMgY2FsbGVkIGluIGBzZXJfcmVzZXRfbWFjX2JpbmRpbmdgIGFuZCBhbHNvIGBydHc4OV93b3dfc3dhcF9md2AuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgYHJ0dzg5X2NhbV9yZXNldF9rZXlzYCBhY3R1YWxseSAqZG9lcyouXG5cbk9rYXksIGl0IGNhbGxzIGBpZWVlODAyMTFfaXRlcl9rZXlzYCAob3IgdXNlZCB0byBjYWxsIGBpZWVlODAyMTFfaXRlcl9rZXlzX3JjdWAgcHJldmlvdXNseSkgd2l0aCBhIGN1c3RvbSBpdGVyYXRvciwgYHJ0dzg5X2NhbV9yZXNldF9rZXlfaXRlcmAuIFRoaXMgc3VnZ2VzdHMgc29tZSBraW5kIG9mIGtleSBtYW5hZ2VtZW50IG9yIGNsZWFyaW5nIG9wZXJhdGlvbiwgcHJvYmFibHkgZm9yIHNlY3VyaXR5IHJlYXNvbnMuIEFuZCBJIHNob3VsZCBub3RlIHRoYXQgYHdvdy5jYCBpcyBhbHNvIHVzaW5nIGBpZWVlODAyMTFfaXRlcl9rZXlzYCBpbiBgcnR3ODlfd293X2NvbnN0cnVjdF9rZXlfaW5mb2AgYW5kIGBydHc4OV93b3dfdXBkYXRlX2tleV9pbmZvYC5cblxuV2FpdCBhIG1pbnV0ZSwgYGllZWU4MDIxMV9pdGVyX2tleXNgIGhhcyBhIGBsb2NrZGVwX2Fzc2VydF93aXBoeShody1cdTAwM2V3aXBoeSk7YCBjYWxsLiBUaGlzIGlzIGtleSEgSSBuZWVkIHRvIGludmVzdGlnYXRlIHRoZSBpbXBsaWNhdGlvbnMgaGVyZS4gSXQncyBhdCBsaW5lIDEwMzMgb2YgYG5ldC9tYWM4MDIxMS9rZXkuY2AuIFNvIEkgc2hvdWxkIGNoZWNrIHRoZSBkZWZpbml0aW9uIG9mIGBsb2NrZGVwX2Fzc2VydF93aXBoeWAgaW4gYGluY2x1ZGUvbmV0L2NmZzgwMjExLmhgIG9yIGBpbmNsdWRlL25ldC9tYWM4MDIxMS5oYCB0byB1bmRlcnN0YW5kIGl0cyBwdXJwb3NlIGFuZCBob3cgaXQgcmVsYXRlcyB0byBsb2NraW5nIGFuZCBjb25jdXJyZW5jeS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDg0NjUsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2ODIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMjE6NDE6MjUuOTM4ODkyMTc1WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNTI0ODcxMzYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibG9ja2RlcF9hc3NlcnRfd2lwaHlcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiaW5jbHVkZS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9uZXQvY2ZnODAyMTEuaD02ODEwPWludCB3aXBoeV9yZWdpc3RlcihzdHJ1Y3Qgd2lwaHkgKndpcGh5KTtcXG4tLVxcbmluY2x1ZGUvbmV0L2NmZzgwMjExLmgtNjgxMi0vKiB0aGlzIGlzIGEgZGVmaW5lIGZvciBiZXR0ZXIgZXJyb3IgcmVwb3J0aW5nIChmaWxlL2xpbmUpICovXFxuaW5jbHVkZS9uZXQvY2ZnODAyMTEuaDo2ODEzOiNkZWZpbmUgbG9ja2RlcF9hc3NlcnRfd2lwaHkod2lwaHkpIGxvY2tkZXBfYXNzZXJ0X2hlbGQoXFx1MDAyNih3aXBoeSktXFx1MDAzZW10eClcXG5pbmNsdWRlL25ldC9jZmc4MDIxMS5oLTY4MTQtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDIxOjQxOjI2LjE5MTM4MzE2MVoiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyNjYwOTg3MTQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBSZWFsdGVrIFdpRmkgRHJpdmVyJ3MgTG9ja2luZyBTdHJhdGVneSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgUmVhbHRlayBkcml2ZXIgY29kZSBhbmQgaW1tZWRpYXRlbHkgSSBzZWUgYGxvY2tkZXBfYXNzZXJ0X3dpcGh5YC4gVGhhdCdzIHRlbGxpbmcgbWUsIHJpZ2h0IG9mZiB0aGUgYmF0LCB0aGF0IHNvbWV3aGVyZSBpbiB0aGlzIGxvZ2ljLCB0aGV5J3JlIGV4cGVjdGluZyB0aGUgYHdpcGh5LVx1MDAzZW10eGAgbXV0ZXggdG8gYmUgaGVsZC4gVGhlIHF1ZXN0aW9uIHRoYXQgaW1tZWRpYXRlbHkgc3ByaW5ncyB0byBteSBtaW5kIGlzOiB3aGVyZT8gU3BlY2lmaWNhbGx5LCBJJ20gdGhpbmtpbmcgYWJvdXQgdGhvc2UgY3JpdGljYWwgbGlmZWN5Y2xlIGZ1bmN0aW9uczogYHJ0dzg5X29wc19zdXNwZW5kYCBhbmQgYHJ0dzg5X29wc19yZXN1bWVgLiBBcmUgdGhleSBwcm9wZXJseSBhY3F1aXJpbmcgYW5kIHJlbGVhc2luZyB0aGF0IG11dGV4PyBBbmQgd2hhdCBhYm91dCB0aGUgU3lzdGVtIEVycm9yIFJlc2V0IChTRVIpIHNjZW5hcmlvLCB0cmlnZ2VyZWQgYnkgYHNlcl9yZXNldF9tYWNfYmluZGluZ2Ag4oCTIGRvZXMgdGhhdCBhZGhlcmUgdG8gdGhlIGxvY2sncyBjb25zdHJhaW50cz9cblxuVG8gZ2V0IGEgYmV0dGVyIGdyaXAgb24gaXQgSSB3YW50IHRvIHRyYWNlIHRoZSBjb2RlLiBNeSBiZXN0IGJldCBpcyB0byBjaGVjayBgc2VyX2wyX3Jlc2V0X3N0X3ByZV9oZGxgIGluIHRoZSBgc2VyLmNgIGZpbGUgb2YgdGhlIGRyaXZlci4gVGhhdCBzaG91bGQgZ2l2ZSBtZSB0aGUgcHJlY2lzZSBjb250ZXh0IG5lZWRlZCB0byBldmFsdWF0ZSB3aGV0aGVyIHRoZSBtdXRleCBpcyBjb3JyZWN0bHkgaGVsZCBvciBub3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ5OTEwLCJPdXRwdXRUb2tlbnMiOjQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTExLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDIxOjQxOjI4Ljg1MjM3NTYzWiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NDE2MDQ2NDIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic2VyX2wyX3Jlc2V0X3N0X3ByZV9oZGxcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3Nlci5jPTY0NT1zdGF0aWMgaW50IHJ0dzg5X3Nlcl9md19iYWNrdHJhY2VfZHVtcChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4ICpidWYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3Nlci5jLTY5NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3Nlci5jOjY5NTpzdGF0aWMgdm9pZCBzZXJfbDJfcmVzZXRfc3RfcHJlX2hkbChzdHJ1Y3QgcnR3ODlfc2VyICpzZXIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9zZXIuYy02OTYte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9zZXIuYz03Mjc9c3RhdGljIHZvaWQgc2VyX2wyX3Jlc2V0X3N0X2hkbChzdHJ1Y3QgcnR3ODlfc2VyICpzZXIsIHU4IGV2dClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvc2VyLmMtNzM0LVxcdFxcdHNlci1cXHUwMDNlc3dfY250LmwyKys7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9zZXIuYzo3MzU6XFx0XFx0c2VyX2wyX3Jlc2V0X3N0X3ByZV9oZGwoc2VyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3Nlci5jLTczNi1cXHRcXHR3aXBoeV91bmxvY2socnR3ZGV2LVxcdTAwM2Vody1cXHUwMDNld2lwaHkpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQyMTo0MToyOS4zOTM5ODYyOTJaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6Mjg3ODk3MTQ3NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGFuYWx5c2lzIG9mIHRoYXQgY29kZSBzbmlwcGV0OlxuXG4qKkRlYnVnZ2luZyBhIE5ldHdvcmsgRHJpdmVyIFJlc2V0KipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byBgc2VyX2wyX3Jlc2V0X3N0X2hkbGAsIGxpa2VseSB0cnlpbmcgdG8gdW5kZXJzdGFuZCBhIG5ldHdvcmsgcmVzZXQgc2VxdWVuY2UuIFRoZSBjb3JlIG9mIHRoaXMgc2VlbXMgdG8gYmU6IHdlJ3JlIGdyYWJiaW5nIHRoZSB3aXBoeSBsb2NrIHdpdGggYHdpcGh5X2xvY2socnR3ZGV2LVx1MDAzZWh3LVx1MDAzZXdpcGh5KTtgIChsb29rcyBsaWtlIGl0J3MgaGFwcGVuaW5nIHJpZ2h0IGJlZm9yZSBsaW5lIDczNSwgZ2l2ZSBvciB0YWtlIGEgZmV3IGxpbmVzKS4gQWZ0ZXIgdGhlIGxvY2sgaXMgYWNxdWlyZWQsIHRoZSBjYWxsIHByb2NlZWRzIHdpdGggYHNlcl9sMl9yZXNldF9zdF9wcmVfaGRsKHNlcik7YC4gU28sIHdoYXRldmVyIHByZS1oYW5kbGluZyBuZWVkcyB0byBoYXBwZW4gZm9yIHRoZSByZXNldCBpcyBlbmNhcHN1bGF0ZWQgdGhlcmUuIEZpbmFsbHksIHdlIG1ha2Ugc3VyZSB3ZSByZWxlYXNlIHRoZSBsb2NrIHdpdGggYHdpcGh5X3VubG9jayguLi4pYC4gVGhpcyBsb29rcyBsaWtlIHN0YW5kYXJkIGxvY2svdW5sb2NrIHByb2NlZHVyZSwgbGlrZWx5IHByb3RlY3Rpbmcgc2hhcmVkIGhhcmR3YXJlIG9yIGRhdGEgc3RydWN0dXJlcy5cblxuVG8gY29uZmlybSB0aGUgY29udGV4dCwgSSBzaG91bGQgcXVpY2tseSBqdW1wIG92ZXIgdG8gYHNlci5jYCBhbmQgdGFrZSBhIGxvb2sgYXJvdW5kIGxpbmUgNzMwLiBJJ20gYWZ0ZXIgdGhlIGZ1bGwgcGljdHVyZSBoZXJlLCBub3QganVzdCBvbmUgc21hbGwgcGllY2UuIFRoZSBzdXJyb3VuZGluZyBjb2RlIHdpbGwgcHJvdmlkZSB0aGUgY29udGV4dCBJIG5lZWQgdG8gcmVhbGx5IHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIGxvY2tpbmcgc2VxdWVuY2UgYW5kIGhvdyBpdCBmaXRzIGludG8gdGhlIG92ZXJhbGwgcmVzZXQgcHJvY2Vzcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTA2MzAsIk91dHB1dFRva2VucyI6NDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQyMTo0MTozMi4yNzI5NjU2MDhaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjg2OTUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvc2VyLmNcIixcbiAgXCJGaXJzdExpbmVcIjogNzI1LFxuICBcIkxpbmVDb3VudFwiOiAzMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNzI1OlxcdH1cXG4gNzI2OlxcdFxcbiA3Mjc6XFx0c3RhdGljIHZvaWQgc2VyX2wyX3Jlc2V0X3N0X2hkbChzdHJ1Y3QgcnR3ODlfc2VyICpzZXIsIHU4IGV2dClcXG4gNzI4OlxcdHtcXG4gNzI5OlxcdFxcdHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiA9IGNvbnRhaW5lcl9vZihzZXIsIHN0cnVjdCBydHc4OV9kZXYsIHNlcik7XFxuIDczMDpcXHRcXG4gNzMxOlxcdFxcdHN3aXRjaCAoZXZ0KSB7XFxuIDczMjpcXHRcXHRjYXNlIFNFUl9FVl9TVEFURV9JTjpcXG4gNzMzOlxcdFxcdFxcdHdpcGh5X2xvY2socnR3ZGV2LVxcdTAwM2Vody1cXHUwMDNld2lwaHkpO1xcbiA3MzQ6XFx0XFx0XFx0c2VyLVxcdTAwM2Vzd19jbnQubDIrKztcXG4gNzM1OlxcdFxcdFxcdHNlcl9sMl9yZXNldF9zdF9wcmVfaGRsKHNlcik7XFxuIDczNjpcXHRcXHRcXHR3aXBoeV91bmxvY2socnR3ZGV2LVxcdTAwM2Vody1cXHUwMDNld2lwaHkpO1xcbiA3Mzc6XFx0XFxuIDczODpcXHRcXHRcXHRpZWVlODAyMTFfcmVzdGFydF9odyhydHdkZXYtXFx1MDAzZWh3KTtcXG4gNzM5OlxcdFxcdFxcdHNlcl9zZXRfYWxhcm0oc2VyLCBTRVJfUkVDRkdfVElNRU9VVCwgU0VSX0VWX0wyX1JFQ0ZHX1RJTUVPVVQpO1xcbiA3NDA6XFx0XFx0XFx0YnJlYWs7XFxuIDc0MTpcXHRcXG4gNzQyOlxcdFxcdGNhc2UgU0VSX0VWX0wyX1JFQ0ZHX1RJTUVPVVQ6XFxuIDc0MzpcXHRcXHRcXHRydHc4OV9pbmZvKHJ0d2RldiwgXFxcIkVycjogc2VyIEwyIHJlLWNvbmZpZyB0aW1lb3V0XFxcXG5cXFwiKTtcXG4gNzQ0OlxcdFxcdFxcdGZhbGx0aHJvdWdoO1xcbiA3NDU6XFx0XFx0Y2FzZSBTRVJfRVZfTDJfUkVDRkdfRE9ORTpcXG4gNzQ2OlxcdFxcdFxcdHNlcl9zdGF0ZV9nb3RvKHNlciwgU0VSX0lETEVfU1QpO1xcbiA3NDc6XFx0XFx0XFx0YnJlYWs7XFxuIDc0ODpcXHRcXG4gNzQ5OlxcdFxcdGNhc2UgU0VSX0VWX1NUQVRFX09VVDpcXG4gNzUwOlxcdFxcdFxcdHNlcl9kZWxfYWxhcm0oc2VyKTtcXG4gNzUxOlxcdFxcdFxcdGJyZWFrO1xcbiA3NTI6XFx0XFxuIDc1MzpcXHRcXHRkZWZhdWx0OlxcbiA3NTQ6XFx0XFx0XFx0YnJlYWs7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDIxOjQxOjMyLjI3MzI1NjQxOFoiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo0MzE5MTIxODU0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy5cblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBgcnR3ODlfd293X3N3YXBfZndgIEZ1bmN0aW9uKipcblxuUmlnaHQsIG15IGZvY3VzIGlzIG5vdyBvbiBgcnR3ODlfd293X3N3YXBfZndgLiBUaGUgaW1tZWRpYXRlIHF1ZXN0aW9uIHRoYXQgc3ByaW5ncyB0byBtaW5kLCBhcyBhbHdheXMsIGlzIGFib3V0IHBvdGVudGlhbCBjb25jdXJyZW5jeSBpc3N1ZXMuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIHZlcmlmeSB3aGV0aGVyIHRoZSBgd2lwaHlgIGxvY2sgaXMgYXBwcm9wcmlhdGVseSBoZWxkIHdpdGhpbiB0aGF0IGZ1bmN0aW9uLiBFbnN1cmluZyB0aGF0IGxldmVsIG9mIHByb3RlY3Rpb24gaXMgcGFyYW1vdW50IHRvIGF2b2lkaW5nIHN1YnRsZSByYWNlIGNvbmRpdGlvbnMgdGhhdCBjb3VsZCBsZWFkIHRvIGludGVybWl0dGVudCBmYWlsdXJlcywgZXNwZWNpYWxseSBpbiBhIGRyaXZlciBkZWFsaW5nIHdpdGggZmlybXdhcmUgc3dhcHBpbmcsIHdoZXJlIHRpbWluZyBpcyBjcml0aWNhbC5cblxuU28sIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byB0cmFjayBkb3duIGFsbCB0aGUgY2FsbCBzaXRlcyBvZiBgcnR3ODlfd293X3N3YXBfZndgLiBVbmRlcnN0YW5kaW5nICp3aGVyZSogdGhpcyBmdW5jdGlvbiBpcyBpbnZva2VkIHdpbGwgZ2l2ZSBtZSB0aGUgY3J1Y2lhbCBjb250ZXh0IEkgbmVlZCB0byBhc3Nlc3MgaXRzIHRocmVhZCBzYWZldHkgYW5kIGRldGVybWluZSBpZiB0aGUgbG9ja2luZyBzdHJhdGVneSBpcyBhZGVxdWF0ZSBpbiBlYWNoIHNjZW5hcmlvLiBLbm93aW5nIHRoZSBjYWxsIGdyYXBoIHdpbGwgcmVhbGx5IGhlbHAgdG8gZGV0ZXJtaW5lIGlmIHdlIGFyZSBzZWVpbmcgdGhlIGV4cGVjdGVkIGJlaGF2aW91ci5cblxuXG4iLCJJbnB1dFRva2VucyI6NTE1MTQsIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDIxOjQxOjM2LjU5MjM4MjkwMloiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTEyODExNzc4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJ0dzg5X3dvd19zd2FwX2Z3XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODlcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYz0xMjQwPXN0YXRpYyBpbnQgcnR3ODlfd293X2NoZWNrX2Z3X3N0YXR1cyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGJvb2wgd293X2VuYWJsZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtMTI1NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jOjEyNTY6c3RhdGljIGludCBydHc4OV93b3dfc3dhcF9mdyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGJvb2wgd293KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtMTI1Ny17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jPTE3MDg9c3RhdGljIGludCBydHc4OV93b3dfZW5hYmxlKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtMTcyMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jOjE3MjI6XFx0cmV0ID0gcnR3ODlfd293X3N3YXBfZncocnR3ZGV2LCB0cnVlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTE3MjMtXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYz0xNzQ5PXN0YXRpYyBpbnQgcnR3ODlfd293X2Rpc2FibGUoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy0xNzY4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmM6MTc2OTpcXHRyZXQgPSBydHc4OV93b3dfc3dhcF9mdyhydHdkZXYsIGZhbHNlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTE3NzAtXFx0aWYgKHJldCkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQyMTo0MTozNi43MDUyMDMyNloiLCJTZXEiOjMzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo1MzEzMzgyODc5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIFJlYWx0ZWsgcnR3ODkgRHJpdmVyJ3MgRnV6emluZyBQb3RlbnRpYWwqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgdGhvdWdodCB3YXMgdG8gcXVpY2tseSBhc3Nlc3MgYHJ0dzg5X3dvd19lbmFibGVgIGFuZCBgcnR3ODlfd293X2Rpc2FibGVgIGFuZCBob3cgdGhleSBpbnRlcmFjdCB3aXRoIHN1c3BlbmQvcmVzdW1lLCBub3RpbmcgdGhhdCBgd2lwaHktXHUwMDNlbXR4YCBpcyBoZWxkIGR1cmluZyB0aGVzZSBvcGVyYXRpb25zIGluIHRoZSBtYWM4MDIxMSBmcmFtZXdvcmsuIEJ1dCwgdGhhdCdzIG5vdCB0aGUgY3J1Y2lhbCBxdWVzdGlvbiBoZXJlLiBUaGUgcmVhbCBxdWVzdGlvbiBpcyB3aGV0aGVyIHN5emthbGxlciAqY2FuKiBnZXQgYXQgaXQuXG5cbkZpcnN0LCBsZXQncyBiZSBtZXRob2RpY2FsLiBXZSBuZWVkIHRvIGV2YWx1YXRlIGlmIHJ0dzg5IGlzICpyZWFjaGFibGUqIHZpYSBzeXprYWxsZXIuIFRoZSBkb2N1bWVudGF0aW9uIHByb3ZpZGVzIGNsZWFyIG5lZ2F0aXZlIGFuZCBwb3NpdGl2ZSBjcml0ZXJpYS4gV2UgbmVlZCB0byBhdm9pZCB0aG9zZSBcInN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZVwiIGhhcmR3YXJlIGRyaXZlcnMgc3VjaCBhcyB0aG9zZSB0aGF0IHJlcXVpcmUgc3BlY2lmaWMgQVNJQ3Mgb3IgUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gYSBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50LiBBbHNvLCB3ZSBuZWVkIHRvIHN0YXkgYXdheSBmcm9tIHRoZSBkcml2ZXJzIHRoYXQgYXJlIHRyaWdnZXJlZCBvbmx5IGR1cmluZyB1bnBsdWcgZXZlbnRzLiBPbiB0aGUgZmxpcCBzaWRlLCB3ZSB3YW50IHRoaW5ncyB0aGF0IGFyZSBlYXNpbHkgYWNjZXNzaWJsZSwgc3VjaCBhcyB0aHJvdWdoIHZpcnR1YWwgYnVzZXMgbGlrZSB2aXJ0aW8sIFVTQiBnYWRnZXQsIG5ldGxpbmssIG9yIHNvY2tldHMuXG5cbkFoLCB3YWl0LiAqVGhhdCdzKiB0aGUga2V5LiBJcyBydHc4OSBhIFVTQiBkcml2ZXI/IExldCdzIGNoZWNrLiBZZXMhIExvb2tpbmcgd2l0aGluIHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9gIGRpcmVjdG9yeSwgdGhlcmUgYXJlIGluZGVlZCBVU0IgZHJpdmVyIG1vZHVsZXM6IFJUVzg5Xzg4NTFCVSwgUlRXODlfODg1MkFVLCBSVFc4OV84ODUyQlUsIFJUVzg5Xzg4NTJDVSwgYW5kIFJUVzg5Xzg5MjJBVS4gVGhlc2UgbW9kdWxlcyByZWdpc3RlciBhIGB1c2JfZHJpdmVyYCB3aXRoIFVTQiBJRHMuIFRoaXMgaXMgcHJvbWlzaW5nLlxuXG5Ob3csIGRvZXMgc3l6a2FsbGVyICpzdXBwb3J0KiBmdXp6aW5nIFVTQiBkcml2ZXJzPyBJdCBkb2VzISBSZW1lbWJlciBgc3l6X3VzYl9jb25uZWN0YCwgYHN5el91c2JfY29udHJvbF9pb2AsIGFuZCBgc3l6X3VzYl9lcF93cml0ZWA/IFN5emthbGxlciB1c2VzIHRoZSBVU0IgUkFXIGdhZGdldCwgYSBkdW1teSBIQ0QsIGFuZCBVU0IgZW11bGF0aW9uIHRvIGludGVyYWN0IHdpdGggVVNCIGRldmljZXMuXG5cblNvLCB3aGVuIHN5emthbGxlciBlbXVsYXRlcyBhIFVTQiBkZXZpY2UgdGhhdCBtYXRjaGVzIFJlYWx0ZWsncyB2ZW5kb3IvZGV2aWNlIElELCBgcnR3ODlfdXNiX3Byb2JlYCB3aWxsIGJlIGNhbGxlZC4gTm93IHdlIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIHRoaXMgb3BlbnMgdGhlIGRvb3IgdG8gZnV6emluZyB0aGUgUmVhbHRlayBkcml2ZXIuIFRoaXMgaXMgdGhlIGNydWNpYWwgcG9pbnQhIERvZXMgYHJ0dzg5X3VzYl9wcm9iZWAgbG9hZCBmaXJtd2FyZT8gRG9lcyBpdCB0YWxrIHRvIGhhcmR3YXJlIGRpcmVjdGx5PyBMZXQncyBsb29rIGF0IGBydHc4OV9jb3JlX2luaXRgLCBgcnR3ODlfY29yZV9yZWdpc3RlcmAsIGFuZCB0aGUgZmlybXdhcmUgbG9hZGluZyBwcm9jZXNzIHdpdGhpbiBgcnR3ODlgLiBJZiB0aGVyZSdzIGZpcm13YXJlIGludm9sdmVkLCB0aGF0J3MgYSB2ZWN0b3IuIElmIHdlIGNhbiByZWFjaCB0aGUgaGFyZHdhcmUgdGhyb3VnaCBhIFwiZnV6emFibGVcIiBwYXRod2F5IHZpYSB0aGUgVVNCIGludGVyZmFjZSwgdGhlbiB3ZSBoYXZlIGEgcG9zaXRpdmUgY2FuZGlkYXRlLiBXZSBuZWVkIHRvIGFuYWx5emUgdGhpcyBtb3JlIGNsb3NlbHksIGJ1dCB0aGUgaW5pdGlhbCBzaWducyBsb29rIHZlcnkgZ29vZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTIyNjcsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NDgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMjE6NDE6NDIuMDE4NTg5NjI5WiIsIlNlcSI6MzQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MDIwMTUyOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJyZXF1ZXN0X2Zpcm13YXJlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODlcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jPTk5ND1ydHc4OV9lYXJseV9md19mZWF0dXJlX3JlY29nbml6ZShzdHJ1Y3QgZGV2aWNlICpkZXZpY2UsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTAxMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM6MTAxMTpcXHRcXHRyZXQgPSByZXF1ZXN0X2Zpcm13YXJlKFxcdTAwMjZmaXJtd2FyZSwgZndfbmFtZSwgZGV2aWNlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTAxMi1cXHRcXHRpZiAoIXJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jPTIwNjk9c3RhdGljIGludCBydHc4OV9sb2FkX2Zpcm13YXJlX3JlcShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMjA4NC1cXHRlbHNlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jOjIwODU6XFx0XFx0cmV0ID0gcmVxdWVzdF9maXJtd2FyZShcXHUwMDI2cmVxLVxcdTAwM2VmaXJtd2FyZSwgZndfbmFtZSwgcnR3ZGV2LVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0yMDg2LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQyMTo0MTo0Mi4wOTg3OTg0MTdaIiwiU2VxIjozNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjQwOTE4NzM5MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbnZlc3RpZ2F0aW5nIHRoZSBydHc4OSBXaS1GaSBEcml2ZXIqKlxuXG5BbHJpZ2h0LCBsZXQncyBkaXZlIGludG8gdGhpcyBgcnR3ODlgIGRyaXZlci4gU2luY2UgSSBzZWUgYHJ0dzg5YCwgbXkgZmlyc3QgdGhvdWdodCBpcyBXaS1GaSwgYW5kIHRoZSBtZW50aW9uIG9mIFVTQiBpbnRlcmZhY2VzIGNvbmZpcm1zIHRoaXMuIFRoZSBpbW1lZGlhdGUgZ29hbCBpcyB0byB1bmRlcnN0YW5kIGl0cyBidWlsZCBzdGF0dXMgYW5kIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gTXkgcHJvY2VzcyB3aWxsIGJlIHRvIHN0YXJ0IGJ5IGV4YW1pbmluZyB0aGUgS2NvbmZpZyBmaWxlcywgc3BlY2lmaWNhbGx5IGxvb2tpbmcgZm9yIHRob3NlIG5hbWVkIGFmdGVyIHRoZSBkcml2ZXIgZmFtaWx5OiBgUlRXODlgLCBgUlRXODlfQ09SRWAsIGBSVFc4OV9QQ0lgLCBgUlRXODlfVVNCYCwgYW5kIHNvIG9uLiBVbmRlcnN0YW5kaW5nIHRoZXNlIHdpbGwgbGF5IHRoZSBncm91bmR3b3JrIGZvciB1bmRlcnN0YW5kaW5nIHRoZSBzdHJ1Y3R1cmUgb2YgdGhlIHJlbGV2YW50IGZlYXR1cmVzLiBUaGUgbGlrZWx5IGxvY2F0aW9uIGZvciB0aGVzZSBLY29uZmlnIGVudHJpZXMgaXMgdGhlIGRpcmVjdG9yeSByZWxhdGVkIHRvIHRoZSBkcml2ZXIsIGFuZCB0aHVzIHRoZSBwYXRoIGBkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWdgIHdpbGwgcHJvdmlkZSB0aGUgaW5pdGlhbCBhbmQgbW9zdCBjb21wcmVoZW5zaXZlIG92ZXJ2aWV3LlxuXG5cbiIsIklucHV0VG9rZW5zIjo1Mzg2NiwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQyMTo0MTo0NC41MDc5ODkyMjFaIiwiU2VxIjozNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ2NDgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiA4NVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgT1IgQlNELTMtQ2xhdXNlXFxuICAgMjpcXHRtZW51Y29uZmlnIFJUVzg5XFxuICAgMzpcXHRcXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4MDIuMTFheCB3aXJlbGVzcyBjaGlwcyBzdXBwb3J0XFxcIlxcbiAgIDQ6XFx0XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxcbiAgIDU6XFx0XFx0aGVscFxcbiAgIDY6XFx0XFx0ICBUaGlzIG1vZHVsZSBhZGRzIHN1cHBvcnQgZm9yIG1hYzgwMjExLWJhc2VkIHdpcmVsZXNzIGRyaXZlcnMgdGhhdFxcbiAgIDc6XFx0XFx0ICBlbmFibGVzIFJlYWx0ZWsgSUVFRSA4MDIuMTFheCB3aXJlbGVzcyBjaGlwc2V0cy5cXG4gICA4OlxcdFxcbiAgIDk6XFx0XFx0ICBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGEgbW9kdWxlLCBpdCdsbCBiZSBjYWxsZWQgcnR3ODkuXFxuICAxMDpcXHRcXG4gIDExOlxcdGlmIFJUVzg5XFxuICAxMjpcXHRcXG4gIDEzOlxcdGNvbmZpZyBSVFc4OV9DT1JFXFxuICAxNDpcXHRcXHR0cmlzdGF0ZVxcbiAgMTU6XFx0XFx0c2VsZWN0IFdBTlRfREVWX0NPUkVEVU1QXFxuICAxNjpcXHRcXG4gIDE3OlxcdGNvbmZpZyBSVFc4OV9QQ0lcXG4gIDE4OlxcdFxcdHRyaXN0YXRlXFxuICAxOTpcXHRcXG4gIDIwOlxcdGNvbmZpZyBSVFc4OV9VU0JcXG4gIDIxOlxcdFxcdHRyaXN0YXRlXFxuICAyMjpcXHRcXG4gIDIzOlxcdGNvbmZpZyBSVFc4OV84ODUxQlxcbiAgMjQ6XFx0XFx0dHJpc3RhdGVcXG4gIDI1OlxcdFxcbiAgMjY6XFx0Y29uZmlnIFJUVzg5Xzg4NTJBXFxuICAyNzpcXHRcXHR0cmlzdGF0ZVxcbiAgMjg6XFx0XFxuICAyOTpcXHRjb25maWcgUlRXODlfODg1MkJfQ09NTU9OXFxuICAzMDpcXHRcXHR0cmlzdGF0ZVxcbiAgMzE6XFx0XFxuICAzMjpcXHRjb25maWcgUlRXODlfODg1MkJcXG4gIDMzOlxcdFxcdHRyaXN0YXRlXFxuICAzNDpcXHRcXG4gIDM1OlxcdGNvbmZpZyBSVFc4OV84ODUyQlRcXG4gIDM2OlxcdFxcdHRyaXN0YXRlXFxuICAzNzpcXHRcXG4gIDM4OlxcdGNvbmZpZyBSVFc4OV84ODUyQ1xcbiAgMzk6XFx0XFx0dHJpc3RhdGVcXG4gIDQwOlxcdFxcbiAgNDE6XFx0Y29uZmlnIFJUVzg5Xzg5MjJBXFxuICA0MjpcXHRcXHR0cmlzdGF0ZVxcbiAgNDM6XFx0XFxuICA0NDpcXHRjb25maWcgUlRXODlfODkyMkRcXG4gIDQ1OlxcdFxcdHRyaXN0YXRlXFxuICA0NjpcXHRcXG4gIDQ3OlxcdGNvbmZpZyBSVFc4OV84ODUxQkVcXG4gIDQ4OlxcdFxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIDg4NTFCRSBQQ0kgd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNikgYWRhcHRlclxcXCJcXG4gIDQ5OlxcdFxcdGRlcGVuZHMgb24gUENJXFxuICA1MDpcXHRcXHRzZWxlY3QgUlRXODlfQ09SRVxcbiAgNTE6XFx0XFx0c2VsZWN0IFJUVzg5X1BDSVxcbiAgNTI6XFx0XFx0c2VsZWN0IFJUVzg5Xzg4NTFCXFxuICA1MzpcXHRcXHRoZWxwXFxuICA1NDpcXHRcXHQgIFNlbGVjdCB0aGlzIG9wdGlvbiB3aWxsIGVuYWJsZSBzdXBwb3J0IGZvciA4ODUxQkUgY2hpcHNldFxcbiAgNTU6XFx0XFxuICA1NjpcXHRcXHQgIDgwMi4xMWF4IFBDSWUgd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNikgYWRhcHRlclxcbiAgNTc6XFx0XFxuICA1ODpcXHRjb25maWcgUlRXODlfODg1MUJVXFxuICA1OTpcXHRcXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4ODUxQlUgVVNCIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDYpIGFkYXB0ZXJcXFwiXFxuICA2MDpcXHRcXHRkZXBlbmRzIG9uIFVTQlxcbiAgNjE6XFx0XFx0c2VsZWN0IFJUVzg5X0NPUkVcXG4gIDYyOlxcdFxcdHNlbGVjdCBSVFc4OV9VU0JcXG4gIDYzOlxcdFxcdHNlbGVjdCBSVFc4OV84ODUxQlxcbiAgNjQ6XFx0XFx0aGVscFxcbiAgNjU6XFx0XFx0ICBTZWxlY3QgdGhpcyBvcHRpb24gd2lsbCBlbmFibGUgc3VwcG9ydCBmb3IgODg1MUJVIGNoaXBzZXRcXG4gIDY2OlxcdFxcbiAgNjc6XFx0XFx0ICA4MDIuMTFheCBVU0Igd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNikgYWRhcHRlclxcbiAgNjg6XFx0XFxuICA2OTpcXHRjb25maWcgUlRXODlfODg1MkFFXFxuICA3MDpcXHRcXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4ODUyQUUgUENJIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDYpIGFkYXB0ZXJcXFwiXFxuICA3MTpcXHRcXHRkZXBlbmRzIG9uIFBDSVxcbiAgNzI6XFx0XFx0c2VsZWN0IFJUVzg5X0NPUkVcXG4gIDczOlxcdFxcdHNlbGVjdCBSVFc4OV9QQ0lcXG4gIDc0OlxcdFxcdHNlbGVjdCBSVFc4OV84ODUyQVxcbiAgNzU6XFx0XFx0aGVscFxcbiAgNzY6XFx0XFx0ICBTZWxlY3QgdGhpcyBvcHRpb24gd2lsbCBlbmFibGUgc3VwcG9ydCBmb3IgODg1MkFFIGNoaXBzZXRcXG4gIDc3OlxcdFxcbiAgNzg6XFx0XFx0ICA4MDIuMTFheCBQQ0llIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDYpIGFkYXB0ZXJcXG4gIDc5OlxcdFxcbiAgODA6XFx0Y29uZmlnIFJUVzg5Xzg4NTJBVVxcbiAgODE6XFx0XFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgODg1MkFVIFVTQiB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2KSBhZGFwdGVyXFxcIlxcbiAgODI6XFx0XFx0ZGVwZW5kcyBvbiBVU0JcXG4gIDgzOlxcdFxcdHNlbGVjdCBSVFc4OV9DT1JFXFxuICA4NDpcXHRcXHRzZWxlY3QgUlRXODlfVVNCXFxuICA4NTpcXHRcXHRzZWxlY3QgUlRXODlfODg1MkFcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMjE6NDE6NDQuNTA4MTM3OTNaIiwiU2VxIjozNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6ODE2MjgyNTEwNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIEFuYWx5c2lzIGZvciBSZWFsdGVrIFJUVzg5IERyaXZlciBLZXkgSXRlcmF0aW9uIENoYW5nZXMqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBJIHNlZSBhIGRlcGVuZGVuY3kgc3RydWN0dXJlOiBgUlRXODlgIHJlbGllcyBvbiBgTUFDODAyMTFgLiBTcGVjaWZpYyBSVFc4OSBVU0IgZHJpdmVycywgc3VjaCBhcyBgUlRXODlfODg1MUJVYCwgZGVwZW5kIG9uIGBVU0JgIGFuZCBzZWxlY3QgYFJUVzg5X0NPUkVgIGFuZCBgUlRXODlfVVNCYC4gIFRoZXJlJ3MgYWxzbyBhIFBDSSB2YXJpYW50LCBgUlRXODlfODg1MUJFYCwgdGhhdCBkZXBlbmRzIG9uIGBQQ0lgIGFuZCBhbHNvIHNlbGVjdHMgYFJUVzg5X0NPUkVgLlxuXG5Ob3csIHRoZSBjb3JlIG9mIHRoZSBtYXR0ZXI6IEknbSBsb29raW5nIGF0IGNoYW5nZXMgaW4gYGNhbS5jYCBhbmQgYHdvdy5jYC4gIFNwZWNpZmljYWxseSwgdGhlIGNvZGUgaXMgdHJhbnNpdGlvbmluZyBmcm9tIGBpZWVlODAyMTFfaXRlcl9rZXlzX3JjdWAgdG8gYGllZWU4MDIxMV9pdGVyX2tleXNgIHdpdGhpbiB0aGUgYHJ0dzg5X2NhbV9yZXNldF9rZXlzYCwgYHJ0dzg5X3dvd19jb25zdHJ1Y3Rfa2V5X2luZm9gLCBhbmQgYHJ0dzg5X3dvd191cGRhdGVfa2V5X2luZm9gIGZ1bmN0aW9ucy4gIFRoaXMgY2hhbmdlIHNlZW1zIHRvIGluZGljYXRlIGEgc2hpZnQgaW4gaG93IGtleSBpdGVyYXRpb24gaXMgaGFuZGxlZC4gVGhlIGNyaXRpY2FsIHBvaW50IGlzIHRoYXQgYGllZWU4MDIxMV9pdGVyX2tleXNgIGNvbnRhaW5zIGBsb2NrZGVwX2Fzc2VydF93aXBoeShody1cdTAwM2V3aXBoeSlgLCBtZWFuaW5nIHdlJ3JlIGludHJvZHVjaW5nIG9yIHRpZ2h0ZW5pbmcgbG9ja2luZyByZXF1aXJlbWVudHMgcmVsYXRlZCB0byB0aGUgd2lwaHkuXG5cblRoaXMgaXMgYSByZWQgZmxhZywgcmlnaHQ/ICBUaGUgZG9jdW1lbnRhdGlvbiBjbGVhcmx5IHN0YXRlcyB0aGF0IGNoYW5nZXMgaW50cm9kdWNpbmcgb3IgbW9kaWZ5aW5nIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgaW4gcmVhY2hhYmxlIGNvZGUgKm11c3QqIGJlIGZ1enplZCwgcGFydGljdWxhcmx5IGZvciBkcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMsIHN1Y2ggYXMgVVNCIGdhZGdldC4gIENydWNpYWxseSwgdGhlIFJUVzg5IFVTQiBkcml2ZXJzIChgcnR3ODlfODg1MWJ1YCwgYHJ0dzg5Xzg4NTJhdWAsIGBydHc4OV84ODUyYnVgLCBgcnR3ODlfODg1MmN1YCwgYW5kIGBydHc4OV84OTIyYXVgKSAqYXJlKiByZWFjaGFibGUgdmlhIFVTQiBnYWRnZXQgZW11bGF0aW9uIHdpdGhpbiBTeXprYWxsZXIuICBGdXJ0aGVybW9yZSwgb3BlcmF0aW9ucyBsaWtlIG5sODAyMTEgbmV0bGluayBjb21tYW5kcywgbWFjODAyMTEgaW50ZXJhY3Rpb25zLCBzdXNwZW5kL3Jlc3VtZSBjeWNsZXMsIGFuZCBTRVIgZXJyb3IgaGFuZGxpbmcgY2FuIGV4ZXJjaXNlIHRoZSB3b3dsYW4gYW5kIENBTSBrZXkgcmVzZXQgcm91dGluZXMuICBUaGVzZSBhcmUgYWxsIGF2ZW51ZXMgd2hlcmUgdGhpcyBjaGFuZ2UgaW4ga2V5IGl0ZXJhdGlvbiBjb3VsZCBpbnRyb2R1Y2UgbmV3LCBvciB1bmNvdmVyIGV4aXN0aW5nLCByYWNlIGNvbmRpdGlvbnMgb3IgbG9ja2luZyBpc3N1ZXMuXG5cblRoZSBtYWluIHN5bWJvbHMgSSBuZWVkIHRvIGZvY3VzIG9uIGFyZTogYHJ0dzg5X2NhbV9yZXNldF9rZXlzYCwgYHJ0dzg5X3dvd19jb25zdHJ1Y3Rfa2V5X2luZm9gLCBhbmQgYHJ0dzg5X3dvd191cGRhdGVfa2V5X2luZm9gLCB3aGljaCBhcmUgZGlyZWN0bHkgbW9kaWZpZWQgYnkgdGhlIHBhdGNoLiBBZGRpdGlvbmFsIHN5bWJvbHMgb2YgaW50ZXJlc3Q6IGBydHc4OV93b3dfc3VzcGVuZGAsIGBydHc4OV93b3dfcmVzdW1lYCwgYW5kIGBzZXJfcmVzZXRfbWFjX2JpbmRpbmdgLCB3aGljaCBhcmUgcG90ZW50aWFsbHkgaW5kaXJlY3RseSBhZmZlY3RlZCBieSB0aGVzZSBjaGFuZ2VzLlxuXG5UbyBlbnN1cmUgdGhpcyBpcyB0ZXN0YWJsZSwgSSdsbCBuZWVkIHRoZXNlIGNvbmZpZ3VyYXRpb25zIGVuYWJsZWQ6IGBSVFc4OWAsIGBSVFc4OV9DT1JFYCwgYFJUVzg5X1VTQmAsIGFuZCBhIHNwZWNpZmljIFVTQiBkcml2ZXIgbGlrZSBgUlRXODlfODg1MkFVYCBhbG9uZyB3aXRoIGBNQUM4MDIxMWAuXG5cblRvIHN1bW1hcml6ZTogVGhpcyBwYXRjaCByZXF1aXJlcyBmdXp6aW5nIGR1ZSB0byB0aGUgaW50cm9kdWN0aW9uIG9mIHdpcGh5IGxvY2tpbmcgYXNzZXJ0aW9ucyBkdXJpbmcga2V5IGl0ZXJhdGlvbiwgcG90ZW50aWFsbHkgYWZmZWN0aW5nIHN5bmNocm9uaWNpdHkgd2l0aGluIHdvd2xhbiBhbmQgQ0FNIGtleSByZXNldCByb3V0aW5lcyBpbiBhIFVTQiBhY2Nlc3NpYmxlIHdpcmVsZXNzIGRyaXZlci4gSSdtIGNhbGxpbmcgaXQ6IHdvcnRoIGZ1enppbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU1MzMxLCJPdXRwdXRUb2tlbnMiOjIyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2MjEsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQyMTo0MTo1Mi42NzA5NjU2OTZaIiwiU2VxIjozOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTcyOTg5MzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlJUVzg5XCIsXG4gICAgXCJSVFc4OV9DT1JFXCIsXG4gICAgXCJSVFc4OV9VU0JcIixcbiAgICBcIlJUVzg5Xzg4NTJBVVwiLFxuICAgIFwiTUFDODAyMTFcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJydHc4OV9jYW1fcmVzZXRfa2V5c1wiLFxuICAgIFwicnR3ODlfd293X2NvbnN0cnVjdF9rZXlfaW5mb1wiLFxuICAgIFwicnR3ODlfd293X3VwZGF0ZV9rZXlfaW5mb1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlcGxhY2VzIFJDVS1iYXNlZCBrZXkgaXRlcmF0aW9uIChpZWVlODAyMTFfaXRlcl9rZXlzX3JjdSkgd2l0aCBpZWVlODAyMTFfaXRlcl9rZXlzIGluIHJ0dzg5IENBTSBhbmQgV29XTEFOIHBhdGhzLiBpZWVlODAyMTFfaXRlcl9rZXlzIGVuZm9yY2VzIGEgd2lwaHkgbXV0ZXggYXNzZXJ0aW9uIChsb2NrZGVwX2Fzc2VydF93aXBoeSksIGNoYW5naW5nIGxvY2tpbmcgYW5kIHN5bmNocm9uaXphdGlvbiBhc3N1bXB0aW9ucyBkdXJpbmcga2V5IHJlc2V0IGFuZCBXb1dMQU4ga2V5IGNvbnN0cnVjdGlvbi91cGRhdGVzLiBUaGUgZHJpdmVyIGlzIGFjY2Vzc2libGUgdmlhIFVTQiBnYWRnZXQgZW11bGF0aW9uIGFuZCB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlJUVzg5XCIsXG4gICAgXCJSVFc4OV9DT1JFXCIsXG4gICAgXCJSVFc4OV9VU0JcIixcbiAgICBcIlJUVzg5Xzg4NTJBVVwiLFxuICAgIFwiTUFDODAyMTFcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJydHc4OV9jYW1fcmVzZXRfa2V5c1wiLFxuICAgIFwicnR3ODlfd293X2NvbnN0cnVjdF9rZXlfaW5mb1wiLFxuICAgIFwicnR3ODlfd293X3VwZGF0ZV9rZXlfaW5mb1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlcGxhY2VzIFJDVS1iYXNlZCBrZXkgaXRlcmF0aW9uIChpZWVlODAyMTFfaXRlcl9rZXlzX3JjdSkgd2l0aCBpZWVlODAyMTFfaXRlcl9rZXlzIGluIHJ0dzg5IENBTSBhbmQgV29XTEFOIHBhdGhzLiBpZWVlODAyMTFfaXRlcl9rZXlzIGVuZm9yY2VzIGEgd2lwaHkgbXV0ZXggYXNzZXJ0aW9uIChsb2NrZGVwX2Fzc2VydF93aXBoeSksIGNoYW5naW5nIGxvY2tpbmcgYW5kIHN5bmNocm9uaXphdGlvbiBhc3N1bXB0aW9ucyBkdXJpbmcga2V5IHJlc2V0IGFuZCBXb1dMQU4ga2V5IGNvbnN0cnVjdGlvbi91cGRhdGVzLiBUaGUgZHJpdmVyIGlzIGFjY2Vzc2libGUgdmlhIFVTQiBnYWRnZXQgZW11bGF0aW9uIGFuZCB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQyMTo0MTo1Mi43ODgyNzE3MzRaIiwiU2VxIjozOSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI2MzMyNzE1MDA3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMjE6NDE6NTIuNzg4NzU2MzY0WiIsIlNlcSI6NDAsIk5lc3RpbmciOjIsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6MjYzMzIyMjQ0NzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlcGxhY2VzIGByY3VfcmVhZF9sb2NrKClgIC8gYGllZWU4MDIxMV9pdGVyX2tleXNfcmN1KClgIHdpdGggYGllZWU4MDIxMV9pdGVyX2tleXMoKWAgaW4gdGhlIFJlYWx0ZWsgcnR3ODkgZHJpdmVyIChgcnR3ODlfY2FtX3Jlc2V0X2tleXNgLCBgcnR3ODlfd293X2NvbnN0cnVjdF9rZXlfaW5mb2AsIGFuZCBgcnR3ODlfd293X3VwZGF0ZV9rZXlfaW5mb2ApLlxcblxcblRoaXMgY2hhbmdlIHB1cmVseSBhZGp1c3RzIGhvdyB0aGUgZHJpdmVyIGl0ZXJhdGVzIG92ZXIgbWFjODAyMTEga2V5cywgcmVseWluZyBvbiB0aGUgY2FsbGVyIGhvbGRpbmcgdGhlIHdpcGh5IGxvY2sgKGBsb2NrZGVwX2Fzc2VydF93aXBoeWApIGluc3RlYWQgb2YgZW50ZXJpbmcgYW4gUkNVIHJlYWQtc2lkZSBjcml0aWNhbCBzZWN0aW9uLlxcblxcblRoZXJlIGFyZSBubyBuZXcgbWVtb3J5IGFsbG9jYXRpb25zLCB1bmluaXRpYWxpemVkIHZhcmlhYmxlIGFjY2Vzc2VzLCBpbmZvLWxlYWtzIHRvIHVzZXJzcGFjZSwgb3IgYWx0ZXJlZCBidWZmZXIgYm91bmRzLiBBbnkgcG90ZW50aWFsIGxvY2tpbmcgaXNzdWVzIChzdWNoIGFzIG1pc3Npbmcgd2lwaHkgbG9jaykgb3Igc3luY2hyb25pemF0aW9uL21lbW9yeSBzYWZldHkgYnVncyAoc3VjaCBhcyBjb25jdXJyZW50IGxpc3QgYWNjZXNzIG9yIHVzZS1hZnRlci1mcmVlKSBhcmUgZGV0ZWN0YWJsZSBieSBMT0NLREVQIGFuZCBLQVNBTi4gVGhlcmVmb3JlLCBLTVNBTiBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiVGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjRcblxuRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNDg5NjcyNjEyMmE0OWMyZjY5NzRkNzJkZmNiNmVjMzJkNDE0ZTc4Y1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgU2VwIDggMjE6NDA6MjggMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NhbS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jYW0uY1xuaW5kZXggN2M2MmVjZTEzN2QwMS4uMjJmMjFhMDRhOTZkMiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY2FtLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY2FtLmNcbkBAIC02MDUsOSArNjA1LDcgQEAgdm9pZCBydHc4OV9jYW1fZGVpbml0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldiwgc3RydWN0IHJ0dzg5X3ZpZl9saW5rICpydHd2aWZfbGlcbiBcbiB2b2lkIHJ0dzg5X2NhbV9yZXNldF9rZXlzKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcbiB7XG4tXHRyY3VfcmVhZF9sb2NrKCk7XG4tXHRpZWVlODAyMTFfaXRlcl9rZXlzX3JjdShydHdkZXYtXHUwMDNlaHcsIE5VTEwsIHJ0dzg5X2NhbV9yZXNldF9rZXlfaXRlciwgcnR3ZGV2KTtcbi1cdHJjdV9yZWFkX3VubG9jaygpO1xuK1x0aWVlZTgwMjExX2l0ZXJfa2V5cyhydHdkZXYtXHUwMDNlaHcsIE5VTEwsIHJ0dzg5X2NhbV9yZXNldF9rZXlfaXRlciwgcnR3ZGV2KTtcbiB9XG4gXG4gc3RhdGljIGludCBydHc4OV9jYW1fZ2V0X2F2YWlsX2FkZHJfY2FtKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuY1xuaW5kZXggMmRmYTI0YzU0ZTdkNy4uMGJmMzQ2OTJjN2NlMyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmNcbkBAIC00NzMsMTAgKzQ3Myw4IEBAIHN0YXRpYyB2b2lkIHJ0dzg5X3dvd19jb25zdHJ1Y3Rfa2V5X2luZm8oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuIFx0c3RydWN0IGllZWU4MDIxMV92aWYgKndvd192aWYgPSBydHd2aWZfbGlua190b192aWYocnR3dmlmX2xpbmspO1xuIFx0Ym9vbCBlcnIgPSBmYWxzZTtcbiBcbi1cdHJjdV9yZWFkX2xvY2soKTtcbi1cdGllZWU4MDIxMV9pdGVyX2tleXNfcmN1KHJ0d2Rldi1cdTAwM2Vodywgd293X3ZpZixcbi1cdFx0XHRcdHJ0dzg5X3dvd19nZXRfa2V5X2luZm9faXRlciwgXHUwMDI2ZXJyKTtcbi1cdHJjdV9yZWFkX3VubG9jaygpO1xuK1x0aWVlZTgwMjExX2l0ZXJfa2V5cyhydHdkZXYtXHUwMDNlaHcsIHdvd192aWYsXG4rXHRcdFx0ICAgIHJ0dzg5X3dvd19nZXRfa2V5X2luZm9faXRlciwgXHUwMDI2ZXJyKTtcbiBcbiBcdGlmIChlcnIpIHtcbiBcdFx0cnR3ODlfd293X2tleV9jbGVhcihydHdkZXYpO1xuQEAgLTY5NSwxMCArNjkzLDggQEAgc3RhdGljIHZvaWQgcnR3ODlfd293X3VwZGF0ZV9rZXlfaW5mbyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGJvb2wgcnhfcmVhZHkpXG4gXHRzdHJ1Y3QgaWVlZTgwMjExX2Jzc19jb25mICpic3NfY29uZjtcbiBcdHN0cnVjdCBpZWVlODAyMTFfa2V5X2NvbmYgKmtleTtcbiBcbi1cdHJjdV9yZWFkX2xvY2soKTtcbi1cdGllZWU4MDIxMV9pdGVyX2tleXNfcmN1KHJ0d2Rldi1cdTAwM2Vodywgd293X3ZpZixcbi1cdFx0XHRcdHJ0dzg5X3dvd19zZXRfa2V5X2luZm9faXRlciwgXHUwMDI2ZGF0YSk7XG4tXHRyY3VfcmVhZF91bmxvY2soKTtcbitcdGllZWU4MDIxMV9pdGVyX2tleXMocnR3ZGV2LVx1MDAzZWh3LCB3b3dfdmlmLFxuK1x0XHRcdCAgICBydHc4OV93b3dfc2V0X2tleV9pbmZvX2l0ZXIsIFx1MDAyNmRhdGEpO1xuIFxuIFx0aWYgKGRhdGEuZXJyb3IpIHtcbiBcdFx0cnR3ODlfZGVidWcocnR3ZGV2LCBSVFc4OV9EQkdfV09XLCBcIiVzIGVycm9yXFxuXCIsIF9fZnVuY19fKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDIxOjQxOjUyLjc4ODc1NzM3NFoiLCJTZXEiOjQxLCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxMTg0OTQxODgyOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgVGhpcyBMaW51eCBLZXJuZWwgUGF0Y2ggZm9yIEtNU0FOIEZ1enppbmcgTmVlZHMqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZGVjaWRlIGlmIHRoaXMgcGF0Y2ggc2VyaWVzIG5lY2Vzc2l0YXRlcyBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHJ1bi4gTGV0J3MgYnJlYWsgaXQgZG93bi4gSXQgbG9va3MgbGlrZSB0aGUgbWFpbiBjaGFuZ2UgaXMgaW4gdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2AgZGlyZWN0b3J5LCBzcGVjaWZpY2FsbHkgYGNhbS5jYCBhbmQgYHdvdy5jYC4gVGhlIGNvcmUgb2YgdGhlIG1vZGlmaWNhdGlvbiBpcyB0aGUgcmVwbGFjZW1lbnQgb2YgYHJjdV9yZWFkX2xvY2soKWAvYGllZWU4MDIxMV9pdGVyX2tleXNfcmN1KClgL2ByY3VfcmVhZF91bmxvY2soKWAgc2VxdWVuY2VzIHdpdGggYSBzaW1wbGUgYGllZWU4MDIxMV9pdGVyX2tleXMoKWAuIFRoaXMgcGF0dGVybiByZXBlYXRzIGluIGEgY291cGxlIG9mIHBsYWNlcyB3aXRoaW4gdGhvc2UgZmlsZXMuXG5cbk15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHRoaXMgaXMgYSBjaGFuZ2UgaW52b2x2aW5nIFJDVSAoUmVhZC1Db3B5LVVwZGF0ZSkgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXMgaW4gYSB3aXJlbGVzcyBkcml2ZXIgY29udGV4dC4gVGhpcyBpbW1lZGlhdGVseSBmbGFncyBhIHBvdGVudGlhbCBhcmVhIGZvciBmdXp6aW5nIGNvbnNpZGVyYXRpb24uIFRoZSByZW1vdmFsIG9mIFJDVSBzdWdnZXN0cyBhIHNoaWZ0IGluIGhvdyBrZXkgaXRlcmF0aW9uIGlzIGhhbmRsZWQuIElzIGl0IHN0aWxsIHNhZmU/IERpZCB0aGV5IG1vdmUgdGhlIGxvY2tpbmcgdG8gYW5vdGhlciBwb2ludD8gSXMgdGhlcmUgYSBzdWJ0bGUgcmFjZSBjb25kaXRpb24gdGhleSByZW1vdmVkP1xuXG5UbyBnZXQgYSBjbGVhcmVyIHBpY3R1cmUgYW5kIGRldGVybWluZSB0aGUgZnV6emluZyBpbXBsaWNhdGlvbnMsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBudWFuY2VzIG9mIHRoZSBmdW5jdGlvbnMgaW52b2x2ZWQuIEknbSBnb2luZyB0byBxdWlja2x5IGdyZXAgdGhyb3VnaCB0aGUga2VybmVsIHNvdXJjZSBhbmQgcG9zc2libHkgcmVhZCB0aGUgZmlsZXMgY29udGFpbmluZyBgaWVlZTgwMjExX2l0ZXJfa2V5c2AgYW5kIGBpZWVlODAyMTFfaXRlcl9rZXlzX3JjdWAgdG8gc2VlIGhvdyB0aG9zZSBhcmUgaW1wbGVtZW50ZWQgYW5kLCBtb3JlIGltcG9ydGFudGx5LCB3aGF0IGNvbnRleHQgdGhleSBhcmUgdXNlZCB3aXRoaW4uIFVuZGVyc3RhbmRpbmcgdGhlIGRhdGEgc3RydWN0dXJlcyBhbmQgY29udHJvbCBmbG93IGFyb3VuZCB0aGVzZSBrZXkgaXRlcmF0aW9ucyBpcyBjcnVjaWFsLiBUaGUgZmFjdCB0aGF0IHRoaXMgaW1wYWN0cyBib3RoIGBjYW0uY2AgYW5kIGB3b3cuY2Agc3VnZ2VzdHMgYSBtb3JlIGdlbmVyYWwgcGF0dGVybiwgaW5jcmVhc2luZyB0aGUgbGlrZWxpaG9vZCBvZiBhIHN1YnRsZSwgYnV0IHN5c3RlbS13aWRlLCBpc3N1ZS4gSSBuZWVkIHRvIGJlIHN1cmUgdGhhdCB0aGVzZSBjaGFuZ2VzIGFyZSBub3QgaW50cm9kdWNpbmcsIG9yIGV4cG9zaW5nLCBhbnkgbmV3IHJhY2UgY29uZGl0aW9ucyB0aGF0IGNvdWxkIGxlYWQgdG8gbWVtb3J5IGNvcnJ1cHRpb24gb3IgZGF0YSByYWNlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjgxOCwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI3MiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDIxOjQyOjA0LjYzODE4MDczMloiLCJTZXEiOjQyLCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ0Mjc3NDc4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImllZWU4MDIxMV9pdGVyX2tleXNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L21hYzgwMjExXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9tYWM4MDIxMS9rZXkuYz0xMDAxPWllZWU4MDIxMV9rZXlfaXRlcihzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4tLVxcbm5ldC9tYWM4MDIxMS9rZXkuYy0xMDE5LVxcbm5ldC9tYWM4MDIxMS9rZXkuYzoxMDIwOnZvaWQgaWVlZTgwMjExX2l0ZXJfa2V5cyhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG5uZXQvbWFjODAyMTEva2V5LmMtMTAyMS1cXHRcXHRcXHQgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcXG4tLVxcbm5ldC9tYWM4MDIxMS9rZXkuYy0xMDQ2LX1cXG5uZXQvbWFjODAyMTEva2V5LmM6MTA0NzpFWFBPUlRfU1lNQk9MKGllZWU4MDIxMV9pdGVyX2tleXMpO1xcbm5ldC9tYWM4MDIxMS9rZXkuYy0xMDQ4LVxcbm5ldC9tYWM4MDIxMS9rZXkuYz0xMDQ5PXN0YXRpYyB2b2lkXFxubmV0L21hYzgwMjExL2tleS5jOjEwNTA6X2llZWU4MDIxMV9pdGVyX2tleXNfcmN1KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbm5ldC9tYWM4MDIxMS9rZXkuYy0xMDUxLVxcdFxcdFxcdCBzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9rZXkuYy0xMDY0LVxcbm5ldC9tYWM4MDIxMS9rZXkuYzoxMDY1OnZvaWQgaWVlZTgwMjExX2l0ZXJfa2V5c19yY3Uoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxubmV0L21hYzgwMjExL2tleS5jLTEwNjYtXFx0XFx0XFx0ICAgICBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxcbi0tXFxubmV0L21hYzgwMjExL2tleS5jLTEwNzgtXFx0XFx0c2RhdGEgPSB2aWZfdG9fc2RhdGEodmlmKTtcXG5uZXQvbWFjODAyMTEva2V5LmM6MTA3OTpcXHRcXHRfaWVlZTgwMjExX2l0ZXJfa2V5c19yY3UoaHcsIHNkYXRhLCBpdGVyLCBpdGVyX2RhdGEpO1xcbm5ldC9tYWM4MDIxMS9rZXkuYy0xMDgwLVxcdH0gZWxzZSB7XFxubmV0L21hYzgwMjExL2tleS5jLTEwODEtXFx0XFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9yY3Uoc2RhdGEsIFxcdTAwMjZsb2NhbC1cXHUwMDNlaW50ZXJmYWNlcywgbGlzdClcXG5uZXQvbWFjODAyMTEva2V5LmM6MTA4MjpcXHRcXHRcXHRfaWVlZTgwMjExX2l0ZXJfa2V5c19yY3UoaHcsIHNkYXRhLCBpdGVyLCBpdGVyX2RhdGEpO1xcbm5ldC9tYWM4MDIxMS9rZXkuYy0xMDgzLVxcdH1cXG5uZXQvbWFjODAyMTEva2V5LmMtMTA4NC19XFxubmV0L21hYzgwMjExL2tleS5jOjEwODU6RVhQT1JUX1NZTUJPTChpZWVlODAyMTFfaXRlcl9rZXlzX3JjdSk7XFxubmV0L21hYzgwMjExL2tleS5jLTEwODYtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDIxOjQyOjA0Ljc4MjQ2NDk2WiIsIlNlcSI6NDMsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjE3NzI3MjUzNTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSdtIHRoaW5raW5nIHRocm91Z2ggdGhpcyBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBNQUM4MDIxMSBLZXkgTWFuYWdlbWVudCBJbXBsZW1lbnRhdGlvbioqXG5cbk9rYXksIHRpbWUgdG8gZGlnIGludG8gdGhlIGBuZXQvbWFjODAyMTEva2V5LmNgIGZpbGUuIFNwZWNpZmljYWxseSwgSSdtIGZvY3VzaW5nIG9uIGxpbmVzIDEwMDAgdG8gMTA4MC4gVGhhdCByZWdpb24gdXN1YWxseSBkZWFscyB3aXRoIGtleS1yZWxhdGVkIGxvZ2ljLCBhbmQgYmFzZWQgb24gdGhlIHJlY2VudCBjaGFuZ2VzIEkndmUgYmVlbiB0cmFja2luZywgSSBoYXZlIGEgZmVlbGluZyB0aGUgc291cmNlIG9mIHRoZSBpc3N1ZSBJJ20gY2hhc2luZyBpcyB3aXRoaW4gdGhlIGtleSBtYW5hZ2VtZW50IHN5c3RlbS4gVGhpcyBpcyB3aGVyZSB0aGUgY29yZSBrZXkgc2V0dXAgYW5kIGhhbmRsaW5nIGlzIGRvbmUgd2l0aGluIHRoZSBtYWM4MDIxMSBmcmFtZXdvcmssIHNvIHRoaXMgaXMgYSBncmVhdCBwbGFjZSB0byBzdGFydCBteSBpbnZlc3RpZ2F0aW9uLiBJJ20gZXhwZWN0aW5nIHRvIHNlZSBmdW5jdGlvbnMgcmVzcG9uc2libGUgZm9yIGFkZGluZywgZGVsZXRpbmcsIGFuZCB1cGRhdGluZyBjcnlwdG9ncmFwaGljIGtleXMsIHBlcmhhcHMgd2l0aCByZWxhdGVkIGVycm9yIGNoZWNraW5nLiBJJ20ga2VlbiB0byBzZWUgdGhlIGludGVybmFsIGRhdGEgc3RydWN0dXJlcyB1c2VkIHRvIHJlcHJlc2VudCBrZXlzLCB0b28sIGFzIHRoYXQgd2lsbCBpbGx1bWluYXRlIGhvdyB0aGVzZSBrZXlzIGFyZSBzdG9yZWQgYW5kIG1hbmFnZWQuIExldCdzIGdldCBjcmFja2luZyBhbmQgaWRlbnRpZnkgd2hlcmUgdGhlIHByb2JsZW0gaXMuLi5cblxuXG4iLCJJbnB1dFRva2VucyI6NDI2MywiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDIxOjQyOjA2LjU1NTIwMzY4M1oiLCJTZXEiOjQ0LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNjEwNTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L21hYzgwMjExL2tleS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEwMDAsXG4gIFwiTGluZUNvdW50XCI6IDg1XG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjEwMDA6XFx0c3RhdGljIHZvaWRcXG4xMDAxOlxcdGllZWU4MDIxMV9rZXlfaXRlcihzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4xMDAyOlxcdFxcdFxcdCAgIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXFxuMTAwMzpcXHRcXHRcXHQgICBzdHJ1Y3QgaWVlZTgwMjExX2tleSAqa2V5LFxcbjEwMDQ6XFx0XFx0XFx0ICAgdm9pZCAoKml0ZXIpKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbjEwMDU6XFx0XFx0XFx0XFx0XFx0c3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcXG4xMDA2OlxcdFxcdFxcdFxcdFxcdHN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGEsXFxuMTAwNzpcXHRcXHRcXHRcXHRcXHRzdHJ1Y3QgaWVlZTgwMjExX2tleV9jb25mICprZXksXFxuMTAwODpcXHRcXHRcXHRcXHRcXHR2b2lkICpkYXRhKSxcXG4xMDA5OlxcdFxcdFxcdCAgIHZvaWQgKml0ZXJfZGF0YSlcXG4xMDEwOlxcdHtcXG4xMDExOlxcdFxcdC8qIHNraXAga2V5cyBvZiBzdGF0aW9uIGluIHJlbW92YWwgcHJvY2VzcyAqL1xcbjEwMTI6XFx0XFx0aWYgKGtleS1cXHUwMDNlc3RhIFxcdTAwMjZcXHUwMDI2IGtleS1cXHUwMDNlc3RhLVxcdTAwM2VyZW1vdmVkKVxcbjEwMTM6XFx0XFx0XFx0cmV0dXJuO1xcbjEwMTQ6XFx0XFx0aWYgKCEoa2V5LVxcdTAwM2VmbGFncyBcXHUwMDI2IEtFWV9GTEFHX1VQTE9BREVEX1RPX0hBUkRXQVJFKSlcXG4xMDE1OlxcdFxcdFxcdHJldHVybjtcXG4xMDE2OlxcdFxcdGl0ZXIoaHcsIHZpZiwga2V5LVxcdTAwM2VzdGEgPyBcXHUwMDI2a2V5LVxcdTAwM2VzdGEtXFx1MDAzZXN0YSA6IE5VTEwsXFxuMTAxNzpcXHRcXHQgICAgIFxcdTAwMjZrZXktXFx1MDAzZWNvbmYsIGl0ZXJfZGF0YSk7XFxuMTAxODpcXHR9XFxuMTAxOTpcXHRcXG4xMDIwOlxcdHZvaWQgaWVlZTgwMjExX2l0ZXJfa2V5cyhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4xMDIxOlxcdFxcdFxcdFxcdCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxcbjEwMjI6XFx0XFx0XFx0XFx0IHZvaWQgKCppdGVyKShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4xMDIzOlxcdFxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXFxuMTAyNDpcXHRcXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqc3RhLFxcbjEwMjU6XFx0XFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IGllZWU4MDIxMV9rZXlfY29uZiAqa2V5LFxcbjEwMjY6XFx0XFx0XFx0XFx0XFx0ICAgICAgdm9pZCAqZGF0YSksXFxuMTAyNzpcXHRcXHRcXHRcXHQgdm9pZCAqaXRlcl9kYXRhKVxcbjEwMjg6XFx0e1xcbjEwMjk6XFx0XFx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBod190b19sb2NhbChodyk7XFxuMTAzMDpcXHRcXHRzdHJ1Y3QgaWVlZTgwMjExX2tleSAqa2V5LCAqdG1wO1xcbjEwMzE6XFx0XFx0c3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGE7XFxuMTAzMjpcXHRcXG4xMDMzOlxcdFxcdGxvY2tkZXBfYXNzZXJ0X3dpcGh5KGh3LVxcdTAwM2V3aXBoeSk7XFxuMTAzNDpcXHRcXG4xMDM1OlxcdFxcdGlmICh2aWYpIHtcXG4xMDM2OlxcdFxcdFxcdHNkYXRhID0gdmlmX3RvX3NkYXRhKHZpZik7XFxuMTAzNzpcXHRcXHRcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoa2V5LCB0bXAsIFxcdTAwMjZzZGF0YS1cXHUwMDNla2V5X2xpc3QsIGxpc3QpXFxuMTAzODpcXHRcXHRcXHRcXHRpZWVlODAyMTFfa2V5X2l0ZXIoaHcsIHZpZiwga2V5LCBpdGVyLCBpdGVyX2RhdGEpO1xcbjEwMzk6XFx0XFx0fSBlbHNlIHtcXG4xMDQwOlxcdFxcdFxcdGxpc3RfZm9yX2VhY2hfZW50cnkoc2RhdGEsIFxcdTAwMjZsb2NhbC1cXHUwMDNlaW50ZXJmYWNlcywgbGlzdClcXG4xMDQxOlxcdFxcdFxcdFxcdGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShrZXksIHRtcCxcXG4xMDQyOlxcdFxcdFxcdFxcdFxcdFxcdFxcdCBcXHUwMDI2c2RhdGEtXFx1MDAzZWtleV9saXN0LCBsaXN0KVxcbjEwNDM6XFx0XFx0XFx0XFx0XFx0aWVlZTgwMjExX2tleV9pdGVyKGh3LCBcXHUwMDI2c2RhdGEtXFx1MDAzZXZpZiwga2V5LFxcbjEwNDQ6XFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgaXRlciwgaXRlcl9kYXRhKTtcXG4xMDQ1OlxcdFxcdH1cXG4xMDQ2OlxcdH1cXG4xMDQ3OlxcdEVYUE9SVF9TWU1CT0woaWVlZTgwMjExX2l0ZXJfa2V5cyk7XFxuMTA0ODpcXHRcXG4xMDQ5OlxcdHN0YXRpYyB2b2lkXFxuMTA1MDpcXHRfaWVlZTgwMjExX2l0ZXJfa2V5c19yY3Uoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuMTA1MTpcXHRcXHRcXHRcXHQgc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuMTA1MjpcXHRcXHRcXHRcXHQgdm9pZCAoKml0ZXIpKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbjEwNTM6XFx0XFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcXG4xMDU0OlxcdFxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGEsXFxuMTA1NTpcXHRcXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgaWVlZTgwMjExX2tleV9jb25mICprZXksXFxuMTA1NjpcXHRcXHRcXHRcXHRcXHQgICAgICB2b2lkICpkYXRhKSxcXG4xMDU3OlxcdFxcdFxcdFxcdCB2b2lkICppdGVyX2RhdGEpXFxuMTA1ODpcXHR7XFxuMTA1OTpcXHRcXHRzdHJ1Y3QgaWVlZTgwMjExX2tleSAqa2V5O1xcbjEwNjA6XFx0XFxuMTA2MTpcXHRcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShrZXksIFxcdTAwMjZzZGF0YS1cXHUwMDNla2V5X2xpc3QsIGxpc3QpXFxuMTA2MjpcXHRcXHRcXHRpZWVlODAyMTFfa2V5X2l0ZXIoaHcsIFxcdTAwMjZzZGF0YS1cXHUwMDNldmlmLCBrZXksIGl0ZXIsIGl0ZXJfZGF0YSk7XFxuMTA2MzpcXHR9XFxuMTA2NDpcXHRcXG4xMDY1OlxcdHZvaWQgaWVlZTgwMjExX2l0ZXJfa2V5c19yY3Uoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuMTA2NjpcXHRcXHRcXHRcXHQgICAgIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXFxuMTA2NzpcXHRcXHRcXHRcXHQgICAgIHZvaWQgKCppdGVyKShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4xMDY4OlxcdFxcdFxcdFxcdFxcdFxcdCAgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcXG4xMDY5OlxcdFxcdFxcdFxcdFxcdFxcdCAgc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSxcXG4xMDcwOlxcdFxcdFxcdFxcdFxcdFxcdCAgc3RydWN0IGllZWU4MDIxMV9rZXlfY29uZiAqa2V5LFxcbjEwNzE6XFx0XFx0XFx0XFx0XFx0XFx0ICB2b2lkICpkYXRhKSxcXG4xMDcyOlxcdFxcdFxcdFxcdCAgICAgdm9pZCAqaXRlcl9kYXRhKVxcbjEwNzM6XFx0e1xcbjEwNzQ6XFx0XFx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBod190b19sb2NhbChodyk7XFxuMTA3NTpcXHRcXHRzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YTtcXG4xMDc2OlxcdFxcbjEwNzc6XFx0XFx0aWYgKHZpZikge1xcbjEwNzg6XFx0XFx0XFx0c2RhdGEgPSB2aWZfdG9fc2RhdGEodmlmKTtcXG4xMDc5OlxcdFxcdFxcdF9pZWVlODAyMTFfaXRlcl9rZXlzX3JjdShodywgc2RhdGEsIGl0ZXIsIGl0ZXJfZGF0YSk7XFxuMTA4MDpcXHRcXHR9IGVsc2Uge1xcbjEwODE6XFx0XFx0XFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9yY3Uoc2RhdGEsIFxcdTAwMjZsb2NhbC1cXHUwMDNlaW50ZXJmYWNlcywgbGlzdClcXG4xMDgyOlxcdFxcdFxcdFxcdF9pZWVlODAyMTFfaXRlcl9rZXlzX3JjdShodywgc2RhdGEsIGl0ZXIsIGl0ZXJfZGF0YSk7XFxuMTA4MzpcXHRcXHR9XFxuMTA4NDpcXHR9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDIxOjQyOjA2LjU1NTQ2ODYwM1oiLCJTZXEiOjQ1LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozNDc0MzA0Njk3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSBmaWxlczpcblxuKipEaXZpbmcgaW50byB0aGUgUmVhbHRlayA4MDIuMTFheCBXYWtlLW9uLVdpcmVsZXNzIChXb1dMQU4pIEltcGxlbWVudGF0aW9uKipcblxuT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGludGVyYWN0aW9uIGJldHdlZW4gdGhlIENBTSAoQ29udGVudCBBZGRyZXNzYWJsZSBNZW1vcnkpIGNvbmZpZ3VyYXRpb24gYW5kIHRoZSB3YWtlLW9uLXdpcmVsZXNzIGZ1bmN0aW9uYWxpdHkgd2l0aGluIHRoZSBSZWFsdGVrIDgwMi4xMWF4IGRyaXZlciwgc3BlY2lmaWNhbGx5IHRoZSBgcnR3ODlgIHNlcmllcy4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gY2hlY2sgb3V0IGBkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NhbS5jYCDigJMgdGhhdCdzIHdoZXJlIHRoZSBjcml0aWNhbCBtYXRjaGluZyBydWxlcyBmb3IgdGhlIENBTSBzaG91bGQgcmVzaWRlLCBhbmQgaXQncyB3aGVyZSB0aGUgbG9naWMgZm9yIGVuYWJsaW5nIGFuZCBjb25maWd1cmluZyB0aG9zZSBydWxlcyB0byB0cmlnZ2VyIGEgd2FrZS11cCBldmVudCBpcyBwcm9iYWJseSBsb2NhdGVkLiBJJ20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIGhvdyBpdCBoYW5kbGVzIHBhdHRlcm4gbWF0Y2hpbmcsIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgcG93ZXIgbWFuYWdlbWVudCBzdGF0ZXMsIGFuZCB3aGV0aGVyIHRoZSBDQU0gc2V0dXAgaXMgaW50ZWdyYXRlZCB3aXRoIHRoZSBoYXJkd2FyZSdzIGxvdy1wb3dlciBtb2RlcyBlZmZpY2llbnRseS4gQW55IHBvdGVudGlhbCBpbmVmZmljaWVuY2llcyBpbiB0aGUgQ0FNIGNvbmZpZ3VyYXRpb24gcHJvY2VzcyBjb3VsZCB0cmFuc2xhdGUgZGlyZWN0bHkgaW50byB1bm5lY2Vzc2FyeSBwb3dlciBjb25zdW1wdGlvbiwgbmVnYXRpbmcgdGhlIHdob2xlIHBvaW50IG9mIFdvV0xBTi5cblxuVGhlbiwgSSdsbCBuZWVkIHRvIGRyaWxsIGRvd24gaW50byB0aGUgJ3dvdy5jJyB0byBzZWUgaG93IHRoZSBzb2Z0d2FyZSBhY3R1YWxseSBvcmNoZXN0cmF0ZXMgdGhlIHdha2UtdXAgcHJvY2Vzcy4gSSdtIGV4cGVjdGluZyB0byBmaW5kIHRoZSBob29rcyBpbnRvIHRoZSBSZWFsdGVrIGhhcmR3YXJlLCB0aGUgaGFuZGxpbmcgb2YgdGhlIGludGVycnVwdHMgZ2VuZXJhdGVkIGJ5IHRoZSBDQU0gaGl0cywgYW5kIHRoZSBzdGVwcyB0byB0cmFuc2l0aW9uIHRoZSBzeXN0ZW0gZnJvbSBhIGxvdy1wb3dlciBzdGF0ZSBiYWNrIHRvIGEgZnVsbHkgYWN0aXZlIHN0YXRlIHVwb24gYSBtYXRjaGluZyBldmVudC4gV2hhdCdzIHRoZSBzcGVjaWZpYyBzZXF1ZW5jZT8gV2hhdCBhcmUgdGhlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzIHVzZWQgdG8gZW5zdXJlIGRhdGEgaW50ZWdyaXR5IGR1cmluZyB0aGUgcG93ZXIgc3RhdGUgdHJhbnNpdGlvbnM/IEhvdyBkb2VzIGl0IGhhbmRsZSB0aGUgY29tcGxleGl0aWVzIG9mIG5ldHdvcmsgc3RhY2sgaW5pdGlhbGl6YXRpb24gYWZ0ZXIgYSB3YWtlLXVwPyBBbmQsIG1vc3QgaW1wb3J0YW50bHksIHdoYXQncyB0aGUgb3ZlcmFsbCBwb3dlciBidWRnZXQ/IEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgZHJpdmVyIG1hbmFnZXMgdG8gYWNoaWV2ZSB0aGUgY2xhaW1lZCBwb3dlciBzYXZpbmdzIGNvbXBhcmVkIHRvIHN0YW5kYXJkIFdpLUZpIG9wZXJhdGlvbi4gSSdtIGxvb2tpbmcgZm9yIGEgY2xlYXIgZmxvdyBvZiBvcGVyYXRpb25zIGJldHdlZW4gdGhlIENBTSBjb25maWd1cmF0aW9uIGFuZCB0aGUgYWN0dWFsIFdvV0xBTiB0cmlnZ2VyIGV2ZW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MTU2LCJPdXRwdXRUb2tlbnMiOjQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQyMTo0MjoxMC4wMjk3NzY1MloiLCJTZXEiOjQ2LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjA3MzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jYW0uY1wiLFxuICBcIkZpcnN0TGluZVwiOiA1OTUsXG4gIFwiTGluZUNvdW50XCI6IDI1XG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA1OTU6XFx0fVxcbiA1OTY6XFx0XFxuIDU5NzpcXHR2b2lkIHJ0dzg5X2NhbV9kZWluaXQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBzdHJ1Y3QgcnR3ODlfdmlmX2xpbmsgKnJ0d3ZpZl9saW5rKVxcbiA1OTg6XFx0e1xcbiA1OTk6XFx0XFx0c3RydWN0IHJ0dzg5X2FkZHJfY2FtX2VudHJ5ICphZGRyX2NhbSA9IFxcdTAwMjZydHd2aWZfbGluay1cXHUwMDNlYWRkcl9jYW07XFxuIDYwMDpcXHRcXHRzdHJ1Y3QgcnR3ODlfYnNzaWRfY2FtX2VudHJ5ICpic3NpZF9jYW0gPSBcXHUwMDI2cnR3dmlmX2xpbmstXFx1MDAzZWJzc2lkX2NhbTtcXG4gNjAxOlxcdFxcbiA2MDI6XFx0XFx0cnR3ODlfY2FtX2RlaW5pdF9hZGRyX2NhbShydHdkZXYsIGFkZHJfY2FtKTtcXG4gNjAzOlxcdFxcdHJ0dzg5X2NhbV9kZWluaXRfYnNzaWRfY2FtKHJ0d2RldiwgYnNzaWRfY2FtKTtcXG4gNjA0OlxcdH1cXG4gNjA1OlxcdFxcbiA2MDY6XFx0dm9pZCBydHc4OV9jYW1fcmVzZXRfa2V5cyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXFxuIDYwNzpcXHR7XFxuIDYwODpcXHRcXHRpZWVlODAyMTFfaXRlcl9rZXlzKHJ0d2Rldi1cXHUwMDNlaHcsIE5VTEwsIHJ0dzg5X2NhbV9yZXNldF9rZXlfaXRlciwgcnR3ZGV2KTtcXG4gNjA5OlxcdH1cXG4gNjEwOlxcdFxcbiA2MTE6XFx0c3RhdGljIGludCBydHc4OV9jYW1fZ2V0X2F2YWlsX2FkZHJfY2FtKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcXG4gNjEyOlxcdFxcdFxcdFxcdFxcdFxcdHU4ICphZGRyX2NhbV9pZHgpXFxuIDYxMzpcXHR7XFxuIDYxNDpcXHRcXHRjb25zdCBzdHJ1Y3QgcnR3ODlfY2hpcF9pbmZvICpjaGlwID0gcnR3ZGV2LVxcdTAwM2VjaGlwO1xcbiA2MTU6XFx0XFx0c3RydWN0IHJ0dzg5X2NhbV9pbmZvICpjYW1faW5mbyA9IFxcdTAwMjZydHdkZXYtXFx1MDAzZWNhbV9pbmZvO1xcbiA2MTY6XFx0XFx0dTggYWRkcl9jYW1fbnVtID0gY2hpcC1cXHUwMDNlYWNhbV9udW07XFxuIDYxNzpcXHRcXHR1OCBpZHg7XFxuIDYxODpcXHRcXG4gNjE5OlxcdFxcdGlkeCA9IGZpbmRfZmlyc3RfemVyb19iaXQoY2FtX2luZm8tXFx1MDAzZWFkZHJfY2FtX21hcCwgYWRkcl9jYW1fbnVtKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMjE6NDI6MTAuMDI5OTM5NloiLCJTZXEiOjQ3LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxODM5MTQxMDEyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhpbmtpbmcgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byB0aGUgUmVhbHRlayBXT1cgQ29kZSoqXG5cbk9rYXksIHRpbWUgdG8gZGlnIGludG8gdGhlIFJlYWx0ZWsgd2lyZWxlc3MgZHJpdmVyJ3Mgd2FrZS1vbi13aXJlbGVzcyAoV09XKSBmdW5jdGlvbmFsaXR5LCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBgcnR3ODlgIGNvZGUuIE15IGdvYWwgaXMgdG8gdW5kZXJzdGFuZCBob3cgdGhlc2Uga2V5cyBhcmUgY29uc3RydWN0ZWQgYW5kIHVwZGF0ZWQgZm9yIFdPVy4gSSdtIGdvaW5nIHRvIGZvY3VzIG15IGF0dGVudGlvbiBvbiB0aGUgYHJ0dzg5X3dvd19jb25zdHJ1Y3Rfa2V5X2luZm9gIGZ1bmN0aW9uIGFuZCB0aGUgYHJ0dzg5X3dvd191cGRhdGVfa2V5X2luZm9gIGZ1bmN0aW9uLCBib3RoIGxvY2F0ZWQgd2l0aGluIHRoZSBgd293LmNgIGZpbGUgaW4gdGhlIGRyaXZlcidzIHNvdXJjZS4gVGhpcyBsb29rcyBsaWtlIHRoZSBwbGFjZSB0byBzdGFydCBhbmFseXppbmcgdGhlIHByb2Nlc3MuIFRoaXMgd2lsbCBnaXZlIG1lIGEgZ29vZCB1bmRlcnN0YW5kaW5nIG9mIGhvdyB0aGlzIHBvcnRpb24gb2YgdGhlIGNvZGUgaXMgaGFuZGxlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NzE0NywiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUzLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMjE6NDI6MTEuODY5MDg0MDUyWiIsIlNlcSI6NDgsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyMzM3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDQ2MCxcbiAgXCJMaW5lQ291bnRcIjogNDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDQ2MDpcXHRcXG4gNDYxOlxcdFxcdG1lbXNldChcXHUwMDI2cnR3X3dvdy1cXHUwMDNlYW9hY19ycHQsIDAsIHNpemVvZihydHdfd293LVxcdTAwM2Vhb2FjX3JwdCkpO1xcbiA0NjI6XFx0XFx0bWVtc2V0KFxcdTAwMjZydHdfd293LVxcdTAwM2VndGtfaW5mbywgMCwgc2l6ZW9mKHJ0d193b3ctXFx1MDAzZWd0a19pbmZvKSk7XFxuIDQ2MzpcXHRcXHRtZW1zZXQoXFx1MDAyNnJ0d193b3ctXFx1MDAzZWtleV9pbmZvLCAwLCBzaXplb2YocnR3X3dvdy1cXHUwMDNla2V5X2luZm8pKTtcXG4gNDY0OlxcdFxcdHJ0d193b3ctXFx1MDAzZXB0a19hbGcgPSAwO1xcbiA0NjU6XFx0XFx0cnR3X3dvdy1cXHUwMDNlZ3RrX2FsZyA9IDA7XFxuIDQ2NjpcXHR9XFxuIDQ2NzpcXHRcXG4gNDY4OlxcdHN0YXRpYyB2b2lkIHJ0dzg5X3dvd19jb25zdHJ1Y3Rfa2V5X2luZm8oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxcbiA0Njk6XFx0e1xcbiA0NzA6XFx0XFx0c3RydWN0IHJ0dzg5X3dvd19wYXJhbSAqcnR3X3dvdyA9IFxcdTAwMjZydHdkZXYtXFx1MDAzZXdvdztcXG4gNDcxOlxcdFxcdHN0cnVjdCBydHc4OV93b3dfa2V5X2luZm8gKmtleV9pbmZvID0gXFx1MDAyNnJ0d193b3ctXFx1MDAzZWtleV9pbmZvO1xcbiA0NzI6XFx0XFx0c3RydWN0IHJ0dzg5X3ZpZl9saW5rICpydHd2aWZfbGluayA9IHJ0d2Rldi1cXHUwMDNld293LnJ0d3ZpZl9saW5rO1xcbiA0NzM6XFx0XFx0c3RydWN0IGllZWU4MDIxMV92aWYgKndvd192aWYgPSBydHd2aWZfbGlua190b192aWYocnR3dmlmX2xpbmspO1xcbiA0NzQ6XFx0XFx0Ym9vbCBlcnIgPSBmYWxzZTtcXG4gNDc1OlxcdFxcbiA0NzY6XFx0XFx0aWVlZTgwMjExX2l0ZXJfa2V5cyhydHdkZXYtXFx1MDAzZWh3LCB3b3dfdmlmLFxcbiA0Nzc6XFx0XFx0XFx0XFx0ICAgIHJ0dzg5X3dvd19nZXRfa2V5X2luZm9faXRlciwgXFx1MDAyNmVycik7XFxuIDQ3ODpcXHRcXG4gNDc5OlxcdFxcdGlmIChlcnIpIHtcXG4gNDgwOlxcdFxcdFxcdHJ0dzg5X3dvd19rZXlfY2xlYXIocnR3ZGV2KTtcXG4gNDgxOlxcdFxcdFxcdHJldHVybjtcXG4gNDgyOlxcdFxcdH1cXG4gNDgzOlxcdFxcbiA0ODQ6XFx0XFx0a2V5X2luZm8tXFx1MDAzZXZhbGlkX2NoZWNrID0gUlRXODlfV09XX1ZBTElEX0NIRUNLO1xcbiA0ODU6XFx0XFx0a2V5X2luZm8tXFx1MDAzZXN5bWJvbF9jaGVja19lbiA9IFJUVzg5X1dPV19TWU1CT0xfQ0hLX1BUSyB8XFxuIDQ4NjpcXHRcXHRcXHRcXHRcXHQgICAgUlRXODlfV09XX1NZTUJPTF9DSEtfR1RLO1xcbiA0ODc6XFx0fVxcbiA0ODg6XFx0XFxuIDQ4OTpcXHRzdGF0aWMgdm9pZCBydHc4OV93b3dfZGVidWdfYW9hY19ycHQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxcbiA0OTA6XFx0e1xcbiA0OTE6XFx0XFx0c3RydWN0IHJ0dzg5X3dvd19wYXJhbSAqcnR3X3dvdyA9IFxcdTAwMjZydHdkZXYtXFx1MDAzZXdvdztcXG4gNDkyOlxcdFxcdHN0cnVjdCBydHc4OV93b3dfYW9hY19yZXBvcnQgKmFvYWNfcnB0ID0gXFx1MDAyNnJ0d193b3ctXFx1MDAzZWFvYWNfcnB0O1xcbiA0OTM6XFx0XFxuIDQ5NDpcXHRcXHRpZiAoIXJ0dzg5X2RlYnVnX2lzX2VuYWJsZWQocnR3ZGV2LCBSVFc4OV9EQkdfV09XKSlcXG4gNDk1OlxcdFxcdFxcdHJldHVybjtcXG4gNDk2OlxcdFxcbiA0OTc6XFx0XFx0cnR3ODlfZGVidWcocnR3ZGV2LCBSVFc4OV9EQkdfV09XLCBcXFwiW2FvYWNfcnB0XSBycHRfdmVyID0gJWRcXFxcblxcXCIsXFxuIDQ5ODpcXHRcXHRcXHQgICAgYW9hY19ycHQtXFx1MDAzZXJwdF92ZXIpO1xcbiA0OTk6XFx0XFx0cnR3ODlfZGVidWcocnR3ZGV2LCBSVFc4OV9EQkdfV09XLCBcXFwiW2FvYWNfcnB0XSBzZWNfdHlwZSA9ICVkXFxcXG5cXFwiLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQyMTo0MjoxMS44NjkzMjAzNDJaIiwiU2VxIjo0OSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTg5ODE3MjA5MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyb20gbXkgcGVyc3BlY3RpdmUgYXMgYW4gZXhwZXJ0OlxuXG4qKkludmVzdGlnYXRpbmcgYSBQb3RlbnRpYWwgSXNzdWUqKlxuXG5Pa2F5LCBzbyB3ZSdyZSBsb29raW5nIGludG8gc29tZXRoaW5nIGFuZCBgcnR3ODlfd293X3VwZGF0ZV9rZXlfaW5mb2AgaXMgcGluZ2luZyBteSByYWRhci4gR2l2ZW4gd2hhdCBJJ20gZGVhbGluZyB3aXRoLCBpdCdzIGltbWVkaWF0ZWx5IG9idmlvdXMgdGhhdCB0aGlzIGZ1bmN0aW9uIGRlc2VydmVzIGEgY2xvc2VyIGxvb2suIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByb2xlIGluIHRoaXMgc3lzdGVtIGFuZCBob3cgaXQgbWlnaHQgYmUgaW52b2x2ZWQgaW4gdGhlIGJlaGF2aW9yIHdlJ3JlIG9ic2VydmluZy4gSXQncyB0aW1lIHRvIGRpZyBpbnRvIHRoZSBjb2RlIGFuZCBzZWUgd2hhdCBgcnR3ODlfd293X3VwZGF0ZV9rZXlfaW5mb2AgaXMgYWN0dWFsbHkgZG9pbmcuIE15IGd1dCdzIHRlbGxpbmcgbWUgdGhhdCB0aGlzIGlzIGEgY3JpdGljYWwgY29tcG9uZW50IHRoYXQgd2FycmFudHMgdGhvcm91Z2ggaW52ZXN0aWdhdGlvbiB0byBpc29sYXRlIGFuZCB1bmRlcnN0YW5kIGFueSBwcm9ibGVtLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MjU2LCJPdXRwdXRUb2tlbnMiOjQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjEsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQyMTo0MjoxMy43Njc0OTUzOTNaIiwiU2VxIjo1MCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjMxNzgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmNcIixcbiAgXCJGaXJzdExpbmVcIjogNjgwLFxuICBcIkxpbmVDb3VudFwiOiA0MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNjgwOlxcdFxcbiA2ODE6XFx0XFx0cmV0dXJuIGtleTtcXG4gNjgyOlxcdH1cXG4gNjgzOlxcdFxcbiA2ODQ6XFx0c3RhdGljIHZvaWQgcnR3ODlfd293X3VwZGF0ZV9rZXlfaW5mbyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGJvb2wgcnhfcmVhZHkpXFxuIDY4NTpcXHR7XFxuIDY4NjpcXHRcXHRzdHJ1Y3QgcnR3ODlfdmlmX2xpbmsgKnJ0d3ZpZl9saW5rID0gcnR3ZGV2LVxcdTAwM2V3b3cucnR3dmlmX2xpbms7XFxuIDY4NzpcXHRcXHRzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqd293X3ZpZiA9IHJ0d3ZpZl9saW5rX3RvX3ZpZihydHd2aWZfbGluayk7XFxuIDY4ODpcXHRcXHRzdHJ1Y3QgcnR3ODlfd293X3BhcmFtICpydHdfd293ID0gXFx1MDAyNnJ0d2Rldi1cXHUwMDNld293O1xcbiA2ODk6XFx0XFx0c3RydWN0IHJ0dzg5X3dvd19hb2FjX3JlcG9ydCAqYW9hY19ycHQgPSBcXHUwMDI2cnR3X3dvdy1cXHUwMDNlYW9hY19ycHQ7XFxuIDY5MDpcXHRcXHRzdHJ1Y3QgcnR3ODlfc2V0X2tleV9pbmZvX2l0ZXJfZGF0YSBkYXRhID0gey5lcnJvciA9IGZhbHNlLFxcbiA2OTE6XFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgIC5yeF9yZWFkeSA9IHJ4X3JlYWR5LFxcbiA2OTI6XFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgIC50a2lwX2d0a19zd2FwcGVkID0gZmFsc2V9O1xcbiA2OTM6XFx0XFx0c3RydWN0IGllZWU4MDIxMV9ic3NfY29uZiAqYnNzX2NvbmY7XFxuIDY5NDpcXHRcXHRzdHJ1Y3QgaWVlZTgwMjExX2tleV9jb25mICprZXk7XFxuIDY5NTpcXHRcXG4gNjk2OlxcdFxcdGllZWU4MDIxMV9pdGVyX2tleXMocnR3ZGV2LVxcdTAwM2Vodywgd293X3ZpZixcXG4gNjk3OlxcdFxcdFxcdFxcdCAgICBydHc4OV93b3dfc2V0X2tleV9pbmZvX2l0ZXIsIFxcdTAwMjZkYXRhKTtcXG4gNjk4OlxcdFxcbiA2OTk6XFx0XFx0aWYgKGRhdGEuZXJyb3IpIHtcXG4gNzAwOlxcdFxcdFxcdHJ0dzg5X2RlYnVnKHJ0d2RldiwgUlRXODlfREJHX1dPVywgXFxcIiVzIGVycm9yXFxcXG5cXFwiLCBfX2Z1bmNfXyk7XFxuIDcwMTpcXHRcXHRcXHRyZXR1cm47XFxuIDcwMjpcXHRcXHR9XFxuIDcwMzpcXHRcXG4gNzA0OlxcdFxcdGlmICghZGF0YS5ndGtfY2lwaGVyKVxcbiA3MDU6XFx0XFx0XFx0cmV0dXJuO1xcbiA3MDY6XFx0XFxuIDcwNzpcXHRcXHRrZXkgPSBydHc4OV93b3dfZ3RrX3Jla2V5KHJ0d2RldiwgZGF0YS5ndGtfY2lwaGVyLCBhb2FjX3JwdC1cXHUwMDNla2V5X2lkeCxcXG4gNzA4OlxcdFxcdFxcdFxcdFxcdCAgYW9hY19ycHQtXFx1MDAzZWd0ayk7XFxuIDcwOTpcXHRcXHRpZiAoIWtleSlcXG4gNzEwOlxcdFxcdFxcdHJldHVybjtcXG4gNzExOlxcdFxcbiA3MTI6XFx0XFx0cnR3ODlfcnhfaXZfdG9fcG4ocnR3ZGV2LCBrZXksXFxuIDcxMzpcXHRcXHRcXHRcXHQgIGFvYWNfcnB0LVxcdTAwM2VndGtfcnhfaXZba2V5LVxcdTAwM2VrZXlpZHhdKTtcXG4gNzE0OlxcdFxcbiA3MTU6XFx0XFx0aWYgKCFkYXRhLmlndGtfY2lwaGVyKVxcbiA3MTY6XFx0XFx0XFx0cmV0dXJuO1xcbiA3MTc6XFx0XFxuIDcxODpcXHRcXHRrZXkgPSBydHc4OV93b3dfZ3RrX3Jla2V5KHJ0d2RldiwgZGF0YS5pZ3RrX2NpcGhlciwgYW9hY19ycHQtXFx1MDAzZWlndGtfa2V5X2lkLFxcbiA3MTk6XFx0XFx0XFx0XFx0XFx0ICBhb2FjX3JwdC1cXHUwMDNlaWd0ayk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDIxOjQyOjEzLjc2NzcyOTkwM1oiLCJTZXEiOjUxLCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo1MzUzMjIxNzM4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIHJ0dzg5IFBhdGNoKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBJdCBsb29rcyBsaWtlIHRoZSBgcnR3ODlgIGRyaXZlciBoYXMgYmVlbiB1cGRhdGVkIHRvIHJlcGxhY2UgdGhlIFJDVS1iYXNlZCBrZXkgaXRlcmF0aW9uIChgcmN1X3JlYWRfbG9jaygpOyBpZWVlODAyMTFfaXRlcl9rZXlzX3JjdSguLi4pOyByY3VfcmVhZF91bmxvY2soKTtgKSB3aXRoIGEgZGlyZWN0IGNhbGwgdG8gYGllZWU4MDIxMV9pdGVyX2tleXMoKWAuIFRoZSByYXRpb25hbGUgaXMgc3RyYWlnaHRmb3J3YXJkOiBgaWVlZTgwMjExX2l0ZXJfa2V5cygpYCBleHBlY3RzIHRoZSB3aXBoeSBsb2NrIHRvIGJlIGhlbGQgKHZlcmlmaWVkIGJ5IGBsb2NrZGVwX2Fzc2VydF93aXBoeShody1cdTAwM2V3aXBoeSk7YCksIHdoaWNoIGlzIGxpa2VseSBhbHJlYWR5IHRoZSBjYXNlIGluIHRoZSBjYWxsZXJzLCB0aGVyZWZvcmUgdXNpbmcgdGhhdCBtZXRob2QgaXMgYmV0dGVyIHRoYW4gdGhlIFJDVSBtZXRob2QuIEl0IGFsc28gdXNlcyBzYWZlIGl0ZXJhdGlvbiwgYGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZWAuXG5cbk5vdywgdGhlIGltcG9ydGFudCBxdWVzdGlvbjogYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzPyBMZXQncyB0aWNrIHRocm91Z2ggdGhlIHVzdWFsIHN1c3BlY3RzLiBGaXJzdCwgaXMgYW55dGhpbmcgYmVpbmcgc2VudCB0byB1c2VyIHNwYWNlPyBOb3BlLCB0aGF0J3Mgbm90IHRoZSBjYXNlLiBOZXh0LCBpcyB0aGVyZSBhbnkgY29uZGl0aW9uYWwgbG9naWMgdGhhdCByZWxpZXMgb24gdW5pbml0aWFsaXplZCB2YXJpYWJsZXM/IE5vcGUuIEFyZSB3ZSBhbGxvY2F0aW5nIGFuZCBpbml0aWFsaXppbmcgbmV3IGRhdGEgc3RydWN0dXJlcz8gTm9wZS4gRmluYWxseSwgYXJlIHdlIGRlYWxpbmcgd2l0aCBib3VuZHMgY2hlY2tzIG9yIGxlbmd0aCBjYWxjdWxhdGlvbnMgdGhhdCBtaWdodCBhbGxvdyBhY2Nlc3MgdG8gdW5pbml0aWFsaXplZCBieXRlcz8gTm9wZS5cblxuQmFzaWNhbGx5LCB0aGlzIHBhdGNoIGlzIGEgcHVyZSByZWZhY3RvcmluZyBvZiB0aGUgaXRlcmF0aW9uIGhlbHBlciwgY2hhbmdpbmcgaXQgZnJvbSB0aGUgUkNVIHZlcnNpb24gdG8gdGhlIGxvY2tlZCB2ZXJzaW9uLiBBbnkgY29uY3VycmVuY3kgcHJvYmxlbXMg4oCTIGxpa2Ugbm90IGhvbGRpbmcgdGhlIHdpcGh5IGxvY2ssIG9yIHBvdGVudGlhbCBrZXktZnJlZWluZyBpc3N1ZXMg4oCTIGFyZSBnb2luZyB0byBiZSBjYXVnaHQgYnkgTE9DS0RFUCBvciBLQVNBTi4gV2UgYXJlbid0IGludHJvZHVjaW5nIGFueSByaXNrcyBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2Ugb3IgaW5mb3JtYXRpb24gbGVha3MuXG5cblRoZXJlZm9yZSwgdGhpcyBwYXRjaCBkb2Vzbid0IHdhcnJhbnQgS01TQU4gZnV6emluZy4gSXQncyBhIGNvbmN1cnJlbmN5LXJlbGF0ZWQgY2hhbmdlLCB3aGljaCBpcyBiZXN0IGFkZHJlc3NlZCBieSBMT0NLREVQIGFuZCBLQVNBTi4gSXQncyBhIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIHJlZmFjdG9yLCBmb2N1c2luZyBvbiBpdGVyYXRpb24gdGhyb3VnaCBrZXlzLCBhbmQgYXNzZXJ0aW5nIHRoZSB3aXBoeSBsb2NrIGluc3RlYWQgb2YgdXNpbmcgdGhlIFJDVSByZWFkIGxvY2suIE5vIG1lbW9yeSBhbGxvY2F0aW9uLCBubyBtb2RpZmljYXRpb24gb2YgYnVmZmVyIGJvdW5kcywgbm8gbmV3IHN0cnVjdHMsIG5vIGNvcHkgb2YgdW5pbml0aWFsaXplZCBkYXRhIHRvIHVzZXJzcGFjZS4gTG9ja2luZyBpc3N1ZXMgb3IgY29uY3VycmVudCBtb2RpZmljYXRpb24vVUFGIGFyZSB0aGUgcmlza3MgaGVyZSwgYW5kIEtBU0FOL0xPQ0tERVAgaGFuZGxlIHRob3NlIGNhc2VzLiBUaGVyZWZvcmUsIG5vIG5lZWQgdG8gcnVuIGEgS01TQU4gZnV6emluZyBzZXNzaW9uLiBMZXQncyBjYWxsIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjkyMjcsIk91dHB1dFRva2VucyI6MjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjAzLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMjE6NDI6MTkuMTIwOTU1MTExWiIsIlNlcSI6NTIsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjM4MzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCByZXBsYWNlcyBgcmN1X3JlYWRfbG9jaygpYCAvIGBpZWVlODAyMTFfaXRlcl9rZXlzX3JjdSgpYCB3aXRoIGBpZWVlODAyMTFfaXRlcl9rZXlzKClgIGluIHRoZSBSZWFsdGVrIHJ0dzg5IGRyaXZlciAoYHJ0dzg5X2NhbV9yZXNldF9rZXlzYCwgYHJ0dzg5X3dvd19jb25zdHJ1Y3Rfa2V5X2luZm9gLCBhbmQgYHJ0dzg5X3dvd191cGRhdGVfa2V5X2luZm9gKS5cXG5cXG5UaGlzIGNoYW5nZSBwdXJlbHkgYWRqdXN0cyBob3cgdGhlIGRyaXZlciBpdGVyYXRlcyBvdmVyIG1hYzgwMjExIGtleXMsIHJlbHlpbmcgb24gdGhlIGNhbGxlciBob2xkaW5nIHRoZSB3aXBoeSBsb2NrIChgbG9ja2RlcF9hc3NlcnRfd2lwaHlgKSBpbnN0ZWFkIG9mIGVudGVyaW5nIGFuIFJDVSByZWFkLXNpZGUgY3JpdGljYWwgc2VjdGlvbi5cXG5cXG5UaGVyZSBhcmUgbm8gbmV3IG1lbW9yeSBhbGxvY2F0aW9ucywgdW5pbml0aWFsaXplZCB2YXJpYWJsZSBhY2Nlc3NlcywgaW5mby1sZWFrcyB0byB1c2Vyc3BhY2UsIG9yIGFsdGVyZWQgYnVmZmVyIGJvdW5kcy4gQW55IHBvdGVudGlhbCBsb2NraW5nIGlzc3VlcyAoc3VjaCBhcyBtaXNzaW5nIHdpcGh5IGxvY2spIG9yIHN5bmNocm9uaXphdGlvbi9tZW1vcnkgc2FmZXR5IGJ1Z3MgKHN1Y2ggYXMgY29uY3VycmVudCBsaXN0IGFjY2VzcyBvciB1c2UtYWZ0ZXItZnJlZSkgYXJlIGRldGVjdGFibGUgYnkgTE9DS0RFUCBhbmQgS0FTQU4uIFRoZXJlZm9yZSwgS01TQU4gaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlcGxhY2VzIGByY3VfcmVhZF9sb2NrKClgIC8gYGllZWU4MDIxMV9pdGVyX2tleXNfcmN1KClgIHdpdGggYGllZWU4MDIxMV9pdGVyX2tleXMoKWAgaW4gdGhlIFJlYWx0ZWsgcnR3ODkgZHJpdmVyIChgcnR3ODlfY2FtX3Jlc2V0X2tleXNgLCBgcnR3ODlfd293X2NvbnN0cnVjdF9rZXlfaW5mb2AsIGFuZCBgcnR3ODlfd293X3VwZGF0ZV9rZXlfaW5mb2ApLlxcblxcblRoaXMgY2hhbmdlIHB1cmVseSBhZGp1c3RzIGhvdyB0aGUgZHJpdmVyIGl0ZXJhdGVzIG92ZXIgbWFjODAyMTEga2V5cywgcmVseWluZyBvbiB0aGUgY2FsbGVyIGhvbGRpbmcgdGhlIHdpcGh5IGxvY2sgKGBsb2NrZGVwX2Fzc2VydF93aXBoeWApIGluc3RlYWQgb2YgZW50ZXJpbmcgYW4gUkNVIHJlYWQtc2lkZSBjcml0aWNhbCBzZWN0aW9uLlxcblxcblRoZXJlIGFyZSBubyBuZXcgbWVtb3J5IGFsbG9jYXRpb25zLCB1bmluaXRpYWxpemVkIHZhcmlhYmxlIGFjY2Vzc2VzLCBpbmZvLWxlYWtzIHRvIHVzZXJzcGFjZSwgb3IgYWx0ZXJlZCBidWZmZXIgYm91bmRzLiBBbnkgcG90ZW50aWFsIGxvY2tpbmcgaXNzdWVzIChzdWNoIGFzIG1pc3Npbmcgd2lwaHkgbG9jaykgb3Igc3luY2hyb25pemF0aW9uL21lbW9yeSBzYWZldHkgYnVncyAoc3VjaCBhcyBjb25jdXJyZW50IGxpc3QgYWNjZXNzIG9yIHVzZS1hZnRlci1mcmVlKSBhcmUgZGV0ZWN0YWJsZSBieSBMT0NLREVQIGFuZCBLQVNBTi4gVGhlcmVmb3JlLCBLTVNBTiBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },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-workflowdmp7m[1] Phase: Succeeded StartedAt: 2026-09-08 21:42:30 +0000 UTC FinishedAt: 2026-09-08 21:42:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdmp7m[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-09-08 21:42:30 +0000 UTC FinishedAt: 2026-09-08 21:42:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdmp7m[2] Phase: Running StartedAt: 2026-09-08 21:42:30 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdmp7m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","MAC80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw89_cam_reset_keys","rtw89_wow_construct_key_info","rtw89_wow_update_key_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","MAC80211"],"series_id":"aacedae2-9bbb-41ff-a42c-2ee0d38a7e1b","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN) Phase: Running StartedAt: 2026-09-08 21:42:30 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","MAC80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw89_cam_reset_keys","rtw89_wow_construct_key_info","rtw89_wow_update_key_info"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","MAC80211"],"series_id":"aacedae2-9bbb-41ff-a42c-2ee0d38a7e1b","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowdmp7m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","MAC80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw89_cam_reset_keys","rtw89_wow_construct_key_info","rtw89_wow_update_key_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","MAC80211"],"series_id":"aacedae2-9bbb-41ff-a42c-2ee0d38a7e1b","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-09-08 21:42:30 +0000 UTC FinishedAt: 2026-09-08 21:42:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdmp7m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","MAC80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw89_cam_reset_keys","rtw89_wow_construct_key_info","rtw89_wow_update_key_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","MAC80211"],"series_id":"aacedae2-9bbb-41ff-a42c-2ee0d38a7e1b","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-09-08 21:42:30 +0000 UTC FinishedAt: 2026-09-08 21:42:36 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","MAC80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowdmp7m/series-workflowdmp7m-convert-artifact-3315210754/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowdmp7m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","MAC80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw89_cam_reset_keys","rtw89_wow_construct_key_info","rtw89_wow_update_key_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","MAC80211"],"series_id":"aacedae2-9bbb-41ff-a42c-2ee0d38a7e1b","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-09-08 21:42:40 +0000 UTC FinishedAt: 2026-09-08 21:58:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdmp7m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","MAC80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw89_cam_reset_keys","rtw89_wow_construct_key_info","rtw89_wow_update_key_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","MAC80211"],"series_id":"aacedae2-9bbb-41ff-a42c-2ee0d38a7e1b","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-09-08 21:42:40 +0000 UTC FinishedAt: 2026-09-08 21:58:54 +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:*dd6cca15-8af1-462f-8d40-3fd5577690a3,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-workflowdmp7m/series-workflowdmp7m-convert-artifact-3315210754/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": "b7cf038a-981f-457e-aa1b-395754681347", "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-workflowdmp7m/series-workflowdmp7m-build-action-695838912/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowdmp7m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","MAC80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw89_cam_reset_keys","rtw89_wow_construct_key_info","rtw89_wow_update_key_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","MAC80211"],"series_id":"aacedae2-9bbb-41ff-a42c-2ee0d38a7e1b","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-09-08 21:42:40 +0000 UTC FinishedAt: 2026-09-08 21:58:44 +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:*dd6cca15-8af1-462f-8d40-3fd5577690a3,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-workflowdmp7m/series-workflowdmp7m-convert-artifact-3315210754/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": "b7cf038a-981f-457e-aa1b-395754681347", "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-workflowdmp7m/series-workflowdmp7m-build-action-695838912/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowdmp7m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","MAC80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw89_cam_reset_keys","rtw89_wow_construct_key_info","rtw89_wow_update_key_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","MAC80211"],"series_id":"aacedae2-9bbb-41ff-a42c-2ee0d38a7e1b","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-09-08 21:58:54 +0000 UTC FinishedAt: 2026-09-08 21:58:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdmp7m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","MAC80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw89_cam_reset_keys","rtw89_wow_construct_key_info","rtw89_wow_update_key_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","MAC80211"],"series_id":"aacedae2-9bbb-41ff-a42c-2ee0d38a7e1b","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-09-08 21:58:54 +0000 UTC FinishedAt: 2026-09-08 21:58:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdmp7m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","MAC80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw89_cam_reset_keys","rtw89_wow_construct_key_info","rtw89_wow_update_key_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","MAC80211"],"series_id":"aacedae2-9bbb-41ff-a42c-2ee0d38a7e1b","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-09-08 21:58:54 +0000 UTC FinishedAt: 2026-09-08 21:59:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdmp7m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","MAC80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw89_cam_reset_keys","rtw89_wow_construct_key_info","rtw89_wow_update_key_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","MAC80211"],"series_id":"aacedae2-9bbb-41ff-a42c-2ee0d38a7e1b","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-09-08 21:58:54 +0000 UTC FinishedAt: 2026-09-08 21:58:58 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","MAC80211"],"series_id":"aacedae2-9bbb-41ff-a42c-2ee0d38a7e1b","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowdmp7m/series-workflowdmp7m-convert-artifact-969508445/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowdmp7m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","MAC80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw89_cam_reset_keys","rtw89_wow_construct_key_info","rtw89_wow_update_key_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","MAC80211"],"series_id":"aacedae2-9bbb-41ff-a42c-2ee0d38a7e1b","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-09-08 21:59:04 +0000 UTC FinishedAt: 2026-09-08 22:01:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdmp7m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","MAC80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw89_cam_reset_keys","rtw89_wow_construct_key_info","rtw89_wow_update_key_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","MAC80211"],"series_id":"aacedae2-9bbb-41ff-a42c-2ee0d38a7e1b","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-09-08 21:59:04 +0000 UTC FinishedAt: 2026-09-08 22:00:59 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*b7cf038a-981f-457e-aa1b-395754681347,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-workflowdmp7m/series-workflowdmp7m-build-action-695838912/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-workflowdmp7m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","MAC80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw89_cam_reset_keys","rtw89_wow_construct_key_info","rtw89_wow_update_key_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","MAC80211"],"series_id":"aacedae2-9bbb-41ff-a42c-2ee0d38a7e1b","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-09-08 22:01:09 +0000 UTC FinishedAt: 2026-09-08 22:01:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdmp7m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","MAC80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw89_cam_reset_keys","rtw89_wow_construct_key_info","rtw89_wow_update_key_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","MAC80211"],"series_id":"aacedae2-9bbb-41ff-a42c-2ee0d38a7e1b","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-09-08 22:01:09 +0000 UTC FinishedAt: 2026-09-08 22:01:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdmp7m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","MAC80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw89_cam_reset_keys","rtw89_wow_construct_key_info","rtw89_wow_update_key_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","MAC80211"],"series_id":"aacedae2-9bbb-41ff-a42c-2ee0d38a7e1b","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-09-08 22:01:09 +0000 UTC FinishedAt: 2026-09-08 22:19:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdmp7m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","MAC80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw89_cam_reset_keys","rtw89_wow_construct_key_info","rtw89_wow_update_key_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","MAC80211"],"series_id":"aacedae2-9bbb-41ff-a42c-2ee0d38a7e1b","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-09-08 22:01:09 +0000 UTC FinishedAt: 2026-09-08 22:19:26 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*dd6cca15-8af1-462f-8d40-3fd5577690a3,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-workflowdmp7m/series-workflowdmp7m-convert-artifact-969508445/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": "422ee22e-c6fe-43e9-b1e5-88a6ac6a49df", "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-workflowdmp7m/series-workflowdmp7m-build-action-1696515897/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowdmp7m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","MAC80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw89_cam_reset_keys","rtw89_wow_construct_key_info","rtw89_wow_update_key_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","MAC80211"],"series_id":"aacedae2-9bbb-41ff-a42c-2ee0d38a7e1b","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-09-08 22:01:09 +0000 UTC FinishedAt: 2026-09-08 22:19:14 +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:*dd6cca15-8af1-462f-8d40-3fd5577690a3,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-workflowdmp7m/series-workflowdmp7m-convert-artifact-969508445/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": "422ee22e-c6fe-43e9-b1e5-88a6ac6a49df", "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-workflowdmp7m/series-workflowdmp7m-build-action-1696515897/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowdmp7m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","MAC80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw89_cam_reset_keys","rtw89_wow_construct_key_info","rtw89_wow_update_key_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","MAC80211"],"series_id":"aacedae2-9bbb-41ff-a42c-2ee0d38a7e1b","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-09-08 22:19:26 +0000 UTC FinishedAt: 2026-09-08 22:19:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdmp7m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","MAC80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw89_cam_reset_keys","rtw89_wow_construct_key_info","rtw89_wow_update_key_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","MAC80211"],"series_id":"aacedae2-9bbb-41ff-a42c-2ee0d38a7e1b","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-09-08 22:19:26 +0000 UTC FinishedAt: 2026-09-08 22:19:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdmp7m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","MAC80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw89_cam_reset_keys","rtw89_wow_construct_key_info","rtw89_wow_update_key_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","MAC80211"],"series_id":"aacedae2-9bbb-41ff-a42c-2ee0d38a7e1b","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[8] Phase: Running StartedAt: 2026-09-08 22:19:26 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdmp7m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","MAC80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw89_cam_reset_keys","rtw89_wow_construct_key_info","rtw89_wow_update_key_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","MAC80211"],"series_id":"aacedae2-9bbb-41ff-a42c-2ee0d38a7e1b","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Running StartedAt: 2026-09-08 22:19:26 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +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:*422ee22e-c6fe-43e9-b1e5-88a6ac6a49df,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-workflowdmp7m/series-workflowdmp7m-build-action-1696515897/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil